master
parent
d17ac6727f
commit
2f5e30e6d6
Binary file not shown.
@ -0,0 +1,497 @@ |
||||
<?php |
||||
|
||||
|
||||
namespace app\admin\controller\institution; |
||||
|
||||
use app\admin\controller\AuthController; |
||||
use app\admin\model\special\Special; |
||||
use app\admin\model\system\WebRecommend; |
||||
use app\admin\model\system\WebRecommendRelation; |
||||
use app\admin\model\system\Recommend; |
||||
use app\admin\model\system\RecommendRelation; |
||||
use app\admin\model\special\LecturerInstitution as LecturerModel; |
||||
use app\admin\model\institution\Institution as InstitutionModel; |
||||
use app\admin\model\institution\InstitutionAdmin as InstitutionAdminModel; |
||||
use app\institution\model\institution\InstitutionMenus; |
||||
use app\admin\model\educational\Education as EducationModel; |
||||
use app\admin\model\user\User; |
||||
use service\JsonService; |
||||
use service\FormBuilder as Form; |
||||
use think\Db; |
||||
use think\Url; |
||||
|
||||
/** |
||||
* 机构控制器 |
||||
*/ |
||||
class Priselecturer extends AuthController |
||||
{ |
||||
/** |
||||
* 机构列表展示 |
||||
* @return |
||||
* */ |
||||
public function index() |
||||
{ |
||||
return $this->fetch(); |
||||
} |
||||
|
||||
/** |
||||
* 机构列表获取 |
||||
* @return |
||||
* */ |
||||
public function lecturer_list() |
||||
{ |
||||
$where = parent::getMore([ |
||||
['page', 1], |
||||
['is_show', ''], |
||||
['limit', 20], |
||||
['title', ''], |
||||
['entry_type',2], |
||||
['mer_id',0] |
||||
|
||||
]); |
||||
return JsonService::successlayui(LecturerModel::getLecturerList($where)); |
||||
} |
||||
|
||||
/**添加/编辑 |
||||
* @param int $id |
||||
* @return mixed|void |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function create($id = 0) |
||||
{ |
||||
$select_list = EducationModel::getSelectList(); |
||||
if ($id) { |
||||
$lecturer = LecturerModel::get($id); |
||||
$lecturer['label'] = json_decode($lecturer['label']); |
||||
$lecturer['introduction'] = htmlspecialchars_decode($lecturer['introduction']); |
||||
$qualifications = json_decode($lecturer['certificate'],true); |
||||
$cert_id = $lecturer['cert_id']; |
||||
if (!$lecturer) return JsonService::fail('机构信息不存在!'); |
||||
} else { |
||||
$lecturer = []; |
||||
$qualifications = count($select_list) == 0 ? '' : json_decode($select_list[0]['qualifications'],true); |
||||
$cert_id = count($select_list) == 0 ? 0 : $select_list[0]['id']; |
||||
} |
||||
$this->assign('cert_id', $cert_id); |
||||
$this->assign('all', json_encode($select_list)); |
||||
$this->assign('qualifications_list', json_encode($qualifications)); |
||||
$this->assign(['lecturer' => json_encode($lecturer), 'id' => $id]); |
||||
return $this->fetch(); |
||||
} |
||||
/** |
||||
* 添加和修改机构 |
||||
* @param int $id 修改 |
||||
* @return JsonService |
||||
* */ |
||||
public function save_lecturer($id = 0) |
||||
{ |
||||
$data = parent::postMore([ |
||||
['lecturer_name', ''], |
||||
['lecturer_head', ''], |
||||
['label', []], |
||||
['phone', ''], |
||||
['explain', ''], |
||||
['introduction', ''], |
||||
['sort', 0], |
||||
['is_show', 1], |
||||
['certificate', ''], |
||||
['card_id', 0], |
||||
['business_license',''], |
||||
['corporate_name',''], |
||||
['credit_code',''], |
||||
['business_term',''], |
||||
['card_straight',''], |
||||
['card_side',''], |
||||
['card_straight',''], |
||||
['emial',''], |
||||
]); |
||||
$data['lecturer_name'] = preg_replace("#(^( |\s)+|( |\s)+$)#", "", $data['lecturer_name']); |
||||
$data['entry_type'] = 2; |
||||
if (!$data['lecturer_name']) return JsonService::fail('请输入机构名称'); |
||||
if (mb_strlen($data['lecturer_name']) > 8) return JsonService::fail('机构名称不能超过8个字'); |
||||
if (!$data['lecturer_head']) return JsonService::fail('请输入机构头像'); |
||||
$data['label'] = json_encode($data['label']); |
||||
$data['introduction'] = htmlspecialchars($data['introduction']); |
||||
if ($id) { |
||||
LecturerModel::edit($data, $id); |
||||
return JsonService::successful('修改成功'); |
||||
} else { |
||||
$data['add_time'] = time(); |
||||
if (!LecturerModel::be(['lecturer_name' => $data['lecturer_name'], 'lecturer_head' => $data['lecturer_head'], 'label' => $data['label'], 'phone' => $data['phone'], 'is_del' => 0])) { |
||||
$res = LecturerModel::set($data); |
||||
} else { |
||||
return JsonService::fail('机构已存在'); |
||||
} |
||||
if ($res) |
||||
return JsonService::successful('添加成功'); |
||||
else |
||||
return JsonService::fail('添加失败'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 设置单个产品上架|下架 |
||||
* @param int $is_show 是否显示 |
||||
* @param int $id 修改的主键 |
||||
* @return JsonService |
||||
*/ |
||||
public function set_show($is_show = '', $id = '') |
||||
{ |
||||
($is_show == '' || $id == '') && JsonService::fail('缺少参数'); |
||||
$res = parent::getDataModification('lecturer_institution', $id, 'is_show', (int)$is_show); |
||||
if ($res) { |
||||
$mer_id = LecturerModel::where('id', $id)->value('mer_id'); |
||||
if ($mer_id) { |
||||
$data['estate'] = $is_show; |
||||
InstitutionModel::edit($data, $mer_id, 'id'); |
||||
} |
||||
return JsonService::successful($is_show == 1 ? '显示成功' : '隐藏成功'); |
||||
} else { |
||||
return JsonService::fail($is_show == 1 ? '显示失败' : '隐藏失败'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 快速编辑 |
||||
* @param string $field 字段名 |
||||
* @param int $id 修改的主键 |
||||
* @param string value 修改后的值 |
||||
* @return JsonService |
||||
*/ |
||||
public function set_value($field = '', $id = '', $value = '') |
||||
{ |
||||
($field == '' || $id == '' || $value == '') && JsonService::fail('缺少参数'); |
||||
$res = parent::getDataModification('lecturer', $id, $field, $value); |
||||
if ($res) |
||||
return JsonService::successful('保存成功'); |
||||
else |
||||
return JsonService::fail('保存失败'); |
||||
} |
||||
|
||||
/** |
||||
* 删除机构 |
||||
* @param int $id 修改的主键 |
||||
* @return json |
||||
* */ |
||||
public function delete($id = 0) |
||||
{ |
||||
if (!$id) return JsonService::fail('缺少参数'); |
||||
if (LecturerModel::delLecturer($id)) |
||||
return JsonService::successful('删除成功'); |
||||
else |
||||
return JsonService::fail(LecturerModel::getErrorInfo('删除失败')); |
||||
} |
||||
|
||||
/** |
||||
* 机构课程订单 |
||||
*/ |
||||
public function lecturer_order($id = 0) |
||||
{ |
||||
$this->assign([ |
||||
'year' => getMonth('h'), |
||||
'lecturer_id' => $id, |
||||
]); |
||||
return $this->fetch(); |
||||
} |
||||
|
||||
/**机构课程购买记录 |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function lecturer_order_list() |
||||
{ |
||||
$where = parent::getMore([ |
||||
['lecturer_id', 0], |
||||
['page', 1], |
||||
['limit', 10], |
||||
['data', ''], |
||||
]); |
||||
if (!$where['lecturer_id']) return JsonService::fail('缺少参数!'); |
||||
$lecturer = LecturerModel::get($where['lecturer_id']); |
||||
if (!$lecturer) return JsonService::fail('机构不存在!'); |
||||
$list = LecturerModel::lecturerOrderList($where); |
||||
return JsonService::successlayui($list); |
||||
} |
||||
|
||||
/** |
||||
* 机构盈利 |
||||
*/ |
||||
public function getBadge() |
||||
{ |
||||
$where = parent::postMore([ |
||||
['lecturer_id', 0], |
||||
['data', ''], |
||||
]); |
||||
if (!$where['lecturer_id']) return JsonService::fail('缺少参数!'); |
||||
$lecturer = LecturerModel::get($where['lecturer_id']); |
||||
if (!$lecturer) return JsonService::fail('机构不存在!'); |
||||
$list = LecturerModel::getBadge($where); |
||||
return JsonService::successful($list); |
||||
} |
||||
|
||||
/** |
||||
* 添加推荐 |
||||
* @param int $special_id |
||||
* @return mixed |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function web_recommend($lecturer_id = 0) |
||||
{ |
||||
if (!$lecturer_id) $this->failed('缺少参数'); |
||||
$lecturer = LecturerModel::get($lecturer_id); |
||||
if (!$lecturer) $this->failed('没有查到此机构'); |
||||
if ($lecturer->is_del) $this->failed('此机构已删除'); |
||||
$form = Form::create(Url::build('save_web_recommend', ['lecturer_id' => $lecturer_id]), [ |
||||
Form::select('recommend_id', '推荐')->setOptions(function () { |
||||
$model = WebRecommend::where(['is_show' => 1, 'type' => 2]); |
||||
$list = $model->field('title,id')->order('sort desc,add_time desc')->select(); |
||||
$menus = []; |
||||
foreach ($list as $menu) { |
||||
$menus[] = ['value' => $menu['id'], 'label' => $menu['title']]; |
||||
} |
||||
return $menus; |
||||
})->filterable(1), |
||||
Form::number('sort', '排序'), |
||||
]); |
||||
$form->setMethod('post')->setTitle('推荐设置')->setSuccessScript('parent.$(".J_iframe:visible")[0].contentWindow.location.reload(); setTimeout(function(){parent.layer.close(parent.layer.getFrameIndex(window.name));},800);'); |
||||
$this->assign(compact('form')); |
||||
return $this->fetch('public/form-builder'); |
||||
} |
||||
|
||||
/** |
||||
* 保存推荐 |
||||
* @param int $special_id |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function save_web_recommend($lecturer_id = 0) |
||||
{ |
||||
if (!$lecturer_id) $this->failed('缺少参数'); |
||||
$data = parent::postMore([ |
||||
['recommend_id', 0], |
||||
['sort', 0], |
||||
]); |
||||
if (!$data['recommend_id']) return JsonService::fail('请选择推荐'); |
||||
$recommend = WebRecommend::get($data['recommend_id']); |
||||
if (!$recommend) return JsonService::fail('导航菜单不存在'); |
||||
$data['add_time'] = time(); |
||||
$data['type'] = $recommend->type; |
||||
$data['link_id'] = $lecturer_id; |
||||
if (WebRecommendRelation::be(['type' => $recommend->type, 'link_id' => $lecturer_id, 'recommend_id' => $data['recommend_id']])) return JsonService::fail('已推荐,请勿重复推荐'); |
||||
if (WebRecommendRelation::set($data)) |
||||
return JsonService::successful('推荐成功'); |
||||
else |
||||
return JsonService::fail('推荐失败'); |
||||
} |
||||
|
||||
/**取消推荐 |
||||
* @param int $id |
||||
*/ |
||||
public function cancel_web_recommendation($id = 0, $lecturer_id = 0) |
||||
{ |
||||
if (!$id || !$lecturer_id) return JsonService::fail('缺少参数'); |
||||
if (WebRecommendRelation::be(['id' => $id, 'link_id' => $lecturer_id])) { |
||||
$res = WebRecommendRelation::where(['id' => $id, 'link_id' => $lecturer_id])->delete(); |
||||
if ($res) |
||||
return JsonService::successful('取消推荐成功'); |
||||
else |
||||
return JsonService::fail('取消推荐失败'); |
||||
} else { |
||||
return JsonService::fail('推荐不存在'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 添加推荐 |
||||
* @param int $special_id |
||||
* @return mixed |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function recommend($lecturer_id = 0) |
||||
{ |
||||
if (!$lecturer_id) $this->failed('缺少参数'); |
||||
$lecturer = LecturerModel::get($lecturer_id); |
||||
if (!$lecturer) $this->failed('没有查到此机构'); |
||||
if ($lecturer->is_del) $this->failed('此机构已删除'); |
||||
$form = Form::create(Url::build('save_recommend', ['lecturer_id' => $lecturer_id]), [ |
||||
Form::select('recommend_id', '推荐')->setOptions(function () { |
||||
$model = Recommend::where(['is_show' => 1, 'type' => 6]); |
||||
$list = $model->field('title,id')->order('sort desc,add_time desc')->select(); |
||||
$menus = []; |
||||
foreach ($list as $menu) { |
||||
$menus[] = ['value' => $menu['id'], 'label' => $menu['title']]; |
||||
} |
||||
return $menus; |
||||
})->filterable(1), |
||||
Form::number('sort', '排序'), |
||||
]); |
||||
$form->setMethod('post')->setTitle('推荐设置')->setSuccessScript('parent.$(".J_iframe:visible")[0].contentWindow.location.reload(); setTimeout(function(){parent.layer.close(parent.layer.getFrameIndex(window.name));},800);'); |
||||
$this->assign(compact('form')); |
||||
return $this->fetch('public/form-builder'); |
||||
} |
||||
|
||||
/** |
||||
* 保存推荐 |
||||
* @param int $special_id |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function save_recommend($lecturer_id = 0) |
||||
{ |
||||
if (!$lecturer_id) $this->failed('缺少参数'); |
||||
$data = parent::postMore([ |
||||
['recommend_id', 0], |
||||
['sort', 0], |
||||
]); |
||||
if (!$data['recommend_id']) return JsonService::fail('请选择推荐'); |
||||
$recommend = Recommend::get($data['recommend_id']); |
||||
if (!$recommend) return JsonService::fail('导航菜单不存在'); |
||||
$data['add_time'] = time(); |
||||
$data['type'] = $recommend->type; |
||||
$data['link_id'] = $lecturer_id; |
||||
if (RecommendRelation::be(['type' => $recommend->type, 'link_id' => $lecturer_id, 'recommend_id' => $data['recommend_id']])) return JsonService::fail('已推荐,请勿重复推荐'); |
||||
if (RecommendRelation::set($data)) |
||||
return JsonService::successful('推荐成功'); |
||||
else |
||||
return JsonService::fail('推荐失败'); |
||||
} |
||||
|
||||
/**取消推荐 |
||||
* @param int $id |
||||
*/ |
||||
public function cancel_recommendation($id = 0, $lecturer_id = 0) |
||||
{ |
||||
if (!$id || !$lecturer_id) return JsonService::fail('缺少参数'); |
||||
if (RecommendRelation::be(['id' => $id, 'link_id' => $lecturer_id])) { |
||||
$res = RecommendRelation::where(['id' => $id, 'link_id' => $lecturer_id])->delete(); |
||||
if ($res) |
||||
return JsonService::successful('取消推荐成功'); |
||||
else |
||||
return JsonService::fail('取消推荐失败'); |
||||
} else { |
||||
return JsonService::fail('推荐不存在'); |
||||
} |
||||
} |
||||
|
||||
/**生成机构后台 |
||||
* @return mixed |
||||
*/ |
||||
public function mercreate($id) |
||||
{ |
||||
$lecturer = LecturerModel::get($id); |
||||
$this->assign([ |
||||
'title' => '添加机构后台', |
||||
'lecturer' => json_encode($lecturer), |
||||
'action' => Url::build('save'), |
||||
'menus' => json(InstitutionMenus::ruleList())->getContent() |
||||
]); |
||||
return $this->fetch(); |
||||
} |
||||
|
||||
/** |
||||
* 添加机构商户 |
||||
*/ |
||||
public function save() |
||||
{ |
||||
$data = parent::postMore([ |
||||
'account', |
||||
['id', 0], |
||||
['uid', 0], |
||||
'conf_pwd', |
||||
'pwd', |
||||
'mer_name', |
||||
'real_name', |
||||
'mer_phone', |
||||
'mer_avatar', |
||||
'mer_special_divide', |
||||
'mer_store_divide', |
||||
'mer_event_divide', |
||||
'mer_data_divide', |
||||
'mer_test_divide', |
||||
'gold_divide', |
||||
'mark', |
||||
'mer_address', |
||||
['checked_menus', [], '', 'rules'], |
||||
['is_source', 0], |
||||
['is_audit', 0], |
||||
['status', 0] |
||||
]); |
||||
if (!is_array($data['rules']) || !count($data['rules'])) return JsonService::fail('请选择最少一个权限'); |
||||
$data['rules'] = implode(',', $data['rules']); |
||||
if (!$data['account']) return JsonService::fail('请输入机构后台账号'); |
||||
if (InstitutionAdminModel::where('account', trim($data['account']))->where('is_del', 0)->count()) return JsonService::fail('商户账号已存在,请使用别的商户账号注册'); |
||||
if (!$data['pwd']) return JsonService::fail('请输入机构后台登陆密码'); |
||||
if ($data['pwd'] != $data['conf_pwd']) return JsonService::fail('两次输入密码不相同'); |
||||
if (!$data['mer_name']) return JsonService::fail('请输入机构后台名称'); |
||||
if (!$data['uid']) return JsonService::fail('请输入绑定的用户ID'); |
||||
$user = User::where('uid', $data['uid'])->find(); |
||||
if (!$user) { |
||||
return JsonService::fail('绑定的用户不存在'); |
||||
} else { |
||||
if ($user['business'] == 1) { |
||||
return JsonService::fail('该用户已是讲师/机构'); |
||||
} |
||||
} |
||||
$id = $data['id']; |
||||
$data['pwd'] = trim(md5($data['pwd'])); |
||||
$data['reg_time'] = time(); |
||||
$data['add_time'] = time(); |
||||
$data['reg_admin_id'] = $this->adminId; |
||||
$data['lecturer_id'] = $id; |
||||
$data['estate'] = 1; |
||||
$admin = array(); |
||||
$admin['account'] = trim($data['account']); |
||||
$admin['pwd'] = $data['pwd']; |
||||
unset($data['id']); |
||||
unset($data['conf_pwd']); |
||||
unset($data['account']); |
||||
unset($data['pwd']); |
||||
InstitutionModel::beginTrans(); |
||||
$res = InstitutionModel::set($data); |
||||
$res1 = false; |
||||
if ($res) { |
||||
$admin['uid'] = $data['uid']; |
||||
$admin['mer_id'] = $res->id; |
||||
$admin['real_name'] = $data['mer_name']; |
||||
$admin['rules'] = $data['rules']; |
||||
$admin['phone'] = $data['mer_phone']; |
||||
$admin['add_time'] = time(); |
||||
$admin['status'] = 1; |
||||
$admin['level'] = 0; |
||||
$res1 = InstitutionAdminModel::set($admin); |
||||
} |
||||
$bool = false; |
||||
if ($res1 && $res) $bool = true; |
||||
InstitutionModel::checkTrans($bool); |
||||
if ($bool) { |
||||
LecturerModel::where('id', $id)->update(['mer_id' => $res->id, 'lecturer_name' => $data['mer_name'], 'phone' => $data['mer_phone']]); |
||||
Special::where('lecturer_id', $id)->update(['mer_id' => $res->id]); |
||||
User::where('uid', $data['uid'])->update(['business' => 1]); |
||||
Db::name('cache_merchant')->insert( |
||||
[ |
||||
'mer_id' => $res->id, |
||||
'add_time' => time(), |
||||
'key'=> 'wechat_menus', |
||||
'result' => '[{"type":"view","name":"\u8bb2\u5e08\u9996\u9875","sub_button":[],"url":"https:\/\/www.ideaketang.com\/\/h5"},{"type":"click","name":"\u5e73\u53f0\u9996\u9875","sub_button":[],"key":"https:\/\/www.ideaketang.com\/h5"},{"type":"view","name":"\u670d\u52a1\u4e2d\u5fc3","sub_button":[],"key":"https:\/\/www.ideaketang.com\/h5","url":"https:\/\/www.ideaketang.com\/h5"}]' |
||||
] |
||||
|
||||
); |
||||
return JsonService::successful('添加机构后台成功!'); |
||||
} else { |
||||
return JsonService::successful('添加机构后台失败!'); |
||||
} |
||||
|
||||
} |
||||
|
||||
public function select_list(){ |
||||
$data = parent::getMore([ |
||||
['id', 0] |
||||
]); |
||||
$select_list = EducationModel::where('id',$data['id'])->find(); |
||||
$select_list['qualifications'] = json_decode($select_list['qualifications'],true); |
||||
$data = $select_list['qualifications']; |
||||
foreach($data as &$item){ |
||||
if($item['event_value'] == 3){ |
||||
$item['eventValue'] = implode(',',$item['event_value']); |
||||
} |
||||
} |
||||
return JsonService::successful($select_list); |
||||
} |
||||
} |
@ -0,0 +1,181 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
namespace app\admin\controller\store; |
||||
|
||||
use app\admin\controller\AuthController; |
||||
use service\JsonService as Json; |
||||
use app\admin\model\store\StoreEntityCategory as StoreEntityCategoryModel; |
||||
|
||||
/** |
||||
* 商品分类 |
||||
* Class GoodsCategory |
||||
*/ |
||||
class StoreEntityCategory extends AuthController |
||||
{ |
||||
public function index() |
||||
{ |
||||
return $this->fetch(); |
||||
} |
||||
|
||||
public function get_category_list() |
||||
{ |
||||
$where = parent::getMore([ |
||||
['page', 1], |
||||
['limit', 20], |
||||
['grade_id', 0], |
||||
['name', ''] |
||||
]); |
||||
return Json::successful(StoreEntityCategoryModel::getAllList($where)); |
||||
} |
||||
|
||||
/** |
||||
* 创建分类 |
||||
* @param int $id |
||||
* @return mixed |
||||
* @throws \think\exception\DbException |
||||
*/ |
||||
public function create($id = 0) |
||||
{ |
||||
$cate = $id > 0 ? StoreEntityCategoryModel::get($id) : []; |
||||
// var_dump($cate); |
||||
// exit(); |
||||
$this->assign(['cate' => json_encode($cate), 'id' => $id]); |
||||
return $this->fetch(); |
||||
} |
||||
|
||||
public function get_cate_list() |
||||
{ |
||||
$category = StoreEntityCategoryModel::taskCategoryAll(2); |
||||
return Json::successful($category); |
||||
} |
||||
|
||||
public function add_cate_list() |
||||
{ |
||||
$category = StoreEntityCategoryModel::where(['grade_id' => 0, 'is_del' => 0])->select(); |
||||
$category = count($category) > 0 ? $category->toArray() : []; |
||||
$array = []; |
||||
$oneCate['id'] = 0; |
||||
$oneCate['name'] = '顶级分类'; |
||||
array_push($array, $oneCate); |
||||
foreach ($category as $key => $value) { |
||||
array_push($array, $value); |
||||
} |
||||
return Json::successful($array); |
||||
} |
||||
|
||||
/** |
||||
* 快速编辑 |
||||
* |
||||
* @return json |
||||
*/ |
||||
public function set_value($field = '', $id = '', $value = '') |
||||
{ |
||||
$field == '' || $id == '' || $value == '' && Json::fail('缺少参数'); |
||||
$res = parent::getDataModification('store_entity_category', $id, $field, $value); |
||||
if ($res) |
||||
return Json::successful('保存成功'); |
||||
else |
||||
return Json::fail('保存失败'); |
||||
} |
||||
|
||||
/** |
||||
* 新增或者修改 |
||||
* |
||||
* @return json |
||||
*/ |
||||
public function save($id = 0) |
||||
{ |
||||
$post = parent::postMore([ |
||||
['name', ''], |
||||
['grade_id', ''], |
||||
['is_recommend', ''], |
||||
['is_show', ''], |
||||
['pic', ''], |
||||
['sort', 0] |
||||
]); |
||||
if (!$post['name']) return Json::fail('请输入分类名称'); |
||||
if ($id) { |
||||
$cate = StoreEntityCategoryModel::get($id); |
||||
if (!$cate['grade_id'] && $post['grade_id'] && StoreEntityCategoryModel::be(['grade_id' => $id, 'is_del' => 0])) return Json::fail('无法移动有下级的分类'); |
||||
if (StoreEntityCategoryModel::where(['name' => $post['name'], 'is_del' => 0])->where('id', '<>', $id)->count() >= 1) return Json::fail('分类名称已存在'); |
||||
$res = StoreEntityCategoryModel::edit($post, $id); |
||||
if ($res) |
||||
return Json::successful('修改成功'); |
||||
else |
||||
return Json::fail('修改失败'); |
||||
} else { |
||||
$post['add_time'] = time(); |
||||
if (StoreEntityCategoryModel::be(['name' => $post['name'], 'is_del' => 0])) { |
||||
return Json::fail('分类名称已存在!'); |
||||
} |
||||
$res = StoreEntityCategoryModel::set($post); |
||||
if ($res) |
||||
return Json::successful('添加成功'); |
||||
else |
||||
return Json::fail('添加失败'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 删除 |
||||
* |
||||
* @return json |
||||
*/ |
||||
public function delete($id = 0) |
||||
{ |
||||
if (!$id) return Json::fail('缺少参数'); |
||||
$cate = StoreEntityCategoryModel::get($id); |
||||
if (!$cate['grade_id']) { |
||||
$count = StoreEntityCategoryModel::where('grade_id', $id)->where(['is_del' => 0])->count(); |
||||
if ($count) return Json::fail('暂无法删除,请删除下级分类'); |
||||
} |
||||
// if (QuestionsModel::where('pid', $id)->where(['is_del' => 0, 'mer_id' => 0])->count()) return Json::fail('暂无法删除,请先删除题目'); |
||||
$res = parent::getDataModification('store_entity_category', $id, 'is_del', 1); |
||||
if ($res) |
||||
return Json::successful('删除成功'); |
||||
else |
||||
return Json::fail('删除失败'); |
||||
} |
||||
/**二级分是否显示快捷操作 |
||||
* @param string $is_show |
||||
* @param string $id |
||||
* @return mixed |
||||
*/ |
||||
public function set_show($is_show = '', $id = '') |
||||
{ |
||||
($is_show == '' || $id == '') && Json::fail('缺少参数'); |
||||
$res = parent::getDataModification('store_entity_category', $id, 'is_show', (int)$is_show); |
||||
if ($res) { |
||||
return Json::successful($is_show == 1 ? '显示成功' : '隐藏成功'); |
||||
} else { |
||||
return Json::fail($is_show == 1 ? '显示失败' : '隐藏失败'); |
||||
} |
||||
} |
||||
/**二级分是否显示快捷操作 |
||||
* @param string $is_show |
||||
* @param string $id |
||||
* @return mixed |
||||
*/ |
||||
public function set_recommend($is_recommend = '', $id = '') |
||||
{ |
||||
($is_recommend == '' || $id == '') && Json::fail('缺少参数'); |
||||
$res = parent::getDataModification('store_entity_category', $id, 'is_recommend', (int)$is_recommend); |
||||
if ($res) { |
||||
return Json::successful($is_recommend == 1 ? '显示成功' : '隐藏成功'); |
||||
} else { |
||||
return Json::fail($is_recommend == 1 ? '显示失败' : '隐藏失败'); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,94 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
namespace app\admin\model\store; |
||||
|
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
use service\UtilService as Util; |
||||
// use app\admin\model\questions\Questions as QuestionsModel; |
||||
|
||||
/** |
||||
* 试题分类 Model |
||||
* Class QuestionsCategpry |
||||
* @package app\admin\model\questions |
||||
*/ |
||||
class StoreEntityCategory extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
|
||||
/** |
||||
* 全部试题分类 |
||||
*/ |
||||
public static function taskCategoryAll($type = 0) |
||||
{ |
||||
$model = self::where(['is_del' => 0]); |
||||
if ($type == 1) { |
||||
$model = $model->where('grade_id', 0); |
||||
} |
||||
$list = $model->order('sort desc,add_time desc')->select(); |
||||
$list = count($list) > 0 ? $list->toArray() : []; |
||||
$list = Util::sortListTier($list); |
||||
return $list; |
||||
} |
||||
|
||||
/** |
||||
* 试题分类列表 |
||||
*/ |
||||
public static function getAllList($where) |
||||
{ |
||||
$data = self::setWhere($where)->column('id,grade_id'); |
||||
$list = []; |
||||
foreach ($data as $ket => $item) { |
||||
$cate = self::where('id', $ket)->find(); |
||||
if ($cate) { |
||||
$cate = $cate->toArray(); |
||||
// if ($item > 0) { |
||||
// $cate['sum'] = QuestionsModel::where(['is_del' => 0])->where('grade_id', $ket)->count(); |
||||
// } else { |
||||
// $pids = self::categoryId($ket); |
||||
// $cate['sum'] = QuestionsModel::where(['is_del' => 0,])->where('grade_id', 'in', $pids)->count(); |
||||
// } |
||||
array_push($list, $cate); |
||||
unset($cate); |
||||
} |
||||
if ($item > 0 && !array_key_exists($item, $data)) { |
||||
$cate = self::where('id', $item)->find(); |
||||
if ($cate) { |
||||
$cate = $cate->toArray(); |
||||
$pids = self::categoryId($item); |
||||
//$cate['sum'] = QuestionsModel::where(['is_del' => 0])->where('grade_id', 'in', $pids)->count(); |
||||
array_push($list, $cate); |
||||
} |
||||
} |
||||
} |
||||
return $list; |
||||
} |
||||
|
||||
public static function setWhere($where) |
||||
{ |
||||
$model = self::order('sort desc,add_time desc')->where(['is_del' => 0]); |
||||
if ($where['grade_id']) $model = $model->where('id', $where['grade_id']); |
||||
if ($where['name'] != '') $model = $model->where('name', 'like', "%$where[name]%"); |
||||
return $model; |
||||
} |
||||
|
||||
/**获取一个分类下的所有分类ID |
||||
* @param int $pid |
||||
*/ |
||||
public static function categoryId($pid = 0) |
||||
{ |
||||
$data = self::where(['is_del' => 0])->where('grade_id', $pid)->column('id'); |
||||
array_push($data, $pid); |
||||
return $data; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,411 @@ |
||||
{extend name="public/container"} |
||||
{block name='head_top'} |
||||
<style> |
||||
.layui-form-item .special-label i{display: inline-block;width: 18px;height: 18px;font-size: 18px;color: #fff;} |
||||
.layui-form-item .label-box p{line-height: inherit;} |
||||
.m-t-5{margin-top:5px;} |
||||
#app .layui-barrage-box{margin-bottom: 10px;margin-top: 10px;margin-left: 10px;border: 1px solid #0092DC;border-radius: 5px;cursor: pointer;position: relative;} |
||||
#app .layui-barrage-box.border-color{border-color: #0bb20c;} |
||||
#app .layui-barrage-box .del-text{position: absolute;top: 0;left: 0;background-color: rgba(0,0,0,0.5);color: #ffffff;width: 92%;text-align: center;} |
||||
#app .layui-barrage-box p{padding:5px 5px; } |
||||
#app .layui-empty-text{text-align: center;font-size: 18px;} |
||||
#app .layui-empty-text p{padding: 10px 10px;} |
||||
.edui-default .edui-for-image .edui-icon {background-position: -380px 0px;} |
||||
.layui-form-item .special-label {width: 50px;float: left;height: 30px;line-height: 38px;margin-left: 10px;margin-top: 5px;border-radius: 5px;background-color: #0092DC;text-align: center;} |
||||
.layui-form-item .special-label i {display: inline-block;width: 18px;height: 18px;font-size: 18px;color: #fff;} |
||||
.layui-form-item .label-box {border: 1px solid;border-radius: 10px;position: relative;padding: 10px;height: 30px;color: #fff;background-color: #393D49;text-align: center;cursor: pointer;display: inline-block;line-height: 10px;} |
||||
.layui-form-item .label-box p {line-height: inherit;} |
||||
</style> |
||||
<script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/third-party/zeroclipboard/ZeroClipboard.js"></script> |
||||
<script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/ueditor.config.js"></script> |
||||
<script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/ueditor.all.min.js"></script> |
||||
<script src="{__PLUG_PATH}reg-verify.js"></script> |
||||
{/block} |
||||
{block name="content"} |
||||
<div class="layui-fluid" id="app" v-cloak> |
||||
<div class="layui-card"> |
||||
<!-- <div class="layui-card-header">{{id ? '编辑讲师':'添加讲师'}}</div> --> |
||||
<div class="layui-card-body"> |
||||
<form action="" class="layui-form"> |
||||
<div class="layui-form-item"> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">法人名称:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="lecturer_name" v-model.trim="formData.lecturer_name" required autocomplete="off" placeholder="请输入法人名称" maxlength="8" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">法人身份证号:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="card_id" v-model.trim="formData.card_id" required autocomplete="off" placeholder="请输入法人身份证号" maxlength="18" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">统一社会信用代码:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="credit_code" v-model.trim="formData.credit_code" required autocomplete="off" placeholder="请输入统一社会信用代码" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">营业期限:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="business_term" v-model.trim="formData.business_term" required autocomplete="off" placeholder="营业期限:长期输入长期即可" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">身份证正面:</label> |
||||
<div class="layui-input-block"> |
||||
<div class="upload-image-box" v-if="formData.card_straight" > |
||||
<img :src="formData.card_straight" alt=""> |
||||
<div class="mask" style="display: block"> |
||||
<p> |
||||
<i class="fa fa-eye" @click="look(formData.card_straight)"></i> |
||||
<i class="fa fa-trash-o" @click="delect('card_straight')"></i> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="upload-image" v-show="!formData.card_straight" @click="upload('card_straight')"> |
||||
<div class="fiexd"><i class="fa fa-plus"></i></div> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">身份证徽面:</label> |
||||
<div class="layui-input-block"> |
||||
<div class="upload-image-box" v-if="formData.card_side" > |
||||
<img :src="formData.card_side" alt=""> |
||||
<div class="mask" style="display: block"> |
||||
<p> |
||||
<i class="fa fa-eye" @click="look(formData.card_side)"></i> |
||||
<i class="fa fa-trash-o" @click="delect('card_side')"></i> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="upload-image" v-show="!formData.card_side" @click="upload('card_side')"> |
||||
<div class="fiexd"><i class="fa fa-plus"></i></div> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">邮箱:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="emial" v-model.trim="formData.emial" required autocomplete="off" placeholder="请输入邮箱" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label required">教育领域:</label> |
||||
<div class="layui-input-block" style="width:190px;"> |
||||
<select name="cert_id" lay-search="" lay-filter="cert_id" v-model="formData.cert_id"> |
||||
<option v-for="(items,idx) in select_list" :key="items.id" :value="items.id">{{items.title}}</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item" :class="item.is_required == 1 ? 'required' : ''" v-for="(item,index) in qualifications_list" :key="index"> |
||||
<label class="layui-form-label">{{item.event_name}}</label> |
||||
<div class="layui-input-inline" v-if="item.event_type == 1"> |
||||
<input type="text" name="lecturer_name" v-model.trim="item.event_value" autocomplete="off" :placeholder="'请输入'+item.event_name" class="layui-input"> |
||||
</div> |
||||
<div class="layui-input-inline" style="width: 380px;" v-if="item.event_type == 4"> |
||||
<input type="text" v-model.trim="item.event_value" class="layui-input" autocomplete="off" :id="'date'+index" :placeholder="'请输入'+item.event_name + ':长期输入长期即可'"> |
||||
</div> |
||||
<div class="layui-input-inline" v-if="item.event_type == 3"> |
||||
<select :name="'event_value_id'+index" lay-search="" :lay-filter="'event_value_id'+index" v-model="item.event_value"> |
||||
<option v-for="(items,idx) in item.eventValue" :key="idx" :value="idx">{{items}}</option> |
||||
</select> |
||||
</div> |
||||
|
||||
<div class="layui-input-block" v-if="item.event_type == 2"> |
||||
<div class="upload-image-box" v-if="item.event_value" > |
||||
<img :src="item.event_value" alt=""> |
||||
<div class="mask" style="display: block"> |
||||
<p> |
||||
<i class="fa fa-eye" @click="look(item.event_value)"></i> |
||||
<i class="fa fa-trash-o" @click="delect('event_value',index)"></i> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="upload-image" v-if="!item.event_value" @click="upload('event_value',0,index)"> |
||||
<div class="fiexd"><i class="fa fa-plus"></i></div> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div v-if="formData.label.length" class="layui-form-item"> |
||||
<div class="layui-input-block"> |
||||
<button v-for="item in formData.label" :key="item" type="button" class="layui-btn layui-btn-normal layui-btn-sm" @click="delLabel(item)">{{item}}</button> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">头像:(200*200)</label> |
||||
<div class="layui-input-block"> |
||||
<div class="upload-image-box" v-if="formData.lecturer_head" > |
||||
<img :src="formData.lecturer_head" alt=""> |
||||
<div class="mask" style="display: block"> |
||||
<p> |
||||
<i class="fa fa-eye" @click="look(formData.lecturer_head)"></i> |
||||
<i class="fa fa-trash-o" @click="delect('lecturer_head')"></i> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="upload-image" v-show="!formData.lecturer_head" @click="upload('lecturer_head')"> |
||||
<div class="fiexd"><i class="fa fa-plus"></i></div> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label required">手机:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="phone" v-model.trim="formData.phone" required autocomplete="off" maxlength="11" placeholder="请输入手机号" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item submit"> |
||||
<label class="layui-form-label">排序:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="number" name="sort" v-model="formData.sort" min="0" max="9999" class="layui-input" v-sort> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label">状态:</label> |
||||
<div class="layui-input-block"> |
||||
<input type="radio" name="is_show" value="1" title="显示" v-model="formData.is_show" lay-filter="is_show" > |
||||
<input type="radio" name="is_show" value="0" title="隐藏" v-model="formData.is_show" lay-filter="is_show"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item submit"> |
||||
<div class="layui-input-block"> |
||||
<button class="layui-btn layui-btn-normal" type="button" @click="save">{{id ? '立即修改':'立即提交'}}</button> |
||||
<button class="layui-btn layui-btn-primary clone" type="button" @click="clone_form">取消</button> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script type="text/javascript" src="{__ADMIN_PATH}js/layuiList.js"></script> |
||||
{/block} |
||||
{block name='script'} |
||||
<script> |
||||
var id={$id},lecturer=<?=isset($lecturer) ? $lecturer : []?>;
|
||||
var all={$all}; |
||||
var qualifications_list={$qualifications_list}; |
||||
var cert_id = {$cert_id}; |
||||
require(['vue','helper','zh-cn','request','plupload','aliyun-oss','OssUpload'],function(Vue,$h) { |
||||
new Vue({ |
||||
el: "#app", |
||||
directives: { |
||||
sort: { |
||||
bind: function (el, binding, vnode) { |
||||
var vm = vnode.context; |
||||
el.addEventListener('change', function () { |
||||
if (!this.value || this.value < 0) { |
||||
vm.formData.sort = 0; |
||||
} else if (this.value > 9999) { |
||||
vm.formData.sort = 9999; |
||||
} else { |
||||
vm.formData.sort = parseInt(this.value); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}, |
||||
data: { |
||||
formData:{ |
||||
cert_id:cert_id, |
||||
lecturer_name:lecturer.lecturer_name || '', |
||||
lecturer_head: lecturer.lecturer_head || '', |
||||
label: lecturer.label || [], |
||||
phone: lecturer.phone || '', |
||||
explain: lecturer.explain || '', |
||||
introduction: lecturer.introduction || '', |
||||
sort:Number(lecturer.sort) || 0, |
||||
is_show:lecturer.is_show || 1, |
||||
emial:lecturer.emial ||'', |
||||
business_license:lecturer.business_license ||'', |
||||
corporate_name:lecturer.corporate_name ||'', |
||||
credit_code:lecturer.credit_code ||"", |
||||
business_term:lecturer.business_term ||'', |
||||
card_straight:lecturer.card_straight ||'', |
||||
card_side:lecturer.card_side ||'', |
||||
card_id:lecturer.card_id ||"" |
||||
}, |
||||
label: '', |
||||
select_list:all, |
||||
qualifications_list:qualifications_list || [], |
||||
event_index:0 |
||||
}, |
||||
methods:{ |
||||
//查看图片 |
||||
look: function (pic) { |
||||
parent.$eb.openImage(pic); |
||||
}, |
||||
//上传图片 |
||||
upload: function (key, count,index) { |
||||
this.event_index = index; |
||||
ossUpload.createFrame('请选择图片', {fodder: key, max_count: count === undefined ? 0 : count},{w:800,h:550}); |
||||
}, |
||||
// 删除领域 |
||||
delLabel: function (label) { |
||||
this.formData.label.splice(this.formData.label.indexOf(label), 1); |
||||
}, |
||||
// 添加领域 |
||||
addLabrl: function () { |
||||
if (this.label) { |
||||
var length = this.formData.label.length; |
||||
for (var i = 0; i < length; i++) { |
||||
if (this.formData.label[i] == this.label) return layList.msg('请勿重复添加'); |
||||
} |
||||
this.formData.label.push(this.label); |
||||
this.label = ''; |
||||
} |
||||
}, |
||||
clone_form: function () { |
||||
var that = this; |
||||
if (parseInt(id) == 0) { |
||||
parent.layer.closeAll(); |
||||
} |
||||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引 |
||||
parent.layer.close(index); //再执行关闭 |
||||
}, |
||||
save:function () { |
||||
var that=this; |
||||
// that.formData.introduction = that.ue.getContent(); |
||||
|
||||
that.$nextTick(function () { |
||||
if (!that.formData.lecturer_name) return layList.msg('请法人名称'); |
||||
for (var i = 0, len = this.qualifications_list.length; i < len; i++) { |
||||
if (!this.qualifications_list[i].is_required) { |
||||
continue; |
||||
} |
||||
switch (this.qualifications_list[i].event_type) { |
||||
case 1: |
||||
if (!this.qualifications_list[i].event_value) { |
||||
layList.msg('请输入'+this.qualifications_list[i].event_name); |
||||
return; |
||||
} |
||||
break; |
||||
case 2: |
||||
if (!this.qualifications_list[i].event_value) { |
||||
layList.msg('请上传'+this.qualifications_list[i].event_name); |
||||
return; |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
// if (!that.formData.label.length) return layList.msg('请输入领域'); |
||||
if (!that.formData.lecturer_head) return layList.msg('请上传机构头像'); |
||||
if (!that.formData.phone) return layList.msg('请输入手机号'); |
||||
if(!$reg.isPhone(that.formData.phone)){ |
||||
return layList.msg('请输入正确的手机号'); |
||||
} |
||||
that.formData.certificate = JSON.stringify(that.qualifications_list); |
||||
layList.loadFFF(); |
||||
layList.basePost(layList.U({a: 'save_lecturer', q: {id: id}}), that.formData, function (res) { |
||||
layList.loadClear(); |
||||
if (parseInt(id) == 0) { |
||||
layList.layer.confirm('添加成功,您要继续添加机构吗?', { |
||||
btn: ['继续添加', '立即提交'] |
||||
}, function (index) { |
||||
layList.layer.close(index); |
||||
}, function (index) { |
||||
layList.layer.close(index); |
||||
var index = parent.layer.getFrameIndex(window.name); |
||||
parent.layer.close(index); |
||||
}); |
||||
} else { |
||||
layList.msg('修改成功', function () { |
||||
parent.layer.closeAll(); |
||||
}) |
||||
} |
||||
}, function (res) { |
||||
layList.msg(res.msg); |
||||
layList.loadClear(); |
||||
}); |
||||
}) |
||||
}, |
||||
delect:function(key,index = 0){ |
||||
var that=this; |
||||
if(key == 'event_value'){ |
||||
that.qualifications_list[index].event_value = "" |
||||
}else{ |
||||
that.formData[key]=''; |
||||
} |
||||
}, |
||||
changeIMG: function (key, value, multiple) { |
||||
if(key == "event_value"){ |
||||
this.qualifications_list[this.event_index].event_value = value; |
||||
}else{ |
||||
if (multiple) { |
||||
var that = this; |
||||
value.map(function (v) { |
||||
that.formData[key].push({pic: v, is_show: false}); |
||||
}); |
||||
this.$set(this.formData, key, this.formData[key]); |
||||
} else { |
||||
this.$set(this.formData, key, value); |
||||
} |
||||
} |
||||
|
||||
}, |
||||
|
||||
}, |
||||
mounted:function () { |
||||
var that=this; |
||||
window.changeIMG = that.changeIMG; |
||||
//选择图片插入到编辑器中 |
||||
window.insertEditor = function(list,fodder){ |
||||
that.ue.execCommand('insertimage', list); |
||||
}; |
||||
// that.qualifications_list.forEach((item,index) => { |
||||
// if(item.event_type == 3){ |
||||
// that.qualifications_list[index].eventValue = that.qualifications_list[index].event_value.split('#'); |
||||
// } |
||||
// }); |
||||
this.$nextTick(function () { |
||||
layList.form.render(); |
||||
layui.config({ |
||||
base: '{__ADMIN_PATH}mods/', |
||||
version: '1.0' |
||||
}); |
||||
layui.use([ |
||||
'layarea', |
||||
'laydate', |
||||
'form', |
||||
'element' |
||||
], function () { |
||||
var layarea = layui.layarea; |
||||
var laydate = layui.laydate; |
||||
var form = layui.form; |
||||
var layer = layui.layer; |
||||
var element = layui.element; |
||||
form.render(); |
||||
}); |
||||
}); |
||||
layList.form.on('radio(is_show)',function (data) { |
||||
that.formData.is_show=data.value; |
||||
}); |
||||
|
||||
layList.form.on('select(cert_id)', function (data) { |
||||
that.formData.cert_id = Number(data.elem.value); |
||||
layList.baseGet(layList.Url({ |
||||
a: 'select_list', |
||||
q: {id: that.formData.cert_id} |
||||
}), function (res) { |
||||
that.qualifications_list =res.data.qualifications; |
||||
}); |
||||
}); |
||||
// that.qualifications_list.forEach((item,index) => { |
||||
// if(item.event_type == 3){ |
||||
// layList.form.on(`select(event_value_id${index})`,function (data) { |
||||
// that.qualifications_list[index].event_value = data.elem.value; |
||||
// }); |
||||
// } |
||||
// }); |
||||
} |
||||
}) |
||||
}) |
||||
</script> |
||||
{/block} |
@ -0,0 +1,413 @@ |
||||
{extend name="public/container"} |
||||
{block name="content"} |
||||
<div class="layui-fluid"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header">机构列表</div> |
||||
<div class="layui-card-body"> |
||||
<form class="layui-form layui-form-pane" action=""> |
||||
<div class="layui-form-item"> |
||||
<div class="layui-inline"> |
||||
<label class="layui-form-label">机构名称</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="title" class="layui-input" placeholder="请输入机构名称"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<label class="layui-form-label">显示状态</label> |
||||
<div class="layui-input-inline"> |
||||
<select name="is_show"> |
||||
<option value="">全部</option> |
||||
<option value="1">显示</option> |
||||
<option value="0">隐藏</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<div class="layui-input-inline"> |
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="search" lay-filter="search"> |
||||
<i class="layui-icon layui-icon-search"></i>搜索 |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="layui-btn-container"> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="add"> |
||||
<i class="layui-icon layui-icon-add-1"></i>添加机构 |
||||
</button> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="refresh"> |
||||
<i class="layui-icon layui-icon-refresh-1"></i>刷新 |
||||
</button> |
||||
</div> |
||||
<table id="List" lay-filter="List"></table> |
||||
<script type="text/html" id="is_show"> |
||||
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='显示|隐藏' {{ d.is_show == 1 ? 'checked' : '' }}> |
||||
</script> |
||||
<script type="text/html" id="recommend"> |
||||
<div class="layui-btn-container"> |
||||
{{# layui.each(d.recommend, function(index, item){ }} |
||||
<button type="button" class="layui-btn layui-btn-yd layui-btn-normal layui-btn-xs" data-type="recommend" data-id="{{index}}" data-pid="{{d.id}}">yd-{{item}}</button> |
||||
{{# }); }} |
||||
</div> |
||||
<div class="layui-btn-container"> |
||||
{{# layui.each(d.web_recommend, function(index, item){ }} |
||||
<button type="button" class="layui-btn layui-btn-pc layui-btn-normal layui-btn-xs" data-type="recommend" data-id="{{index}}" data-pid="{{d.id}}">pc-{{item}}</button> |
||||
{{# }); }} |
||||
</div> |
||||
</script> |
||||
<script type="text/html" id="lecturer_name"> |
||||
<p>{{d.lecturer_name}}/{{d.mer_id}}</p> |
||||
</script> |
||||
<script type="text/html" id="lecturer_head"> |
||||
<img width="50" height="50" lay-event='open_image' src="{{d.lecturer_head}}"> |
||||
</script> |
||||
<script type="text/html" id="mer_id"> |
||||
<div class="layui-btn-group"> |
||||
{{# if(d.mer_id==0){ }} |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" data-type="mercreate" data-id="{{d.id}}">生成机构后台</button> |
||||
{{# }else{ }} |
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" target="_blank" href="{:url('institution.institution/login')}?id={{d.mer_id}}">访问</a> |
||||
<button class="layui-btn layui-btn-normal layui-btn-xs" onclick="$eb.createModalFrame('编辑机构信息','{:Url('institution.institution/edit')}?id={{d.mer_id}}',{h:700,w:800})">编辑</button> |
||||
<button class="layui-btn success layui-btn-xs" lay-event='reset_pwd'>重置密码</button> |
||||
{{# } }} |
||||
</div> |
||||
</script> |
||||
<script type="text/html" id="status"> |
||||
{{# if(d.status==1){ }} |
||||
<button lay-event='modify_error' class="modify layui-btn layui-btn-normal layui-btn-xs zsff-success" type="button">[正常]</button> |
||||
{{# }else{ }} |
||||
<button lay-event='modify_success' class="modify layui-btn layui-btn-danger layui-btn-xs zsff-fail" type="button">[锁定]</button> |
||||
{{# } }} |
||||
</script> |
||||
<script type="text/html" id="is_source"> |
||||
{{# if(d.is_source==1){ }} |
||||
入驻 |
||||
{{# }else{ }} |
||||
平台 |
||||
{{# } }} |
||||
</script> |
||||
<script type="text/html" id="act"> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" onclick="dropdown(this)"> |
||||
<i class="layui-icon"></i>操作 |
||||
</button> |
||||
<ul class="layui-nav-child layui-anim layui-anim-upbit"> |
||||
<li> |
||||
<a href="javascript:void(0)" lay-event="edit"> |
||||
<i class="iconfont icon-bianji"></i> 编辑机构 |
||||
</a> |
||||
</li> |
||||
<li> |
||||
<a lay-event='delstor' href="javascript:void(0)"> |
||||
<i class="iconfont icon-shanchu"></i> 删除机构 |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</script> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script src="{__ADMIN_PATH}js/layuiList.js"></script> |
||||
{/block} |
||||
{block name="script"} |
||||
<script> |
||||
var $ = layui.jquery; |
||||
var layer = layui.layer; |
||||
//实例化form |
||||
layList.form.render(); |
||||
//加载列表 |
||||
layList.tableList({o:'List', done:function () { |
||||
$('.layui-btn').on('mouseover', function (event) { |
||||
var target = event.target; |
||||
var type = target.dataset.type; |
||||
if ('recommend' === type) { |
||||
layer.tips('点击即可取消此推荐', target, { |
||||
tips: [1, '#0093dd'] |
||||
}); |
||||
} |
||||
}); |
||||
$('.modify').on('mouseover', function (event) { |
||||
var target = event.target; |
||||
layer.tips('点击即可切换后台状态', target, { |
||||
tips: [1, '#0093dd'] |
||||
}); |
||||
}); |
||||
|
||||
$('.layui-btn').on('mouseout', function (event) { |
||||
var target = event.target; |
||||
var type = target.dataset.type; |
||||
if ('recommend' === type) { |
||||
layer.closeAll(); |
||||
} |
||||
}); |
||||
$('.layui-btn-yd').on('click', function (event) { |
||||
var target = event.target; |
||||
var type = target.dataset.type; |
||||
if ('recommend' === type) { |
||||
var id = target.dataset.id; |
||||
var pid = target.dataset.pid; |
||||
var url = layList.U({ a: 'cancel_recommendation', q: { id: id, lecturer_id: pid } }); |
||||
$eb.$swal( |
||||
'delete', |
||||
function () { |
||||
$eb.axios |
||||
.get(url) |
||||
.then(function (res) { |
||||
if (res.data.code == 200) { |
||||
$eb.$swal('success', res.data.msg); |
||||
layList.reload() |
||||
} else { |
||||
return Promise.reject(res.data.msg || '取消失败'); |
||||
} |
||||
}) |
||||
.catch(function (err) { |
||||
$eb.$swal('error', err); |
||||
}); |
||||
}, |
||||
{ |
||||
title: '确定取消此推荐?', |
||||
text: '取消后无法撤销,请谨慎操作!', |
||||
confirm: '确定取消' |
||||
} |
||||
); |
||||
} |
||||
}); |
||||
$('.layui-btn-pc').on('click', function (event) { |
||||
var target = event.target; |
||||
var type = target.dataset.type; |
||||
if ('recommend' === type) { |
||||
var id = target.dataset.id; |
||||
var pid = target.dataset.pid; |
||||
var url = layList.U({ a: 'cancel_web_recommendation', q: { id: id, lecturer_id: pid } }); |
||||
$eb.$swal( |
||||
'delete', |
||||
function () { |
||||
$eb.axios |
||||
.get(url) |
||||
.then(function (res) { |
||||
if (res.data.code == 200) { |
||||
$eb.$swal('success', res.data.msg); |
||||
layList.reload() |
||||
} else { |
||||
return Promise.reject(res.data.msg || '取消失败'); |
||||
} |
||||
}) |
||||
.catch(function (err) { |
||||
$eb.$swal('error', err); |
||||
}); |
||||
}, |
||||
{ |
||||
title: '确定取消此推荐?', |
||||
text: '取消后无法撤销,请谨慎操作!', |
||||
confirm: '确定取消' |
||||
} |
||||
); |
||||
} |
||||
}); |
||||
}},"{:Url('lecturer_list')}",function (){ |
||||
return [ |
||||
{field: 'id', title: '编号', align: 'center'}, |
||||
{field: 'lecturer_name', title: '名称/机构编号',templet:'#lecturer_name',align: 'left'}, |
||||
{field: 'is_source', title: '来源',align: 'center',templet:'#is_source'}, |
||||
{field: 'lecturer_head', title: '头像',templet:'#lecturer_head',align:'center',minWidth:84}, |
||||
{field: 'recommend', title: '推荐[yd:移动端,pc:PC端]',templet:'#recommend',align: 'center',minWidth:100}, |
||||
{field: 'phone', title: '手机号',align:'center'}, |
||||
{field: 'curriculum', title: '课程数量',align:'center'}, |
||||
{field: 'status', title: '后台状态',align: 'center',templet:'#status'}, |
||||
{field: 'is_show', title: '机构状态',templet:'#is_show',align: 'center',minWidth:92}, |
||||
{field: 'sort', title: '排序',sort: true,event:'sort',edit:'sort',align: 'center'}, |
||||
{field: 'mer_id', title: '机构后台',templet:'#mer_id',align:'center',minWidth:166}, |
||||
{field: 'right', title: '操作',align:'center',toolbar:'#act',minWidth:81}, |
||||
]; |
||||
}); |
||||
//下拉框 |
||||
$(document).click(function (e) { |
||||
$('.layui-nav-child').hide(); |
||||
}) |
||||
function dropdown(that){ |
||||
var oEvent = arguments.callee.caller.arguments[0] || event; |
||||
oEvent.stopPropagation(); |
||||
var offset = $(that).offset(); |
||||
var top=offset.top-$(window).scrollTop(); |
||||
var index = $(that).parents('tr').data('index'); |
||||
$('.layui-nav-child').each(function (key) { |
||||
if (key != index) { |
||||
$(this).hide(); |
||||
} |
||||
}) |
||||
if($(document).height() < top+$(that).next('ul').height()){ |
||||
$(that).next('ul').css({ |
||||
'padding': 10, |
||||
'top': - ($(that).parent('td').height() / 2 + $(that).height() + $(that).next('ul').height()/2), |
||||
'min-width': 'inherit', |
||||
'position': 'absolute' |
||||
}).toggle(); |
||||
}else{ |
||||
$(that).next('ul').css({ |
||||
'padding': 10, |
||||
'top':$(that).parent('td').height() / 2 + $(that).height(), |
||||
'min-width': 'inherit', |
||||
'position': 'absolute' |
||||
}).toggle(); |
||||
} |
||||
} |
||||
//自定义方法 |
||||
var action= { |
||||
set_value: function (field, id, value) { |
||||
layList.baseGet(layList.Url({ |
||||
a: 'set_value', |
||||
q: {field: field, id: id, value: value} |
||||
}), function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
}, |
||||
} |
||||
//查询 |
||||
layList.search('search',function(where){ |
||||
layList.reload(where,true); |
||||
}); |
||||
//快速编辑 |
||||
layList.edit(function (obj) { |
||||
var id=obj.data.id,value=obj.value; |
||||
switch (obj.field) { |
||||
case 'sort': |
||||
if (value.trim()) { |
||||
if (isNaN(value.trim())) { |
||||
layList.msg('请输入正确的数字'); |
||||
} else { |
||||
if (value.trim() < 0) { |
||||
layList.msg('排序不能小于0'); |
||||
} else if (value.trim() > 9999) { |
||||
layList.msg('排序不能大于9999'); |
||||
} else if (parseInt(value.trim()) != value.trim()) { |
||||
layList.msg('排序不能为小数'); |
||||
} else { |
||||
action.set_value('sort', id, value.trim()); |
||||
} |
||||
} |
||||
} else { |
||||
layList.msg('排序不能为空'); |
||||
} |
||||
break; |
||||
} |
||||
}); |
||||
//监听并执行排序 |
||||
layList.sort(['id','sort'],true); |
||||
//点击事件绑定 |
||||
layList.tool(function (event,data,obj) { |
||||
switch (event) { |
||||
case 'delstor': |
||||
var url=layList.U({a:'delete',q:{id:data.id}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.get(url).then(function(res){ |
||||
if(res.status == 200 && res.data.code == 200) { |
||||
$eb.$swal('success',res.data.msg); |
||||
obj.del(); |
||||
}else |
||||
return Promise.reject(res.data.msg || '删除失败') |
||||
}).catch(function(err){ |
||||
$eb.$swal('error',err); |
||||
}); |
||||
}) |
||||
break; |
||||
case 'open_image': |
||||
$eb.openImage(data.lecturer_head); |
||||
break; |
||||
case 'open_images': |
||||
$eb.openImage(data.image); |
||||
break; |
||||
case 'edit': |
||||
layer.open({ |
||||
type: 2, |
||||
title: '编辑机构', |
||||
content: '{:Url('create')}?id=' + data.id, |
||||
area: ['100%', '100%'], |
||||
maxmin: true |
||||
}); |
||||
break; |
||||
case 'reset_pwd': |
||||
if(!data.mer_id) return layList.msg('请先生成机构后台'); |
||||
var url=layList.U({c:'institution.institution',a:'reset_pwd',q:{id:data.mer_id}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.post(url).then(function(res){ |
||||
if(res.data.code == 200) { |
||||
window.location.reload(); |
||||
$eb.$swal('success', res.data.msg); |
||||
}else |
||||
$eb.$swal('error',res.data.msg||'操作失败!'); |
||||
}); |
||||
},{'title':'您确定重置选择机构后台的密码吗?','text':'重置后的密码为1234567','confirm':'您确定重置密码吗?'}); |
||||
break; |
||||
case 'modify_success': |
||||
if(!data.mer_id) return layList.msg('请先生成机构后台'); |
||||
var url=layList.U({c:'institution.institution',a:'modify',q:{id:data.mer_id,status:1}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.get(url).then(function(res){ |
||||
if(res.status == 200 && res.data.code == 200) { |
||||
window.location.reload(); |
||||
$eb.$swal('success',res.data.msg); |
||||
}else |
||||
return Promise.reject(res.data.msg || '删除失败') |
||||
}).catch(function(err){ |
||||
$eb.$swal('error',err); |
||||
}); |
||||
},{'title':'您确定要修改机构后台的状态吗?','text':'请谨慎操作!','confirm':'是的,我要修改'}); |
||||
break; |
||||
case 'modify_error': |
||||
if(!data.mer_id) return layList.msg('请先生成机构后台'); |
||||
var url=layList.U({c:'institution.institution',a:'modify',q:{id:data.mer_id,status:0}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.get(url).then(function(res){ |
||||
if(res.status == 200 && res.data.code == 200) { |
||||
window.location.reload(); |
||||
$eb.$swal('success',res.data.msg); |
||||
}else |
||||
return Promise.reject(res.data.msg || '删除失败') |
||||
}).catch(function(err){ |
||||
$eb.$swal('error',err); |
||||
}); |
||||
},{'title':'您确定要修改机构后台的状态吗?','text':'请谨慎操作!','confirm':'是的,我要修改'}); |
||||
break; |
||||
} |
||||
}) |
||||
//是否显示快捷按钮操作 |
||||
layList.switch('is_show',function (odj,value) { |
||||
if(odj.elem.checked==true){ |
||||
layList.baseGet(layList.Url({a:'set_show',p:{is_show:1,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
}else{ |
||||
layList.baseGet(layList.Url({a:'set_show',p:{is_show:0,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
} |
||||
}); |
||||
$(document).on('click', '.layui-btn', function (event) { |
||||
var type = $(this).data('type'); |
||||
var id = $(this).data('id'); |
||||
if (type === 'mercreate') { |
||||
layer.open({ |
||||
type: 2, |
||||
title: '生成机构后台', |
||||
content: "{:Url('mercreate')}?id=" + id, |
||||
area: ['800px', '700px'], |
||||
end: function () { |
||||
location.reload(); |
||||
} |
||||
}); |
||||
} else if (type === 'add') { |
||||
layer.open({ |
||||
type: 2, |
||||
title: '添加机构', |
||||
content: "{:Url('create')}", |
||||
area: ['100%', '100%'], |
||||
maxmin: true, |
||||
end: function () { |
||||
location.reload(); |
||||
} |
||||
}); |
||||
} else if (type === 'refresh') { |
||||
layList.reload(); |
||||
} |
||||
}); |
||||
</script> |
||||
{/block} |
@ -0,0 +1,133 @@ |
||||
{extend name="public/container"} |
||||
{block name="content"} |
||||
<div class="layui-fluid"> |
||||
<div class="layui-row layui-col-space15" > |
||||
<div class="layui-col-md12" id="app" v-cloak> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header">搜索条件</div> |
||||
<div class="layui-card-body"> |
||||
<form class="layui-form layui-form-pane" action=""> |
||||
<div class="layui-form-item"> |
||||
<div class="layui-col-lg12"> |
||||
<label class="layui-form-label">创建时间:</label> |
||||
<div class="layui-input-block" data-type="data"> |
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" v-for="item in dataList" @click="setData(item)" :class="{'layui-btn-primary':where.data!=item.value}">{{item.name}}</button> |
||||
<button class="layui-btn layui-btn-sm" type="button" ref="time" @click="setData({value:'zd',is_zd:true})" :class="{'layui-btn-primary':where.data!='zd'}">自定义</button> |
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" v-show="showtime==true" ref="date_time">{$year.0} - {$year.1}</button> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<div class="layui-input-inline"> |
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" type="button" @click="search"><i class="layui-icon layui-icon-search"></i>搜索</button> |
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" type="button" @click="refresh"><i class="layui-icon layui-icon-refresh" ></i>刷新</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
<!--end--> |
||||
<!-- 中间详细信息--> |
||||
<div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md4'" v-for="item in badge" v-if="item.count > 0"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header"> |
||||
{{item.name}} |
||||
<span class="layui-badge layuiadmin-badge" :class="item.background_color">{{item.field}}</span> |
||||
</div> |
||||
<div class="layui-card-body"> |
||||
<p class="layuiadmin-big-font">{{item.count}}</p> |
||||
<p v-show="item.content!=undefined"> |
||||
{{item.content}} |
||||
<span class="layuiadmin-span-color">{{item.sum}}<i :class="item.class"></i></span> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<!--enb--> |
||||
</div> |
||||
<div class="layui-col-md12"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header">课程订单</div> |
||||
<div class="layui-card-body"> |
||||
<table class="layui-hide" id="userList" lay-filter="userList"></table> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script src="{__ADMIN_PATH}js/layuiList.js"></script> |
||||
<script> |
||||
var lecturer_id={$lecturer_id}; |
||||
layList.tableList('userList',"{:Url('lecturer_order_list')}?lecturer_id={$lecturer_id}",function () { |
||||
return [ |
||||
{field: 'order_id', title: '订单号', sort: true,event:'order_id',width:'20%',templet:'#order_id'}, |
||||
{field: 'nickname', title: '昵称',align: 'center'}, |
||||
{field: 'title', title: '专题名称',width:'21%',align: 'center'}, |
||||
{field: 'total_price', title: '专题价格',width:'10%',align: 'center'}, |
||||
{field: 'pay_price', title: '实际支付',width:'10%',align: 'center'}, |
||||
{field: 'pay_type_name', title: '支付方式',width:'10%',align: 'center'}, |
||||
{field: 'status_name', title: '支付状态',templet:'#paid',width:'8%',align: 'center'}, |
||||
]; |
||||
}); |
||||
require(['vue'],function(Vue) { |
||||
new Vue({ |
||||
el: "#app", |
||||
data: { |
||||
badge: [], |
||||
dataList: [ |
||||
{name: '全部', value: ''}, |
||||
{name: '昨天', value: 'yesterday'}, |
||||
{name: '今天', value: 'today'}, |
||||
{name: '本周', value: 'week'}, |
||||
{name: '本月', value: 'month'}, |
||||
{name: '本季度', value: 'quarter'}, |
||||
{name: '本年', value: 'year'}, |
||||
], |
||||
where:{ |
||||
data:'' |
||||
}, |
||||
showtime: false, |
||||
}, |
||||
methods: { |
||||
setData:function(item){ |
||||
var that=this; |
||||
if(item.is_zd==true){ |
||||
that.showtime=true; |
||||
this.where.data=this.$refs.date_time.innerText; |
||||
}else{ |
||||
this.showtime=false; |
||||
this.where.data=item.value; |
||||
} |
||||
}, |
||||
getBadge:function() { |
||||
var that=this; |
||||
this.where.lecturer_id=lecturer_id; |
||||
layList.basePost(layList.Url({c:'special.lecturer',a:'getBadge'}),this.where,function (rem) { |
||||
that.badge=rem.data; |
||||
}); |
||||
}, |
||||
search:function () { |
||||
this.getBadge(); |
||||
layList.reload(this.where,true); |
||||
}, |
||||
refresh:function () { |
||||
window.location.reload(); |
||||
} |
||||
}, |
||||
mounted:function () { |
||||
var that=this; |
||||
that.getBadge(); |
||||
layList.laydate.render({ |
||||
elem:this.$refs.date_time, |
||||
trigger:'click', |
||||
range:true, |
||||
type: 'datetime', |
||||
change:function (value){ |
||||
that.where.data=value; |
||||
} |
||||
}); |
||||
} |
||||
}) |
||||
}); |
||||
</script> |
||||
{/block} |
@ -0,0 +1,206 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
{include file="public/head"} |
||||
<title>{$title|default=''}</title> |
||||
<script src="{__PLUG_PATH}jquery-1.10.2.min.js"></script> |
||||
<script src="{__PLUG_PATH}reg-verify.js"></script> |
||||
</head> |
||||
<body> |
||||
<div id="form-add" class="mp-form" v-cloak> |
||||
<i-Form :model="formData" :rules="ruleValidate" :label-width="120"> |
||||
<Form-Item label="机构后台账号" prop="account"> |
||||
<i-input v-model="formData.account" placeholder="请输入机构后台账号(手机号)"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="绑定用户UID" prop="uid"> |
||||
<i-input v-model="formData.uid" placeholder="请输入绑定的用户UID"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="机构后台密码(默认:123456)"> |
||||
<i-input type="password" v-model="formData.pwd" placeholder="请输入机构后台密码"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="确认密码"> |
||||
<i-input type="password" v-model="formData.conf_pwd" placeholder="请输入确认密码"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="机构后台名称"> |
||||
<i-input v-model="formData.mer_name" placeholder="请输入机构后台名称"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="专题分成[5=5%]"> |
||||
<i-input v-model="formData.mer_special_divide" placeholder="请输入专题分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="商品分成[5=5%]"> |
||||
<i-input v-model="formData.mer_store_divide" placeholder="请输入商品分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="活动分成[5=5%]"> |
||||
<i-input v-model="formData.mer_event_divide" placeholder="请输入活动分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="资料分成[5=5%]"> |
||||
<i-input v-model="formData.mer_data_divide" placeholder="请输入资料分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="试卷分成[5=5%]"> |
||||
<i-input v-model="formData.mer_test_divide" placeholder="请输入试卷分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="直播收益分成[5=5%]"> |
||||
<i-input v-model="formData.gold_divide" placeholder="请输入直播收益分成[5=5%]"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="联系人"> |
||||
<i-input v-model="formData.real_name" placeholder="请输入联系人"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="联系电话" prop="mer_phone"> |
||||
<i-input v-model="formData.mer_phone" placeholder="请输入联系电话"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="联系地址"> |
||||
<i-input v-model="formData.mer_address" placeholder="请输入联系地址"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="备注"> |
||||
<i-input type="textarea" v-model="formData.mark" placeholder="请输入备注"></i-input> |
||||
</Form-Item> |
||||
<Form-Item label="来源"> |
||||
<Radio-Group v-model="formData.is_source"> |
||||
<Radio :label="1">入驻</Radio> |
||||
<Radio :label="0">平台</Radio> |
||||
</Radio-Group> |
||||
</Form-Item> |
||||
<Form-Item label="状态"> |
||||
<Radio-Group v-model="formData.status"> |
||||
<Radio :label="1">开启</Radio> |
||||
<Radio :label="0">关闭</Radio> |
||||
</Radio-Group> |
||||
</Form-Item> |
||||
<Form-Item label="是否审核"> |
||||
<Radio-Group v-model="formData.is_audit"> |
||||
<Radio :label="1">开启</Radio> |
||||
<Radio :label="0">关闭</Radio> |
||||
</Radio-Group> |
||||
</Form-Item> |
||||
<Form-Item label="可用权限" prop="checked_menus"> |
||||
<Tree :data="menus" show-checkbox ref="tree"></Tree> |
||||
</Form-Item> |
||||
<Form-Item :class="'add-submit-item'"> |
||||
<i-Button :type="'primary'" :html-type="'submit'" :size="'large'" :long="true" :loading="loading" @click.prevent="submit">提交</i-Button> |
||||
</Form-Item> |
||||
</i-Form> |
||||
</div> |
||||
|
||||
<script> |
||||
$eb = parent._mpApi; |
||||
var lecturer = <?php echo $lecturer; ?> || [];
|
||||
var menus = <?php echo $menus; ?> || [];
|
||||
mpFrame.start(function(Vue){ |
||||
new Vue({ |
||||
el:'#form-add', |
||||
data:{ |
||||
formData:{ |
||||
account:'', |
||||
pwd:'123456', |
||||
conf_pwd:'123456', |
||||
mer_name:lecturer.lecturer_name, |
||||
mer_phone:'', |
||||
mark:'', |
||||
real_name:lecturer.lecturer_name, |
||||
mer_avatar:lecturer.lecturer_head, |
||||
mer_address:'', |
||||
status:0, |
||||
is_source:0, |
||||
is_audit:0, |
||||
mer_special_divide:0, |
||||
mer_store_divide:0, |
||||
mer_event_divide:0, |
||||
mer_data_divide:0, |
||||
mer_test_divide:0, |
||||
gold_divide:0, |
||||
checked_menus:[], |
||||
uid:0, |
||||
id:lecturer.id |
||||
}, |
||||
menus:[], |
||||
loading:false, |
||||
ruleValidate: { |
||||
account: [ |
||||
{ required: true, message: '请输入机构后台账号', trigger: 'blur' } |
||||
], |
||||
uid: [ |
||||
{ required: true, message: '请输入绑定的用户ID', trigger: 'blur' } |
||||
], |
||||
mer_phone: [ |
||||
{ required: true, message: '请输入联系电话', trigger: 'blur' } |
||||
], |
||||
checked_menus: [ |
||||
{ required: true, message: '至少选择一项权限', trigger: 'blur' } |
||||
] |
||||
} |
||||
}, |
||||
methods:{ |
||||
tidyRes:function(){ |
||||
var data = []; |
||||
menus.map((menu)=>{ |
||||
data.push(this.initMenu(menu)); |
||||
}); |
||||
this.$set(this,'menus',data); |
||||
}, |
||||
initMenu:function(menu){ |
||||
var data = {}; |
||||
data.title = menu.menu_name; |
||||
data.id = menu.id; |
||||
data.expand = false; |
||||
if(menu.child && menu.child.length >0){ |
||||
data.children = []; |
||||
menu.child.map((child)=>{ |
||||
data.children.push(this.initMenu(child)); |
||||
}) |
||||
} |
||||
return data; |
||||
}, |
||||
submit:function(){ |
||||
this.formData.checked_menus = []; |
||||
this.$refs.tree.getCheckedNodes().map((node)=>{ |
||||
this.formData.checked_menus.push(node.id); |
||||
}); |
||||
if(!this.formData.account){ |
||||
return layer.msg('请输入机构后台账号'); |
||||
} |
||||
if(!this.formData.uid){ |
||||
return layer.msg('请输入绑定的用户ID'); |
||||
} |
||||
if(this.formData.mer_phone){ |
||||
if(!$reg.isPhone(this.formData.mer_phone)){ |
||||
return layer.msg('请输入正确的手机号'); |
||||
} |
||||
}else{ |
||||
return layer.msg('请输入手机号'); |
||||
} |
||||
if(!this.formData.checked_menus.length){ |
||||
return layer.msg('请至少选择一项权限'); |
||||
} |
||||
this.loading = true; |
||||
var that = this; |
||||
$.ajax({ |
||||
url: '{$action}', |
||||
type: 'post', |
||||
data: this.formData, |
||||
dataType: 'json', |
||||
success: function (res) { |
||||
that.loading = false; |
||||
if (res.code === 200) { |
||||
layer.msg(res.msg || '操作成功', { icon: 1 }, function () { |
||||
var index = parent.layer.getFrameIndex(window.name); |
||||
parent.layer.close(index); |
||||
}); |
||||
} else { |
||||
layer.msg(res.msg || '操作失败,请稍后再试', { icon: 5 }); |
||||
} |
||||
}, |
||||
error: function (err) { |
||||
that.loading = false; |
||||
layer.msg(err, { icon: 5 }); |
||||
} |
||||
}); |
||||
} |
||||
}, |
||||
mounted:function(){ |
||||
t = this; |
||||
this.tidyRes(); |
||||
} |
||||
}); |
||||
}); |
||||
</script> |
||||
</body> |
@ -0,0 +1,215 @@ |
||||
{extend name="public/container"} |
||||
{block name='head_top'} |
||||
<style> |
||||
.layui-form-item .special-label i{display: inline-block;width: 18px;height: 18px;font-size: 18px;color: #fff;} |
||||
.layui-form-item .label-box p{line-height: inherit;} |
||||
.m-t-5{margin-top:5px;} |
||||
#app .layui-barrage-box{margin-bottom: 10px;margin-top: 10px;margin-left: 10px;border: 1px solid #0092DC;border-radius: 5px;cursor: pointer;position: relative;} |
||||
#app .layui-barrage-box.border-color{border-color: #0bb20c;} |
||||
#app .layui-barrage-box .del-text{position: absolute;top: 0;left: 0;background-color: rgba(0,0,0,0.5);color: #ffffff;width: 92%;text-align: center;} |
||||
#app .layui-barrage-box p{padding:5px 5px; } |
||||
#app .layui-empty-text{text-align: center;font-size: 18px;} |
||||
#app .layui-empty-text p{padding: 10px 10px;} |
||||
.layui-form-label{width:150px;} |
||||
.layui-input-block{margin-left:150px;} |
||||
</style> |
||||
{/block} |
||||
{block name="content"} |
||||
<div class="layui-fluid"> |
||||
<div class="layui-row layui-col-space15" id="app" v-cloak> |
||||
<div class="layui-col-md12"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-body"> |
||||
<form action="" class="layui-form"> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label required">商品分类名称:</label> |
||||
<div class="layui-input-block"> |
||||
<input type="text" name="name" v-model.trim="formData.name" autocomplete="off" placeholder="请输入商品分类名称" class="layui-input"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label">顶级商品分类:</label> |
||||
<div class="layui-input-block"> |
||||
<select name="grade_id" v-model="formData.grade_id" lay-search="" lay-filter="grade_id"> |
||||
<option v-for="item in cateList" :value="item.id">{{item.html}}{{item.name}}</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="layui-form-item required"> |
||||
<label class="layui-form-label">头像:(200*200)</label> |
||||
<div class="layui-input-block"> |
||||
<div class="upload-image-box" v-if="formData.pic" > |
||||
<img :src="formData.pic" alt=""> |
||||
<div class="mask" style="display: block"> |
||||
<p> |
||||
<i class="fa fa-eye" @click="look(formData.pic)"></i> |
||||
<i class="fa fa-trash-o" @click="delect('pic')"></i> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="upload-image" v-show="!formData.pic" @click="upload('pic')"> |
||||
<div class="fiexd"><i class="fa fa-plus"></i></div> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<label class="layui-form-label">排序:</label> |
||||
<div class="layui-input-block"> |
||||
<input type="number" name="sort" v-model="formData.sort" autocomplete="off" class="layui-input" v-sort> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<label class="layui-form-label">状态:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="checkbox" name="is_show" lay-skin="switch" lay-text="显示|隐藏" lay-filter="is_show" :checked="formData.is_show"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<label class="layui-form-label">是否推荐:</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="checkbox" name="is_recommend" lay-skin="switch" lay-text="是|否" lay-filter="is_recommend" :checked="formData.is_recommend"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-form-item"> |
||||
<div class="layui-input-block"> |
||||
<div class="layui-btn-container"> |
||||
<button class="layui-btn layui-btn-normal" type="button" @click="save">{{id ? '立即修改':'立即提交'}}</button> |
||||
<button class="layui-btn layui-btn-primary clone" type="button" @click="clone_form">取消</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
<script type="text/javascript" src="{__ADMIN_PATH}js/request.js"></script> |
||||
<script type="text/javascript" src="{__ADMIN_PATH}js/layuiList.js"></script> |
||||
<script type="text/javascript" src="{__MODULE_PATH}widget/OssUpload.js"></script> |
||||
{/block} |
||||
{block name='script'} |
||||
<script> |
||||
var id={$id},cate=<?=isset($cate) ? $cate : []?>;
|
||||
require(['vue','helper','zh-cn','request','plupload','aliyun-oss','OssUpload'],function(Vue, $h) { |
||||
new Vue({ |
||||
el: "#app", |
||||
directives: { |
||||
sort: { |
||||
bind: function (el, binding, vnode) { |
||||
var vm = vnode.context; |
||||
el.addEventListener('change', function () { |
||||
if (!this.value || this.value < 0) { |
||||
vm.formData.sort = 0; |
||||
} else if (this.value > 9999) { |
||||
vm.formData.sort = 9999; |
||||
} else { |
||||
vm.formData.sort = parseInt(this.value); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}, |
||||
data: { |
||||
cateList:[], |
||||
formData:{ |
||||
name:cate.name || '', |
||||
pic: cate.pic || '', |
||||
grade_id: cate.grade_id || 0, |
||||
is_show: Array.isArray(cate) ? 1 : cate.is_show, |
||||
is_recommend: Array.isArray(cate) ? 1 : cate.is_recommend, |
||||
sort:Number(cate.sort) || 0 |
||||
} |
||||
}, |
||||
methods:{ |
||||
//查看图片 |
||||
look: function (pic) { |
||||
parent.$eb.openImage(pic); |
||||
}, |
||||
//上传图片 |
||||
upload: function (key, count,index) { |
||||
this.event_index = index; |
||||
ossUpload.createFrame('请选择图片', {fodder: key, max_count: count === undefined ? 0 : count},{w:800,h:550}); |
||||
}, |
||||
clone_form: function () { |
||||
var that = this; |
||||
if (parseInt(id) == 0) { |
||||
parent.layer.closeAll(); |
||||
} |
||||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引 |
||||
parent.layer.close(index); //再执行关闭 |
||||
}, |
||||
//获取分类 |
||||
get_subject_list: function () { |
||||
var that = this; |
||||
layList.baseGet(layList.U({a: 'add_cate_list'}), function (res) { |
||||
that.$set(that, 'cateList', res.data); |
||||
that.$nextTick(function () { |
||||
layList.form.render('select'); |
||||
}) |
||||
}); |
||||
}, |
||||
save:function () { |
||||
var that=this; |
||||
if(!that.formData.name) return layList.msg('请输入分类名称'); |
||||
layList.loadFFF(); |
||||
layList.basePost(layList.U({a:'save',q:{id:id}}),that.formData,function (res) { |
||||
layList.loadClear(); |
||||
if(parseInt(id) == 0) { |
||||
layList.layer.confirm('添加成功,您要继续添加分类吗?', { |
||||
btn: ['继续添加', '立即提交'] //按钮 |
||||
}, function (index) { |
||||
layList.layer.close(index); |
||||
}, function () { |
||||
parent.layer.closeAll(); |
||||
}); |
||||
}else{ |
||||
layList.msg('修改成功',function () { |
||||
parent.layer.closeAll(); |
||||
}) |
||||
} |
||||
},function (res) { |
||||
layList.msg(res.msg); |
||||
layList.loadClear(); |
||||
}); |
||||
}, |
||||
delect:function(key){ |
||||
var that=this; |
||||
that.formData[key]=''; |
||||
}, |
||||
changeIMG: function (key, value, multiple) { |
||||
if (multiple) { |
||||
var that = this; |
||||
value.map(function (v) { |
||||
that.formData[key].push({pic: v, is_show: false}); |
||||
}); |
||||
this.$set(this.formData, key, this.formData[key]); |
||||
} else { |
||||
this.$set(this.formData, key, value); |
||||
} |
||||
}, |
||||
}, |
||||
mounted:function () { |
||||
var that=this; |
||||
this.$nextTick(function () { |
||||
layList.form.render(); |
||||
}); |
||||
window.changeIMG = that.changeIMG; |
||||
layList.select('grade_id', function (obj) { |
||||
if(id==obj.value){ |
||||
layList.msg('上级分类不能是自己',function () { |
||||
location.reload(); |
||||
}); |
||||
}else{ |
||||
that.formData.grade_id = obj.value; |
||||
} |
||||
}); |
||||
that.get_subject_list(); |
||||
} |
||||
}) |
||||
}) |
||||
</script> |
||||
{/block} |
@ -0,0 +1,224 @@ |
||||
{extend name="public/container"} |
||||
{block name="head"} |
||||
<style> |
||||
.single-line { |
||||
padding: 0; |
||||
border: none; |
||||
background: none; |
||||
} |
||||
</style> |
||||
{/block} |
||||
{block name="content"} |
||||
<div class="layui-fluid"> |
||||
<div class="layui-row layui-col-space15"> |
||||
<div class="layui-col-md12"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header">商品分类</div> |
||||
<div class="layui-card-body"> |
||||
<div class="layui-row layui-col-space15"> |
||||
<div class="layui-col-md12"> |
||||
<form class="layui-form layui-form-pane" action=""> |
||||
<div class="layui-form-item"> |
||||
<div class="layui-inline"> |
||||
<label class="layui-form-label">分类名称</label> |
||||
<div class="layui-input-inline"> |
||||
<input type="text" name="name" class="layui-input" placeholder="请输入分类名称"> |
||||
</div> |
||||
</div> |
||||
<div class="layui-inline"> |
||||
<div class="layui-input-inline"> |
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="search" lay-filter="search"> |
||||
<i class="layui-icon"></i>搜索 |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
<div class="layui-col-md12"> |
||||
<div class="layui-btn-group"> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="add"> |
||||
<i class="layui-icon"></i>添加商品分类 |
||||
</button> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" data-type="refresh"> |
||||
<i class="layui-icon"></i>刷新 |
||||
</button> |
||||
</div> |
||||
<table id="List" lay-filter="List"></table> |
||||
<script type="text/html" id="is_show"> |
||||
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='显示|隐藏' {{ d.is_show == 1 ? 'checked' : '' }}> |
||||
</script> |
||||
<script type="text/html" id="act"> |
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"> |
||||
<i class="layui-icon"></i>编辑 |
||||
</button> |
||||
<button type="button" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"> |
||||
<i class="layui-icon"></i>删除 |
||||
</button> |
||||
</script> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script src="{__ADMIN_PATH}js/layuiList.js"></script> |
||||
{/block} |
||||
{block name="script"} |
||||
<script> |
||||
//实例化form |
||||
layList.form.render(); |
||||
layui.use(['treeTable'], function () { |
||||
var $ = layui.jquery; |
||||
var treeTable = layui.treeTable; |
||||
var insTb = treeTable.render({ |
||||
elem: '#List', |
||||
tree: { |
||||
iconIndex: 1, |
||||
isPidData: true, |
||||
idName: 'id', |
||||
pidName: 'grade_id', |
||||
getIcon: function (d) { |
||||
return ''; |
||||
} |
||||
}, |
||||
cols: [[ |
||||
{field: 'id', title: '编号', align: 'center', width: '6%'}, |
||||
{field: 'name', title: '分类名称'}, |
||||
{field: 'sort', title: '排序', align: 'center'}, |
||||
{field: 'is_show', title: '状态', templet:'#is_show', align: 'center'}, |
||||
// {field: 'is_recommend', title: '推荐', templet:'#is_recommend', align: 'center'}, |
||||
// {field: 'sum', title: '题目数量', align: 'center'}, |
||||
{field: 'right', title: '操作', align:'center', toolbar:'#act'}, |
||||
]], |
||||
reqData: function(data, callback) { |
||||
$.get('{:Url('get_category_list')}', function (res) { |
||||
if (res.code == 200) { |
||||
callback(res.data) |
||||
} else { |
||||
callback(res.msg) |
||||
} |
||||
}, 'json'); |
||||
} |
||||
}); |
||||
|
||||
treeTable.on('tool(List)', function(obj) { |
||||
var data = obj.data; |
||||
var layEvent = obj.event; |
||||
if (layEvent === 'edit') { |
||||
$eb.createModalFrame('编辑', '{:Url('create')}?id=' + data.id, { h: 500, w: 800 }); |
||||
} else if (layEvent === 'del') { |
||||
var url=layList.U({a:'delete',q:{id:data.id}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.get(url).then(function(res){ |
||||
if(res.status == 200 && res.data.code == 200) { |
||||
$eb.$swal('success',res.data.msg); |
||||
obj.del(); |
||||
}else |
||||
return Promise.reject(res.data.msg || '删除失败') |
||||
}).catch(function(err){ |
||||
$eb.$swal('error',err); |
||||
}); |
||||
}) |
||||
} |
||||
}); |
||||
$('.layui-btn').on('click', function(event) { |
||||
var target = event.target; |
||||
var type = target.dataset.type; |
||||
if (type === 'add') { |
||||
$eb.createModalFrame('添加商品分类', '{:Url('create')}',{ h: 500 ,w: 800 }); |
||||
} else if (type === 'refresh') { |
||||
insTb.refresh(); |
||||
} |
||||
}); |
||||
//查询 |
||||
layList.search('search',function(where){ |
||||
insTb = treeTable.render({ |
||||
elem: '#List', |
||||
tree: { |
||||
iconIndex: 1, |
||||
isPidData: true, |
||||
idName: 'id', |
||||
pidName: 'grade_id', |
||||
getIcon: function (d) { |
||||
return ''; |
||||
} |
||||
}, |
||||
cols: [[ |
||||
{field: 'id', title: '编号', align: 'center', width:'6%'}, |
||||
{field: 'name', title: '分类名称'}, |
||||
{field: 'sort', title: '排序', align: 'center'}, |
||||
{field: 'is_show', title: '状态', templet:'#is_show', align: 'center'}, |
||||
// {field: 'is_recommend', title: '推荐', templet:'#is_recommend', align: 'center'}, |
||||
// {field: 'sum', title: '题目数量', align: 'center'}, |
||||
{field: 'right', title: '操作', align:'center', toolbar:'#act'}, |
||||
]], |
||||
reqData: function(data, callback) { |
||||
$.get('{:Url('get_category_list')}', where, function (res) { |
||||
if (res.code == 200) { |
||||
callback(res.data) |
||||
} else { |
||||
callback(res.msg) |
||||
} |
||||
}, 'json'); |
||||
} |
||||
}); |
||||
}); |
||||
}); |
||||
//自定义方法 |
||||
var action= { |
||||
set_value: function (field, id, value) { |
||||
layList.baseGet(layList.Url({ |
||||
a: 'set_value', |
||||
q: {field: field, id: id, value: value} |
||||
}), function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
}, |
||||
}; |
||||
//点击事件绑定 |
||||
layList.tool(function (event,data,obj) { |
||||
switch (event) { |
||||
case 'delstor': |
||||
var url=layList.U({a:'delete',q:{id:data.id}}); |
||||
$eb.$swal('delete',function(){ |
||||
$eb.axios.get(url).then(function(res){ |
||||
if(res.status == 200 && res.data.code == 200) { |
||||
$eb.$swal('success',res.data.msg); |
||||
obj.del(); |
||||
}else |
||||
return Promise.reject(res.data.msg || '删除失败') |
||||
}).catch(function(err){ |
||||
$eb.$swal('error',err); |
||||
}); |
||||
}); |
||||
break; |
||||
} |
||||
}); |
||||
//是否显示快捷按钮操作 |
||||
layList.switch('is_show',function (odj,value) { |
||||
if(odj.elem.checked==true){ |
||||
layList.baseGet(layList.Url({a:'set_show',p:{is_show:1,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
}else{ |
||||
layList.baseGet(layList.Url({a:'set_show',p:{is_show:0,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
} |
||||
}); |
||||
//是否显示快捷按钮操作 |
||||
layList.switch('is_recommend',function (odj,value) { |
||||
if(odj.elem.checked==true){ |
||||
layList.baseGet(layList.Url({a:'set_recommend',p:{is_recommend:1,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
}else{ |
||||
layList.baseGet(layList.Url({a:'set_recommend',p:{is_recommend:0,id:value}}),function (res) { |
||||
layList.msg(res.msg); |
||||
}); |
||||
} |
||||
}); |
||||
</script> |
||||
{/block} |
@ -0,0 +1,269 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
namespace app\wap\controller; |
||||
|
||||
|
||||
use app\wap\model\user\User; |
||||
use service\JsonService; |
||||
use think\cache\driver\Redis; |
||||
use think\Cookie; |
||||
use think\exception\HttpException; |
||||
use think\response\Json; |
||||
use think\Session; |
||||
use think\Url; |
||||
use think\Db; |
||||
use think\Request; |
||||
use think\Log; |
||||
|
||||
use app\wap\model\wap\Clearance as ClearanceModel; |
||||
use app\wap\model\wap\ClearanceSubject; |
||||
use app\wap\model\wap\UserStudy; |
||||
use app\wap\model\wap\ClearanceSubjectChapter; |
||||
use app\wap\model\wap\UserClearanceDetail; |
||||
use app\wap\model\wap\UserClearance; |
||||
use app\wap\model\special\SpecialSubject; |
||||
use app\wap\model\activity\EventRegistration; |
||||
use app\wap\model\special\Special as SpecialModel; |
||||
use app\wap\model\topic\TestPaper; |
||||
|
||||
use service\GroupDataService; |
||||
use service\ClearanceService; |
||||
|
||||
/**过关 |
||||
* Class Special |
||||
* @package app\wap\controller |
||||
*/ |
||||
class Clearance extends AuthController |
||||
{ |
||||
/** |
||||
* 白名单 |
||||
* */ |
||||
public static function WhiteList() |
||||
{ |
||||
return [ |
||||
'grade_index' |
||||
]; |
||||
} |
||||
|
||||
/** |
||||
* 学习中心首页 |
||||
* [grade_index description] |
||||
* @param integer $subject_id [description] |
||||
* @param string $city [description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function grade_index($subject_id = 0, $city = "") |
||||
{ |
||||
//背诵 |
||||
$recite = ClearanceModel::where('type',1)->where('status',1)->order('sort DESC,id desc')->select(); |
||||
//刷题 |
||||
$brush_questions = ClearanceModel::where('type',2)->where('status',1)->order('sort DESC,id desc')->select(); |
||||
$activity = EventRegistration::eventRegistrationList(1, 4, $city, $subject_id, 0); |
||||
$uid = $this->uid; |
||||
$where = [ |
||||
'grade_id' => 1, |
||||
'subject_id' => $subject_id, |
||||
'search' => '', |
||||
'page' => 1, |
||||
'limit' => 4, |
||||
'type' => 0, |
||||
'special_type' => 3, |
||||
'is_member' => 0, |
||||
'uid' => $uid, |
||||
]; |
||||
$video = SpecialModel::getSpecialList($where); |
||||
$where['special_type'] = 4; |
||||
$live = SpecialModel::getSpecialList($where); |
||||
|
||||
|
||||
|
||||
$sql = "SELECT rank,days FROM (SELECT @rank:=@rank+1 as rank, user_id, days,cate_id FROM tc_user_clearance, (SELECT @rank:=0) r ORDER BY days DESC ) t WHERE user_id = ".$uid ." and cate_id = ".$subject_id; |
||||
$userClearance = Db::query($sql); |
||||
|
||||
$sql = "SELECT rank,recite_num FROM (SELECT @rank:=@rank+1 as rank, user_id, recite_num,cate_id FROM tc_user_clearance, (SELECT @rank:=0) r ORDER BY recite_num DESC ) t WHERE user_id = ".$uid ." and cate_id = ".$subject_id; |
||||
$userClearance1 = Db::query($sql); |
||||
|
||||
$sql = "SELECT rank,accuracy FROM (SELECT @rank:=@rank+1 as rank, user_id, accuracy,cate_id FROM tc_user_clearance, (SELECT @rank:=0) r ORDER BY accuracy DESC ) t WHERE user_id = ".$uid ." and cate_id = ".$subject_id; |
||||
$userClearance2 = Db::query($sql); |
||||
|
||||
//用户进入学习中心展示哪个科目问题处理 |
||||
if (!$subject_id) { |
||||
$userStudy = UserStudy::where('user_id', $this->uid)->find(); |
||||
if ($userStudy) { |
||||
$subject_id = $userStudy['cate_id']; |
||||
} else { |
||||
$specialSubject = SpecialSubject::where('is_show', 1)->where('is_del', 0)->find(); |
||||
$subject_id = $specialSubject['id']; |
||||
} |
||||
} |
||||
$specialSubject = SpecialSubject::where('id', $subject_id)->find(); |
||||
$test_paper = TestPaper::where('id',$specialSubject['exam_id'])->field('id,title as name')->select(); |
||||
// var_dump($res); |
||||
// var_dump($userClearance); |
||||
// exit(); |
||||
$date = date("Y-m-d"); |
||||
$recite_num = UserClearanceDetail::where('user_id', $this->uid)->where('type', 1)->group('section_id')->count(); |
||||
$brush_question_num = UserClearanceDetail::where('user_id', $this->uid)->where('type', 2)->group('item_id')->count(); |
||||
|
||||
$total_num = $specialSubject['recite_num'] + $specialSubject['brush_question_num']; |
||||
return JsonService::successful('ok', [ |
||||
'exam' => [ |
||||
'grade_id' => $specialSubject['grade_id'], |
||||
'subject_id' => $subject_id, |
||||
'name' => $specialSubject['name'], |
||||
'date' => date("Y-m-d", $specialSubject['exam_time'] ?? 0), |
||||
'distance_exam_day' => ceil((($specialSubject['exam_time'] ?? 0) - time()) / 86400), |
||||
], |
||||
'user_study' => [ |
||||
'days' => $userClearance[0]['days'] ?? 0, |
||||
'rank' => $userClearance[0]['rank'] ?? 0, |
||||
], |
||||
'user_recite' => [ |
||||
'points' => $userClearance1[0]['recite_num'] ?? 0, |
||||
'rank' => $userClearance1[0]['rank'] ?? 0, |
||||
], |
||||
'user_brush_questions' => [ |
||||
'accuracy' => ($userClearance2[0]['accuracy'] ?? 0)."%", |
||||
'rank' => $userClearance2[0]['rank'] ?? 0, |
||||
], |
||||
'user_clock_in' => [ |
||||
'progress' => $total_num ? round(($recite_num + $brush_question_num) / $total_num ) : 0, |
||||
'list' => $this->dealClockInRecord("", 1, 2), |
||||
], |
||||
'exam_list' => $test_paper, |
||||
'banner' => GroupDataService::getData('mxtk_banner') ?: [], |
||||
'recite' => $recite, |
||||
'brush_questions' => $brush_questions, |
||||
'video' => $video, |
||||
'live' => $live, |
||||
'offline_courses' => $activity, |
||||
]); |
||||
} |
||||
/** |
||||
* 背诵过关 |
||||
* [clearanceSubject description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function clearanceSubject($recite_id = 0){ |
||||
$recite_subject_list = ClearanceSubject::where('status',1)->where('recite_id',$recite_id)->order('sort DESC,id desc')->select(); |
||||
return JsonService::successful('ok', $recite_subject_list); |
||||
} |
||||
/** |
||||
* 背诵章节 |
||||
* [clearanceSubjectChapter description] |
||||
* @param integer $recite_subject_id [description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function clearanceSubjectChapter($recite_subject_id = 0){ |
||||
$chapters = ClearanceSubjectChapter::where('status',1)->where('recite_subject_id',$recite_subject_id)->order('sort DESC,id desc')->select(); |
||||
$chapters = subTree($chapters->toArray()); |
||||
return JsonService::successful('ok', $chapters); |
||||
} |
||||
/** |
||||
* 背诵接口 |
||||
* [recite description] |
||||
* @param integer $chapter_id [description] |
||||
* @param integer $section_id [description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function recite($chapter_id = 0, $section_id = 0){ |
||||
//var_dump($this->uid);exit(); |
||||
$info = ClearanceSubjectChapter::where('id', $section_id)->where('pid', $chapter_id)->find(); |
||||
if (!$info) { |
||||
return JsonService::fail('背诵内容不存在'); |
||||
} |
||||
$recite_subject = ClearanceSubject::where('id', $info['recite_subject_id'])->find(); |
||||
if (!$recite_subject) { |
||||
return JsonService::fail('背诵内容不存在'); |
||||
} |
||||
$recite = ClearanceModel::where('id', $recite_subject['recite_id'])->find(); |
||||
if (!$recite) { |
||||
return JsonService::fail('背诵内容不存在'); |
||||
} |
||||
|
||||
ClearanceService::clockIn($this->uid, $recite['subject_id'], 1, $recite['id'], $recite_subject['id'], $chapter_id, $section_id); |
||||
|
||||
return JsonService::successful('ok'); |
||||
} |
||||
|
||||
|
||||
protected function dealClockInRecord($date = "", $page = 1, $limit = 10){ |
||||
$date = $date ? $date : date("Y-m-d"); |
||||
$list = UserClearanceDetail::where('user_id', $this->uid)->where('date', $date)->order("id desc")->page($page, $limit)->select(); |
||||
foreach ($list as &$value) { |
||||
if ($value['type'] == 1) { |
||||
$chapter = ClearanceSubjectChapter::where('id',$value['chapter_id'])->find(); |
||||
$section = ClearanceSubjectChapter::where('id',$value['section_id'])->find(); |
||||
$value['name'] = ($chapter['name'] ?? "")." ".($section['name'] ?? ""); |
||||
} else { |
||||
$test_paper = TestPaper::where('id',$value['item_id'])->field('id,title as name')->find(); |
||||
$value['name'] = $test_paper['name'] ?? ""; |
||||
$hour = round($value['use_time'] / 3600); |
||||
$result = $value['use_time'] % 3600; |
||||
$minute = round($result / 60); |
||||
$value['use_time'] = $hour."小时".$minute."分"; |
||||
} |
||||
} |
||||
return $list; |
||||
} |
||||
|
||||
public function getMonthRecord($month){ |
||||
$start_time = strtotime("{$month}-01"); // 月份的开始时间 |
||||
$end_time = strtotime("+1 month", $start_time) - 1; // 月份的结束时间 |
||||
|
||||
$list = UserClearanceDetail::where('user_id', $this->uid)->where('add_time', ">=", $start_time)->where('add_time', "<=", $end_time)->field('date')->group('date')->select(); |
||||
return JsonService::successful('ok', $list); |
||||
} |
||||
/** |
||||
* 用户打卡记录 |
||||
* [clockInRecord description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function clockInRecord($date = "", $page = 1, $limit = 10){ |
||||
|
||||
|
||||
$list = $this->dealClockInRecord($date, $page, $limit); |
||||
return JsonService::successful('ok', $list); |
||||
} |
||||
/** |
||||
* 学习项目切换 |
||||
* [study description] |
||||
* @param integer $cate_id [description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public function study($subject_id = 0){ |
||||
|
||||
$info = UserStudy::where('user_id', $this->uid)->find(); |
||||
if ($info) { |
||||
UserStudy::where('id', $info['id'])->update(['cate_id' => $subject_id, 'update_time' => time()]); |
||||
return JsonService::successful('ok'); |
||||
} |
||||
UserStudy::create(['user_id' => $this->uid, 'cate_id' => $subject_id, 'add_time' => time(), 'update_time' => time()]); |
||||
return JsonService::successful('ok'); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\user; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class Message extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\user; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class MessageType extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class City extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class Clearance extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class ClearanceSubject extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class ClearanceSubjectChapter extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,33 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class Feedback extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
|
||||
public static function cidByArticleList($cid, $first, $limit, $field = '*') |
||||
{ |
||||
$model = Db::name('article'); |
||||
if ($cid) $model->where("CONCAT(',',cid,',') LIKE '%,$cid,%'", 'exp'); |
||||
return $model->field($field)->where('status', 1)->where('hide', 0)->order('sort DESC,add_time DESC')->limit($first, $limit)->select(); |
||||
} |
||||
} |
@ -0,0 +1,33 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class Helpcenter extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
|
||||
public static function cidByArticleList($cid, $first, $limit, $field = '*') |
||||
{ |
||||
$model = Db::name('article'); |
||||
if ($cid) $model->where("CONCAT(',',cid,',') LIKE '%,$cid,%'", 'exp'); |
||||
return $model->field($field)->where('status', 1)->where('hide', 0)->order('sort DESC,add_time DESC')->limit($first, $limit)->select(); |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class UserClearance extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class UserClearanceDetail extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397 |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\wap\model\wap; |
||||
|
||||
use think\Db; |
||||
use traits\ModelTrait; |
||||
use basic\ModelBasic; |
||||
|
||||
/**新闻分类 |
||||
* Class ArticleCategory |
||||
* @package app\wap\model |
||||
*/ |
||||
class UserStudy extends ModelBasic |
||||
{ |
||||
use ModelTrait; |
||||
} |
@ -0,0 +1,87 @@ |
||||
<?php |
||||
|
||||
|
||||
namespace service; |
||||
|
||||
use app\wap\model\wap\Clearance; |
||||
use app\wap\model\wap\ClearanceSubject; |
||||
use app\wap\model\wap\ClearanceSubjectChapter; |
||||
use app\wap\model\wap\UserClearance; |
||||
use app\wap\model\wap\UserClearanceDetail; |
||||
|
||||
class ClearanceService |
||||
{ |
||||
|
||||
/** |
||||
* 用户打卡记录 |
||||
* [clockIn description] |
||||
* @param [type] $user_id [description] |
||||
* @param [type] $type [description] |
||||
* @param [type] $clearance_id [description] |
||||
* @param integer $item_id [description] |
||||
* @param integer $chapter_id [description] |
||||
* @param integer $section_id [description] |
||||
* @param integer $score [description] |
||||
* @return [type] [description] |
||||
*/ |
||||
public static function clockIn($user_id, $cate_id, $type, $clearance_id, $item_id = 0, $chapter_id = 0, $section_id = 0, $score = 0, $accuracy = 0, $use_time = 0){ |
||||
|
||||
$date = date("Y-m-d"); |
||||
//如果当前背诵过了 |
||||
if ($type == 1) { |
||||
$detail = UserClearanceDetail::where('user_id',$user_id) |
||||
->where('cate_id', $cate_id) |
||||
->where('clearance_id', $clearance_id) |
||||
->where('item_id', $item_id) |
||||
->where('chapter_id', $chapter_id) |
||||
->where('section_id', $section_id) |
||||
->where('date',$date)->find(); |
||||
if ($detail) { |
||||
return true; |
||||
} |
||||
} |
||||
//写入打卡记录 |
||||
$clearance_data = [ |
||||
'user_id' => $user_id, |
||||
'cate_id' => $cate_id, |
||||
'type' => $type, |
||||
'clearance_id' => $clearance_id, |
||||
'item_id' => $item_id, |
||||
'chapter_id' => $chapter_id, |
||||
'section_id' => $section_id, |
||||
'score' => $score, |
||||
'accuracy' => $accuracy, |
||||
'use_time' => $use_time, |
||||
'add_time' => time(), |
||||
'date' => $date, |
||||
]; |
||||
UserClearanceDetail::create($clearance_data); |
||||
//判断是否写了总记录 |
||||
$info = UserClearance::where('user_id',$user_id)->where('cate_id', $cate_id)->find(); |
||||
if (!$info) { |
||||
$userClearance = [ |
||||
'user_id' => $user_id, |
||||
'cate_id' => $cate_id, |
||||
'add_time' => time(), |
||||
'days' => 1, |
||||
'recite_num' => 1, |
||||
'accuracy' => $accuracy, |
||||
]; |
||||
UserClearance::create($userClearance); |
||||
} else { |
||||
$detail = UserClearanceDetail::where('user_id',$user_id)->where('cate_id', $cate_id)->where('date',$date)->find(); |
||||
//当前没打卡,天数+1 |
||||
if (!$detail) { |
||||
$update_data['days'] = $info['days'] + 1; |
||||
} |
||||
//背诵 |
||||
if ($type == 1) { |
||||
$update_data['recite_num'] = $info['recite_num'] + 1; |
||||
} |
||||
if ($type == 2) { |
||||
$update_data['accuracy'] = $accuracy;//round(($info['accuracy'] + $accuracy) / 2); |
||||
} |
||||
UserClearance::where('id', $info['id'])->update($update_data); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,18 @@ |
||||
<?php |
||||
namespace service; |
||||
use app\wap\model\user\Message; |
||||
use app\wap\model\user\MessageType; |
||||
class MessageService |
||||
{ |
||||
|
||||
public static function sendmsg($user_id, $message_type = 1, $content = ""){ |
||||
$msg = [ |
||||
'user_id' => $user_id, |
||||
'message_type' => $message_type, |
||||
'content' => $content, |
||||
'add_time' => time(), |
||||
]; |
||||
Message::create($msg); |
||||
return true; |
||||
} |
||||
} |
Loading…
Reference in new issue