├── ImageEnhance.py ├── README.md ├── app.py ├── createImage.py ├── data.py ├── model.h5 ├── model.png ├── models.py ├── settings.py ├── spider.py ├── static ├── assembly │ ├── jqarticle │ │ └── jparticle.min.js │ └── zylVerificationCode │ │ └── zylVerificationCode.js ├── css │ ├── bootstrap.css │ ├── font.css │ ├── main.css │ ├── reset.css │ ├── style.css │ ├── swiper-bundle.min.css │ └── xadmin.css ├── images │ ├── bg.gif │ ├── p1.jpg │ ├── p2.jpg │ ├── p3.jpg │ ├── p4.jpg │ ├── p5.jpg │ ├── s1.jpg │ ├── s2.jpg │ ├── s3.jpg │ └── s4.jpg ├── js │ ├── jquery.min.js │ ├── main.js │ ├── nav.js │ ├── swiper-bundle.min.js │ ├── tool.js │ └── xadmin.js └── lib │ ├── layui │ ├── css │ │ ├── layui.css │ │ ├── layui.mobile.css │ │ ├── login.css │ │ └── modules │ │ │ ├── code.css │ │ │ ├── laydate │ │ │ └── default │ │ │ │ └── laydate.css │ │ │ └── layer │ │ │ └── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1 2.gif │ │ │ ├── loading-1.gif │ │ │ ├── loading-2 2.gif │ │ │ └── loading-2.gif │ ├── font │ │ ├── iconfont.eot │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ └── iconfont.woff │ ├── images │ │ └── face │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 57.gif │ │ │ ├── 58.gif │ │ │ ├── 59.gif │ │ │ ├── 6.gif │ │ │ ├── 60.gif │ │ │ ├── 61.gif │ │ │ ├── 62.gif │ │ │ ├── 63.gif │ │ │ ├── 64.gif │ │ │ ├── 65.gif │ │ │ ├── 66.gif │ │ │ ├── 67.gif │ │ │ ├── 68.gif │ │ │ ├── 69.gif │ │ │ ├── 7.gif │ │ │ ├── 70.gif │ │ │ ├── 71.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ ├── lay │ │ └── modules │ │ │ ├── carousel.js │ │ │ ├── code.js │ │ │ ├── element.js │ │ │ ├── flow.js │ │ │ ├── form.js │ │ │ ├── jquery.js │ │ │ ├── laydate.js │ │ │ ├── layedit.js │ │ │ ├── layer.js │ │ │ ├── laypage.js │ │ │ ├── laytpl.js │ │ │ ├── mobile.js │ │ │ ├── table.js │ │ │ ├── tree.js │ │ │ ├── upload.js │ │ │ └── util.js │ ├── layui.all.js │ └── layui.js │ └── layuiadmin │ ├── config.js │ ├── json │ ├── console │ │ ├── prograss.js │ │ ├── top-card.js │ │ └── top-search.js │ ├── content │ │ ├── comment.js │ │ ├── list.js │ │ └── tags.js │ ├── forum │ │ ├── list.js │ │ └── replys.js │ ├── layer │ │ └── photos.js │ ├── layim │ │ ├── getList.js │ │ └── getMembers.js │ ├── mall │ │ └── order.js │ ├── menu.js │ ├── message │ │ ├── all.js │ │ ├── detail.js │ │ ├── direct.js │ │ ├── new.js │ │ └── notice.js │ ├── table │ │ ├── demo.js │ │ ├── demo2.js │ │ ├── demo3.js │ │ ├── user.js │ │ └── user30.js │ ├── upload │ │ └── demo.js │ ├── user │ │ ├── forget.js │ │ ├── login.js │ │ ├── logout.js │ │ ├── reg.js │ │ ├── resetpass.js │ │ ├── session.js │ │ └── sms.js │ ├── useradmin │ │ ├── mangadmin.js │ │ ├── role.js │ │ └── webuser.js │ ├── workorder │ │ └── demo.js │ └── 说明.txt │ ├── lib │ ├── admin.js │ ├── extend │ │ ├── echarts.js │ │ └── echartsTheme.js │ ├── index.js │ ├── layui │ │ ├── css │ │ │ ├── layui.css │ │ │ ├── layui.mobile 2.css │ │ │ ├── layui.mobile.css │ │ │ ├── layui_old.css │ │ │ └── modules │ │ │ │ ├── code 2.css │ │ │ │ ├── code.css │ │ │ │ ├── laydate │ │ │ │ └── default │ │ │ │ │ ├── laydate 2.css │ │ │ │ │ └── laydate.css │ │ │ │ └── layer │ │ │ │ └── default │ │ │ │ ├── icon 2.png │ │ │ │ ├── icon-ext 2.png │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer 2.css │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0 2.gif │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1 2.gif │ │ │ │ ├── loading-1.gif │ │ │ │ ├── loading-2 2.gif │ │ │ │ └── loading-2.gif │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ ├── lay │ │ │ └── modules │ │ │ │ ├── carousel 2.js │ │ │ │ ├── carousel.js │ │ │ │ ├── code 2.js │ │ │ │ ├── code.js │ │ │ │ ├── element 2.js │ │ │ │ ├── element.js │ │ │ │ ├── flow 2.js │ │ │ │ ├── flow.js │ │ │ │ ├── form 2.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery 2.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate 2.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit 2.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer 2.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage 2.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl 2.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile 2.js │ │ │ │ ├── mobile.js │ │ │ │ ├── table 2.js │ │ │ │ ├── table.js │ │ │ │ ├── tree 2.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload 2.js │ │ │ │ ├── upload.js │ │ │ │ ├── util 2.js │ │ │ │ └── util.js │ │ ├── layui.all.js │ │ └── layui.js │ └── view.js │ ├── modules │ ├── common.js │ ├── console.js │ ├── contlist.js │ ├── forum.js │ ├── im.js │ ├── message.js │ ├── sample.js │ ├── senior.js │ ├── set.js │ ├── user.js │ ├── useradmin.js │ └── workorder.js │ ├── style │ ├── admin.css │ ├── login.css │ ├── res │ │ ├── bg-none.jpg │ │ ├── layui-logo.jpg │ │ ├── logo-black.png │ │ ├── logo.png │ │ └── template │ │ │ ├── character.jpg │ │ │ ├── huge 2.jpg │ │ │ ├── huge.jpg │ │ │ └── portrait.png │ └── template.css │ └── tpl │ ├── layim │ └── demo.html │ ├── system │ ├── about.html │ ├── get.html │ ├── more.html │ ├── theme.html │ └── 说明.txt │ └── 说明.txt ├── templates ├── dict.html ├── favicon.ico ├── index.html └── vue.js └── train.py /ImageEnhance.py: -------------------------------------------------------------------------------- 1 | from createImage import createImage 2 | 3 | imageDir = "photos/01" #要改变的图片的路径文件夹 4 | saveDir = "photos/01" #数据增强生成图片的路径文件夹 5 | createImage(imageDir,saveDir) 6 | 7 | imageDir = "photos/02" #要改变的图片的路径文件夹 8 | saveDir = "photos/02" #数据增强生成图片的路径文件夹 9 | createImage(imageDir,saveDir) 10 | 11 | imageDir = "photos/03" #要改变的图片的路径文件夹 12 | saveDir = "photos/03" #数据增强生成图片的路径文件夹 13 | createImage(imageDir,saveDir) 14 | 15 | imageDir = "photos/04" #要改变的图片的路径文件夹 16 | saveDir = "photos/04" #数据增强生成图片的路径文件夹 17 | createImage(imageDir,saveDir) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 水果分类 fruit-classifer 2 | 3 | 基于深度学习的水果分类 4 | 5 | 本项目使用迁移学习技术,对在ImageNet数据集上带有预训练权重VGG16、ResNet50、MobileNetV2、DenseNet121模型进行微调,然后将其用在水果数据集上。最终训练后的模型能够准确对输入图片进行分类,并且最高准确率达到93.08%。 6 | 7 | #### 一、数据集制作 8 | 9 | ##### 1.1爬虫获取数据 10 | 11 | ```python 12 | FRUIT_CLASS = { 13 | '苹果': '01', 14 | '香蕉': '02', 15 | '桃子': '03', 16 | '葡萄': '04' 17 | } 18 | #spider.py实现本功能 19 | ``` 20 | 21 | ##### 1.2手动删除不相关图片 22 | 23 | ##### 1.3数据增强扩充数据集 24 | 25 | ```python 26 | def Brightness(root_path, img_name): #亮度增强 27 | def Contrast(root_path, img_name): #对比度增强 28 | def crop(root_path, img_name): #随机裁剪 29 | def flip(root_path, img_name): #左右翻转 30 | def rotation(root_path, img_name): #随机旋转 31 | #createImage.py ImageEnhance.py实现本功能 32 | ``` 33 | 34 | #### 二、模型训练 35 | 36 | ##### 2.1迁移学习 37 | 38 | ```python 39 | # 模型加载,指定图片处理的大小和是否进行迁移学习 40 | def my_densenet(): 41 | IMG_SHAPE = (224, 224, 3) 42 | # 选择base model 43 | base_model = tf.keras.applications.MobileNetV2(include_top=False, weights='imagenet', input_shape=IMG_SHAPE) 44 | 45 | base_model.trainable = False 46 | model = tf.keras.models.Sequential([ 47 | # 输入层,shape为(None,224,224,3) 48 | tf.keras.layers.Input((224, 224, 3)), 49 | # 输入到base_model中 50 | base_model, 51 | # 将base_model的输出展平,以作为全连接层的输入 52 | tf.keras.layers.Flatten(), 53 | # BN层 54 | tf.keras.layers.BatchNormalization(), 55 | # 输出层,为了保证输出结果的稳定,这里就不添加Dropout层了 56 | tf.keras.layers.Dense(settings.CLASS_NUM, activation=tf.nn.softmax) 57 | ]) 58 | return model 59 | #models.py实现本功能 60 | ``` 61 | 62 | ##### 2.2模型训练 63 | 64 | ```python 65 | # settings.py 参数设置 66 | # data.py 数据预处理 67 | # train.py 训练模型 68 | ``` 69 | 70 | #### 三、系统实现 71 | 72 | 设计并实现前后端分离系统,前端Vue,后端Flask 73 | 74 | 后端模型对输入图片识别并返回用户 75 | 76 | 运行app.py在本地计算机使用系统,地址为http://192.168.1.29:5000/ 77 | 78 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from flask import Flask 3 | from flask import jsonify 4 | from flask import request, render_template 5 | 6 | import settings 7 | from models import my_densenet 8 | 9 | app = Flask(__name__) 10 | 11 | # 导入模型 12 | model = my_densenet() 13 | # 加载训练好的参数 14 | model.load_weights(settings.MODEL_PATH) 15 | 16 | 17 | @app.route('/', methods=['GET']) 18 | def index(): 19 | """ 20 | 首页,vue入口 21 | """ 22 | return render_template('index.html') 23 | 24 | 25 | @app.route('/index.html', methods=['GET']) 26 | def index2(): 27 | """ 28 | 首页,vue入口 29 | """ 30 | return render_template('index.html') 31 | 32 | 33 | @app.route('/dict.html', methods=['GET']) 34 | def get_dict(): 35 | """ 36 | 百科 37 | """ 38 | return render_template('dict.html') 39 | 40 | 41 | @app.route('/api/v1/pets_classify/', methods=['POST']) 42 | def pets_classify(): 43 | """ 44 | 宠物图片分类接口,上传一张图片,返回此图片上的宠物是那种类别,概率多少 45 | """ 46 | # 获取用户上传的图片 47 | img_str = request.files.get('file').read() 48 | # 进行数据预处理 49 | x = tf.image.decode_image(img_str, channels=3) 50 | x = tf.image.resize(x, (224, 224)) 51 | x = x / 255. 52 | x = (x - tf.constant(settings.IMAGE_MEAN)) / tf.constant(settings.IMAGE_STD) 53 | x = tf.reshape(x, (1, 224, 224, 3)) 54 | # 预测 55 | y_pred = model(x) 56 | pet_cls_code = tf.argmax(y_pred, axis=1).numpy()[0] 57 | pet_cls_prob = float(y_pred.numpy()[0][pet_cls_code]) 58 | pet_cls_prob = '{}%'.format(int(pet_cls_prob * 100)) 59 | pet_class = settings.CODE_CLASS_MAP.get(pet_cls_code) 60 | # 将预测结果组织成json 61 | res = { 62 | 'code': 0, 63 | 'data': { 64 | 'pet_cls': pet_class, 65 | 'probability': pet_cls_prob, 66 | 'msg': '
{}

