12-07
This commit is contained in:
parent
9e961ac019
commit
ce913de43b
|
|
@ -187,7 +187,7 @@ class Base extends Controller{
|
|||
}
|
||||
|
||||
// 判断一个参数是否为数字且大于等于0
|
||||
function isPositiveNumber($value) {
|
||||
public function isPositiveNumber($value) {
|
||||
return is_numeric($value) && $value >= 0;
|
||||
}
|
||||
|
||||
|
|
@ -206,7 +206,62 @@ class Base extends Controller{
|
|||
}
|
||||
}
|
||||
|
||||
####################################################图片选择上传start##############################################################
|
||||
public function pic_index($page = 1) {
|
||||
$data = input();
|
||||
$pd = true;
|
||||
if(array_key_exists('page',$data)){
|
||||
$page = $data['page'];
|
||||
$pd = false;
|
||||
}
|
||||
$num = Db::table('admin_pic_manage')->count();
|
||||
$result = Db::table('admin_pic_manage')->order('id desc')->page($page,20)->select();
|
||||
if(!$pd){
|
||||
$return_result['num'] = $num;
|
||||
$return_result['result'] = $result;
|
||||
return $this->msg(0,'success',$return_result);
|
||||
}
|
||||
$this->assign([
|
||||
'result' => $result,
|
||||
'num' => $num,
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
public function pic_upload_action(){
|
||||
// $file1 = request()->file('file');
|
||||
$file = request()->file('cover_image');
|
||||
if($file){
|
||||
$name = $file->getInfo()['name'];
|
||||
// 使用 pathinfo() 函数获取文件名的扩展名
|
||||
$pathinfo = pathinfo($name);
|
||||
$extension = strtolower($pathinfo['extension']); // 转换为小写以进行不区分大小写的比较
|
||||
// 判断扩展名是否不是 .png 或 .gif
|
||||
if ($extension !== 'png' && $extension !== 'gif') {
|
||||
// 修改文件名,将扩展名改为 .jpg
|
||||
$new_filename = date('YmdHis').$name . '.jpg';
|
||||
} else {
|
||||
$new_filename = date('YmdHis').$name;
|
||||
}
|
||||
$info = $file->move(ROOT_PATH . 'public' . DS . 'upload_pic',$new_filename);
|
||||
if($info){
|
||||
$insert_data = [
|
||||
'url_data'=>"http://wm.tc.com/upload_pic/".$new_filename,
|
||||
'name'=>$name,
|
||||
'create_time'=>date('Y-m-d H:i:s'),
|
||||
];
|
||||
$pic_result = Db::table('admin_pic_manage')->insertGetId($insert_data);
|
||||
if($pic_result){
|
||||
return $this->msg(['url'=>$insert_data['url_data'],'id'=>$pic_result]);
|
||||
}else{
|
||||
return $this->msg(10002,'图片数据保存失败');
|
||||
}
|
||||
}else{
|
||||
return $this->msg(10002,'图片上传失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
####################################################图片选择上传end##############################################################
|
||||
|
||||
####################################################测试用接口##############################################################
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,441 @@
|
|||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use app\bj\controller\Common;
|
||||
use think\Log;
|
||||
use \think\Validate;
|
||||
|
||||
class Notice extends Base{
|
||||
protected $page_num = 10;
|
||||
protected $file_max_pic = 1024*1024*5;//xxxMB
|
||||
protected $information_msg_list_arr = [
|
||||
'1' => '身高管理',
|
||||
'2' => '体重管理',
|
||||
'3' => '肺活训练',
|
||||
'4' => '跳绳训练',
|
||||
'5' => '中考体测',
|
||||
'6' => '公告',
|
||||
];
|
||||
|
||||
###################################################banner图管理start###################################################
|
||||
###################################################banner图管理start###################################################
|
||||
###################################################banner图管理start###################################################
|
||||
public function banner_index($page = 1){
|
||||
$data = input();
|
||||
$pd = true;
|
||||
$parameter = [];
|
||||
$parameter['scene_data'] = 3;
|
||||
if(array_key_exists('tt', $data)){
|
||||
$page = $data['page_num'];
|
||||
unset($data['page_num']);
|
||||
unset($data['tt']);
|
||||
$pd = false;
|
||||
// if($data['status_num'] === "0" || $data['status_num'] === "1"){
|
||||
// $parameter['is_del'] = $data['status_num'];
|
||||
// }
|
||||
|
||||
// if($data['tel']){
|
||||
// $parameter['tel'] = $data['tel'];
|
||||
// }
|
||||
// if($data['email']){
|
||||
// $parameter['email'] = $data['email'];
|
||||
// }
|
||||
// if($data['s_time']){
|
||||
// $parameter['create_time'] = ['>=',$data['s_time']];
|
||||
// }
|
||||
// if($data['e_time']){
|
||||
// $parameter['create_time'] = ['<=',$data['e_time']];
|
||||
// }
|
||||
}
|
||||
$num = Db::table('admin_notice_banner')->where($parameter)->count();
|
||||
$result = Db::table('admin_notice_banner')->where($parameter)->order('is_del,sort_num desc')->page($page,$this->page_num)->select();
|
||||
// dump($result);
|
||||
// die;
|
||||
if(!$pd){
|
||||
$return_result['num'] = $num;
|
||||
$return_result['data'] = $result;
|
||||
return $this->msg(0,'success',$return_result);
|
||||
}
|
||||
$this->assign([
|
||||
'result' => $result,
|
||||
'num' => $num,
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
public function banner_add(){
|
||||
return $this->fetch();
|
||||
}
|
||||
public function banner_edit(){
|
||||
|
||||
}
|
||||
public function banner_update_sort(){
|
||||
|
||||
}
|
||||
public function banner_stop_run(){
|
||||
|
||||
}
|
||||
###################################################banner图管理end###################################################
|
||||
###################################################banner图管理end###################################################
|
||||
###################################################banner图管理end###################################################
|
||||
|
||||
###################################################首页弹窗管理start###################################################
|
||||
###################################################首页弹窗管理start###################################################
|
||||
###################################################首页弹窗管理start###################################################
|
||||
|
||||
###################################################首页弹窗管理end###################################################
|
||||
###################################################首页弹窗管理end###################################################
|
||||
###################################################首页弹窗管理end###################################################
|
||||
|
||||
###################################################公告管理start###################################################
|
||||
###################################################公告管理start###################################################
|
||||
###################################################公告管理start###################################################
|
||||
|
||||
###################################################公告管理end###################################################
|
||||
###################################################公告管理end###################################################
|
||||
###################################################公告管理end###################################################
|
||||
|
||||
|
||||
###################################################公共用接口start###################################################
|
||||
###################################################公共用接口start###################################################
|
||||
###################################################公共用接口start###################################################
|
||||
// 简单文章信息列表浏览
|
||||
public function information_msg_list($page = 1) {
|
||||
$data = input();
|
||||
$pd = true;
|
||||
if(array_key_exists('page',$data)){
|
||||
$page = $data['page'];
|
||||
$pd = false;
|
||||
}
|
||||
$num = Db::table('admin_editor_text_content')->where(['is_del'=>0])->count();
|
||||
$result = Db::table('admin_editor_text_content')->where(['is_del'=>0])->order('id desc')->page($page,10)->select();
|
||||
|
||||
foreach ($result as $key => $value) {
|
||||
if(array_key_exists($value['type'], $this->information_msg_list_arr)){
|
||||
$result[$key]['type'] = $this->information_msg_list_arr[$value['type']];
|
||||
}
|
||||
}
|
||||
if(!$pd){
|
||||
$return_result['num'] = $num;
|
||||
$return_result['result'] = $result;
|
||||
return $this->msg(0,'success',$return_result);
|
||||
}
|
||||
$this->assign([
|
||||
'result' => $result,
|
||||
'num' => $num,
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
###################################################公共用接口end###################################################
|
||||
###################################################公共用接口end###################################################
|
||||
###################################################公共用接口end###################################################
|
||||
|
||||
|
||||
public function index($page = 1){
|
||||
$data = input();
|
||||
$pd = true;
|
||||
$parameter = [];
|
||||
// $parameter['is_del'] = 0;
|
||||
if(array_key_exists('tt', $data)){
|
||||
$page = $data['page_num'];
|
||||
unset($data['page_num']);
|
||||
unset($data['tt']);
|
||||
$pd = false;
|
||||
// if($data['status_num'] === "0" || $data['status_num'] === "1"){
|
||||
// $parameter['is_del'] = $data['status_num'];
|
||||
// }
|
||||
|
||||
// if($data['tel']){
|
||||
// $parameter['tel'] = $data['tel'];
|
||||
// }
|
||||
// if($data['email']){
|
||||
// $parameter['email'] = $data['email'];
|
||||
// }
|
||||
// if($data['s_time']){
|
||||
// $parameter['create_time'] = ['>=',$data['s_time']];
|
||||
// }
|
||||
// if($data['e_time']){
|
||||
// $parameter['create_time'] = ['<=',$data['e_time']];
|
||||
// }
|
||||
}
|
||||
$num = Db::table('admin_editor_text_content')->where($parameter)->count();
|
||||
$result = Db::table('admin_editor_text_content')->where($parameter)->order('is_del,id desc')->page($page,$this->page_num)->select();
|
||||
if(!$pd){
|
||||
$return_result['num'] = $num;
|
||||
$return_result['data'] = $result;
|
||||
return $this->msg(0,'success',$return_result);
|
||||
}
|
||||
$this->assign([
|
||||
'result' => $result,
|
||||
'num' => $num,
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function add_content(){
|
||||
return $this->fetch();
|
||||
}
|
||||
public function edit_content(){
|
||||
$data = input();
|
||||
$result = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->find();
|
||||
// $result['sector'] = explode(',',$result['sector']);
|
||||
// dump($result);
|
||||
// die;
|
||||
// .replace(/'/g, ''').replace(/"/g, '"')
|
||||
// $result['content'] = htmlspecialchars_decode($result['content']);
|
||||
// $result['content'] = str_replace("'", "'", $result['content']);
|
||||
// $result['content'] = str_replace('"', '"', $result['content']);
|
||||
$this->assign([
|
||||
'result' => $result,
|
||||
'content' => $result['content'],
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function model_content(){
|
||||
$data = input();
|
||||
// $data['id'] = '3';
|
||||
if(!array_key_exists('id', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
// 查看文章是否存在
|
||||
$article_data = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->find();
|
||||
if(!$article_data){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
$result = $article_data;
|
||||
// 处理是否有过点赞
|
||||
if(array_key_exists('token', $data)){
|
||||
$result['token'] = $data['token'];
|
||||
// 启动事务处理用户已读记录&文章阅读数
|
||||
Db::startTrans();
|
||||
try{
|
||||
Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->setInc('reading');
|
||||
// 查看文章是否有被观看过
|
||||
$is_like = Db::table('admin_editor_text_like_up_log')->where(['aetc_id'=>$data['id'],'token'=>$data['token']])->find();
|
||||
if (!$is_like) {
|
||||
// 如果不存在,则插入新记录
|
||||
$save_data = ['token'=>$result['token'],'aetc_id'=>$data['id'],'create_time'=>date('Y-m-d H:i:s')];
|
||||
Db::name('admin_editor_text_like_up_log')->insert($save_data);
|
||||
}else{
|
||||
Db::table('admin_editor_text_like_up_log')->where(['id'=>$is_like['id']])->setInc('reading');
|
||||
}
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
}
|
||||
if($is_like){
|
||||
if($is_like['is_like'] == 0){
|
||||
// 用户没点赞
|
||||
$result['user_like'] = 0;
|
||||
}else{
|
||||
// 用户点过点赞
|
||||
$result['user_like'] = 1;
|
||||
}
|
||||
}else{
|
||||
// 用户没点过赞
|
||||
$result['user_like'] = 2;
|
||||
}
|
||||
}else{
|
||||
// 没有用户信息提示要登录
|
||||
Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->setInc('reading');
|
||||
$result['user_like'] = 3;
|
||||
$result['token'] = '';
|
||||
}
|
||||
// dump($result);
|
||||
// die;
|
||||
$this->assign([
|
||||
'result' => $result
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
|
||||
################################################################action################################################################
|
||||
################################################################action################################################################
|
||||
################################################################action################################################################
|
||||
|
||||
// 添加咨询动作
|
||||
public function add_content_action(){
|
||||
$file = request()->file('cover_image');
|
||||
$data = request()->param();
|
||||
if(!array_key_exists('title', $data) || !array_key_exists('sector', $data) || !array_key_exists('type', $data) || !array_key_exists('content', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
$name = time().$file->getInfo()['name'];
|
||||
$info = $file->move(ROOT_PATH . 'public' . DS . 'editor_upload' . DS . 'cover',$name);
|
||||
if($info){
|
||||
$result = Db::table('admin_editor_text_content')->insert([
|
||||
'title'=>$data['title'],
|
||||
'cover_image'=>"editor_upload/cover/".$name,
|
||||
'content'=>$data['content'],
|
||||
'create_time'=>date('Y-m-d H:i:s'),
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
'sector'=>$data['sector'],
|
||||
'type'=>$data['type'],
|
||||
]);
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
|
||||
}else{
|
||||
return $this->msg(10002,$file->getError());
|
||||
}
|
||||
}
|
||||
// 修改咨询动作
|
||||
public function edit_content_action(){
|
||||
$file = request()->file('cover_image');
|
||||
$data = request()->param();
|
||||
if(!array_key_exists('title', $data) || !array_key_exists('sector', $data) || !array_key_exists('type', $data) || !array_key_exists('content', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if($file){
|
||||
$name = time().$file->getInfo()['name'];
|
||||
$info = $file->move(ROOT_PATH . 'public' . DS . 'editor_upload' . DS . 'cover',$name);
|
||||
if($info){
|
||||
$result = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->update([
|
||||
'title'=>$data['title'],
|
||||
'cover_image'=>"editor_upload/cover/".$name,
|
||||
'content'=>$data['content'],
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
'sector'=>$data['sector'],
|
||||
'type'=>$data['type']
|
||||
]);
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
|
||||
}else{
|
||||
return $this->msg(10002,$file->getError());
|
||||
}
|
||||
}else{
|
||||
$result = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->update([
|
||||
'title'=>$data['title'],
|
||||
'content'=>$data['content'],
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
'sector'=>$data['sector'],
|
||||
'type'=>$data['type']
|
||||
]);
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 修改排序动作
|
||||
public function edit_order_action(){
|
||||
$data = input();
|
||||
if(!array_key_exists('id', $data) || !array_key_exists('data', $data) || !array_key_exists('str', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
$data['str'] = $data['str'] == 'loop'?'loop_img':'top_up';
|
||||
$result = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->update([
|
||||
$data['str']=>$data['data'],
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
]);
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
}
|
||||
|
||||
// 上传图片动作
|
||||
public function upload_pic_action(){
|
||||
// $file1 = request()->file('file');
|
||||
$file = request()->file('wangeditor-uploaded-image');
|
||||
|
||||
if($file){
|
||||
$name = $file->getInfo()['name'];
|
||||
// 使用 pathinfo() 函数获取文件名的扩展名
|
||||
$pathinfo = pathinfo($name);
|
||||
$extension = strtolower($pathinfo['extension']); // 转换为小写以进行不区分大小写的比较
|
||||
// 判断扩展名是否不是 .png 或 .gif
|
||||
if ($extension !== 'png' && $extension !== 'gif') {
|
||||
// 修改文件名,将扩展名改为 .jpg
|
||||
$new_filename = time().$pathinfo['filename'] . '.jpg';
|
||||
} else {
|
||||
$new_filename = time().$name;
|
||||
}
|
||||
$info = $file->move(ROOT_PATH . 'public' . DS . 'editor_upload' . DS . 'pic',$new_filename);
|
||||
if($info){
|
||||
$return_data = [
|
||||
'errno'=>0,
|
||||
'data'=>[
|
||||
'url'=>'http://tc.pcxbc.com/editor_upload/pic/'.$new_filename,
|
||||
]
|
||||
];
|
||||
return json($return_data);
|
||||
}else{
|
||||
// 上传失败获取错误信息
|
||||
// echo $file->getError();
|
||||
$return_data = [
|
||||
'errno'=>9999,
|
||||
'message'=>$file->getError()
|
||||
];
|
||||
return json($return_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 上传视频动作
|
||||
public function upload_video_action(){
|
||||
// $file1 = request()->file('file');
|
||||
$file = request()->file('wangeditor-uploaded-video');
|
||||
// dump($file);
|
||||
// die;
|
||||
if($file){
|
||||
$name = time().$file->getInfo()['name'];
|
||||
$info = $file->move(ROOT_PATH . 'public' . DS . 'editor_upload' . DS . 'video',$name);
|
||||
if($info){
|
||||
$return_data = [
|
||||
'errno'=>0,
|
||||
'data'=>[
|
||||
'url'=>'http://tc.pcxbc.com/editor_upload/video/'.$name,
|
||||
]
|
||||
];
|
||||
return json($return_data);
|
||||
}else{
|
||||
// 上传失败获取错误信息
|
||||
// echo $file->getError();
|
||||
$return_data = [
|
||||
'errno'=>9999,
|
||||
'message'=>$file->getError()
|
||||
];
|
||||
return json($return_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 停用启用动作
|
||||
public function stop_action(){
|
||||
$data = input();
|
||||
if(is_array($data['id'])){
|
||||
$data['id'] = implode(',',$data['id']);
|
||||
$result = Db::table('admin_editor_text_content')->where("id in (".$data['id'].")")->update(['is_del'=>$data['is_del']]);
|
||||
}else{
|
||||
$result = Db::table('admin_editor_text_content')->where(['id'=>$data['id']])->update(['is_del'=>$data['is_del']]);
|
||||
}
|
||||
|
||||
if($result){
|
||||
return $this->msg(0,'success');
|
||||
}else{
|
||||
return $this->msg(10001,'success');
|
||||
}
|
||||
}
|
||||
|
||||
################################################################other################################################################
|
||||
################################################################other################################################################
|
||||
################################################################other################################################################
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
<!doctype html>
|
||||
<html class="x-admin-sm">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>图片管理</title>
|
||||
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<style>
|
||||
.content{
|
||||
width: 100%;
|
||||
max-height: 70%;
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
align-content: center;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
.pic_box_upload{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 5px 5px;
|
||||
}
|
||||
.pic_box_upload img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.pic_box{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 5px 5px;
|
||||
}
|
||||
.pic_box:hover {
|
||||
box-shadow: 0px 0px 1px;
|
||||
}
|
||||
.pic_box img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
#fileInput {
|
||||
display: none; /* 隐藏文件输入元素 */
|
||||
}
|
||||
.jz{
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: auto 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="pic_box_upload" onclick="upload_action()"><img src="/tsf/upload_pic.jpg" alt=""></div>
|
||||
{volist name="result" id="vo"}
|
||||
<div class="pic_box" onclick="sendParamToParent('{$vo.id}','{$vo.url_data}')"><img src="{$vo.url_data}" alt=""></div>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="layui-card-body jz">
|
||||
<div id="page" style="text-align: center;">
|
||||
</div>
|
||||
</div>
|
||||
<input type="file" id="fileInput">
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
<script>
|
||||
var page_num;
|
||||
var laypage;
|
||||
var all_page = "{$num}";
|
||||
layui.use('laypage', function () {
|
||||
laypage = layui.laypage;
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: all_page, //数据总数,从服务端得到
|
||||
limit: 20,
|
||||
groups:20,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
jump_page(page_num)
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
function jump_page(num){
|
||||
load()
|
||||
$.ajax({
|
||||
url: "/admin/pic", //请求的url地址s
|
||||
dataType: "json", //返回格式为json
|
||||
async: true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data: {'page': num}, //参数值
|
||||
type: "POST", //请求方式
|
||||
success: function (req) {
|
||||
console.log(req)
|
||||
c_load();
|
||||
if(req['code'] == 0){
|
||||
var str,str_s,str_all="";
|
||||
for (let i = 0; i < req['data']['result'].length; i++) {
|
||||
str = '<div class="pic_box" onclick="sendParamToParent(\''+req['data']['result'][i]['id']+'\',\''+req['data']['result'][i]['url_data']+'\')"><img src="'+req['data']['result'][i]['url_data']+'" alt=""></div>'
|
||||
str_all = str_all+str;
|
||||
}
|
||||
$('.content').each(function() {
|
||||
$(this).find('.pic_box').remove();
|
||||
});
|
||||
$('.content').append(str_all);
|
||||
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function sendParamToParent(id,data) {
|
||||
var param = [id,data]; // 这是要传递的参数
|
||||
// 调用父窗口的一个函数,并传递参数
|
||||
if (window.parent && window.parent.receiveParamFromIframe) {
|
||||
window.parent.receiveParamFromIframe(param);
|
||||
} else {
|
||||
layer.msg('图片选择失败');
|
||||
}
|
||||
xadmin.close();
|
||||
}
|
||||
|
||||
function upload_action(){
|
||||
document.getElementById('fileInput').click();
|
||||
}
|
||||
|
||||
$('#fileInput').on('change', function() {
|
||||
// 获取被选择的文件
|
||||
var fileInput = $(this)[0];
|
||||
var file = fileInput.files[0];
|
||||
console.log(file)
|
||||
// return
|
||||
// 检查是否有文件被选择
|
||||
if (file) {
|
||||
load()
|
||||
var formdata = new FormData();
|
||||
formdata.append('cover_image',file)
|
||||
$.ajax({
|
||||
url:"/admin/pic_upload_action", //请求的url地址
|
||||
contentType:false,
|
||||
processData:false,
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:formdata, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req.code == 0){
|
||||
var newDiv = $('<div></div>')
|
||||
.addClass('pic_box')
|
||||
.attr('onclick', 'sendParamToParent(\''+req.data.id+'\',\''+req.data.url+'\')')
|
||||
.append($('<img></img>')
|
||||
.attr('src', req.data.url)
|
||||
.attr('alt', '')
|
||||
);
|
||||
$('.content > div:first').after(newDiv);
|
||||
layer.msg(req.msg);
|
||||
}else{
|
||||
layer.msg(req.msg);
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>欢迎页面-X-admin2.2</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
|
||||
<div class="layui-col-sm12 layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">最新一周新增用户</div>
|
||||
<div class="layui-card-body" style="min-height: 280px;">
|
||||
<div id="main1" class="layui-col-sm12" style="height: 300px;"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-sm12 layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">最新一周PV/UV量</div>
|
||||
<div class="layui-card-body" style="min-height: 280px;">
|
||||
<div id="main2" class="layui-col-sm12" style="height: 300px;"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-sm12 layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">用户来源</div>
|
||||
<div class="layui-card-body" style="min-height: 280px;">
|
||||
<div id="main3" class="layui-col-sm12" style="height: 300px;"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-sm12 layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">硬盘使用量</div>
|
||||
<div class="layui-card-body" style="min-height: 280px;">
|
||||
<div id="main4" class="layui-col-sm12" style="height: 300px;"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main1'));
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
grid: {
|
||||
top: '5%',
|
||||
right: '1%',
|
||||
left: '1%',
|
||||
bottom: '10%',
|
||||
containLabel: true
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['周一','周二','周三','周四','周五','周六','周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [{
|
||||
name:'用户量',
|
||||
data: [820, 932, 901, 934, 1290, 1330, 1320],
|
||||
type: 'line',
|
||||
smooth: true
|
||||
}]
|
||||
};
|
||||
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main2'));
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
tooltip : {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross',
|
||||
label: {
|
||||
backgroundColor: '#6a7985'
|
||||
}
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
top: '5%',
|
||||
right: '2%',
|
||||
left: '1%',
|
||||
bottom: '10%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
boundaryGap : false,
|
||||
data : ['周一','周二','周三','周四','周五','周六','周日']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value'
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'PV',
|
||||
type:'line',
|
||||
areaStyle: {normal: {}},
|
||||
data:[120, 132, 101, 134, 90, 230, 210],
|
||||
smooth: true
|
||||
},
|
||||
{
|
||||
name:'UV',
|
||||
type:'line',
|
||||
areaStyle: {normal: {}},
|
||||
data:[45, 182, 191, 234, 290, 330, 310],
|
||||
smooth: true,
|
||||
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
|
||||
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main3'));
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:335, name:'直接访问'},
|
||||
{value:310, name:'邮件营销'},
|
||||
{value:234, name:'联盟广告'},
|
||||
{value:135, name:'视频广告'},
|
||||
{value:1548, name:'搜索引擎'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main4'));
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
tooltip : {
|
||||
formatter: "{a} <br/>{b} : {c}%"
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '硬盘使用量',
|
||||
type: 'gauge',
|
||||
detail: {formatter:'{value}%'},
|
||||
data: [{value: 88, name: '已使用'}]
|
||||
}
|
||||
]
|
||||
};
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -133,6 +133,29 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;">
|
||||
<i class="iconfont left-nav-li" lay-tips="Banner图&公告管理"></i>
|
||||
<cite>Banner图&公告管理</cite>
|
||||
<i class="iconfont nav_right"></i></a>
|
||||
<ul class="sub-menu">
|
||||
<li>
|
||||
<a onclick="xadmin.add_tab('banner图管理','/notice/banner_index')">
|
||||
<i class="iconfont"></i>
|
||||
<cite>banner图管理</cite></a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="xadmin.add_tab('首页弹窗管理','/editortext/index')">
|
||||
<i class="iconfont"></i>
|
||||
<cite>首页弹窗管理</cite></a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="xadmin.add_tab('资讯推荐栏管理','/editortext/index')">
|
||||
<i class="iconfont"></i>
|
||||
<cite>公告管理</cite></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;">
|
||||
<i class="iconfont left-nav-li" lay-tips="城市联动"></i>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,210 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>添加banner</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row" id="app_all">
|
||||
<form action="" method="post" class="layui-form layui-form-pane">
|
||||
<div class="layui-form-item">
|
||||
<label for="title_v" class="layui-form-label">
|
||||
<span class="x-red">☆</span>标题描述
|
||||
</label>
|
||||
<div class="layui-input-inline" style="width: 80%;">
|
||||
<input type="text" id="title_v" name="title_v" lay-verify="title_v" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="pic_v" class="layui-form-label">
|
||||
<span class="x-red">☆</span>选择封面
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-btn" onclick="xadmin.open('图片管理','/admin/pic','80%','80%')">点击选择</div>
|
||||
<!-- <input type="file" id="upload_file_app" accept="image/*" lay-verify="upload_file_app" name="data_excel" class="layui-btn layui-btn-normal layui-btn-mini"> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="yulan_v" class="layui-form-label">
|
||||
<span class="x-red"></span>预览
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<img id="preview_img" style="max-width:500px;box-shadow: 0px 0px 1px;" src="" alt="">
|
||||
<input type="hidden" name="banner_img" id="banner_img" lay-verify="banner_img" value=""></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="data_type" class="layui-form-label">
|
||||
<span class="x-red">☆</span>选择类型
|
||||
</label>
|
||||
<div class="layui-input-inline" style="width: 80%;">
|
||||
<select id="data_type" name="data_type" lay-filter="data_type" lay-verify="data_type">
|
||||
<option value="0">请选择跳转类型</option>
|
||||
<option value="1">站内文章</option>
|
||||
<option value="2">微信小程序</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="parameter_data" class="layui-form-label">
|
||||
<span class="x-red">☆</span>填写关键参数
|
||||
</label>
|
||||
<div class="layui-input-inline" style="width: 80%;">
|
||||
<input type="text" id="parameter_data" name="parameter_data" lay-verify="parameter_data" autocomplete="off" class="layui-input" onfocus="pd_data_type()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="jump_url" class="layui-form-label">
|
||||
<span class="x-red"></span>页面路径
|
||||
</label>
|
||||
<div class="layui-input-inline" style="width: 80%;">
|
||||
<input type="text" id="jump_url" name="jump_url" lay-verify="jump_url" autocomplete="off" class="layui-input" placeholder="若选择站内文章,则无需填写该项">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" style="display: flex;flex-direction: row;justify-content: center;">
|
||||
<button class="layui-btn" lay-filter="add" lay-submit="">增加</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var pic_data = []
|
||||
function receiveParamFromIframe(param) {
|
||||
pic_data = param
|
||||
if(pic_data.length > 0){
|
||||
var img = document.getElementById('preview_img');
|
||||
img.src = pic_data[1]; // 设置图片预览的src属性
|
||||
img.style.display = 'block'; // 显示图片预览
|
||||
$('#banner_img').val(pic_data[0])
|
||||
}
|
||||
}
|
||||
function receiveParamFromIframe_information(param) {
|
||||
$('#parameter_data').val(param);
|
||||
layer.msg('已选择文章ID为'+param)
|
||||
}
|
||||
|
||||
function pd_data_type(){
|
||||
console.log($('#data_type').val())
|
||||
if($('#data_type').val() == 1){
|
||||
xadmin.open('资讯简易列表','/notice/information_msg_list','80%','80%')
|
||||
$('#parameter_data').blur()
|
||||
}else if($('#data_type').val() == 2){
|
||||
layer.msg('请填写微信小程序APPID')
|
||||
}else{
|
||||
layer.msg('请选择跳转类型')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
var form
|
||||
layui.use(['form'], function () {
|
||||
form = layui.form;
|
||||
form.verify({
|
||||
title_v: function(value) {
|
||||
if (value == '') {
|
||||
return '请先填写标题描述';
|
||||
}
|
||||
},
|
||||
banner_img: function(value) {
|
||||
if (value == '') {
|
||||
return '请先选择封面';
|
||||
}
|
||||
},
|
||||
data_type: function(value) {
|
||||
if (value == 0) {
|
||||
return '请先选择类型';
|
||||
}
|
||||
},
|
||||
parameter_data: function(value) {
|
||||
if (value == 0) {
|
||||
return '请先填写关键参数信息';
|
||||
}
|
||||
},
|
||||
jump_url: function(value) {
|
||||
if ($('#data_type').val() == 2) {
|
||||
return '请先填写微信小程序页面路径';
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(add)',function(data) {
|
||||
//发异步,把数据提交给php
|
||||
add_data()
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// 功能性~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
function add_data(){
|
||||
load()
|
||||
var data = {
|
||||
'title':$('#title').val(),
|
||||
'pic_id':$('#url').val(),
|
||||
'type':$('#img').val(),
|
||||
'parameter_data':$('#sort').val(),
|
||||
'jump_url':$('#status').val(),
|
||||
}
|
||||
$.ajax({
|
||||
url: "index", //请求的url地址s
|
||||
dataType: "json", //返回格式为json
|
||||
async: true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data: data, //参数值
|
||||
type: "POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
pd = true
|
||||
console.log()
|
||||
if(req.code == 0){
|
||||
layer.alert("增加成功", {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}else{
|
||||
layer.alert("增加失败"+req.msg, {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}
|
||||
//请求成功时处理
|
||||
|
||||
console.log(req)
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
pd = true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,316 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>banner图管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<style>
|
||||
/* th{
|
||||
min-width:30px;
|
||||
} */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="x-nav">
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="">首页</a>
|
||||
<a href="">演示</a>
|
||||
<a>
|
||||
<cite>导航元素</cite></a>
|
||||
</span>
|
||||
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
|
||||
</div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!-- <div class="layui-card-body ">
|
||||
<form class="layui-form layui-col-space5">
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input class="layui-input" autocomplete="off" placeholder="开始日" name="start" id="s_time">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input class="layui-input" autocomplete="off" placeholder="截止日" name="end" id="e_time">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input type="text" name="username" placeholder="请输入用户手机" autocomplete="off" class="layui-input" id="tel">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input type="text" name="username" placeholder="请输入用户邮箱" autocomplete="off" class="layui-input" id="email">
|
||||
</div>
|
||||
<div class="layui-input-inline layui-show-xs-block">
|
||||
<select name="contrller" id="status_num">
|
||||
<option value="">状态</option>
|
||||
<option value="0">启用</option>
|
||||
<option value="1">停用</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<div class="layui-btn" lay-submit="" lay-filter="sreach" onclick="find('y')"><i class="layui-icon"></i></div>
|
||||
</div>
|
||||
</form>
|
||||
</div> -->
|
||||
<div class="layui-card-header">
|
||||
<!-- <button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量停用</button> -->
|
||||
<!-- <button class="layui-btn" onclick="xadmin.open('添加用户','/appversion/app_add','100%','100%')"><i class="layui-icon"></i>添加</button> -->
|
||||
<button class="layui-btn" onclick="xadmin.open('添加banner','/notice/banner_add','80%','80%')"><i class="layui-icon"></i>添加</button>
|
||||
</div>
|
||||
<div class="layui-card-body layui-table-body layui-table-main">
|
||||
<table class="layui-table layui-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="min-width: 30px;width:50px;">ID</th>
|
||||
<th>标题</th>
|
||||
<th style="min-width: 30px;width:115px;">创建时间</th>
|
||||
<th>封面预览</th>
|
||||
<th style="min-width: 30px;width:50px;">轮播排序</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id='content'>
|
||||
{volist name="result" id="vo"}
|
||||
<tr>
|
||||
<td>{$vo.id}</td>
|
||||
<td>{$vo.title}</td>
|
||||
<td>{$vo.create_time}</td>
|
||||
<td><img src="{$vo.pic}" alt=""></td>
|
||||
<td><input type="text" class="layui-input x-sort loop_img_edit" name="order_edit" value="{$vo.sort_num}" onblur="edit_order_action(this,'{$vo.sort_num}','loop','{$vo.id}')"></td>
|
||||
<td class="td-status">
|
||||
<button class="layui-btn" onclick="xadmin.open('查看','/editortext/edit_content?id={$vo.id}','100%','100%')">查看</button>
|
||||
{if condition="$vo.is_del == 1"}
|
||||
<span onclick="app_stop(this,'{$vo.id}')" class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled" title="停用">已停用</span>
|
||||
{else /}
|
||||
<span onclick="app_stop(this,'{$vo.id}')" class="layui-btn layui-btn-normal layui-btn-mini" title="启用">已启用</span>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-card-body ">
|
||||
<div id="page" style="text-align: center;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
var form
|
||||
layui.use(['laydate','form'], function(){
|
||||
var laydate = layui.laydate;
|
||||
form = layui.form;
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#s_time' //指定元素
|
||||
});
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#e_time' //指定元素
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
var page_num;
|
||||
var laypage;
|
||||
var all_page = "{$num}";
|
||||
layui.use('laypage', function () {
|
||||
laypage = layui.laypage;
|
||||
|
||||
//执行一个laypage实例
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: all_page, //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
find("n")
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function edit_order_action(e,data,str,id){
|
||||
if($(e).val() == data){
|
||||
return
|
||||
}
|
||||
load()
|
||||
$.ajax({
|
||||
url:"/editortext/edit_order_action", //请求的url地址
|
||||
dataType:"json", //返回格式为json
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:{
|
||||
"id":id,
|
||||
'data':$(e).val(),
|
||||
'str':str,
|
||||
}, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req['code'] == 0){
|
||||
layer.msg('操作成功!',{icon: 6});
|
||||
}else{
|
||||
layer.msg('操作失败!',{icon: 5});
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}});
|
||||
|
||||
}
|
||||
|
||||
/*用户-停用*/
|
||||
function app_stop(obj,id){
|
||||
|
||||
// return
|
||||
var title = '',is_del,num
|
||||
if($(obj).attr('title')=='启用'){
|
||||
title = '停用'
|
||||
is_del = 1
|
||||
num = 5
|
||||
}else{
|
||||
title = '启用'
|
||||
is_del = 0
|
||||
num = 6
|
||||
}
|
||||
// console.log('点击时'+$(obj).attr('title')+'====='+id+'===传到后台是否删除:'+is_del)
|
||||
layer.confirm('确认要'+ title +'吗?',function(index){
|
||||
load()
|
||||
$.ajax({
|
||||
url:"/editortext/stop_action", //请求的url地址
|
||||
dataType:"json", //返回格式为json
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:{"id":id,'is_del':is_del}, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req['code'] == 0){
|
||||
//发异步把用户状态进行更改
|
||||
$(obj).attr('title',title)
|
||||
if(is_del == 1){
|
||||
$(obj).parents("tr").find(".td-status").find('span').addClass('layui-btn-disabled').html('已'+ title);
|
||||
}else{
|
||||
$(obj).parents("tr").find(".td-status").find('span').removeClass('layui-btn-disabled').html('已'+ title);
|
||||
}
|
||||
layer.msg('已'+ title,{icon: num});
|
||||
}else{
|
||||
layer.msg('操作失败!',{icon: 5});
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function find(pd) {
|
||||
if(!page_num || pd == 'y'){
|
||||
page_num = 1;
|
||||
}
|
||||
|
||||
page({
|
||||
"page_num":page_num,
|
||||
"tt":1},pd);
|
||||
}
|
||||
function page(data,pd) {
|
||||
console.log(data)
|
||||
load()
|
||||
$.ajax({
|
||||
url: "index", //请求的url地址s
|
||||
dataType: "json", //返回格式为json
|
||||
async: true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data: data, //参数值
|
||||
type: "POST", //请求方式
|
||||
success: function (req) {
|
||||
console.log(req)
|
||||
c_load();
|
||||
if (req['code'] == 0) {
|
||||
|
||||
var str,str_s,str_c,str_all="";
|
||||
|
||||
for (let i = 0; i < req['data']['data'].length; i++) {
|
||||
if(req['data']['data'][i]['is_del'] == 1){
|
||||
str = '<span onclick="app_stop(this,\''+ req['data']['data'][i]['id'] +'\')" class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled" title="停用">已停用</span>'
|
||||
}else{
|
||||
str = '<span onclick="app_stop(this,\''+ req['data']['data'][i]['id'] +'\')" class="layui-btn layui-btn-normal layui-btn-mini" title="启用">已启用</span>'
|
||||
}
|
||||
str_c = "<tr>"+
|
||||
"<td>"+ req['data']['data'][i]['id'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['title'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['create_time'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['update_time'] +"</td>"+
|
||||
'<td><input type="text" class="layui-input x-sort top_up_edit" name="order_edit" value="'+ req['data']['data'][i]['top_up'] +'" onblur="edit_order_action(this,\''+ req['data']['data'][i]['top_up'] +'\',\'top\',\''+ req['data']['data'][i]['id'] +'\')"></td>'+
|
||||
'<td><input type="text" class="layui-input x-sort loop_img_edit" name="order_edit" value="'+ req['data']['data'][i]['loop_img'] +'" onblur="edit_order_action(this,\''+ req['data']['data'][i]['loop_img'] +'\',\'loop\',\''+ req['data']['data'][i]['id'] +'\')"></td>'+
|
||||
'<td class="td-status">'+
|
||||
'<button class="layui-btn" onclick="xadmin.open(\'查看\',\'/editortext/edit_content?id='+ req['data']['data'][i]['id'] +'\',\'100%\',\'100%\')">查看</button>'+
|
||||
str+
|
||||
'</td></tr>'
|
||||
str_all = str_all+str_c;
|
||||
}
|
||||
$('#content').html(str_all);
|
||||
|
||||
form.render();
|
||||
if(pd == 'y'){
|
||||
$("#page").html("")
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: req['data']['num'], //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
// page({"page":page_num,"tt":1});
|
||||
find("n")
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
layer.msg(req['msg'])
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,397 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>设备管理_add</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
<link href="/rich_text_editor/style.css" rel="stylesheet">
|
||||
<script src="/rich_text_editor/index.js"></script>
|
||||
<style>
|
||||
#editor—wrapper {
|
||||
border: 1px solid #ccc;
|
||||
z-index: 100; /* 按需定义 */
|
||||
}
|
||||
#toolbar-container { border-bottom: 1px solid #ccc; }
|
||||
#editor-container { height: 500px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row" id="app_all">
|
||||
<form action="" method="post" class="layui-form layui-form-pane">
|
||||
<div class="layui-form-item">
|
||||
<label for="title_v" class="layui-form-label">
|
||||
<span class="x-red"></span>标题描述
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="title_v" name="title_v" required="" lay-verify="title_v" autocomplete="off" class="layui-input" value="{$result.title}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="title_v" class="layui-form-label">
|
||||
<span class="x-red"></span>上传封面
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="file" id="upload_file_app" accept="image/*" lay-verify="upload_file_app" name="data_excel" class="layui-btn layui-btn-normal layui-btn-mini">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="title_v" class="layui-form-label">
|
||||
<span class="x-red"></span>预览
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<img id="preview_img" style="max-width:500px;" src="http://tc.pcxbc.com/{$result.cover_image}" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-form-text" style="max-width: 440px;">
|
||||
<label class="layui-form-label">
|
||||
发布板块
|
||||
</label>
|
||||
<table class="layui-table layui-input-block">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
{if condition="strpos($result.sector, '1') !== false && strpos($result.sector, '2') !== false && strpos($result.sector, '3') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="" title="全选" lay-filter="sector_all">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="" title="全选" lay-filter="sector_all">
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<div class="layui-input-block">
|
||||
{if condition="strpos($result.sector, '1') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="1" title="推荐" lay-filter="sector_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="1" title="推荐" lay-filter="sector_child">
|
||||
{/if}
|
||||
{if condition="strpos($result.sector, '2') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="2" title="公告" lay-filter="sector_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="2" title="公告" lay-filter="sector_child">
|
||||
{/if}
|
||||
{if condition="strpos($result.sector, '3') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="3" title="圈" lay-filter="sector_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="3" title="圈" lay-filter="sector_child">
|
||||
{/if}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-form-item layui-form-text" style="max-width: 440px;">
|
||||
<label class="layui-form-label">
|
||||
发布类型
|
||||
</label>
|
||||
<table class="layui-table layui-input-block">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
{if condition="strpos($result.type, '1') !== false && strpos($result.type, '2') !== false && strpos($result.type, '3') !== false && strpos($result.type, '4') !== false && strpos($result.type, '5') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="" title="全选" lay-filter="type_all">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="" title="全选" lay-filter="type_all">
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<div class="layui-input-block">
|
||||
{if condition="strpos($result.type, '1') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="1" title="身高管理" lay-filter="type_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="1" title="身高管理" lay-filter="type_child">
|
||||
{/if}
|
||||
|
||||
{if condition="strpos($result.type, '2') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="2" title="体重管理" lay-filter="type_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="2" title="体重管理" lay-filter="type_child">
|
||||
{/if}
|
||||
|
||||
{if condition="strpos($result.type, '3') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="3" title="肺活训练" lay-filter="type_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="3" title="肺活训练" lay-filter="type_child">
|
||||
{/if}
|
||||
|
||||
{if condition="strpos($result.type, '4') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="4" title="跳绳训练" lay-filter="type_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="4" title="跳绳训练" lay-filter="type_child">
|
||||
{/if}
|
||||
|
||||
{if condition="strpos($result.type, '5') !== false"}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" checked value="5" title="中考体测" lay-filter="type_child">
|
||||
{else /}
|
||||
<input name="id[]" lay-skin="primary" type="checkbox" value="5" title="中考体测" lay-filter="type_child">
|
||||
{/if}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-form-item layui-form-text" style="max-width: 90%;">
|
||||
<label for="desc" class="layui-form-label">
|
||||
内容编辑
|
||||
</label>
|
||||
<div id="editor—wrapper">
|
||||
<div id="toolbar-container"><!-- 工具栏 --></div>
|
||||
<div id="editor-container"><!-- 编辑器 --></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<!-- <label for="L_repass" class="layui-form-label"></label> -->
|
||||
<!-- <div class="layui-btn" id="add" lay-filter="add" lay-submit="">增加</div>
|
||||
<input value="登录" lay-submit lay-filter="add" type="submit" class="layui-btn"> -->
|
||||
<button class="layui-btn" lay-filter="add" lay-submit="">修改</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$('#upload_file_app').on('change', function() {
|
||||
// 获取被选择的文件
|
||||
var fileInput = $(this)[0];
|
||||
var file = fileInput.files[0];
|
||||
|
||||
// 检查是否有文件被选择
|
||||
if (file) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
var img = document.getElementById('preview_img');
|
||||
img.src = e.target.result; // 设置图片预览的src属性
|
||||
img.style.display = 'block'; // 显示图片预览
|
||||
};
|
||||
reader.readAsDataURL(file); // 读取文件内容作为Data URL
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
var content_str = '{$result.content}';
|
||||
// var content_str = '';
|
||||
var html
|
||||
const { createEditor, createToolbar } = window.wangEditor
|
||||
|
||||
const editorConfig = {
|
||||
placeholder: 'Type here...',
|
||||
onChange(editor) {
|
||||
html = editor.getHtml()
|
||||
html = html.replace(/\r?\n|\r/g, '');
|
||||
// console.log('editor content', html)
|
||||
// 也可以同步到 <textarea>
|
||||
},
|
||||
MENU_CONF: {}
|
||||
}
|
||||
|
||||
editorConfig.MENU_CONF['uploadImage'] = {
|
||||
server: '/editortext/upload_pic_action',
|
||||
maxNumberOfFiles: 1,
|
||||
maxFileSize: 10 * 1024 * 1024, // 10M
|
||||
onError(file, err, res) {
|
||||
// console.log(`${file.name} 上传出错`, err, res)
|
||||
// console.log(file)
|
||||
// console.log(err.message)
|
||||
alert(err.message)
|
||||
},
|
||||
}
|
||||
editorConfig.MENU_CONF['uploadVideo'] = {
|
||||
server: '/editortext/upload_video_action',
|
||||
maxFileSize: 100 * 1024 * 1024, // 100M
|
||||
maxNumberOfFiles: 1,
|
||||
onError(file, err, res) {
|
||||
// console.log(`${file.name} 上传出错`, err, res)
|
||||
// console.log(file)
|
||||
// console.log(err.message)
|
||||
alert(err.message)
|
||||
},
|
||||
}
|
||||
|
||||
const editor = createEditor({
|
||||
selector: '#editor-container',
|
||||
html: '<p><br></p>',
|
||||
config: editorConfig,
|
||||
mode: 'default', // or 'simple'
|
||||
})
|
||||
|
||||
const toolbarConfig = {}
|
||||
|
||||
const toolbar = createToolbar({
|
||||
editor,
|
||||
selector: '#toolbar-container',
|
||||
config: toolbarConfig,
|
||||
mode: 'default', // or 'simple'
|
||||
})
|
||||
editor.setHtml(content_str)
|
||||
</script>
|
||||
<script>
|
||||
var form
|
||||
var id = '{$result.id}'
|
||||
var sector_arr = '{$result.sector}'.split(",")
|
||||
var type_arr = '{$result.type}'.split(",")
|
||||
console.log(sector_arr)
|
||||
var pd = true
|
||||
layui.use(['form'], function () {
|
||||
form = layui.form;
|
||||
form.verify({
|
||||
title_v: function(value) {
|
||||
if (value == '') {
|
||||
return '请先选择添加标题';
|
||||
}
|
||||
},
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(add)',function(data) {
|
||||
|
||||
|
||||
//发异步,把数据提交给php
|
||||
// console.log(html);
|
||||
// console.log(sector_arr);
|
||||
add_data()
|
||||
return false;
|
||||
});
|
||||
|
||||
form.on('checkbox(sector_all)', function(data){
|
||||
if(data.elem.checked){
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", true);
|
||||
form.render();
|
||||
sector_arr = ['1','2','3','4','5'];
|
||||
}else{
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", false);
|
||||
form.render();
|
||||
sector_arr = [];
|
||||
}
|
||||
console.log(sector_arr)
|
||||
});
|
||||
form.on('checkbox(sector_child)', function(data){
|
||||
if(data.elem.checked){
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", true);
|
||||
form.render();
|
||||
sector_arr.push($(data.elem).val());
|
||||
}else{
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", false);
|
||||
form.render();
|
||||
if (sector_arr.includes($(data.elem).val())) {
|
||||
// 如果包含,则删除第一个匹配的元素
|
||||
let index = sector_arr.indexOf($(data.elem).val());
|
||||
if (index !== -1) {
|
||||
sector_arr.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(sector_arr)
|
||||
});
|
||||
|
||||
form.on('checkbox(type_all)', function(data){
|
||||
if(data.elem.checked){
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", true);
|
||||
form.render();
|
||||
type_arr = ['1','2','3','4','5'];
|
||||
}else{
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", false);
|
||||
form.render();
|
||||
type_arr = [];
|
||||
}
|
||||
console.log(type_arr)
|
||||
});
|
||||
form.on('checkbox(type_child)', function(data){
|
||||
if(data.elem.checked){
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", true);
|
||||
form.render();
|
||||
type_arr.push($(data.elem).val());
|
||||
}else{
|
||||
$(data.elem).parent().siblings('td').find('input').prop("checked", false);
|
||||
form.render();
|
||||
if (type_arr.includes($(data.elem).val())) {
|
||||
// 如果包含,则删除第一个匹配的元素
|
||||
let index = type_arr.indexOf($(data.elem).val());
|
||||
if (index !== -1) {
|
||||
type_arr.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(type_arr)
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 功能性~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
function add_data(){
|
||||
if(pd === false){
|
||||
return
|
||||
}
|
||||
var formdata = new FormData();
|
||||
formdata.append('cover_image',$('#upload_file_app')[0].files[0])
|
||||
formdata.append('id',id)
|
||||
formdata.append('title',$("#title_v").val())
|
||||
formdata.append('sector',sector_arr)
|
||||
formdata.append('type',type_arr)
|
||||
html = html.replace(/['"]/g, '\\$&');
|
||||
formdata.append('content',html)
|
||||
console.log(formdata)
|
||||
load()
|
||||
pd = false
|
||||
$.ajax({
|
||||
url:"/editortext/edit_content_action", //请求的url地址
|
||||
contentType:false,
|
||||
processData:false,
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:formdata, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
pd = true
|
||||
console.log()
|
||||
if(req.code == 0){
|
||||
layer.alert("修改成功", {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}else{
|
||||
layer.alert("修改失败"+req.msg, {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}
|
||||
//请求成功时处理
|
||||
|
||||
console.log(req)
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
pd = true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>简要资讯列表</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body layui-table-body layui-table-main">
|
||||
<table class="layui-table layui-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="min-width: 30px;width:50px;">ID</th>
|
||||
<th>标题</th>
|
||||
<th style="min-width: 30px;width:115px;">类型</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id='content'>
|
||||
{volist name="result" id="vo"}
|
||||
<tr>
|
||||
<td>{$vo.id}</td>
|
||||
<td>{$vo.title}</td>
|
||||
<td>{$vo.type}</td>
|
||||
<td class="td-status">
|
||||
<button class="layui-btn" onclick="sendParamToParent('{$vo.id}')">选择</button>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-card-body ">
|
||||
<div id="page" style="text-align: center;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
function sendParamToParent(id) {
|
||||
var param = id; // 这是要传递的参数
|
||||
// 调用父窗口的一个函数,并传递参数
|
||||
if (window.parent && window.parent.receiveParamFromIframe) {
|
||||
window.parent.receiveParamFromIframe_information(param);
|
||||
} else {
|
||||
layer.msg('文章选择失败');
|
||||
}
|
||||
xadmin.close();
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
var form
|
||||
layui.use(['laydate','form'], function(){
|
||||
var laydate = layui.laydate;
|
||||
form = layui.form;
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#s_time' //指定元素
|
||||
});
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#e_time' //指定元素
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
var page_num;
|
||||
var laypage;
|
||||
var all_page = "{$num}";
|
||||
layui.use('laypage', function () {
|
||||
laypage = layui.laypage;
|
||||
|
||||
//执行一个laypage实例
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: all_page, //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
jump_page(page_num)
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function find(pd) {
|
||||
if(!page_num || pd == 'y'){
|
||||
page_num = 1;
|
||||
}
|
||||
|
||||
page({
|
||||
"page_num":page_num,
|
||||
"tt":1},pd);
|
||||
}
|
||||
function page(data,pd) {
|
||||
console.log(data)
|
||||
load()
|
||||
$.ajax({
|
||||
url: "index", //请求的url地址s
|
||||
dataType: "json", //返回格式为json
|
||||
async: true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data: data, //参数值
|
||||
type: "POST", //请求方式
|
||||
success: function (req) {
|
||||
console.log(req)
|
||||
c_load();
|
||||
if (req['code'] == 0) {
|
||||
|
||||
var str,str_s,str_c,str_all="";
|
||||
|
||||
for (let i = 0; i < req['data']['data'].length; i++) {
|
||||
if(req['data']['data'][i]['is_del'] == 1){
|
||||
str = '<span onclick="app_stop(this,\''+ req['data']['data'][i]['id'] +'\')" class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled" title="停用">已停用</span>'
|
||||
}else{
|
||||
str = '<span onclick="app_stop(this,\''+ req['data']['data'][i]['id'] +'\')" class="layui-btn layui-btn-normal layui-btn-mini" title="启用">已启用</span>'
|
||||
}
|
||||
str_c = "<tr>"+
|
||||
"<td>"+ req['data']['data'][i]['id'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['title'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['create_time'] +"</td>"+
|
||||
"<td>"+ req['data']['data'][i]['update_time'] +"</td>"+
|
||||
'<td><input type="text" class="layui-input x-sort top_up_edit" name="order_edit" value="'+ req['data']['data'][i]['top_up'] +'" onblur="edit_order_action(this,\''+ req['data']['data'][i]['top_up'] +'\',\'top\',\''+ req['data']['data'][i]['id'] +'\')"></td>'+
|
||||
'<td><input type="text" class="layui-input x-sort loop_img_edit" name="order_edit" value="'+ req['data']['data'][i]['loop_img'] +'" onblur="edit_order_action(this,\''+ req['data']['data'][i]['loop_img'] +'\',\'loop\',\''+ req['data']['data'][i]['id'] +'\')"></td>'+
|
||||
'<td class="td-status">'+
|
||||
'<button class="layui-btn" onclick="xadmin.open(\'查看\',\'/editortext/edit_content?id='+ req['data']['data'][i]['id'] +'\',\'100%\',\'100%\')">查看</button>'+
|
||||
str+
|
||||
'</td></tr>'
|
||||
str_all = str_all+str_c;
|
||||
}
|
||||
$('#content').html(str_all);
|
||||
|
||||
form.render();
|
||||
if(pd == 'y'){
|
||||
$("#page").html("")
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: req['data']['num'], //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
// page({"page":page_num,"tt":1});
|
||||
find("n")
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
layer.msg(req['msg'])
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{$result.title}</title>
|
||||
<script src="/x_admin/js/jq.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<style>
|
||||
*{
|
||||
margin: 0 0;
|
||||
padding: 0 0;
|
||||
}
|
||||
/* body{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
} */
|
||||
#big_box{
|
||||
width: 90vw;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left:0;
|
||||
right: 0;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
/* background-color: red; */
|
||||
}
|
||||
.content{
|
||||
width: 100%;
|
||||
}
|
||||
p{
|
||||
margin: 2vw 0;
|
||||
}
|
||||
img{
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
video{
|
||||
max-width: 100%;
|
||||
}
|
||||
.action_region{
|
||||
width: 100%;
|
||||
margin-bottom: 15vw;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
}
|
||||
.action_region span{
|
||||
font-size: 6vw;
|
||||
}
|
||||
#is_like{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
#reading{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.heart_full, .heart_empty {
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 7vw; /* 心形的宽度 */
|
||||
height: 7vw; /* 心形的高度 */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.heart_full::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%23FF0000" d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg>');
|
||||
}
|
||||
|
||||
.heart_empty::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%23888888" d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg>');
|
||||
}
|
||||
|
||||
.reading {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 7vw; /* 书籍的宽度 */
|
||||
height: 7vw; /* 书籍的高度 */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.reading::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%23FFA500" d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 18H6V4h12v16zM8 10h4v2H8v-2zm0 4h4v2H8v-2z"/></svg>');
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse; /* 这将合并表格边框,使得单元格之间没有间距 */
|
||||
}
|
||||
th{
|
||||
background-color: #f5f2f0;
|
||||
border: 1px solid #ccc;
|
||||
text-align: center;
|
||||
}
|
||||
td{
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
/* 外部容器的样式 */
|
||||
.table-container {
|
||||
max-width: 90vw; /* 最大宽度为视口宽度的80% */
|
||||
overflow-x: auto; /* 水平方向溢出时显示滚动条 */
|
||||
margin: 0 auto; /* 可选:让容器水平居中 */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="big_box">
|
||||
<div class="content">{$result.content}</div>
|
||||
<div class="action_region">
|
||||
<div id="is_like">
|
||||
<div id="is_like_a" class=""></div>
|
||||
<span class="is_like_num">{$result.i_like}</span>
|
||||
</div>
|
||||
<div id="reading">
|
||||
<div class="reading"></div>
|
||||
<span class="reading_num">{$result.reading}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
var user_like = "{$result.user_like}";
|
||||
var i_like_num = parseInt("{$result.i_like}");
|
||||
// 根据 user_like 的值设置初始类
|
||||
var isLikeElement = document.getElementById('is_like_a');
|
||||
if (user_like == 1) {
|
||||
isLikeElement.classList.add('heart_full');
|
||||
} else {
|
||||
isLikeElement.classList.add('heart_empty');
|
||||
}
|
||||
document.getElementById('is_like_a').addEventListener('click', function() {
|
||||
load()
|
||||
if(user_like == 3){
|
||||
c_load()
|
||||
alert('请登录');
|
||||
}else{
|
||||
user_like_do()
|
||||
}
|
||||
});
|
||||
|
||||
function user_like_do(){
|
||||
$.ajax({
|
||||
url:"/testedition/user_like_it", //请求的url地址
|
||||
dataType:"json", //返回格式为json
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:{"id":"{$result.id}",'token':"{$result.token}"}, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req.code == 0){
|
||||
if(req.data.user_like == 1){
|
||||
i_like_num = i_like_num + 1;
|
||||
isLikeElement.classList.remove('heart_empty');
|
||||
isLikeElement.classList.add('heart_full');
|
||||
document.querySelector('.is_like_num').innerHTML = i_like_num;
|
||||
}else if(req.data.user_like == 0){
|
||||
i_like_num = i_like_num - 1;
|
||||
isLikeElement.classList.remove('heart_full');
|
||||
isLikeElement.classList.add('heart_empty');
|
||||
document.querySelector('.is_like_num').innerHTML = i_like_num;
|
||||
}
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
// 获取页面上所有的 video 元素
|
||||
const videos = document.querySelectorAll('video');
|
||||
let hasScrolled = false;
|
||||
|
||||
// 监听滑动事件
|
||||
document.addEventListener('touchstart', handleScroll, { passive: true });
|
||||
|
||||
function handleScroll() {
|
||||
if (!hasScrolled) {
|
||||
hasScrolled = true;
|
||||
playFirstFrameAndPause(videos);
|
||||
// 移除滑动事件监听器,避免多次触发
|
||||
document.removeEventListener('touchstart', handleScroll);
|
||||
}
|
||||
}
|
||||
|
||||
function playFirstFrameAndPause(videos) {
|
||||
videos.forEach(video => {
|
||||
video.currentTime = 0; // 设置当前时间为 0 秒
|
||||
video.play().then(() => {
|
||||
video.pause(); // 立即暂停,显示第一帧
|
||||
}).catch(error => {
|
||||
console.error('Error playing video:', error);
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
var content_data = '{$result.content}'
|
||||
document.querySelector('div.content').innerHTML = content_data.replace(/\\/g, '');
|
||||
|
||||
// 获取页面上的所有表格
|
||||
var tables = document.getElementsByTagName('table');
|
||||
|
||||
// 遍历每个表格
|
||||
for (var i = 0; i < tables.length; i++) {
|
||||
var table = tables[i];
|
||||
|
||||
// 创建一个div容器
|
||||
var container = document.createElement('div');
|
||||
container.className = 'table-container'; // 应用CSS样式
|
||||
|
||||
// 将表格移动到容器中
|
||||
table.parentNode.insertBefore(container, table);
|
||||
container.appendChild(table);
|
||||
|
||||
// 强制浏览器重新计算布局,以便我们可以获取正确的宽度
|
||||
// 注意:这种方法可能不是最高效的,但在这种简单场景下通常足够
|
||||
var style = window.getComputedStyle(table);
|
||||
var tableWidth = parseFloat(style.width.replace('px', ''));
|
||||
var viewportWidth = window.innerWidth || document.documentElement.clientWidth;
|
||||
var maxWidth = viewportWidth * 0.8; // 计算80vw的值
|
||||
|
||||
// 如果表格宽度超过了80vw,则不需要额外操作,因为容器已经设置了max-width
|
||||
// 但为了演示,我们可以检查并打印出信息
|
||||
if (tableWidth > maxWidth) {
|
||||
console.log('Table ' + (i + 1) + ' is wider than 80vw and is wrapped in a container.');
|
||||
} else {
|
||||
// 实际上,如果表格没有超过宽度,你可能想要移除容器或做一些其他处理
|
||||
// 但在这个例子中,我们保留容器,因为max-width会确保它不会溢出
|
||||
console.log('Table ' + (i + 1) + ' fits within 80vw, but is still wrapped in a container for demonstration.');
|
||||
}
|
||||
|
||||
// 注意:由于我们设置了容器的max-width为80vw,并且overflow-x为auto,
|
||||
// 所以即使表格宽度超过容器的宽度,滚动条也会自动出现,无需额外JS处理。
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
@ -10,6 +10,8 @@ class Msginformation extends Base{
|
|||
protected $msginformation_use_db_name = [
|
||||
'1'=>'admin_editor_text_content',
|
||||
'2'=>'admin_editor_text_like_up_log',
|
||||
'3'=>'admin_notice_banner',
|
||||
'4'=>'admin_business_cooperation'
|
||||
];
|
||||
protected $page_num = 10;
|
||||
// 加 bcadd(,,20)
|
||||
|
|
@ -119,6 +121,27 @@ class Msginformation extends Base{
|
|||
|
||||
}
|
||||
|
||||
// 获取商务合作链接
|
||||
public function get_business_cooperation_url(){
|
||||
try {
|
||||
$business_cooperation_data = Db::table($this->msginformation_use_db_name['4'])->where(['is_del'=>0])->field('title,data_url as url')->select();
|
||||
$this->record_api_log([], null, $business_cooperation_data);
|
||||
return $this->msg($business_cooperation_data);
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
$logContent["flie"] = $e->getFile();
|
||||
$logContent["line"] = $e->getLine();
|
||||
$logContent['all_content'] = "异常信息:\n";
|
||||
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
|
||||
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
|
||||
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
|
||||
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
|
||||
$this->record_api_log([], $logContent, null);
|
||||
return $this->msg(99999);
|
||||
}
|
||||
}
|
||||
|
||||
################################################################业务################################################################
|
||||
################################################################get_sector_label_msg
|
||||
public function get_sector_label_msg_action(){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace app\code\controller;
|
||||
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use think\Cache;
|
||||
use think\Log;
|
||||
|
||||
class Base extends Controller{
|
||||
|
||||
|
||||
################################################################接口################################################################
|
||||
################################################################接口################################################################
|
||||
################################################################接口################################################################
|
||||
|
||||
|
||||
|
||||
public function msg($data,$str='',$result = []){
|
||||
if(is_array($data)){
|
||||
if($str != ''){
|
||||
return json(['code'=>0,'msg'=>$str,'data'=>$data]);
|
||||
}else{
|
||||
return json(['code'=>0,'msg'=>'操作成功','data'=>$data]);
|
||||
}
|
||||
}else{
|
||||
if($str != ''){
|
||||
return json(['code'=>$data,'msg'=>$str,'data'=>$result]);
|
||||
}
|
||||
return json(['code'=>$data,'msg'=>$this->return_data_all[$data],'data'=>$result]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace app\code\controller;
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use think\Cache;
|
||||
use think\Log;
|
||||
|
||||
class Qrcode extends Base{
|
||||
|
||||
public function ordinary_code(){
|
||||
|
||||
// $num = Db::table('app_version_log')->order('id desc')->find();
|
||||
echo '你好,这里仅仅是个展示页面-配合小白快乐成长&宠物小白使用';
|
||||
// echo '<br><a href="'.$num['download_url'].'">点击下载</a>';
|
||||
// $url = Db::table('app_version_log')->order('id desc')->find();
|
||||
// $this->assign([
|
||||
|
||||
// 'url' => $url['download_url'],
|
||||
// ]);
|
||||
// return $this->fetch();
|
||||
}
|
||||
|
||||
public function bluetooth_code(){
|
||||
|
||||
// $num = Db::table('app_version_log')->order('id desc')->find();
|
||||
echo '你好,这里仅仅是个展示页面-配合reedaw&宠物小白使用';
|
||||
// echo '<br><a href="'.$num['download_url'].'">点击下载</a>';
|
||||
// $url = Db::table('app_version_log')->order('id desc')->find();
|
||||
// $this->assign([
|
||||
|
||||
// 'url' => $url['download_url'],
|
||||
// ]);
|
||||
// return $this->fetch();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,218 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>app版本管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row">
|
||||
<form class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label for="L_email" class="layui-form-label">
|
||||
<span class="x-red"></span>卡片图标</label>
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<!-- <input type="text" id="L_email" name="email" required="" lay-verify="email" autocomplete="off" class="layui-input"> -->
|
||||
<input type="file" id="upload_file_app" lay-verify="upload_file_app" name="file_data">
|
||||
</div>
|
||||
<!-- <div class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span>将会成为您唯一的登入名
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="card_name" class="layui-form-label">
|
||||
<span class="x-red"></span>卡片名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="card_name" name="card_name" required="" lay-verify="card_name" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_record" class="layui-form-label">
|
||||
<span class="x-red">*</span>手动记录路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_record" name="page_url_record" required="" lay-verify="page_url_record" autocomplete="off" class="layui-input"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_report" class="layui-form-label">
|
||||
<span class="x-red">*</span>报告页路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_report" name="page_url_report" required="" lay-verify="page_url_report" autocomplete="off" class="layui-input"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_bluetooth" class="layui-form-label">
|
||||
<span class="x-red">*</span>蓝牙路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_bluetooth" name="page_url_bluetooth" required="" lay-verify="page_url_bluetooth" autocomplete="off" class="layui-input"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="content" class="layui-form-label">
|
||||
<span class="x-red">*</span>描述</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="content" name="content" required="" lay-verify="content" autocomplete="off" class="layui-input"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="L_repass" class="layui-form-label"></label>
|
||||
<!-- <div class="layui-btn" id="add" lay-filter="add" lay-submit="">增加</div>
|
||||
<input value="登录" lay-submit lay-filter="add" type="submit" class="layui-btn"> -->
|
||||
<button class="layui-btn" lay-filter="add" lay-submit="">增加</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var file_name_all = ''
|
||||
var file_name = ''
|
||||
var file_extension = ''
|
||||
var pd = true
|
||||
|
||||
$('#upload_file_app').on('change', function() {
|
||||
// 获取被选择的文件
|
||||
var fileInput = $(this)[0];
|
||||
var file = fileInput.files[0];
|
||||
|
||||
// 检查是否有文件被选择
|
||||
if (file) {
|
||||
// 获取文件的名称
|
||||
file_name_all = file.name;
|
||||
// 使用lastIndexOf和substring来获取文件名(不包括后缀)
|
||||
var lastIndex = file_name_all.lastIndexOf('.');
|
||||
file_name = lastIndex !== -1 ? file_name_all.substring(0, lastIndex) : file_name_all;
|
||||
// 获取文件后缀
|
||||
file_extension = lastIndex !== -1 ? file_name_all.substring(lastIndex + 1) : '';
|
||||
$('#file_name').val(file_name)
|
||||
console.log(file_name)
|
||||
console.log(file_extension)
|
||||
// formdata.append('apk',$('#upload_file_app')[0].files[0])
|
||||
}
|
||||
});
|
||||
|
||||
function add_data(){
|
||||
if(pd === false){
|
||||
return
|
||||
}
|
||||
var formdata = new FormData();
|
||||
formdata.append('upload_file_app',$('#upload_file_app')[0].files[0])
|
||||
formdata.append('card_name',$('#card_name').val())
|
||||
formdata.append('page_url_record',$('#page_url_record').val())
|
||||
formdata.append('page_url_report',$('#page_url_report').val())
|
||||
formdata.append('page_url_bluetooth',$('#page_url_bluetooth').val())
|
||||
formdata.append('content',$('#content').val())
|
||||
formdata.append('file_extension',file_extension)
|
||||
|
||||
load()
|
||||
pd = false
|
||||
console.log('进来了')
|
||||
$.ajax({
|
||||
url:"/card/card_add_action", //请求的url地址
|
||||
contentType:false,
|
||||
processData:false,
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:formdata, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
pd = true
|
||||
if(req.code == 0){
|
||||
layer.alert("增加成功", {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}else{
|
||||
layer.alert("增加失败"+req.msg, {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}
|
||||
//请求成功时处理
|
||||
|
||||
console.log(req)
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
pd = true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
layui.use(['form', 'layer','jquery'],function() {
|
||||
$ = layui.jquery;
|
||||
var form = layui.form,
|
||||
layer = layui.layer;
|
||||
|
||||
//自定义验证规则
|
||||
form.verify({
|
||||
|
||||
upload_file_app: function(value) {
|
||||
if (value == '') {
|
||||
return '请先选择文件';
|
||||
}
|
||||
},
|
||||
card_name: function(value) {
|
||||
if (value == '') {
|
||||
return '必须填写文件名';
|
||||
}
|
||||
},
|
||||
// version_num: [/[\d.]{0,9}$/, '版本号必须以大写V开头最多10个字符(由数字跟英文"."组成)'],
|
||||
content: function(value) {
|
||||
if (value == '') {
|
||||
return '必须填写描述';
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(add)',function(data) {
|
||||
//发异步,把数据提交给php
|
||||
add_data()
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// });
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>app版本管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row">
|
||||
<form class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label for="L_email" class="layui-form-label">
|
||||
<span class="x-red"></span>卡片图标</label>
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<!-- <input type="text" id="L_email" name="email" required="" lay-verify="email" autocomplete="off" class="layui-input"> -->
|
||||
<input type="file" id="upload_file_app" lay-verify="upload_file_app" name="file_data">
|
||||
</div>
|
||||
<!-- <div class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span>将会成为您唯一的登入名
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="card_name" class="layui-form-label">
|
||||
<span class="x-red"></span>卡片名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="card_name" name="card_name" required="" lay-verify="card_name" autocomplete="off" class="layui-input" value="{$result.name}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_record" class="layui-form-label">
|
||||
<span class="x-red">*</span>手动记录路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_record" name="page_url_record" required="" lay-verify="page_url_record" autocomplete="off" class="layui-input" value="{$result.page_url_record}"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_report" class="layui-form-label">
|
||||
<span class="x-red">*</span>报告页路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_report" name="page_url_report" required="" lay-verify="page_url_report" autocomplete="off" class="layui-input" value="{$result.page_url_report}"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="page_url_bluetooth" class="layui-form-label">
|
||||
<span class="x-red">*</span>蓝牙路径</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="page_url_bluetooth" name="page_url_bluetooth" required="" lay-verify="page_url_bluetooth" autocomplete="off" class="layui-input" value="{$result.page_url_bluetooth}"></div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="content" class="layui-form-label">
|
||||
<span class="x-red">*</span>描述</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="content" name="content" required="" lay-verify="content" autocomplete="off" class="layui-input" value="{$result.content}"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="L_repass" class="layui-form-label"></label>
|
||||
<!-- <div class="layui-btn" id="add" lay-filter="add" lay-submit="">增加</div>
|
||||
<input value="登录" lay-submit lay-filter="add" type="submit" class="layui-btn"> -->
|
||||
<button class="layui-btn" lay-filter="add" lay-submit="">修改</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="layui-fluid">
|
||||
<div id="official_1" class="layui-row">
|
||||
<div style="margin-left: 8%;margin-top: 5%;font-size: 25px;">请先下载模板文件,信息填写完成并上传该文件后点击生成</div>
|
||||
<img style="width: 90%;margin-left: 3%;"src="/uploads/code_demo.png?v=1.0" alt="">
|
||||
<div class="layui-form-item" style="width: 30%;margin-left: 33%;margin-top: 5%;">
|
||||
<span>步骤1:</span><a href="/uploads/code_demo.xlsx" class="layui-btn" lay-filter="add">下载模板文件</a>
|
||||
</div>
|
||||
<div class="layui-form-item" style="width: 50%;margin-left: 33%;margin-top: 5%;">
|
||||
<span>步骤2:</span><input type="file" id="data_excel" name="data_excel">
|
||||
</div>
|
||||
<div class="layui-form-item" style="width: 30%;margin-left: 33%;margin-top: 5%;">
|
||||
<span>步骤3:</span><button class="layui-btn" lay-filter="add" lay-submit="" onclick="add_data()">生成</button>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var id = "{$result.id}"
|
||||
var file_name_all = ''
|
||||
var file_name = ''
|
||||
var file_extension = ''
|
||||
var pd = true
|
||||
|
||||
$('#upload_file_app').on('change', function() {
|
||||
// 获取被选择的文件
|
||||
var fileInput = $(this)[0];
|
||||
var file = fileInput.files[0];
|
||||
|
||||
// 检查是否有文件被选择
|
||||
if (file) {
|
||||
// 获取文件的名称
|
||||
file_name_all = file.name;
|
||||
// 使用lastIndexOf和substring来获取文件名(不包括后缀)
|
||||
var lastIndex = file_name_all.lastIndexOf('.');
|
||||
file_name = lastIndex !== -1 ? file_name_all.substring(0, lastIndex) : file_name_all;
|
||||
// 获取文件后缀
|
||||
file_extension = lastIndex !== -1 ? file_name_all.substring(lastIndex + 1) : '';
|
||||
$('#file_name').val(file_name)
|
||||
// console.log($('#upload_file_app')[0].files[0])
|
||||
// formdata.append('apk',$('#upload_file_app')[0].files[0])
|
||||
}
|
||||
});
|
||||
|
||||
function edit_data(){
|
||||
if(pd === false){
|
||||
return
|
||||
}
|
||||
var formdata = new FormData();
|
||||
formdata.append('upload_file_app',$('#upload_file_app')[0].files[0])
|
||||
formdata.append('card_name',$('#card_name').val())
|
||||
formdata.append('page_url_record',$('#page_url_record').val())
|
||||
formdata.append('page_url_report',$('#page_url_report').val())
|
||||
formdata.append('page_url_bluetooth',$('#page_url_bluetooth').val())
|
||||
formdata.append('content',$('#content').val())
|
||||
formdata.append('file_extension',file_extension)
|
||||
formdata.append('id',id)
|
||||
load()
|
||||
pd = false
|
||||
console.log('进来了')
|
||||
$.ajax({
|
||||
url:"/card/card_edit_action", //请求的url地址
|
||||
contentType:false,
|
||||
processData:false,
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:formdata, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
pd = true
|
||||
if(req.code == 0){
|
||||
layer.alert("修改成功", {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}else{
|
||||
layer.alert("修改失败"+req.msg, {icon: 6},function() {
|
||||
//关闭当前frame
|
||||
xadmin.close();
|
||||
// 可以对父窗口进行刷新
|
||||
xadmin.father_reload();
|
||||
});
|
||||
}
|
||||
//请求成功时处理
|
||||
|
||||
console.log(req)
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
pd = true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
layui.use(['form', 'layer','jquery'],function() {
|
||||
$ = layui.jquery;
|
||||
var form = layui.form,
|
||||
layer = layui.layer;
|
||||
|
||||
//自定义验证规则
|
||||
form.verify({
|
||||
|
||||
// upload_file_app: function(value) {
|
||||
// if (value == '') {
|
||||
// return '请先选择文件';
|
||||
// }
|
||||
// },
|
||||
file_name: function(value) {
|
||||
if (value == '') {
|
||||
return '必须填写文件名';
|
||||
}
|
||||
},
|
||||
// version_num: [/[\d.]{0,9}$/, '版本号必须以大写V开头最多10个字符(由数字跟英文"."组成)'],
|
||||
content: function(value) {
|
||||
if (value == '') {
|
||||
return '必须填写描述';
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(add)',function(data) {
|
||||
//发异步,把数据提交给php
|
||||
edit_data()
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// });
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,360 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>所有卡片管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/xadmin.js"></script>
|
||||
<style>
|
||||
/* th{
|
||||
min-width:30px;
|
||||
} */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="x-nav">
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="">首页</a>
|
||||
<a href="">演示</a>
|
||||
<a>
|
||||
<cite>导航元素</cite></a>
|
||||
</span>
|
||||
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
|
||||
</div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!-- <div class="layui-card-body ">
|
||||
<form class="layui-form layui-col-space5">
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input class="layui-input" autocomplete="off" placeholder="开始日" name="start" id="s_time">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input class="layui-input" autocomplete="off" placeholder="截止日" name="end" id="e_time">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input type="text" name="username" placeholder="请输入用户手机" autocomplete="off" class="layui-input" id="tel">
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<input type="text" name="username" placeholder="请输入用户邮箱" autocomplete="off" class="layui-input" id="email">
|
||||
</div>
|
||||
<div class="layui-input-inline layui-show-xs-block">
|
||||
<select name="contrller" id="status_num">
|
||||
<option value="">状态</option>
|
||||
<option value="0">启用</option>
|
||||
<option value="1">停用</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-inline layui-show-xs-block">
|
||||
<div class="layui-btn" lay-submit="" lay-filter="sreach" onclick="find('y')"><i class="layui-icon"></i></div>
|
||||
</div>
|
||||
</form>
|
||||
</div> -->
|
||||
<div class="layui-card-header">
|
||||
<button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量停用</button>
|
||||
<!-- <button class="layui-btn" onclick="xadmin.open('添加用户','/appversion/app_add','100%','100%')"><i class="layui-icon"></i>添加</button> -->
|
||||
<button class="layui-btn" onclick="xadmin.open('添加版本','/card/card_add','80%','60%')"><i class="layui-icon"></i>添加</button>
|
||||
</div>
|
||||
<div class="layui-card-body layui-table-body layui-table-main">
|
||||
<table class="layui-table layui-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" lay-filter="checkall" name="" lay-skin="primary"></th>
|
||||
<th>ID</th>
|
||||
<th>卡片名称</th>
|
||||
<th>卡片图标</th>
|
||||
<th>卡片描述</th>
|
||||
<th>创建时间</th>
|
||||
<th>状态</th>
|
||||
<th>操作</th></tr>
|
||||
</thead>
|
||||
<tbody id='content'>
|
||||
|
||||
{volist name="result" id="vo"}
|
||||
<tr>
|
||||
<td><input type="checkbox" name="id" value="{$vo.id}" lay-skin="primary"></td>
|
||||
<td>{$vo.id}</td>
|
||||
<td>{$vo.name}</td>
|
||||
<td><img src="{$vo.pic}" alt=""></td>
|
||||
<td>{$vo.content}</td>
|
||||
<td>{$vo.create_time}</td>
|
||||
<td class="td-status">
|
||||
{if condition="$vo.is_del == 1"}
|
||||
<span onclick="app_stop(this,'{$vo.id}')" class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled" title="停用">已停用</span>
|
||||
{else /}
|
||||
<span onclick="app_stop(this,'{$vo.id}')" class="layui-btn layui-btn-normal layui-btn-mini" title="启用">已启用</span>
|
||||
{/if}
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<button class="layui-btn" onclick="xadmin.open('修改','/card/card_edit?id={$vo.id}','80%','60%')">修改</button>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-card-body ">
|
||||
<div id="page" style="text-align: center;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="layui-card-body ">
|
||||
<div class="page">
|
||||
<div>
|
||||
<a class="prev" href=""><<</a>
|
||||
<a class="num" href="">1</a>
|
||||
<span class="current">2</span>
|
||||
<a class="num" href="">3</a>
|
||||
<a class="num" href="">489</a>
|
||||
<a class="next" href="">>></a>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
var form
|
||||
layui.use(['laydate','form'], function(){
|
||||
var laydate = layui.laydate;
|
||||
form = layui.form;
|
||||
|
||||
|
||||
// 监听全选
|
||||
form.on('checkbox(checkall)', function(data){
|
||||
|
||||
if(data.elem.checked){
|
||||
$('tbody input').prop('checked',true);
|
||||
}else{
|
||||
$('tbody input').prop('checked',false);
|
||||
}
|
||||
form.render('checkbox');
|
||||
});
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#s_time' //指定元素
|
||||
});
|
||||
|
||||
//执行一个laydate实例
|
||||
laydate.render({
|
||||
elem: '#e_time' //指定元素
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
var page_num;
|
||||
var laypage;
|
||||
var all_page = "{$num}";
|
||||
layui.use('laypage', function () {
|
||||
laypage = layui.laypage;
|
||||
|
||||
//执行一个laypage实例
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: all_page, //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
find("n")
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/*用户-停用*/
|
||||
function app_stop(obj,id){
|
||||
|
||||
// return
|
||||
var title = '',is_del,num
|
||||
if($(obj).attr('title')=='启用'){
|
||||
title = '停用'
|
||||
is_del = 1
|
||||
num = 5
|
||||
}else{
|
||||
title = '启用'
|
||||
is_del = 0
|
||||
num = 6
|
||||
}
|
||||
// console.log('点击时'+$(obj).attr('title')+'====='+id+'===传到后台是否删除:'+is_del)
|
||||
layer.confirm('确认要'+ title +'吗?',function(index){
|
||||
load()
|
||||
$.ajax({
|
||||
url:"/card/card_del", //请求的url地址
|
||||
dataType:"json", //返回格式为json
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:{"id":id,'is_del':is_del}, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req['code'] == 0){
|
||||
//发异步把用户状态进行更改
|
||||
$(obj).attr('title',title)
|
||||
if(is_del == 1){
|
||||
$(obj).parents("tr").find(".td-status").find('span').addClass('layui-btn-disabled').html('已'+ title);
|
||||
}else{
|
||||
$(obj).parents("tr").find(".td-status").find('span').removeClass('layui-btn-disabled').html('已'+ title);
|
||||
}
|
||||
layer.msg('已'+ title,{icon: num});
|
||||
}else{
|
||||
layer.msg('操作失败!',{icon: 5});
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}});
|
||||
});
|
||||
}
|
||||
|
||||
function delAll (argument) {
|
||||
// layer.msg('停用成功', {icon: 2});
|
||||
// return
|
||||
var ids = [];
|
||||
// 获取选中的id
|
||||
$('tbody input').each(function(index, el) {
|
||||
if($(this).prop('checked')){
|
||||
ids.push($(this).val())
|
||||
}
|
||||
});
|
||||
if(ids.length <= 0){
|
||||
return
|
||||
}
|
||||
console.log(ids);
|
||||
layer.confirm('确认要停用吗?ID为:'+ids.toString(),function(index){
|
||||
//捉到所有被选中的,发异步进行删除
|
||||
$.ajax({
|
||||
url:"/card/card_del", //请求的url地址
|
||||
dataType:"json", //返回格式为json
|
||||
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data:{"id":ids,'is_del':1}, //参数值
|
||||
type:"POST", //请求方式
|
||||
success:function(req){
|
||||
c_load()
|
||||
//请求成功时处理
|
||||
if(req['code'] == 0){
|
||||
//发异步把用户状态进行更改
|
||||
layer.msg('停用成功', {icon: 1});
|
||||
$(".layui-form-checked").not('.header').parents('tr').find(".td-status").find('span').addClass('layui-btn-disabled').html('已停用');
|
||||
}else{
|
||||
layer.msg('操作失败!',{icon: 2});
|
||||
}
|
||||
},
|
||||
error:function(){
|
||||
//请求出错处理
|
||||
}});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function find(pd) {
|
||||
if(!page_num || pd == 'y'){
|
||||
page_num = 1;
|
||||
}
|
||||
|
||||
page({
|
||||
"status_num":$('#status_num').val(),
|
||||
"tel":$('#tel').val(),
|
||||
"email":$('#email').val(),
|
||||
"s_time":$('#s_time').val(),
|
||||
"e_time":$('#e_time').val(),
|
||||
"page_num":page_num,
|
||||
"tt":1},pd);
|
||||
}
|
||||
function page(data,pd) {
|
||||
console.log(data)
|
||||
load()
|
||||
$.ajax({
|
||||
url: "member_list", //请求的url地址s
|
||||
dataType: "json", //返回格式为json
|
||||
async: true,//请求是否异步,默认为异步,这也是ajax重要特性
|
||||
data: data, //参数值
|
||||
type: "POST", //请求方式
|
||||
success: function (req) {
|
||||
console.log(req)
|
||||
c_load();
|
||||
if (req['code'] == 0) {
|
||||
|
||||
var str,str_s,str_c,str_all="";
|
||||
|
||||
for (let i = 0; i < req['data']['data'].length; i++) {
|
||||
if(req['data']['data'][i]['is_del'] == 1){
|
||||
str = '<span onclick="member_stop(this,\''+req['data']['data'][i]['id']+'\')" class="layui-btn layui-btn-normal layui-btn-mini layui-btn-disabled" title="停用">已停用</span>'
|
||||
}else{
|
||||
str = '<span onclick="member_stop(this,\''+ req['data']['data'][i]['id'] +'\')" class="layui-btn layui-btn-normal layui-btn-mini" title="启用">已启用</span>'
|
||||
}
|
||||
str_c = "<tr>"+
|
||||
'<td><input type="checkbox" name="id" value="'+req['data']['data'][i]['id']+'" lay-skin="primary"></td>'+
|
||||
'<td>'+req['data']['data'][i]['id']+'</td>'+
|
||||
'<td>'+req['data']['data'][i]['token']+'</td>'+
|
||||
'<td>'+req['data']['data'][i]['tel']+'</td>'+
|
||||
'<td>'+req['data']['data'][i]['email']+'</td>'+
|
||||
'<td>'+req['data']['data'][i]['create_time']+'</td>'+
|
||||
'<td class="td-status">'+
|
||||
str+
|
||||
'</td>'
|
||||
'</tr>'
|
||||
str_all = str_all+str_c;
|
||||
}
|
||||
$('#content').html(str_all);
|
||||
|
||||
form.render();
|
||||
if(pd == 'y'){
|
||||
$("#page").html("")
|
||||
laypage.render({
|
||||
elem: 'page',
|
||||
count: req['data']['num'], //数据总数,从服务端得到
|
||||
limit: 10,
|
||||
groups:10,
|
||||
jump: function (obj, first) {
|
||||
//首次不执行
|
||||
if (!first) {
|
||||
//obj包含了当前分页的所有参数,比如:
|
||||
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); //得到每页显示的条数
|
||||
page_num = obj.curr;
|
||||
// page({"page":page_num,"tt":1});
|
||||
find("n")
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
layer.msg(req['msg'])
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
//请求出错处理
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//加载提示开启
|
||||
function load() {
|
||||
var index = layer.load(1, {
|
||||
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
||||
});
|
||||
}
|
||||
// 关闭加载提示
|
||||
function c_load() {
|
||||
layer.close(layer.index)
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
|
@ -35,6 +35,12 @@ Route::any('/bluetooth_code', 'code/qrcode/bluetooth_code');
|
|||
// // ################################################################管理后台################################################################
|
||||
|
||||
// 管理后台登录
|
||||
|
||||
// 图片选择上传
|
||||
Route::any('/admin/pic', 'admin/base/pic_index');
|
||||
Route::any('/admin/pic_upload_action', 'admin/base/pic_upload_action');
|
||||
|
||||
|
||||
// 登录页
|
||||
Route::any('/admin/login', 'admin/login/login');
|
||||
// 登录动作
|
||||
|
|
@ -91,7 +97,16 @@ Route::any('/editortext/upload_pic_action', 'admin/editortext/upload_pic_action'
|
|||
Route::any('/editortext/upload_video_action', 'admin/editortext/upload_video_action');
|
||||
Route::any('/editortext/stop_action', 'admin/editortext/stop_action');
|
||||
|
||||
|
||||
// Banner图&公告管理
|
||||
Route::any('/notice/information_msg_list', 'admin/notice/information_msg_list');//公告简要接口
|
||||
// banner
|
||||
Route::any('/notice/banner_index', 'admin/notice/banner_index');
|
||||
Route::any('/notice/banner_add', 'admin/notice/banner_add');
|
||||
Route::any('/notice/banner_edit', 'admin/notice/banner_edit');
|
||||
Route::any('/notice/banner_update_sort', 'admin/notice/banner_update_sort');
|
||||
Route::any('/notice/banner_stop_run', 'admin/notice/banner_stop_run');
|
||||
// 首页弹窗管理
|
||||
// 公告管理
|
||||
|
||||
|
||||
// 联系我们H5
|
||||
|
|
@ -341,6 +356,11 @@ Route::any('/testedition/user_like_it', 'testapp/Msginformation/user_like_it');
|
|||
// 获取公告文章信息列表
|
||||
Route::any('/get_recommend_information', 'app/Msginformation/get_recommend_information');
|
||||
Route::any('/testedition/get_recommend_information', 'testapp/Msginformation/get_recommend_information');
|
||||
// 获取商务合作链接
|
||||
// Route::any('/get_business_cooperation_url', 'app/Msginformation/get_business_cooperation_url');
|
||||
Route::any('/testedition/get_business_cooperation_url', 'testapp/Msginformation/get_business_cooperation_url');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -352,7 +372,9 @@ Route::any('/use_test', 'admin/base/use_test');
|
|||
// Route::any('/skip_kcal_calculate', 'app/skip/skip_kcal_calculate');
|
||||
// Route::any('/readexcel', 'admin/execlaa/readexcel');
|
||||
// Route::any('/vitalcapacity_standard_interval', 'app/vitalcapacity/vitalcapacity_standard_interval');
|
||||
|
||||
// 删除用户所有阅读记录
|
||||
Route::any('/del_all_read_log', 'app/Msginformation/del_all_read_log');
|
||||
Route::any('/testedition/del_all_read_log', 'testapp/Msginformation/del_all_read_log');
|
||||
|
||||
Route::any('/ceshiyong', 'app/base/ceshiyong');
|
||||
Route::any('/testedition/ceshiyong', 'testapp/base/ceshiyong');
|
||||
|
|
|
|||
|
|
@ -56,19 +56,41 @@ class Calculatebody extends Base{
|
|||
// $result['lbm'] = bcmul(bcsub('1',bcdiv($result['fat_r'],'100',20),20),$data['weight'],2);
|
||||
// 青测自己写的计算end
|
||||
|
||||
// dump($data);
|
||||
// die;
|
||||
// 使用接口调用之前的进行计算start
|
||||
$url = 'https://klcz.pcxbc.com/open-api/calc/healthcalc/bodyfat3';
|
||||
$temporary_parameter = [
|
||||
'weight'=>$data['weight'],
|
||||
'height'=>$data['height'],
|
||||
'age'=>round($data['age']),//四舍五入取整
|
||||
'adc'=>round($data['adc']),//四舍五入取整
|
||||
'gender'=>$data['gender'],
|
||||
];
|
||||
if($data['age'] < '3'){
|
||||
$temporary_parameter = [
|
||||
'weight'=>$data['weight'],
|
||||
'height'=>$data['height'],
|
||||
'age'=>round($data['age']),//四舍五入取整
|
||||
'adc'=>round($data['adc']),//四舍五入取整
|
||||
'gender'=>$data['gender'],
|
||||
'head'=>$data['head_circumference'],
|
||||
'hasStandardList'=>true,
|
||||
'birthDay'=>$data['birthday'],
|
||||
];
|
||||
}else{
|
||||
$temporary_parameter = [
|
||||
'weight'=>$data['weight'],
|
||||
'height'=>$data['height'],
|
||||
'age'=>round($data['age']),//四舍五入取整
|
||||
'adc'=>round($data['adc']),//四舍五入取整
|
||||
'gender'=>$data['gender'],
|
||||
];
|
||||
}
|
||||
// dump($temporary_parameter);
|
||||
$request_result = $this->postRequest($url,$temporary_parameter);
|
||||
if($request_result['code'] != 0){
|
||||
return false;
|
||||
}
|
||||
// return $this->msg($request_result);
|
||||
// dump($request_result);
|
||||
// foreach ($request_result['data']['standardlist'] as $key => $value) {
|
||||
// dump($value['name']);
|
||||
// }
|
||||
// die;
|
||||
|
||||
$result['weight'] = $request_result['data']['weight'];
|
||||
$result['height'] = $request_result['data']['height'];
|
||||
|
|
@ -92,6 +114,7 @@ class Calculatebody extends Base{
|
|||
$result['body'] = $request_result['data']['body'];
|
||||
// 使用接口调用之前的进行计算end
|
||||
|
||||
$return_data['standardlist'] = $request_result['data']['standardlist'];
|
||||
$return_data['体重'] = $data['weight'];
|
||||
$return_data['身高'] = $data['height'];
|
||||
$return_data['BMI'] = $result['bmi'];
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ class Card extends Base{
|
|||
|
||||
// 详细卡片信息
|
||||
// $data = ['id'=>'2']
|
||||
public function card_data_detailed($data=['aud_id'=>'37']){
|
||||
public function card_data_detailed($data=['aud_id'=>'38']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
|
|
@ -121,7 +121,7 @@ class Card extends Base{
|
|||
}
|
||||
|
||||
// 曲线页面-曲线接口
|
||||
public function card_curve_chart($data = ['aud_id'=>'11','s_time'=>'2024-04-01','e_time'=>'2024-10-25','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
public function card_curve_chart($data = ['aud_id'=>'11','s_time'=>'2024-04-01','e_time'=>'2024-12-25','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
|
|
@ -493,6 +493,7 @@ class Card extends Base{
|
|||
acbd.weight_val,
|
||||
acbd.bmi,
|
||||
acbd.body_age,
|
||||
acbd.head_circumference,
|
||||
aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date
|
||||
from ".$this->card_use_db_name['1']." as acbd
|
||||
left join ".$this->card_use_db_name['2']." as aud on acbd.aud_id=aud.id
|
||||
|
|
@ -561,7 +562,9 @@ class Card extends Base{
|
|||
];
|
||||
return $this->msg($result_return);
|
||||
}else{
|
||||
|
||||
// 存储头围数据
|
||||
$head_circumference = $result[0]['head_circumference']?json_decode($result[0]['head_circumference'],true):false;
|
||||
unset($result[0]['head_circumference']);
|
||||
$result_end = $this->processing_return_data_new($result[0]);
|
||||
$cardparts = new Cardparts;
|
||||
$result_end['gender'] = $result[0]['gender'];
|
||||
|
|
@ -569,7 +572,6 @@ class Card extends Base{
|
|||
$result_end['score'] = $result_end['score'];
|
||||
$result_end['body_type'] = $result_end['body_type'];
|
||||
$result_end = $cardparts->conversion_interval($result_end);
|
||||
|
||||
$result_end['cplist'] = $this->grow_up_recommendation([
|
||||
'birthday'=>$result[0]['birthday'],
|
||||
'body'=>[
|
||||
|
|
@ -621,8 +623,29 @@ class Card extends Base{
|
|||
$result_end['top_list'][2]['offset'] = $temporary_arr_bmi_list['data']['offset'];
|
||||
}
|
||||
}
|
||||
|
||||
// 加入曲线板块底部的减肥计划数据end
|
||||
// 添加头围数据(如果有的话)start
|
||||
|
||||
if($head_circumference !== false){
|
||||
if($head_circumference['level'] == '异常' || $head_circumference['value'] == 0){
|
||||
$offset = 0;
|
||||
}else{
|
||||
$offset = $cardparts->calculate_landing_point($head_circumference['list2'],$head_circumference['value'],$head_circumference['level']);
|
||||
}
|
||||
array_push($result_end['top_list'],[
|
||||
'name'=>'头围',
|
||||
'value'=>$head_circumference['value'],
|
||||
'unit'=>'CM',
|
||||
'standard'=>$head_circumference['level'],
|
||||
'color'=>'',
|
||||
'list'=>$head_circumference['list2'],
|
||||
'key_name'=>'head_circumference',
|
||||
'desc'=>'头围是指绕头部一周的最大长度,头围的大小与闹的发育密切相关',
|
||||
'offset'=>$offset
|
||||
]);
|
||||
}
|
||||
// 添加头围数据(如果有的话)end
|
||||
|
||||
return $this->msg($result_end);
|
||||
}
|
||||
}
|
||||
|
|
@ -783,7 +806,7 @@ class Card extends Base{
|
|||
$user_data_list = Db::table($this->card_use_db_name['1'])
|
||||
->where('aud_id', $data['aud_id'])
|
||||
->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']])
|
||||
->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr")
|
||||
->field("record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr")
|
||||
// ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")
|
||||
->order('record_time desc')
|
||||
->select();
|
||||
|
|
@ -805,6 +828,7 @@ class Card extends Base{
|
|||
array_push($record_arr2,$user_data_list[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->card_body_curve_arr as $key => $value) {
|
||||
$temporary_arr = [];
|
||||
$temporary_arr['title'] = $this->card_body_curve_arr2[$key];
|
||||
|
|
@ -813,8 +837,15 @@ class Card extends Base{
|
|||
$temporary_arr['line']['series'][0]['color'] = $this->card_body_curve_arr3[$key];
|
||||
$temporary_arr['line']['series'][0]['data'] = [];
|
||||
foreach ($record_arr2 as $k => $v) {
|
||||
array_push($temporary_arr['line']['categories'],$record_arr2[$k]['b_time']);
|
||||
array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]);
|
||||
if($value == 'fat_r'){
|
||||
if($v['record_type'] == 'by_device_adc'){
|
||||
array_push($temporary_arr['line']['categories'],$record_arr2[$k]['b_time']);
|
||||
array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]);
|
||||
}
|
||||
}else{
|
||||
array_push($temporary_arr['line']['categories'],$record_arr2[$k]['b_time']);
|
||||
array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]);
|
||||
}
|
||||
}
|
||||
array_push($data_arr,$temporary_arr);
|
||||
}
|
||||
|
|
@ -842,11 +873,24 @@ class Card extends Base{
|
|||
// }
|
||||
// // 这里开始转换不同单位的身高体重为cm跟kg(end)
|
||||
// $adc_type = $type;
|
||||
$data['type'] = 1;
|
||||
// $data['type'] = 1;
|
||||
|
||||
// 判断头围数据是否存在是否合理
|
||||
if(array_key_exists('head_circumference', $data)){
|
||||
if(!$this->verify_data_is_ok($data['head_circumference'],'num')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
}else{
|
||||
$data['head_circumference'] = 0;
|
||||
}
|
||||
// 查询用户信息
|
||||
$user_data = Db::table($this->card_use_db_name['2'])->where(['id'=>$data['aud_id']])->field('birthday,gender,target_weight,initial_weight,initial_date')->find();
|
||||
|
||||
if(!$user_data){
|
||||
return $this->msg(10003);
|
||||
}
|
||||
// dump($data['aud_id']);
|
||||
// 如果最初体重设置为null
|
||||
if($user_data['initial_date'] == null){
|
||||
Db::table($this->card_use_db_name['2'])->where(['id'=>$data['aud_id']])->update(['initial_weight'=>$data['weight'],'initial_date'=>$data['time']]);
|
||||
$target_current = $this->base_target_initial_cumulative_weight([
|
||||
|
|
@ -863,10 +907,13 @@ class Card extends Base{
|
|||
'initial_date'=>$user_data['initial_date'],
|
||||
]);
|
||||
}
|
||||
// 设置身高、体重、年龄、性别、阶段称谓、头围、生日、阻抗
|
||||
$result_data['height'] = $data['height'];
|
||||
$result_data['weight'] = $data['weight'];
|
||||
$result_data['age'] = $this->calculate_age($user_data['birthday']);
|
||||
$result_data['gender'] = $user_data['gender'];
|
||||
$result_data['head_circumference'] = $data['head_circumference'];
|
||||
$result_data['birthday'] = $user_data['birthday'];
|
||||
if(array_key_exists('adc', $data)){
|
||||
if($data['adc'] > 0){
|
||||
$result_data['adc'] = $data['adc'];
|
||||
|
|
@ -883,10 +930,40 @@ class Card extends Base{
|
|||
if($get_body_value === false){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
|
||||
// 如果年纪小于三岁,处理头围数据star
|
||||
$standardlist = [];
|
||||
if($result_data['age'] < 3){
|
||||
if(array_key_exists('standardlist',$get_body_value)){
|
||||
$standardlist = $get_body_value['standardlist'];
|
||||
foreach ($standardlist as $key => $value) {
|
||||
if($value['name'] == 'head' && count($value['list'] ) > 0){
|
||||
$standardlist = $value;
|
||||
}
|
||||
}
|
||||
$standardlist['list2'] = [];
|
||||
foreach ($standardlist['list'] as $key => $value) {
|
||||
array_push($standardlist['list2'],[
|
||||
'min_val'=>$value['minvalue'],
|
||||
'max_val'=>$value['maxvalue'],
|
||||
'text'=>$value['text'],
|
||||
'color'=>$value['color']
|
||||
]);
|
||||
}
|
||||
unset($standardlist['list']);
|
||||
unset($get_body_value['standardlist']);
|
||||
}
|
||||
}else{
|
||||
if(array_key_exists('standardlist',$get_body_value)){
|
||||
unset($get_body_value['standardlist']);
|
||||
}
|
||||
}
|
||||
// 如果年纪小于三岁,处理头围数据end
|
||||
$get_body_value['gender'] = $user_data['gender'];
|
||||
$get_body_value['birthday'] = $user_data['birthday'];
|
||||
// 添加身高体重bmi的标尺标准
|
||||
// 添加身高、体重、bmi、头围(如果有)的标尺标准
|
||||
$get_body_value = $this->hwb_standard($get_body_value);
|
||||
|
||||
$set_data = [
|
||||
'acd_id'=>$data['acd_id'],
|
||||
'aud_id'=>$data['aud_id'],
|
||||
|
|
@ -915,7 +992,8 @@ class Card extends Base{
|
|||
'body_level'=>$get_body_value['肥胖等级'],
|
||||
'body_type'=>$get_body_value['身体类型'],
|
||||
'body_age'=>$get_body_value['身体年龄'],
|
||||
'record_type' => $type
|
||||
'record_type' => $type,
|
||||
'head_circumference' => $result_data['age'] < 3?json_encode($standardlist):"",
|
||||
];
|
||||
if(strlen($set_data['record_time']) <= 12){
|
||||
// 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式
|
||||
|
|
@ -925,8 +1003,14 @@ class Card extends Base{
|
|||
Db::startTrans();
|
||||
try{
|
||||
$set_user_data = Db::table($this->card_use_db_name['1'])->insert($set_data);
|
||||
$update_user_data = Db::table($this->card_use_db_name['2'])->where(['id'=>$data['aud_id']])->update(['height'=>$get_body_value['身高'],'weight'=>$get_body_value['体重']]);
|
||||
|
||||
$update_arr = [
|
||||
'height'=>$get_body_value['身高'],
|
||||
'weight'=>$get_body_value['体重']
|
||||
];
|
||||
if($data['head_circumference']>0){
|
||||
$update_arr['head_data'] = $data['head_circumference'];
|
||||
}
|
||||
$update_user_data = Db::table($this->card_use_db_name['2'])->where(['id'=>$data['aud_id']])->update($update_arr);
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
return $this->msg([
|
||||
|
|
@ -943,7 +1027,6 @@ class Card extends Base{
|
|||
Db::rollback();
|
||||
return $this->msg(10002);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 添加身高体重bmi的标准
|
||||
|
|
@ -996,6 +1079,7 @@ class Card extends Base{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($linshi_data as $key => $value) {
|
||||
foreach ($value as $k => $v) {
|
||||
if($data[$key] >= $v['min_val'] && $data[$key] < $v['max_val']){
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ class Cardparts extends Base{
|
|||
}
|
||||
|
||||
|
||||
// 计算落点百分比
|
||||
// 计算落点百分比(区间字典,值,值描述)
|
||||
public function calculate_landing_point($data,$val,$t_val){
|
||||
$num = count($data);
|
||||
$a_section = bcdiv(100,$num,2);
|
||||
|
|
|
|||
|
|
@ -54,6 +54,13 @@ class Index extends Base{
|
|||
['id'=>'grade_u_12','name'=>'大学一、二年级'],
|
||||
['id'=>'grade_u_34','name'=>'大学三、四年级']
|
||||
];
|
||||
// 阶段性称谓
|
||||
protected $stage_appellation = [
|
||||
['min'=>'0','max'=>'3','value'=>'婴儿'],
|
||||
['min'=>'3','max'=>'16','value'=>'儿童'],
|
||||
['min'=>'16','max'=>'500','value'=>'成人']
|
||||
];
|
||||
|
||||
|
||||
################################################################个人资料卡################################################################
|
||||
################################################################个人资料卡################################################################
|
||||
|
|
@ -256,7 +263,6 @@ class Index extends Base{
|
|||
->where(['aan_id'=>$data['aan_id'],'is_del'=>0])
|
||||
->field('id,aan_id,nickname,birthday,gender,card_order,target_weight,initial_weight,initial_date,grade,head_pic,weight,height,identity_name,address,identity_id,measure_model')
|
||||
->select();
|
||||
|
||||
$temporary_data = [];
|
||||
if($data['type'] == 1){
|
||||
for ($i=0; $i < count($result); $i++) {
|
||||
|
|
@ -270,6 +276,12 @@ class Index extends Base{
|
|||
}else{
|
||||
for ($i=0; $i < count($result); $i++) {
|
||||
$result[$i]['age'] = $this->calculate_age($result[$i]['birthday']);
|
||||
// 添加阶段称谓、婴儿、儿童、成人
|
||||
foreach ($this->stage_appellation as $key => $value) {
|
||||
if($result[$i]['age'] >= $value['min'] && $result[$i]['age'] < $value['max']){
|
||||
$result[$i]['stage'] = $value['value'];
|
||||
}
|
||||
}
|
||||
}
|
||||
$temporary_data = $result;
|
||||
}
|
||||
|
|
@ -311,12 +323,16 @@ class Index extends Base{
|
|||
return $this->msg(10005);
|
||||
}
|
||||
// 获取用户信息
|
||||
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['aud_id'],'is_del'=>0])->field('id,aan_id,nickname,head_pic,birthday,gender,card_order,target_weight,initial_weight,initial_date,height,weight,address,identity_id,measure_model')->find();
|
||||
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['aud_id'],'is_del'=>0])->field('id,aan_id,nickname,head_pic,birthday,gender,card_order,target_weight,initial_weight,initial_date,height,weight,address,identity_id,measure_model,head_data')->find();
|
||||
if(!$result){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
$result['age'] = $this->calculate_age($result['birthday']);
|
||||
|
||||
foreach ($this->stage_appellation as $key => $value) {
|
||||
if($result['age'] >= $value['min'] && $result['age'] < $value['max']){
|
||||
$result['stage'] = $value['value'];
|
||||
}
|
||||
}
|
||||
// 从这里开始进入体脂还是体测的判断
|
||||
$result['card_order'] = explode(',',$result['card_order']);
|
||||
if($result['measure_model'] == 1){// 这里是体测
|
||||
|
|
@ -356,6 +372,9 @@ class Index extends Base{
|
|||
if($result['address'] == ''){
|
||||
$result['address'] = $this->moren_gufen_diqu;
|
||||
}
|
||||
if($result['head_data'] == null){
|
||||
$result['head_data'] = 0;
|
||||
}
|
||||
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',$result]);
|
||||
return $this->msg($result);
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ class Msginformation extends Base{
|
|||
protected $msginformation_use_db_name = [
|
||||
'1'=>'admin_editor_text_content',
|
||||
'2'=>'admin_editor_text_like_up_log',
|
||||
'3'=>'admin_notice_banner',
|
||||
'4'=>'admin_business_cooperation'
|
||||
];
|
||||
protected $page_num = 10;
|
||||
// 加 bcadd(,,20)
|
||||
|
|
@ -118,7 +120,7 @@ class Msginformation extends Base{
|
|||
}
|
||||
|
||||
}
|
||||
// 获取公告文章信息列表
|
||||
// 获取公告文章信息列表&banner
|
||||
public function get_recommend_information($data=['token'=>'6441bf7dabea7b3360a30240d3b19fc5']){
|
||||
try {
|
||||
if(count(input('post.')) > 0){
|
||||
|
|
@ -149,6 +151,60 @@ class Msginformation extends Base{
|
|||
}
|
||||
}
|
||||
|
||||
// 获取商务合作链接
|
||||
public function get_business_cooperation_url(){
|
||||
try {
|
||||
$business_cooperation_data = Db::table($this->msginformation_use_db_name['4'])->where(['is_del'=>0])->field('title,data_url as url')->select();
|
||||
$this->record_api_log([], null, $business_cooperation_data);
|
||||
return $this->msg($business_cooperation_data);
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
$logContent["flie"] = $e->getFile();
|
||||
$logContent["line"] = $e->getLine();
|
||||
$logContent['all_content'] = "异常信息:\n";
|
||||
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
|
||||
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
|
||||
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
|
||||
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
|
||||
$this->record_api_log([], $logContent, null);
|
||||
return $this->msg(99999);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除掉所有已经读过的文章记录
|
||||
public function del_all_read_log($data=['token'=>'6441bf7dabea7b3360a30240d3b19fc5']){
|
||||
try {
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('token', $data)){
|
||||
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if(!$this->verify_data_is_ok($data['token'],'str')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
$is_ok = Db::table($this->msginformation_use_db_name['2'])->where(['token'=>$data['token']])->delete();
|
||||
if($is_ok){
|
||||
echo '删除成功';
|
||||
}else{
|
||||
echo '删除失败';
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
$logContent["flie"] = $e->getFile();
|
||||
$logContent["line"] = $e->getLine();
|
||||
$logContent['all_content'] = "异常信息:\n";
|
||||
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
|
||||
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
|
||||
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
|
||||
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
|
||||
$this->record_api_log($data, $logContent, null);
|
||||
return $this->msg(99999);
|
||||
}
|
||||
}
|
||||
################################################################业务################################################################
|
||||
################################################################get_sector_label_msg
|
||||
public function get_sector_label_msg_action(){
|
||||
|
|
@ -306,45 +362,62 @@ class Msginformation extends Base{
|
|||
return $this->msg(10002);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
################################################################get_recommend_information
|
||||
public function get_recommend_information_action($data){
|
||||
$pop_arr = [];
|
||||
$list_arr = [];
|
||||
$recommend_data = Db::table($this->msginformation_use_db_name['1'])->where(['type'=>'6','is_del'=>0])->field('id,title,cover_image,pop_image')->select();
|
||||
$recommend_data2 = [];
|
||||
foreach ($recommend_data as $key => $value) {
|
||||
$recommend_data2[$value['id']] = $value;
|
||||
$return_data = [
|
||||
'pop'=>[],
|
||||
'notice'=>[],
|
||||
'banner'=>[]
|
||||
];
|
||||
// 所有可用记录
|
||||
$all_data = Db::table($this->msginformation_use_db_name['3'])->where(['is_del'=>0])->select();
|
||||
// 用户阅读记录
|
||||
$user_read_log = Db::table($this->msginformation_use_db_name['2'])->where(['token'=>$data['token']])->field('aetc_id')->select();
|
||||
$user_read_data = [];
|
||||
// 先过滤一遍用户已经看过的文章记录
|
||||
foreach ($user_read_log as $key => $value) {
|
||||
array_push($user_read_data,$value['aetc_id']);
|
||||
}
|
||||
$user_read_data = Db::table($this->msginformation_use_db_name['2'])->where(['token'=>$data['token']])->field('id,aetc_id,create_time')->select();
|
||||
foreach ($user_read_data as $key => $value) {
|
||||
if(array_key_exists($value['aetc_id'],$recommend_data2)){
|
||||
unset($recommend_data2[$value['aetc_id']]);
|
||||
}
|
||||
}
|
||||
if(count($recommend_data2) > 0){
|
||||
foreach ($recommend_data2 as $key => $value) {
|
||||
if($value['pop_image'] != null){
|
||||
array_push($pop_arr,['title'=>$value['title'],'jump_url'=>"https://tc.pcxbc.com/editortext/model_content?id=".$value['id'].'&token='.$data['token'],'pop_image'=>"https://tc.pcxbc.com/".$value['pop_image']]);
|
||||
// 删掉已经读过的信息
|
||||
foreach ($all_data as $key => $value) {
|
||||
if($value['type'] == '1'){
|
||||
if(in_array($value['parameter_data'], $user_read_data)){
|
||||
if($value['scene_data'] != 3){
|
||||
unset($all_data[$key]);
|
||||
}else{
|
||||
$all_data[$key]['jump_url'] = $all_data[$key]['jump_url']."&token=".$data['token'];
|
||||
$all_data[$key]['type'] = 'h5';
|
||||
}
|
||||
}else{
|
||||
array_push($list_arr,['title'=>$value['title'],'jump_url'=>"https://tc.pcxbc.com/editortext/model_content?id=".$value['id'].'&token='.$data['token']]);
|
||||
$all_data[$key]['jump_url'] = $all_data[$key]['jump_url']."&token=".$data['token'];
|
||||
$all_data[$key]['type'] = 'h5';
|
||||
}
|
||||
}else{
|
||||
$all_data[$key]['type'] = 'wechat';
|
||||
}
|
||||
// dump($pop_arr);
|
||||
// dump($list_arr);
|
||||
return $this->msg([
|
||||
'pop_list'=>count($pop_arr) > 0 ? $pop_arr[0] : [],
|
||||
'roll_list'=>count($list_arr) > 0 ? $list_arr : []
|
||||
]);
|
||||
}else{
|
||||
return $this->msg([
|
||||
'pop_list'=>[],
|
||||
'roll_list'=>[]
|
||||
]);
|
||||
unset($all_data[$key]['parameter_data']);
|
||||
unset($all_data[$key]['is_del']);
|
||||
unset($all_data[$key]['ROW_NUMBER']);
|
||||
}
|
||||
// 分类信息
|
||||
foreach ($all_data as $key => $value) {
|
||||
// 1:首屏弹窗,2:滚动公告,3:banner
|
||||
if($value['scene_data'] == '1'){
|
||||
|
||||
array_push($return_data['pop'],$value);
|
||||
}else if($value['scene_data'] == '2'){
|
||||
array_push($return_data['notice'],$value);
|
||||
}else if($value['scene_data'] == '3'){
|
||||
array_push($return_data['banner'],$value);
|
||||
}
|
||||
}
|
||||
// 设置pop当中只有一个数据
|
||||
if(count($return_data['pop'])>0){
|
||||
$return_data['pop'] = [$return_data['pop'][0]];
|
||||
}
|
||||
return $this->msg($return_data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ class Pagingcontrast extends Base{
|
|||
|
||||
}
|
||||
// 获取详细历史数据信息(包含身体、跳绳、肺活量)
|
||||
public function get_all_record_detailed_information($data = ['id'=>'52','type'=>'2','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
public function get_all_record_detailed_information($data = ['id'=>'170','type'=>'2','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
|
|
@ -454,6 +454,7 @@ class Pagingcontrast extends Base{
|
|||
// 设置排除在外的数据类型end
|
||||
$result = Db::table($this->db_name[$data['type']])->where(['id'=>$data['id']])->find();
|
||||
$for_data_arr = $this->request_result[$data['type']];
|
||||
|
||||
if($result){
|
||||
// if($data['type'] == 2 && $result['record_type'] != 'by_device_adc'){
|
||||
// $for_data_arr = ['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI','']];
|
||||
|
|
@ -483,6 +484,14 @@ class Pagingcontrast extends Base{
|
|||
$temporary_arr['unit'] = $value[1];
|
||||
array_push($result_data,$temporary_arr);
|
||||
}
|
||||
if($result['head_circumference'] != null){
|
||||
array_unshift($result_data,[
|
||||
'key_name'=>'head_circumference',
|
||||
'name'=>'头围',
|
||||
'value'=>json_decode($result['head_circumference'],true)['value'] == 0?"0(异常)":json_decode($result['head_circumference'],true)['value'],
|
||||
'unit'=>'cm',
|
||||
]);
|
||||
}
|
||||
return $this->msg($result_data);
|
||||
}else{
|
||||
return $this->msg(10004);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class Sportstesting extends Base{
|
|||
|
||||
protected $color = ['#FF5656','#FF5656','#5AD06D','#6492F6','#3967D6'];
|
||||
protected $sportstesting_use_db_name = [
|
||||
'1'=>'test_admin_estimate',
|
||||
'1'=>'admin_estimate',
|
||||
'2'=>'test_app_sportstesting_data',
|
||||
'3'=>'test_app_user_data',
|
||||
];
|
||||
|
|
@ -37,6 +37,304 @@ class Sportstesting extends Base{
|
|||
];
|
||||
|
||||
|
||||
protected $ceshiyongde_data_baocun_canshu = '{
|
||||
"code": 0,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"name": "现场考试",
|
||||
"key": "现场考试",
|
||||
"list": [
|
||||
{
|
||||
"name": "第一类项目(3选1)",
|
||||
"key": "第一类项目",
|
||||
"is_choice": "1",
|
||||
"list": [
|
||||
{
|
||||
"name": "1000米跑",
|
||||
"proportion": "1",
|
||||
"value": "4:23",
|
||||
"proportion_value": null,
|
||||
"unit": "分/秒",
|
||||
"type": "4",
|
||||
"describe": null,
|
||||
"total_score": 6,
|
||||
"choice_state": 1
|
||||
},
|
||||
{
|
||||
"name": "200米游泳",
|
||||
"proportion": "1",
|
||||
"value": "6:12",
|
||||
"proportion_value": null,
|
||||
"unit": "分/秒",
|
||||
"type": "4",
|
||||
"describe": null,
|
||||
"total_score": 6,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "4分钟跳绳",
|
||||
"proportion": "1",
|
||||
"value": 340,
|
||||
"proportion_value": null,
|
||||
"unit": "次",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 6,
|
||||
"choice_state": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "第二类项目(5选1)",
|
||||
"key": "第二类项目",
|
||||
"is_choice": "1",
|
||||
"list": [
|
||||
{
|
||||
"name": "50米跑",
|
||||
"proportion": "1",
|
||||
"value": 8.1,
|
||||
"proportion_value": null,
|
||||
"unit": "秒",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 1
|
||||
},
|
||||
{
|
||||
"name": "立定跳远",
|
||||
"proportion": "1",
|
||||
"value": 2.02,
|
||||
"proportion_value": null,
|
||||
"unit": "米",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "实心球",
|
||||
"proportion": "1",
|
||||
"value": 7.3,
|
||||
"proportion_value": null,
|
||||
"unit": "米",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "引体向上",
|
||||
"proportion": "1",
|
||||
"value": 6,
|
||||
"proportion_value": null,
|
||||
"unit": "次",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "25米游泳",
|
||||
"proportion": "1",
|
||||
"value": 30,
|
||||
"proportion_value": null,
|
||||
"unit": "秒",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "第三类项目(5选1)",
|
||||
"key": "第三类项目",
|
||||
"is_choice": "1",
|
||||
"list": [
|
||||
{
|
||||
"name": "乒乓球",
|
||||
"proportion": "1",
|
||||
"value": 15,
|
||||
"proportion_value": null,
|
||||
"unit": "次",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 1
|
||||
},
|
||||
{
|
||||
"name": "羽毛球",
|
||||
"proportion": "1",
|
||||
"value": 60,
|
||||
"proportion_value": null,
|
||||
"unit": "得分",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "网球",
|
||||
"proportion": "1",
|
||||
"value": 55,
|
||||
"proportion_value": null,
|
||||
"unit": "得分",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "武术",
|
||||
"proportion": "1",
|
||||
"value": "6",
|
||||
"proportion_value": null,
|
||||
"unit": "得分",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "体操",
|
||||
"proportion": "1",
|
||||
"value": "6",
|
||||
"proportion_value": null,
|
||||
"unit": "得分",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "第四类项目(3选1)",
|
||||
"key": "第四类项目",
|
||||
"is_choice": "1",
|
||||
"list": [
|
||||
{
|
||||
"name": "足球运球",
|
||||
"proportion": "1",
|
||||
"value": 15.5,
|
||||
"proportion_value": null,
|
||||
"unit": "秒",
|
||||
"type": "2",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 1
|
||||
},
|
||||
{
|
||||
"name": "篮球",
|
||||
"proportion": "1",
|
||||
"value": 31,
|
||||
"proportion_value": null,
|
||||
"unit": "秒",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
},
|
||||
{
|
||||
"name": "排球",
|
||||
"proportion": "1",
|
||||
"value": 23,
|
||||
"proportion_value": null,
|
||||
"unit": "40秒/次",
|
||||
"type": "1",
|
||||
"describe": null,
|
||||
"total_score": 3,
|
||||
"choice_state": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "日常考核",
|
||||
"key": "日常考核",
|
||||
"list": [
|
||||
{
|
||||
"name": "体育与健身",
|
||||
"key": "体育与健身",
|
||||
"is_choice": "0",
|
||||
"list": [
|
||||
{
|
||||
"name": "7年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "2"
|
||||
},
|
||||
{
|
||||
"name": "8年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "2"
|
||||
},
|
||||
{
|
||||
"name": "9年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "体质健康综合评定",
|
||||
"key": "体质健康综合评定",
|
||||
"is_choice": "0",
|
||||
"list": [
|
||||
{
|
||||
"name": "7年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "3"
|
||||
},
|
||||
{
|
||||
"name": "8年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "3"
|
||||
},
|
||||
{
|
||||
"name": "9年级",
|
||||
"proportion": "1",
|
||||
"value": "60",
|
||||
"proportion_value": null,
|
||||
"unit": "分",
|
||||
"type": "1",
|
||||
"describe": "满分100分",
|
||||
"total_score": "3"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}';
|
||||
|
||||
|
||||
// 加 bcadd(,,20)
|
||||
// 减 bcsub(,,20)
|
||||
// 乘 bcmul(,,20)
|
||||
|
|
@ -82,14 +380,14 @@ class Sportstesting extends Base{
|
|||
|
||||
}
|
||||
// 获取地区类型列表
|
||||
public function sportstesting_get_region_list($data = ['parameter_data'=>'辽宁,沈阳市','gender'=>'1']){
|
||||
public function sportstesting_get_region_list($data = ['parameter_data'=>'上海,上海','gender'=>'1','aud_id'=>'83','choice_last_time'=>'0']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('gender', $data) || !array_key_exists('parameter_data', $data)){
|
||||
$return_data = $this->msg(10001);
|
||||
if(!array_key_exists('gender', $data) || !array_key_exists('parameter_data', $data) || !array_key_exists('choice_last_time', $data) || !array_key_exists('aud_id', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if(!$this->verify_data_is_ok($data['parameter_data'],'str')){
|
||||
return $this->msg(10005);
|
||||
|
|
@ -97,6 +395,13 @@ class Sportstesting extends Base{
|
|||
if(!$this->verify_data_is_ok($data['gender'],'intnum')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
if(!$this->verify_data_is_ok($data['choice_last_time'],'intnum')){
|
||||
return $this->msg(10005);
|
||||
}else{
|
||||
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
}
|
||||
$return_data = $this->sportstesting_get_region_list_action($data);
|
||||
|
||||
// 成功
|
||||
|
|
@ -152,13 +457,16 @@ class Sportstesting extends Base{
|
|||
|
||||
}
|
||||
// 计算并存储数据
|
||||
public function sportstesting_set_once_data($data = ['aud_id'=>'83','parameter_data'=>'辽宁,沈阳市','result_data'=>'','gender'=>'1','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
public function sportstesting_set_once_data($data = ['aud_id'=>'83','parameter_data'=>'上海,上海','result_data'=>'','gender'=>'1','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
|
||||
// dump(json_decode($this->ceshiyongde_data_baocun_canshu,true)['data']);
|
||||
// die;
|
||||
// $data['result_data'] = json_decode($this->ceshiyongde_data_baocun_canshu,true)['data'];
|
||||
if(!array_key_exists('aud_id', $data) || !array_key_exists('parameter_data', $data) || !array_key_exists('result_data', $data) || !array_key_exists('gender', $data) || !array_key_exists('token', $data)){
|
||||
$return_data = $this->msg(10001);
|
||||
}
|
||||
|
|
@ -171,6 +479,8 @@ class Sportstesting extends Base{
|
|||
if(!$this->verify_data_is_ok($data['gender'],'intnum')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
// dump($data['result_data']);
|
||||
|
||||
if(is_array($data['result_data']) && !empty($data['result_data'])){
|
||||
// 是个数组且不为空数组
|
||||
foreach ($data['result_data'] as $key => $value) {
|
||||
|
|
@ -191,6 +501,7 @@ class Sportstesting extends Base{
|
|||
}else{
|
||||
return $this->msg(10006);
|
||||
}
|
||||
// die;
|
||||
unset($data['token']);
|
||||
$return_data = $this->sportstesting_set_once_data_action2($data);
|
||||
|
||||
|
|
@ -251,7 +562,7 @@ class Sportstesting extends Base{
|
|||
|
||||
}
|
||||
// 获取估分历史详情
|
||||
public function sportstesting_get_one_details($data = ['id'=>'2','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
public function sportstesting_get_one_details($data = ['id'=>'38','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
|
|
@ -364,27 +675,32 @@ class Sportstesting extends Base{
|
|||
// 全省地市一个规则start
|
||||
$db_condition = "province = '".$parameter_data[0]."'";
|
||||
// 全省地市一个规则end
|
||||
$result = false;
|
||||
if($data['choice_last_time'] == 1){
|
||||
|
||||
$result['list'] = [];
|
||||
$result['total_score'] = 0;
|
||||
$data = Db::table($this->sportstesting_use_db_name['1'])->where($db_condition)->select();
|
||||
// dump($data);
|
||||
// die;
|
||||
if(count($data) > 0){
|
||||
if(count($data) > 1){
|
||||
// 查到不止一条规则
|
||||
return $this->msg(10004,'查询地址不够详细,请重新选择省市地区');
|
||||
$last_tiame_data = Db::table($this->sportstesting_use_db_name['2'])->where(['aud_id'=>$data['aud_id'],'address'=>$data['parameter_data']])->order('id desc')->find();
|
||||
if($last_tiame_data){
|
||||
$result = json_decode($last_tiame_data['content'],true);
|
||||
}else{
|
||||
$result = false;
|
||||
}
|
||||
|
||||
$data = json_decode($data[0]['content'],true);
|
||||
$result = $this->handle_default_rule_list($data,$gender);
|
||||
// dump($result);
|
||||
// die;
|
||||
return $this->msg($result);
|
||||
}else{
|
||||
return $this->msg(10004,'暂无该地区的估分规则,请选择其它地区');
|
||||
}
|
||||
|
||||
if($result === false){
|
||||
$rule_data = Db::table($this->sportstesting_use_db_name['1'])->where($db_condition)->select();
|
||||
if(count($rule_data) > 0){
|
||||
if(count($rule_data) > 1){
|
||||
// 查到不止一条规则
|
||||
return $this->msg(10004,'查询地址不够详细,请重新选择省市地区');
|
||||
}
|
||||
$rule_data = json_decode($rule_data[0]['content'],true);
|
||||
$result = $this->handle_default_rule_list($rule_data,$gender);
|
||||
}else{
|
||||
return $this->msg(10004,'暂无该地区的估分规则,请选择其它地区');
|
||||
}
|
||||
}
|
||||
|
||||
return $this->msg($result);
|
||||
}
|
||||
################################################sportstesting_get_last_data
|
||||
public function sportstesting_get_last_data_action($data){
|
||||
|
|
@ -449,13 +765,17 @@ class Sportstesting extends Base{
|
|||
################################################sportstesting_get_one_details
|
||||
public function sportstesting_get_one_details_action($data){
|
||||
$user_data = Db::table($this->sportstesting_use_db_name['2'])->where(['id'=>$data['id']])->find();
|
||||
|
||||
if($user_data){
|
||||
|
||||
$temporary_data['list'] = json_decode($user_data['content'],true);
|
||||
// 压入表头
|
||||
foreach ($temporary_data['list'] as $key => $value) {
|
||||
foreach ($value['list'] as $v1k => $v1v) {
|
||||
for( $i=0; $i < count($v1v['list']); $i++ ){
|
||||
if(array_key_exists('choice_state',$v1v['list'][$i]) && $v1v['list'][$i]['choice_state'] == 0){
|
||||
// dump(1);
|
||||
unset($temporary_data['list'][$key]['list'][$v1k]['list'][$i]);
|
||||
}
|
||||
}
|
||||
array_unshift($temporary_data['list'][$key]['list'][$v1k]['list'],[
|
||||
'name'=>'项目名',
|
||||
'value'=>'成绩',
|
||||
|
|
@ -497,6 +817,8 @@ class Sportstesting extends Base{
|
|||
$find_data = Db::table($this->sportstesting_use_db_name['1'])->where($db_condition)->find();
|
||||
$find_data = json_decode($find_data['content'],true);
|
||||
$recognition_rule = $find_data[$gender];
|
||||
// dump($recognition_rule);
|
||||
// die;
|
||||
foreach ($data['result_data'] as $key => $value) {
|
||||
// 遍历一级($value['key'] = 现场考试)
|
||||
foreach ($value['list'] as $k2 => $v2) {
|
||||
|
|
@ -506,11 +828,41 @@ class Sportstesting extends Base{
|
|||
$temporary_result = $this->obtaining_grades($recognition_rule[$value['key']][$v2['key']]['list'][$v3['name']]['content'],$v3);
|
||||
$data['result_data'][$key]['list'][$k2]['list'][$k3] = $temporary_result;
|
||||
// $data['result_data'][$key]['list'][$k2]['list'][$k3]['name'] = $temporary_result['name']."(该项满分:".$temporary_result['total_score'].")";
|
||||
if(array_key_exists('choice_state',$v3) && $v3['choice_state'] == 0){
|
||||
continue;
|
||||
}
|
||||
$return_result['total_score'] = bcadd($return_result['total_score'],$temporary_result['proportion_value'],2);
|
||||
$return_result['max_score'] = bcadd($return_result['max_score'],bcmul($v3['total_score'],$v3['proportion'],2),2);
|
||||
// if(array_key_exists('choice_state',$v3)){
|
||||
// if($v3['choice_state'] == 1){
|
||||
// // dump($v3['name']);
|
||||
// $temporary_result = $this->obtaining_grades($recognition_rule[$value['key']][$v2['key']]['list'][$v3['name']]['content'],$v3);
|
||||
// $data['result_data'][$key]['list'][$k2]['list'][$k3] = $temporary_result;
|
||||
// // $data['result_data'][$key]['list'][$k2]['list'][$k3]['name'] = $temporary_result['name']."(该项满分:".$temporary_result['total_score'].")";
|
||||
// $return_result['total_score'] = bcadd($return_result['total_score'],$temporary_result['proportion_value'],2);
|
||||
// $return_result['max_score'] = bcadd($return_result['max_score'],bcmul($v3['total_score'],$v3['proportion'],2),2);
|
||||
// }else{
|
||||
// $temporary_result = $this->obtaining_grades($recognition_rule[$value['key']][$v2['key']]['list'][$v3['name']]['content'],$v3);
|
||||
// $data['result_data'][$key]['list'][$k2]['list'][$k3] = $temporary_result;
|
||||
// // $data['result_data'][$key]['list'][$k2]['list'][$k3]['name'] = $temporary_result['name']."(该项满分:".$temporary_result['total_score'].")";
|
||||
// $return_result['total_score'] = bcadd($return_result['total_score'],$temporary_result['proportion_value'],2);
|
||||
// $return_result['max_score'] = bcadd($return_result['max_score'],bcmul($v3['total_score'],$v3['proportion'],2),2);
|
||||
// }
|
||||
// }else{
|
||||
// // dump($v3['name']);
|
||||
// $temporary_result = $this->obtaining_grades($recognition_rule[$value['key']][$v2['key']]['list'][$v3['name']]['content'],$v3);
|
||||
// $data['result_data'][$key]['list'][$k2]['list'][$k3] = $temporary_result;
|
||||
// // $data['result_data'][$key]['list'][$k2]['list'][$k3]['name'] = $temporary_result['name']."(该项满分:".$temporary_result['total_score'].")";
|
||||
// $return_result['total_score'] = bcadd($return_result['total_score'],$temporary_result['proportion_value'],2);
|
||||
// $return_result['max_score'] = bcadd($return_result['max_score'],bcmul($v3['total_score'],$v3['proportion'],2),2);
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// dump($data['result_data']);
|
||||
// dump($return_result);
|
||||
// die;
|
||||
$return_result['list'] = $data['result_data'];
|
||||
$user_sportstesting_set = Db::table($this->sportstesting_use_db_name['2'])->insert([
|
||||
'aud_id'=>$data['aud_id'],
|
||||
|
|
@ -520,10 +872,17 @@ class Sportstesting extends Base{
|
|||
'create_time'=>date('Y-m-d H:i:s'),
|
||||
'address'=>$data['parameter_data'],
|
||||
]);
|
||||
|
||||
// $user_sportstesting_set = true;
|
||||
if($user_sportstesting_set){
|
||||
foreach ($return_result['list'] as $key => $value) {
|
||||
foreach ($value['list'] as $v1k => $v1v) {
|
||||
for( $i=0; $i < count($v1v['list']); $i++ ){
|
||||
|
||||
if(array_key_exists('choice_state',$v1v['list'][$i]) && $v1v['list'][$i]['choice_state'] == 0){
|
||||
|
||||
unset($return_result['list'][$key]['list'][$v1k]['list'][$i]);
|
||||
}
|
||||
}
|
||||
array_unshift($return_result['list'][$key]['list'][$v1k]['list'],[
|
||||
'name'=>'项目名',
|
||||
'value'=>'成绩',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
namespace app\testapp\controller;
|
||||
|
||||
|
||||
use think\Db;
|
||||
|
||||
class Wechatabout extends Base{
|
||||
|
||||
protected $msginformation_use_db_name = [
|
||||
'1'=>'admin_editor_text_content',
|
||||
'2'=>'admin_editor_text_like_up_log',
|
||||
];
|
||||
protected $page_num = 10;
|
||||
// 加 bcadd(,,20)
|
||||
// 减 bcsub(,,20)
|
||||
// 乘 bcmul(,,20)
|
||||
// 除 bcdiv(,,20)
|
||||
################################################################接口################################################################
|
||||
################################################################接口################################################################
|
||||
################################################################接口################################################################
|
||||
|
||||
// 获取板块,及板块下类型标签
|
||||
public function get_access_token_action(){
|
||||
try {
|
||||
$return_data = $this->get_sector_label_msg_action();
|
||||
return $return_data;
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
$logContent["flie"] = $e->getFile();
|
||||
$logContent["line"] = $e->getLine();
|
||||
$logContent['all_content'] = "异常信息:\n";
|
||||
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
|
||||
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
|
||||
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
|
||||
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
|
||||
$this->record_api_log([], $logContent, null);
|
||||
return $this->msg(99999);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>富文本编辑器</title>
|
||||
<link href="./style.css" rel="stylesheet">
|
||||
<style>
|
||||
#editor—wrapper {
|
||||
border: 1px solid #ccc;
|
||||
z-index: 100; /* 按需定义 */
|
||||
}
|
||||
#toolbar-container { border-bottom: 1px solid #ccc; }
|
||||
#editor-container { height: 500px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="editor—wrapper">
|
||||
<div id="toolbar-container"><!-- 工具栏 --></div>
|
||||
<div id="editor-container"><!-- 编辑器 --></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<script src="./index.js"></script>
|
||||
<script>
|
||||
const { createEditor, createToolbar } = window.wangEditor
|
||||
|
||||
const editorConfig = {
|
||||
placeholder: 'Type here...',
|
||||
onChange(editor) {
|
||||
const html = editor.getHtml()
|
||||
console.log('editor content', html)
|
||||
// 也可以同步到 <textarea>
|
||||
}
|
||||
}
|
||||
|
||||
const editor = createEditor({
|
||||
selector: '#editor-container',
|
||||
html: '<p><br></p>',
|
||||
config: editorConfig,
|
||||
mode: 'default', // or 'simple'
|
||||
})
|
||||
|
||||
const toolbarConfig = {}
|
||||
|
||||
const toolbar = createToolbar({
|
||||
editor,
|
||||
selector: '#toolbar-container',
|
||||
config: toolbarConfig,
|
||||
mode: 'default', // or 'simple'
|
||||
})
|
||||
</script>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue