This commit is contained in:
tsf 2024-12-07 18:56:07 +08:00
parent 9e961ac019
commit ce913de43b
28 changed files with 28192 additions and 90 deletions

View File

@ -187,7 +187,7 @@ class Base extends Controller{
} }
// 判断一个参数是否为数字且大于等于0 // 判断一个参数是否为数字且大于等于0
function isPositiveNumber($value) { public function isPositiveNumber($value) {
return is_numeric($value) && $value >= 0; 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##############################################################
####################################################测试用接口############################################################## ####################################################测试用接口##############################################################

View File

@ -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, '&apos;').replace(/"/g, '&quot;')
// $result['content'] = htmlspecialchars_decode($result['content']);
// $result['content'] = str_replace("'", "&apos;", $result['content']);
// $result['content'] = str_replace('"', '&quot;', $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################################################################
}

View File

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

View File

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

View File

@ -133,6 +133,29 @@
</li> </li>
</ul> </ul>
</li> </li>
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="Banner图&公告管理">&#xe723;</i>
<cite>Banner图&公告管理</cite>
<i class="iconfont nav_right">&#xe697;</i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('banner图管理','/notice/banner_index')">
<i class="iconfont">&#xe6a7;</i>
<cite>banner图管理</cite></a>
</li>
<li>
<a onclick="xadmin.add_tab('首页弹窗管理','/editortext/index')">
<i class="iconfont">&#xe6a7;</i>
<cite>首页弹窗管理</cite></a>
</li>
<li>
<a onclick="xadmin.add_tab('资讯推荐栏管理','/editortext/index')">
<i class="iconfont">&#xe6a7;</i>
<cite>公告管理</cite></a>
</li>
</ul>
</li>
<li> <li>
<a href="javascript:;"> <a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="城市联动">&#xe723;</i> <i class="iconfont left-nav-li" lay-tips="城市联动">&#xe723;</i>

View File

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

View File

@ -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">&#xe615;</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>

View File

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

View File

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

View File

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

View File

@ -10,6 +10,8 @@ class Msginformation extends Base{
protected $msginformation_use_db_name = [ protected $msginformation_use_db_name = [
'1'=>'admin_editor_text_content', '1'=>'admin_editor_text_content',
'2'=>'admin_editor_text_like_up_log', '2'=>'admin_editor_text_like_up_log',
'3'=>'admin_notice_banner',
'4'=>'admin_business_cooperation'
]; ];
protected $page_num = 10; protected $page_num = 10;
// 加 bcadd(,,20) // 加 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 ################################################################get_sector_label_msg
public function get_sector_label_msg_action(){ public function get_sector_label_msg_action(){

View File

@ -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]);
}
}
}

View File

@ -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();
}
}

View File

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

View File

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

View File

@ -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">&#xe615;</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="">&lt;&lt;</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="">&gt;&gt;</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>

View File