概率{}' 69 | .format(pet_class, pet_cls_prob), 70 | } 71 | } 72 | # 返回json数据 73 | return jsonify(res) 74 | 75 | 76 | if __name__ == '__main__': 77 | app.run(use_reloader=False, host='0.0.0.0', port=settings.WEB_PORT, debug=Flask) 78 | 79 | -------------------------------------------------------------------------------- /createImage.py: -------------------------------------------------------------------------------- 1 | from PIL import ImageEnhance 2 | import os 3 | import numpy as np 4 | from PIL import Image 5 | 6 | 7 | def Brightness(root_path, img_name): #亮度增强 8 | image = Image.open(os.path.join(root_path, img_name)) 9 | enh_bri = ImageEnhance.Brightness(image) 10 | brightness = 1.5 11 | image_brightened = enh_bri.enhance(brightness) 12 | return image_brightened 13 | 14 | 15 | def Contrast(root_path, img_name): #对比度增强 16 | image = Image.open(os.path.join(root_path, img_name)) 17 | enh_con = ImageEnhance.Contrast(image) 18 | contrast = 1.5 19 | image_contrasted = enh_con.enhance(contrast) 20 | return image_contrasted 21 | 22 | 23 | def crop(root_path, img_name): #随机裁剪 24 | img = Image.open(os.path.join(root_path, img_name)) 25 | crop_img = img.crop((100, 100, 250, 250)) 26 | return crop_img 27 | 28 | 29 | def flip(root_path, img_name): #左右翻转 30 | img = Image.open(os.path.join(root_path, img_name)) 31 | filp_img = img.transpose(Image.FLIP_LEFT_RIGHT) 32 | return filp_img 33 | 34 | 35 | def rotation(root_path, img_name): #随机旋转 36 | img = Image.open(os.path.join(root_path, img_name)) 37 | random_angle = np.random.randint(-2, 2) * 90 38 | if random_angle == 0: 39 | rotation_img = img.rotate(-90) 40 | else: 41 | rotation_img = img.rotate(random_angle) 42 | return rotation_img 43 | 44 | 45 | 46 | def createImage(imageDir, saveDir): 47 | for name in sorted(os.listdir(imageDir)): 48 | print(name) 49 | saveName1 = "bright" + name + ".jpg" 50 | saveImage1 = Brightness(imageDir, name) 51 | saveImage1.save(os.path.join(saveDir, saveName1)) 52 | 53 | saveName2 = "contrast" + name + ".jpg" 54 | saveImage2 = Contrast(imageDir, name) 55 | saveImage2.save(os.path.join(saveDir, saveName2)) 56 | 57 | saveName3 = "crop" + name + ".jpg" 58 | saveImage3 = crop(imageDir, name) 59 | saveImage3.save(os.path.join(saveDir, saveName3)) 60 | 61 | saveName4 = "flip" + name + ".jpg" 62 | saveImage4 = flip(imageDir, name) 63 | saveImage4.save(os.path.join(saveDir, saveName4)) 64 | 65 | saveName5 = "rotate" + name + ".jpg" 66 | saveImage5 = rotation(imageDir, name) 67 | saveImage5.save(os.path.join(saveDir, saveName5)) 68 | -------------------------------------------------------------------------------- /data.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | import tensorflow as tf 4 | import settings 5 | 6 | # 每个类别选取的图片数量 7 | samples_per_class = settings.SAMPLES_PER_CLASS 8 | # 图片根目录 9 | images_root = settings.IMAGES_ROOT 10 | # 类别->编码的映射 11 | class_code_map = settings.CLASS_CODE_MAP 12 | 13 | # 我们准备使用经典网络在imagenet数据集上的与训练权重,所以归一化时也要使用imagenet的平均值和标准差 14 | image_mean = tf.constant(settings.IMAGE_MEAN) 15 | image_std = tf.constant(settings.IMAGE_STD) 16 | 17 | 18 | def normalization(x): 19 | """ 20 | 对输入图片x进行归一化,返回归一化的值 21 | """ 22 | return (x - image_mean) / image_std 23 | 24 | 25 | def train_preprocess(x, y): 26 | """ 27 | 对训练数据进行预处理。 28 | 注意,这里的参数x是图片的路径,不是图片本身;y是图片的标签值 29 | """ 30 | # 读取图片 31 | x = tf.io.read_file(x) 32 | # 解码成张量 33 | x = tf.image.decode_jpeg(x, channels=3) 34 | # 将图片缩放到[244,244],比输入[224,224]稍大一些,方便后面数据增强 35 | x = tf.image.resize(x, [244, 244]) 36 | # 随机决定是否左右镜像 37 | if random.choice([0, 1]): 38 | x = tf.image.random_flip_left_right(x) 39 | # 随机从x中剪裁出(224,224,3)大小的图片 40 | x = tf.image.random_crop(x, [224, 224, 3]) 41 | # 读完上面的代码可以发现,这里的数据增强并不增加图片数量,一张图片经过变换后, 42 | # 仍然只是一张图片,跟我们前面说的增加图片数量的逻辑不太一样。 43 | # 这么做主要是应对我们的数据集里可能会存在相同图片的情况。 44 | 45 | # 将图片的像素值缩放到[0,1]之间 46 | x = tf.cast(x, dtype=tf.float32) / 255. 47 | # 归一化 48 | x = normalization(x) 49 | 50 | # 将标签转成one-hot形式 51 | y = tf.cast(y, dtype=tf.int32) 52 | y = tf.one_hot(y, settings.CLASS_NUM) 53 | 54 | return x, y 55 | 56 | 57 | def dev_preprocess(x, y): 58 | """ 59 | 对验证集和测试集进行数据预处理的方法。 60 | 和train_preprocess的主要区别在于,不进行数据增强,以保证验证结果的稳定性。 61 | """ 62 | # 读取并缩放图片 63 | x = tf.io.read_file(x) 64 | x = tf.image.decode_jpeg(x, channels=3) 65 | x = tf.image.resize(x, [224, 224]) 66 | # 归一化 67 | x = tf.cast(x, dtype=tf.float32) / 255. 68 | x = normalization(x) 69 | # 将标签转成one-hot形式 70 | y = tf.cast(y, dtype=tf.int32) 71 | y = tf.one_hot(y, settings.CLASS_NUM) 72 | 73 | return x, y 74 | 75 | 76 | # (图片路径,标签)的列表 77 | image_path_and_labels = [] 78 | # 排序,保证每次拿到的顺序都一样 79 | sub_images_dir_list = sorted(list(os.listdir(images_root))) 80 | # 遍历每一个子目录 81 | for sub_images_dir in sub_images_dir_list: 82 | sub_path = os.path.join(images_root, sub_images_dir) 83 | # 如果给定路径是文件夹,并且这个类别参与训练 84 | if os.path.isdir(sub_path) and sub_images_dir in settings.CLASSES: 85 | # 获取当前类别的编码 86 | current_label = class_code_map.get(sub_images_dir) 87 | # 获取子目录下的全部图片名称 88 | images = sorted(list(os.listdir(sub_path))) 89 | # 随机打乱(排序和置随机数种子都是为了保证每次的结果都一样) 90 | random.seed(settings.RANDOM_SEED) 91 | random.shuffle(images) 92 | # 保留前settings.SAMPLES_PER_CLASS个 93 | images = images[:samples_per_class] 94 | # 构建(x,y)对 95 | for image_name in images: 96 | abs_image_path = os.path.join(sub_path, image_name) 97 | image_path_and_labels.append((abs_image_path, current_label)) 98 | # 计算各数据集样例数 99 | total_samples = len(image_path_and_labels) # 总样例数 100 | train_samples = int(total_samples * settings.TRAIN_DATASET) # 训练集样例数 101 | dev_samples = int(total_samples * settings.DEV_DATASET) # 开发集样例数 102 | test_samples = total_samples - train_samples - dev_samples # 测试集样例数 103 | # 打乱数据集 104 | random.seed(settings.RANDOM_SEED) 105 | random.shuffle(image_path_and_labels) 106 | # 将图片数据和标签数据分开,此时它们仍是一一对应的 107 | x_data = tf.constant([img for img, label in image_path_and_labels]) 108 | y_data = tf.constant([label for img, label in image_path_and_labels]) 109 | # 开始划分数据集 110 | # 训练集 111 | train_db = tf.data.Dataset.from_tensor_slices((x_data[:train_samples], y_data[:train_samples])) 112 | # 打乱顺序,数据预处理,设置批大小 113 | train_db = train_db.shuffle(10000).map(train_preprocess).batch(settings.BATCH_SIZE) 114 | # 开发集(验证集) 115 | dev_db = tf.data.Dataset.from_tensor_slices( 116 | (x_data[train_samples:train_samples + dev_samples], y_data[train_samples:train_samples + dev_samples])) 117 | # 数据预处理,设置批大小 118 | dev_db = dev_db.map(dev_preprocess).batch(settings.BATCH_SIZE) 119 | # 测试集 120 | test_db = tf.data.Dataset.from_tensor_slices( 121 | (x_data[train_samples + dev_samples:], y_data[train_samples + dev_samples:])) 122 | # 数据预处理,设置批大小 123 | test_db = test_db.map(dev_preprocess).batch(settings.BATCH_SIZE) 124 | 125 | print('总样例数:',total_samples) 126 | print('训练集样例数:',train_samples) 127 | print('开发集样例数:',dev_samples) 128 | print('测试集样例数:',test_samples) 129 | -------------------------------------------------------------------------------- /model.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/model.h5 -------------------------------------------------------------------------------- /model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/model.png -------------------------------------------------------------------------------- /models.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import matplotlib.pyplot as plt 3 | from tensorflow.python.keras.utils.vis_utils import plot_model 4 | import settings 5 | 6 | # 模型加载,指定图片处理的大小和是否进行迁移学习 7 | def my_densenet(): 8 | IMG_SHAPE = (224, 224, 3) 9 | # 选择base model 10 | # base_model = tf.keras.applications.VGG16(include_top=False, weights='imagenet', input_shape=IMG_SHAPE) 11 | # base_model = tf.keras.applications.ResNet50(include_top=False, weights='imagenet', input_shape=IMG_SHAPE) 12 | # base_model = tf.keras.applications.DenseNet121(include_top=False, weights='imagenet', pooling='max') 13 | base_model = tf.keras.applications.MobileNetV2(include_top=False, weights='imagenet', input_shape=IMG_SHAPE) 14 | 15 | base_model.trainable = False 16 | model = tf.keras.models.Sequential([ 17 | # 输入层,shape为(None,224,224,3) 18 | tf.keras.layers.Input((224, 224, 3)), 19 | # 输入到base_model中 20 | base_model, 21 | # 将base_model的输出展平,以作为全连接层的输入 22 | tf.keras.layers.Flatten(), 23 | # BN层 24 | tf.keras.layers.BatchNormalization(), 25 | # 输出层,为了保证输出结果的稳定,这里就不添加Dropout层了 26 | tf.keras.layers.Dense(settings.CLASS_NUM, activation=tf.nn.softmax) 27 | ]) 28 | # 输出模型结构 29 | plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=False) 30 | return model 31 | 32 | 33 | 34 | # 展示训练过程的曲线 35 | def show_loss_acc(history): 36 | acc = history.history['accuracy'] 37 | val_acc = history.history['val_accuracy'] 38 | 39 | loss = history.history['loss'] 40 | val_loss = history.history['val_loss'] 41 | 42 | plt.figure(figsize=(8, 8)) 43 | plt.subplot(2, 1, 1) 44 | plt.plot(acc, label='Training Accuracy') 45 | plt.plot(val_acc, label='Validation Accuracy') 46 | plt.legend(loc='lower right') 47 | plt.ylabel('Accuracy') 48 | plt.ylim([min(plt.ylim()), 1]) 49 | plt.title('Training and Validation Accuracy') 50 | 51 | plt.subplot(2, 1, 2) 52 | plt.plot(loss, label='Training Loss') 53 | plt.plot(val_loss, label='Validation Loss') 54 | plt.legend(loc='upper right') 55 | plt.ylabel('Cross Entropy') 56 | plt.ylim([0, 1.0]) 57 | plt.title('Training and Validation Loss') 58 | plt.xlabel('epoch') 59 | plt.show() 60 | 61 | 62 | if __name__ == '__main__': 63 | model = my_densenet() 64 | model.summary() 65 | -------------------------------------------------------------------------------- /settings.py: -------------------------------------------------------------------------------- 1 | # 图片类别 2 | FRUIT_CLASS = { 3 | '苹果': '01', 4 | '香蕉': '02', 5 | '桃子': '03', 6 | '葡萄': '04' 7 | } 8 | 9 | # 图片保存根目录 10 | IMAGES_ROOT = 'photos' 11 | 12 | # 每个类别选取的图片数量 13 | SAMPLES_PER_CLASS = 400 14 | 15 | # 参与训练的类别 16 | CLASSES = ['01', '02', '03', '04'] 17 | 18 | # 参与训练的类别数量 19 | CLASS_NUM = len(CLASSES) 20 | 21 | # 类别->编号的映射 22 | CLASS_CODE_MAP = { 23 | '01': 0, 24 | '02': 1, 25 | '03': 2, 26 | '04': 3 27 | } 28 | 29 | # 编号->类别的映射 30 | CODE_CLASS_MAP = { 31 | 0: '苹果', 32 | 1: '香蕉', 33 | 2: '桃子', 34 | 3: '葡萄' 35 | } 36 | 37 | # 随机数种子 38 | RANDOM_SEED = 13 # 四个类别时样本较为均衡的随机数种子 39 | # RANDOM_SEED = 19 # 三个类别时样本较为均衡的随机数种子 40 | 41 | # 训练集比例 42 | TRAIN_DATASET = 0.6 43 | # 开发集比例 44 | DEV_DATASET = 0.2 45 | # 测试集比例 46 | TEST_DATASET = 0.2 47 | 48 | # mini_batch大小 49 | BATCH_SIZE = 16 50 | 51 | # imagenet数据集均值 52 | IMAGE_MEAN = [0.485, 0.456, 0.406] 53 | # imagenet数据集标准差 54 | IMAGE_STD = [0.299, 0.224, 0.225] 55 | 56 | # 学习率 57 | LEARNING_RATE = 0.001 58 | # 训练epoch数 59 | TRAIN_EPOCHS = 3 60 | # 保存训练模型的路径 61 | MODEL_PATH = 'model.h5' 62 | 63 | # Web服务端口 64 | WEB_PORT = 5000 -------------------------------------------------------------------------------- /spider.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | import urllib 4 | import settings 5 | 6 | class Spider_baidu_image(): 7 | def __init__(self): 8 | self.url = 'http://image.baidu.com/search/acjson?' 9 | self.headers = { 10 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.\ 11 | 3497.81 Safari/537.36'} 12 | self.headers_image = { 13 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.\ 14 | 3497.81 Safari/537.36', 15 | 'Referer': 'http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1557124645631_R&pv=&ic=&nc=1&z=&hd=1&latest=0©right=0&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&sid=&word=%E8%83%A1%E6%AD%8C'} 16 | 17 | self.keyword = fruit_keyword 18 | print(self.keyword,fruit_keyword) 19 | # 下载图片页数 20 | self.paginator = 1 21 | 22 | def get_param(self): 23 | """ 24 | 获取url请求的参数,存入列表并返回 25 | :return: 26 | """ 27 | keyword = urllib.parse.quote(self.keyword) 28 | params = [] 29 | for i in range(1, self.paginator + 1): 30 | params.append( 31 | 'tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=1&latest=0©right=0&word={}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&cg=star&pn={}&rn=30&gsm=78&1557125391211='.format( 32 | keyword, keyword, 30 * i)) 33 | return params 34 | 35 | def get_urls(self, params): 36 | """ 37 | 由url参数返回各个url拼接后的响应,存入列表并返回 38 | :return: 39 | """ 40 | urls = [] 41 | for i in params: 42 | urls.append(self.url + i) 43 | return urls 44 | 45 | def get_image_url(self, urls): 46 | image_url = [] 47 | for url in urls: 48 | json_data = requests.get(url, headers=self.headers).json() 49 | json_data = json_data.get('data') 50 | for i in json_data: 51 | if i: 52 | image_url.append(i.get('thumbURL')) 53 | return image_url 54 | 55 | def get_image(self, image_url): 56 | """ 57 | 根据图片url,在本地目录下新建一个以搜索关键字命名的文件夹,然后将每一个图片存入。 58 | :param image_url: 59 | :return: 60 | """ 61 | cwd = os.getcwd() 62 | file_name = os.path.join(cwd, self.keyword) 63 | if not os.path.exists(self.keyword): 64 | os.mkdir(file_name) 65 | for index, url in enumerate(image_url, start=1): 66 | with open(file_name + '\\{}.jpg'.format(index), 'wb') as f: 67 | f.write(requests.get(url, headers=self.headers_image).content) 68 | if index != 0 and index % 30 == 0: 69 | print('{}第{}页下载完成'.format(self.keyword, index / 30)) 70 | 71 | def __call__(self, *args, **kwargs): 72 | params = self.get_param() 73 | urls = self.get_urls(params) 74 | image_url = self.get_image_url(urls) 75 | self.get_image(image_url) 76 | 77 | 78 | 79 | if __name__ == '__main__': 80 | for fruit_keyword in settings.FRUIT_CLASS.keys(): 81 | fruit_keyword = Spider_baidu_image() 82 | fruit_keyword() 83 | -------------------------------------------------------------------------------- /static/assembly/zylVerificationCode/zylVerificationCode.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | zylVerCode();//初始化生成随机数 3 | }); 4 | 5 | 6 | //生成随机数 7 | function zylVerCode(len){ 8 | len = len || 4; 9 | var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';//默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 10 | var maxPos = $chars.length; 11 | var zylCode = ''; 12 | for (i = 0; i < len; i++) { 13 | zylCode += $chars.charAt(Math.floor(Math.random() * maxPos)); 14 | } 15 | $(".zylVerCode").html(zylCode); 16 | } -------------------------------------------------------------------------------- /static/css/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'iconfont'; 3 | src: url('../fonts/iconfont.eot'); 4 | src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/iconfont.woff') format('woff'), 6 | url('../fonts/iconfont.ttf') format('truetype'), 7 | url('../fonts/iconfont.svg#iconfont') format('svg'); 8 | } 9 | .iconfont{ 10 | font-family:"iconfont" !important; 11 | font-size:16px;font-style:normal; 12 | -webkit-font-smoothing: antialiased; 13 | -webkit-text-stroke-width: 0.2px; 14 | -moz-osx-font-smoothing: grayscale; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /static/css/reset.css: -------------------------------------------------------------------------------- 1 | /* 把标签默认的间距设为0 */ 2 | body,ul,ol,p,h1,h2,h3,h4,h5,h6,dl,dd,select,input,textarea,form{margin:0;padding:0} 3 | 4 | /* 让h标签文字大小继承body的文字设置 */ 5 | h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} 6 | 7 | /* 去掉列表默认的图标 */ 8 | ul,ol{list-style:none;} 9 | 10 | /* 去掉em默认的斜体 */ 11 | em{font-style: normal;} 12 | 13 | /* 去掉a标签默认的下划线 */ 14 | a{text-decoration:none;} 15 | 16 | 17 | /* 去掉加链接时产生的框线 */ 18 | img{border:0;} 19 | 20 | /* 清除浮动 */ 21 | .clearfix:before,.clearfix:after{content:"";display:table} 22 | .clearfix:after{clear:both;} 23 | .clearfix{zoom:1} 24 | 25 | /* 浮动 */ 26 | .fl{float:left} 27 | .fr{float:right} 28 | 29 | 30 | /*评论区专用css*/ 31 | 32 | .content { 33 | box-shadow: 2px 2px 2px rgba(0, 0, 0, .2); 34 | padding: 20px 30px; 35 | margin-top: 50px; 36 | border-radius: 5px; 37 | background-color: #ffffff; 38 | } 39 | .content .title { 40 | padding: 10px; 41 | } 42 | 43 | .yd-wrap { 44 | padding: 15px; 45 | border: 1px solid #f0f0f0; 46 | border-radius: 5px; 47 | } 48 | .rt{float:right} 49 | .yd-header input{ 50 | border-bottom: 1px dashed #dedede; 51 | 52 | } 53 | .yd-header input:focus{ 54 | border-color: #eb5055; 55 | } 56 | 57 | .yd-textarea textarea { 58 | height: 10rem; 59 | } 60 | 61 | .yd-commit button { 62 | width: 100px; 63 | background-color: blue; 64 | color: white; 65 | } 66 | 67 | .yd-comment-num span{ 68 | font-size: 20px; 69 | font-weight: 800; 70 | font-family: bold; 71 | } 72 | 73 | .yd-comment-item img { 74 | width: 50px; 75 | } 76 | 77 | .yd-comment-content a { 78 | font-weight: 600; 79 | } 80 | 81 | .yd-comment-head { 82 | margin-bottom: 5px; 83 | } 84 | 85 | .yd-comment-body { 86 | margin-bottom: 10px; 87 | } 88 | 89 | .yd-comment-footer { 90 | color: #b3b3b3; 91 | border-bottom: 1px solid #f5f5f5; 92 | } 93 | .container { 94 | max-width: 1080px; 95 | } 96 | .market { 97 | background-color: #4285f4; 98 | height: 398px; 99 | position: absolute; 100 | top: 60px; 101 | width: 100%; 102 | outline: none; 103 | display: block; 104 | z-index: -1; 105 | } 106 | .row { 107 | margin-bottom: 0.75rem; 108 | 109 | } 110 | 111 | input, textarea{ 112 | resize: none; 113 | outline: none; 114 | border: none; 115 | width: 100%; 116 | margin: 10px px; 117 | border-bottom: 1px dashed #dedede; 118 | } -------------------------------------------------------------------------------- /static/css/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | body { 6 | font-size: 18px; 7 | font-family:Microsoft Yahei,Verdana,Helvetica,Arial,sans-serif; 8 | } 9 | div#ksLeftNav { 10 | position: fixed; 11 | width: 190px; 12 | float: left; 13 | margin-top: 300px; 14 | margin: 0; 15 | padding: 15px; 16 | } 17 | div#ksLeftNav * { 18 | margin: 0; 19 | padding: 0; 20 | } 21 | div#ksLeftNav div#nav-con { 22 | position: relative; 23 | } 24 | div#ksLeftNav div#nav-con ul.nav { 25 | margin: 15px; 26 | position: relative; 27 | z-index: 2; 28 | } 29 | div#ksLeftNav div#nav-con ul.nav li { 30 | list-style: none; 31 | } 32 | div#ksLeftNav div#nav-con ul.nav li a.nav-title { 33 | display: inline-block; 34 | text-decoration: none; 35 | color: #333; 36 | height: 36px; 37 | line-height: 36px; 38 | padding-left: 26px; 39 | font-weight: bold; 40 | background: url(../images/quan.png) left center no-repeat; 41 | } 42 | div#ksLeftNav div#nav-con ul.nav li a.nav-title.active { 43 | color: #00bfe9; 44 | background: url(../images/sign_right.png) 2px center no-repeat; 45 | } 46 | div#ksLeftNav div#nav-con div.nav-detail { 47 | } 48 | div#ksLeftNav div#nav-con div.nav-detail a { 49 | display: block; 50 | color: #666; 51 | padding: 5px 15px 5px 40px; 52 | text-decoration: none; 53 | } 54 | div#ksLeftNav div#nav-con div.nav-detail a.active { 55 | color: #00bfe9; 56 | } 57 | div#ksLeftNav div#nav-con div.nav-detail a:hover { 58 | text-decoration: none; 59 | } 60 | div#ksLeftNav div#nav-con div.line { 61 | position: absolute; 62 | top: 0; 63 | left: 23px; 64 | height: 100%; 65 | width: 1px; 66 | border-left: 1px solid #ccc; 67 | } 68 | div#ksLeftNav div#nav-con div.circle-top { 69 | position: absolute; 70 | top: -17px; 71 | left: 17px; 72 | } 73 | div#ksLeftNav div#nav-con div.circle-bottom { 74 | position: absolute; 75 | bottom: -17px; 76 | left: 17px; 77 | } 78 | 79 | div.right-con { 80 | margin-top: 10px; 81 | margin-left: 220px; 82 | border-left: 3px solid #00BFE9; 83 | } 84 | div.right-con div.item { 85 | padding: 15px; 86 | } 87 | div.right-con div.item div { 88 | padding: 15px 0; 89 | } 90 | div.right-con div.item h5 { 91 | font-size: 24px; 92 | color: #00BFE9; 93 | padding-bottom: 10px; 94 | border-bottom: 1px dotted #CCC; 95 | } 96 | div.right-con div.item p { 97 | padding: 15px 0; 98 | line-height: 25px; 99 | } 100 | 101 | 102 | .intro-img{ 103 | height: 200px; 104 | margin-top: 20px; 105 | margin-left: 100px; 106 | } 107 | 108 | .header_baike{ 109 | font-family:宋体; 110 | font-weight:bold; 111 | font-size:80px 112 | } -------------------------------------------------------------------------------- /static/images/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/bg.gif -------------------------------------------------------------------------------- /static/images/p1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/p1.jpg -------------------------------------------------------------------------------- /static/images/p2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/p2.jpg -------------------------------------------------------------------------------- /static/images/p3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/p3.jpg -------------------------------------------------------------------------------- /static/images/p4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/p4.jpg -------------------------------------------------------------------------------- /static/images/p5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/p5.jpg -------------------------------------------------------------------------------- /static/images/s1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/s1.jpg -------------------------------------------------------------------------------- /static/images/s2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/s2.jpg -------------------------------------------------------------------------------- /static/images/s3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/s3.jpg -------------------------------------------------------------------------------- /static/images/s4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/images/s4.jpg -------------------------------------------------------------------------------- /static/js/main.js: -------------------------------------------------------------------------------- 1 | const commitButton = e('.btn-commit') 2 | 3 | const template = function(comment) { 4 | const t = ` 5 |
6 |
7 |
8 | 9 | ${comment.name} ${comment.time} 10 |
11 |
12 | ${comment.content} 13 |
14 |
15 |
16 | ` 17 | return t 18 | } 19 | 20 | const insertComment = function(comment) { 21 | const commentWrap = e('.yd-comment-wrap') 22 | const t = template(comment) 23 | commentWrap.insertAdjacentHTML('beforeend', t) 24 | } 25 | 26 | const saveComment = function() { 27 | // 把所有评论存入到localStorge 28 | let items = document.querySelectorAll('.yd-comment-item') 29 | var comments = [] 30 | for (let i = 0; i < items.length; i++) { 31 | // 在单个评论页中读取用户信息 32 | const item = items[i]; 33 | var comment = { 34 | name: find(item, '.nm').innerText, 35 | content: find(item, '.panel-body').innerText, 36 | time: find(item, '.rt').innerText, 37 | } 38 | // 得到图片的src路径 x.png 的 x 这个属性 39 | var avatar = find(item, '.yd-comment-avatar').src.slice(-5, -4) 40 | comment.avatar = avatar 41 | comments.push(comment) 42 | } 43 | console.log('comments', comments); 44 | localStorage.comments = JSON.stringify(comments) 45 | } 46 | 47 | const loadComment = function() { 48 | // 从localStorge中读取所有的评论并载入, 一开始没有评论, localStorage为空 49 | var num = e('.span-comment-num') 50 | var s = localStorage.comments 51 | if (s !== '') { 52 | var comments = JSON.parse(localStorage.comments) 53 | num.innerText = comments.length 54 | for (let i = 0; i < comments.length; i++) { 55 | insertComment(comments[i]) 56 | } 57 | } 58 | } 59 | 60 | bindEvent(commitButton, 'click', function(event) { 61 | // 1. 读取信息, 存入object中, 随机给一个头像 62 | let user = { 63 | name: e('.yd-name').value, 64 | email: e('.yd-email').value, 65 | url: e('.yd-url').value, 66 | content: e('.yd-editor').value, 67 | time: getTime(), 68 | avatar: parseInt(Math.random()*2) + 1 69 | } 70 | // 2. 如果用户没输入名字, 给一个自定义的名字 71 | if (user.name == "") { 72 | user.name = '高大锤' 73 | } 74 | // 3. 插入用户到页面中 75 | insertComment(user) 76 | // 4. 读取页面中所有的评论信息写入到localStorge中 77 | saveComment() 78 | }) 79 | 80 | loadComment() 81 | 82 | -------------------------------------------------------------------------------- /static/js/nav.js: -------------------------------------------------------------------------------- 1 | var scrollTagEvent = (function() { 2 | 3 | $(function(){ 4 | 5 | var arr = []; 6 | init(); 7 | 8 | /** 9 | * 初始化 10 | * @return {[type]} [description] 11 | */ 12 | function init() { 13 | 14 | $('div#ksLeftNav a.nav-title').each(function(){ 15 | arr.push(parseInt($($(this).attr("href")).offset().top)); 16 | }); 17 | 18 | $(document).on('click','div#ksLeftNav a',function(e){ 19 | 20 | e.preventDefault(); 21 | unbindScroll(); 22 | 23 | // 判断是否为子集 24 | $('div#ksLeftNav a.nav-title').removeClass('active'); 25 | if ($(this).parent().hasClass('nav-detail')) { 26 | $(this).parent().siblings('a').addClass('active'); 27 | } else { 28 | $(this).addClass('active'); 29 | } 30 | 31 | $("html, body").animate({ 32 | scrollTop: $($(this).attr("href")).offset().top + 'px' 33 | },500,function(){ 34 | bindScroll(); 35 | }); 36 | 37 | }); 38 | 39 | $('div#ksLeftNav a.nav-title').first().trigger('click'); 40 | } 41 | 42 | /** 43 | * 滚动事件绑定 44 | * 滚动高度对应的内容响应左侧导航 45 | * @return {[type]} [description] 46 | */ 47 | function bindScroll() { 48 | 49 | $(window).on('scroll.tag',function(e){ 50 | 51 | var scrollT = $(this).scrollTop(); 52 | 53 | for (var i = 0; i < arr.length; i++) { 54 | if (scrollT >= arr[i]) { 55 | $('a.active').removeClass('active'); 56 | $('div#ksLeftNav a.nav-title:eq(' + i + ')').addClass('active'); 57 | } 58 | } 59 | }); 60 | } 61 | 62 | // 取消滚动事件的绑定,防止影响左侧导航点击事件 63 | function unbindScroll() { 64 | $(window).off('scroll.tag'); 65 | } 66 | 67 | }); 68 | 69 | })(); -------------------------------------------------------------------------------- /static/js/tool.js: -------------------------------------------------------------------------------- 1 | var e = function(selector) { 2 | return document.querySelector(selector) 3 | } 4 | 5 | var bindEvent = function(element, event, callBack) { 6 | element.addEventListener(event, callBack) 7 | } 8 | 9 | var getTime = function() { 10 | var d = new Date() 11 | 12 | var year = d.getFullYear() 13 | var month = d.getMonth()+1 14 | var day = d.getDate() 15 | 16 | var xs = d.getHours() 17 | var fz = d.getMinutes() 18 | var ms = d.getSeconds() 19 | if (xs < 10) { 20 | xs = '0' + xs 21 | } 22 | if (fz < 10) { 23 | fz = '0' + fz 24 | } 25 | if (ms < 10) { 26 | ms = '0' + ms 27 | } 28 | return `${year}-${month}-${day} ${xs}:${fz}:${ms}` 29 | } 30 | 31 | // find函数可以查找 element 的所有子元素 32 | var find = function(element, selector) { 33 | return element.querySelector(selector) 34 | } -------------------------------------------------------------------------------- /static/lib/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/loading-1 2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/loading-1 2.gif -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/loading-2 2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/loading-2 2.gif -------------------------------------------------------------------------------- /static/lib/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /static/lib/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/font/iconfont.eot -------------------------------------------------------------------------------- /static/lib/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /static/lib/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/font/iconfont.woff -------------------------------------------------------------------------------- /static/lib/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/0.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/1.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/10.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/11.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/12.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/13.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/14.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/15.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/16.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/17.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/18.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/19.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/2.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/20.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/21.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/22.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/23.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/24.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/25.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/26.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/27.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/28.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/29.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/3.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/30.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/31.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/32.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/33.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/34.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/35.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/36.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/37.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/38.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/39.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/4.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/40.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/41.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/42.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/43.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/44.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/45.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/46.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/47.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/48.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/49.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/5.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/50.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/51.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/52.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/53.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/54.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/55.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/56.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/57.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/58.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/59.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/6.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/60.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/61.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/62.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/63.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/64.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/65.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/66.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/67.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/68.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/69.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/7.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/70.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/71.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/8.gif -------------------------------------------------------------------------------- /static/lib/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layui/images/face/9.gif -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/carousel.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",o=">*[carousel-item]>*",l="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(o),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.indicator(),e.elemItem.length<=1||(e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/flow.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('
'+d+"
");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/laypage.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var a=document,t="getElementById",r="getElementsByTagName",n="laypage",i="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.groups=0|a.groups||5,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),a.groups<0?a.groups=0:a.groups>a.pages&&(a.groups=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var t=a.pages>a.groups?Math.ceil((a.curr+(a.groups>1?1:0))/(a.groups>0?a.groups:1)):1,r={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";t>1&&a.first!==!1&&0!==a.groups&&e.push(''+(a.first||1)+"");var r=Math.floor((a.groups-1)/2),n=t>1?a.curr-r:1,i=t>1?function(){var e=a.curr+(a.groups-r-1);return e>a.pages?a.pages:e}():a.groups;for(i-n2&&e.push('');n<=i;n++)n===a.curr?e.push('"+n+""):e.push(''+n+"");return a.pages>a.groups&&a.pages>i&&a.last!==!1&&(i+1…'),0!==a.groups&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),skip:function(){return['到第','','页',""].join("")}()};return['
',function(){var e=[];return layui.each(a.layout,function(a,t){r[t]&&e.push(r[t])}),e.join("")}(),"
"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,n=t.config,i=e.children,u=e[r]("button")[0],p=e[r]("input")[0],l=e[r]("select")[0],o=function(){var e=0|p.value.replace(/\s|\D/g,"");e&&(n.curr=e,t.render())};if(a)return o();for(var c=0,g=i.length;cn.pages||(n.curr=e,t.render())});l&&s.on(l,"change",function(){var e=this.value;n.curr*e>n.count&&(n.curr=Math.ceil(n.count/e)),n.limit=e,t.render()}),u&&s.on(u,"click",function(){o()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[r]("input")[0];t&&s.on(t,"keyup",function(t){var r=this.value,n=t.keyCode;/^(37|38|39|40)$/.test(n)||(/\D/.test(r)&&(this.value=r.replace(/\D/,"")),13===n&&a.jump(e,!0))})}},u.prototype.render=function(e){var r=this,n=r.config,i=r.type(),u=r.view();2===i?n.elem&&(n.elem.innerHTML=u):3===i?n.elem.html(u):a[t](n.elem)&&(a[t](n.elem).innerHTML=u),n.jump&&n.jump(n,e);var s=a[t]("layui-laypage-"+n.index);r.jump(s),n.hash&&!e&&(location.hash="!"+n.hash+"="+n.curr),r.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(n,s)}); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},n={exp:function(e){return new RegExp(e,"g")},query:function(e,n,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return c((n||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/tree.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
    '),s=o(["
  • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
  • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
    '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/util.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,t={fixbar:function(e){var t,a,i="layui-fixbar",l="layui-fixbar-top",r=o(document),c=o("body");e=o.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var n=[e.bar1,e.bar2,""],u=o(['
      ',e.bar1?'
    • '+n[0]+"
    • ":"",e.bar2?'
    • '+n[1]+"
    • ":"",'
    • '+n[2]+"
    • ","
    "].join("")),s=u.find("."+l),b=function(){var o=r.scrollTop();o>=e.showHeight?t||(s.show(),t=1):t&&(s.hide(),t=0)};o("."+i)[0]||("object"==typeof e.css&&u.css(e.css),c.append(u),b(),u.find("li").on("click",function(){var t=o(this),a=t.attr("lay-type");"top"===a&&o("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){b()},100)}))},countdown:function(e,o,t){var a=this,i="function"==typeof o,l=new Date(e).getTime(),r=new Date(!o||i?(new Date).getTime():o).getTime(),c=l-r,n=[Math.floor(c/864e5),Math.floor(c/36e5)%24,Math.floor(c/6e4)%60,Math.floor(c/1e3)%60];i&&(t=o);var u=setTimeout(function(){a.countdown(e,r+1e3,t)},1e3);return t&&t(c>0?n:[0,0,0,0],o,u),c<=0&&clearTimeout(u),u},timeAgo:function(e,o){var t=(new Date).getTime()-new Date(e).getTime();return t>2592e6?(t=new Date(e).toLocaleString(),o&&(t=t.replace(/\s[\S]+$/g,"")),t):t>=864e5?(t/1e3/60/60/24|0)+"天前":t>=36e5?(t/1e3/60/60|0)+"小时前":t>=18e4?(t/1e3/60|0)+"分钟前":t<0?"未来":"刚刚"}};e("util",t)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @Name:layuiAdmin iframe版全局配置 4 | @Author:贤心 5 | @Site:http://www.layui.com/admin/ 6 | @License:LPPL(layui付费产品协议) 7 | 8 | */ 9 | 10 | layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){ 11 | exports('setter', { 12 | container: 'LAY_app' //容器ID 13 | ,base: layui.cache.base //记录静态资源所在路径 14 | ,views: layui.cache.base + 'tpl/' //动态模板所在目录 15 | ,entry: 'index' //默认视图文件名 16 | ,engine: '.html' //视图文件后缀名 17 | ,pageTabs: true //是否开启页面选项卡功能。iframe版推荐开启 18 | 19 | ,name: 'layuiAdmin' 20 | ,tableName: 'layuiAdmin' //本地存储表名 21 | ,MOD_NAME: 'admin' //模块事件名 22 | 23 | ,debug: true //是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 24 | 25 | //自定义请求字段 26 | ,request: { 27 | tokenName: false //自动携带 token 的字段名(如:access_token)。可设置 false 不携带。 28 | } 29 | 30 | //自定义响应字段 31 | ,response: { 32 | statusName: 'code' //数据状态的字段名称 33 | ,statusCode: { 34 | ok: 0 //数据状态一切正常的状态码 35 | ,logout: 1001 //登录状态失效的状态码 36 | } 37 | ,msgName: 'msg' //状态信息的字段名称 38 | ,dataName: 'data' //数据详情的字段名称 39 | } 40 | 41 | //扩展的第三方模块 42 | ,extend: [ 43 | 'echarts', //echarts 核心包 44 | 'echartsTheme' //echarts 主题 45 | ] 46 | 47 | //主题配置 48 | ,theme: { 49 | //内置主题配色方案 50 | color: [{ 51 | main: '#20222A' //主题色 52 | ,selected: '#009688' //选中色 53 | ,alias: 'default' //默认别名 54 | },{ 55 | main: '#03152A' 56 | ,selected: '#3B91FF' 57 | ,alias: 'dark-blue' //藏蓝 58 | },{ 59 | main: '#2E241B' 60 | ,selected: '#A48566' 61 | ,alias: 'coffee' //咖啡 62 | },{ 63 | main: '#50314F' 64 | ,selected: '#7A4D7B' 65 | ,alias: 'purple-red' //紫红 66 | },{ 67 | main: '#344058' 68 | ,logo: '#1E9FFF' 69 | ,selected: '#1E9FFF' 70 | ,alias: 'ocean' //海洋 71 | },{ 72 | main: '#3A3D49' 73 | ,logo: '#2F9688' 74 | ,selected: '#5FB878' 75 | ,alias: 'green' //墨绿 76 | },{ 77 | main: '#20222A' 78 | ,logo: '#F78400' 79 | ,selected: '#F78400' 80 | ,alias: 'red' //橙色 81 | },{ 82 | main: '#28333E' 83 | ,logo: '#AA3130' 84 | ,selected: '#AA3130' 85 | ,alias: 'fashion-red' //时尚红 86 | },{ 87 | main: '#24262F' 88 | ,logo: '#3A3D49' 89 | ,selected: '#009688' 90 | ,alias: 'classic-black' //经典黑 91 | },{ 92 | logo: '#226A62' 93 | ,header: '#2F9688' 94 | ,alias: 'green-header' //墨绿头 95 | },{ 96 | main: '#344058' 97 | ,logo: '#0085E8' 98 | ,selected: '#1E9FFF' 99 | ,header: '#1E9FFF' 100 | ,alias: 'ocean-header' //海洋头 101 | },{ 102 | header: '#393D49' 103 | ,alias: 'classic-black-header' //经典黑头 104 | },{ 105 | main: '#50314F' 106 | ,logo: '#50314F' 107 | ,selected: '#7A4D7B' 108 | ,header: '#50314F' 109 | ,alias: 'purple-red-header' //紫红头 110 | },{ 111 | main: '#28333E' 112 | ,logo: '#28333E' 113 | ,selected: '#AA3130' 114 | ,header: '#AA3130' 115 | ,alias: 'fashion-red-header' //时尚红头 116 | },{ 117 | main: '#28333E' 118 | ,logo: '#009688' 119 | ,selected: '#009688' 120 | ,header: '#009688' 121 | ,alias: 'green-header' //墨绿头 122 | }] 123 | 124 | //初始的颜色索引,对应上面的配色方案数组索引 125 | //如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage) 126 | ,initColorIndex: 0 127 | } 128 | }); 129 | }); 130 | -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/console/prograss.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "prograss": "开会" 7 | ,"time": "一小时" 8 | ,"complete": "已完成" 9 | ,"LAY_CHECKED": true 10 | },{ 11 | "prograss": "项目开发" 12 | ,"time": "两小时" 13 | ,"complete": "进行中" 14 | ,"LAY_CHECKED": true 15 | },{ 16 | "prograss": "陪吃饭" 17 | ,"time": "一小时" 18 | ,"complete": "未完成" 19 | },{ 20 | "prograss": "修改小bug" 21 | ,"time": "半小时" 22 | ,"complete": "未完成" 23 | },{ 24 | "prograss": "修改大bug" 25 | ,"time": "两小时" 26 | ,"complete": "未完成" 27 | },{ 28 | "prograss": "修改小bug" 29 | ,"time": "半小时" 30 | ,"complete": "未完成" 31 | },{ 32 | "prograss": "修改大bug" 33 | ,"time": "两小时" 34 | ,"complete": "未完成" 35 | }] 36 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/console/top-card.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": 111 7 | ,"title": "社区开始接受 “赞助商广告” 投放" 8 | ,"username": "贤心" 9 | ,"channel": "公告" 10 | ,"href": "http://fly.layui.com/jie/15697/" 11 | ,"crt": 61632 12 | },{ 13 | "id": 222 14 | ,"title": "layui 一周年" 15 | ,"username": "猫吃" 16 | ,"channel": "讨论" 17 | ,"href": "http://fly.layui.com/jie/16622/" 18 | ,"crt": 61632 19 | },{ 20 | "id": 333 21 | ,"title": "四个月的前端" 22 | ,"username": "fd" 23 | ,"channel": "分享" 24 | ,"href": "http://fly.layui.com/jie/16651/" 25 | ,"crt": 61632 26 | },{ 27 | "id": 333 28 | ,"title": "如何评价LayUI和他的作者闲心" 29 | ,"username": "纸飞机" 30 | ,"channel": "提问" 31 | ,"href": "http://fly.layui.com/jie/9352/" 32 | ,"crt": 61632 33 | },{ 34 | "id": 333 35 | ,"title": "如何评价LayUI和他的作者闲心" 36 | ,"username": "纸飞机" 37 | ,"channel": "提问" 38 | ,"href": "http://fly.layui.com/jie/9352/" 39 | ,"crt": 61632 40 | },{ 41 | "id": 333 42 | ,"title": "如何评价LayUI和他的作者闲心" 43 | ,"username": "纸飞机" 44 | ,"channel": "提问" 45 | ,"href": "http://fly.layui.com/jie/9352/" 46 | ,"crt": 61632 47 | },{ 48 | "id": 333 49 | ,"title": "如何评价LayUI和他的作者闲心" 50 | ,"username": "纸飞机" 51 | ,"channel": "提问" 52 | ,"href": "http://fly.layui.com/jie/9352/" 53 | ,"crt": 61632 54 | },{ 55 | "id": 333 56 | ,"title": "如何评价LayUI和他的作者闲心" 57 | ,"username": "纸飞机" 58 | ,"channel": "提问" 59 | ,"href": "http://fly.layui.com/jie/9352/" 60 | ,"crt": 61632 61 | },{ 62 | "id": 333 63 | ,"title": "如何评价LayUI和他的作者闲心" 64 | ,"username": "纸飞机" 65 | ,"channel": "提问" 66 | ,"href": "http://fly.layui.com/jie/9352/" 67 | ,"crt": 61632 68 | },{ 69 | "id": 333 70 | ,"title": "如何评价LayUI和他的作者闲心" 71 | ,"username": "纸飞机" 72 | ,"channel": "提问" 73 | ,"href": "http://fly.layui.com/jie/9352/" 74 | ,"crt": 61632 75 | }] 76 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/console/top-search.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "keywords": "贤心是男是女" 7 | ,"frequency": 8520 8 | ,"userNums": 2216 9 | },{ 10 | "keywords": "Java程序员能找到女朋友吗" 11 | ,"frequency": 666 12 | ,"userNums": 333 13 | },{ 14 | "keywords": "此表格是静态模拟数据" 15 | ,"frequency": 666 16 | ,"userNums": 333 17 | },{ 18 | "keywords": "layui官方教程" 19 | ,"frequency": 666 20 | ,"userNums": 333 21 | },{ 22 | "keywords": "layui官方教程" 23 | ,"frequency": 666 24 | ,"userNums": 333 25 | },{ 26 | "keywords": "layui官方教程" 27 | ,"frequency": 666 28 | ,"userNums": 333 29 | },{ 30 | "keywords": "layui官方教程" 31 | ,"frequency": 666 32 | ,"userNums": 333 33 | },{ 34 | "keywords": "layui官方教程" 35 | ,"frequency": 666 36 | ,"userNums": 333 37 | },{ 38 | "keywords": "layui官方教程" 39 | ,"frequency": 666 40 | ,"userNums": 333 41 | },{ 42 | "keywords": "layui官方教程" 43 | ,"frequency": 666 44 | ,"userNums": 333 45 | }] 46 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/content/comment.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "001" 7 | ,"reviewers": "赵" 8 | ,"content": "我又爱上编程了" 9 | ,"commtime": 20160312 10 | },{ 11 | "id": "002" 12 | ,"reviewers": "钱" 13 | ,"content": "女生出门要小心" 14 | ,"commtime": 20160821 15 | },{ 16 | "id": "003" 17 | ,"reviewers": "孙" 18 | ,"content": "框架就用layui" 19 | ,"commtime": 20161212 20 | },{ 21 | "id": "004" 22 | ,"reviewers": "李" 23 | ,"content": "心姐么么哒" 24 | ,"commtime": 20170311 25 | },{ 26 | "id": "005" 27 | ,"reviewers": "周" 28 | ,"content": "希望明天是个好天气" 29 | ,"commtime": 20170612 30 | },{ 31 | "id": "006" 32 | ,"reviewers": "吴" 33 | ,"content": "我又爱上编程了" 34 | ,"commtime": 20171112 35 | },{ 36 | "id": "007" 37 | ,"reviewers": "郑" 38 | ,"content": "女生出门要小心" 39 | ,"commtime": 20171230 40 | },{ 41 | "id": "008" 42 | ,"reviewers": "王" 43 | ,"content": "框架就用layui" 44 | ,"commtime": 20180112 45 | },{ 46 | "id": "009" 47 | ,"reviewers": "冯" 48 | ,"content": "心姐么么哒" 49 | ,"commtime": 20180221 50 | },{ 51 | "id": "010" 52 | ,"reviewers": "陈" 53 | ,"content": "希望明天是个好天气" 54 | ,"commtime": 20180312 55 | }] 56 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/content/list.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "001" 7 | ,"label": "美食" 8 | ,"title": "舌尖上的中国第一季" 9 | ,"author": "作者-1" 10 | ,"content": "通过中华美食的多个侧面,来展现食物给中国人生活带来的仪式、伦理等方面的文化;见识中国特色食材以及与食物相关、构成中国美食特有气质的一系列元素;了解中华饮食文化的精致和源远流长" 11 | ,"uploadtime": 20121204 12 | ,"status": true 13 | },{ 14 | "id": "002" 15 | ,"label": "美食" 16 | ,"title": "舌尖上的中国第二季" 17 | ,"author": "作者-2" 18 | ,"content": "以食物为窗口,读懂中国——通过美食,使人们可以有滋有味地认知这个古老的东方国度。“一方水土一方人”,本片将通过展示人们日常生活中与美食相关的多重侧面,描绘与感知中国人的文化传统、家族观念、生活态度与故土难离。人们收获、保存、烹饪、生产美食,并在其过程中留存和传承食物所承载的味觉记忆、饮食习俗、文化样态与家常情感。" 19 | ,"uploadtime": 20141204 20 | ,"status": false 21 | },{ 22 | "id": "003" 23 | ,"label": "美食" 24 | ,"title": "舌尖上的中国第三季" 25 | ,"author": "作者-3" 26 | ,"content": "以食物为窗口,读懂中国——通过美食,使人们可以有滋有味地认知这个古老的东方国度。“一方水土一方人”,本片将通过展示人们日常生活中与美食相关的多重侧面,描绘与感知中国人的文化传统、家族观念、生活态度与故土难离。人们收获、保存、烹饪、生产美食,并在其过程中留存和传承食物所承载的味觉记忆、饮食习俗、文化样态与家常情感将世界美食和中国美食进行比照。春耕、夏耘、秋收、冬藏,天人合一的东方哲学让中国饮食依时而变,智慧灵动,中医营养摄生学说创造了食材运用的新天地,儒家人伦道德则把心意和家的味道端上我们的餐桌。淘洗历史,糅合时光,一代又一代的中国人在天地间升起烟火,用至精至诚的心意烹制食物,一餐一食之间,中国人展示个性,确认归属,构建文明,理解和把握着世界的奥妙。" 27 | ,"uploadtime": 20161204 28 | ,"status": false 29 | },{ 30 | "id": "004" 31 | ,"label": "历史" 32 | ,"title": "诸葛亮骂王朗" 33 | ,"author": "作者-1" 34 | ,"content": "皓首匹夫!苍髯老贼!你即将命归于九泉之下,届时,有何面目见汉朝二十四代先帝?二臣贼子!你枉活七十有六,一生未立寸功,只会摇唇舞舌,助曹为虐!一条断脊之犬,还敢在我军阵前狺狺狂吠!我从未见过如此厚颜无耻之人!!!" 35 | ,"uploadtime": 20180201 36 | ,"status": false 37 | },{ 38 | "id": "005" 39 | ,"label": "新闻" 40 | ,"title": "新时代特色中国梦" 41 | ,"author": "作者-1" 42 | ,"content": "今天,我们比历史上任何时期都更接近、更有信心和能力实现中华民族伟大复兴的目标。新时代已经到来,蓝图已经绘就,中国梦离我们越来越近了。" 43 | ,"uploadtime": 20180512 44 | ,"status": false 45 | },{ 46 | "id": "006" 47 | ,"label": "新闻" 48 | ,"title": "新时代特色中国梦" 49 | ,"author": "作者-2" 50 | ,"content": "梦想不会主动走向我们,只有我们去主动实现梦想。行百里者半九十。虽然中国梦离我们越来越近了,但是要实现中国梦,还要靠我们以永不懈怠的精神状态、功在不舍的坚强意志,不忘初心,继续前进。" 51 | ,"uploadtime": 20180514 52 | ,"status": false 53 | },{ 54 | "id": "007" 55 | ,"label": "体育" 56 | ,"title": "皇马大战利物浦" 57 | ,"author": "作者-3" 58 | ,"content": "对欧足联而言,更想要产生个新冠军。连续三年都是同一个冠军队,这会毁掉欧冠……”格里姆表态,“皇马有梦幻般的阵容,但从促进竞争的角度而言,另一支球队获胜会更好。" 59 | ,"uploadtime": 20180515 60 | ,"status": false 61 | }] 62 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/content/tags.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "001" 7 | ,"tags": "美食" 8 | },{ 9 | "id": "002" 10 | ,"tags": "新闻" 11 | },{ 12 | "id": "003" 13 | ,"tags": "八卦" 14 | },{ 15 | "id": "004" 16 | ,"tags": "体育" 17 | },{ 18 | "id": "005" 19 | ,"tags": "音乐" 20 | }] 21 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/forum/list.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "1001" 7 | ,"poster": "赵" 8 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 9 | ,"content": "为什么花儿这么么红" 10 | ,"posttime": 20160805 11 | ,"top": false 12 | },{ 13 | "id": "1002" 14 | ,"poster": "钱" 15 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 16 | ,"content": "喜欢胡歌,赞赞赞" 17 | ,"posttime": 20161205 18 | ,"top": true 19 | },{ 20 | "id": "1003" 21 | ,"poster": "孙" 22 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 23 | ,"content": "明天就要考试了,好紧张,求保佑" 24 | ,"posttime": 20170405 25 | ,"top": false 26 | },{ 27 | "id": "1004" 28 | ,"poster": "李" 29 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 30 | ,"content": "希望明天是个好天气" 31 | ,"posttime": 20171005 32 | ,"top": false 33 | },{ 34 | "id": "1005" 35 | ,"poster": "周" 36 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 37 | ,"content": "女追男隔层纱,是不是真的" 38 | ,"posttime": 20180205 39 | ,"top": false 40 | },{ 41 | "id": "1006" 42 | ,"poster": "吴" 43 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 44 | ,"content": "竟然有人跳楼,年轻人想不开啊!" 45 | ,"posttime": 20180512 46 | ,"top": false 47 | },{ 48 | "id": "1007" 49 | ,"poster": "郑" 50 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 51 | ,"content": "大家一定不能学那个年轻人,珍爱生命啊" 52 | ,"posttime": 20180512 53 | ,"top": false 54 | },{ 55 | "id": "1008" 56 | ,"poster": "王" 57 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 58 | ,"content": "想知道南昌哪里有好吃的西安肉夹馍" 59 | ,"posttime": 20180514 60 | ,"top": false 61 | }] 62 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/forum/replys.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "001" 7 | ,"replyer": "吴" 8 | ,"cardid": "1002" 9 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 10 | ,"content": "有眼光,我也喜欢胡歌!" 11 | ,"replytime": 20161205 12 | },{ 13 | "id": "002" 14 | ,"replyer": "郑" 15 | ,"cardid": "1002" 16 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 17 | ,"content": "同上同上。" 18 | ,"replytime": 20161205 19 | },{ 20 | "id": "003" 21 | ,"replyer": "王" 22 | ,"cardid": "1003" 23 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 24 | ,"content": "能过一定过,不能过紧张也没用" 25 | ,"replytime": 20170405 26 | },{ 27 | "id": "004" 28 | ,"replyer": "冯" 29 | ,"cardid": "1001" 30 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 31 | ,"content": "可能因为你流鼻血了。" 32 | ,"replytime": 20170405 33 | },{ 34 | "id": "005" 35 | ,"replyer": "陈" 36 | ,"cardid": "1003" 37 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 38 | ,"content": "加油加油,看好你" 39 | ,"replytime": 20170405 40 | },{ 41 | "id": "006" 42 | ,"replyer": "褚" 43 | ,"cardid": "1005" 44 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 45 | ,"content": "纯属放屁" 46 | ,"replytime": 20180207 47 | },{ 48 | "id": "007" 49 | ,"replyer": "卫" 50 | ,"cardid": "1005" 51 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 52 | ,"content": "可以试试" 53 | ,"replytime": 20180207 54 | },{ 55 | "id": "006" 56 | ,"replyer": "蒋" 57 | ,"cardid": "1006" 58 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 59 | ,"content": "是啊是啊,太恐怖了。" 60 | ,"replytime": 20180512 61 | },{ 62 | "id": "007" 63 | ,"replyer": "沈" 64 | ,"cardid": "1008" 65 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 66 | ,"content": "魏家凉皮的凉皮就很不错奥。" 67 | ,"replytime": 20180515 68 | }] 69 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/layer/photos.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0, 3 | "msg": "", 4 | "title": "JSON请求的相册", 5 | "id": 8, 6 | "start": 0, 7 | "data": [ 8 | { 9 | "alt": "layer", 10 | "pid": 109, 11 | "src": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg", 12 | "thumb": "" 13 | }, 14 | { 15 | "alt": "说好的,一起Fly", 16 | "pid": 110, 17 | "src": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4kebemcj20ga09saa1.jpg", 18 | "thumb": "" 19 | }, 20 | { 21 | "alt": "佟丽娅女神", 22 | "pid": 111, 23 | "src": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg", 24 | "thumb": "" 25 | }, 26 | { 27 | "alt": "凤姐是个好人", 28 | "pid": 112, 29 | "src": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4kec9vuj20b20dwmyk.jpg", 30 | "thumb": "" 31 | }, 32 | { 33 | "alt": "星空如此深邃", 34 | "pid": 113, 35 | "src": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif", 36 | "thumb": "" 37 | } 38 | ] 39 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/layim/getList.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"data": { 5 | "mine": { 6 | "username": "纸飞机" 7 | ,"id": "100000" 8 | ,"status": "online" 9 | ,"sign": "在深邃的编码世界,做一枚轻盈的纸飞机" 10 | ,"avatar": "//res.layui.com/images/fly/avatar/00.jpg" 11 | } 12 | ,"friend": [{ 13 | "groupname": "知名人物" 14 | ,"id": 0 15 | ,"list": [{ 16 | "username": "贤心" 17 | ,"id": "100001" 18 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" 19 | ,"sign": "这些都是测试数据,实际使用请严格按照该格式返回" 20 | ,"status": "online" 21 | },{ 22 | "username": "刘涛tamia" 23 | ,"id": "100001222" 24 | ,"sign": "如约而至,不负姊妹欢乐颂" 25 | ,"avatar": "//tva4.sinaimg.cn/crop.0.1.1125.1125.180/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg" 26 | },{ 27 | "username": "谢楠" 28 | ,"id": "10034001" 29 | ,"avatar": "//tva2.sinaimg.cn/crop.1.0.747.747.180/633f068fjw8f9h040n951j20ku0kr74t.jpg" 30 | ,"sign": "" 31 | },{ 32 | "username": "马小云" 33 | ,"id": "168168" 34 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.180.180.180/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg" 35 | ,"sign": "让天下没有难写的代码" 36 | },{ 37 | "username": "徐小峥" 38 | ,"id": "666666" 39 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.512.512.180/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg" 40 | ,"sign": "代码在囧途,也要写到底" 41 | }] 42 | },{ 43 | "groupname": "网红声优" 44 | ,"id": 1 45 | ,"list": [{ 46 | "username": "罗玉凤" 47 | ,"id": "121286" 48 | ,"avatar": "//tva4.sinaimg.cn/crop.0.0.640.640.180/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg" 49 | ,"sign": "在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱" 50 | },{ 51 | "username": "Z_子晴" 52 | ,"id": "108101" 53 | ,"avatar": "//tva1.sinaimg.cn/crop.0.23.1242.1242.180/8693225ajw8fbimjimpjwj20yi0zs77l.jpg" 54 | ,"sign": "微电商达人" 55 | },{ 56 | "username": "大鱼_MsYuyu" 57 | ,"id": "12123454" 58 | ,"avatar": "//tva2.sinaimg.cn/crop.0.0.512.512.180/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg" 59 | ,"sign": "我瘋了!這也太準了吧 超級笑點低" 60 | },{ 61 | "username": "醋醋cucu" 62 | ,"id": "102101" 63 | ,"avatar": "//tva2.sinaimg.cn/crop.0.0.640.640.180/648fbe5ejw8ethmg0u9egj20hs0ht0tn.jpg" 64 | ,"sign": "" 65 | },{ 66 | "username": "柏雪近在它香" 67 | ,"id": "3435343" 68 | ,"avatar": "//tva2.sinaimg.cn/crop.0.8.751.751.180/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg" 69 | ,"sign": "" 70 | }] 71 | },{ 72 | "groupname": "女神艺人" 73 | ,"id": 2 74 | ,"list": [{ 75 | "username": "王祖贤" 76 | ,"id": "76543" 77 | ,"avatar": "//wx2.sinaimg.cn/mw690/5db11ff4gy1flxmew7edlj203d03wt8n.jpg" 78 | ,"sign": "我爱贤心" 79 | },{ 80 | "username": "佟丽娅" 81 | ,"id": "4803920" 82 | ,"avatar": "//tva3.sinaimg.cn/crop.0.0.750.750.180/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg" 83 | ,"sign": "我也爱贤心吖吖啊" 84 | }] 85 | }] 86 | ,"group": [{ 87 | "groupname": "前端群" 88 | ,"id": "101" 89 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.200.200.50/006q8Q6bjw8f20zsdem2mj305k05kdfw.jpg" 90 | },{ 91 | "groupname": "Fly社区官方群" 92 | ,"id": "102" 93 | ,"avatar": "//tva2.sinaimg.cn/crop.0.0.199.199.180/005Zseqhjw1eplix1brxxj305k05kjrf.jpg" 94 | }] 95 | } 96 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/layim/getMembers.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"data": { 5 | "list": [{ 6 | "username": "贤心" 7 | ,"id": "100001" 8 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" 9 | ,"sign": "这些都是测试数据,实际使用请严格按照该格式返回" 10 | },{ 11 | "username": "Z_子晴" 12 | ,"id": "108101" 13 | ,"avatar": "//tva1.sinaimg.cn/crop.0.23.1242.1242.180/8693225ajw8fbimjimpjwj20yi0zs77l.jpg" 14 | ,"sign": "微电商达人" 15 | },{ 16 | "username": "Lemon_CC" 17 | ,"id": "102101" 18 | ,"avatar": "//tva4.sinaimg.cn/crop.0.0.180.180.180/6d424ea5jw1e8qgp5bmzyj2050050aa8.jpg" 19 | ,"sign": "" 20 | },{ 21 | "username": "马小云" 22 | ,"id": "168168" 23 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.180.180.180/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg" 24 | ,"sign": "让天下没有难写的代码" 25 | },{ 26 | "username": "徐小峥" 27 | ,"id": "666666" 28 | ,"avatar": "//tva1.sinaimg.cn/crop.0.0.512.512.180/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg" 29 | ,"sign": "代码在囧途,也要写到底" 30 | },{ 31 | "username": "罗玉凤" 32 | ,"id": "121286" 33 | ,"avatar": "//tva4.sinaimg.cn/crop.0.0.640.640.180/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg" 34 | ,"sign": "在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱" 35 | },{ 36 | "username": "刘涛tamia" 37 | ,"id": "100001222" 38 | ,"avatar": "//tva4.sinaimg.cn/crop.0.1.1125.1125.180/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg" 39 | ,"sign": "如约而至,不负姊妹欢乐颂" 40 | },{ 41 | "username": "大鱼_MsYuyu" 42 | ,"id": "12123454" 43 | ,"avatar": "//tva2.sinaimg.cn/crop.0.0.512.512.180/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg" 44 | ,"sign": "我瘋了!這也太準了吧 超級笑點低" 45 | },{ 46 | "username": "谢楠" 47 | ,"id": "10034001" 48 | ,"avatar": "//tva2.sinaimg.cn/crop.1.0.747.747.180/633f068fjw8f9h040n951j20ku0kr74t.jpg" 49 | ,"sign": "" 50 | },{ 51 | "username": "柏雪近在它香" 52 | ,"id": "3435343" 53 | ,"avatar": "//tva2.sinaimg.cn/crop.0.8.751.751.180/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg" 54 | ,"sign": "" 55 | },{ 56 | "username": "林心如" 57 | ,"id": "76543" 58 | ,"avatar": "//tva3.sinaimg.cn/crop.0.0.512.512.180/48f122e6jw8fcmi072lkyj20e80e8t9i.jpg" 59 | ,"sign": "我爱贤心" 60 | },{ 61 | "username": "佟丽娅" 62 | ,"id": "4803920" 63 | ,"avatar": "//tva3.sinaimg.cn/crop.0.0.750.750.180/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg" 64 | ,"sign": "我也爱贤心吖吖啊" 65 | }] 66 | } 67 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/mall/order.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "invoice": "X123565541" 7 | ,"username": "张小三" 8 | ,"orderDate": "2017-11-10" 9 | ,"amount": 800 10 | ,"status": 1 11 | },{ 12 | "invoice": "X123565542" 13 | ,"username": "李小四" 14 | ,"orderDate": "2017-11-10" 15 | ,"amount": 800 16 | ,"status": 0 17 | },{ 18 | "invoice": "X123565543" 19 | ,"username": "王老五" 20 | ,"orderDate": "2017-11-10" 21 | ,"amount": 800 22 | ,"status": 1 23 | },{ 24 | "invoice": "X123565544" 25 | ,"username": "赵小六" 26 | ,"orderDate": "2017-11-09" 27 | ,"amount": 1600 28 | ,"status": 1 29 | },{ 30 | "invoice": "X123565545" 31 | ,"username": "孙小七" 32 | ,"orderDate": "2017-11-09" 33 | ,"amount": 1600 34 | ,"status": -1 35 | },{ 36 | "invoice": "X123565546" 37 | ,"username": "周小八" 38 | ,"orderDate": "2017-11-08" 39 | ,"amount": 2600 40 | ,"status": 1 41 | }] 42 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/menu.js: -------------------------------------------------------------------------------- 1 | 2 | {"code":0,"msg":"","data":[{"title":"主页","icon":"layui-icon-home","list":[{"title":"控制台","jump":"/"},{"name":"homepage1","title":"主页一","jump":"home/homepage1"},{"name":"homepage2","title":"主页二","jump":"home/homepage2"}]},{"name":"component","title":"组件","icon":"layui-icon-component","list":[{"name":"grid","title":"栅格","list":[{"name":"list","title":"等比例列表排列"},{"name":"mobile","title":"按移动端排列"},{"name":"mobile-pc","title":"移动桌面端组合"},{"name":"all","title":"全端复杂组合"},{"name":"stack","title":"低于桌面堆叠排列"},{"name":"speed-dial","title":"九宫格"}]},{"name":"button","title":"按钮"},{"name":"form","title":"表单","list":[{"name":"element","title":"表单元素"},{"name":"group","title":"表单组合"}]},{"name":"nav","title":"导航"},{"name":"tabs","title":"选项卡"},{"name":"progress","title":"进度条"},{"name":"panel","title":"面板"},{"name":"badge","title":"徽章"},{"name":"timeline","title":"时间线"},{"name":"anim","title":"动画"},{"name":"auxiliar","title":"辅助"},{"name":"layer","title":"通用弹层","list":[{"name":"list","title":"功能演示"},{"name":"special-demo","title":"特殊示例"},{"name":"theme","title":"风格定制"}]},{"name":"laydate","title":"日期时间","list":[{"name":"demo1","title":"功能演示一"},{"name":"demo2","title":"功能演示二"},{"name":"theme","title":"设定主题"},{"name":"special-demo","title":"特殊示例"}]},{"name":"table","title":"表格","list":[{"name":"simple","title":"简单数据表格"},{"name":"auto","title":"列宽自动分配"},{"name":"data","title":"赋值已知数据"},{"name":"tostatic","title":"转化静态表格"},{"name":"page","title":"开启分页"},{"name":"resetPage","title":"自定义分页"},{"name":"toolbar","title":"开启头部工具栏"},{"name":"totalRow","title":"开启合计行"},{"name":"height","title":"高度最大适应"},{"name":"checkbox","title":"开启复选框"},{"name":"radio","title":"开启单选框"},{"name":"cellEdit","title":"开启单元格编辑"},{"name":"form","title":"加入表单元素"},{"name":"style","title":"设置单元格样式"},{"name":"fixed","title":"固定列"},{"name":"operate","title":"数据操作"},{"name":"parseData","title":"解析任意数据格式"},{"name":"onrow","title":"监听行事件"},{"name":"reload","title":"数据表格的重载"},{"name":"initSort","title":"设置初始排序"},{"name":"cellEvent","title":"监听单元格事件"},{"name":"thead","title":"复杂表头"}]},{"name":"laypage","title":"分页","list":[{"name":"demo1","title":"功能演示一"},{"name":"demo2","title":"功能演示二"}]},{"name":"upload","title":"上传","list":[{"name":"demo1","title":"功能演示一"},{"name":"demo2","title":"功能演示二"}]},{"name":"colorpicker","title":"颜色选择器"},{"name":"slider","title":"滑块组件"},{"name":"rate","title":"评分"},{"name":"carousel","title":"轮播"},{"name":"flow","title":"流加载"},{"name":"util","title":"工具"},{"name":"code","title":"代码修饰"},{"name":"layim","title":"即时聊天","jump":"senior/im/"}]},{"name":"template","title":"页面","icon":"layui-icon-template","list":[{"name":"personalpage","title":"个人主页","jump":"template/personalpage"},{"name":"addresslist","title":"通讯录","jump":"template/addresslist"},{"name":"caller","title":"客户列表","jump":"template/caller"},{"name":"goodslist","title":"商品列表","jump":"template/goodslist"},{"name":"msgboard","title":"留言板","jump":"template/msgboard"},{"name":"search","title":"搜索结果","jump":"template/search"},{"name":"reg","title":"注册","jump":"user/reg"},{"name":"login","title":"登入","jump":"user/login"},{"name":"forget","title":"忘记密码","jump":"user/forget"},{"name":"404","title":"404","jump":"template/tips/404"},{"name":"error","title":"错误提示","jump":"template/tips/error"},{"name":"","title":"内嵌页面","spread":true,"list":[{"name":"","title":"百度一下","jump":"/iframe/link/baidu"},{"name":"","title":"layui官网","jump":"/iframe/link/layui"},{"name":"","title":"layuiAdmin官网","jump":"/iframe/link/layuiAdmin"}]}]},{"name":"app","title":"应用","icon":"layui-icon-app","list":[{"name":"content","title":"内容系统","list":[{"name":"list","title":"文章列表"},{"name":"tags","title":"分类管理"},{"name":"comment","title":"评论管理"}]},{"name":"forum","title":"社区系统","list":[{"name":"list","title":"帖子列表"},{"name":"replys","title":"回帖列表"}]},{"name":"message","title":"消息中心"},{"name":"workorder","title":"工单系统","jump":"app/workorder/list"}]},{"name":"senior","title":"高级","icon":"layui-icon-senior","list":[{"name":"im","title":"通讯系统"},{"name":"echarts","title":"Echarts集成","list":[{"name":"line","title":"折线图"},{"name":"bar","title":"柱状图"},{"name":"map","title":"地图"}]}]},{"name":"user","title":"用户","icon":"layui-icon-user","list":[{"name":"user","title":"网站用户","jump":"user/user/list"},{"name":"administrators-list","title":"后台管理员","jump":"user/administrators/list"},{"name":"administrators-rule","title":"角色管理","jump":"user/administrators/role"}]},{"name":"set","title":"设置","icon":"layui-icon-set","list":[{"name":"system","title":"系统设置","spread":true,"list":[{"name":"website","title":"网站设置"},{"name":"email","title":"邮件服务"}]},{"name":"user","title":"我的设置","spread":true,"list":[{"name":"info","title":"基本资料"},{"name":"password","title":"修改密码"}]}]},{"name":"get","title":"授权","icon":"layui-icon-auz","jump":"system/get"}]} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/message/all.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": 60 5 | ,"data": [{ 6 | "id": 123 7 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 8 | ,"time": 1510363800000 9 | }, { 10 | "id": 111 11 | ,"title": "贤心发来了一段私信" 12 | ,"time": 1510212370000 13 | }, { 14 | "id": 111 15 | ,"title": "贤心发来了一段私信" 16 | ,"time": 1510212370000 17 | }, { 18 | "id": 111 19 | ,"title": "贤心发来了一段私信" 20 | ,"time": 1510212370000 21 | }, { 22 | "id": 111 23 | ,"title": "贤心发来了一段私信" 24 | ,"time": 1510212370000 25 | }, { 26 | "id": 111 27 | ,"title": "贤心发来了一段私信" 28 | ,"time": 1510212370000 29 | }, { 30 | "id": 111 31 | ,"title": "贤心发来了一段私信" 32 | ,"time": 1510212370000 33 | }, { 34 | "id": 111 35 | ,"title": "贤心发来了一段私信" 36 | ,"time": 1510212370000 37 | }, { 38 | "id": 111 39 | ,"title": "贤心发来了一段私信" 40 | ,"time": 1510212370000 41 | }, { 42 | "id": 111 43 | ,"title": "贤心发来了一段私信" 44 | ,"time": 1507447570000 45 | }] 46 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/message/detail.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"data": { 5 | "id": 111 6 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 7 | ,"content": "

    一直以来,layui 秉承无偿开源的初心,虔诚致力于服务各层次前后端 Web 开发者,在商业横飞的当今时代,这一信念从未动摇。即便身单力薄,仍然重拾决心,埋头造轮,以尽可能地填补产品本身的缺口。在过去的一段的时间,我一直在寻求持久之道,已维持你眼前所见的一切。而 layuiAdmin 是我们尝试解决的手段之一。我相信真正有爱于 layui 生态的你,定然不会错过这一拥抱吧。

    子曰:君子不用防,小人防不住。请务必通过官网正规渠道,获得 layuiAdmin

    —— 贤心(layui.com

    " 8 | ,"time": 1510363800000 9 | } 10 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/message/direct.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": 60 5 | ,"data": [{ 6 | "id": 123 7 | ,"title": "贤心发来了一段私信" 8 | ,"time": 1510363800000 9 | }, { 10 | "id": 111 11 | ,"title": "贤心发来了一段私信" 12 | ,"time": 1510212370000 13 | }, { 14 | "id": 111 15 | ,"title": "贤心发来了一段私信" 16 | ,"time": 1510212370000 17 | }, { 18 | "id": 111 19 | ,"title": "贤心发来了一段私信" 20 | ,"time": 1510212370000 21 | }, { 22 | "id": 111 23 | ,"title": "贤心发来了一段私信" 24 | ,"time": 1510212370000 25 | }, { 26 | "id": 111 27 | ,"title": "贤心发来了一段私信" 28 | ,"time": 1510212370000 29 | }, { 30 | "id": 111 31 | ,"title": "贤心发来了一段私信" 32 | ,"time": 1510212370000 33 | }, { 34 | "id": 111 35 | ,"title": "贤心发来了一段私信" 36 | ,"time": 1510212370000 37 | }, { 38 | "id": 111 39 | ,"title": "贤心发来了一段私信" 40 | ,"time": 1510212370000 41 | }, { 42 | "id": 111 43 | ,"title": "贤心发来了一段私信" 44 | ,"time": 1507447570000 45 | }] 46 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/message/new.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"data": { 5 | "newmsg": 3 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/message/notice.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": 60 5 | ,"data": [{ 6 | "id": 123 7 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 8 | ,"time": 1510363800000 9 | }, { 10 | "id": 111 11 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 12 | ,"time": 1510212370000 13 | }, { 14 | "id": 111 15 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 16 | ,"time": 1510212370000 17 | }, { 18 | "id": 111 19 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 20 | ,"time": 1510212370000 21 | }, { 22 | "id": 111 23 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 24 | ,"time": 1510212370000 25 | }, { 26 | "id": 111 27 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 28 | ,"time": 1510212370000 29 | }, { 30 | "id": 111 31 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 32 | ,"time": 1510212370000 33 | }, { 34 | "id": 111 35 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 36 | ,"time": 1510212370000 37 | }, { 38 | "id": 111 39 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 40 | ,"time": 1510212370000 41 | }, { 42 | "id": 111 43 | ,"title": "你好新朋友,感谢使用 layuiAdmin" 44 | ,"time": 1507447570000 45 | }] 46 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/table/demo.js: -------------------------------------------------------------------------------- 1 | 2 | {"code":0,"msg":"","count":3000000,"data":[{"id":"10001","username":"杜甫","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"点击此处,显示更多。当内容超出时,点击单元格会自动显示更多内容。","experience":"116","ip":"192.168.0.8","logins":"108","joinTime":"2016-10-14"},{"id":"10002","username":"李白","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。","experience":"12","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14","LAY_CHECKED":true},{"id":"10003","username":"王勃","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"65","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10004","username":"李清照","email":"xianxin@layui.com","sex":"女","city":"浙江杭州","sign":"人生恰似一场修行","experience":"666","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10005","username":"冰心","email":"xianxin@layui.com","sex":"女","city":"浙江杭州","sign":"人生恰似一场修行","experience":"86","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10006","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"12","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10007","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"16","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10008","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"106","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"}]} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/table/demo2.js: -------------------------------------------------------------------------------- 1 | 2 | {"code":0,"msg":"","count":66,"data":[{"username":"张小三","amount":18,"province":"浙江","city":"杭州","zone":"西湖区","street":"西溪街道","address":"西溪花园","house":"30栋1单元"},{"username":"李小四","amount":39,"province":"江苏","city":"苏州","zone":"姑苏区","street":"丝绸路","address":"天墅之城","house":"9幢2单元"},{"username":"王小五","amount":8,"province":"江西","city":"南昌","zone":"青山湖区","street":"艾溪湖办事处","address":"中兴和园","house":"1幢3单元"},{"username":"赵小六","amount":16,"province":"福建","city":"泉州","zone":"丰泽区","street":"南洋街道","address":"南洋村","house":"6幢1单元"},{"username":"孙小七","amount":12,"province":"湖北","city":"武汉","zone":"武昌区","street":"武昌大道","address":"两湖花园","house":"16幢2单元"},{"username":"周小八","amount":11,"province":"安徽","city":"黄山","zone":"黄山区","street":"汤口镇","address":"温泉村","house":"21号"}]} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/table/demo3.js: -------------------------------------------------------------------------------- 1 | 2 | {"status":200,"message":"","total":8,"rows":{"item":[{"id":"10001","username":"杜甫","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"点击此处,显示更多。当内容超出时,点击单元格会自动显示更多内容。","experience":"116","ip":"192.168.0.8","logins":"108","joinTime":"2016-10-14"},{"id":"10002","username":"李白","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。","experience":"12","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10003","username":"王勃","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"65","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10004","username":"李清照","email":"xianxin@layui.com","sex":"女","city":"浙江杭州","sign":"人生恰似一场修行","experience":"666","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10005","username":"冰心","email":"xianxin@layui.com","sex":"女","city":"浙江杭州","sign":"人生恰似一场修行","experience":"86","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10006","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"12","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10007","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"16","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"},{"id":"10008","username":"贤心","email":"xianxin@layui.com","sex":"男","city":"浙江杭州","sign":"人生恰似一场修行","experience":"106","ip":"192.168.0.8","logins":"106","joinTime":"2016-10-14"}]}} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/table/user.js: -------------------------------------------------------------------------------- 1 | 2 | {"code":0,"msg":"","count":1000,"data":[{"id":10000,"username":"user-0","sex":"女","city":"城市-0","sign":"签名-0","experience":255,"logins":24,"wealth":82830700,"classify":"作家","score":57},{"id":10001,"username":"user-1","sex":"男","city":"城市-1","sign":"签名-1","experience":884,"logins":58,"wealth":64928690,"classify":"词人","score":27},{"id":10002,"username":"user-2","sex":"女","city":"城市-2","sign":"签名-2","experience":650,"logins":77,"wealth":6298078,"classify":"酱油","score":31},{"id":10003,"username":"user-3","sex":"女","city":"城市-3","sign":"签名-3","experience":362,"logins":157,"wealth":37117017,"classify":"诗人","score":68},{"id":10004,"username":"user-4","sex":"男","city":"城市-4","sign":"签名-4","experience":807,"logins":51,"wealth":76263262,"classify":"作家","score":6},{"id":10005,"username":"user-5","sex":"女","city":"城市-5","sign":"签名-5","experience":173,"logins":68,"wealth":60344147,"classify":"作家","score":87},{"id":10006,"username":"user-6","sex":"女","city":"城市-6","sign":"签名-6","experience":982,"logins":37,"wealth":57768166,"classify":"作家","score":34},{"id":10007,"username":"user-7","sex":"男","city":"城市-7","sign":"签名-7","experience":727,"logins":150,"wealth":82030578,"classify":"作家","score":28},{"id":10008,"username":"user-8","sex":"男","city":"城市-8","sign":"签名-8","experience":951,"logins":133,"wealth":16503371,"classify":"词人","score":14},{"id":10009,"username":"user-9","sex":"女","city":"城市-9","sign":"签名-9","experience":484,"logins":25,"wealth":86801934,"classify":"词人","score":75}]} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/table/user30.js: -------------------------------------------------------------------------------- 1 | 2 | {"code":0,"msg":"","count":1000,"data":[{"id":10000,"username":"user-0","sex":"女","city":"城市-0","sign":"签名-0","experience":255,"logins":24,"wealth":82830700,"classify":"作家","score":57},{"id":10001,"username":"user-1","sex":"男","city":"城市-1","sign":"签名-1","experience":884,"logins":58,"wealth":64928690,"classify":"词人","score":27},{"id":10002,"username":"user-2","sex":"女","city":"城市-2","sign":"签名-2","experience":650,"logins":77,"wealth":6298078,"classify":"酱油","score":31},{"id":10003,"username":"user-3","sex":"女","city":"城市-3","sign":"签名-3","experience":362,"logins":157,"wealth":37117017,"classify":"诗人","score":68},{"id":10004,"username":"user-4","sex":"男","city":"城市-4","sign":"签名-4","experience":807,"logins":51,"wealth":76263262,"classify":"作家","score":6},{"id":10005,"username":"user-5","sex":"女","city":"城市-5","sign":"签名-5","experience":173,"logins":68,"wealth":60344147,"classify":"作家","score":87},{"id":10006,"username":"user-6","sex":"女","city":"城市-6","sign":"签名-6","experience":982,"logins":37,"wealth":57768166,"classify":"作家","score":34},{"id":10007,"username":"user-7","sex":"男","city":"城市-7","sign":"签名-7","experience":727,"logins":150,"wealth":82030578,"classify":"作家","score":28},{"id":10008,"username":"user-8","sex":"男","city":"城市-8","sign":"签名-8","experience":951,"logins":133,"wealth":16503371,"classify":"词人","score":14},{"id":10009,"username":"user-9","sex":"女","city":"城市-9","sign":"签名-9","experience":484,"logins":25,"wealth":86801934,"classify":"词人","score":75},{"id":10010,"username":"user-10","sex":"女","city":"城市-10","sign":"签名-10","experience":1016,"logins":182,"wealth":71294671,"classify":"诗人","score":34},{"id":10011,"username":"user-11","sex":"女","city":"城市-11","sign":"签名-11","experience":492,"logins":107,"wealth":8062783,"classify":"诗人","score":6},{"id":10012,"username":"user-12","sex":"女","city":"城市-12","sign":"签名-12","experience":106,"logins":176,"wealth":42622704,"classify":"词人","score":54},{"id":10013,"username":"user-13","sex":"男","city":"城市-13","sign":"签名-13","experience":1047,"logins":94,"wealth":59508583,"classify":"诗人","score":63},{"id":10014,"username":"user-14","sex":"男","city":"城市-14","sign":"签名-14","experience":873,"logins":116,"wealth":72549912,"classify":"词人","score":8},{"id":10015,"username":"user-15","sex":"女","city":"城市-15","sign":"签名-15","experience":1068,"logins":27,"wealth":52737025,"classify":"作家","score":28},{"id":10016,"username":"user-16","sex":"女","city":"城市-16","sign":"签名-16","experience":862,"logins":168,"wealth":37069775,"classify":"酱油","score":86},{"id":10017,"username":"user-17","sex":"女","city":"城市-17","sign":"签名-17","experience":1060,"logins":187,"wealth":66099525,"classify":"作家","score":69},{"id":10018,"username":"user-18","sex":"女","city":"城市-18","sign":"签名-18","experience":866,"logins":88,"wealth":81722326,"classify":"词人","score":74},{"id":10019,"username":"user-19","sex":"女","city":"城市-19","sign":"签名-19","experience":682,"logins":106,"wealth":68647362,"classify":"词人","score":51},{"id":10020,"username":"user-20","sex":"男","city":"城市-20","sign":"签名-20","experience":770,"logins":24,"wealth":92420248,"classify":"诗人","score":87},{"id":10021,"username":"user-21","sex":"男","city":"城市-21","sign":"签名-21","experience":184,"logins":131,"wealth":71566045,"classify":"词人","score":99},{"id":10022,"username":"user-22","sex":"男","city":"城市-22","sign":"签名-22","experience":739,"logins":152,"wealth":60907929,"classify":"作家","score":18},{"id":10023,"username":"user-23","sex":"女","city":"城市-23","sign":"签名-23","experience":127,"logins":82,"wealth":14765943,"classify":"作家","score":30},{"id":10024,"username":"user-24","sex":"女","city":"城市-24","sign":"签名-24","experience":212,"logins":133,"wealth":59011052,"classify":"词人","score":76},{"id":10025,"username":"user-25","sex":"女","city":"城市-25","sign":"签名-25","experience":938,"logins":182,"wealth":91183097,"classify":"作家","score":69},{"id":10026,"username":"user-26","sex":"男","city":"城市-26","sign":"签名-26","experience":978,"logins":7,"wealth":48008413,"classify":"作家","score":65},{"id":10027,"username":"user-27","sex":"女","city":"城市-27","sign":"签名-27","experience":371,"logins":44,"wealth":64419691,"classify":"诗人","score":60},{"id":10028,"username":"user-28","sex":"女","city":"城市-28","sign":"签名-28","experience":977,"logins":21,"wealth":75935022,"classify":"作家","score":37},{"id":10029,"username":"user-29","sex":"男","city":"城市-29","sign":"签名-29","experience":647,"logins":107,"wealth":97450636,"classify":"酱油","score":27}]} -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/upload/demo.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0, 3 | "msg": "", 4 | "data": { 5 | "src": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/forget.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "注册成功" 4 | ,"data": { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/login.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "登入成功" 4 | ,"data": { 5 | "access_token": "c262e61cd13ad99fc650e6908c7e5e65b63d2f32185ecfed6b801ee3fbdd5c0a" 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/logout.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "退出成功" 4 | ,"data": null 5 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/reg.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "注册成功" 4 | ,"data": { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/resetpass.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "注册成功" 4 | ,"data": { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/session.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"data": { 5 | "username": "贤心" 6 | ,"sex": "男" 7 | ,"role": 1 8 | } 9 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/user/sms.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "注册成功" 4 | ,"data": { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/useradmin/mangadmin.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "1001" 7 | ,"loginname": "admin" 8 | ,"telphone": "11111111111" 9 | ,"email": "111@qq.com" 10 | ,"role": "超级管理员" 11 | ,"jointime": "20150217" 12 | ,"check": true 13 | },{ 14 | "id": "1002" 15 | ,"loginname": "common-1" 16 | ,"telphone": "22222222222" 17 | ,"email": "222@qq.com" 18 | ,"role": "管理员" 19 | ,"jointime": "20160217" 20 | ,"check": false 21 | },{ 22 | "id": "1003" 23 | ,"loginname": "common-2" 24 | ,"telphone": "33333333333" 25 | ,"email": "333@qq.com" 26 | ,"role": "管理员" 27 | ,"jointime": "20161012" 28 | ,"check": false 29 | },{ 30 | "id": "1004" 31 | ,"loginname": "common-3" 32 | ,"telphone": "44444444444" 33 | ,"email": "444@qq.com" 34 | ,"role": "管理员" 35 | ,"jointime": "20170518" 36 | ,"check": true 37 | },{ 38 | "id": "1005" 39 | ,"loginname": "common-4" 40 | ,"telphone": "55555555555" 41 | ,"email": "555@qq.com" 42 | ,"role": "管理员" 43 | ,"jointime": "20180101" 44 | ,"check": false 45 | },{ 46 | "id": "1006" 47 | ,"loginname": "common-5" 48 | ,"telphone": "66666666666" 49 | ,"email": "666@qq.com" 50 | ,"role": "管理员" 51 | ,"jointime": "20160217" 52 | ,"check": false 53 | },{ 54 | "id": "1007" 55 | ,"loginname": "common-6" 56 | ,"telphone": "77777777777" 57 | ,"email": "777@qq.com" 58 | ,"role": "管理员" 59 | ,"jointime": "20161012" 60 | ,"check": false 61 | },{ 62 | "id": "1008" 63 | ,"loginname": "common-7" 64 | ,"telphone": "88888888888" 65 | ,"email": "888@qq.com" 66 | ,"role": "管理员" 67 | ,"jointime": "20170518" 68 | ,"check": true 69 | },{ 70 | "id": "1009" 71 | ,"loginname": "common-8" 72 | ,"telphone": "99999999999" 73 | ,"email": "999@qq.com" 74 | ,"role": "管理员" 75 | ,"jointime": "20180101" 76 | ,"check": false 77 | }] 78 | } 79 | -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/useradmin/role.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "1" 7 | ,"rolename": "超级管理员" 8 | ,"limits": "管理所有的管理员" 9 | ,"descr": "拥有至高无上的权利" 10 | ,"check": true 11 | },{ 12 | "id": "2" 13 | ,"rolename": "管理员" 14 | ,"limits": "所有列表的管理" 15 | ,"descr": "事情很多,权力很大" 16 | ,"check": true 17 | },{ 18 | "id": "3" 19 | ,"rolename": "文章撰写员" 20 | ,"limits": "负责文章的编写" 21 | ,"descr": "文采第一的人才集合" 22 | ,"check": false 23 | },{ 24 | "id": "4" 25 | ,"rolename": "纠错员" 26 | ,"limits": "负责文章内容的修改" 27 | ,"descr": "暂无" 28 | ,"check": false 29 | },{ 30 | "id": "5" 31 | ,"rolename": "统计人员" 32 | ,"limits": "对数据进行统计" 33 | ,"descr": "暂无" 34 | ,"check": false 35 | },{ 36 | "id": "6" 37 | ,"rolename": "评估员" 38 | ,"limits": "对统计数据进行评估" 39 | ,"descr": "及时捕捉市场发展动态" 40 | ,"check": false 41 | },{ 42 | "id": "7" 43 | ,"rolename": "采购员" 44 | ,"limits": "负责员工的伙食" 45 | ,"descr": "暂无" 46 | ,"check": false 47 | },{ 48 | "id": "8" 49 | ,"rolename": "推销员" 50 | ,"limits": "介绍销售公司产品" 51 | ,"descr": "暂无" 52 | ,"check": false 53 | }] 54 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/useradmin/webuser.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "id": "001" 7 | ,"username": "用户-1" 8 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 9 | ,"phone": 12345678901 10 | ,"email": "11111@qq.com" 11 | ,"sex": "男" 12 | ,"ip": "1111111" 13 | ,"jointime": 20171204 14 | },{ 15 | "id": "002" 16 | ,"username": "用户-2" 17 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 18 | ,"phone": 12345678901 19 | ,"email": "11111@qq.com" 20 | ,"sex": "男" 21 | ,"ip": "1111111" 22 | ,"jointime": 20171204 23 | },{ 24 | "id": "003" 25 | ,"username": "用户-3" 26 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 27 | ,"phone": 12345678901 28 | ,"email": "11111@qq.com" 29 | ,"sex": "女" 30 | ,"ip": "1111111" 31 | ,"jointime": 20171011 32 | ,"LAY_CHECKED": true 33 | },{ 34 | "id": "004" 35 | ,"username": "用户-4" 36 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 37 | ,"phone": 12345678901 38 | ,"email": "11111@qq.com" 39 | ,"sex": "男" 40 | ,"ip": "1111111" 41 | ,"jointime": 20160505 42 | },{ 43 | "id": "005" 44 | ,"username": "用户-5" 45 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 46 | ,"phone": 12345678901 47 | ,"email": "11111@qq.com" 48 | ,"sex": "男" 49 | ,"ip": "1111111" 50 | ,"jointime": 20171204 51 | },{ 52 | "id": "006" 53 | ,"username": "用户-6" 54 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 55 | ,"phone": 12345678901 56 | ,"email": "11111@qq.com" 57 | ,"sex": "男" 58 | ,"ip": "1111111" 59 | ,"jointime": 20171204 60 | },{ 61 | "id": "007" 62 | ,"username": "用户-7" 63 | ,"avatar": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif" 64 | ,"phone": 12345678901 65 | ,"email": "11111@qq.com" 66 | ,"sex": "男" 67 | ,"ip": "1111111" 68 | ,"jointime": 20180210 69 | },{ 70 | "id": "008" 71 | ,"username": "用户-8" 72 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 73 | ,"phone": 12345678901 74 | ,"email": "11111@qq.com" 75 | ,"sex": "女" 76 | ,"ip": "1111111" 77 | ,"jointime": 20171204 78 | },{ 79 | "id": "009" 80 | ,"username": "用户-9" 81 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 82 | ,"phone": 12345678901 83 | ,"email": "11111@qq.com" 84 | ,"sex": "女" 85 | ,"ip": "1111111" 86 | ,"jointime": 20171204 87 | },{ 88 | "id": "010" 89 | ,"username": "用户-10" 90 | ,"avatar": "https://wx4.sinaimg.cn/mw1024/5db11ff4gy1fmx4keaw9pj20dw08caa4.jpg" 91 | ,"phone": 12345678901 92 | ,"email": "11111@qq.com" 93 | ,"sex": "男" 94 | ,"ip": "1111111" 95 | ,"jointime": 20170719 96 | },{ 97 | "id": "011" 98 | ,"username": "用户-11" 99 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 100 | ,"phone": 12345678901 101 | ,"email": "11111@qq.com" 102 | ,"sex": "男" 103 | ,"ip": "1111111" 104 | ,"jointime": 20171204 105 | },{ 106 | "id": "012" 107 | ,"username": "用户-12" 108 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 109 | ,"phone": 12345678901 110 | ,"email": "11111@qq.com" 111 | ,"sex": "女" 112 | ,"ip": "1111111" 113 | ,"jointime": 20171204 114 | },{ 115 | "id": "013" 116 | ,"username": "用户-13" 117 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 118 | ,"phone": 12345678901 119 | ,"email": "11111@qq.com" 120 | ,"sex": "女" 121 | ,"ip": "1111111" 122 | ,"jointime": 20171204 123 | ,"LAY_CHECKED": true 124 | },{ 125 | "id": "014" 126 | ,"username": "用户-14" 127 | ,"avatar": "https://wx3.sinaimg.cn/mw690/5db11ff4gy1fmx4keca8ag208g06iglw.gif" 128 | ,"phone": 12345678901 129 | ,"email": "11111@qq.com" 130 | ,"sex": "男" 131 | ,"ip": "1111111" 132 | ,"jointime": 20171204 133 | },{ 134 | "id": "015" 135 | ,"username": "用户-15" 136 | ,"avatar": "https://wx2.sinaimg.cn/mw690/5db11ff4gy1fmx4kec5bvj20eb0h3mxh.jpg" 137 | ,"phone": 12345678901 138 | ,"email": "11111@qq.com" 139 | ,"sex": "男" 140 | ,"ip": "1111111" 141 | ,"jointime": 20171204 142 | }] 143 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/workorder/demo.js: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0 3 | ,"msg": "" 4 | ,"count": "100" 5 | ,"data": [{ 6 | "orderid": 111 7 | ,"title": "移动支付踏入马来西亚,聚合支付紧随其后" 8 | ,"attr": "公告" 9 | ,"progress": "25%" 10 | ,"submit": "贤心" 11 | ,"accept": "员工-1" 12 | ,"state": "处理中" 13 | },{ 14 | "orderid": 222 15 | ,"title": "凡科拖拽式免费建站神器,享双重优惠!" 16 | ,"attr": "讨论" 17 | ,"progress": "100%" 18 | ,"submit": "猫吃" 19 | ,"accept": "员工-1" 20 | ,"state": "已处理" 21 | },{ 22 | "orderid": 333 23 | ,"title": "看着别人的老板给员工送汽车有感" 24 | ,"attr": "分享" 25 | ,"progress": "0%" 26 | ,"submit": "纸飞机" 27 | ,"accept": "" 28 | ,"state": "未分配" 29 | },{ 30 | "orderid": 444 31 | ,"title": "DISCUZ的云平台应该彻底完了" 32 | ,"attr": "提问" 33 | ,"progress": "0%" 34 | ,"submit": "纸飞机" 35 | ,"accept": "" 36 | ,"state": "未分配" 37 | },{ 38 | "orderid": 555 39 | ,"title": "现在个人网站还有必要长期坚持下去吗?" 40 | ,"attr": "提问" 41 | ,"progress": "50%" 42 | ,"submit": "纸飞机" 43 | ,"accept": "员工-2" 44 | ,"state": "处理中" 45 | },{ 46 | "orderid": 666 47 | ,"title": "向北京公安局投诉了京东商城" 48 | ,"attr": "公告" 49 | ,"progress": "25%" 50 | ,"submit": "纸飞机" 51 | ,"accept": "员工-3" 52 | ,"state": "处理中" 53 | },{ 54 | "orderid": 777 55 | ,"title": "游戏 网页美工,一个月多少工资才正常?" 56 | ,"attr": "提问" 57 | ,"progress": "100%" 58 | ,"submit": "纸飞机" 59 | ,"accept": "员工-1" 60 | ,"state": "已处理" 61 | },{ 62 | "orderid": 888 63 | ,"title": "几年没来了,蓝色理想帖子这么少了啊" 64 | ,"attr": "提问" 65 | ,"progress": "0%" 66 | ,"submit": "纸飞机" 67 | ,"accept": "" 68 | ,"state": "未分配" 69 | },{ 70 | "orderid": 999 71 | ,"title": "我的天,求推荐靠谱的学习网站" 72 | ,"attr": "提问" 73 | ,"progress": "50%" 74 | ,"submit": "纸飞机" 75 | ,"accept": "员工-2" 76 | ,"state": "处理中" 77 | }] 78 | } -------------------------------------------------------------------------------- /static/lib/layuiadmin/json/说明.txt: -------------------------------------------------------------------------------- 1 | 2 | 注意:这里是模拟的数据。 3 | 实际应用时,请在模板文件(.html)中的 lay-url="" 和其它相关接口的 url 设置成你真实的接口地址 -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/extend/echartsTheme.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(function(e){e("echartsTheme",{color:["#009688","#1E9FFF","#5FB878","#FFB980","#D87A80","#8d98b3","#e5cf0d","#97b552","#95706d","#dc69aa","#07a2a4","#9a7fd1","#588dd5","#f5994e","#c05050","#59678c","#c9ab00","#7eb00a","#6f5553","#c14089"],title:{textStyle:{fontWeight:"normal",color:"#666"}},dataRange:{itemWidth:15,color:["#009688","#e0ffff"]},toolbox:{color:["#1e90ff","#1e90ff","#1e90ff","#1e90ff"],effectiveColor:"#ff4500"},tooltip:{backgroundColor:"rgba(50,50,50,0.5)",axisPointer:{type:"line",lineStyle:{color:"#009688"},crossStyle:{color:"#008acd"},shadowStyle:{color:"rgba(200,200,200,0.2)"}}},dataZoom:{dataBackgroundColor:"#efefff",fillerColor:"rgba(182,162,222,0.2)",handleColor:"#008acd"},grid:{borderColor:"#eee"},categoryAxis:{axisLine:{lineStyle:{color:"#009688"}},axisTick:{show:!1},splitLine:{lineStyle:{color:["#eee"]}}},valueAxis:{axisLine:{lineStyle:{color:"#009688"}},splitArea:{show:!0,areaStyle:{color:["rgba(250,250,250,0.1)","rgba(200,200,200,0.1)"]}},splitLine:{lineStyle:{color:["#eee"]}}},polar:{axisLine:{lineStyle:{color:"#ddd"}},splitArea:{show:!0,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(200,200,200,0.2)"]}},splitLine:{lineStyle:{color:"#ddd"}}},timeline:{lineStyle:{color:"#009688"},controlStyle:{normal:{color:"#009688"},emphasis:{color:"#009688"}},symbol:"emptyCircle",symbolSize:3},bar:{itemStyle:{normal:{barBorderRadius:2},emphasis:{barBorderRadius:2}}},line:{smooth:!0,symbol:"emptyCircle",symbolSize:3},k:{itemStyle:{normal:{color:"#d87a80",color0:"#2ec7c9",lineStyle:{color:"#d87a80",color0:"#2ec7c9"}}}},scatter:{symbol:"circle",symbolSize:4},radar:{symbol:"emptyCircle",symbolSize:3},map:{itemStyle:{normal:{areaStyle:{color:"#ddd"},label:{textStyle:{color:"#d87a80"}}},emphasis:{areaStyle:{color:"#fe994e"}}}},force:{itemStyle:{normal:{linkStyle:{color:"#1e90ff"}}}},chord:{itemStyle:{normal:{borderWidth:1,borderColor:"rgba(128, 128, 128, 0.5)",chordStyle:{lineStyle:{color:"rgba(128, 128, 128, 0.5)"}}},emphasis:{borderWidth:1,borderColor:"rgba(128, 128, 128, 0.5)",chordStyle:{lineStyle:{color:"rgba(128, 128, 128, 0.5)"}}}}},gauge:{axisLine:{lineStyle:{color:[[.2,"#2ec7c9"],[.8,"#5ab1ef"],[1,"#d87a80"]],width:10}},axisTick:{splitNumber:10,length:15,lineStyle:{color:"auto"}},splitLine:{length:22,lineStyle:{color:"auto"}},pointer:{width:5}},textStyle:{fontFamily:"微软雅黑, Arial, Verdana, sans-serif"}})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/index.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.extend({setter:"config",admin:"lib/admin",view:"lib/view"}).define(["setter","admin"],function(a){var e=layui.setter,i=layui.element,n=layui.admin,t=n.tabsPage,d=layui.view,l=function(a,d){var l,u=r("#LAY_app_tabsheader>li"),b=a.replace(/(^http(s*):)|(\?[\s\S]*$)/g,"");u.each(function(e){var i=r(this),n=i.attr("lay-id");n===a&&(l=!0,t.index=e)}),d=d||"新标签页";var y=function(){i.tabChange(o,a),n.tabsBodyChange(t.index,{url:a,text:d})};if(e.pageTabs)l||(setTimeout(function(){r(s).append(['
    ','',"
    "].join("")),y()},10),t.index=u.length,i.tabAdd(o,{title:""+d+"",id:a,attr:b}));else{var m=n.tabsBody(n.tabsPage.index).find(".layadmin-iframe");m[0].contentWindow.location.href=a}y()},s="#LAY_app_body",o="layadmin-layout-tabs",r=layui.$;r(window);n.screen()<2&&n.sideFlexible(),layui.config({base:e.base+"modules/"}),layui.each(e.extend,function(a,i){var n={};n[i]="{/}"+e.base+"lib/extend/"+i,layui.extend(n)}),d().autoRender(),layui.use("common"),a("index",{openTabsPage:l})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/code 2.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon 2.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon-ext 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon-ext 2.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-0 2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-0 2.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-1 2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-1 2.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-2 2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-2 2.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/font/iconfont.eot -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/lib/layui/font/iconfont.woff -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/carousel 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",o=">*[carousel-item]>*",l="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(o),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.indicator(),e.elemItem.length<=1||(e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
      ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
    "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.indicator(),e.elemItem.length<=1||(e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
      ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
    "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
    1. '+o.replace(/[\r\t\n]+/g,"
    2. ")+"
    "),c.find(">.layui-code-h3")[0]||c.prepend('

    '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

    ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
    1. '+o.replace(/[\r\t\n]+/g,"
    2. ")+"
    "),c.find(">.layui-code-h3")[0]||c.prepend('

    '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

    ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/flow 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/flow.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/laypage 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var a=document,t="getElementById",r="getElementsByTagName",n="laypage",i="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.groups=0|a.groups||5,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),a.groups<0?a.groups=0:a.groups>a.pages&&(a.groups=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var t=a.pages>a.groups?Math.ceil((a.curr+(a.groups>1?1:0))/(a.groups>0?a.groups:1)):1,r={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";t>1&&a.first!==!1&&0!==a.groups&&e.push(''+(a.first||1)+"");var r=Math.floor((a.groups-1)/2),n=t>1?a.curr-r:1,i=t>1?function(){var e=a.curr+(a.groups-r-1);return e>a.pages?a.pages:e}():a.groups;for(i-n2&&e.push('');n<=i;n++)n===a.curr?e.push('"+n+""):e.push(''+n+"");return a.pages>a.groups&&a.pages>i&&a.last!==!1&&(i+1…'),0!==a.groups&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){r[t]&&e.push(r[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,n=t.config,i=e.children,u=e[r]("button")[0],p=e[r]("input")[0],l=e[r]("select")[0],o=function(){var e=0|p.value.replace(/\s|\D/g,"");e&&(n.curr=e,t.render())};if(a)return o();for(var c=0,g=i.length;cn.pages||(n.curr=e,t.render())});l&&s.on(l,"change",function(){var e=this.value;n.curr*e>n.count&&(n.curr=Math.ceil(n.count/e)),n.limit=e,t.render()}),u&&s.on(u,"click",function(){o()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[r]("input")[0];t&&s.on(t,"keyup",function(t){var r=this.value,n=t.keyCode;/^(37|38|39|40)$/.test(n)||(/\D/.test(r)&&(this.value=r.replace(/\D/,"")),13===n&&a.jump(e,!0))})}},u.prototype.render=function(e){var r=this,n=r.config,i=r.type(),u=r.view();2===i?n.elem&&(n.elem.innerHTML=u):3===i?n.elem.html(u):a[t](n.elem)&&(a[t](n.elem).innerHTML=u),n.jump&&n.jump(n,e);var s=a[t]("layui-laypage-"+n.index);r.jump(s),n.hash&&!e&&(location.hash="!"+n.hash+"="+n.curr),r.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(n,s)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/laypage.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var a=document,t="getElementById",r="getElementsByTagName",n="laypage",i="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.groups=0|a.groups||5,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),a.groups<0?a.groups=0:a.groups>a.pages&&(a.groups=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var t=a.pages>a.groups?Math.ceil((a.curr+(a.groups>1?1:0))/(a.groups>0?a.groups:1)):1,r={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";t>1&&a.first!==!1&&0!==a.groups&&e.push(''+(a.first||1)+"");var r=Math.floor((a.groups-1)/2),n=t>1?a.curr-r:1,i=t>1?function(){var e=a.curr+(a.groups-r-1);return e>a.pages?a.pages:e}():a.groups;for(i-n2&&e.push('');n<=i;n++)n===a.curr?e.push('"+n+""):e.push(''+n+"");return a.pages>a.groups&&a.pages>i&&a.last!==!1&&(i+1…'),0!==a.groups&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){r[t]&&e.push(r[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,n=t.config,i=e.children,u=e[r]("button")[0],p=e[r]("input")[0],l=e[r]("select")[0],o=function(){var e=0|p.value.replace(/\s|\D/g,"");e&&(n.curr=e,t.render())};if(a)return o();for(var c=0,g=i.length;cn.pages||(n.curr=e,t.render())});l&&s.on(l,"change",function(){var e=this.value;n.curr*e>n.count&&(n.curr=Math.ceil(n.count/e)),n.limit=e,t.render()}),u&&s.on(u,"click",function(){o()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[r]("input")[0];t&&s.on(t,"keyup",function(t){var r=this.value,n=t.keyCode;/^(37|38|39|40)$/.test(n)||(/\D/.test(r)&&(this.value=r.replace(/\D/,"")),13===n&&a.jump(e,!0))})}},u.prototype.render=function(e){var r=this,n=r.config,i=r.type(),u=r.view();2===i?n.elem&&(n.elem.innerHTML=u):3===i?n.elem.html(u):a[t](n.elem)&&(a[t](n.elem).innerHTML=u),n.jump&&n.jump(n,e);var s=a[t]("layui-laypage-"+n.index);r.jump(s),n.hash&&!e&&(location.hash="!"+n.hash+"="+n.curr),r.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(n,s)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/laytpl 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},n={exp:function(e){return new RegExp(e,"g")},query:function(e,n,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return c((n||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},n={exp:function(e){return new RegExp(e,"g")},query:function(e,n,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return c((n||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/tree 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
      '),s=o(["
    • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
    • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
      '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/tree.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
        '),s=o(["
      • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
      • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
        '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/util 2.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,t={fixbar:function(e){var t,a,i="layui-fixbar",l="layui-fixbar-top",r=o(document),c=o("body");e=o.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var n=[e.bar1,e.bar2,""],u=o(['
          ',e.bar1?'
        • '+n[0]+"
        • ":"",e.bar2?'
        • '+n[1]+"
        • ":"",'
        • '+n[2]+"
        • ","
        "].join("")),s=u.find("."+l),b=function(){var o=r.scrollTop();o>=e.showHeight?t||(s.show(),t=1):t&&(s.hide(),t=0)};o("."+i)[0]||("object"==typeof e.css&&u.css(e.css),c.append(u),b(),u.find("li").on("click",function(){var t=o(this),a=t.attr("lay-type");"top"===a&&o("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){b()},100)}))},countdown:function(e,o,t){var a=this,i="function"==typeof o,l=new Date(e).getTime(),r=new Date(!o||i?(new Date).getTime():o).getTime(),c=l-r,n=[Math.floor(c/864e5),Math.floor(c/36e5)%24,Math.floor(c/6e4)%60,Math.floor(c/1e3)%60];i&&(t=o);var u=setTimeout(function(){a.countdown(e,r+1e3,t)},1e3);return t&&t(c>0?n:[0,0,0,0],o,u),c<=0&&clearTimeout(u),u},timeAgo:function(e,o){var t=(new Date).getTime()-new Date(e).getTime();return t>2592e6?(t=new Date(e).toLocaleString(),o&&(t=t.replace(/\s[\S]+$/g,"")),t):t>=864e5?(t/1e3/60/60/24|0)+"天前":t>=36e5?(t/1e3/60/60|0)+"小时前":t>=18e4?(t/1e3/60|0)+"分钟前":t<0?"未来":"刚刚"}};e("util",t)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/layui/lay/modules/util.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.0.2 MIT License By http://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,t={fixbar:function(e){var t,a,i="layui-fixbar",l="layui-fixbar-top",r=o(document),c=o("body");e=o.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var n=[e.bar1,e.bar2,""],u=o(['
          ',e.bar1?'
        • '+n[0]+"
        • ":"",e.bar2?'
        • '+n[1]+"
        • ":"",'
        • '+n[2]+"
        • ","
        "].join("")),s=u.find("."+l),b=function(){var o=r.scrollTop();o>=e.showHeight?t||(s.show(),t=1):t&&(s.hide(),t=0)};o("."+i)[0]||("object"==typeof e.css&&u.css(e.css),c.append(u),b(),u.find("li").on("click",function(){var t=o(this),a=t.attr("lay-type");"top"===a&&o("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){b()},100)}))},countdown:function(e,o,t){var a=this,i="function"==typeof o,l=new Date(e).getTime(),r=new Date(!o||i?(new Date).getTime():o).getTime(),c=l-r,n=[Math.floor(c/864e5),Math.floor(c/36e5)%24,Math.floor(c/6e4)%60,Math.floor(c/1e3)%60];i&&(t=o);var u=setTimeout(function(){a.countdown(e,r+1e3,t)},1e3);return t&&t(c>0?n:[0,0,0,0],o,u),c<=0&&clearTimeout(u),u},timeAgo:function(e,o){var t=(new Date).getTime()-new Date(e).getTime();return t>2592e6?(t=new Date(e).toLocaleString(),o&&(t=t.replace(/\s[\S]+$/g,"")),t):t>=864e5?(t/1e3/60/60/24|0)+"天前":t>=36e5?(t/1e3/60/60|0)+"小时前":t>=18e4?(t/1e3/60|0)+"分钟前":t<0?"未来":"刚刚"}};e("util",t)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/lib/view.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["laytpl","layer"],function(e){var t=layui.jquery,a=layui.laytpl,n=layui.layer,r=layui.setter,o=(layui.device(),layui.hint()),i=function(e){return new d(e)},s="LAY_app_body",d=function(e){this.id=e,this.container=t("#"+(e||s))};i.loading=function(e){e.append(this.elemLoad=t(''))},i.removeLoad=function(){this.elemLoad&&this.elemLoad.remove()},i.exit=function(e){layui.data(r.tableName,{key:r.request.tokenName,remove:!0}),e&&e()},i.req=function(e){var a=e.success,n=e.error,o=r.request,s=r.response,d=function(){return r.debug?"
        URL:"+e.url:""};if(e.data=e.data||{},e.headers=e.headers||{},o.tokenName){var l="string"==typeof e.data?JSON.parse(e.data):e.data;e.data[o.tokenName]=o.tokenName in l?e.data[o.tokenName]:layui.data(r.tableName)[o.tokenName]||"",e.headers[o.tokenName]=o.tokenName in e.headers?e.headers[o.tokenName]:layui.data(r.tableName)[o.tokenName]||""}return delete e.success,delete e.error,t.ajax(t.extend({type:"get",dataType:"json",success:function(t){var n=s.statusCode;if(t[s.statusName]==n.ok)"function"==typeof e.done&&e.done(t);else if(t[s.statusName]==n.logout)i.exit();else{var r=["Error: "+(t[s.msgName]||"返回状态码异常"),d()].join("");i.error(r)}"function"==typeof a&&a(t)},error:function(e,t){var a=["请求异常,请重试
        错误信息:"+t,d()].join("");i.error(a),"function"==typeof n&&n(res)}},e))},i.popup=function(e){var a=e.success,r=e.skin;return delete e.success,delete e.skin,n.open(t.extend({type:1,title:"提示",content:"",id:"LAY-system-view-popup",skin:"layui-layer-admin"+(r?" "+r:""),shadeClose:!0,closeBtn:!1,success:function(e,r){var o=t('');e.append(o),o.on("click",function(){n.close(r)}),"function"==typeof a&&a.apply(this,arguments)}},e))},i.error=function(e,a){return i.popup(t.extend({content:e,maxWidth:300,offset:"t",anim:6,id:"LAY_adminError"},a))},d.prototype.render=function(e,a){var n=this;layui.router();return e=r.views+e+r.engine,t("#"+s).children(".layadmin-loading").remove(),i.loading(n.container),t.ajax({url:e,type:"get",dataType:"html",data:{v:layui.cache.version},success:function(e){e="
        "+e+"
        ";var r=t(e).find("title"),o=r.text()||(e.match(/\([\s\S]*)\<\/title>/)||[])[1],s={title:o,body:e};r.remove(),n.params=a||{},n.then&&(n.then(s),delete n.then),n.parse(e),i.removeLoad(),n.done&&(n.done(s),delete n.done)},error:function(e){return i.removeLoad(),n.render.isError?i.error("请求视图文件异常,状态:"+e.status):(404===e.status?n.render("template/tips/404"):n.render("template/tips/error"),void(n.render.isError=!0))}}),n},d.prototype.parse=function(e,n,r){var s=this,d="object"==typeof e,l=d?e:t(e),u=d?e:l.find("*[template]"),c=function(e){var n=a(e.dataElem.html()),o=t.extend({params:p.params},e.res);e.dataElem.after(n.render(o)),"function"==typeof r&&r();try{e.done&&new Function("d",e.done)(o)}catch(i){console.error(e.dataElem[0],"\n存在错误回调脚本\n\n",i)}},p=layui.router();l.find("title").remove(),s.container[n?"after":"html"](l.children()),p.params=s.params||{};for(var y=u.length;y>0;y--)!function(){var e=u.eq(y-1),t=e.attr("lay-done")||e.attr("lay-then"),n=a(e.attr("lay-url")||"").render(p),r=a(e.attr("lay-data")||"").render(p),s=a(e.attr("lay-headers")||"").render(p);try{r=new Function("return "+r+";")()}catch(d){o.error("lay-data: "+d.message),r={}}try{s=new Function("return "+s+";")()}catch(d){o.error("lay-headers: "+d.message),s=s||{}}n?i.req({type:e.attr("lay-type")||"get",url:n,data:r,dataType:"json",headers:s,success:function(a){c({dataElem:e,res:a,done:t})}}):c({dataElem:e,done:t})}();return s},d.prototype.autoRender=function(e,a){var n=this;t(e||"body").find("*[template]").each(function(e,a){var r=t(this);n.container=r,n.parse(r,"refresh")})},d.prototype.send=function(e,t){var n=a(e||this.container.html()).render(t||{});return this.container.html(n),this},d.prototype.refresh=function(e){var t=this,a=t.container.next(),n=a.attr("lay-templateid");return t.id!=n?t:(t.parse(t.container,"refresh",function(){t.container.siblings('[lay-templateid="'+t.id+'"]:last').remove(),"function"==typeof e&&e()}),t)},d.prototype.then=function(e){return this.then=e,this},d.prototype.done=function(e){return this.done=e,this},e("view",i)}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/common.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(function(e){var i=(layui.$,layui.layer,layui.laytpl,layui.setter,layui.view,layui.admin);i.events.logout=function(){i.req({url:layui.setter.base+"json/user/logout.js",type:"get",data:{},done:function(e){i.exit(function(){location.href="user/login.html"})}})},e("common",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/console.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(function(e){layui.use(["admin","carousel"],function(){var e=layui.$,t=(layui.admin,layui.carousel),a=layui.element,i=layui.device();e(".layadmin-carousel").each(function(){var a=e(this);t.render({elem:this,width:"100%",arrow:"none",interval:a.data("interval"),autoplay:a.data("autoplay")===!0,trigger:i.ios||i.android?"click":"hover",anim:a.data("anim")})}),a.render("progress")}),layui.use(["admin","carousel","echarts"],function(){var e=layui.$,t=layui.admin,a=layui.carousel,i=layui.echarts,l=[],n=[{title:{text:"今日流量趋势",x:"center",textStyle:{fontSize:14}},tooltip:{trigger:"axis"},legend:{data:["",""]},xAxis:[{type:"category",boundaryGap:!1,data:["06:00","06:30","07:00","07:30","08:00","08:30","09:00","09:30","10:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00","20:30","21:00","21:30","22:00","22:30","23:00","23:30"]}],yAxis:[{type:"value"}],series:[{name:"PV",type:"line",smooth:!0,itemStyle:{normal:{areaStyle:{type:"default"}}},data:[111,222,333,444,555,666,3333,33333,55555,66666,33333,3333,6666,11888,26666,38888,56666,42222,39999,28888,17777,9666,6555,5555,3333,2222,3111,6999,5888,2777,1666,999,888,777]},{name:"UV",type:"line",smooth:!0,itemStyle:{normal:{areaStyle:{type:"default"}}},data:[11,22,33,44,55,66,333,3333,5555,12666,3333,333,666,1188,2666,3888,6666,4222,3999,2888,1777,966,655,555,333,222,311,699,588,277,166,99,88,77]}]},{title:{text:"访客浏览器分布",x:"center",textStyle:{fontSize:14}},tooltip:{trigger:"item",formatter:"{a}
        {b} : {c} ({d}%)"},legend:{orient:"vertical",x:"left",data:["Chrome","Firefox","IE 8.0","Safari","其它浏览器"]},series:[{name:"访问来源",type:"pie",radius:"55%",center:["50%","50%"],data:[{value:9052,name:"Chrome"},{value:1610,name:"Firefox"},{value:3200,name:"IE 8.0"},{value:535,name:"Safari"},{value:1700,name:"其它浏览器"}]}]},{title:{text:"最近一周新增的用户量",x:"center",textStyle:{fontSize:14}},tooltip:{trigger:"axis",formatter:"{b}
        新增用户:{c}"},xAxis:[{type:"category",data:["11-07","11-08","11-09","11-10","11-11","11-12","11-13"]}],yAxis:[{type:"value"}],series:[{type:"line",data:[200,300,400,610,150,270,380]}]}],r=e("#LAY-index-dataview").children("div"),o=function(e){l[e]=i.init(r[e],layui.echartsTheme),l[e].setOption(n[e]),t.resize(function(){l[e].resize()})};if(r[0]){o(0);var d=0;a.on("change(LAY-index-dataview)",function(e){o(d=e.index)}),layui.admin.on("side",function(){setTimeout(function(){o(d)},300)}),layui.admin.on("hash(tab)",function(){layui.router().path.join("")||o(d)})}}),layui.use("table",function(){var e=(layui.$,layui.table);e.render({elem:"#LAY-index-topSearch",url:layui.setter.base+"json/console/top-search.js",page:!0,cols:[[{type:"numbers",fixed:"left"},{field:"keywords",title:"关键词",minWidth:300,templet:''},{field:"frequency",title:"搜索次数",minWidth:120,sort:!0},{field:"userNums",title:"用户数",sort:!0}]],skin:"line"}),e.render({elem:"#LAY-index-topCard",url:layui.setter.base+"json/console/top-card.js",page:!0,cellMinWidth:120,cols:[[{type:"numbers",fixed:"left"},{field:"title",title:"标题",minWidth:300,templet:''},{field:"username",title:"发帖者"},{field:"channel",title:"类别"},{field:"crt",title:"点击率",sort:!0}]],skin:"line"})}),e("console",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/contlist.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["table","form"],function(t){var e=layui.$,i=layui.table,n=layui.form;i.render({elem:"#LAY-app-content-list",url:layui.setter.base+"json/content/list.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:100,title:"文章ID",sort:!0},{field:"label",title:"文章标签",minWidth:100},{field:"title",title:"文章标题"},{field:"author",title:"作者"},{field:"uploadtime",title:"上传时间",sort:!0},{field:"status",title:"发布状态",templet:"#buttonTpl",minWidth:80,align:"center"},{title:"操作",minWidth:150,align:"center",fixed:"right",toolbar:"#table-content-list"}]],page:!0,limit:10,limits:[10,15,20,25,30],text:"对不起,加载出现异常!"}),i.on("tool(LAY-app-content-list)",function(t){var e=t.data;"del"===t.event?layer.confirm("确定删除此文章?",function(e){t.del(),layer.close(e)}):"edit"===t.event&&layer.open({type:2,title:"编辑文章",content:"../../../views/app/content/listform.html?id="+e.id,maxmin:!0,area:["550px","550px"],btn:["确定","取消"],yes:function(e,i){var l=window["layui-layer-iframe"+e],a=i.find("iframe").contents().find("#layuiadmin-app-form-edit");l.layui.form.on("submit(layuiadmin-app-form-edit)",function(i){var l=i.field;t.update({label:l.label,title:l.title,author:l.author,status:l.status}),n.render(),layer.close(e)}),a.trigger("click")}})}),i.render({elem:"#LAY-app-content-tags",url:layui.setter.base+"json/content/tags.js",cols:[[{type:"numbers",fixed:"left"},{field:"id",width:100,title:"ID",sort:!0},{field:"tags",title:"分类名",minWidth:100},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#layuiadmin-app-cont-tagsbar"}]],text:"对不起,加载出现异常!"}),i.on("tool(LAY-app-content-tags)",function(t){var i=t.data;if("del"===t.event)layer.confirm("确定删除此分类?",function(e){t.del(),layer.close(e)});else if("edit"===t.event){e(t.tr);layer.open({type:2,title:"编辑分类",content:"../../../views/app/content/tagsform.html?id="+i.id,area:["450px","200px"],btn:["确定","取消"],yes:function(e,i){var n=i.find("iframe").contents().find("#layuiadmin-app-form-tags"),l=n.find('input[name="tags"]').val();l.replace(/\s/g,"")&&(t.update({tags:l}),layer.close(e))},success:function(t,e){var n=t.find("iframe").contents().find("#layuiadmin-app-form-tags").click();n.find('input[name="tags"]').val(i.tags)}})}}),i.render({elem:"#LAY-app-content-comm",url:layui.setter.base+"json/content/comment.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:100,title:"ID",sort:!0},{field:"reviewers",title:"评论者",minWidth:100},{field:"content",title:"评论内容",minWidth:100},{field:"commtime",title:"评论时间",minWidth:100,sort:!0},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-content-com"}]],page:!0,limit:10,limits:[10,15,20,25,30],text:"对不起,加载出现异常!"}),i.on("tool(LAY-app-content-comm)",function(t){t.data;"del"===t.event?layer.confirm("确定删除此条评论?",function(e){t.del(),layer.close(e)}):"edit"===t.event&&layer.open({type:2,title:"编辑评论",content:"../../../views/app/content/contform.html",area:["450px","300px"],btn:["确定","取消"],yes:function(t,e){var n=window["layui-layer-iframe"+t],l="layuiadmin-app-comm-submit",a=e.find("iframe").contents().find("#"+l);n.layui.form.on("submit("+l+")",function(e){e.field;i.reload("LAY-app-content-comm"),layer.close(t)}),a.trigger("click")},success:function(t,e){}})}),t("contlist",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/forum.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["table","form"],function(e){var t=layui.$,i=layui.table;layui.form;i.render({elem:"#LAY-app-forum-list",url:layui.setter.base+"json/forum/list.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:100,title:"ID",sort:!0},{field:"poster",title:"发帖人"},{field:"avatar",title:"头像",width:100,templet:"#imgTpl"},{field:"content",title:"发帖内容"},{field:"posttime",title:"发帖时间",sort:!0},{field:"top",title:"置顶",templet:"#buttonTpl",minWidth:80,align:"center"},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-forum-list"}]],page:!0,limit:10,limits:[10,15,20,25,30],text:"对不起,加载出现异常!"}),i.on("tool(LAY-app-forum-list)",function(e){e.data;if("del"===e.event)layer.confirm("确定删除此条帖子?",function(t){e.del(),layer.close(t)});else if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑帖子",content:"../../../views/app/forum/listform.html",area:["550px","400px"],btn:["确定","取消"],resize:!1,yes:function(e,t){var l=window["layui-layer-iframe"+e],r="LAY-app-forum-submit",o=t.find("iframe").contents().find("#"+r);l.layui.form.on("submit("+r+")",function(t){t.field;i.reload("LAY-app-forum-list"),layer.close(e)}),o.trigger("click")},success:function(e,t){}})}}),i.render({elem:"#LAY-app-forumreply-list",url:layui.setter.base+"json/forum/replys.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:100,title:"ID",sort:!0},{field:"replyer",title:"回帖人"},{field:"cardid",title:"回帖ID",sort:!0},{field:"avatar",title:"头像",width:100,templet:"#imgTpl"},{field:"content",title:"回帖内容",width:200},{field:"replytime",title:"回帖时间",sort:!0},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-forum-replys"}]],page:!0,limit:10,limits:[10,15,20,25,30],text:"对不起,加载出现异常!"}),i.on("tool(LAY-app-forumreply-list)",function(e){e.data;if("del"===e.event)layer.confirm("确定删除此条评论?",function(t){e.del(),layer.close(t)});else if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑评论",content:"../../../views/app/forum/replysform.html",area:["550px","350px"],btn:["确定","取消"],resize:!1,yes:function(t,i){var l=i.find("iframe").contents().find("#layuiadmin-form-replys"),r=l.find('textarea[name="content"]').val();e.update({content:r}),layer.close(t)},success:function(e,t){}})}}),e("forum",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/im.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["index","layim"],function(e){var a=layui.$,t=(layui.admin,layui.element,layui.router(),layui.layim),n=["您好,我现在有事不在,一会再和您联系。","你没发错吧?face[微笑] ","洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!face[哈哈] ","你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。face[心] face[心] face[心] ","face[威武] face[威武] face[威武] face[威武] ","<(@ ̄︶ ̄@)>","你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。","face[黑线] 你慢慢说,别急……","(*^__^*) face[嘻嘻] ,是贤心吗?"];t.config({init:{url:layui.setter.base+"json/layim/getList.js",data:{}},members:{url:layui.setter.base+"json/layim/getMembers.js",data:{}},uploadImage:{url:"",type:""},uploadFile:{url:"",type:""},isAudio:!0,isVideo:!0,tool:[{alias:"code",title:"代码",icon:""}],initSkin:"3.jpg",msgbox:"/layim/demo/msgbox.html",find:"/layim/demo/find.html",chatLog:"/layim/demo/chatlog.html"}),t.on("online",function(e){layer.msg(e)}),t.on("sign",function(e){layer.msg(e)}),t.on("tool(code)",function(e){layer.prompt({title:"插入代码 - 工具栏扩展示例",formType:2,shade:0},function(a,t){layer.close(t),e("[pre class=layui-code]"+a+"[/pre]")})}),t.on("ready",function(e){t.msgbox(5)}),t.on("sendMessage",function(e){var a=e.to;"friend"===a.type&&t.setChatStatus('对方正在输入。。。'),setTimeout(function(){var e={};"group"===a.type?e={username:"模拟群员"+(100*Math.random()|0),avatar:layui.cache.dir+"images/face/"+(72*Math.random()|0)+".gif",id:a.id,type:a.type,content:n[9*Math.random()|0]}:(e={username:a.name,avatar:a.avatar,id:a.id,type:a.type,content:n[9*Math.random()|0]},t.setChatStatus('在线')),t.getMessage(e)},1e3)}),t.on("members",function(e){}),t.on("chatChange",function(e){var a=e.data.type;console.log(e.data.id),"friend"===a||"group"===a&&t.getMessage({system:!0,id:e.data.id,type:"group",content:"模拟群员"+(100*Math.random()|0)+"加入群聊"})});var a=layui.jquery,i={chat:function(){t.chat({name:"小闲",type:"friend",avatar:"//tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg",id:1008612}),layer.msg("也就是说,此人可以不在好友面板里")},message:function(){t.getMessage({username:"贤心",avatar:"//tp1.sinaimg.cn/1571889140/180/40030060651/1",id:"100001",type:"friend",content:"嗨,你好!欢迎体验LayIM。演示标记:"+(new Date).getTime(),timestamp:(new Date).getTime()})},messageAudio:function(){t.getMessage({username:"林心如",avatar:"//tp3.sinaimg.cn/1223762662/180/5741707953/0",id:"76543",type:"friend",content:"audio[http://gddx.sc.chinaz.com/Files/DownLoad/sound1/201510/6473.mp3]",timestamp:(new Date).getTime()})},messageVideo:function(){t.getMessage({username:"林心如",avatar:"//tp3.sinaimg.cn/1223762662/180/5741707953/0",id:"76543",type:"friend",content:"video[http://www.w3school.com.cn//i/movie.ogg]",timestamp:(new Date).getTime()})},messageTemp:function(){t.getMessage({username:"小酱",avatar:"//tva1.sinaimg.cn/crop.7.0.736.736.50/bd986d61jw8f5x8bqtp00j20ku0kgabx.jpg",id:"198909151014",type:"friend",content:"临时:"+(new Date).getTime()})},add:function(){t.add({type:"friend",username:"麻花疼",avatar:"//tva1.sinaimg.cn/crop.0.0.720.720.180/005JKVuPjw8ers4osyzhaj30k00k075e.jpg",submit:function(e,a,t){layer.msg("好友申请已发送,请等待对方确认",{icon:1,shade:.5},function(){layer.close(t)})}})},addqun:function(){t.add({type:"group",username:"LayIM会员群",avatar:"//tva2.sinaimg.cn/crop.0.0.180.180.50/6ddfa27bjw1e8qgp5bmzyj2050050aa8.jpg",submit:function(e,a,t){layer.msg("申请已发送,请等待管理员确认",{icon:1,shade:.5},function(){layer.close(t)})}})},addFriend:function(){var e={type:"friend",id:1234560,username:"李彦宏",avatar:"//tva4.sinaimg.cn/crop.0.0.996.996.180/8b2b4e23jw8f14vkwwrmjj20ro0rpjsq.jpg",sign:"全球最大的中文搜索引擎"};t.setFriendGroup({type:e.type,username:e.username,avatar:e.avatar,group:t.cache().friend,submit:function(a,n){t.addList({type:e.type,username:e.username,avatar:e.avatar,groupid:a,id:e.id,sign:e.sign}),layer.close(n)}})},addGroup:function(){layer.msg("已成功把[Angular开发]添加到群组里",{icon:1}),t.addList({type:"group",avatar:"//tva3.sinaimg.cn/crop.64.106.361.361.50/7181dbb3jw8evfbtem8edj20ci0dpq3a.jpg",groupname:"Angular开发",id:"12333333",members:0})},removeFriend:function(){layer.msg("已成功删除[凤姐]",{icon:1}),t.removeList({id:121286,type:"friend"})},removeGroup:function(){layer.msg("已成功删除[前端群]",{icon:1}),t.removeList({id:101,type:"group"})},setGray:function(){t.setFriendStatus(168168,"offline"),layer.msg("已成功将好友[马小云]置灰",{icon:1})},unGray:function(){t.setFriendStatus(168168,"online"),layer.msg("成功取消好友[马小云]置灰状态",{icon:1})},kefu1:function(){t.chat({name:"在线客服一",type:"kefu",avatar:"//tp1.sinaimg.cn/5619439268/180/40030060651/1",id:1111111})},kefu2:function(){t.chat({name:"在线客服二",type:"kefu",avatar:"//tp1.sinaimg.cn/5619439268/180/40030060651/1",id:2222222})},mobile:function(){var e=layui.device(),a="/layim/demo/mobile.html";if(e.android||e.ios)return location.href=a;var t=layer.open({type:2,title:"移动版演示 (或手机扫右侧二维码预览)",content:a,area:["375px","667px"],shadeClose:!0,shade:.8,end:function(){layer.close(t+2)}});layer.photos({photos:{data:[{src:"http://cdn.layui.com/upload/2016_12/168_1481056358469_50288.png"}]},anim:0,shade:!1,success:function(e){e.css("margin-left","350px")}})}};a(".LAY-senior-im-chat-demo .layui-btn").on("click",function(){var e=a(this).data("type");i[e]?i[e].call(this):""}),e("im",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/message.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["admin","table","util"],function(e){var t=layui.$,i=(layui.admin,layui.table),l=(layui.element,{all:{text:"全部消息",id:"LAY-app-message-all"},notice:{text:"通知",id:"LAY-app-message-notice"},direct:{text:"私信",id:"LAY-app-message-direct"}}),a=function(e){return''+e.title};i.render({elem:"#LAY-app-message-all",url:layui.setter.base+"json/message/all.js",page:!0,cols:[[{type:"checkbox",fixed:"left"},{field:"title",title:"标题内容",minWidth:300,templet:a},{field:"time",title:"时间",width:170,templet:"
        {{ layui.util.timeAgo(d.time) }}
        "}]],skin:"line"}),i.render({elem:"#LAY-app-message-notice",url:layui.setter.base+"json/message/notice.js",page:!0,cols:[[{type:"checkbox",fixed:"left"},{field:"title",title:"标题内容",minWidth:300,templet:a},{field:"time",title:"时间",width:170,templet:"
        {{ layui.util.timeAgo(d.time) }}
        "}]],skin:"line"}),i.render({elem:"#LAY-app-message-direct",url:layui.setter.base+"json/message/direct.js",page:!0,cols:[[{type:"checkbox",fixed:"left"},{field:"title",title:"标题内容",minWidth:300,templet:a},{field:"time",title:"时间",width:170,templet:"
        {{ layui.util.timeAgo(d.time) }}
        "}]],skin:"line"});var d={del:function(e,t){var a=l[t],d=i.checkStatus(a.id),s=d.data;return 0===s.length?layer.msg("未选中行"):void layer.confirm("确定删除选中的数据吗?",function(){layer.msg("删除成功",{icon:1}),i.reload(a.id)})},ready:function(e,t){var a=l[t],d=i.checkStatus(a.id),s=d.data;return 0===s.length?layer.msg("未选中行"):(layer.msg("标记已读成功",{icon:1}),void i.reload(a.id))},readyAll:function(e,t){var i=l[t];layer.msg(i.text+":全部已读",{icon:1})}};t(".LAY-app-message-btns .layui-btn").on("click",function(){var e=t(this),i=e.data("events"),l=e.data("type");d[i]&&d[i].call(this,e,l)}),e("message",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/sample.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(function(e){var a=layui.admin;layui.use(["admin","carousel"],function(){var e=layui.$,a=(layui.admin,layui.carousel),l=layui.element,t=layui.device();e(".layadmin-carousel").each(function(){var l=e(this);a.render({elem:this,width:"100%",arrow:"none",interval:l.data("interval"),autoplay:l.data("autoplay")===!0,trigger:t.ios||t.android?"click":"hover",anim:l.data("anim")})}),l.render("progress")}),layui.use(["carousel","echarts"],function(){var e=layui.$,a=(layui.carousel,layui.echarts),l=[],t=[{title:{subtext:"完全实况球员数据",textStyle:{fontSize:14}},tooltip:{trigger:"axis"},legend:{x:"left",data:["罗纳尔多","舍普琴科"]},polar:[{indicator:[{text:"进攻",max:100},{text:"防守",max:100},{text:"体能",max:100},{text:"速度",max:100},{text:"力量",max:100},{text:"技巧",max:100}],radius:130}],series:[{type:"radar",center:["50%","50%"],itemStyle:{normal:{areaStyle:{type:"default"}}},data:[{value:[97,42,88,94,90,86],name:"舍普琴科"},{value:[97,32,74,95,88,92],name:"罗纳尔多"}]}]}],i=e("#LAY-index-pageone").children("div"),n=function(e){l[e]=a.init(i[e],layui.echartsTheme),l[e].setOption(t[e]),window.onresize=l[e].resize};i[0]&&n(0)}),layui.use(["carousel","echarts"],function(){var e=layui.$,a=(layui.carousel,layui.echarts),l=[],t=[{tooltip:{trigger:"axis"},calculable:!0,legend:{data:["访问量","下载量","平均访问量"]},xAxis:[{type:"category",data:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]}],yAxis:[{type:"value",name:"访问量",axisLabel:{formatter:"{value} 万"}},{type:"value",name:"下载量",axisLabel:{formatter:"{value} 万"}}],series:[{name:"访问量",type:"line",data:[900,850,950,1e3,1100,1050,1e3,1150,1250,1370,1250,1100]},{name:"下载量",type:"line",yAxisIndex:1,data:[850,850,800,950,1e3,950,950,1150,1100,1240,1e3,950]},{name:"平均访问量",type:"line",data:[870,850,850,950,1050,1e3,980,1150,1e3,1300,1150,1e3]}]}],i=e("#LAY-index-pagetwo").children("div"),n=function(e){l[e]=a.init(i[e],layui.echartsTheme),l[e].setOption(t[e]),window.onresize=l[e].resize};i[0]&&n(0)}),layui.use(["carousel","echarts"],function(){var e=layui.$,a=(layui.carousel,layui.echarts),l=[],t=[{title:{text:"全国的 layui 用户分布",subtext:"不完全统计"},tooltip:{trigger:"item"},dataRange:{orient:"horizontal",min:0,max:6e4,text:["高","低"],splitNumber:0},series:[{name:"全国的 layui 用户分布",type:"map",mapType:"china",selectedMode:"multiple",itemStyle:{normal:{label:{show:!0}},emphasis:{label:{show:!0}}},data:[{name:"西藏",value:60},{name:"青海",value:167},{name:"宁夏",value:210},{name:"海南",value:252},{name:"甘肃",value:502},{name:"贵州",value:570},{name:"新疆",value:661},{name:"云南",value:8890},{name:"重庆",value:10010},{name:"吉林",value:5056},{name:"山西",value:2123},{name:"天津",value:9130},{name:"江西",value:10170},{name:"广西",value:6172},{name:"陕西",value:9251},{name:"黑龙江",value:5125},{name:"内蒙古",value:1435},{name:"安徽",value:9530},{name:"北京",value:51919},{name:"福建",value:3756},{name:"上海",value:59190},{name:"湖北",value:37109},{name:"湖南",value:8966},{name:"四川",value:31020},{name:"辽宁",value:7222},{name:"河北",value:3451},{name:"河南",value:9693},{name:"浙江",value:62310},{name:"山东",value:39231},{name:"江苏",value:35911},{name:"广东",value:55891}]}]}],i=e("#LAY-index-pagethree").children("div"),n=function(e){l[e]=a.init(i[e],layui.echartsTheme),l[e].setOption(t[e]),window.onresize=l[e].resize};i[0]&&n(0)}),layui.use("table",function(){var e=(layui.$,layui.table);e.render({elem:"#LAY-index-prograss",url:layui.setter.base+"json/console/prograss.js",cols:[[{type:"checkbox",fixed:"left"},{field:"prograss",title:"任务"},{field:"time",title:"所需时间"},{field:"complete",title:"完成情况",templet:function(e){return"已完成"==e.complete?''+e.complete+"":"进行中"==e.complete?''+e.complete+"":''+e.complete+""}}]],skin:"line"})}),a.events.replyNote=function(e){var a=e.data("id");layer.prompt({title:"回复留言 ID:"+a,formType:2},function(e,a){layer.msg("得到:"+e),layer.close(a)})},e("sample",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/set.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["form","upload"],function(t){var i=layui.$,e=layui.layer,a=(layui.laytpl,layui.setter,layui.view,layui.admin),n=layui.form,s=layui.upload;i("body");n.verify({nickname:function(t,i){return new RegExp("^[a-zA-Z0-9_一-龥\\s·]+$").test(t)?/(^\_)|(\__)|(\_+$)/.test(t)?"用户名首尾不能出现下划线'_'":/^\d+\d+\d$/.test(t)?"用户名不能全为数字":void 0:"用户名不能有特殊字符"},pass:[/^[\S]{6,12}$/,"密码必须6到12位,且不能出现空格"],repass:function(t){if(t!==i("#LAY_password").val())return"两次密码输入不一致"}}),n.on("submit(set_website)",function(t){return e.msg(JSON.stringify(t.field)),!1}),n.on("submit(set_system_email)",function(t){return e.msg(JSON.stringify(t.field)),!1}),n.on("submit(setmyinfo)",function(t){return e.msg(JSON.stringify(t.field)),!1});var r=i("#LAY_avatarSrc");s.render({url:"/api/upload/",elem:"#LAY_avatarUpload",done:function(t){0==t.status?r.val(t.url):e.msg(t.msg,{icon:5})}}),a.events.avartatPreview=function(t){var i=r.val();e.photos({photos:{title:"查看头像",data:[{src:i}]},shade:.01,closeBtn:1,anim:5})},n.on("submit(setmypass)",function(t){return e.msg(JSON.stringify(t.field)),!1}),t("set",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/user.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define("form",function(e){var s=layui.$,t=(layui.layer,layui.laytpl,layui.setter,layui.view,layui.admin),i=layui.form,a=s("body");i.verify({nickname:function(e,s){return new RegExp("^[a-zA-Z0-9_一-龥\\s·]+$").test(e)?/(^\_)|(\__)|(\_+$)/.test(e)?"用户名首尾不能出现下划线'_'":/^\d+\d+\d$/.test(e)?"用户名不能全为数字":void 0:"用户名不能有特殊字符"},pass:[/^[\S]{6,12}$/,"密码必须6到12位,且不能出现空格"]}),t.sendAuthCode({elem:"#LAY-user-getsmscode",elemPhone:"#LAY-user-login-cellphone",elemVercode:"#LAY-user-login-vercode",ajax:{url:layui.setter.base+"json/user/sms.js"}}),a.on("click","#LAY-user-get-vercode",function(){s(this);this.src="https://www.oschina.net/action/user/captcha?t="+(new Date).getTime()}),e("user",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/useradmin.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["table","form"],function(e){var t=layui.$,i=layui.table;layui.form;i.render({elem:"#LAY-user-manage",url:layui.setter.base+"json/useradmin/webuser.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:100,title:"ID",sort:!0},{field:"username",title:"用户名",minWidth:100},{field:"avatar",title:"头像",width:100,templet:"#imgTpl"},{field:"phone",title:"手机"},{field:"email",title:"邮箱"},{field:"sex",width:80,title:"性别"},{field:"ip",title:"IP"},{field:"jointime",title:"加入时间",sort:!0},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-useradmin-webuser"}]],page:!0,limit:30,height:"full-220",text:"对不起,加载出现异常!"}),i.on("tool(LAY-user-manage)",function(e){e.data;if("del"===e.event)layer.prompt({formType:1,title:"敏感操作,请验证口令"},function(t,i){layer.close(i),layer.confirm("真的删除行么",function(t){e.del(),layer.close(t)})});else if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑用户",content:"../../../views/user/user/userform.html",maxmin:!0,area:["500px","450px"],btn:["确定","取消"],yes:function(e,t){var l=window["layui-layer-iframe"+e],r="LAY-user-front-submit",n=t.find("iframe").contents().find("#"+r);l.layui.form.on("submit("+r+")",function(t){t.field;i.reload("LAY-user-manage"),layer.close(e)}),n.trigger("click")},success:function(e,t){}})}}),i.render({elem:"#LAY-user-back-manage",url:layui.setter.base+"json/useradmin/mangadmin.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:80,title:"ID",sort:!0},{field:"loginname",title:"登录名"},{field:"telphone",title:"手机"},{field:"email",title:"邮箱"},{field:"role",title:"角色"},{field:"jointime",title:"加入时间",sort:!0},{field:"check",title:"审核状态",templet:"#buttonTpl",minWidth:80,align:"center"},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-useradmin-admin"}]],text:"对不起,加载出现异常!"}),i.on("tool(LAY-user-back-manage)",function(e){e.data;if("del"===e.event)layer.prompt({formType:1,title:"敏感操作,请验证口令"},function(t,i){layer.close(i),layer.confirm("确定删除此管理员?",function(t){console.log(e),e.del(),layer.close(t)})});else if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑管理员",content:"../../../views/user/administrators/adminform.html",area:["420px","420px"],btn:["确定","取消"],yes:function(e,t){var l=window["layui-layer-iframe"+e],r="LAY-user-back-submit",n=t.find("iframe").contents().find("#"+r);l.layui.form.on("submit("+r+")",function(t){t.field;i.reload("LAY-user-front-submit"),layer.close(e)}),n.trigger("click")},success:function(e,t){}})}}),i.render({elem:"#LAY-user-back-role",url:layui.setter.base+"json/useradmin/role.js",cols:[[{type:"checkbox",fixed:"left"},{field:"id",width:80,title:"ID",sort:!0},{field:"rolename",title:"角色名"},{field:"limits",title:"拥有权限"},{field:"descr",title:"具体描述"},{title:"操作",width:150,align:"center",fixed:"right",toolbar:"#table-useradmin-admin"}]],text:"对不起,加载出现异常!"}),i.on("tool(LAY-user-back-role)",function(e){e.data;if("del"===e.event)layer.confirm("确定删除此角色?",function(t){e.del(),layer.close(t)});else if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑角色",content:"../../../views/user/administrators/roleform.html",area:["500px","480px"],btn:["确定","取消"],yes:function(e,t){var l=window["layui-layer-iframe"+e],r=t.find("iframe").contents().find("#LAY-user-role-submit");l.layui.form.on("submit(LAY-user-role-submit)",function(t){t.field;i.reload("LAY-user-back-role"),layer.close(e)}),r.trigger("click")},success:function(e,t){}})}}),e("useradmin",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/modules/workorder.js: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | ;layui.define(["table","form","element"],function(e){var t=layui.$,i=layui.table,r=(layui.form,layui.element);i.render({elem:"#LAY-app-system-order",url:layui.setter.base+"json/workorder/demo.js",cols:[[{type:"numbers",fixed:"left"},{field:"orderid",width:100,title:"工单号",sort:!0},{field:"attr",width:100,title:"业务性质"},{field:"title",width:100,title:"工单标题",width:300},{field:"progress",title:"进度",width:200,align:"center",templet:"#progressTpl"},{field:"submit",width:100,title:"提交者"},{field:"accept",width:100,title:"受理人员"},{field:"state",title:"工单状态",templet:"#buttonTpl",minWidth:80,align:"center"},{title:"操作",align:"center",fixed:"right",toolbar:"#table-system-order"}]],page:!0,limit:10,limits:[10,15,20,25,30],text:"对不起,加载出现异常!",done:function(){r.render("progress")}}),i.on("tool(LAY-app-system-order)",function(e){e.data;if("edit"===e.event){t(e.tr);layer.open({type:2,title:"编辑工单",content:"../../../views/app/workorder/listform.html",area:["450px","450px"],btn:["确定","取消"],yes:function(e,t){var r=window["layui-layer-iframe"+e],l="LAY-app-workorder-submit",o=t.find("iframe").contents().find("#"+l);r.layui.form.on("submit("+l+")",function(t){t.field;i.reload("LAY-user-front-submit"),layer.close(e)}),o.trigger("click")},success:function(e,t){}})}}),e("workorder",{})}); -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/login.css: -------------------------------------------------------------------------------- 1 | /** layuiAdmin.std-v1.4.0 LPPL License By https://www.layui.com/admin/ */ 2 | #LAY_app,body,html{height:100%}.layui-layout-body{overflow:auto}#LAY-user-login,.layadmin-user-display-show{display:block!important}.layadmin-user-login{position:relative;left:0;top:0;padding:110px 0;min-height:100%;box-sizing:border-box}.layadmin-user-login-main{width:375px;margin:0 auto;box-sizing:border-box}.layadmin-user-login-box{padding:20px}.layadmin-user-login-header{text-align:center}.layadmin-user-login-header h2{margin-bottom:10px;font-weight:300;font-size:30px;color:#000}.layadmin-user-login-header p{font-weight:300;color:#999}.layadmin-user-login-body .layui-form-item{position:relative}.layadmin-user-login-icon{position:absolute;left:1px;top:1px;width:38px;line-height:36px;text-align:center;color:#d2d2d2}.layadmin-user-login-body .layui-form-item .layui-input{padding-left:38px}.layadmin-user-login-codeimg{max-height:38px;width:100%;cursor:pointer;box-sizing:border-box}.layadmin-user-login-other{position:relative;font-size:0;line-height:38px;padding-top:20px}.layadmin-user-login-other>*{display:inline-block;vertical-align:middle;margin-right:10px;font-size:14px}.layadmin-user-login-other .layui-icon{position:relative;top:2px;font-size:26px}.layadmin-user-login-other a:hover{opacity:.8}.layadmin-user-jump-change{float:right}.layadmin-user-login-footer{position:absolute;left:0;bottom:0;width:100%;line-height:30px;padding:20px;text-align:center;box-sizing:border-box;color:rgba(0,0,0,.5)}.layadmin-user-login-footer span{padding:0 5px}.layadmin-user-login-footer a{padding:0 5px;color:rgba(0,0,0,.5)}.layadmin-user-login-footer a:hover{color:rgba(0,0,0,1)}.layadmin-user-login-main[bgimg]{background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.05)}.ladmin-user-login-theme{position:fixed;bottom:0;left:0;width:100%;text-align:center}.ladmin-user-login-theme ul{display:inline-block;padding:5px;background-color:#fff}.ladmin-user-login-theme ul li{display:inline-block;vertical-align:top;width:64px;height:43px;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;background-color:#f2f2f2}.ladmin-user-login-theme ul li:hover{opacity:.9}@media screen and (max-width:768px){.layadmin-user-login{padding-top:60px}.layadmin-user-login-main{width:300px}.layadmin-user-login-box{padding:10px}} -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/bg-none.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/bg-none.jpg -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/layui-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/layui-logo.jpg -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/logo-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/logo-black.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/logo.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/template/character.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/template/character.jpg -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/template/huge 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/template/huge 2.jpg -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/template/huge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/template/huge.jpg -------------------------------------------------------------------------------- /static/lib/layuiadmin/style/res/template/portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/static/lib/layuiadmin/style/res/template/portrait.png -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/layim/demo.html: -------------------------------------------------------------------------------- 1 |
        2 | 3 | 4 | 5 | 6 | 7 | 8 |
        9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
        18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
        -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/system/about.html: -------------------------------------------------------------------------------- 1 | 2 |
        版本信息
        3 |
        13 | 14 |
        关于版权
        15 |
        16 | 17 |
        18 | layuiAdmin 受国家计算机软件著作权保护(登记号:2018SR410669),必须经官网授权才可获得源文件使用权。不得恶意分享产品源代码、二次转售等,违者将承担相应的法律责任。 19 |

        详见:《layui 付费产品服务条款》 20 |
        21 |

        © 2020 layui.com 版权所有

        22 |
        -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/system/get.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 授权获得 layuiAdmin 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
        17 |
        18 |
        19 |
        20 |

        专业版

        21 |
          22 |
        • 始终基于全新的 layui 版本
        • 23 |
        • 单页面应用,所有操作无需跳转
        • 24 |
        • 支持前后端分离开发模式
        • 25 |
        • 面向全屏幕尺寸的响应式适配能力
        • 26 |
        • 灵活的主题色配置
        • 27 |
        • 专属的开发者文档,助你快速掌握
        • 28 |
        • 版本的持续更新,集大众之所需
        • 29 |
        • 专属的会员群,与同道中人隔空交流
        • 30 |
        • layui 社区 VIP 标识
        • 31 |
        • 不限制域名、不限制应用的项目数量
        • 32 |
        33 |
        34 |
        35 | 一年授权 36 |
        37 | 43 |
        44 |
        45 |
        46 |
        47 | 你所获得的不仅仅是一款高精品的后台管理模板系统,更是一项关于时间与效率的高收益回报 48 |
        49 |
        50 |
        51 | 52 | 53 | 60 | 61 | -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/system/more.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/system/theme.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 28 | 29 | 44 | -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/system/说明.txt: -------------------------------------------------------------------------------- 1 | 2 | 注意: 3 | 该目录存放的是 layuiAdmin 的系统模板碎片,很多界面需要依赖到它,切勿随意剔除。 -------------------------------------------------------------------------------- /static/lib/layuiadmin/tpl/说明.txt: -------------------------------------------------------------------------------- 1 | 2 | 注意: 3 | 该目录存放的是 layuiAdmin 的动态模板碎片 -------------------------------------------------------------------------------- /templates/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiamin329/fruit-classifer/ab62141fa78fdebcdcd8a7439349cbfaad88553f/templates/favicon.ico -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from data import train_db, dev_db 3 | import models 4 | import settings 5 | from models import show_loss_acc 6 | 7 | # 从models文件中导入模型 8 | model = models.my_densenet() 9 | model.summary() 10 | 11 | # 配置优化器、损失函数、以及监控指标 12 | model.compile(tf.keras.optimizers.Adam(settings.LEARNING_RATE), 13 | loss=tf.keras.losses.categorical_crossentropy, 14 | metrics=['accuracy']) 15 | 16 | # 在每个epoch结束后尝试保存模型参数,只有当前参数的val_accuracy比之前保存的更优时,才会覆盖掉之前保存的参数 17 | model_check_point = tf.keras.callbacks.ModelCheckpoint(filepath=settings.MODEL_PATH, 18 | monitor='val_accuracy', 19 | save_best_only=True) 20 | # 使用tf.keras的高级接口进行训练 21 | history = model.fit(train_db, epochs=settings.TRAIN_EPOCHS, 22 | validation_data=dev_db, callbacks=[model_check_point]) 23 | show_loss_acc(history) 24 | 25 | --------------------------------------------------------------------------------