@ -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'); 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/upload_video_action', 'admin/editortext/upload_video_action');
Route::any('/editortext/stop_action', 'admin/editortext/stop_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 // 联系我们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('/get_recommend_information', 'app/Msginformation/get_recommend_information');
Route::any('/testedition/get_recommend_information', 'testapp/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('/skip_kcal_calculate', 'app/skip/skip_kcal_calculate');
// Route::any('/readexcel', 'admin/execlaa/readexcel'); // Route::any('/readexcel', 'admin/execlaa/readexcel');
// Route::any('/vitalcapacity_standard_interval', 'app/vitalcapacity/vitalcapacity_standard_interval'); // 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('/ceshiyong', 'app/base/ceshiyong');
Route::any('/testedition/ceshiyong', 'testapp/base/ceshiyong'); Route::any('/testedition/ceshiyong', 'testapp/base/ceshiyong');

View File

@ -56,8 +56,22 @@ class Calculatebody extends Base{
// $result['lbm'] = bcmul(bcsub('1',bcdiv($result['fat_r'],'100',20),20),$data['weight'],2); // $result['lbm'] = bcmul(bcsub('1',bcdiv($result['fat_r'],'100',20),20),$data['weight'],2);
// 青测自己写的计算end // 青测自己写的计算end
// dump($data);
// die;
// 使用接口调用之前的进行计算start // 使用接口调用之前的进行计算start
$url = 'https://klcz.pcxbc.com/open-api/calc/healthcalc/bodyfat3'; $url = 'https://klcz.pcxbc.com/open-api/calc/healthcalc/bodyfat3';
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 = [ $temporary_parameter = [
'weight'=>$data['weight'], 'weight'=>$data['weight'],
'height'=>$data['height'], 'height'=>$data['height'],
@ -65,10 +79,18 @@ class Calculatebody extends Base{
'adc'=>round($data['adc']),//四舍五入取整 'adc'=>round($data['adc']),//四舍五入取整
'gender'=>$data['gender'], 'gender'=>$data['gender'],
]; ];
}
// dump($temporary_parameter);
$request_result = $this->postRequest($url,$temporary_parameter); $request_result = $this->postRequest($url,$temporary_parameter);
if($request_result['code'] != 0){ if($request_result['code'] != 0){
return false; 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['weight'] = $request_result['data']['weight'];
$result['height'] = $request_result['data']['height']; $result['height'] = $request_result['data']['height'];
@ -92,6 +114,7 @@ class Calculatebody extends Base{
$result['body'] = $request_result['data']['body']; $result['body'] = $request_result['data']['body'];
// 使用接口调用之前的进行计算end // 使用接口调用之前的进行计算end
$return_data['standardlist'] = $request_result['data']['standardlist'];
$return_data['体重'] = $data['weight']; $return_data['体重'] = $data['weight'];
$return_data['身高'] = $data['height']; $return_data['身高'] = $data['height'];
$return_data['BMI'] = $result['bmi']; $return_data['BMI'] = $result['bmi'];

View File

@ -88,7 +88,7 @@ class Card extends Base{
// 详细卡片信息 // 详细卡片信息
// $data = ['id'=>'2'] // $data = ['id'=>'2']
public function card_data_detailed($data=['aud_id'=>'37']){ public function card_data_detailed($data=['aud_id'=>'38']){
try { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ 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 { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
@ -493,6 +493,7 @@ class Card extends Base{
acbd.weight_val, acbd.weight_val,
acbd.bmi, acbd.bmi,
acbd.body_age, acbd.body_age,
acbd.head_circumference,
aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date
from ".$this->card_use_db_name['1']." as acbd 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 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); return $this->msg($result_return);
}else{ }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]); $result_end = $this->processing_return_data_new($result[0]);
$cardparts = new Cardparts; $cardparts = new Cardparts;
$result_end['gender'] = $result[0]['gender']; $result_end['gender'] = $result[0]['gender'];
@ -569,7 +572,6 @@ class Card extends Base{
$result_end['score'] = $result_end['score']; $result_end['score'] = $result_end['score'];
$result_end['body_type'] = $result_end['body_type']; $result_end['body_type'] = $result_end['body_type'];
$result_end = $cardparts->conversion_interval($result_end); $result_end = $cardparts->conversion_interval($result_end);
$result_end['cplist'] = $this->grow_up_recommendation([ $result_end['cplist'] = $this->grow_up_recommendation([
'birthday'=>$result[0]['birthday'], 'birthday'=>$result[0]['birthday'],
'body'=>[ 'body'=>[
@ -621,8 +623,29 @@ class Card extends Base{
$result_end['top_list'][2]['offset'] = $temporary_arr_bmi_list['data']['offset']; $result_end['top_list'][2]['offset'] = $temporary_arr_bmi_list['data']['offset'];
} }
} }
// 加入曲线板块底部的减肥计划数据end // 加入曲线板块底部的减肥计划数据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); return $this->msg($result_end);
} }
} }
@ -783,7 +806,7 @@ class Card extends Base{
$user_data_list = Db::table($this->card_use_db_name['1']) $user_data_list = Db::table($this->card_use_db_name['1'])
->where('aud_id', $data['aud_id']) ->where('aud_id', $data['aud_id'])
->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']]) ->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") // ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")
->order('record_time desc') ->order('record_time desc')
->select(); ->select();
@ -805,6 +828,7 @@ class Card extends Base{
array_push($record_arr2,$user_data_list[$key]); array_push($record_arr2,$user_data_list[$key]);
} }
} }
foreach ($this->card_body_curve_arr as $key => $value) { foreach ($this->card_body_curve_arr as $key => $value) {
$temporary_arr = []; $temporary_arr = [];
$temporary_arr['title'] = $this->card_body_curve_arr2[$key]; $temporary_arr['title'] = $this->card_body_curve_arr2[$key];
@ -813,9 +837,16 @@ class Card extends Base{
$temporary_arr['line']['series'][0]['color'] = $this->card_body_curve_arr3[$key]; $temporary_arr['line']['series'][0]['color'] = $this->card_body_curve_arr3[$key];
$temporary_arr['line']['series'][0]['data'] = []; $temporary_arr['line']['series'][0]['data'] = [];
foreach ($record_arr2 as $k => $v) { foreach ($record_arr2 as $k => $v) {
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']['categories'],$record_arr2[$k]['b_time']);
array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]); 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); array_push($data_arr,$temporary_arr);
} }
} }
@ -842,11 +873,24 @@ class Card extends Base{
// } // }
// // 这里开始转换不同单位的身高体重为cm跟kgend // // 这里开始转换不同单位的身高体重为cm跟kgend
// $adc_type = $type; // $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(); $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){ if(!$user_data){
return $this->msg(10003); return $this->msg(10003);
} }
// dump($data['aud_id']);
// 如果最初体重设置为null
if($user_data['initial_date'] == 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']]); 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([ $target_current = $this->base_target_initial_cumulative_weight([
@ -863,10 +907,13 @@ class Card extends Base{
'initial_date'=>$user_data['initial_date'], 'initial_date'=>$user_data['initial_date'],
]); ]);
} }
// 设置身高、体重、年龄、性别、阶段称谓、头围、生日、阻抗
$result_data['height'] = $data['height']; $result_data['height'] = $data['height'];
$result_data['weight'] = $data['weight']; $result_data['weight'] = $data['weight'];
$result_data['age'] = $this->calculate_age($user_data['birthday']); $result_data['age'] = $this->calculate_age($user_data['birthday']);
$result_data['gender'] = $user_data['gender']; $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(array_key_exists('adc', $data)){
if($data['adc'] > 0){ if($data['adc'] > 0){
$result_data['adc'] = $data['adc']; $result_data['adc'] = $data['adc'];
@ -883,10 +930,40 @@ class Card extends Base{
if($get_body_value === false){ if($get_body_value === false){
return $this->msg(10005); 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['gender'] = $user_data['gender'];
$get_body_value['birthday'] = $user_data['birthday']; $get_body_value['birthday'] = $user_data['birthday'];
// 添加身高体重bmi的标尺标准 // 添加身高体重bmi、头围(如果有)的标尺标准
$get_body_value = $this->hwb_standard($get_body_value); $get_body_value = $this->hwb_standard($get_body_value);
$set_data = [ $set_data = [
'acd_id'=>$data['acd_id'], 'acd_id'=>$data['acd_id'],
'aud_id'=>$data['aud_id'], 'aud_id'=>$data['aud_id'],
@ -915,7 +992,8 @@ class Card extends Base{
'body_level'=>$get_body_value['肥胖等级'], 'body_level'=>$get_body_value['肥胖等级'],
'body_type'=>$get_body_value['身体类型'], 'body_type'=>$get_body_value['身体类型'],
'body_age'=>$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){ if(strlen($set_data['record_time']) <= 12){
// 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式 // 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式
@ -925,8 +1003,14 @@ class Card extends Base{
Db::startTrans(); Db::startTrans();
try{ try{
$set_user_data = Db::table($this->card_use_db_name['1'])->insert($set_data); $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(); Db::commit();
return $this->msg([ return $this->msg([
@ -943,7 +1027,6 @@ class Card extends Base{
Db::rollback(); Db::rollback();
return $this->msg(10002); return $this->msg(10002);
} }
} }
// 添加身高体重bmi的标准 // 添加身高体重bmi的标准
@ -996,6 +1079,7 @@ class Card extends Base{
} }
} }
} }
foreach ($linshi_data as $key => $value) { foreach ($linshi_data as $key => $value) {
foreach ($value as $k => $v) { foreach ($value as $k => $v) {
if($data[$key] >= $v['min_val'] && $data[$key] < $v['max_val']){ if($data[$key] >= $v['min_val'] && $data[$key] < $v['max_val']){

View File

@ -356,7 +356,7 @@ class Cardparts extends Base{
} }
// 计算落点百分比 // 计算落点百分比(区间字典,值,值描述)
public function calculate_landing_point($data,$val,$t_val){ public function calculate_landing_point($data,$val,$t_val){
$num = count($data); $num = count($data);
$a_section = bcdiv(100,$num,2); $a_section = bcdiv(100,$num,2);

View File

@ -54,6 +54,13 @@ class Index extends Base{
['id'=>'grade_u_12','name'=>'大学一、二年级'], ['id'=>'grade_u_12','name'=>'大学一、二年级'],
['id'=>'grade_u_34','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]) ->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') ->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(); ->select();
$temporary_data = []; $temporary_data = [];
if($data['type'] == 1){ if($data['type'] == 1){
for ($i=0; $i < count($result); $i++) { for ($i=0; $i < count($result); $i++) {
@ -270,6 +276,12 @@ class Index extends Base{
}else{ }else{
for ($i=0; $i < count($result); $i++) { for ($i=0; $i < count($result); $i++) {
$result[$i]['age'] = $this->calculate_age($result[$i]['birthday']); $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; $temporary_data = $result;
} }
@ -311,12 +323,16 @@ class Index extends Base{
return $this->msg(10005); 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){ if(!$result){
return $this->msg(10004); return $this->msg(10004);
} }
$result['age'] = $this->calculate_age($result['birthday']); $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']); $result['card_order'] = explode(',',$result['card_order']);
if($result['measure_model'] == 1){// 这里是体测 if($result['measure_model'] == 1){// 这里是体测
@ -356,6 +372,9 @@ class Index extends Base{
if($result['address'] == ''){ if($result['address'] == ''){
$result['address'] = $this->moren_gufen_diqu; $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]); $this->record_api_log($data, null, ['code'=>0,'msg'=>'success',$result]);
return $this->msg($result); return $this->msg($result);
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@ -10,6 +10,8 @@ class Msginformation extends Base{
protected $msginformation_use_db_name = [ protected $msginformation_use_db_name = [
'1'=>'admin_editor_text_content', '1'=>'admin_editor_text_content',
'2'=>'admin_editor_text_like_up_log', '2'=>'admin_editor_text_like_up_log',
'3'=>'admin_notice_banner',
'4'=>'admin_business_cooperation'
]; ];
protected $page_num = 10; protected $page_num = 10;
// 加 bcadd(,,20) // 加 bcadd(,,20)
@ -118,7 +120,7 @@ class Msginformation extends Base{
} }
} }
// 获取公告文章信息列表 // 获取公告文章信息列表&banner
public function get_recommend_information($data=['token'=>'6441bf7dabea7b3360a30240d3b19fc5']){ public function get_recommend_information($data=['token'=>'6441bf7dabea7b3360a30240d3b19fc5']){
try { try {
if(count(input('post.')) > 0){ 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 ################################################################get_sector_label_msg
public function get_sector_label_msg_action(){ public function get_sector_label_msg_action(){
@ -306,45 +362,62 @@ class Msginformation extends Base{
return $this->msg(10002); return $this->msg(10002);
} }
} }
} }
################################################################get_recommend_information ################################################################get_recommend_information
public function get_recommend_information_action($data){ public function get_recommend_information_action($data){
$pop_arr = []; $return_data = [
$list_arr = []; 'pop'=>[],
$recommend_data = Db::table($this->msginformation_use_db_name['1'])->where(['type'=>'6','is_del'=>0])->field('id,title,cover_image,pop_image')->select(); 'notice'=>[],
$recommend_data2 = []; 'banner'=>[]
foreach ($recommend_data as $key => $value) { ];
$recommend_data2[$value['id']] = $value; // 所有可用记录
$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) { foreach ($all_data as $key => $value) {
if(array_key_exists($value['aetc_id'],$recommend_data2)){ if($value['type'] == '1'){
unset($recommend_data2[$value['aetc_id']]); if(in_array($value['parameter_data'], $user_read_data)){
} if($value['scene_data'] != 3){
} unset($all_data[$key]);
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']]);
}else{ }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';
} }
}
// 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{ }else{
return $this->msg([ $all_data[$key]['jump_url'] = $all_data[$key]['jump_url']."&token=".$data['token'];
'pop_list'=>[], $all_data[$key]['type'] = 'h5';
'roll_list'=>[]
]);
} }
}else{
$all_data[$key]['type'] = 'wechat';
}
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滚动公告3banner
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);
} }

View File

@ -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 { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
@ -454,6 +454,7 @@ class Pagingcontrast extends Base{
// 设置排除在外的数据类型end // 设置排除在外的数据类型end
$result = Db::table($this->db_name[$data['type']])->where(['id'=>$data['id']])->find(); $result = Db::table($this->db_name[$data['type']])->where(['id'=>$data['id']])->find();
$for_data_arr = $this->request_result[$data['type']]; $for_data_arr = $this->request_result[$data['type']];
if($result){ if($result){
// if($data['type'] == 2 && $result['record_type'] != 'by_device_adc'){ // if($data['type'] == 2 && $result['record_type'] != 'by_device_adc'){
// $for_data_arr = ['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI','']]; // $for_data_arr = ['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI','']];
@ -483,6 +484,14 @@ class Pagingcontrast extends Base{
$temporary_arr['unit'] = $value[1]; $temporary_arr['unit'] = $value[1];
array_push($result_data,$temporary_arr); 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); return $this->msg($result_data);
}else{ }else{
return $this->msg(10004); return $this->msg(10004);

View File

@ -11,7 +11,7 @@ class Sportstesting extends Base{
protected $color = ['#FF5656','#FF5656','#5AD06D','#6492F6','#3967D6']; protected $color = ['#FF5656','#FF5656','#5AD06D','#6492F6','#3967D6'];
protected $sportstesting_use_db_name = [ protected $sportstesting_use_db_name = [
'1'=>'test_admin_estimate', '1'=>'admin_estimate',
'2'=>'test_app_sportstesting_data', '2'=>'test_app_sportstesting_data',
'3'=>'test_app_user_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) // 加 bcadd(,,20)
// 减 bcsub(,,20) // 减 bcsub(,,20)
// 乘 bcmul(,,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 { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
} }
if(!array_key_exists('gender', $data) || !array_key_exists('parameter_data', $data)){ 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_data = $this->msg(10001); return $this->msg(10001);
} }
if(!$this->verify_data_is_ok($data['parameter_data'],'str')){ if(!$this->verify_data_is_ok($data['parameter_data'],'str')){
return $this->msg(10005); return $this->msg(10005);
@ -97,6 +395,13 @@ class Sportstesting extends Base{
if(!$this->verify_data_is_ok($data['gender'],'intnum')){ if(!$this->verify_data_is_ok($data['gender'],'intnum')){
return $this->msg(10005); 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); $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 { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $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)){ 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); $return_data = $this->msg(10001);
} }
@ -171,6 +479,8 @@ class Sportstesting extends Base{
if(!$this->verify_data_is_ok($data['gender'],'intnum')){ if(!$this->verify_data_is_ok($data['gender'],'intnum')){
return $this->msg(10005); return $this->msg(10005);
} }
// dump($data['result_data']);
if(is_array($data['result_data']) && !empty($data['result_data'])){ if(is_array($data['result_data']) && !empty($data['result_data'])){
// 是个数组且不为空数组 // 是个数组且不为空数组
foreach ($data['result_data'] as $key => $value) { foreach ($data['result_data'] as $key => $value) {
@ -191,6 +501,7 @@ class Sportstesting extends Base{
}else{ }else{
return $this->msg(10006); return $this->msg(10006);
} }
// die;
unset($data['token']); unset($data['token']);
$return_data = $this->sportstesting_set_once_data_action2($data); $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 { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
@ -364,27 +675,32 @@ class Sportstesting extends Base{
// 全省地市一个规则start // 全省地市一个规则start
$db_condition = "province = '".$parameter_data[0]."'"; $db_condition = "province = '".$parameter_data[0]."'";
// 全省地市一个规则end // 全省地市一个规则end
$result = false;
if($data['choice_last_time'] == 1){
$result['list'] = []; $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();
$result['total_score'] = 0; if($last_tiame_data){
$data = Db::table($this->sportstesting_use_db_name['1'])->where($db_condition)->select(); $result = json_decode($last_tiame_data['content'],true);
// dump($data); }else{
// die; $result = false;
if(count($data) > 0){ }
if(count($data) > 1){ }
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,'查询地址不够详细,请重新选择省市地区'); return $this->msg(10004,'查询地址不够详细,请重新选择省市地区');
} }
$rule_data = json_decode($rule_data[0]['content'],true);
$data = json_decode($data[0]['content'],true); $result = $this->handle_default_rule_list($rule_data,$gender);
$result = $this->handle_default_rule_list($data,$gender);
// dump($result);
// die;
return $this->msg($result);
}else{ }else{
return $this->msg(10004,'暂无该地区的估分规则,请选择其它地区'); return $this->msg(10004,'暂无该地区的估分规则,请选择其它地区');
} }
}
return $this->msg($result);
} }
################################################sportstesting_get_last_data ################################################sportstesting_get_last_data
public function sportstesting_get_last_data_action($data){ public function sportstesting_get_last_data_action($data){
@ -449,13 +765,17 @@ class Sportstesting extends Base{
################################################sportstesting_get_one_details ################################################sportstesting_get_one_details
public function sportstesting_get_one_details_action($data){ public function sportstesting_get_one_details_action($data){
$user_data = Db::table($this->sportstesting_use_db_name['2'])->where(['id'=>$data['id']])->find(); $user_data = Db::table($this->sportstesting_use_db_name['2'])->where(['id'=>$data['id']])->find();
if($user_data){ if($user_data){
$temporary_data['list'] = json_decode($user_data['content'],true); $temporary_data['list'] = json_decode($user_data['content'],true);
// 压入表头 // 压入表头
foreach ($temporary_data['list'] as $key => $value) { foreach ($temporary_data['list'] as $key => $value) {
foreach ($value['list'] as $v1k => $v1v) { 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'],[ array_unshift($temporary_data['list'][$key]['list'][$v1k]['list'],[
'name'=>'项目名', 'name'=>'项目名',
'value'=>'成绩', '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 = Db::table($this->sportstesting_use_db_name['1'])->where($db_condition)->find();
$find_data = json_decode($find_data['content'],true); $find_data = json_decode($find_data['content'],true);
$recognition_rule = $find_data[$gender]; $recognition_rule = $find_data[$gender];
// dump($recognition_rule);
// die;
foreach ($data['result_data'] as $key => $value) { foreach ($data['result_data'] as $key => $value) {
// 遍历一级($value['key'] = 现场考试) // 遍历一级($value['key'] = 现场考试)
foreach ($value['list'] as $k2 => $v2) { 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); $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] = $temporary_result;
// $data['result_data'][$key]['list'][$k2]['list'][$k3]['name'] = $temporary_result['name']."(该项满分:".$temporary_result['total_score'].")"; // $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['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); $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']; $return_result['list'] = $data['result_data'];
$user_sportstesting_set = Db::table($this->sportstesting_use_db_name['2'])->insert([ $user_sportstesting_set = Db::table($this->sportstesting_use_db_name['2'])->insert([
'aud_id'=>$data['aud_id'], 'aud_id'=>$data['aud_id'],
@ -520,10 +872,17 @@ class Sportstesting extends Base{
'create_time'=>date('Y-m-d H:i:s'), 'create_time'=>date('Y-m-d H:i:s'),
'address'=>$data['parameter_data'], 'address'=>$data['parameter_data'],
]); ]);
// $user_sportstesting_set = true;
if($user_sportstesting_set){ if($user_sportstesting_set){
foreach ($return_result['list'] as $key => $value) { foreach ($return_result['list'] as $key => $value) {
foreach ($value['list'] as $v1k => $v1v) { 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'],[ array_unshift($return_result['list'][$key]['list'][$v1k]['list'],[
'name'=>'项目名', 'name'=>'项目名',
'value'=>'成绩', 'value'=>'成绩',

View File

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

View File

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