diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..1d92507 Binary files /dev/null and b/.DS_Store differ diff --git a/1702544439568.jpg b/1702544439568.jpg new file mode 100644 index 0000000..6d5ba0f Binary files /dev/null and b/1702544439568.jpg differ diff --git a/1702544756749.jpg b/1702544756749.jpg new file mode 100644 index 0000000..451f31c Binary files /dev/null and b/1702544756749.jpg differ diff --git a/1702545370856.jpg b/1702545370856.jpg new file mode 100644 index 0000000..8cb1a16 Binary files /dev/null and b/1702545370856.jpg differ diff --git a/77a93e8c07a913b838a756abadb383b9.png b/77a93e8c07a913b838a756abadb383b9.png new file mode 100644 index 0000000..feefb96 Binary files /dev/null and b/77a93e8c07a913b838a756abadb383b9.png differ diff --git a/LICENSE b/LICENSE index bc23291..e5d2cd1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,20 +1,21 @@ -The MIT License (MIT) +MIT License -Copyright (c) 2018 RuoYi +Copyright (c) 2023 yshop -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 1857e8d..a8ed9cf 100644 --- a/README.md +++ b/README.md @@ -1,133 +1,138 @@ - - - -### supplier2.0已经发布: -1、移除Light Security jwt 验证更改为shaun pac4j-jwt - -2、mapstruct更新1.3.1 同时修复不能编译成对象的问题 - -3、新的目录结构 - -4、同步ruoyi最新版本V4.6.1 - -5、喜欢的小伙伴记得star下 - -6、本项目全开源 请自行下载的哦 - -### supplier2.1即将发布: -- 新的重构版本正在开发中,喜欢的小伙伴记得star下 -- 新版本移动端将使用uniapp - - -### **商城概况:** - - -本商城系统是一套完整的商城系统,包括小程序+小程序API+后台商城管理!! - - **系统基础组合来源:** - -程序员就要坚持着不要重复造轮子想法,所有就在gitee里找自己合适的轮子:: - -1、若依管理后台:用它做后台管理 - -2、shaun pac4j-jwt:强大jwt权限框架 - -当然他们本身已经完成了很多功能,这里不多说,大家可以直接去码云搜索即可,后面会放上他们连接。 - -本系统主要包括三部分: - -第一:商城后台,完成完整的商城管理系统,目前已经完成,至于有bug大家可以直接issue或者进群交流(后面会打出来的(⊙o⊙)?!!), -功能大概包括:商品管理,商品多规格属性管理,商品分类,商品品牌,商品订单,会员信息等等。 -涉及到技术: **springboot+Thymeleaf+mybatis** - -大致效果如下: - - - - - - - - - - - - - -
- - - - -第二:小程序API,目前API模块已经基本完成, -涉及到技术: **springboot+mybatis-plus+jwt+mapstruct+lombok+redis+swagger** - -大致如下效果: - - - - - - - - - - -
- - - -第三:mpvue小程序,小程序主要是用 **mpvue** 框架开发,这里就不说它的好处。 - - - - mpvue 小程序运行步骤: - -1、安装node环境 - node 是8版本,这边开发版本是8.12.0,由于mpvue属于老牌小程序框架了,目前这边验证的只是这个node版本, - 当然新的小程序UNIAPP发布之后没用此限制拉 - -2、设置npm淘宝镜像 - -npm set registry https://registry.npm.taobao.org/ - -3、npm install - -4、npm run dev - - -大致效果如下: - - - - - - - - - - - - - -
- - - - -**学习交流** - - -其他:欢迎star或者提出你们宝贵的建议哦!!! - -****Requirement:**** - - JDK1.8+, - - mysql5.7+ - - **特别鸣谢** - -若依系统:[ruoyi](https://gitee.com/y_project/RuoYi) - -强大jwt权限框架:[shaun](https://gitee.com/baomidou/shaun) - - + + +## 平台简介 + +意向点餐(扫码点餐)系统,在线点餐(外卖与自取)小程序模式,支持多门店模式,基础技术Java,uniapp(vue3)(支持H5、微信小程序) +采用当前流行技术组合的前后端分离点餐系统: SpringBoot、Spring Security OAuth2、MybatisPlus、SpringSecurity、jwt、redis、Vue3的前后端分离的系统, +包含外卖与自取、商品管理(多规格sku)、店铺管理、云小票打印、图片素材库、订单管理、积分兑换、充值、优惠券、充值、多门店、微信公众号、门店移动端、分销商、桌面扫码点餐、拼团、邀请有礼、会员等级等功能,更适合企业或个人二次开发. + +官网地址:[https://www.yixiang.co/](https://www.yixiang.co/) + + + +## 演示地址 + +| 后台登陆: | https://dc.yixiang.co 账号/密码:yshop002/123456789 | +|---|---| +| 门店登陆: | https://dc.yixiang.co 账号/密码:yixiang001/123456789 | +| 移动端演示:关注右边公众号点击菜单其他系统体验点餐小程序与点餐H5,其中如果演示使用验证码登陆的点击下验证码默认验证码是9999 | ![输入图片说明](77a93e8c07a913b838a756abadb383b9.png) | + +## 视频资料 +如果对您有帮助,您可以点右上角 "Star" 支持一下,这样我们才有继续免费下去的动力,谢谢! QQ交流群 (入群前,请在网页右上角点 "Star" ),群里有视频教程哦!! + +交流QQ群:544263002 + +## 项目说明 + + +``` + yshop-drink. Java工程 + yshop-drink-vue 后台前端vue3工程 + yshop-drink-uniapp-vue3 移动端uniapp(vue3版本)工程,支持微信小程序、h5 +``` + + +## 本地快速启动 + ##### 1、环境要求 + + ``` + jdk8 + mysql8 + redis6+ + node14+ + + ``` + ##### 2、开发工具 + + ``` + idea + vscode + hbuilder + + ``` + ##### 3、后端启动 + + +- 3.1 请使用idea打开Java工程,自动会安装依赖 +- 3.2 创建数据库且导入工程目录下sql/yixiang-drink.sql 文件 +- 3.3 找到项目下的yshop-server 的yml,如图: + ![输入图片说明](image.png) +- 3.4 工程下输入 + + ` mvn clean install package '-Dmaven.test.skip=true` +- 3.5 启动项目,如图 + ![输入图片说明](1702544439568.jpg) + +##### 4、后台vue启动 + + - 4.1 vscode 打开vue工程,在目录下输入命令,npm install + - 4.2 配置api如图 + ![输入图片说明](1702544756749.jpg) + - 4.3 本地启动 npm run front + +##### 5 移动端uniapp启动 + + - 5.1 hbuilder导入uniapp项目, + - 5.2 配置api + ![输入图片说明](WX20231214-171211@2x.png) + - 5.3 配置小程序 + ![输入图片说明](WX20231214-171416@2x.png) + - 5.4 运行小程序 + ![输入图片说明](WX20231214-171514@2x.png) + - 5.5 运行h5 + + ![输入图片说明](1702545370856.jpg) +- + + + +## 小程序截图 + +| ![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20231211104701.jpg) | ![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20231211104710.jpg) | +|---|---| +| ![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20231211104713.jpg) | ![输入图片说明](WechatIMG64.jpeg) | +| ![输入图片说明](WechatIMG66.jpeg) | ![输入图片说明](WechatIMG65.jpeg) | + +## 后台截图 + +| ![输入图片说明](WX20231208-120203@2x.png) | ![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20231211104714.jpg)| +|---|---| +| ![输入图片说明](WX20231208-120320@2x.png) | ![输入图片说明](WX20231208-120338@2x.png) | + + +## 技术栈 +Spring Boot, + +Spring Security oauth2, + +MyBatis, + +MyBatisPlus, + +Redis, + +lombok, + +hutool + +Vue3, + +Element UI, + +uniapp(vue3) + +## 特别鸣谢 + + +- ruoyi-vue-pro:https://gitee.com/zhijiantianya/ruoyi-vue-pro +- element-plus:https://element-plus.gitee.io/zh-CN/ +- vue:https://cn.vuejs.org/ +- pay-java-parent:https://gitee.com/egzosn/pay-java-parent +- uvui:https://www.uvui.cn/ +- uniapp:https://uniapp.dcloud.net.cn/ + + +## 开源协议 + +本项目采用比 Apache 2.0 更宽松的 [MIT License](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/LICENSE) 开源协议,个人与企业可 100% 免费使用,不用保留类作者、Copyright 信息。 + diff --git a/WX20231208-120203@2x.png b/WX20231208-120203@2x.png new file mode 100644 index 0000000..5dbe437 Binary files /dev/null and b/WX20231208-120203@2x.png differ diff --git a/WX20231208-120243@2x.png b/WX20231208-120243@2x.png new file mode 100644 index 0000000..71b67de Binary files /dev/null and b/WX20231208-120243@2x.png differ diff --git a/WX20231208-120320@2x.png b/WX20231208-120320@2x.png new file mode 100644 index 0000000..6d2adfe Binary files /dev/null and b/WX20231208-120320@2x.png differ diff --git a/WX20231208-120338@2x.png b/WX20231208-120338@2x.png new file mode 100644 index 0000000..d452fa9 Binary files /dev/null and b/WX20231208-120338@2x.png differ diff --git a/WX20231214-171211@2x.png b/WX20231214-171211@2x.png new file mode 100644 index 0000000..960fa0d Binary files /dev/null and b/WX20231214-171211@2x.png differ diff --git a/WX20231214-171416@2x.png b/WX20231214-171416@2x.png new file mode 100644 index 0000000..5428436 Binary files /dev/null and b/WX20231214-171416@2x.png differ diff --git a/WX20231214-171514@2x.png b/WX20231214-171514@2x.png new file mode 100644 index 0000000..7ca8c19 Binary files /dev/null and b/WX20231214-171514@2x.png differ diff --git a/WechatIMG50.jpeg b/WechatIMG50.jpeg new file mode 100644 index 0000000..25495d4 Binary files /dev/null and b/WechatIMG50.jpeg differ diff --git a/WechatIMG62.jpeg b/WechatIMG62.jpeg new file mode 100644 index 0000000..aff1409 Binary files /dev/null and b/WechatIMG62.jpeg differ diff --git a/WechatIMG63.jpeg b/WechatIMG63.jpeg new file mode 100644 index 0000000..f2fbc8a Binary files /dev/null and b/WechatIMG63.jpeg differ diff --git a/WechatIMG64.jpeg b/WechatIMG64.jpeg new file mode 100644 index 0000000..798a85a Binary files /dev/null and b/WechatIMG64.jpeg differ diff --git a/WechatIMG65.jpeg b/WechatIMG65.jpeg new file mode 100644 index 0000000..7cb1938 Binary files /dev/null and b/WechatIMG65.jpeg differ diff --git a/WechatIMG66.jpeg b/WechatIMG66.jpeg new file mode 100644 index 0000000..b600be2 Binary files /dev/null and b/WechatIMG66.jpeg differ diff --git a/bin/clean.bat b/bin/clean.bat deleted file mode 100644 index 5c2a3b2..0000000 --- a/bin/clean.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] ÇåÀíÉú³É·¾¶¡£ -echo. - -%~d0 -cd %~dp0 - -cd .. -call mvn clean - -pause \ No newline at end of file diff --git a/bin/package.bat b/bin/package.bat deleted file mode 100644 index c693ec0..0000000 --- a/bin/package.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] ´ò°üWeb¹¤³̣¬Éú³Éwar/jar°üÎļþ¡£ -echo. - -%~d0 -cd %~dp0 - -cd .. -call mvn clean package -Dmaven.test.skip=true - -pause \ No newline at end of file diff --git a/bin/run.bat b/bin/run.bat deleted file mode 100644 index 90073a8..0000000 --- a/bin/run.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] ÔËÐÐWeb¹¤³̡£ -echo. - -cd %~dp0 -cd ../ruoyi-admin/target - -set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m - -java -jar %JAVA_OPTS% ruoyi-admin.jar - -cd bin -pause \ No newline at end of file diff --git a/doc/商城系统运行简易教程.docx b/doc/商城系统运行简易教程.docx deleted file mode 100644 index b407efd..0000000 Binary files a/doc/商城系统运行简易教程.docx and /dev/null differ diff --git a/image.png b/image.png new file mode 100644 index 0000000..a5d23e4 Binary files /dev/null and b/image.png differ diff --git a/pom.xml b/pom.xml deleted file mode 100644 index dd4a72c..0000000 --- a/pom.xml +++ /dev/null @@ -1,291 +0,0 @@ - - - 4.0.0 - - co.yixiang - supplier - 2.0.0 - - supplier - https://www.yixiang.co - 供货管理系统 - - - 2.0.0 - UTF-8 - UTF-8 - 1.8 - 3.1.1 - 1.7.1 - 2.0.0 - 1.2.6 - 1.21 - 2.3.2 - 2.9.2 - 2.1.4 - 1.3.0 - 1.2.83 - 5.6.0 - 5.7.0 - 2.5 - 1.3.3 - 4.1.2 - 1.7 - - - - - - - - - org.springframework.boot - spring-boot-dependencies - 2.2.13.RELEASE - pom - import - - - - - com.alibaba - druid-spring-boot-starter - ${druid.version} - - - - - com.github.penggle - kaptcha - ${kaptcha.version} - - - - - org.apache.shiro - shiro-core - ${shiro.version} - - - - - org.apache.shiro - shiro-spring - ${shiro.version} - - - - - org.apache.shiro - shiro-ehcache - ${shiro.version} - - - - - com.github.theborakompanioni - thymeleaf-extras-shiro - ${thymeleaf.extras.shiro.version} - - - - - eu.bitwalker - UserAgentUtils - ${bitwalker.version} - - - - - org.mybatis.spring.boot - mybatis-spring-boot-starter - ${mybatis-spring-boot.version} - - - - - com.github.pagehelper - pagehelper-spring-boot-starter - ${pagehelper.boot.version} - - - - - com.github.oshi - oshi-core - ${oshi.version} - - - - net.java.dev.jna - jna - ${jna.version} - - - - net.java.dev.jna - jna-platform - ${jna.version} - - - - - io.springfox - springfox-swagger2 - ${swagger.version} - - - io.swagger - swagger-annotations - - - io.swagger - swagger-models - - - - - - - io.springfox - springfox-swagger-ui - ${swagger.version} - - - - - commons-io - commons-io - ${commons.io.version} - - - - - commons-fileupload - commons-fileupload - ${commons.fileupload.version} - - - - - org.apache.poi - poi-ooxml - ${poi.version} - - - - - org.apache.velocity - velocity - ${velocity.version} - - - commons-collections - commons-collections - - - - - - - com.alibaba - fastjson - ${fastjson.version} - - - - - co.yixiang - supplier-quartz - ${supplier.version} - - - - - co.yixiang - supplier-generator - ${supplier.version} - - - - - co.yixiang - supplier-framework - ${supplier.version} - - - - - co.yixiang - supplier-system - ${supplier.version} - - - - - co.yixiang - supplier-common - ${supplier.version} - - - - - - - supplier-admin - supplier-framework - supplier-system - supplier-quartz - supplier-generator - supplier-common - supplier-api - - pom - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - ${project.build.sourceEncoding} - - - - - - - - public - aliyun nexus - http://maven.aliyun.com/nexus/content/groups/public/ - - true - - - - - - - public - aliyun nexus - http://maven.aliyun.com/nexus/content/groups/public/ - - true - - - false - - - - - \ No newline at end of file diff --git a/ry.sh b/ry.sh deleted file mode 100644 index 55adaf8..0000000 --- a/ry.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -AppName=RuoYi.jar - -#JVM参数 -JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC" -APP_HOME=`pwd` -LOG_PATH=$APP_HOME/logs/$AppName.log - -if [ "$1" = "" ]; -then - echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m" - exit 1 -fi - -if [ "$AppName" = "" ]; -then - echo -e "\033[0;31m 未输入应用名 \033[0m" - exit 1 -fi - -function start() -{ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` - - if [ x"$PID" != x"" ]; then - echo "$AppName is running..." - else - nohup java -jar $JVM_OPTS target/$AppName > /dev/null 2>&1 & - echo "Start $AppName success..." - fi -} - -function stop() -{ - echo "Stop $AppName" - - PID="" - query(){ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` - } - - query - if [ x"$PID" != x"" ]; then - kill -TERM $PID - echo "$AppName (pid:$PID) exiting..." - while [ x"$PID" != x"" ] - do - sleep 1 - query - done - echo "$AppName exited." - else - echo "$AppName already stopped." - fi -} - -function restart() -{ - stop - sleep 2 - start -} - -function status() -{ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l` - if [ $PID != 0 ];then - echo "$AppName is running..." - else - echo "$AppName is not running..." - fi -} - -case $1 in - start) - start;; - stop) - stop;; - restart) - restart;; - status) - status;; - *) - -esac diff --git a/sql/supply_shop.sql b/sql/supply_shop.sql deleted file mode 100644 index e3a1d8f..0000000 --- a/sql/supply_shop.sql +++ /dev/null @@ -1,3395 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost - Source Server Type : MySQL - Source Server Version : 50723 - Source Host : localhost:3306 - Source Schema : supply_shop - - Target Server Type : MySQL - Target Server Version : 50723 - File Encoding : 65001 - - Date: 18/06/2021 17:13:56 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for gen_table --- ---------------------------- -DROP TABLE IF EXISTS `gen_table`; -CREATE TABLE `gen_table` ( - `table_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '表名称', - `table_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '表描述', - `sub_table_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `sub_table_fk_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `class_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '实体类名称', - `tpl_category` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'crud' COMMENT '使用的模板(crud单表操作 tree树表操作)', - `package_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成包路径', - `module_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成模块名', - `business_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成业务名', - `function_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成功能名', - `function_author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成功能作者', - `gen_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0', - `gen_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '/', - `options` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '其它生成选项', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`table_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成业务表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table --- ---------------------------- -INSERT INTO `gen_table` VALUES (1, 'store_goods_cate', '商城商品分类', NULL, NULL, 'StoreGoodsCate', 'tree', 'com.ruoyi.shop', 'shop', 'cate', '商城商品分类', 'hupeng', '0', '/', '{\"treeName\":\"cate_title\",\"treeParentCode\":\"pid\",\"treeCode\":\"id\"}', 'admin', '2019-08-22 09:59:25', '', '2019-08-22 11:04:52', ''); -INSERT INTO `gen_table` VALUES (2, 'store_goods_brand', '产品品牌', NULL, NULL, 'StoreGoodsBrand', 'crud', 'com.ruoyi.shop', 'shop', 'brand', '产品品牌', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-23 18:21:24', '', '2019-08-23 18:24:11', ''); -INSERT INTO `gen_table` VALUES (3, 'store_goods_type', '商品类型(商品模型)表', NULL, NULL, 'StoreGoodsType', 'crud', 'com.ruoyi.shop', 'shop', 'type', '商品类型(商品模型)', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-24 14:16:00', '', '2019-08-24 14:16:23', ''); -INSERT INTO `gen_table` VALUES (4, 'store_goods_attribute', '商品的属性表(独立)', NULL, NULL, 'StoreGoodsAttribute', 'crud', 'com.ruoyi.shop', 'shop', 'attribute', '商品的属性(独立)', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-24 14:44:41', '', '2019-08-24 14:47:04', ''); -INSERT INTO `gen_table` VALUES (5, 'store_spec', '商品规格表(独立)', NULL, NULL, 'StoreSpec', 'crud', 'com.ruoyi.shop', 'shop', 'spec', '商品规格(独立)', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-25 09:40:12', '', '2019-08-25 09:45:36', ''); -INSERT INTO `gen_table` VALUES (6, 'store_spec_goods_price', '商品规格关联价格表', NULL, NULL, 'StoreSpecGoodsPrice', 'crud', 'com.ruoyi.shop', 'shop', 'price', '商品规格关联价格', 'hupeng', '0', '/', NULL, 'admin', '2019-08-25 09:40:12', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (7, 'store_spec_item', '规格项', NULL, NULL, 'StoreSpecItem', 'crud', 'com.ruoyi.shop', 'shop', 'item', '规格项', 'hupeng', '0', '/', NULL, 'admin', '2019-08-25 09:40:12', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (8, 'store_goods', '商品主表', NULL, NULL, 'StoreGoods', 'crud', 'com.ruoyi.shop', 'shop', 'goods', '商品主', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-25 14:00:14', '', '2019-08-25 14:14:00', ''); -INSERT INTO `gen_table` VALUES (9, 'store_goods_attr', '商品关联的属性表(与商品相关)', NULL, NULL, 'StoreGoodsAttr', 'crud', 'com.ruoyi.shop', 'shop', 'attr', '商品关联的属性(与商品相关)', 'hupeng', '0', '/', NULL, 'admin', '2019-08-26 13:38:54', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (10, 'store_coupon', '优惠券主表', NULL, NULL, 'StoreCoupon', 'crud', 'com.ruoyi.shop', 'shop', 'coupon', '优惠券主', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-29 19:16:19', '', '2019-08-29 19:22:06', ''); -INSERT INTO `gen_table` VALUES (11, 'store_coupon_list', '优惠券记录表', NULL, NULL, 'StoreCouponList', 'crud', 'com.ruoyi.shop', 'shop', 'list', '优惠券记录', 'hupeng', '0', '/', NULL, 'admin', '2019-08-29 19:16:19', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (12, 'store_order', '订单主表', NULL, NULL, 'StoreOrder', 'crud', 'com.ruoyi.shop', 'shop', 'order', '订单主', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-29 19:45:09', '', '2019-08-29 19:53:53', ''); -INSERT INTO `gen_table` VALUES (13, 'store_order_goods', '订单商品表与订单主表关联', NULL, NULL, 'StoreOrderGoods', 'crud', 'com.ruoyi.shop', 'shop', 'goods', '订单商品与订单主关联', 'hupeng', '0', '/', NULL, 'admin', '2019-08-29 19:45:10', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (14, 'store_order_goods_remark', '订单商品备注表', NULL, NULL, 'StoreOrderGoodsRemark', 'crud', 'com.ruoyi.shop', 'shop', 'remark', '订单商品备注', 'hupeng', '0', '/', NULL, 'admin', '2019-08-29 19:45:10', '', NULL, NULL); -INSERT INTO `gen_table` VALUES (15, 'store_member', '商城会员信息', NULL, NULL, 'StoreMember', 'crud', 'com.ruoyi.shop', 'shop', 'member', '商城会员信息', 'hupeng', '0', '/', '{\"treeName\":\"\",\"treeParentCode\":\"\",\"treeCode\":\"\"}', 'admin', '2019-08-30 13:40:31', '', '2019-08-30 13:44:56', ''); - --- ---------------------------- --- Table structure for gen_table_column --- ---------------------------- -DROP TABLE IF EXISTS `gen_table_column`; -CREATE TABLE `gen_table_column` ( - `column_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '归属表编号', - `column_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '列名称', - `column_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '列描述', - `column_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '列类型', - `java_type` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'JAVA类型', - `java_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'JAVA字段名', - `is_pk` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否主键(1是)', - `is_increment` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否自增(1是)', - `is_required` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否必填(1是)', - `is_insert` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否为插入字段(1是)', - `is_edit` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否编辑字段(1是)', - `is_list` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否列表字段(1是)', - `is_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否查询字段(1是)', - `query_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'EQ' COMMENT '查询方式(等于、不等于、大于、小于、范围)', - `html_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)', - `dict_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典类型', - `sort` int(11) NULL DEFAULT NULL COMMENT '排序', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`column_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 223 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table_column --- ---------------------------- -INSERT INTO `gen_table_column` VALUES (1, '1', 'id', 'null', 'bigint(20) unsigned', 'Long', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (2, '1', 'pid', '上级分类编号', 'bigint(20) unsigned', 'Long', 'pid', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (3, '1', 'brand_id', '品牌ID', 'bigint(20)', 'Long', 'brandId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 3, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (4, '1', 'cate_title', '商品分类名称', 'varchar(255)', 'String', 'cateTitle', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (5, '1', 'cate_desc', '商品描述', 'text', 'String', 'cateDesc', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'textarea', '', 5, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (6, '1', 'img_url', '缩略图url', 'varchar(200)', 'String', 'imgUrl', '0', '0', NULL, '1', '1', NULL, NULL, 'EQ', 'input', '', 6, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (7, '1', 'sort', '商品分类排序', 'bigint(20) unsigned', 'Long', 'sort', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 7, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (8, '1', 'status', '分类状态', 'bigint(1) unsigned', 'Integer', 'status', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'radio', '', 8, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (9, '1', 'is_deleted', '删除状态(1删除,0未删除)', 'bigint(1) unsigned', 'Integer', 'isDeleted', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 9, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (10, '1', 'create_at', '创建时间', 'timestamp', 'Date', 'createAt', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'datetime', '', 10, 'admin', '2019-08-22 09:59:25', NULL, '2019-08-22 11:04:52'); -INSERT INTO `gen_table_column` VALUES (11, '2', 'id', 'null', 'int(11) unsigned', 'Long', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (12, '2', 'brand_logo', '品牌logo', 'varchar(1024)', 'String', 'brandLogo', '0', '0', NULL, '1', '1', NULL, NULL, 'EQ', 'textarea', '', 2, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (13, '2', 'brand_cover', '品牌封面', 'varchar(1024)', 'String', 'brandCover', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'textarea', '', 3, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (14, '2', 'brand_title', '商品品牌名称', 'varchar(255)', 'String', 'brandTitle', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (15, '2', 'brand_desc', '商品品牌描述', 'text', 'String', 'brandDesc', '0', '0', NULL, '1', '1', NULL, NULL, 'EQ', 'input', '', 5, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (16, '2', 'brand_detail', '品牌图文信息', 'text', 'String', 'brandDetail', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 6, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (17, '2', 'sort', '商品分类排序', 'int(11) unsigned', 'Long', 'sort', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 7, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (18, '2', 'status', '商品状态', 'tinyint(1) unsigned', 'Integer', 'status', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'radio', '', 8, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (19, '2', 'is_deleted', '删除状态(1删除,0未删除)', 'tinyint(1) unsigned', 'Integer', 'isDeleted', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 9, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (20, '2', 'create_at', '创建时间', 'timestamp', 'Date', 'createAt', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'datetime', '', 10, 'admin', '2019-08-23 18:21:25', NULL, '2019-08-23 18:24:11'); -INSERT INTO `gen_table_column` VALUES (21, '3', 'id', 'id自增', 'smallint(5) unsigned', 'Integer', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-24 14:16:00', NULL, '2019-08-24 14:16:23'); -INSERT INTO `gen_table_column` VALUES (22, '3', 'name', '类型名称', 'varchar(60)', 'String', 'name', '0', '0', '1', '1', '1', '1', '1', 'LIKE', 'input', '', 2, 'admin', '2019-08-24 14:16:00', NULL, '2019-08-24 14:16:23'); -INSERT INTO `gen_table_column` VALUES (23, '4', 'attr_id', '属性id', 'int(11) unsigned', 'Long', 'attrId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (24, '4', 'attr_name', '属性名称', 'varchar(60)', 'String', 'attrName', '0', '0', '1', '1', '1', '1', '1', 'LIKE', 'input', '', 2, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (25, '4', 'type_id', '属性分类id(商品模型id)', 'smallint(5) unsigned', 'Integer', 'typeId', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 3, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (26, '4', 'attr_index', '0不需要检索 1关键字检索 2范围检索', 'tinyint(1) unsigned', 'Integer', 'attrIndex', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 4, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (27, '4', 'attr_type', '0唯一属性 1单选属性 2复选属性', 'tinyint(1) unsigned', 'Integer', 'attrType', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'select', '', 5, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (28, '4', 'attr_input_type', '0 手工录入 1从列表中选择 2多行文本框', 'tinyint(1) unsigned', 'Integer', 'attrInputType', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'select', '', 6, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (29, '4', 'attr_values', '可选值列表', 'text', 'String', 'attrValues', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 7, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (30, '4', 'sort', '属性排序', 'tinyint(3) unsigned', 'Integer', 'sort', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 8, 'admin', '2019-08-24 14:44:41', NULL, '2019-08-24 14:47:04'); -INSERT INTO `gen_table_column` VALUES (31, '5', 'id', '规格表', 'int(11)', 'Long', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-25 09:40:12', NULL, '2019-08-25 09:45:36'); -INSERT INTO `gen_table_column` VALUES (32, '5', 'type_id', '规格类型', 'int(11)', 'Long', 'typeId', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'select', '', 2, 'admin', '2019-08-25 09:40:12', NULL, '2019-08-25 09:45:36'); -INSERT INTO `gen_table_column` VALUES (33, '5', 'name', '规格名称', 'varchar(55)', 'String', 'name', '0', '0', NULL, '1', '1', '1', '1', 'LIKE', 'input', '', 3, 'admin', '2019-08-25 09:40:12', NULL, '2019-08-25 09:45:36'); -INSERT INTO `gen_table_column` VALUES (34, '5', 'sort', '排序', 'int(11)', 'Long', 'sort', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 4, 'admin', '2019-08-25 09:40:12', NULL, '2019-08-25 09:45:36'); -INSERT INTO `gen_table_column` VALUES (35, '5', 'search_index', '是否需要检索:1是,0否', 'tinyint(1)', 'Integer', 'searchIndex', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 5, 'admin', '2019-08-25 09:40:12', NULL, '2019-08-25 09:45:36'); -INSERT INTO `gen_table_column` VALUES (36, '6', 'item_id', '规格商品id', 'bigint(20) unsigned', 'Long', 'itemId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (37, '6', 'goods_id', '商品id', 'int(11)', 'Long', 'goodsId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (38, '6', 'key', '规格键名', 'varchar(255)', 'String', 'key', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (39, '6', 'key_name', '规格键名中文', 'varchar(255)', 'String', 'keyName', '0', '0', NULL, '1', '1', '1', '1', 'LIKE', 'input', '', 4, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (40, '6', 'price', '价格(供货价格)', 'decimal(10,2)', 'Double', 'price', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (41, '6', 'market_price', '零售价格', 'double(10,2) unsigned', 'Double', 'marketPrice', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 6, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (42, '6', 'store_count', '库存数量', 'int(11) unsigned', 'Long', 'storeCount', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (43, '6', 'bar_code', '商品条形码', 'varchar(32)', 'String', 'barCode', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (44, '6', 'sku', 'SKU', 'varchar(128)', 'String', 'sku', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (45, '6', 'spec_img', '规格商品主图', 'varchar(255)', 'String', 'specImg', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (46, '6', 'prom_id', '活动id', 'int(10)', 'Integer', 'promId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 11, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (47, '6', 'prom_type', '参加活动类型', 'tinyint(2)', 'Integer', 'promType', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'select', '', 12, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (48, '7', 'id', '规格项id', 'int(11)', 'Long', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (49, '7', 'spec_id', '规格id', 'int(11)', 'Long', 'specId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (50, '7', 'item', '规格项', 'varchar(54)', 'String', 'item', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2019-08-25 09:40:12', '', NULL); -INSERT INTO `gen_table_column` VALUES (51, '8', 'goods_id', '商品id', 'mediumint(8) unsigned', 'Integer', 'goodsId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (52, '8', 'cate_id', '分类id', 'int(11) unsigned', 'Long', 'cateId', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'select', '', 2, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (53, '8', 'extend_cat_id', '扩展分类id', 'int(11)', 'Long', 'extendCatId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 3, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (54, '8', 'goods_sn', '商品编号', 'varchar(60)', 'String', 'goodsSn', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (55, '8', 'goods_name', '商品名称', 'varchar(120)', 'String', 'goodsName', '0', '0', '1', '1', '1', '1', '1', 'LIKE', 'input', '', 5, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (56, '8', 'click_count', '点击数', 'int(10) unsigned', 'Integer', 'clickCount', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 6, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (57, '8', 'brand_id', '品牌id', 'smallint(5) unsigned', 'Integer', 'brandId', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'select', '', 7, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (58, '8', 'store_count', '库存数量', 'smallint(5)', 'Integer', 'storeCount', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 8, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (59, '8', 'comment_count', '商品评论数', 'smallint(5)', 'Integer', 'commentCount', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 9, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (60, '8', 'weight', '商品重量克为单位', 'int(11) unsigned', 'Long', 'weight', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 10, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (61, '8', 'volume', '商品体积。单位立方米', 'double(10,4) unsigned', 'Double', 'volume', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 11, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (62, '8', 'market_price', '市场价(零售价)', 'decimal(10,2) unsigned', 'Double', 'marketPrice', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 12, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (63, '8', 'shop_price', '本店价(供货价)', 'decimal(10,2) unsigned', 'Double', 'shopPrice', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 13, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (64, '8', 'cost_price', '商品成本价', 'decimal(10,2)', 'Double', 'costPrice', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 14, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (65, '8', 'price_ladder', '价格阶梯', 'text', 'String', 'priceLadder', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 15, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (66, '8', 'keywords', '商品关键词', 'varchar(255)', 'String', 'keywords', '0', '0', '1', '1', '1', NULL, NULL, 'EQ', 'input', '', 16, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (67, '8', 'goods_remark', '商品简单描述', 'varchar(255)', 'String', 'goodsRemark', '0', '0', '1', '1', '1', NULL, NULL, 'EQ', 'textarea', '', 17, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (68, '8', 'goods_content', '商品详细描述', 'text', 'String', 'goodsContent', '0', '0', NULL, '1', '1', NULL, NULL, 'EQ', 'textarea', '', 18, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (69, '8', 'mobile_content', '手机端商品详情', 'text', 'String', 'mobileContent', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 19, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (70, '8', 'goods_logo', '商品上传原始图(主图)', 'varchar(255)', 'String', 'goodsLogo', '0', '0', '1', '1', '1', NULL, NULL, 'EQ', 'input', '', 20, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (71, '8', 'is_virtual', '是否为虚拟商品 1是,0否', 'tinyint(3) unsigned', 'Integer', 'isVirtual', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 21, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (72, '8', 'virtual_indate', '虚拟商品有效期', 'int(11)', 'Long', 'virtualIndate', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 22, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (73, '8', 'virtual_limit', '虚拟商品购买上限', 'smallint(6)', 'Integer', 'virtualLimit', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 23, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (74, '8', 'virtual_refund', '是否允许过期退款, 1是,0否', 'tinyint(1)', 'Integer', 'virtualRefund', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 24, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (75, '8', 'is_on_sale', '是否上架 0-未上架 1-销售中', 'tinyint(1) unsigned', 'Integer', 'isOnSale', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 25, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (76, '8', 'is_free_shipping', '是否包邮0否1是', 'tinyint(1) unsigned', 'Integer', 'isFreeShipping', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 26, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (77, '8', 'on_time', '商品上架时间', 'int(10) unsigned', 'Integer', 'onTime', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 27, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (78, '8', 'sort', '商品排序', 'smallint(4) unsigned', 'Integer', 'sort', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 28, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (79, '8', 'is_recommend', '是否推荐0-未推荐 1-已推荐', 'tinyint(1) unsigned', 'Integer', 'isRecommend', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 29, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (80, '8', 'is_new', '是否新品0-不是 1-是', 'tinyint(1) unsigned', 'Integer', 'isNew', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 30, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (81, '8', 'is_hot', '是否热卖', 'tinyint(1)', 'Integer', 'isHot', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 31, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (82, '8', 'last_update', '最后更新时间', 'int(10) unsigned', 'Integer', 'lastUpdate', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 32, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (83, '8', 'goods_type', '商品所属类型id,取值表goods_type的id', 'smallint(5) unsigned', 'Integer', 'goodsType', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'select', '', 33, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (84, '8', 'spec_type', '商品规格类型,取值表goods_type的id', 'smallint(5)', 'Integer', 'specType', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 34, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (85, '8', 'give_integral', '购买商品赠送积分', 'mediumint(8) unsigned', 'Integer', 'giveIntegral', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 35, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (86, '8', 'exchange_integral', '积分兑换:0不参与积分兑换,积分和现金的兑换比例见后台配置', 'int(10)', 'Integer', 'exchangeIntegral', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 36, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (87, '8', 'suppliers_id', '供货商ID', 'smallint(5) unsigned', 'Integer', 'suppliersId', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 37, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (88, '8', 'sales_sum', '商品销量', 'int(11)', 'Long', 'salesSum', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 38, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (89, '8', 'prom_type', '0默认1抢购2团购3优惠促销4预售5虚拟(5其实没用)6拼团', 'tinyint(1)', 'Integer', 'promType', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 39, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (90, '8', 'prom_id', '优惠活动id', 'int(11)', 'Long', 'promId', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 40, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (91, '8', 'commission', '佣金用于分销分成', 'decimal(10,2)', 'Double', 'commission', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 41, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (92, '8', 'spu', 'SPU', 'varchar(128)', 'String', 'spu', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 42, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (93, '8', 'sku', 'SKU', 'varchar(128)', 'String', 'sku', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 43, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (94, '8', 'template_id', '运费模板ID', 'int(11) unsigned', 'Long', 'templateId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 44, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (95, '8', 'goods_video', '视频', 'varchar(255)', 'String', 'goodsVideo', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 45, 'admin', '2019-08-25 14:00:15', NULL, '2019-08-25 14:14:00'); -INSERT INTO `gen_table_column` VALUES (96, '9', 'goods_attr_id', '商品属性id自增', 'int(10) unsigned', 'Integer', 'goodsAttrId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-26 13:38:54', '', NULL); -INSERT INTO `gen_table_column` VALUES (97, '9', 'goods_id', '商品id', 'mediumint(8) unsigned', 'Integer', 'goodsId', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-26 13:38:54', '', NULL); -INSERT INTO `gen_table_column` VALUES (98, '9', 'attr_id', '属性id', 'smallint(5) unsigned', 'Integer', 'attrId', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2019-08-26 13:38:54', '', NULL); -INSERT INTO `gen_table_column` VALUES (99, '9', 'attr_value', '属性值', 'text', 'String', 'attrValue', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-26 13:38:54', '', NULL); -INSERT INTO `gen_table_column` VALUES (100, '9', 'attr_price', '属性价格', 'varchar(255)', 'String', 'attrPrice', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2019-08-26 13:38:54', '', NULL); -INSERT INTO `gen_table_column` VALUES (101, '10', 'id', '表id', 'int(8)', 'Integer', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (102, '10', 'name', '优惠券名字', 'varchar(50)', 'String', 'name', '0', '0', '1', '1', '1', '1', '1', 'LIKE', 'input', '', 2, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (103, '10', 'type', '发放类型 0下单赠送1 指定发放 2 免费领取 3线下发放', 'tinyint(1) unsigned', 'Integer', 'type', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'select', '', 3, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (104, '10', 'money', '优惠券金额', 'decimal(10,2)', 'Double', 'money', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 4, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (105, '10', 'condition', '使用条件,满多少金额', 'decimal(10,2)', 'Double', 'condition', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 5, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (106, '10', 'createnum', '发放数量', 'int(11)', 'Long', 'createnum', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 6, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (107, '10', 'send_num', '已领取数量', 'int(11)', 'Long', 'sendNum', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'input', '', 7, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (108, '10', 'use_num', '已使用数量', 'int(11)', 'Long', 'useNum', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 8, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (109, '10', 'send_start_time', '发放开始时间', 'int(11)', 'Long', 'sendStartTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 9, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (110, '10', 'send_end_time', '发放结束时间', 'int(11)', 'Long', 'sendEndTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 10, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (111, '10', 'use_start_time', '使用开始时间', 'int(11)', 'Long', 'useStartTime', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'datetime', '', 11, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (112, '10', 'use_end_time', '使用结束时间', 'int(11)', 'Long', 'useEndTime', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'datetime', '', 12, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (113, '10', 'add_time', '添加时间', 'int(11)', 'Long', 'addTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 13, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (114, '10', 'status', '状态:1有效,2无效', 'int(2)', 'Integer', 'status', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'radio', '', 14, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (115, '10', 'use_type', '使用范围:0全店通用1指定商品可用2指定分类商品可用', 'tinyint(1)', 'Integer', 'useType', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 15, 'admin', '2019-08-29 19:16:19', NULL, '2019-08-29 19:22:06'); -INSERT INTO `gen_table_column` VALUES (116, '11', 'id', '表id', 'int(8)', 'Integer', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (117, '11', 'cid', '优惠券 对应coupon表id', 'int(8)', 'Integer', 'cid', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (118, '11', 'type', '发放类型 1 按订单发放 2 注册 3 邀请 4 按用户发放', 'tinyint(1) unsigned', 'Integer', 'type', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'select', '', 3, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (119, '11', 'uid', '用户id', 'int(8)', 'Integer', 'uid', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (120, '11', 'order_id', '订单id', 'int(8)', 'Integer', 'orderId', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (121, '11', 'get_order_id', '优惠券来自订单ID', 'int(11)', 'Long', 'getOrderId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 6, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (122, '11', 'use_time', '使用时间', 'int(11)', 'Long', 'useTime', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (123, '11', 'code', '优惠券兑换码', 'varchar(10)', 'String', 'code', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (124, '11', 'send_time', '发放时间', 'int(11)', 'Long', 'sendTime', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (125, '11', 'status', '0未使用1已使用2已过期', 'tinyint(1)', 'Integer', 'status', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'radio', '', 10, 'admin', '2019-08-29 19:16:19', '', NULL); -INSERT INTO `gen_table_column` VALUES (126, '12', 'order_id', '订单id', 'mediumint(8) unsigned', 'Integer', 'orderId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-29 19:45:09', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (127, '12', 'order_sn', '订单编号', 'varchar(20)', 'String', 'orderSn', '0', '0', '1', NULL, NULL, '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-29 19:45:09', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (128, '12', 'user_id', '用户id', 'mediumint(8) unsigned', 'Integer', 'userId', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 3, 'admin', '2019-08-29 19:45:09', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (129, '12', 'order_status', '订单状态 0-未确认 1-已确认(已收货) 2-已评价', 'tinyint(1) unsigned', 'Integer', 'orderStatus', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'radio', '', 4, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (130, '12', 'shipping_status', '发货状态 0-未发货 1-已发货 2-退货中 3-退货完成', 'tinyint(1) unsigned', 'Integer', 'shippingStatus', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'radio', '', 5, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (131, '12', 'pay_status', '支付状态 0-未支付 1-已支付', 'tinyint(1) unsigned', 'Integer', 'payStatus', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'radio', '', 6, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (132, '12', 'consignee', '收货人', 'varchar(60)', 'String', 'consignee', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 7, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (133, '12', 'country', '国家', 'int(11) unsigned', 'Long', 'country', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 8, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (134, '12', 'province', '省份', 'int(11) unsigned', 'Long', 'province', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 9, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (135, '12', 'city', '城市', 'int(11) unsigned', 'Long', 'city', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 10, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (136, '12', 'district', '县区', 'int(11) unsigned', 'Long', 'district', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 11, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (137, '12', 'twon', '乡镇', 'int(11)', 'Long', 'twon', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 12, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (138, '12', 'city_info', '地区地址', 'varchar(200)', 'String', 'cityInfo', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 13, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (139, '12', 'address', '地址详细地址', 'varchar(255)', 'String', 'address', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 14, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (140, '12', 'zipcode', '邮政编码', 'varchar(60)', 'String', 'zipcode', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 15, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (141, '12', 'mobile', '手机', 'varchar(60)', 'String', 'mobile', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 16, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (142, '12', 'email', '邮件', 'varchar(60)', 'String', 'email', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 17, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (143, '12', 'receive_type', '收货方式 1-物流 2-快递 3-自取', 'tinyint(1) unsigned', 'Integer', 'receiveType', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 18, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (144, '12', 'shipping_code', '物流code 单号', 'varchar(32)', 'String', 'shippingCode', '0', '0', NULL, '1', '1', NULL, '1', 'EQ', 'input', '', 19, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (145, '12', 'shipping_name', '物流名称', 'varchar(120)', 'String', 'shippingName', '0', '0', NULL, '1', '1', NULL, '1', 'LIKE', 'input', '', 20, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (146, '12', 'pay_code', '支付code', 'varchar(32)', 'String', 'payCode', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 21, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (147, '12', 'pay_method', '支付方式1-微信2-余额3-转账', 'tinyint(1) unsigned', 'Integer', 'payMethod', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 22, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (148, '12', 'recharge_id', '支付方式为转账的转账id', 'int(10) unsigned', 'Integer', 'rechargeId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 23, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (149, '12', 'pay_name', '支付方式名称', 'varchar(120)', 'String', 'payName', '0', '0', '1', NULL, NULL, NULL, NULL, 'LIKE', 'input', '', 24, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (150, '12', 'invoice_title', '发票抬头', 'varchar(256)', 'String', 'invoiceTitle', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 25, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (151, '12', 'taxpayer', '纳税人识别号', 'varchar(30)', 'String', 'taxpayer', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 26, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (152, '12', 'goods_price', '商品总价', 'decimal(10,2)', 'Double', 'goodsPrice', '0', '0', '1', '1', '1', '1', NULL, 'EQ', 'input', '', 27, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (153, '12', 'shipping_price', '邮费', 'decimal(10,2)', 'Double', 'shippingPrice', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 28, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (154, '12', 'user_money', '使用余额', 'decimal(10,2)', 'Double', 'userMoney', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 29, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (155, '12', 'coupon_price', '优惠券抵扣', 'decimal(10,2)', 'Double', 'couponPrice', '0', '0', NULL, NULL, NULL, '1', '1', 'EQ', 'input', '', 30, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (156, '12', 'integral', '使用积分', 'int(10) unsigned', 'Integer', 'integral', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 31, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (157, '12', 'integral_money', '使用积分抵多少钱', 'decimal(10,2)', 'Double', 'integralMoney', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 32, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (158, '12', 'order_amount', '应付款金额', 'decimal(10,2)', 'Double', 'orderAmount', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 33, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (159, '12', 'total_amount', '订单总价', 'decimal(10,2)', 'Double', 'totalAmount', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 34, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (160, '12', 'add_time', '下单时间', 'int(10) unsigned', 'Integer', 'addTime', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 35, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (161, '12', 'shipping_time', '最后新发货时间', 'int(11)', 'Long', 'shippingTime', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'input', '', 36, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (162, '12', 'confirm_time', '收货确认时间', 'int(10)', 'Integer', 'confirmTime', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'input', '', 37, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (163, '12', 'pay_time', '支付时间', 'int(10) unsigned', 'Integer', 'payTime', '0', '0', '1', NULL, NULL, '1', NULL, 'EQ', 'input', '', 38, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (164, '12', 'transaction_id', '第三方平台交易流水号', 'varchar(255)', 'String', 'transactionId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 39, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (165, '12', 'prom_id', '活动ID', 'int(11) unsigned', 'Long', 'promId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 40, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (166, '12', 'prom_type', '订单类型:0普通订单4预售订单5虚拟订单6拼团订单', 'tinyint(4) unsigned', 'Integer', 'promType', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 41, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (167, '12', 'order_prom_id', '活动id', 'smallint(6)', 'Integer', 'orderPromId', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 42, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (168, '12', 'order_prom_amount', '活动优惠金额', 'decimal(10,2)', 'Double', 'orderPromAmount', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 43, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (169, '12', 'discount', '价格调整', 'decimal(10,2)', 'Double', 'discount', '0', '0', '1', '1', '1', NULL, NULL, 'EQ', 'input', '', 44, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (170, '12', 'user_note', '用户备注', 'varchar(255)', 'String', 'userNote', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 45, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (171, '12', 'admin_note', '管理员备注', 'varchar(255)', 'String', 'adminNote', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 46, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (172, '12', 'parent_sn', '父单单号', 'varchar(100)', 'String', 'parentSn', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 47, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (173, '12', 'is_distribut', '是否已分成0未分成1已分成', 'tinyint(1)', 'Integer', 'isDistribut', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 48, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (174, '12', 'paid_money', '订金', 'decimal(10,2)', 'Double', 'paidMoney', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 49, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (175, '12', 'deleted_time', '删除|取消时间', 'int(11) unsigned', 'Long', 'deletedTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 50, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (176, '12', 'deleted', '用户假删除标识,1:删除,0未删除', 'tinyint(1)', 'Integer', 'deleted', '0', '0', '1', NULL, NULL, NULL, NULL, 'EQ', 'input', '', 51, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (177, '12', 'edit_money', '管理后台修改变动的价格', 'varchar(50)', 'String', 'editMoney', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 52, 'admin', '2019-08-29 19:45:10', NULL, '2019-08-29 19:53:53'); -INSERT INTO `gen_table_column` VALUES (178, '13', 'rec_id', '表id自增', 'mediumint(8) unsigned', 'Integer', 'recId', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (179, '13', 'order_id', '订单id', 'mediumint(8) unsigned', 'Integer', 'orderId', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (180, '13', 'goods_id', '商品id', 'mediumint(8) unsigned', 'Integer', 'goodsId', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (181, '13', 'goods_name', '商品名称', 'varchar(120)', 'String', 'goodsName', '0', '0', '1', '1', '1', '1', '1', 'LIKE', 'input', '', 4, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (182, '13', 'goods_sn', '商品货号', 'varchar(60)', 'String', 'goodsSn', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (183, '13', 'goods_num', '购买数量', 'smallint(5) unsigned', 'Integer', 'goodsNum', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 6, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (184, '13', 'market_price', '市场价', 'decimal(10,2) unsigned', 'Double', 'marketPrice', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (185, '13', 'goods_price', '本店价(供货价)', 'decimal(10,2) unsigned', 'Double', 'goodsPrice', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (186, '13', 'cost_price', '商品成本价', 'decimal(10,2)', 'Double', 'costPrice', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (187, '13', 'member_goods_price', '会员折扣价', 'decimal(10,2)', 'Double', 'memberGoodsPrice', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (188, '13', 'give_integral', '购买商品赠送积分', 'mediumint(8) unsigned', 'Integer', 'giveIntegral', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 11, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (189, '13', 'spec_key', '商品规格key', 'varchar(128)', 'String', 'specKey', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 12, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (190, '13', 'spec_key_name', '规格对应的中文名字', 'varchar(128)', 'String', 'specKeyName', '0', '0', NULL, '1', '1', '1', '1', 'LIKE', 'input', '', 13, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (191, '13', 'bar_code', '条码', 'varchar(64)', 'String', 'barCode', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 14, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (192, '13', 'is_comment', '是否评价', 'tinyint(1)', 'Integer', 'isComment', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 15, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (193, '13', 'prom_type', '0 普通订单,1 限时抢购, 2 团购 , 3 促销优惠,4预售', 'tinyint(1) unsigned', 'Integer', 'promType', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'select', '', 16, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (194, '13', 'prom_id', '活动id', 'int(11) unsigned', 'Long', 'promId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 17, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (195, '13', 'is_send', '0未发货,1已发货,2已换货,3已退货', 'tinyint(1)', 'Integer', 'isSend', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 18, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (196, '13', 'delivery_id', '发货单ID', 'int(11)', 'Long', 'deliveryId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 19, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (197, '13', 'sku', 'sku', 'varchar(128)', 'String', 'sku', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 20, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (198, '14', 'id', NULL, 'int(10) unsigned', 'Integer', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (199, '14', 'order_id', '订单id', 'int(10) unsigned', 'Integer', 'orderId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (200, '14', 'goods_id', '商品id', 'int(10) unsigned', 'Integer', 'goodsId', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (201, '14', 'remark', '商品备注', 'varchar(255)', 'String', 'remark', '0', '0', NULL, '1', '1', '1', NULL, 'EQ', 'input', '', 4, 'admin', '2019-08-29 19:45:10', '', NULL); -INSERT INTO `gen_table_column` VALUES (202, '15', 'id', 'null', 'bigint(20) unsigned', 'Long', 'id', '1', '1', NULL, '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (203, '15', 'vip_no', 'vip编号', 'varchar(10)', 'String', 'vipNo', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 2, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (204, '15', 'openid', '会员微信OPENID', 'varchar(100)', 'String', 'openid', '0', '0', NULL, NULL, NULL, NULL, '1', 'EQ', 'input', '', 3, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (205, '15', 'phone', '会员手机号', 'varchar(16)', 'String', 'phone', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (206, '15', 'password', '登录密码', 'varchar(64)', 'String', 'password', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 5, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (207, '15', 'nickname', '会员昵称', 'varchar(20)', 'String', 'nickname', '0', '0', NULL, '1', '1', '1', '1', 'LIKE', 'input', '', 6, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (208, '15', 'headimg', '会员头像', 'varchar(500)', 'String', 'headimg', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'textarea', '', 7, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (209, '15', 'sex', '性别', 'char(2)', 'String', 'sex', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'select', '', 8, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (210, '15', 'level', '会员级别', 'tinyint(2) unsigned', 'Integer', 'level', '0', '0', NULL, '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (211, '15', 'total_amount', '消费累计额度 用于用户等级', 'decimal(10,2) unsigned', 'Double', 'totalAmount', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 10, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (212, '15', 'user_money', '用户金额', 'decimal(8,2)', 'Double', 'userMoney', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'input', '', 11, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (213, '15', 'distribut_money', '累积分佣金额', 'decimal(8,2) unsigned', 'Double', 'distributMoney', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 12, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (214, '15', 'frozen_money', '冻结金额', 'double(8,2) unsigned', 'Double', 'frozenMoney', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 13, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (215, '15', 'underling_number', '用户下线总数', 'int(5) unsigned', 'Integer', 'underlingNumber', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 14, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (216, '15', 'pay_points', '消费积分', 'int(8) unsigned', 'Integer', 'payPoints', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'input', '', 15, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (217, '15', 'address_id', '默认收货地址', 'int(10) unsigned', 'Integer', 'addressId', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 16, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (218, '15', 'remark', '会员个性签名', 'varchar(500)', 'String', 'remark', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'textarea', '', 17, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (219, '15', 'status', '会员状态0待审核 1-已审核 2-已拒绝', 'tinyint(1) unsigned', 'Integer', 'status', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'radio', '', 18, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (220, '15', 'create_time', 'null', 'bigint(20) unsigned', 'Long', 'createTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 19, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (221, '15', 'create_at', '创建时间', 'timestamp', 'Date', 'createAt', '0', '0', NULL, NULL, NULL, '1', NULL, 'EQ', 'datetime', '', 20, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); -INSERT INTO `gen_table_column` VALUES (222, '15', 'status_time', '审核时间', 'bigint(20) unsigned', 'Long', 'statusTime', '0', '0', NULL, NULL, NULL, NULL, NULL, 'EQ', 'input', '', 21, 'admin', '2019-08-30 13:40:31', NULL, '2019-08-30 13:44:56'); - --- ---------------------------- --- Table structure for qrtz_blob_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_blob_triggers`; -CREATE TABLE `qrtz_blob_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `blob_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_calendars --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_calendars`; -CREATE TABLE `qrtz_calendars` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `calendar` blob NOT NULL, - PRIMARY KEY (`sched_name`, `calendar_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_cron_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_cron_triggers`; -CREATE TABLE `qrtz_cron_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `cron_expression` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `time_zone_id` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_cron_triggers --- ---------------------------- -INSERT INTO `qrtz_cron_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME1', 'DEFAULT', '0/10 * * * * ?', 'Asia/Shanghai'); -INSERT INTO `qrtz_cron_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME2', 'DEFAULT', '0/15 * * * * ?', 'Asia/Shanghai'); -INSERT INTO `qrtz_cron_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME3', 'DEFAULT', '0/20 * * * * ?', 'Asia/Shanghai'); - --- ---------------------------- --- Table structure for qrtz_fired_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_fired_triggers`; -CREATE TABLE `qrtz_fired_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `entry_id` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `fired_time` bigint(13) NOT NULL, - `sched_time` bigint(13) NOT NULL, - `priority` int(11) NOT NULL, - `state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`sched_name`, `entry_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_job_details --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_job_details`; -CREATE TABLE `qrtz_job_details` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `job_class_name` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `is_durable` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `is_update_data` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_data` blob NULL, - PRIMARY KEY (`sched_name`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_job_details --- ---------------------------- -INSERT INTO `qrtz_job_details` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME1', 'DEFAULT', NULL, 'co.yixiang.quartz.util.QuartzDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000F5441534B5F50524F504552544945537372001F636F2E79697869616E672E71756172747A2E646F6D61696E2E5379734A6F6200000000000000010200084C000A636F6E63757272656E747400124C6A6176612F6C616E672F537472696E673B4C000E63726F6E45787072657373696F6E71007E00094C000C696E766F6B6554617267657471007E00094C00086A6F6247726F757071007E00094C00056A6F6249647400104C6A6176612F6C616E672F4C6F6E673B4C00076A6F624E616D6571007E00094C000D6D697366697265506F6C69637971007E00094C000673746174757371007E000978720028636F2E79697869616E672E636F6D6D6F6E2E636F72652E646F6D61696E2E42617365456E7469747900000000000000010200074C0008637265617465427971007E00094C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C0006706172616D7371007E00034C000672656D61726B71007E00094C000B73656172636856616C756571007E00094C0008757064617465427971007E00094C000A75706461746554696D6571007E000C787074000561646D696E7372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001622CDE29E078707400007070707400013174000E302F3130202A202A202A202A203F74001172795461736B2E72794E6F506172616D7374000744454641554C547372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001740018E7B3BBE7BB9FE9BB98E8AEA4EFBC88E697A0E58F82EFBC8974000133740001317800); -INSERT INTO `qrtz_job_details` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME2', 'DEFAULT', NULL, 'co.yixiang.quartz.util.QuartzDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000F5441534B5F50524F504552544945537372001F636F2E79697869616E672E71756172747A2E646F6D61696E2E5379734A6F6200000000000000010200084C000A636F6E63757272656E747400124C6A6176612F6C616E672F537472696E673B4C000E63726F6E45787072657373696F6E71007E00094C000C696E766F6B6554617267657471007E00094C00086A6F6247726F757071007E00094C00056A6F6249647400104C6A6176612F6C616E672F4C6F6E673B4C00076A6F624E616D6571007E00094C000D6D697366697265506F6C69637971007E00094C000673746174757371007E000978720028636F2E79697869616E672E636F6D6D6F6E2E636F72652E646F6D61696E2E42617365456E7469747900000000000000010200074C0008637265617465427971007E00094C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C0006706172616D7371007E00034C000672656D61726B71007E00094C000B73656172636856616C756571007E00094C0008757064617465427971007E00094C000A75706461746554696D6571007E000C787074000561646D696E7372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001622CDE29E078707400007070707400013174000E302F3135202A202A202A202A203F74001572795461736B2E7279506172616D7328277279272974000744454641554C547372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000002740018E7B3BBE7BB9FE9BB98E8AEA4EFBC88E69C89E58F82EFBC8974000133740001317800); -INSERT INTO `qrtz_job_details` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME3', 'DEFAULT', NULL, 'co.yixiang.quartz.util.QuartzDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000F5441534B5F50524F504552544945537372001F636F2E79697869616E672E71756172747A2E646F6D61696E2E5379734A6F6200000000000000010200084C000A636F6E63757272656E747400124C6A6176612F6C616E672F537472696E673B4C000E63726F6E45787072657373696F6E71007E00094C000C696E766F6B6554617267657471007E00094C00086A6F6247726F757071007E00094C00056A6F6249647400104C6A6176612F6C616E672F4C6F6E673B4C00076A6F624E616D6571007E00094C000D6D697366697265506F6C69637971007E00094C000673746174757371007E000978720028636F2E79697869616E672E636F6D6D6F6E2E636F72652E646F6D61696E2E42617365456E7469747900000000000000010200074C0008637265617465427971007E00094C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C0006706172616D7371007E00034C000672656D61726B71007E00094C000B73656172636856616C756571007E00094C0008757064617465427971007E00094C000A75706461746554696D6571007E000C787074000561646D696E7372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001622CDE29E078707400007070707400013174000E302F3230202A202A202A202A203F74003872795461736B2E72794D756C7469706C65506172616D7328277279272C20747275652C20323030304C2C203331362E3530442C203130302974000744454641554C547372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000003740018E7B3BBE7BB9FE9BB98E8AEA4EFBC88E5A49AE58F82EFBC8974000133740001317800); - --- ---------------------------- --- Table structure for qrtz_locks --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_locks`; -CREATE TABLE `qrtz_locks` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `lock_name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - PRIMARY KEY (`sched_name`, `lock_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_locks --- ---------------------------- -INSERT INTO `qrtz_locks` VALUES ('RuoyiScheduler', 'STATE_ACCESS'); -INSERT INTO `qrtz_locks` VALUES ('RuoyiScheduler', 'TRIGGER_ACCESS'); - --- ---------------------------- --- Table structure for qrtz_paused_trigger_grps --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; -CREATE TABLE `qrtz_paused_trigger_grps` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - PRIMARY KEY (`sched_name`, `trigger_group`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_scheduler_state --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_scheduler_state`; -CREATE TABLE `qrtz_scheduler_state` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `last_checkin_time` bigint(13) NOT NULL, - `checkin_interval` bigint(13) NOT NULL, - PRIMARY KEY (`sched_name`, `instance_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_scheduler_state --- ---------------------------- -INSERT INTO `qrtz_scheduler_state` VALUES ('RuoyiScheduler', 'DESKTOP-GCTSJEJ1624007141006', 1624007624686, 15000); - --- ---------------------------- --- Table structure for qrtz_simple_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simple_triggers`; -CREATE TABLE `qrtz_simple_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `repeat_count` bigint(7) NOT NULL, - `repeat_interval` bigint(12) NOT NULL, - `times_triggered` bigint(10) NOT NULL, - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_simprop_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simprop_triggers`; -CREATE TABLE `qrtz_simprop_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `str_prop_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `str_prop_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `str_prop_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `int_prop_1` int(11) NULL DEFAULT NULL, - `int_prop_2` int(11) NULL DEFAULT NULL, - `long_prop_1` bigint(20) NULL DEFAULT NULL, - `long_prop_2` bigint(20) NULL DEFAULT NULL, - `dec_prop_1` decimal(13, 4) NULL DEFAULT NULL, - `dec_prop_2` decimal(13, 4) NULL DEFAULT NULL, - `bool_prop_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `bool_prop_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for qrtz_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_triggers`; -CREATE TABLE `qrtz_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `next_fire_time` bigint(13) NULL DEFAULT NULL, - `prev_fire_time` bigint(13) NULL DEFAULT NULL, - `priority` int(11) NULL DEFAULT NULL, - `trigger_state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `trigger_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `start_time` bigint(13) NOT NULL, - `end_time` bigint(13) NULL DEFAULT NULL, - `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `misfire_instr` smallint(2) NULL DEFAULT NULL, - `job_data` blob NULL, - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - INDEX `sched_name`(`sched_name`, `job_name`, `job_group`) USING BTREE, - CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `job_name`, `job_group`) REFERENCES `qrtz_job_details` (`sched_name`, `job_name`, `job_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_triggers --- ---------------------------- -INSERT INTO `qrtz_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME1', 'DEFAULT', 'TASK_CLASS_NAME1', 'DEFAULT', NULL, 1624007150000, -1, 5, 'PAUSED', 'CRON', 1624007141000, 0, NULL, 2, ''); -INSERT INTO `qrtz_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME2', 'DEFAULT', 'TASK_CLASS_NAME2', 'DEFAULT', NULL, 1624007145000, -1, 5, 'PAUSED', 'CRON', 1624007141000, 0, NULL, 2, ''); -INSERT INTO `qrtz_triggers` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME3', 'DEFAULT', 'TASK_CLASS_NAME3', 'DEFAULT', NULL, 1624007160000, -1, 5, 'PAUSED', 'CRON', 1624007141000, 0, NULL, 2, ''); - --- ---------------------------- --- Table structure for store_ads --- ---------------------------- -DROP TABLE IF EXISTS `store_ads`; -CREATE TABLE `store_ads` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, - `video_url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '视频url', - `url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '轮播图片地址', - `type` tinyint(200) NULL DEFAULT 1 COMMENT '类型1-视频 2-图片', - `sort` smallint(4) UNSIGNED NULL DEFAULT 0 COMMENT '序号', - `create_time` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '首页轮播广告' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_ads --- ---------------------------- -INSERT INTO `store_ads` VALUES (9, 'https://admin.mijia321.com/static/upload/e38690a86e1ef621/313ee2689043da13.mp4', 'https://wxapi.yixiang.co/api/file/pic/20210222213137611454.jpg', 1, 0, 0); -INSERT INTO `store_ads` VALUES (11, '', 'https://wxapi.yixiang.co/api/file/pic/20210222213116280067.jpeg', 2, 0, 1536502777); -INSERT INTO `store_ads` VALUES (12, '', 'https://wxapi.yixiang.co/api/file/pic/20210222213137611454.jpg', 2, 0, 1536503300); - --- ---------------------------- --- Table structure for store_cart --- ---------------------------- -DROP TABLE IF EXISTS `store_cart`; -CREATE TABLE `store_cart` ( - `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '购物车表', - `user_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户id', - `session_id` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'session', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `goods_sn` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品货号', - `goods_logo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '', - `goods_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品名称', - `market_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '零售价', - `goods_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '本店价(进货价)', - `member_goods_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '会员折扣价', - `goods_num` smallint(5) UNSIGNED NULL DEFAULT 0 COMMENT '购买数量', - `spec_key` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品规格key 对应store_spec_goods_price 表', - `spec_key_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品规格组合名称', - `bar_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品条码', - `selected` tinyint(1) NULL DEFAULT 1 COMMENT '购物车选中状态', - `add_time` datetime(0) NULL DEFAULT NULL COMMENT '加入购物车的时间', - `prom_type` tinyint(1) NULL DEFAULT 0 COMMENT '0 普通订单,1 限时抢购, 2 团购 , 3 促销优惠', - `prom_id` int(11) NULL DEFAULT 0 COMMENT '活动id', - `sku` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'sku', - PRIMARY KEY (`id`) USING BTREE, - INDEX `session_id`(`session_id`) USING BTREE, - INDEX `user_id`(`user_id`) USING BTREE, - INDEX `goods_id`(`goods_id`) USING BTREE, - INDEX `spec_key`(`spec_key`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 114 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_cart --- ---------------------------- -INSERT INTO `store_cart` VALUES (113, 3, '', 4, '222', '222', '222', 0.00, 0.00, 0.00, 0, '', '', '', 1, NULL, 0, 0, ''); - --- ---------------------------- --- Table structure for store_code --- ---------------------------- -DROP TABLE IF EXISTS `store_code`; -CREATE TABLE `store_code` ( - `code_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, - `phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号', - `code` char(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '验证码', - `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '注册类型 0:注册 1:密码找回 ', - `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '创建时间', - PRIMARY KEY (`code_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 9949 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '手机验证码表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_code --- ---------------------------- -INSERT INTO `store_code` VALUES (9933, '15136175246', '250175', 1, 1532235215); -INSERT INTO `store_code` VALUES (9934, '15136175246', '473170', 1, 1532237173); -INSERT INTO `store_code` VALUES (9935, '15136175246', '630991', 1, 1532238675); -INSERT INTO `store_code` VALUES (9936, '15601064107', '481368', 1, 1536414746); -INSERT INTO `store_code` VALUES (9937, '15601064105', '707445', 1, 1536414778); -INSERT INTO `store_code` VALUES (9938, '13131313131', '641772', 1, 1536415119); -INSERT INTO `store_code` VALUES (9939, '15612121212', '556793', 1, 1536415160); -INSERT INTO `store_code` VALUES (9940, '13131312020', '671335', 1, 1536415244); -INSERT INTO `store_code` VALUES (9941, '15601064107', '886733', 1, 1536415783); -INSERT INTO `store_code` VALUES (9942, '17610570135', '835969', 1, 1536416040); -INSERT INTO `store_code` VALUES (9943, '17610570135', '232940', 1, 1536416707); -INSERT INTO `store_code` VALUES (9944, '15601064107', '375484', 1, 1536416734); -INSERT INTO `store_code` VALUES (9945, '18905970273', '506991', 1, 1537176135); -INSERT INTO `store_code` VALUES (9946, '15136175246', '639663', 1, 1537271645); -INSERT INTO `store_code` VALUES (9947, '18905970273', '861394', 1, 1537339855); -INSERT INTO `store_code` VALUES (9948, '17610570135', '761656', 1, 1538032004); - --- ---------------------------- --- Table structure for store_comment --- ---------------------------- -DROP TABLE IF EXISTS `store_comment`; -CREATE TABLE `store_comment` ( - `comment_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '评论id', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `email` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'email邮箱', - `username` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名', - `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论内容', - `add_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '添加时间', - `ip_address` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'ip地址', - `is_show` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否显示', - `parent_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '父id', - `user_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '评论用户', - `img` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '晒单图片', - `order_id` mediumint(8) NULL DEFAULT 0 COMMENT '订单id', - `deliver_rank` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '物流评价等级', - `goods_rank` tinyint(1) NULL DEFAULT 0 COMMENT '商品评价等级', - `service_rank` tinyint(1) NULL DEFAULT 0 COMMENT '商家服务态度评价等级', - `zan_num` int(10) NULL DEFAULT 0 COMMENT '被赞数', - `zan_userid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '点赞用户id', - `is_anonymous` tinyint(1) NULL DEFAULT 0 COMMENT '是否匿名评价:0不是,1是', - `rec_id` int(11) NULL DEFAULT NULL COMMENT '订单商品表ID', - PRIMARY KEY (`comment_id`) USING BTREE, - INDEX `parent_id`(`parent_id`) USING BTREE, - INDEX `id_value`(`goods_id`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE, - INDEX `user_id`(`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品评论表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_comment --- ---------------------------- -INSERT INTO `store_comment` VALUES (1, 5, '', '胡鹏', 'haoping', 1533046281, '', 0, 0, 1, NULL, 1639, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (2, 5, '', '高晓松', '评价内容', 1539076970, '', 0, 0, 2, NULL, 4, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (3, 6, '', '高晓松', '评价内容', 1539076970, '', 0, 0, 2, NULL, 4, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (4, 4, '', '高晓松', '2222', 1539201129, '', 0, 0, 2, NULL, 1763, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (5, 5, '', '高晓松', '22222', 1539201363, '', 0, 0, 2, NULL, 1761, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (6, 5, '', '高晓松', '222', 1539201390, '', 0, 0, 2, NULL, 1759, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (7, 4, '', '林建宾', '', 1539226890, '', 0, 0, 7, NULL, 1764, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (8, 5, '', '林建宾', '啊啊啊啊啊', 1539240054, '', 0, 0, 7, NULL, 1700, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (9, 4, '', '林建宾', '肩胛骨寂寞', 1539240191, '', 0, 0, 7, NULL, 1695, 0, 0, 0, 0, '', 0, NULL); -INSERT INTO `store_comment` VALUES (10, 5, '', '林建宾', '', 1539243601, '', 0, 0, 7, NULL, 1849, 0, 0, 0, 0, '', 0, NULL); - --- ---------------------------- --- Table structure for store_coupon --- ---------------------------- -DROP TABLE IF EXISTS `store_coupon`; -CREATE TABLE `store_coupon` ( - `id` int(8) NOT NULL AUTO_INCREMENT COMMENT '表id', - `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '优惠券名字', - `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 2 COMMENT '发放类型 0下单赠送1 指定发放 2 免费领取 3线下发放', - `money` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '优惠券金额', - `condition` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '使用条件,满多少金额', - `createnum` int(11) NULL DEFAULT 0 COMMENT '发放数量', - `send_num` int(11) NULL DEFAULT 0 COMMENT '已领取数量', - `use_num` int(11) NULL DEFAULT 0 COMMENT '已使用数量', - `send_start_time` int(11) NULL DEFAULT NULL COMMENT '发放开始时间', - `send_end_time` int(11) NULL DEFAULT NULL COMMENT '发放结束时间', - `use_start_time` datetime(0) NULL DEFAULT NULL COMMENT '使用开始时间', - `use_end_time` datetime(0) NULL DEFAULT NULL COMMENT '使用结束时间', - `add_time` int(11) NULL DEFAULT NULL COMMENT '添加时间', - `status` int(2) NULL DEFAULT NULL COMMENT '状态:1有效,2无效', - `use_type` tinyint(1) NULL DEFAULT 0 COMMENT '使用范围:0全店通用1指定商品可用2指定分类商品可用', - PRIMARY KEY (`id`) USING BTREE, - INDEX `use_end_time`(`use_end_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '优惠券主表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_coupon --- ---------------------------- -INSERT INTO `store_coupon` VALUES (21, '新客户优惠券', 2, 50.00, 300.00, 100, 1, 0, NULL, NULL, '2019-08-15 10:35:09', '2019-09-27 10:35:14', 1509008166, 1, 0); -INSERT INTO `store_coupon` VALUES (22, '优惠券01', 2, 20.00, 200.00, 1000, 0, 4, NULL, NULL, '2019-08-08 10:35:17', '2019-09-10 10:35:21', 1533040174, NULL, 0); -INSERT INTO `store_coupon` VALUES (23, '五一促销1', 2, 10.00, 100.00, 1000, 0, 0, NULL, NULL, '2019-08-21 00:00:00', '2019-09-30 00:00:00', NULL, NULL, 0); - --- ---------------------------- --- Table structure for store_coupon_list --- ---------------------------- -DROP TABLE IF EXISTS `store_coupon_list`; -CREATE TABLE `store_coupon_list` ( - `id` int(8) NOT NULL AUTO_INCREMENT COMMENT '表id', - `cid` int(8) NOT NULL DEFAULT 0 COMMENT '优惠券 对应coupon表id', - `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 2 COMMENT '发放类型 1 按订单发放 2 注册 3 邀请 4 按用户发放', - `uid` int(8) NOT NULL DEFAULT 0 COMMENT '用户id', - `order_id` int(8) NOT NULL DEFAULT 0 COMMENT '订单id', - `get_order_id` int(11) NULL DEFAULT 0 COMMENT '优惠券来自订单ID', - `use_time` int(11) NOT NULL DEFAULT 0 COMMENT '使用时间', - `code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '优惠券兑换码', - `send_time` int(11) NOT NULL DEFAULT 0 COMMENT '发放时间', - `status` tinyint(1) NULL DEFAULT 0 COMMENT '0未使用1已使用2已过期', - PRIMARY KEY (`id`) USING BTREE, - INDEX `cid`(`cid`) USING BTREE, - INDEX `uid`(`uid`) USING BTREE, - INDEX `code`(`code`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 201 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '优惠券记录表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_coupon_list --- ---------------------------- -INSERT INTO `store_coupon_list` VALUES (193, 21, 2, 1, 0, 0, 0, '', 1532056369, 0); -INSERT INTO `store_coupon_list` VALUES (194, 22, 4, 7, 0, 0, 1539050142, '', 1537436694, 0); -INSERT INTO `store_coupon_list` VALUES (195, 22, 4, 3, 0, 0, 1539237126, '', 1537436694, 0); -INSERT INTO `store_coupon_list` VALUES (196, 22, 4, 1, 0, 0, 0, '', 1537436694, 0); -INSERT INTO `store_coupon_list` VALUES (197, 22, 4, 2, 0, 0, 1539021653, '', 1538037967, 0); -INSERT INTO `store_coupon_list` VALUES (198, 21, 4, 2, 0, 0, 0, '', 1538037976, 0); -INSERT INTO `store_coupon_list` VALUES (199, 21, 4, 3, 0, 0, 1568620478, '', 1538038018, 1); -INSERT INTO `store_coupon_list` VALUES (200, 21, 4, 7, 0, 0, 0, '', 1539249927, 0); - --- ---------------------------- --- Table structure for store_express --- ---------------------------- -DROP TABLE IF EXISTS `store_express`; -CREATE TABLE `store_express` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `express_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '快递公司名称', - `express_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '快递公司代码', - `express_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '快递公司描述', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0.无效,1.有效)', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序', - `is_deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1删除,0未删除)', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 95 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商城快递配置' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_express --- ---------------------------- -INSERT INTO `store_express` VALUES (5, 'AAE全球专递', 'aae', '顺丰快递公司', 0, 0, 0, '2017-09-12 11:53:40'); -INSERT INTO `store_express` VALUES (6, '安捷快递', 'anjie', '', 0, 0, 0, '2017-09-13 15:27:26'); -INSERT INTO `store_express` VALUES (7, '安信达快递', 'anxindakuaixi', NULL, 0, 0, 0, '2017-09-13 16:05:19'); -INSERT INTO `store_express` VALUES (8, '彪记快递', 'biaojikuaidi', NULL, 0, 0, 0, '2017-09-13 16:05:26'); -INSERT INTO `store_express` VALUES (9, 'BHT', 'bht', '', 0, 0, 0, '2017-09-13 16:05:37'); -INSERT INTO `store_express` VALUES (10, '百福东方国际物流', 'baifudongfang', NULL, 0, 0, 0, '2017-09-13 16:05:41'); -INSERT INTO `store_express` VALUES (11, '中国东方(COE)', 'coe', NULL, 0, 0, 0, '2017-09-13 16:05:48'); -INSERT INTO `store_express` VALUES (12, '长宇物流', 'changyuwuliu', NULL, 0, 0, 0, '2017-09-13 16:05:58'); -INSERT INTO `store_express` VALUES (13, '大田物流', 'datianwuliu', NULL, 0, 0, 0, '2017-09-13 16:06:06'); -INSERT INTO `store_express` VALUES (14, '德邦物流', 'debangwuliu', NULL, 1, 1, 0, '2017-09-13 16:06:14'); -INSERT INTO `store_express` VALUES (15, 'DHL', 'dhl', NULL, 0, 0, 0, '2017-09-13 16:06:24'); -INSERT INTO `store_express` VALUES (16, 'DPEX', 'dpex', NULL, 0, 0, 0, '2017-09-13 16:06:29'); -INSERT INTO `store_express` VALUES (17, 'd速快递', 'dsukuaidi', NULL, 0, 0, 0, '2017-09-13 16:06:34'); -INSERT INTO `store_express` VALUES (18, '递四方', 'disifang', NULL, 0, 0, 0, '2017-09-13 16:06:40'); -INSERT INTO `store_express` VALUES (19, 'EMS快递', 'ems', '', 1, 0, 0, '2017-09-13 16:06:47'); -INSERT INTO `store_express` VALUES (20, 'FEDEX(国外)', 'fedex', NULL, 0, 0, 0, '2017-09-13 16:06:56'); -INSERT INTO `store_express` VALUES (21, '飞康达物流', 'feikangda', NULL, 0, 0, 0, '2017-09-13 16:07:03'); -INSERT INTO `store_express` VALUES (22, '凤凰快递', 'fenghuangkuaidi', NULL, 0, 0, 0, '2017-09-13 16:07:10'); -INSERT INTO `store_express` VALUES (23, '飞快达', 'feikuaida', NULL, 0, 0, 0, '2017-09-13 16:07:16'); -INSERT INTO `store_express` VALUES (24, '国通快递', 'guotongkuaidi', NULL, 0, 0, 0, '2017-09-13 16:07:27'); -INSERT INTO `store_express` VALUES (25, '港中能达物流', 'ganzhongnengda', NULL, 0, 0, 0, '2017-09-13 16:07:33'); -INSERT INTO `store_express` VALUES (26, '广东邮政物流', 'guangdongyouzhengwuliu', NULL, 0, 0, 0, '2017-09-13 16:08:22'); -INSERT INTO `store_express` VALUES (27, '共速达', 'gongsuda', NULL, 0, 0, 0, '2017-09-13 16:08:48'); -INSERT INTO `store_express` VALUES (28, '汇通快运', 'huitongkuaidi', NULL, 0, 0, 0, '2017-09-13 16:08:56'); -INSERT INTO `store_express` VALUES (29, '恒路物流', 'hengluwuliu', NULL, 0, 0, 0, '2017-09-13 16:09:02'); -INSERT INTO `store_express` VALUES (30, '华夏龙物流', 'huaxialongwuliu', NULL, 0, 0, 0, '2017-09-13 16:09:12'); -INSERT INTO `store_express` VALUES (31, '海红', 'haihongwangsong', NULL, 0, 0, 0, '2017-09-13 16:09:20'); -INSERT INTO `store_express` VALUES (32, '海外环球', 'haiwaihuanqiu', NULL, 0, 0, 0, '2017-09-13 16:09:27'); -INSERT INTO `store_express` VALUES (33, '佳怡物流', 'jiayiwuliu', NULL, 0, 0, 0, '2017-09-13 16:09:35'); -INSERT INTO `store_express` VALUES (34, '京广速递', 'jinguangsudikuaijian', NULL, 0, 0, 0, '2017-09-13 16:09:42'); -INSERT INTO `store_express` VALUES (35, '急先达', 'jixianda', NULL, 0, 0, 0, '2017-09-13 16:09:49'); -INSERT INTO `store_express` VALUES (36, '佳吉物流', 'jjwl', NULL, 0, 0, 0, '2017-09-13 16:10:01'); -INSERT INTO `store_express` VALUES (37, '加运美物流', 'jymwl', NULL, 0, 0, 0, '2017-09-13 16:10:13'); -INSERT INTO `store_express` VALUES (38, '金大物流', 'jindawuliu', NULL, 0, 0, 0, '2017-09-13 16:10:22'); -INSERT INTO `store_express` VALUES (39, '嘉里大通', 'jialidatong', NULL, 0, 0, 0, '2017-09-13 16:10:33'); -INSERT INTO `store_express` VALUES (40, '晋越快递', 'jykd', NULL, 0, 0, 0, '2017-09-13 16:10:40'); -INSERT INTO `store_express` VALUES (41, '快捷速递', 'kuaijiesudi', NULL, 0, 0, 0, '2017-09-13 16:10:49'); -INSERT INTO `store_express` VALUES (42, '联邦快递(国内)', 'lianb', NULL, 0, 0, 0, '2017-09-13 16:10:58'); -INSERT INTO `store_express` VALUES (43, '联昊通物流', 'lianhaowuliu', NULL, 0, 0, 0, '2017-09-13 16:11:07'); -INSERT INTO `store_express` VALUES (44, '龙邦物流', 'longbanwuliu', NULL, 0, 0, 0, '2017-09-13 16:11:15'); -INSERT INTO `store_express` VALUES (45, '立即送', 'lijisong', NULL, 0, 0, 0, '2017-09-13 16:11:25'); -INSERT INTO `store_express` VALUES (46, '乐捷递', 'lejiedi', NULL, 0, 0, 0, '2017-09-13 16:11:36'); -INSERT INTO `store_express` VALUES (47, '民航快递', 'minghangkuaidi', NULL, 0, 0, 0, '2017-09-13 16:11:45'); -INSERT INTO `store_express` VALUES (48, '美国快递', 'meiguokuaidi', NULL, 0, 0, 0, '2017-09-13 16:11:53'); -INSERT INTO `store_express` VALUES (49, '门对门', 'menduimen', NULL, 0, 0, 0, '2017-09-13 16:12:01'); -INSERT INTO `store_express` VALUES (50, 'OCS', 'ocs', NULL, 0, 0, 0, '2017-09-13 16:12:10'); -INSERT INTO `store_express` VALUES (51, '配思货运', 'peisihuoyunkuaidi', NULL, 0, 0, 0, '2017-09-13 16:12:18'); -INSERT INTO `store_express` VALUES (52, '全晨快递', 'quanchenkuaidi', NULL, 0, 0, 0, '2017-09-13 16:12:26'); -INSERT INTO `store_express` VALUES (53, '全峰快递', 'quanfengkuaidi', NULL, 0, 0, 0, '2017-09-13 16:12:34'); -INSERT INTO `store_express` VALUES (54, '全际通物流', 'quanjitong', NULL, 0, 0, 0, '2017-09-13 16:12:41'); -INSERT INTO `store_express` VALUES (55, '全日通快递', 'quanritongkuaidi', NULL, 0, 0, 0, '2017-09-13 16:12:49'); -INSERT INTO `store_express` VALUES (56, '全一快递', 'quanyikuaidi', NULL, 0, 0, 0, '2017-09-13 16:12:56'); -INSERT INTO `store_express` VALUES (57, '如风达', 'rufengda', NULL, 0, 0, 0, '2017-09-13 16:13:03'); -INSERT INTO `store_express` VALUES (58, '三态速递', 'santaisudi', NULL, 0, 0, 0, '2017-09-13 16:13:15'); -INSERT INTO `store_express` VALUES (59, '盛辉物流', 'shenghuiwuliu', NULL, 0, 0, 0, '2017-09-13 16:13:22'); -INSERT INTO `store_express` VALUES (60, '申通', 'shentong', NULL, 0, 0, 0, '2017-09-13 16:13:34'); -INSERT INTO `store_express` VALUES (61, '顺丰', 'shunfeng', '', 1, 0, 0, '2017-09-13 16:13:41'); -INSERT INTO `store_express` VALUES (62, '速尔物流', 'sue', NULL, 0, 0, 0, '2017-09-13 16:13:48'); -INSERT INTO `store_express` VALUES (63, '盛丰物流', 'shengfeng', NULL, 0, 0, 0, '2017-09-13 16:13:55'); -INSERT INTO `store_express` VALUES (64, '赛澳递', 'saiaodi', NULL, 0, 0, 0, '2017-09-13 16:14:02'); -INSERT INTO `store_express` VALUES (65, '天地华宇', 'tiandihuayu', NULL, 0, 0, 0, '2017-09-13 16:14:11'); -INSERT INTO `store_express` VALUES (66, '天天快递', 'tiantian', NULL, 0, 0, 0, '2017-09-13 16:14:19'); -INSERT INTO `store_express` VALUES (67, 'TNT', 'tnt', NULL, 0, 0, 0, '2017-09-13 16:14:26'); -INSERT INTO `store_express` VALUES (68, 'UPS', 'ups', NULL, 0, 0, 0, '2017-09-13 16:14:29'); -INSERT INTO `store_express` VALUES (69, '万家物流', 'wanjiawuliu', NULL, 0, 0, 0, '2017-09-13 16:14:37'); -INSERT INTO `store_express` VALUES (70, '文捷航空速递', 'wenjiesudi', NULL, 0, 0, 0, '2017-09-13 16:14:46'); -INSERT INTO `store_express` VALUES (71, '伍圆', 'wuyuan', NULL, 0, 0, 0, '2017-09-13 16:14:52'); -INSERT INTO `store_express` VALUES (72, '万象物流', 'wxwl', NULL, 0, 0, 0, '2017-09-13 16:15:00'); -INSERT INTO `store_express` VALUES (73, '新邦物流', 'xinbangwuliu', NULL, 0, 0, 0, '2017-09-13 16:15:06'); -INSERT INTO `store_express` VALUES (74, '信丰物流', 'xinfengwuliu', NULL, 0, 0, 0, '2017-09-13 16:15:15'); -INSERT INTO `store_express` VALUES (75, '亚风速递', 'yafengsudi', NULL, 0, 0, 0, '2017-09-13 16:15:23'); -INSERT INTO `store_express` VALUES (76, '一邦速递', 'yibangwuliu', NULL, 0, 0, 0, '2017-09-13 16:15:30'); -INSERT INTO `store_express` VALUES (77, '优速物流', 'youshuwuliu', NULL, 0, 0, 0, '2017-09-13 16:15:36'); -INSERT INTO `store_express` VALUES (78, '邮政包裹挂号信', 'youzhengguonei', NULL, 0, 3, 0, '2017-09-13 16:15:44'); -INSERT INTO `store_express` VALUES (79, '邮政国际包裹挂号信', 'youzhengguoji', NULL, 0, 2, 0, '2017-09-13 16:15:51'); -INSERT INTO `store_express` VALUES (80, '远成物流', 'yuanchengwuliu', NULL, 0, 0, 0, '2017-09-13 16:15:57'); -INSERT INTO `store_express` VALUES (81, '圆通速递', 'yuantong', NULL, 1, 1, 0, '2017-09-13 16:16:03'); -INSERT INTO `store_express` VALUES (82, '源伟丰快递', 'yuanweifeng', NULL, 0, 0, 0, '2017-09-13 16:16:10'); -INSERT INTO `store_express` VALUES (83, '元智捷诚快递', 'yuanzhijiecheng', NULL, 0, 0, 0, '2017-09-13 16:16:17'); -INSERT INTO `store_express` VALUES (84, '韵达快运', 'yunda', NULL, 0, 0, 0, '2017-09-13 16:16:24'); -INSERT INTO `store_express` VALUES (85, '运通快递', 'yuntongkuaidi', NULL, 0, 0, 0, '2017-09-13 16:16:33'); -INSERT INTO `store_express` VALUES (86, '越丰物流', 'yuefengwuliu', NULL, 0, 0, 0, '2017-09-13 16:16:40'); -INSERT INTO `store_express` VALUES (87, '源安达', 'yad', NULL, 0, 0, 0, '2017-09-13 16:16:47'); -INSERT INTO `store_express` VALUES (88, '银捷速递', 'yinjiesudi', NULL, 0, 0, 0, '2017-09-13 16:16:56'); -INSERT INTO `store_express` VALUES (89, '宅急送', 'zhaijisong', NULL, 0, 0, 0, '2017-09-13 16:17:03'); -INSERT INTO `store_express` VALUES (90, '中铁快运', 'zhongtiekuaiyun', NULL, 0, 0, 0, '2017-09-13 16:17:10'); -INSERT INTO `store_express` VALUES (91, '中通速递', 'zhongtong', '', 0, 0, 0, '2017-09-13 16:17:16'); -INSERT INTO `store_express` VALUES (92, '中邮物流', 'zhongyouwuliu', NULL, 0, 0, 0, '2017-09-13 16:17:27'); -INSERT INTO `store_express` VALUES (93, '忠信达', 'zhongxinda', NULL, 0, 0, 0, '2017-09-13 16:17:34'); -INSERT INTO `store_express` VALUES (94, '芝麻开门', 'zhimakaimen', NULL, 0, 0, 0, '2017-09-13 16:17:41'); - --- ---------------------------- --- Table structure for store_file_records --- ---------------------------- -DROP TABLE IF EXISTS `store_file_records`; -CREATE TABLE `store_file_records` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '用户id', - `file_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '文件名称', - `file_size` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '文件大小', - `create_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '上传时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件上传记录表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_file_records --- ---------------------------- -INSERT INTO `store_file_records` VALUES (2, 1, '/e92e4a5ebf99ee25/6681a1abf9b674b2.xlsx', 9281, 1536992462); - --- ---------------------------- --- Table structure for store_goods --- ---------------------------- -DROP TABLE IF EXISTS `store_goods`; -CREATE TABLE `store_goods` ( - `goods_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '商品id', - `cate_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '分类id', - `extend_cat_id` int(11) NULL DEFAULT 0 COMMENT '扩展分类id', - `goods_sn` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品编号', - `goods_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品名称', - `click_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '点击数', - `brand_id` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '品牌id', - `store_count` smallint(5) NOT NULL DEFAULT 10 COMMENT '库存数量', - `comment_count` smallint(5) NULL DEFAULT 0 COMMENT '商品评论数', - `weight` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品重量克为单位', - `volume` double(10, 4) UNSIGNED NOT NULL DEFAULT 0.0000 COMMENT '商品体积。单位立方米', - `market_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '市场价(零售价)', - `shop_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '本店价(供货价)', - `cost_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '商品成本价', - `price_ladder` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '价格阶梯', - `keywords` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品关键词', - `goods_remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品简单描述', - `goods_content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '商品详细描述', - `mobile_content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '手机端商品详情', - `goods_logo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品上传原始图(主图)', - `is_virtual` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否为虚拟商品 1是,0否', - `virtual_indate` int(11) NULL DEFAULT 0 COMMENT '虚拟商品有效期', - `virtual_limit` smallint(6) NULL DEFAULT 0 COMMENT '虚拟商品购买上限', - `virtual_refund` tinyint(1) NULL DEFAULT 1 COMMENT '是否允许过期退款, 1是,0否', - `is_on_sale` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '是否上架 0-未上架 1-销售中', - `is_free_shipping` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否包邮0否1是', - `on_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品上架时间', - `sort` smallint(4) UNSIGNED NOT NULL DEFAULT 50 COMMENT '商品排序', - `is_recommend` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否推荐0-未推荐 1-已推荐', - `is_new` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否新品0-不是 1-是', - `is_hot` tinyint(1) NULL DEFAULT 0 COMMENT '是否热卖', - `last_update` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最后更新时间', - `goods_type` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品所属类型id,取值表goods_type的id', - `spec_type` smallint(5) NULL DEFAULT 0 COMMENT '商品规格类型,取值表goods_type的id', - `give_integral` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '购买商品赠送积分', - `exchange_integral` int(10) NOT NULL DEFAULT 0 COMMENT '积分兑换:0不参与积分兑换,积分和现金的兑换比例见后台配置', - `suppliers_id` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '供货商ID', - `sales_sum` int(11) NULL DEFAULT 0 COMMENT '商品销量', - `prom_type` tinyint(1) NULL DEFAULT 0 COMMENT '0默认1抢购2团购3优惠促销4预售5虚拟(5其实没用)6拼团', - `prom_id` int(11) NOT NULL DEFAULT 0 COMMENT '优惠活动id', - `commission` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '佣金用于分销分成', - `spu` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'SPU', - `sku` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'SKU', - `template_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '运费模板ID', - `goods_video` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '视频', - PRIMARY KEY (`goods_id`) USING BTREE, - INDEX `goods_sn`(`goods_sn`) USING BTREE, - INDEX `cat_id`(`cate_id`) USING BTREE, - INDEX `last_update`(`last_update`) USING BTREE, - INDEX `brand_id`(`brand_id`) USING BTREE, - INDEX `goods_number`(`store_count`) USING BTREE, - INDEX `goods_weight`(`weight`) USING BTREE, - INDEX `sort_order`(`sort`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品主表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods --- ---------------------------- -INSERT INTO `store_goods` VALUES (4, 5, 0, '#10078', '小米8青春', 0, 1, 77, 0, 0, 0.0000, 140.00, 100.00, 0.00, NULL, '布料', '布料描述,布料描述,布料描述', '

', NULL, 'https://app2.yixiang.co/file/pic/20210615153142207742.jpg', 0, 0, 0, 1, 1, 0, 0, 50, 1, 1, 0, 0, 39, 0, 10, 0, 0, 23, 0, 0, 0.00, '', '', 0, 'https://admin.mijia321.com/static/upload/e38690a86e1ef621/313ee2689043da13.mp4'); -INSERT INTO `store_goods` VALUES (5, 5, 0, '#10086', '苹果X', 0, 1, 172, 0, 0, 0.0000, 150.00, 100.00, 0.00, NULL, '枕芯', '枕芯这里是什么呢', '

\r\n\r\n

', NULL, 'https://app2.yixiang.co/file/pic/20210608163248869638.jpg', 0, 0, 0, 1, 1, 0, 0, 50, 0, 1, 0, 0, 39, 0, 20, 0, 0, 28, 0, 0, 0.00, '', '', 0, 'https://admin.mijia321.com/static/upload/e38690a86e1ef621/313ee2689043da13.mp4'); -INSERT INTO `store_goods` VALUES (6, 5, 0, '10010', '小米6X', 0, 2, 19, 0, 0, 0.0000, 18.00, 22.00, 0.00, NULL, '123', '123123', '

', NULL, 'https://app2.yixiang.co/file/pic/20210608113116814494.jpg', 0, 0, 0, 1, 1, 0, 0, 50, 1, 0, 0, 0, 39, 0, 0, 0, 0, 3, 0, 0, 0.00, '', '', 0, ''); -INSERT INTO `store_goods` VALUES (7, 5, 0, '#45678', '红米6A', 0, 2, 12, 0, 0, 0.0000, 12.00, 22.00, 0.00, NULL, '12', '123123', '

', NULL, 'https://app2.yixiang.co/file/pic/20210608113116358194.jpg', 0, 0, 0, 1, 1, 0, 0, 50, 1, 1, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0.00, '', '', 0, ''); -INSERT INTO `store_goods` VALUES (8, 4, 0, '#10096', '小米平板', 0, 1, 10, 0, 0, 0.0000, 9888.00, 6888.00, 0.00, NULL, '小米', '123', '

', NULL, 'https://app2.yixiang.co/file/pic/20210608113116504118.jpg', 0, 0, 0, 1, 1, 0, 0, 50, 1, 1, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0.00, '', '', 0, ''); -INSERT INTO `store_goods` VALUES (9, 11, 0, '#1008611', '测试商品规格', 0, 1, 10, 0, 0, 0.0000, 100.00, 20.00, 0.00, NULL, '复印', '描述', NULL, NULL, '', 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0.00, '', '', 0, ''); - --- ---------------------------- --- Table structure for store_goods_activity --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_activity`; -CREATE TABLE `store_goods_activity` ( - `act_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '活动ID', - `act_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '活动名称', - `act_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '活动描述', - `act_type` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '活动类型:1预售2拼团', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '参加活动商品ID', - `spec_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品规格ID', - `goods_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品名称', - `start_time` int(10) UNSIGNED NOT NULL COMMENT '活动开始时间', - `end_time` int(10) UNSIGNED NOT NULL COMMENT '活动结束时间', - `is_finished` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否已结束:0,正常;1,成功结束;2,失败结束。', - `ext_info` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '活动扩展配置', - `act_count` mediumint(8) NOT NULL DEFAULT 0 COMMENT '商品购买数', - PRIMARY KEY (`act_id`) USING BTREE, - INDEX `act_name`(`act_name`, `act_type`, `goods_id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_goods_attr --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_attr`; -CREATE TABLE `store_goods_attr` ( - `goods_attr_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '商品属性id自增', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `attr_id` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '属性id', - `attr_value` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性值', - `attr_price` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '属性价格', - PRIMARY KEY (`goods_attr_id`) USING BTREE, - INDEX `goods_id`(`goods_id`) USING BTREE, - INDEX `attr_id`(`attr_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品关联的属性表(与商品相关)' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_attr --- ---------------------------- -INSERT INTO `store_goods_attr` VALUES (2, 1, 330, '12*15*18', '0'); -INSERT INTO `store_goods_attr` VALUES (9, 5, 329, '3D立体', ''); -INSERT INTO `store_goods_attr` VALUES (10, 5, 330, '100%纯棉', ''); -INSERT INTO `store_goods_attr` VALUES (11, 4, 329, '纯手工2', ''); -INSERT INTO `store_goods_attr` VALUES (12, 4, 330, '100%纯棉2', ''); -INSERT INTO `store_goods_attr` VALUES (13, 6, 329, '123', ''); -INSERT INTO `store_goods_attr` VALUES (14, 6, 330, '456', ''); -INSERT INTO `store_goods_attr` VALUES (17, 8, 329, '电镀', ''); -INSERT INTO `store_goods_attr` VALUES (18, 8, 330, '金属', ''); -INSERT INTO `store_goods_attr` VALUES (19, 7, 329, '123', ''); -INSERT INTO `store_goods_attr` VALUES (20, 7, 330, '123', ''); -INSERT INTO `store_goods_attr` VALUES (25, 9, 330, '材质', ''); -INSERT INTO `store_goods_attr` VALUES (26, 9, 329, '工艺9', ''); - --- ---------------------------- --- Table structure for store_goods_attribute --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_attribute`; -CREATE TABLE `store_goods_attribute` ( - `attr_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '属性id', - `attr_name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '属性名称', - `type_id` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '属性分类id(商品模型id)', - `attr_index` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '0不需要检索 1关键字检索 2范围检索', - `attr_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '0唯一属性 1单选属性 2复选属性', - `attr_input_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT ' 0 手工录入 1从列表中选择 2多行文本框', - `attr_values` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '可选值列表', - `sort` tinyint(3) UNSIGNED NOT NULL DEFAULT 50 COMMENT '属性排序', - PRIMARY KEY (`attr_id`) USING BTREE, - INDEX `cat_id`(`type_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 332 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品的属性表(独立)' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_attribute --- ---------------------------- -INSERT INTO `store_goods_attribute` VALUES (329, '工艺', 39, 0, 0, 0, '', 50); -INSERT INTO `store_goods_attribute` VALUES (330, '材质', 39, 0, 0, 0, '', 50); -INSERT INTO `store_goods_attribute` VALUES (331, '内存', 40, 0, 0, 0, NULL, 50); - --- ---------------------------- --- Table structure for store_goods_brand --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_brand`; -CREATE TABLE `store_goods_brand` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `brand_logo` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '品牌logo', - `brand_cover` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '品牌封面', - `brand_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品品牌名称', - `brand_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '商品品牌描述', - `brand_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '品牌图文信息', - `sort` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '商品分类排序', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '商品状态(1有效,0无效)', - `is_deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1删除,0未删除)', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '产品品牌' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_brand --- ---------------------------- -INSERT INTO `store_goods_brand` VALUES (1, 'http://www.testxcx.com/static/upload/fec82092cb3405cc/cefd3bfb70a3c080.png', 'http://www.testxcx.com/static/upload/a1b7f6d005e2c1b2/9729f24657ecbf46.png', '蚂蚁供货', '蚂蚁供货蚂蚁供货', '

蚂蚁供货蚂蚁供货

', 0, 1, 0, '2018-07-09 20:59:50'); -INSERT INTO `store_goods_brand` VALUES (2, 'https://admin.mijia321.com/static/upload/145bb741db89d1a0/b7fbb8665bd0b890.jpg', 'https://admin.mijia321.com/static/upload/1a0b9aa9269e885f/691c8476f18c158b.jpg', '星仔', '自营', '

自营品牌

', 0, 1, 0, '2018-08-08 09:11:49'); -INSERT INTO `store_goods_brand` VALUES (3, 'http://127.0.0.1:8080/profile/upload/2019/08/23/079702428f13f5c9b5acb1c5cec16b9d.jpeg', '', 'logo', NULL, NULL, 0, 1, 0, '2019-08-23 18:37:19'); - --- ---------------------------- --- Table structure for store_goods_cate --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_cate`; -CREATE TABLE `store_goods_cate` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `pid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '上级分类编号', - `brand_id` bigint(20) NULL DEFAULT 0 COMMENT '品牌ID', - `cate_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品分类名称', - `cate_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '商品分类', - `img_url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '缩略图url', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '商品分类排序', - `status` bigint(1) UNSIGNED NULL DEFAULT 1 COMMENT '商品状态(1有效,0无效)', - `is_deleted` bigint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1删除,0未删除)', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商城商品分类' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_cate --- ---------------------------- -INSERT INTO `store_goods_cate` VALUES (3, 0, 0, '套件', '套件', NULL, 0, 1, 0, '2018-07-09 21:01:36'); -INSERT INTO `store_goods_cate` VALUES (4, 0, 0, '布料', '布料', NULL, 0, 1, 0, '2018-07-09 21:01:51'); -INSERT INTO `store_goods_cate` VALUES (5, 4, 0, '布料子类', '吞吞吐吐', 'https://admin.mijia321.com/static/upload/f1a360f04248ba32/02e06403821912f2.png', 0, 1, 0, '2018-07-11 11:31:51'); -INSERT INTO `store_goods_cate` VALUES (6, 2, 0, '枕芯子类', '', 'https://admin.mijia321.com/static/upload/fec82092cb3405cc/cefd3bfb70a3c080.png', 0, 1, 0, '2018-09-17 15:29:38'); -INSERT INTO `store_goods_cate` VALUES (7, 3, 0, '套件子类', '', 'https://admin.mijia321.com/static/upload/62a4f8f956822c5b/2e6251636de8bbd5.png', 0, 1, 0, '2018-09-17 15:30:59'); -INSERT INTO `store_goods_cate` VALUES (8, 1, 0, '被芯子类', '', 'https://admin.mijia321.com/static/upload/f1ae4b809166c2ba/58c3fdcfceea8aa6.png', 0, 1, 0, '2018-09-17 15:31:22'); -INSERT INTO `store_goods_cate` VALUES (9, 4, 0, '二类', '2222', 'https://admin.mijia321.com/static/upload/d481af1cce3bc3db/874b64a4b4c1710c.png', 0, 1, 0, '2018-09-18 14:38:33'); -INSERT INTO `store_goods_cate` VALUES (10, 4, 0, '三类', '333', 'https://admin.mijia321.com/static/upload/3dd5c60c944e82c5/144b2d281abaf5ee.png', 0, 1, 0, '2018-09-18 14:38:54'); -INSERT INTO `store_goods_cate` VALUES (11, 4, 0, '四类', '444', 'https://admin.mijia321.com/static/upload/254d163d8b3b6396/eda3a76294b250fe.png', 0, 1, 0, '2018-09-18 14:39:30'); -INSERT INTO `store_goods_cate` VALUES (12, 1, 0, '背心', '44', 'http://127.0.0.1:8080/profile/upload/2019/08/23/2e593ef4098a5c1758c11e2539f5962b.png', 0, 1, 0, '2019-08-23 17:44:50'); - --- ---------------------------- --- Table structure for store_goods_collect --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_collect`; -CREATE TABLE `store_goods_collect` ( - `collect_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '表id', - `user_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户id', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `add_time` datetime(0) NULL DEFAULT NULL COMMENT '添加时间', - PRIMARY KEY (`collect_id`) USING BTREE, - INDEX `user_id`(`user_id`) USING BTREE, - INDEX `goods_id`(`goods_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 421 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品收藏表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_collect --- ---------------------------- -INSERT INTO `store_goods_collect` VALUES (342, 3, 6, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (352, 2, 5, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (361, 5, 4, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (398, 3, 5, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (406, 2, 4, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (410, 7, 4, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (412, 7, 5, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (414, 7, 6, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (415, 7, 7, '0000-00-00 00:00:00'); -INSERT INTO `store_goods_collect` VALUES (420, 3, 4, '2019-09-10 07:06:18'); - --- ---------------------------- --- Table structure for store_goods_consult --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_consult`; -CREATE TABLE `store_goods_consult` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品咨询id', - `goods_id` int(11) NULL DEFAULT 0 COMMENT '商品id', - `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '网名', - `add_time` int(11) NULL DEFAULT 0 COMMENT '咨询时间', - `consult_type` tinyint(1) NULL DEFAULT 1 COMMENT '1 商品咨询 2 支付咨询 3 配送 4 售后', - `content` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '咨询内容', - `parent_id` int(11) NULL DEFAULT 0 COMMENT '父id 用于管理员回复', - `is_show` tinyint(1) NULL DEFAULT 0 COMMENT '是否显示', - `status` tinyint(1) NULL DEFAULT 0 COMMENT '管理员回复状态,0未回复,1已回复', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci COMMENT = '商品咨询表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_goods_coupon --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_coupon`; -CREATE TABLE `store_goods_coupon` ( - `coupon_id` int(8) NOT NULL COMMENT '优惠券id', - `goods_id` int(11) NOT NULL DEFAULT 0 COMMENT '指定的商品id:为零表示不指定商品', - `goods_category_id` smallint(5) NOT NULL DEFAULT 0 COMMENT '指定的商品分类:为零表示不指定分类', - PRIMARY KEY (`coupon_id`, `goods_id`, `goods_category_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci COMMENT = '优惠券与商品关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_goods_images --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_images`; -CREATE TABLE `store_goods_images` ( - `img_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '图片id 自增', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `image_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '图片地址', - PRIMARY KEY (`img_id`) USING BTREE, - INDEX `goods_id`(`goods_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 552 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品相册' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_images --- ---------------------------- -INSERT INTO `store_goods_images` VALUES (550, 4, 'http://www.testxcx.com/static/upload/be60005fd9d0feec/4b2fd19ee6688227.png'); -INSERT INTO `store_goods_images` VALUES (551, 5, 'http://www.testxcx.com/static/upload/0b65e460d8f9328c/dc837982e81cec43.png'); - --- ---------------------------- --- Table structure for store_goods_type --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_type`; -CREATE TABLE `store_goods_type` ( - `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id自增', - `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '类型名称', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品类型(商品模型)表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_goods_type --- ---------------------------- -INSERT INTO `store_goods_type` VALUES (37, '被芯'); -INSERT INTO `store_goods_type` VALUES (38, '套件'); -INSERT INTO `store_goods_type` VALUES (39, '大豆'); -INSERT INTO `store_goods_type` VALUES (40, '手机'); - --- ---------------------------- --- Table structure for store_goods_visit --- ---------------------------- -DROP TABLE IF EXISTS `store_goods_visit`; -CREATE TABLE `store_goods_visit` ( - `visit_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID', - `goods_id` int(11) NOT NULL COMMENT '商品ID', - `user_id` int(11) NOT NULL COMMENT '会员ID', - `visittime` int(11) NOT NULL COMMENT '浏览时间', - `cat_id` int(11) NOT NULL COMMENT '商品分类ID', - `extend_cat_id` int(11) NOT NULL COMMENT '商品扩展分类ID', - PRIMARY KEY (`goods_id`, `user_id`, `visit_id`) USING BTREE, - INDEX `visit_id`(`visit_id`) USING BTREE, - INDEX `user_id`(`user_id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 747 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品浏览历史表' ROW_FORMAT = Fixed; - --- ---------------------------- --- Table structure for store_member --- ---------------------------- -DROP TABLE IF EXISTS `store_member`; -CREATE TABLE `store_member` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `vip_no` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'vip编号', - `openid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '会员微信OPENID', - `phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '会员手机号', - `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '登录密码', - `nickname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '会员昵称', - `headimg` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '会员头像', - `sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '性别', - `level` tinyint(2) UNSIGNED NULL DEFAULT 1 COMMENT '会员级别', - `total_amount` decimal(10, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '消费累计额度 用于用户等级', - `user_money` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '用户金额', - `distribut_money` decimal(8, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '累积分佣金额', - `frozen_money` double(8, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '冻结金额', - `underling_number` int(5) UNSIGNED NULL DEFAULT 0 COMMENT '用户下线总数', - `pay_points` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '消费积分', - `address_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '默认收货地址', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '会员个性签名', - `status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '会员状态0待审核 1-已审核 2-已拒绝', - `create_time` datetime(0) NULL DEFAULT NULL, - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `status_time` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '审核时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `index_store_member_openid`(`openid`) USING BTREE, - INDEX `index_store_member_phone`(`phone`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商城会员信息' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_member --- ---------------------------- -INSERT INTO `store_member` VALUES (1, NULL, '888787', '15601064107', 'e10adc3949ba59abbe56e057f20f883e', '高', 'tt', '1', 6, 0.00, 93.60, 0.00, 0.00, 0, 0, 0, '333', 1, '0000-00-00 00:00:00', '2018-05-23 14:42:25', 0); -INSERT INTO `store_member` VALUES (2, '', 'orIMY4ykNo4p1k5fiHcVYd2GLdO8', '17610570135', 'e10adc3949ba59abbe56e057f20f883e', '高晓松', 'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIzjkjtD1YuSoGz5EFV80luIywsVch8cx4Dgrc3rM6vWkFRaNBJ7QjoQ4ibyPZar8oL4U4YMG1E1xg/132', '1', 1, 0.00, 7920.00, 0.00, 0.00, 0, 0, 0, '', 1, '0000-00-00 00:00:00', '2018-09-16 21:22:29', 0); -INSERT INTO `store_member` VALUES (3, '', 'orIMY4xGhMmipwFZoSL1vOhUNFZ0', '15136175246', 'e10adc3949ba59abbe56e057f20f883e', '胡鹏', 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83erkH5E5lvlWSAaoT1icTe79tGnKXtqicTUC2cOibOqJOIm4s7aKN4kXvxTAMb6pqoOSoVrJtfic1UDUFg/132', '1', 1, 0.00, 19035.00, 0.00, 0.00, 0, 0, 0, '', 1, '0000-00-00 00:00:00', '2018-09-17 15:16:34', 0); -INSERT INTO `store_member` VALUES (4, '', 'orIMY47plZ1wxgJKkgme2Kp0dSGs', '', 'e10adc3949ba59abbe56e057f20f883e', '哈哈sjs', 'https://wx.qlogo.cn/mmopen/vi_32/vplr46pWKGgjozY7OkWFNPbZ1TaPOoFJphUictCKSPZL19VGrkyAGsk9AU4VZwGUU0FNzHZEJY9U7LbYAVwVXKQ/132', '0', 1, 0.00, 0.00, 0.00, 0.00, 0, 0, 0, '', 2, '0000-00-00 00:00:00', '2018-09-17 15:54:42', 0); -INSERT INTO `store_member` VALUES (5, '', 'orIMY4z3mBo7ybJ4l0MbjSkd1KMs', '', 'e10adc3949ba59abbe56e057f20f883e', '阿星xlh(十分之九)', 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eqp5Fqia2pfV0Gh4Sf6jL2n0JGhxKiaiaRkSXg52RvStkfhxXUCAkud4lNRx2Mv6XSjZw6CMHIzDcicRg/132', '1', 1, 0.00, 0.00, 0.00, 0.00, 0, 0, 0, '', 0, '0000-00-00 00:00:00', '2018-09-17 16:14:19', 0); -INSERT INTO `store_member` VALUES (6, '', 'orIMY4-Mz71H4437G_kwUP5OteQc', '', 'e10adc3949ba59abbe56e057f20f883e', '隐形少女', 'https://wx.qlogo.cn/mmopen/vi_32/DVCIYncKXic6BAf4KL7ewRVxeKwUyeC7yqPnMWLYib7tX1kzxMgac7ib261RqibshfELUyicgEuh8FEDCEBkS5HXU6w/132', '0', 1, 0.00, 0.00, 0.00, 0.00, 0, 0, 0, '', 0, '0000-00-00 00:00:00', '2018-09-17 16:28:09', 0); -INSERT INTO `store_member` VALUES (7, '', 'orIMY48OXLkkc2SGs--N0A9tfDKM', '18905970273', 'e10adc3949ba59abbe56e057f20f883e', '林建宾', 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eqgqwibl6cHtTbibl5M7xFQw1nd7ab6OfNg7iaRZYshmLVXNsbvx55JaMlicyJspybAqrFFghhNA2hDSw/132', '1', 5, 0.00, 8749.90, 0.00, 0.00, 0, 0, 0, '', 1, '0000-00-00 00:00:00', '2018-09-17 16:50:23', 0); - --- ---------------------------- --- Table structure for store_member_address --- ---------------------------- -DROP TABLE IF EXISTS `store_member_address`; -CREATE TABLE `store_member_address` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `mid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '会员ID', - `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货人姓名', - `phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货手机号', - `province` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货地址省份', - `city` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货地址城市', - `area` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货地址区域', - `city_info` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '城市信息', - `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货详细地址', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0无效, 1新快递)', - `is_default` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '默认收货地址', - `is_deleted` bigint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1删除,0未删除)', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商城会员收货地址' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_member_address --- ---------------------------- -INSERT INTO `store_member_address` VALUES (4, 1, 'hupeng', '15136175847', '', '', '', '河南郑州', '工商', 1, 1, 0, '2018-09-09 14:13:18'); -INSERT INTO `store_member_address` VALUES (5, 2, 'asdsdsd', '15601064107', '', '', '', '北京市市辖区东城区', '12121212', 1, 1, 0, '2018-09-16 22:29:48'); -INSERT INTO `store_member_address` VALUES (7, 7, '煎饼', '18905970273', '', '', '', '北京市市辖区东城区', '11号', 1, 1, 0, '2018-09-17 17:23:27'); -INSERT INTO `store_member_address` VALUES (8, 3, '胡鹏', '15136175246', '', '', '', '北京市市辖区东城区', '75', 1, 1, 0, '2018-09-18 19:32:55'); -INSERT INTO `store_member_address` VALUES (9, 2, '122', '15601064107', '', '', '', '北京市市辖区东城区', '1', 1, 1, 0, '2018-10-08 22:47:11'); -INSERT INTO `store_member_address` VALUES (10, 3, 'hupeng233', '15136175247', '', '', '', '河南郑州', '77号', 1, 0, 0, '2019-09-15 17:56:30'); - --- ---------------------------- --- Table structure for store_order --- ---------------------------- -DROP TABLE IF EXISTS `store_order`; -CREATE TABLE `store_order` ( - `order_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单id', - `order_sn` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '订单编号', - `user_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户id', - `order_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单状态 0-未确认 1-已确认(已收货) 2-已评价', - `shipping_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '发货状态 0-未发货 1-已发货 2-退货中 3-退货完成', - `pay_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付状态 0-未支付 1-已支付', - `consignee` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '收货人', - `country` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '国家', - `province` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '省份', - `city` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '城市', - `district` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '县区', - `twon` int(11) NULL DEFAULT 0 COMMENT '乡镇', - `city_info` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '地区地址', - `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '地址详细地址', - `zipcode` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '邮政编码', - `mobile` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '手机', - `email` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '邮件', - `receive_type` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '收货方式 1-物流 2-快递 3-自取', - `shipping_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流code 单号', - `shipping_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流名称', - `pay_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付code', - `pay_method` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付方式1-微信2-余额3-转账', - `recharge_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '支付方式为转账的转账id', - `pay_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付方式名称', - `invoice_title` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '发票抬头', - `taxpayer` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '纳税人识别号', - `goods_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品总价', - `shipping_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '邮费', - `user_money` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '使用余额', - `coupon_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '优惠券抵扣', - `integral` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用积分', - `integral_money` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '使用积分抵多少钱', - `order_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '应付款金额', - `total_amount` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '订单总价', - `add_time` datetime(0) NOT NULL COMMENT '下单时间', - `shipping_time` int(11) NULL DEFAULT 0 COMMENT '最后新发货时间', - `confirm_time` int(10) NULL DEFAULT 0 COMMENT '收货确认时间', - `pay_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付时间', - `transaction_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方平台交易流水号', - `prom_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '活动ID', - `prom_type` tinyint(4) UNSIGNED NULL DEFAULT 0 COMMENT '订单类型:0普通订单4预售订单5虚拟订单6拼团订单', - `order_prom_id` smallint(6) NOT NULL DEFAULT 0 COMMENT '活动id', - `order_prom_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '活动优惠金额', - `discount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '价格调整', - `user_note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户备注', - `admin_note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '管理员备注', - `parent_sn` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父单单号', - `is_distribut` tinyint(1) NULL DEFAULT 0 COMMENT '是否已分成0未分成1已分成', - `paid_money` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '订金', - `deleted_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '删除|取消时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '用户假删除标识,1:删除,0未删除', - `edit_money` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0.00' COMMENT '管理后台修改变动的价格', - PRIMARY KEY (`order_id`) USING BTREE, - UNIQUE INDEX `order_sn`(`order_sn`) USING BTREE, - INDEX `user_id`(`user_id`) USING BTREE, - INDEX `add_time`(`add_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1870 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单主表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_order --- ---------------------------- -INSERT INTO `store_order` VALUES (1865, '20190914144718326', 3, 0, 0, 0, 'hupeng', 0, 0, 0, 0, 0, '河南郑州', '工商', '', '15136175847', '', 2, '', '', '', 0, 0, '', '', '', 430.00, 0.00, 0.00, 0.00, 0, 0.00, 430.00, 430.00, '2019-09-14 06:47:18', 0, 0, 0, NULL, 0, 0, 0, 0.00, 0.00, '', '', NULL, 0, 0.00, 1568622248, 1, '0.00'); -INSERT INTO `store_order` VALUES (1866, '20190914145142303', 3, 0, 0, 0, 'hupeng', 0, 0, 0, 0, 0, '河南郑州', '工商', '', '15136175847', '', 2, '', '', '', 0, 0, '', '', '', 430.00, 0.00, 0.00, 50.00, 0, 0.00, 380.00, 430.00, '2019-09-14 06:51:42', 0, 0, 0, NULL, 0, 0, 0, 0.00, 0.00, '', '', NULL, 0, 0.00, 0, 0, '0.00'); -INSERT INTO `store_order` VALUES (1867, '20190916155320142', 3, 0, 0, 0, 'hupeng', 0, 0, 0, 0, 0, '河南郑州', '工商', '', '15136175847', '', 2, '', '', '', 0, 0, '', '', '', 430.00, 0.00, 0.00, 50.00, 0, 0.00, 380.00, 430.00, '2019-09-16 07:53:20', 0, 0, 0, NULL, 0, 0, 0, 0.00, 0.00, '', '', NULL, 0, 0.00, 0, 0, '0.00'); -INSERT INTO `store_order` VALUES (1868, '20190916155438712', 3, 0, 0, 0, 'hupeng', 0, 0, 0, 0, 0, '河南郑州', '工商', '', '15136175847', '', 2, '', '', '', 0, 0, '', '', '', 430.00, 0.00, 0.00, 50.00, 0, 0.00, 380.00, 430.00, '2019-09-16 07:54:39', 0, 0, 0, NULL, 0, 0, 0, 0.00, 0.00, '', '', NULL, 0, 0.00, 0, 0, '0.00'); -INSERT INTO `store_order` VALUES (1869, '20210618155907483', 3, 0, 0, 0, '胡鹏', 0, 0, 0, 0, 0, '北京市市辖区东城区', '75', '', '15136175246', '', 2, '', '', '', 0, 0, '', '', '', 88.00, 0.00, 0.00, 0.00, 0, 0.00, 88.00, 88.00, '2021-06-18 07:59:08', 0, 0, 0, NULL, 0, 0, 0, 0.00, 0.00, '', '', NULL, 0, 0.00, 0, 0, '0.00'); - --- ---------------------------- --- Table structure for store_order_action --- ---------------------------- -DROP TABLE IF EXISTS `store_order_action`; -CREATE TABLE `store_order_action` ( - `action_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '表id', - `order_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单ID', - `action_user` int(11) NULL DEFAULT 0 COMMENT '操作人 0 为用户操作,其他为管理员id', - `order_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单状态', - `shipping_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配送状态', - `pay_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付状态', - `action_note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '操作备注', - `log_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '操作时间', - `status_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态描述', - PRIMARY KEY (`action_id`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2532 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_order_action --- ---------------------------- -INSERT INTO `store_order_action` VALUES (2399, 1639, 0, 0, 0, 0, '提交订单', 1532162093, '提交订单'); -INSERT INTO `store_order_action` VALUES (2400, 1640, 0, 0, 0, 0, '提交订单', 1532162249, '提交订单'); -INSERT INTO `store_order_action` VALUES (2401, 1644, 0, 0, 0, 0, '提交订单', 1532164170, '提交订单'); -INSERT INTO `store_order_action` VALUES (2402, 1654, 0, 0, 0, 0, '提交订单', 1532167441, '提交订单'); -INSERT INTO `store_order_action` VALUES (2403, 1645, 0, 0, 0, 0, '提交订单', 1533385350, '提交订单'); -INSERT INTO `store_order_action` VALUES (2404, 1646, 0, 0, 0, 0, '提交订单', 1534403096, '提交订单'); -INSERT INTO `store_order_action` VALUES (2405, 1647, 0, 0, 0, 0, '提交订单', 1534403121, '提交订单'); -INSERT INTO `store_order_action` VALUES (2406, 1648, 0, 0, 0, 0, '提交订单', 1535834099, '提交订单'); -INSERT INTO `store_order_action` VALUES (2407, 1649, 0, 0, 0, 0, '提交订单', 1535834159, '提交订单'); -INSERT INTO `store_order_action` VALUES (2408, 1650, 0, 0, 0, 0, '提交订单', 1535837956, '提交订单'); -INSERT INTO `store_order_action` VALUES (2409, 1651, 0, 0, 0, 0, '提交订单', 1535844518, '提交订单'); -INSERT INTO `store_order_action` VALUES (2410, 1652, 0, 0, 0, 0, '提交订单', 1535844596, '提交订单'); -INSERT INTO `store_order_action` VALUES (2411, 1653, 0, 0, 0, 0, '提交订单', 1535844646, '提交订单'); -INSERT INTO `store_order_action` VALUES (2412, 1654, 0, 0, 0, 0, '提交订单', 1536823694, '提交订单'); -INSERT INTO `store_order_action` VALUES (2413, 1655, 0, 0, 0, 0, '提交订单', 1536824019, '提交订单'); -INSERT INTO `store_order_action` VALUES (2414, 1656, 0, 0, 0, 0, '提交订单', 1536824097, '提交订单'); -INSERT INTO `store_order_action` VALUES (2415, 1657, 0, 0, 0, 0, '提交订单', 1536824141, '提交订单'); -INSERT INTO `store_order_action` VALUES (2416, 1658, 0, 0, 0, 0, '提交订单', 1536824194, '提交订单'); -INSERT INTO `store_order_action` VALUES (2417, 1659, 0, 0, 0, 0, '提交订单', 1537030930, '提交订单'); -INSERT INTO `store_order_action` VALUES (2418, 1660, 0, 0, 0, 0, '提交订单', 1537030934, '提交订单'); -INSERT INTO `store_order_action` VALUES (2419, 1661, 0, 0, 0, 0, '提交订单', 1537031075, '提交订单'); -INSERT INTO `store_order_action` VALUES (2420, 1662, 0, 0, 0, 0, '提交订单', 1537031219, '提交订单'); -INSERT INTO `store_order_action` VALUES (2421, 1677, 0, 0, 0, 0, '提交订单', 1537108423, '提交订单'); -INSERT INTO `store_order_action` VALUES (2422, 1678, 0, 0, 0, 0, '提交订单', 1537108524, '提交订单'); -INSERT INTO `store_order_action` VALUES (2423, 1679, 0, 0, 0, 0, '提交订单', 1537108576, '提交订单'); -INSERT INTO `store_order_action` VALUES (2424, 1684, 0, 0, 0, 0, '提交订单', 1537109116, '提交订单'); -INSERT INTO `store_order_action` VALUES (2425, 1693, 0, 0, 0, 0, '提交订单', 1537161179, '提交订单'); -INSERT INTO `store_order_action` VALUES (2426, 1694, 0, 0, 0, 0, '提交订单', 1537162922, '提交订单'); -INSERT INTO `store_order_action` VALUES (2427, 1695, 0, 0, 0, 0, '提交订单', 1537239234, '提交订单'); -INSERT INTO `store_order_action` VALUES (2428, 1696, 0, 0, 0, 0, '提交订单', 1537257195, '提交订单'); -INSERT INTO `store_order_action` VALUES (2429, 1697, 0, 0, 0, 0, '提交订单', 1537257199, '提交订单'); -INSERT INTO `store_order_action` VALUES (2430, 1698, 0, 0, 0, 0, '提交订单', 1537257498, '提交订单'); -INSERT INTO `store_order_action` VALUES (2431, 1699, 0, 0, 0, 0, '提交订单', 1537257887, '提交订单'); -INSERT INTO `store_order_action` VALUES (2432, 1700, 0, 0, 0, 0, '提交订单', 1537262124, '提交订单'); -INSERT INTO `store_order_action` VALUES (2433, 1701, 0, 0, 0, 0, '提交订单', 1537263206, '提交订单'); -INSERT INTO `store_order_action` VALUES (2434, 1702, 0, 0, 0, 0, '提交订单', 1537263210, '提交订单'); -INSERT INTO `store_order_action` VALUES (2435, 1703, 0, 0, 0, 0, '提交订单', 1537263211, '提交订单'); -INSERT INTO `store_order_action` VALUES (2436, 1704, 0, 0, 0, 0, '提交订单', 1537263214, '提交订单'); -INSERT INTO `store_order_action` VALUES (2437, 1705, 0, 0, 0, 0, '提交订单', 1537263219, '提交订单'); -INSERT INTO `store_order_action` VALUES (2438, 1706, 0, 0, 0, 0, '提交订单', 1537270871, '提交订单'); -INSERT INTO `store_order_action` VALUES (2439, 1707, 0, 0, 0, 0, '提交订单', 1537270886, '提交订单'); -INSERT INTO `store_order_action` VALUES (2440, 1708, 0, 0, 0, 0, '提交订单', 1537270925, '提交订单'); -INSERT INTO `store_order_action` VALUES (2441, 1709, 0, 0, 0, 0, '提交订单', 1537270979, '提交订单'); -INSERT INTO `store_order_action` VALUES (2442, 1710, 0, 0, 0, 0, '提交订单', 1537270988, '提交订单'); -INSERT INTO `store_order_action` VALUES (2443, 1711, 0, 0, 0, 0, '提交订单', 1537271353, '提交订单'); -INSERT INTO `store_order_action` VALUES (2444, 1712, 0, 0, 0, 0, '提交订单', 1537272869, '提交订单'); -INSERT INTO `store_order_action` VALUES (2445, 1713, 0, 0, 0, 0, '提交订单', 1537319156, '提交订单'); -INSERT INTO `store_order_action` VALUES (2446, 1714, 0, 0, 0, 0, '提交订单', 1537324464, '提交订单'); -INSERT INTO `store_order_action` VALUES (2447, 1715, 0, 0, 0, 0, '提交订单', 1537324508, '提交订单'); -INSERT INTO `store_order_action` VALUES (2448, 1716, 0, 0, 0, 0, '提交订单', 1537428026, '提交订单'); -INSERT INTO `store_order_action` VALUES (2449, 1717, 0, 0, 0, 0, '提交订单', 1537781187, '提交订单'); -INSERT INTO `store_order_action` VALUES (2450, 1718, 0, 0, 0, 0, '提交订单', 1537781440, '提交订单'); -INSERT INTO `store_order_action` VALUES (2451, 1719, 0, 0, 0, 0, '提交订单', 1537781644, '提交订单'); -INSERT INTO `store_order_action` VALUES (2452, 1720, 0, 0, 0, 0, '提交订单', 1537781707, '提交订单'); -INSERT INTO `store_order_action` VALUES (2453, 1721, 0, 0, 0, 0, '提交订单', 1537781743, '提交订单'); -INSERT INTO `store_order_action` VALUES (2454, 1722, 0, 0, 0, 0, '提交订单', 1537781830, '提交订单'); -INSERT INTO `store_order_action` VALUES (2455, 1723, 0, 0, 0, 0, '提交订单', 1537782033, '提交订单'); -INSERT INTO `store_order_action` VALUES (2456, 1724, 0, 0, 0, 0, '提交订单', 1537782097, '提交订单'); -INSERT INTO `store_order_action` VALUES (2457, 1725, 0, 0, 0, 0, '提交订单', 1537782123, '提交订单'); -INSERT INTO `store_order_action` VALUES (2458, 1726, 0, 0, 0, 0, '提交订单', 1537782501, '提交订单'); -INSERT INTO `store_order_action` VALUES (2459, 1727, 0, 0, 0, 0, '提交订单', 1537782856, '提交订单'); -INSERT INTO `store_order_action` VALUES (2460, 1728, 0, 0, 0, 0, '提交订单', 1537783035, '提交订单'); -INSERT INTO `store_order_action` VALUES (2461, 1729, 0, 0, 0, 0, '提交订单', 1537783179, '提交订单'); -INSERT INTO `store_order_action` VALUES (2462, 1730, 0, 0, 0, 0, '提交订单', 1537783250, '提交订单'); -INSERT INTO `store_order_action` VALUES (2463, 1731, 0, 0, 0, 0, '提交订单', 1537783316, '提交订单'); -INSERT INTO `store_order_action` VALUES (2464, 1732, 0, 0, 0, 0, '提交订单', 1537783357, '提交订单'); -INSERT INTO `store_order_action` VALUES (2465, 1733, 0, 0, 0, 0, '提交订单', 1537793998, '提交订单'); -INSERT INTO `store_order_action` VALUES (2466, 1734, 0, 0, 0, 0, '提交订单', 1537794348, '提交订单'); -INSERT INTO `store_order_action` VALUES (2467, 1735, 0, 0, 0, 0, '提交订单', 1537794481, '提交订单'); -INSERT INTO `store_order_action` VALUES (2468, 1736, 0, 0, 0, 0, '提交订单', 1537794594, '提交订单'); -INSERT INTO `store_order_action` VALUES (2469, 1737, 0, 0, 0, 0, '提交订单', 1537794695, '提交订单'); -INSERT INTO `store_order_action` VALUES (2470, 1738, 0, 0, 0, 0, '提交订单', 1537857037, '提交订单'); -INSERT INTO `store_order_action` VALUES (2471, 1739, 0, 0, 0, 0, '提交订单', 1537857049, '提交订单'); -INSERT INTO `store_order_action` VALUES (2472, 1740, 0, 0, 0, 0, '提交订单', 1537857255, '提交订单'); -INSERT INTO `store_order_action` VALUES (2473, 1741, 0, 0, 0, 0, '提交订单', 1537858164, '提交订单'); -INSERT INTO `store_order_action` VALUES (2474, 1742, 0, 0, 0, 0, '提交订单', 1537858183, '提交订单'); -INSERT INTO `store_order_action` VALUES (2475, 1743, 0, 0, 0, 0, '提交订单', 1537859564, '提交订单'); -INSERT INTO `store_order_action` VALUES (2476, 1744, 0, 0, 0, 0, '提交订单', 1537984972, '提交订单'); -INSERT INTO `store_order_action` VALUES (2477, 1745, 0, 0, 0, 0, '提交订单', 1537985784, '提交订单'); -INSERT INTO `store_order_action` VALUES (2478, 1746, 0, 0, 0, 0, '提交订单', 1537985891, '提交订单'); -INSERT INTO `store_order_action` VALUES (2479, 1747, 0, 0, 0, 0, '提交订单', 1537986005, '提交订单'); -INSERT INTO `store_order_action` VALUES (2480, 1748, 0, 0, 0, 0, '提交订单', 1537986071, '提交订单'); -INSERT INTO `store_order_action` VALUES (2481, 1749, 0, 0, 0, 0, '提交订单', 1537986166, '提交订单'); -INSERT INTO `store_order_action` VALUES (2482, 1750, 0, 0, 0, 0, '提交订单', 1537986239, '提交订单'); -INSERT INTO `store_order_action` VALUES (2483, 1751, 0, 0, 0, 0, '提交订单', 1538017689, '提交订单'); -INSERT INTO `store_order_action` VALUES (2484, 1752, 0, 0, 0, 0, '提交订单', 1538020131, '提交订单'); -INSERT INTO `store_order_action` VALUES (2485, 1753, 0, 0, 0, 0, '提交订单', 1538028524, '提交订单'); -INSERT INTO `store_order_action` VALUES (2486, 1754, 0, 0, 0, 0, '提交订单', 1538029012, '提交订单'); -INSERT INTO `store_order_action` VALUES (2487, 1755, 0, 0, 0, 0, '提交订单', 1538029150, '提交订单'); -INSERT INTO `store_order_action` VALUES (2488, 1756, 0, 0, 0, 0, '提交订单', 1538029324, '提交订单'); -INSERT INTO `store_order_action` VALUES (2489, 1757, 0, 0, 0, 0, '提交订单', 1538029374, '提交订单'); -INSERT INTO `store_order_action` VALUES (2490, 1759, 0, 0, 0, 0, '提交订单', 1538029913, '提交订单'); -INSERT INTO `store_order_action` VALUES (2491, 1760, 0, 0, 0, 0, '提交订单', 1538030053, '提交订单'); -INSERT INTO `store_order_action` VALUES (2492, 1761, 0, 0, 0, 0, '提交订单', 1538030112, '提交订单'); -INSERT INTO `store_order_action` VALUES (2493, 1762, 0, 0, 0, 0, '提交订单', 1538031214, '提交订单'); -INSERT INTO `store_order_action` VALUES (2494, 1763, 0, 0, 0, 0, '提交订单', 1538032281, '提交订单'); -INSERT INTO `store_order_action` VALUES (2495, 1764, 0, 0, 0, 0, '提交订单', 1538118400, '提交订单'); -INSERT INTO `store_order_action` VALUES (2496, 1765, 0, 0, 0, 0, '提交订单', 1539021632, '提交订单'); -INSERT INTO `store_order_action` VALUES (2497, 1766, 0, 0, 0, 0, '提交订单', 1539021653, '提交订单'); -INSERT INTO `store_order_action` VALUES (2498, 1807, 0, 0, 0, 0, '提交订单', 1539050142, '提交订单'); -INSERT INTO `store_order_action` VALUES (2499, 1824, 0, 0, 0, 0, '提交订单', 1539070576, '提交订单'); -INSERT INTO `store_order_action` VALUES (2500, 1825, 0, 0, 0, 0, '提交订单', 1539085347, '提交订单'); -INSERT INTO `store_order_action` VALUES (2501, 1826, 0, 0, 0, 0, '提交订单', 1539202763, '提交订单'); -INSERT INTO `store_order_action` VALUES (2502, 1827, 0, 0, 0, 0, '提交订单', 1539202903, '提交订单'); -INSERT INTO `store_order_action` VALUES (2503, 1828, 0, 0, 0, 0, '提交订单', 1539203031, '提交订单'); -INSERT INTO `store_order_action` VALUES (2504, 1829, 0, 0, 0, 0, '提交订单', 1539203175, '提交订单'); -INSERT INTO `store_order_action` VALUES (2505, 1830, 0, 0, 0, 0, '提交订单', 1539221033, '提交订单'); -INSERT INTO `store_order_action` VALUES (2506, 1831, 0, 0, 0, 0, '提交订单', 1539221242, '提交订单'); -INSERT INTO `store_order_action` VALUES (2507, 1832, 0, 0, 0, 0, '提交订单', 1539221608, '提交订单'); -INSERT INTO `store_order_action` VALUES (2508, 1833, 0, 0, 0, 0, '提交订单', 1539221713, '提交订单'); -INSERT INTO `store_order_action` VALUES (2509, 1834, 0, 0, 0, 0, '提交订单', 1539222188, '提交订单'); -INSERT INTO `store_order_action` VALUES (2510, 1835, 0, 0, 0, 0, '提交订单', 1539226781, '提交订单'); -INSERT INTO `store_order_action` VALUES (2511, 1836, 0, 0, 0, 0, '提交订单', 1539227751, '提交订单'); -INSERT INTO `store_order_action` VALUES (2512, 1837, 0, 0, 0, 0, '提交订单', 1539227776, '提交订单'); -INSERT INTO `store_order_action` VALUES (2513, 1838, 0, 0, 0, 0, '提交订单', 1539227883, '提交订单'); -INSERT INTO `store_order_action` VALUES (2514, 1839, 0, 0, 0, 0, '提交订单', 1539229117, '提交订单'); -INSERT INTO `store_order_action` VALUES (2515, 1840, 0, 0, 0, 0, '提交订单', 1539229166, '提交订单'); -INSERT INTO `store_order_action` VALUES (2516, 1841, 0, 0, 0, 0, '提交订单', 1539236921, '提交订单'); -INSERT INTO `store_order_action` VALUES (2517, 1842, 0, 0, 0, 0, '提交订单', 1539237126, '提交订单'); -INSERT INTO `store_order_action` VALUES (2518, 1843, 0, 0, 0, 0, '提交订单', 1539237440, '提交订单'); -INSERT INTO `store_order_action` VALUES (2519, 1844, 0, 0, 0, 0, '提交订单', 1539239633, '提交订单'); -INSERT INTO `store_order_action` VALUES (2520, 1845, 0, 0, 0, 0, '提交订单', 1539240265, '提交订单'); -INSERT INTO `store_order_action` VALUES (2521, 1846, 0, 0, 0, 0, '提交订单', 1539243144, '提交订单'); -INSERT INTO `store_order_action` VALUES (2522, 1847, 0, 0, 0, 0, '提交订单', 1539243174, '提交订单'); -INSERT INTO `store_order_action` VALUES (2523, 1848, 0, 0, 0, 0, '提交订单', 1539243178, '提交订单'); -INSERT INTO `store_order_action` VALUES (2524, 1849, 0, 0, 0, 0, '提交订单', 1539243185, '提交订单'); -INSERT INTO `store_order_action` VALUES (2525, 1850, 0, 0, 0, 0, '提交订单', 1539243850, '提交订单'); -INSERT INTO `store_order_action` VALUES (2526, 1851, 0, 0, 0, 0, '提交订单', 1539243886, '提交订单'); -INSERT INTO `store_order_action` VALUES (2527, 1852, 0, 0, 0, 0, '提交订单', 1539243926, '提交订单'); -INSERT INTO `store_order_action` VALUES (2528, 1853, 0, 0, 0, 0, '提交订单', 1539244179, '提交订单'); -INSERT INTO `store_order_action` VALUES (2529, 1854, 0, 0, 0, 0, '提交订单', 1539244316, '提交订单'); -INSERT INTO `store_order_action` VALUES (2530, 1855, 0, 0, 0, 0, '提交订单', 1539351145, '提交订单'); -INSERT INTO `store_order_action` VALUES (2531, 1856, 0, 0, 0, 0, '提交订单', 1540269401, '提交订单'); - --- ---------------------------- --- Table structure for store_order_express --- ---------------------------- -DROP TABLE IF EXISTS `store_order_express`; -CREATE TABLE `store_order_express` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `mid` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '会员ID', - `type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '快递类型(0.订单快递,1.退货快递)', - `order_no` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '订单编号', - `company_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流公司名称', - `company_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流公司编码', - `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货人姓名', - `phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货手机号', - `province` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货地址省份', - `city` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货地址城市', - `area` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货地址区域', - `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货详细地址', - `send_no` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '实际物流公司单号', - `send_company_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '实际发货快递公司', - `send_company_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '实际发货快递代码', - `send_username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人名称', - `send_phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人手机号', - `send_province` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人地址省份', - `send_city` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人地址城市', - `send_area` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人地址区域', - `send_address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '寄件人详细地址', - `send_at` datetime(0) NULL DEFAULT NULL COMMENT '快递发货时间', - `desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '发货描述', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0.无效,1.新快递,2.已签收,3.签收失败)', - `is_deleted` bigint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态(1删除,0未删除)', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商城订单快递' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_order_goods --- ---------------------------- -DROP TABLE IF EXISTS `store_order_goods`; -CREATE TABLE `store_order_goods` ( - `rec_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '表id自增', - `order_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单id', - `goods_id` mediumint(8) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品id', - `goods_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品名称', - `goods_logo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '', - `goods_sn` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '商品货号', - `goods_num` smallint(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT '购买数量', - `market_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '市场价', - `goods_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '本店价(供货价)', - `cost_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '商品成本价', - `member_goods_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '会员折扣价', - `give_integral` mediumint(8) UNSIGNED NULL DEFAULT 0 COMMENT '购买商品赠送积分', - `spec_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品规格key', - `spec_key_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '规格对应的中文名字', - `bar_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '条码', - `is_comment` tinyint(1) NULL DEFAULT 0 COMMENT '是否评价', - `prom_type` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '0 普通订单,1 限时抢购, 2 团购 , 3 促销优惠,4预售', - `prom_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '活动id', - `is_send` tinyint(1) NULL DEFAULT 0 COMMENT '0未发货,1已发货,2已换货,3已退货', - `delivery_id` int(11) NULL DEFAULT 0 COMMENT '发货单ID', - `sku` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'sku', - PRIMARY KEY (`rec_id`) USING BTREE, - INDEX `order_id`(`order_id`) USING BTREE, - INDEX `goods_id`(`goods_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2179 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单商品表与订单主表关联' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_order_goods --- ---------------------------- -INSERT INTO `store_order_goods` VALUES (2170, 1865, 4, '小米8青春', '', '#10078', 2, 0.00, 80.00, 0.00, 0.00, 0, '8_11', '尺寸:300*500cm 颜色:黑色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2171, 1865, 4, '小米8青春', '', '#10078', 3, 0.00, 90.00, 0.00, 0.00, 0, '8_12', '尺寸:300*500cm 颜色:紫色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2172, 1866, 4, '小米8青春', '', '#10078', 2, 0.00, 80.00, 0.00, 0.00, 0, '8_11', '尺寸:300*500cm 颜色:黑色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2173, 1866, 4, '小米8青春', '', '#10078', 3, 0.00, 90.00, 0.00, 0.00, 0, '8_12', '尺寸:300*500cm 颜色:紫色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2174, 1867, 4, '小米8青春', 'https://admin.mijia321.com/static/upload/5941400cd87c37bb/c838a50cd6e02bc9.jpg', '#10078', 2, 0.00, 80.00, 0.00, 0.00, 0, '8_11', '尺寸:300*500cm 颜色:黑色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2175, 1867, 4, '小米8青春', 'https://admin.mijia321.com/static/upload/5941400cd87c37bb/c838a50cd6e02bc9.jpg', '#10078', 3, 0.00, 90.00, 0.00, 0.00, 0, '8_12', '尺寸:300*500cm 颜色:紫色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2176, 1868, 4, '小米8青春', 'https://admin.mijia321.com/static/upload/5941400cd87c37bb/c838a50cd6e02bc9.jpg', '#10078', 2, 0.00, 80.00, 0.00, 0.00, 0, '8_11', '尺寸:300*500cm 颜色:黑色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2177, 1868, 4, '小米8青春', 'https://admin.mijia321.com/static/upload/5941400cd87c37bb/c838a50cd6e02bc9.jpg', '#10078', 3, 0.00, 90.00, 0.00, 0.00, 0, '8_12', '尺寸:300*500cm 颜色:紫色', '', 0, 0, 0, 0, 0, ''); -INSERT INTO `store_order_goods` VALUES (2178, 1869, 4, '小米8青春', 'https://app2.yixiang.co/file/pic/20210615153142207742.jpg', '#10078', 1, 888.00, 88.00, 0.00, 0.00, 0, '8_10', '尺寸:300*500cm,颜色:红色', '', 0, 0, 0, 0, 0, ''); - --- ---------------------------- --- Table structure for store_order_goods_remark --- ---------------------------- -DROP TABLE IF EXISTS `store_order_goods_remark`; -CREATE TABLE `store_order_goods_remark` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, - `order_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '订单id', - `goods_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '商品id', - `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '商品备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单商品备注表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_order_goods_remark --- ---------------------------- -INSERT INTO `store_order_goods_remark` VALUES (1, 1654, 5, '备注1111'); -INSERT INTO `store_order_goods_remark` VALUES (2, 1654, 6, '备注1111'); -INSERT INTO `store_order_goods_remark` VALUES (3, 1693, 4, '这是备注这是备注'); -INSERT INTO `store_order_goods_remark` VALUES (4, 1712, 4, '这是备注这是备注'); -INSERT INTO `store_order_goods_remark` VALUES (5, 1742, 4, '这是备注这是备注'); -INSERT INTO `store_order_goods_remark` VALUES (6, 1759, 5, '2222'); -INSERT INTO `store_order_goods_remark` VALUES (7, 1760, 5, '222'); -INSERT INTO `store_order_goods_remark` VALUES (8, 1761, 5, '2222'); -INSERT INTO `store_order_goods_remark` VALUES (9, 1762, 4, '测试数据'); -INSERT INTO `store_order_goods_remark` VALUES (10, 1763, 4, '222'); -INSERT INTO `store_order_goods_remark` VALUES (11, 1824, 4, '11'); - --- ---------------------------- --- Table structure for store_payment --- ---------------------------- -DROP TABLE IF EXISTS `store_payment`; -CREATE TABLE `store_payment` ( - `pay_id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '表id', - `pay_code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付code', - `pay_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付方式名称', - `pay_fee` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '手续费', - `pay_desc` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述', - `pay_order` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'pay_coder', - `pay_config` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '配置', - `enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开启', - `is_cod` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否货到付款', - `is_online` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否在线支付', - PRIMARY KEY (`pay_id`) USING BTREE, - UNIQUE INDEX `pay_code`(`pay_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '支付方式表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_points_money_log --- ---------------------------- -DROP TABLE IF EXISTS `store_points_money_log`; -CREATE TABLE `store_points_money_log` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '日志id', - `order_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '关联的订单id 充值d订单或者消费订单', - `user_id` int(11) NOT NULL DEFAULT 0 COMMENT '所有者的用户id', - `title` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '积分或者红包日志标题', - `points_number` int(11) NOT NULL DEFAULT 0 COMMENT '积分变动数量,亿级', - `money_number` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '红包变动数量,亿级', - `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '会员红包或者积分变动类型:1支入,2-支出', - `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '添加时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 99 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '积分/余额日志(流水)表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_points_money_log --- ---------------------------- -INSERT INTO `store_points_money_log` VALUES (50, 141, 1, '现金充值', 0, 1000.00, 1, 1533130821); -INSERT INTO `store_points_money_log` VALUES (51, 0, 1, '进货支出', 0, 836.00, 2, 1533389358); -INSERT INTO `store_points_money_log` VALUES (52, 0, 1, '进货支出', 0, 70.40, 2, 1536831708); -INSERT INTO `store_points_money_log` VALUES (53, 170, 7, '现金充值', 0, 55.00, 1, 1537262933); -INSERT INTO `store_points_money_log` VALUES (54, 171, 7, '现金充值', 0, 555.00, 1, 1537262992); -INSERT INTO `store_points_money_log` VALUES (55, 0, 7, '管理员调整金额', 0, 100.00, 1, 1537319509); -INSERT INTO `store_points_money_log` VALUES (56, 199, 3, '现金充值', 0, 200.00, 1, 1537424017); -INSERT INTO `store_points_money_log` VALUES (57, 0, 2, '进货支出', 0, 110.00, 2, 1537794698); -INSERT INTO `store_points_money_log` VALUES (58, 202, 2, '现金充值', 0, 100.00, 1, 1537797272); -INSERT INTO `store_points_money_log` VALUES (59, 0, 3, '管理员调整金额', 0, 20000.00, 1, 1537857224); -INSERT INTO `store_points_money_log` VALUES (60, 0, 3, '进货支出', 0, 0.00, 2, 1537857258); -INSERT INTO `store_points_money_log` VALUES (61, 0, 3, '进货支出', 0, 233.00, 2, 1537859567); -INSERT INTO `store_points_money_log` VALUES (62, 0, 2, '进货支出', 0, 110.00, 2, 1537985787); -INSERT INTO `store_points_money_log` VALUES (63, 0, 2, '进货支出', 0, 110.00, 2, 1537985893); -INSERT INTO `store_points_money_log` VALUES (64, 0, 2, '进货支出', 0, 110.00, 2, 1537986007); -INSERT INTO `store_points_money_log` VALUES (65, 0, 2, '进货支出', 0, 110.00, 2, 1537986073); -INSERT INTO `store_points_money_log` VALUES (66, 0, 2, '进货支出', 0, 110.00, 2, 1537986169); -INSERT INTO `store_points_money_log` VALUES (67, 0, 2, '进货支出', 0, 110.00, 2, 1537986241); -INSERT INTO `store_points_money_log` VALUES (68, 0, 3, '进货支出', 0, 211.00, 2, 1538017693); -INSERT INTO `store_points_money_log` VALUES (69, 0, 3, '进货支出', 0, 80.00, 2, 1538020135); -INSERT INTO `store_points_money_log` VALUES (70, 0, 2, '进货支出', 0, 110.00, 2, 1538028526); -INSERT INTO `store_points_money_log` VALUES (71, 0, 2, '进货支出', 0, 110.00, 2, 1538029015); -INSERT INTO `store_points_money_log` VALUES (72, 0, 2, '进货支出', 0, 110.00, 2, 1538029152); -INSERT INTO `store_points_money_log` VALUES (73, 0, 2, '进货支出', 0, 110.00, 2, 1538029326); -INSERT INTO `store_points_money_log` VALUES (74, 0, 2, '进货支出', 0, 110.00, 2, 1538029376); -INSERT INTO `store_points_money_log` VALUES (75, 0, 2, '进货支出', 0, 110.00, 2, 1538029916); -INSERT INTO `store_points_money_log` VALUES (76, 0, 2, '进货支出', 0, 110.00, 2, 1538030055); -INSERT INTO `store_points_money_log` VALUES (77, 0, 2, '进货支出', 0, 110.00, 2, 1538030114); -INSERT INTO `store_points_money_log` VALUES (78, 0, 3, '进货支出', 0, 80.00, 2, 1538031217); -INSERT INTO `store_points_money_log` VALUES (79, 0, 2, '进货支出', 0, 80.00, 2, 1538032284); -INSERT INTO `store_points_money_log` VALUES (80, 0, 7, '进货支出', 0, 170.00, 2, 1538040934); -INSERT INTO `store_points_money_log` VALUES (81, 0, 7, '进货支出', 0, 52.00, 2, 1538118403); -INSERT INTO `store_points_money_log` VALUES (82, 0, 7, '进货支出', 0, 430.00, 2, 1538119947); -INSERT INTO `store_points_money_log` VALUES (83, 0, 7, '管理员调整金额', 0, 10000.00, 1, 1538120985); -INSERT INTO `store_points_money_log` VALUES (84, 0, 7, '进货支出', 0, 330.00, 2, 1538121207); -INSERT INTO `store_points_money_log` VALUES (85, 0, 2, '进货支出', 0, 240.00, 2, 1539076535); -INSERT INTO `store_points_money_log` VALUES (86, 0, 2, '进货支出', 0, 100.00, 2, 1539078194); -INSERT INTO `store_points_money_log` VALUES (87, 0, 3, '进货支出', 0, 100.00, 2, 1539220807); -INSERT INTO `store_points_money_log` VALUES (88, 0, 3, '进货支出', 0, 80.00, 2, 1539221246); -INSERT INTO `store_points_money_log` VALUES (89, 0, 2, '进货支出', 0, 110.00, 2, 1539222400); -INSERT INTO `store_points_money_log` VALUES (90, 0, 3, '进货支出', 0, 80.00, 2, 1539227807); -INSERT INTO `store_points_money_log` VALUES (91, 0, 3, '进货支出', 0, 301.00, 2, 1539237129); -INSERT INTO `store_points_money_log` VALUES (92, 0, 7, '进货支出', 0, 196.00, 2, 1539240016); -INSERT INTO `store_points_money_log` VALUES (93, 0, 7, '进货支出', 0, 90.90, 2, 1539243164); -INSERT INTO `store_points_money_log` VALUES (94, 0, 7, '进货支出', 0, 90.90, 2, 1539243181); -INSERT INTO `store_points_money_log` VALUES (95, 0, 7, '进货支出', 0, 90.90, 2, 1539243187); -INSERT INTO `store_points_money_log` VALUES (96, 0, 7, '进货支出', 0, 110.70, 2, 1539243862); -INSERT INTO `store_points_money_log` VALUES (97, 0, 7, '进货支出', 0, 110.70, 2, 1539243889); -INSERT INTO `store_points_money_log` VALUES (98, 0, 7, '进货支出', 0, 288.00, 2, 1539244318); - --- ---------------------------- --- Table structure for store_recharge --- ---------------------------- -DROP TABLE IF EXISTS `store_recharge`; -CREATE TABLE `store_recharge` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `from_type` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '充值转账来源1-充值 2-转账', - `method_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '充值方式id', - `user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '会员ID', - `order_sn` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '充值单号', - `screen_pic` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '转账截图', - `account` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '充值金额', - `status_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '审核日期', - `ctime` int(11) NULL DEFAULT NULL COMMENT '充值时间', - `status` tinyint(1) NULL DEFAULT 0 COMMENT '充值状态0:审核中 1:审核成功 2-审核失败', - `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 283 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '充值或转账订单记录表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_recharge --- ---------------------------- -INSERT INTO `store_recharge` VALUES (141, 1, 1, 1, '2018072521201787160', 'http://www.testxcx.com/static/upload/a1b7f6d005e2c1b2/9729f24657ecbf46.png', 1000.00, 1533130821, 1532524817, 1, ''); -INSERT INTO `store_recharge` VALUES (142, 2, 1, 1, '2018072521562425007', 'http://www.testxcx.com/static/upload/a1b7f6d005e2c1b2/9729f24657ecbf46.png', 1000.00, 1533203680, 1532526984, 1, ''); -INSERT INTO `store_recharge` VALUES (143, 2, 1, 1, '22222222', 'http://www.testxcx.com/static/upload/a1b7f6d005e2c1b2/9729f24657ecbf46.png', 210.00, 1533217816, 1532524817, 1, ''); -INSERT INTO `store_recharge` VALUES (144, 1, 1, 1, '2018091116242898946', '44444', 20.00, 0, 1536654268, 0, ''); -INSERT INTO `store_recharge` VALUES (145, 1, 1, 1, '2018091216463054486', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.pL7yPXjn09HO1913000c96bffd795d7168711de47390.jpg', 222.00, 0, 1536741990, 0, ''); -INSERT INTO `store_recharge` VALUES (146, 1, 1, 1, '2018091216520591714', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.kO9rTfHcIPvl1913000c96bffd795d7168711de47390.jpg', 20.00, 0, 1536742325, 0, ''); -INSERT INTO `store_recharge` VALUES (147, 1, 1, 1, '2018091217024053205', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.TIsEKvKob8ow1913000c96bffd795d7168711de47390.jpg', 222.00, 0, 1536742960, 0, ''); -INSERT INTO `store_recharge` VALUES (148, 2, 1, 1, '2018091416571541000', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.fbiUd38daQFf1913000c96bffd795d7168711de47390.jpg', 54552.00, 0, 1536915435, 0, ''); -INSERT INTO `store_recharge` VALUES (149, 2, 1, 1, '2018091417002144757', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.QRDta7fyNB8U1913000c96bffd795d7168711de47390.jpg', 100.00, 0, 1536915621, 0, ''); -INSERT INTO `store_recharge` VALUES (150, 1, 1, 1, '2018091417013329502', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.CilfRtadn4cb1913000c96bffd795d7168711de47390.jpg', 1.00, 0, 1536915693, 0, ''); -INSERT INTO `store_recharge` VALUES (151, 2, 1, 1, '2018091417025096546', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.tMJCI9srzrl71913000c96bffd795d7168711de47390.jpg', 20.00, 0, 1536915770, 0, ''); -INSERT INTO `store_recharge` VALUES (152, 2, 1, 1, '2018091417041260095', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.NU523ND6kIsd1913000c96bffd795d7168711de47390.jpg', 1.00, 0, 1536915852, 0, ''); -INSERT INTO `store_recharge` VALUES (153, 2, 1, 1, '2018091417045742350', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.YFAWQrkrKp8i1913000c96bffd795d7168711de47390.jpg', 12.00, 0, 1536915897, 0, ''); -INSERT INTO `store_recharge` VALUES (154, 2, 1, 1, '2018091417055015996', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.r8r7aJf6GG7o1913000c96bffd795d7168711de47390.jpg', 1.00, 0, 1536915950, 0, ''); -INSERT INTO `store_recharge` VALUES (155, 2, 1, 1, '2018091417063832184', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.1p03bCF15H9H1913000c96bffd795d7168711de47390.jpg', 1.00, 0, 1536915998, 0, ''); -INSERT INTO `store_recharge` VALUES (156, 2, 1, 1, '2018091417104693413', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.UOeCnQ6E3utj1913000c96bffd795d7168711de47390.jpg', 12.00, 0, 1536916246, 0, ''); -INSERT INTO `store_recharge` VALUES (157, 2, 1, 1, '2018091601070954685', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.8SyF62MEwCA6bd0c4d9c4d21e67a4186bff85361a1bd.png', 2222.00, 0, 1537031229, 0, ''); -INSERT INTO `store_recharge` VALUES (158, 2, 1, 1, '2018091601114382039', 'http://tmp/wx7716525cc7f1f490.o6zAJs19nsgod_IKqSrtW8bTgtw8.zdyyN6BF5GYgbd0c4d9c4d21e67a4186bff85361a1bd.png', 1111.00, 0, 1537031503, 0, ''); -INSERT INTO `store_recharge` VALUES (159, 2, 1, 7, '2018091811090198115', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240141, 0, ''); -INSERT INTO `store_recharge` VALUES (160, 2, 1, 7, '2018091811090461091', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240144, 0, ''); -INSERT INTO `store_recharge` VALUES (161, 2, 1, 7, '2018091811090526094', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240145, 0, ''); -INSERT INTO `store_recharge` VALUES (162, 2, 1, 7, '2018091811090540420', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240145, 0, ''); -INSERT INTO `store_recharge` VALUES (163, 2, 1, 7, '2018091811090632015', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240146, 0, ''); -INSERT INTO `store_recharge` VALUES (164, 2, 1, 7, '2018091811090683373', 'wxfile://tmp_ab866540729f591c2c8a0ea2c59ddddd.jpg', 666.00, 0, 1537240146, 0, ''); -INSERT INTO `store_recharge` VALUES (165, 2, 3, 7, '2018091815595949122', 'wxfile://tmp_2b93bb4edc3cb181b5326858046ee8ef.jpg', 55.00, 0, 1537257599, 0, ''); -INSERT INTO `store_recharge` VALUES (166, 2, 3, 7, '2018091816000095059', 'wxfile://tmp_2b93bb4edc3cb181b5326858046ee8ef.jpg', 55.00, 0, 1537257600, 0, ''); -INSERT INTO `store_recharge` VALUES (167, 2, 3, 7, '2018091816000021704', 'wxfile://tmp_2b93bb4edc3cb181b5326858046ee8ef.jpg', 55.00, 0, 1537257600, 0, ''); -INSERT INTO `store_recharge` VALUES (168, 2, 3, 7, '2018091816000058740', 'wxfile://tmp_2b93bb4edc3cb181b5326858046ee8ef.jpg', 55.00, 0, 1537257600, 0, ''); -INSERT INTO `store_recharge` VALUES (169, 2, 3, 7, '2018091816000193312', 'wxfile://tmp_2b93bb4edc3cb181b5326858046ee8ef.jpg', 55.00, 0, 1537257601, 0, ''); -INSERT INTO `store_recharge` VALUES (170, 1, 3, 7, '2018091817284050141', 'wxfile://tmp_7d9046993b3ce5874a97d7181f32edbc.jpg', 55.00, 1537262933, 1537262920, 1, ''); -INSERT INTO `store_recharge` VALUES (171, 1, 3, 7, '2018091817293620480', 'wxfile://tmp_7d9046993b3ce5874a97d7181f32edbc.jpg', 555.00, 1537262992, 1537262976, 1, ''); -INSERT INTO `store_recharge` VALUES (172, 2, 1, 3, '2018091819433560933', 'wxfile://tmp_81bbdc3837e3710feac533b44b3c484ec08c8dc2355b666e.jpg', 200.00, 0, 1537271015, 0, ''); -INSERT INTO `store_recharge` VALUES (173, 2, 1, 3, '2018091819433762951', 'wxfile://tmp_81bbdc3837e3710feac533b44b3c484ec08c8dc2355b666e.jpg', 200.00, 0, 1537271017, 0, ''); -INSERT INTO `store_recharge` VALUES (174, 2, 1, 3, '2018091819433916792', 'wxfile://tmp_81bbdc3837e3710feac533b44b3c484ec08c8dc2355b666e.jpg', 200.00, 0, 1537271019, 0, ''); -INSERT INTO `store_recharge` VALUES (175, 2, 1, 7, '2018091910352320633', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324523, 0, ''); -INSERT INTO `store_recharge` VALUES (176, 2, 1, 7, '2018091910352478213', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324524, 0, ''); -INSERT INTO `store_recharge` VALUES (177, 2, 1, 7, '2018091910354337896', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324543, 0, ''); -INSERT INTO `store_recharge` VALUES (178, 2, 1, 7, '2018091910354417138', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324544, 0, ''); -INSERT INTO `store_recharge` VALUES (179, 2, 1, 7, '2018091910354440991', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324544, 0, ''); -INSERT INTO `store_recharge` VALUES (180, 2, 1, 7, '2018091910354458125', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324544, 0, ''); -INSERT INTO `store_recharge` VALUES (181, 2, 1, 7, '2018091910354515121', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324545, 0, ''); -INSERT INTO `store_recharge` VALUES (182, 2, 1, 7, '2018091910354694576', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324546, 0, ''); -INSERT INTO `store_recharge` VALUES (183, 2, 1, 7, '2018091910354645975', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324546, 0, ''); -INSERT INTO `store_recharge` VALUES (184, 2, 1, 7, '2018091910354624038', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324546, 0, ''); -INSERT INTO `store_recharge` VALUES (185, 2, 1, 7, '2018091910354756245', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324547, 0, ''); -INSERT INTO `store_recharge` VALUES (186, 2, 1, 7, '2018091910354753836', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324547, 0, ''); -INSERT INTO `store_recharge` VALUES (187, 2, 1, 7, '2018091910354797918', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324547, 0, ''); -INSERT INTO `store_recharge` VALUES (188, 2, 1, 7, '2018091910354862558', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324548, 0, ''); -INSERT INTO `store_recharge` VALUES (189, 2, 1, 7, '2018091910354858551', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324548, 0, ''); -INSERT INTO `store_recharge` VALUES (190, 2, 1, 7, '2018091910354836930', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324548, 0, ''); -INSERT INTO `store_recharge` VALUES (191, 2, 1, 7, '2018091910354886718', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324548, 0, ''); -INSERT INTO `store_recharge` VALUES (192, 2, 1, 7, '2018091910354852293', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324548, 0, ''); -INSERT INTO `store_recharge` VALUES (193, 2, 1, 7, '2018091910354981091', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324549, 0, ''); -INSERT INTO `store_recharge` VALUES (194, 2, 1, 7, '2018091910354920179', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324549, 0, ''); -INSERT INTO `store_recharge` VALUES (195, 2, 1, 7, '2018091910354910503', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324549, 0, ''); -INSERT INTO `store_recharge` VALUES (196, 2, 1, 7, '2018091910354948435', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324549, 0, ''); -INSERT INTO `store_recharge` VALUES (197, 2, 1, 7, '2018091910355058665', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324550, 0, ''); -INSERT INTO `store_recharge` VALUES (198, 2, 1, 7, '2018091910355022090', 'wxfile://tmp_0c2443bd8d4269fef8efce03fe112623.jpg', 666.00, 0, 1537324550, 0, ''); -INSERT INTO `store_recharge` VALUES (199, 1, 1, 3, '2018092014131652263', 'wxfile://tmp_43e33c30d149550ed5de63ad4021c5643f4ade437e967e06.jpg', 200.00, 1537424017, 1537423996, 1, ''); -INSERT INTO `store_recharge` VALUES (200, 2, 1, 2, '2018092418040868449', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.IpSybR8XmbX806d108d22f54a74f8a7f31a359784ca9.jpg', 11.00, 0, 1537783448, 0, ''); -INSERT INTO `store_recharge` VALUES (201, 1, 1, 2, '2018092419193225934', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.fC5ZI3UTk2Bj19ad9ba730dbce751d507d3a627e8ae0.png', 22.00, 0, 1537787972, 0, ''); -INSERT INTO `store_recharge` VALUES (202, 1, 1, 2, '2018092421540638918', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.hH2jV5YjIhUf2b4faea670d34bc792cf6a3a09b9dbfb.png', 100.00, 1537797272, 1537797246, 1, ''); -INSERT INTO `store_recharge` VALUES (203, 2, 1, 3, '2018092514310798536', 'wxfile://tmp_ef99c8a4572b71f7b3db37f710e9b6cad858a187aaa185e2.jpg', 1120.00, 0, 1537857067, 0, ''); -INSERT INTO `store_recharge` VALUES (204, 2, 1, 2, '2018092702030377276', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.VRdMca2odWSw527fe3b6065e6df0365d48cf7bafe4d8.png', 3333.00, 0, 1537984983, 0, ''); -INSERT INTO `store_recharge` VALUES (205, 2, 1, 2, '2018092702071856939', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.ljEjABH8u7AD527fe3b6065e6df0365d48cf7bafe4d8.png', 22222.00, 0, 1537985238, 0, ''); -INSERT INTO `store_recharge` VALUES (206, 2, 1, 7, '2018092811341366563', 'wxfile://tmp_7118cb2c25239a724d75b520af60aabb.jpg', 666.00, 0, 1538105653, 0, ''); -INSERT INTO `store_recharge` VALUES (207, 2, 1, 7, '2018092811341415350', 'wxfile://tmp_7118cb2c25239a724d75b520af60aabb.jpg', 666.00, 0, 1538105654, 0, ''); -INSERT INTO `store_recharge` VALUES (208, 1, 1, 7, '2018092816034758417', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121827, 0, ''); -INSERT INTO `store_recharge` VALUES (209, 1, 2, 7, '2018092816040142732', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121841, 0, ''); -INSERT INTO `store_recharge` VALUES (210, 1, 3, 7, '2018092816040755867', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121847, 0, ''); -INSERT INTO `store_recharge` VALUES (211, 1, 3, 7, '2018092816042611995', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121866, 0, ''); -INSERT INTO `store_recharge` VALUES (212, 1, 1, 7, '2018092816054139928', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121941, 0, ''); -INSERT INTO `store_recharge` VALUES (213, 1, 1, 7, '2018092816060244967', 'wxfile://tmp_6a59d2ba85aa3f88e8d366bcb57b0bae.jpg', 222.00, 0, 1538121962, 0, ''); -INSERT INTO `store_recharge` VALUES (214, 2, 1, 3, '2018092816275232663', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123272, 0, ''); -INSERT INTO `store_recharge` VALUES (215, 2, 1, 3, '2018092816275472798', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123274, 0, ''); -INSERT INTO `store_recharge` VALUES (216, 2, 1, 3, '2018092816275475098', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123274, 0, ''); -INSERT INTO `store_recharge` VALUES (217, 2, 1, 3, '2018092816275530451', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123275, 0, ''); -INSERT INTO `store_recharge` VALUES (218, 2, 1, 3, '2018092816275562259', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123275, 0, ''); -INSERT INTO `store_recharge` VALUES (219, 2, 1, 3, '2018092816275589187', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123275, 0, ''); -INSERT INTO `store_recharge` VALUES (220, 2, 1, 3, '2018092816275640327', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (221, 2, 1, 3, '2018092816275687067', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (222, 2, 1, 3, '2018092816275689683', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (223, 2, 1, 3, '2018092816275687932', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (224, 2, 1, 3, '2018092816275675178', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (225, 2, 1, 3, '2018092816275662263', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123276, 0, ''); -INSERT INTO `store_recharge` VALUES (226, 2, 1, 3, '2018092816275714010', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (227, 2, 1, 3, '2018092816275778584', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (228, 2, 1, 3, '2018092816275785596', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (229, 2, 1, 3, '2018092816275752403', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (230, 2, 1, 3, '2018092816275713791', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (231, 2, 1, 3, '2018092816275770307', 'wxfile://tmp_e0d7c38ffb15b3362b8bf81de96901b8ba39f9e8e0c13d64.jpg', 100.00, 0, 1538123277, 0, ''); -INSERT INTO `store_recharge` VALUES (232, 2, 2, 3, '2018100919402528154', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085225, 0, ''); -INSERT INTO `store_recharge` VALUES (233, 2, 2, 3, '2018100919403715213', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085237, 0, ''); -INSERT INTO `store_recharge` VALUES (234, 2, 2, 3, '2018100919404026051', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085240, 0, ''); -INSERT INTO `store_recharge` VALUES (235, 2, 2, 3, '2018100919404057366', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085240, 0, ''); -INSERT INTO `store_recharge` VALUES (236, 2, 2, 3, '2018100919404121955', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085241, 0, ''); -INSERT INTO `store_recharge` VALUES (237, 2, 2, 3, '2018100919404127052', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085241, 0, ''); -INSERT INTO `store_recharge` VALUES (238, 2, 2, 3, '2018100919404171424', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085241, 0, ''); -INSERT INTO `store_recharge` VALUES (239, 2, 2, 3, '2018100919404184409', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085241, 0, ''); -INSERT INTO `store_recharge` VALUES (240, 2, 2, 3, '2018100919404289690', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085242, 0, ''); -INSERT INTO `store_recharge` VALUES (241, 2, 2, 3, '2018100919404286650', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085242, 0, ''); -INSERT INTO `store_recharge` VALUES (242, 2, 2, 3, '2018100919404241653', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085242, 0, ''); -INSERT INTO `store_recharge` VALUES (243, 2, 2, 3, '2018100919404297411', 'wxfile://tmp_cbb6231ff3721dd8c28af3b8da9f3524065374a6aaffbd44.jpg', 100.00, 0, 1539085242, 0, ''); -INSERT INTO `store_recharge` VALUES (244, 2, 1, 3, '2018100919424459376', 'wxfile://tmp_43aed6f9e080a8efa37daf3613ab242ab2bd98dccfa7efca.jpg', 100.00, 0, 1539085364, 0, ''); -INSERT INTO `store_recharge` VALUES (245, 2, 2, 2, '2018101104193786384', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.hQsEN5EicO0Rfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539202777, 0, ''); -INSERT INTO `store_recharge` VALUES (246, 2, 2, 2, '2018101104215353900', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.FrKMFGUV8tBNfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539202913, 0, ''); -INSERT INTO `store_recharge` VALUES (247, 1, 2, 2, '2018101104233254722', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.lveB2YGeTShcfe4792d482196a50cf9ae0d9d90b6493.ico', 2000.00, 0, 1539203012, 0, ''); -INSERT INTO `store_recharge` VALUES (248, 2, 2, 2, '2018101104235786730', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.lveB2YGeTShcfe4792d482196a50cf9ae0d9d90b6493.ico', 2000.00, 0, 1539203037, 0, ''); -INSERT INTO `store_recharge` VALUES (249, 2, 2, 2, '2018101104262648793', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.A2NKpwiPeiuIfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539203186, 0, ''); -INSERT INTO `store_recharge` VALUES (250, 2, 1, 3, '2018101109221826699', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220938, 0, ''); -INSERT INTO `store_recharge` VALUES (251, 2, 1, 3, '2018101109222330837', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220943, 0, ''); -INSERT INTO `store_recharge` VALUES (252, 2, 1, 3, '2018101109222577741', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220945, 0, ''); -INSERT INTO `store_recharge` VALUES (253, 2, 1, 3, '2018101109222675100', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220946, 0, ''); -INSERT INTO `store_recharge` VALUES (254, 2, 1, 3, '2018101109222666466', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220946, 0, ''); -INSERT INTO `store_recharge` VALUES (255, 2, 1, 3, '2018101109222676622', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220946, 0, ''); -INSERT INTO `store_recharge` VALUES (256, 2, 1, 3, '2018101109222670569', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220946, 0, ''); -INSERT INTO `store_recharge` VALUES (257, 2, 1, 3, '2018101109222718116', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220947, 0, ''); -INSERT INTO `store_recharge` VALUES (258, 2, 1, 3, '2018101109222739735', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220947, 0, ''); -INSERT INTO `store_recharge` VALUES (259, 2, 1, 3, '2018101109222734686', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220947, 0, ''); -INSERT INTO `store_recharge` VALUES (260, 2, 1, 3, '2018101109222794435', 'wxfile://tmp_e8e57d308070e9468cae6ebfd89089e3b0ac8d5c84d99f8d.jpg', 100.00, 0, 1539220947, 0, ''); -INSERT INTO `store_recharge` VALUES (261, 2, 1, 3, '2018101109240884756', 'wxfile://tmp_180f832c87fa49bab5eee3df7c0db97f07575970d6a23477.jpg', 200.00, 0, 1539221048, 0, ''); -INSERT INTO `store_recharge` VALUES (262, 2, 1, 3, '2018101109252410942', 'wxfile://tmp_180f832c87fa49bab5eee3df7c0db97f07575970d6a23477.jpg', 200.00, 0, 1539221124, 0, ''); -INSERT INTO `store_recharge` VALUES (263, 2, 1, 3, '2018101109252665649', 'wxfile://tmp_180f832c87fa49bab5eee3df7c0db97f07575970d6a23477.jpg', 200.00, 0, 1539221126, 0, ''); -INSERT INTO `store_recharge` VALUES (264, 2, 1, 3, '2018101109432450346', 'wxfile://tmp_2ddb35191019a2efb82d7be7c800f9022f5158fb35dc3526.jpg', 200.00, 0, 1539222204, 0, ''); -INSERT INTO `store_recharge` VALUES (265, 2, 1, 3, '2018101109433522041', 'wxfile://tmp_2ddb35191019a2efb82d7be7c800f9022f5158fb35dc3526.jpg', 200.00, 0, 1539222215, 0, ''); -INSERT INTO `store_recharge` VALUES (266, 2, 2, 2, '2018101109473840491', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.bQaBw9jeLjr3fe4792d482196a50cf9ae0d9d90b6493.ico', 100.00, 0, 1539222458, 0, ''); -INSERT INTO `store_recharge` VALUES (267, 2, 2, 2, '2018101109500574646', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.Dl5RO1o7Zi14fe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539222605, 0, ''); -INSERT INTO `store_recharge` VALUES (268, 2, 2, 2, '2018101109513264321', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.FT01v5KJVG5cfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539222692, 0, ''); -INSERT INTO `store_recharge` VALUES (269, 2, 2, 2, '2018101109571376297', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.7OZ8hlTHRpIWfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539223033, 0, ''); -INSERT INTO `store_recharge` VALUES (270, 2, 2, 2, '2018101110272715026', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.DhHrw8Q5jmdlfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539224847, 0, ''); -INSERT INTO `store_recharge` VALUES (271, 2, 2, 2, '2018101110315084145', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.ILwktDCpuUNHfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539225110, 0, ''); -INSERT INTO `store_recharge` VALUES (272, 2, 2, 2, '2018101110390243643', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.C21xvgjqcA3bfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539225542, 0, ''); -INSERT INTO `store_recharge` VALUES (273, 2, 3, 7, '2018101111010016227', 'wxfile://tmp_ade18cc26090c39548e7bcbc3a39c89c.jpg', 666.00, 0, 1539226860, 0, ''); -INSERT INTO `store_recharge` VALUES (274, 2, 1, 3, '2018101111150483281', 'wxfile://tmp_97985a29deb8d8a90061828cf0f4e0357b0fa56ca9f67e0f.jpg', 100.00, 0, 1539227704, 0, ''); -INSERT INTO `store_recharge` VALUES (275, 2, 2, 2, '2018101111154857359', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.C21xvgjqcA3bfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539227748, 0, ''); -INSERT INTO `store_recharge` VALUES (276, 2, 2, 2, '2018101111155177215', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.C21xvgjqcA3bfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539227751, 0, ''); -INSERT INTO `store_recharge` VALUES (277, 2, 2, 2, '2018101111222854904', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.Ibep4iVgLUw3fe4792d482196a50cf9ae0d9d90b6493.ico', 11.00, 0, 1539228148, 0, ''); -INSERT INTO `store_recharge` VALUES (278, 2, 2, 2, '2018101111234447257', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.n7P3GpiuLTQLfe4792d482196a50cf9ae0d9d90b6493.ico', 2222.00, 0, 1539228224, 0, ''); -INSERT INTO `store_recharge` VALUES (279, 2, 2, 2, '2018101111284767607', 'http://tmp/wx604d2ea4702620d2.o6zAJs19nsgod_IKqSrtW8bTgtw8.ZOqeojEMs9kxfe4792d482196a50cf9ae0d9d90b6493.ico', 200.00, 0, 1539228527, 0, ''); -INSERT INTO `store_recharge` VALUES (280, 2, 2, 2, '2018101111301854933', 'wxfile://tmp_47519b5898c16810f8e745df1779208d.jpg', 200.00, 0, 1539228618, 0, ''); -INSERT INTO `store_recharge` VALUES (281, 2, 2, 7, '2018101117001959485', 'wxfile://tmp_bdc4fd6dd37c23886b5bfa4579bc6206.jpg', 222.00, 0, 1539248419, 0, ''); -INSERT INTO `store_recharge` VALUES (282, 2, 2, 2, '2018101221330092747', 'wxfile://tmp_79861cf3349cc300460ed02318a258f2.jpg', 188.00, 0, 1539351180, 0, ''); - --- ---------------------------- --- Table structure for store_recharge_methods --- ---------------------------- -DROP TABLE IF EXISTS `store_recharge_methods`; -CREATE TABLE `store_recharge_methods` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '充值方式名称', - `icon` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '图标', - `bank_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '银行名称,type=1才有', - `type` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '充值类型1-银行 2微信 3-支付宝', - `true_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '开户行/微信/支付账户用户姓名', - `account` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '银行账户/微信号/支付宝账户', - `qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '二维码图片,微信与支付宝才有', - `sort` smallint(5) UNSIGNED NULL DEFAULT 0 COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '充值或转账方式表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_recharge_methods --- ---------------------------- -INSERT INTO `store_recharge_methods` VALUES (1, '银行卡', 'https://admin.mijia321.com/static/upload/a7545c0e82713c9b/77136c9c6e7464bc.png', '中国工商银行', 1, '胡鹏', '6222020410017823379', 'http://www.testxcx.com/static/upload/68476a9723d274fa/c269c33cb50405d1.png', 0); -INSERT INTO `store_recharge_methods` VALUES (2, '支付宝', 'https://admin.mijia321.com/static/upload/116fcd8be57b654f/819fa27f2783c6bb.png', '', 3, '胡鹏', 'zhofubao7@qq.com', 'https://admin.mijia321.com/static/upload/f83ef57b64d3144f/4a99cd286d19bc68.png', 2); -INSERT INTO `store_recharge_methods` VALUES (3, '微信', 'https://admin.mijia321.com/static/upload/441cd27dca6547bd/050b68878260fdfd.jpg', '', 2, '胡鹏', '7878wxid_2131231123', 'https://admin.mijia321.com/static/upload/1cc26f0c2b994cbc/3ef1392c3e67ad24.png', 3); - --- ---------------------------- --- Table structure for store_spec --- ---------------------------- -DROP TABLE IF EXISTS `store_spec`; -CREATE TABLE `store_spec` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格表', - `type_id` int(11) NULL DEFAULT 0 COMMENT '规格类型', - `name` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格名称', - `sort` int(11) NULL DEFAULT 50 COMMENT '排序', - `search_index` tinyint(1) NULL DEFAULT 1 COMMENT '是否需要检索:1是,0否', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品规格表(独立)' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_spec --- ---------------------------- -INSERT INTO `store_spec` VALUES (3, 39, '尺寸', 50, 1); -INSERT INTO `store_spec` VALUES (4, 39, '颜色', 50, 1); -INSERT INTO `store_spec` VALUES (5, 40, '内存', 50, 1); - --- ---------------------------- --- Table structure for store_spec_goods_price --- ---------------------------- -DROP TABLE IF EXISTS `store_spec_goods_price`; -CREATE TABLE `store_spec_goods_price` ( - `item_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '规格商品id', - `goods_id` int(11) NULL DEFAULT 0 COMMENT '商品id', - `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '规格键名', - `key_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '规格键名中文', - `price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '价格(供货价格)', - `market_price` double(10, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '零售价格', - `store_count` int(11) UNSIGNED NULL DEFAULT 10 COMMENT '库存数量', - `bar_code` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '商品条形码', - `sku` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'SKU', - `spec_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格商品主图', - `prom_id` int(10) NULL DEFAULT 0 COMMENT '活动id', - `prom_type` tinyint(2) NULL DEFAULT 0 COMMENT '参加活动类型', - PRIMARY KEY (`item_id`) USING BTREE, - INDEX `key`(`key`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 44 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品规格关联价格表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_spec_goods_price --- ---------------------------- -INSERT INTO `store_spec_goods_price` VALUES (12, 5, '6_10', '尺寸:150*120cm 颜色:红色', 110.00, 0.00, 0, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (13, 5, '6_11', '尺寸:150*120cm 颜色:黑色', 120.00, 0.00, 29, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (14, 5, '7_10', '尺寸:200*230cm 颜色:红色', 101.00, 0.00, 54, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (15, 5, '7_11', '尺寸:200*230cm 颜色:黑色', 99.00, 0.00, 98, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (16, 5, '6_10', '尺寸:150*120cm 颜色:红色', 110.00, 0.00, 0, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (17, 5, '6_11', '尺寸:150*120cm 颜色:黑色', 120.00, 0.00, 29, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (18, 5, '7_10', '尺寸:200*230cm 颜色:红色', 101.00, 0.00, 54, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (19, 5, '7_11', '尺寸:200*230cm 颜色:黑色', 99.00, 0.00, 98, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (20, 5, '6_10', '尺寸:150*120cm 颜色:红色', 110.00, 0.00, 0, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (21, 5, '6_11', '尺寸:150*120cm 颜色:黑色', 120.00, 0.00, 29, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (22, 5, '7_10', '尺寸:200*230cm 颜色:红色', 101.00, 0.00, 54, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (23, 5, '7_11', '尺寸:200*230cm 颜色:黑色', 99.00, 0.00, 98, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (26, 6, '6_9', '尺寸:150*120cm 颜色:白色', 123.00, 0.00, 0, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (27, 6, '6_10', '尺寸:150*120cm 颜色:红色', 123.00, 0.00, 0, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (28, 7, '6', '尺寸:150*120cm', 33.00, 0.00, 1, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (29, 7, '7', '尺寸:200*230cm', 33.00, 0.00, 2, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (30, 8, '6_10', '尺寸:150*120cm 颜色:红色', 111.00, 0.00, 6, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (31, 8, '6_11', '尺寸:150*120cm 颜色:黑色', 222.00, 0.00, 7, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (32, 8, '7_10', '尺寸:200*230cm 颜色:红色', 333.00, 0.00, 8, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (33, 8, '7_11', '尺寸:200*230cm 颜色:黑色', 444.00, 0.00, 9, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (39, 9, '6_9', '尺寸:150*120cm,颜色:白色', 99.00, 0.00, 999, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (40, 9, '6_10', '尺寸:150*120cm,颜色:红色', 99.00, 0.00, 99, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (42, 4, '8_10', '尺寸:300*500cm,颜色:红色', 88.00, 888.00, 8888, '', '', NULL, 0, 0); -INSERT INTO `store_spec_goods_price` VALUES (43, 4, '8_11', '尺寸:300*500cm,颜色:黑色', 80.00, 0.00, 790, '', '', NULL, 0, 0); - --- ---------------------------- --- Table structure for store_spec_image --- ---------------------------- -DROP TABLE IF EXISTS `store_spec_image`; -CREATE TABLE `store_spec_image` ( - `goods_id` int(11) NULL DEFAULT 0 COMMENT '商品规格图片表id', - `spec_image_id` int(11) NULL DEFAULT 0 COMMENT '规格项id', - `src` varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '商品规格图片路径' -) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for store_spec_item --- ---------------------------- -DROP TABLE IF EXISTS `store_spec_item`; -CREATE TABLE `store_spec_item` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '规格项id', - `spec_id` int(11) NULL DEFAULT NULL COMMENT '规格id', - `item` varchar(54) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格项', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '规格项' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_spec_item --- ---------------------------- -INSERT INTO `store_spec_item` VALUES (6, 3, '150*120cm'); -INSERT INTO `store_spec_item` VALUES (7, 3, '200*230cm'); -INSERT INTO `store_spec_item` VALUES (8, 3, '300*500cm'); -INSERT INTO `store_spec_item` VALUES (9, 4, '白色'); -INSERT INTO `store_spec_item` VALUES (10, 4, '红色'); -INSERT INTO `store_spec_item` VALUES (11, 4, '黑色'); -INSERT INTO `store_spec_item` VALUES (12, 4, '紫色'); -INSERT INTO `store_spec_item` VALUES (13, 5, '1G'); -INSERT INTO `store_spec_item` VALUES (14, 5, '4G'); -INSERT INTO `store_spec_item` VALUES (15, 5, '8G'); -INSERT INTO `store_spec_item` VALUES (16, 5, '12G'); - --- ---------------------------- --- Table structure for store_substitute --- ---------------------------- -DROP TABLE IF EXISTS `store_substitute`; -CREATE TABLE `store_substitute` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户id', - `username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '收货人姓名', - `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收货手机号', - `city_info` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '城市信息', - `address` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货详细地址', - `product_info` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '产品明细', - `create_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间', - `updated_at` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 59 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代发货表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_substitute --- ---------------------------- -INSERT INTO `store_substitute` VALUES (27, 3, '胡鹏1', '15136175246', '北京市市辖区东城区', '回来了', '啊KKK', 1538033518, NULL); -INSERT INTO `store_substitute` VALUES (28, 3, '胡鹏02', '15136175246', '北京市市辖区东城区', '777', '脾气PSPPS4死g7是', 1538039362, NULL); -INSERT INTO `store_substitute` VALUES (18, 1, '陈星宇01', '15136175249', '河南郑州', '长椿路78号', '777橙色 100*200cm *2', 1536992462, NULL); -INSERT INTO `store_substitute` VALUES (17, 1, '陈星宇', '15136175248', '河南郑州', '长椿路78号', '777橙色 100*200cm *2', 1536992462, NULL); -INSERT INTO `store_substitute` VALUES (16, 1, 'sssss', '15601064107', '北京市市辖区东城区', 'ssd', 'sss', 1536916579, NULL); -INSERT INTO `store_substitute` VALUES (15, 1, '洒水多', '15601064107', '北京市市辖区东城区', '撒大声地所', '所得到的多', 1536916284, NULL); -INSERT INTO `store_substitute` VALUES (58, 7, '经喇嘛', '18818818811', '北京市市辖区东城区', '凝聚力啊', '的,亏你哦', 1539239505, NULL); - --- ---------------------------- --- Table structure for store_substitute_order --- ---------------------------- -DROP TABLE IF EXISTS `store_substitute_order`; -CREATE TABLE `store_substitute_order` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` int(10) NOT NULL DEFAULT 0 COMMENT '用户id', - `sub_ids` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '代发商品关联id 逗号隔开', - `order_sn` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单号', - `shipping_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流名称', - `shipping_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '物流code 单号', - `shipping_price` decimal(6, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '物流费', - `product_price` decimal(8, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '产品总价格', - `order_price` decimal(8, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '订单总价格', - `order_status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '订单状态0-待确认 1-已确认', - `pay_method` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付方式1-微信2-余额3-转账', - `recharge_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '支付方式为转账的转账id', - `pay_status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '支付状态 0-待付款 1-已付款', - `shipping_status` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '发货状态 0-未发货 1-已发货 2-已收货', - `create_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '创建时间', - `pay_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '支付时间', - `shipping_time` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '发货时间', - `is_deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '1:删除,0未删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代发订单' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_substitute_order --- ---------------------------- -INSERT INTO `store_substitute_order` VALUES (2, 1, '4,5', '2018072912103852362', '百世快递', '778512356', 10.00, 200.00, 210.00, 1, 3, 143, 1, 2, 1532837438, 1532837438, 1533217816, 0); -INSERT INTO `store_substitute_order` VALUES (3, 1, '14,13,12,11,10,9,8,7,6', '2018091321552194262', '', '', 10.00, 100.00, 110.00, 1, 0, 0, 0, 0, 1536846921, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (4, 7, '21,20,19', '2018091810490577910', '', '', 20.00, 666.00, 686.00, 1, 0, 0, 0, 0, 1537238945, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (5, 3, '22', '2018092014411541512', '', '', 10.00, 100.00, 110.00, 1, 3, 274, 1, 0, 1537425675, 1539227704, 0, 0); -INSERT INTO `store_substitute_order` VALUES (6, 2, '23', '2018092411084283075', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1537758522, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (7, 2, '24', '2018092411100467284', '', '', 0.00, 100.00, 100.00, 1, 3, 275, 1, 0, 1537758604, 1539227748, 0, 0); -INSERT INTO `store_substitute_order` VALUES (8, 3, '26', '2018092715313531353', '', '', 0.00, 100.00, 100.00, 1, 2, 0, 1, 0, 1538033495, 1539220807, 0, 0); -INSERT INTO `store_substitute_order` VALUES (9, 7, '30,29', '2018092816340841424', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1538123648, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (10, 2, '32,25', '2018100822495787026', '顺丰', '11111111', 0.00, 100.00, 100.00, 1, 2, 0, 1, 1, 1539010197, 1539078194, 1539078236, 0); -INSERT INTO `store_substitute_order` VALUES (11, 2, '33', '2018101109432466008', '', '', 0.00, 10.00, 100.00, 1, 3, 272, 1, 0, 1539222204, 1539225542, 0, 0); -INSERT INTO `store_substitute_order` VALUES (12, 2, '36,35,34', '2018101109452787500', '', '', 0.00, 10.00, 10.00, 1, 3, 271, 1, 0, 1539222327, 1539225110, 0, 0); -INSERT INTO `store_substitute_order` VALUES (13, 2, '37', '2018101109453488107', '', '', 10.00, 100.00, 110.00, 1, 2, 0, 1, 0, 1539222334, 1539222400, 0, 0); -INSERT INTO `store_substitute_order` VALUES (14, 2, '38', '2018101109454090587', '', '', 0.00, 100.00, 100.00, 1, 3, 270, 1, 0, 1539222340, 1539224847, 0, 0); -INSERT INTO `store_substitute_order` VALUES (15, 2, '39', '2018101109454856876', '', '', 0.00, 100.00, 100.00, 1, 3, 269, 1, 0, 1539222348, 1539223033, 0, 0); -INSERT INTO `store_substitute_order` VALUES (16, 2, '40', '2018101109455516933', '', '', 0.00, 100.00, 100.00, 1, 3, 268, 1, 0, 1539222355, 1539222693, 0, 0); -INSERT INTO `store_substitute_order` VALUES (17, 2, '41', '2018101111173056123', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539227850, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (18, 2, '42', '2018101111173945932', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539227859, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (19, 2, '43', '2018101111174868230', '', '', 0.00, 100.00, 100.00, 1, 3, 278, 1, 0, 1539227868, 1539228225, 0, 0); -INSERT INTO `store_substitute_order` VALUES (20, 2, '44', '2018101111190744708', '', '', 0.00, 100.00, 100.00, 1, 3, 277, 1, 0, 1539227947, 1539228148, 0, 0); -INSERT INTO `store_substitute_order` VALUES (21, 2, '45', '2018101111260892418', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228368, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (22, 2, '46', '2018101111261418841', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228374, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (23, 2, '47', '2018101111262114139', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228381, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (24, 2, '48', '2018101111262721285', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228387, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (25, 2, '49', '2018101111263239606', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228392, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (26, 2, '50', '2018101111263996688', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228399, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (27, 2, '51', '2018101111264613029', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228406, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (28, 2, '52', '2018101111265289070', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228412, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (29, 2, '53', '2018101111265824902', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228418, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (30, 2, '54', '2018101111270333844', '', '', 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1539228423, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (31, 2, '55', '2018101111270934101', '', '', 0.00, 100.00, 100.00, 1, 0, 0, 0, 0, 1539228429, 0, 0, 0); -INSERT INTO `store_substitute_order` VALUES (32, 2, '56', '2018101111271497542', '', '', 0.00, 100.00, 100.00, 1, 3, 280, 1, 0, 1539228434, 1539228618, 0, 0); -INSERT INTO `store_substitute_order` VALUES (33, 2, '57', '2018101111271978033', '', '', 0.00, 100.00, 100.00, 1, 3, 279, 1, 0, 1539228439, 1539228527, 0, 0); - --- ---------------------------- --- Table structure for store_substitute_order_goods --- ---------------------------- -DROP TABLE IF EXISTS `store_substitute_order_goods`; -CREATE TABLE `store_substitute_order_goods` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `order_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单id', - `username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '收货人姓名', - `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收货手机号', - `city_info` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '城市信息', - `address` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '收货详细地址', - `product_info` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '产品明细', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代发订单货物表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_substitute_order_goods --- ---------------------------- -INSERT INTO `store_substitute_order_goods` VALUES (4, 2, 'hupeng012', '15136175246', '河南省郑州市', '78Hao ', '777橙色 100*200cm *2'); -INSERT INTO `store_substitute_order_goods` VALUES (5, 2, 'hupeng0123', '15136175246', '河南省郑州市', '78Hao ', '777橙色 100*200cm *2'); -INSERT INTO `store_substitute_order_goods` VALUES (6, 3, '陈星宇', '15136175248', '河南郑州', '长椿路78号', '777橙色 100*200cm *2'); -INSERT INTO `store_substitute_order_goods` VALUES (7, 3, 'hupeng01234', '15136175246', '河南省郑州市', '78Hao ', '777橙色 100*200cm *2'); -INSERT INTO `store_substitute_order_goods` VALUES (8, 3, '陈星宇', '15136175248', '河南郑州', '长椿路78号', '777橙色 100*200cm *2'); -INSERT INTO `store_substitute_order_goods` VALUES (9, 3, 'hupeng', '15136175847', '河南郑州', '工商', '产品'); -INSERT INTO `store_substitute_order_goods` VALUES (10, 3, '111', '15601064107', '北京市市辖区东城区', '洒水多所', '岁数大'); -INSERT INTO `store_substitute_order_goods` VALUES (11, 3, '111', '15601064107', '北京市市辖区东城区', '洒水多所', '岁数大'); -INSERT INTO `store_substitute_order_goods` VALUES (12, 3, '111', '15601064107', '北京市市辖区东城区', '洒水多所', '岁数大'); -INSERT INTO `store_substitute_order_goods` VALUES (13, 3, '111', '15601064107', '北京市市辖区东城区', '洒水多所', '岁数大'); -INSERT INTO `store_substitute_order_goods` VALUES (14, 3, '测试1', '15601010101', '北京市市辖区东城区', 'add1', '#1234 蓝色 180*220cm *1'); -INSERT INTO `store_substitute_order_goods` VALUES (15, 4, '林呵呵', '18888888888', '河北省县延庆县', '11', '13'); -INSERT INTO `store_substitute_order_goods` VALUES (16, 4, '林呵呵', '18888888888', '河北省县延庆县', '11', '12'); -INSERT INTO `store_substitute_order_goods` VALUES (17, 4, '林呵呵', '18888888888', '河北省县延庆县', '11', '11'); -INSERT INTO `store_substitute_order_goods` VALUES (18, 5, '胡鹏', '15136175246', '北京市市辖区东城区', '44号', '产品'); -INSERT INTO `store_substitute_order_goods` VALUES (19, 6, 'gao', '15601064107', '北京市市辖区东城区', '1111', '111'); -INSERT INTO `store_substitute_order_goods` VALUES (20, 7, '1222', '15601064107', '北京市市辖区东城区', '12', '1222'); -INSERT INTO `store_substitute_order_goods` VALUES (21, 8, '胡鹏', '15136175246', '北京市市辖区东城区', '回来了', '啊KKK'); -INSERT INTO `store_substitute_order_goods` VALUES (22, 9, '来来来', '18888888888', '北京市市辖区东城区', '健健康康快乐', '阿丽坤'); -INSERT INTO `store_substitute_order_goods` VALUES (23, 9, '来来来', '18888888885', '北京市市辖区东城区', '健健康康快乐', '阿丽坤'); -INSERT INTO `store_substitute_order_goods` VALUES (24, 10, '1', '15601064107', '北京市市辖区东城区', '1', '1'); -INSERT INTO `store_substitute_order_goods` VALUES (25, 10, '我的名字', '15601064107', '北京市市辖区东城区', '岁数大', '123'); -INSERT INTO `store_substitute_order_goods` VALUES (26, 11, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (27, 12, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (28, 12, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (29, 12, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (30, 13, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (31, 14, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (32, 15, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (33, 16, '11111111', '15601064107', '北京市市辖区东城区', 'q', 'w'); -INSERT INTO `store_substitute_order_goods` VALUES (34, 17, '1', '15601064107', '北京市市辖区东城区', '2222', 'qqww'); -INSERT INTO `store_substitute_order_goods` VALUES (35, 18, '1', '15601064107', '北京市市辖区东城区', '2222', 'qqww'); -INSERT INTO `store_substitute_order_goods` VALUES (36, 19, '1', '15601064107', '北京市市辖区东城区', '2222', 'qqww'); -INSERT INTO `store_substitute_order_goods` VALUES (37, 20, '1', '15601064107', '北京市市辖区东城区', '2222', 'qqww'); -INSERT INTO `store_substitute_order_goods` VALUES (38, 21, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (39, 22, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (40, 23, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (41, 24, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (42, 25, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (43, 26, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (44, 27, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (45, 28, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (46, 29, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (47, 30, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (48, 31, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (49, 32, '1', '15601010101', '北京市市辖区东城区', '222', '222'); -INSERT INTO `store_substitute_order_goods` VALUES (50, 33, '1', '15601010101', '北京市市辖区东城区', '222', '222'); - --- ---------------------------- --- Table structure for store_user_level --- ---------------------------- -DROP TABLE IF EXISTS `store_user_level`; -CREATE TABLE `store_user_level` ( - `level_id` smallint(4) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '表id', - `level_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头衔名称', - `amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '等级必要金额', - `discount` smallint(4) NULL DEFAULT 0 COMMENT '折扣', - `describe` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头街 描述', - PRIMARY KEY (`level_id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户等级表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of store_user_level --- ---------------------------- -INSERT INTO `store_user_level` VALUES (1, '注册会员', 100.00, 0, '注册会员'); -INSERT INTO `store_user_level` VALUES (2, '铜牌会员', 1000.00, 98, '铜牌会员'); -INSERT INTO `store_user_level` VALUES (3, '白银会员', 3000.00, 95, '白银会员'); -INSERT INTO `store_user_level` VALUES (4, '黄金会员', 5000.00, 92, '黄金会员'); -INSERT INTO `store_user_level` VALUES (5, '钻石会员', 10000.00, 90, '钻石会员'); -INSERT INTO `store_user_level` VALUES (6, '超级VIP', 20000.00, 88, '超级VIP'); - --- ---------------------------- --- Table structure for sys_config --- ---------------------------- -DROP TABLE IF EXISTS `sys_config`; -CREATE TABLE `sys_config` ( - `config_id` int(5) NOT NULL AUTO_INCREMENT COMMENT '参数主键', - `config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数名称', - `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数键名', - `config_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数键值', - `config_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'N' COMMENT '系统内置(Y是 N否)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`config_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '参数配置表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_config --- ---------------------------- -INSERT INTO `sys_config` VALUES (1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'); -INSERT INTO `sys_config` VALUES (2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '初始化密码 123456'); -INSERT INTO `sys_config` VALUES (3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '深色主题theme-dark,浅色主题theme-light'); - --- ---------------------------- --- Table structure for sys_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_dept`; -CREATE TABLE `sys_dept` ( - `dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id', - `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父部门id', - `ancestors` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '祖级列表', - `dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '部门名称', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', - `leader` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '负责人', - `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话', - `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '部门状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`dept_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 110 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dept --- ---------------------------- -INSERT INTO `sys_dept` VALUES (100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); -INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00'); - --- ---------------------------- --- Table structure for sys_dict_data --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_data`; -CREATE TABLE `sys_dict_data` ( - `dict_code` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典编码', - `dict_sort` int(4) NULL DEFAULT 0 COMMENT '字典排序', - `dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典标签', - `dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典键值', - `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典类型', - `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)', - `list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表格回显样式', - `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_data --- ---------------------------- -INSERT INTO `sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '性别男'); -INSERT INTO `sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '性别女'); -INSERT INTO `sys_dict_data` VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '性别未知'); -INSERT INTO `sys_dict_data` VALUES (4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '显示菜单'); -INSERT INTO `sys_dict_data` VALUES (5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '隐藏菜单'); -INSERT INTO `sys_dict_data` VALUES (6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '正常状态'); -INSERT INTO `sys_dict_data` VALUES (7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '停用状态'); -INSERT INTO `sys_dict_data` VALUES (8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '正常状态'); -INSERT INTO `sys_dict_data` VALUES (9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '停用状态'); -INSERT INTO `sys_dict_data` VALUES (10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '默认分组'); -INSERT INTO `sys_dict_data` VALUES (11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统分组'); -INSERT INTO `sys_dict_data` VALUES (12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统默认是'); -INSERT INTO `sys_dict_data` VALUES (13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统默认否'); -INSERT INTO `sys_dict_data` VALUES (14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '通知'); -INSERT INTO `sys_dict_data` VALUES (15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '公告'); -INSERT INTO `sys_dict_data` VALUES (16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '正常状态'); -INSERT INTO `sys_dict_data` VALUES (17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '关闭状态'); -INSERT INTO `sys_dict_data` VALUES (18, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '新增操作'); -INSERT INTO `sys_dict_data` VALUES (19, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '修改操作'); -INSERT INTO `sys_dict_data` VALUES (20, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '删除操作'); -INSERT INTO `sys_dict_data` VALUES (21, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '授权操作'); -INSERT INTO `sys_dict_data` VALUES (22, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '导出操作'); -INSERT INTO `sys_dict_data` VALUES (23, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '导入操作'); -INSERT INTO `sys_dict_data` VALUES (24, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '强退操作'); -INSERT INTO `sys_dict_data` VALUES (25, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '生成操作'); -INSERT INTO `sys_dict_data` VALUES (26, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '清空操作'); -INSERT INTO `sys_dict_data` VALUES (27, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '正常状态'); -INSERT INTO `sys_dict_data` VALUES (28, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '停用状态'); - --- ---------------------------- --- Table structure for sys_dict_type --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_type`; -CREATE TABLE `sys_dict_type` ( - `dict_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典主键', - `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典名称', - `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典类型', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_id`) USING BTREE, - UNIQUE INDEX `dict_type`(`dict_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_type --- ---------------------------- -INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '用户性别列表'); -INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '菜单状态列表'); -INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统开关列表'); -INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '任务状态列表'); -INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '任务分组列表'); -INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统是否列表'); -INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '通知类型列表'); -INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '通知状态列表'); -INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '操作类型列表'); -INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '登录状态列表'); - --- ---------------------------- --- Table structure for sys_job --- ---------------------------- -DROP TABLE IF EXISTS `sys_job`; -CREATE TABLE `sys_job` ( - `job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID', - `job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调用目标字符串', - `cron_expression` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'cron执行表达式', - `misfire_policy` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '3' COMMENT '计划执行错误策略(1立即执行 2执行一次 3放弃执行)', - `concurrent` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '是否并发执行(0允许 1禁止)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1暂停)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注信息', - PRIMARY KEY (`job_id`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务调度表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_job --- ---------------------------- -INSERT INTO `sys_job` VALUES (1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_job` VALUES (2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_job` VALUES (3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); - --- ---------------------------- --- Table structure for sys_job_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_job_log`; -CREATE TABLE `sys_job_log` ( - `job_log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志ID', - `job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调用目标字符串', - `job_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '日志信息', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '执行状态(0正常 1失败)', - `exception_info` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '异常信息', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`job_log_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务调度日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for sys_logininfor --- ---------------------------- -DROP TABLE IF EXISTS `sys_logininfor`; -CREATE TABLE `sys_logininfor` ( - `info_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '访问ID', - `login_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录账号', - `ipaddr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录IP地址', - `login_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录地点', - `browser` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '浏览器类型', - `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作系统', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '登录状态(0成功 1失败)', - `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '提示消息', - `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间', - PRIMARY KEY (`info_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 446 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_logininfor --- ---------------------------- -INSERT INTO `sys_logininfor` VALUES (100, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2019-08-14 17:13:14'); -INSERT INTO `sys_logininfor` VALUES (101, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2019-08-14 17:13:41'); -INSERT INTO `sys_logininfor` VALUES (102, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-14 17:14:00'); -INSERT INTO `sys_logininfor` VALUES (103, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2019-08-21 16:33:26'); -INSERT INTO `sys_logininfor` VALUES (104, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-21 16:33:40'); -INSERT INTO `sys_logininfor` VALUES (105, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-22 09:46:17'); -INSERT INTO `sys_logininfor` VALUES (106, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-22 10:04:10'); -INSERT INTO `sys_logininfor` VALUES (107, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2019-08-22 10:28:28'); -INSERT INTO `sys_logininfor` VALUES (108, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2019-08-22 10:34:50'); -INSERT INTO `sys_logininfor` VALUES (109, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-22 10:36:54'); -INSERT INTO `sys_logininfor` VALUES (110, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-22 11:09:08'); -INSERT INTO `sys_logininfor` VALUES (111, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:39:39'); -INSERT INTO `sys_logininfor` VALUES (112, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:46:01'); -INSERT INTO `sys_logininfor` VALUES (113, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:48:12'); -INSERT INTO `sys_logininfor` VALUES (114, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:49:02'); -INSERT INTO `sys_logininfor` VALUES (115, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:51:46'); -INSERT INTO `sys_logininfor` VALUES (116, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:57:52'); -INSERT INTO `sys_logininfor` VALUES (117, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 16:59:05'); -INSERT INTO `sys_logininfor` VALUES (118, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:02:10'); -INSERT INTO `sys_logininfor` VALUES (119, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:05:35'); -INSERT INTO `sys_logininfor` VALUES (120, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:16:43'); -INSERT INTO `sys_logininfor` VALUES (121, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:24:14'); -INSERT INTO `sys_logininfor` VALUES (122, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:28:18'); -INSERT INTO `sys_logininfor` VALUES (123, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:34:45'); -INSERT INTO `sys_logininfor` VALUES (124, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:37:02'); -INSERT INTO `sys_logininfor` VALUES (125, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:38:43'); -INSERT INTO `sys_logininfor` VALUES (126, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:44:06'); -INSERT INTO `sys_logininfor` VALUES (127, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:48:07'); -INSERT INTO `sys_logininfor` VALUES (128, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 17:50:10'); -INSERT INTO `sys_logininfor` VALUES (129, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:02:44'); -INSERT INTO `sys_logininfor` VALUES (130, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:06:07'); -INSERT INTO `sys_logininfor` VALUES (131, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:08:27'); -INSERT INTO `sys_logininfor` VALUES (132, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:14:50'); -INSERT INTO `sys_logininfor` VALUES (133, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:17:26'); -INSERT INTO `sys_logininfor` VALUES (134, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:19:01'); -INSERT INTO `sys_logininfor` VALUES (135, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:30:58'); -INSERT INTO `sys_logininfor` VALUES (136, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:33:00'); -INSERT INTO `sys_logininfor` VALUES (137, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:37:00'); -INSERT INTO `sys_logininfor` VALUES (138, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:38:21'); -INSERT INTO `sys_logininfor` VALUES (139, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-23 18:40:17'); -INSERT INTO `sys_logininfor` VALUES (140, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 14:13:59'); -INSERT INTO `sys_logininfor` VALUES (141, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 14:27:37'); -INSERT INTO `sys_logininfor` VALUES (142, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 14:38:47'); -INSERT INTO `sys_logininfor` VALUES (143, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 14:58:38'); -INSERT INTO `sys_logininfor` VALUES (144, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:25:41'); -INSERT INTO `sys_logininfor` VALUES (145, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:28:39'); -INSERT INTO `sys_logininfor` VALUES (146, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:33:25'); -INSERT INTO `sys_logininfor` VALUES (147, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:45:45'); -INSERT INTO `sys_logininfor` VALUES (148, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:47:30'); -INSERT INTO `sys_logininfor` VALUES (149, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:48:33'); -INSERT INTO `sys_logininfor` VALUES (150, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 15:59:34'); -INSERT INTO `sys_logininfor` VALUES (151, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 16:00:18'); -INSERT INTO `sys_logininfor` VALUES (152, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 16:02:08'); -INSERT INTO `sys_logininfor` VALUES (153, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 16:03:29'); -INSERT INTO `sys_logininfor` VALUES (154, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 16:10:32'); -INSERT INTO `sys_logininfor` VALUES (155, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:25:45'); -INSERT INTO `sys_logininfor` VALUES (156, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:27:50'); -INSERT INTO `sys_logininfor` VALUES (157, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:30:28'); -INSERT INTO `sys_logininfor` VALUES (158, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:33:20'); -INSERT INTO `sys_logininfor` VALUES (159, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:35:17'); -INSERT INTO `sys_logininfor` VALUES (160, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-24 17:46:51'); -INSERT INTO `sys_logininfor` VALUES (161, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 09:33:47'); -INSERT INTO `sys_logininfor` VALUES (162, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 10:03:45'); -INSERT INTO `sys_logininfor` VALUES (163, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 11:01:14'); -INSERT INTO `sys_logininfor` VALUES (164, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 11:39:54'); -INSERT INTO `sys_logininfor` VALUES (165, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 11:46:33'); -INSERT INTO `sys_logininfor` VALUES (166, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 11:50:42'); -INSERT INTO `sys_logininfor` VALUES (167, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 11:54:42'); -INSERT INTO `sys_logininfor` VALUES (168, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 12:02:58'); -INSERT INTO `sys_logininfor` VALUES (169, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 12:09:03'); -INSERT INTO `sys_logininfor` VALUES (170, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 13:58:11'); -INSERT INTO `sys_logininfor` VALUES (171, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 14:21:19'); -INSERT INTO `sys_logininfor` VALUES (172, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:01:53'); -INSERT INTO `sys_logininfor` VALUES (173, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:09:03'); -INSERT INTO `sys_logininfor` VALUES (174, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:15:16'); -INSERT INTO `sys_logininfor` VALUES (175, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:20:48'); -INSERT INTO `sys_logininfor` VALUES (176, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:21:36'); -INSERT INTO `sys_logininfor` VALUES (177, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:23:46'); -INSERT INTO `sys_logininfor` VALUES (178, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:24:36'); -INSERT INTO `sys_logininfor` VALUES (179, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:32:13'); -INSERT INTO `sys_logininfor` VALUES (180, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:34:06'); -INSERT INTO `sys_logininfor` VALUES (181, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:38:59'); -INSERT INTO `sys_logininfor` VALUES (182, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:45:51'); -INSERT INTO `sys_logininfor` VALUES (183, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:51:54'); -INSERT INTO `sys_logininfor` VALUES (184, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 15:56:23'); -INSERT INTO `sys_logininfor` VALUES (185, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:00:45'); -INSERT INTO `sys_logininfor` VALUES (186, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:04:21'); -INSERT INTO `sys_logininfor` VALUES (187, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:24:20'); -INSERT INTO `sys_logininfor` VALUES (188, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:26:10'); -INSERT INTO `sys_logininfor` VALUES (189, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:32:44'); -INSERT INTO `sys_logininfor` VALUES (190, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:33:58'); -INSERT INTO `sys_logininfor` VALUES (191, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:39:07'); -INSERT INTO `sys_logininfor` VALUES (192, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:42:52'); -INSERT INTO `sys_logininfor` VALUES (193, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:48:50'); -INSERT INTO `sys_logininfor` VALUES (194, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 16:50:35'); -INSERT INTO `sys_logininfor` VALUES (195, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 17:27:43'); -INSERT INTO `sys_logininfor` VALUES (196, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 17:29:08'); -INSERT INTO `sys_logininfor` VALUES (197, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 17:38:47'); -INSERT INTO `sys_logininfor` VALUES (198, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 17:47:03'); -INSERT INTO `sys_logininfor` VALUES (199, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 17:48:45'); -INSERT INTO `sys_logininfor` VALUES (200, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 18:06:09'); -INSERT INTO `sys_logininfor` VALUES (201, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-25 18:08:38'); -INSERT INTO `sys_logininfor` VALUES (202, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 13:23:58'); -INSERT INTO `sys_logininfor` VALUES (203, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:16:05'); -INSERT INTO `sys_logininfor` VALUES (204, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:18:42'); -INSERT INTO `sys_logininfor` VALUES (205, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:25:06'); -INSERT INTO `sys_logininfor` VALUES (206, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:49:59'); -INSERT INTO `sys_logininfor` VALUES (207, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:53:36'); -INSERT INTO `sys_logininfor` VALUES (208, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:55:10'); -INSERT INTO `sys_logininfor` VALUES (209, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 14:59:00'); -INSERT INTO `sys_logininfor` VALUES (210, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 15:02:23'); -INSERT INTO `sys_logininfor` VALUES (211, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 15:04:02'); -INSERT INTO `sys_logininfor` VALUES (212, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 16:26:50'); -INSERT INTO `sys_logininfor` VALUES (213, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 16:30:02'); -INSERT INTO `sys_logininfor` VALUES (214, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 16:33:20'); -INSERT INTO `sys_logininfor` VALUES (215, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 16:49:02'); -INSERT INTO `sys_logininfor` VALUES (216, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 16:57:10'); -INSERT INTO `sys_logininfor` VALUES (217, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:00:49'); -INSERT INTO `sys_logininfor` VALUES (218, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:02:04'); -INSERT INTO `sys_logininfor` VALUES (219, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:03:30'); -INSERT INTO `sys_logininfor` VALUES (220, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:07:37'); -INSERT INTO `sys_logininfor` VALUES (221, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:19:45'); -INSERT INTO `sys_logininfor` VALUES (222, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:21:43'); -INSERT INTO `sys_logininfor` VALUES (223, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:25:40'); -INSERT INTO `sys_logininfor` VALUES (224, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:31:16'); -INSERT INTO `sys_logininfor` VALUES (225, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:43:55'); -INSERT INTO `sys_logininfor` VALUES (226, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:46:31'); -INSERT INTO `sys_logininfor` VALUES (227, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:51:56'); -INSERT INTO `sys_logininfor` VALUES (228, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:56:47'); -INSERT INTO `sys_logininfor` VALUES (229, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 17:59:41'); -INSERT INTO `sys_logininfor` VALUES (230, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:01:03'); -INSERT INTO `sys_logininfor` VALUES (231, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:08:17'); -INSERT INTO `sys_logininfor` VALUES (232, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:09:19'); -INSERT INTO `sys_logininfor` VALUES (233, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:11:28'); -INSERT INTO `sys_logininfor` VALUES (234, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:14:08'); -INSERT INTO `sys_logininfor` VALUES (235, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 18:16:14'); -INSERT INTO `sys_logininfor` VALUES (236, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 19:28:06'); -INSERT INTO `sys_logininfor` VALUES (237, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 19:41:15'); -INSERT INTO `sys_logininfor` VALUES (238, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 19:46:39'); -INSERT INTO `sys_logininfor` VALUES (239, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 19:53:00'); -INSERT INTO `sys_logininfor` VALUES (240, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 20:01:05'); -INSERT INTO `sys_logininfor` VALUES (241, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 20:04:07'); -INSERT INTO `sys_logininfor` VALUES (242, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-26 20:05:20'); -INSERT INTO `sys_logininfor` VALUES (243, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 14:18:31'); -INSERT INTO `sys_logininfor` VALUES (244, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 15:34:17'); -INSERT INTO `sys_logininfor` VALUES (245, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 15:45:25'); -INSERT INTO `sys_logininfor` VALUES (246, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 15:48:31'); -INSERT INTO `sys_logininfor` VALUES (247, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 16:02:46'); -INSERT INTO `sys_logininfor` VALUES (248, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 16:04:55'); -INSERT INTO `sys_logininfor` VALUES (249, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 16:18:21'); -INSERT INTO `sys_logininfor` VALUES (250, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 16:22:28'); -INSERT INTO `sys_logininfor` VALUES (251, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 16:24:15'); -INSERT INTO `sys_logininfor` VALUES (252, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:02:57'); -INSERT INTO `sys_logininfor` VALUES (253, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:04:35'); -INSERT INTO `sys_logininfor` VALUES (254, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:09:59'); -INSERT INTO `sys_logininfor` VALUES (255, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:11:10'); -INSERT INTO `sys_logininfor` VALUES (256, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:14:31'); -INSERT INTO `sys_logininfor` VALUES (257, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:16:28'); -INSERT INTO `sys_logininfor` VALUES (258, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:21:27'); -INSERT INTO `sys_logininfor` VALUES (259, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:29:55'); -INSERT INTO `sys_logininfor` VALUES (260, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:39:23'); -INSERT INTO `sys_logininfor` VALUES (261, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:46:53'); -INSERT INTO `sys_logininfor` VALUES (262, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:49:12'); -INSERT INTO `sys_logininfor` VALUES (263, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:52:16'); -INSERT INTO `sys_logininfor` VALUES (264, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:52:20'); -INSERT INTO `sys_logininfor` VALUES (265, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 17:54:51'); -INSERT INTO `sys_logininfor` VALUES (266, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:08:39'); -INSERT INTO `sys_logininfor` VALUES (267, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:20:10'); -INSERT INTO `sys_logininfor` VALUES (268, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:24:54'); -INSERT INTO `sys_logininfor` VALUES (269, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:29:25'); -INSERT INTO `sys_logininfor` VALUES (270, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:40:53'); -INSERT INTO `sys_logininfor` VALUES (271, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:42:38'); -INSERT INTO `sys_logininfor` VALUES (272, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:44:42'); -INSERT INTO `sys_logininfor` VALUES (273, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:46:45'); -INSERT INTO `sys_logininfor` VALUES (274, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:49:02'); -INSERT INTO `sys_logininfor` VALUES (275, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 18:51:15'); -INSERT INTO `sys_logininfor` VALUES (276, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:04:08'); -INSERT INTO `sys_logininfor` VALUES (277, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:06:16'); -INSERT INTO `sys_logininfor` VALUES (278, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:12:54'); -INSERT INTO `sys_logininfor` VALUES (279, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:19:40'); -INSERT INTO `sys_logininfor` VALUES (280, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:28:28'); -INSERT INTO `sys_logininfor` VALUES (281, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:33:31'); -INSERT INTO `sys_logininfor` VALUES (282, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:36:03'); -INSERT INTO `sys_logininfor` VALUES (283, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-27 19:36:56'); -INSERT INTO `sys_logininfor` VALUES (284, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 09:21:45'); -INSERT INTO `sys_logininfor` VALUES (285, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 09:29:18'); -INSERT INTO `sys_logininfor` VALUES (286, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 09:33:18'); -INSERT INTO `sys_logininfor` VALUES (287, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 09:43:07'); -INSERT INTO `sys_logininfor` VALUES (288, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 09:47:20'); -INSERT INTO `sys_logininfor` VALUES (289, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 10:40:22'); -INSERT INTO `sys_logininfor` VALUES (290, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 10:56:56'); -INSERT INTO `sys_logininfor` VALUES (291, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:00:35'); -INSERT INTO `sys_logininfor` VALUES (292, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:14:35'); -INSERT INTO `sys_logininfor` VALUES (293, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:16:42'); -INSERT INTO `sys_logininfor` VALUES (294, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:20:37'); -INSERT INTO `sys_logininfor` VALUES (295, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:28:45'); -INSERT INTO `sys_logininfor` VALUES (296, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 11:29:32'); -INSERT INTO `sys_logininfor` VALUES (297, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 14:15:41'); -INSERT INTO `sys_logininfor` VALUES (298, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 14:57:22'); -INSERT INTO `sys_logininfor` VALUES (299, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 15:22:48'); -INSERT INTO `sys_logininfor` VALUES (300, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 15:26:30'); -INSERT INTO `sys_logininfor` VALUES (301, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 15:27:23'); -INSERT INTO `sys_logininfor` VALUES (302, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:03:29'); -INSERT INTO `sys_logininfor` VALUES (303, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:16:39'); -INSERT INTO `sys_logininfor` VALUES (304, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:21:48'); -INSERT INTO `sys_logininfor` VALUES (305, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:23:24'); -INSERT INTO `sys_logininfor` VALUES (306, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:26:18'); -INSERT INTO `sys_logininfor` VALUES (307, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:28:48'); -INSERT INTO `sys_logininfor` VALUES (308, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:45:43'); -INSERT INTO `sys_logininfor` VALUES (309, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:47:18'); -INSERT INTO `sys_logininfor` VALUES (310, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:53:36'); -INSERT INTO `sys_logininfor` VALUES (311, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:56:04'); -INSERT INTO `sys_logininfor` VALUES (312, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 16:59:32'); -INSERT INTO `sys_logininfor` VALUES (313, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:02:16'); -INSERT INTO `sys_logininfor` VALUES (314, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:05:20'); -INSERT INTO `sys_logininfor` VALUES (315, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:13:56'); -INSERT INTO `sys_logininfor` VALUES (316, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:17:43'); -INSERT INTO `sys_logininfor` VALUES (317, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:21:47'); -INSERT INTO `sys_logininfor` VALUES (318, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:25:37'); -INSERT INTO `sys_logininfor` VALUES (319, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:39:19'); -INSERT INTO `sys_logininfor` VALUES (320, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 17:46:57'); -INSERT INTO `sys_logininfor` VALUES (321, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:02:50'); -INSERT INTO `sys_logininfor` VALUES (322, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:06:20'); -INSERT INTO `sys_logininfor` VALUES (323, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:07:54'); -INSERT INTO `sys_logininfor` VALUES (324, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:11:20'); -INSERT INTO `sys_logininfor` VALUES (325, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:20:27'); -INSERT INTO `sys_logininfor` VALUES (326, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:23:56'); -INSERT INTO `sys_logininfor` VALUES (327, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:37:18'); -INSERT INTO `sys_logininfor` VALUES (328, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:43:37'); -INSERT INTO `sys_logininfor` VALUES (329, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 18:57:43'); -INSERT INTO `sys_logininfor` VALUES (330, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:00:59'); -INSERT INTO `sys_logininfor` VALUES (331, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:03:56'); -INSERT INTO `sys_logininfor` VALUES (332, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:10:52'); -INSERT INTO `sys_logininfor` VALUES (333, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:12:34'); -INSERT INTO `sys_logininfor` VALUES (334, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:29:36'); -INSERT INTO `sys_logininfor` VALUES (335, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:33:33'); -INSERT INTO `sys_logininfor` VALUES (336, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:36:30'); -INSERT INTO `sys_logininfor` VALUES (337, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:38:26'); -INSERT INTO `sys_logininfor` VALUES (338, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:40:29'); -INSERT INTO `sys_logininfor` VALUES (339, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:42:58'); -INSERT INTO `sys_logininfor` VALUES (340, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:46:48'); -INSERT INTO `sys_logininfor` VALUES (341, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:49:54'); -INSERT INTO `sys_logininfor` VALUES (342, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:51:44'); -INSERT INTO `sys_logininfor` VALUES (343, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:53:24'); -INSERT INTO `sys_logininfor` VALUES (344, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:56:01'); -INSERT INTO `sys_logininfor` VALUES (345, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:57:28'); -INSERT INTO `sys_logininfor` VALUES (346, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 19:59:02'); -INSERT INTO `sys_logininfor` VALUES (347, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:00:04'); -INSERT INTO `sys_logininfor` VALUES (348, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:02:11'); -INSERT INTO `sys_logininfor` VALUES (349, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:02:52'); -INSERT INTO `sys_logininfor` VALUES (350, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:04:18'); -INSERT INTO `sys_logininfor` VALUES (351, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:05:21'); -INSERT INTO `sys_logininfor` VALUES (352, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:06:45'); -INSERT INTO `sys_logininfor` VALUES (353, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:07:54'); -INSERT INTO `sys_logininfor` VALUES (354, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:08:55'); -INSERT INTO `sys_logininfor` VALUES (355, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:09:49'); -INSERT INTO `sys_logininfor` VALUES (356, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-28 20:10:45'); -INSERT INTO `sys_logininfor` VALUES (357, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 14:51:31'); -INSERT INTO `sys_logininfor` VALUES (358, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:07:31'); -INSERT INTO `sys_logininfor` VALUES (359, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:12:32'); -INSERT INTO `sys_logininfor` VALUES (360, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:14:43'); -INSERT INTO `sys_logininfor` VALUES (361, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:17:50'); -INSERT INTO `sys_logininfor` VALUES (362, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:20:46'); -INSERT INTO `sys_logininfor` VALUES (363, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 15:40:27'); -INSERT INTO `sys_logininfor` VALUES (364, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:06:46'); -INSERT INTO `sys_logininfor` VALUES (365, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:13:53'); -INSERT INTO `sys_logininfor` VALUES (366, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:16:20'); -INSERT INTO `sys_logininfor` VALUES (367, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:24:59'); -INSERT INTO `sys_logininfor` VALUES (368, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:29:03'); -INSERT INTO `sys_logininfor` VALUES (369, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:34:56'); -INSERT INTO `sys_logininfor` VALUES (370, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:40:13'); -INSERT INTO `sys_logininfor` VALUES (371, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:45:58'); -INSERT INTO `sys_logininfor` VALUES (372, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 16:52:40'); -INSERT INTO `sys_logininfor` VALUES (373, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 17:05:42'); -INSERT INTO `sys_logininfor` VALUES (374, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 17:06:57'); -INSERT INTO `sys_logininfor` VALUES (375, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 17:23:34'); -INSERT INTO `sys_logininfor` VALUES (376, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 17:44:43'); -INSERT INTO `sys_logininfor` VALUES (377, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 17:49:39'); -INSERT INTO `sys_logininfor` VALUES (378, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 18:10:24'); -INSERT INTO `sys_logininfor` VALUES (379, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 18:19:19'); -INSERT INTO `sys_logininfor` VALUES (380, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 18:21:10'); -INSERT INTO `sys_logininfor` VALUES (381, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:04:57'); -INSERT INTO `sys_logininfor` VALUES (382, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:08:30'); -INSERT INTO `sys_logininfor` VALUES (383, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:12:14'); -INSERT INTO `sys_logininfor` VALUES (384, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:15:06'); -INSERT INTO `sys_logininfor` VALUES (385, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:34:39'); -INSERT INTO `sys_logininfor` VALUES (386, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:38:36'); -INSERT INTO `sys_logininfor` VALUES (387, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:44:15'); -INSERT INTO `sys_logininfor` VALUES (388, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-29 19:58:35'); -INSERT INTO `sys_logininfor` VALUES (389, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 09:36:11'); -INSERT INTO `sys_logininfor` VALUES (390, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 09:48:29'); -INSERT INTO `sys_logininfor` VALUES (391, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 09:53:47'); -INSERT INTO `sys_logininfor` VALUES (392, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 09:56:21'); -INSERT INTO `sys_logininfor` VALUES (393, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 10:17:56'); -INSERT INTO `sys_logininfor` VALUES (394, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 10:25:02'); -INSERT INTO `sys_logininfor` VALUES (395, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 10:34:29'); -INSERT INTO `sys_logininfor` VALUES (396, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 10:36:18'); -INSERT INTO `sys_logininfor` VALUES (397, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 10:41:54'); -INSERT INTO `sys_logininfor` VALUES (398, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 11:33:26'); -INSERT INTO `sys_logininfor` VALUES (399, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:23:29'); -INSERT INTO `sys_logininfor` VALUES (400, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:27:28'); -INSERT INTO `sys_logininfor` VALUES (401, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:30:33'); -INSERT INTO `sys_logininfor` VALUES (402, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:32:15'); -INSERT INTO `sys_logininfor` VALUES (403, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:35:21'); -INSERT INTO `sys_logininfor` VALUES (404, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 13:38:12'); -INSERT INTO `sys_logininfor` VALUES (405, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:16:57'); -INSERT INTO `sys_logininfor` VALUES (406, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:19:46'); -INSERT INTO `sys_logininfor` VALUES (407, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:21:34'); -INSERT INTO `sys_logininfor` VALUES (408, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:24:10'); -INSERT INTO `sys_logininfor` VALUES (409, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:24:57'); -INSERT INTO `sys_logininfor` VALUES (410, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:26:07'); -INSERT INTO `sys_logininfor` VALUES (411, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:38:03'); -INSERT INTO `sys_logininfor` VALUES (412, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:45:50'); -INSERT INTO `sys_logininfor` VALUES (413, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:54:01'); -INSERT INTO `sys_logininfor` VALUES (414, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 14:59:55'); -INSERT INTO `sys_logininfor` VALUES (415, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 15:45:12'); -INSERT INTO `sys_logininfor` VALUES (416, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 15:47:37'); -INSERT INTO `sys_logininfor` VALUES (417, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:01:00'); -INSERT INTO `sys_logininfor` VALUES (418, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:02:22'); -INSERT INTO `sys_logininfor` VALUES (419, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:08:35'); -INSERT INTO `sys_logininfor` VALUES (420, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:13:20'); -INSERT INTO `sys_logininfor` VALUES (421, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:14:50'); -INSERT INTO `sys_logininfor` VALUES (422, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:18:13'); -INSERT INTO `sys_logininfor` VALUES (423, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:30:59'); -INSERT INTO `sys_logininfor` VALUES (424, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 16:32:07'); -INSERT INTO `sys_logininfor` VALUES (425, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-08-30 17:21:30'); -INSERT INTO `sys_logininfor` VALUES (426, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-16 17:22:52'); -INSERT INTO `sys_logininfor` VALUES (427, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-16 17:25:37'); -INSERT INTO `sys_logininfor` VALUES (428, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-16 17:27:33'); -INSERT INTO `sys_logininfor` VALUES (429, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-23 15:41:59'); -INSERT INTO `sys_logininfor` VALUES (430, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-23 15:45:33'); -INSERT INTO `sys_logininfor` VALUES (431, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-23 15:56:35'); -INSERT INTO `sys_logininfor` VALUES (432, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2019-09-23 16:47:42'); -INSERT INTO `sys_logininfor` VALUES (433, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-07 15:11:05'); -INSERT INTO `sys_logininfor` VALUES (434, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-07 15:14:26'); -INSERT INTO `sys_logininfor` VALUES (435, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-07 15:14:31'); -INSERT INTO `sys_logininfor` VALUES (436, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-07 15:14:36'); -INSERT INTO `sys_logininfor` VALUES (437, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-07 15:14:40'); -INSERT INTO `sys_logininfor` VALUES (438, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-18 15:09:24'); -INSERT INTO `sys_logininfor` VALUES (439, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-18 16:53:15'); -INSERT INTO `sys_logininfor` VALUES (440, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-18 16:53:20'); -INSERT INTO `sys_logininfor` VALUES (441, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-18 16:55:13'); -INSERT INTO `sys_logininfor` VALUES (442, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '1', '验证码错误', '2021-06-18 16:55:19'); -INSERT INTO `sys_logininfor` VALUES (443, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-18 16:55:24'); -INSERT INTO `sys_logininfor` VALUES (444, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-18 16:58:46'); -INSERT INTO `sys_logininfor` VALUES (445, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', '0', '登录成功', '2021-06-18 17:06:15'); - --- ---------------------------- --- Table structure for sys_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_menu`; -CREATE TABLE `sys_menu` ( - `menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', - `menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', - `parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父菜单ID', - `order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序', - `url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '#' COMMENT '请求地址', - `target` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '打开方式(menuItem页签 menuBlank新窗口)', - `menu_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)', - `visible` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', - `is_refresh` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1', - `perms` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限标识', - `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '#' COMMENT '菜单图标', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注', - PRIMARY KEY (`menu_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1107 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_menu --- ---------------------------- -INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 1, '#', '', 'M', '0', '1', '', 'fa fa-gear', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统管理目录'); -INSERT INTO `sys_menu` VALUES (2, '系统监控', 0, 2, '#', '', 'M', '0', '1', '', 'fa fa-video-camera', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统监控目录'); -INSERT INTO `sys_menu` VALUES (3, '系统工具', 0, 3, '#', '', 'M', '0', '1', '', 'fa fa-bars', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统工具目录'); -INSERT INTO `sys_menu` VALUES (100, '用户管理', 1, 1, '/system/user', '', 'C', '0', '1', 'system:user:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '用户管理菜单'); -INSERT INTO `sys_menu` VALUES (101, '角色管理', 1, 2, '/system/role', '', 'C', '0', '1', 'system:role:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '角色管理菜单'); -INSERT INTO `sys_menu` VALUES (102, '菜单管理', 1, 3, '/system/menu', '', 'C', '0', '1', 'system:menu:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '菜单管理菜单'); -INSERT INTO `sys_menu` VALUES (103, '部门管理', 1, 4, '/system/dept', '', 'C', '0', '1', 'system:dept:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '部门管理菜单'); -INSERT INTO `sys_menu` VALUES (104, '岗位管理', 1, 5, '/system/post', '', 'C', '0', '1', 'system:post:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '岗位管理菜单'); -INSERT INTO `sys_menu` VALUES (105, '字典管理', 1, 6, '/system/dict', '', 'C', '0', '1', 'system:dict:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '字典管理菜单'); -INSERT INTO `sys_menu` VALUES (106, '参数设置', 1, 7, '/system/config', '', 'C', '0', '1', 'system:config:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '参数设置菜单'); -INSERT INTO `sys_menu` VALUES (107, '通知公告', 1, 8, '/system/notice', '', 'C', '0', '1', 'system:notice:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '通知公告菜单'); -INSERT INTO `sys_menu` VALUES (108, '日志管理', 1, 9, '#', '', 'M', '0', '1', '', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '日志管理菜单'); -INSERT INTO `sys_menu` VALUES (109, '在线用户', 2, 1, '/monitor/online', '', 'C', '0', '1', 'monitor:online:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '在线用户菜单'); -INSERT INTO `sys_menu` VALUES (110, '定时任务', 2, 2, '/monitor/job', '', 'C', '0', '1', 'monitor:job:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '定时任务菜单'); -INSERT INTO `sys_menu` VALUES (111, '数据监控', 2, 3, '/monitor/data', '', 'C', '0', '1', 'monitor:data:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '数据监控菜单'); -INSERT INTO `sys_menu` VALUES (112, '服务监控', 2, 3, '/monitor/server', '', 'C', '0', '1', 'monitor:server:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '服务监控菜单'); -INSERT INTO `sys_menu` VALUES (113, '表单构建', 3, 1, '/tool/build', '', 'C', '0', '1', 'tool:build:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '表单构建菜单'); -INSERT INTO `sys_menu` VALUES (114, '代码生成', 3, 2, '/tool/gen', '', 'C', '0', '1', 'tool:gen:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '代码生成菜单'); -INSERT INTO `sys_menu` VALUES (115, '系统接口', 3, 3, '/tool/swagger', '', 'C', '0', '1', 'tool:swagger:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '系统接口菜单'); -INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, '/monitor/operlog', '', 'C', '0', '1', 'monitor:operlog:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '操作日志菜单'); -INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, '/monitor/logininfor', '', 'C', '0', '1', 'monitor:logininfor:view', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '登录日志菜单'); -INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '#', '', 'F', '0', '1', 'system:user:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1001, '用户新增', 100, 2, '#', '', 'F', '0', '1', 'system:user:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1002, '用户修改', 100, 3, '#', '', 'F', '0', '1', 'system:user:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1003, '用户删除', 100, 4, '#', '', 'F', '0', '1', 'system:user:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1004, '用户导出', 100, 5, '#', '', 'F', '0', '1', 'system:user:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1005, '用户导入', 100, 6, '#', '', 'F', '0', '1', 'system:user:import', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1006, '重置密码', 100, 7, '#', '', 'F', '0', '1', 'system:user:resetPwd', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1007, '角色查询', 101, 1, '#', '', 'F', '0', '1', 'system:role:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1008, '角色新增', 101, 2, '#', '', 'F', '0', '1', 'system:role:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1009, '角色修改', 101, 3, '#', '', 'F', '0', '1', 'system:role:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1010, '角色删除', 101, 4, '#', '', 'F', '0', '1', 'system:role:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1011, '角色导出', 101, 5, '#', '', 'F', '0', '1', 'system:role:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1012, '菜单查询', 102, 1, '#', '', 'F', '0', '1', 'system:menu:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1013, '菜单新增', 102, 2, '#', '', 'F', '0', '1', 'system:menu:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1014, '菜单修改', 102, 3, '#', '', 'F', '0', '1', 'system:menu:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1015, '菜单删除', 102, 4, '#', '', 'F', '0', '1', 'system:menu:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1016, '部门查询', 103, 1, '#', '', 'F', '0', '1', 'system:dept:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1017, '部门新增', 103, 2, '#', '', 'F', '0', '1', 'system:dept:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1018, '部门修改', 103, 3, '#', '', 'F', '0', '1', 'system:dept:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1019, '部门删除', 103, 4, '#', '', 'F', '0', '1', 'system:dept:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1020, '岗位查询', 104, 1, '#', '', 'F', '0', '1', 'system:post:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1021, '岗位新增', 104, 2, '#', '', 'F', '0', '1', 'system:post:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1022, '岗位修改', 104, 3, '#', '', 'F', '0', '1', 'system:post:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1023, '岗位删除', 104, 4, '#', '', 'F', '0', '1', 'system:post:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1024, '岗位导出', 104, 5, '#', '', 'F', '0', '1', 'system:post:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1025, '字典查询', 105, 1, '#', '', 'F', '0', '1', 'system:dict:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1026, '字典新增', 105, 2, '#', '', 'F', '0', '1', 'system:dict:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1027, '字典修改', 105, 3, '#', '', 'F', '0', '1', 'system:dict:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1028, '字典删除', 105, 4, '#', '', 'F', '0', '1', 'system:dict:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1029, '字典导出', 105, 5, '#', '', 'F', '0', '1', 'system:dict:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1030, '参数查询', 106, 1, '#', '', 'F', '0', '1', 'system:config:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1031, '参数新增', 106, 2, '#', '', 'F', '0', '1', 'system:config:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1032, '参数修改', 106, 3, '#', '', 'F', '0', '1', 'system:config:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1033, '参数删除', 106, 4, '#', '', 'F', '0', '1', 'system:config:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1034, '参数导出', 106, 5, '#', '', 'F', '0', '1', 'system:config:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1035, '公告查询', 107, 1, '#', '', 'F', '0', '1', 'system:notice:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1036, '公告新增', 107, 2, '#', '', 'F', '0', '1', 'system:notice:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1037, '公告修改', 107, 3, '#', '', 'F', '0', '1', 'system:notice:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1038, '公告删除', 107, 4, '#', '', 'F', '0', '1', 'system:notice:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1039, '操作查询', 500, 1, '#', '', 'F', '0', '1', 'monitor:operlog:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1040, '操作删除', 500, 2, '#', '', 'F', '0', '1', 'monitor:operlog:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1041, '详细信息', 500, 3, '#', '', 'F', '0', '1', 'monitor:operlog:detail', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1042, '日志导出', 500, 4, '#', '', 'F', '0', '1', 'monitor:operlog:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1043, '登录查询', 501, 1, '#', '', 'F', '0', '1', 'monitor:logininfor:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1044, '登录删除', 501, 2, '#', '', 'F', '0', '1', 'monitor:logininfor:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1045, '日志导出', 501, 3, '#', '', 'F', '0', '1', 'monitor:logininfor:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1046, '在线查询', 109, 1, '#', '', 'F', '0', '1', 'monitor:online:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1047, '批量强退', 109, 2, '#', '', 'F', '0', '1', 'monitor:online:batchForceLogout', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1048, '单条强退', 109, 3, '#', '', 'F', '0', '1', 'monitor:online:forceLogout', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1049, '任务查询', 110, 1, '#', '', 'F', '0', '1', 'monitor:job:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1050, '任务新增', 110, 2, '#', '', 'F', '0', '1', 'monitor:job:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1051, '任务修改', 110, 3, '#', '', 'F', '0', '1', 'monitor:job:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1052, '任务删除', 110, 4, '#', '', 'F', '0', '1', 'monitor:job:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1053, '状态修改', 110, 5, '#', '', 'F', '0', '1', 'monitor:job:changeStatus', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1054, '任务详细', 110, 6, '#', '', 'F', '0', '1', 'monitor:job:detail', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1055, '任务导出', 110, 7, '#', '', 'F', '0', '1', 'monitor:job:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1056, '生成查询', 114, 1, '#', '', 'F', '0', '1', 'tool:gen:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1057, '生成修改', 114, 2, '#', '', 'F', '0', '1', 'tool:gen:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1058, '生成删除', 114, 3, '#', '', 'F', '0', '1', 'tool:gen:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1059, '预览代码', 114, 4, '#', '', 'F', '0', '1', 'tool:gen:preview', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1060, '生成代码', 114, 5, '#', '', 'F', '0', '1', 'tool:gen:code', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_menu` VALUES (1061, '商城管理', 0, 0, '#', 'menuItem', 'M', '0', '1', '', 'fa fa-shopping-cart', 'admin', '2019-08-22 10:14:45', 'admin', '2021-06-18 17:00:18', ''); -INSERT INTO `sys_menu` VALUES (1062, '商城商品分类', 1061, 1, '/shop/cate', '', 'C', '0', '1', 'shop:cate:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商城商品分类菜单'); -INSERT INTO `sys_menu` VALUES (1063, '商城商品分类查询', 1062, 1, '#', '', 'F', '0', '1', 'shop:cate:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1064, '商城商品分类新增', 1062, 2, '#', '', 'F', '0', '1', 'shop:cate:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1065, '商城商品分类修改', 1062, 3, '#', '', 'F', '0', '1', 'shop:cate:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1066, '商城商品分类删除', 1062, 4, '#', '', 'F', '0', '1', 'shop:cate:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1067, '产品品牌', 1061, 1, '/shop/brand', '', 'C', '0', '1', 'shop:brand:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '产品品牌菜单'); -INSERT INTO `sys_menu` VALUES (1068, '产品品牌查询', 1067, 1, '#', '', 'F', '0', '1', 'shop:brand:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1069, '产品品牌新增', 1067, 2, '#', '', 'F', '0', '1', 'shop:brand:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1070, '产品品牌修改', 1067, 3, '#', '', 'F', '0', '1', 'shop:brand:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1071, '产品品牌删除', 1067, 4, '#', '', 'F', '0', '1', 'shop:brand:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1072, '商品类型(商品模型)', 1061, 1, '/shop/type', '', 'C', '0', '1', 'shop:type:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商品类型(商品模型)菜单'); -INSERT INTO `sys_menu` VALUES (1073, '商品类型(商品模型)查询', 1072, 1, '#', '', 'F', '0', '1', 'shop:type:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1074, '商品类型(商品模型)新增', 1072, 2, '#', '', 'F', '0', '1', 'shop:type:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1075, '商品类型(商品模型)修改', 1072, 3, '#', '', 'F', '0', '1', 'shop:type:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1076, '商品类型(商品模型)删除', 1072, 4, '#', '', 'F', '0', '1', 'shop:type:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1077, '商品的属性', 1061, 1, '/shop/attribute', '', 'C', '0', '1', 'shop:attribute:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商品的属性(独立)菜单'); -INSERT INTO `sys_menu` VALUES (1078, '商品的属性查询', 1077, 1, '#', '', 'F', '0', '1', 'shop:attribute:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1079, '商品的属性新增', 1077, 2, '#', '', 'F', '0', '1', 'shop:attribute:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1080, '商品的属性修改', 1077, 3, '#', '', 'F', '0', '1', 'shop:attribute:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1081, '商品的属性删除', 1077, 4, '#', '', 'F', '0', '1', 'shop:attribute:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1082, '商品规格', 1061, 1, '/shop/spec', '', 'C', '0', '1', 'shop:spec:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商品规格(独立)菜单'); -INSERT INTO `sys_menu` VALUES (1083, '商品规格查询', 1082, 1, '#', '', 'F', '0', '1', 'shop:spec:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1084, '商品规格新增', 1082, 2, '#', '', 'F', '0', '1', 'shop:spec:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1085, '商品规格修改', 1082, 3, '#', '', 'F', '0', '1', 'shop:spec:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1086, '商品规格删除', 1082, 4, '#', '', 'F', '0', '1', 'shop:spec:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1087, '商品管理', 1061, 1, '/shop/goods', '', 'C', '0', '1', 'shop:goods:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商品主菜单'); -INSERT INTO `sys_menu` VALUES (1088, '商品查询', 1087, 1, '#', '', 'F', '0', '1', 'shop:goods:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1089, '商品新增', 1087, 2, '#', '', 'F', '0', '1', 'shop:goods:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1090, '商品修改', 1087, 3, '#', '', 'F', '0', '1', 'shop:goods:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1091, '商品删除', 1087, 4, '#', '', 'F', '0', '1', 'shop:goods:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1092, '优惠券', 1061, 1, '/shop/coupon', '', 'C', '0', '1', 'shop:coupon:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '优惠券主菜单'); -INSERT INTO `sys_menu` VALUES (1093, '优惠券查询', 1092, 1, '#', '', 'F', '0', '1', 'shop:coupon:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1094, '优惠券新增', 1092, 2, '#', '', 'F', '0', '1', 'shop:coupon:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1095, '优惠券修改', 1092, 3, '#', '', 'F', '0', '1', 'shop:coupon:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1096, '优惠券删除', 1092, 4, '#', '', 'F', '0', '1', 'shop:coupon:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1097, '订单管理', 1061, 1, '/shop/order', '', 'C', '0', '1', 'shop:order:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '订单主菜单'); -INSERT INTO `sys_menu` VALUES (1098, '订单查询', 1097, 1, '#', '', 'F', '0', '1', 'shop:order:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1099, '订单新增', 1097, 2, '#', '', 'F', '0', '1', 'shop:order:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1100, '订单修改', 1097, 3, '#', '', 'F', '0', '1', 'shop:order:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1101, '订单删除', 1097, 4, '#', '', 'F', '0', '1', 'shop:order:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1102, '会员信息', 1061, 1, '/shop/member', '', 'C', '0', '1', 'shop:member:view', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', '商城会员信息菜单'); -INSERT INTO `sys_menu` VALUES (1103, '会员信息查询', 1102, 1, '#', '', 'F', '0', '1', 'shop:member:list', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1104, '会员信息新增', 1102, 2, '#', '', 'F', '0', '1', 'shop:member:add', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1105, '会员信息修改', 1102, 3, '#', '', 'F', '0', '1', 'shop:member:edit', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); -INSERT INTO `sys_menu` VALUES (1106, '会员信息删除', 1102, 4, '#', '', 'F', '0', '1', 'shop:member:remove', '#', 'admin', '2018-03-01 00:00:00', 'ry', '2018-03-01 00:00:00', ''); - --- ---------------------------- --- Table structure for sys_notice --- ---------------------------- -DROP TABLE IF EXISTS `sys_notice`; -CREATE TABLE `sys_notice` ( - `notice_id` int(4) NOT NULL AUTO_INCREMENT COMMENT '公告ID', - `notice_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公告标题', - `notice_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公告类型(1通知 2公告)', - `notice_content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公告内容', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`notice_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知公告表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_notice --- ---------------------------- -INSERT INTO `sys_notice` VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '管理员'); -INSERT INTO `sys_notice` VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '管理员'); - --- ---------------------------- --- Table structure for sys_oper_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_oper_log`; -CREATE TABLE `sys_oper_log` ( - `oper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', - `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '模块标题', - `business_type` int(2) NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', - `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '方法名称', - `request_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', - `operator_type` int(1) NULL DEFAULT 0 COMMENT '操作类别(0其它 1后台用户 2手机端用户)', - `oper_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作人员', - `dept_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '部门名称', - `oper_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请求URL', - `oper_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '主机地址', - `oper_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作地点', - `oper_param` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请求参数', - `status` int(1) NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', - `error_msg` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '错误消息', - `oper_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', - PRIMARY KEY (`oper_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 59 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_oper_log --- ---------------------------- -INSERT INTO `sys_oper_log` VALUES (1, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods_cate\" ]\r\n}', 0, NULL, '2019-08-22 09:59:25'); -INSERT INTO `sys_oper_log` VALUES (2, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_cate', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-22 10:00:12'); -INSERT INTO `sys_oper_log` VALUES (3, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_cate', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-22 10:00:43'); -INSERT INTO `sys_oper_log` VALUES (4, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品分类\" ],\r\n \"column', 0, NULL, '2019-08-22 10:05:28'); -INSERT INTO `sys_oper_log` VALUES (5, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_cate', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-22 10:05:35'); -INSERT INTO `sys_oper_log` VALUES (6, '菜单管理', 1, 'com.ruoyi.web.controller.system.SysMenuController.addSave()', '', 1, 'admin', '研发部门', '/system/menu/add', '127.0.0.1', '内网IP', '{\r\n \"parentId\" : [ \"0\" ],\r\n \"menuType\" : [ \"M\" ],\r\n \"menuName\" : [ \"商城管理\" ],\r\n \"url\" : [ \"\" ],\r\n \"target\" : [ \"menuItem\" ],\r\n \"perms\" : [ \"\" ],\r\n \"orderNum\" : [ \"4\" ],\r\n \"icon\" : [ \"fa fa-shopping-cart\" ],\r\n \"visible\" : [ \"0\" ]\r\n}', 0, NULL, '2019-08-22 10:14:45'); -INSERT INTO `sys_oper_log` VALUES (7, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品分类\" ],\r\n \"column', 0, NULL, '2019-08-22 10:17:16'); -INSERT INTO `sys_oper_log` VALUES (8, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品分类\" ],\r\n \"column', 0, NULL, '2019-08-22 10:19:09'); -INSERT INTO `sys_oper_log` VALUES (9, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_cate', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-22 10:20:33'); -INSERT INTO `sys_oper_log` VALUES (10, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', NULL, '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品分类\" ],\r\n \"column', 0, NULL, '2019-08-22 10:55:55'); -INSERT INTO `sys_oper_log` VALUES (11, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', NULL, '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品描述\" ],\r\n \"columns[4].javaType\" : [ \"String\" ],\r\n \"columns[4].javaField\" : [ \"cateDesc\" ],\r\n \"columns[4].isInsert\" : [ \"1\" ],\r\n \"columns[4].isEdit\" : [ \"', 0, NULL, '2019-08-22 11:03:23'); -INSERT INTO `sys_oper_log` VALUES (12, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', NULL, '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"1\" ],\r\n \"tableName\" : [ \"store_goods_cate\" ],\r\n \"tableComment\" : [ \"商城商品分类\" ],\r\n \"className\" : [ \"StoreGoodsCate\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"1\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"2\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"上级分类编号\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"pid\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"3\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌ID\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"brandId\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"4\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品分类名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"cateTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"5\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品描述\" ],\r\n \"columns[4].javaType\" : [ \"String\" ],\r\n \"columns[4].javaField\" : [ \"cateDesc\" ],\r\n \"columns[4].isInsert\" : [ \"1\" ],\r\n \"columns[4].isEdit\" : [ \"', 0, NULL, '2019-08-22 11:04:52'); -INSERT INTO `sys_oper_log` VALUES (13, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', NULL, '/tool/gen/genCode/store_goods_cate', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-22 11:05:41'); -INSERT INTO `sys_oper_log` VALUES (14, '商城商品分类', 1, 'com.ruoyi.web.controller.shop.StoreGoodsCateController.addSave()', '', 1, 'admin', '研发部门', '/shop/cate/add', '127.0.0.1', '内网IP', '{\r\n \"pid\" : [ \"1\" ],\r\n \"cateTitle\" : [ \"背心\" ],\r\n \"cateDesc\" : [ \"44\" ],\r\n \"imgUrl\" : [ \"http://127.0.0.1:8080/profile/upload/2019/08/23/2e593ef4098a5c1758c11e2539f5962b.png\" ],\r\n \"sort\" : [ \"\" ]\r\n}', 0, NULL, '2019-08-23 17:44:50'); -INSERT INTO `sys_oper_log` VALUES (15, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods_brand\" ]\r\n}', 0, NULL, '2019-08-23 18:21:25'); -INSERT INTO `sys_oper_log` VALUES (16, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"2\" ],\r\n \"tableName\" : [ \"store_goods_brand\" ],\r\n \"tableComment\" : [ \"产品品牌\" ],\r\n \"className\" : [ \"StoreGoodsBrand\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"11\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"12\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"品牌logo\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"brandLogo\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"textarea\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"13\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"品牌封面\" ],\r\n \"columns[2].javaType\" : [ \"String\" ],\r\n \"columns[2].javaField\" : [ \"brandCover\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"textarea\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"14\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品品牌名称\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"brandTitle\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"15\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品品牌描述\" ],\r\n \"columns[4].javaType\" : [ \"String\" ],\r\n \"columns[4].javaField\" : [ \"brandDesc\" ],\r\n \"columns[4].isInsert\" : [ \"1\" ],\r\n \"columns[4].isEdit\" : [ \"1\" ],\r\n \"columns[4].queryType\" : [ \"EQ\" ', 0, NULL, '2019-08-23 18:24:11'); -INSERT INTO `sys_oper_log` VALUES (17, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_brand', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-23 18:24:56'); -INSERT INTO `sys_oper_log` VALUES (18, '产品品牌', 1, 'com.ruoyi.web.controller.shop.StoreGoodsBrandController.addSave()', '', 1, 'admin', '研发部门', '/shop/brand/add', '127.0.0.1', '内网IP', '{\r\n \"brandLogo\" : [ \"http://127.0.0.1:8080/profile/upload/2019/08/23/079702428f13f5c9b5acb1c5cec16b9d.jpeg\" ],\r\n \"brandTitle\" : [ \"logo\" ],\r\n \"brandDesc\" : [ \"\" ]\r\n}', 0, NULL, '2019-08-23 18:37:20'); -INSERT INTO `sys_oper_log` VALUES (19, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods_type\" ]\r\n}', 0, NULL, '2019-08-24 14:16:00'); -INSERT INTO `sys_oper_log` VALUES (20, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"3\" ],\r\n \"tableName\" : [ \"store_goods_type\" ],\r\n \"tableComment\" : [ \"商品类型(商品模型)表\" ],\r\n \"className\" : [ \"StoreGoodsType\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"21\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"id自增\" ],\r\n \"columns[0].javaType\" : [ \"Integer\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"22\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"类型名称\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"name\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"LIKE\" ],\r\n \"columns[1].isRequired\" : [ \"1\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"tplCategory\" : [ \"crud\" ],\r\n \"packageName\" : [ \"com.ruoyi.shop\" ],\r\n \"moduleName\" : [ \"shop\" ],\r\n \"businessName\" : [ \"type\" ],\r\n \"functionName\" : [ \"商品类型(商品模型)\" ],\r\n \"params[treeCode]\" : [ \"\" ],\r\n \"params[treeParentCode]\" : [ \"\" ],\r\n \"params[treeName]\" : [ \"\" ]\r\n}', 0, NULL, '2019-08-24 14:16:23'); -INSERT INTO `sys_oper_log` VALUES (21, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_type', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-24 14:16:29'); -INSERT INTO `sys_oper_log` VALUES (22, '商品类型(商品模型)', 1, 'com.ruoyi.web.controller.shop.StoreGoodsTypeController.addSave()', '', 1, 'admin', '研发部门', '/shop/type/add', '127.0.0.1', '内网IP', '{\r\n \"name\" : [ \"手机\" ]\r\n}', 0, NULL, '2019-08-24 14:39:12'); -INSERT INTO `sys_oper_log` VALUES (23, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods_attribute\" ]\r\n}', 0, NULL, '2019-08-24 14:44:41'); -INSERT INTO `sys_oper_log` VALUES (24, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"4\" ],\r\n \"tableName\" : [ \"store_goods_attribute\" ],\r\n \"tableComment\" : [ \"商品的属性表(独立)\" ],\r\n \"className\" : [ \"StoreGoodsAttribute\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"23\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"属性id\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"attrId\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"24\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"属性名称\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"attrName\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"LIKE\" ],\r\n \"columns[1].isRequired\" : [ \"1\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"25\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"属性分类id(商品模型id)\" ],\r\n \"columns[2].javaType\" : [ \"Integer\" ],\r\n \"columns[2].javaField\" : [ \"typeId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].isRequired\" : [ \"1\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"26\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"0不需要检索 1关键字检索 2范围检索\" ],\r\n \"columns[3].javaType\" : [ \"Integer\" ],\r\n \"columns[3].javaField\" : [ \"attrIndex\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].isRequired\" : [ \"1\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"27\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"0唯一属性 1单选属性 2复选属性\" ],\r\n', 0, NULL, '2019-08-24 14:47:04'); -INSERT INTO `sys_oper_log` VALUES (25, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_attribute', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-24 14:48:38'); -INSERT INTO `sys_oper_log` VALUES (26, '商品的属性(独立)', 1, 'com.ruoyi.web.controller.shop.StoreGoodsAttributeController.addSave()', '', 1, 'admin', '研发部门', '/shop/attribute/add', '127.0.0.1', '内网IP', '{\r\n \"attrName\" : [ \"内存\" ],\r\n \"typeId\" : [ \"40\" ]\r\n}', 1, '\r\n### Error updating database. Cause: java.sql.SQLException: Field \'attr_values\' doesn\'t have a default value\r\n### The error may involve com.ruoyi.shop.mapper.StoreGoodsAttributeMapper.insertStoreGoodsAttribute-Inline\r\n### The error occurred while setting parameters\r\n### SQL: insert into store_goods_attribute ( attr_name, type_id ) values ( ?, ? )\r\n### Cause: java.sql.SQLException: Field \'attr_values\' doesn\'t have a default value\n; Field \'attr_values\' doesn\'t have a default value; nested exception is java.sql.SQLException: Field \'attr_values\' doesn\'t have a default value', '2019-08-24 16:03:59'); -INSERT INTO `sys_oper_log` VALUES (27, '商品的属性(独立)', 1, 'com.ruoyi.web.controller.shop.StoreGoodsAttributeController.addSave()', '', 1, 'admin', '研发部门', '/shop/attribute/add', '127.0.0.1', '内网IP', '{\r\n \"attrName\" : [ \"内存\" ],\r\n \"typeId\" : [ \"40\" ]\r\n}', 0, NULL, '2019-08-24 16:05:02'); -INSERT INTO `sys_oper_log` VALUES (28, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_spec_item,store_spec_goods_price,store_spec\" ]\r\n}', 0, NULL, '2019-08-25 09:40:12'); -INSERT INTO `sys_oper_log` VALUES (29, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"5\" ],\r\n \"tableName\" : [ \"store_spec\" ],\r\n \"tableComment\" : [ \"商品规格表(独立)\" ],\r\n \"className\" : [ \"StoreSpec\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"31\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"规格表\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"32\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"规格类型\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"typeId\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"select\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"33\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"规格名称\" ],\r\n \"columns[2].javaType\" : [ \"String\" ],\r\n \"columns[2].javaField\" : [ \"name\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"LIKE\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"34\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"排序\" ],\r\n \"columns[3].javaType\" : [ \"Long\" ],\r\n \"columns[3].javaField\" : [ \"sort\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"35\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"是否需要检索:1是,0否\" ],\r\n \"columns[4].javaType\" : [ \"Integer\" ],\r\n \"columns[4].javaField\" : [ \"searchIndex\" ],\r\n \"columns[4].queryType\" : [ \"EQ\" ],\r\n \"columns[4].htmlType\" : [ \"input\" ],\r\n \"columns[4].dictTy', 0, NULL, '2019-08-25 09:45:36'); -INSERT INTO `sys_oper_log` VALUES (30, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_spec', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-25 09:45:42'); -INSERT INTO `sys_oper_log` VALUES (31, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_spec_item', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-25 10:07:15'); -INSERT INTO `sys_oper_log` VALUES (32, '商品规格(独立)', 1, 'com.ruoyi.web.controller.shop.StoreSpecController.addSave()', '', 1, 'admin', '研发部门', '/shop/spec/add', '127.0.0.1', '内网IP', '{\r\n \"typeId\" : [ \"40\" ],\r\n \"name\" : [ \"内存\" ],\r\n \"specItem\" : [ \"1G\\r\\n4G\\r\\n8G\" ]\r\n}', 0, NULL, '2019-08-25 11:01:53'); -INSERT INTO `sys_oper_log` VALUES (33, '商品规格(独立)', 2, 'com.ruoyi.web.controller.shop.StoreSpecController.editSave()', '', 1, 'admin', '研发部门', '/shop/spec/edit', '127.0.0.1', '内网IP', '{\r\n \"id\" : [ \"5\" ],\r\n \"typeId\" : [ \"40\" ],\r\n \"name\" : [ \"内存\" ],\r\n \"specItem\" : [ \"1G\\r\\n4G\\r\\n8G\\r\\n12G\" ]\r\n}', 0, NULL, '2019-08-25 12:09:26'); -INSERT INTO `sys_oper_log` VALUES (34, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods\" ]\r\n}', 0, NULL, '2019-08-25 14:00:15'); -INSERT INTO `sys_oper_log` VALUES (35, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"8\" ],\r\n \"tableName\" : [ \"store_goods\" ],\r\n \"tableComment\" : [ \"商品主表\" ],\r\n \"className\" : [ \"StoreGoods\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"51\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"商品id\" ],\r\n \"columns[0].javaType\" : [ \"Integer\" ],\r\n \"columns[0].javaField\" : [ \"goodsId\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"52\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"分类id\" ],\r\n \"columns[1].javaType\" : [ \"Long\" ],\r\n \"columns[1].javaField\" : [ \"cateId\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].isRequired\" : [ \"1\" ],\r\n \"columns[1].htmlType\" : [ \"select\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"53\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"扩展分类id\" ],\r\n \"columns[2].javaType\" : [ \"Long\" ],\r\n \"columns[2].javaField\" : [ \"extendCatId\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"54\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"商品编号\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"goodsSn\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].isRequired\" : [ \"1\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"55\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"商品名称\" ],\r\n \"columns[4].javaType\" : [ \"String\" ],\r\n \"columns[4].javaField\" : [ \"goodsName\" ],\r\n \"columns[4].i', 0, NULL, '2019-08-25 14:14:00'); -INSERT INTO `sys_oper_log` VALUES (36, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-25 14:14:06'); -INSERT INTO `sys_oper_log` VALUES (37, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.batchGenCode()', '', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_spec_goods_price,store_spec_item\" ]\r\n}', 0, NULL, '2019-08-26 13:32:47'); -INSERT INTO `sys_oper_log` VALUES (38, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_goods_attr\" ]\r\n}', 0, NULL, '2019-08-26 13:38:55'); -INSERT INTO `sys_oper_log` VALUES (39, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_goods_attr', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-26 13:39:30'); -INSERT INTO `sys_oper_log` VALUES (40, '商品主', 1, 'com.ruoyi.web.controller.shop.StoreGoodsController.addSave()', '', 1, 'admin', '研发部门', '/shop/goods/add', '127.0.0.1', '内网IP', '{\r\n \"cateId\" : [ \"11\" ],\r\n \"brandId\" : [ \"1\" ],\r\n \"goodsSn\" : [ \"#1008611\" ],\r\n \"goodsName\" : [ \"测试商品规格\" ],\r\n \"goodsLogo\" : [ \"\" ],\r\n \"marketPrice\" : [ \"100\" ],\r\n \"shopPrice\" : [ \"20\" ],\r\n \"keywords\" : [ \"复印\" ],\r\n \"goodsRemark\" : [ \"描述\" ],\r\n \"goodsContent\" : [ \"\" ],\r\n \"sort\" : [ \"1\" ]\r\n}', 0, NULL, '2019-08-28 17:11:19'); -INSERT INTO `sys_oper_log` VALUES (41, '角色管理', 2, 'com.ruoyi.web.controller.system.SysRoleController.authDataScopeSave()', '', 1, 'admin', '研发部门', '/system/role/authDataScope', '127.0.0.1', '内网IP', '{\r\n \"roleId\" : [ \"2\" ],\r\n \"roleName\" : [ \"普通角色\" ],\r\n \"roleKey\" : [ \"common\" ],\r\n \"dataScope\" : [ \"2\" ],\r\n \"deptIds\" : [ \"100,101,105\" ]\r\n}', 0, NULL, '2019-08-28 18:28:27'); -INSERT INTO `sys_oper_log` VALUES (42, '角色管理', 2, 'com.ruoyi.web.controller.system.SysRoleController.authDataScopeSave()', '', 1, 'admin', '研发部门', '/system/role/authDataScope', '127.0.0.1', '内网IP', '{\r\n \"roleId\" : [ \"2\" ],\r\n \"roleName\" : [ \"普通角色\" ],\r\n \"roleKey\" : [ \"common\" ],\r\n \"dataScope\" : [ \"2\" ],\r\n \"deptIds\" : [ \"100,101,103,104,105,102,108,109\" ]\r\n}', 0, NULL, '2019-08-28 18:29:39'); -INSERT INTO `sys_oper_log` VALUES (43, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_coupon_list,store_coupon\" ]\r\n}', 0, NULL, '2019-08-29 19:16:19'); -INSERT INTO `sys_oper_log` VALUES (44, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"10\" ],\r\n \"tableName\" : [ \"store_coupon\" ],\r\n \"tableComment\" : [ \"优惠券主表\" ],\r\n \"className\" : [ \"StoreCoupon\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"101\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"表id\" ],\r\n \"columns[0].javaType\" : [ \"Integer\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"102\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"优惠券名字\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"name\" ],\r\n \"columns[1].isInsert\" : [ \"1\" ],\r\n \"columns[1].isEdit\" : [ \"1\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"LIKE\" ],\r\n \"columns[1].isRequired\" : [ \"1\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"103\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"发放类型 0下单赠送1 指定发放 2 免费领取 3线下发放\" ],\r\n \"columns[2].javaType\" : [ \"Integer\" ],\r\n \"columns[2].javaField\" : [ \"type\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].isRequired\" : [ \"1\" ],\r\n \"columns[2].htmlType\" : [ \"select\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"104\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"优惠券金额\" ],\r\n \"columns[3].javaType\" : [ \"Double\" ],\r\n \"columns[3].javaField\" : [ \"money\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].isRequired\" : [ \"1\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"105\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"使用条件,满多少金额\" ],\r\n \"columns[4].javaType\" : [ \"Doub', 0, NULL, '2019-08-29 19:22:06'); -INSERT INTO `sys_oper_log` VALUES (45, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.batchGenCode()', '', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_coupon,store_coupon_list\" ]\r\n}', 0, NULL, '2019-08-29 19:22:15'); -INSERT INTO `sys_oper_log` VALUES (46, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_order_goods_remark,store_order_goods,store_order\" ]\r\n}', 0, NULL, '2019-08-29 19:45:10'); -INSERT INTO `sys_oper_log` VALUES (47, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"12\" ],\r\n \"tableName\" : [ \"store_order\" ],\r\n \"tableComment\" : [ \"订单主表\" ],\r\n \"className\" : [ \"StoreOrder\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"126\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"订单id\" ],\r\n \"columns[0].javaType\" : [ \"Integer\" ],\r\n \"columns[0].javaField\" : [ \"orderId\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"127\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"订单编号\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"orderSn\" ],\r\n \"columns[1].isList\" : [ \"1\" ],\r\n \"columns[1].isQuery\" : [ \"1\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].isRequired\" : [ \"1\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"128\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"用户id\" ],\r\n \"columns[2].javaType\" : [ \"Integer\" ],\r\n \"columns[2].javaField\" : [ \"userId\" ],\r\n \"columns[2].isInsert\" : [ \"1\" ],\r\n \"columns[2].isEdit\" : [ \"1\" ],\r\n \"columns[2].isList\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].isRequired\" : [ \"1\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"129\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"订单状态 0-未确认 1-已确认(已收货) 2-已评价\" ],\r\n \"columns[3].javaType\" : [ \"Integer\" ],\r\n \"columns[3].javaField\" : [ \"orderStatus\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].isRequired\" : [ \"1\" ],\r\n \"columns[3].htmlType\" : [ \"radio\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"130\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"col', 0, NULL, '2019-08-29 19:53:53'); -INSERT INTO `sys_oper_log` VALUES (48, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.batchGenCode()', '', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_order_goods,store_order_goods_remark,store_order\" ]\r\n}', 0, NULL, '2019-08-29 19:54:10'); -INSERT INTO `sys_oper_log` VALUES (49, '优惠券主', 1, 'com.ruoyi.web.controller.shop.StoreCouponController.addSave()', '', 1, 'admin', '研发部门', '/shop/coupon/add', '127.0.0.1', '内网IP', '{\r\n \"name\" : [ \"五一促销1\" ],\r\n \"money\" : [ \"10.00\" ],\r\n \"condition\" : [ \"100.00\" ],\r\n \"createnum\" : [ \"1000\" ],\r\n \"useStartTime\" : [ \"2019-08-21\" ],\r\n \"useEndTime\" : [ \"2019-09-04\" ]\r\n}', 0, NULL, '2019-08-30 10:36:43'); -INSERT INTO `sys_oper_log` VALUES (50, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', '', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\r\n \"tables\" : [ \"store_member\" ]\r\n}', 0, NULL, '2019-08-30 13:40:31'); -INSERT INTO `sys_oper_log` VALUES (51, '代码生成', 2, 'com.ruoyi.generator.controller.GenController.editSave()', '', 1, 'admin', '研发部门', '/tool/gen/edit', '127.0.0.1', '内网IP', '{\r\n \"tableId\" : [ \"15\" ],\r\n \"tableName\" : [ \"store_member\" ],\r\n \"tableComment\" : [ \"商城会员信息\" ],\r\n \"className\" : [ \"StoreMember\" ],\r\n \"functionAuthor\" : [ \"hupeng\" ],\r\n \"remark\" : [ \"\" ],\r\n \"columns[0].columnId\" : [ \"202\" ],\r\n \"columns[0].sort\" : [ \"1\" ],\r\n \"columns[0].columnComment\" : [ \"null\" ],\r\n \"columns[0].javaType\" : [ \"Long\" ],\r\n \"columns[0].javaField\" : [ \"id\" ],\r\n \"columns[0].isInsert\" : [ \"1\" ],\r\n \"columns[0].queryType\" : [ \"EQ\" ],\r\n \"columns[0].htmlType\" : [ \"input\" ],\r\n \"columns[0].dictType\" : [ \"\" ],\r\n \"columns[1].columnId\" : [ \"203\" ],\r\n \"columns[1].sort\" : [ \"2\" ],\r\n \"columns[1].columnComment\" : [ \"vip编号\" ],\r\n \"columns[1].javaType\" : [ \"String\" ],\r\n \"columns[1].javaField\" : [ \"vipNo\" ],\r\n \"columns[1].queryType\" : [ \"EQ\" ],\r\n \"columns[1].htmlType\" : [ \"input\" ],\r\n \"columns[1].dictType\" : [ \"\" ],\r\n \"columns[2].columnId\" : [ \"204\" ],\r\n \"columns[2].sort\" : [ \"3\" ],\r\n \"columns[2].columnComment\" : [ \"会员微信OPENID\" ],\r\n \"columns[2].javaType\" : [ \"String\" ],\r\n \"columns[2].javaField\" : [ \"openid\" ],\r\n \"columns[2].isQuery\" : [ \"1\" ],\r\n \"columns[2].queryType\" : [ \"EQ\" ],\r\n \"columns[2].htmlType\" : [ \"input\" ],\r\n \"columns[2].dictType\" : [ \"\" ],\r\n \"columns[3].columnId\" : [ \"205\" ],\r\n \"columns[3].sort\" : [ \"4\" ],\r\n \"columns[3].columnComment\" : [ \"会员手机号\" ],\r\n \"columns[3].javaType\" : [ \"String\" ],\r\n \"columns[3].javaField\" : [ \"phone\" ],\r\n \"columns[3].isInsert\" : [ \"1\" ],\r\n \"columns[3].isEdit\" : [ \"1\" ],\r\n \"columns[3].isList\" : [ \"1\" ],\r\n \"columns[3].isQuery\" : [ \"1\" ],\r\n \"columns[3].queryType\" : [ \"EQ\" ],\r\n \"columns[3].htmlType\" : [ \"input\" ],\r\n \"columns[3].dictType\" : [ \"\" ],\r\n \"columns[4].columnId\" : [ \"206\" ],\r\n \"columns[4].sort\" : [ \"5\" ],\r\n \"columns[4].columnComment\" : [ \"登录密码\" ],\r\n \"columns[4].javaType\" : [ \"String\" ],\r\n \"columns[4].javaField\" : [ \"password\" ],\r\n \"columns[4].queryType\" : [ \"EQ\" ],\r\n \"columns[4].htmlType\" : [ \"input\" ],\r\n \"columns[4].dictType\" : [ \"\" ],\r\n \"columns[5].columnId\" : [ \"207\" ],\r\n \"colu', 0, NULL, '2019-08-30 13:44:56'); -INSERT INTO `sys_oper_log` VALUES (52, '代码生成', 8, 'com.ruoyi.generator.controller.GenController.genCode()', '', 1, 'admin', '研发部门', '/tool/gen/genCode/store_member', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-08-30 13:45:19'); -INSERT INTO `sys_oper_log` VALUES (53, '订单主', 3, 'com.ruoyi.web.controller.shop.StoreOrderController.remove()', '', 1, 'admin', '研发部门', '/shop/order/remove', '127.0.0.1', '内网IP', '{\r\n \"ids\" : [ \"1639\" ]\r\n}', 0, NULL, '2019-08-30 14:54:48'); -INSERT INTO `sys_oper_log` VALUES (54, '订单主', 2, 'com.ruoyi.web.controller.shop.StoreOrderController.editSave()', '', 1, 'admin', '研发部门', '/shop/order/edit', '127.0.0.1', '内网IP', '{\r\n \"orderId\" : [ \"1639\" ],\r\n \"shippingCode\" : [ \"778845475\" ],\r\n \"shippingName\" : [ \"顺丰1\" ]\r\n}', 0, NULL, '2019-08-30 15:47:51'); -INSERT INTO `sys_oper_log` VALUES (55, '商城商品分类', 3, 'com.ruoyi.web.controller.shop.StoreGoodsCateController.remove()', '', 1, 'admin', '研发部门', '/shop/cate/remove/1', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-09-23 15:45:39'); -INSERT INTO `sys_oper_log` VALUES (56, '商城商品分类', 3, 'com.ruoyi.web.controller.shop.StoreGoodsCateController.remove()', '', 1, 'admin', '研发部门', '/shop/cate/remove/2', '127.0.0.1', '内网IP', '{ }', 0, NULL, '2019-09-23 15:46:09'); -INSERT INTO `sys_oper_log` VALUES (57, '商城商品分类', 3, 'com.ruoyi.web.controller.shop.StoreGoodsCateController.remove()', '', 1, 'admin', '研发部门', '/shop/cate/remove/3', '127.0.0.1', '内网IP', '{ }', 1, '请先删除子分类', '2019-09-23 15:56:43'); -INSERT INTO `sys_oper_log` VALUES (58, '商城商品分类', 3, 'com.ruoyi.web.controller.shop.StoreGoodsCateController.remove()', '', 1, 'admin', '研发部门', '/shop/cate/remove/3', '127.0.0.1', '内网IP', '{ }', 1, '请先删除子分类', '2019-09-23 15:56:49'); - --- ---------------------------- --- Table structure for sys_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_post`; -CREATE TABLE `sys_post` ( - `post_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '岗位ID', - `post_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '岗位编码', - `post_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '岗位名称', - `post_sort` int(4) NOT NULL COMMENT '显示顺序', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`post_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '岗位信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_post --- ---------------------------- -INSERT INTO `sys_post` VALUES (1, 'ceo', '董事长', 1, '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_post` VALUES (2, 'se', '项目经理', 2, '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_post` VALUES (3, 'hr', '人力资源', 3, '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); -INSERT INTO `sys_post` VALUES (4, 'user', '普通员工', 4, '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', ''); - --- ---------------------------- --- Table structure for sys_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_role`; -CREATE TABLE `sys_role` ( - `role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID', - `role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色名称', - `role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色权限字符串', - `role_sort` int(4) NOT NULL COMMENT '显示顺序', - `data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role --- ---------------------------- -INSERT INTO `sys_role` VALUES (1, '管理员', 'admin', 1, '1', '0', '0', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '管理员'); -INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', '0', '0', 'admin', '2018-03-16 11:33:00', 'admin', '2019-08-28 18:29:38', '普通角色'); - --- ---------------------------- --- Table structure for sys_role_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_dept`; -CREATE TABLE `sys_role_dept` ( - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - `dept_id` bigint(20) NOT NULL COMMENT '部门ID', - PRIMARY KEY (`role_id`, `dept_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和部门关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_dept --- ---------------------------- -INSERT INTO `sys_role_dept` VALUES (2, 100); -INSERT INTO `sys_role_dept` VALUES (2, 101); -INSERT INTO `sys_role_dept` VALUES (2, 102); -INSERT INTO `sys_role_dept` VALUES (2, 103); -INSERT INTO `sys_role_dept` VALUES (2, 104); -INSERT INTO `sys_role_dept` VALUES (2, 105); -INSERT INTO `sys_role_dept` VALUES (2, 108); -INSERT INTO `sys_role_dept` VALUES (2, 109); - --- ---------------------------- --- Table structure for sys_role_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_menu`; -CREATE TABLE `sys_role_menu` ( - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', - PRIMARY KEY (`role_id`, `menu_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_menu --- ---------------------------- -INSERT INTO `sys_role_menu` VALUES (2, 1); -INSERT INTO `sys_role_menu` VALUES (2, 2); -INSERT INTO `sys_role_menu` VALUES (2, 3); -INSERT INTO `sys_role_menu` VALUES (2, 100); -INSERT INTO `sys_role_menu` VALUES (2, 101); -INSERT INTO `sys_role_menu` VALUES (2, 102); -INSERT INTO `sys_role_menu` VALUES (2, 103); -INSERT INTO `sys_role_menu` VALUES (2, 104); -INSERT INTO `sys_role_menu` VALUES (2, 105); -INSERT INTO `sys_role_menu` VALUES (2, 106); -INSERT INTO `sys_role_menu` VALUES (2, 107); -INSERT INTO `sys_role_menu` VALUES (2, 108); -INSERT INTO `sys_role_menu` VALUES (2, 109); -INSERT INTO `sys_role_menu` VALUES (2, 110); -INSERT INTO `sys_role_menu` VALUES (2, 111); -INSERT INTO `sys_role_menu` VALUES (2, 112); -INSERT INTO `sys_role_menu` VALUES (2, 113); -INSERT INTO `sys_role_menu` VALUES (2, 114); -INSERT INTO `sys_role_menu` VALUES (2, 115); -INSERT INTO `sys_role_menu` VALUES (2, 500); -INSERT INTO `sys_role_menu` VALUES (2, 501); -INSERT INTO `sys_role_menu` VALUES (2, 1000); -INSERT INTO `sys_role_menu` VALUES (2, 1001); -INSERT INTO `sys_role_menu` VALUES (2, 1002); -INSERT INTO `sys_role_menu` VALUES (2, 1003); -INSERT INTO `sys_role_menu` VALUES (2, 1004); -INSERT INTO `sys_role_menu` VALUES (2, 1005); -INSERT INTO `sys_role_menu` VALUES (2, 1006); -INSERT INTO `sys_role_menu` VALUES (2, 1007); -INSERT INTO `sys_role_menu` VALUES (2, 1008); -INSERT INTO `sys_role_menu` VALUES (2, 1009); -INSERT INTO `sys_role_menu` VALUES (2, 1010); -INSERT INTO `sys_role_menu` VALUES (2, 1011); -INSERT INTO `sys_role_menu` VALUES (2, 1012); -INSERT INTO `sys_role_menu` VALUES (2, 1013); -INSERT INTO `sys_role_menu` VALUES (2, 1014); -INSERT INTO `sys_role_menu` VALUES (2, 1015); -INSERT INTO `sys_role_menu` VALUES (2, 1016); -INSERT INTO `sys_role_menu` VALUES (2, 1017); -INSERT INTO `sys_role_menu` VALUES (2, 1018); -INSERT INTO `sys_role_menu` VALUES (2, 1019); -INSERT INTO `sys_role_menu` VALUES (2, 1020); -INSERT INTO `sys_role_menu` VALUES (2, 1021); -INSERT INTO `sys_role_menu` VALUES (2, 1022); -INSERT INTO `sys_role_menu` VALUES (2, 1023); -INSERT INTO `sys_role_menu` VALUES (2, 1024); -INSERT INTO `sys_role_menu` VALUES (2, 1025); -INSERT INTO `sys_role_menu` VALUES (2, 1026); -INSERT INTO `sys_role_menu` VALUES (2, 1027); -INSERT INTO `sys_role_menu` VALUES (2, 1028); -INSERT INTO `sys_role_menu` VALUES (2, 1029); -INSERT INTO `sys_role_menu` VALUES (2, 1030); -INSERT INTO `sys_role_menu` VALUES (2, 1031); -INSERT INTO `sys_role_menu` VALUES (2, 1032); -INSERT INTO `sys_role_menu` VALUES (2, 1033); -INSERT INTO `sys_role_menu` VALUES (2, 1034); -INSERT INTO `sys_role_menu` VALUES (2, 1035); -INSERT INTO `sys_role_menu` VALUES (2, 1036); -INSERT INTO `sys_role_menu` VALUES (2, 1037); -INSERT INTO `sys_role_menu` VALUES (2, 1038); -INSERT INTO `sys_role_menu` VALUES (2, 1039); -INSERT INTO `sys_role_menu` VALUES (2, 1040); -INSERT INTO `sys_role_menu` VALUES (2, 1041); -INSERT INTO `sys_role_menu` VALUES (2, 1042); -INSERT INTO `sys_role_menu` VALUES (2, 1043); -INSERT INTO `sys_role_menu` VALUES (2, 1044); -INSERT INTO `sys_role_menu` VALUES (2, 1045); -INSERT INTO `sys_role_menu` VALUES (2, 1046); -INSERT INTO `sys_role_menu` VALUES (2, 1047); -INSERT INTO `sys_role_menu` VALUES (2, 1048); -INSERT INTO `sys_role_menu` VALUES (2, 1049); -INSERT INTO `sys_role_menu` VALUES (2, 1050); -INSERT INTO `sys_role_menu` VALUES (2, 1051); -INSERT INTO `sys_role_menu` VALUES (2, 1052); -INSERT INTO `sys_role_menu` VALUES (2, 1053); -INSERT INTO `sys_role_menu` VALUES (2, 1054); -INSERT INTO `sys_role_menu` VALUES (2, 1055); -INSERT INTO `sys_role_menu` VALUES (2, 1056); -INSERT INTO `sys_role_menu` VALUES (2, 1057); -INSERT INTO `sys_role_menu` VALUES (2, 1058); -INSERT INTO `sys_role_menu` VALUES (2, 1059); -INSERT INTO `sys_role_menu` VALUES (2, 1060); - --- ---------------------------- --- Table structure for sys_user --- ---------------------------- -DROP TABLE IF EXISTS `sys_user`; -CREATE TABLE `sys_user` ( - `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID', - `dept_id` bigint(20) NULL DEFAULT NULL COMMENT '部门ID', - `login_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '登录账号', - `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称', - `user_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '00' COMMENT '用户类型(00系统用户)', - `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户邮箱', - `phonenumber` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '手机号码', - `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', - `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像路径', - `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码', - `salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '盐加密', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '最后登陆IP', - `login_date` datetime(0) NULL DEFAULT NULL COMMENT '最后登陆时间', - `pwd_update_date` datetime(0) NULL DEFAULT NULL, - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user --- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 103, 'admin', '供货商城', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', '2021-06-18 17:06:16', NULL, 'admin', '2018-03-16 11:33:00', 'ry', '2021-06-18 17:06:15', '管理员'); -INSERT INTO `sys_user` VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', '2018-03-16 11:33:00', NULL, 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '测试员'); - --- ---------------------------- --- Table structure for sys_user_online --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_online`; -CREATE TABLE `sys_user_online` ( - `sessionId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户会话id', - `login_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录账号', - `dept_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '部门名称', - `ipaddr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录IP地址', - `login_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '登录地点', - `browser` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '浏览器类型', - `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作系统', - `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '在线状态on_line在线off_line离线', - `start_timestamp` datetime(0) NULL DEFAULT NULL COMMENT 'session创建时间', - `last_access_time` datetime(0) NULL DEFAULT NULL COMMENT 'session最后访问时间', - `expire_time` int(5) NULL DEFAULT 0 COMMENT '超时时间,单位为分钟', - PRIMARY KEY (`sessionId`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '在线用户记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_online --- ---------------------------- -INSERT INTO `sys_user_online` VALUES ('037e7ccd-2bba-4490-9059-f81c5f13bc1c', 'admin', '研发部门', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10', 'on_line', '2021-06-18 16:51:43', '2021-06-18 17:06:16', 1800000); - --- ---------------------------- --- Table structure for sys_user_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_post`; -CREATE TABLE `sys_user_post` ( - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `post_id` bigint(20) NOT NULL COMMENT '岗位ID', - PRIMARY KEY (`user_id`, `post_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户与岗位关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_post --- ---------------------------- -INSERT INTO `sys_user_post` VALUES (1, 1); -INSERT INTO `sys_user_post` VALUES (2, 2); - --- ---------------------------- --- Table structure for sys_user_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_role`; -CREATE TABLE `sys_user_role` ( - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_role --- ---------------------------- -INSERT INTO `sys_user_role` VALUES (1, 1); -INSERT INTO `sys_user_role` VALUES (2, 2); - --- ---------------------------- --- Table structure for wechat_fans --- ---------------------------- -DROP TABLE IF EXISTS `wechat_fans`; -CREATE TABLE `wechat_fans` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `appid` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '公众号Appid', - `unionid` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT 'unionid', - `openid` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户的标识,对当前公众号唯一', - `spread_openid` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '推荐人OPENID', - `spread_at` datetime(0) NULL DEFAULT NULL COMMENT '推荐时间', - `tagid_list` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '标签id', - `is_black` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否为黑名单用户', - `subscribe` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '用户是否关注该公众号(0:未关注, 1:已关注)', - `nickname` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户的昵称', - `sex` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '用户的性别,值为1时是男性,值为2时是女性,值为0时是未知', - `country` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户所在国家', - `province` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户所在省份', - `city` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户所在城市', - `language` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户的语言,简体中文为zh_CN', - `headimgurl` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户头像', - `subscribe_time` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '用户关注时间', - `subscribe_at` datetime(0) NULL DEFAULT NULL COMMENT '关注时间', - `remark` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', - `expires_in` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '有效时间', - `refresh_token` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '刷新token', - `access_token` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '访问token', - `subscribe_scene` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '扫码关注场景', - `qr_scene` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '二维码场景值', - `qr_scene_str` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '二维码场景内容', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_fans_spread_openid`(`spread_openid`) USING BTREE, - INDEX `index_wechat_fans_openid`(`openid`) USING BTREE, - INDEX `index_wechat_fans_unionid`(`unionid`) USING BTREE, - INDEX `index_wechat_fans_is_back`(`is_black`) USING BTREE, - INDEX `index_wechat_fans_subscribe`(`subscribe`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信粉丝' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for wechat_fans_tags --- ---------------------------- -DROP TABLE IF EXISTS `wechat_fans_tags`; -CREATE TABLE `wechat_fans_tags` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '标签ID', - `appid` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公众号APPID', - `name` varchar(35) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签名称', - `count` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '总数', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', - INDEX `index_wechat_fans_tags_id`(`id`) USING BTREE, - INDEX `index_wechat_fans_tags_appid`(`appid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信会员标签' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for wechat_keys --- ---------------------------- -DROP TABLE IF EXISTS `wechat_keys`; -CREATE TABLE `wechat_keys` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `appid` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '公众号APPID', - `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型,text 文件消息,image 图片消息,news 图文消息', - `keys` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关键字', - `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文本内容', - `image_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '图片链接', - `voice_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '语音链接', - `music_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '音乐标题', - `music_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '音乐链接', - `music_image` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '音乐缩略图链接', - `music_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '音乐描述', - `video_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '视频标题', - `video_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '视频URL', - `video_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '视频描述', - `news_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '图文ID', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序字段', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '0 禁用,1 启用', - `create_by` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '创建人', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_keys_appid`(`appid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信关键字' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for wechat_menu --- ---------------------------- -DROP TABLE IF EXISTS `wechat_menu`; -CREATE TABLE `wechat_menu` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `index` bigint(20) NULL DEFAULT NULL, - `pindex` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '父id', - `type` varchar(24) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '菜单类型 null主菜单 link链接 keys关键字', - `name` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '菜单名称', - `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文字内容', - `sort` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '排序', - `status` tinyint(1) UNSIGNED NULL DEFAULT 1 COMMENT '状态(0禁用1启用)', - `create_by` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建人', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_menu_pindex`(`pindex`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信菜单配置' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for wechat_news --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news`; -CREATE TABLE `wechat_news` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `media_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '永久素材MediaID', - `local_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '永久素材显示URL', - `article_id` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '关联图文ID,用,号做分割', - `is_deleted` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否删除', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_news_artcle_id`(`article_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信图文表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of wechat_news --- ---------------------------- -INSERT INTO `wechat_news` VALUES (1, '', '', '1', 0, '2018-07-15 21:36:33', 10000); -INSERT INTO `wechat_news` VALUES (2, '', '', '2', 0, '2018-09-19 10:04:02', 10000); -INSERT INTO `wechat_news` VALUES (3, '', '', '4', 1, '2018-09-20 16:29:47', 10000); - --- ---------------------------- --- Table structure for wechat_news_article --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news_article`; -CREATE TABLE `wechat_news_article` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '素材标题', - `local_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '永久素材显示URL', - `show_cover_pic` tinyint(4) UNSIGNED NULL DEFAULT 0 COMMENT '是否显示封面 0不显示,1 显示', - `author` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '作者', - `digest` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '摘要内容', - `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '图文内容', - `content_source_url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '图文消息原文地址', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信素材表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of wechat_news_article --- ---------------------------- -INSERT INTO `wechat_news_article` VALUES (1, '夏至将来凉席哦', 'https://admin.mijia321.com/static/upload/bcfec6027befdc6f/56297a17c45b6fef.png', 0, 'hupeng', '规格摘要规格摘要规格摘要规格摘要规格摘要规格摘要规格摘要规格摘要', '

', '', '2018-09-28 14:28:23', 10000); -INSERT INTO `wechat_news_article` VALUES (2, '这里是标题', 'https://admin.mijia321.com/static/upload/593fab60868bfd61/3e6219d4ad6fe91a.jpg', 1, '作者', '我是摘要', '

', '', '2018-09-28 16:40:49', 10000); - --- ---------------------------- --- Table structure for wechat_news_image --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news_image`; -CREATE TABLE `wechat_news_image` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '文件md5', - `local_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '本地文件链接', - `media_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '远程图片链接', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `index_wechat_news_image_md5`(`md5`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信服务器图片' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for wechat_news_media --- ---------------------------- -DROP TABLE IF EXISTS `wechat_news_media`; -CREATE TABLE `wechat_news_media` ( - `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `appid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '公众号ID', - `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '文件md5', - `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '媒体类型', - `media_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '永久素材MediaID', - `local_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '本地文件链接', - `media_url` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '远程图片链接', - `create_at` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信素材表' ROW_FORMAT = Dynamic; - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/supplier-admin/pom.xml b/supplier-admin/pom.xml deleted file mode 100644 index 83b47f0..0000000 --- a/supplier-admin/pom.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - supplier - co.yixiang - 2.0.0 - - 4.0.0 - jar - supplier-admin - - - web服务入口 - - - - - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - - - org.springframework.boot - spring-boot-devtools - true - - - - - io.springfox - springfox-swagger2 - - - - - io.swagger - swagger-annotations - 1.5.21 - - - - io.swagger - swagger-models - 1.5.21 - - - - - io.springfox - springfox-swagger-ui - - - - - mysql - mysql-connector-java - - - - - co.yixiang - supplier-framework - - - - - co.yixiang - supplier-quartz - - - - - co.yixiang - supplier-generator - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - 2.1.1.RELEASE - - true - - - - - repackage - - - - - - org.apache.maven.plugins - maven-war-plugin - 3.0.0 - - false - ${project.artifactId} - - - - - ${project.artifactId} - - - \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/AdminApplication.java b/supplier-admin/src/main/java/co/yixiang/AdminApplication.java deleted file mode 100644 index 40764d8..0000000 --- a/supplier-admin/src/main/java/co/yixiang/AdminApplication.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.yixiang; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; - -/** - * 启动程序 - * - * @author ruoyi - */ -@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) -public class AdminApplication -{ - public static void main(String[] args) - { - // System.setProperty("spring.devtools.restart.enabled", "false"); - SpringApplication.run(AdminApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ ========== ლ(´ڡ`ლ)゙ \n" + - "\n管理端启动成功 \n官网:https://www.yixiang.co 提供技术支持゙ \n"); - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/AdminServletInitializer.java b/supplier-admin/src/main/java/co/yixiang/AdminServletInitializer.java deleted file mode 100644 index acd7320..0000000 --- a/supplier-admin/src/main/java/co/yixiang/AdminServletInitializer.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang; - -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; - -/** - * web容器中进行部署 - * - * @author ruoyi - */ -public class AdminServletInitializer extends SpringBootServletInitializer -{ - @Override - protected SpringApplicationBuilder configure(SpringApplicationBuilder application) - { - return application.sources(AdminApplication.class); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/common/CommonController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/common/CommonController.java deleted file mode 100644 index 0e3088b..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/common/CommonController.java +++ /dev/null @@ -1,120 +0,0 @@ -package co.yixiang.web.controller.common; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; -import co.yixiang.common.config.RuoYiConfig; -import co.yixiang.common.config.ServerConfig; -import co.yixiang.common.constant.Constants; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.utils.file.FileUploadUtils; -import co.yixiang.common.utils.file.FileUtils; - -/** - * 通用请求处理 - * - * @author ruoyi - */ -@Controller -public class CommonController -{ - private static final Logger log = LoggerFactory.getLogger(CommonController.class); - - @Autowired - private ServerConfig serverConfig; - - /** - * 通用下载请求 - * - * @param fileName 文件名称 - * @param delete 是否删除 - */ - @GetMapping("common/download") - public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) - { - try - { - if (!FileUtils.checkAllowDownload(fileName)) - { - throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); - } - String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); - String filePath = RuoYiConfig.getDownloadPath() + fileName; - - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - FileUtils.setAttachmentResponseHeader(response, realFileName); - FileUtils.writeBytes(filePath, response.getOutputStream()); - if (delete) - { - FileUtils.deleteFile(filePath); - } - } - catch (Exception e) - { - log.error("下载文件失败", e); - } - } - - /** - * 通用上传请求 - */ - @PostMapping("/common/upload") - @ResponseBody - public AjaxResult uploadFile(MultipartFile file) throws Exception - { - try - { - // 上传文件路径 - String filePath = RuoYiConfig.getUploadPath(); - // 上传并返回新文件名称 - String fileName = FileUploadUtils.upload(filePath, file); - String url = serverConfig.getUrl() + fileName; - AjaxResult ajax = AjaxResult.success(); - ajax.put("fileName", fileName); - ajax.put("url", url); - return ajax; - } - catch (Exception e) - { - return AjaxResult.error(e.getMessage()); - } - } - - /** - * 本地资源通用下载 - */ - @GetMapping("/common/download/resource") - public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) - throws Exception - { - try - { - if (!FileUtils.checkAllowDownload(resource)) - { - throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); - } - // 本地资源路径 - String localPath = RuoYiConfig.getProfile(); - // 数据库资源地址 - String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); - // 下载名称 - String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - FileUtils.setAttachmentResponseHeader(response, downloadName); - FileUtils.writeBytes(downloadPath, response.getOutputStream()); - } - catch (Exception e) - { - log.error("下载文件失败", e); - } - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoDialogController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoDialogController.java deleted file mode 100644 index e7fa275..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoDialogController.java +++ /dev/null @@ -1,80 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -/** - * 模态窗口 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/modal") -public class DemoDialogController -{ - private String prefix = "demo/modal"; - - /** - * 模态窗口 - */ - @GetMapping("/dialog") - public String dialog() - { - return prefix + "/dialog"; - } - - /** - * 弹层组件 - */ - @GetMapping("/layer") - public String layer() - { - return prefix + "/layer"; - } - - /** - * 表单 - */ - @GetMapping("/form") - public String form() - { - return prefix + "/form"; - } - - /** - * 表格 - */ - @GetMapping("/table") - public String table() - { - return prefix + "/table"; - } - - /** - * 表格check - */ - @GetMapping("/check") - public String check() - { - return prefix + "/table/check"; - } - - /** - * 表格radio - */ - @GetMapping("/radio") - public String radio() - { - return prefix + "/table/radio"; - } - - /** - * 表格回传父窗体 - */ - @GetMapping("/parent") - public String parent() - { - return prefix + "/table/parent"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoFormController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoFormController.java deleted file mode 100644 index e2e0895..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoFormController.java +++ /dev/null @@ -1,390 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import java.util.ArrayList; -import java.util.List; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import com.alibaba.fastjson.JSON; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.CxSelect; -import co.yixiang.common.json.JSONObject; -import co.yixiang.common.json.JSONObject.JSONArray; -import co.yixiang.common.utils.StringUtils; - -/** - * 表单相关 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/form") -public class DemoFormController -{ - private String prefix = "demo/form"; - - private final static List users = new ArrayList(); - { - users.add(new UserFormModel(1, "1000001", "测试1", "15888888888")); - users.add(new UserFormModel(2, "1000002", "测试2", "15666666666")); - users.add(new UserFormModel(3, "1000003", "测试3", "15666666666")); - users.add(new UserFormModel(4, "1000004", "测试4", "15666666666")); - users.add(new UserFormModel(5, "1000005", "测试5", "15666666666")); - } - - /** - * 按钮页 - */ - @GetMapping("/button") - public String button() - { - return prefix + "/button"; - } - - /** - * 下拉框 - */ - @GetMapping("/select") - public String select() - { - return prefix + "/select"; - } - - /** - * 时间轴 - */ - @GetMapping("/timeline") - public String timeline() - { - return prefix + "/timeline"; - } - - /** - * 表单校验 - */ - @GetMapping("/validate") - public String validate() - { - return prefix + "/validate"; - } - - /** - * 功能扩展(包含文件上传) - */ - @GetMapping("/jasny") - public String jasny() - { - return prefix + "/jasny"; - } - - /** - * 拖动排序 - */ - @GetMapping("/sortable") - public String sortable() - { - return prefix + "/sortable"; - } - - /** - * 单据打印 - */ - @GetMapping("/invoice") - public String invoice() - { - return prefix + "/invoice"; - } - - /** - * 标签 & 提示 - */ - @GetMapping("/labels_tips") - public String labels_tips() - { - return prefix + "/labels_tips"; - } - - /** - * 选项卡 & 面板 - */ - @GetMapping("/tabs_panels") - public String tabs_panels() - { - return prefix + "/tabs_panels"; - } - - /** - * 栅格 - */ - @GetMapping("/grid") - public String grid() - { - return prefix + "/grid"; - } - - /** - * 表单向导 - */ - @GetMapping("/wizard") - public String wizard() - { - return prefix + "/wizard"; - } - - /** - * 文件上传 - */ - @GetMapping("/upload") - public String upload() - { - return prefix + "/upload"; - } - - /** - * 日期和时间页 - */ - @GetMapping("/datetime") - public String datetime() - { - return prefix + "/datetime"; - } - - /** - * 左右互选组件 - */ - @GetMapping("/duallistbox") - public String duallistbox() - { - return prefix + "/duallistbox"; - } - - /** - * 基本表单 - */ - @GetMapping("/basic") - public String basic() - { - return prefix + "/basic"; - } - - /** - * 卡片列表 - */ - @GetMapping("/cards") - public String cards() - { - return prefix + "/cards"; - } - - /** - * summernote 富文本编辑器 - */ - @GetMapping("/summernote") - public String summernote() - { - return prefix + "/summernote"; - } - - /** - * 搜索自动补全 - */ - @GetMapping("/autocomplete") - public String autocomplete() - { - return prefix + "/autocomplete"; - } - - /** - * 多级联动下拉 - */ - @GetMapping("/cxselect") - public String cxselect(ModelMap mmap) - { - CxSelect cxSelectTB = new CxSelect(); - cxSelectTB.setN("淘宝"); - cxSelectTB.setV("taobao"); - CxSelect cxSelectTm = new CxSelect(); - cxSelectTm.setN("天猫"); - cxSelectTm.setV("tm"); - CxSelect cxSelectJhs = new CxSelect(); - cxSelectJhs.setN("聚划算"); - cxSelectJhs.setV("jhs"); - List tmList = new ArrayList(); - tmList.add(cxSelectTm); - tmList.add(cxSelectJhs); - cxSelectTB.setS(tmList); - - CxSelect cxSelectJD = new CxSelect(); - cxSelectJD.setN("京东"); - cxSelectJD.setV("jd"); - CxSelect cxSelectCs = new CxSelect(); - cxSelectCs.setN("京东超市"); - cxSelectCs.setV("jdcs"); - CxSelect cxSelectSx = new CxSelect(); - cxSelectSx.setN("京东生鲜"); - cxSelectSx.setV("jdsx"); - List jdList = new ArrayList(); - jdList.add(cxSelectCs); - jdList.add(cxSelectSx); - cxSelectJD.setS(jdList); - - List cxList = new ArrayList(); - cxList.add(cxSelectTB); - cxList.add(cxSelectJD); - - mmap.put("data", JSON.toJSON(cxList)); - return prefix + "/cxselect"; - } - - /** - * 局部刷新 - */ - @GetMapping("/localrefresh") - public String localRefresh(ModelMap mmap) - { - JSONArray list = new JSONArray(); - JSONObject item = new JSONObject(); - item.put("name", "这条任务数据是由ModelMap传递到页面的,点击添加按钮后会将这条数据替换为新数据"); - item.put("type", "默认"); - item.put("date", "2020.06.10"); - list.add(item); - mmap.put("tasks", list); - mmap.put("min", 2); - mmap.put("max", 10); - return prefix + "/localrefresh"; - } - - /** - * 局部刷新-添加任务 - * - * @param fragment 页面中的模板名称 - * @param taskName 任务名称 - */ - @PostMapping("/localrefresh/task") - public String localRefreshTask(String fragment, String taskName, ModelMap mmap) - { - JSONArray list = new JSONArray(); - JSONObject item = new JSONObject(); - item.put("name", StringUtils.defaultIfBlank(taskName, "通过电话销售过程中了解各盛市的设备仪器使用、采购情况及相关重要追踪人")); - item.put("type", "新增"); - item.put("date", "2018.06.10"); - list.add(item); - item = new JSONObject(); - item.put("name", "提高自己电话营销技巧,灵活专业地与客户进行电话交流"); - item.put("type", "新增"); - item.put("date", "2018.06.12"); - list.add(item); - mmap.put("tasks", list); - return prefix + "/localrefresh::" + fragment; - } - - /** - * 模拟数据 - */ - @GetMapping("/cityData") - @ResponseBody - public String cityData() - { - String data = "[{\"n\":\"湖南省\",\"s\":[{\"n\":\"长沙市\",\"s\":[{\"n\":\"芙蓉区\"},{\"n\":\"天心区\"},{\"n\":\"岳麓区\"},{\"n\":\"开福区\"},{\"n\":\"雨花区\"},{\"n\":\"望城区\"},{\"n\":\"长沙县\"},{\"n\":\"宁乡县\"},{\"n\":\"浏阳市\"}]},{\"n\":\"株洲市\",\"s\":[{\"n\":\"荷塘区\"},{\"n\":\"芦淞区\"},{\"n\":\"石峰区\"},{\"n\":\"天元区\"},{\"n\":\"株洲县\"},{\"n\":\"攸县\"},{\"n\":\"茶陵县\"},{\"n\":\"炎陵县\"},{\"n\":\"醴陵市\"}]},{\"n\":\"湘潭市\",\"s\":[{\"n\":\"雨湖区\"},{\"n\":\"岳塘区\"},{\"n\":\"湘潭县\"},{\"n\":\"湘乡市\"},{\"n\":\"韶山市\"}]},{\"n\":\"衡阳市\",\"s\":[{\"n\":\"珠晖区\"},{\"n\":\"雁峰区\"},{\"n\":\"石鼓区\"},{\"n\":\"蒸湘区\"},{\"n\":\"南岳区\"},{\"n\":\"衡阳县\"},{\"n\":\"衡南县\"},{\"n\":\"衡山县\"},{\"n\":\"衡东县\"},{\"n\":\"祁东县\"},{\"n\":\"耒阳市\"},{\"n\":\"常宁市\"}]},{\"n\":\"邵阳市\",\"s\":[{\"n\":\"双清区\"},{\"n\":\"大祥区\"},{\"n\":\"北塔区\"},{\"n\":\"邵东县\"},{\"n\":\"新邵县\"},{\"n\":\"邵阳县\"},{\"n\":\"隆回县\"},{\"n\":\"洞口县\"},{\"n\":\"绥宁县\"},{\"n\":\"新宁县\"},{\"n\":\"城步苗族自治县\"},{\"n\":\"武冈市\"}]},{\"n\":\"岳阳市\",\"s\":[{\"n\":\"岳阳楼区\"},{\"n\":\"云溪区\"},{\"n\":\"君山区\"},{\"n\":\"岳阳县\"},{\"n\":\"华容县\"},{\"n\":\"湘阴县\"},{\"n\":\"平江县\"},{\"n\":\"汨罗市\"},{\"n\":\"临湘市\"}]},{\"n\":\"常德市\",\"s\":[{\"n\":\"武陵区\"},{\"n\":\"鼎城区\"},{\"n\":\"安乡县\"},{\"n\":\"汉寿县\"},{\"n\":\"澧县\"},{\"n\":\"临澧县\"},{\"n\":\"桃源县\"},{\"n\":\"石门县\"},{\"n\":\"津市市\"}]},{\"n\":\"张家界市\",\"s\":[{\"n\":\"永定区\"},{\"n\":\"武陵源区\"},{\"n\":\"慈利县\"},{\"n\":\"桑植县\"}]},{\"n\":\"益阳市\",\"s\":[{\"n\":\"资阳区\"},{\"n\":\"赫山区\"},{\"n\":\"南县\"},{\"n\":\"桃江县\"},{\"n\":\"安化县\"},{\"n\":\"沅江市\"}]},{\"n\":\"郴州市\",\"s\":[{\"n\":\"北湖区\"},{\"n\":\"苏仙区\"},{\"n\":\"桂阳县\"},{\"n\":\"宜章县\"},{\"n\":\"永兴县\"},{\"n\":\"嘉禾县\"},{\"n\":\"临武县\"},{\"n\":\"汝城县\"},{\"n\":\"桂东县\"},{\"n\":\"安仁县\"},{\"n\":\"资兴市\"}]},{\"n\":\"永州市\",\"s\":[{\"n\":\"零陵区\"},{\"n\":\"冷水滩区\"},{\"n\":\"祁阳县\"},{\"n\":\"东安县\"},{\"n\":\"双牌县\"},{\"n\":\"道县\"},{\"n\":\"江永县\"},{\"n\":\"宁远县\"},{\"n\":\"蓝山县\"},{\"n\":\"新田县\"},{\"n\":\"江华瑶族自治县\"}]},{\"n\":\"怀化市\",\"s\":[{\"n\":\"鹤城区\"},{\"n\":\"中方县\"},{\"n\":\"沅陵县\"},{\"n\":\"辰溪县\"},{\"n\":\"溆浦县\"},{\"n\":\"会同县\"},{\"n\":\"麻阳苗族自治县\"},{\"n\":\"新晃侗族自治县\"},{\"n\":\"芷江侗族自治县\"},{\"n\":\"靖州苗族侗族自治县\"},{\"n\":\"通道侗族自治县\"},{\"n\":\"洪江市\"}]},{\"n\":\"娄底市\",\"s\":[{\"n\":\"娄星区\"},{\"n\":\"双峰县\"},{\"n\":\"新化县\"},{\"n\":\"冷水江市\"},{\"n\":\"涟源市\"}]},{\"n\":\"湘西土家族苗族自治州\",\"s\":[{\"n\":\"吉首市\"},{\"n\":\"泸溪县\"},{\"n\":\"凤凰县\"},{\"n\":\"花垣县\"},{\"n\":\"保靖县\"},{\"n\":\"古丈县\"},{\"n\":\"永顺县\"},{\"n\":\"龙山县\"}]}]},{\"n\":\"广东省\",\"s\":[{\"n\":\"广州市\",\"s\":[{\"n\":\"荔湾区\"},{\"n\":\"越秀区\"},{\"n\":\"海珠区\"},{\"n\":\"天河区\"},{\"n\":\"白云区\"},{\"n\":\"黄埔区\"},{\"n\":\"番禺区\"},{\"n\":\"花都区\"},{\"n\":\"南沙区\"},{\"n\":\"萝岗区\"},{\"n\":\"增城市\"},{\"n\":\"从化市\"}]},{\"n\":\"韶关市\",\"s\":[{\"n\":\"武江区\"},{\"n\":\"浈江区\"},{\"n\":\"曲江区\"},{\"n\":\"始兴县\"},{\"n\":\"仁化县\"},{\"n\":\"翁源县\"},{\"n\":\"乳源瑶族自治县\"},{\"n\":\"新丰县\"},{\"n\":\"乐昌市\"},{\"n\":\"南雄市\"}]},{\"n\":\"深圳市\",\"s\":[{\"n\":\"罗湖区\"},{\"n\":\"福田区\"},{\"n\":\"南山区\"},{\"n\":\"宝安区\"},{\"n\":\"龙岗区\"},{\"n\":\"盐田区\"}]},{\"n\":\"珠海市\",\"s\":[{\"n\":\"香洲区\"},{\"n\":\"斗门区\"},{\"n\":\"金湾区\"}]},{\"n\":\"汕头市\",\"s\":[{\"n\":\"龙湖区\"},{\"n\":\"金平区\"},{\"n\":\"濠江区\"},{\"n\":\"潮阳区\"},{\"n\":\"潮南区\"},{\"n\":\"澄海区\"},{\"n\":\"南澳县\"}]},{\"n\":\"佛山市\",\"s\":[{\"n\":\"禅城区\"},{\"n\":\"南海区\"},{\"n\":\"顺德区\"},{\"n\":\"三水区\"},{\"n\":\"高明区\"}]},{\"n\":\"江门市\",\"s\":[{\"n\":\"蓬江区\"},{\"n\":\"江海区\"},{\"n\":\"新会区\"},{\"n\":\"台山市\"},{\"n\":\"开平市\"},{\"n\":\"鹤山市\"},{\"n\":\"恩平市\"}]},{\"n\":\"湛江市\",\"s\":[{\"n\":\"赤坎区\"},{\"n\":\"霞山区\"},{\"n\":\"坡头区\"},{\"n\":\"麻章区\"},{\"n\":\"遂溪县\"},{\"n\":\"徐闻县\"},{\"n\":\"廉江市\"},{\"n\":\"雷州市\"},{\"n\":\"吴川市\"}]},{\"n\":\"茂名市\",\"s\":[{\"n\":\"茂南区\"},{\"n\":\"茂港区\"},{\"n\":\"电白县\"},{\"n\":\"高州市\"},{\"n\":\"化州市\"},{\"n\":\"信宜市\"}]},{\"n\":\"肇庆市\",\"s\":[{\"n\":\"端州区\"},{\"n\":\"鼎湖区\"},{\"n\":\"广宁县\"},{\"n\":\"怀集县\"},{\"n\":\"封开县\"},{\"n\":\"德庆县\"},{\"n\":\"高要市\"},{\"n\":\"四会市\"}]},{\"n\":\"惠州市\",\"s\":[{\"n\":\"惠城区\"},{\"n\":\"惠阳区\"},{\"n\":\"博罗县\"},{\"n\":\"惠东县\"},{\"n\":\"龙门县\"}]},{\"n\":\"梅州市\",\"s\":[{\"n\":\"梅江区\"},{\"n\":\"梅县\"},{\"n\":\"大埔县\"},{\"n\":\"丰顺县\"},{\"n\":\"五华县\"},{\"n\":\"平远县\"},{\"n\":\"蕉岭县\"},{\"n\":\"兴宁市\"}]},{\"n\":\"汕尾市\",\"s\":[{\"n\":\"城区\"},{\"n\":\"海丰县\"},{\"n\":\"陆河县\"},{\"n\":\"陆丰市\"}]},{\"n\":\"河源市\",\"s\":[{\"n\":\"源城区\"},{\"n\":\"紫金县\"},{\"n\":\"龙川县\"},{\"n\":\"连平县\"},{\"n\":\"和平县\"},{\"n\":\"东源县\"}]},{\"n\":\"阳江市\",\"s\":[{\"n\":\"江城区\"},{\"n\":\"阳西县\"},{\"n\":\"阳东县\"},{\"n\":\"阳春市\"}]},{\"n\":\"清远市\",\"s\":[{\"n\":\"清城区\"},{\"n\":\"清新区\"},{\"n\":\"佛冈县\"},{\"n\":\"阳山县\"},{\"n\":\"连山壮族瑶族自治县\"},{\"n\":\"连南瑶族自治县\"},{\"n\":\"英德市\"},{\"n\":\"连州市\"}]},{\"n\":\"东莞市\"},{\"n\":\"中山市\"},{\"n\":\"潮州市\",\"s\":[{\"n\":\"湘桥区\"},{\"n\":\"潮安区\"},{\"n\":\"饶平县\"}]},{\"n\":\"揭阳市\",\"s\":[{\"n\":\"榕城区\"},{\"n\":\"揭东区\"},{\"n\":\"揭西县\"},{\"n\":\"惠来县\"},{\"n\":\"普宁市\"}]},{\"n\":\"云浮市\",\"s\":[{\"n\":\"云城区\"},{\"n\":\"新兴县\"},{\"n\":\"郁南县\"},{\"n\":\"云安县\"},{\"n\":\"罗定市\"}]}]}]"; - return data; - } - - /** - * 获取用户数据 - */ - @GetMapping("/userModel") - @ResponseBody - public AjaxResult userModel() - { - AjaxResult ajax = new AjaxResult(); - - ajax.put("code", 200); - ajax.put("value", users); - return ajax; - } - - /** - * 获取数据集合 - */ - @GetMapping("/collection") - @ResponseBody - public AjaxResult collection() - { - String[] array = { "ruoyi 1", "ruoyi 2", "ruoyi 3", "ruoyi 4", "ruoyi 5" }; - AjaxResult ajax = new AjaxResult(); - ajax.put("value", array); - return ajax; - } -} - -class UserFormModel -{ - /** 用户ID */ - private int userId; - - /** 用户编号 */ - private String userCode; - - /** 用户姓名 */ - private String userName; - - /** 用户手机 */ - private String userPhone; - - public UserFormModel() - { - - } - - public UserFormModel(int userId, String userCode, String userName, String userPhone) - { - this.userId = userId; - this.userCode = userCode; - this.userName = userName; - this.userPhone = userPhone; - } - - public int getUserId() - { - return userId; - } - - public void setUserId(int userId) - { - this.userId = userId; - } - - public String getUserCode() - { - return userCode; - } - - public void setUserCode(String userCode) - { - this.userCode = userCode; - } - - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - public String getUserPhone() - { - return userPhone; - } - - public void setUserPhone(String userPhone) - { - this.userPhone = userPhone; - } - -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoIconController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoIconController.java deleted file mode 100644 index 41dfe34..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoIconController.java +++ /dev/null @@ -1,35 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -/** - * 图标相关 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/icon") -public class DemoIconController -{ - private String prefix = "demo/icon"; - - /** - * FontAwesome图标 - */ - @GetMapping("/fontawesome") - public String fontAwesome() - { - return prefix + "/fontawesome"; - } - - /** - * Glyphicons图标 - */ - @GetMapping("/glyphicons") - public String glyphicons() - { - return prefix + "/glyphicons"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoOperateController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoOperateController.java deleted file mode 100644 index 5a076ef..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoOperateController.java +++ /dev/null @@ -1,329 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import co.yixiang.web.controller.demo.domain.CustomerModel; -import co.yixiang.web.controller.demo.domain.UserOperateModel; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.PageDomain; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.core.page.TableSupport; -import co.yixiang.common.core.text.Convert; -import co.yixiang.common.exception.BusinessException; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.web.controller.demo.domain.CustomerModel; -import co.yixiang.web.controller.demo.domain.UserOperateModel; - -/** - * 操作控制 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/operate") -public class DemoOperateController extends BaseController -{ - private String prefix = "demo/operate"; - - private final static Map users = new LinkedHashMap(); - { - users.put(1, new UserOperateModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0")); - users.put(2, new UserOperateModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1")); - users.put(3, new UserOperateModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1")); - users.put(4, new UserOperateModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1")); - users.put(5, new UserOperateModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1")); - users.put(6, new UserOperateModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1")); - users.put(7, new UserOperateModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1")); - users.put(8, new UserOperateModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1")); - users.put(9, new UserOperateModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1")); - users.put(10, new UserOperateModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1")); - users.put(11, new UserOperateModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1")); - users.put(12, new UserOperateModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1")); - users.put(13, new UserOperateModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1")); - users.put(14, new UserOperateModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1")); - users.put(15, new UserOperateModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1")); - users.put(16, new UserOperateModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1")); - users.put(17, new UserOperateModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1")); - users.put(18, new UserOperateModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1")); - users.put(19, new UserOperateModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1")); - users.put(20, new UserOperateModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1")); - users.put(21, new UserOperateModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1")); - users.put(22, new UserOperateModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1")); - users.put(23, new UserOperateModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1")); - users.put(24, new UserOperateModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1")); - users.put(25, new UserOperateModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1")); - users.put(26, new UserOperateModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1")); - } - - /** - * 表格 - */ - @GetMapping("/table") - public String table() - { - return prefix + "/table"; - } - - /** - * 其他 - */ - @GetMapping("/other") - public String other() - { - return prefix + "/other"; - } - - /** - * 查询数据 - */ - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(UserOperateModel userModel) - { - TableDataInfo rspData = new TableDataInfo(); - List userList = new ArrayList(users.values()); - // 查询条件过滤 - if (StringUtils.isNotEmpty(userModel.getSearchValue())) - { - userList.clear(); - for (Map.Entry entry : users.entrySet()) - { - if (entry.getValue().getUserName().equals(userModel.getSearchValue())) - { - userList.add(entry.getValue()); - } - } - } - else if (StringUtils.isNotEmpty(userModel.getUserName())) - { - userList.clear(); - for (Map.Entry entry : users.entrySet()) - { - if (entry.getValue().getUserName().equals(userModel.getUserName())) - { - userList.add(entry.getValue()); - } - } - } - PageDomain pageDomain = TableSupport.buildPageRequest(); - if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) - { - rspData.setRows(userList); - rspData.setTotal(userList.size()); - return rspData; - } - Integer pageNum = (pageDomain.getPageNum() - 1) * 10; - Integer pageSize = pageDomain.getPageNum() * 10; - if (pageSize > userList.size()) - { - pageSize = userList.size(); - } - rspData.setRows(userList.subList(pageNum, pageSize)); - rspData.setTotal(userList.size()); - return rspData; - } - - /** - * 新增用户 - */ - @GetMapping("/add") - public String add(ModelMap mmap) - { - return prefix + "/add"; - } - - /** - * 新增保存用户 - */ - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(UserOperateModel user) - { - Integer userId = users.size() + 1; - user.setUserId(userId); - return AjaxResult.success(users.put(userId, user)); - } - - /** - * 新增保存主子表信息 - */ - @PostMapping("/customer/add") - @ResponseBody - public AjaxResult addSave(CustomerModel customerModel) - { - System.out.println(customerModel.toString()); - return AjaxResult.success(); - } - - /** - * 修改用户 - */ - @GetMapping("/edit/{userId}") - public String edit(@PathVariable("userId") Integer userId, ModelMap mmap) - { - mmap.put("user", users.get(userId)); - return prefix + "/edit"; - } - - /** - * 修改保存用户 - */ - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(UserOperateModel user) - { - return AjaxResult.success(users.put(user.getUserId(), user)); - } - - /** - * 导出 - */ - @PostMapping("/export") - @ResponseBody - public AjaxResult export(UserOperateModel user) - { - List list = new ArrayList(users.values()); - ExcelUtil util = new ExcelUtil(UserOperateModel.class); - return util.exportExcel(list, "用户数据"); - } - - /** - * 下载模板 - */ - @GetMapping("/importTemplate") - @ResponseBody - public AjaxResult importTemplate() - { - ExcelUtil util = new ExcelUtil(UserOperateModel.class); - return util.importTemplateExcel("用户数据"); - } - - /** - * 导入数据 - */ - @PostMapping("/importData") - @ResponseBody - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { - ExcelUtil util = new ExcelUtil(UserOperateModel.class); - List userList = util.importExcel(file.getInputStream()); - String message = importUser(userList, updateSupport); - return AjaxResult.success(message); - } - - /** - * 删除用户 - */ - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - Integer[] userIds = Convert.toIntArray(ids); - for (Integer userId : userIds) - { - users.remove(userId); - } - return AjaxResult.success(); - } - - /** - * 查看详细 - */ - @GetMapping("/detail/{userId}") - public String detail(@PathVariable("userId") Integer userId, ModelMap mmap) - { - mmap.put("user", users.get(userId)); - return prefix + "/detail"; - } - - @PostMapping("/clean") - @ResponseBody - public AjaxResult clean() - { - users.clear(); - return success(); - } - - /** - * 导入用户数据 - * - * @param userList 用户数据列表 - * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 - * @return 结果 - */ - public String importUser(List userList, Boolean isUpdateSupport) - { - if (StringUtils.isNull(userList) || userList.size() == 0) - { - throw new BusinessException("导入用户数据不能为空!"); - } - int successNum = 0; - int failureNum = 0; - StringBuilder successMsg = new StringBuilder(); - StringBuilder failureMsg = new StringBuilder(); - for (UserOperateModel user : userList) - { - try - { - // 验证是否存在这个用户 - boolean userFlag = false; - for (Map.Entry entry : users.entrySet()) - { - if (entry.getValue().getUserName().equals(user.getUserName())) - { - userFlag = true; - break; - } - } - if (!userFlag) - { - Integer userId = users.size() + 1; - user.setUserId(userId); - users.put(userId, user); - successNum++; - successMsg.append("
" + successNum + "、用户 " + user.getUserName() + " 导入成功"); - } - else if (isUpdateSupport) - { - users.put(user.getUserId(), user); - successNum++; - successMsg.append("
" + successNum + "、用户 " + user.getUserName() + " 更新成功"); - } - else - { - failureNum++; - failureMsg.append("
" + failureNum + "、用户 " + user.getUserName() + " 已存在"); - } - } - catch (Exception e) - { - failureNum++; - String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; - failureMsg.append(msg + e.getMessage()); - } - } - if (failureNum > 0) - { - failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); - throw new BusinessException(failureMsg.toString()); - } - else - { - successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); - } - return successMsg.toString(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoReportController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoReportController.java deleted file mode 100644 index 5f666ed..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoReportController.java +++ /dev/null @@ -1,53 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -/** - * 报表 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/report") -public class DemoReportController -{ - private String prefix = "demo/report"; - - /** - * 百度ECharts - */ - @GetMapping("/echarts") - public String echarts() - { - return prefix + "/echarts"; - } - - /** - * 图表插件 - */ - @GetMapping("/peity") - public String peity() - { - return prefix + "/peity"; - } - - /** - * 线状图插件 - */ - @GetMapping("/sparkline") - public String sparkline() - { - return prefix + "/sparkline"; - } - - /** - * 图表组合 - */ - @GetMapping("/metrics") - public String metrics() - { - return prefix + "/metrics"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoTableController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoTableController.java deleted file mode 100644 index 0d2c720..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/controller/DemoTableController.java +++ /dev/null @@ -1,590 +0,0 @@ -package co.yixiang.web.controller.demo.controller; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import com.fasterxml.jackson.annotation.JsonFormat; -import co.yixiang.common.annotation.Excel; -import co.yixiang.common.annotation.Excel.ColumnType; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.PageDomain; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.core.page.TableSupport; -import co.yixiang.common.core.text.Convert; -import co.yixiang.common.utils.DateUtils; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.utils.poi.ExcelUtil; - -/** - * 表格相关 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/demo/table") -public class DemoTableController extends BaseController -{ - private String prefix = "demo/table"; - - private final static List users = new ArrayList(); - { - users.add(new UserTableModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0")); - users.add(new UserTableModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1")); - users.add(new UserTableModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1")); - users.add(new UserTableModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1")); - users.add(new UserTableModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1")); - users.add(new UserTableModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1")); - users.add(new UserTableModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1")); - users.add(new UserTableModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1")); - users.add(new UserTableModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1")); - users.add(new UserTableModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1")); - users.add(new UserTableModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1")); - users.add(new UserTableModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1")); - users.add(new UserTableModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1")); - users.add(new UserTableModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1")); - users.add(new UserTableModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1")); - users.add(new UserTableModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1")); - users.add(new UserTableModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1")); - users.add(new UserTableModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1")); - users.add(new UserTableModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1")); - users.add(new UserTableModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1")); - users.add(new UserTableModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1")); - users.add(new UserTableModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1")); - users.add(new UserTableModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1")); - users.add(new UserTableModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1")); - users.add(new UserTableModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1")); - users.add(new UserTableModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1")); - } - - private final static List columns = new ArrayList(); - { - columns.add(new UserTableColumn("用户ID", "userId")); - columns.add(new UserTableColumn("用户编号", "userCode")); - columns.add(new UserTableColumn("用户姓名", "userName")); - columns.add(new UserTableColumn("用户手机", "userPhone")); - columns.add(new UserTableColumn("用户邮箱", "userEmail")); - columns.add(new UserTableColumn("用户状态", "status")); - } - - /** - * 搜索相关 - */ - @GetMapping("/search") - public String search() - { - return prefix + "/search"; - } - - /** - * 数据汇总 - */ - @GetMapping("/footer") - public String footer() - { - return prefix + "/footer"; - } - - /** - * 组合表头 - */ - @GetMapping("/groupHeader") - public String groupHeader() - { - return prefix + "/groupHeader"; - } - - /** - * 表格导出 - */ - @GetMapping("/export") - public String export() - { - return prefix + "/export"; - } - - /** - * 表格导出选择列 - */ - @GetMapping("/exportSelected") - public String exportSelected() - { - return prefix + "/exportSelected"; - } - - /** - * 导出数据 - */ - @PostMapping("/exportData") - @ResponseBody - public AjaxResult exportSelected(UserTableModel userModel, String userIds) - { - List userList = new ArrayList(Arrays.asList(new UserTableModel[users.size()])); - Collections.copy(userList, users); - - // 条件过滤 - if (StringUtils.isNotEmpty(userIds)) - { - userList.clear(); - for (Long userId : Convert.toLongArray(userIds)) - { - for (UserTableModel user : users) - { - if (user.getUserId() == userId) - { - userList.add(user); - } - } - } - } - ExcelUtil util = new ExcelUtil(UserTableModel.class); - return util.exportExcel(userList, "用户数据"); - } - - /** - * 翻页记住选择 - */ - @GetMapping("/remember") - public String remember() - { - return prefix + "/remember"; - } - - /** - * 跳转至指定页 - */ - @GetMapping("/pageGo") - public String pageGo() - { - return prefix + "/pageGo"; - } - - /** - * 自定义查询参数 - */ - @GetMapping("/params") - public String params() - { - return prefix + "/params"; - } - - /** - * 多表格 - */ - @GetMapping("/multi") - public String multi() - { - return prefix + "/multi"; - } - - /** - * 点击按钮加载表格 - */ - @GetMapping("/button") - public String button() - { - return prefix + "/button"; - } - - /** - * 直接加载表格数据 - */ - @GetMapping("/data") - public String data(ModelMap mmap) - { - mmap.put("users", users); - return prefix + "/data"; - } - - /** - * 表格冻结列 - */ - @GetMapping("/fixedColumns") - public String fixedColumns() - { - return prefix + "/fixedColumns"; - } - - /** - * 自定义触发事件 - */ - @GetMapping("/event") - public String event() - { - return prefix + "/event"; - } - - /** - * 表格细节视图 - */ - @GetMapping("/detail") - public String detail() - { - return prefix + "/detail"; - } - - /** - * 表格父子视图 - */ - @GetMapping("/child") - public String child() - { - return prefix + "/child"; - } - - /** - * 表格图片预览 - */ - @GetMapping("/image") - public String image() - { - return prefix + "/image"; - } - - /** - * 动态增删改查 - */ - @GetMapping("/curd") - public String curd() - { - return prefix + "/curd"; - } - - /** - * 表格行拖拽操作 - */ - @GetMapping("/reorderRows") - public String reorderRows() - { - return prefix + "/reorderRows"; - } - - /** - * 表格列拖拽操作 - */ - @GetMapping("/reorderColumns") - public String reorderColumns() - { - return prefix + "/reorderColumns"; - } - - /** - * 表格列宽拖动 - */ - @GetMapping("/resizable") - public String resizable() - { - return prefix + "/resizable"; - } - - /** - * 表格行内编辑操作 - */ - @GetMapping("/editable") - public String editable() - { - return prefix + "/editable"; - } - - /** - * 主子表提交 - */ - @GetMapping("/subdata") - public String subdata() - { - return prefix + "/subdata"; - } - - /** - * 表格自动刷新 - */ - @GetMapping("/refresh") - public String refresh() - { - return prefix + "/refresh"; - } - - /** - * 表格打印配置 - */ - @GetMapping("/print") - public String print() - { - return prefix + "/print"; - } - - /** - * 表格标题格式化 - */ - @GetMapping("/headerStyle") - public String headerStyle() - { - return prefix + "/headerStyle"; - } - - /** - * 表格动态列 - */ - @GetMapping("/dynamicColumns") - public String dynamicColumns() - { - return prefix + "/dynamicColumns"; - } - - /** - * 表格其他操作 - */ - @GetMapping("/other") - public String other() - { - return prefix + "/other"; - } - - /** - * 动态获取列 - */ - @PostMapping("/ajaxColumns") - @ResponseBody - public AjaxResult ajaxColumns(UserTableColumn userColumn) - { - List columnList = new ArrayList(Arrays.asList(new UserTableColumn[columns.size()])); - Collections.copy(columnList, columns); - if (userColumn != null && "userBalance".equals(userColumn.getField())) - { - columnList.add(new UserTableColumn("用户余额", "userBalance")); - } - return AjaxResult.success(columnList); - } - - /** - * 查询数据 - */ - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(UserTableModel userModel) - { - TableDataInfo rspData = new TableDataInfo(); - List userList = new ArrayList(Arrays.asList(new UserTableModel[users.size()])); - Collections.copy(userList, users); - // 查询条件过滤 - if (StringUtils.isNotEmpty(userModel.getUserName())) - { - userList.clear(); - for (UserTableModel user : users) - { - if (user.getUserName().equals(userModel.getUserName())) - { - userList.add(user); - } - } - } - PageDomain pageDomain = TableSupport.buildPageRequest(); - if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) - { - rspData.setRows(userList); - rspData.setTotal(userList.size()); - return rspData; - } - Integer pageNum = (pageDomain.getPageNum() - 1) * 10; - Integer pageSize = pageDomain.getPageNum() * 10; - if (pageSize > userList.size()) - { - pageSize = userList.size(); - } - rspData.setRows(userList.subList(pageNum, pageSize)); - rspData.setTotal(userList.size()); - return rspData; - } -} - -class UserTableColumn -{ - /** 表头 */ - private String title; - /** 字段 */ - private String field; - - public UserTableColumn() - { - - } - - public UserTableColumn(String title, String field) - { - this.title = title; - this.field = field; - } - - public String getTitle() - { - return title; - } - - public void setTitle(String title) - { - this.title = title; - } - - public String getField() - { - return field; - } - - public void setField(String field) - { - this.field = field; - } -} - -class UserTableModel -{ - /** 用户ID */ - private int userId; - - /** 用户编号 */ - @Excel(name = "用户编号", cellType = ColumnType.NUMERIC) - private String userCode; - - /** 用户姓名 */ - @Excel(name = "用户姓名") - private String userName; - - /** 用户性别 */ - private String userSex; - - /** 用户手机 */ - @Excel(name = "用户手机") - private String userPhone; - - /** 用户邮箱 */ - @Excel(name = "用户邮箱") - private String userEmail; - - /** 用户余额 */ - @Excel(name = "用户余额", cellType = ColumnType.NUMERIC) - private double userBalance; - - /** 用户状态(0正常 1停用) */ - private String status; - - /** 创建时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; - - public UserTableModel() - { - - } - - public UserTableModel(int userId, String userCode, String userName, String userSex, String userPhone, - String userEmail, double userBalance, String status) - { - this.userId = userId; - this.userCode = userCode; - this.userName = userName; - this.userSex = userSex; - this.userPhone = userPhone; - this.userEmail = userEmail; - this.userBalance = userBalance; - this.status = status; - this.createTime = DateUtils.getNowDate(); - } - - public int getUserId() - { - return userId; - } - - public void setUserId(int userId) - { - this.userId = userId; - } - - public String getUserCode() - { - return userCode; - } - - public void setUserCode(String userCode) - { - this.userCode = userCode; - } - - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - public String getUserSex() - { - return userSex; - } - - public void setUserSex(String userSex) - { - this.userSex = userSex; - } - - public String getUserPhone() - { - return userPhone; - } - - public void setUserPhone(String userPhone) - { - this.userPhone = userPhone; - } - - public String getUserEmail() - { - return userEmail; - } - - public void setUserEmail(String userEmail) - { - this.userEmail = userEmail; - } - - public double getUserBalance() - { - return userBalance; - } - - public void setUserBalance(double userBalance) - { - this.userBalance = userBalance; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public Date getCreateTime() - { - return createTime; - } - - public void setCreateTime(Date createTime) - { - this.createTime = createTime; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/CustomerModel.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/CustomerModel.java deleted file mode 100644 index 8306379..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/CustomerModel.java +++ /dev/null @@ -1,116 +0,0 @@ -package co.yixiang.web.controller.demo.domain; - -import java.util.List; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 客户测试信息 - * - * @author ruoyi - */ -public class CustomerModel -{ - /** - * 客户姓名 - */ - private String name; - - /** - * 客户手机 - */ - private String phonenumber; - - /** - * 客户性别 - */ - private String sex; - - /** - * 客户生日 - */ - private String birthday; - - /** - * 客户描述 - */ - private String remark; - - /** - * 商品信息 - */ - private List goods; - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getPhonenumber() - { - return phonenumber; - } - - public void setPhonenumber(String phonenumber) - { - this.phonenumber = phonenumber; - } - - - public String getSex() - { - return sex; - } - - public void setSex(String sex) - { - this.sex = sex; - } - - public String getBirthday() - { - return birthday; - } - - public void setBirthday(String birthday) - { - this.birthday = birthday; - } - - public String getRemark() - { - return remark; - } - - public void setRemark(String remark) - { - this.remark = remark; - } - - public List getGoods() - { - return goods; - } - - public void setGoods(List goods) - { - this.goods = goods; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("name", getName()) - .append("phonenumber", getPhonenumber()) - .append("sex", getSex()) - .append("birthday", getBirthday()) - .append("goods", getGoods()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/GoodsModel.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/GoodsModel.java deleted file mode 100644 index 504bd39..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/GoodsModel.java +++ /dev/null @@ -1,99 +0,0 @@ -package co.yixiang.web.controller.demo.domain; - -import java.util.Date; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 商品测试信息 - * - * @author ruoyi - */ -public class GoodsModel -{ - /** - * 商品名称 - */ - private String name; - - /** - * 商品重量 - */ - private Integer weight; - - /** - * 商品价格 - */ - private Double price; - - /** - * 商品日期 - */ - private Date date; - - /** - * 商品种类 - */ - private String type; - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public Integer getWeight() - { - return weight; - } - - public void setWeight(Integer weight) - { - this.weight = weight; - } - - public Double getPrice() - { - return price; - } - - public void setPrice(Double price) - { - this.price = price; - } - - public Date getDate() - { - return date; - } - - public void setDate(Date date) - { - this.date = date; - } - - public String getType() - { - return type; - } - - public void setType(String type) - { - this.type = type; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("name", getName()) - .append("weight", getWeight()) - .append("price", getPrice()) - .append("date", getDate()) - .append("type", getType()) - .toString(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/UserOperateModel.java b/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/UserOperateModel.java deleted file mode 100644 index 4638246..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/demo/domain/UserOperateModel.java +++ /dev/null @@ -1,149 +0,0 @@ -package co.yixiang.web.controller.demo.domain; - -import java.util.Date; -import co.yixiang.common.annotation.Excel; -import co.yixiang.common.annotation.Excel.Type; -import co.yixiang.common.core.domain.BaseEntity; -import co.yixiang.common.utils.DateUtils; - -public class UserOperateModel extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - private int userId; - - @Excel(name = "用户编号") - private String userCode; - - @Excel(name = "用户姓名") - private String userName; - - @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") - private String userSex; - - @Excel(name = "用户手机") - private String userPhone; - - @Excel(name = "用户邮箱") - private String userEmail; - - @Excel(name = "用户余额") - private double userBalance; - - @Excel(name = "用户状态", readConverterExp = "0=正常,1=停用") - private String status; - - @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) - private Date createTime; - - public UserOperateModel() - { - - } - - public UserOperateModel(int userId, String userCode, String userName, String userSex, String userPhone, - String userEmail, double userBalance, String status) - { - this.userId = userId; - this.userCode = userCode; - this.userName = userName; - this.userSex = userSex; - this.userPhone = userPhone; - this.userEmail = userEmail; - this.userBalance = userBalance; - this.status = status; - this.createTime = DateUtils.getNowDate(); - } - - public int getUserId() - { - return userId; - } - - public void setUserId(int userId) - { - this.userId = userId; - } - - public String getUserCode() - { - return userCode; - } - - public void setUserCode(String userCode) - { - this.userCode = userCode; - } - - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - public String getUserSex() - { - return userSex; - } - - public void setUserSex(String userSex) - { - this.userSex = userSex; - } - - public String getUserPhone() - { - return userPhone; - } - - public void setUserPhone(String userPhone) - { - this.userPhone = userPhone; - } - - public String getUserEmail() - { - return userEmail; - } - - public void setUserEmail(String userEmail) - { - this.userEmail = userEmail; - } - - public double getUserBalance() - { - return userBalance; - } - - public void setUserBalance(double userBalance) - { - this.userBalance = userBalance; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public Date getCreateTime() - { - return createTime; - } - - @Override - public void setCreateTime(Date createTime) - { - this.createTime = createTime; - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/CacheController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/CacheController.java deleted file mode 100644 index 9ab78f4..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/CacheController.java +++ /dev/null @@ -1,82 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.framework.web.service.CacheService; - -/** - * 缓存监控 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/cache") -public class CacheController extends BaseController -{ - private String prefix = "monitor/cache"; - - @Autowired - private CacheService cacheService; - - @GetMapping() - public String cache(ModelMap mmap) - { - mmap.put("cacheNames", cacheService.getCacheNames()); - return prefix + "/cache"; - } - - @PostMapping("/getNames") - public String getCacheNames(String fragment, ModelMap mmap) - { - mmap.put("cacheNames", cacheService.getCacheNames()); - return prefix + "/cache::" + fragment; - } - - @PostMapping("/getKeys") - public String getCacheKeys(String fragment, String cacheName, ModelMap mmap) - { - mmap.put("cacheName", cacheName); - mmap.put("cacheKyes", cacheService.getCacheKeys(cacheName)); - return prefix + "/cache::" + fragment; - } - - @PostMapping("/getValue") - public String getCacheValue(String fragment, String cacheName, String cacheKey, ModelMap mmap) - { - mmap.put("cacheName", cacheName); - mmap.put("cacheKey", cacheKey); - mmap.put("cacheValue", cacheService.getCacheValue(cacheName, cacheKey)); - return prefix + "/cache::" + fragment; - } - - @PostMapping("/clearCacheName") - @ResponseBody - public AjaxResult clearCacheName(String cacheName, ModelMap mmap) - { - cacheService.clearCacheName(cacheName); - return AjaxResult.success(); - } - - @PostMapping("/clearCacheKey") - @ResponseBody - public AjaxResult clearCacheKey(String cacheName, String cacheKey, ModelMap mmap) - { - cacheService.clearCacheKey(cacheName, cacheKey); - return AjaxResult.success(); - } - - @GetMapping("/clearAll") - @ResponseBody - public AjaxResult clearAll(ModelMap mmap) - { - cacheService.clearAll(); - return AjaxResult.success(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/DruidController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/DruidController.java deleted file mode 100644 index aed80d7..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/DruidController.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import co.yixiang.common.core.controller.BaseController; - -/** - * druid 监控 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/data") -public class DruidController extends BaseController -{ - private String prefix = "/druid"; - - @RequiresPermissions("monitor:data:view") - @GetMapping() - public String index() - { - return redirect(prefix + "/index.html"); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/ServerController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/ServerController.java deleted file mode 100644 index f581dd2..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/ServerController.java +++ /dev/null @@ -1,31 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.framework.web.domain.Server; - -/** - * 服务器监控 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/server") -public class ServerController extends BaseController -{ - private String prefix = "monitor/server"; - - @RequiresPermissions("monitor:server:view") - @GetMapping() - public String server(ModelMap mmap) throws Exception - { - Server server = new Server(); - server.copyTo(); - mmap.put("server", server); - return prefix + "/server"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysLogininforController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysLogininforController.java deleted file mode 100644 index 59e0e7e..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysLogininforController.java +++ /dev/null @@ -1,94 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import java.util.List; -import co.yixiang.framework.shiro.service.SysPasswordService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.system.domain.SysLogininfor; -import co.yixiang.system.service.ISysLogininforService; - -/** - * 系统访问记录 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/logininfor") -public class SysLogininforController extends BaseController -{ - private String prefix = "monitor/logininfor"; - - @Autowired - private ISysLogininforService logininforService; - - @Autowired - private SysPasswordService passwordService; - - @RequiresPermissions("monitor:logininfor:view") - @GetMapping() - public String logininfor() - { - return prefix + "/logininfor"; - } - - @RequiresPermissions("monitor:logininfor:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysLogininfor logininfor) - { - startPage(); - List list = logininforService.selectLogininforList(logininfor); - return getDataTable(list); - } - - @Log(title = "登录日志", businessType = BusinessType.EXPORT) - @RequiresPermissions("monitor:logininfor:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysLogininfor logininfor) - { - List list = logininforService.selectLogininforList(logininfor); - ExcelUtil util = new ExcelUtil(SysLogininfor.class); - return util.exportExcel(list, "登录日志"); - } - - @RequiresPermissions("monitor:logininfor:remove") - @Log(title = "登录日志", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(logininforService.deleteLogininforByIds(ids)); - } - - @RequiresPermissions("monitor:logininfor:remove") - @Log(title = "登录日志", businessType = BusinessType.CLEAN) - @PostMapping("/clean") - @ResponseBody - public AjaxResult clean() - { - logininforService.cleanLogininfor(); - return success(); - } - - @RequiresPermissions("monitor:logininfor:unlock") - @Log(title = "账户解锁", businessType = BusinessType.OTHER) - @PostMapping("/unlock") - @ResponseBody - public AjaxResult unlock(String loginName) - { - passwordService.clearLoginRecordCache(loginName); - return success(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysOperlogController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysOperlogController.java deleted file mode 100644 index 20818d8..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysOperlogController.java +++ /dev/null @@ -1,90 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.system.domain.SysOperLog; -import co.yixiang.system.service.ISysOperLogService; - -/** - * 操作日志记录 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/operlog") -public class SysOperlogController extends BaseController -{ - private String prefix = "monitor/operlog"; - - @Autowired - private ISysOperLogService operLogService; - - @RequiresPermissions("monitor:operlog:view") - @GetMapping() - public String operlog() - { - return prefix + "/operlog"; - } - - @RequiresPermissions("monitor:operlog:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysOperLog operLog) - { - startPage(); - List list = operLogService.selectOperLogList(operLog); - return getDataTable(list); - } - - @Log(title = "操作日志", businessType = BusinessType.EXPORT) - @RequiresPermissions("monitor:operlog:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysOperLog operLog) - { - List list = operLogService.selectOperLogList(operLog); - ExcelUtil util = new ExcelUtil(SysOperLog.class); - return util.exportExcel(list, "操作日志"); - } - - @Log(title = "操作日志", businessType = BusinessType.DELETE) - @RequiresPermissions("monitor:operlog:remove") - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(operLogService.deleteOperLogByIds(ids)); - } - - @RequiresPermissions("monitor:operlog:detail") - @GetMapping("/detail/{operId}") - public String detail(@PathVariable("operId") Long operId, ModelMap mmap) - { - mmap.put("operLog", operLogService.selectOperLogById(operId)); - return prefix + "/detail"; - } - - @Log(title = "操作日志", businessType = BusinessType.CLEAN) - @RequiresPermissions("monitor:operlog:remove") - @PostMapping("/clean") - @ResponseBody - public AjaxResult clean() - { - operLogService.cleanOperLog(); - return success(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysUserOnlineController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysUserOnlineController.java deleted file mode 100644 index 4dcf473..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/monitor/SysUserOnlineController.java +++ /dev/null @@ -1,90 +0,0 @@ -package co.yixiang.web.controller.monitor; - -import java.util.List; - -import co.yixiang.system.service.ISysUserOnlineService; -import org.apache.shiro.authz.annotation.Logical; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.core.text.Convert; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.enums.OnlineStatus; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.framework.shiro.session.OnlineSession; -import co.yixiang.framework.shiro.session.OnlineSessionDAO; -import co.yixiang.system.domain.SysUserOnline; -import co.yixiang.system.service.ISysUserOnlineService; - -/** - * 在线用户监控 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/monitor/online") -public class SysUserOnlineController extends BaseController -{ - private String prefix = "monitor/online"; - - @Autowired - private ISysUserOnlineService userOnlineService; - - @Autowired - private OnlineSessionDAO onlineSessionDAO; - - @RequiresPermissions("monitor:online:view") - @GetMapping() - public String online() - { - return prefix + "/online"; - } - - @RequiresPermissions("monitor:online:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysUserOnline userOnline) - { - startPage(); - List list = userOnlineService.selectUserOnlineList(userOnline); - return getDataTable(list); - } - - @RequiresPermissions(value = { "monitor:online:batchForceLogout", "monitor:online:forceLogout" }, logical = Logical.OR) - @Log(title = "在线用户", businessType = BusinessType.FORCE) - @PostMapping("/batchForceLogout") - @ResponseBody - public AjaxResult batchForceLogout(String ids) - { - for (String sessionId : Convert.toStrArray(ids)) - { - SysUserOnline online = userOnlineService.selectOnlineById(sessionId); - if (online == null) - { - return error("用户已下线"); - } - OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId()); - if (onlineSession == null) - { - return error("用户已下线"); - } - if (sessionId.equals(ShiroUtils.getSessionId())) - { - return error("当前登录用户无法强退"); - } - onlineSessionDAO.delete(onlineSession); - online.setStatus(OnlineStatus.off_line); - userOnlineService.saveOnline(online); - userOnlineService.removeUserCache(online.getLoginName(), sessionId); - } - return success(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreCouponController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreCouponController.java deleted file mode 100644 index f1fdcea..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreCouponController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreCoupon; -import co.yixiang.shop.service.IStoreCouponService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 优惠券主Controller - * - * @author hupeng - * @date 2019-08-29 - */ -@Controller -@RequestMapping("/shop/coupon") -public class StoreCouponController extends BaseController -{ - private String prefix = "shop/coupon"; - - @Autowired - private IStoreCouponService storeCouponService; - - @RequiresPermissions("shop:coupon:view") - @GetMapping() - public String coupon() - { - return prefix + "/coupon"; - } - - /** - * 查询优惠券主列表 - */ - @RequiresPermissions("shop:coupon:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreCoupon storeCoupon) - { - startPage(); - List list = storeCouponService.selectStoreCouponList(storeCoupon); - return getDataTable(list); - } - - /** - * 导出优惠券主列表 - */ - @RequiresPermissions("shop:coupon:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreCoupon storeCoupon) - { - List list = storeCouponService.selectStoreCouponList(storeCoupon); - ExcelUtil util = new ExcelUtil(StoreCoupon.class); - return util.exportExcel(list, "coupon"); - } - - /** - * 新增优惠券主 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存优惠券主 - */ - @RequiresPermissions("shop:coupon:add") - @Log(title = "优惠券主", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreCoupon storeCoupon) - { - return toAjax(storeCouponService.insertStoreCoupon(storeCoupon)); - } - - /** - * 修改优惠券主 - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Integer id, ModelMap mmap) - { - StoreCoupon storeCoupon = storeCouponService.selectStoreCouponById(id); - mmap.put("storeCoupon", storeCoupon); - return prefix + "/edit"; - } - - /** - * 修改保存优惠券主 - */ - @RequiresPermissions("shop:coupon:edit") - @Log(title = "优惠券主", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreCoupon storeCoupon) - { - return toAjax(storeCouponService.updateStoreCoupon(storeCoupon)); - } - - /** - * 删除优惠券主 - */ - @RequiresPermissions("shop:coupon:remove") - @Log(title = "优惠券主", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeCouponService.deleteStoreCouponByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsAttributeController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsAttributeController.java deleted file mode 100644 index 9115687..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsAttributeController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreGoodsAttribute; -import co.yixiang.shop.service.IStoreGoodsAttributeService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 商品的属性(独立)Controller - * - * @author hupeng - * @date 2019-08-24 - */ -@Controller -@RequestMapping("/shop/attribute") -public class StoreGoodsAttributeController extends BaseController -{ - private String prefix = "shop/attribute"; - - @Autowired - private IStoreGoodsAttributeService storeGoodsAttributeService; - - @RequiresPermissions("shop:attribute:view") - @GetMapping() - public String attribute() - { - return prefix + "/attribute"; - } - - /** - * 查询商品的属性(独立)列表 - */ - @RequiresPermissions("shop:attribute:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreGoodsAttribute storeGoodsAttribute) - { - startPage(); - List list = storeGoodsAttributeService.selectStoreGoodsAttributeList(storeGoodsAttribute); - return getDataTable(list); - } - - /** - * 导出商品的属性(独立)列表 - */ - @RequiresPermissions("shop:attribute:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreGoodsAttribute storeGoodsAttribute) - { - List list = storeGoodsAttributeService.selectStoreGoodsAttributeList(storeGoodsAttribute); - ExcelUtil util = new ExcelUtil(StoreGoodsAttribute.class); - return util.exportExcel(list, "attribute"); - } - - /** - * 新增商品的属性(独立) - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存商品的属性(独立) - */ - @RequiresPermissions("shop:attribute:add") - @Log(title = "商品的属性(独立)", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreGoodsAttribute storeGoodsAttribute) - { - return toAjax(storeGoodsAttributeService.insertStoreGoodsAttribute(storeGoodsAttribute)); - } - - /** - * 修改商品的属性(独立) - */ - @GetMapping("/edit/{attrId}") - public String edit(@PathVariable("attrId") Long attrId, ModelMap mmap) - { - StoreGoodsAttribute storeGoodsAttribute = storeGoodsAttributeService.selectStoreGoodsAttributeById(attrId); - mmap.put("storeGoodsAttribute", storeGoodsAttribute); - return prefix + "/edit"; - } - - /** - * 修改保存商品的属性(独立) - */ - @RequiresPermissions("shop:attribute:edit") - @Log(title = "商品的属性(独立)", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreGoodsAttribute storeGoodsAttribute) - { - return toAjax(storeGoodsAttributeService.updateStoreGoodsAttribute(storeGoodsAttribute)); - } - - /** - * 删除商品的属性(独立) - */ - @RequiresPermissions("shop:attribute:remove") - @Log(title = "商品的属性(独立)", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeGoodsAttributeService.deleteStoreGoodsAttributeByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsBrandController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsBrandController.java deleted file mode 100644 index 9df0c01..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsBrandController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreGoodsBrand; -import co.yixiang.shop.service.IStoreGoodsBrandService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 产品品牌Controller - * - * @author hupeng - * @date 2019-08-23 - */ -@Controller -@RequestMapping("/shop/brand") -public class StoreGoodsBrandController extends BaseController -{ - private String prefix = "shop/brand"; - - @Autowired - private IStoreGoodsBrandService storeGoodsBrandService; - - @RequiresPermissions("shop:brand:view") - @GetMapping() - public String brand() - { - return prefix + "/brand"; - } - - /** - * 查询产品品牌列表 - */ - @RequiresPermissions("shop:brand:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreGoodsBrand storeGoodsBrand) - { - startPage(); - List list = storeGoodsBrandService.selectStoreGoodsBrandList(storeGoodsBrand); - return getDataTable(list); - } - - /** - * 导出产品品牌列表 - */ - @RequiresPermissions("shop:brand:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreGoodsBrand storeGoodsBrand) - { - List list = storeGoodsBrandService.selectStoreGoodsBrandList(storeGoodsBrand); - ExcelUtil util = new ExcelUtil(StoreGoodsBrand.class); - return util.exportExcel(list, "brand"); - } - - /** - * 新增产品品牌 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存产品品牌 - */ - @RequiresPermissions("shop:brand:add") - @Log(title = "产品品牌", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreGoodsBrand storeGoodsBrand) - { - return toAjax(storeGoodsBrandService.insertStoreGoodsBrand(storeGoodsBrand)); - } - - /** - * 修改产品品牌 - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Long id, ModelMap mmap) - { - StoreGoodsBrand storeGoodsBrand = storeGoodsBrandService.selectStoreGoodsBrandById(id); - mmap.put("storeGoodsBrand", storeGoodsBrand); - return prefix + "/edit"; - } - - /** - * 修改保存产品品牌 - */ - @RequiresPermissions("shop:brand:edit") - @Log(title = "产品品牌", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreGoodsBrand storeGoodsBrand) - { - return toAjax(storeGoodsBrandService.updateStoreGoodsBrand(storeGoodsBrand)); - } - - /** - * 删除产品品牌 - */ - @RequiresPermissions("shop:brand:remove") - @Log(title = "产品品牌", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeGoodsBrandService.deleteStoreGoodsBrandByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsCateController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsCateController.java deleted file mode 100644 index de07dae..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsCateController.java +++ /dev/null @@ -1,153 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreGoodsCate; -import co.yixiang.shop.service.IStoreGoodsCateService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.core.domain.Ztree; - -/** - * 商城商品分类Controller - * - * @author hupeng - * @date 2019-08-22 - */ -@Controller -@RequestMapping("/shop/cate") -public class StoreGoodsCateController extends BaseController -{ - private String prefix = "shop/cate"; - - @Autowired - private IStoreGoodsCateService storeGoodsCateService; - - @RequiresPermissions("shop:cate:view") - @GetMapping() - public String cate() - { - return prefix + "/cate"; - } - - /** - * 查询商城商品分类树列表 - */ - @RequiresPermissions("shop:cate:list") - @PostMapping("/list") - @ResponseBody - public List list(StoreGoodsCate storeGoodsCate) - { - List list = storeGoodsCateService.selectStoreGoodsCateList(storeGoodsCate); - return list; - } - - /** - * 导出商城商品分类列表 - */ - @RequiresPermissions("shop:cate:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreGoodsCate storeGoodsCate) - { - List list = storeGoodsCateService.selectStoreGoodsCateList(storeGoodsCate); - ExcelUtil util = new ExcelUtil(StoreGoodsCate.class); - return util.exportExcel(list, "cate"); - } - - /** - * 新增商城商品分类 - */ - @GetMapping(value = { "/add/{id}", "/add/" }) - public String add(@PathVariable(value = "id", required = false) Long id, ModelMap mmap) - { - if (StringUtils.isNotNull(id)) - { - mmap.put("storeGoodsCate", storeGoodsCateService.selectStoreGoodsCateById(id)); - } - return prefix + "/add"; - } - - /** - * 新增保存商城商品分类 - */ - @RequiresPermissions("shop:cate:add") - @Log(title = "商城商品分类", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreGoodsCate storeGoodsCate) - { - return toAjax(storeGoodsCateService.insertStoreGoodsCate(storeGoodsCate)); - } - - /** - * 修改商城商品分类 - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Long id, ModelMap mmap) - { - StoreGoodsCate storeGoodsCate = storeGoodsCateService.selectStoreGoodsCateById(id); - mmap.put("storeGoodsCate", storeGoodsCate); - return prefix + "/edit"; - } - - /** - * 修改保存商城商品分类 - */ - @RequiresPermissions("shop:cate:edit") - @Log(title = "商城商品分类", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreGoodsCate storeGoodsCate) - { - return toAjax(storeGoodsCateService.updateStoreGoodsCate(storeGoodsCate)); - } - - /** - * 删除 - */ - @RequiresPermissions("shop:cate:remove") - @Log(title = "商城商品分类", businessType = BusinessType.DELETE) - @GetMapping("/remove/{id}") - @ResponseBody - public AjaxResult remove(@PathVariable("id") Long id) - { - return toAjax(storeGoodsCateService.deleteStoreGoodsCateById(id)); - } - - /** - * 选择商城商品分类树 - */ - @GetMapping(value = { "/selectCateTree/{id}", "/selectCateTree/" }) - public String selectCateTree(@PathVariable(value = "id", required = false) Long id, ModelMap mmap) - { - if (StringUtils.isNotNull(id)) - { - mmap.put("storeGoodsCate", storeGoodsCateService.selectStoreGoodsCateById(id)); - } - return prefix + "/tree"; - } - - /** - * 加载商城商品分类树列表 - */ - @GetMapping("/treeData") - @ResponseBody - public List treeData() - { - List ztrees = storeGoodsCateService.selectStoreGoodsCateTree(); - return ztrees; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsController.java deleted file mode 100644 index 74bd2b9..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsController.java +++ /dev/null @@ -1,513 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.text.MessageFormat; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Stream; - -import co.yixiang.shop.domain.*; -import co.yixiang.shop.service.*; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.shop.domain.*; -import co.yixiang.shop.service.*; -import co.yixiang.shop.vo.SpecVO; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.*; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -import javax.servlet.http.HttpServletRequest; - -/** - * 商品主Controller - * - * @author hupeng - * @date 2019-08-25 - */ -@Controller -@RequestMapping("/shop/goods") -public class StoreGoodsController extends BaseController -{ - private String prefix = "shop/goods"; - - @Autowired - private IStoreGoodsService storeGoodsService; - - @Autowired - private IStoreGoodsTypeService storeGoodsTypeService; - - @Autowired - private IStoreSpecService storeSpecService; - - @Autowired - private IStoreSpecItemService storeSpecItemService; - - @Autowired - private IStoreGoodsAttributeService storeGoodsAttributeService; - - @Autowired - protected IStoreGoodsAttrService storeGoodsAttrService; - - - @Autowired - private IStoreSpecGoodsPriceService storeSpecGoodsPriceService; - - @Autowired - private IStoreGoodsCateService storeGoodsCateService; - - @RequiresPermissions("shop:goods:view") - @GetMapping() - public String goods() - { - return prefix + "/goods"; - } - - /** - * 查询商品主列表 - */ - @RequiresPermissions("shop:goods:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreGoods storeGoods) - { - startPage(); - List list = storeGoodsService.selectStoreGoodsList(storeGoods); - return getDataTable(list); - } - - /** - * 导出商品主列表 - */ - @RequiresPermissions("shop:goods:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreGoods storeGoods) - { - List list = storeGoodsService.selectStoreGoodsList(storeGoods); - ExcelUtil util = new ExcelUtil(StoreGoods.class); - return util.exportExcel(list, "goods"); - } - - /** - * 新增商品主 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存商品主 - */ - @RequiresPermissions("shop:goods:add") - @Log(title = "商品主", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreGoods storeGoods) - { - return toAjax(storeGoodsService.insertStoreGoods(storeGoods)); - } - - /** - * - * @param goodsId - * @param typeId - * @param mmap - * @return - */ - @GetMapping("/editSpec/{goodsId}/{typeId}") - public String editSpecAttr(@PathVariable("goodsId") Integer goodsId, - @PathVariable("typeId") Integer typeId, - ModelMap mmap){ - - StoreGoods storeGoods = storeGoodsService.selectStoreGoodsById(goodsId); - - //StoreGoodsType goodsType = new StoreGoodsType(); - //goodsType.setId(typeId); - List typeList = storeGoodsTypeService.selectStoreGoodsTypeList(null); - //System.out.println(typeList); - mmap.put("storeGoods", storeGoods); - mmap.put("goodsTypes",typeList); - return prefix + "/spec"; - - } - - /** - * - * @param goodsId - * @param typeId - * @return - */ - @PostMapping("/ajaxSpec") - @ResponseBody - public AjaxResult ajaxSpec(@RequestParam(value = "goods_id",defaultValue = "-1") Integer goodsId, - @RequestParam(value = "type_id",defaultValue = "0") Integer typeId){ - - //System.out.println("typeId:"+typeId); - if(typeId == 0) return AjaxResult.success("success",""); - StoreSpec storeSpec = new StoreSpec(); - storeSpec.setTypeId(typeId.longValue()); - List specs = storeSpecService.selectStoreSpecList(storeSpec); - List specItems = null; - StoreSpecItem specItem = new StoreSpecItem(); - for (StoreSpec spec : specs) { - specItem.setSpecId(spec.getId()); - specItems = storeSpecItemService.selectStoreSpecItemList(specItem); - //System.out.println("goodsID:"+goodsId); - if(goodsId > 0){ - String itemStr = storeGoodsService.getGoodsItems(goodsId.longValue()); - if(StringUtils.isNotEmpty(itemStr)){ - String[] strs = itemStr.split("_"); - for (StoreSpecItem item : specItems) { - if(Arrays.asList(strs).contains(item.getId().toString())){ - item.setSelected(true); - } - } - } - - } - - spec.setStoreSpecItems(specItems); - } - - HashMap map = new HashMap<>(); - map.put("data",specs); - //System.out.println(specs); - return AjaxResult.success("success",map); - - } - - - /** - * - * @param goodsId - * @param typeId - * @return - */ - @PostMapping("/ajaxGetAttrInput") - @ResponseBody - public AjaxResult ajaxGetAttrInput(@RequestParam(value = "goods_id",defaultValue = "0") Integer goodsId, - @RequestParam(value = "type_id",defaultValue = "0") Integer typeId){ - - if(typeId == 0) return AjaxResult.success("success",""); - StoreGoodsAttribute attribute = new StoreGoodsAttribute(); - attribute.setTypeId(typeId); - List attributeList = storeGoodsAttributeService - .selectStoreGoodsAttributeList(attribute); - //System.out.println("attributeList:"+attributeList); - String str = ""; - StoreGoodsAttr storeGoodsAttr = null; - StoreGoodsAttr goodsAttrOption = new StoreGoodsAttr(); - goodsAttrOption.setGoodsId(goodsId); - StringBuilder stringBuilder = new StringBuilder(); - for (StoreGoodsAttribute attr : attributeList) { - goodsAttrOption.setAttrId(attr.getAttrId().intValue()); - List goodsAttrList = storeGoodsAttrService - .selectStoreGoodsAttrList(goodsAttrOption); - - if(goodsAttrList.isEmpty()){ - StoreGoodsAttr emptyAttr = new StoreGoodsAttr(); - emptyAttr.setGoodsId(0); - emptyAttr.setAttrId(0); - emptyAttr.setGoodsAttrId(0); - emptyAttr.setAttrValue("无"); - emptyAttr.setAttrPrice(""); - goodsAttrList.add(emptyAttr); - } - - for (StoreGoodsAttr goodsAttr : goodsAttrList) { - //str = String.format("",attr.getAttrId()); - stringBuilder.append(MessageFormat.format("",attr.getAttrId())); - //System.out.println(attr.getAttrId()); - stringBuilder.append(MessageFormat.format("{0} ",attr.getAttrName())); - stringBuilder.append(MessageFormat.format("", - goodsAttr.getAttrValue(),attr.getAttrId())); - - stringBuilder.append(""); - } - - } - - str = stringBuilder.toString(); - - - return AjaxResult.success("success",str); - } - - @PostMapping("/ajaxGetSpecInput") - @ResponseBody - public AjaxResult ajaxGetSpecInput(@RequestBody String jsonStr){ - - SpecVO data=JSON.parseObject(jsonStr,SpecVO.class); - - //Map map = (Map)jsonObject; - Map> map2 = new HashMap<>(); - //重新组合map有相同键值的组合成list - for (String str : data.getList()) { - Map map = (Map)JSONObject.parseObject(str); - String newKey = map.get("specId").toString(); - String newValue = map.get("itemId").toString(); - List tmpList = new ArrayList<>(); - if(map2.containsKey(newKey)){ - tmpList = map2.get(newKey); - tmpList.add(Integer.parseInt(newValue)); - map2.put(newKey,tmpList); - - }else{ - tmpList.add(Integer.parseInt(newValue)); - map2.put(newKey,tmpList); - } - - } - Iterator>> it = map2.entrySet().iterator(); - - Map unsortMap = - new HashMap(); - - //迭代map把原来值换成列表大小 - while (it.hasNext()){ - Map.Entry> entry = it.next(); - unsortMap.put(entry.getKey(),entry.getValue().size()); - } - - //定义一个有序的列表map - Map sortMap = new LinkedHashMap<>(); - - //升序排序 - Stream> st = unsortMap.entrySet().stream(); - st.sorted(Comparator.comparing(e -> e.getValue())) - .forEachOrdered(e -> sortMap.put(e.getKey(), e.getValue())); - - //根据排序后组合最终的MAP - Map> finalMap = new LinkedHashMap<>(); - for(String key : sortMap.keySet()){ - finalMap.put(key,map2.get(key)); - } - - - //列表笛卡儿积 - ArrayList ls = new ArrayList(); - for(List value : finalMap.values()){ - ls.add(value); - } - if(ls.isEmpty()) return AjaxResult.success("success",""); - List Dlist = StringUtils.Dikaerji0(ls); - - - //todo 组合数据 - String str = "";; - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(str); - - for(String key : finalMap.keySet()){ - StoreSpec storeSpec = storeSpecService - .selectStoreSpecById(Long.valueOf(key)); - stringBuilder.append(MessageFormat.format("", - storeSpec.getName())); - } - stringBuilder.append(""); - - - //获取商品规格列表 - StoreSpecGoodsPrice storeSpecGoodsPrice = new StoreSpecGoodsPrice(); - storeSpecGoodsPrice.setGoodsId(Long.valueOf(data.getGoodsId())); - - //开始迭代笛卡儿积 - Iterator iter = Dlist.iterator(); - while (iter.hasNext()) { - //System.out.println(iter.next()); - List itemName = new ArrayList<>(); - stringBuilder.append(""); - List iterList = iter.next(); - Collections.sort(iterList); - iterList.forEach(item-> { - StoreSpecItem storeSpecItem = storeSpecItemService - .selectStoreSpecItemById(Long.valueOf(item.toString())); - stringBuilder.append(MessageFormat.format("", - storeSpecItem.getItem())); - StoreSpec storeSpec2 = storeSpecService - .selectStoreSpecById(Long.valueOf(storeSpecItem.getSpecId())); - - itemName.add(storeSpec2.getName()+":"+storeSpecItem.getItem()); - }); - - String itemKeyStr = org.apache.commons.lang.StringUtils.join(iterList.toArray(), "_"); - String itemNameStr = org.apache.commons.lang.StringUtils.join(itemName.toArray(), ","); - //while (iter.next().forEach();) - - - - double keyPrice = 0; - double keyMarketPrice = 0; - int keyStoreCount = 0; - - //获取商品规格价格列表 - storeSpecGoodsPrice.setKey(itemKeyStr); - List storeSpecGoodsPrices = storeSpecGoodsPriceService - .selectStoreSpecGoodsPriceList(storeSpecGoodsPrice); - - - //System.out.println(storeSpecGoodsPrices); - if(!storeSpecGoodsPrices.isEmpty()){ - StoreSpecGoodsPrice goodsPrice = storeSpecGoodsPrices.get(0); - if(goodsPrice != null){ - keyPrice = goodsPrice.getPrice(); - keyMarketPrice = goodsPrice.getMarketPrice(); - keyStoreCount = goodsPrice.getStoreCount().intValue(); - } - } - - stringBuilder.append(MessageFormat.format("", - itemKeyStr,String.valueOf(keyPrice))); - stringBuilder.append(MessageFormat.format("", - itemKeyStr,String.valueOf(keyMarketPrice))); - stringBuilder.append(MessageFormat.format("", - itemKeyStr,String.valueOf(keyStoreCount))); - stringBuilder.append(MessageFormat.format("", - itemKeyStr,itemNameStr)); - stringBuilder.append(""); - //System.out.println(storeSpecGoodsPrices); - - } - stringBuilder.append("
{0}进货价零售价库存操作
{0}无
"); - - //str = stringBuilder.toString(); - return AjaxResult.success("success",stringBuilder.toString()); - //return null; - } - - @PostMapping("/saveSpecAttr") - @ResponseBody - public AjaxResult saveSpecAttr(HttpServletRequest request){ - //获取所有表单参数 - Enumeration paramNames = request.getParameterNames(); - Map> specDataMap = new HashMap<>(); - Map attrDataMap = new HashMap<>(); - Map tmpMap = null; - String goodsId = request.getParameter("goodsId"); - String goodsType = request.getParameter("type_id"); - if(StringUtils.isEmpty(goodsId) || Integer.valueOf(goodsId) == 0){ - return AjaxResult.error("参数有误"); - } - if(StringUtils.isEmpty(goodsType) || Integer.valueOf(goodsType) == 0){ - return AjaxResult.error("请选择模型"); - } - //过滤参数 - while (paramNames.hasMoreElements()) { - String name = paramNames.nextElement(); - String[] values = request.getParameterValues(name); - if(values != null && values.length > 0){ - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < values.length; i++) { - builder.append(values[i]+" "); - } - //过滤规格组合新的规格数据集合 - if(name.contains("item")){ - String pattern = "item\\[(\\d+[_\\d+]*)]\\[([a-z]+_?[a-z]+)]"; - //String pattern = "item\\[(\\d+_\\d+)]\\[([a-z]+_?[a-z]+)]"; - Pattern r = Pattern.compile(pattern); - Matcher m = r.matcher(name); - if (m.find( )) { - String keyOne = m.group(1).trim(); - System.out.println("keyOne:"+keyOne); - String keyTwo = m.group(2).trim(); - System.out.println("keyTwo:"+keyTwo); - String keyValue = builder.toString().trim(); - - if(!specDataMap.containsKey(keyOne)){ - tmpMap = new HashMap<>(); - } - tmpMap.put(keyTwo,keyValue); - specDataMap.put(keyOne,tmpMap); - - } - } - - //过滤属性组合新的属性集合 - if(name.contains("attr_")){ - String pattern2= "attr_(\\d+)\\[]"; - Pattern r2 = Pattern.compile(pattern2); - Matcher m2 = r2.matcher(name); - //System.out.println(name+" : "+builder.toString()); - if (m2.find( )) { - attrDataMap.put(m2.group(1),builder.toString().trim()); - }else{ - System.out.println("no"); - } - - } - } - } - - - - - if(specDataMap.isEmpty()){ - return AjaxResult.error("请选择规格项目"); - } - - if(attrDataMap.isEmpty()){ - return AjaxResult.error("请填写商品属性"); - } - - storeGoodsService.saveSpecAttr(specDataMap,attrDataMap,goodsId,goodsType); - - return AjaxResult.success("操作成功"); - } - - - /** - * 修改商品主 - */ - @GetMapping("/edit/{goodsId}") - public String edit(@PathVariable("goodsId") Integer goodsId, ModelMap mmap) - { - StoreGoods storeGoods = storeGoodsService.selectStoreGoodsById(goodsId); - StoreGoodsCate storeGoodsCate = storeGoodsCateService - .selectStoreGoodsCateById(storeGoods.getCateId()); - storeGoods.setCateName(storeGoodsCate.getCateTitle()); - mmap.put("storeGoods", storeGoods); - return prefix + "/edit"; - } - - /** - * 修改保存商品主 - */ - @RequiresPermissions("shop:goods:edit") - @Log(title = "商品主", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreGoods storeGoods) - { - return toAjax(storeGoodsService.updateStoreGoods(storeGoods)); - } - - /** - * 删除商品主 - */ - @RequiresPermissions("shop:goods:remove") - @Log(title = "商品主", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeGoodsService.deleteStoreGoodsByIds(ids)); - } - - @PostMapping( "/changeStatus") - @ResponseBody - public AjaxResult changeStatus(StoreGoods storeGoods){ - return toAjax(storeGoodsService.updateStoreGoods(storeGoods)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsTypeController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsTypeController.java deleted file mode 100644 index 825afe9..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreGoodsTypeController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreGoodsType; -import co.yixiang.shop.service.IStoreGoodsTypeService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 商品类型(商品模型)Controller - * - * @author hupeng - * @date 2019-08-24 - */ -@Controller -@RequestMapping("/shop/type") -public class StoreGoodsTypeController extends BaseController -{ - private String prefix = "shop/type"; - - @Autowired - private IStoreGoodsTypeService storeGoodsTypeService; - - @RequiresPermissions("shop:type:view") - @GetMapping() - public String type() - { - return prefix + "/type"; - } - - /** - * 查询商品类型(商品模型)列表 - */ - @RequiresPermissions("shop:type:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreGoodsType storeGoodsType) - { - startPage(); - List list = storeGoodsTypeService.selectStoreGoodsTypeList(storeGoodsType); - return getDataTable(list); - } - - /** - * 导出商品类型(商品模型)列表 - */ - @RequiresPermissions("shop:type:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreGoodsType storeGoodsType) - { - List list = storeGoodsTypeService.selectStoreGoodsTypeList(storeGoodsType); - ExcelUtil util = new ExcelUtil(StoreGoodsType.class); - return util.exportExcel(list, "type"); - } - - /** - * 新增商品类型(商品模型) - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存商品类型(商品模型) - */ - @RequiresPermissions("shop:type:add") - @Log(title = "商品类型(商品模型)", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreGoodsType storeGoodsType) - { - return toAjax(storeGoodsTypeService.insertStoreGoodsType(storeGoodsType)); - } - - /** - * 修改商品类型(商品模型) - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Integer id, ModelMap mmap) - { - StoreGoodsType storeGoodsType = storeGoodsTypeService.selectStoreGoodsTypeById(id); - mmap.put("storeGoodsType", storeGoodsType); - return prefix + "/edit"; - } - - /** - * 修改保存商品类型(商品模型) - */ - @RequiresPermissions("shop:type:edit") - @Log(title = "商品类型(商品模型)", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreGoodsType storeGoodsType) - { - return toAjax(storeGoodsTypeService.updateStoreGoodsType(storeGoodsType)); - } - - /** - * 删除商品类型(商品模型) - */ - @RequiresPermissions("shop:type:remove") - @Log(title = "商品类型(商品模型)", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeGoodsTypeService.deleteStoreGoodsTypeByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreMemberController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreMemberController.java deleted file mode 100644 index 061d498..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreMemberController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreMember; -import co.yixiang.shop.service.IStoreMemberService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 商城会员信息Controller - * - * @author hupeng - * @date 2019-08-30 - */ -@Controller -@RequestMapping("/shop/member") -public class StoreMemberController extends BaseController -{ - private String prefix = "shop/member"; - - @Autowired - private IStoreMemberService storeMemberService; - - @RequiresPermissions("shop:member:view") - @GetMapping() - public String member() - { - return prefix + "/member"; - } - - /** - * 查询商城会员信息列表 - */ - @RequiresPermissions("shop:member:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreMember storeMember) - { - startPage(); - List list = storeMemberService.selectStoreMemberList(storeMember); - return getDataTable(list); - } - - /** - * 导出商城会员信息列表 - */ - @RequiresPermissions("shop:member:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreMember storeMember) - { - List list = storeMemberService.selectStoreMemberList(storeMember); - ExcelUtil util = new ExcelUtil(StoreMember.class); - return util.exportExcel(list, "member"); - } - - /** - * 新增商城会员信息 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存商城会员信息 - */ - @RequiresPermissions("shop:member:add") - @Log(title = "商城会员信息", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreMember storeMember) - { - return toAjax(storeMemberService.insertStoreMember(storeMember)); - } - - /** - * 修改商城会员信息 - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Long id, ModelMap mmap) - { - StoreMember storeMember = storeMemberService.selectStoreMemberById(id); - mmap.put("storeMember", storeMember); - return prefix + "/edit"; - } - - /** - * 修改保存商城会员信息 - */ - @RequiresPermissions("shop:member:edit") - @Log(title = "商城会员信息", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreMember storeMember) - { - return toAjax(storeMemberService.updateStoreMember(storeMember)); - } - - /** - * 删除商城会员信息 - */ - @RequiresPermissions("shop:member:remove") - @Log(title = "商城会员信息", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeMemberService.deleteStoreMemberByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreOrderController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreOrderController.java deleted file mode 100644 index adc0518..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreOrderController.java +++ /dev/null @@ -1,182 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; - -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreOrder; -import co.yixiang.shop.service.IStoreOrderService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 订单主Controller - * - * @author hupeng - * @date 2019-08-29 - */ -@Controller -@RequestMapping("/shop/order") -public class StoreOrderController extends BaseController -{ - private String prefix = "shop/order"; - - @Autowired - private IStoreOrderService storeOrderService; - - @RequiresPermissions("shop:order:view") - @GetMapping() - public String order() - { - return prefix + "/order"; - } - - /** - * 查询订单主列表 - */ - @RequiresPermissions("shop:order:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreOrder storeOrder) - { - startPage(); - if(storeOrder.getOrderStatus() != null){ - switch (storeOrder.getOrderStatus()){ - case -1: - storeOrder.setDeleted(1); - storeOrder.setOrderStatus(0); - storeOrder.setPayStatus(0); - storeOrder.setShippingStatus(0); - break; - case 0: - storeOrder.setDeleted(0); - storeOrder.setOrderStatus(0); - storeOrder.setPayStatus(0); - storeOrder.setShippingStatus(0); - break; - case 1: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(0); - storeOrder.setShippingStatus(0); - break; - case 2: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(0); - storeOrder.setShippingStatus(1); - break; - case 3: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(0); - storeOrder.setShippingStatus(2); - break; - case 4: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(0); - storeOrder.setShippingStatus(3); - break; - case 5: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(1); - storeOrder.setShippingStatus(0); - break; - case 6: - storeOrder.setDeleted(0); - storeOrder.setPayStatus(1); - storeOrder.setOrderStatus(2); - storeOrder.setShippingStatus(0); - break; - - } - } - - //System.out.println(storeOrder); - List list = storeOrderService.selectStoreOrderList(storeOrder); - return getDataTable(list); - } - - /** - * 导出订单主列表 - */ - @RequiresPermissions("shop:order:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreOrder storeOrder) - { - List list = storeOrderService.selectStoreOrderList(storeOrder); - ExcelUtil util = new ExcelUtil(StoreOrder.class); - return util.exportExcel(list, "order"); - } - - /** - * 新增订单主 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存订单主 - */ - @RequiresPermissions("shop:order:add") - @Log(title = "订单主", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreOrder storeOrder) - { - return toAjax(storeOrderService.insertStoreOrder(storeOrder)); - } - - /** - * 修改订单主 - */ - @GetMapping("/edit/{orderId}") - public String edit(@PathVariable("orderId") Integer orderId, ModelMap mmap) - { - StoreOrder storeOrder = storeOrderService.selectStoreOrderById(orderId); - mmap.put("storeOrder", storeOrder); - return prefix + "/edit"; - } - - /** - * 修改保存订单主 - */ - @RequiresPermissions("shop:order:edit") - @Log(title = "订单主", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated StoreOrder storeOrder) - { - return toAjax(storeOrderService.updateStoreOrder(storeOrder)); - } - - /** - * 删除订单主 - */ - @RequiresPermissions("shop:order:remove") - @Log(title = "订单主", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeOrderService.deleteStoreOrderByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreSpecController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreSpecController.java deleted file mode 100644 index 79ea493..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/shop/StoreSpecController.java +++ /dev/null @@ -1,125 +0,0 @@ -package co.yixiang.web.controller.shop; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.shop.domain.StoreSpec; -import co.yixiang.shop.service.IStoreSpecService; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.common.core.page.TableDataInfo; - -/** - * 商品规格(独立)Controller - * - * @author hupeng - * @date 2019-08-25 - */ -@Controller -@RequestMapping("/shop/spec") -public class StoreSpecController extends BaseController -{ - private String prefix = "shop/spec"; - - @Autowired - private IStoreSpecService storeSpecService; - - @RequiresPermissions("shop:spec:view") - @GetMapping() - public String spec() - { - return prefix + "/spec"; - } - - /** - * 查询商品规格(独立)列表 - */ - @RequiresPermissions("shop:spec:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(StoreSpec storeSpec) - { - startPage(); - List list = storeSpecService.selectStoreSpecList(storeSpec); - return getDataTable(list); - } - - /** - * 导出商品规格(独立)列表 - */ - @RequiresPermissions("shop:spec:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(StoreSpec storeSpec) - { - List list = storeSpecService.selectStoreSpecList(storeSpec); - ExcelUtil util = new ExcelUtil(StoreSpec.class); - return util.exportExcel(list, "spec"); - } - - /** - * 新增商品规格(独立) - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存商品规格(独立) - */ - @RequiresPermissions("shop:spec:add") - @Log(title = "商品规格(独立)", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(StoreSpec storeSpec) - { - return toAjax(storeSpecService.insertStoreSpec(storeSpec)); - } - - /** - * 修改商品规格(独立) - */ - @GetMapping("/edit/{id}") - public String edit(@PathVariable("id") Long id, ModelMap mmap) - { - StoreSpec storeSpec = storeSpecService.selectStoreSpecById(id); - mmap.put("storeSpec", storeSpec); - return prefix + "/edit"; - } - - /** - * 修改保存商品规格(独立) - */ - @RequiresPermissions("shop:spec:edit") - @Log(title = "商品规格(独立)", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(StoreSpec storeSpec) - { - return toAjax(storeSpecService.updateStoreSpec(storeSpec)); - } - - /** - * 删除商品规格(独立) - */ - @RequiresPermissions("shop:spec:remove") - @Log(title = "商品规格(独立)", businessType = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(storeSpecService.deleteStoreSpecByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysCaptchaController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysCaptchaController.java deleted file mode 100644 index e57f65e..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysCaptchaController.java +++ /dev/null @@ -1,92 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import javax.annotation.Resource; -import javax.imageio.ImageIO; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; -import com.google.code.kaptcha.Constants; -import com.google.code.kaptcha.Producer; -import co.yixiang.common.core.controller.BaseController; - -/** - * 图片验证码(支持算术形式) - * - * @author ruoyi - */ -@Controller -@RequestMapping("/captcha") -public class SysCaptchaController extends BaseController -{ - @Resource(name = "captchaProducer") - private Producer captchaProducer; - - @Resource(name = "captchaProducerMath") - private Producer captchaProducerMath; - - /** - * 验证码生成 - */ - @GetMapping(value = "/captchaImage") - public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) - { - ServletOutputStream out = null; - try - { - HttpSession session = request.getSession(); - response.setDateHeader("Expires", 0); - response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); - response.addHeader("Cache-Control", "post-check=0, pre-check=0"); - response.setHeader("Pragma", "no-cache"); - response.setContentType("image/jpeg"); - - String type = request.getParameter("type"); - String capStr = null; - String code = null; - BufferedImage bi = null; - if ("math".equals(type)) - { - String capText = captchaProducerMath.createText(); - capStr = capText.substring(0, capText.lastIndexOf("@")); - code = capText.substring(capText.lastIndexOf("@") + 1); - bi = captchaProducerMath.createImage(capStr); - } - else if ("char".equals(type)) - { - capStr = code = captchaProducer.createText(); - bi = captchaProducer.createImage(capStr); - } - session.setAttribute(Constants.KAPTCHA_SESSION_KEY, code); - out = response.getOutputStream(); - ImageIO.write(bi, "jpg", out); - out.flush(); - - } - catch (Exception e) - { - e.printStackTrace(); - } - finally - { - try - { - if (out != null) - { - out.close(); - } - } - catch (IOException e) - { - e.printStackTrace(); - } - } - return null; - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysConfigController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysConfigController.java deleted file mode 100644 index a05a64c..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysConfigController.java +++ /dev/null @@ -1,159 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysConfigService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.system.domain.SysConfig; - -/** - * 参数配置 信息操作处理 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/config") -public class SysConfigController extends BaseController -{ - private String prefix = "system/config"; - - @Autowired - private ISysConfigService configService; - - @RequiresPermissions("system:config:view") - @GetMapping() - public String config() - { - return prefix + "/config"; - } - - /** - * 查询参数配置列表 - */ - @RequiresPermissions("system:config:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysConfig config) - { - startPage(); - List list = configService.selectConfigList(config); - return getDataTable(list); - } - - @Log(title = "参数管理", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:config:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysConfig config) - { - List list = configService.selectConfigList(config); - ExcelUtil util = new ExcelUtil(SysConfig.class); - return util.exportExcel(list, "参数数据"); - } - - /** - * 新增参数配置 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存参数配置 - */ - @RequiresPermissions("system:config:add") - @Log(title = "参数管理", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysConfig config) - { - if (UserConstants.CONFIG_KEY_NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) - { - return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); - } - config.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(configService.insertConfig(config)); - } - - /** - * 修改参数配置 - */ - @GetMapping("/edit/{configId}") - public String edit(@PathVariable("configId") Long configId, ModelMap mmap) - { - mmap.put("config", configService.selectConfigById(configId)); - return prefix + "/edit"; - } - - /** - * 修改保存参数配置 - */ - @RequiresPermissions("system:config:edit") - @Log(title = "参数管理", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysConfig config) - { - if (UserConstants.CONFIG_KEY_NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) - { - return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); - } - config.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(configService.updateConfig(config)); - } - - /** - * 删除参数配置 - */ - @RequiresPermissions("system:config:remove") - @Log(title = "参数管理", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - configService.deleteConfigByIds(ids); - return success(); - } - - /** - * 刷新参数缓存 - */ - @RequiresPermissions("system:config:remove") - @Log(title = "参数管理", businessType = BusinessType.CLEAN) - @GetMapping("/refreshCache") - @ResponseBody - public AjaxResult refreshCache() - { - configService.resetConfigCache(); - return success(); - } - - /** - * 校验参数键名 - */ - @PostMapping("/checkConfigKeyUnique") - @ResponseBody - public String checkConfigKeyUnique(SysConfig config) - { - return configService.checkConfigKeyUnique(config); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDeptController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDeptController.java deleted file mode 100644 index 9aa33dc..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDeptController.java +++ /dev/null @@ -1,209 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysDeptService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.Ztree; -import co.yixiang.common.core.domain.entity.SysDept; -import co.yixiang.common.core.domain.entity.SysRole; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.system.service.ISysDeptService; - -/** - * 部门信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/dept") -public class SysDeptController extends BaseController -{ - private String prefix = "system/dept"; - - @Autowired - private ISysDeptService deptService; - - @RequiresPermissions("system:dept:view") - @GetMapping() - public String dept() - { - return prefix + "/dept"; - } - - @RequiresPermissions("system:dept:list") - @PostMapping("/list") - @ResponseBody - public List list(SysDept dept) - { - List deptList = deptService.selectDeptList(dept); - return deptList; - } - - /** - * 新增部门 - */ - @GetMapping("/add/{parentId}") - public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) - { - if (!ShiroUtils.getSysUser().isAdmin()) - { - parentId = ShiroUtils.getSysUser().getDeptId(); - } - mmap.put("dept", deptService.selectDeptById(parentId)); - return prefix + "/add"; - } - - /** - * 新增保存部门 - */ - @Log(title = "部门管理", businessType = BusinessType.INSERT) - @RequiresPermissions("system:dept:add") - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysDept dept) - { - if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) - { - return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); - } - dept.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(deptService.insertDept(dept)); - } - - /** - * 修改 - */ - @GetMapping("/edit/{deptId}") - public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap) - { - SysDept dept = deptService.selectDeptById(deptId); - if (StringUtils.isNotNull(dept) && 100L == deptId) - { - dept.setParentName("无"); - } - mmap.put("dept", dept); - return prefix + "/edit"; - } - - /** - * 保存 - */ - @Log(title = "部门管理", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:dept:edit") - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysDept dept) - { - if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) - { - return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); - } - else if (dept.getParentId().equals(dept.getDeptId())) - { - return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); - } - else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) - && deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0) - { - return AjaxResult.error("该部门包含未停用的子部门!"); - } - dept.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(deptService.updateDept(dept)); - } - - /** - * 删除 - */ - @Log(title = "部门管理", businessType = BusinessType.DELETE) - @RequiresPermissions("system:dept:remove") - @GetMapping("/remove/{deptId}") - @ResponseBody - public AjaxResult remove(@PathVariable("deptId") Long deptId) - { - if (deptService.selectDeptCount(deptId) > 0) - { - return AjaxResult.warn("存在下级部门,不允许删除"); - } - if (deptService.checkDeptExistUser(deptId)) - { - return AjaxResult.warn("部门存在用户,不允许删除"); - } - return toAjax(deptService.deleteDeptById(deptId)); - } - - /** - * 校验部门名称 - */ - @PostMapping("/checkDeptNameUnique") - @ResponseBody - public String checkDeptNameUnique(SysDept dept) - { - return deptService.checkDeptNameUnique(dept); - } - - /** - * 选择部门树 - * - * @param deptId 部门ID - * @param excludeId 排除ID - */ - @GetMapping(value = { "/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}" }) - public String selectDeptTree(@PathVariable("deptId") Long deptId, - @PathVariable(value = "excludeId", required = false) String excludeId, ModelMap mmap) - { - mmap.put("dept", deptService.selectDeptById(deptId)); - mmap.put("excludeId", excludeId); - return prefix + "/tree"; - } - - /** - * 加载部门列表树 - */ - @GetMapping("/treeData") - @ResponseBody - public List treeData() - { - List ztrees = deptService.selectDeptTree(new SysDept()); - return ztrees; - } - - /** - * 加载部门列表树(排除下级) - */ - @GetMapping("/treeData/{excludeId}") - @ResponseBody - public List treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId) - { - SysDept dept = new SysDept(); - dept.setDeptId(excludeId); - List ztrees = deptService.selectDeptTreeExcludeChild(dept); - return ztrees; - } - - /** - * 加载角色部门(数据权限)列表树 - */ - @GetMapping("/roleDeptTreeData") - @ResponseBody - public List deptTreeData(SysRole role) - { - List ztrees = deptService.roleDeptTreeData(role); - return ztrees; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictDataController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictDataController.java deleted file mode 100644 index 0dde517..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictDataController.java +++ /dev/null @@ -1,123 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysDictDataService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysDictData; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.system.service.ISysDictDataService; - -/** - * 数据字典信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/dict/data") -public class SysDictDataController extends BaseController -{ - private String prefix = "system/dict/data"; - - @Autowired - private ISysDictDataService dictDataService; - - @RequiresPermissions("system:dict:view") - @GetMapping() - public String dictData() - { - return prefix + "/data"; - } - - @PostMapping("/list") - @RequiresPermissions("system:dict:list") - @ResponseBody - public TableDataInfo list(SysDictData dictData) - { - startPage(); - List list = dictDataService.selectDictDataList(dictData); - return getDataTable(list); - } - - @Log(title = "字典数据", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:dict:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysDictData dictData) - { - List list = dictDataService.selectDictDataList(dictData); - ExcelUtil util = new ExcelUtil(SysDictData.class); - return util.exportExcel(list, "字典数据"); - } - - /** - * 新增字典类型 - */ - @GetMapping("/add/{dictType}") - public String add(@PathVariable("dictType") String dictType, ModelMap mmap) - { - mmap.put("dictType", dictType); - return prefix + "/add"; - } - - /** - * 新增保存字典类型 - */ - @Log(title = "字典数据", businessType = BusinessType.INSERT) - @RequiresPermissions("system:dict:add") - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysDictData dict) - { - dict.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(dictDataService.insertDictData(dict)); - } - - /** - * 修改字典类型 - */ - @GetMapping("/edit/{dictCode}") - public String edit(@PathVariable("dictCode") Long dictCode, ModelMap mmap) - { - mmap.put("dict", dictDataService.selectDictDataById(dictCode)); - return prefix + "/edit"; - } - - /** - * 修改保存字典类型 - */ - @Log(title = "字典数据", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:dict:edit") - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysDictData dict) - { - dict.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(dictDataService.updateDictData(dict)); - } - - @Log(title = "字典数据", businessType = BusinessType.DELETE) - @RequiresPermissions("system:dict:remove") - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - dictDataService.deleteDictDataByIds(ids); - return success(); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictTypeController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictTypeController.java deleted file mode 100644 index 8595a2f..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysDictTypeController.java +++ /dev/null @@ -1,190 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysDictTypeService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.Ztree; -import co.yixiang.common.core.domain.entity.SysDictType; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.poi.ExcelUtil; - -/** - * 数据字典信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/dict") -public class SysDictTypeController extends BaseController -{ - private String prefix = "system/dict/type"; - - @Autowired - private ISysDictTypeService dictTypeService; - - @RequiresPermissions("system:dict:view") - @GetMapping() - public String dictType() - { - return prefix + "/type"; - } - - @PostMapping("/list") - @RequiresPermissions("system:dict:list") - @ResponseBody - public TableDataInfo list(SysDictType dictType) - { - startPage(); - List list = dictTypeService.selectDictTypeList(dictType); - return getDataTable(list); - } - - @Log(title = "字典类型", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:dict:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysDictType dictType) - { - - List list = dictTypeService.selectDictTypeList(dictType); - ExcelUtil util = new ExcelUtil(SysDictType.class); - return util.exportExcel(list, "字典类型"); - } - - /** - * 新增字典类型 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存字典类型 - */ - @Log(title = "字典类型", businessType = BusinessType.INSERT) - @RequiresPermissions("system:dict:add") - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysDictType dict) - { - if (UserConstants.DICT_TYPE_NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) - { - return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); - } - dict.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(dictTypeService.insertDictType(dict)); - } - - /** - * 修改字典类型 - */ - @GetMapping("/edit/{dictId}") - public String edit(@PathVariable("dictId") Long dictId, ModelMap mmap) - { - mmap.put("dict", dictTypeService.selectDictTypeById(dictId)); - return prefix + "/edit"; - } - - /** - * 修改保存字典类型 - */ - @Log(title = "字典类型", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:dict:edit") - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysDictType dict) - { - if (UserConstants.DICT_TYPE_NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) - { - return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); - } - dict.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(dictTypeService.updateDictType(dict)); - } - - @Log(title = "字典类型", businessType = BusinessType.DELETE) - @RequiresPermissions("system:dict:remove") - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - dictTypeService.deleteDictTypeByIds(ids); - return success(); - } - - /** - * 刷新字典缓存 - */ - @RequiresPermissions("system:dict:remove") - @Log(title = "字典类型", businessType = BusinessType.CLEAN) - @GetMapping("/refreshCache") - @ResponseBody - public AjaxResult refreshCache() - { - dictTypeService.resetDictCache(); - return success(); - } - - /** - * 查询字典详细 - */ - @RequiresPermissions("system:dict:list") - @GetMapping("/detail/{dictId}") - public String detail(@PathVariable("dictId") Long dictId, ModelMap mmap) - { - mmap.put("dict", dictTypeService.selectDictTypeById(dictId)); - mmap.put("dictList", dictTypeService.selectDictTypeAll()); - return "system/dict/data/data"; - } - - /** - * 校验字典类型 - */ - @PostMapping("/checkDictTypeUnique") - @ResponseBody - public String checkDictTypeUnique(SysDictType dictType) - { - return dictTypeService.checkDictTypeUnique(dictType); - } - - /** - * 选择字典树 - */ - @GetMapping("/selectDictTree/{columnId}/{dictType}") - public String selectDeptTree(@PathVariable("columnId") Long columnId, @PathVariable("dictType") String dictType, - ModelMap mmap) - { - mmap.put("columnId", columnId); - mmap.put("dict", dictTypeService.selectDictTypeByType(dictType)); - return prefix + "/tree"; - } - - /** - * 加载字典列表树 - */ - @GetMapping("/treeData") - @ResponseBody - public List treeData() - { - List ztrees = dictTypeService.selectDictTree(new SysDictType()); - return ztrees; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysIndexController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysIndexController.java deleted file mode 100644 index ff1c489..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysIndexController.java +++ /dev/null @@ -1,157 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.Date; -import java.util.List; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; - -import co.yixiang.system.service.ISysConfigService; -import co.yixiang.system.service.ISysMenuService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.config.RuoYiConfig; -import co.yixiang.common.constant.ShiroConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysMenu; -import co.yixiang.common.core.domain.entity.SysUser; -import co.yixiang.common.core.text.Convert; -import co.yixiang.common.utils.CookieUtils; -import co.yixiang.common.utils.DateUtils; -import co.yixiang.common.utils.ServletUtils; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.framework.shiro.service.SysPasswordService; - -/** - * 首页 业务处理 - * - * @author ruoyi - */ -@Controller -public class SysIndexController extends BaseController -{ - @Autowired - private ISysMenuService menuService; - - @Autowired - private ISysConfigService configService; - - @Autowired - private SysPasswordService passwordService; - - // 系统首页 - @GetMapping("/index") - public String index(ModelMap mmap) - { - // 取身份信息 - SysUser user = ShiroUtils.getSysUser(); - // 根据用户id取出菜单 - List menus = menuService.selectMenusByUser(user); - mmap.put("menus", menus); - mmap.put("user", user); - mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme")); - mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName")); - mmap.put("ignoreFooter", configService.selectConfigByKey("sys.index.ignoreFooter")); - mmap.put("copyrightYear", RuoYiConfig.getCopyrightYear()); - mmap.put("demoEnabled", RuoYiConfig.isDemoEnabled()); - mmap.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate())); - mmap.put("isPasswordExpired", passwordIsExpiration(user.getPwdUpdateDate())); - - // 菜单导航显示风格 - String menuStyle = configService.selectConfigByKey("sys.index.menuStyle"); - // 移动端,默认使左侧导航菜单,否则取默认配置 - String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "index" : menuStyle; - - // 优先Cookie配置导航菜单 - Cookie[] cookies = ServletUtils.getRequest().getCookies(); - for (Cookie cookie : cookies) - { - if (StringUtils.isNotEmpty(cookie.getName()) && "nav-style".equalsIgnoreCase(cookie.getName())) - { - indexStyle = cookie.getValue(); - break; - } - } - String webIndex = "topnav".equalsIgnoreCase(indexStyle) ? "index-topnav" : "index"; - return webIndex; - } - - // 锁定屏幕 - @GetMapping("/lockscreen") - public String lockscreen(ModelMap mmap) - { - mmap.put("user", ShiroUtils.getSysUser()); - ServletUtils.getSession().setAttribute(ShiroConstants.LOCK_SCREEN, true); - return "lock"; - } - - // 解锁屏幕 - @PostMapping("/unlockscreen") - @ResponseBody - public AjaxResult unlockscreen(String password) - { - SysUser user = ShiroUtils.getSysUser(); - if (StringUtils.isNull(user)) - { - return AjaxResult.error("服务器超时,请重新登陆"); - } - if (passwordService.matches(user, password)) - { - ServletUtils.getSession().removeAttribute(ShiroConstants.LOCK_SCREEN); - return AjaxResult.success(); - } - return AjaxResult.error("密码不正确,请重新输入。"); - } - - // 切换主题 - @GetMapping("/system/switchSkin") - public String switchSkin() - { - return "skin"; - } - - // 切换菜单 - @GetMapping("/system/menuStyle/{style}") - public void menuStyle(@PathVariable String style, HttpServletResponse response) - { - CookieUtils.setCookie(response, "nav-style", style); - } - - // 系统介绍 - @GetMapping("/system/main") - public String main(ModelMap mmap) - { - mmap.put("version", RuoYiConfig.getVersion()); - return "main2"; - } - - // 检查初始密码是否提醒修改 - public boolean initPasswordIsModify(Date pwdUpdateDate) - { - Integer initPasswordModify = Convert.toInt(configService.selectConfigByKey("sys.account.initPasswordModify")); - return initPasswordModify != null && initPasswordModify == 1 && pwdUpdateDate == null; - } - - // 检查密码是否过期 - public boolean passwordIsExpiration(Date pwdUpdateDate) - { - Integer passwordValidateDays = Convert.toInt(configService.selectConfigByKey("sys.account.passwordValidateDays")); - if (passwordValidateDays != null && passwordValidateDays > 0) - { - if (StringUtils.isNull(pwdUpdateDate)) - { - // 如果从未修改过初始密码,直接提醒过期 - return true; - } - Date nowDate = DateUtils.getNowDate(); - return DateUtils.differentDaysByMillisecond(nowDate, pwdUpdateDate) > passwordValidateDays; - } - return false; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysLoginController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysLoginController.java deleted file mode 100644 index 03072ff..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysLoginController.java +++ /dev/null @@ -1,65 +0,0 @@ -package co.yixiang.web.controller.system; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.UsernamePasswordToken; -import org.apache.shiro.subject.Subject; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.ServletUtils; -import co.yixiang.common.utils.StringUtils; - -/** - * 登录验证 - * - * @author ruoyi - */ -@Controller -public class SysLoginController extends BaseController -{ - @GetMapping("/login") - public String login(HttpServletRequest request, HttpServletResponse response) - { - // 如果是Ajax请求,返回Json字符串。 - if (ServletUtils.isAjaxRequest(request)) - { - return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"); - } - - return "login"; - } - - @PostMapping("/login") - @ResponseBody - public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) - { - UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe); - Subject subject = SecurityUtils.getSubject(); - try - { - subject.login(token); - return success(); - } - catch (AuthenticationException e) - { - String msg = "用户或密码错误"; - if (StringUtils.isNotEmpty(e.getMessage())) - { - msg = e.getMessage(); - } - return error(msg); - } - } - - @GetMapping("/unauth") - public String unauth() - { - return "error/unauth"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysMenuController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysMenuController.java deleted file mode 100644 index 0624d94..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysMenuController.java +++ /dev/null @@ -1,198 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysMenuService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.Ztree; -import co.yixiang.common.core.domain.entity.SysMenu; -import co.yixiang.common.core.domain.entity.SysRole; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.framework.shiro.util.AuthorizationUtils; - -/** - * 菜单信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/menu") -public class SysMenuController extends BaseController -{ - private String prefix = "system/menu"; - - @Autowired - private ISysMenuService menuService; - - @RequiresPermissions("system:menu:view") - @GetMapping() - public String menu() - { - return prefix + "/menu"; - } - - @RequiresPermissions("system:menu:list") - @PostMapping("/list") - @ResponseBody - public List list(SysMenu menu) - { - Long userId = ShiroUtils.getUserId(); - List menuList = menuService.selectMenuList(menu, userId); - return menuList; - } - - /** - * 删除菜单 - */ - @Log(title = "菜单管理", businessType = BusinessType.DELETE) - @RequiresPermissions("system:menu:remove") - @GetMapping("/remove/{menuId}") - @ResponseBody - public AjaxResult remove(@PathVariable("menuId") Long menuId) - { - if (menuService.selectCountMenuByParentId(menuId) > 0) - { - return AjaxResult.warn("存在子菜单,不允许删除"); - } - if (menuService.selectCountRoleMenuByMenuId(menuId) > 0) - { - return AjaxResult.warn("菜单已分配,不允许删除"); - } - AuthorizationUtils.clearAllCachedAuthorizationInfo(); - return toAjax(menuService.deleteMenuById(menuId)); - } - - /** - * 新增 - */ - @GetMapping("/add/{parentId}") - public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) - { - SysMenu menu = null; - if (0L != parentId) - { - menu = menuService.selectMenuById(parentId); - } - else - { - menu = new SysMenu(); - menu.setMenuId(0L); - menu.setMenuName("主目录"); - } - mmap.put("menu", menu); - return prefix + "/add"; - } - - /** - * 新增保存菜单 - */ - @Log(title = "菜单管理", businessType = BusinessType.INSERT) - @RequiresPermissions("system:menu:add") - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysMenu menu) - { - if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) - { - return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); - } - menu.setCreateBy(ShiroUtils.getLoginName()); - AuthorizationUtils.clearAllCachedAuthorizationInfo(); - return toAjax(menuService.insertMenu(menu)); - } - - /** - * 修改菜单 - */ - @GetMapping("/edit/{menuId}") - public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap) - { - mmap.put("menu", menuService.selectMenuById(menuId)); - return prefix + "/edit"; - } - - /** - * 修改保存菜单 - */ - @Log(title = "菜单管理", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:menu:edit") - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysMenu menu) - { - if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) - { - return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); - } - menu.setUpdateBy(ShiroUtils.getLoginName()); - AuthorizationUtils.clearAllCachedAuthorizationInfo(); - return toAjax(menuService.updateMenu(menu)); - } - - /** - * 选择菜单图标 - */ - @GetMapping("/icon") - public String icon() - { - return prefix + "/icon"; - } - - /** - * 校验菜单名称 - */ - @PostMapping("/checkMenuNameUnique") - @ResponseBody - public String checkMenuNameUnique(SysMenu menu) - { - return menuService.checkMenuNameUnique(menu); - } - - /** - * 加载角色菜单列表树 - */ - @GetMapping("/roleMenuTreeData") - @ResponseBody - public List roleMenuTreeData(SysRole role) - { - Long userId = ShiroUtils.getUserId(); - List ztrees = menuService.roleMenuTreeData(role, userId); - return ztrees; - } - - /** - * 加载所有菜单列表树 - */ - @GetMapping("/menuTreeData") - @ResponseBody - public List menuTreeData() - { - Long userId = ShiroUtils.getUserId(); - List ztrees = menuService.menuTreeData(userId); - return ztrees; - } - - /** - * 选择菜单树 - */ - @GetMapping("/selectMenuTree/{menuId}") - public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap) - { - mmap.put("menu", menuService.selectMenuById(menuId)); - return prefix + "/tree"; - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysNoticeController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysNoticeController.java deleted file mode 100644 index 96013ce..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysNoticeController.java +++ /dev/null @@ -1,112 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.system.domain.SysNotice; -import co.yixiang.system.service.ISysNoticeService; - -/** - * 公告 信息操作处理 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/notice") -public class SysNoticeController extends BaseController -{ - private String prefix = "system/notice"; - - @Autowired - private ISysNoticeService noticeService; - - @RequiresPermissions("system:notice:view") - @GetMapping() - public String notice() - { - return prefix + "/notice"; - } - - /** - * 查询公告列表 - */ - @RequiresPermissions("system:notice:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysNotice notice) - { - startPage(); - List list = noticeService.selectNoticeList(notice); - return getDataTable(list); - } - - /** - * 新增公告 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存公告 - */ - @RequiresPermissions("system:notice:add") - @Log(title = "通知公告", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(SysNotice notice) - { - notice.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(noticeService.insertNotice(notice)); - } - - /** - * 修改公告 - */ - @GetMapping("/edit/{noticeId}") - public String edit(@PathVariable("noticeId") Long noticeId, ModelMap mmap) - { - mmap.put("notice", noticeService.selectNoticeById(noticeId)); - return prefix + "/edit"; - } - - /** - * 修改保存公告 - */ - @RequiresPermissions("system:notice:edit") - @Log(title = "通知公告", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(SysNotice notice) - { - notice.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(noticeService.updateNotice(notice)); - } - - /** - * 删除公告 - */ - @RequiresPermissions("system:notice:remove") - @Log(title = "通知公告", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(noticeService.deleteNoticeByIds(ids)); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysPostController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysPostController.java deleted file mode 100644 index 53b4b49..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysPostController.java +++ /dev/null @@ -1,163 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.system.domain.SysPost; -import co.yixiang.system.service.ISysPostService; - -/** - * 岗位信息操作处理 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/post") -public class SysPostController extends BaseController -{ - private String prefix = "system/post"; - - @Autowired - private ISysPostService postService; - - @RequiresPermissions("system:post:view") - @GetMapping() - public String operlog() - { - return prefix + "/post"; - } - - @RequiresPermissions("system:post:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysPost post) - { - startPage(); - List list = postService.selectPostList(post); - return getDataTable(list); - } - - @Log(title = "岗位管理", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:post:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysPost post) - { - List list = postService.selectPostList(post); - ExcelUtil util = new ExcelUtil(SysPost.class); - return util.exportExcel(list, "岗位数据"); - } - - @RequiresPermissions("system:post:remove") - @Log(title = "岗位管理", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - try - { - return toAjax(postService.deletePostByIds(ids)); - } - catch (Exception e) - { - return error(e.getMessage()); - } - } - - /** - * 新增岗位 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存岗位 - */ - @RequiresPermissions("system:post:add") - @Log(title = "岗位管理", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysPost post) - { - if (UserConstants.POST_NAME_NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) - { - return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); - } - else if (UserConstants.POST_CODE_NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) - { - return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); - } - post.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(postService.insertPost(post)); - } - - /** - * 修改岗位 - */ - @GetMapping("/edit/{postId}") - public String edit(@PathVariable("postId") Long postId, ModelMap mmap) - { - mmap.put("post", postService.selectPostById(postId)); - return prefix + "/edit"; - } - - /** - * 修改保存岗位 - */ - @RequiresPermissions("system:post:edit") - @Log(title = "岗位管理", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysPost post) - { - if (UserConstants.POST_NAME_NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) - { - return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); - } - else if (UserConstants.POST_CODE_NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) - { - return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); - } - post.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(postService.updatePost(post)); - } - - /** - * 校验岗位名称 - */ - @PostMapping("/checkPostNameUnique") - @ResponseBody - public String checkPostNameUnique(SysPost post) - { - return postService.checkPostNameUnique(post); - } - - /** - * 校验岗位编码 - */ - @PostMapping("/checkPostCodeUnique") - @ResponseBody - public String checkPostCodeUnique(SysPost post) - { - return postService.checkPostCodeUnique(post); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysProfileController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysProfileController.java deleted file mode 100644 index d6c7e16..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysProfileController.java +++ /dev/null @@ -1,187 +0,0 @@ -package co.yixiang.web.controller.system; - -import co.yixiang.system.service.ISysUserService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.config.RuoYiConfig; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysUser; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.DateUtils; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.utils.file.FileUploadUtils; -import co.yixiang.framework.shiro.service.SysPasswordService; - -/** - * 个人信息 业务处理 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/user/profile") -public class SysProfileController extends BaseController -{ - private static final Logger log = LoggerFactory.getLogger(SysProfileController.class); - - private String prefix = "system/user/profile"; - - @Autowired - private ISysUserService userService; - - @Autowired - private SysPasswordService passwordService; - - /** - * 个人信息 - */ - @GetMapping() - public String profile(ModelMap mmap) - { - SysUser user = ShiroUtils.getSysUser(); - mmap.put("user", user); - mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId())); - mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId())); - return prefix + "/profile"; - } - - @GetMapping("/checkPassword") - @ResponseBody - public boolean checkPassword(String password) - { - SysUser user = ShiroUtils.getSysUser(); - if (passwordService.matches(user, password)) - { - return true; - } - return false; - } - - @GetMapping("/resetPwd") - public String resetPwd(ModelMap mmap) - { - SysUser user = ShiroUtils.getSysUser(); - mmap.put("user", userService.selectUserById(user.getUserId())); - return prefix + "/resetPwd"; - } - - @Log(title = "重置密码", businessType = BusinessType.UPDATE) - @PostMapping("/resetPwd") - @ResponseBody - public AjaxResult resetPwd(String oldPassword, String newPassword) - { - SysUser user = ShiroUtils.getSysUser(); - if (!passwordService.matches(user, oldPassword)) - { - return error("修改密码失败,旧密码错误"); - } - if (passwordService.matches(user, newPassword)) - { - return error("新密码不能与旧密码相同"); - } - user.setSalt(ShiroUtils.randomSalt()); - user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt())); - user.setPwdUpdateDate(DateUtils.getNowDate()); - if (userService.resetUserPwd(user) > 0) - { - ShiroUtils.setSysUser(userService.selectUserById(user.getUserId())); - return success(); - } - return error("修改密码异常,请联系管理员"); - } - - /** - * 修改用户 - */ - @GetMapping("/edit") - public String edit(ModelMap mmap) - { - SysUser user = ShiroUtils.getSysUser(); - mmap.put("user", userService.selectUserById(user.getUserId())); - return prefix + "/edit"; - } - - /** - * 修改头像 - */ - @GetMapping("/avatar") - public String avatar(ModelMap mmap) - { - SysUser user = ShiroUtils.getSysUser(); - mmap.put("user", userService.selectUserById(user.getUserId())); - return prefix + "/avatar"; - } - - /** - * 修改用户 - */ - @Log(title = "个人信息", businessType = BusinessType.UPDATE) - @PostMapping("/update") - @ResponseBody - public AjaxResult update(SysUser user) - { - SysUser currentUser = ShiroUtils.getSysUser(); - currentUser.setUserName(user.getUserName()); - currentUser.setEmail(user.getEmail()); - currentUser.setPhonenumber(user.getPhonenumber()); - currentUser.setSex(user.getSex()); - if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(currentUser))) - { - return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(currentUser))) - { - return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在"); - } - if (userService.updateUserInfo(currentUser) > 0) - { - ShiroUtils.setSysUser(userService.selectUserById(currentUser.getUserId())); - return success(); - } - return error(); - } - - /** - * 保存头像 - */ - @Log(title = "个人信息", businessType = BusinessType.UPDATE) - @PostMapping("/updateAvatar") - @ResponseBody - public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file) - { - SysUser currentUser = ShiroUtils.getSysUser(); - try - { - if (!file.isEmpty()) - { - String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file); - currentUser.setAvatar(avatar); - if (userService.updateUserInfo(currentUser) > 0) - { - ShiroUtils.setSysUser(userService.selectUserById(currentUser.getUserId())); - return success(); - } - } - return error(); - } - catch (Exception e) - { - log.error("修改头像失败!", e); - return error(e.getMessage()); - } - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRegisterController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRegisterController.java deleted file mode 100644 index 1c15777..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRegisterController.java +++ /dev/null @@ -1,47 +0,0 @@ -package co.yixiang.web.controller.system; - -import co.yixiang.system.service.ISysConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysUser; -import co.yixiang.framework.shiro.service.SysRegisterService; -import co.yixiang.system.service.ISysConfigService; - -/** - * 注册验证 - * - * @author ruoyi - */ -@Controller -public class SysRegisterController extends BaseController -{ - @Autowired - private SysRegisterService registerService; - - @Autowired - private ISysConfigService configService; - - @GetMapping("/register") - public String register() - { - return "register"; - } - - @PostMapping("/register") - @ResponseBody - public AjaxResult ajaxRegister(SysUser user) - { - if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) - { - return error("当前系统没有开启注册功能!"); - } - String msg = registerService.register(user); - return StringUtils.isEmpty(msg) ? success() : error(msg); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRoleController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRoleController.java deleted file mode 100644 index f5a0def..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysRoleController.java +++ /dev/null @@ -1,299 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; - -import co.yixiang.system.service.ISysRoleService; -import co.yixiang.system.service.ISysUserService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysRole; -import co.yixiang.common.core.domain.entity.SysUser; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.framework.shiro.util.AuthorizationUtils; -import co.yixiang.system.domain.SysUserRole; - -/** - * 角色信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/role") -public class SysRoleController extends BaseController -{ - private String prefix = "system/role"; - - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysUserService userService; - - @RequiresPermissions("system:role:view") - @GetMapping() - public String role() - { - return prefix + "/role"; - } - - @RequiresPermissions("system:role:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysRole role) - { - startPage(); - List list = roleService.selectRoleList(role); - return getDataTable(list); - } - - @Log(title = "角色管理", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:role:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysRole role) - { - List list = roleService.selectRoleList(role); - ExcelUtil util = new ExcelUtil(SysRole.class); - return util.exportExcel(list, "角色数据"); - } - - /** - * 新增角色 - */ - @GetMapping("/add") - public String add() - { - return prefix + "/add"; - } - - /** - * 新增保存角色 - */ - @RequiresPermissions("system:role:add") - @Log(title = "角色管理", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysRole role) - { - if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) - { - return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) - { - return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); - } - role.setCreateBy(ShiroUtils.getLoginName()); - AuthorizationUtils.clearAllCachedAuthorizationInfo(); - return toAjax(roleService.insertRole(role)); - - } - - /** - * 修改角色 - */ - @GetMapping("/edit/{roleId}") - public String edit(@PathVariable("roleId") Long roleId, ModelMap mmap) - { - mmap.put("role", roleService.selectRoleById(roleId)); - return prefix + "/edit"; - } - - /** - * 修改保存角色 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysRole role) - { - roleService.checkRoleAllowed(role); - if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) - { - return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) - { - return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); - } - role.setUpdateBy(ShiroUtils.getLoginName()); - AuthorizationUtils.clearAllCachedAuthorizationInfo(); - return toAjax(roleService.updateRole(role)); - } - - /** - * 角色分配数据权限 - */ - @GetMapping("/authDataScope/{roleId}") - public String authDataScope(@PathVariable("roleId") Long roleId, ModelMap mmap) - { - mmap.put("role", roleService.selectRoleById(roleId)); - return prefix + "/dataScope"; - } - - /** - * 保存角色分配数据权限 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @PostMapping("/authDataScope") - @ResponseBody - public AjaxResult authDataScopeSave(SysRole role) - { - roleService.checkRoleAllowed(role); - role.setUpdateBy(ShiroUtils.getLoginName()); - if (roleService.authDataScope(role) > 0) - { - ShiroUtils.setSysUser(userService.selectUserById(ShiroUtils.getSysUser().getUserId())); - return success(); - } - return error(); - } - - @RequiresPermissions("system:role:remove") - @Log(title = "角色管理", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(roleService.deleteRoleByIds(ids)); - } - - /** - * 校验角色名称 - */ - @PostMapping("/checkRoleNameUnique") - @ResponseBody - public String checkRoleNameUnique(SysRole role) - { - return roleService.checkRoleNameUnique(role); - } - - /** - * 校验角色权限 - */ - @PostMapping("/checkRoleKeyUnique") - @ResponseBody - public String checkRoleKeyUnique(SysRole role) - { - return roleService.checkRoleKeyUnique(role); - } - - /** - * 选择菜单树 - */ - @GetMapping("/selectMenuTree") - public String selectMenuTree() - { - return prefix + "/tree"; - } - - /** - * 角色状态修改 - */ - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:role:edit") - @PostMapping("/changeStatus") - @ResponseBody - public AjaxResult changeStatus(SysRole role) - { - roleService.checkRoleAllowed(role); - return toAjax(roleService.changeStatus(role)); - } - - /** - * 分配用户 - */ - @RequiresPermissions("system:role:edit") - @GetMapping("/authUser/{roleId}") - public String authUser(@PathVariable("roleId") Long roleId, ModelMap mmap) - { - mmap.put("role", roleService.selectRoleById(roleId)); - return prefix + "/authUser"; - } - - /** - * 查询已分配用户角色列表 - */ - @RequiresPermissions("system:role:list") - @PostMapping("/authUser/allocatedList") - @ResponseBody - public TableDataInfo allocatedList(SysUser user) - { - startPage(); - List list = userService.selectAllocatedList(user); - return getDataTable(list); - } - - /** - * 取消授权 - */ - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PostMapping("/authUser/cancel") - @ResponseBody - public AjaxResult cancelAuthUser(SysUserRole userRole) - { - return toAjax(roleService.deleteAuthUser(userRole)); - } - - /** - * 批量取消授权 - */ - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PostMapping("/authUser/cancelAll") - @ResponseBody - public AjaxResult cancelAuthUserAll(Long roleId, String userIds) - { - return toAjax(roleService.deleteAuthUsers(roleId, userIds)); - } - - /** - * 选择用户 - */ - @GetMapping("/authUser/selectUser/{roleId}") - public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap) - { - mmap.put("role", roleService.selectRoleById(roleId)); - return prefix + "/selectUser"; - } - - /** - * 查询未分配用户角色列表 - */ - @RequiresPermissions("system:role:list") - @PostMapping("/authUser/unallocatedList") - @ResponseBody - public TableDataInfo unallocatedList(SysUser user) - { - startPage(); - List list = userService.selectUnallocatedList(user); - return getDataTable(list); - } - - /** - * 批量选择用户授权 - */ - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PostMapping("/authUser/selectAll") - @ResponseBody - public AjaxResult selectAuthUserAll(Long roleId, String userIds) - { - return toAjax(roleService.insertAuthUsers(roleId, userIds)); - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysUserController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysUserController.java deleted file mode 100644 index 0e482c3..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/system/SysUserController.java +++ /dev/null @@ -1,289 +0,0 @@ -package co.yixiang.web.controller.system; - -import java.util.List; -import java.util.stream.Collectors; - -import co.yixiang.system.service.ISysRoleService; -import co.yixiang.system.service.ISysUserService; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; -import co.yixiang.common.annotation.Log; -import co.yixiang.common.constant.UserConstants; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.core.domain.entity.SysRole; -import co.yixiang.common.core.domain.entity.SysUser; -import co.yixiang.common.core.page.TableDataInfo; -import co.yixiang.common.enums.BusinessType; -import co.yixiang.common.utils.ShiroUtils; -import co.yixiang.common.utils.StringUtils; -import co.yixiang.common.utils.poi.ExcelUtil; -import co.yixiang.framework.shiro.service.SysPasswordService; -import co.yixiang.system.service.ISysPostService; - -/** - * 用户信息 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/system/user") -public class SysUserController extends BaseController -{ - private String prefix = "system/user"; - - @Autowired - private ISysUserService userService; - - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysPostService postService; - - @Autowired - private SysPasswordService passwordService; - - @RequiresPermissions("system:user:view") - @GetMapping() - public String user() - { - return prefix + "/user"; - } - - @RequiresPermissions("system:user:list") - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(SysUser user) - { - startPage(); - List list = userService.selectUserList(user); - return getDataTable(list); - } - - @Log(title = "用户管理", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:user:export") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(SysUser user) - { - List list = userService.selectUserList(user); - ExcelUtil util = new ExcelUtil(SysUser.class); - return util.exportExcel(list, "用户数据"); - } - - @Log(title = "用户管理", businessType = BusinessType.IMPORT) - @RequiresPermissions("system:user:import") - @PostMapping("/importData") - @ResponseBody - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { - ExcelUtil util = new ExcelUtil(SysUser.class); - List userList = util.importExcel(file.getInputStream()); - String operName = ShiroUtils.getSysUser().getLoginName(); - String message = userService.importUser(userList, updateSupport, operName); - return AjaxResult.success(message); - } - - @RequiresPermissions("system:user:view") - @GetMapping("/importTemplate") - @ResponseBody - public AjaxResult importTemplate() - { - ExcelUtil util = new ExcelUtil(SysUser.class); - return util.importTemplateExcel("用户数据"); - } - - /** - * 新增用户 - */ - @GetMapping("/add") - public String add(ModelMap mmap) - { - mmap.put("roles", roleService.selectRoleAll().stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - mmap.put("posts", postService.selectPostAll()); - return prefix + "/add"; - } - - /** - * 新增保存用户 - */ - @RequiresPermissions("system:user:add") - @Log(title = "用户管理", businessType = BusinessType.INSERT) - @PostMapping("/add") - @ResponseBody - public AjaxResult addSave(@Validated SysUser user) - { - if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName()))) - { - return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在"); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) - { - return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user))) - { - return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在"); - } - user.setSalt(ShiroUtils.randomSalt()); - user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); - user.setCreateBy(ShiroUtils.getLoginName()); - return toAjax(userService.insertUser(user)); - } - - /** - * 修改用户 - */ - @GetMapping("/edit/{userId}") - public String edit(@PathVariable("userId") Long userId, ModelMap mmap) - { - List roles = roleService.selectRolesByUserId(userId); - mmap.put("user", userService.selectUserById(userId)); - mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - mmap.put("posts", postService.selectPostsByUserId(userId)); - return prefix + "/edit"; - } - - /** - * 修改保存用户 - */ - @RequiresPermissions("system:user:edit") - @Log(title = "用户管理", businessType = BusinessType.UPDATE) - @PostMapping("/edit") - @ResponseBody - public AjaxResult editSave(@Validated SysUser user) - { - userService.checkUserAllowed(user); - if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) - { - return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user))) - { - return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在"); - } - user.setUpdateBy(ShiroUtils.getLoginName()); - return toAjax(userService.updateUser(user)); - } - - @RequiresPermissions("system:user:resetPwd") - @GetMapping("/resetPwd/{userId}") - public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap) - { - mmap.put("user", userService.selectUserById(userId)); - return prefix + "/resetPwd"; - } - - @RequiresPermissions("system:user:resetPwd") - @Log(title = "重置密码", businessType = BusinessType.UPDATE) - @PostMapping("/resetPwd") - @ResponseBody - public AjaxResult resetPwdSave(SysUser user) - { - userService.checkUserAllowed(user); - user.setSalt(ShiroUtils.randomSalt()); - user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); - if (userService.resetUserPwd(user) > 0) - { - if (ShiroUtils.getUserId().longValue() == user.getUserId().longValue()) - { - ShiroUtils.setSysUser(userService.selectUserById(user.getUserId())); - } - return success(); - } - return error(); - } - - /** - * 进入授权角色页 - */ - @GetMapping("/authRole/{userId}") - public String authRole(@PathVariable("userId") Long userId, ModelMap mmap) - { - SysUser user = userService.selectUserById(userId); - // 获取用户所属的角色列表 - List roles = roleService.selectRolesByUserId(userId); - mmap.put("user", user); - mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - return prefix + "/authRole"; - } - - /** - * 用户授权角色 - */ - @RequiresPermissions("system:user:add") - @Log(title = "用户管理", businessType = BusinessType.GRANT) - @PostMapping("/authRole/insertAuthRole") - @ResponseBody - public AjaxResult insertAuthRole(Long userId, Long[] roleIds) - { - userService.insertUserAuth(userId, roleIds); - return success(); - } - - @RequiresPermissions("system:user:remove") - @Log(title = "用户管理", businessType = BusinessType.DELETE) - @PostMapping("/remove") - @ResponseBody - public AjaxResult remove(String ids) - { - return toAjax(userService.deleteUserByIds(ids)); - } - - /** - * 校验用户名 - */ - @PostMapping("/checkLoginNameUnique") - @ResponseBody - public String checkLoginNameUnique(SysUser user) - { - return userService.checkLoginNameUnique(user.getLoginName()); - } - - /** - * 校验手机号码 - */ - @PostMapping("/checkPhoneUnique") - @ResponseBody - public String checkPhoneUnique(SysUser user) - { - return userService.checkPhoneUnique(user); - } - - /** - * 校验email邮箱 - */ - @PostMapping("/checkEmailUnique") - @ResponseBody - public String checkEmailUnique(SysUser user) - { - return userService.checkEmailUnique(user); - } - - /** - * 用户状态修改 - */ - @Log(title = "用户管理", businessType = BusinessType.UPDATE) - @RequiresPermissions("system:user:edit") - @PostMapping("/changeStatus") - @ResponseBody - public AjaxResult changeStatus(SysUser user) - { - userService.checkUserAllowed(user); - return toAjax(userService.changeStatus(user)); - } -} \ No newline at end of file diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/BuildController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/tool/BuildController.java deleted file mode 100644 index 66d9014..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/BuildController.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.web.controller.tool; - -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import co.yixiang.common.core.controller.BaseController; - -/** - * build 表单构建 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/tool/build") -public class BuildController extends BaseController -{ - private String prefix = "tool/build"; - - @RequiresPermissions("tool:build:view") - @GetMapping() - public String build() - { - return prefix + "/build"; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/SwaggerController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/tool/SwaggerController.java deleted file mode 100644 index 95f68d3..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/SwaggerController.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.web.controller.tool; - -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import co.yixiang.common.core.controller.BaseController; - -/** - * swagger 接口 - * - * @author ruoyi - */ -@Controller -@RequestMapping("/tool/swagger") -public class SwaggerController extends BaseController -{ - @RequiresPermissions("tool:swagger:view") - @GetMapping() - public String index() - { - return redirect("/swagger-ui.html"); - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/TestController.java b/supplier-admin/src/main/java/co/yixiang/web/controller/tool/TestController.java deleted file mode 100644 index 34a9890..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/controller/tool/TestController.java +++ /dev/null @@ -1,181 +0,0 @@ -package co.yixiang.web.controller.tool; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import co.yixiang.common.core.controller.BaseController; -import co.yixiang.common.core.domain.AjaxResult; -import co.yixiang.common.utils.StringUtils; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import io.swagger.annotations.ApiOperation; - -/** - * swagger 用户测试方法 - * - * @author ruoyi - */ -@Api("用户信息管理") -@RestController -@RequestMapping("/test/user") -public class TestController extends BaseController -{ - private final static Map users = new LinkedHashMap(); - { - users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); - users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); - } - - @ApiOperation("获取用户列表") - @GetMapping("/list") - public AjaxResult userList() - { - List userList = new ArrayList(users.values()); - return AjaxResult.success(userList); - } - - @ApiOperation("获取用户详细") - @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path") - @GetMapping("/{userId}") - public AjaxResult getUser(@PathVariable Integer userId) - { - if (!users.isEmpty() && users.containsKey(userId)) - { - return AjaxResult.success(users.get(userId)); - } - else - { - return error("用户不存在"); - } - } - - @ApiOperation("新增用户") - @ApiImplicitParams({ - @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer"), - @ApiImplicitParam(name = "username", value = "用户名称", dataType = "String"), - @ApiImplicitParam(name = "password", value = "用户密码", dataType = "String"), - @ApiImplicitParam(name = "mobile", value = "用户手机", dataType = "String") - }) - @PostMapping("/save") - public AjaxResult save(UserEntity user) - { - if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) - { - return error("用户ID不能为空"); - } - return AjaxResult.success(users.put(user.getUserId(), user)); - } - - @ApiOperation("更新用户") - @PutMapping("/update") - public AjaxResult update(@RequestBody UserEntity user) - { - if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) - { - return error("用户ID不能为空"); - } - if (users.isEmpty() || !users.containsKey(user.getUserId())) - { - return error("用户不存在"); - } - users.remove(user.getUserId()); - return AjaxResult.success(users.put(user.getUserId(), user)); - } - - @ApiOperation("删除用户信息") - @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path") - @DeleteMapping("/{userId}") - public AjaxResult delete(@PathVariable Integer userId) - { - if (!users.isEmpty() && users.containsKey(userId)) - { - users.remove(userId); - return success(); - } - else - { - return error("用户不存在"); - } - } -} - -@ApiModel(value = "UserEntity", description = "用户实体") -class UserEntity -{ - @ApiModelProperty("用户ID") - private Integer userId; - - @ApiModelProperty("用户名称") - private String username; - - @ApiModelProperty("用户密码") - private String password; - - @ApiModelProperty("用户手机") - private String mobile; - - public UserEntity() - { - - } - - public UserEntity(Integer userId, String username, String password, String mobile) - { - this.userId = userId; - this.username = username; - this.password = password; - this.mobile = mobile; - } - - public Integer getUserId() - { - return userId; - } - - public void setUserId(Integer userId) - { - this.userId = userId; - } - - public String getUsername() - { - return username; - } - - public void setUsername(String username) - { - this.username = username; - } - - public String getPassword() - { - return password; - } - - public void setPassword(String password) - { - this.password = password; - } - - public String getMobile() - { - return mobile; - } - - public void setMobile(String mobile) - { - this.mobile = mobile; - } -} diff --git a/supplier-admin/src/main/java/co/yixiang/web/core/config/SwaggerConfig.java b/supplier-admin/src/main/java/co/yixiang/web/core/config/SwaggerConfig.java deleted file mode 100644 index 770ce35..0000000 --- a/supplier-admin/src/main/java/co/yixiang/web/core/config/SwaggerConfig.java +++ /dev/null @@ -1,69 +0,0 @@ -package co.yixiang.web.core.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import co.yixiang.common.config.RuoYiConfig; -import io.swagger.annotations.ApiOperation; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Contact; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -/** - * Swagger2的接口配置 - * - * @author ruoyi - */ -@Configuration -@EnableSwagger2 -public class SwaggerConfig -{ - /** 是否开启swagger */ - @Value("${swagger.enabled}") - private boolean enabled; - - /** - * 创建API - */ - @Bean - public Docket createRestApi() - { - return new Docket(DocumentationType.SWAGGER_2) - // 是否启用Swagger - .enable(enabled) - // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) - .apiInfo(apiInfo()) - // 设置哪些接口暴露给Swagger展示 - .select() - // 扫描所有有注解的api,用这种方式更灵活 - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) - // 扫描指定包中的swagger注解 - //.apis(RequestHandlerSelectors.basePackage("co.yixiang.project.tool.swagger")) - // 扫描所有 .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); - } - - /** - * 添加摘要信息 - */ - private ApiInfo apiInfo() - { - // 用ApiInfoBuilder进行定制 - return new ApiInfoBuilder() - // 设置标题 - .title("标题:若依管理系统_接口文档") - // 描述 - .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") - // 作者信息 - .contact(new Contact(RuoYiConfig.getName(), null, null)) - // 版本 - .version("版本号:" + RuoYiConfig.getVersion()) - .build(); - } -} diff --git a/supplier-admin/src/main/resources/application-druid.yml b/supplier-admin/src/main/resources/application-druid.yml deleted file mode 100644 index 5ab442d..0000000 --- a/supplier-admin/src/main/resources/application-druid.yml +++ /dev/null @@ -1,57 +0,0 @@ -# 数据源配置 -spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - druid: - # 主库数据源 - master: - url: jdbc:mysql://localhost:3306/supply_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: root - # 从库数据源 - slave: - # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: - # 初始连接数 - initialSize: 5 - # 最小连接池数量 - minIdle: 10 - # 最大连接池数量 - maxActive: 20 - # 配置获取连接等待超时的时间 - maxWait: 60000 - # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - timeBetweenEvictionRunsMillis: 60000 - # 配置一个连接在池中最小生存的时间,单位是毫秒 - minEvictableIdleTimeMillis: 300000 - # 配置一个连接在池中最大生存的时间,单位是毫秒 - maxEvictableIdleTimeMillis: 900000 - # 配置检测连接是否有效 - validationQuery: SELECT 1 FROM DUAL - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - webStatFilter: - enabled: true - statViewServlet: - enabled: true - # 设置白名单,不填则允许所有访问 - allow: - url-pattern: /druid/* - # 控制台管理用户名和密码 - login-username: ruoyi - login-password: 123456 - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true \ No newline at end of file diff --git a/supplier-admin/src/main/resources/application.yml b/supplier-admin/src/main/resources/application.yml deleted file mode 100644 index 47c58ab..0000000 --- a/supplier-admin/src/main/resources/application.yml +++ /dev/null @@ -1,135 +0,0 @@ -# 项目相关配置 -ruoyi: - # 名称 - name: supplier - # 版本 - version: 2.0.0 - # 版权年份 - copyrightYear: 2021 - # 实例演示开关 - demoEnabled: true - # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: D:/ruoyi/uploadPath - # 获取ip地址开关 - addressEnabled: false - -# 开发环境配置 -server: - # 服务器的HTTP端口,默认为80 - port: 8080 - servlet: - # 应用的访问路径 - context-path: / - tomcat: - # tomcat的URI编码 - uri-encoding: UTF-8 - # tomcat最大线程数,默认为200 - max-threads: 800 - # Tomcat启动初始化的线程数,默认值25 - min-spare-threads: 30 - -# 日志配置 -logging: - level: - co.yixiang: debug - org.springframework: warn - -# 用户配置 -user: - password: - # 密码错误{maxRetryCount}次锁定10分钟 - maxRetryCount: 5 - -# Spring配置 -spring: - # 模板引擎 - thymeleaf: - mode: HTML - encoding: utf-8 - # 禁用缓存 - cache: false - # 资源信息 - messages: - # 国际化资源文件路径 - basename: static/i18n/messages - jackson: - time-zone: GMT+8 - date-format: yyyy-MM-dd HH:mm:ss - profiles: - active: druid - # 文件上传 - servlet: - multipart: - # 单个文件大小 - max-file-size: 10MB - # 设置总上传的文件大小 - max-request-size: 20MB - # 服务模块 - devtools: - restart: - # 热部署开关 - enabled: true - -# MyBatis -mybatis: - # 搜索指定包别名 - typeAliasesPackage: co.yixiang.**.domain - # 配置mapper的扫描,找到所有的mapper.xml映射文件 - mapperLocations: classpath*:mapper/**/*Mapper.xml - # 加载全局的配置文件 - configLocation: classpath:mybatis/mybatis-config.xml - -# PageHelper分页插件 -pagehelper: - helperDialect: mysql - reasonable: true - supportMethodsArguments: true - params: count=countSql - -# Shiro -shiro: - user: - # 登录地址 - loginUrl: /login - # 权限认证失败地址 - unauthorizedUrl: /unauth - # 首页地址 - indexUrl: /index - # 验证码开关 - captchaEnabled: true - # 验证码类型 math 数组计算 char 字符 - captchaType: math - cookie: - # 设置Cookie的域名 默认空,即当前访问的域名 - domain: - # 设置cookie的有效访问路径 - path: / - # 设置HttpOnly属性 - httpOnly: true - # 设置Cookie的过期时间,天为单位 - maxAge: 30 - session: - # Session超时时间,-1代表永不过期(默认30分钟) - expireTime: 30 - # 同步session到数据库的周期(默认1分钟) - dbSyncPeriod: 1 - # 相隔多久检查一次session的有效性,默认就是10分钟 - validationInterval: 10 - # 同一个用户最大会话数,比如2的意思是同一个账号允许最多同时两个人登录(默认-1不限制) - maxSession: -1 - # 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户 - kickoutAfter: false - -# 防止XSS攻击 -xss: - # 过滤开关 - enabled: true - # 排除链接(多个用逗号分隔) - excludes: /system/notice/* - # 匹配链接 - urlPatterns: /system/*,/monitor/*,/tool/* - -# Swagger配置 -swagger: - # 是否开启swagger - enabled: true diff --git a/supplier-admin/src/main/resources/banner.txt b/supplier-admin/src/main/resources/banner.txt deleted file mode 100644 index 9466259..0000000 --- a/supplier-admin/src/main/resources/banner.txt +++ /dev/null @@ -1,24 +0,0 @@ -Application Version: ${ruoyi.version} -Spring Boot Version: ${spring-boot.version} -//////////////////////////////////////////////////////////////////// -// _ooOoo_ // -// o8888888o // -// 88" . "88 // -// (| ^_^ |) // -// O\ = /O // -// ____/`---'\____ // -// .' \\| |// `. // -// / \\||| : |||// \ // -// / _||||| -:- |||||- \ // -// | | \\\ - /// | | // -// | \_| ''\---/'' | | // -// \ .-\__ `-` ___/-. / // -// ___`. .' /--.--\ `. . ___ // -// ."" '< `.___\_<|>_/___.' >'"". // -// | | : `- \`.;`\ _ /`;.`/ - ` : | | // -// \ \ `-. \_ __\ /__ _/ .-` / / // -// ========`-.____`-.___\_____/___.-`____.-'======== // -// `=---=' // -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // -// 佛祖保佑 永不宕机 永无BUG // -//////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/supplier-admin/src/main/resources/ehcache/ehcache-shiro.xml b/supplier-admin/src/main/resources/ehcache/ehcache-shiro.xml deleted file mode 100644 index 8ffd5ed..0000000 --- a/supplier-admin/src/main/resources/ehcache/ehcache-shiro.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/supplier-admin/src/main/resources/logback.xml b/supplier-admin/src/main/resources/logback.xml deleted file mode 100644 index 58de1d2..0000000 --- a/supplier-admin/src/main/resources/logback.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - ${log.pattern} - - - - - - ${log.path}/sys-info.log - - - - ${log.path}/sys-info.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - INFO - - ACCEPT - - DENY - - - - - ${log.path}/sys-error.log - - - - ${log.path}/sys-error.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - ERROR - - ACCEPT - - DENY - - - - - - ${log.path}/sys-user.log - - - ${log.path}/sys-user.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/supplier-admin/src/main/resources/mybatis/mybatis-config.xml b/supplier-admin/src/main/resources/mybatis/mybatis-config.xml deleted file mode 100644 index 2b18113..0000000 --- a/supplier-admin/src/main/resources/mybatis/mybatis-config.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - diff --git a/supplier-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js b/supplier-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js deleted file mode 100644 index 4f7dd92..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js +++ /dev/null @@ -1,617 +0,0 @@ -/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */ -/* - - The MIT License (MIT) - - Copyright (c) 2007-2013 Einar Lielmanis and contributors. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - - - Style HTML ---------------- - - Written by Nochum Sossonko, (nsossonko@hotmail.com) - - Based on code initially developed by: Einar Lielmanis, - http://jsbeautifier.org/ - - Usage: - style_html(html_source); - - style_html(html_source, options); - - The options are: - indent_size (default 4) — indentation size, - indent_char (default space) — character to indent with, - max_char (default 250) - maximum amount of characters per line (0 = disable) - brace_style (default "collapse") - "collapse" | "expand" | "end-expand" - put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line. - unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted - indent_scripts (default normal) - "keep"|"separate"|"normal" - - e.g. - - style_html(html_source, { - 'indent_size': 2, - 'indent_char': ' ', - 'max_char': 78, - 'brace_style': 'expand', - 'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u'] - }); -*/ - -(function() { - - function style_html(html_source, options, js_beautify, css_beautify) { - //Wrapper function to invoke all the necessary constructors and deal with the output. - - var multi_parser, - indent_size, - indent_character, - max_char, - brace_style, - unformatted; - - options = options || {}; - indent_size = options.indent_size || 4; - indent_character = options.indent_char || ' '; - brace_style = options.brace_style || 'collapse'; - max_char = options.max_char === 0 ? Infinity : options.max_char || 250; - unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']; - - function Parser() { - - this.pos = 0; //Parser position - this.token = ''; - this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT - this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values - parent: 'parent1', - parentcount: 1, - parent1: '' - }; - this.tag_type = ''; - this.token_text = this.last_token = this.last_text = this.token_type = ''; - - this.Utils = { //Uilities made available to the various functions - whitespace: "\n\r\t ".split(''), - single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML - extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them - in_array: function (what, arr) { - for (var i=0; i= this.input.length) { - return content.length?content.join(''):['', 'TK_EOF']; - } - - input_char = this.input.charAt(this.pos); - this.pos++; - this.line_char_count++; - - if (this.Utils.in_array(input_char, this.Utils.whitespace)) { - if (content.length) { - space = true; - } - this.line_char_count--; - continue; //don't want to insert unnecessary space - } - else if (space) { - if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached - content.push('\n'); - for (var i=0; i', 'igm'); - reg_match.lastIndex = this.pos; - var reg_array = reg_match.exec(this.input); - var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script - if(this.pos < end_script) { //get everything in between the script tags - content = this.input.substring(this.pos, end_script); - this.pos = end_script; - } - return content; - }; - - this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object - if (this.tags[tag + 'count']) { //check for the existence of this tag type - this.tags[tag + 'count']++; - this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level - } - else { //otherwise initialize this tag type - this.tags[tag + 'count'] = 1; - this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level - } - this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent) - this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1') - }; - - this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer - if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it - var temp_parent = this.tags.parent; //check to see if it's a closable tag. - while (temp_parent) { //till we reach '' (the initial value); - if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it - break; - } - temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree - } - if (temp_parent) { //if we caught something - this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly - this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent - } - delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference... - delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself - if (this.tags[tag + 'count'] === 1) { - delete this.tags[tag + 'count']; - } - else { - this.tags[tag + 'count']--; - } - } - }; - - this.get_tag = function (peek) { //function to get a full tag and parse its type - var input_char = '', - content = [], - comment = '', - space = false, - tag_start, tag_end, - orig_pos = this.pos, - orig_line_char_count = this.line_char_count; - - peek = peek !== undefined ? peek : false; - - do { - if (this.pos >= this.input.length) { - if (peek) { - this.pos = orig_pos; - this.line_char_count = orig_line_char_count; - } - return content.length?content.join(''):['', 'TK_EOF']; - } - - input_char = this.input.charAt(this.pos); - this.pos++; - this.line_char_count++; - - if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space - space = true; - this.line_char_count--; - continue; - } - - if (input_char === "'" || input_char === '"') { - if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially - input_char += this.get_unformatted(input_char); - space = true; - } - } - - if (input_char === '=') { //no space before = - space = false; - } - - if (content.length && content[content.length-1] !== '=' && input_char !== '>' && space) { - //no space after = or before > - if (this.line_char_count >= this.max_char) { - this.print_newline(false, content); - this.line_char_count = 0; - } - else { - content.push(' '); - this.line_char_count++; - } - space = false; - } - if (input_char === '<') { - tag_start = this.pos - 1; - } - content.push(input_char); //inserts character at-a-time (or string) - } while (input_char !== '>'); - - var tag_complete = content.join(''); - var tag_index; - if (tag_complete.indexOf(' ') !== -1) { //if there's whitespace, thats where the tag name ends - tag_index = tag_complete.indexOf(' '); - } - else { //otherwise go with the tag ending - tag_index = tag_complete.indexOf('>'); - } - var tag_check = tag_complete.substring(1, tag_index).toLowerCase(); - if (tag_complete.charAt(tag_complete.length-2) === '/' || - this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /) - if ( ! peek) { - this.tag_type = 'SINGLE'; - } - } - else if (tag_check === 'script') { //for later script handling - if ( ! peek) { - this.record_tag(tag_check); - this.tag_type = 'SCRIPT'; - } - } - else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content) - if ( ! peek) { - this.record_tag(tag_check); - this.tag_type = 'STYLE'; - } - } - else if (this.is_unformatted(tag_check, unformatted)) { // do not reformat the "unformatted" tags - comment = this.get_unformatted('', tag_complete); //...delegate to get_unformatted function - content.push(comment); - // Preserve collapsed whitespace either before or after this tag. - if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){ - content.splice(0, 0, this.input.charAt(tag_start - 1)); - } - tag_end = this.pos - 1; - if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){ - content.push(this.input.charAt(tag_end + 1)); - } - this.tag_type = 'SINGLE'; - } - else if (tag_check.charAt(0) === '!') { //peek for so... - comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted - content.push(comment); - } - if ( ! peek) { - this.tag_type = 'START'; - } - } - else if (tag_check.indexOf('[endif') !== -1) {//peek for ', tag_complete); - content.push(comment); - this.tag_type = 'SINGLE'; - } - } - else if ( ! peek) { - if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending - this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors - this.tag_type = 'END'; - } - else { //otherwise it's a start-tag - this.record_tag(tag_check); //push it on the tag stack - this.tag_type = 'START'; - } - if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line - this.print_newline(true, this.output); - } - } - - if (peek) { - this.pos = orig_pos; - this.line_char_count = orig_line_char_count; - } - - return content.join(''); //returns fully formatted tag - }; - - this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety - - if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) !== -1) { - return ''; - } - var input_char = ''; - var content = ''; - var space = true; - do { - - if (this.pos >= this.input.length) { - return content; - } - - input_char = this.input.charAt(this.pos); - this.pos++; - - if (this.Utils.in_array(input_char, this.Utils.whitespace)) { - if (!space) { - this.line_char_count--; - continue; - } - if (input_char === '\n' || input_char === '\r') { - content += '\n'; - /* Don't change tab indention for unformatted blocks. If using code for html editing, this will greatly affect
 tags if they are specified in the 'unformatted array'
-                for (var i=0; i]*>\s*$/);
-
-            // if next_tag comes back but is not an isolated tag, then
-            // let's treat the 'a' tag as having content
-            // and respect the unformatted option
-            if (!tag || this.Utils.in_array(tag, unformatted)){
-                return true;
-            } else {
-                return false;
-            }
-        };
-
-        this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions
-
-          this.input = js_source || ''; //gets the input for the Parser
-          this.output = [];
-          this.indent_character = indent_character;
-          this.indent_string = '';
-          this.indent_size = indent_size;
-          this.brace_style = brace_style;
-          this.indent_level = 0;
-          this.max_char = max_char;
-          this.line_char_count = 0; //count to see if max_char was exceeded
-
-          for (var i=0; i 0) {
-              this.indent_level--;
-            }
-          };
-        };
-        return this;
-      }
-
-      /*_____________________--------------------_____________________*/
-
-      multi_parser = new Parser(); //wrapping functions Parser
-      multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values
-
-      while (true) {
-          var t = multi_parser.get_token();
-          multi_parser.token_text = t[0];
-          multi_parser.token_type = t[1];
-
-        if (multi_parser.token_type === 'TK_EOF') {
-          break;
-        }
-
-        switch (multi_parser.token_type) {
-          case 'TK_TAG_START':
-            multi_parser.print_newline(false, multi_parser.output);
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.indent();
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_STYLE':
-          case 'TK_TAG_SCRIPT':
-            multi_parser.print_newline(false, multi_parser.output);
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_END':
-            //Print new line only if the tag has no content and has child
-            if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {
-                var tag_name = multi_parser.token_text.match(/\w+/)[0];
-                var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\s*(\w+)/);
-                if (tag_extracted_from_last_output === null || tag_extracted_from_last_output[1] !== tag_name) {
-                    multi_parser.print_newline(true, multi_parser.output);
-                }
-            }
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_SINGLE':
-            // Don't add a newline before elements that should remain unformatted.
-            var tag_check = multi_parser.token_text.match(/^\s*<([a-z]+)/i);
-            if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){
-                multi_parser.print_newline(false, multi_parser.output);
-            }
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_CONTENT':
-            if (multi_parser.token_text !== '') {
-              multi_parser.print_token(multi_parser.token_text);
-            }
-            multi_parser.current_mode = 'TAG';
-            break;
-          case 'TK_STYLE':
-          case 'TK_SCRIPT':
-            if (multi_parser.token_text !== '') {
-              multi_parser.output.push('\n');
-              var text = multi_parser.token_text,
-                  _beautifier,
-                  script_indent_level = 1;
-              if (multi_parser.token_type === 'TK_SCRIPT') {
-                _beautifier = typeof js_beautify === 'function' && js_beautify;
-              } else if (multi_parser.token_type === 'TK_STYLE') {
-                _beautifier = typeof css_beautify === 'function' && css_beautify;
-              }
-
-              if (options.indent_scripts === "keep") {
-                script_indent_level = 0;
-              } else if (options.indent_scripts === "separate") {
-                script_indent_level = -multi_parser.indent_level;
-              }
-
-              var indentation = multi_parser.get_full_indent(script_indent_level);
-              if (_beautifier) {
-                // call the Beautifier if avaliable
-                text = _beautifier(text.replace(/^\s*/, indentation), options);
-              } else {
-                // simply indent the string otherwise
-                var white = text.match(/^\s*/)[0];
-                var _level = white.match(/[^\n\r]*$/)[0].split(multi_parser.indent_string).length - 1;
-                var reindent = multi_parser.get_full_indent(script_indent_level -_level);
-                text = text.replace(/^\s*/, indentation)
-                       .replace(/\r\n|\r|\n/g, '\n' + reindent)
-                       .replace(/\s*$/, '');
-              }
-              if (text) {
-                multi_parser.print_token(text);
-                multi_parser.print_newline(true, multi_parser.output);
-              }
-            }
-            multi_parser.current_mode = 'TAG';
-            break;
-        }
-        multi_parser.last_token = multi_parser.token_type;
-        multi_parser.last_text = multi_parser.token_text;
-      }
-      return multi_parser.output.join('');
-    }
-
-    // If we're running a web page and don't have either of the above, add our one global
-    window.html_beautify = function(html_source, options) {
-        return style_html(html_source, options, window.js_beautify, window.css_beautify);
-    };
-
-}());
diff --git a/supplier-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js b/supplier-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
deleted file mode 100644
index 8a9d708..0000000
--- a/supplier-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
+++ /dev/null
@@ -1,620 +0,0 @@
-/*!
- * jQuery blockUI plugin
- * Version 2.70.0-2014.11.23
- * Requires jQuery v1.7 or later
- *
- * Examples at: http://malsup.com/jquery/block/
- * Copyright (c) 2007-2013 M. Alsup
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Thanks to Amir-Hossein Sobhi for some excellent contributions!
- */
-
-;(function() {
-/*jshint eqeqeq:false curly:false latedef:false */
-"use strict";
-
-	function setup($) {
-		$.fn._fadeIn = $.fn.fadeIn;
-
-		var noOp = $.noop || function() {};
-
-		// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
-		// confusing userAgent strings on Vista)
-		var msie = /MSIE/.test(navigator.userAgent);
-		var ie6  = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
-		var mode = document.documentMode || 0;
-		var setExpr = $.isFunction( document.createElement('div').style.setExpression );
-
-		// global $ methods for blocking/unblocking the entire page
-		$.blockUI   = function(opts) { install(window, opts); };
-		$.unblockUI = function(opts) { remove(window, opts); };
-
-		// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)
-		$.growlUI = function(title, message, timeout, onClose) {
-			var $m = $('
'); - if (title) $m.append('

'+title+'

'); - if (message) $m.append('

'+message+'

'); - if (timeout === undefined) timeout = 3000; - - // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications - var callBlock = function(opts) { - opts = opts || {}; - - $.blockUI({ - message: $m, - fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700, - fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000, - timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout, - centerY: false, - showOverlay: false, - onUnblock: onClose, - css: $.blockUI.defaults.growlCSS - }); - }; - - callBlock(); - var nonmousedOpacity = $m.css('opacity'); - $m.mouseover(function() { - callBlock({ - fadeIn: 0, - timeout: 30000 - }); - - var displayBlock = $('.blockMsg'); - displayBlock.stop(); // cancel fadeout if it has started - displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency - }).mouseout(function() { - $('.blockMsg').fadeOut(1000); - }); - // End konapun additions - }; - - // plugin method for blocking element content - $.fn.block = function(opts) { - if ( this[0] === window ) { - $.blockUI( opts ); - return this; - } - var fullOpts = $.extend({}, $.blockUI.defaults, opts || {}); - this.each(function() { - var $el = $(this); - if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked')) - return; - $el.unblock({ fadeOut: 0 }); - }); - - return this.each(function() { - if ($.css(this,'position') == 'static') { - this.style.position = 'relative'; - $(this).data('blockUI.static', true); - } - this.style.zoom = 1; // force 'hasLayout' in ie - install(this, opts); - }); - }; - - // plugin method for unblocking element content - $.fn.unblock = function(opts) { - if ( this[0] === window ) { - $.unblockUI( opts ); - return this; - } - return this.each(function() { - remove(this, opts); - }); - }; - - $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost! - - // override these in your code to change the default behavior and style - $.blockUI.defaults = { - // message displayed when blocking (use null for no message) - message: '
加载中......
', - - title: null, // title string; only used when theme == true - draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded) - - theme: false, // set to true to use with jQuery UI themes - - // styles for the message when blocking; if you wish to disable - // these and use an external stylesheet then do this in your code: - // $.blockUI.defaults.css = {}; - css: { - padding: 0, - margin: 0, - width: '30%', - top: '40%', - left: '35%', - textAlign: 'center', - color: '#000', - border: '0px', - backgroundColor:'transparent', - cursor: 'wait' - }, - - // minimal style set used when themes are used - themedCSS: { - width: '30%', - top: '40%', - left: '35%' - }, - - // styles for the overlay - overlayCSS: { - backgroundColor: '#000', - opacity: 0.6, - cursor: 'wait' - }, - - // style to replace wait cursor before unblocking to correct issue - // of lingering wait cursor - cursorReset: 'default', - - // styles applied when using $.growlUI - growlCSS: { - width: '350px', - top: '10px', - left: '', - right: '10px', - border: 'none', - padding: '5px', - opacity: 0.6, - cursor: 'default', - color: '#fff', - backgroundColor: '#000', - '-webkit-border-radius':'10px', - '-moz-border-radius': '10px', - 'border-radius': '10px' - }, - - // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w - // (hat tip to Jorge H. N. de Vasconcelos) - /*jshint scripturl:true */ - iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', - - // force usage of iframe in non-IE browsers (handy for blocking applets) - forceIframe: false, - - // z-index for the blocking overlay - baseZ: 1000, - - // set these to true to have the message automatically centered - centerX: true, // <-- only effects element blocking (page block controlled via css above) - centerY: true, - - // allow body element to be stetched in ie6; this makes blocking look better - // on "short" pages. disable if you wish to prevent changes to the body height - allowBodyStretch: true, - - // enable if you want key and mouse events to be disabled for content that is blocked - bindEvents: true, - - // be default blockUI will supress tab navigation from leaving blocking content - // (if bindEvents is true) - constrainTabKey: true, - - // fadeIn time in millis; set to 0 to disable fadeIn on block - fadeIn: 200, - - // fadeOut time in millis; set to 0 to disable fadeOut on unblock - fadeOut: 400, - - // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock - timeout: 0, - - // disable if you don't want to show the overlay - showOverlay: true, - - // if true, focus will be placed in the first available input field when - // page blocking - focusInput: true, - - // elements that can receive focus - focusableElements: ':input:enabled:visible', - - // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity) - // no longer needed in 2012 - // applyPlatformOpacityRules: true, - - // callback method invoked when fadeIn has completed and blocking message is visible - onBlock: null, - - // callback method invoked when unblocking has completed; the callback is - // passed the element that has been unblocked (which is the window object for page - // blocks) and the options that were passed to the unblock call: - // onUnblock(element, options) - onUnblock: null, - - // callback method invoked when the overlay area is clicked. - // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used. - onOverlayClick: null, - - // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493 - quirksmodeOffsetHack: 4, - - // class name of the message block - blockMsgClass: 'blockMsg', - - // if it is already blocked, then ignore it (don't unblock and reblock) - ignoreIfBlocked: false - }; - - // private data and functions follow... - - var pageBlock = null; - var pageBlockEls = []; - - function install(el, opts) { - var css, themedCSS; - var full = (el == window); - var msg = (opts && opts.message !== undefined ? opts.message : undefined); - opts = $.extend({}, $.blockUI.defaults, opts || {}); - - if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked')) - return; - - opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); - css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); - if (opts.onOverlayClick) - opts.overlayCSS.cursor = 'pointer'; - - themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {}); - msg = msg === undefined ? opts.message : msg; - - // remove the current block (if there is one) - if (full && pageBlock) - remove(window, {fadeOut:0}); - - // if an existing element is being used as the blocking content then we capture - // its current place in the DOM (and current display style) so we can restore - // it when we unblock - if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) { - var node = msg.jquery ? msg[0] : msg; - var data = {}; - $(el).data('blockUI.history', data); - data.el = node; - data.parent = node.parentNode; - data.display = node.style.display; - data.position = node.style.position; - if (data.parent) - data.parent.removeChild(node); - } - - $(el).data('blockUI.onUnblock', opts.onUnblock); - var z = opts.baseZ; - - // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform; - // layer1 is the iframe layer which is used to supress bleed through of underlying content - // layer2 is the overlay layer which has opacity and a wait cursor (by default) - // layer3 is the message content that is displayed while blocking - var lyr1, lyr2, lyr3, s; - if (msie || opts.forceIframe) - lyr1 = $(''); - else - lyr1 = $(''); - - if (opts.theme) - lyr2 = $(''); - else - lyr2 = $(''); - - if (opts.theme && full) { - s = ''; - } - else if (opts.theme) { - s = ''; - } - else if (full) { - s = ''; - } - else { - s = ''; - } - lyr3 = $(s); - - // if we have a message, style it - if (msg) { - if (opts.theme) { - lyr3.css(themedCSS); - lyr3.addClass('ui-widget-content'); - } - else - lyr3.css(css); - } - - // style the overlay - if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/) - lyr2.css(opts.overlayCSS); - lyr2.css('position', full ? 'fixed' : 'absolute'); - - // make iframe layer transparent in IE - if (msie || opts.forceIframe) - lyr1.css('opacity',0.0); - - //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el); - var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el); - $.each(layers, function() { - this.appendTo($par); - }); - - if (opts.theme && opts.draggable && $.fn.draggable) { - lyr3.draggable({ - handle: '.ui-dialog-titlebar', - cancel: 'li' - }); - } - - // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) - var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0); - if (ie6 || expr) { - // give body 100% height - if (full && opts.allowBodyStretch && $.support.boxModel) - $('html,body').css('height','100%'); - - // fix ie6 issue when blocked element has a border width - if ((ie6 || !$.support.boxModel) && !full) { - var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth'); - var fixT = t ? '(0 - '+t+')' : 0; - var fixL = l ? '(0 - '+l+')' : 0; - } - - // simulate fixed position - $.each(layers, function(i,o) { - var s = o[0].style; - s.position = 'absolute'; - if (i < 2) { - if (full) - s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'); - else - s.setExpression('height','this.parentNode.offsetHeight + "px"'); - if (full) - s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'); - else - s.setExpression('width','this.parentNode.offsetWidth + "px"'); - if (fixL) s.setExpression('left', fixL); - if (fixT) s.setExpression('top', fixT); - } - else if (opts.centerY) { - if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); - s.marginTop = 0; - } - else if (!opts.centerY && full) { - var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0; - var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"'; - s.setExpression('top',expression); - } - }); - } - - // show the message - if (msg) { - if (opts.theme) - lyr3.find('.ui-widget-content').append(msg); - else - lyr3.append(msg); - if (msg.jquery || msg.nodeType) - $(msg).show(); - } - - if ((msie || opts.forceIframe) && opts.showOverlay) - lyr1.show(); // opacity is zero - if (opts.fadeIn) { - var cb = opts.onBlock ? opts.onBlock : noOp; - var cb1 = (opts.showOverlay && !msg) ? cb : noOp; - var cb2 = msg ? cb : noOp; - if (opts.showOverlay) - lyr2._fadeIn(opts.fadeIn, cb1); - if (msg) - lyr3._fadeIn(opts.fadeIn, cb2); - } - else { - if (opts.showOverlay) - lyr2.show(); - if (msg) - lyr3.show(); - if (opts.onBlock) - opts.onBlock.bind(lyr3)(); - } - - // bind key and mouse events - bind(1, el, opts); - - if (full) { - pageBlock = lyr3[0]; - pageBlockEls = $(opts.focusableElements,pageBlock); - if (opts.focusInput) - setTimeout(focus, 20); - } - else - center(lyr3[0], opts.centerX, opts.centerY); - - if (opts.timeout) { - // auto-unblock - var to = setTimeout(function() { - if (full) - $.unblockUI(opts); - else - $(el).unblock(opts); - }, opts.timeout); - $(el).data('blockUI.timeout', to); - } - } - - // remove the block - function remove(el, opts) { - var count; - var full = (el == window); - var $el = $(el); - var data = $el.data('blockUI.history'); - var to = $el.data('blockUI.timeout'); - if (to) { - clearTimeout(to); - $el.removeData('blockUI.timeout'); - } - opts = $.extend({}, $.blockUI.defaults, opts || {}); - bind(0, el, opts); // unbind events - - if (opts.onUnblock === null) { - opts.onUnblock = $el.data('blockUI.onUnblock'); - $el.removeData('blockUI.onUnblock'); - } - - var els; - if (full) // crazy selector to handle odd field errors in ie6/7 - els = $('body').children().filter('.blockUI').add('body > .blockUI'); - else - els = $el.find('>.blockUI'); - - // fix cursor issue - if ( opts.cursorReset ) { - if ( els.length > 1 ) - els[1].style.cursor = opts.cursorReset; - if ( els.length > 2 ) - els[2].style.cursor = opts.cursorReset; - } - - if (full) - pageBlock = pageBlockEls = null; - - if (opts.fadeOut) { - count = els.length; - els.stop().fadeOut(opts.fadeOut, function() { - if ( --count === 0) - reset(els,data,opts,el); - }); - } - else - reset(els, data, opts, el); - } - - // move blocking element back into the DOM where it started - function reset(els,data,opts,el) { - var $el = $(el); - if ( $el.data('blockUI.isBlocked') ) - return; - - els.each(function(i,o) { - // remove via DOM calls so we don't lose event handlers - if (this.parentNode) - this.parentNode.removeChild(this); - }); - - if (data && data.el) { - data.el.style.display = data.display; - data.el.style.position = data.position; - data.el.style.cursor = 'default'; // #59 - if (data.parent) - data.parent.appendChild(data.el); - $el.removeData('blockUI.history'); - } - - if ($el.data('blockUI.static')) { - $el.css('position', 'static'); // #22 - } - - if (typeof opts.onUnblock == 'function') - opts.onUnblock(el,opts); - - // fix issue in Safari 6 where block artifacts remain until reflow - var body = $(document.body), w = body.width(), cssW = body[0].style.width; - body.width(w-1).width(w); - body[0].style.width = cssW; - } - - // bind/unbind the handler - function bind(b, el, opts) { - var full = el == window, $el = $(el); - - // don't bother unbinding if there is nothing to unbind - if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) - return; - - $el.data('blockUI.isBlocked', b); - - // don't bind events when overlay is not in use or if bindEvents is false - if (!full || !opts.bindEvents || (b && !opts.showOverlay)) - return; - - // bind anchors and inputs for mouse and key events - var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove'; - if (b) - $(document).bind(events, opts, handler); - else - $(document).unbind(events, handler); - - // former impl... - // var $e = $('a,:input'); - // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler); - } - - // event handler to suppress keyboard/mouse events when blocking - function handler(e) { - // allow tab navigation (conditionally) - if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) { - if (pageBlock && e.data.constrainTabKey) { - var els = pageBlockEls; - var fwd = !e.shiftKey && e.target === els[els.length-1]; - var back = e.shiftKey && e.target === els[0]; - if (fwd || back) { - setTimeout(function(){focus(back);},10); - return false; - } - } - } - var opts = e.data; - var target = $(e.target); - if (target.hasClass('blockOverlay') && opts.onOverlayClick) - opts.onOverlayClick(e); - - // allow events within the message content - if (target.parents('div.' + opts.blockMsgClass).length > 0) - return true; - - // allow events for content that is not being blocked - return target.parents().children().filter('div.blockUI').length === 0; - } - - function focus(back) { - if (!pageBlockEls) - return; - var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0]; - if (e) - e.focus(); - } - - function center(el, x, y) { - var p = el.parentNode, s = el.style; - var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth'); - var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth'); - if (x) s.left = l > 0 ? (l+'px') : '0'; - if (y) s.top = t > 0 ? (t+'px') : '0'; - } - - function sz(el, p) { - return parseInt($.css(el,p),10)||0; - } - - } - - - /*global define:true */ - if (typeof define === 'function' && define.amd && define.amd.jQuery) { - define(['jquery'], setup); - } else { - setup(jQuery); - } - -})(); \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css deleted file mode 100644 index 05878a3..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css +++ /dev/null @@ -1,563 +0,0 @@ -/*! - * bootstrap-fileinput v5.1.3 - * http://plugins.krajee.com/file-input - * - * Krajee default styling for bootstrap-fileinput. - * - * Author: Kartik Visweswaran - * Copyright: 2014 - 2020, Kartik Visweswaran, Krajee.com - * - * Licensed under the BSD-3-Clause - * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */ -.file-loading input[type=file], input[type=file].file-loading { - width: 0; - height: 0; -} - -.file-no-browse { - position: absolute; - left: 50%; - bottom: 20%; - width: 1px; - height: 1px; - font-size: 0; - opacity: 0; - border: none; - background: none; - outline: none; - box-shadow: none; -} - -.kv-hidden, .file-caption-icon, .file-zoom-dialog .modal-header:before, .file-zoom-dialog .modal-header:after, .file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file, .file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button, .file-input-new .no-browse .input-group-btn, .file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button, .file-input-ajax-new .no-browse .input-group-btn, .hide-content .kv-file-content, .is-locked .fileinput-upload-button, .is-locked .fileinput-remove-button { - display: none; -} - -.btn-file input[type=file], .file-caption-icon, .file-preview .fileinput-remove, .krajee-default .file-thumb-progress, .file-zoom-dialog .btn-navigate, .file-zoom-dialog .floating-buttons { - position: absolute; -} - -.file-caption-icon .kv-caption-icon { - line-height: inherit; -} - -.file-input, .file-loading:before, .btn-file, .file-caption, .file-preview, .krajee-default.file-preview-frame, .krajee-default .file-thumbnail-footer, .file-zoom-dialog .modal-dialog { - position: relative; -} - -.file-error-message pre, .file-error-message ul, .krajee-default .file-actions, .krajee-default .file-other-error { - text-align: left; -} - -.file-error-message pre, .file-error-message ul { - margin: 0; -} - -.krajee-default .file-drag-handle, .krajee-default .file-upload-indicator { - float: left; - margin-top: 10px; - width: 16px; - height: 16px; -} - -.file-thumb-progress .progress, .file-thumb-progress .progress-bar { - font-family: Verdana, Helvetica, sans-serif; - font-size: 0.7rem; -} - -.krajee-default .file-thumb-progress .progress, .kv-upload-progress .progress { - background-color: #ccc; -} - -.krajee-default .file-caption-info, .krajee-default .file-size-info { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - width: 160px; - height: 15px; - margin: auto; -} - -.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash, .file-zoom-content > .file-object.type-image { - max-width: 100%; - max-height: 100%; - width: auto; -} - -.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash { - height: 100%; -} - -.file-zoom-content > .file-object.type-pdf, .file-zoom-content > .file-object.type-html, .file-zoom-content > .file-object.type-text, .file-zoom-content > .file-object.type-default { - width: 100%; -} - -.file-loading:before { - content: " Loading..."; - display: inline-block; - padding-left: 20px; - line-height: 16px; - font-size: 13px; - font-variant: small-caps; - color: #999; - background: transparent url(loading.gif) top left no-repeat; -} - -.file-object { - margin: 0 0 -5px 0; - padding: 0; -} - -.btn-file { - overflow: hidden; -} - -.btn-file input[type=file] { - top: 0; - left: 0; - min-width: 100%; - min-height: 100%; - text-align: right; - opacity: 0; - background: none repeat scroll 0 0 transparent; - cursor: inherit; - display: block; -} - -.btn-file ::-ms-browse { - font-size: 10000px; - width: 100%; - height: 100%; -} - -.file-caption .file-caption-name { - width: 100%; - margin: 0; - padding: 0; - box-shadow: none; - border: none; - background: none; - outline: none; -} - -.file-caption.icon-visible .file-caption-icon { - display: inline-block; -} - -.file-caption.icon-visible .file-caption-name { - padding-left: 15px; -} - -.file-caption-icon { - left: 8px; -} - -.file-error-message { - color: #a94442; - background-color: #f2dede; - margin: 5px; - border: 1px solid #ebccd1; - border-radius: 4px; - padding: 15px; -} - -.file-error-message pre { - margin: 5px 0; -} - -.file-caption-disabled { - background-color: #eee; - cursor: not-allowed; - opacity: 1; -} - -.file-preview { - border-radius: 5px; - border: 1px solid #ddd; - padding: 8px; - width: 100%; - margin-bottom: 5px; -} - -.file-preview .btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -.file-preview .fileinput-remove { - top: 1px; - right: 1px; - line-height: 10px; -} - -.file-preview .clickable { - cursor: pointer; -} - -.file-preview-image { - font: 40px Impact, Charcoal, sans-serif; - color: #008000; - width:auto; - height:auto; - max-width:100%; - max-height:100%; -} - -.krajee-default.file-preview-frame { - margin: 8px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2); - padding: 6px; - float: left; - text-align: center; -} - -.krajee-default.file-preview-frame .kv-file-content { - width: 213px; - height: 160px; -} - -.krajee-default .file-preview-other-frame { - display: flex; - align-items: center; - justify-content: center; -} - -.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered { - width: 400px; -} - -.krajee-default.file-preview-frame[data-template="audio"] .kv-file-content { - width: 240px; - height: 55px; -} - -.krajee-default.file-preview-frame .file-thumbnail-footer { - height: 70px; -} - -.krajee-default.file-preview-frame:not(.file-preview-error):hover { - border: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4); -} - -.krajee-default .file-preview-text { - color: #428bca; - border: 1px solid #ddd; - outline: none; - resize: none; -} - -.krajee-default .file-preview-html { - border: 1px solid #ddd; -} - -.krajee-default .file-other-icon { - font-size: 6em; - line-height: 1; -} - -.krajee-default .file-footer-buttons { - float: right; -} - -.krajee-default .file-footer-caption { - display: block; - text-align: center; - padding-top: 4px; - font-size: 11px; - color: #777; - margin-bottom: 30px; -} - -.file-upload-stats { - font-size: 10px; - text-align: center; - width: 100%; -} - -.kv-upload-progress .file-upload-stats { - font-size: 12px; - margin: -10px 0 5px; -} - -.krajee-default .file-preview-error { - opacity: 0.65; - box-shadow: none; -} - -.krajee-default .file-thumb-progress { - top: 37px; - left: 0; - right: 0; -} - -.krajee-default.kvsortable-ghost { - background: #e1edf7; - border: 2px solid #a1abff; -} - -.krajee-default .file-preview-other:hover { - opacity: 0.8; -} - -.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover { - color: #000; -} - -.kv-upload-progress .progress { - height: 20px; - margin: 10px 0; - overflow: hidden; -} - -.kv-upload-progress .progress-bar { - height: 20px; - font-family: Verdana, Helvetica, sans-serif; -} - -/*noinspection CssOverwrittenProperties*/ -.file-zoom-dialog .file-other-icon { - font-size: 22em; - font-size: 50vmin; -} - -.file-zoom-dialog .modal-dialog { - width: auto; -} - -.file-zoom-dialog .modal-header { - display: flex; - align-items: center; - justify-content: space-between; -} - -.file-zoom-dialog .btn-navigate { - padding: 0; - margin: -60px 0 0; - font-size: 60px; - background: transparent; - text-decoration: none; - outline: none; - opacity: 0.7; - top: 50%; - color: #1c94c4; -} - -.file-zoom-dialog .btn-navigate:not([disabled]):hover { - outline: none; - box-shadow: none; - opacity: 0.6; -} - -.file-zoom-dialog .floating-buttons { - top: 5px; - right: 10px; -} - -.file-zoom-dialog .btn-navigate[disabled] { - opacity: 0.3; -} - -.file-zoom-dialog .btn-prev { - left: 1px; -} - -.file-zoom-dialog .btn-next { - right: 1px; -} - -.file-zoom-dialog .kv-zoom-title { - font-weight: 300; - color: #999; - max-width: 50%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.file-input-new .no-browse .form-control { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.file-input-ajax-new .no-browse .form-control { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.file-caption-main { - width: 100%; -} - -.file-thumb-loading { - background: transparent url(loading.gif) no-repeat scroll center center content-box !important; -} - -.file-drop-zone { - border: 1px dashed #aaa; - min-height: 260px; - border-radius: 4px; - text-align: center; - vertical-align: middle; - margin: 12px 15px 12px 12px; - padding: 5px; -} - -.file-drop-zone.clickable:hover { - border: 2px dashed #999; -} - -.file-drop-zone.clickable:focus { - border: 2px solid #5acde2; -} - -.file-drop-zone .file-preview-thumbnails { - cursor: default; -} - -.file-drop-zone-title { - color: #aaa; - font-size: 1.6em; - text-align:center; - padding: 85px 10px; - cursor: default; -} - -.file-highlighted { - border: 2px dashed #999 !important; - background-color: #eee; -} - -.file-uploading { - background: url(loading-sm.gif) no-repeat center bottom 10px; - opacity: 0.65; -} - -.file-zoom-fullscreen .modal-dialog { - min-width: 100%; - margin: 0; -} - -.file-zoom-fullscreen .modal-content { - border-radius: 0; - box-shadow: none; - min-height: 100vh; -} - -.file-zoom-fullscreen .modal-body { - overflow-y: auto; -} - -.floating-buttons { - z-index: 3000; -} - -.floating-buttons .btn-kv { - margin-left: 3px; - z-index: 3000; -} - -.kv-zoom-actions .btn-kv { - margin-left: 3px; -} - -.file-zoom-content { - text-align: center; - min-height: 300px; -} - -.file-zoom-content .file-preview-image { - max-height: 100%; -} - -.file-zoom-content .file-preview-video { - max-height: 100%; -} - -.file-zoom-content > .file-object.type-image { - height: auto; - min-height: inherit; -} - -.file-zoom-content > .file-object.type-audio { - width: auto; - height: 30px; -} - -@media (min-width: 576px) { - .file-zoom-dialog .modal-dialog { - max-width: 500px; - } -} - -@media (min-width: 992px) { - .file-zoom-dialog .modal-lg { - max-width: 800px; - } -} - -@media (max-width: 767px) { - .file-preview-thumbnails { - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - } - - .file-zoom-dialog .modal-header { - flex-direction: column; - } -} - -@media (max-width: 350px) { - .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content { - width: 160px; - } -} - -@media (max-width: 420px) { - .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered { - width: 100%; - } -} - -.file-loading[dir=rtl]:before { - background: transparent url(loading.gif) top right no-repeat; - padding-left: 0; - padding-right: 20px; -} - -.clickable .file-drop-zone-title { - cursor: pointer; -} - -.file-sortable .file-drag-handle:hover { - opacity: 0.7; -} - -.file-sortable .file-drag-handle { - cursor: grab; - opacity: 1; -} - -.file-grabbing, .file-grabbing * { - cursor: not-allowed !important; -} - -.file-grabbing .file-preview-thumbnails * { - cursor: grabbing !important; -} - -.file-preview-frame.sortable-chosen { - background-color: #d9edf7; - border-color: #17a2b8; - box-shadow: none !important; -} - -.file-preview .kv-zoom-cache { - display: none; -} \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js deleted file mode 100644 index d755549..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js +++ /dev/null @@ -1,6150 +0,0 @@ -/*! - * bootstrap-fileinput v5.1.3 - * http://plugins.krajee.com/file-input - * - * Author: Kartik Visweswaran - * Copyright: 2014 - 2020, Kartik Visweswaran, Krajee.com - * - * Licensed under the BSD-3-Clause - * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */ -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - define(['jquery'], factory); - } else { - if (typeof module === 'object' && module.exports) { - //noinspection NpmUsedModulesInstalled - module.exports = factory(require('jquery')); - } else { - factory(window.jQuery); - } - } -}(function ($) { - 'use strict'; - - $.fn.fileinputLocales = {}; - $.fn.fileinputThemes = {}; - - String.prototype.setTokens = function (replacePairs) { - var str = this.toString(), key, re; - for (key in replacePairs) { - if (replacePairs.hasOwnProperty(key)) { - re = new RegExp('\{' + key + '\}', 'g'); - str = str.replace(re, replacePairs[key]); - } - } - return str; - }; - - if (!Array.prototype.flatMap) { // polyfill flatMap - Array.prototype.flatMap = function (lambda) { - return [].concat(this.map(lambda)); - }; - } - - var $h, FileInput; - - // fileinput helper object for all global variables and internal helper methods - $h = { - FRAMES: '.kv-preview-thumb', - SORT_CSS: 'file-sortable', - INIT_FLAG: 'init-', - OBJECT_PARAMS: '\n' + - '\n' + - '\n' + - '\n' + - '\n' + - '\n', - DEFAULT_PREVIEW: '
\n' + - '{previewFileIcon}\n' + - '
', - MODAL_ID: 'kvFileinputModal', - MODAL_EVENTS: ['show', 'shown', 'hide', 'hidden', 'loaded'], - logMessages: { - ajaxError: '{status}: {error}. Error Details: {text}.', - badDroppedFiles: 'Error scanning dropped files!', - badExifParser: 'Error loading the piexif.js library. {details}', - badInputType: 'The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.', - exifWarning: 'To avoid this warning, either set "autoOrientImage" to "false" OR ensure you have loaded ' + - 'the "piexif.js" library correctly on your page before the "fileinput.js" script.', - invalidChunkSize: 'Invalid upload chunk size: "{chunkSize}". Resumable uploads are disabled.', - invalidThumb: 'Invalid thumb frame with id: "{id}".', - noResumableSupport: 'The browser does not support resumable or chunk uploads.', - noUploadUrl: 'The "uploadUrl" is not set. Ajax uploads and resumable uploads have been disabled.', - retryStatus: 'Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.', - chunkQueueError: 'Could not push task to ajax pool for chunk index # {index}.', - resumableMaxRetriesReached: 'Maximum resumable ajax retries ({n}) reached.', - resumableRetryError: 'Could not retry the resumable request (try # {n})... aborting.', - resumableAborting: 'Aborting / cancelling the resumable request.' - - }, - objUrl: window.URL || window.webkitURL, - now: function () { - return new Date().getTime(); - }, - round: function (num) { - num = parseFloat(num); - return isNaN(num) ? 0 : Math.floor(Math.round(num)); - }, - getArray: function (obj) { - var i, arr = [], len = obj && obj.length || 0; - for (i = 0; i < len; i++) { - arr.push(obj[i]); - } - return arr; - }, - getFileRelativePath: function (file) { - /** @namespace file.relativePath */ - /** @namespace file.webkitRelativePath */ - return String(file.newPath || file.relativePath || file.webkitRelativePath || $h.getFileName(file) || null); - - }, - getFileId: function (file, generateFileId) { - var relativePath = $h.getFileRelativePath(file); - if (typeof generateFileId === 'function') { - return generateFileId(file); - } - if (!file) { - return null; - } - if (!relativePath) { - return null; - } - return (file.size + '_' + encodeURIComponent(relativePath).replace(/%/g, '_')); - }, - getFrameSelector: function (id, selector) { - selector = selector || ''; - return '[id="' + id + '"]' + selector; - }, - getZoomSelector: function (id, selector) { - return $h.getFrameSelector('zoom-' + id, selector); - }, - getFrameElement: function ($element, id, selector) { - return $element.find($h.getFrameSelector(id, selector)); - }, - getZoomElement: function ($element, id, selector) { - return $element.find($h.getZoomSelector(id, selector)); - }, - getElapsed: function (seconds) { - var delta = seconds, out = '', result = {}, structure = { - year: 31536000, - month: 2592000, - week: 604800, // uncomment row to ignore - day: 86400, // feel free to add your own row - hour: 3600, - minute: 60, - second: 1 - }; - $h.getObjectKeys(structure).forEach(function (key) { - result[key] = Math.floor(delta / structure[key]); - delta -= result[key] * structure[key]; - }); - $.each(result, function (key, value) { - if (value > 0) { - out += (out ? ' ' : '') + value + key.substring(0, 1); - } - }); - return out; - }, - debounce: function (func, delay) { - var inDebounce; - return function () { - var args = arguments, context = this; - clearTimeout(inDebounce); - inDebounce = setTimeout(function () { - func.apply(context, args); - }, delay); - }; - }, - stopEvent: function (e) { - e.stopPropagation(); - e.preventDefault(); - }, - getFileName: function (file) { - /** @namespace file.fileName */ - return file ? (file.fileName || file.name || '') : ''; // some confusion in different versions of Firefox - }, - createObjectURL: function (data) { - if ($h.objUrl && $h.objUrl.createObjectURL && data) { - return $h.objUrl.createObjectURL(data); - } - return ''; - }, - revokeObjectURL: function (data) { - if ($h.objUrl && $h.objUrl.revokeObjectURL && data) { - $h.objUrl.revokeObjectURL(data); - } - }, - compare: function (input, str, exact) { - return input !== undefined && (exact ? input === str : input.match(str)); - }, - isIE: function (ver) { - var div, status; - // check for IE versions < 11 - if (navigator.appName !== 'Microsoft Internet Explorer') { - return false; - } - if (ver === 10) { - return new RegExp('msie\\s' + ver, 'i').test(navigator.userAgent); - } - div = document.createElement('div'); - div.innerHTML = ''; - status = div.getElementsByTagName('i').length; - document.body.appendChild(div); - div.parentNode.removeChild(div); - return status; - }, - canOrientImage: function ($el) { - var $img = $(document.createElement('img')).css({width: '1px', height: '1px'}).insertAfter($el), - flag = $img.css('image-orientation'); - $img.remove(); - return !!flag; - }, - canAssignFilesToInput: function () { - var input = document.createElement('input'); - try { - input.type = 'file'; - input.files = null; - return true; - } catch (err) { - return false; - } - }, - getDragDropFolders: function (items) { - var i, item, len = items ? items.length : 0, folders = 0; - if (len > 0 && items[0].webkitGetAsEntry()) { - for (i = 0; i < len; i++) { - item = items[i].webkitGetAsEntry(); - if (item && item.isDirectory) { - folders++; - } - } - } - return folders; - }, - initModal: function ($modal) { - var $body = $('body'); - if ($body.length) { - $modal.appendTo($body); - } - }, - isFunction: function (v) { - return typeof v === 'function'; - }, - isEmpty: function (value, trim) { - return value === undefined || value === null || (!$h.isFunction( - value) && (value.length === 0 || (trim && $.trim(value) === ''))); - }, - isArray: function (a) { - return Array.isArray(a) || Object.prototype.toString.call(a) === '[object Array]'; - }, - ifSet: function (needle, haystack, def) { - def = def || ''; - return (haystack && typeof haystack === 'object' && needle in haystack) ? haystack[needle] : def; - }, - cleanArray: function (arr) { - if (!(arr instanceof Array)) { - arr = []; - } - return arr.filter(function (e) { - return (e !== undefined && e !== null); - }); - }, - spliceArray: function (arr, index, reverseOrder) { - var i, j = 0, out = [], newArr; - if (!(arr instanceof Array)) { - return []; - } - newArr = $.extend(true, [], arr); - if (reverseOrder) { - newArr.reverse(); - } - for (i = 0; i < newArr.length; i++) { - if (i !== index) { - out[j] = newArr[i]; - j++; - } - } - if (reverseOrder) { - out.reverse(); - } - return out; - }, - getNum: function (num, def) { - def = def || 0; - if (typeof num === 'number') { - return num; - } - if (typeof num === 'string') { - num = parseFloat(num); - } - return isNaN(num) ? def : num; - }, - hasFileAPISupport: function () { - return !!(window.File && window.FileReader); - }, - hasDragDropSupport: function () { - var div = document.createElement('div'); - /** @namespace div.draggable */ - /** @namespace div.ondragstart */ - /** @namespace div.ondrop */ - return !$h.isIE(9) && - (div.draggable !== undefined || (div.ondragstart !== undefined && div.ondrop !== undefined)); - }, - hasFileUploadSupport: function () { - return $h.hasFileAPISupport() && window.FormData; - }, - hasBlobSupport: function () { - try { - return !!window.Blob && Boolean(new Blob()); - } catch (e) { - return false; - } - }, - hasArrayBufferViewSupport: function () { - try { - return new Blob([new Uint8Array(100)]).size === 100; - } catch (e) { - return false; - } - }, - hasResumableUploadSupport: function () { - /** @namespace Blob.prototype.webkitSlice */ - /** @namespace Blob.prototype.mozSlice */ - return $h.hasFileUploadSupport() && $h.hasBlobSupport() && $h.hasArrayBufferViewSupport() && - (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || false); - }, - dataURI2Blob: function (dataURI) { - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || - window.MSBlobBuilder, canBlob = $h.hasBlobSupport(), byteStr, arrayBuffer, intArray, i, mimeStr, bb, - canProceed = (canBlob || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array; - if (!canProceed) { - return null; - } - if (dataURI.split(',')[0].indexOf('base64') >= 0) { - byteStr = atob(dataURI.split(',')[1]); - } else { - byteStr = decodeURIComponent(dataURI.split(',')[1]); - } - arrayBuffer = new ArrayBuffer(byteStr.length); - intArray = new Uint8Array(arrayBuffer); - for (i = 0; i < byteStr.length; i += 1) { - intArray[i] = byteStr.charCodeAt(i); - } - mimeStr = dataURI.split(',')[0].split(':')[1].split(';')[0]; - if (canBlob) { - return new Blob([$h.hasArrayBufferViewSupport() ? intArray : arrayBuffer], {type: mimeStr}); - } - bb = new BlobBuilder(); - bb.append(arrayBuffer); - return bb.getBlob(mimeStr); - }, - arrayBuffer2String: function (buffer) { - if (window.TextDecoder) { - return new TextDecoder('utf-8').decode(buffer); - } - var array = Array.prototype.slice.apply(new Uint8Array(buffer)), out = '', i = 0, len, c, char2, char3; - len = array.length; - while (i < len) { - c = array[i++]; - switch (c >> 4) { // jshint ignore:line - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - // 0xxxxxxx - out += String.fromCharCode(c); - break; - case 12: - case 13: - // 110x xxxx 10xx xxxx - char2 = array[i++]; - out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); // jshint ignore:line - break; - case 14: - // 1110 xxxx 10xx xxxx 10xx xxxx - char2 = array[i++]; - char3 = array[i++]; - out += String.fromCharCode(((c & 0x0F) << 12) | // jshint ignore:line - ((char2 & 0x3F) << 6) | // jshint ignore:line - ((char3 & 0x3F) << 0)); // jshint ignore:line - break; - } - } - return out; - }, - isHtml: function (str) { - var a = document.createElement('div'); - a.innerHTML = str; - for (var c = a.childNodes, i = c.length; i--;) { - if (c[i].nodeType === 1) { - return true; - } - } - return false; - }, - isSvg: function (str) { - return str.match(/^\s*<\?xml/i) && (str.match(/' + str + '')); - }, - uniqId: function () { - return (new Date().getTime() + Math.floor(Math.random() * Math.pow(10, 15))).toString(36); - }, - cspBuffer: { - CSP_ATTRIB: 'data-csp-01928735', // a randomly named temporary attribute to store the CSP elem id - domElementsStyles: {}, - stash: function (htmlString) { - var self = this, outerDom = $.parseHTML('
' + htmlString + '
'), $el = $(outerDom); - $el.find('[style]').each(function (key, elem) { - var $elem = $(elem), styleString = $elem.attr('style'), id = $h.uniqId(), styles = {}; - if (styleString && styleString.length) { - if (styleString.indexOf(';') === -1) { - styleString += ';'; - } - styleString.slice(0, styleString.length - 1).split(';').map(function (str) { - str = str.split(':'); - if (str[0]) { - styles[str[0]] = str[1] ? str[1] : ''; - } - }); - self.domElementsStyles[id] = styles; - $elem.removeAttr('style').attr(self.CSP_ATTRIB, id); - } - }); - $el.filter('*').removeAttr('style'); // make sure all style attr are removed - var values = Object.values ? Object.values(outerDom) : Object.keys(outerDom).map(function (itm) { - return outerDom[itm]; - }); - return values.flatMap(function (elem) { - return elem.innerHTML; - }).join(''); - }, - apply: function (domElement) { - var self = this, $el = $(domElement); - $el.find('[' + self.CSP_ATTRIB + ']').each(function (key, elem) { - var $elem = $(elem), id = $elem.attr(self.CSP_ATTRIB), styles = self.domElementsStyles[id]; - if (styles) { - $elem.css(styles); - } - $elem.removeAttr(self.CSP_ATTRIB); - }); - self.domElementsStyles = {}; - } - }, - setHtml: function ($elem, htmlString) { - var buf = $h.cspBuffer; - $elem.html(buf.stash(htmlString)); - buf.apply($elem); - return $elem; - }, - htmlEncode: function (str, undefVal) { - if (str === undefined) { - return undefVal || null; - } - return str.replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); - }, - replaceTags: function (str, tags) { - var out = str; - if (!tags) { - return out; - } - $.each(tags, function (key, value) { - if (typeof value === 'function') { - value = value(); - } - out = out.split(key).join(value); - }); - return out; - }, - cleanMemory: function ($thumb) { - var data = $thumb.is('img') ? $thumb.attr('src') : $thumb.find('source').attr('src'); - $h.revokeObjectURL(data); - }, - findFileName: function (filePath) { - var sepIndex = filePath.lastIndexOf('/'); - if (sepIndex === -1) { - sepIndex = filePath.lastIndexOf('\\'); - } - return filePath.split(filePath.substring(sepIndex, sepIndex + 1)).pop(); - }, - checkFullScreen: function () { - return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || - document.msFullscreenElement; - }, - toggleFullScreen: function (maximize) { - var doc = document, de = doc.documentElement, isFullScreen = $h.checkFullScreen(); - if (de && maximize && !isFullScreen) { - if (de.requestFullscreen) { - de.requestFullscreen(); - } else { - if (de.msRequestFullscreen) { - de.msRequestFullscreen(); - } else { - if (de.mozRequestFullScreen) { - de.mozRequestFullScreen(); - } else { - if (de.webkitRequestFullscreen) { - de.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } - } - } - } - } else { - if (isFullScreen) { - if (doc.exitFullscreen) { - doc.exitFullscreen(); - } else { - if (doc.msExitFullscreen) { - doc.msExitFullscreen(); - } else { - if (doc.mozCancelFullScreen) { - doc.mozCancelFullScreen(); - } else { - if (doc.webkitExitFullscreen) { - doc.webkitExitFullscreen(); - } - } - } - } - } - } - }, - moveArray: function (arr, oldIndex, newIndex, reverseOrder) { - var newArr = $.extend(true, [], arr); - if (reverseOrder) { - newArr.reverse(); - } - if (newIndex >= newArr.length) { - var k = newIndex - newArr.length; - while ((k--) + 1) { - newArr.push(undefined); - } - } - newArr.splice(newIndex, 0, newArr.splice(oldIndex, 1)[0]); - if (reverseOrder) { - newArr.reverse(); - } - return newArr; - }, - closeButton: function (css) { - css = css ? 'close ' + css : 'close'; - return ''; - }, - getRotation: function (value) { - switch (value) { - case 2: - return 'rotateY(180deg)'; - case 3: - return 'rotate(180deg)'; - case 4: - return 'rotate(180deg) rotateY(180deg)'; - case 5: - return 'rotate(270deg) rotateY(180deg)'; - case 6: - return 'rotate(90deg)'; - case 7: - return 'rotate(90deg) rotateY(180deg)'; - case 8: - return 'rotate(270deg)'; - default: - return ''; - } - }, - setTransform: function (el, val) { - if (!el) { - return; - } - el.style.transform = val; - el.style.webkitTransform = val; - el.style['-moz-transform'] = val; - el.style['-ms-transform'] = val; - el.style['-o-transform'] = val; - }, - getObjectKeys: function (obj) { - var keys = []; - if (obj) { - $.each(obj, function (key) { - keys.push(key); - }); - } - return keys; - }, - getObjectSize: function (obj) { - return $h.getObjectKeys(obj).length; - }, - /** - * Small dependency injection for the task manager - * https://gist.github.com/fearphage/4341799 - */ - whenAll: function (array) { - var s = [].slice, resolveValues = arguments.length === 1 && $h.isArray(array) ? array : s.call(arguments), - deferred = $.Deferred(), i, failed = 0, value, length = resolveValues.length, - remaining = length, rejectContexts, rejectValues, resolveContexts, updateFunc; - rejectContexts = rejectValues = resolveContexts = Array(length); - updateFunc = function (index, contexts, values) { - return function () { - if (values !== resolveValues) { - failed++; - } - deferred.notifyWith(contexts[index] = this, values[index] = s.call(arguments)); - if (!(--remaining)) { - deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values); - } - }; - }; - for (i = 0; i < length; i++) { - if ((value = resolveValues[i]) && $.isFunction(value.promise)) { - value.promise() - .done(updateFunc(i, resolveContexts, resolveValues)) - .fail(updateFunc(i, rejectContexts, rejectValues)); - } else { - deferred.notifyWith(this, value); - --remaining; - } - } - if (!remaining) { - deferred.resolveWith(resolveContexts, resolveValues); - } - return deferred.promise(); - } - }; - FileInput = function (element, options) { - var self = this; - self.$element = $(element); - self.$parent = self.$element.parent(); - if (!self._validate()) { - return; - } - self.isPreviewable = $h.hasFileAPISupport(); - self.isIE9 = $h.isIE(9); - self.isIE10 = $h.isIE(10); - if (self.isPreviewable || self.isIE9) { - self._init(options); - self._listen(); - } - self.$element.removeClass('file-loading'); - }; - - FileInput.prototype = { - constructor: FileInput, - _cleanup: function () { - var self = this; - self.reader = null; - self.clearFileStack(); - self.fileBatchCompleted = true; - self.isError = false; - self.isDuplicateError = false; - self.isPersistentError = false; - self.cancelling = false; - self.paused = false; - self.lastProgress = 0; - self._initAjax(); - }, - _isAborted: function () { - var self = this; - return self.cancelling || self.paused; - }, - _initAjax: function () { - var self = this, tm = self.taskManager = { - pool: {}, - addPool: function (id) { - return (tm.pool[id] = new tm.TasksPool(id)); - }, - getPool: function (id) { - return tm.pool[id]; - }, - addTask: function (id, logic) { // add standalone task directly from task manager - return new tm.Task(id, logic); - }, - TasksPool: function (id) { - var tp = this; - tp.id = id; - tp.cancelled = false; - tp.cancelledDeferrer = $.Deferred(); - tp.tasks = {}; - tp.addTask = function (id, logic) { - return (tp.tasks[id] = new tm.Task(id, logic)); - }; - tp.size = function () { - return $h.getObjectSize(tp.tasks); - }; - tp.run = function (maxThreads) { - var i = 0, failed = false, task, tasksList = $h.getObjectKeys(tp.tasks).map(function (key) { - return tp.tasks[key]; - }), tasksDone = [], deferred = $.Deferred(), enqueue, callback; - - if (tp.cancelled) { - tp.cancelledDeferrer.resolve(); - return deferred.reject(); - } - // if run all at once - if (!maxThreads) { - var tasksDeferredList = $h.getObjectKeys(tp.tasks).map(function (key) { - return tp.tasks[key].deferred; - }); - // when all are done - $h.whenAll(tasksDeferredList).done(function () { - var argv = $h.getArray(arguments); - if (!tp.cancelled) { - deferred.resolve.apply(null, argv); - tp.cancelledDeferrer.reject(); - } else { - deferred.reject.apply(null, argv); - tp.cancelledDeferrer.resolve(); - } - }).fail(function () { - var argv = $h.getArray(arguments); - deferred.reject.apply(null, argv); - if (!tp.cancelled) { - tp.cancelledDeferrer.reject(); - } else { - tp.cancelledDeferrer.resolve(); - } - }); - // run all tasks - $.each(tp.tasks, function (id) { - task = tp.tasks[id]; - task.run(); - }); - return deferred; - } - enqueue = function (task) { - $.when(task.deferred) - .fail(function () { - failed = true; - callback.apply(null, arguments); - }) - .always(callback); - }; - callback = function () { - var argv = $h.getArray(arguments); - // notify a task just ended - deferred.notify(argv); - tasksDone.push(argv); - if (tp.cancelled) { - deferred.reject.apply(null, tasksDone); - tp.cancelledDeferrer.resolve(); - return; - } - if (tasksDone.length === tp.size()) { - if (failed) { - deferred.reject.apply(null, tasksDone); - } else { - deferred.resolve.apply(null, tasksDone); - } - } - // if there are any tasks remaining - if (tasksList.length) { - task = tasksList.shift(); - enqueue(task); - task.run(); - } - }; - // run the first "maxThreads" tasks - while (tasksList.length && i++ < maxThreads) { - task = tasksList.shift(); - enqueue(task); - task.run(); - } - return deferred; - }; - tp.cancel = function () { - tp.cancelled = true; - return tp.cancelledDeferrer; - }; - }, - Task: function (id, logic) { - var tk = this; - tk.id = id; - tk.deferred = $.Deferred(); - tk.logic = logic; - tk.context = null; - tk.run = function () { - var argv = $h.getArray(arguments); - argv.unshift(tk.deferred); // add deferrer as first argument - logic.apply(tk.context, argv); // run task - return tk.deferred; // return deferrer - }; - tk.runWithContext = function (context) { - tk.context = context; - return tk.run(); - }; - } - }; - self.ajaxQueue = []; - self.ajaxRequests = []; - self.ajaxAborted = false; - }, - _init: function (options, refreshMode) { - var self = this, f, $el = self.$element, $cont, t, tmp; - self.options = options; - self.canOrientImage = $h.canOrientImage($el); - $.each(options, function (key, value) { - switch (key) { - case 'minFileCount': - case 'maxFileCount': - case 'maxTotalFileCount': - case 'minFileSize': - case 'maxFileSize': - case 'maxFilePreviewSize': - case 'resizeImageQuality': - case 'resizeIfSizeMoreThan': - case 'progressUploadThreshold': - case 'initialPreviewCount': - case 'zoomModalHeight': - case 'minImageHeight': - case 'maxImageHeight': - case 'minImageWidth': - case 'maxImageWidth': - self[key] = $h.getNum(value); - break; - default: - self[key] = value; - break; - } - }); - if (self.maxTotalFileCount > 0 && self.maxTotalFileCount < self.maxFileCount) { - self.maxTotalFileCount = self.maxFileCount; - } - if (self.rtl) { // swap buttons for rtl - tmp = self.previewZoomButtonIcons.prev; - self.previewZoomButtonIcons.prev = self.previewZoomButtonIcons.next; - self.previewZoomButtonIcons.next = tmp; - } - // validate chunk threads to not exceed maxAjaxThreads - if (!isNaN(self.maxAjaxThreads) && self.maxAjaxThreads < self.resumableUploadOptions.maxThreads) { - self.resumableUploadOptions.maxThreads = self.maxAjaxThreads; - } - self._initFileManager(); - if (typeof self.autoOrientImage === 'function') { - self.autoOrientImage = self.autoOrientImage(); - } - if (typeof self.autoOrientImageInitial === 'function') { - self.autoOrientImageInitial = self.autoOrientImageInitial(); - } - if (!refreshMode) { - self._cleanup(); - } - self.duplicateErrors = []; - self.$form = $el.closest('form'); - self._initTemplateDefaults(); - self.uploadFileAttr = !$h.isEmpty($el.attr('name')) ? $el.attr('name') : 'file_data'; - t = self._getLayoutTemplate('progress'); - self.progressTemplate = t.replace('{class}', self.progressClass); - self.progressInfoTemplate = t.replace('{class}', self.progressInfoClass); - self.progressPauseTemplate = t.replace('{class}', self.progressPauseClass); - self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass); - self.progressErrorTemplate = t.replace('{class}', self.progressErrorClass); - self.isDisabled = $el.attr('disabled') || $el.attr('readonly'); - if (self.isDisabled) { - $el.attr('disabled', true); - } - self.isClickable = self.browseOnZoneClick && self.showPreview && - (self.dropZoneEnabled || !$h.isEmpty(self.defaultPreviewContent)); - self.isAjaxUpload = $h.hasFileUploadSupport() && !$h.isEmpty(self.uploadUrl); - self.dropZoneEnabled = $h.hasDragDropSupport() && self.dropZoneEnabled; - if (!self.isAjaxUpload) { - self.dropZoneEnabled = self.dropZoneEnabled && $h.canAssignFilesToInput(); - } - self.slug = typeof options.slugCallback === 'function' ? options.slugCallback : self._slugDefault; - self.mainTemplate = self.showCaption ? self._getLayoutTemplate('main1') : self._getLayoutTemplate('main2'); - self.captionTemplate = self._getLayoutTemplate('caption'); - self.previewGenericTemplate = self._getPreviewTemplate('generic'); - if (!self.imageCanvas && self.resizeImage && (self.maxImageWidth || self.maxImageHeight)) { - self.imageCanvas = document.createElement('canvas'); - self.imageCanvasContext = self.imageCanvas.getContext('2d'); - } - if ($h.isEmpty($el.attr('id'))) { - $el.attr('id', $h.uniqId()); - } - self.namespace = '.fileinput_' + $el.attr('id').replace(/-/g, '_'); - if (self.$container === undefined) { - self.$container = self._createContainer(); - } else { - self._refreshContainer(); - } - $cont = self.$container; - self.$dropZone = $cont.find('.file-drop-zone'); - self.$progress = $cont.find('.kv-upload-progress'); - self.$btnUpload = $cont.find('.fileinput-upload'); - self.$captionContainer = $h.getElement(options, 'elCaptionContainer', $cont.find('.file-caption')); - self.$caption = $h.getElement(options, 'elCaptionText', $cont.find('.file-caption-name')); - if (!$h.isEmpty(self.msgPlaceholder)) { - f = $el.attr('multiple') ? self.filePlural : self.fileSingle; - self.$caption.attr('placeholder', self.msgPlaceholder.replace('{files}', f)); - } - self.$captionIcon = self.$captionContainer.find('.file-caption-icon'); - self.$previewContainer = $h.getElement(options, 'elPreviewContainer', $cont.find('.file-preview')); - self.$preview = $h.getElement(options, 'elPreviewImage', $cont.find('.file-preview-thumbnails')); - self.$previewStatus = $h.getElement(options, 'elPreviewStatus', $cont.find('.file-preview-status')); - self.$errorContainer = $h.getElement(options, 'elErrorContainer', - self.$previewContainer.find('.kv-fileinput-error')); - self._validateDisabled(); - if (!$h.isEmpty(self.msgErrorClass)) { - $h.addCss(self.$errorContainer, self.msgErrorClass); - } - if (!refreshMode) { - self._resetErrors(); - self.$errorContainer.hide(); - self.previewInitId = 'thumb-' + $el.attr('id'); - self._initPreviewCache(); - self._initPreview(true); - self._initPreviewActions(); - if (self.$parent.hasClass('file-loading')) { - self.$container.insertBefore(self.$parent); - self.$parent.remove(); - } - } else { - if (!self._errorsExist()) { - self.$errorContainer.hide(); - } - } - self._setFileDropZoneTitle(); - if ($el.attr('disabled')) { - self.disable(); - } - self._initZoom(); - if (self.hideThumbnailContent) { - $h.addCss(self.$preview, 'hide-content'); - } - }, - _initFileManager: function () { - var self = this; - self.uploadStartTime = $h.now(); - self.fileManager = { - stack: {}, - filesProcessed: [], - errors: [], - loadedImages: {}, - totalImages: 0, - totalFiles: null, - totalSize: null, - uploadedSize: 0, - stats: {}, - initStats: function (id) { - var data = {started: $h.now()}; - if (id) { - self.fileManager.stats[id] = data; - } else { - self.fileManager.stats = data; - } - }, - getUploadStats: function (id, loaded, total) { - var fm = self.fileManager, - started = id ? fm.stats[id] && fm.stats[id].started || $h.now() : self.uploadStartTime; - var elapsed = ($h.now() - started) / 1000, - speeds = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'], - bps = elapsed ? loaded / elapsed : 0, bitrate = self._getSize(bps, speeds), - pendingBytes = total - loaded, - out = { - fileId: id, - started: started, - elapsed: elapsed, - loaded: loaded, - total: total, - bps: bps, - bitrate: bitrate, - pendingBytes: pendingBytes - }; - if (id) { - fm.stats[id] = out; - } else { - fm.stats = out; - } - return out; - }, - exists: function (id) { - return $.inArray(id, self.fileManager.getIdList()) !== -1; - }, - count: function () { - return self.fileManager.getIdList().length; - }, - total: function () { - var fm = self.fileManager; - if (!fm.totalFiles) { - fm.totalFiles = fm.count(); - } - return fm.totalFiles; - }, - getTotalSize: function () { - var fm = self.fileManager; - if (fm.totalSize) { - return fm.totalSize; - } - fm.totalSize = 0; - $.each(self.fileManager.stack, function (id, f) { - var size = parseFloat(f.size); - fm.totalSize += isNaN(size) ? 0 : size; - }); - return fm.totalSize; - }, - add: function (file, id) { - if (!id) { - id = self.fileManager.getId(file); - } - if (!id) { - return; - } - self.fileManager.stack[id] = { - file: file, - name: $h.getFileName(file), - relativePath: $h.getFileRelativePath(file), - size: file.size, - nameFmt: self._getFileName(file, ''), - sizeFmt: self._getSize(file.size) - }; - }, - remove: function ($thumb) { - var id = $thumb.attr('data-fileid'); - if (id) { - self.fileManager.removeFile(id); - } - }, - removeFile: function (id) { - delete self.fileManager.stack[id]; - delete self.fileManager.loadedImages[id]; - }, - move: function (idFrom, idTo) { - var result = {}, stack = self.fileManager.stack; - if (!idFrom && !idTo || idFrom === idTo) { - return; - } - $.each(stack, function (k, v) { - if (k !== idFrom) { - result[k] = v; - } - if (k === idTo) { - result[idFrom] = stack[idFrom]; - } - }); - self.fileManager.stack = result; - }, - list: function () { - var files = []; - $.each(self.fileManager.stack, function (k, v) { - if (v && v.file) { - files.push(v.file); - } - }); - return files; - }, - isPending: function (id) { - return $.inArray(id, self.fileManager.filesProcessed) === -1 && self.fileManager.exists(id); - }, - isProcessed: function () { - var filesProcessed = true, fm = self.fileManager; - $.each(fm.stack, function (id) { - if (fm.isPending(id)) { - filesProcessed = false; - } - }); - return filesProcessed; - }, - clear: function () { - var fm = self.fileManager; - self.isDuplicateError = false; - self.isPersistentError = false; - fm.totalFiles = null; - fm.totalSize = null; - fm.uploadedSize = 0; - fm.stack = {}; - fm.errors = []; - fm.filesProcessed = []; - fm.stats = {}; - fm.clearImages(); - }, - clearImages: function () { - self.fileManager.loadedImages = {}; - self.fileManager.totalImages = 0; - }, - addImage: function (id, config) { - self.fileManager.loadedImages[id] = config; - }, - removeImage: function (id) { - delete self.fileManager.loadedImages[id]; - }, - getImageIdList: function () { - return $h.getObjectKeys(self.fileManager.loadedImages); - }, - getImageCount: function () { - return self.fileManager.getImageIdList().length; - }, - getId: function (file) { - return self._getFileId(file); - }, - getIndex: function (id) { - return self.fileManager.getIdList().indexOf(id); - }, - getThumb: function (id) { - var $thumb = null; - self._getThumbs().each(function () { - var $t = $(this); - if ($t.attr('data-fileid') === id) { - $thumb = $t; - } - }); - return $thumb; - }, - getThumbIndex: function ($thumb) { - var id = $thumb.attr('data-fileid'); - return self.fileManager.getIndex(id); - }, - getIdList: function () { - return $h.getObjectKeys(self.fileManager.stack); - }, - getFile: function (id) { - return self.fileManager.stack[id] || null; - }, - getFileName: function (id, fmt) { - var file = self.fileManager.getFile(id); - if (!file) { - return ''; - } - return fmt ? (file.nameFmt || '') : file.name || ''; - }, - getFirstFile: function () { - var ids = self.fileManager.getIdList(), id = ids && ids.length ? ids[0] : null; - return self.fileManager.getFile(id); - }, - setFile: function (id, file) { - if (self.fileManager.getFile(id)) { - self.fileManager.stack[id].file = file; - } else { - self.fileManager.add(file, id); - } - }, - setProcessed: function (id) { - self.fileManager.filesProcessed.push(id); - }, - getProgress: function () { - var total = self.fileManager.total(), filesProcessed = self.fileManager.filesProcessed.length; - if (!total) { - return 0; - } - return Math.ceil(filesProcessed / total * 100); - - }, - setProgress: function (id, pct) { - var f = self.fileManager.getFile(id); - if (!isNaN(pct) && f) { - f.progress = pct; - } - } - }; - }, - _setUploadData: function (fd, config) { - var self = this; - $.each(config, function (key, value) { - var param = self.uploadParamNames[key] || key; - if ($h.isArray(value)) { - fd.append(param, value[0], value[1]); - } else { - fd.append(param, value); - } - }); - }, - _initResumableUpload: function () { - var self = this, opts = self.resumableUploadOptions, logs = $h.logMessages, rm, fm = self.fileManager; - if (!self.enableResumableUpload) { - return; - } - if (opts.fallback !== false && typeof opts.fallback !== 'function') { - opts.fallback = function (s) { - s._log(logs.noResumableSupport); - s.enableResumableUpload = false; - }; - } - if (!$h.hasResumableUploadSupport() && opts.fallback !== false) { - opts.fallback(self); - return; - } - if (!self.uploadUrl && self.enableResumableUpload) { - self._log(logs.noUploadUrl); - self.enableResumableUpload = false; - return; - - } - opts.chunkSize = parseFloat(opts.chunkSize); - if (opts.chunkSize <= 0 || isNaN(opts.chunkSize)) { - self._log(logs.invalidChunkSize, {chunkSize: opts.chunkSize}); - self.enableResumableUpload = false; - return; - } - rm = self.resumableManager = { - init: function (id, f, index) { - rm.logs = []; - rm.stack = []; - rm.error = ''; - rm.id = id; - rm.file = f.file; - rm.fileName = f.name; - rm.fileIndex = index; - rm.completed = false; - rm.lastProgress = 0; - if (self.showPreview) { - rm.$thumb = fm.getThumb(id) || null; - rm.$progress = rm.$btnDelete = null; - if (rm.$thumb && rm.$thumb.length) { - rm.$progress = rm.$thumb.find('.file-thumb-progress'); - rm.$btnDelete = rm.$thumb.find('.kv-file-remove'); - } - } - rm.chunkSize = opts.chunkSize * 1024; - rm.chunkCount = rm.getTotalChunks(); - }, - setAjaxError: function (jqXHR, textStatus, errorThrown, isTest) { - if (jqXHR.responseJSON && jqXHR.responseJSON.error) { - errorThrown = jqXHR.responseJSON.error.toString(); - } - if (!isTest) { - rm.error = errorThrown; - } - if (opts.showErrorLog) { - self._log(logs.ajaxError, { - status: jqXHR.status, - error: errorThrown, - text: jqXHR.responseText || '' - }); - } - }, - reset: function () { - rm.stack = []; - rm.chunksProcessed = {}; - }, - setProcessed: function (status) { - var id = rm.id, msg, $thumb = rm.$thumb, $prog = rm.$progress, hasThumb = $thumb && $thumb.length, - params = {id: hasThumb ? $thumb.attr('id') : '', index: fm.getIndex(id), fileId: id}; - rm.completed = true; - rm.lastProgress = 0; - if (hasThumb) { - $thumb.removeClass('file-uploading'); - } - if (status === 'success') { - fm.uploadedSize += rm.file.size; - if (self.showPreview) { - self._setProgress(101, $prog); - self._setThumbStatus($thumb, 'Success'); - self._initUploadSuccess(rm.chunksProcessed[id].data, $thumb); - } - fm.removeFile(id); - delete rm.chunksProcessed[id]; - self._raise('fileuploaded', [params.id, params.index, params.fileId]); - if (fm.isProcessed()) { - self._setProgress(101); - } - } else { - if (status !== 'cancel') { - if (self.showPreview) { - self._setThumbStatus($thumb, 'Error'); - self._setPreviewError($thumb, true); - self._setProgress(101, $prog, self.msgProgressError); - self._setProgress(101, self.$progress, self.msgProgressError); - self.cancelling = true; - } - if (!self.$errorContainer.find('li[data-file-id="' + params.fileId + '"]').length) { - msg = self.msgResumableUploadRetriesExceeded.setTokens({ - file: rm.fileName, - max: opts.maxRetries, - error: rm.error - }); - self._showFileError(msg, params); - } - } - } - if (fm.isProcessed()) { - rm.reset(); - } - }, - check: function () { - var status = true; - $.each(rm.logs, function (index, value) { - if (!value) { - status = false; - return false; - } - }); - }, - processedResumables: function () { - var logs = rm.logs, i, count = 0; - if (!logs || !logs.length) { - return 0; - } - for (i = 0; i < logs.length; i++) { - if (logs[i] === true) { - count++; - } - } - return count; - }, - getUploadedSize: function () { - var size = rm.processedResumables() * rm.chunkSize; - return size > rm.file.size ? rm.file.size : size; - }, - getTotalChunks: function () { - var chunkSize = parseFloat(rm.chunkSize); - if (!isNaN(chunkSize) && chunkSize > 0) { - return Math.ceil(rm.file.size / chunkSize); - } - return 0; - }, - getProgress: function () { - var chunksProcessed = rm.processedResumables(), total = rm.chunkCount; - if (total === 0) { - return 0; - } - return Math.ceil(chunksProcessed / total * 100); - }, - checkAborted: function (intervalId) { - if (self._isAborted()) { - clearInterval(intervalId); - self.unlock(); - } - }, - upload: function () { - var ids = fm.getIdList(), flag = 'new', intervalId; - intervalId = setInterval(function () { - var id; - rm.checkAborted(intervalId); - if (flag === 'new') { - self.lock(); - flag = 'processing'; - id = ids.shift(); - fm.initStats(id); - if (fm.stack[id]) { - rm.init(id, fm.stack[id], fm.getIndex(id)); - rm.processUpload(); - } - } - if (!fm.isPending(id) && rm.completed) { - flag = 'new'; - } - if (fm.isProcessed()) { - var $initThumbs = self.$preview.find('.file-preview-initial'); - if ($initThumbs.length) { - $h.addCss($initThumbs, $h.SORT_CSS); - self._initSortable(); - } - clearInterval(intervalId); - self._clearFileInput(); - self.unlock(); - setTimeout(function () { - var data = self.previewCache.data; - if (data) { - self.initialPreview = data.content; - self.initialPreviewConfig = data.config; - self.initialPreviewThumbTags = data.tags; - } - self._raise('filebatchuploadcomplete', [ - self.initialPreview, - self.initialPreviewConfig, - self.initialPreviewThumbTags, - self._getExtraData() - ]); - }, self.processDelay); - } - }, self.processDelay); - }, - uploadResumable: function () { - var i, pool, tm = self.taskManager, total = rm.chunkCount; - pool = tm.addPool(rm.id); - for (i = 0; i < total; i++) { - rm.logs[i] = !!(rm.chunksProcessed[rm.id] && rm.chunksProcessed[rm.id][i]); - if (!rm.logs[i]) { - rm.pushAjax(i, 0); - } - } - pool.run(opts.maxThreads) - .done(function () { - rm.setProcessed('success'); - }) - .fail(function () { - rm.setProcessed(pool.cancelled ? 'cancel' : 'error'); - }); - }, - processUpload: function () { - var fd, f, id = rm.id, fnBefore, fnSuccess, fnError, fnComplete, outData; - if (!opts.testUrl) { - rm.uploadResumable(); - return; - } - fd = new FormData(); - f = fm.stack[id]; - self._setUploadData(fd, { - fileId: id, - fileName: f.fileName, - fileSize: f.size, - fileRelativePath: f.relativePath, - chunkSize: rm.chunkSize, - chunkCount: rm.chunkCount - }); - fnBefore = function (jqXHR) { - outData = self._getOutData(fd, jqXHR); - self._raise('filetestbeforesend', [id, fm, rm, outData]); - }; - fnSuccess = function (data, textStatus, jqXHR) { - outData = self._getOutData(fd, jqXHR, data); - var pNames = self.uploadParamNames, chunksUploaded = pNames.chunksUploaded || 'chunksUploaded', - params = [id, fm, rm, outData]; - if (!data[chunksUploaded] || !$h.isArray(data[chunksUploaded])) { - self._raise('filetesterror', params); - } else { - if (!rm.chunksProcessed[id]) { - rm.chunksProcessed[id] = {}; - } - $.each(data[chunksUploaded], function (key, index) { - rm.logs[index] = true; - rm.chunksProcessed[id][index] = true; - }); - rm.chunksProcessed[id].data = data; - self._raise('filetestsuccess', params); - } - rm.uploadResumable(); - }; - fnError = function (jqXHR, textStatus, errorThrown) { - outData = self._getOutData(fd, jqXHR); - self._raise('filetestajaxerror', [id, fm, rm, outData]); - rm.setAjaxError(jqXHR, textStatus, errorThrown, true); - rm.uploadResumable(); - }; - fnComplete = function () { - self._raise('filetestcomplete', [id, fm, rm, self._getOutData(fd)]); - }; - self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex, opts.testUrl); - }, - pushAjax: function (index, retry) { - var tm = self.taskManager, pool = tm.getPool(rm.id); - pool.addTask(pool.size() + 1, function (deferrer) { - // use fifo chunk stack - var arr = rm.stack.shift(), index; - index = arr[0]; - if (!rm.chunksProcessed[rm.id] || !rm.chunksProcessed[rm.id][index]) { - rm.sendAjax(index, arr[1], deferrer); - } else { - self._log(logs.chunkQueueError, {index: index}); - } - }); - rm.stack.push([index, retry]); - }, - sendAjax: function (index, retry, deferrer) { - var f, chunkSize = rm.chunkSize, id = rm.id, file = rm.file, $thumb = rm.$thumb, - msgs = $h.logMessages, $btnDelete = rm.$btnDelete, logError = function (msg, tokens) { - if (tokens) { - msg = msg.setTokens(tokens); - } - msg = 'Error processing resumable ajax request. ' + msg; - self._log(msg); - deferrer.reject(msg); - }; - if (rm.chunksProcessed[id] && rm.chunksProcessed[id][index]) { - return; - } - if (retry > opts.maxRetries) { - logError(msgs.resumableMaxRetriesReached, {n: opts.maxRetries}); - rm.setProcessed('error'); - return; - } - var fd, outData, fnBefore, fnSuccess, fnError, fnComplete, slice = file.slice ? 'slice' : - (file.mozSlice ? 'mozSlice' : (file.webkitSlice ? 'webkitSlice' : 'slice')), - blob = file[slice](chunkSize * index, chunkSize * (index + 1)); - fd = new FormData(); - f = fm.stack[id]; - self._setUploadData(fd, { - chunkCount: rm.chunkCount, - chunkIndex: index, - chunkSize: chunkSize, - chunkSizeStart: chunkSize * index, - fileBlob: [blob, rm.fileName], - fileId: id, - fileName: rm.fileName, - fileRelativePath: f.relativePath, - fileSize: file.size, - retryCount: retry - }); - if (rm.$progress && rm.$progress.length) { - rm.$progress.show(); - } - fnBefore = function (jqXHR) { - outData = self._getOutData(fd, jqXHR); - if (self.showPreview) { - if (!$thumb.hasClass('file-preview-success')) { - self._setThumbStatus($thumb, 'Loading'); - $h.addCss($thumb, 'file-uploading'); - } - $btnDelete.attr('disabled', true); - } - self._raise('filechunkbeforesend', [id, index, retry, fm, rm, outData]); - }; - fnSuccess = function (data, textStatus, jqXHR) { - if (self._isAborted()) { - logError(msgs.resumableAborting); - return; - } - outData = self._getOutData(fd, jqXHR, data); - var paramNames = self.uploadParamNames, chunkIndex = paramNames.chunkIndex || 'chunkIndex', - params = [id, index, retry, fm, rm, outData]; - if (data.error) { - if (opts.showErrorLog) { - self._log(logs.retryStatus, { - retry: retry + 1, - filename: rm.fileName, - chunk: index - }); - } - rm.pushAjax(index, retry + 1); - rm.error = data.error; - self._raise('filechunkerror', params); - } else { - rm.logs[data[chunkIndex]] = true; - if (!rm.chunksProcessed[id]) { - rm.chunksProcessed[id] = {}; - } - rm.chunksProcessed[id][data[chunkIndex]] = true; - rm.chunksProcessed[id].data = data; - deferrer.resolve.call(null, data); - self._raise('filechunksuccess', params); - rm.check(); - } - }; - fnError = function (jqXHR, textStatus, errorThrown) { - if (self._isAborted()) { - logError(msgs.resumableAborting); - return; - } - outData = self._getOutData(fd, jqXHR); - rm.setAjaxError(jqXHR, textStatus, errorThrown); - self._raise('filechunkajaxerror', [id, index, retry, fm, rm, outData]); - rm.pushAjax(index, retry + 1); // push another task - logError(msgs.resumableRetryError, {n: retry - 1}); // resolve the current task - }; - fnComplete = function () { - if (!self._isAborted()) { - self._raise('filechunkcomplete', [id, index, retry, fm, rm, self._getOutData(fd)]); - } - }; - self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex); - } - }; - rm.reset(); - }, - _initTemplateDefaults: function () { - var self = this, tMain1, tMain2, tPreview, tFileIcon, tClose, tCaption, tBtnDefault, tBtnLink, tBtnBrowse, - tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload, - tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage, - tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim, - tStats, tModalLabel, renderObject = function (type, mime) { - return '\n' + $h.DEFAULT_PREVIEW + '\n\n'; - }; - tMain1 = '{preview}\n' + - '
\n' + - '
\n' + - ' {caption}\n' + - '
\n' + - ' {remove}\n' + - ' {cancel}\n' + - ' {pause}\n' + - ' {upload}\n' + - ' {browse}\n' + - '
\n' + - '
'; - tMain2 = '{preview}\n
\n
\n' + - '{remove}\n{cancel}\n{upload}\n{browse}\n'; - tPreview = '
\n' + - ' {close}' + - '
\n' + - '
\n' + - '
\n' + - '
\n' + - '
\n' + - '
\n' + - '
'; - tClose = $h.closeButton('fileinput-remove'); - tFileIcon = ''; - // noinspection HtmlUnknownAttribute - tCaption = '
\n' + - ' \n' + - ' \n' + - '
'; - //noinspection HtmlUnknownAttribute - tBtnDefault = ''; - //noinspection HtmlUnknownTarget,HtmlUnknownAttribute - tBtnLink = '{icon} {label}'; - //noinspection HtmlUnknownAttribute - tBtnBrowse = '
{icon} {label}
'; - tModalLabel = $h.MODAL_ID + 'Label'; - tModalMain = ''; - tModal = '\n'; - tProgress = '
\n' + - '
\n' + - ' {status}\n' + - '
\n' + - '
{stats}'; - tStats = '
' + - '{pendingTime} ' + - '{uploadSpeed}' + - '
'; - tSize = ' ({sizeText})'; - tFooter = ''; - tActions = '
\n' + - ' \n' + - '
\n' + - '{drag}\n' + - '
'; - //noinspection HtmlUnknownAttribute - tActionDelete = '\n'; - tActionUpload = ''; - tActionDownload = '{downloadIcon}'; - tActionZoom = ''; - tActionDrag = '{dragIcon}'; - tIndicator = '
{indicator}
'; - tTagBef = '
\n'; - tTagBef2 = tTagBef + ' title="{caption}">
\n'; - tTagAft = '
{footer}\n{zoomCache}
\n'; - tGeneric = '{content}\n'; - tStyle = ' {style}'; - tHtml = renderObject('html', 'text/html'); - tText = renderObject('text', 'text/plain;charset=UTF-8'); - tPdf = renderObject('pdf', 'application/pdf'); - tImage = '{alt}\n'; - tOffice = ''; - tGdocs = ''; - tVideo = '\n'; - tAudio = '\n'; - tFlash = '\n'; - tObject = '\n' + '\n' + - $h.OBJECT_PARAMS + ' ' + $h.DEFAULT_PREVIEW + '\n\n'; - tOther = '
\n' + $h.DEFAULT_PREVIEW + '\n
\n'; - tZoomCache = '
{zoomContent}
'; - vDefaultDim = {width: '100%', height: '100%', 'min-height': '480px'}; - if (self._isPdfRendered()) { - tPdf = self.pdfRendererTemplate.replace('{renderer}', self._encodeURI(self.pdfRendererUrl)); - } - self.defaults = { - layoutTemplates: { - main1: tMain1, - main2: tMain2, - preview: tPreview, - close: tClose, - fileIcon: tFileIcon, - caption: tCaption, - modalMain: tModalMain, - modal: tModal, - progress: tProgress, - stats: tStats, - size: tSize, - footer: tFooter, - indicator: tIndicator, - actions: tActions, - actionDelete: tActionDelete, - actionUpload: tActionUpload, - actionDownload: tActionDownload, - actionZoom: tActionZoom, - actionDrag: tActionDrag, - btnDefault: tBtnDefault, - btnLink: tBtnLink, - btnBrowse: tBtnBrowse, - zoomCache: tZoomCache - }, - previewMarkupTags: { - tagBefore1: tTagBef1, - tagBefore2: tTagBef2, - tagAfter: tTagAft - }, - previewContentTemplates: { - generic: tGeneric, - html: tHtml, - image: tImage, - text: tText, - office: tOffice, - gdocs: tGdocs, - video: tVideo, - audio: tAudio, - flash: tFlash, - object: tObject, - pdf: tPdf, - other: tOther - }, - allowedPreviewTypes: ['image', 'html', 'text', 'video', 'audio', 'flash', 'pdf', 'object'], - previewTemplates: {}, - previewSettings: { - image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, - html: {width: '213px', height: '160px'}, - text: {width: '213px', height: '160px'}, - office: {width: '213px', height: '160px'}, - gdocs: {width: '213px', height: '160px'}, - video: {width: '213px', height: '160px'}, - audio: {width: '100%', height: '30px'}, - flash: {width: '213px', height: '160px'}, - object: {width: '213px', height: '160px'}, - pdf: {width: '100%', height: '160px', 'position': 'relative'}, - other: {width: '213px', height: '160px'} - }, - previewSettingsSmall: { - image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, - html: {width: '100%', height: '160px'}, - text: {width: '100%', height: '160px'}, - office: {width: '100%', height: '160px'}, - gdocs: {width: '100%', height: '160px'}, - video: {width: '100%', height: 'auto'}, - audio: {width: '100%', height: '30px'}, - flash: {width: '100%', height: 'auto'}, - object: {width: '100%', height: 'auto'}, - pdf: {width: '100%', height: '160px'}, - other: {width: '100%', height: '160px'} - }, - previewZoomSettings: { - image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, - html: vDefaultDim, - text: vDefaultDim, - office: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'}, - gdocs: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'}, - video: {width: 'auto', height: '100%', 'max-width': '100%'}, - audio: {width: '100%', height: '30px'}, - flash: {width: 'auto', height: '480px'}, - object: {width: 'auto', height: '100%', 'max-width': '100%', 'min-height': '480px'}, - pdf: vDefaultDim, - other: {width: 'auto', height: '100%', 'min-height': '480px'} - }, - mimeTypeAliases: { - 'video/quicktime': 'video/mp4' - }, - fileTypeSettings: { - image: function (vType, vName) { - return ($h.compare(vType, 'image.*') && !$h.compare(vType, /(tiff?|wmf)$/i) || - $h.compare(vName, /\.(gif|png|jpe?g)$/i)); - }, - html: function (vType, vName) { - return $h.compare(vType, 'text/html') || $h.compare(vName, /\.(htm|html)$/i); - }, - office: function (vType, vName) { - return $h.compare(vType, /(word|excel|powerpoint|office)$/i) || - $h.compare(vName, /\.(docx?|xlsx?|pptx?|pps|potx?)$/i); - }, - gdocs: function (vType, vName) { - return $h.compare(vType, /(word|excel|powerpoint|office|iwork-pages|tiff?)$/i) || - $h.compare(vName, - /\.(docx?|xlsx?|pptx?|pps|potx?|rtf|ods|odt|pages|ai|dxf|ttf|tiff?|wmf|e?ps)$/i); - }, - text: function (vType, vName) { - return $h.compare(vType, 'text.*') || $h.compare(vName, /\.(xml|javascript)$/i) || - $h.compare(vName, /\.(txt|md|nfo|ini|json|php|js|css)$/i); - }, - video: function (vType, vName) { - return $h.compare(vType, 'video.*') && ($h.compare(vType, /(ogg|mp4|mp?g|mov|webm|3gp)$/i) || - $h.compare(vName, /\.(og?|mp4|webm|mp?g|mov|3gp)$/i)); - }, - audio: function (vType, vName) { - return $h.compare(vType, 'audio.*') && ($h.compare(vName, /(ogg|mp3|mp?g|wav)$/i) || - $h.compare(vName, /\.(og?|mp3|mp?g|wav)$/i)); - }, - flash: function (vType, vName) { - return $h.compare(vType, 'application/x-shockwave-flash', true) || $h.compare(vName, - /\.(swf)$/i); - }, - pdf: function (vType, vName) { - return $h.compare(vType, 'application/pdf', true) || $h.compare(vName, /\.(pdf)$/i); - }, - object: function () { - return true; - }, - other: function () { - return true; - } - }, - fileActionSettings: { - showRemove: true, - showUpload: true, - showDownload: true, - showZoom: true, - showDrag: true, - removeIcon: '', - removeClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - removeErrorClass: 'btn btn-sm btn-kv btn-danger', - removeTitle: 'Remove file', - uploadIcon: '', - uploadClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - uploadTitle: 'Upload file', - uploadRetryIcon: '', - uploadRetryTitle: 'Retry upload', - downloadIcon: '', - downloadClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - downloadTitle: 'Download file', - zoomIcon: '', - zoomClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - zoomTitle: 'View Details', - dragIcon: '', - dragClass: 'text-info', - dragTitle: 'Move / Rearrange', - dragSettings: {}, - indicatorNew: '', - indicatorSuccess: '', - indicatorError: '', - indicatorLoading: '', - indicatorPaused: '', - indicatorNewTitle: 'Not uploaded yet', - indicatorSuccessTitle: 'Uploaded', - indicatorErrorTitle: 'Upload Error', - indicatorLoadingTitle: 'Uploading …', - indicatorPausedTitle: 'Upload Paused' - } - }; - $.each(self.defaults, function (key, setting) { - if (key === 'allowedPreviewTypes') { - if (self.allowedPreviewTypes === undefined) { - self.allowedPreviewTypes = setting; - } - return; - } - self[key] = $.extend(true, {}, setting, self[key]); - }); - self._initPreviewTemplates(); - }, - _initPreviewTemplates: function () { - var self = this, tags = self.previewMarkupTags, tagBef, tagAft = tags.tagAfter; - $.each(self.previewContentTemplates, function (key, value) { - if ($h.isEmpty(self.previewTemplates[key])) { - tagBef = tags.tagBefore2; - if (key === 'generic' || key === 'image') { - tagBef = tags.tagBefore1; - } - if (self._isPdfRendered() && key === 'pdf') { - tagBef = tagBef.replace('kv-file-content', 'kv-file-content kv-pdf-rendered'); - } - self.previewTemplates[key] = tagBef + value + tagAft; - } - }); - }, - _initPreviewCache: function () { - var self = this; - self.previewCache = { - data: {}, - init: function () { - var content = self.initialPreview; - if (content.length > 0 && !$h.isArray(content)) { - content = content.split(self.initialPreviewDelimiter); - } - self.previewCache.data = { - content: content, - config: self.initialPreviewConfig, - tags: self.initialPreviewThumbTags - }; - }, - count: function (skipNull) { - if (!self.previewCache.data || !self.previewCache.data.content) { - return 0; - } - if (skipNull) { - var chk = self.previewCache.data.content.filter(function (n) { - return n !== null; - }); - return chk.length; - } - return self.previewCache.data.content.length; - }, - get: function (i, isDisabled) { - var ind = $h.INIT_FLAG + i, data = self.previewCache.data, config = data.config[i], - content = data.content[i], out, $tmp, cat, ftr, - fname, ftype, frameClass, asData = $h.ifSet('previewAsData', config, self.initialPreviewAsData), - a = config ? {title: config.title || null, alt: config.alt || null} : {title: null, alt: null}, - parseTemplate = function (cat, dat, fname, ftype, ftr, ind, fclass, t) { - var fc = ' file-preview-initial ' + $h.SORT_CSS + (fclass ? ' ' + fclass : ''), - id = self.previewInitId + '-' + ind, - fileId = config && config.fileId || id; - /** @namespace config.zoomData */ - return self._generatePreviewTemplate(cat, dat, fname, ftype, id, fileId, false, null, fc, - ftr, ind, t, a, config && config.zoomData || dat); - }; - if (!content || !content.length) { - return ''; - } - isDisabled = isDisabled === undefined ? true : isDisabled; - cat = $h.ifSet('type', config, self.initialPreviewFileType || 'generic'); - fname = $h.ifSet('filename', config, $h.ifSet('caption', config)); - ftype = $h.ifSet('filetype', config, cat); - ftr = self.previewCache.footer(i, isDisabled, (config && config.size || null)); - frameClass = $h.ifSet('frameClass', config); - if (asData) { - out = parseTemplate(cat, content, fname, ftype, ftr, ind, frameClass); - } else { - out = parseTemplate('generic', content, fname, ftype, ftr, ind, frameClass, cat) - .setTokens({'content': data.content[i]}); - } - if (data.tags.length && data.tags[i]) { - out = $h.replaceTags(out, data.tags[i]); - } - /** @namespace config.frameAttr */ - if (!$h.isEmpty(config) && !$h.isEmpty(config.frameAttr)) { - $tmp = $h.createElement(out); - $tmp.find('.file-preview-initial').attr(config.frameAttr); - out = $tmp.html(); - $tmp.remove(); - } - return out; - }, - clean: function (data) { - data.content = $h.cleanArray(data.content); - data.config = $h.cleanArray(data.config); - data.tags = $h.cleanArray(data.tags); - self.previewCache.data = data; - }, - add: function (content, config, tags, append) { - var data = self.previewCache.data, index; - if (!content || !content.length) { - return 0; - } - index = content.length - 1; - if (!$h.isArray(content)) { - content = content.split(self.initialPreviewDelimiter); - } - if (append && data.content) { - index = data.content.push(content[0]) - 1; - data.config[index] = config; - data.tags[index] = tags; - } else { - data.content = content; - data.config = config; - data.tags = tags; - } - self.previewCache.clean(data); - return index; - }, - set: function (content, config, tags, append) { - var data = self.previewCache.data, i, chk; - if (!content || !content.length) { - return; - } - if (!$h.isArray(content)) { - content = content.split(self.initialPreviewDelimiter); - } - chk = content.filter(function (n) { - return n !== null; - }); - if (!chk.length) { - return; - } - if (data.content === undefined) { - data.content = []; - } - if (data.config === undefined) { - data.config = []; - } - if (data.tags === undefined) { - data.tags = []; - } - if (append) { - for (i = 0; i < content.length; i++) { - if (content[i]) { - data.content.push(content[i]); - } - } - for (i = 0; i < config.length; i++) { - if (config[i]) { - data.config.push(config[i]); - } - } - for (i = 0; i < tags.length; i++) { - if (tags[i]) { - data.tags.push(tags[i]); - } - } - } else { - data.content = content; - data.config = config; - data.tags = tags; - } - self.previewCache.clean(data); - }, - unset: function (index) { - var chk = self.previewCache.count(), rev = self.reversePreviewOrder; - if (!chk) { - return; - } - if (chk === 1) { - self.previewCache.data.content = []; - self.previewCache.data.config = []; - self.previewCache.data.tags = []; - self.initialPreview = []; - self.initialPreviewConfig = []; - self.initialPreviewThumbTags = []; - return; - } - self.previewCache.data.content = $h.spliceArray(self.previewCache.data.content, index, rev); - self.previewCache.data.config = $h.spliceArray(self.previewCache.data.config, index, rev); - self.previewCache.data.tags = $h.spliceArray(self.previewCache.data.tags, index, rev); - var data = $.extend(true, {}, self.previewCache.data); - self.previewCache.clean(data); - }, - out: function () { - var html = '', caption, len = self.previewCache.count(), i, content; - if (len === 0) { - return {content: '', caption: ''}; - } - for (i = 0; i < len; i++) { - content = self.previewCache.get(i); - html = self.reversePreviewOrder ? (content + html) : (html + content); - } - caption = self._getMsgSelected(len); - return {content: html, caption: caption}; - }, - footer: function (i, isDisabled, size) { - var data = self.previewCache.data || {}; - if ($h.isEmpty(data.content)) { - return ''; - } - if ($h.isEmpty(data.config) || $h.isEmpty(data.config[i])) { - data.config[i] = {}; - } - isDisabled = isDisabled === undefined ? true : isDisabled; - var config = data.config[i], caption = $h.ifSet('caption', config), a, - width = $h.ifSet('width', config, 'auto'), url = $h.ifSet('url', config, false), - key = $h.ifSet('key', config, null), fileId = $h.ifSet('fileId', config, null), - fs = self.fileActionSettings, initPreviewShowDel = self.initialPreviewShowDelete || false, - downloadInitialUrl = !self.initialPreviewDownloadUrl ? '' : - self.initialPreviewDownloadUrl + '?key=' + key + (fileId ? '&fileId=' + fileId : ''), - dUrl = config.downloadUrl || downloadInitialUrl, - dFil = config.filename || config.caption || '', - initPreviewShowDwl = !!(dUrl), - sDel = $h.ifSet('showRemove', config, initPreviewShowDel), - sDwl = $h.ifSet('showDownload', config, $h.ifSet('showDownload', fs, initPreviewShowDwl)), - sZm = $h.ifSet('showZoom', config, $h.ifSet('showZoom', fs, true)), - sDrg = $h.ifSet('showDrag', config, $h.ifSet('showDrag', fs, true)), - dis = (url === false) && isDisabled; - sDwl = sDwl && config.downloadUrl !== false && !!dUrl; - a = self._renderFileActions(config, false, sDwl, sDel, sZm, sDrg, dis, url, key, true, dUrl, dFil); - return self._getLayoutTemplate('footer').setTokens({ - 'progress': self._renderThumbProgress(), - 'actions': a, - 'caption': caption, - 'size': self._getSize(size), - 'width': width, - 'indicator': '' - }); - } - }; - self.previewCache.init(); - }, - _isPdfRendered: function () { - var self = this, useLib = self.usePdfRenderer, - flag = typeof useLib === 'function' ? useLib() : !!useLib; - return flag && self.pdfRendererUrl; - }, - _handler: function ($el, event, callback) { - var self = this, ns = self.namespace, ev = event.split(' ').join(ns + ' ') + ns; - if (!$el || !$el.length) { - return; - } - $el.off(ev).on(ev, callback); - }, - _encodeURI: function (vUrl) { - var self = this; - return self.encodeUrl ? encodeURI(vUrl) : vUrl; - }, - _log: function (msg, tokens) { - var self = this, id = self.$element.attr('id'); - if (!self.showConsoleLogs) { - return; - } - if (id) { - msg = '"' + id + '": ' + msg; - } - msg = 'bootstrap-fileinput: ' + msg; - if (typeof tokens === 'object') { - msg = msg.setTokens(tokens); - } - if (window.console && typeof window.console.log !== 'undefined') { - window.console.log(msg); - } else { - window.alert(msg); - } - }, - _validate: function () { - var self = this, status = self.$element.attr('type') === 'file'; - if (!status) { - self._log($h.logMessages.badInputType); - } - return status; - }, - _errorsExist: function () { - var self = this, $err, $errList = self.$errorContainer.find('li'); - if ($errList.length) { - return true; - } - $err = $h.createElement(self.$errorContainer.html()); - $err.find('.kv-error-close').remove(); - $err.find('ul').remove(); - return !!$.trim($err.text()).length; - }, - _errorHandler: function (evt, caption) { - var self = this, err = evt.target.error, showError = function (msg) { - self._showError(msg.replace('{name}', caption)); - }; - /** @namespace err.NOT_FOUND_ERR */ - /** @namespace err.SECURITY_ERR */ - /** @namespace err.NOT_READABLE_ERR */ - if (err.code === err.NOT_FOUND_ERR) { - showError(self.msgFileNotFound); - } else { - if (err.code === err.SECURITY_ERR) { - showError(self.msgFileSecured); - } else { - if (err.code === err.NOT_READABLE_ERR) { - showError(self.msgFileNotReadable); - } else { - if (err.code === err.ABORT_ERR) { - showError(self.msgFilePreviewAborted); - } else { - showError(self.msgFilePreviewError); - } - } - } - } - }, - _addError: function (msg) { - var self = this, $error = self.$errorContainer; - if (msg && $error.length) { - $h.setHtml($error, self.errorCloseButton + msg); - self._handler($error.find('.kv-error-close'), 'click', function () { - setTimeout(function () { - if (self.showPreview && !self.getFrames().length) { - self.clear(); - } - $error.fadeOut('slow'); - }, self.processDelay); - }); - } - }, - _setValidationError: function (css) { - var self = this; - css = (css ? css + ' ' : '') + 'has-error'; - self.$container.removeClass(css).addClass('has-error'); - $h.addCss(self.$captionContainer, 'is-invalid'); - }, - _resetErrors: function (fade) { - var self = this, $error = self.$errorContainer; - if (self.isPersistentError) { - return; - } - self.isError = false; - self.$container.removeClass('has-error'); - self.$captionContainer.removeClass('is-invalid'); - $error.html(''); - if (fade) { - $error.fadeOut('slow'); - } else { - $error.hide(); - } - }, - _showFolderError: function (folders) { - var self = this, $error = self.$errorContainer, msg; - if (!folders) { - return; - } - if (!self.isAjaxUpload) { - self._clearFileInput(); - } - msg = self.msgFoldersNotAllowed.replace('{n}', folders); - self._addError(msg); - self._setValidationError(); - $error.fadeIn(self.fadeDelay); - self._raise('filefoldererror', [folders, msg]); - }, - _showFileError: function (msg, params, event) { - var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror', - fId = params && params.fileId || '', e = params && params.id ? - '
  • ' + msg + '
  • ' : '
  • ' + msg + '
  • '; - - if ($error.find('ul').length === 0) { - self._addError('
      ' + e + '
    '); - } else { - $error.find('ul').append(e); - } - $error.fadeIn(self.fadeDelay); - self._raise(ev, [params, msg]); - self._setValidationError('file-input-new'); - return true; - }, - _showError: function (msg, params, event) { - var self = this, $error = self.$errorContainer, ev = event || 'fileerror'; - params = params || {}; - params.reader = self.reader; - self._addError(msg); - $error.fadeIn(self.fadeDelay); - self._raise(ev, [params, msg]); - if (!self.isAjaxUpload) { - self._clearFileInput(); - } - self._setValidationError('file-input-new'); - self.$btnUpload.attr('disabled', true); - return true; - }, - _noFilesError: function (params) { - var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle, - msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label), - $error = self.$errorContainer; - msg = '
  • ' + msg + '
  • '; - if ($error.find('ul').length === 0) { - self._addError('
      ' + msg + '
    '); - } else { - $error.find('ul').append(msg); - } - self.isError = true; - self._updateFileDetails(0); - $error.fadeIn(self.fadeDelay); - self._raise('fileerror', [params, msg]); - self._clearFileInput(); - self._setValidationError(); - }, - _parseError: function (operation, jqXHR, errorThrown, fileName) { - /** @namespace jqXHR.responseJSON */ - var self = this, errMsg = $.trim(errorThrown + ''), textPre, errText, text; - errText = jqXHR.responseJSON && jqXHR.responseJSON.error ? jqXHR.responseJSON.error.toString() : ''; - text = errText ? errText : jqXHR.responseText; - if (self.cancelling && self.msgUploadAborted) { - errMsg = self.msgUploadAborted; - } - if (self.showAjaxErrorDetails && text) { - if (errText) { - errMsg = $.trim(errText + ''); - } else { - text = $.trim(text.replace(/\n\s*\n/g, '\n')); - textPre = text.length ? '
    ' + text + '
    ' : ''; - errMsg += errMsg ? textPre : text; - } - } - if (!errMsg) { - errMsg = self.msgAjaxError.replace('{operation}', operation); - } - self.cancelling = false; - return fileName ? '' + fileName + ': ' + errMsg : errMsg; - }, - _parseFileType: function (type, name) { - var self = this, isValid, vType, cat, i, types = self.allowedPreviewTypes || []; - if (type === 'application/text-plain') { - return 'text'; - } - for (i = 0; i < types.length; i++) { - cat = types[i]; - isValid = self.fileTypeSettings[cat]; - vType = isValid(type, name) ? cat : ''; - if (!$h.isEmpty(vType)) { - return vType; - } - } - return 'other'; - }, - _getPreviewIcon: function (fname) { - var self = this, ext, out = null; - if (fname && fname.indexOf('.') > -1) { - ext = fname.split('.').pop(); - if (self.previewFileIconSettings) { - out = self.previewFileIconSettings[ext] || self.previewFileIconSettings[ext.toLowerCase()] || null; - } - if (self.previewFileExtSettings) { - $.each(self.previewFileExtSettings, function (key, func) { - if (self.previewFileIconSettings[key] && func(ext)) { - out = self.previewFileIconSettings[key]; - //noinspection UnnecessaryReturnStatementJS - return; - } - }); - } - } - return out || self.previewFileIcon; - }, - _parseFilePreviewIcon: function (content, fname) { - var self = this, icn = self._getPreviewIcon(fname), out = content; - if (out.indexOf('{previewFileIcon}') > -1) { - out = out.setTokens({'previewFileIconClass': self.previewFileIconClass, 'previewFileIcon': icn}); - } - return out; - }, - _raise: function (event, params) { - var self = this, e = $.Event(event); - if (params !== undefined) { - self.$element.trigger(e, params); - } else { - self.$element.trigger(e); - } - if (e.isDefaultPrevented() || e.result === false) { - return false; - } - switch (event) { - // ignore these events - case 'filebatchuploadcomplete': - case 'filebatchuploadsuccess': - case 'fileuploaded': - case 'fileclear': - case 'filecleared': - case 'filereset': - case 'fileerror': - case 'filefoldererror': - case 'fileuploaderror': - case 'filebatchuploaderror': - case 'filedeleteerror': - case 'filecustomerror': - case 'filesuccessremove': - break; - // receive data response via `filecustomerror` event` - default: - if (!self.ajaxAborted) { - self.ajaxAborted = e.result; - } - break; - } - return true; - }, - _listenFullScreen: function (isFullScreen) { - var self = this, $modal = self.$modal, $btnFull, $btnBord; - if (!$modal || !$modal.length) { - return; - } - $btnFull = $modal && $modal.find('.btn-fullscreen'); - $btnBord = $modal && $modal.find('.btn-borderless'); - if (!$btnFull.length || !$btnBord.length) { - return; - } - $btnFull.removeClass('active').attr('aria-pressed', 'false'); - $btnBord.removeClass('active').attr('aria-pressed', 'false'); - if (isFullScreen) { - $btnFull.addClass('active').attr('aria-pressed', 'true'); - } else { - $btnBord.addClass('active').attr('aria-pressed', 'true'); - } - if ($modal.hasClass('file-zoom-fullscreen')) { - self._maximizeZoomDialog(); - } else { - if (isFullScreen) { - self._maximizeZoomDialog(); - } else { - $btnBord.removeClass('active').attr('aria-pressed', 'false'); - } - } - }, - _listen: function () { - var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, fullScreenEv, $cap, fn; - self._handler($el, 'click', function (e) { - if ($el.hasClass('file-no-browse')) { - if ($el.data('zoneClicked')) { - $el.data('zoneClicked', false); - } else { - e.preventDefault(); - } - } - }); - self._handler($el, 'change', $.proxy(self._change, self)); - if (self.showBrowse) { - self._handler(self.$btnFile, 'click', $.proxy(self._browse, self)); - } - $cap = $cont.find('.file-caption-name'); - fn = function () { - return false; - }; - self._handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self)); - self._handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self)); - self._handler($cont.find('.fileinput-pause'), 'click', $.proxy(self.pause, self)); - self._handler($cap, 'keydown', fn); - self._handler($cap, 'paste', fn); - self._initDragDrop(); - self._handler($form, 'reset', $.proxy(self.clear, self)); - if (!self.isAjaxUpload) { - self._handler($form, 'submit', $.proxy(self._submitForm, self)); - } - self._handler(self.$container.find('.fileinput-upload'), 'click', $.proxy(self._uploadClick, self)); - self._handler($(window), 'resize', function () { - self._listenFullScreen(screen.width === window.innerWidth && screen.height === window.innerHeight); - }); - fullScreenEv = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange'; - self._handler($(document), fullScreenEv, function () { - self._listenFullScreen($h.checkFullScreen()); - }); - self._autoFitContent(); - self._initClickable(); - self._refreshPreview(); - }, - _autoFitContent: function () { - var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, - self = this, config = width < 400 ? (self.previewSettingsSmall || self.defaults.previewSettingsSmall) : - (self.previewSettings || self.defaults.previewSettings), sel; - $.each(config, function (cat, settings) { - sel = '.file-preview-frame .file-preview-' + cat; - self.$preview.find(sel + '.kv-preview-data,' + sel + ' .kv-preview-data').css(settings); - }); - }, - _scanDroppedItems: function (item, files, path) { - path = path || ''; - var self = this, i, dirReader, readDir, errorHandler = function (e) { - self._log($h.logMessages.badDroppedFiles); - self._log(e); - }; - if (item.isFile) { - item.file(function (file) { - if (path) { - file.newPath = path + file.name; - } - files.push(file); - }, errorHandler); - } else { - if (item.isDirectory) { - dirReader = item.createReader(); - readDir = function () { - dirReader.readEntries(function (entries) { - if (entries && entries.length > 0) { - for (i = 0; i < entries.length; i++) { - self._scanDroppedItems(entries[i], files, path + item.name + '/'); - } - // recursively call readDir() again, since browser can only handle first 100 entries. - readDir(); - } - return null; - }, errorHandler); - }; - readDir(); - } - } - - }, - _initDragDrop: function () { - var self = this, $zone = self.$dropZone; - if (self.dropZoneEnabled && self.showPreview) { - self._handler($zone, 'dragenter dragover', $.proxy(self._zoneDragEnter, self)); - self._handler($zone, 'dragleave', $.proxy(self._zoneDragLeave, self)); - self._handler($zone, 'drop', $.proxy(self._zoneDrop, self)); - self._handler($(document), 'dragenter dragover drop', self._zoneDragDropInit); - } - }, - _zoneDragDropInit: function (e) { - e.stopPropagation(); - e.preventDefault(); - }, - _zoneDragEnter: function (e) { - var self = this, dt = e.originalEvent.dataTransfer, hasFiles = $.inArray('Files', dt.types) > -1; - self._zoneDragDropInit(e); - if (self.isDisabled || !hasFiles) { - dt.effectAllowed = 'none'; - dt.dropEffect = 'none'; - return; - } - dt.dropEffect = 'copy'; - if (self._raise('fileDragEnter', {'sourceEvent': e, 'files': dt.types.Files})) { - $h.addCss(self.$dropZone, 'file-highlighted'); - } - }, - _zoneDragLeave: function (e) { - var self = this; - self._zoneDragDropInit(e); - if (self.isDisabled) { - return; - } - if (self._raise('fileDragLeave', {'sourceEvent': e})) { - self.$dropZone.removeClass('file-highlighted'); - } - - }, - _zoneDrop: function (e) { - /** @namespace e.originalEvent.dataTransfer */ - var self = this, i, $el = self.$element, dt = e.originalEvent.dataTransfer, - files = dt.files, items = dt.items, folders = $h.getDragDropFolders(items), - processFiles = function () { - if (!self.isAjaxUpload) { - self.changeTriggered = true; - $el.get(0).files = files; - setTimeout(function () { - self.changeTriggered = false; - $el.trigger('change' + self.namespace); - }, self.processDelay); - } else { - self._change(e, files); - } - self.$dropZone.removeClass('file-highlighted'); - }; - e.preventDefault(); - if (self.isDisabled || $h.isEmpty(files)) { - return; - } - if (!self._raise('fileDragDrop', {'sourceEvent': e, 'files': files})) { - return; - } - if (folders > 0) { - if (!self.isAjaxUpload) { - self._showFolderError(folders); - return; - } - files = []; - for (i = 0; i < items.length; i++) { - var item = items[i].webkitGetAsEntry(); - if (item) { - self._scanDroppedItems(item, files); - } - } - setTimeout(function () { - processFiles(); - }, 500); - } else { - processFiles(); - } - }, - _uploadClick: function (e) { - var self = this, $btn = self.$container.find('.fileinput-upload'), $form, - isEnabled = !$btn.hasClass('disabled') && $h.isEmpty($btn.attr('disabled')); - if (e && e.isDefaultPrevented()) { - return; - } - if (!self.isAjaxUpload) { - if (isEnabled && $btn.attr('type') !== 'submit') { - $form = $btn.closest('form'); - // downgrade to normal form submit if possible - if ($form.length) { - $form.trigger('submit'); - } - e.preventDefault(); - } - return; - } - e.preventDefault(); - if (isEnabled) { - self.upload(); - } - }, - _submitForm: function () { - var self = this; - return self._isFileSelectionValid() && !self._abort({}); - }, - _clearPreview: function () { - var self = this, - $thumbs = self.showUploadedThumbs ? self.getFrames(':not(.file-preview-success)') : self.getFrames(); - $thumbs.each(function () { - var $thumb = $(this); - $thumb.remove(); - }); - if (!self.getFrames().length || !self.showPreview) { - self._resetUpload(); - } - self._validateDefaultPreview(); - }, - _initSortable: function () { - var self = this, $el = self.$preview, settings, selector = '.' + $h.SORT_CSS, $cont, $body = $('body'), - $html = $('html'), rev = self.reversePreviewOrder, Sortable = window.Sortable, beginGrab, endGrab; - if (!Sortable || $el.find(selector).length === 0) { - return; - } - $cont = $body.length ? $body : ($html.length ? $html : self.$container); - beginGrab = function () { - $cont.addClass('file-grabbing'); - }; - endGrab = function () { - $cont.removeClass('file-grabbing'); - }; - settings = { - handle: '.drag-handle-init', - dataIdAttr: 'data-fileid', - animation: 600, - draggable: selector, - scroll: false, - forceFallback: true, - onChoose: beginGrab, - onStart: beginGrab, - onUnchoose: endGrab, - onEnd: endGrab, - onSort: function (e) { - var oldIndex = e.oldIndex, newIndex = e.newIndex, i = 0, len = self.initialPreviewConfig.length, - exceedsLast = len > 0 && newIndex >= len, $item = $(e.item), $first; - if (exceedsLast) { - newIndex = len - 1; - } - self.initialPreview = $h.moveArray(self.initialPreview, oldIndex, newIndex, rev); - self.initialPreviewConfig = $h.moveArray(self.initialPreviewConfig, oldIndex, newIndex, rev); - self.previewCache.init(); - self.getFrames('.file-preview-initial').each(function () { - $(this).attr('data-fileindex', $h.INIT_FLAG + i); - i++; - }); - if (exceedsLast) { - $first = self.getFrames(':not(.file-preview-initial):first'); - if ($first.length) { - $item.slideUp(function () { - $item.insertBefore($first).slideDown(); - }); - } - } - self._raise('filesorted', { - previewId: $item.attr('id'), - 'oldIndex': oldIndex, - 'newIndex': newIndex, - stack: self.initialPreviewConfig - }); - }, - }; - $.extend(true, settings, self.fileActionSettings.dragSettings); - if (self.sortable) { - self.sortable.destroy(); - } - self.sortable = Sortable.create($el[0], settings); - }, - _setPreviewContent: function (content) { - var self = this; - $h.setHtml(self.$preview, content); - self._autoFitContent(); - }, - _initPreviewImageOrientations: function () { - var self = this, i = 0, canOrientImage = self.canOrientImage; - if (!self.autoOrientImageInitial && !canOrientImage) { - return; - } - self.getFrames('.file-preview-initial').each(function () { - var $thumb = $(this), $img, $zoomImg, id, config = self.initialPreviewConfig[i]; - /** @namespace config.exif */ - if (config && config.exif && config.exif.Orientation) { - id = $thumb.attr('id'); - $img = $thumb.find('>.kv-file-content img'); - $zoomImg = self._getZoom(id, ' >.kv-file-content img'); - if (canOrientImage) { - $img.css('image-orientation', (self.autoOrientImageInitial ? 'from-image' : 'none')); - } else { - self.setImageOrientation($img, $zoomImg, config.exif.Orientation, $thumb); - } - } - i++; - }); - }, - _initPreview: function (isInit) { - var self = this, cap = self.initialCaption || '', out; - if (!self.previewCache.count(true)) { - self._clearPreview(); - if (isInit) { - self._setCaption(cap); - } else { - self._initCaption(); - } - return; - } - out = self.previewCache.out(); - cap = isInit && self.initialCaption ? self.initialCaption : out.caption; - self._setPreviewContent(out.content); - self._setInitThumbAttr(); - self._setCaption(cap); - self._initSortable(); - if (!$h.isEmpty(out.content)) { - self.$container.removeClass('file-input-new'); - } - self._initPreviewImageOrientations(); - }, - _getZoomButton: function (type) { - var self = this, label = self.previewZoomButtonIcons[type], css = self.previewZoomButtonClasses[type], - title = ' title="' + (self.previewZoomButtonTitles[type] || '') + '" ', - params = title + (type === 'close' ? ' data-dismiss="modal" aria-hidden="true"' : ''); - if (type === 'fullscreen' || type === 'borderless' || type === 'toggleheader') { - params += ' data-toggle="button" aria-pressed="false" autocomplete="off"'; - } - return ''; - }, - _getModalContent: function () { - var self = this; - return self._getLayoutTemplate('modal').setTokens({ - 'rtl': self.rtl ? ' kv-rtl' : '', - 'zoomFrameClass': self.frameClass, - 'heading': self.msgZoomModalHeading, - 'prev': self._getZoomButton('prev'), - 'next': self._getZoomButton('next'), - 'toggleheader': self._getZoomButton('toggleheader'), - 'fullscreen': self._getZoomButton('fullscreen'), - 'borderless': self._getZoomButton('borderless'), - 'close': self._getZoomButton('close') - }); - }, - _listenModalEvent: function (event) { - var self = this, $modal = self.$modal, getParams = function (e) { - return { - sourceEvent: e, - previewId: $modal.data('previewId'), - modal: $modal - }; - }; - $modal.on(event + '.bs.modal', function (e) { - var $btnFull = $modal.find('.btn-fullscreen'), $btnBord = $modal.find('.btn-borderless'); - if ($modal.data('fileinputPluginId') === self.$element.attr('id')) { - self._raise('filezoom' + event, getParams(e)); - } - if (event === 'shown') { - $btnBord.removeClass('active').attr('aria-pressed', 'false'); - $btnFull.removeClass('active').attr('aria-pressed', 'false'); - if ($modal.hasClass('file-zoom-fullscreen')) { - self._maximizeZoomDialog(); - if ($h.checkFullScreen()) { - $btnFull.addClass('active').attr('aria-pressed', 'true'); - } else { - $btnBord.addClass('active').attr('aria-pressed', 'true'); - } - } - } - }); - }, - _initZoom: function () { - var self = this, $dialog, modalMain = self._getLayoutTemplate('modalMain'), modalId = '#' + $h.MODAL_ID; - if (!self.showPreview) { - return; - } - self.$modal = $(modalId); - if (!self.$modal || !self.$modal.length) { - $dialog = $h.createElement($h.cspBuffer.stash(modalMain)).insertAfter(self.$container); - self.$modal = $(modalId).insertBefore($dialog); - $h.cspBuffer.apply(self.$modal); - $dialog.remove(); - } - $h.initModal(self.$modal); - self.$modal.html($h.cspBuffer.stash(self._getModalContent())); - $h.cspBuffer.apply(self.$modal); - $.each($h.MODAL_EVENTS, function (key, event) { - self._listenModalEvent(event); - }); - }, - _initZoomButtons: function () { - var self = this, previewId = self.$modal.data('previewId') || '', $first, $last, - thumbs = self.getFrames().toArray(), len = thumbs.length, $prev = self.$modal.find('.btn-prev'), - $next = self.$modal.find('.btn-next'); - if (thumbs.length < 2) { - $prev.hide(); - $next.hide(); - return; - } else { - $prev.show(); - $next.show(); - } - if (!len) { - return; - } - $first = $(thumbs[0]); - $last = $(thumbs[len - 1]); - $prev.removeAttr('disabled'); - $next.removeAttr('disabled'); - if ($first.length && $first.attr('id') === previewId) { - $prev.attr('disabled', true); - } - if ($last.length && $last.attr('id') === previewId) { - $next.attr('disabled', true); - } - }, - _maximizeZoomDialog: function () { - var self = this, $modal = self.$modal, $head = $modal.find('.modal-header:visible'), - $foot = $modal.find('.modal-footer:visible'), $body = $modal.find('.modal-body'), - h = $(window).height(), diff = 0; - $modal.addClass('file-zoom-fullscreen'); - if ($head && $head.length) { - h -= $head.outerHeight(true); - } - if ($foot && $foot.length) { - h -= $foot.outerHeight(true); - } - if ($body && $body.length) { - diff = $body.outerHeight(true) - $body.height(); - h -= diff; - } - $modal.find('.kv-zoom-body').height(h); - }, - _resizeZoomDialog: function (fullScreen) { - var self = this, $modal = self.$modal, $btnFull = $modal.find('.btn-fullscreen'), - $btnBord = $modal.find('.btn-borderless'); - if ($modal.hasClass('file-zoom-fullscreen')) { - $h.toggleFullScreen(false); - if (!fullScreen) { - if (!$btnFull.hasClass('active')) { - $modal.removeClass('file-zoom-fullscreen'); - self.$modal.find('.kv-zoom-body').css('height', self.zoomModalHeight); - } else { - $btnFull.removeClass('active').attr('aria-pressed', 'false'); - } - } else { - if (!$btnFull.hasClass('active')) { - $modal.removeClass('file-zoom-fullscreen'); - self._resizeZoomDialog(true); - if ($btnBord.hasClass('active')) { - $btnBord.removeClass('active').attr('aria-pressed', 'false'); - } - } - } - } else { - if (!fullScreen) { - self._maximizeZoomDialog(); - return; - } - $h.toggleFullScreen(true); - } - $modal.focus(); - }, - _setZoomContent: function ($frame, animate) { - var self = this, $content, tmplt, body, title, $body, $dataEl, config, previewId = $frame.attr('id'), - $zoomPreview = self._getZoom(previewId), $modal = self.$modal, $tmp, - $btnFull = $modal.find('.btn-fullscreen'), $btnBord = $modal.find('.btn-borderless'), cap, size, - $btnTogh = $modal.find('.btn-toggleheader'); - tmplt = $zoomPreview.attr('data-template') || 'generic'; - $content = $zoomPreview.find('.kv-file-content'); - body = $content.length ? $content.html() : ''; - cap = $frame.data('caption') || ''; - size = $frame.data('size') || ''; - title = cap + ' ' + size; - $modal.find('.kv-zoom-title').attr('title', $('
    ').html(title).text()).html(title); - $body = $modal.find('.kv-zoom-body'); - $modal.removeClass('kv-single-content'); - if (animate) { - $tmp = $body.addClass('file-thumb-loading').clone().insertAfter($body); - $h.setHtml($body, body).hide(); - $tmp.fadeOut('fast', function () { - $body.fadeIn('fast', function () { - $body.removeClass('file-thumb-loading'); - }); - $tmp.remove(); - }); - } else { - $h.setHtml($body, body); - } - config = self.previewZoomSettings[tmplt]; - if (config) { - $dataEl = $body.find('.kv-preview-data'); - $h.addCss($dataEl, 'file-zoom-detail'); - $.each(config, function (key, value) { - $dataEl.css(key, value); - if (($dataEl.attr('width') && key === 'width') || ($dataEl.attr('height') && key === 'height')) { - $dataEl.removeAttr(key); - } - }); - } - $modal.data('previewId', previewId); - self._handler($modal.find('.btn-prev'), 'click', function () { - self._zoomSlideShow('prev', previewId); - }); - self._handler($modal.find('.btn-next'), 'click', function () { - self._zoomSlideShow('next', previewId); - }); - self._handler($btnFull, 'click', function () { - self._resizeZoomDialog(true); - }); - self._handler($btnBord, 'click', function () { - self._resizeZoomDialog(false); - }); - self._handler($btnTogh, 'click', function () { - var $header = $modal.find('.modal-header'), $floatBar = $modal.find('.modal-body .floating-buttons'), - ht, $actions = $header.find('.kv-zoom-actions'), resize = function (height) { - var $body = self.$modal.find('.kv-zoom-body'), h = self.zoomModalHeight; - if ($modal.hasClass('file-zoom-fullscreen')) { - h = $body.outerHeight(true); - if (!height) { - h = h - $header.outerHeight(true); - } - } - $body.css('height', height ? h + height : h); - }; - if ($header.is(':visible')) { - ht = $header.outerHeight(true); - $header.slideUp('slow', function () { - $actions.find('.btn').appendTo($floatBar); - resize(ht); - }); - } else { - $floatBar.find('.btn').appendTo($actions); - $header.slideDown('slow', function () { - resize(); - }); - } - $modal.focus(); - }); - self._handler($modal, 'keydown', function (e) { - var key = e.which || e.keyCode, $prev = $(this).find('.btn-prev'), $next = $(this).find('.btn-next'), - vId = $(this).data('previewId'), vPrevKey = self.rtl ? 39 : 37, vNextKey = self.rtl ? 37 : 39; - if (key === vPrevKey && $prev.length && !$prev.attr('disabled')) { - self._zoomSlideShow('prev', vId); - } - if (key === vNextKey && $next.length && !$next.attr('disabled')) { - self._zoomSlideShow('next', vId); - } - }); - }, - _showModal: function ($frame) { - var self = this, $modal = self.$modal; - if (!$frame || !$frame.length) { - return; - } - $h.initModal($modal); - $h.setHtml($modal, self._getModalContent()); - self._setZoomContent($frame); - $modal.data('fileinputPluginId', self.$element.attr('id')); - $modal.modal('show'); - self._initZoomButtons(); - }, - _zoomPreview: function ($btn) { - var self = this, $frame; - if (!$btn.length) { - throw 'Cannot zoom to detailed preview!'; - } - $frame = $btn.closest($h.FRAMES); - self._showModal($frame); - }, - _zoomSlideShow: function (dir, previewId) { - var self = this, $btn = self.$modal.find('.kv-zoom-actions .btn-' + dir), $targFrame, i, $thumb, - thumbsData = self.getFrames().toArray(), thumbs = [], len = thumbsData.length, out; - if ($btn.attr('disabled')) { - return; - } - for (i = 0; i < len; i++) { - $thumb = $(thumbsData[i]); - if ($thumb && $thumb.length && $thumb.find('.kv-file-zoom:visible').length) { - thumbs.push(thumbsData[i]); - } - } - len = thumbs.length; - for (i = 0; i < len; i++) { - if ($(thumbs[i]).attr('id') === previewId) { - out = dir === 'prev' ? i - 1 : i + 1; - break; - } - } - if (out < 0 || out >= len || !thumbs[out]) { - return; - } - $targFrame = $(thumbs[out]); - if ($targFrame.length) { - self._setZoomContent($targFrame, true); - } - self._initZoomButtons(); - self._raise('filezoom' + dir, {'previewId': previewId, modal: self.$modal}); - }, - _initZoomButton: function () { - var self = this; - self.$preview.find('.kv-file-zoom').each(function () { - var $el = $(this); - self._handler($el, 'click', function () { - self._zoomPreview($el); - }); - }); - }, - _inputFileCount: function () { - return this.$element[0].files.length; - }, - _refreshPreview: function () { - var self = this, files; - if ((!self._inputFileCount() && !self.isAjaxUpload) || !self.showPreview || !self.isPreviewable) { - return; - } - if (self.isAjaxUpload) { - if (self.fileManager.count() > 0) { - files = $.extend(true, {}, self.fileManager.stack); - self.fileManager.clear(); - self._clearFileInput(); - } else { - files = self.$element[0].files; - } - } else { - files = self.$element[0].files; - } - if (files && files.length) { - self.readFiles(files); - self._setFileDropZoneTitle(); - } - }, - _clearObjects: function ($el) { - $el.find('video audio').each(function () { - this.pause(); - $(this).remove(); - }); - $el.find('img object div').each(function () { - $(this).remove(); - }); - }, - _clearFileInput: function () { - var self = this, $el = self.$element, $srcFrm, $tmpFrm, $tmpEl; - if (!self._inputFileCount()) { - return; - } - $srcFrm = $el.closest('form'); - $tmpFrm = $(document.createElement('form')); - $tmpEl = $(document.createElement('div')); - $el.before($tmpEl); - if ($srcFrm.length) { - $srcFrm.after($tmpFrm); - } else { - $tmpEl.after($tmpFrm); - } - $tmpFrm.append($el).trigger('reset'); - $tmpEl.before($el).remove(); - $tmpFrm.remove(); - }, - _resetUpload: function () { - var self = this; - self.uploadStartTime = $h.now(); - self.uploadCache = []; - self.$btnUpload.removeAttr('disabled'); - self._setProgress(0); - self._hideProgress(); - self._resetErrors(false); - self._initAjax(); - self.fileManager.clearImages(); - self._resetCanvas(); - if (self.overwriteInitial) { - self.initialPreview = []; - self.initialPreviewConfig = []; - self.initialPreviewThumbTags = []; - self.previewCache.data = { - content: [], - config: [], - tags: [] - }; - } - }, - _resetCanvas: function () { - var self = this; - if (self.canvas && self.imageCanvasContext) { - self.imageCanvasContext.clearRect(0, 0, self.canvas.width, self.canvas.height); - } - }, - _hasInitialPreview: function () { - var self = this; - return !self.overwriteInitial && self.previewCache.count(true); - }, - _resetPreview: function () { - var self = this, out, cap, $div, hasSuc = self.showUploadedThumbs, hasErr = !self.removeFromPreviewOnError, - includeProcessed = (hasSuc || hasErr) && self.isDuplicateError; - if (self.previewCache.count(true)) { - out = self.previewCache.out(); - if (includeProcessed) { - $div = $h.createElement('').insertAfter(self.$container); - self.getFrames().each(function () { - var $thumb = $(this); - if ((hasSuc && $thumb.hasClass('file-preview-success')) || - (hasErr && $thumb.hasClass('file-preview-error'))) { - $div.append($thumb); - } - }); - } - self._setPreviewContent(out.content); - self._setInitThumbAttr(); - cap = self.initialCaption ? self.initialCaption : out.caption; - self._setCaption(cap); - if (includeProcessed) { - $div.contents().appendTo(self.$preview); - $div.remove(); - } - } else { - self._clearPreview(); - self._initCaption(); - } - if (self.showPreview) { - self._initZoom(); - self._initSortable(); - } - self.isDuplicateError = false; - }, - _clearDefaultPreview: function () { - var self = this; - self.$preview.find('.file-default-preview').remove(); - }, - _validateDefaultPreview: function () { - var self = this; - if (!self.showPreview || $h.isEmpty(self.defaultPreviewContent)) { - return; - } - self._setPreviewContent('
    ' + self.defaultPreviewContent + '
    '); - self.$container.removeClass('file-input-new'); - self._initClickable(); - }, - _resetPreviewThumbs: function (isAjax) { - var self = this, out; - if (isAjax) { - self._clearPreview(); - self.clearFileStack(); - return; - } - if (self._hasInitialPreview()) { - out = self.previewCache.out(); - self._setPreviewContent(out.content); - self._setInitThumbAttr(); - self._setCaption(out.caption); - self._initPreviewActions(); - } else { - self._clearPreview(); - } - }, - _getLayoutTemplate: function (t) { - var self = this, template = self.layoutTemplates[t]; - if ($h.isEmpty(self.customLayoutTags)) { - return template; - } - return $h.replaceTags(template, self.customLayoutTags); - }, - _getPreviewTemplate: function (t) { - var self = this, templates = self.previewTemplates, template = templates[t] || templates.other; - if ($h.isEmpty(self.customPreviewTags)) { - return template; - } - return $h.replaceTags(template, self.customPreviewTags); - }, - _getOutData: function (formdata, jqXHR, responseData, filesData) { - var self = this; - jqXHR = jqXHR || {}; - responseData = responseData || {}; - filesData = filesData || self.fileManager.list(); - return { - formdata: formdata, - files: filesData, - filenames: self.filenames, - filescount: self.getFilesCount(), - extra: self._getExtraData(), - response: responseData, - reader: self.reader, - jqXHR: jqXHR - }; - }, - _getMsgSelected: function (n) { - var self = this, strFiles = n === 1 ? self.fileSingle : self.filePlural; - return n > 0 ? self.msgSelected.replace('{n}', n).replace('{files}', strFiles) : self.msgNoFilesSelected; - }, - _getFrame: function (id, skipWarning) { - var self = this, $frame = $h.getFrameElement(self.$preview, id); - if (self.showPreview && !skipWarning && !$frame.length) { - self._log($h.logMessages.invalidThumb, {id: id}); - } - return $frame; - }, - _getZoom: function (id, selector) { - var self = this, $frame = $h.getZoomElement(self.$preview, id, selector); - if (self.showPreview && !$frame.length) { - self._log($h.logMessages.invalidThumb, {id: id}); - } - return $frame; - }, - _getThumbs: function (css) { - css = css || ''; - return this.getFrames(':not(.file-preview-initial)' + css); - }, - _getThumbId: function (fileId) { - var self = this; - return self.previewInitId + '-' + fileId; - }, - _getExtraData: function (fileId, index) { - var self = this, data = self.uploadExtraData; - if (typeof self.uploadExtraData === 'function') { - data = self.uploadExtraData(fileId, index); - } - return data; - }, - _initXhr: function (xhrobj, fileId) { - var self = this, fm = self.fileManager, func = function (event) { - var pct = 0, total = event.total, loaded = event.loaded || event.position, - stats = fm.getUploadStats(fileId, loaded, total); - /** @namespace event.lengthComputable */ - if (event.lengthComputable && !self.enableResumableUpload) { - pct = $h.round(loaded / total * 100); - } - if (fileId) { - self._setFileUploadStats(fileId, pct, stats); - } else { - self._setProgress(pct, null, null, self._getStats(stats)); - } - self._raise('fileajaxprogress', [stats]); - }; - if (xhrobj.upload) { - if (self.progressDelay) { - func = $h.debounce(func, self.progressDelay); - } - xhrobj.upload.addEventListener('progress', func, false); - } - return xhrobj; - }, - _initAjaxSettings: function () { - var self = this; - self._ajaxSettings = $.extend(true, {}, self.ajaxSettings); - self._ajaxDeleteSettings = $.extend(true, {}, self.ajaxDeleteSettings); - }, - _mergeAjaxCallback: function (funcName, srcFunc, type) { - var self = this, settings = self._ajaxSettings, flag = self.mergeAjaxCallbacks, targFunc; - if (type === 'delete') { - settings = self._ajaxDeleteSettings; - flag = self.mergeAjaxDeleteCallbacks; - } - targFunc = settings[funcName]; - if (flag && typeof targFunc === 'function') { - if (flag === 'before') { - settings[funcName] = function () { - targFunc.apply(this, arguments); - srcFunc.apply(this, arguments); - }; - } else { - settings[funcName] = function () { - srcFunc.apply(this, arguments); - targFunc.apply(this, arguments); - }; - } - } else { - settings[funcName] = srcFunc; - } - }, - _ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError, formdata, fileId, index, vUrl) { - var self = this, settings, defaults, data, ajaxTask; - if (!self._raise('filepreajax', [formdata, fileId, index])) { - return; - } - formdata.append('initialPreview', JSON.stringify(self.initialPreview)); - formdata.append('initialPreviewConfig', JSON.stringify(self.initialPreviewConfig)); - formdata.append('initialPreviewThumbTags', JSON.stringify(self.initialPreviewThumbTags)); - self._initAjaxSettings(); - self._mergeAjaxCallback('beforeSend', fnBefore); - self._mergeAjaxCallback('success', fnSuccess); - self._mergeAjaxCallback('complete', fnComplete); - self._mergeAjaxCallback('error', fnError); - vUrl = vUrl || self.uploadUrlThumb || self.uploadUrl; - if (typeof vUrl === 'function') { - vUrl = vUrl(); - } - data = self._getExtraData(fileId, index) || {}; - if (typeof data === 'object') { - $.each(data, function (key, value) { - formdata.append(key, value); - }); - } - defaults = { - xhr: function () { - var xhrobj = $.ajaxSettings.xhr(); - return self._initXhr(xhrobj, fileId); - }, - url: self._encodeURI(vUrl), - type: 'POST', - dataType: 'json', - data: formdata, - cache: false, - processData: false, - contentType: false - }; - settings = $.extend(true, {}, defaults, self._ajaxSettings); - ajaxTask = self.taskManager.addTask(fileId + '-' + index, function () { - var self = this.self, config, xhr; - config = self.ajaxQueue.shift(); - xhr = $.ajax(config); - self.ajaxRequests.push(xhr); - }); - self.ajaxQueue.push(settings); - ajaxTask.runWithContext({self: self}); - }, - _mergeArray: function (prop, content) { - var self = this, arr1 = $h.cleanArray(self[prop]), arr2 = $h.cleanArray(content); - self[prop] = arr1.concat(arr2); - }, - _initUploadSuccess: function (out, $thumb, allFiles) { - var self = this, append, data, index, $div, $newCache, content, config, tags, id, i; - if (!self.showPreview || typeof out !== 'object' || $.isEmptyObject(out)) { - self._resetCaption(); - return; - } - if (out.initialPreview !== undefined && out.initialPreview.length > 0) { - self.hasInitData = true; - content = out.initialPreview || []; - config = out.initialPreviewConfig || []; - tags = out.initialPreviewThumbTags || []; - append = out.append === undefined || out.append; - if (content.length > 0 && !$h.isArray(content)) { - content = content.split(self.initialPreviewDelimiter); - } - if (content.length) { - self._mergeArray('initialPreview', content); - self._mergeArray('initialPreviewConfig', config); - self._mergeArray('initialPreviewThumbTags', tags); - } - if ($thumb !== undefined) { - if (!allFiles) { - index = self.previewCache.add(content[0], config[0], tags[0], append); - data = self.previewCache.get(index, false); - $div = $h.createElement(data).hide().appendTo($thumb); - $newCache = $div.find('.kv-zoom-cache'); - if ($newCache && $newCache.length) { - $newCache.appendTo($thumb); - } - $thumb.fadeOut('slow', function () { - var $newThumb = $div.find('.file-preview-frame'); - if ($newThumb && $newThumb.length) { - $newThumb.insertBefore($thumb).fadeIn('slow').css('display:inline-block'); - } - self._initPreviewActions(); - self._clearFileInput(); - $thumb.remove(); - $div.remove(); - self._initSortable(); - }); - } else { - id = $thumb.attr('id'); - i = self._getUploadCacheIndex(id); - if (i !== null) { - self.uploadCache[i] = { - id: id, - content: content[0], - config: config[0] || [], - tags: tags[0] || [], - append: append - }; - } - } - } else { - self.previewCache.set(content, config, tags, append); - self._initPreview(); - self._initPreviewActions(); - } - } - self._resetCaption(); - }, - _getUploadCacheIndex: function (id) { - var self = this, i, len = self.uploadCache.length, config; - for (i = 0; i < len; i++) { - config = self.uploadCache[i]; - if (config.id === id) { - return i; - } - } - return null; - }, - _initSuccessThumbs: function () { - var self = this; - if (!self.showPreview) { - return; - } - self._getThumbs($h.FRAMES + '.file-preview-success').each(function () { - var $thumb = $(this), $remove = $thumb.find('.kv-file-remove'); - $remove.removeAttr('disabled'); - self._handler($remove, 'click', function () { - var id = $thumb.attr('id'), - out = self._raise('filesuccessremove', [id, $thumb.attr('data-fileindex')]); - $h.cleanMemory($thumb); - if (out === false) { - return; - } - $thumb.fadeOut('slow', function () { - $thumb.remove(); - if (!self.getFrames().length) { - self.reset(); - } - }); - }); - }); - }, - _updateInitialPreview: function () { - var self = this, u = self.uploadCache; - if (self.showPreview) { - $.each(u, function (key, setting) { - self.previewCache.add(setting.content, setting.config, setting.tags, setting.append); - }); - if (self.hasInitData) { - self._initPreview(); - self._initPreviewActions(); - } - } - }, - _uploadSingle: function (i, id, isBatch) { - var self = this, fm = self.fileManager, count = fm.count(), formdata = new FormData(), outData, - previewId = self._getThumbId(id), $thumb, chkComplete, $btnUpload, $btnDelete, - hasPostData = count > 0 || !$.isEmptyObject(self.uploadExtraData), uploadFailed, $prog, fnBefore, - errMsg, fnSuccess, fnComplete, fnError, updateUploadLog, op = self.ajaxOperations.uploadThumb, - fileObj = fm.getFile(id), params = {id: previewId, index: i, fileId: id}, - fileName = self.fileManager.getFileName(id, true); - if (self.enableResumableUpload) { // not enabled for resumable uploads - return; - } - if (self.showPreview) { - $thumb = self.fileManager.getThumb(id); - $prog = $thumb.find('.file-thumb-progress'); - $btnUpload = $thumb.find('.kv-file-upload'); - $btnDelete = $thumb.find('.kv-file-remove'); - $prog.show(); - } - if (count === 0 || !hasPostData || (self.showPreview && $btnUpload && $btnUpload.hasClass('disabled')) || - self._abort(params)) { - return; - } - updateUploadLog = function () { - if (!uploadFailed) { - fm.removeFile(id); - } else { - fm.errors.push(id); - } - fm.setProcessed(id); - if (fm.isProcessed()) { - self.fileBatchCompleted = true; - chkComplete(); - } - }; - chkComplete = function () { - var $initThumbs; - if (!self.fileBatchCompleted) { - return; - } - setTimeout(function () { - var triggerReset = fm.count() === 0, errCount = fm.errors.length; - self._updateInitialPreview(); - self.unlock(triggerReset); - if (triggerReset) { - self._clearFileInput(); - } - $initThumbs = self.$preview.find('.file-preview-initial'); - if (self.uploadAsync && $initThumbs.length) { - $h.addCss($initThumbs, $h.SORT_CSS); - self._initSortable(); - } - self._raise('filebatchuploadcomplete', [fm.stack, self._getExtraData()]); - if (!self.retryErrorUploads || errCount === 0) { - fm.clear(); - } - self._setProgress(101); - self.ajaxAborted = false; - }, self.processDelay); - }; - fnBefore = function (jqXHR) { - outData = self._getOutData(formdata, jqXHR); - fm.initStats(id); - self.fileBatchCompleted = false; - if (!isBatch) { - self.ajaxAborted = false; - } - if (self.showPreview) { - if (!$thumb.hasClass('file-preview-success')) { - self._setThumbStatus($thumb, 'Loading'); - $h.addCss($thumb, 'file-uploading'); - } - $btnUpload.attr('disabled', true); - $btnDelete.attr('disabled', true); - } - if (!isBatch) { - self.lock(); - } - if (fm.errors.indexOf(id) !== -1) { - delete fm.errors[id]; - } - self._raise('filepreupload', [outData, previewId, i]); - $.extend(true, params, outData); - if (self._abort(params)) { - jqXHR.abort(); - if (!isBatch) { - self._setThumbStatus($thumb, 'New'); - $thumb.removeClass('file-uploading'); - $btnUpload.removeAttr('disabled'); - $btnDelete.removeAttr('disabled'); - self.unlock(); - } - self._setProgressCancelled(); - } - }; - fnSuccess = function (data, textStatus, jqXHR) { - var pid = self.showPreview && $thumb.attr('id') ? $thumb.attr('id') : previewId; - outData = self._getOutData(formdata, jqXHR, data); - $.extend(true, params, outData); - setTimeout(function () { - if ($h.isEmpty(data) || $h.isEmpty(data.error)) { - if (self.showPreview) { - self._setThumbStatus($thumb, 'Success'); - $btnUpload.hide(); - self._initUploadSuccess(data, $thumb, isBatch); - self._setProgress(101, $prog); - } - self._raise('fileuploaded', [outData, pid, i]); - if (!isBatch) { - self.fileManager.remove($thumb); - } else { - updateUploadLog(); - } - } else { - uploadFailed = true; - errMsg = self._parseError(op, jqXHR, self.msgUploadError, self.fileManager.getFileName(id)); - self._showFileError(errMsg, params); - self._setPreviewError($thumb, true); - if (!self.retryErrorUploads) { - $btnUpload.hide(); - } - if (isBatch) { - updateUploadLog(); - } - self._setProgress(101, self._getFrame(pid).find('.file-thumb-progress'), - self.msgUploadError); - } - }, self.processDelay); - }; - fnComplete = function () { - if (self.showPreview) { - $btnUpload.removeAttr('disabled'); - $btnDelete.removeAttr('disabled'); - $thumb.removeClass('file-uploading'); - } - if (!isBatch) { - self.unlock(false); - self._clearFileInput(); - } else { - chkComplete(); - } - self._initSuccessThumbs(); - }; - fnError = function (jqXHR, textStatus, errorThrown) { - errMsg = self._parseError(op, jqXHR, errorThrown, self.fileManager.getFileName(id)); - uploadFailed = true; - setTimeout(function () { - var $prog; - if (isBatch) { - updateUploadLog(); - } - self.fileManager.setProgress(id, 100); - self._setPreviewError($thumb, true); - if (!self.retryErrorUploads) { - $btnUpload.hide(); - } - $.extend(true, params, self._getOutData(formdata, jqXHR)); - self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op)); - $prog = self.showPreview && $thumb ? $thumb.find('.file-thumb-progress') : ''; - self._setProgress(101, $prog, self.msgUploadError); - self._showFileError(errMsg, params); - }, self.processDelay); - }; - self._setFileData(formdata, fileObj.file, fileName, id); - self._setUploadData(formdata, {fileId: id}); - self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata, id, i); - }, - _setFileData: function (formdata, file, fileName, fileId) { - var self = this, preProcess = self.preProcessUpload; - if (preProcess && typeof preProcess === 'function') { - formdata.append(self.uploadFileAttr, preProcess(fileId, file)); - } else { - formdata.append(self.uploadFileAttr, file, fileName); - } - }, - _uploadBatch: function () { - var self = this, fm = self.fileManager, total = fm.total(), params = {}, fnBefore, fnSuccess, fnError, - fnComplete, hasPostData = total > 0 || !$.isEmptyObject(self.uploadExtraData), errMsg, - setAllUploaded, formdata = new FormData(), op = self.ajaxOperations.uploadBatch; - if (total === 0 || !hasPostData || self._abort(params)) { - return; - } - setAllUploaded = function () { - self.fileManager.clear(); - self._clearFileInput(); - }; - fnBefore = function (jqXHR) { - self.lock(); - fm.initStats(); - var outData = self._getOutData(formdata, jqXHR); - self.ajaxAborted = false; - if (self.showPreview) { - self._getThumbs().each(function () { - var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'), - $btnDelete = $thumb.find('.kv-file-remove'); - if (!$thumb.hasClass('file-preview-success')) { - self._setThumbStatus($thumb, 'Loading'); - $h.addCss($thumb, 'file-uploading'); - } - $btnUpload.attr('disabled', true); - $btnDelete.attr('disabled', true); - }); - } - self._raise('filebatchpreupload', [outData]); - if (self._abort(outData)) { - jqXHR.abort(); - self._getThumbs().each(function () { - var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'), - $btnDelete = $thumb.find('.kv-file-remove'); - if ($thumb.hasClass('file-preview-loading')) { - self._setThumbStatus($thumb, 'New'); - $thumb.removeClass('file-uploading'); - } - $btnUpload.removeAttr('disabled'); - $btnDelete.removeAttr('disabled'); - }); - self._setProgressCancelled(); - } - }; - fnSuccess = function (data, textStatus, jqXHR) { - /** @namespace data.errorkeys */ - var outData = self._getOutData(formdata, jqXHR, data), key = 0, - $thumbs = self._getThumbs(':not(.file-preview-success)'), - keys = $h.isEmpty(data) || $h.isEmpty(data.errorkeys) ? [] : data.errorkeys; - - if ($h.isEmpty(data) || $h.isEmpty(data.error)) { - self._raise('filebatchuploadsuccess', [outData]); - setAllUploaded(); - if (self.showPreview) { - $thumbs.each(function () { - var $thumb = $(this); - self._setThumbStatus($thumb, 'Success'); - $thumb.removeClass('file-uploading'); - $thumb.find('.kv-file-upload').hide().removeAttr('disabled'); - }); - self._initUploadSuccess(data); - } else { - self.reset(); - } - self._setProgress(101); - } else { - if (self.showPreview) { - $thumbs.each(function () { - var $thumb = $(this); - $thumb.removeClass('file-uploading'); - $thumb.find('.kv-file-upload').removeAttr('disabled'); - $thumb.find('.kv-file-remove').removeAttr('disabled'); - if (keys.length === 0 || $.inArray(key, keys) !== -1) { - self._setPreviewError($thumb, true); - if (!self.retryErrorUploads) { - $thumb.find('.kv-file-upload').hide(); - self.fileManager.remove($thumb); - } - } else { - $thumb.find('.kv-file-upload').hide(); - self._setThumbStatus($thumb, 'Success'); - self.fileManager.remove($thumb); - } - if (!$thumb.hasClass('file-preview-error') || self.retryErrorUploads) { - key++; - } - }); - self._initUploadSuccess(data); - } - errMsg = self._parseError(op, jqXHR, self.msgUploadError); - self._showFileError(errMsg, outData, 'filebatchuploaderror'); - self._setProgress(101, self.$progress, self.msgUploadError); - } - }; - fnComplete = function () { - self.unlock(); - self._initSuccessThumbs(); - self._clearFileInput(); - self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]); - }; - fnError = function (jqXHR, textStatus, errorThrown) { - var outData = self._getOutData(formdata, jqXHR); - errMsg = self._parseError(op, jqXHR, errorThrown); - self._showFileError(errMsg, outData, 'filebatchuploaderror'); - self.uploadFileCount = total - 1; - if (!self.showPreview) { - return; - } - self._getThumbs().each(function () { - var $thumb = $(this); - $thumb.removeClass('file-uploading'); - if (self.fileManager.getFile($thumb.attr('data-fileid'))) { - self._setPreviewError($thumb); - } - }); - self._getThumbs().removeClass('file-uploading'); - self._getThumbs(' .kv-file-upload').removeAttr('disabled'); - self._getThumbs(' .kv-file-delete').removeAttr('disabled'); - self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op)); - }; - var ctr = 0; - $.each(self.fileManager.stack, function (key, data) { - if (!$h.isEmpty(data.file)) { - self._setFileData(formdata, data.file, (data.nameFmt || ('untitled_' + ctr)), key); - } - ctr++; - }); - self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata); - }, - _uploadExtraOnly: function () { - var self = this, params = {}, fnBefore, fnSuccess, fnComplete, fnError, formdata = new FormData(), errMsg, - op = self.ajaxOperations.uploadExtra; - if (self._abort(params)) { - return; - } - fnBefore = function (jqXHR) { - self.lock(); - var outData = self._getOutData(formdata, jqXHR); - self._raise('filebatchpreupload', [outData]); - self._setProgress(50); - params.data = outData; - params.xhr = jqXHR; - if (self._abort(params)) { - jqXHR.abort(); - self._setProgressCancelled(); - } - }; - fnSuccess = function (data, textStatus, jqXHR) { - var outData = self._getOutData(formdata, jqXHR, data); - if ($h.isEmpty(data) || $h.isEmpty(data.error)) { - self._raise('filebatchuploadsuccess', [outData]); - self._clearFileInput(); - self._initUploadSuccess(data); - self._setProgress(101); - } else { - errMsg = self._parseError(op, jqXHR, self.msgUploadError); - self._showFileError(errMsg, outData, 'filebatchuploaderror'); - } - }; - fnComplete = function () { - self.unlock(); - self._clearFileInput(); - self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]); - }; - fnError = function (jqXHR, textStatus, errorThrown) { - var outData = self._getOutData(formdata, jqXHR); - errMsg = self._parseError(op, jqXHR, errorThrown); - params.data = outData; - self._showFileError(errMsg, outData, 'filebatchuploaderror'); - self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op)); - }; - self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata); - }, - _deleteFileIndex: function ($frame) { - var self = this, ind = $frame.attr('data-fileindex'), rev = self.reversePreviewOrder; - if (ind.substring(0, 5) === $h.INIT_FLAG) { - ind = parseInt(ind.replace($h.INIT_FLAG, '')); - self.initialPreview = $h.spliceArray(self.initialPreview, ind, rev); - self.initialPreviewConfig = $h.spliceArray(self.initialPreviewConfig, ind, rev); - self.initialPreviewThumbTags = $h.spliceArray(self.initialPreviewThumbTags, ind, rev); - self.getFrames().each(function () { - var $nFrame = $(this), nInd = $nFrame.attr('data-fileindex'); - if (nInd.substring(0, 5) === $h.INIT_FLAG) { - nInd = parseInt(nInd.replace($h.INIT_FLAG, '')); - if (nInd > ind) { - nInd--; - $nFrame.attr('data-fileindex', $h.INIT_FLAG + nInd); - } - } - }); - } - }, - _resetCaption: function () { - var self = this; - setTimeout(function () { - var cap, n, chk = self.previewCache.count(true), len = self.fileManager.count(), file, - incomplete = ':not(.file-preview-success):not(.file-preview-error)', - hasThumb = self.showPreview && self.getFrames(incomplete).length; - if (len === 0 && chk === 0 && !hasThumb) { - self.reset(); - } else { - n = chk + len; - if (n > 1) { - cap = self._getMsgSelected(n); - } else { - file = self.fileManager.getFirstFile(); - cap = file ? file.nameFmt : '_'; - } - self._setCaption(cap); - } - }, self.processDelay); - }, - _initFileActions: function () { - var self = this; - if (!self.showPreview) { - return; - } - self._initZoomButton(); - self.getFrames(' .kv-file-remove').each(function () { - var $el = $(this), $frame = $el.closest($h.FRAMES), hasError, id = $frame.attr('id'), - ind = $frame.attr('data-fileindex'), status; - self._handler($el, 'click', function () { - status = self._raise('filepreremove', [id, ind]); - if (status === false || !self._validateMinCount()) { - return false; - } - hasError = $frame.hasClass('file-preview-error'); - $h.cleanMemory($frame); - $frame.fadeOut('slow', function () { - self.fileManager.remove($frame); - self._clearObjects($frame); - $frame.remove(); - if (id && hasError) { - self.$errorContainer.find('li[data-thumb-id="' + id + '"]').fadeOut('fast', function () { - $(this).remove(); - if (!self._errorsExist()) { - self._resetErrors(); - } - }); - } - self._clearFileInput(); - self._resetCaption(); - self._raise('fileremoved', [id, ind]); - }); - }); - }); - self.getFrames(' .kv-file-upload').each(function () { - var $el = $(this); - self._handler($el, 'click', function () { - var $frame = $el.closest($h.FRAMES), fileId = $frame.attr('data-fileid'); - self._hideProgress(); - if ($frame.hasClass('file-preview-error') && !self.retryErrorUploads) { - return; - } - self._uploadSingle(self.fileManager.getIndex(fileId), fileId, false); - }); - }); - }, - _initPreviewActions: function () { - var self = this, $preview = self.$preview, deleteExtraData = self.deleteExtraData || {}, - btnRemove = $h.FRAMES + ' .kv-file-remove', settings = self.fileActionSettings, - origClass = settings.removeClass, errClass = settings.removeErrorClass, - resetProgress = function () { - var hasFiles = self.isAjaxUpload ? self.previewCache.count(true) : self._inputFileCount(); - if (!self.getFrames().length && !hasFiles) { - self._setCaption(''); - self.reset(); - self.initialCaption = ''; - } - }; - self._initZoomButton(); - $preview.find(btnRemove).each(function () { - var $el = $(this), vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key'), errMsg, fnBefore, - fnSuccess, fnError, op = self.ajaxOperations.deleteThumb; - if ($h.isEmpty(vUrl) || vKey === undefined) { - return; - } - if (typeof vUrl === 'function') { - vUrl = vUrl(); - } - var $frame = $el.closest($h.FRAMES), cache = self.previewCache.data, settings, params, config, - fileName, extraData, index = $frame.attr('data-fileindex'); - index = parseInt(index.replace($h.INIT_FLAG, '')); - config = $h.isEmpty(cache.config) && $h.isEmpty(cache.config[index]) ? null : cache.config[index]; - extraData = $h.isEmpty(config) || $h.isEmpty(config.extra) ? deleteExtraData : config.extra; - fileName = config && (config.filename || config.caption) || ''; - if (typeof extraData === 'function') { - extraData = extraData(); - } - params = {id: $el.attr('id'), key: vKey, extra: extraData}; - fnBefore = function (jqXHR) { - self.ajaxAborted = false; - self._raise('filepredelete', [vKey, jqXHR, extraData]); - if (self._abort()) { - jqXHR.abort(); - } else { - $el.removeClass(errClass); - $h.addCss($frame, 'file-uploading'); - $h.addCss($el, 'disabled ' + origClass); - } - }; - fnSuccess = function (data, textStatus, jqXHR) { - var n, cap; - if (!$h.isEmpty(data) && !$h.isEmpty(data.error)) { - params.jqXHR = jqXHR; - params.response = data; - errMsg = self._parseError(op, jqXHR, self.msgDeleteError, fileName); - self._showFileError(errMsg, params, 'filedeleteerror'); - $frame.removeClass('file-uploading'); - $el.removeClass('disabled ' + origClass).addClass(errClass); - resetProgress(); - return; - } - $frame.removeClass('file-uploading').addClass('file-deleted'); - $frame.fadeOut('slow', function () { - index = parseInt(($frame.attr('data-fileindex')).replace($h.INIT_FLAG, '')); - self.previewCache.unset(index); - self._deleteFileIndex($frame); - n = self.previewCache.count(true); - cap = n > 0 ? self._getMsgSelected(n) : ''; - self._setCaption(cap); - self._raise('filedeleted', [vKey, jqXHR, extraData]); - self._clearObjects($frame); - $frame.remove(); - resetProgress(); - }); - }; - fnError = function (jqXHR, textStatus, errorThrown) { - var errMsg = self._parseError(op, jqXHR, errorThrown, fileName); - params.jqXHR = jqXHR; - params.response = {}; - self._showFileError(errMsg, params, 'filedeleteerror'); - $frame.removeClass('file-uploading'); - $el.removeClass('disabled ' + origClass).addClass(errClass); - resetProgress(); - }; - self._initAjaxSettings(); - self._mergeAjaxCallback('beforeSend', fnBefore, 'delete'); - self._mergeAjaxCallback('success', fnSuccess, 'delete'); - self._mergeAjaxCallback('error', fnError, 'delete'); - settings = $.extend(true, {}, { - url: self._encodeURI(vUrl), - type: 'POST', - dataType: 'json', - data: $.extend(true, {}, {key: vKey}, extraData) - }, self._ajaxDeleteSettings); - self._handler($el, 'click', function () { - if (!self._validateMinCount()) { - return false; - } - self.ajaxAborted = false; - self._raise('filebeforedelete', [vKey, extraData]); - if (self.ajaxAborted instanceof Promise) { - self.ajaxAborted.then(function (result) { - if (!result) { - $.ajax(settings); - } - }); - } else { - if (!self.ajaxAborted) { - $.ajax(settings); - } - } - }); - }); - }, - _hideFileIcon: function () { - var self = this; - if (self.overwriteInitial) { - self.$captionContainer.removeClass('icon-visible'); - } - }, - _showFileIcon: function () { - var self = this; - $h.addCss(self.$captionContainer, 'icon-visible'); - }, - _getSize: function (bytes, sizes) { - var self = this, size = parseFloat(bytes), i, func = self.fileSizeGetter, out; - if (!$.isNumeric(bytes) || !$.isNumeric(size)) { - return ''; - } - if (typeof func === 'function') { - out = func(size); - } else { - if (size === 0) { - out = '0.00 B'; - } else { - i = Math.floor(Math.log(size) / Math.log(1024)); - if (!sizes) { - sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; - } - out = (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + sizes[i]; - } - } - return self._getLayoutTemplate('size').replace('{sizeText}', out); - }, - _getFileType: function (ftype) { - var self = this; - return self.mimeTypeAliases[ftype] || ftype; - }, - _generatePreviewTemplate: function ( - cat, - data, - fname, - ftype, - previewId, - fileId, - isError, - size, - frameClass, - foot, - ind, - templ, - attrs, - zoomData - ) { - var self = this, caption = self.slug(fname), prevContent, zoomContent = '', styleAttribs = '', - screenW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, - config, title = caption, alt = caption, typeCss = 'type-default', getContent, - footer = foot || self._renderFileFooter(cat, caption, size, 'auto', isError), - forcePrevIcon = self.preferIconicPreview, forceZoomIcon = self.preferIconicZoomPreview, - newCat = forcePrevIcon ? 'other' : cat; - config = screenW < 400 ? (self.previewSettingsSmall[newCat] || self.defaults.previewSettingsSmall[newCat]) : - (self.previewSettings[newCat] || self.defaults.previewSettings[newCat]); - if (config) { - $.each(config, function (key, val) { - styleAttribs += key + ':' + val + ';'; - }); - } - getContent = function (c, d, zoom, frameCss) { - var id = zoom ? 'zoom-' + previewId : previewId, tmplt = self._getPreviewTemplate(c), - css = (frameClass || '') + ' ' + frameCss; - if (self.frameClass) { - css = self.frameClass + ' ' + css; - } - if (zoom) { - css = css.replace(' ' + $h.SORT_CSS, ''); - } - tmplt = self._parseFilePreviewIcon(tmplt, fname); - if (cat === 'object' && !ftype) { - $.each(self.defaults.fileTypeSettings, function (key, func) { - if (key === 'object' || key === 'other') { - return; - } - if (func(fname, ftype)) { - typeCss = 'type-' + key; - } - }); - } - if (!$h.isEmpty(attrs)) { - if (attrs.title !== undefined && attrs.title !== null) { - title = attrs.title; - } - if (attrs.alt !== undefined && attrs.alt !== null) { - title = attrs.alt; - } - } - return tmplt.setTokens({ - 'previewId': id, - 'caption': caption, - 'title': title, - 'alt': alt, - 'frameClass': css, - 'type': self._getFileType(ftype), - 'fileindex': ind, - 'fileid': fileId || '', - 'typeCss': typeCss, - 'footer': footer, - 'data': d, - 'template': templ || cat, - 'style': styleAttribs ? 'style="' + styleAttribs + '"' : '' - }); - }; - ind = ind || previewId.slice(previewId.lastIndexOf('-') + 1); - if (self.fileActionSettings.showZoom) { - zoomContent = getContent((forceZoomIcon ? 'other' : cat), zoomData ? zoomData : data, true, - 'kv-zoom-thumb'); - } - zoomContent = '\n' + self._getLayoutTemplate('zoomCache').replace('{zoomContent}', zoomContent); - if (typeof self.sanitizeZoomCache === 'function') { - zoomContent = self.sanitizeZoomCache(zoomContent); - } - prevContent = getContent((forcePrevIcon ? 'other' : cat), data, false, 'kv-preview-thumb'); - return prevContent.setTokens({zoomCache: zoomContent}); - }, - _addToPreview: function ($preview, content) { - var self = this, $el; - content = $h.cspBuffer.stash(content); - $el = self.reversePreviewOrder ? $preview.prepend(content) : $preview.append(content); - $h.cspBuffer.apply($preview); - return $el; - }, - _previewDefault: function (file, isDisabled) { - var self = this, $preview = self.$preview; - if (!self.showPreview) { - return; - } - var fname = $h.getFileName(file), ftype = file ? file.type : '', content, size = file.size || 0, - caption = self._getFileName(file, ''), isError = isDisabled === true && !self.isAjaxUpload, - data = $h.createObjectURL(file), fileId = self.fileManager.getId(file), - previewId = self._getThumbId(fileId); - self._clearDefaultPreview(); - content = self._generatePreviewTemplate('other', data, fname, ftype, previewId, fileId, isError, size); - self._addToPreview($preview, content); - self._setThumbAttr(previewId, caption, size); - if (isDisabled === true && self.isAjaxUpload) { - self._setThumbStatus(self._getFrame(previewId), 'Error'); - } - }, - _previewFile: function (i, file, theFile, data, fileInfo) { - if (!this.showPreview) { - return; - } - var self = this, fname = $h.getFileName(file), ftype = fileInfo.type, caption = fileInfo.name, - cat = self._parseFileType(ftype, fname), content, $preview = self.$preview, fsize = file.size || 0, - iData = cat === 'image' ? theFile.target.result : data, - fileId = self.fileManager.getId(file), previewId = self._getThumbId(fileId); - /** @namespace window.DOMPurify */ - content = self._generatePreviewTemplate(cat, iData, fname, ftype, previewId, fileId, false, fsize); - self._clearDefaultPreview(); - self._addToPreview($preview, content); - var $thumb = self._getFrame(previewId); - self._validateImageOrientation($thumb.find('img'), file, previewId, fileId, caption, ftype, fsize, iData); - self._setThumbAttr(previewId, caption, fsize); - self._initSortable(); - }, - _setThumbAttr: function (id, caption, size) { - var self = this, $frame = self._getFrame(id); - if ($frame.length) { - size = size && size > 0 ? self._getSize(size) : ''; - $frame.data({'caption': caption, 'size': size}); - } - }, - _setInitThumbAttr: function () { - var self = this, data = self.previewCache.data, len = self.previewCache.count(true), config, - caption, size, previewId; - if (len === 0) { - return; - } - for (var i = 0; i < len; i++) { - config = data.config[i]; - previewId = self.previewInitId + '-' + $h.INIT_FLAG + i; - caption = $h.ifSet('caption', config, $h.ifSet('filename', config)); - size = $h.ifSet('size', config); - self._setThumbAttr(previewId, caption, size); - } - }, - _slugDefault: function (text) { - // noinspection RegExpRedundantEscape - return $h.isEmpty(text, true) ? '' : String(text).replace(/[\[\]\/\{}:;#%=\(\)\*\+\?\\\^\$\|<>&"']/g, '_'); - }, - _updateFileDetails: function (numFiles, skipRaiseEvent) { - var self = this, $el = self.$element, label, n, log, nFiles, file, - name = ($h.isIE(9) && $h.findFileName($el.val())) || ($el[0].files[0] && $el[0].files[0].name); - if (!name && self.fileManager.count() > 0) { - file = self.fileManager.getFirstFile(); - label = file.nameFmt; - } else { - label = name ? self.slug(name) : '_'; - } - n = self.isAjaxUpload ? self.fileManager.count() : numFiles; - nFiles = self.previewCache.count(true) + n; - log = n === 1 ? label : self._getMsgSelected(nFiles); - if (self.isError) { - self.$previewContainer.removeClass('file-thumb-loading'); - self.$previewStatus.html(''); - self.$captionContainer.removeClass('icon-visible'); - } else { - self._showFileIcon(); - } - self._setCaption(log, self.isError); - self.$container.removeClass('file-input-new file-input-ajax-new'); - if (!skipRaiseEvent) { - self._raise('fileselect', [numFiles, label]); - } - if (self.previewCache.count(true)) { - self._initPreviewActions(); - } - }, - _setThumbStatus: function ($thumb, status) { - var self = this; - if (!self.showPreview) { - return; - } - var icon = 'indicator' + status, msg = icon + 'Title', - css = 'file-preview-' + status.toLowerCase(), - $indicator = $thumb.find('.file-upload-indicator'), - config = self.fileActionSettings; - $thumb.removeClass('file-preview-success file-preview-error file-preview-paused file-preview-loading'); - if (status === 'Success') { - $thumb.find('.file-drag-handle').remove(); - } - $h.setHtml($indicator, config[icon]); - $indicator.attr('title', config[msg]); - $thumb.addClass(css); - if (status === 'Error' && !self.retryErrorUploads) { - $thumb.find('.kv-file-upload').attr('disabled', true); - } - }, - _setProgressCancelled: function () { - var self = this; - self._setProgress(101, self.$progress, self.msgCancelled); - }, - _setProgress: function (p, $el, error, stats) { - var self = this; - $el = $el || self.$progress; - if (!$el.length) { - return; - } - var pct = Math.min(p, 100), out, pctLimit = self.progressUploadThreshold, - t = p <= 100 ? self.progressTemplate : self.progressCompleteTemplate, - template = pct < 100 ? self.progressTemplate : - (error ? (self.paused ? self.progressPauseTemplate : self.progressErrorTemplate) : t); - if (p >= 100) { - stats = ''; - } - if (!$h.isEmpty(template)) { - if (pctLimit && pct > pctLimit && p <= 100) { - out = template.setTokens({'percent': pctLimit, 'status': self.msgUploadThreshold}); - } else { - out = template.setTokens({'percent': pct, 'status': (p > 100 ? self.msgUploadEnd : pct + '%')}); - } - stats = stats || ''; - out = out.setTokens({stats: stats}); - $h.setHtml($el, out); - if (error) { - $h.setHtml($el.find('[role="progressbar"]'), error); - } - } - }, - _hasFiles: function () { - var el = this.$element[0]; - return !!(el && el.files && el.files.length); - }, - _setFileDropZoneTitle: function () { - var self = this, $zone = self.$container.find('.file-drop-zone'), title = self.dropZoneTitle, strFiles; - if (self.isClickable) { - strFiles = $h.isEmpty(self.$element.attr('multiple')) ? self.fileSingle : self.filePlural; - title += self.dropZoneClickTitle.replace('{files}', strFiles); - } - $zone.find('.' + self.dropZoneTitleClass).remove(); - if (!self.showPreview || $zone.length === 0 || self.fileManager.count() > 0 || !self.dropZoneEnabled || - self.previewCache.count() > 0 || (!self.isAjaxUpload && self._hasFiles())) { - return; - } - if ($zone.find($h.FRAMES).length === 0 && $h.isEmpty(self.defaultPreviewContent)) { - $zone.prepend('
    ' + title + '
    '); - } - self.$container.removeClass('file-input-new'); - $h.addCss(self.$container, 'file-input-ajax-new'); - }, - _getStats: function (stats) { - var self = this, pendingTime, t; - if (!self.showUploadStats || !stats || !stats.bitrate) { - return ''; - } - t = self._getLayoutTemplate('stats'); - pendingTime = (!stats.elapsed || !stats.bps) ? self.msgCalculatingTime : - self.msgPendingTime.setTokens({time: $h.getElapsed(Math.ceil(stats.pendingBytes / stats.bps))}); - - return t.setTokens({ - uploadSpeed: stats.bitrate, - pendingTime: pendingTime - }); - }, - _setResumableProgress: function (pct, stats, $thumb) { - var self = this, rm = self.resumableManager, obj = $thumb ? rm : self, - $prog = $thumb ? $thumb.find('.file-thumb-progress') : null; - if (obj.lastProgress === 0) { - obj.lastProgress = pct; - } - if (pct < obj.lastProgress) { - pct = obj.lastProgress; - } - self._setProgress(pct, $prog, null, self._getStats(stats)); - obj.lastProgress = pct; - }, - _toggleResumableProgress: function (template, message) { - var self = this, $progress = self.$progress; - if ($progress && $progress.length) { - $h.setHtml($progress, template.setTokens({ - percent: 101, - status: message, - stats: '' - })); - } - }, - _setFileUploadStats: function (id, pct, stats) { - var self = this, $prog = self.$progress; - if (!self.showPreview && (!$prog || !$prog.length)) { - return; - } - var fm = self.fileManager, rm = self.resumableManager, $thumb = fm.getThumb(id), pctTot, - totUpSize = 0, totSize = fm.getTotalSize(), totStats = $.extend(true, {}, stats); - if (self.enableResumableUpload) { - var loaded = stats.loaded, currUplSize = rm.getUploadedSize(), currTotSize = rm.file.size, totLoaded; - loaded += currUplSize; - totLoaded = fm.uploadedSize + loaded; - pct = $h.round(100 * loaded / currTotSize); - stats.pendingBytes = currTotSize - currUplSize; - self._setResumableProgress(pct, stats, $thumb); - pctTot = Math.floor(100 * totLoaded / totSize); - totStats.pendingBytes = totSize - totLoaded; - self._setResumableProgress(pctTot, totStats); - } else { - fm.setProgress(id, pct); - $prog = $thumb && $thumb.length ? $thumb.find('.file-thumb-progress') : null; - self._setProgress(pct, $prog, null, self._getStats(stats)); - $.each(fm.stats, function (id, cfg) { - totUpSize += cfg.loaded; - }); - totStats.pendingBytes = totSize - totUpSize; - pctTot = $h.round(totUpSize / totSize * 100); - self._setProgress(pctTot, null, null, self._getStats(totStats)); - } - }, - _validateMinCount: function () { - var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount(); - if (self.validateInitialCount && self.minFileCount > 0 && self._getFileCount(len - 1) < self.minFileCount) { - self._noFilesError({}); - return false; - } - return true; - }, - _getFileCount: function (fileCount, includeInitial) { - var self = this, addCount = 0; - if (includeInitial === undefined) { - includeInitial = self.validateInitialCount && !self.overwriteInitial; - } - if (includeInitial) { - addCount = self.previewCache.count(true); - fileCount += addCount; - } - return fileCount; - }, - _getFileId: function (file) { - return $h.getFileId(file, this.generateFileId); - }, - _getFileName: function (file, defaultValue) { - var self = this, fileName = $h.getFileName(file); - return fileName ? self.slug(fileName) : defaultValue; - }, - _getFileNames: function (skipNull) { - var self = this; - return self.filenames.filter(function (n) { - return (skipNull ? n !== undefined : n !== undefined && n !== null); - }); - }, - _setPreviewError: function ($thumb, keepFile) { - var self = this, removeFrame = self.removeFromPreviewOnError && !self.retryErrorUploads; - if (!keepFile || removeFrame) { - self.fileManager.remove($thumb); - } - if (!self.showPreview) { - return; - } - if (removeFrame) { - $thumb.remove(); - return; - } else { - self._setThumbStatus($thumb, 'Error'); - } - self._refreshUploadButton($thumb); - }, - _refreshUploadButton: function ($thumb) { - var self = this, $btn = $thumb.find('.kv-file-upload'), cfg = self.fileActionSettings, - icon = cfg.uploadIcon, title = cfg.uploadTitle; - if (!$btn.length) { - return; - } - if (self.retryErrorUploads) { - icon = cfg.uploadRetryIcon; - title = cfg.uploadRetryTitle; - } - $btn.attr('title', title); - $h.setHtml($btn, icon); - }, - _checkDimensions: function (i, chk, $img, $thumb, fname, type, params) { - var self = this, msg, dim, tag = chk === 'Small' ? 'min' : 'max', limit = self[tag + 'Image' + type], - $imgEl, isValid; - if ($h.isEmpty(limit) || !$img.length) { - return; - } - $imgEl = $img[0]; - dim = (type === 'Width') ? $imgEl.naturalWidth || $imgEl.width : $imgEl.naturalHeight || $imgEl.height; - isValid = chk === 'Small' ? dim >= limit : dim <= limit; - if (isValid) { - return; - } - msg = self['msgImage' + type + chk].setTokens({'name': fname, 'size': limit}); - self._showFileError(msg, params); - self._setPreviewError($thumb); - }, - _getExifObj: function (data) { - var self = this, exifObj, error = $h.logMessages.exifWarning; - if (data.slice(0, 23) !== 'data:image/jpeg;base64,' && data.slice(0, 22) !== 'data:image/jpg;base64,') { - exifObj = null; - return; - } - try { - exifObj = window.piexif ? window.piexif.load(data) : null; - } catch (err) { - exifObj = null; - error = err && err.message || ''; - } - if (!exifObj) { - self._log($h.logMessages.badExifParser, {details: error}); - } - return exifObj; - }, - setImageOrientation: function ($img, $zoomImg, value, $thumb) { - var self = this, invalidImg = !$img || !$img.length, invalidZoomImg = !$zoomImg || !$zoomImg.length, $mark, - isHidden = false, $div, zoomOnly = invalidImg && $thumb && $thumb.attr('data-template') === 'image', ev; - if (invalidImg && invalidZoomImg) { - return; - } - ev = 'load.fileinputimageorient'; - if (zoomOnly) { - $img = $zoomImg; - $zoomImg = null; - $img.css(self.previewSettings.image); - $div = $(document.createElement('div')).appendTo($thumb.find('.kv-file-content')); - $mark = $(document.createElement('span')).insertBefore($img); - $img.css('visibility', 'hidden').removeClass('file-zoom-detail').appendTo($div); - } else { - isHidden = !$img.is(':visible'); - } - $img.off(ev).on(ev, function () { - if (isHidden) { - self.$preview.removeClass('hide-content'); - $thumb.find('.kv-file-content').css('visibility', 'hidden'); - } - var img = $img[0], zoomImg = $zoomImg && $zoomImg.length ? $zoomImg[0] : null, - h = img.offsetHeight, w = img.offsetWidth, r = $h.getRotation(value); - if (isHidden) { - $thumb.find('.kv-file-content').css('visibility', 'visible'); - self.$preview.addClass('hide-content'); - } - $img.data('orientation', value); - if (zoomImg) { - $zoomImg.data('orientation', value); - } - if (value < 5) { - $h.setTransform(img, r); - $h.setTransform(zoomImg, r); - return; - } - var offsetAngle = Math.atan(w / h), origFactor = Math.sqrt(Math.pow(h, 2) + Math.pow(w, 2)), - scale = !origFactor ? 1 : (h / Math.cos(Math.PI / 2 + offsetAngle)) / origFactor, - s = ' scale(' + Math.abs(scale) + ')'; - $h.setTransform(img, r + s); - $h.setTransform(zoomImg, r + s); - if (zoomOnly) { - $img.css('visibility', 'visible').insertAfter($mark).addClass('file-zoom-detail'); - $mark.remove(); - $div.remove(); - } - }); - }, - _validateImageOrientation: function ($img, file, previewId, fileId, caption, ftype, fsize, iData) { - var self = this, exifObj, value, autoOrientImage = self.autoOrientImage, selector; - if (self.canOrientImage) { - $img.css('image-orientation', (autoOrientImage ? 'from-image' : 'none')); - return; - } - selector = $h.getZoomSelector(previewId, ' img'); - exifObj = autoOrientImage ? self._getExifObj(iData) : null; - value = exifObj ? exifObj['0th'][piexif.ImageIFD.Orientation] : null; // jshint ignore:line - if (!value) { - self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj); - return; - } - self.setImageOrientation($img, $(selector), value, self._getFrame(previewId)); - self._raise('fileimageoriented', {'$img': $img, 'file': file}); - self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj); - }, - _validateImage: function (previewId, fileId, fname, ftype, fsize, iData, exifObj) { - var self = this, $preview = self.$preview, params, w1, w2, $thumb = self._getFrame(previewId), - i = $thumb.attr('data-fileindex'), $img = $thumb.find('img'); - fname = fname || 'Untitled'; - $img.one('load', function () { - w1 = $thumb.width(); - w2 = $preview.width(); - if (w1 > w2) { - $img.css('width', '100%'); - } - params = {ind: i, id: previewId, fileId: fileId}; - self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Width', params); - self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Height', params); - if (!self.resizeImage) { - self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Width', params); - self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Height', params); - } - self._raise('fileimageloaded', [previewId]); - self.fileManager.addImage(fileId, { - ind: i, - img: $img, - thumb: $thumb, - pid: previewId, - typ: ftype, - siz: fsize, - validated: false, - imgData: iData, - exifObj: exifObj - }); - $thumb.data('exif', exifObj); - self._validateAllImages(); - }).one('error', function () { - self._raise('fileimageloaderror', [previewId]); - }).each(function () { - if (this.complete) { - $(this).trigger('load'); - } else { - if (this.error) { - $(this).trigger('error'); - } - } - }); - }, - _validateAllImages: function () { - var self = this, counter = {val: 0}, numImgs = self.fileManager.getImageCount(), fsize, - minSize = self.resizeIfSizeMoreThan; - if (numImgs !== self.fileManager.totalImages) { - return; - } - self._raise('fileimagesloaded'); - if (!self.resizeImage) { - return; - } - $.each(self.fileManager.loadedImages, function (id, config) { - if (!config.validated) { - fsize = config.siz; - if (fsize && fsize > minSize * 1000) { - self._getResizedImage(id, config, counter, numImgs); - } - config.validated = true; - } - }); - }, - _getResizedImage: function (id, config, counter, numImgs) { - var self = this, img = $(config.img)[0], width = img.naturalWidth, height = img.naturalHeight, blob, - ratio = 1, maxWidth = self.maxImageWidth || width, maxHeight = self.maxImageHeight || height, - isValidImage = !!(width && height), chkWidth, chkHeight, canvas = self.imageCanvas, dataURI, - context = self.imageCanvasContext, type = config.typ, pid = config.pid, ind = config.ind, - $thumb = config.thumb, throwError, msg, exifObj = config.exifObj, exifStr, file, params, evParams; - throwError = function (msg, params, ev) { - if (self.isAjaxUpload) { - self._showFileError(msg, params, ev); - } else { - self._showError(msg, params, ev); - } - self._setPreviewError($thumb); - }; - file = self.fileManager.getFile(id); - params = {id: pid, 'index': ind, fileId: id}; - evParams = [id, pid, ind]; - if (!file || !isValidImage || (width <= maxWidth && height <= maxHeight)) { - if (isValidImage && file) { - self._raise('fileimageresized', evParams); - } - counter.val++; - if (counter.val === numImgs) { - self._raise('fileimagesresized'); - } - if (!isValidImage) { - throwError(self.msgImageResizeError, params, 'fileimageresizeerror'); - return; - } - } - type = type || self.resizeDefaultImageType; - chkWidth = width > maxWidth; - chkHeight = height > maxHeight; - if (self.resizePreference === 'width') { - ratio = chkWidth ? maxWidth / width : (chkHeight ? maxHeight / height : 1); - } else { - ratio = chkHeight ? maxHeight / height : (chkWidth ? maxWidth / width : 1); - } - self._resetCanvas(); - width *= ratio; - height *= ratio; - canvas.width = width; - canvas.height = height; - try { - context.drawImage(img, 0, 0, width, height); - dataURI = canvas.toDataURL(type, self.resizeQuality); - if (exifObj) { - exifStr = window.piexif.dump(exifObj); - dataURI = window.piexif.insert(exifStr, dataURI); - } - blob = $h.dataURI2Blob(dataURI); - self.fileManager.setFile(id, blob); - self._raise('fileimageresized', evParams); - counter.val++; - if (counter.val === numImgs) { - self._raise('fileimagesresized', [undefined, undefined]); - } - if (!(blob instanceof Blob)) { - throwError(self.msgImageResizeError, params, 'fileimageresizeerror'); - } - } catch (err) { - counter.val++; - if (counter.val === numImgs) { - self._raise('fileimagesresized', [undefined, undefined]); - } - msg = self.msgImageResizeException.replace('{errors}', err.message); - throwError(msg, params, 'fileimageresizeexception'); - } - }, - _showProgress: function () { - var self = this; - if (self.$progress && self.$progress.length) { - self.$progress.show(); - } - }, - _hideProgress: function () { - var self = this; - if (self.$progress && self.$progress.length) { - self.$progress.hide(); - } - }, - _initBrowse: function ($container) { - var self = this, $el = self.$element; - if (self.showBrowse) { - self.$btnFile = $container.find('.btn-file').append($el); - } else { - $el.appendTo($container).attr('tabindex', -1); - $h.addCss($el, 'file-no-browse'); - } - }, - _initClickable: function () { - var self = this, $zone, $tmpZone; - if (!self.isClickable) { - return; - } - $zone = self.$dropZone; - if (!self.isAjaxUpload) { - $tmpZone = self.$preview.find('.file-default-preview'); - if ($tmpZone.length) { - $zone = $tmpZone; - } - } - - $h.addCss($zone, 'clickable'); - $zone.attr('tabindex', -1); - self._handler($zone, 'click', function (e) { - var $tar = $(e.target); - if (!$(self.elErrorContainer + ':visible').length && - (!$tar.parents('.file-preview-thumbnails').length || $tar.parents( - '.file-default-preview').length)) { - self.$element.data('zoneClicked', true).trigger('click'); - $zone.blur(); - } - }); - }, - _initCaption: function () { - var self = this, cap = self.initialCaption || ''; - if (self.overwriteInitial || $h.isEmpty(cap)) { - self.$caption.val(''); - return false; - } - self._setCaption(cap); - return true; - }, - _setCaption: function (content, isError) { - var self = this, title, out, icon, n, cap, file; - if (!self.$caption.length) { - return; - } - self.$captionContainer.removeClass('icon-visible'); - if (isError) { - title = $('
    ' + self.msgValidationError + '
    ').text(); - n = self.fileManager.count(); - if (n) { - file = self.fileManager.getFirstFile(); - cap = n === 1 && file ? file.nameFmt : self._getMsgSelected(n); - } else { - cap = self._getMsgSelected(self.msgNo); - } - out = $h.isEmpty(content) ? cap : content; - icon = '' + self.msgValidationErrorIcon + ''; - } else { - if ($h.isEmpty(content)) { - return; - } - title = $('
    ' + content + '
    ').text(); - out = title; - icon = self._getLayoutTemplate('fileIcon'); - } - self.$captionContainer.addClass('icon-visible'); - self.$caption.attr('title', title).val(out); - $h.setHtml(self.$captionIcon, icon); - }, - _createContainer: function () { - var self = this, attribs = {'class': 'file-input file-input-new' + (self.rtl ? ' kv-rtl' : '')}, - $container = $h.createElement($h.cspBuffer.stash(self._renderMain())); - $h.cspBuffer.apply($container); - $container.insertBefore(self.$element).attr(attribs); - self._initBrowse($container); - if (self.theme) { - $container.addClass('theme-' + self.theme); - } - return $container; - }, - _refreshContainer: function () { - var self = this, $container = self.$container, $el = self.$element; - $el.insertAfter($container); - $h.setHtml($container, self._renderMain()); - self._initBrowse($container); - self._validateDisabled(); - }, - _validateDisabled: function () { - var self = this; - self.$caption.attr({readonly: self.isDisabled}); - }, - _renderMain: function () { - var self = this, - dropCss = self.dropZoneEnabled ? ' file-drop-zone' : 'file-drop-disabled', - close = !self.showClose ? '' : self._getLayoutTemplate('close'), - preview = !self.showPreview ? '' : self._getLayoutTemplate('preview') - .setTokens({'class': self.previewClass, 'dropClass': dropCss}), - css = self.isDisabled ? self.captionClass + ' file-caption-disabled' : self.captionClass, - caption = self.captionTemplate.setTokens({'class': css + ' kv-fileinput-caption'}); - return self.mainTemplate.setTokens({ - 'class': self.mainClass + (!self.showBrowse && self.showCaption ? ' no-browse' : ''), - 'preview': preview, - 'close': close, - 'caption': caption, - 'upload': self._renderButton('upload'), - 'remove': self._renderButton('remove'), - 'cancel': self._renderButton('cancel'), - 'pause': self._renderButton('pause'), - 'browse': self._renderButton('browse') - }); - - }, - _renderButton: function (type) { - var self = this, tmplt = self._getLayoutTemplate('btnDefault'), css = self[type + 'Class'], - title = self[type + 'Title'], icon = self[type + 'Icon'], label = self[type + 'Label'], - status = self.isDisabled ? ' disabled' : '', btnType = 'button'; - switch (type) { - case 'remove': - if (!self.showRemove) { - return ''; - } - break; - case 'cancel': - if (!self.showCancel) { - return ''; - } - css += ' kv-hidden'; - break; - case 'pause': - if (!self.showPause) { - return ''; - } - css += ' kv-hidden'; - break; - case 'upload': - if (!self.showUpload) { - return ''; - } - if (self.isAjaxUpload && !self.isDisabled) { - tmplt = self._getLayoutTemplate('btnLink').replace('{href}', self.uploadUrl); - } else { - btnType = 'submit'; - } - break; - case 'browse': - if (!self.showBrowse) { - return ''; - } - tmplt = self._getLayoutTemplate('btnBrowse'); - break; - default: - return ''; - } - - css += type === 'browse' ? ' btn-file' : ' fileinput-' + type + ' fileinput-' + type + '-button'; - if (!$h.isEmpty(label)) { - label = ' ' + label + ''; - } - return tmplt.setTokens({ - 'type': btnType, 'css': css, 'title': title, 'status': status, 'icon': icon, 'label': label - }); - }, - _renderThumbProgress: function () { - var self = this; - return '
    ' + - self.progressInfoTemplate.setTokens({percent: 101, status: self.msgUploadBegin, stats: ''}) + - '
    '; - }, - _renderFileFooter: function (cat, caption, size, width, isError) { - var self = this, config = self.fileActionSettings, rem = config.showRemove, drg = config.showDrag, - upl = config.showUpload, zoom = config.showZoom, out, params, - template = self._getLayoutTemplate('footer'), tInd = self._getLayoutTemplate('indicator'), - ind = isError ? config.indicatorError : config.indicatorNew, - title = isError ? config.indicatorErrorTitle : config.indicatorNewTitle, - indicator = tInd.setTokens({'indicator': ind, 'indicatorTitle': title}); - size = self._getSize(size); - params = {type: cat, caption: caption, size: size, width: width, progress: '', indicator: indicator}; - if (self.isAjaxUpload) { - params.progress = self._renderThumbProgress(); - params.actions = self._renderFileActions(params, upl, false, rem, zoom, drg, false, false, false); - } else { - params.actions = self._renderFileActions(params, false, false, false, zoom, drg, false, false, false); - } - out = template.setTokens(params); - out = $h.replaceTags(out, self.previewThumbTags); - return out; - }, - _renderFileActions: function ( - cfg, - showUpl, - showDwn, - showDel, - showZoom, - showDrag, - disabled, - url, - key, - isInit, - dUrl, - dFile - ) { - var self = this; - if (!cfg.type && isInit) { - cfg.type = 'image'; - } - if (self.enableResumableUpload) { - showUpl = false; - } else { - if (typeof showUpl === 'function') { - showUpl = showUpl(cfg); - } - } - if (typeof showDwn === 'function') { - showDwn = showDwn(cfg); - } - if (typeof showDel === 'function') { - showDel = showDel(cfg); - } - if (typeof showZoom === 'function') { - showZoom = showZoom(cfg); - } - if (typeof showDrag === 'function') { - showDrag = showDrag(cfg); - } - if (!showUpl && !showDwn && !showDel && !showZoom && !showDrag) { - return ''; - } - var vUrl = url === false ? '' : ' data-url="' + url + '"', btnZoom = '', btnDrag = '', css, - vKey = key === false ? '' : ' data-key="' + key + '"', btnDelete = '', btnUpload = '', btnDownload = '', - template = self._getLayoutTemplate('actions'), config = self.fileActionSettings, - otherButtons = self.otherActionButtons.setTokens({'dataKey': vKey, 'key': key}), - removeClass = disabled ? config.removeClass + ' disabled' : config.removeClass; - if (showDel) { - btnDelete = self._getLayoutTemplate('actionDelete').setTokens({ - 'removeClass': removeClass, - 'removeIcon': config.removeIcon, - 'removeTitle': config.removeTitle, - 'dataUrl': vUrl, - 'dataKey': vKey, - 'key': key - }); - } - if (showUpl) { - btnUpload = self._getLayoutTemplate('actionUpload').setTokens({ - 'uploadClass': config.uploadClass, - 'uploadIcon': config.uploadIcon, - 'uploadTitle': config.uploadTitle - }); - } - if (showDwn) { - btnDownload = self._getLayoutTemplate('actionDownload').setTokens({ - 'downloadClass': config.downloadClass, - 'downloadIcon': config.downloadIcon, - 'downloadTitle': config.downloadTitle, - 'downloadUrl': dUrl || self.initialPreviewDownloadUrl - }); - btnDownload = btnDownload.setTokens({'filename': dFile, 'key': key}); - } - if (showZoom) { - btnZoom = self._getLayoutTemplate('actionZoom').setTokens({ - 'zoomClass': config.zoomClass, - 'zoomIcon': config.zoomIcon, - 'zoomTitle': config.zoomTitle - }); - } - if (showDrag && isInit) { - css = 'drag-handle-init ' + config.dragClass; - btnDrag = self._getLayoutTemplate('actionDrag').setTokens({ - 'dragClass': css, - 'dragTitle': config.dragTitle, - 'dragIcon': config.dragIcon - }); - } - return template.setTokens({ - 'delete': btnDelete, - 'upload': btnUpload, - 'download': btnDownload, - 'zoom': btnZoom, - 'drag': btnDrag, - 'other': otherButtons - }); - }, - _browse: function (e) { - var self = this; - if (e && e.isDefaultPrevented() || !self._raise('filebrowse')) { - return; - } - if (self.isError && !self.isAjaxUpload) { - self.clear(); - } - if (self.focusCaptionOnBrowse) { - self.$captionContainer.focus(); - } - }, - _change: function (e) { - var self = this; - if (self.changeTriggered) { - return; - } - var $el = self.$element, isDragDrop = arguments.length > 1, isAjaxUpload = self.isAjaxUpload, - tfiles, files = isDragDrop ? arguments[1] : $el[0].files, ctr = self.fileManager.count(), - total, initCount, len, isSingleUpl = $h.isEmpty($el.attr('multiple')), - maxCount = !isAjaxUpload && isSingleUpl ? 1 : self.maxFileCount, maxTotCount = self.maxTotalFileCount, - inclAll = maxTotCount > 0 && maxTotCount > maxCount, flagSingle = (isSingleUpl && ctr > 0), - throwError = function (mesg, file, previewId, index) { - var p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), {id: previewId, index: index}), - p2 = {id: previewId, index: index, file: file, files: files}; - self.isPersistentError = true; - return isAjaxUpload ? self._showFileError(mesg, p1) : self._showError(mesg, p2); - }, - maxCountCheck = function (n, m, all) { - var msg = all ? self.msgTotalFilesTooMany : self.msgFilesTooMany; - msg = msg.replace('{m}', m).replace('{n}', n); - self.isError = throwError(msg, null, null, null); - self.$captionContainer.removeClass('icon-visible'); - self._setCaption('', true); - self.$container.removeClass('file-input-new file-input-ajax-new'); - }; - self.reader = null; - self._resetUpload(); - self._hideFileIcon(); - if (self.dropZoneEnabled) { - self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove(); - } - if (!isAjaxUpload) { - if (e.target && e.target.files === undefined) { - files = e.target.value ? [{name: e.target.value.replace(/^.+\\/, '')}] : []; - } else { - files = e.target.files || {}; - } - } - tfiles = files; - if ($h.isEmpty(tfiles) || tfiles.length === 0) { - if (!isAjaxUpload) { - self.clear(); - } - self._raise('fileselectnone'); - return; - } - self._resetErrors(); - len = tfiles.length; - initCount = isAjaxUpload ? (self.fileManager.count() + len) : len; - total = self._getFileCount(initCount, inclAll ? false : undefined); - if (maxCount > 0 && total > maxCount) { - if (!self.autoReplace || len > maxCount) { - maxCountCheck((self.autoReplace && len > maxCount ? len : total), maxCount); - return; - } - if (total > maxCount) { - self._resetPreviewThumbs(isAjaxUpload); - } - } else { - if (inclAll) { - total = self._getFileCount(initCount, true); - if (maxTotCount > 0 && total > maxTotCount) { - if (!self.autoReplace || len > maxCount) { - maxCountCheck((self.autoReplace && len > maxTotCount ? len : total), maxTotCount, true); - return; - } - if (total > maxCount) { - self._resetPreviewThumbs(isAjaxUpload); - } - } - } - if (!isAjaxUpload || flagSingle) { - self._resetPreviewThumbs(false); - if (flagSingle) { - self.clearFileStack(); - } - } else { - if (isAjaxUpload && ctr === 0 && (!self.previewCache.count(true) || self.overwriteInitial)) { - self._resetPreviewThumbs(true); - } - } - } - self.readFiles(tfiles); - }, - _abort: function (params) { - var self = this, data; - if (self.ajaxAborted && typeof self.ajaxAborted === 'object' && self.ajaxAborted.message !== undefined) { - data = $.extend(true, {}, self._getOutData(null), params); - data.abortData = self.ajaxAborted.data || {}; - data.abortMessage = self.ajaxAborted.message; - self._setProgress(101, self.$progress, self.msgCancelled); - self._showFileError(self.ajaxAborted.message, data, 'filecustomerror'); - self.cancel(); - return true; - } - return !!self.ajaxAborted; - }, - _resetFileStack: function () { - var self = this, i = 0; - self._getThumbs().each(function () { - var $thumb = $(this), ind = $thumb.attr('data-fileindex'), pid = $thumb.attr('id'); - if (ind === '-1' || ind === -1) { - return; - } - if (!self.fileManager.getFile($thumb.attr('data-fileid'))) { - $thumb.attr({'data-fileindex': i}); - i++; - } else { - $thumb.attr({'data-fileindex': '-1'}); - } - self._getZoom(pid).attr({ - 'data-fileindex': $thumb.attr('data-fileindex') - }); - }); - }, - _isFileSelectionValid: function (cnt) { - var self = this; - cnt = cnt || 0; - if (self.required && !self.getFilesCount()) { - self.$errorContainer.html(''); - self._showFileError(self.msgFileRequired); - return false; - } - if (self.minFileCount > 0 && self._getFileCount(cnt) < self.minFileCount) { - self._noFilesError({}); - return false; - } - return true; - }, - _canPreview: function (file) { - var self = this; - if (!file || !self.showPreview || !self.$preview || !self.$preview.length) { - return false; - } - var name = file.name || '', type = file.type || '', size = (file.size || 0) / 1000, - cat = self._parseFileType(type, name), allowedTypes, allowedMimes, allowedExts, skipPreview, - types = self.allowedPreviewTypes, mimes = self.allowedPreviewMimeTypes, - exts = self.allowedPreviewExtensions || [], dTypes = self.disabledPreviewTypes, - dMimes = self.disabledPreviewMimeTypes, dExts = self.disabledPreviewExtensions || [], - maxSize = self.maxFilePreviewSize && parseFloat(self.maxFilePreviewSize) || 0, - expAllExt = new RegExp('\\.(' + exts.join('|') + ')$', 'i'), - expDisExt = new RegExp('\\.(' + dExts.join('|') + ')$', 'i'); - allowedTypes = !types || types.indexOf(cat) !== -1; - allowedMimes = !mimes || mimes.indexOf(type) !== -1; - allowedExts = !exts.length || $h.compare(name, expAllExt); - skipPreview = (dTypes && dTypes.indexOf(cat) !== -1) || (dMimes && dMimes.indexOf(type) !== -1) || - (dExts.length && $h.compare(name, expDisExt)) || (maxSize && !isNaN(maxSize) && size > maxSize); - return !skipPreview && (allowedTypes || allowedMimes || allowedExts); - }, - addToStack: function (file, id) { - this.fileManager.add(file, id); - }, - clearFileStack: function () { - var self = this; - self.fileManager.clear(); - self._initResumableUpload(); - if (self.enableResumableUpload) { - if (self.showPause === null) { - self.showPause = true; - } - if (self.showCancel === null) { - self.showCancel = false; - } - } else { - self.showPause = false; - if (self.showCancel === null) { - self.showCancel = true; - } - } - return self.$element; - }, - getFileStack: function () { - return this.fileManager.stack; - }, - getFileList: function () { - return this.fileManager.list(); - }, - getFilesCount: function (includeInitial) { - var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount(); - if (includeInitial) { - len += self.previewCache.count(true); - } - return self._getFileCount(len); - }, - readFiles: function (files) { - this.reader = new FileReader(); - var self = this, reader = self.reader, $container = self.$previewContainer, - $status = self.$previewStatus, msgLoading = self.msgLoading, msgProgress = self.msgProgress, - previewInitId = self.previewInitId, numFiles = files.length, settings = self.fileTypeSettings, - readFile, fileTypes = self.allowedFileTypes, typLen = fileTypes ? fileTypes.length : 0, - fileExt = self.allowedFileExtensions, strExt = $h.isEmpty(fileExt) ? '' : fileExt.join(', '), - throwError = function (msg, file, previewId, index, fileId) { - var $thumb, p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), - {id: previewId, index: index, fileId: fileId}), - p2 = {id: previewId, index: index, fileId: fileId, file: file, files: files}; - self._previewDefault(file, true); - $thumb = self._getFrame(previewId, true); - if (self.isAjaxUpload) { - setTimeout(function () { - readFile(index + 1); - }, self.processDelay); - } else { - self.unlock(); - numFiles = 0; - } - if (self.removeFromPreviewOnError && $thumb.length) { - $thumb.remove(); - } else { - self._initFileActions(); - $thumb.find('.kv-file-upload').remove(); - } - self.isPersistentError = true; - self.isError = self.isAjaxUpload ? self._showFileError(msg, p1) : self._showError(msg, p2); - self._updateFileDetails(numFiles); - }; - self.fileManager.clearImages(); - $.each(files, function (key, file) { - var func = self.fileTypeSettings.image; - if (func && func(file.type)) { - self.fileManager.totalImages++; - } - }); - readFile = function (i) { - var $error = self.$errorContainer, errors, fm = self.fileManager; - if (i >= numFiles) { - self.unlock(); - if (self.duplicateErrors.length) { - errors = '
  • ' + self.duplicateErrors.join('
  • ') + '
  • '; - if ($error.find('ul').length === 0) { - $h.setHtml($error, self.errorCloseButton + '
      ' + errors + '
    '); - } else { - $error.find('ul').append(errors); - } - $error.fadeIn(self.fadeDelay); - self._handler($error.find('.kv-error-close'), 'click', function () { - $error.fadeOut(self.fadeDelay); - }); - self.duplicateErrors = []; - } - if (self.isAjaxUpload) { - self._raise('filebatchselected', [fm.stack]); - if (fm.count() === 0 && !self.isError) { - self.reset(); - } - } else { - self._raise('filebatchselected', [files]); - } - $container.removeClass('file-thumb-loading'); - $status.html(''); - return; - } - self.lock(true); - var file = files[i], id = self._getFileId(file), previewId = previewInitId + '-' + id, fSizeKB, j, msg, - fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2, - caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000, - fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0, - strTypes = '', fileId, canLoad, fileReaderAborted = false, - func, knownTypes = 0, isImage, txtFlag, processFileLoaded = function () { - var msg = msgProgress.setTokens({ - 'index': i + 1, - 'files': numFiles, - 'percent': 50, - 'name': caption - }); - setTimeout(function () { - $status.html(msg); - self._updateFileDetails(numFiles); - readFile(i + 1); - }, self.processDelay); - if (self._raise('fileloaded', [file, previewId, id, i, reader]) && self.isAjaxUpload) { - fm.add(file); - } - }; - if (!file) { - return; - } - fileId = fm.getId(file); - if (typLen > 0) { - for (j = 0; j < typLen; j++) { - typ1 = fileTypes[j]; - typ2 = self.msgFileTypes[typ1] || typ1; - strTypes += j === 0 ? typ2 : ', ' + typ2; - } - } - if (caption === false) { - readFile(i + 1); - return; - } - if (caption.length === 0) { - msg = self.msgInvalidFileName.replace('{name}', $h.htmlEncode($h.getFileName(file), '[unknown]')); - throwError(msg, file, previewId, i, fileId); - return; - } - if (!$h.isEmpty(fileExt)) { - fileExtExpr = new RegExp('\\.(' + fileExt.join('|') + ')$', 'i'); - } - fSizeKB = fileSize.toFixed(2); - if (self.isAjaxUpload && fm.exists(fileId) || self._getFrame(previewId, true).length) { - var p2 = {id: previewId, index: i, fileId: fileId, file: file, files: files}; - msg = self.msgDuplicateFile.setTokens({name: caption, size: fSizeKB}); - if (self.isAjaxUpload) { - self.duplicateErrors.push(msg); - self.isDuplicateError = true; - self._raise('fileduplicateerror', [file, fileId, caption, fSizeKB, previewId, i]); - readFile(i + 1); - self._updateFileDetails(numFiles); - } else { - self._showError(msg, p2); - self.unlock(); - numFiles = 0; - self._clearFileInput(); - self.reset(); - self._updateFileDetails(numFiles); - } - return; - } - if (self.maxFileSize > 0 && fileSize > self.maxFileSize) { - msg = self.msgSizeTooLarge.setTokens({ - 'name': caption, - 'size': fSizeKB, - 'maxSize': self.maxFileSize - }); - throwError(msg, file, previewId, i, fileId); - return; - } - if (self.minFileSize !== null && fileSize <= $h.getNum(self.minFileSize)) { - msg = self.msgSizeTooSmall.setTokens({ - 'name': caption, - 'size': fSizeKB, - 'minSize': self.minFileSize - }); - throwError(msg, file, previewId, i, fileId); - return; - } - if (!$h.isEmpty(fileTypes) && $h.isArray(fileTypes)) { - for (j = 0; j < fileTypes.length; j += 1) { - typ = fileTypes[j]; - func = settings[typ]; - fileCount += !func || (typeof func !== 'function') ? 0 : (func(file.type, - $h.getFileName(file)) ? 1 : 0); - } - if (fileCount === 0) { - msg = self.msgInvalidFileType.setTokens({name: caption, types: strTypes}); - throwError(msg, file, previewId, i, fileId); - return; - } - } - if (fileCount === 0 && !$h.isEmpty(fileExt) && $h.isArray(fileExt) && !$h.isEmpty(fileExtExpr)) { - chk = $h.compare(caption, fileExtExpr); - fileCount += $h.isEmpty(chk) ? 0 : chk.length; - if (fileCount === 0) { - msg = self.msgInvalidFileExtension.setTokens({name: caption, extensions: strExt}); - throwError(msg, file, previewId, i, fileId); - return; - } - } - if (!self._canPreview(file)) { - canLoad = self.isAjaxUpload && self._raise('filebeforeload', [file, i, reader]); - if (self.isAjaxUpload && canLoad) { - fm.add(file); - } - if (self.showPreview && canLoad) { - $container.addClass('file-thumb-loading'); - self._previewDefault(file); - self._initFileActions(); - } - setTimeout(function () { - if (canLoad) { - self._updateFileDetails(numFiles); - } - readFile(i + 1); - self._raise('fileloaded', [file, previewId, id, i]); - }, 10); - return; - } - isImage = fnImage(file.type, caption); - $status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles)); - $container.addClass('file-thumb-loading'); - reader.onerror = function (evt) { - self._errorHandler(evt, caption); - }; - reader.onload = function (theFile) { - var hex, fileInfo, uint, byte, bytes = [], contents, mime, readImage = function () { - var newReader = new FileReader(); - newReader.onerror = function (theFileNew) { - self._errorHandler(theFileNew, caption); - }; - newReader.onload = function (theFileNew) { - if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) { - fileReaderAborted = true; - self._resetCaption(); - reader.abort(); - $status.html(''); - $container.removeClass('file-thumb-loading'); - self.enable(); - return; - } - self._previewFile(i, file, theFileNew, previewData, fileInfo); - self._initFileActions(); - processFileLoaded(); - }; - newReader.readAsDataURL(file); - }; - fileInfo = {'name': caption, 'type': file.type}; - $.each(settings, function (k, f) { - if (k !== 'object' && k !== 'other' && typeof f === 'function' && f(file.type, caption)) { - knownTypes++; - } - }); - if (knownTypes === 0) { // auto detect mime types from content if no known file types detected - uint = new Uint8Array(theFile.target.result); - for (j = 0; j < uint.length; j++) { - byte = uint[j].toString(16); - bytes.push(byte); - } - hex = bytes.join('').toLowerCase().substring(0, 8); - mime = $h.getMimeType(hex, '', ''); - if ($h.isEmpty(mime)) { // look for ascii text content - contents = $h.arrayBuffer2String(reader.result); - mime = $h.isSvg(contents) ? 'image/svg+xml' : $h.getMimeType(hex, contents, file.type); - } - fileInfo = {'name': caption, 'type': mime}; - isImage = fnImage(mime, ''); - if (isImage) { - readImage(txtFlag); - return; - } - } - if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) { - fileReaderAborted = true; - self._resetCaption(); - reader.abort(); - $status.html(''); - $container.removeClass('file-thumb-loading'); - self.enable(); - return; - } - self._previewFile(i, file, theFile, previewData, fileInfo); - self._initFileActions(); - processFileLoaded(); - }; - reader.onprogress = function (data) { - if (data.lengthComputable) { - var fact = (data.loaded / data.total) * 100, progress = Math.ceil(fact); - msg = msgProgress.setTokens({ - 'index': i + 1, - 'files': numFiles, - 'percent': progress, - 'name': caption - }); - setTimeout(function () { - if (!fileReaderAborted) { - $status.html(msg); - } - }, self.processDelay); - } - }; - if (isImage) { - reader.readAsDataURL(file); - } else { - reader.readAsArrayBuffer(file); - } - }; - - readFile(0); - self._updateFileDetails(numFiles, true); - }, - lock: function (selectMode) { - var self = this, $container = self.$container; - self._resetErrors(); - self.disable(); - if (!selectMode && self.showCancel) { - $container.find('.fileinput-cancel').show(); - } - if (!selectMode && self.showPause) { - $container.find('.fileinput-pause').show(); - } - self._raise('filelock', [self.fileManager.stack, self._getExtraData()]); - return self.$element; - }, - unlock: function (reset) { - var self = this, $container = self.$container; - if (reset === undefined) { - reset = true; - } - self.enable(); - $container.removeClass('is-locked'); - if (self.showCancel) { - $container.find('.fileinput-cancel').hide(); - } - if (self.showPause) { - $container.find('.fileinput-pause').hide(); - } - if (reset) { - self._resetFileStack(); - } - self._raise('fileunlock', [self.fileManager.stack, self._getExtraData()]); - return self.$element; - }, - resume: function () { - var self = this, flag = false, rm = self.resumableManager; - if (!self.enableResumableUpload) { - return self.$element; - } - if (self.paused) { - self._toggleResumableProgress(self.progressPauseTemplate, self.msgUploadResume); - } else { - flag = true; - } - self.paused = false; - if (flag) { - self._toggleResumableProgress(self.progressInfoTemplate, self.msgUploadBegin); - } - setTimeout(function () { - rm.upload(); - }, self.processDelay); - return self.$element; - }, - pause: function () { - var self = this, rm = self.resumableManager, xhr = self.ajaxRequests, len = xhr.length, i, - pct = rm.getProgress(), actions = self.fileActionSettings, tm = self.taskManager, - pool = tm.getPool(rm.id); - if (!self.enableResumableUpload) { - return self.$element; - } else { - if (pool) { - pool.cancel(); - } - } - self._raise('fileuploadpaused', [self.fileManager, rm]); - if (len > 0) { - for (i = 0; i < len; i += 1) { - self.paused = true; - xhr[i].abort(); - } - } - if (self.showPreview) { - self._getThumbs().each(function () { - var $thumb = $(this), fileId = $thumb.attr('data-fileid'), t = self._getLayoutTemplate('stats'), - stats, $indicator = $thumb.find('.file-upload-indicator'); - $thumb.removeClass('file-uploading'); - if ($indicator.attr('title') === actions.indicatorLoadingTitle) { - self._setThumbStatus($thumb, 'Paused'); - stats = t.setTokens({pendingTime: self.msgPaused, uploadSpeed: ''}); - self.paused = true; - self._setProgress(pct, $thumb.find('.file-thumb-progress'), pct + '%', stats); - } - if (!self.fileManager.getFile(fileId)) { - $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled'); - } - }); - } - self._setProgress(101, self.$progress, self.msgPaused); - return self.$element; - }, - cancel: function () { - var self = this, xhr = self.ajaxRequests, - rm = self.resumableManager, tm = self.taskManager, - pool = rm ? tm.getPool(rm.id) : undefined, len = xhr.length, i; - - if (self.enableResumableUpload && pool) { - pool.cancel().done(function () { - self._setProgressCancelled(); - }); - rm.reset(); - self._raise('fileuploadcancelled', [self.fileManager, rm]); - } else { - self._raise('fileuploadcancelled', [self.fileManager]); - } - self._initAjax(); - if (len > 0) { - for (i = 0; i < len; i += 1) { - self.cancelling = true; - xhr[i].abort(); - } - } - self._getThumbs().each(function () { - var $thumb = $(this), fileId = $thumb.attr('data-fileid'), $prog = $thumb.find('.file-thumb-progress'); - $thumb.removeClass('file-uploading'); - self._setProgress(0, $prog); - $prog.hide(); - if (!self.fileManager.getFile(fileId)) { - $thumb.find('.kv-file-upload').removeClass('disabled').removeAttr('disabled'); - $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled'); - } - self.unlock(); - }); - setTimeout(function () { - self._setProgressCancelled(); - }, self.processDelay); - return self.$element; - }, - clear: function () { - var self = this, cap; - if (!self._raise('fileclear')) { - return; - } - self.$btnUpload.removeAttr('disabled'); - self._getThumbs().find('video,audio,img').each(function () { - $h.cleanMemory($(this)); - }); - self._clearFileInput(); - self._resetUpload(); - self.clearFileStack(); - self.isDuplicateError = false; - self.isPersistentError = false; - self._resetErrors(true); - if (self._hasInitialPreview()) { - self._showFileIcon(); - self._resetPreview(); - self._initPreviewActions(); - self.$container.removeClass('file-input-new'); - } else { - self._getThumbs().each(function () { - self._clearObjects($(this)); - }); - if (self.isAjaxUpload) { - self.previewCache.data = {}; - } - self.$preview.html(''); - cap = (!self.overwriteInitial && self.initialCaption.length > 0) ? self.initialCaption : ''; - self.$caption.attr('title', '').val(cap); - $h.addCss(self.$container, 'file-input-new'); - self._validateDefaultPreview(); - } - if (self.$container.find($h.FRAMES).length === 0) { - if (!self._initCaption()) { - self.$captionContainer.removeClass('icon-visible'); - } - } - self._hideFileIcon(); - if (self.focusCaptionOnClear) { - self.$captionContainer.focus(); - } - self._setFileDropZoneTitle(); - self._raise('filecleared'); - return self.$element; - }, - reset: function () { - var self = this; - if (!self._raise('filereset')) { - return; - } - self.lastProgress = 0; - self._resetPreview(); - self.$container.find('.fileinput-filename').text(''); - $h.addCss(self.$container, 'file-input-new'); - if (self.getFrames().length) { - self.$container.removeClass('file-input-new'); - } - self.clearFileStack(); - self._setFileDropZoneTitle(); - return self.$element; - }, - disable: function () { - var self = this, $container = self.$container; - self.isDisabled = true; - self._raise('filedisabled'); - self.$element.attr('disabled', 'disabled'); - $container.addClass('is-locked'); - $h.addCss($container.find('.btn-file'), 'disabled'); - $container.find('.kv-fileinput-caption').addClass('file-caption-disabled'); - $container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button') - .attr('disabled', true); - self._initDragDrop(); - return self.$element; - }, - enable: function () { - var self = this, $container = self.$container; - self.isDisabled = false; - self._raise('fileenabled'); - self.$element.removeAttr('disabled'); - $container.removeClass('is-locked'); - $container.find('.kv-fileinput-caption').removeClass('file-caption-disabled'); - $container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button') - .removeAttr('disabled'); - $container.find('.btn-file').removeClass('disabled'); - self._initDragDrop(); - return self.$element; - }, - upload: function () { - var self = this, fm = self.fileManager, totLen = fm.count(), i, outData, - hasExtraData = !$.isEmptyObject(self._getExtraData()); - if (!self.isAjaxUpload || self.isDisabled || !self._isFileSelectionValid(totLen)) { - return; - } - self.lastProgress = 0; - self._resetUpload(); - if (totLen === 0 && !hasExtraData) { - self._showFileError(self.msgUploadEmpty); - return; - } - self.cancelling = false; - self._showProgress(); - self.lock(); - if (totLen === 0 && hasExtraData) { - self._setProgress(2); - self._uploadExtraOnly(); - return; - } - if (self.enableResumableUpload) { - return self.resume(); - } - if (self.uploadAsync || self.enableResumableUpload) { - outData = self._getOutData(null); - self._raise('filebatchpreupload', [outData]); - self.fileBatchCompleted = false; - self.uploadCache = []; - $.each(self.getFileStack(), function (id) { - var previewId = self._getThumbId(id); - self.uploadCache.push({id: previewId, content: null, config: null, tags: null, append: true}); - }); - self.$preview.find('.file-preview-initial').removeClass($h.SORT_CSS); - self._initSortable(); - } - self._setProgress(2); - self.hasInitData = false; - if (self.uploadAsync) { - i = 0; - $.each(fm.stack, function (id) { - self._uploadSingle(i, id, true); - i++; - }); - return; - } - self._uploadBatch(); - return self.$element; - }, - destroy: function () { - var self = this, $form = self.$form, $cont = self.$container, $el = self.$element, ns = self.namespace; - $(document).off(ns); - $(window).off(ns); - if ($form && $form.length) { - $form.off(ns); - } - if (self.isAjaxUpload) { - self._clearFileInput(); - } - self._cleanup(); - self._initPreviewCache(); - $el.insertBefore($cont).off(ns).removeData(); - $cont.off().remove(); - return $el; - }, - refresh: function (options) { - var self = this, $el = self.$element; - if (typeof options !== 'object' || $h.isEmpty(options)) { - options = self.options; - } else { - options = $.extend(true, {}, self.options, options); - } - self._init(options, true); - self._listen(); - return $el; - }, - zoom: function (frameId) { - var self = this, $frame = self._getFrame(frameId); - self._showModal($frame); - }, - getExif: function (frameId) { - var self = this, $frame = self._getFrame(frameId); - return $frame && $frame.data('exif') || null; - }, - getFrames: function (cssFilter) { - var self = this, $frames; - cssFilter = cssFilter || ''; - $frames = self.$preview.find($h.FRAMES + cssFilter); - if (self.reversePreviewOrder) { - $frames = $($frames.get().reverse()); - } - return $frames; - }, - getPreview: function () { - var self = this; - return { - content: self.initialPreview, - config: self.initialPreviewConfig, - tags: self.initialPreviewThumbTags - }; - } - }; - - $.fn.fileinput = function (option) { - if (!$h.hasFileAPISupport() && !$h.isIE(9)) { - return; - } - var args = Array.apply(null, arguments), retvals = []; - args.shift(); - this.each(function () { - var self = $(this), data = self.data('fileinput'), options = typeof option === 'object' && option, - theme = options.theme || self.data('theme'), l = {}, t = {}, - lang = options.language || self.data('language') || $.fn.fileinput.defaults.language || 'en', opt; - if (!data) { - if (theme) { - t = $.fn.fileinputThemes[theme] || {}; - } - if (lang !== 'en' && !$h.isEmpty($.fn.fileinputLocales[lang])) { - l = $.fn.fileinputLocales[lang] || {}; - } - opt = $.extend(true, {}, $.fn.fileinput.defaults, t, $.fn.fileinputLocales.en, l, options, self.data()); - data = new FileInput(this, opt); - self.data('fileinput', data); - } - - if (typeof option === 'string') { - retvals.push(data[option].apply(data, args)); - } - }); - switch (retvals.length) { - case 0: - return this; - case 1: - return retvals[0]; - default: - return retvals; - } - }; - - var IFRAME_ATTRIBS = 'class="kv-preview-data file-preview-pdf" src="{renderer}?file={data}" {style}'; - - $.fn.fileinput.defaults = { - language: 'zh', - showCaption: true, - showBrowse: true, - showPreview: true, - showRemove: true, - showUpload: true, - showUploadStats: true, - showCancel: null, - showPause: null, - showClose: true, - showUploadedThumbs: true, - showConsoleLogs: false, - browseOnZoneClick: false, - autoReplace: false, - autoOrientImage: function () { // applicable for JPEG images only and non ios safari - var ua = window.navigator.userAgent, webkit = !!ua.match(/WebKit/i), - iOS = !!ua.match(/iP(od|ad|hone)/i), iOSSafari = iOS && webkit && !ua.match(/CriOS/i); - return !iOSSafari; - }, - autoOrientImageInitial: true, - required: false, - rtl: false, - hideThumbnailContent: false, - encodeUrl: true, - focusCaptionOnBrowse: true, - focusCaptionOnClear: true, - generateFileId: null, - previewClass: '', - captionClass: '', - frameClass: 'krajee-default', - mainClass: 'file-caption-main', - mainTemplate: null, - fileSizeGetter: null, - initialCaption: '', - initialPreview: [], - initialPreviewDelimiter: '*$$*', - initialPreviewAsData: false, - initialPreviewFileType: 'image', - initialPreviewConfig: [], - initialPreviewThumbTags: [], - previewThumbTags: {}, - initialPreviewShowDelete: true, - initialPreviewDownloadUrl: '', - removeFromPreviewOnError: false, - deleteUrl: '', - deleteExtraData: {}, - overwriteInitial: true, - sanitizeZoomCache: function (content) { - var $container = $h.createElement(content); - $container.find('input,textarea,select,datalist,form,.file-thumbnail-footer').remove(); - return $container.html(); - }, - previewZoomButtonIcons: { - prev: '', - next: '', - toggleheader: '', - fullscreen: '', - borderless: '', - close: '' - }, - previewZoomButtonClasses: { - prev: 'btn btn-navigate', - next: 'btn btn-navigate', - toggleheader: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - fullscreen: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - borderless: 'btn btn-sm btn-kv btn-default btn-outline-secondary', - close: 'btn btn-sm btn-kv btn-default btn-outline-secondary' - }, - previewTemplates: {}, - previewContentTemplates: {}, - preferIconicPreview: false, - preferIconicZoomPreview: false, - allowedFileTypes: null, - allowedFileExtensions: null, - allowedPreviewTypes: undefined, - allowedPreviewMimeTypes: null, - allowedPreviewExtensions: null, - disabledPreviewTypes: undefined, - disabledPreviewExtensions: ['msi', 'exe', 'com', 'zip', 'rar', 'app', 'vb', 'scr'], - disabledPreviewMimeTypes: null, - defaultPreviewContent: null, - customLayoutTags: {}, - customPreviewTags: {}, - previewFileIcon: '', - previewFileIconClass: 'file-other-icon', - previewFileIconSettings: {}, - previewFileExtSettings: {}, - buttonLabelClass: 'hidden-xs', - browseIcon: ' ', - browseClass: 'btn btn-primary', - removeIcon: '', - removeClass: 'btn btn-default btn-secondary', - cancelIcon: '', - cancelClass: 'btn btn-default btn-secondary', - pauseIcon: '', - pauseClass: 'btn btn-default btn-secondary', - uploadIcon: '', - uploadClass: 'btn btn-default btn-secondary', - uploadUrl: null, - uploadUrlThumb: null, - uploadAsync: true, - uploadParamNames: { - chunkCount: 'chunkCount', - chunkIndex: 'chunkIndex', - chunkSize: 'chunkSize', - chunkSizeStart: 'chunkSizeStart', - chunksUploaded: 'chunksUploaded', - fileBlob: 'fileBlob', - fileId: 'fileId', - fileName: 'fileName', - fileRelativePath: 'fileRelativePath', - fileSize: 'fileSize', - retryCount: 'retryCount' - }, - maxAjaxThreads: 5, - fadeDelay: 800, - processDelay: 100, - queueDelay: 10, // must be lesser than process delay - progressDelay: 0, // must be lesser than process delay - enableResumableUpload: false, - resumableUploadOptions: { - fallback: null, - testUrl: null, // used for checking status of chunks/ files previously / partially uploaded - chunkSize: 2 * 1024, // in KB - maxThreads: 4, - maxRetries: 3, - showErrorLog: true - }, - uploadExtraData: {}, - zoomModalHeight: 480, - minImageWidth: null, - minImageHeight: null, - maxImageWidth: null, - maxImageHeight: null, - resizeImage: false, - resizePreference: 'width', - resizeQuality: 0.92, - resizeDefaultImageType: 'image/jpeg', - resizeIfSizeMoreThan: 0, // in KB - minFileSize: -1, - maxFileSize: 0, - maxFilePreviewSize: 25600, // 25 MB - minFileCount: 0, - maxFileCount: 0, - maxTotalFileCount: 0, - validateInitialCount: false, - msgValidationErrorClass: 'text-danger', - msgValidationErrorIcon: ' ', - msgErrorClass: 'file-error-message', - progressThumbClass: 'progress-bar progress-bar-striped active progress-bar-animated', - progressClass: 'progress-bar bg-success progress-bar-success progress-bar-striped active progress-bar-animated', - progressInfoClass: 'progress-bar bg-info progress-bar-info progress-bar-striped active progress-bar-animated', - progressCompleteClass: 'progress-bar bg-success progress-bar-success', - progressPauseClass: 'progress-bar bg-primary progress-bar-primary progress-bar-striped active progress-bar-animated', - progressErrorClass: 'progress-bar bg-danger progress-bar-danger', - progressUploadThreshold: 99, - previewFileType: 'image', - elCaptionContainer: null, - elCaptionText: null, - elPreviewContainer: null, - elPreviewImage: null, - elPreviewStatus: null, - elErrorContainer: null, - errorCloseButton: $h.closeButton('kv-error-close'), - slugCallback: null, - dropZoneEnabled: true, - dropZoneTitleClass: 'file-drop-zone-title', - fileActionSettings: {}, - otherActionButtons: '', - textEncoding: 'UTF-8', - preProcessUpload: null, - ajaxSettings: {}, - ajaxDeleteSettings: {}, - showAjaxErrorDetails: true, - mergeAjaxCallbacks: false, - mergeAjaxDeleteCallbacks: false, - retryErrorUploads: true, - reversePreviewOrder: false, - usePdfRenderer: function () { - var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; - return !!navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i) || isIE11; - }, - pdfRendererUrl: '', - pdfRendererTemplate: '' - }; - - // noinspection HtmlUnknownAttribute - $.fn.fileinputLocales.en = { - fileSingle: 'file', - filePlural: 'files', - browseLabel: 'Browse …', - removeLabel: 'Remove', - removeTitle: 'Clear all unprocessed files', - cancelLabel: 'Cancel', - cancelTitle: 'Abort ongoing upload', - pauseLabel: 'Pause', - pauseTitle: 'Pause ongoing upload', - uploadLabel: 'Upload', - uploadTitle: 'Upload selected files', - msgNo: 'No', - msgNoFilesSelected: 'No files selected', - msgCancelled: 'Cancelled', - msgPaused: 'Paused', - msgPlaceholder: 'Select {files} ...', - msgZoomModalHeading: 'Detailed Preview', - msgFileRequired: 'You must select a file to upload.', - msgSizeTooSmall: 'File "{name}" ({size} KB) is too small and must be larger than {minSize} KB.', - msgSizeTooLarge: 'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB.', - msgFilesTooLess: 'You must select at least {n} {files} to upload.', - msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}.', - msgTotalFilesTooMany: 'You can upload a maximum of {m} files ({n} files detected).', - msgFileNotFound: 'File "{name}" not found!', - msgFileSecured: 'Security restrictions prevent reading the file "{name}".', - msgFileNotReadable: 'File "{name}" is not readable.', - msgFilePreviewAborted: 'File preview aborted for "{name}".', - msgFilePreviewError: 'An error occurred while reading the file "{name}".', - msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".', - msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.', - msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.', - msgFileTypes: { - 'image': 'image', - 'html': 'HTML', - 'text': 'text', - 'video': 'video', - 'audio': 'audio', - 'flash': 'flash', - 'pdf': 'PDF', - 'object': 'object' - }, - msgUploadAborted: 'The file upload was aborted', - msgUploadThreshold: 'Processing …', - msgUploadBegin: 'Initializing …', - msgUploadEnd: 'Done', - msgUploadResume: 'Resuming upload …', - msgUploadEmpty: 'No valid data available for upload.', - msgUploadError: 'Upload Error', - msgDeleteError: 'Delete Error', - msgProgressError: 'Error', - msgValidationError: 'Validation Error', - msgLoading: 'Loading file {index} of {files} …', - msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.', - msgSelected: '{n} {files} selected', - msgFoldersNotAllowed: 'Drag & drop files only! {n} folder(s) dropped were skipped.', - msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.', - msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.', - msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.', - msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.', - msgImageResizeError: 'Could not get the image dimensions to resize.', - msgImageResizeException: 'Error while resizing the image.
    {errors}
    ', - msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!', - msgAjaxProgressError: '{operation} failed', - msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.', - msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ', - msgPendingTime: '{time} remaining', - msgCalculatingTime: 'calculating time remaining', - ajaxOperations: { - deleteThumb: 'file delete', - uploadThumb: 'file upload', - uploadBatch: 'batch file upload', - uploadExtra: 'form data upload' - }, - dropZoneTitle: 'Drag & drop files here …', - dropZoneClickTitle: '
    (or click to select {files})', - previewZoomButtonTitles: { - prev: 'View previous file', - next: 'View next file', - toggleheader: 'Toggle header', - fullscreen: 'Toggle full screen', - borderless: 'Toggle borderless mode', - close: 'Close detailed preview' - } - }; - - $.fn.fileinputLocales.zh = { - fileSingle: '文件', - filePlural: '个文件', - browseLabel: '选择 …', - removeLabel: '移除', - removeTitle: '清除选中文件', - cancelLabel: '取消', - cancelTitle: '取消进行中的上传', - pauseLabel: 'Pause', - pauseTitle: 'Pause ongoing upload', - uploadLabel: '上传', - uploadTitle: '上传选中文件', - msgNo: '没有', - msgNoFilesSelected: '未选择文件', - msgPaused: 'Paused', - msgCancelled: '取消', - msgPlaceholder: '选择 {files} ...', - msgZoomModalHeading: '详细预览', - msgFileRequired: '必须选择一个文件上传.', - msgSizeTooSmall: '文件 "{name}" ({size} KB) 必须大于限定大小 {minSize} KB.', - msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB.', - msgFilesTooLess: '你必须选择最少 {n} {files} 来上传. ', - msgFilesTooMany: '选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}.', - msgTotalFilesTooMany: 'You can upload a maximum of {m} files ({n} files detected).', - msgFileNotFound: '文件 "{name}" 未找到!', - msgFileSecured: '安全限制,为了防止读取文件 "{name}".', - msgFileNotReadable: '文件 "{name}" 不可读.', - msgFilePreviewAborted: '取消 "{name}" 的预览.', - msgFilePreviewError: '读取 "{name}" 时出现了一个错误.', - msgInvalidFileName: '文件名 "{name}" 包含非法字符.', - msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.', - msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.', - msgFileTypes: { - 'image': 'image', - 'html': 'HTML', - 'text': 'text', - 'video': 'video', - 'audio': 'audio', - 'flash': 'flash', - 'pdf': 'PDF', - 'object': 'object' - }, - msgUploadAborted: '该文件上传被中止', - msgUploadThreshold: '处理中 …', - msgUploadBegin: '正在初始化 …', - msgUploadEnd: '完成', - msgUploadResume: 'Resuming upload …', - msgUploadEmpty: '无效的文件上传.', - msgUploadError: 'Upload Error', - msgDeleteError: 'Delete Error', - msgProgressError: '上传出错', - msgValidationError: '验证错误', - msgLoading: '加载第 {index} 文件 共 {files} …', - msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.', - msgSelected: '{n} {files} 选中', - msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.', - msgImageWidthSmall: '图像文件的"{name}"的宽度必须是至少{size}像素.', - msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.', - msgImageWidthLarge: '图像文件"{name}"的宽度不能超过{size}像素.', - msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.', - msgImageResizeError: '无法获取的图像尺寸调整。', - msgImageResizeException: '调整图像大小时发生错误。
    {errors}
    ', - msgAjaxError: '{operation} 发生错误. 请重试!', - msgAjaxProgressError: '{operation} 失败', - msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.', - msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ', - msgPendingTime: '{time} remaining', - msgCalculatingTime: 'calculating time remaining', - ajaxOperations: { - deleteThumb: '删除文件', - uploadThumb: '上传文件', - uploadBatch: '批量上传', - uploadExtra: '表单数据上传' - }, - dropZoneTitle: '拖拽文件到这里 …
    支持多文件同时上传', - dropZoneClickTitle: '
    (或点击{files}按钮选择文件)', - fileActionSettings: { - removeTitle: '删除文件', - uploadTitle: '上传文件', - downloadTitle: '下载文件', - uploadRetryTitle: '重试', - zoomTitle: '查看详情', - dragTitle: '移动 / 重置', - indicatorNewTitle: '没有上传', - indicatorSuccessTitle: '上传', - indicatorErrorTitle: '上传错误', - indicatorPausedTitle: 'Upload Paused', - indicatorLoadingTitle: '上传 …' - }, - previewZoomButtonTitles: { - prev: '预览上一个文件', - next: '预览下一个文件', - toggleheader: '缩放', - fullscreen: '全屏', - borderless: '无边界模式', - close: '关闭当前预览' - } - }; - - $.fn.fileinput.Constructor = FileInput; - - /** - * Convert automatically file inputs with class 'file' into a bootstrap fileinput control. - */ - $(document).ready(function () { - var $input = $('input.file[type=file]'); - if ($input.length) { - $input.fileinput(); - } - }); -})); \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css deleted file mode 100644 index 493ce6a..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * bootstrap-fileinput v5.1.3 - * http://plugins.krajee.com/file-input - * - * Krajee default styling for bootstrap-fileinput. - * - * Author: Kartik Visweswaran - * Copyright: 2014 - 2020, Kartik Visweswaran, Krajee.com - * - * Licensed under the BSD-3-Clause - * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */ -.file-loading input[type=file],input[type=file].file-loading{width:0;height:0}.file-no-browse{position:absolute;left:50%;bottom:20%;width:1px;height:1px;font-size:0;opacity:0;border:0;background:0;outline:0;box-shadow:none}.kv-hidden,.file-caption-icon,.file-zoom-dialog .modal-header:before,.file-zoom-dialog .modal-header:after,.file-input-new .file-preview,.file-input-new .close,.file-input-new .glyphicon-file,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .no-browse .input-group-btn,.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-ajax-new .no-browse .input-group-btn,.hide-content .kv-file-content,.is-locked .fileinput-upload-button,.is-locked .fileinput-remove-button{display:none}.btn-file input[type=file],.file-caption-icon,.file-preview .fileinput-remove,.krajee-default .file-thumb-progress,.file-zoom-dialog .btn-navigate,.file-zoom-dialog .floating-buttons{position:absolute}.file-caption-icon .kv-caption-icon{line-height:inherit}.file-input,.file-loading:before,.btn-file,.file-caption,.file-preview,.krajee-default.file-preview-frame,.krajee-default .file-thumbnail-footer,.file-zoom-dialog .modal-dialog{position:relative}.file-error-message pre,.file-error-message ul,.krajee-default .file-actions,.krajee-default .file-other-error{text-align:left}.file-error-message pre,.file-error-message ul{margin:0}.krajee-default .file-drag-handle,.krajee-default .file-upload-indicator{float:left;margin-top:10px;width:16px;height:16px}.file-thumb-progress .progress,.file-thumb-progress .progress-bar{font-family:Verdana,Helvetica,sans-serif;font-size:.7rem}.krajee-default .file-thumb-progress .progress,.kv-upload-progress .progress{background-color:#ccc}.krajee-default .file-caption-info,.krajee-default .file-size-info{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:160px;height:15px;margin:auto}.file-zoom-content>.file-object.type-video,.file-zoom-content>.file-object.type-flash,.file-zoom-content>.file-object.type-image{max-width:100%;max-height:100%;width:auto}.file-zoom-content>.file-object.type-video,.file-zoom-content>.file-object.type-flash{height:100%}.file-zoom-content>.file-object.type-pdf,.file-zoom-content>.file-object.type-html,.file-zoom-content>.file-object.type-text,.file-zoom-content>.file-object.type-default{width:100%}.file-loading:before{content:" Loading...";display:inline-block;padding-left:20px;line-height:16px;font-size:13px;font-variant:small-caps;color:#999;background:transparent url(loading.gif) top left no-repeat}.file-object{margin:0 0 -5px 0;padding:0}.btn-file{overflow:hidden}.btn-file input[type=file]{top:0;left:0;min-width:100%;min-height:100%;text-align:right;opacity:0;background:none repeat scroll 0 0 transparent;cursor:inherit;display:block}.btn-file ::-ms-browse{font-size:10000px;width:100%;height:100%}.file-caption .file-caption-name{width:100%;margin:0;padding:0;box-shadow:none;border:0;background:0;outline:0}.file-caption.icon-visible .file-caption-icon{display:inline-block}.file-caption.icon-visible .file-caption-name{padding-left:15px}.file-caption-icon{left:8px}.file-error-message{color:#a94442;background-color:#f2dede;margin:5px;border:1px solid #ebccd1;border-radius:4px;padding:15px}.file-error-message pre{margin:5px 0}.file-caption-disabled{background-color:#eee;cursor:not-allowed;opacity:1}.file-preview{border-radius:5px;border:1px solid #ddd;padding:8px;width:100%;margin-bottom:5px}.file-preview .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.file-preview .fileinput-remove{top:1px;right:1px;line-height:10px}.file-preview .clickable{cursor:pointer}.file-preview-image{font:40px Impact,Charcoal,sans-serif;color:#008000;width:auto;height:auto;max-width:100%;max-height:100%}.krajee-default.file-preview-frame{margin:8px;border:1px solid rgba(0,0,0,0.2);box-shadow:0 0 10px 0 rgba(0,0,0,0.2);padding:6px;float:left;text-align:center}.krajee-default.file-preview-frame .kv-file-content{width:213px;height:160px}.krajee-default .file-preview-other-frame{display:flex;align-items:center;justify-content:center}.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered{width:400px}.krajee-default.file-preview-frame[data-template="audio"] .kv-file-content{width:240px;height:55px}.krajee-default.file-preview-frame .file-thumbnail-footer{height:70px}.krajee-default.file-preview-frame:not(.file-preview-error):hover{border:1px solid rgba(0,0,0,0.3);box-shadow:0 0 10px 0 rgba(0,0,0,0.4)}.krajee-default .file-preview-text{color:#428bca;border:1px solid #ddd;outline:0;resize:none}.krajee-default .file-preview-html{border:1px solid #ddd}.krajee-default .file-other-icon{font-size:6em;line-height:1}.krajee-default .file-footer-buttons{float:right}.krajee-default .file-footer-caption{display:block;text-align:center;padding-top:4px;font-size:11px;color:#777;margin-bottom:30px}.file-upload-stats{font-size:10px;text-align:center;width:100%}.kv-upload-progress .file-upload-stats{font-size:12px;margin:-10px 0 5px}.krajee-default .file-preview-error{opacity:.65;box-shadow:none}.krajee-default .file-thumb-progress{top:37px;left:0;right:0}.krajee-default.kvsortable-ghost{background:#e1edf7;border:2px solid #a1abff}.krajee-default .file-preview-other:hover{opacity:.8}.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover{color:#000}.kv-upload-progress .progress{height:20px;margin:10px 0;overflow:hidden}.kv-upload-progress .progress-bar{height:11px;font-family:Verdana,Helvetica,sans-serif}.file-zoom-dialog .file-other-icon{font-size:22em;font-size:50vmin}.file-zoom-dialog .modal-dialog{width:auto}.file-zoom-dialog .modal-header{display:flex;align-items:center;justify-content:space-between}.file-zoom-dialog .btn-navigate{padding:0;margin:-60px 0 0;font-size:60px;background:transparent;text-decoration:none;outline:0;opacity:.7;top:50%;color:#1c94c4}.file-zoom-dialog .btn-navigate:not([disabled]):hover{outline:0;box-shadow:none;opacity:.6}.file-zoom-dialog .floating-buttons{top:5px;right:10px}.file-zoom-dialog .btn-navigate[disabled]{opacity:.3}.file-zoom-dialog .btn-prev{left:1px}.file-zoom-dialog .btn-next{right:1px}.file-zoom-dialog .kv-zoom-title{font-weight:300;color:#999;max-width:50%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-input-new .no-browse .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.file-input-ajax-new .no-browse .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.file-caption-main{width:100%}.file-thumb-loading{background:transparent url(loading.gif) no-repeat scroll center center content-box!important}.file-drop-zone{border:1px dashed #aaa;min-height:260px;border-radius:4px;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone.clickable:hover{border:2px dashed #999}.file-drop-zone.clickable:focus{border:2px solid #5acde2}.file-drop-zone .file-preview-thumbnails{cursor:default}.file-drop-zone-title{color:#aaa;font-size:1.6em;text-align:center;padding:85px 10px;cursor:default}.file-highlighted{border:2px dashed #999!important;background-color:#eee}.file-uploading{background:url(loading-sm.gif) no-repeat center bottom 10px;opacity:.65}.file-zoom-fullscreen .modal-dialog{min-width:100%;margin:0}.file-zoom-fullscreen .modal-content{border-radius:0;box-shadow:none;min-height:100vh}.file-zoom-fullscreen .modal-body{overflow-y:auto}.floating-buttons{z-index:3000}.floating-buttons .btn-kv{margin-left:3px;z-index:3000}.kv-zoom-actions .btn-kv{margin-left:3px}.file-zoom-content{text-align:center;min-height:300px}.file-zoom-content .file-preview-image{max-height:100%}.file-zoom-content .file-preview-video{max-height:100%}.file-zoom-content>.file-object.type-image{height:auto;min-height:inherit}.file-zoom-content>.file-object.type-audio{width:auto;height:30px}@media(min-width:576px){.file-zoom-dialog .modal-dialog{max-width:500px}}@media(min-width:992px){.file-zoom-dialog .modal-lg{max-width:800px}}@media(max-width:767px){.file-preview-thumbnails{display:flex;justify-content:center;align-items:center;flex-direction:column}.file-zoom-dialog .modal-header{flex-direction:column}}@media(max-width:350px){.krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content{width:160px}}@media(max-width:420px){.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered{width:100%}}.file-loading[dir=rtl]:before{background:transparent url(loading.gif) top right no-repeat;padding-left:0;padding-right:20px}.clickable .file-drop-zone-title{cursor:pointer}.file-sortable .file-drag-handle:hover{opacity:.7}.file-sortable .file-drag-handle{cursor:grab;opacity:1}.file-grabbing,.file-grabbing *{cursor:not-allowed!important}.file-grabbing .file-preview-thumbnails *{cursor:grabbing!important}.file-preview-frame.sortable-chosen{background-color:#d9edf7;border-color:#17a2b8;box-shadow:none!important}.file-preview .kv-zoom-cache{display:none} \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js deleted file mode 100644 index 763f17c..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * bootstrap-fileinput v5.1.3 - * http://plugins.krajee.com/file-input - * - * Author: Kartik Visweswaran - * Copyright: 2014 - 2020, Kartik Visweswaran, Krajee.com - * - * Licensed under the BSD-3-Clause - * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=e(require("jquery")):e(window.jQuery)}(function(e){e.fn.fileinputLocales={},e.fn.fileinputThemes={},String.prototype.setTokens=function(e){var t,i,a=""+this;for(t in e){e.hasOwnProperty(t)&&(i=RegExp("{"+t+"}","g"),a=a.replace(i,e[t]))}return a},Array.prototype.flatMap||(Array.prototype.flatMap=function(e){return[].concat(this.map(e))});var t,i;t={FRAMES:".kv-preview-thumb",SORT_CSS:"file-sortable",INIT_FLAG:"init-",OBJECT_PARAMS:'\n\n\n\n\n\n',DEFAULT_PREVIEW:'
    \n{previewFileIcon}\n
    ',MODAL_ID:"kvFileinputModal",MODAL_EVENTS:["show","shown","hide","hidden","loaded"],logMessages:{ajaxError:"{status}: {error}. Error Details: {text}.",badDroppedFiles:"Error scanning dropped files!",badExifParser:"Error loading the piexif.js library. {details}",badInputType:'The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.',exifWarning:'To avoid this warning, either set "autoOrientImage" to "false" OR ensure you have loaded the "piexif.js" library correctly on your page before the "fileinput.js" script.',invalidChunkSize:'Invalid upload chunk size: "{chunkSize}". Resumable uploads are disabled.',invalidThumb:'Invalid thumb frame with id: "{id}".',noResumableSupport:"The browser does not support resumable or chunk uploads.",noUploadUrl:'The "uploadUrl" is not set. Ajax uploads and resumable uploads have been disabled.',retryStatus:"Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.",chunkQueueError:"Could not push task to ajax pool for chunk index # {index}.",resumableMaxRetriesReached:"Maximum resumable ajax retries ({n}) reached.",resumableRetryError:"Could not retry the resumable request (try # {n})... aborting.",resumableAborting:"Aborting / cancelling the resumable request."},objUrl:window.URL||window.webkitURL,now:function(){return(new Date).getTime()},round:function(e){return e=parseFloat(e),isNaN(e)?0:Math.floor(Math.round(e))},getArray:function(e){var t,i=[],a=e&&e.length||0;for(t=0;a>t;t++){i.push(e[t])}return i},getFileRelativePath:function(e){return(e.newPath||e.relativePath||e.webkitRelativePath||t.getFileName(e)||null)+""},getFileId:function(e,i){var a=t.getFileRelativePath(e);return"function"==typeof i?i(e):e&&a?e.size+"_"+encodeURIComponent(a).replace(/%/g,"_"):null},getFrameSelector:function(e,t){return t=t||"",'[id="'+e+'"]'+t},getZoomSelector:function(e,i){return t.getFrameSelector("zoom-"+e,i)},getFrameElement:function(e,i,a){return e.find(t.getFrameSelector(i,a))},getZoomElement:function(e,i,a){return e.find(t.getZoomSelector(i,a))},getElapsed:function(i){var a=i,r="",n={},o={year:31536000,month:2592000,week:604800,day:86400,hour:3600,minute:60,second:1};return t.getObjectKeys(o).forEach(function(e){n[e]=Math.floor(a/o[e]),a-=n[e]*o[e]}),e.each(n,function(e,t){t>0&&(r+=(r?" ":"")+t+e.substring(0,1))}),r},debounce:function(e,t){var i;return function(){var a=arguments,r=this;clearTimeout(i),i=setTimeout(function(){e.apply(r,a)},t)}},stopEvent:function(e){e.stopPropagation(),e.preventDefault()},getFileName:function(e){return e?e.fileName||e.name||"":""},createObjectURL:function(e){return t.objUrl&&t.objUrl.createObjectURL&&e?t.objUrl.createObjectURL(e):""},revokeObjectURL:function(e){t.objUrl&&t.objUrl.revokeObjectURL&&e&&t.objUrl.revokeObjectURL(e)},compare:function(e,t,i){return void 0!==e&&(i?e===t:e.match(t))},isIE:function(e){var t,i;return"Microsoft Internet Explorer"!==navigator.appName?!1:10===e?RegExp("msie\\s"+e,"i").test(navigator.userAgent):(t=document.createElement("div"),t.innerHTML="",i=t.getElementsByTagName("i").length,document.body.appendChild(t),t.parentNode.removeChild(t),i)},canOrientImage:function(t){var i=e(document.createElement("img")).css({width:"1px",height:"1px"}).insertAfter(t),a=i.css("image-orientation");return i.remove(),!!a},canAssignFilesToInput:function(){var e=document.createElement("input");try{return e.type="file",e.files=null,!0}catch(t){return !1}},getDragDropFolders:function(e){var t,i,a=e?e.length:0,r=0;if(a>0&&e[0].webkitGetAsEntry()){for(t=0;a>t;t++){i=e[t].webkitGetAsEntry(),i&&i.isDirectory&&r++}}return r},initModal:function(t){var i=e("body");i.length&&t.appendTo(i)},isFunction:function(e){return"function"==typeof e},isEmpty:function(i,a){return void 0===i||null===i||!t.isFunction(i)&&(0===i.length||a&&""===e.trim(i))},isArray:function(e){return Array.isArray(e)||"[object Array]"===Object.prototype.toString.call(e)},ifSet:function(e,t,i){return i=i||"",t&&"object"==typeof t&&e in t?t[e]:i},cleanArray:function(e){return e instanceof Array||(e=[]),e.filter(function(e){return void 0!==e&&null!==e})},spliceArray:function(t,i,a){var r,n,o=0,l=[];if(!(t instanceof Array)){return[]}for(n=e.extend(!0,[],t),a&&n.reverse(),r=0;r=0?atob(e.split(",")[1]):decodeURIComponent(e.split(",")[1]),a=new ArrayBuffer(i.length),r=new Uint8Array(a),n=0;nl;){switch(i=n[l++],i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(i);break;case 12:case 13:a=n[l++],o+=String.fromCharCode((31&i)<<6|63&a);break;case 14:a=n[l++],r=n[l++],o+=String.fromCharCode((15&i)<<12|(63&a)<<6|(63&r)<<0)}}return o},isHtml:function(e){var t=document.createElement("div");t.innerHTML=e;for(var i=t.childNodes,a=i.length;a--;){if(1===i[a].nodeType){return !0}}return !1},isSvg:function(e){return e.match(/^\s*<\?xml/i)&&(e.match(/"+t+""))},uniqId:function(){return((new Date).getTime()+Math.floor(Math.random()*Math.pow(10,15))).toString(36)},cspBuffer:{CSP_ATTRIB:"data-csp-01928735",domElementsStyles:{},stash:function(i){var a=this,r=e.parseHTML("
    "+i+"
    "),n=e(r);n.find("[style]").each(function(i,r){var n=e(r),o=n.attr("style"),l=t.uniqId(),s={};o&&o.length&&(-1===o.indexOf(";")&&(o+=";"),o.slice(0,o.length-1).split(";").map(function(e){e=e.split(":"),e[0]&&(s[e[0]]=e[1]?e[1]:"")}),a.domElementsStyles[l]=s,n.removeAttr("style").attr(a.CSP_ATTRIB,l))}),n.filter("*").removeAttr("style");var o=Object.values?Object.values(r):Object.keys(r).map(function(e){return r[e]});return o.flatMap(function(e){return e.innerHTML}).join("")},apply:function(t){var i=this,a=e(t);a.find("["+i.CSP_ATTRIB+"]").each(function(t,a){var r=e(a),n=r.attr(i.CSP_ATTRIB),o=i.domElementsStyles[n];o&&r.css(o),r.removeAttr(i.CSP_ATTRIB)}),i.domElementsStyles={}}},setHtml:function(e,i){var a=t.cspBuffer;return e.html(a.stash(i)),a.apply(e),e},htmlEncode:function(e,t){return void 0===e?t||null:e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},replaceTags:function(t,i){var a=t;return i?(e.each(i,function(e,t){"function"==typeof t&&(t=t()),a=a.split(e).join(t)}),a):a},cleanMemory:function(e){var i=e.is("img")?e.attr("src"):e.find("source").attr("src");t.revokeObjectURL(i)},findFileName:function(e){var t=e.lastIndexOf("/");return -1===t&&(t=e.lastIndexOf("\\")),e.split(e.substring(t,t+1)).pop()},checkFullScreen:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},toggleFullScreen:function(e){var i=document,a=i.documentElement,r=t.checkFullScreen();a&&e&&!r?a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):r&&(i.exitFullscreen?i.exitFullscreen():i.msExitFullscreen?i.msExitFullscreen():i.mozCancelFullScreen?i.mozCancelFullScreen():i.webkitExitFullscreen&&i.webkitExitFullscreen())},moveArray:function(t,i,a,r){var n=e.extend(!0,[],t);if(r&&n.reverse(),a>=n.length){for(var o=a-n.length;o--+1;){n.push(void 0)}}return n.splice(a,0,n.splice(i,1)[0]),r&&n.reverse(),n},closeButton:function(e){return e=e?"close "+e:"close",''},getRotation:function(e){switch(e){case 2:return"rotateY(180deg)";case 3:return"rotate(180deg)";case 4:return"rotate(180deg) rotateY(180deg)";case 5:return"rotate(270deg) rotateY(180deg)";case 6:return"rotate(90deg)";case 7:return"rotate(90deg) rotateY(180deg)";case 8:return"rotate(270deg)";default:return""}},setTransform:function(e,t){e&&(e.style.transform=t,e.style.webkitTransform=t,e.style["-moz-transform"]=t,e.style["-ms-transform"]=t,e.style["-o-transform"]=t)},getObjectKeys:function(t){var i=[];return t&&e.each(t,function(e){i.push(e)}),i},getObjectSize:function(e){return t.getObjectKeys(e).length},whenAll:function(i){var a,r,n,o,l,s,d=[].slice,c=1===arguments.length&&t.isArray(i)?i:d.call(arguments),u=e.Deferred(),p=0,f=c.length,g=f;for(n=o=l=Array(f),s=function(e,t,i){return function(){i!==c&&p++,u.notifyWith(t[e]=this,i[e]=d.call(arguments)),--g||u[(p?"reject":"resolve")+"With"](t,i)}},a=0;f>a;a++){(r=c[a])&&e.isFunction(r.promise)?r.promise().done(s(a,l,c)).fail(s(a,n,o)):(u.notifyWith(this,r),--g)}return g||u.resolveWith(l,c),u.promise()}},i=function(i,a){var r=this;r.$element=e(i),r.$parent=r.$element.parent(),r._validate()&&(r.isPreviewable=t.hasFileAPISupport(),r.isIE9=t.isIE(9),r.isIE10=t.isIE(10),(r.isPreviewable||r.isIE9)&&(r._init(a),r._listen()),r.$element.removeClass("file-loading"))},i.prototype={constructor:i,_cleanup:function(){var e=this;e.reader=null,e.clearFileStack(),e.fileBatchCompleted=!0,e.isError=!1,e.isDuplicateError=!1,e.isPersistentError=!1,e.cancelling=!1,e.paused=!1,e.lastProgress=0,e._initAjax()},_isAborted:function(){var e=this;return e.cancelling||e.paused},_initAjax:function(){var i=this,a=i.taskManager={pool:{},addPool:function(e){return a.pool[e]=new a.TasksPool(e)},getPool:function(e){return a.pool[e]},addTask:function(e,t){return new a.Task(e,t)},TasksPool:function(i){var r=this;r.id=i,r.cancelled=!1,r.cancelledDeferrer=e.Deferred(),r.tasks={},r.addTask=function(e,t){return r.tasks[e]=new a.Task(e,t)},r.size=function(){return t.getObjectSize(r.tasks)},r.run=function(i){var a,n,o,l=0,s=!1,d=t.getObjectKeys(r.tasks).map(function(e){return r.tasks[e]}),c=[],u=e.Deferred();if(r.cancelled){return r.cancelledDeferrer.resolve(),u.reject()}if(!i){var p=t.getObjectKeys(r.tasks).map(function(e){return r.tasks[e].deferred});return t.whenAll(p).done(function(){var e=t.getArray(arguments);r.cancelled?(u.reject.apply(null,e),r.cancelledDeferrer.resolve()):(u.resolve.apply(null,e),r.cancelledDeferrer.reject())}).fail(function(){var e=t.getArray(arguments);u.reject.apply(null,e),r.cancelled?r.cancelledDeferrer.resolve():r.cancelledDeferrer.reject()}),e.each(r.tasks,function(e){a=r.tasks[e],a.run()}),u}for(n=function(t){e.when(t.deferred).fail(function(){s=!0,o.apply(null,arguments)}).always(o)},o=function(){var e=t.getArray(arguments);return u.notify(e),c.push(e),r.cancelled?(u.reject.apply(null,c),void r.cancelledDeferrer.resolve()):(c.length===r.size()&&(s?u.reject.apply(null,c):u.resolve.apply(null,c)),void (d.length&&(a=d.shift(),n(a),a.run())))};d.length&&l++0&&s.maxTotalFileCounti.file.size?i.file.size:e},getTotalChunks:function(){var e=parseFloat(i.chunkSize);return !isNaN(e)&&e>0?Math.ceil(i.file.size/e):0},getProgress:function(){var e=i.processedResumables(),t=i.chunkCount;return 0===t?0:Math.ceil(e/t*100)},checkAborted:function(e){a._isAborted()&&(clearInterval(e),a.unlock())},upload:function(){var e,r=o.getIdList(),n="new";e=setInterval(function(){var l;if(i.checkAborted(e),"new"===n&&(a.lock(),n="processing",l=r.shift(),o.initStats(l),o.stack[l]&&(i.init(l,o.stack[l],o.getIndex(l)),i.processUpload())),!o.isPending(l)&&i.completed&&(n="new"),o.isProcessed()){var s=a.$preview.find(".file-preview-initial");s.length&&(t.addCss(s,t.SORT_CSS),a._initSortable()),clearInterval(e),a._clearFileInput(),a.unlock(),setTimeout(function(){var e=a.previewCache.data;e&&(a.initialPreview=e.content,a.initialPreviewConfig=e.config,a.initialPreviewThumbTags=e.tags),a._raise("filebatchuploadcomplete",[a.initialPreview,a.initialPreviewConfig,a.initialPreviewThumbTags,a._getExtraData()])},a.processDelay)}},a.processDelay)},uploadResumable:function(){var e,t,n=a.taskManager,o=i.chunkCount;for(t=n.addPool(i.id),e=0;o>e;e++){i.logs[e]=!(!i.chunksProcessed[i.id]||!i.chunksProcessed[i.id][e]),i.logs[e]||i.pushAjax(e,0)}t.run(r.maxThreads).done(function(){i.setProcessed("success")}).fail(function(){i.setProcessed(t.cancelled?"cancel":"error")})},processUpload:function(){var n,l,s,d,c,u,p,f=i.id;return r.testUrl?(n=new FormData,l=o.stack[f],a._setUploadData(n,{fileId:f,fileName:l.fileName,fileSize:l.size,fileRelativePath:l.relativePath,chunkSize:i.chunkSize,chunkCount:i.chunkCount}),s=function(e){p=a._getOutData(n,e),a._raise("filetestbeforesend",[f,o,i,p])},d=function(r,l,s){p=a._getOutData(n,s,r);var d=a.uploadParamNames,c=d.chunksUploaded||"chunksUploaded",u=[f,o,i,p];r[c]&&t.isArray(r[c])?(i.chunksProcessed[f]||(i.chunksProcessed[f]={}),e.each(r[c],function(e,t){i.logs[t]=!0,i.chunksProcessed[f][t]=!0}),i.chunksProcessed[f].data=r,a._raise("filetestsuccess",u)):a._raise("filetesterror",u),i.uploadResumable()},c=function(e,t,r){p=a._getOutData(n,e),a._raise("filetestajaxerror",[f,o,i,p]),i.setAjaxError(e,t,r,!0),i.uploadResumable()},u=function(){a._raise("filetestcomplete",[f,o,i,a._getOutData(n)])},void a._ajaxSubmit(s,d,u,c,n,f,i.fileIndex,r.testUrl)):void i.uploadResumable()},pushAjax:function(e,t){var r=a.taskManager,o=r.getPool(i.id);o.addTask(o.size()+1,function(e){var t,r=i.stack.shift();t=r[0],i.chunksProcessed[i.id]&&i.chunksProcessed[i.id][t]?a._log(n.chunkQueueError,{index:t}):i.sendAjax(t,r[1],e)}),i.stack.push([e,t])},sendAjax:function(e,l,s){var d,c=i.chunkSize,u=i.id,p=i.file,f=i.$thumb,g=t.logMessages,m=i.$btnDelete,h=function(e,t){t&&(e=e.setTokens(t)),e="Error processing resumable ajax request. "+e,a._log(e),s.reject(e)};if(!i.chunksProcessed[u]||!i.chunksProcessed[u][e]){if(l>r.maxRetries){return h(g.resumableMaxRetriesReached,{n:r.maxRetries}),void i.setProcessed("error")}var v,w,b,_,C,y,x=p.slice?"slice":p.mozSlice?"mozSlice":p.webkitSlice?"webkitSlice":"slice",T=p[x](c*e,c*(e+1));v=new FormData,d=o.stack[u],a._setUploadData(v,{chunkCount:i.chunkCount,chunkIndex:e,chunkSize:c,chunkSizeStart:c*e,fileBlob:[T,i.fileName],fileId:u,fileName:i.fileName,fileRelativePath:d.relativePath,fileSize:p.size,retryCount:l}),i.$progress&&i.$progress.length&&i.$progress.show(),b=function(r){w=a._getOutData(v,r),a.showPreview&&(f.hasClass("file-preview-success")||(a._setThumbStatus(f,"Loading"),t.addCss(f,"file-uploading")),m.attr("disabled",!0)),a._raise("filechunkbeforesend",[u,e,l,o,i,w])},_=function(t,d,c){if(a._isAborted()){return void h(g.resumableAborting)}w=a._getOutData(v,c,t);var p=a.uploadParamNames,f=p.chunkIndex||"chunkIndex",m=[u,e,l,o,i,w];t.error?(r.showErrorLog&&a._log(n.retryStatus,{retry:l+1,filename:i.fileName,chunk:e}),i.pushAjax(e,l+1),i.error=t.error,a._raise("filechunkerror",m)):(i.logs[t[f]]=!0,i.chunksProcessed[u]||(i.chunksProcessed[u]={}),i.chunksProcessed[u][t[f]]=!0,i.chunksProcessed[u].data=t,s.resolve.call(null,t),a._raise("filechunksuccess",m),i.check())},C=function(t,r,n){return a._isAborted()?void h(g.resumableAborting):(w=a._getOutData(v,t),i.setAjaxError(t,r,n),a._raise("filechunkajaxerror",[u,e,l,o,i,w]),i.pushAjax(e,l+1),void h(g.resumableRetryError,{n:l-1}))},y=function(){a._isAborted()||a._raise("filechunkcomplete",[u,e,l,o,i,a._getOutData(v)])},a._ajaxSubmit(b,_,y,C,v,u,i.fileIndex)}}},i.reset()}},_initTemplateDefaults:function(){var i,a,r,n,o,l,s,d,c,u,p,f,g,m,h,v,w,b,_,C,y,x,T,P,F,E,k,S,I,A,D,z,j,U,M,$,R,O,B,L,N,Z,H=this,W=function(e,i){return'\n"+t.DEFAULT_PREVIEW+"\n\n"};i='{preview}\n
    \n
    \n {caption}\n
    \n {remove}\n {cancel}\n {pause}\n {upload}\n {browse}\n
    \n
    ',a='{preview}\n
    \n
    \n{remove}\n{cancel}\n{upload}\n{browse}\n',r='
    \n {close}
    \n
    \n
    \n
    \n
    \n
    \n
    ',o=t.closeButton("fileinput-remove"),n='',l='
    \n \n \n
    ',s='',d='{icon} {label}',c='
    {icon} {label}
    ',Z=t.MODAL_ID+"Label",u='',p='\n',f='
    \n
    \n {status}\n
    \n
    {stats}',N='
    {pendingTime} {uploadSpeed}
    ',g=" ({sizeText})",m='',h='
    \n \n
    \n{drag}\n
    ',v='\n',w='',b='{downloadIcon}',_='',C='{dragIcon}',y='
    {indicator}
    ',x='
    \n',P=x+' title="{caption}">
    \n',F="
    {footer}\n{zoomCache}
    \n",E="{content}\n",O=" {style}",k=W("html","text/html"),I=W("text","text/plain;charset=UTF-8"),$=W("pdf","application/pdf"),S='{alt}\n",A='",D='",z='\n",j='\n",U='\n",M='\n\n'+t.OBJECT_PARAMS+" "+t.DEFAULT_PREVIEW+"\n\n",R='
    \n"+t.DEFAULT_PREVIEW+"\n
    \n",B='
    {zoomContent}
    ',L={width:"100%",height:"100%","min-height":"480px"},H._isPdfRendered()&&($=H.pdfRendererTemplate.replace("{renderer}",H._encodeURI(H.pdfRendererUrl))),H.defaults={layoutTemplates:{main1:i,main2:a,preview:r,close:o,fileIcon:n,caption:l,modalMain:u,modal:p,progress:f,stats:N,size:g,footer:m,indicator:y,actions:h,actionDelete:v,actionUpload:w,actionDownload:b,actionZoom:_,actionDrag:C,btnDefault:s,btnLink:d,btnBrowse:c,zoomCache:B},previewMarkupTags:{tagBefore1:T,tagBefore2:P,tagAfter:F},previewContentTemplates:{generic:E,html:k,image:S,text:I,office:A,gdocs:D,video:z,audio:j,flash:U,object:M,pdf:$,other:R},allowedPreviewTypes:["image","html","text","video","audio","flash","pdf","object"],previewTemplates:{},previewSettings:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:{width:"213px",height:"160px"},text:{width:"213px",height:"160px"},office:{width:"213px",height:"160px"},gdocs:{width:"213px",height:"160px"},video:{width:"213px",height:"160px"},audio:{width:"100%",height:"30px"},flash:{width:"213px",height:"160px"},object:{width:"213px",height:"160px"},pdf:{width:"100%",height:"160px",position:"relative"},other:{width:"213px",height:"160px"}},previewSettingsSmall:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:{width:"100%",height:"160px"},text:{width:"100%",height:"160px"},office:{width:"100%",height:"160px"},gdocs:{width:"100%",height:"160px"},video:{width:"100%",height:"auto"},audio:{width:"100%",height:"30px"},flash:{width:"100%",height:"auto"},object:{width:"100%",height:"auto"},pdf:{width:"100%",height:"160px"},other:{width:"100%",height:"160px"}},previewZoomSettings:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:L,text:L,office:{width:"100%",height:"100%","max-width":"100%","min-height":"480px"},gdocs:{width:"100%",height:"100%","max-width":"100%","min-height":"480px"},video:{width:"auto",height:"100%","max-width":"100%"},audio:{width:"100%",height:"30px"},flash:{width:"auto",height:"480px"},object:{width:"auto",height:"100%","max-width":"100%","min-height":"480px"},pdf:L,other:{width:"auto",height:"100%","min-height":"480px"}},mimeTypeAliases:{"video/quicktime":"video/mp4"},fileTypeSettings:{image:function(e,i){return t.compare(e,"image.*")&&!t.compare(e,/(tiff?|wmf)$/i)||t.compare(i,/\.(gif|png|jpe?g)$/i)},html:function(e,i){return t.compare(e,"text/html")||t.compare(i,/\.(htm|html)$/i)},office:function(e,i){return t.compare(e,/(word|excel|powerpoint|office)$/i)||t.compare(i,/\.(docx?|xlsx?|pptx?|pps|potx?)$/i)},gdocs:function(e,i){return t.compare(e,/(word|excel|powerpoint|office|iwork-pages|tiff?)$/i)||t.compare(i,/\.(docx?|xlsx?|pptx?|pps|potx?|rtf|ods|odt|pages|ai|dxf|ttf|tiff?|wmf|e?ps)$/i)},text:function(e,i){return t.compare(e,"text.*")||t.compare(i,/\.(xml|javascript)$/i)||t.compare(i,/\.(txt|md|nfo|ini|json|php|js|css)$/i)},video:function(e,i){return t.compare(e,"video.*")&&(t.compare(e,/(ogg|mp4|mp?g|mov|webm|3gp)$/i)||t.compare(i,/\.(og?|mp4|webm|mp?g|mov|3gp)$/i))},audio:function(e,i){return t.compare(e,"audio.*")&&(t.compare(i,/(ogg|mp3|mp?g|wav)$/i)||t.compare(i,/\.(og?|mp3|mp?g|wav)$/i))},flash:function(e,i){return t.compare(e,"application/x-shockwave-flash",!0)||t.compare(i,/\.(swf)$/i)},pdf:function(e,i){return t.compare(e,"application/pdf",!0)||t.compare(i,/\.(pdf)$/i)},object:function(){return !0},other:function(){return !0}},fileActionSettings:{showRemove:!0,showUpload:!0,showDownload:!0,showZoom:!0,showDrag:!0,removeIcon:'',removeClass:"btn btn-sm btn-kv btn-default btn-outline-secondary",removeErrorClass:"btn btn-sm btn-kv btn-danger",removeTitle:"Remove file",uploadIcon:'',uploadClass:"btn btn-sm btn-kv btn-default btn-outline-secondary",uploadTitle:"Upload file",uploadRetryIcon:'',uploadRetryTitle:"Retry upload",downloadIcon:'',downloadClass:"btn btn-sm btn-kv btn-default btn-outline-secondary",downloadTitle:"Download file",zoomIcon:'',zoomClass:"btn btn-sm btn-kv btn-default btn-outline-secondary",zoomTitle:"View Details",dragIcon:'',dragClass:"text-info",dragTitle:"Move / Rearrange",dragSettings:{},indicatorNew:'',indicatorSuccess:'',indicatorError:'',indicatorLoading:'',indicatorPaused:'',indicatorNewTitle:"Not uploaded yet",indicatorSuccessTitle:"Uploaded",indicatorErrorTitle:"Upload Error",indicatorLoadingTitle:"Uploading …",indicatorPausedTitle:"Upload Paused"}},e.each(H.defaults,function(t,i){return"allowedPreviewTypes"===t?void (void 0===H.allowedPreviewTypes&&(H.allowedPreviewTypes=i)):void (H[t]=e.extend(!0,{},i,H[t]))}),H._initPreviewTemplates()},_initPreviewTemplates:function(){var i,a=this,r=a.previewMarkupTags,n=r.tagAfter;e.each(a.previewContentTemplates,function(e,o){t.isEmpty(a.previewTemplates[e])&&(i=r.tagBefore2,("generic"===e||"image"===e)&&(i=r.tagBefore1),a._isPdfRendered()&&"pdf"===e&&(i=i.replace("kv-file-content","kv-file-content kv-pdf-rendered")),a.previewTemplates[e]=i+o+n)})},_initPreviewCache:function(){var i=this;i.previewCache={data:{},init:function(){var e=i.initialPreview;e.length>0&&!t.isArray(e)&&(e=e.split(i.initialPreviewDelimiter)),i.previewCache.data={content:e,config:i.initialPreviewConfig,tags:i.initialPreviewThumbTags}},count:function(e){if(!i.previewCache.data||!i.previewCache.data.content){return 0}if(e){var t=i.previewCache.data.content.filter(function(e){return null!==e});return t.length}return i.previewCache.data.content.length},get:function(e,a){var r,n,o,l,s,d,c,u=t.INIT_FLAG+e,p=i.previewCache.data,f=p.config[e],g=p.content[e],m=t.ifSet("previewAsData",f,i.initialPreviewAsData),h=f?{title:f.title||null,alt:f.alt||null}:{title:null,alt:null},v=function(e,a,r,n,o,l,s,d){var c=" file-preview-initial "+t.SORT_CSS+(s?" "+s:""),u=i.previewInitId+"-"+l,p=f&&f.fileId||u;return i._generatePreviewTemplate(e,a,r,n,u,p,!1,null,c,o,l,d,h,f&&f.zoomData||a)};return g&&g.length?(a=void 0===a?!0:a,o=t.ifSet("type",f,i.initialPreviewFileType||"generic"),s=t.ifSet("filename",f,t.ifSet("caption",f)),d=t.ifSet("filetype",f,o),l=i.previewCache.footer(e,a,f&&f.size||null),c=t.ifSet("frameClass",f),r=m?v(o,g,s,d,l,u,c):v("generic",g,s,d,l,u,c,o).setTokens({content:p.content[e]}),p.tags.length&&p.tags[e]&&(r=t.replaceTags(r,p.tags[e])),t.isEmpty(f)||t.isEmpty(f.frameAttr)||(n=t.createElement(r),n.find(".file-preview-initial").attr(f.frameAttr),r=n.html(),n.remove()),r):""},clean:function(e){e.content=t.cleanArray(e.content),e.config=t.cleanArray(e.config),e.tags=t.cleanArray(e.tags),i.previewCache.data=e},add:function(e,a,r,n){var o,l=i.previewCache.data;return e&&e.length?(o=e.length-1,t.isArray(e)||(e=e.split(i.initialPreviewDelimiter)),n&&l.content?(o=l.content.push(e[0])-1,l.config[o]=a,l.tags[o]=r):(l.content=e,l.config=a,l.tags=r),i.previewCache.clean(l),o):0},set:function(e,a,r,n){var o,l,s=i.previewCache.data;if(e&&e.length&&(t.isArray(e)||(e=e.split(i.initialPreviewDelimiter)),l=e.filter(function(e){return null!==e}),l.length)){if(void 0===s.content&&(s.content=[]),void 0===s.config&&(s.config=[]),void 0===s.tags&&(s.tags=[]),n){for(o=0;ot;t++){a=i.previewCache.get(t),r=i.reversePreviewOrder?a+r:r+a}return e=i._getMsgSelected(n),{content:r,caption:e}},footer:function(e,a,r){var n=i.previewCache.data||{};if(t.isEmpty(n.content)){return""}(t.isEmpty(n.config)||t.isEmpty(n.config[e]))&&(n.config[e]={}),a=void 0===a?!0:a;var o,l=n.config[e],s=t.ifSet("caption",l),d=t.ifSet("width",l,"auto"),c=t.ifSet("url",l,!1),u=t.ifSet("key",l,null),p=t.ifSet("fileId",l,null),f=i.fileActionSettings,g=i.initialPreviewShowDelete||!1,m=i.initialPreviewDownloadUrl?i.initialPreviewDownloadUrl+"?key="+u+(p?"&fileId="+p:""):"",h=l.downloadUrl||m,v=l.filename||l.caption||"",w=!!h,b=t.ifSet("showRemove",l,g),_=t.ifSet("showDownload",l,t.ifSet("showDownload",f,w)),C=t.ifSet("showZoom",l,t.ifSet("showZoom",f,!0)),y=t.ifSet("showDrag",l,t.ifSet("showDrag",f,!0)),x=c===!1&&a;return _=_&&l.downloadUrl!==!1&&!!h,o=i._renderFileActions(l,!1,_,b,C,y,x,c,u,!0,h,v),i._getLayoutTemplate("footer").setTokens({progress:i._renderThumbProgress(),actions:o,caption:s,size:i._getSize(r),width:d,indicator:""})}},i.previewCache.init()},_isPdfRendered:function(){var e=this,t=e.usePdfRenderer,i="function"==typeof t?t():!!t;return i&&e.pdfRendererUrl},_handler:function(e,t,i){var a=this,r=a.namespace,n=t.split(" ").join(r+" ")+r;e&&e.length&&e.off(n).on(n,i)},_encodeURI:function(e){var t=this;return t.encodeUrl?encodeURI(e):e},_log:function(e,t){var i=this,a=i.$element.attr("id");i.showConsoleLogs&&(a&&(e='"'+a+'": '+e),e="bootstrap-fileinput: "+e,"object"==typeof t&&(e=e.setTokens(t)),window.console&&void 0!==window.console.log?window.console.log(e):window.alert(e))},_validate:function(){var e=this,i="file"===e.$element.attr("type");return i||e._log(t.logMessages.badInputType),i},_errorsExist:function(){var i,a=this,r=a.$errorContainer.find("li");return r.length?!0:(i=t.createElement(a.$errorContainer.html()),i.find(".kv-error-close").remove(),i.find("ul").remove(),!!e.trim(i.text()).length)},_errorHandler:function(e,t){var i=this,a=e.target.error,r=function(e){i._showError(e.replace("{name}",t))};r(a.code===a.NOT_FOUND_ERR?i.msgFileNotFound:a.code===a.SECURITY_ERR?i.msgFileSecured:a.code===a.NOT_READABLE_ERR?i.msgFileNotReadable:a.code===a.ABORT_ERR?i.msgFilePreviewAborted:i.msgFilePreviewError)},_addError:function(e){var i=this,a=i.$errorContainer;e&&a.length&&(t.setHtml(a,i.errorCloseButton+e),i._handler(a.find(".kv-error-close"),"click",function(){setTimeout(function(){i.showPreview&&!i.getFrames().length&&i.clear(),a.fadeOut("slow")},i.processDelay)}))},_setValidationError:function(e){var i=this;e=(e?e+" ":"")+"has-error",i.$container.removeClass(e).addClass("has-error"),t.addCss(i.$captionContainer,"is-invalid")},_resetErrors:function(e){var t=this,i=t.$errorContainer;t.isPersistentError||(t.isError=!1,t.$container.removeClass("has-error"),t.$captionContainer.removeClass("is-invalid"),i.html(""),e?i.fadeOut("slow"):i.hide())},_showFolderError:function(e){var t,i=this,a=i.$errorContainer;e&&(i.isAjaxUpload||i._clearFileInput(),t=i.msgFoldersNotAllowed.replace("{n}",e),i._addError(t),i._setValidationError(),a.fadeIn(i.fadeDelay),i._raise("filefoldererror",[e,t]))},_showFileError:function(e,t,i){var a=this,r=a.$errorContainer,n=i||"fileuploaderror",o=t&&t.fileId||"",l=t&&t.id?'
  • '+e+"
  • ":"
  • "+e+"
  • ";return 0===r.find("ul").length?a._addError("
      "+l+"
    "):r.find("ul").append(l),r.fadeIn(a.fadeDelay),a._raise(n,[t,e]),a._setValidationError("file-input-new"),!0},_showError:function(e,t,i){var a=this,r=a.$errorContainer,n=i||"fileerror";return t=t||{},t.reader=a.reader,a._addError(e),r.fadeIn(a.fadeDelay),a._raise(n,[t,e]),a.isAjaxUpload||a._clearFileInput(),a._setValidationError("file-input-new"),a.$btnUpload.attr("disabled",!0),!0},_noFilesError:function(e){var t=this,i=t.minFileCount>1?t.filePlural:t.fileSingle,a=t.msgFilesTooLess.replace("{n}",t.minFileCount).replace("{files}",i),r=t.$errorContainer;a="
  • "+a+"
  • ",0===r.find("ul").length?t._addError("
      "+a+"
    "):r.find("ul").append(a),t.isError=!0,t._updateFileDetails(0),r.fadeIn(t.fadeDelay),t._raise("fileerror",[e,a]),t._clearFileInput(),t._setValidationError()},_parseError:function(t,i,a,r){var n,o,l,s=this,d=e.trim(a+"");return o=i.responseJSON&&i.responseJSON.error?""+i.responseJSON.error:"",l=o?o:i.responseText,s.cancelling&&s.msgUploadAborted&&(d=s.msgUploadAborted),s.showAjaxErrorDetails&&l&&(o?d=e.trim(o+""):(l=e.trim(l.replace(/\n\s*\n/g,"\n")),n=l.length?"
    "+l+"
    ":"",d+=d?n:l)),d||(d=s.msgAjaxError.replace("{operation}",t)),s.cancelling=!1,r?""+r+": "+d:d},_parseFileType:function(e,i){var a,r,n,o,l=this,s=l.allowedPreviewTypes||[];if("application/text-plain"===e){return"text"}for(o=0;o-1&&(i=t.split(".").pop(),a.previewFileIconSettings&&(r=a.previewFileIconSettings[i]||a.previewFileIconSettings[i.toLowerCase()]||null),a.previewFileExtSettings&&e.each(a.previewFileExtSettings,function(e,t){return a.previewFileIconSettings[e]&&t(i)?void (r=a.previewFileIconSettings[e]):void 0})),r||a.previewFileIcon},_parseFilePreviewIcon:function(e,t){var i=this,a=i._getPreviewIcon(t),r=e;return r.indexOf("{previewFileIcon}")>-1&&(r=r.setTokens({previewFileIconClass:i.previewFileIconClass,previewFileIcon:a})),r},_raise:function(t,i){var a=this,r=e.Event(t);if(void 0!==i?a.$element.trigger(r,i):a.$element.trigger(r),r.isDefaultPrevented()||r.result===!1){return !1}switch(t){case"filebatchuploadcomplete":case"filebatchuploadsuccess":case"fileuploaded":case"fileclear":case"filecleared":case"filereset":case"fileerror":case"filefoldererror":case"fileuploaderror":case"filebatchuploaderror":case"filedeleteerror":case"filecustomerror":case"filesuccessremove":break;default:a.ajaxAborted||(a.ajaxAborted=r.result)}return !0},_listenFullScreen:function(e){var t,i,a=this,r=a.$modal;r&&r.length&&(t=r&&r.find(".btn-fullscreen"),i=r&&r.find(".btn-borderless"),t.length&&i.length&&(t.removeClass("active").attr("aria-pressed","false"),i.removeClass("active").attr("aria-pressed","false"),e?t.addClass("active").attr("aria-pressed","true"):i.addClass("active").attr("aria-pressed","true"),r.hasClass("file-zoom-fullscreen")?a._maximizeZoomDialog():e?a._maximizeZoomDialog():i.removeClass("active").attr("aria-pressed","false")))},_listen:function(){var i,a,r,n=this,o=n.$element,l=n.$form,s=n.$container;n._handler(o,"click",function(e){o.hasClass("file-no-browse")&&(o.data("zoneClicked")?o.data("zoneClicked",!1):e.preventDefault())}),n._handler(o,"change",e.proxy(n._change,n)),n.showBrowse&&n._handler(n.$btnFile,"click",e.proxy(n._browse,n)),a=s.find(".file-caption-name"),r=function(){return !1},n._handler(s.find(".fileinput-remove:not([disabled])"),"click",e.proxy(n.clear,n)),n._handler(s.find(".fileinput-cancel"),"click",e.proxy(n.cancel,n)),n._handler(s.find(".fileinput-pause"),"click",e.proxy(n.pause,n)),n._handler(a,"keydown",r),n._handler(a,"paste",r),n._initDragDrop(),n._handler(l,"reset",e.proxy(n.clear,n)),n.isAjaxUpload||n._handler(l,"submit",e.proxy(n._submitForm,n)),n._handler(n.$container.find(".fileinput-upload"),"click",e.proxy(n._uploadClick,n)),n._handler(e(window),"resize",function(){n._listenFullScreen(screen.width===window.innerWidth&&screen.height===window.innerHeight)}),i="webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange",n._handler(e(document),i,function(){n._listenFullScreen(t.checkFullScreen())}),n._autoFitContent(),n._initClickable(),n._refreshPreview()},_autoFitContent:function(){var t,i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a=this,r=400>i?a.previewSettingsSmall||a.defaults.previewSettingsSmall:a.previewSettings||a.defaults.previewSettings;e.each(r,function(e,i){t=".file-preview-frame .file-preview-"+e,a.$preview.find(t+".kv-preview-data,"+t+" .kv-preview-data").css(i)})},_scanDroppedItems:function(e,i,a){a=a||"";var r,n,o,l=this,s=function(e){l._log(t.logMessages.badDroppedFiles),l._log(e)};e.isFile?e.file(function(e){a&&(e.newPath=a+e.name),i.push(e)},s):e.isDirectory&&(n=e.createReader(),(o=function(){n.readEntries(function(t){if(t&&t.length>0){for(r=0;r-1;return a._zoneDragDropInit(i),a.isDisabled||!n?(r.effectAllowed="none",void (r.dropEffect="none")):(r.dropEffect="copy",void (a._raise("fileDragEnter",{sourceEvent:i,files:r.types.Files})&&t.addCss(a.$dropZone,"file-highlighted")))},_zoneDragLeave:function(e){var t=this;t._zoneDragDropInit(e),t.isDisabled||t._raise("fileDragLeave",{sourceEvent:e})&&t.$dropZone.removeClass("file-highlighted")},_zoneDrop:function(e){var i,a=this,r=a.$element,n=e.originalEvent.dataTransfer,o=n.files,l=n.items,s=t.getDragDropFolders(l),d=function(){a.isAjaxUpload?a._change(e,o):(a.changeTriggered=!0,r.get(0).files=o,setTimeout(function(){a.changeTriggered=!1,r.trigger("change"+a.namespace)},a.processDelay)),a.$dropZone.removeClass("file-highlighted")};if(e.preventDefault(),!a.isDisabled&&!t.isEmpty(o)&&a._raise("fileDragDrop",{sourceEvent:e,files:o})){if(s>0){if(!a.isAjaxUpload){return void a._showFolderError(s)}for(o=[],i=0;i0&&n>=s,c=e(i.item);d&&(n=s-1),o.initialPreview=t.moveArray(o.initialPreview,r,n,u),o.initialPreviewConfig=t.moveArray(o.initialPreviewConfig,r,n,u),o.previewCache.init(),o.getFrames(".file-preview-initial").each(function(){e(this).attr("data-fileindex",t.INIT_FLAG+l),l++}),d&&(a=o.getFrames(":not(.file-preview-initial):first"),a.length&&c.slideUp(function(){c.insertBefore(a).slideDown()})),o._raise("filesorted",{previewId:c.attr("id"),oldIndex:r,newIndex:n,stack:o.initialPreviewConfig})}},e.extend(!0,i,o.fileActionSettings.dragSettings),o.sortable&&o.sortable.destroy(),o.sortable=p.create(l[0],i))},_setPreviewContent:function(e){var i=this;t.setHtml(i.$preview,e),i._autoFitContent()},_initPreviewImageOrientations:function(){var t=this,i=0,a=t.canOrientImage;(t.autoOrientImageInitial||a)&&t.getFrames(".file-preview-initial").each(function(){var r,n,o,l=e(this),s=t.initialPreviewConfig[i];s&&s.exif&&s.exif.Orientation&&(o=l.attr("id"),r=l.find(">.kv-file-content img"),n=t._getZoom(o," >.kv-file-content img"),a?r.css("image-orientation",t.autoOrientImageInitial?"from-image":"none"):t.setImageOrientation(r,n,s.exif.Orientation,l)),i++})},_initPreview:function(e){var i,a=this,r=a.initialCaption||"";return a.previewCache.count(!0)?(i=a.previewCache.out(),r=e&&a.initialCaption?a.initialCaption:i.caption,a._setPreviewContent(i.content),a._setInitThumbAttr(),a._setCaption(r),a._initSortable(),t.isEmpty(i.content)||a.$container.removeClass("file-input-new"),void a._initPreviewImageOrientations()):(a._clearPreview(),void (e?a._setCaption(r):a._initCaption()))},_getZoomButton:function(e){var t=this,i=t.previewZoomButtonIcons[e],a=t.previewZoomButtonClasses[e],r=' title="'+(t.previewZoomButtonTitles[e]||"")+'" ',n=r+("close"===e?' data-dismiss="modal" aria-hidden="true"':"");return("fullscreen"===e||"borderless"===e||"toggleheader"===e)&&(n+=' data-toggle="button" aria-pressed="false" autocomplete="off"'),'"},_getModalContent:function(){var e=this;return e._getLayoutTemplate("modal").setTokens({rtl:e.rtl?" kv-rtl":"",zoomFrameClass:e.frameClass,heading:e.msgZoomModalHeading,prev:e._getZoomButton("prev"),next:e._getZoomButton("next"),toggleheader:e._getZoomButton("toggleheader"),fullscreen:e._getZoomButton("fullscreen"),borderless:e._getZoomButton("borderless"),close:e._getZoomButton("close")})},_listenModalEvent:function(e){var i=this,a=i.$modal,r=function(e){return{sourceEvent:e,previewId:a.data("previewId"),modal:a}};a.on(e+".bs.modal",function(n){var o=a.find(".btn-fullscreen"),l=a.find(".btn-borderless");a.data("fileinputPluginId")===i.$element.attr("id")&&i._raise("filezoom"+e,r(n)),"shown"===e&&(l.removeClass("active").attr("aria-pressed","false"),o.removeClass("active").attr("aria-pressed","false"),a.hasClass("file-zoom-fullscreen")&&(i._maximizeZoomDialog(),t.checkFullScreen()?o.addClass("active").attr("aria-pressed","true"):l.addClass("active").attr("aria-pressed","true")))})},_initZoom:function(){var i,a=this,r=a._getLayoutTemplate("modalMain"),n="#"+t.MODAL_ID;a.showPreview&&(a.$modal=e(n),a.$modal&&a.$modal.length||(i=t.createElement(t.cspBuffer.stash(r)).insertAfter(a.$container),a.$modal=e(n).insertBefore(i),t.cspBuffer.apply(a.$modal),i.remove()),t.initModal(a.$modal),a.$modal.html(t.cspBuffer.stash(a._getModalContent())),t.cspBuffer.apply(a.$modal),e.each(t.MODAL_EVENTS,function(e,t){a._listenModalEvent(t)}))},_initZoomButtons:function(){var t,i,a=this,r=a.$modal.data("previewId")||"",n=a.getFrames().toArray(),o=n.length,l=a.$modal.find(".btn-prev"),s=a.$modal.find(".btn-next");return n.length<2?(l.hide(),void s.hide()):(l.show(),s.show(),void (o&&(t=e(n[0]),i=e(n[o-1]),l.removeAttr("disabled"),s.removeAttr("disabled"),t.length&&t.attr("id")===r&&l.attr("disabled",!0),i.length&&i.attr("id")===r&&s.attr("disabled",!0))))},_maximizeZoomDialog:function(){var t=this,i=t.$modal,a=i.find(".modal-header:visible"),r=i.find(".modal-footer:visible"),n=i.find(".modal-body"),o=e(window).height(),l=0;i.addClass("file-zoom-fullscreen"),a&&a.length&&(o-=a.outerHeight(!0)),r&&r.length&&(o-=r.outerHeight(!0)),n&&n.length&&(l=n.outerHeight(!0)-n.height(),o-=l),i.find(".kv-zoom-body").height(o)},_resizeZoomDialog:function(e){var i=this,a=i.$modal,r=a.find(".btn-fullscreen"),n=a.find(".btn-borderless");if(a.hasClass("file-zoom-fullscreen")){t.toggleFullScreen(!1),e?r.hasClass("active")||(a.removeClass("file-zoom-fullscreen"),i._resizeZoomDialog(!0),n.hasClass("active")&&n.removeClass("active").attr("aria-pressed","false")):r.hasClass("active")?r.removeClass("active").attr("aria-pressed","false"):(a.removeClass("file-zoom-fullscreen"),i.$modal.find(".kv-zoom-body").css("height",i.zoomModalHeight))}else{if(!e){return void i._maximizeZoomDialog()}t.toggleFullScreen(!0)}a.focus()},_setZoomContent:function(i,a){var r,n,o,l,s,d,c,u,p,f,g=this,m=i.attr("id"),h=g._getZoom(m),v=g.$modal,w=v.find(".btn-fullscreen"),b=v.find(".btn-borderless"),_=v.find(".btn-toggleheader");n=h.attr("data-template")||"generic",r=h.find(".kv-file-content"),o=r.length?r.html():"",p=i.data("caption")||"",f=i.data("size")||"",l=p+" "+f,v.find(".kv-zoom-title").attr("title",e("
    ").html(l).text()).html(l),s=v.find(".kv-zoom-body"),v.removeClass("kv-single-content"),a?(u=s.addClass("file-thumb-loading").clone().insertAfter(s),t.setHtml(s,o).hide(),u.fadeOut("fast",function(){s.fadeIn("fast",function(){s.removeClass("file-thumb-loading")}),u.remove()})):t.setHtml(s,o),c=g.previewZoomSettings[n],c&&(d=s.find(".kv-preview-data"),t.addCss(d,"file-zoom-detail"),e.each(c,function(e,t){d.css(e,t),(d.attr("width")&&"width"===e||d.attr("height")&&"height"===e)&&d.removeAttr(e)})),v.data("previewId",m),g._handler(v.find(".btn-prev"),"click",function(){g._zoomSlideShow("prev",m)}),g._handler(v.find(".btn-next"),"click",function(){g._zoomSlideShow("next",m)}),g._handler(w,"click",function(){g._resizeZoomDialog(!0)}),g._handler(b,"click",function(){g._resizeZoomDialog(!1)}),g._handler(_,"click",function(){var e,t=v.find(".modal-header"),i=v.find(".modal-body .floating-buttons"),a=t.find(".kv-zoom-actions"),r=function(e){var i=g.$modal.find(".kv-zoom-body"),a=g.zoomModalHeight;v.hasClass("file-zoom-fullscreen")&&(a=i.outerHeight(!0),e||(a-=t.outerHeight(!0))),i.css("height",e?a+e:a)};t.is(":visible")?(e=t.outerHeight(!0),t.slideUp("slow",function(){a.find(".btn").appendTo(i),r(e)})):(i.find(".btn").appendTo(a),t.slideDown("slow",function(){r()})),v.focus()}),g._handler(v,"keydown",function(t){var i=t.which||t.keyCode,a=e(this).find(".btn-prev"),r=e(this).find(".btn-next"),n=e(this).data("previewId"),o=g.rtl?39:37,l=g.rtl?37:39;i===o&&a.length&&!a.attr("disabled")&&g._zoomSlideShow("prev",n),i===l&&r.length&&!r.attr("disabled")&&g._zoomSlideShow("next",n)})},_showModal:function(e){var i=this,a=i.$modal;e&&e.length&&(t.initModal(a),t.setHtml(a,i._getModalContent()),i._setZoomContent(e),a.data("fileinputPluginId",i.$element.attr("id")),a.modal("show"),i._initZoomButtons())},_zoomPreview:function(e){var i,a=this;if(!e.length){throw"Cannot zoom to detailed preview!"}i=e.closest(t.FRAMES),a._showModal(i)},_zoomSlideShow:function(t,i){var a,r,n,o,l=this,s=l.$modal.find(".kv-zoom-actions .btn-"+t),d=l.getFrames().toArray(),c=[],u=d.length;if(!s.attr("disabled")){for(r=0;u>r;r++){n=e(d[r]),n&&n.length&&n.find(".kv-file-zoom:visible").length&&c.push(d[r])}for(u=c.length,r=0;u>r;r++){if(e(c[r]).attr("id")===i){o="prev"===t?r-1:r+1;break}}0>o||o>=u||!c[o]||(a=e(c[o]),a.length&&l._setZoomContent(a,!0),l._initZoomButtons(),l._raise("filezoom"+t,{previewId:i,modal:l.$modal}))}},_initZoomButton:function(){var t=this;t.$preview.find(".kv-file-zoom").each(function(){var i=e(this);t._handler(i,"click",function(){t._zoomPreview(i)})})},_inputFileCount:function(){return this.$element[0].files.length},_refreshPreview:function(){var t,i=this;(i._inputFileCount()||i.isAjaxUpload)&&i.showPreview&&i.isPreviewable&&(i.isAjaxUpload&&i.fileManager.count()>0?(t=e.extend(!0,{},i.fileManager.stack),i.fileManager.clear(),i._clearFileInput()):t=i.$element[0].files,t&&t.length&&(i.readFiles(t),i._setFileDropZoneTitle()))},_clearObjects:function(t){t.find("video audio").each(function(){this.pause(),e(this).remove()}),t.find("img object div").each(function(){e(this).remove()})},_clearFileInput:function(){var t,i,a,r=this,n=r.$element;r._inputFileCount()&&(t=n.closest("form"),i=e(document.createElement("form")),a=e(document.createElement("div")),n.before(a),t.length?t.after(i):a.after(i),i.append(n).trigger("reset"),a.before(n).remove(),i.remove())},_resetUpload:function(){var e=this;e.uploadStartTime=t.now(),e.uploadCache=[],e.$btnUpload.removeAttr("disabled"),e._setProgress(0),e._hideProgress(),e._resetErrors(!1),e._initAjax(),e.fileManager.clearImages(),e._resetCanvas(),e.overwriteInitial&&(e.initialPreview=[],e.initialPreviewConfig=[],e.initialPreviewThumbTags=[],e.previewCache.data={content:[],config:[],tags:[]})},_resetCanvas:function(){var e=this;e.canvas&&e.imageCanvasContext&&e.imageCanvasContext.clearRect(0,0,e.canvas.width,e.canvas.height)},_hasInitialPreview:function(){var e=this;return !e.overwriteInitial&&e.previewCache.count(!0)},_resetPreview:function(){var i,a,r,n=this,o=n.showUploadedThumbs,l=!n.removeFromPreviewOnError,s=(o||l)&&n.isDuplicateError;n.previewCache.count(!0)?(i=n.previewCache.out(),s&&(r=t.createElement("").insertAfter(n.$container),n.getFrames().each(function(){var t=e(this);(o&&t.hasClass("file-preview-success")||l&&t.hasClass("file-preview-error"))&&r.append(t)})),n._setPreviewContent(i.content),n._setInitThumbAttr(),a=n.initialCaption?n.initialCaption:i.caption,n._setCaption(a),s&&(r.contents().appendTo(n.$preview),r.remove())):(n._clearPreview(),n._initCaption()),n.showPreview&&(n._initZoom(),n._initSortable()),n.isDuplicateError=!1},_clearDefaultPreview:function(){var e=this;e.$preview.find(".file-default-preview").remove()},_validateDefaultPreview:function(){var e=this;e.showPreview&&!t.isEmpty(e.defaultPreviewContent)&&(e._setPreviewContent('
    '+e.defaultPreviewContent+"
    "),e.$container.removeClass("file-input-new"),e._initClickable())},_resetPreviewThumbs:function(e){var t,i=this;return e?(i._clearPreview(),void i.clearFileStack()):void (i._hasInitialPreview()?(t=i.previewCache.out(),i._setPreviewContent(t.content),i._setInitThumbAttr(),i._setCaption(t.caption),i._initPreviewActions()):i._clearPreview())},_getLayoutTemplate:function(e){var i=this,a=i.layoutTemplates[e];return t.isEmpty(i.customLayoutTags)?a:t.replaceTags(a,i.customLayoutTags)},_getPreviewTemplate:function(e){var i=this,a=i.previewTemplates,r=a[e]||a.other;return t.isEmpty(i.customPreviewTags)?r:t.replaceTags(r,i.customPreviewTags)},_getOutData:function(e,t,i,a){var r=this;return t=t||{},i=i||{},a=a||r.fileManager.list(),{formdata:e,files:a,filenames:r.filenames,filescount:r.getFilesCount(),extra:r._getExtraData(),response:i,reader:r.reader,jqXHR:t}},_getMsgSelected:function(e){var t=this,i=1===e?t.fileSingle:t.filePlural;return e>0?t.msgSelected.replace("{n}",e).replace("{files}",i):t.msgNoFilesSelected},_getFrame:function(e,i){var a=this,r=t.getFrameElement(a.$preview,e);return !a.showPreview||i||r.length||a._log(t.logMessages.invalidThumb,{id:e}),r},_getZoom:function(e,i){var a=this,r=t.getZoomElement(a.$preview,e,i);return a.showPreview&&!r.length&&a._log(t.logMessages.invalidThumb,{id:e}),r},_getThumbs:function(e){return e=e||"",this.getFrames(":not(.file-preview-initial)"+e)},_getThumbId:function(e){var t=this;return t.previewInitId+"-"+e},_getExtraData:function(e,t){var i=this,a=i.uploadExtraData;return"function"==typeof i.uploadExtraData&&(a=i.uploadExtraData(e,t)),a},_initXhr:function(e,i){var a=this,r=a.fileManager,n=function(e){var n=0,o=e.total,l=e.loaded||e.position,s=r.getUploadStats(i,l,o);e.lengthComputable&&!a.enableResumableUpload&&(n=t.round(l/o*100)),i?a._setFileUploadStats(i,n,s):a._setProgress(n,null,null,a._getStats(s)),a._raise("fileajaxprogress",[s])};return e.upload&&(a.progressDelay&&(n=t.debounce(n,a.progressDelay)),e.upload.addEventListener("progress",n,!1)),e},_initAjaxSettings:function(){var t=this;t._ajaxSettings=e.extend(!0,{},t.ajaxSettings),t._ajaxDeleteSettings=e.extend(!0,{},t.ajaxDeleteSettings)},_mergeAjaxCallback:function(e,t,i){var a,r=this,n=r._ajaxSettings,o=r.mergeAjaxCallbacks;"delete"===i&&(n=r._ajaxDeleteSettings,o=r.mergeAjaxDeleteCallbacks),a=n[e],o&&"function"==typeof a?"before"===o?n[e]=function(){a.apply(this,arguments),t.apply(this,arguments)}:n[e]=function(){t.apply(this,arguments),a.apply(this,arguments)}:n[e]=t},_ajaxSubmit:function(t,i,a,r,n,o,l,s){var d,c,u,p,f=this;f._raise("filepreajax",[n,o,l])&&(n.append("initialPreview",JSON.stringify(f.initialPreview)),n.append("initialPreviewConfig",JSON.stringify(f.initialPreviewConfig)),n.append("initialPreviewThumbTags",JSON.stringify(f.initialPreviewThumbTags)),f._initAjaxSettings(),f._mergeAjaxCallback("beforeSend",t),f._mergeAjaxCallback("success",i),f._mergeAjaxCallback("complete",a),f._mergeAjaxCallback("error",r),s=s||f.uploadUrlThumb||f.uploadUrl,"function"==typeof s&&(s=s()),u=f._getExtraData(o,l)||{},"object"==typeof u&&e.each(u,function(e,t){n.append(e,t)}),c={xhr:function(){var t=e.ajaxSettings.xhr();return f._initXhr(t,o)},url:f._encodeURI(s),type:"POST",dataType:"json",data:n,cache:!1,processData:!1,contentType:!1},d=e.extend(!0,{},c,f._ajaxSettings),p=f.taskManager.addTask(o+"-"+l,function(){var t,i,a=this.self;t=a.ajaxQueue.shift(),i=e.ajax(t),a.ajaxRequests.push(i)}),f.ajaxQueue.push(d),p.runWithContext({self:f}))},_mergeArray:function(e,i){var a=this,r=t.cleanArray(a[e]),n=t.cleanArray(i);a[e]=r.concat(n)},_initUploadSuccess:function(i,a,r){var n,o,l,s,d,c,u,p,f,g,m=this;return !m.showPreview||"object"!=typeof i||e.isEmptyObject(i)?void m._resetCaption():(void 0!==i.initialPreview&&i.initialPreview.length>0&&(m.hasInitData=!0,c=i.initialPreview||[],u=i.initialPreviewConfig||[],p=i.initialPreviewThumbTags||[],n=void 0===i.append||i.append,c.length>0&&!t.isArray(c)&&(c=c.split(m.initialPreviewDelimiter)),c.length&&(m._mergeArray("initialPreview",c),m._mergeArray("initialPreviewConfig",u),m._mergeArray("initialPreviewThumbTags",p)),void 0!==a?r?(f=a.attr("id"),g=m._getUploadCacheIndex(f),null!==g&&(m.uploadCache[g]={id:f,content:c[0],config:u[0]||[],tags:p[0]||[],append:n})):(l=m.previewCache.add(c[0],u[0],p[0],n),o=m.previewCache.get(l,!1),s=t.createElement(o).hide().appendTo(a),d=s.find(".kv-zoom-cache"),d&&d.length&&d.appendTo(a),a.fadeOut("slow",function(){var e=s.find(".file-preview-frame");e&&e.length&&e.insertBefore(a).fadeIn("slow").css("display:inline-block"),m._initPreviewActions(),m._clearFileInput(),a.remove(),s.remove(),m._initSortable()})):(m.previewCache.set(c,u,p,n),m._initPreview(),m._initPreviewActions())),void m._resetCaption())},_getUploadCacheIndex:function(e){var t,i,a=this,r=a.uploadCache.length;for(t=0;r>t;t++){if(i=a.uploadCache[t],i.id===e){return t}}return null},_initSuccessThumbs:function(){var i=this;i.showPreview&&i._getThumbs(t.FRAMES+".file-preview-success").each(function(){var a=e(this),r=a.find(".kv-file-remove");r.removeAttr("disabled"),i._handler(r,"click",function(){var e=a.attr("id"),r=i._raise("filesuccessremove",[e,a.attr("data-fileindex")]);t.cleanMemory(a),r!==!1&&a.fadeOut("slow",function(){a.remove(),i.getFrames().length||i.reset()})})})},_updateInitialPreview:function(){var t=this,i=t.uploadCache;t.showPreview&&(e.each(i,function(e,i){t.previewCache.add(i.content,i.config,i.tags,i.append)}),t.hasInitData&&(t._initPreview(),t._initPreviewActions()))},_uploadSingle:function(i,a,r){var n,o,l,s,d,c,u,p,f,g,m,h,v,w=this,b=w.fileManager,_=b.count(),C=new FormData,y=w._getThumbId(a),x=_>0||!e.isEmptyObject(w.uploadExtraData),T=w.ajaxOperations.uploadThumb,P=b.getFile(a),F={id:y,index:i,fileId:a},E=w.fileManager.getFileName(a,!0);w.enableResumableUpload||(w.showPreview&&(o=w.fileManager.getThumb(a),u=o.find(".file-thumb-progress"),s=o.find(".kv-file-upload"),d=o.find(".kv-file-remove"),u.show()),0===_||!x||w.showPreview&&s&&s.hasClass("disabled")||w._abort(F)||(v=function(){c?b.errors.push(a):b.removeFile(a),b.setProcessed(a),b.isProcessed()&&(w.fileBatchCompleted=!0,l())},l=function(){var e;w.fileBatchCompleted&&setTimeout(function(){var i=0===b.count(),a=b.errors.length;w._updateInitialPreview(),w.unlock(i),i&&w._clearFileInput(),e=w.$preview.find(".file-preview-initial"),w.uploadAsync&&e.length&&(t.addCss(e,t.SORT_CSS),w._initSortable()),w._raise("filebatchuploadcomplete",[b.stack,w._getExtraData()]),w.retryErrorUploads&&0!==a||b.clear(),w._setProgress(101),w.ajaxAborted=!1},w.processDelay)},p=function(l){n=w._getOutData(C,l),b.initStats(a),w.fileBatchCompleted=!1,r||(w.ajaxAborted=!1),w.showPreview&&(o.hasClass("file-preview-success")||(w._setThumbStatus(o,"Loading"),t.addCss(o,"file-uploading")),s.attr("disabled",!0),d.attr("disabled",!0)),r||w.lock(),-1!==b.errors.indexOf(a)&&delete b.errors[a],w._raise("filepreupload",[n,y,i]),e.extend(!0,F,n),w._abort(F)&&(l.abort(),r||(w._setThumbStatus(o,"New"),o.removeClass("file-uploading"),s.removeAttr("disabled"),d.removeAttr("disabled"),w.unlock()),w._setProgressCancelled())},g=function(l,d,p){var g=w.showPreview&&o.attr("id")?o.attr("id"):y;n=w._getOutData(C,p,l),e.extend(!0,F,n),setTimeout(function(){t.isEmpty(l)||t.isEmpty(l.error)?(w.showPreview&&(w._setThumbStatus(o,"Success"),s.hide(),w._initUploadSuccess(l,o,r),w._setProgress(101,u)),w._raise("fileuploaded",[n,g,i]),r?v():w.fileManager.remove(o)):(c=!0,f=w._parseError(T,p,w.msgUploadError,w.fileManager.getFileName(a)),w._showFileError(f,F),w._setPreviewError(o,!0),w.retryErrorUploads||s.hide(),r&&v(),w._setProgress(101,w._getFrame(g).find(".file-thumb-progress"),w.msgUploadError))},w.processDelay)},m=function(){w.showPreview&&(s.removeAttr("disabled"),d.removeAttr("disabled"),o.removeClass("file-uploading")),r?l():(w.unlock(!1),w._clearFileInput()),w._initSuccessThumbs()},h=function(t,i,n){f=w._parseError(T,t,n,w.fileManager.getFileName(a)),c=!0,setTimeout(function(){var i;r&&v(),w.fileManager.setProgress(a,100),w._setPreviewError(o,!0),w.retryErrorUploads||s.hide(),e.extend(!0,F,w._getOutData(C,t)),w._setProgress(101,w.$progress,w.msgAjaxProgressError.replace("{operation}",T)),i=w.showPreview&&o?o.find(".file-thumb-progress"):"",w._setProgress(101,i,w.msgUploadError),w._showFileError(f,F)},w.processDelay)},w._setFileData(C,P.file,E,a),w._setUploadData(C,{fileId:a}),w._ajaxSubmit(p,g,m,h,C,a,i)))},_setFileData:function(e,t,i,a){var r=this,n=r.preProcessUpload;n&&"function"==typeof n?e.append(r.uploadFileAttr,n(a,t)):e.append(r.uploadFileAttr,t,i)},_uploadBatch:function(){var i,a,r,n,o,l,s=this,d=s.fileManager,c=d.total(),u={},p=c>0||!e.isEmptyObject(s.uploadExtraData),f=new FormData,g=s.ajaxOperations.uploadBatch;if(0!==c&&p&&!s._abort(u)){l=function(){s.fileManager.clear(),s._clearFileInput()},i=function(i){s.lock(),d.initStats();var a=s._getOutData(f,i);s.ajaxAborted=!1,s.showPreview&&s._getThumbs().each(function(){var i=e(this),a=i.find(".kv-file-upload"),r=i.find(".kv-file-remove");i.hasClass("file-preview-success")||(s._setThumbStatus(i,"Loading"),t.addCss(i,"file-uploading")),a.attr("disabled",!0),r.attr("disabled",!0)}),s._raise("filebatchpreupload",[a]),s._abort(a)&&(i.abort(),s._getThumbs().each(function(){var t=e(this),i=t.find(".kv-file-upload"),a=t.find(".kv-file-remove");t.hasClass("file-preview-loading")&&(s._setThumbStatus(t,"New"),t.removeClass("file-uploading")),i.removeAttr("disabled"),a.removeAttr("disabled")}),s._setProgressCancelled())},a=function(i,a,r){var n=s._getOutData(f,r,i),d=0,c=s._getThumbs(":not(.file-preview-success)"),u=t.isEmpty(i)||t.isEmpty(i.errorkeys)?[]:i.errorkeys;t.isEmpty(i)||t.isEmpty(i.error)?(s._raise("filebatchuploadsuccess",[n]),l(),s.showPreview?(c.each(function(){var t=e(this);s._setThumbStatus(t,"Success"),t.removeClass("file-uploading"),t.find(".kv-file-upload").hide().removeAttr("disabled")}),s._initUploadSuccess(i)):s.reset(),s._setProgress(101)):(s.showPreview&&(c.each(function(){var t=e(this);t.removeClass("file-uploading"),t.find(".kv-file-upload").removeAttr("disabled"),t.find(".kv-file-remove").removeAttr("disabled"),0===u.length||-1!==e.inArray(d,u)?(s._setPreviewError(t,!0),s.retryErrorUploads||(t.find(".kv-file-upload").hide(),s.fileManager.remove(t))):(t.find(".kv-file-upload").hide(),s._setThumbStatus(t,"Success"),s.fileManager.remove(t)),(!t.hasClass("file-preview-error")||s.retryErrorUploads)&&d++}),s._initUploadSuccess(i)),o=s._parseError(g,r,s.msgUploadError),s._showFileError(o,n,"filebatchuploaderror"),s._setProgress(101,s.$progress,s.msgUploadError))},n=function(){s.unlock(),s._initSuccessThumbs(),s._clearFileInput(),s._raise("filebatchuploadcomplete",[s.fileManager.stack,s._getExtraData()])},r=function(t,i,a){var r=s._getOutData(f,t);o=s._parseError(g,t,a),s._showFileError(o,r,"filebatchuploaderror"),s.uploadFileCount=c-1,s.showPreview&&(s._getThumbs().each(function(){var t=e(this);t.removeClass("file-uploading"),s.fileManager.getFile(t.attr("data-fileid"))&&s._setPreviewError(t)}),s._getThumbs().removeClass("file-uploading"),s._getThumbs(" .kv-file-upload").removeAttr("disabled"),s._getThumbs(" .kv-file-delete").removeAttr("disabled"),s._setProgress(101,s.$progress,s.msgAjaxProgressError.replace("{operation}",g)))};var m=0;e.each(s.fileManager.stack,function(e,i){t.isEmpty(i.file)||s._setFileData(f,i.file,i.nameFmt||"untitled_"+m,e),m++}),s._ajaxSubmit(i,a,n,r,f)}},_uploadExtraOnly:function(){var e,i,a,r,n,o=this,l={},s=new FormData,d=o.ajaxOperations.uploadExtra;o._abort(l)||(e=function(e){o.lock();var t=o._getOutData(s,e);o._raise("filebatchpreupload",[t]),o._setProgress(50),l.data=t,l.xhr=e,o._abort(l)&&(e.abort(),o._setProgressCancelled())},i=function(e,i,a){var r=o._getOutData(s,a,e);t.isEmpty(e)||t.isEmpty(e.error)?(o._raise("filebatchuploadsuccess",[r]),o._clearFileInput(),o._initUploadSuccess(e),o._setProgress(101)):(n=o._parseError(d,a,o.msgUploadError),o._showFileError(n,r,"filebatchuploaderror"))},a=function(){o.unlock(),o._clearFileInput(),o._raise("filebatchuploadcomplete",[o.fileManager.stack,o._getExtraData()])},r=function(e,t,i){var a=o._getOutData(s,e);n=o._parseError(d,e,i),l.data=a,o._showFileError(n,a,"filebatchuploaderror"),o._setProgress(101,o.$progress,o.msgAjaxProgressError.replace("{operation}",d))},o._ajaxSubmit(e,i,a,r,s))},_deleteFileIndex:function(i){var a=this,r=i.attr("data-fileindex"),n=a.reversePreviewOrder;r.substring(0,5)===t.INIT_FLAG&&(r=parseInt(r.replace(t.INIT_FLAG,"")),a.initialPreview=t.spliceArray(a.initialPreview,r,n),a.initialPreviewConfig=t.spliceArray(a.initialPreviewConfig,r,n),a.initialPreviewThumbTags=t.spliceArray(a.initialPreviewThumbTags,r,n),a.getFrames().each(function(){var i=e(this),a=i.attr("data-fileindex");a.substring(0,5)===t.INIT_FLAG&&(a=parseInt(a.replace(t.INIT_FLAG,"")),a>r&&(a--,i.attr("data-fileindex",t.INIT_FLAG+a)))}))},_resetCaption:function(){var e=this;setTimeout(function(){var t,i,a,r=e.previewCache.count(!0),n=e.fileManager.count(),o=":not(.file-preview-success):not(.file-preview-error)",l=e.showPreview&&e.getFrames(o).length;0!==n||0!==r||l?(i=r+n,i>1?t=e._getMsgSelected(i):(a=e.fileManager.getFirstFile(),t=a?a.nameFmt:"_"),e._setCaption(t)):e.reset()},e.processDelay)},_initFileActions:function(){var i=this;i.showPreview&&(i._initZoomButton(),i.getFrames(" .kv-file-remove").each(function(){var a,r,n=e(this),o=n.closest(t.FRAMES),l=o.attr("id"),s=o.attr("data-fileindex");i._handler(n,"click",function(){return r=i._raise("filepreremove",[l,s]),r!==!1&&i._validateMinCount()?(a=o.hasClass("file-preview-error"),t.cleanMemory(o),void o.fadeOut("slow",function(){i.fileManager.remove(o),i._clearObjects(o),o.remove(),l&&a&&i.$errorContainer.find('li[data-thumb-id="'+l+'"]').fadeOut("fast",function(){e(this).remove(),i._errorsExist()||i._resetErrors()}),i._clearFileInput(),i._resetCaption(),i._raise("fileremoved",[l,s])})):!1})}),i.getFrames(" .kv-file-upload").each(function(){var a=e(this);i._handler(a,"click",function(){var e=a.closest(t.FRAMES),r=e.attr("data-fileid");i._hideProgress(),(!e.hasClass("file-preview-error")||i.retryErrorUploads)&&i._uploadSingle(i.fileManager.getIndex(r),r,!1)})}))},_initPreviewActions:function(){var i=this,a=i.$preview,r=i.deleteExtraData||{},n=t.FRAMES+" .kv-file-remove",o=i.fileActionSettings,l=o.removeClass,s=o.removeErrorClass,d=function(){var e=i.isAjaxUpload?i.previewCache.count(!0):i._inputFileCount();i.getFrames().length||e||(i._setCaption(""),i.reset(),i.initialCaption="")};i._initZoomButton(),a.find(n).each(function(){var a,n,o,c,u=e(this),p=u.data("url")||i.deleteUrl,f=u.data("key"),g=i.ajaxOperations.deleteThumb;if(!t.isEmpty(p)&&void 0!==f){"function"==typeof p&&(p=p());var m,h,v,w,b,_=u.closest(t.FRAMES),C=i.previewCache.data,y=_.attr("data-fileindex");y=parseInt(y.replace(t.INIT_FLAG,"")),v=t.isEmpty(C.config)&&t.isEmpty(C.config[y])?null:C.config[y],b=t.isEmpty(v)||t.isEmpty(v.extra)?r:v.extra,w=v&&(v.filename||v.caption)||"","function"==typeof b&&(b=b()),h={id:u.attr("id"),key:f,extra:b},n=function(e){i.ajaxAborted=!1,i._raise("filepredelete",[f,e,b]),i._abort()?e.abort():(u.removeClass(s),t.addCss(_,"file-uploading"),t.addCss(u,"disabled "+l))},o=function(e,r,n){var o,c;return t.isEmpty(e)||t.isEmpty(e.error)?(_.removeClass("file-uploading").addClass("file-deleted"),void _.fadeOut("slow",function(){y=parseInt(_.attr("data-fileindex").replace(t.INIT_FLAG,"")),i.previewCache.unset(y),i._deleteFileIndex(_),o=i.previewCache.count(!0),c=o>0?i._getMsgSelected(o):"",i._setCaption(c),i._raise("filedeleted",[f,n,b]),i._clearObjects(_),_.remove(),d()})):(h.jqXHR=n,h.response=e,a=i._parseError(g,n,i.msgDeleteError,w),i._showFileError(a,h,"filedeleteerror"),_.removeClass("file-uploading"),u.removeClass("disabled "+l).addClass(s),void d())},c=function(e,t,a){var r=i._parseError(g,e,a,w);h.jqXHR=e,h.response={},i._showFileError(r,h,"filedeleteerror"),_.removeClass("file-uploading"),u.removeClass("disabled "+l).addClass(s),d()},i._initAjaxSettings(),i._mergeAjaxCallback("beforeSend",n,"delete"),i._mergeAjaxCallback("success",o,"delete"),i._mergeAjaxCallback("error",c,"delete"),m=e.extend(!0,{},{url:i._encodeURI(p),type:"POST",dataType:"json",data:e.extend(!0,{},{key:f},b)},i._ajaxDeleteSettings),i._handler(u,"click",function(){return i._validateMinCount()?(i.ajaxAborted=!1,i._raise("filebeforedelete",[f,b]),void (i.ajaxAborted instanceof Promise?i.ajaxAborted.then(function(t){t||e.ajax(m)}):i.ajaxAborted||e.ajax(m))):!1})}})},_hideFileIcon:function(){var e=this;e.overwriteInitial&&e.$captionContainer.removeClass("icon-visible")},_showFileIcon:function(){var e=this;t.addCss(e.$captionContainer,"icon-visible")},_getSize:function(t,i){var a,r,n=this,o=parseFloat(t),l=n.fileSizeGetter;return e.isNumeric(t)&&e.isNumeric(o)?("function"==typeof l?r=l(o):0===o?r="0.00 B":(a=Math.floor(Math.log(o)/Math.log(1024)),i||(i=["B","KB","MB","GB","TB","PB","EB","ZB","YB"]),r=1*(o/Math.pow(1024,a)).toFixed(2)+" "+i[a]),n._getLayoutTemplate("size").replace("{sizeText}",r)):""},_getFileType:function(e){var t=this;return t.mimeTypeAliases[e]||e},_generatePreviewTemplate:function(i,a,r,n,o,l,s,d,c,u,p,f,g,m){var h,v,w,b=this,_=b.slug(r),C="",y="",x=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,T=_,P=_,F="type-default",E=u||b._renderFileFooter(i,_,d,"auto",s),k=b.preferIconicPreview,S=b.preferIconicZoomPreview,I=k?"other":i;return v=400>x?b.previewSettingsSmall[I]||b.defaults.previewSettingsSmall[I]:b.previewSettings[I]||b.defaults.previewSettings[I],v&&e.each(v,function(e,t){y+=e+":"+t+";"}),w=function(a,s,d,u){var m=d?"zoom-"+o:o,h=b._getPreviewTemplate(a),v=(c||"")+" "+u;return b.frameClass&&(v=b.frameClass+" "+v),d&&(v=v.replace(" "+t.SORT_CSS,"")),h=b._parseFilePreviewIcon(h,r),"object"!==i||n||e.each(b.defaults.fileTypeSettings,function(e,t){"object"!==e&&"other"!==e&&t(r,n)&&(F="type-"+e)}),t.isEmpty(g)||(void 0!==g.title&&null!==g.title&&(T=g.title),void 0!==g.alt&&null!==g.alt&&(T=g.alt)),h.setTokens({previewId:m,caption:_,title:T,alt:P,frameClass:v,type:b._getFileType(n),fileindex:p,fileid:l||"",typeCss:F,footer:E,data:s,template:f||i,style:y?'style="'+y+'"':""})},p=p||o.slice(o.lastIndexOf("-")+1),b.fileActionSettings.showZoom&&(C=w(S?"other":i,m?m:a,!0,"kv-zoom-thumb")),C="\n"+b._getLayoutTemplate("zoomCache").replace("{zoomContent}",C),"function"==typeof b.sanitizeZoomCache&&(C=b.sanitizeZoomCache(C)),h=w(k?"other":i,a,!1,"kv-preview-thumb"),h.setTokens({zoomCache:C})},_addToPreview:function(e,i){var a,r=this;return i=t.cspBuffer.stash(i),a=r.reversePreviewOrder?e.prepend(i):e.append(i),t.cspBuffer.apply(e),a},_previewDefault:function(e,i){var a=this,r=a.$preview;if(a.showPreview){var n,o=t.getFileName(e),l=e?e.type:"",s=e.size||0,d=a._getFileName(e,""),c=i===!0&&!a.isAjaxUpload,u=t.createObjectURL(e),p=a.fileManager.getId(e),f=a._getThumbId(p);a._clearDefaultPreview(),n=a._generatePreviewTemplate("other",u,o,l,f,p,c,s),a._addToPreview(r,n),a._setThumbAttr(f,d,s),i===!0&&a.isAjaxUpload&&a._setThumbStatus(a._getFrame(f),"Error")}},_previewFile:function(e,i,a,r,n){if(this.showPreview){var o,l=this,s=t.getFileName(i),d=n.type,c=n.name,u=l._parseFileType(d,s),p=l.$preview,f=i.size||0,g="image"===u?a.target.result:r,m=l.fileManager.getId(i),h=l._getThumbId(m);o=l._generatePreviewTemplate(u,g,s,d,h,m,!1,f),l._clearDefaultPreview(),l._addToPreview(p,o);var v=l._getFrame(h);l._validateImageOrientation(v.find("img"),i,h,m,c,d,f,g),l._setThumbAttr(h,c,f),l._initSortable()}},_setThumbAttr:function(e,t,i){var a=this,r=a._getFrame(e);r.length&&(i=i&&i>0?a._getSize(i):"",r.data({caption:t,size:i}))},_setInitThumbAttr:function(){var e,i,a,r,n=this,o=n.previewCache.data,l=n.previewCache.count(!0);if(0!==l){for(var s=0;l>s;s++){e=o.config[s],r=n.previewInitId+"-"+t.INIT_FLAG+s,i=t.ifSet("caption",e,t.ifSet("filename",e)),a=t.ifSet("size",e),n._setThumbAttr(r,i,a)}}},_slugDefault:function(e){return t.isEmpty(e,!0)?"":(e+"").replace(/[\[\]\/\{}:;#%=\(\)\*\+\?\\\^\$\|<>&"']/g,"_")},_updateFileDetails:function(e,i){var a,r,n,o,l,s=this,d=s.$element,c=t.isIE(9)&&t.findFileName(d.val())||d[0].files[0]&&d[0].files[0].name;!c&&s.fileManager.count()>0?(l=s.fileManager.getFirstFile(),a=l.nameFmt):a=c?s.slug(c):"_",r=s.isAjaxUpload?s.fileManager.count():e,o=s.previewCache.count(!0)+r,n=1===r?a:s._getMsgSelected(o),s.isError?(s.$previewContainer.removeClass("file-thumb-loading"),s.$previewStatus.html(""),s.$captionContainer.removeClass("icon-visible")):s._showFileIcon(),s._setCaption(n,s.isError),s.$container.removeClass("file-input-new file-input-ajax-new"),i||s._raise("fileselect",[e,a]),s.previewCache.count(!0)&&s._initPreviewActions()},_setThumbStatus:function(e,i){var a=this;if(a.showPreview){var r="indicator"+i,n=r+"Title",o="file-preview-"+i.toLowerCase(),l=e.find(".file-upload-indicator"),s=a.fileActionSettings;e.removeClass("file-preview-success file-preview-error file-preview-paused file-preview-loading"),"Success"===i&&e.find(".file-drag-handle").remove(),t.setHtml(l,s[r]),l.attr("title",s[n]),e.addClass(o),"Error"!==i||a.retryErrorUploads||e.find(".kv-file-upload").attr("disabled",!0)}},_setProgressCancelled:function(){var e=this;e._setProgress(101,e.$progress,e.msgCancelled)},_setProgress:function(e,i,a,r){var n=this;if(i=i||n.$progress,i.length){var o,l=Math.min(e,100),s=n.progressUploadThreshold,d=100>=e?n.progressTemplate:n.progressCompleteTemplate,c=100>l?n.progressTemplate:a?n.paused?n.progressPauseTemplate:n.progressErrorTemplate:d;e>=100&&(r=""),t.isEmpty(c)||(o=s&&l>s&&100>=e?c.setTokens({percent:s,status:n.msgUploadThreshold}):c.setTokens({percent:l,status:e>100?n.msgUploadEnd:l+"%"}),r=r||"",o=o.setTokens({stats:r}),t.setHtml(i,o),a&&t.setHtml(i.find('[role="progressbar"]'),a))}},_hasFiles:function(){var e=this.$element[0];return !!(e&&e.files&&e.files.length)},_setFileDropZoneTitle:function(){var e,i=this,a=i.$container.find(".file-drop-zone"),r=i.dropZoneTitle;i.isClickable&&(e=t.isEmpty(i.$element.attr("multiple"))?i.fileSingle:i.filePlural,r+=i.dropZoneClickTitle.replace("{files}",e)),a.find("."+i.dropZoneTitleClass).remove(),!i.showPreview||0===a.length||i.fileManager.count()>0||!i.dropZoneEnabled||i.previewCache.count()>0||!i.isAjaxUpload&&i._hasFiles()||(0===a.find(t.FRAMES).length&&t.isEmpty(i.defaultPreviewContent)&&a.prepend('
    '+r+"
    "),i.$container.removeClass("file-input-new"),t.addCss(i.$container,"file-input-ajax-new"))},_getStats:function(e){var i,a,r=this;return r.showUploadStats&&e&&e.bitrate?(a=r._getLayoutTemplate("stats"),i=e.elapsed&&e.bps?r.msgPendingTime.setTokens({time:t.getElapsed(Math.ceil(e.pendingBytes/e.bps))}):r.msgCalculatingTime,a.setTokens({uploadSpeed:e.bitrate,pendingTime:i})):""},_setResumableProgress:function(e,t,i){var a=this,r=a.resumableManager,n=i?r:a,o=i?i.find(".file-thumb-progress"):null;0===n.lastProgress&&(n.lastProgress=e),e0&&e._getFileCount(t-1)=g:g>=d,u||(s=p["msgImage"+o+i].setTokens({name:n,size:g}),p._showFileError(s,l),p._setPreviewError(r)))},_getExifObj:function(e){var i,a=this,r=t.logMessages.exifWarning;if("data:image/jpeg;base64,"!==e.slice(0,23)&&"data:image/jpg;base64,"!==e.slice(0,22)){return void (i=null)}try{i=window.piexif?window.piexif.load(e):null}catch(n){i=null,r=n&&n.message||""}return i||a._log(t.logMessages.badExifParser,{details:r}),i},setImageOrientation:function(i,a,r,n){var o,l,s,d=this,c=!i||!i.length,u=!a||!a.length,p=!1,f=c&&n&&"image"===n.attr("data-template");c&&u||(s="load.fileinputimageorient",f?(i=a,a=null,i.css(d.previewSettings.image),l=e(document.createElement("div")).appendTo(n.find(".kv-file-content")),o=e(document.createElement("span")).insertBefore(i),i.css("visibility","hidden").removeClass("file-zoom-detail").appendTo(l)):p=!i.is(":visible"),i.off(s).on(s,function(){p&&(d.$preview.removeClass("hide-content"),n.find(".kv-file-content").css("visibility","hidden"));var e=i[0],s=a&&a.length?a[0]:null,c=e.offsetHeight,u=e.offsetWidth,g=t.getRotation(r);if(p&&(n.find(".kv-file-content").css("visibility","visible"),d.$preview.addClass("hide-content")),i.data("orientation",r),s&&a.data("orientation",r),5>r){return t.setTransform(e,g),void t.setTransform(s,g)}var m=Math.atan(u/c),h=Math.sqrt(Math.pow(c,2)+Math.pow(u,2)),v=h?c/Math.cos(Math.PI/2+m)/h:1,w=" scale("+Math.abs(v)+")";t.setTransform(e,g+w),t.setTransform(s,g+w),f&&(i.css("visibility","visible").insertAfter(o).addClass("file-zoom-detail"),o.remove(),l.remove())}))},_validateImageOrientation:function(i,a,r,n,o,l,s,d){var c,u,p,f=this,g=f.autoOrientImage;return f.canOrientImage?void i.css("image-orientation",g?"from-image":"none"):(p=t.getZoomSelector(r," img"),c=g?f._getExifObj(d):null,(u=c?c["0th"][piexif.ImageIFD.Orientation]:null)?(f.setImageOrientation(i,e(p),u,f._getFrame(r)),f._raise("fileimageoriented",{$img:i,file:a}),void f._validateImage(r,n,o,l,s,d,c)):void f._validateImage(r,n,o,l,s,d,c))},_validateImage:function(t,i,a,r,n,o,l){var s,d,c,u=this,p=u.$preview,f=u._getFrame(t),g=f.attr("data-fileindex"),m=f.find("img");a=a||"Untitled",m.one("load",function(){d=f.width(),c=p.width(),d>c&&m.css("width","100%"),s={ind:g,id:t,fileId:i},u._checkDimensions(g,"Small",m,f,a,"Width",s),u._checkDimensions(g,"Small",m,f,a,"Height",s),u.resizeImage||(u._checkDimensions(g,"Large",m,f,a,"Width",s),u._checkDimensions(g,"Large",m,f,a,"Height",s)),u._raise("fileimageloaded",[t]),u.fileManager.addImage(i,{ind:g,img:m,thumb:f,pid:t,typ:r,siz:n,validated:!1,imgData:o,exifObj:l}),f.data("exif",l),u._validateAllImages()}).one("error",function(){u._raise("fileimageloaderror",[t])}).each(function(){this.complete?e(this).trigger("load"):this.error&&e(this).trigger("error")})},_validateAllImages:function(){var t,i=this,a={val:0},r=i.fileManager.getImageCount(),n=i.resizeIfSizeMoreThan;r===i.fileManager.totalImages&&(i._raise("fileimagesloaded"),i.resizeImage&&e.each(i.fileManager.loadedImages,function(e,o){o.validated||(t=o.siz,t&&t>1000*n&&i._getResizedImage(e,o,a,r),o.validated=!0)}))},_getResizedImage:function(i,a,r,n){var o,l,s,d,c,u,p,f,g,m,h=this,v=e(a.img)[0],w=v.naturalWidth,b=v.naturalHeight,_=1,C=h.maxImageWidth||w,y=h.maxImageHeight||b,x=!(!w||!b),T=h.imageCanvas,P=h.imageCanvasContext,F=a.typ,E=a.pid,k=a.ind,S=a.thumb,I=a.exifObj;if(c=function(e,t,i){h.isAjaxUpload?h._showFileError(e,t,i):h._showError(e,t,i),h._setPreviewError(S)},f=h.fileManager.getFile(i),g={id:E,index:k,fileId:i},m=[i,E,k],(!f||!x||C>=w&&y>=b)&&(x&&f&&h._raise("fileimageresized",m),r.val++,r.val===n&&h._raise("fileimagesresized"),!x)){return void c(h.msgImageResizeError,g,"fileimageresizeerror")}F=F||h.resizeDefaultImageType,l=w>C,s=b>y,_="width"===h.resizePreference?l?C/w:s?y/b:1:s?y/b:l?C/w:1,h._resetCanvas(),w*=_,b*=_,T.width=w,T.height=b;try{P.drawImage(v,0,0,w,b),d=T.toDataURL(F,h.resizeQuality),I&&(p=window.piexif.dump(I),d=window.piexif.insert(p,d)),o=t.dataURI2Blob(d),h.fileManager.setFile(i,o),h._raise("fileimageresized",m),r.val++,r.val===n&&h._raise("fileimagesresized",[void 0,void 0]),o instanceof Blob||c(h.msgImageResizeError,g,"fileimageresizeerror")}catch(A){r.val++,r.val===n&&h._raise("fileimagesresized",[void 0,void 0]),u=h.msgImageResizeException.replace("{errors}",A.message),c(u,g,"fileimageresizeexception")}},_showProgress:function(){var e=this;e.$progress&&e.$progress.length&&e.$progress.show()},_hideProgress:function(){var e=this;e.$progress&&e.$progress.length&&e.$progress.hide()},_initBrowse:function(e){var i=this,a=i.$element;i.showBrowse?i.$btnFile=e.find(".btn-file").append(a):(a.appendTo(e).attr("tabindex",-1),t.addCss(a,"file-no-browse"))},_initClickable:function(){var i,a,r=this;r.isClickable&&(i=r.$dropZone,r.isAjaxUpload||(a=r.$preview.find(".file-default-preview"),a.length&&(i=a)),t.addCss(i,"clickable"),i.attr("tabindex",-1),r._handler(i,"click",function(t){var a=e(t.target);e(r.elErrorContainer+":visible").length||a.parents(".file-preview-thumbnails").length&&!a.parents(".file-default-preview").length||(r.$element.data("zoneClicked",!0).trigger("click"),i.blur())}))},_initCaption:function(){var e=this,i=e.initialCaption||"";return e.overwriteInitial||t.isEmpty(i)?(e.$caption.val(""),!1):(e._setCaption(i),!0)},_setCaption:function(i,a){var r,n,o,l,s,d,c=this;if(c.$caption.length){if(c.$captionContainer.removeClass("icon-visible"),a){r=e("
    "+c.msgValidationError+"
    ").text(),l=c.fileManager.count(),l?(d=c.fileManager.getFirstFile(),s=1===l&&d?d.nameFmt:c._getMsgSelected(l)):s=c._getMsgSelected(c.msgNo),n=t.isEmpty(i)?s:i,o=''+c.msgValidationErrorIcon+""}else{if(t.isEmpty(i)){return}r=e("
    "+i+"
    ").text(),n=r,o=c._getLayoutTemplate("fileIcon")}c.$captionContainer.addClass("icon-visible"),c.$caption.attr("title",r).val(n),t.setHtml(c.$captionIcon,o)}},_createContainer:function(){var e=this,i={"class":"file-input file-input-new"+(e.rtl?" kv-rtl":"")},a=t.createElement(t.cspBuffer.stash(e._renderMain()));return t.cspBuffer.apply(a),a.insertBefore(e.$element).attr(i),e._initBrowse(a),e.theme&&a.addClass("theme-"+e.theme),a},_refreshContainer:function(){var e=this,i=e.$container,a=e.$element;a.insertAfter(i),t.setHtml(i,e._renderMain()),e._initBrowse(i),e._validateDisabled()},_validateDisabled:function(){var e=this;e.$caption.attr({readonly:e.isDisabled})},_renderMain:function(){var e=this,t=e.dropZoneEnabled?" file-drop-zone":"file-drop-disabled",i=e.showClose?e._getLayoutTemplate("close"):"",a=e.showPreview?e._getLayoutTemplate("preview").setTokens({"class":e.previewClass,dropClass:t}):"",r=e.isDisabled?e.captionClass+" file-caption-disabled":e.captionClass,n=e.captionTemplate.setTokens({"class":r+" kv-fileinput-caption"});return e.mainTemplate.setTokens({"class":e.mainClass+(!e.showBrowse&&e.showCaption?" no-browse":""),preview:a,close:i,caption:n,upload:e._renderButton("upload"),remove:e._renderButton("remove"),cancel:e._renderButton("cancel"),pause:e._renderButton("pause"),browse:e._renderButton("browse")})},_renderButton:function(e){var i=this,a=i._getLayoutTemplate("btnDefault"),r=i[e+"Class"],n=i[e+"Title"],o=i[e+"Icon"],l=i[e+"Label"],s=i.isDisabled?" disabled":"",d="button";switch(e){case"remove":if(!i.showRemove){return""}break;case"cancel":if(!i.showCancel){return""}r+=" kv-hidden";break;case"pause":if(!i.showPause){return""}r+=" kv-hidden";break;case"upload":if(!i.showUpload){return""}i.isAjaxUpload&&!i.isDisabled?a=i._getLayoutTemplate("btnLink").replace("{href}",i.uploadUrl):d="submit";break;case"browse":if(!i.showBrowse){return""}a=i._getLayoutTemplate("btnBrowse");break;default:return""}return r+="browse"===e?" btn-file":" fileinput-"+e+" fileinput-"+e+"-button",t.isEmpty(l)||(l=' '+l+""),a.setTokens({type:d,css:r,title:n,status:s,icon:o,label:l})},_renderThumbProgress:function(){var e=this;return'
    '+e.progressInfoTemplate.setTokens({percent:101,status:e.msgUploadBegin,stats:""})+"
    "},_renderFileFooter:function(e,i,a,r,n){var o,l,s=this,d=s.fileActionSettings,c=d.showRemove,u=d.showDrag,p=d.showUpload,f=d.showZoom,g=s._getLayoutTemplate("footer"),m=s._getLayoutTemplate("indicator"),h=n?d.indicatorError:d.indicatorNew,v=n?d.indicatorErrorTitle:d.indicatorNewTitle,w=m.setTokens({indicator:h,indicatorTitle:v});return a=s._getSize(a),l={type:e,caption:i,size:a,width:r,progress:"",indicator:w},s.isAjaxUpload?(l.progress=s._renderThumbProgress(),l.actions=s._renderFileActions(l,p,!1,c,f,u,!1,!1,!1)):l.actions=s._renderFileActions(l,!1,!1,!1,f,u,!1,!1,!1),o=g.setTokens(l),o=t.replaceTags(o,s.previewThumbTags)},_renderFileActions:function(e,t,i,a,r,n,o,l,s,d,c,u){var p=this;if(!e.type&&d&&(e.type="image"),p.enableResumableUpload?t=!1:"function"==typeof t&&(t=t(e)),"function"==typeof i&&(i=i(e)),"function"==typeof a&&(a=a(e)),"function"==typeof r&&(r=r(e)),"function"==typeof n&&(n=n(e)),!(t||i||a||r||n)){return""}var f,g=l===!1?"":' data-url="'+l+'"',m="",h="",v=s===!1?"":' data-key="'+s+'"',w="",b="",_="",C=p._getLayoutTemplate("actions"),y=p.fileActionSettings,x=p.otherActionButtons.setTokens({dataKey:v,key:s}),T=o?y.removeClass+" disabled":y.removeClass;return a&&(w=p._getLayoutTemplate("actionDelete").setTokens({removeClass:T,removeIcon:y.removeIcon,removeTitle:y.removeTitle,dataUrl:g,dataKey:v,key:s})),t&&(b=p._getLayoutTemplate("actionUpload").setTokens({uploadClass:y.uploadClass,uploadIcon:y.uploadIcon,uploadTitle:y.uploadTitle})),i&&(_=p._getLayoutTemplate("actionDownload").setTokens({downloadClass:y.downloadClass,downloadIcon:y.downloadIcon,downloadTitle:y.downloadTitle,downloadUrl:c||p.initialPreviewDownloadUrl}),_=_.setTokens({filename:u,key:s})),r&&(m=p._getLayoutTemplate("actionZoom").setTokens({zoomClass:y.zoomClass,zoomIcon:y.zoomIcon,zoomTitle:y.zoomTitle})),n&&d&&(f="drag-handle-init "+y.dragClass,h=p._getLayoutTemplate("actionDrag").setTokens({dragClass:f,dragTitle:y.dragTitle,dragIcon:y.dragIcon})),C.setTokens({"delete":w,upload:b,download:_,zoom:m,drag:h,other:x})},_browse:function(e){var t=this;e&&e.isDefaultPrevented()||!t._raise("filebrowse")||(t.isError&&!t.isAjaxUpload&&t.clear(),t.focusCaptionOnBrowse&&t.$captionContainer.focus())},_change:function(i){var a=this;if(!a.changeTriggered){var r,n,o,l,s=a.$element,d=arguments.length>1,c=a.isAjaxUpload,u=d?arguments[1]:s[0].files,p=a.fileManager.count(),f=t.isEmpty(s.attr("multiple")),g=!c&&f?1:a.maxFileCount,m=a.maxTotalFileCount,h=m>0&&m>g,v=f&&p>0,w=function(t,i,r,n){var o=e.extend(!0,{},a._getOutData(null,{},{},u),{id:r,index:n}),l={id:r,index:n,file:i,files:u};return a.isPersistentError=!0,c?a._showFileError(t,o):a._showError(t,l)},b=function(e,t,i){var r=i?a.msgTotalFilesTooMany:a.msgFilesTooMany;r=r.replace("{m}",t).replace("{n}",e),a.isError=w(r,null,null,null),a.$captionContainer.removeClass("icon-visible"),a._setCaption("",!0),a.$container.removeClass("file-input-new file-input-ajax-new")};if(a.reader=null,a._resetUpload(),a._hideFileIcon(),a.dropZoneEnabled&&a.$container.find(".file-drop-zone ."+a.dropZoneTitleClass).remove(),c||(u=i.target&&void 0===i.target.files?i.target.value?[{name:i.target.value.replace(/^.+\\/,"")}]:[]:i.target.files||{}),r=u,t.isEmpty(r)||0===r.length){return c||a.clear(),void a._raise("fileselectnone")}if(a._resetErrors(),l=r.length,o=c?a.fileManager.count()+l:l,n=a._getFileCount(o,h?!1:void 0),g>0&&n>g){if(!a.autoReplace||l>g){return void b(a.autoReplace&&l>g?l:n,g)}n>g&&a._resetPreviewThumbs(c)}else{if(h&&(n=a._getFileCount(o,!0),m>0&&n>m)){if(!a.autoReplace||l>g){return void b(a.autoReplace&&l>m?l:n,m,!0)}n>g&&a._resetPreviewThumbs(c)}!c||v?(a._resetPreviewThumbs(!1),v&&a.clearFileStack()):!c||0!==p||a.previewCache.count(!0)&&!a.overwriteInitial||a._resetPreviewThumbs(!0)}a.readFiles(r)}},_abort:function(t){var i,a=this;return a.ajaxAborted&&"object"==typeof a.ajaxAborted&&void 0!==a.ajaxAborted.message?(i=e.extend(!0,{},a._getOutData(null),t),i.abortData=a.ajaxAborted.data||{},i.abortMessage=a.ajaxAborted.message,a._setProgress(101,a.$progress,a.msgCancelled),a._showFileError(a.ajaxAborted.message,i,"filecustomerror"),a.cancel(),!0):!!a.ajaxAborted},_resetFileStack:function(){var t=this,i=0;t._getThumbs().each(function(){var a=e(this),r=a.attr("data-fileindex"),n=a.attr("id");"-1"!==r&&-1!==r&&(t.fileManager.getFile(a.attr("data-fileid"))?a.attr({"data-fileindex":"-1"}):(a.attr({"data-fileindex":i}),i++),t._getZoom(n).attr({"data-fileindex":a.attr("data-fileindex")}))})},_isFileSelectionValid:function(e){var t=this;return e=e||0,t.required&&!t.getFilesCount()?(t.$errorContainer.html(""),t._showFileError(t.msgFileRequired),!1):t.minFileCount>0&&t._getFileCount(e)v,!o&&(a||r||n)},addToStack:function(e,t){this.fileManager.add(e,t)},clearFileStack:function(){var e=this;return e.fileManager.clear(),e._initResumableUpload(),e.enableResumableUpload?(null===e.showPause&&(e.showPause=!0),null===e.showCancel&&(e.showCancel=!1)):(e.showPause=!1,null===e.showCancel&&(e.showCancel=!0)),e.$element},getFileStack:function(){return this.fileManager.stack},getFileList:function(){return this.fileManager.list()},getFilesCount:function(e){var t=this,i=t.isAjaxUpload?t.fileManager.count():t._inputFileCount();return e&&(i+=t.previewCache.count(!0)),t._getFileCount(i)},readFiles:function(i){this.reader=new FileReader;var a,r=this,n=r.reader,o=r.$previewContainer,l=r.$previewStatus,s=r.msgLoading,d=r.msgProgress,c=r.previewInitId,u=i.length,p=r.fileTypeSettings,f=r.allowedFileTypes,g=f?f.length:0,m=r.allowedFileExtensions,h=t.isEmpty(m)?"":m.join(", "),v=function(t,n,o,l,s){var d,c=e.extend(!0,{},r._getOutData(null,{},{},i),{id:o,index:l,fileId:s}),p={id:o,index:l,fileId:s,file:n,files:i};r._previewDefault(n,!0),d=r._getFrame(o,!0),r.isAjaxUpload?setTimeout(function(){a(l+1)},r.processDelay):(r.unlock(),u=0),r.removeFromPreviewOnError&&d.length?d.remove():(r._initFileActions(),d.find(".kv-file-upload").remove()),r.isPersistentError=!0,r.isError=r.isAjaxUpload?r._showFileError(t,c):r._showError(t,p),r._updateFileDetails(u)};r.fileManager.clearImages(),e.each(i,function(e,t){var i=r.fileTypeSettings.image;i&&i(t.type)&&r.fileManager.totalImages++}),a=function(w){var b,_=r.$errorContainer,C=r.fileManager;if(w>=u){return r.unlock(),r.duplicateErrors.length&&(b="
  • "+r.duplicateErrors.join("
  • ")+"
  • ",0===_.find("ul").length?t.setHtml(_,r.errorCloseButton+"
      "+b+"
    "):_.find("ul").append(b),_.fadeIn(r.fadeDelay),r._handler(_.find(".kv-error-close"),"click",function(){_.fadeOut(r.fadeDelay)}),r.duplicateErrors=[]),r.isAjaxUpload?(r._raise("filebatchselected",[C.stack]),0!==C.count()||r.isError||r.reset()):r._raise("filebatchselected",[i]),o.removeClass("file-thumb-loading"),void l.html("")}r.lock(!0);var y,x,T,P,F,E,k,S,I,A,D,z,j=i[w],U=r._getFileId(j),M=c+"-"+U,$=(p.text,p.image),R=(p.html,r._getFileName(j,"")),O=(j&&j.size||0)/1000,B="",L=t.createObjectURL(j),N=0,Z="",H=!1,W=0,q=function(){var e=d.setTokens({index:w+1,files:u,percent:50,name:R});setTimeout(function(){l.html(e),r._updateFileDetails(u),a(w+1)},r.processDelay),r._raise("fileloaded",[j,M,U,w,n])&&r.isAjaxUpload&&C.add(j)};if(j){if(S=C.getId(j),g>0){for(x=0;g>x;x++){E=f[x],k=r.msgFileTypes[E]||E,Z+=0===x?k:", "+k}}if(R===!1){return void a(w+1)}if(0===R.length){return T=r.msgInvalidFileName.replace("{name}",t.htmlEncode(t.getFileName(j),"[unknown]")),void v(T,j,M,w,S)}if(t.isEmpty(m)||(B=RegExp("\\.("+m.join("|")+")$","i")),y=O.toFixed(2),r.isAjaxUpload&&C.exists(S)||r._getFrame(M,!0).length){var V={id:M,index:w,fileId:S,file:j,files:i};return T=r.msgDuplicateFile.setTokens({name:R,size:y}),void (r.isAjaxUpload?(r.duplicateErrors.push(T),r.isDuplicateError=!0,r._raise("fileduplicateerror",[j,S,R,y,M,w]),a(w+1),r._updateFileDetails(u)):(r._showError(T,V),r.unlock(),u=0,r._clearFileInput(),r.reset(),r._updateFileDetails(u)))}if(r.maxFileSize>0&&O>r.maxFileSize){return T=r.msgSizeTooLarge.setTokens({name:R,size:y,maxSize:r.maxFileSize}),void v(T,j,M,w,S)}if(null!==r.minFileSize&&O<=t.getNum(r.minFileSize)){return T=r.msgSizeTooSmall.setTokens({name:R,size:y,minSize:r.minFileSize}),void v(T,j,M,w,S)}if(!t.isEmpty(f)&&t.isArray(f)){for(x=0;x0){for(t=0;n>t;t+=1){i.paused=!0,r[t].abort()}}return i.showPreview&&i._getThumbs().each(function(){var t,a=e(this),r=a.attr("data-fileid"),n=i._getLayoutTemplate("stats"),s=a.find(".file-upload-indicator");a.removeClass("file-uploading"),s.attr("title")===l.indicatorLoadingTitle&&(i._setThumbStatus(a,"Paused"),t=n.setTokens({pendingTime:i.msgPaused,uploadSpeed:""}),i.paused=!0,i._setProgress(o,a.find(".file-thumb-progress"),o+"%",t)),i.fileManager.getFile(r)||a.find(".kv-file-remove").removeClass("disabled").removeAttr("disabled")}),i._setProgress(101,i.$progress,i.msgPaused),i.$element},cancel:function(){var t,i=this,a=i.ajaxRequests,r=i.resumableManager,n=i.taskManager,o=r?n.getPool(r.id):void 0,l=a.length;if(i.enableResumableUpload&&o?(o.cancel().done(function(){i._setProgressCancelled()}),r.reset(),i._raise("fileuploadcancelled",[i.fileManager,r])):i._raise("fileuploadcancelled",[i.fileManager]),i._initAjax(),l>0){for(t=0;l>t;t+=1){i.cancelling=!0,a[t].abort()}}return i._getThumbs().each(function(){var t=e(this),a=t.attr("data-fileid"),r=t.find(".file-thumb-progress");t.removeClass("file-uploading"),i._setProgress(0,r),r.hide(),i.fileManager.getFile(a)||(t.find(".kv-file-upload").removeClass("disabled").removeAttr("disabled"),t.find(".kv-file-remove").removeClass("disabled").removeAttr("disabled")),i.unlock()}),setTimeout(function(){i._setProgressCancelled()},i.processDelay),i.$element},clear:function(){var i,a=this;if(a._raise("fileclear")){return a.$btnUpload.removeAttr("disabled"),a._getThumbs().find("video,audio,img").each(function(){t.cleanMemory(e(this))}),a._clearFileInput(),a._resetUpload(),a.clearFileStack(),a.isDuplicateError=!1,a.isPersistentError=!1,a._resetErrors(!0),a._hasInitialPreview()?(a._showFileIcon(),a._resetPreview(),a._initPreviewActions(),a.$container.removeClass("file-input-new")):(a._getThumbs().each(function(){a._clearObjects(e(this))}),a.isAjaxUpload&&(a.previewCache.data={}),a.$preview.html(""),i=!a.overwriteInitial&&a.initialCaption.length>0?a.initialCaption:"",a.$caption.attr("title","").val(i),t.addCss(a.$container,"file-input-new"),a._validateDefaultPreview()),0===a.$container.find(t.FRAMES).length&&(a._initCaption()||a.$captionContainer.removeClass("icon-visible")),a._hideFileIcon(),a.focusCaptionOnClear&&a.$captionContainer.focus(),a._setFileDropZoneTitle(),a._raise("filecleared"),a.$element}},reset:function(){var e=this;if(e._raise("filereset")){return e.lastProgress=0,e._resetPreview(),e.$container.find(".fileinput-filename").text(""),t.addCss(e.$container,"file-input-new"),e.getFrames().length&&e.$container.removeClass("file-input-new"),e.clearFileStack(),e._setFileDropZoneTitle(),e.$element}},disable:function(){var e=this,i=e.$container;return e.isDisabled=!0,e._raise("filedisabled"),e.$element.attr("disabled","disabled"),i.addClass("is-locked"),t.addCss(i.find(".btn-file"),"disabled"),i.find(".kv-fileinput-caption").addClass("file-caption-disabled"),i.find(".fileinput-remove, .fileinput-upload, .file-preview-frame button").attr("disabled",!0),e._initDragDrop(),e.$element},enable:function(){var e=this,t=e.$container;return e.isDisabled=!1,e._raise("fileenabled"),e.$element.removeAttr("disabled"),t.removeClass("is-locked"),t.find(".kv-fileinput-caption").removeClass("file-caption-disabled"),t.find(".fileinput-remove, .fileinput-upload, .file-preview-frame button").removeAttr("disabled"),t.find(".btn-file").removeClass("disabled"),e._initDragDrop(),e.$element},upload:function(){var i,a,r=this,n=r.fileManager,o=n.count(),l=!e.isEmptyObject(r._getExtraData());if(r.isAjaxUpload&&!r.isDisabled&&r._isFileSelectionValid(o)){return r.lastProgress=0,r._resetUpload(),0!==o||l?(r.cancelling=!1,r._showProgress(),r.lock(),0===o&&l?(r._setProgress(2),void r._uploadExtraOnly()):r.enableResumableUpload?r.resume():((r.uploadAsync||r.enableResumableUpload)&&(a=r._getOutData(null),r._raise("filebatchpreupload",[a]),r.fileBatchCompleted=!1,r.uploadCache=[],e.each(r.getFileStack(),function(e){var t=r._getThumbId(e);r.uploadCache.push({id:t,content:null,config:null,tags:null,append:!0})}),r.$preview.find(".file-preview-initial").removeClass(t.SORT_CSS),r._initSortable()),r._setProgress(2),r.hasInitData=!1,r.uploadAsync?(i=0,void e.each(n.stack,function(e){r._uploadSingle(i,e,!0),i++})):(r._uploadBatch(),r.$element))):void r._showFileError(r.msgUploadEmpty)}},destroy:function(){var t=this,i=t.$form,a=t.$container,r=t.$element,n=t.namespace;return e(document).off(n),e(window).off(n),i&&i.length&&i.off(n),t.isAjaxUpload&&t._clearFileInput(),t._cleanup(),t._initPreviewCache(),r.insertBefore(a).off(n).removeData(),a.off().remove(),r},refresh:function(i){var a=this,r=a.$element;return i="object"!=typeof i||t.isEmpty(i)?a.options:e.extend(!0,{},a.options,i),a._init(i,!0),a._listen(),r},zoom:function(e){var t=this,i=t._getFrame(e);t._showModal(i)},getExif:function(e){var t=this,i=t._getFrame(e);return i&&i.data("exif")||null},getFrames:function(i){var a,r=this;return i=i||"",a=r.$preview.find(t.FRAMES+i),r.reversePreviewOrder&&(a=e(a.get().reverse())),a},getPreview:function(){var e=this;return{content:e.initialPreview,config:e.initialPreviewConfig,tags:e.initialPreviewThumbTags}}},e.fn.fileinput=function(a){if(t.hasFileAPISupport()||t.isIE(9)){var r=Array.apply(null,arguments),n=[];switch(r.shift(),this.each(function(){var o,l=e(this),s=l.data("fileinput"),d="object"==typeof a&&a,c=d.theme||l.data("theme"),u={},p={},f=d.language||l.data("language")||e.fn.fileinput.defaults.language||"en";s||(c&&(p=e.fn.fileinputThemes[c]||{}),"en"===f||t.isEmpty(e.fn.fileinputLocales[f])||(u=e.fn.fileinputLocales[f]||{}),o=e.extend(!0,{},e.fn.fileinput.defaults,p,e.fn.fileinputLocales.en,u,d,l.data()),s=new i(this,o),l.data("fileinput",s)),"string"==typeof a&&n.push(s[a].apply(s,r))}),n.length){case 0:return this;case 1:return n[0];default:return n}}};var a='class="kv-preview-data file-preview-pdf" src="{renderer}?file={data}" {style}';e.fn.fileinput.defaults={language:"zh",showCaption:!0,showBrowse:!0,showPreview:!0,showRemove:!0,showUpload:!0,showUploadStats:!0,showCancel:null,showPause:null,showClose:!0,showUploadedThumbs:!0,showConsoleLogs:!1,browseOnZoneClick:!1,autoReplace:!1,autoOrientImage:function(){var e=window.navigator.userAgent,t=!!e.match(/WebKit/i),i=!!e.match(/iP(od|ad|hone)/i),a=i&&t&&!e.match(/CriOS/i);return !a},autoOrientImageInitial:!0,required:!1,rtl:!1,hideThumbnailContent:!1,encodeUrl:!0,focusCaptionOnBrowse:!0,focusCaptionOnClear:!0,generateFileId:null,previewClass:"",captionClass:"",frameClass:"krajee-default",mainClass:"file-caption-main",mainTemplate:null,fileSizeGetter:null,initialCaption:"",initialPreview:[],initialPreviewDelimiter:"*$$*",initialPreviewAsData:!1,initialPreviewFileType:"image",initialPreviewConfig:[],initialPreviewThumbTags:[],previewThumbTags:{},initialPreviewShowDelete:!0,initialPreviewDownloadUrl:"",removeFromPreviewOnError:!1,deleteUrl:"",deleteExtraData:{},overwriteInitial:!0,sanitizeZoomCache:function(e){var i=t.createElement(e);return i.find("input,textarea,select,datalist,form,.file-thumbnail-footer").remove(),i.html()},previewZoomButtonIcons:{prev:'',next:'',toggleheader:'',fullscreen:'',borderless:'',close:''},previewZoomButtonClasses:{prev:"btn btn-navigate",next:"btn btn-navigate",toggleheader:"btn btn-sm btn-kv btn-default btn-outline-secondary",fullscreen:"btn btn-sm btn-kv btn-default btn-outline-secondary",borderless:"btn btn-sm btn-kv btn-default btn-outline-secondary",close:"btn btn-sm btn-kv btn-default btn-outline-secondary"},previewTemplates:{},previewContentTemplates:{},preferIconicPreview:!1,preferIconicZoomPreview:!1,allowedFileTypes:null,allowedFileExtensions:null,allowedPreviewTypes:void 0,allowedPreviewMimeTypes:null,allowedPreviewExtensions:null,disabledPreviewTypes:void 0,disabledPreviewExtensions:["msi","exe","com","zip","rar","app","vb","scr"],disabledPreviewMimeTypes:null,defaultPreviewContent:null,customLayoutTags:{},customPreviewTags:{},previewFileIcon:'',previewFileIconClass:"file-other-icon",previewFileIconSettings:{},previewFileExtSettings:{},buttonLabelClass:"hidden-xs",browseIcon:' ',browseClass:"btn btn-primary",removeIcon:'',removeClass:"btn btn-default btn-secondary",cancelIcon:'',cancelClass:"btn btn-default btn-secondary",pauseIcon:'',pauseClass:"btn btn-default btn-secondary",uploadIcon:'',uploadClass:"btn btn-default btn-secondary",uploadUrl:null,uploadUrlThumb:null,uploadAsync:!0,uploadParamNames:{chunkCount:"chunkCount",chunkIndex:"chunkIndex",chunkSize:"chunkSize",chunkSizeStart:"chunkSizeStart",chunksUploaded:"chunksUploaded",fileBlob:"fileBlob",fileId:"fileId",fileName:"fileName",fileRelativePath:"fileRelativePath",fileSize:"fileSize",retryCount:"retryCount"},maxAjaxThreads:5,fadeDelay:800,processDelay:100,queueDelay:10,progressDelay:0,enableResumableUpload:!1,resumableUploadOptions:{fallback:null,testUrl:null,chunkSize:2048,maxThreads:4,maxRetries:3,showErrorLog:!0},uploadExtraData:{},zoomModalHeight:480,minImageWidth:null,minImageHeight:null,maxImageWidth:null,maxImageHeight:null,resizeImage:!1,resizePreference:"width",resizeQuality:0.92,resizeDefaultImageType:"image/jpeg",resizeIfSizeMoreThan:0,minFileSize:-1,maxFileSize:0,maxFilePreviewSize:25600,minFileCount:0,maxFileCount:0,maxTotalFileCount:0,validateInitialCount:!1,msgValidationErrorClass:"text-danger",msgValidationErrorIcon:' ',msgErrorClass:"file-error-message",progressThumbClass:"progress-bar progress-bar-striped active progress-bar-animated",progressClass:"progress-bar bg-success progress-bar-success progress-bar-striped active progress-bar-animated",progressInfoClass:"progress-bar bg-info progress-bar-info progress-bar-striped active progress-bar-animated",progressCompleteClass:"progress-bar bg-success progress-bar-success",progressPauseClass:"progress-bar bg-primary progress-bar-primary progress-bar-striped active progress-bar-animated",progressErrorClass:"progress-bar bg-danger progress-bar-danger",progressUploadThreshold:99,previewFileType:"image",elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null,elErrorContainer:null,errorCloseButton:t.closeButton("kv-error-close"),slugCallback:null,dropZoneEnabled:!0,dropZoneTitleClass:"file-drop-zone-title",fileActionSettings:{},otherActionButtons:"",textEncoding:"UTF-8",preProcessUpload:null,ajaxSettings:{},ajaxDeleteSettings:{},showAjaxErrorDetails:!0,mergeAjaxCallbacks:!1,mergeAjaxDeleteCallbacks:!1,retryErrorUploads:!0,reversePreviewOrder:!1,usePdfRenderer:function(){var e=!!window.MSInputMethodContext&&!!document.documentMode;return !!navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i)||e},pdfRendererUrl:"",pdfRendererTemplate:""},e.fn.fileinputLocales.en={fileSingle:"file",filePlural:"files",browseLabel:"Browse …",removeLabel:"Remove",removeTitle:"Clear all unprocessed files",cancelLabel:"Cancel",cancelTitle:"Abort ongoing upload",pauseLabel:"Pause",pauseTitle:"Pause ongoing upload",uploadLabel:"Upload",uploadTitle:"Upload selected files",msgNo:"No",msgNoFilesSelected:"No files selected",msgCancelled:"Cancelled",msgPaused:"Paused",msgPlaceholder:"Select {files} ...",msgZoomModalHeading:"Detailed Preview",msgFileRequired:"You must select a file to upload.",msgSizeTooSmall:'File "{name}" ({size} KB) is too small and must be larger than {minSize} KB.',msgSizeTooLarge:'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB.',msgFilesTooLess:"You must select at least {n} {files} to upload.",msgFilesTooMany:"Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}.",msgTotalFilesTooMany:"You can upload a maximum of {m} files ({n} files detected).",msgFileNotFound:'File "{name}" not found!',msgFileSecured:'Security restrictions prevent reading the file "{name}".',msgFileNotReadable:'File "{name}" is not readable.',msgFilePreviewAborted:'File preview aborted for "{name}".',msgFilePreviewError:'An error occurred while reading the file "{name}".',msgInvalidFileName:'Invalid or unsupported characters in file name "{name}".',msgInvalidFileType:'Invalid type for file "{name}". Only "{types}" files are supported.',msgInvalidFileExtension:'Invalid extension for file "{name}". Only "{extensions}" files are supported.',msgFileTypes:{image:"image",html:"HTML",text:"text",video:"video",audio:"audio",flash:"flash",pdf:"PDF",object:"object"},msgUploadAborted:"The file upload was aborted",msgUploadThreshold:"Processing …",msgUploadBegin:"Initializing …",msgUploadEnd:"Done",msgUploadResume:"Resuming upload …",msgUploadEmpty:"No valid data available for upload.",msgUploadError:"Upload Error",msgDeleteError:"Delete Error",msgProgressError:"Error",msgValidationError:"Validation Error",msgLoading:"Loading file {index} of {files} …",msgProgress:"Loading file {index} of {files} - {name} - {percent}% completed.",msgSelected:"{n} {files} selected",msgFoldersNotAllowed:"Drag & drop files only! {n} folder(s) dropped were skipped.",msgImageWidthSmall:'Width of image file "{name}" must be at least {size} px.',msgImageHeightSmall:'Height of image file "{name}" must be at least {size} px.',msgImageWidthLarge:'Width of image file "{name}" cannot exceed {size} px.',msgImageHeightLarge:'Height of image file "{name}" cannot exceed {size} px.',msgImageResizeError:"Could not get the image dimensions to resize.",msgImageResizeException:"Error while resizing the image.
    {errors}
    ",msgAjaxError:"Something went wrong with the {operation} operation. Please try again later!",msgAjaxProgressError:"{operation} failed",msgDuplicateFile:'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',msgResumableUploadRetriesExceeded:"Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ",msgPendingTime:"{time} remaining",msgCalculatingTime:"calculating time remaining",ajaxOperations:{deleteThumb:"file delete",uploadThumb:"file upload",uploadBatch:"batch file upload",uploadExtra:"form data upload"},dropZoneTitle:"Drag & drop files here …",dropZoneClickTitle:"
    (or click to select {files})",previewZoomButtonTitles:{prev:"View previous file",next:"View next file",toggleheader:"Toggle header",fullscreen:"Toggle full screen",borderless:"Toggle borderless mode",close:"Close detailed preview"}},e.fn.fileinputLocales.zh={fileSingle:"文件",filePlural:"个文件",browseLabel:"选择 …",removeLabel:"移除",removeTitle:"清除选中文件",cancelLabel:"取消",cancelTitle:"取消进行中的上传",pauseLabel:"Pause",pauseTitle:"Pause ongoing upload",uploadLabel:"上传",uploadTitle:"上传选中文件",msgNo:"没有",msgNoFilesSelected:"未选择文件",msgPaused:"Paused",msgCancelled:"取消",msgPlaceholder:"选择 {files} ...",msgZoomModalHeading:"详细预览",msgFileRequired:"必须选择一个文件上传.",msgSizeTooSmall:'文件 "{name}" ({size} KB) 必须大于限定大小 {minSize} KB.',msgSizeTooLarge:'文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB.',msgFilesTooLess:"你必须选择最少 {n} {files} 来上传. ",msgFilesTooMany:"选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}.",msgTotalFilesTooMany:"You can upload a maximum of {m} files ({n} files detected).",msgFileNotFound:'文件 "{name}" 未找到!',msgFileSecured:'安全限制,为了防止读取文件 "{name}".',msgFileNotReadable:'文件 "{name}" 不可读.',msgFilePreviewAborted:'取消 "{name}" 的预览.',msgFilePreviewError:'读取 "{name}" 时出现了一个错误.',msgInvalidFileName:'文件名 "{name}" 包含非法字符.',msgInvalidFileType:'不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',msgInvalidFileExtension:'不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',msgFileTypes:{image:"image",html:"HTML",text:"text",video:"video",audio:"audio",flash:"flash",pdf:"PDF",object:"object"},msgUploadAborted:"该文件上传被中止",msgUploadThreshold:"处理中 …",msgUploadBegin:"正在初始化 …",msgUploadEnd:"完成",msgUploadResume:"Resuming upload …",msgUploadEmpty:"无效的文件上传.",msgUploadError:"Upload Error",msgDeleteError:"Delete Error",msgProgressError:"上传出错",msgValidationError:"验证错误",msgLoading:"加载第 {index} 文件 共 {files} …",msgProgress:"加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.",msgSelected:"{n} {files} 选中",msgFoldersNotAllowed:"只支持拖拽文件! 跳过 {n} 拖拽的文件夹.",msgImageWidthSmall:'图像文件的"{name}"的宽度必须是至少{size}像素.',msgImageHeightSmall:'图像文件的"{name}"的高度必须至少为{size}像素.',msgImageWidthLarge:'图像文件"{name}"的宽度不能超过{size}像素.',msgImageHeightLarge:'图像文件"{name}"的高度不能超过{size}像素.',msgImageResizeError:"无法获取的图像尺寸调整。",msgImageResizeException:"调整图像大小时发生错误。
    {errors}
    ",msgAjaxError:"{operation} 发生错误. 请重试!",msgAjaxProgressError:"{operation} 失败",msgDuplicateFile:'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',msgResumableUploadRetriesExceeded:"Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ",msgPendingTime:"{time} remaining",msgCalculatingTime:"calculating time remaining",ajaxOperations:{deleteThumb:"删除文件",uploadThumb:"上传文件",uploadBatch:"批量上传",uploadExtra:"表单数据上传"},dropZoneTitle:"拖拽文件到这里 …
    支持多文件同时上传",dropZoneClickTitle:"
    (或点击{files}按钮选择文件)",fileActionSettings:{removeTitle:"删除文件",uploadTitle:"上传文件",downloadTitle:"下载文件",uploadRetryTitle:"重试",zoomTitle:"查看详情",dragTitle:"移动 / 重置",indicatorNewTitle:"没有上传",indicatorSuccessTitle:"上传",indicatorErrorTitle:"上传错误",indicatorPausedTitle:"Upload Paused",indicatorLoadingTitle:"上传 …"},previewZoomButtonTitles:{prev:"预览上一个文件",next:"预览下一个文件",toggleheader:"缩放",fullscreen:"全屏",borderless:"无边界模式",close:"关闭当前预览"}},e.fn.fileinput.Constructor=i,e(document).ready(function(){var t=e("input.file[type=file]");t.length&&t.fileinput()})}); \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif deleted file mode 100644 index 44e3b7a..0000000 Binary files a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif and /dev/null differ diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif deleted file mode 100644 index 0ea146c..0000000 Binary files a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif and /dev/null differ diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css deleted file mode 100644 index 66b8cc6..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css +++ /dev/null @@ -1,429 +0,0 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - -select.bs-select-hidden, -.bootstrap-select > select.bs-select-hidden, -select.selectpicker { - display: none !important; -} -.bootstrap-select { - width: 220px \0; - /*IE9 and below*/ - vertical-align: middle; -} -.bootstrap-select > .dropdown-toggle { - position: relative; - width: 100%; - text-align: right; - white-space: nowrap; - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} -.bootstrap-select > .dropdown-toggle:after { - margin-top: -1px; -} -.bootstrap-select > .dropdown-toggle.bs-placeholder, -.bootstrap-select > .dropdown-toggle.bs-placeholder:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder:active { - color: #999; -} -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active { - color: rgba(255, 255, 255, 0.5); -} -.bootstrap-select > select { - position: absolute !important; - bottom: 0; - left: 50%; - display: block !important; - width: 0.5px !important; - height: 100% !important; - padding: 0 !important; - opacity: 0 !important; - border: none; - z-index: 0 !important; -} -.bootstrap-select > select.mobile-device { - top: 0; - left: 0; - display: block !important; - width: 100% !important; - z-index: 2 !important; -} -.has-error .bootstrap-select .dropdown-toggle, -.error .bootstrap-select .dropdown-toggle, -.bootstrap-select.is-invalid .dropdown-toggle, -.was-validated .bootstrap-select .selectpicker:invalid + .dropdown-toggle { - border-color: #b94a48; -} -.bootstrap-select.is-valid .dropdown-toggle, -.was-validated .bootstrap-select .selectpicker:valid + .dropdown-toggle { - border-color: #28a745; -} -.bootstrap-select.fit-width { - width: auto !important; -} -.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { - width: 220px; -} -.bootstrap-select > select.mobile-device:focus + .dropdown-toggle, -.bootstrap-select .dropdown-toggle:focus { - outline: thin dotted #333333 !important; - outline: 5px auto -webkit-focus-ring-color !important; - outline-offset: -2px; -} -.bootstrap-select.form-control { - margin-bottom: 0; - padding: 0; - border: none; - height: auto; -} -:not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) { - width: 100%; -} -.bootstrap-select.form-control.input-group-btn { - float: none; - z-index: auto; -} -.form-inline .bootstrap-select, -.form-inline .bootstrap-select.form-control:not([class*="col-"]) { - width: auto; -} -.bootstrap-select:not(.input-group-btn), -.bootstrap-select[class*="col-"] { - float: none; - display: inline-block; - margin-left: 0; -} -.bootstrap-select.dropdown-menu-right, -.bootstrap-select[class*="col-"].dropdown-menu-right, -.row .bootstrap-select[class*="col-"].dropdown-menu-right { - float: right; -} -.form-inline .bootstrap-select, -.form-horizontal .bootstrap-select, -.form-group .bootstrap-select { - margin-bottom: 0; -} -.form-group-lg .bootstrap-select.form-control, -.form-group-sm .bootstrap-select.form-control { - padding: 0; -} -.form-group-lg .bootstrap-select.form-control .dropdown-toggle, -.form-group-sm .bootstrap-select.form-control .dropdown-toggle { - height: 100%; - font-size: inherit; - line-height: inherit; - border-radius: inherit; -} -.bootstrap-select.form-control-sm .dropdown-toggle, -.bootstrap-select.form-control-lg .dropdown-toggle { - font-size: inherit; - line-height: inherit; - border-radius: inherit; -} -.bootstrap-select.form-control-sm .dropdown-toggle { - padding: 0.25rem 0.5rem; -} -.bootstrap-select.form-control-lg .dropdown-toggle { - padding: 0.5rem 1rem; -} -.form-inline .bootstrap-select .form-control { - width: 100%; -} -.bootstrap-select.disabled, -.bootstrap-select > .disabled { - cursor: not-allowed; -} -.bootstrap-select.disabled:focus, -.bootstrap-select > .disabled:focus { - outline: none !important; -} -.bootstrap-select.bs-container { - position: absolute; - top: 0; - left: 0; - height: 0 !important; - padding: 0 !important; -} -.bootstrap-select.bs-container .dropdown-menu { - z-index: 1060; -} -.bootstrap-select .dropdown-toggle .filter-option { - position: static; - top: 0; - left: 0; - float: left; - height: 100%; - width: 100%; - text-align: left; - overflow: hidden; - -webkit-box-flex: 0; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; -} -.bs3.bootstrap-select .dropdown-toggle .filter-option { - padding-right: inherit; -} -.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option { - position: absolute; - padding-top: inherit; - padding-bottom: inherit; - padding-left: inherit; - float: none; -} -.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner { - padding-right: inherit; -} -.bootstrap-select .dropdown-toggle .filter-option-inner-inner { - overflow: hidden; -} -.bootstrap-select .dropdown-toggle .filter-expand { - width: 0 !important; - float: left; - opacity: 0 !important; - overflow: hidden; -} -.bootstrap-select .dropdown-toggle .caret { - position: absolute; - top: 50%; - right: 12px; - margin-top: -2px; - vertical-align: middle; -} -.input-group .bootstrap-select.form-control .dropdown-toggle { - border-radius: inherit; -} -.bootstrap-select[class*="col-"] .dropdown-toggle { - width: 100%; -} -.bootstrap-select .dropdown-menu { - min-width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bootstrap-select .dropdown-menu > .inner:focus { - outline: none !important; -} -.bootstrap-select .dropdown-menu.inner { - position: static; - float: none; - border: 0; - padding: 0; - margin: 0; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.bootstrap-select .dropdown-menu li { - position: relative; -} -.bootstrap-select .dropdown-menu li.active small { - color: rgba(255, 255, 255, 0.5) !important; -} -.bootstrap-select .dropdown-menu li.disabled a { - cursor: not-allowed; -} -.bootstrap-select .dropdown-menu li a { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.bootstrap-select .dropdown-menu li a.opt { - position: relative; - padding-left: 2.25em; -} -.bootstrap-select .dropdown-menu li a span.check-mark { - display: none; -} -.bootstrap-select .dropdown-menu li a span.text { - display: inline-block; -} -.bootstrap-select .dropdown-menu li small { - padding-left: 0.5em; -} -.bootstrap-select .dropdown-menu .notify { - position: absolute; - bottom: 5px; - width: 96%; - margin: 0 2%; - min-height: 26px; - padding: 3px 5px; - background: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - pointer-events: none; - opacity: 0.9; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bootstrap-select .no-results { - padding: 3px; - background: #f5f5f5; - margin: 0 5px; - white-space: nowrap; -} -.bootstrap-select.fit-width .dropdown-toggle .filter-option { - position: static; - display: inline; - padding: 0; -} -.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner, -.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner { - display: inline; -} -.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before { - content: '\00a0'; -} -.bootstrap-select.fit-width .dropdown-toggle .caret { - position: static; - top: auto; - margin-top: -1px; -} -.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark { - position: absolute; - display: inline-block; - right: 15px; - top: 5px; -} -.bootstrap-select.show-tick .dropdown-menu li a span.text { - margin-right: 34px; -} -.bootstrap-select .bs-ok-default:after { - content: ''; - display: block; - width: 0.5em; - height: 1em; - border-style: solid; - border-width: 0 0.26em 0.26em 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle { - z-index: 1061; -} -.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before { - content: ''; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid rgba(204, 204, 204, 0.2); - position: absolute; - bottom: -4px; - left: 9px; - display: none; -} -.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after { - content: ''; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid white; - position: absolute; - bottom: -4px; - left: 10px; - display: none; -} -.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before { - bottom: auto; - top: -4px; - border-top: 7px solid rgba(204, 204, 204, 0.2); - border-bottom: 0; -} -.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after { - bottom: auto; - top: -4px; - border-top: 6px solid white; - border-bottom: 0; -} -.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before { - right: 12px; - left: auto; -} -.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after { - right: 13px; - left: auto; -} -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before, -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after { - display: block; -} -.bs-searchbox, -.bs-actionsbox, -.bs-donebutton { - padding: 4px 8px; -} -.bs-actionsbox { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bs-actionsbox .btn-group button { - width: 50%; -} -.bs-donebutton { - float: left; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bs-donebutton .btn-group button { - width: 100%; -} -.bs-searchbox + .bs-actionsbox { - padding: 0 8px 4px; -} -.bs-searchbox .form-control { - margin-bottom: 0; - width: 100%; - float: none; -} -/*# sourceMappingURL=bootstrap-select.css.map */ \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js deleted file mode 100644 index c3ab3bf..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js +++ /dev/null @@ -1,3139 +0,0 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - -(function (root, factory) { - if (root === undefined && window !== undefined) root = window; - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module unless amdModuleId is set - define(["jquery"], function (a0) { - return (factory(a0)); - }); - } else if (typeof module === 'object' && module.exports) { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -}(this, function (jQuery) { - -(function ($) { - 'use strict'; - - var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; - - var uriAttrs = [ - 'background', - 'cite', - 'href', - 'itemtype', - 'longdesc', - 'poster', - 'src', - 'xlink:href' - ]; - - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - - var DefaultWhitelist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - } - - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; - - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; - - function allowedAttribute (attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase() - - if ($.inArray(attrName, allowedAttributeList) !== -1) { - if ($.inArray(attrName, uriAttrs) !== -1) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)) - } - - return true - } - - var regExp = $(allowedAttributeList).filter(function (index, value) { - return value instanceof RegExp - }) - - // Check if a regular expression validates the attribute. - for (var i = 0, l = regExp.length; i < l; i++) { - if (attrName.match(regExp[i])) { - return true - } - } - - return false - } - - function sanitizeHtml (unsafeElements, whiteList, sanitizeFn) { - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeElements); - } - - var whitelistKeys = Object.keys(whiteList); - - for (var i = 0, len = unsafeElements.length; i < len; i++) { - var elements = unsafeElements[i].querySelectorAll('*'); - - for (var j = 0, len2 = elements.length; j < len2; j++) { - var el = elements[j]; - var elName = el.nodeName.toLowerCase(); - - if (whitelistKeys.indexOf(elName) === -1) { - el.parentNode.removeChild(el); - - continue; - } - - var attributeList = [].slice.call(el.attributes); - var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); - - for (var k = 0, len3 = attributeList.length; k < len3; k++) { - var attr = attributeList[k]; - - if (!allowedAttribute(attr, whitelistedAttributes)) { - el.removeAttribute(attr.nodeName); - } - } - } - } - } - - // Polyfill for browsers with no classList support - // Remove in v2 - if (!('classList' in document.createElement('_'))) { - (function (view) { - if (!('Element' in view)) return; - - var classListProp = 'classList', - protoProp = 'prototype', - elemCtrProto = view.Element[protoProp], - objCtr = Object, - classListGetter = function () { - var $elem = $(this); - - return { - add: function (classes) { - classes = Array.prototype.slice.call(arguments).join(' '); - return $elem.addClass(classes); - }, - remove: function (classes) { - classes = Array.prototype.slice.call(arguments).join(' '); - return $elem.removeClass(classes); - }, - toggle: function (classes, force) { - return $elem.toggleClass(classes, force); - }, - contains: function (classes) { - return $elem.hasClass(classes); - } - } - }; - - if (objCtr.defineProperty) { - var classListPropDesc = { - get: classListGetter, - enumerable: true, - configurable: true - }; - try { - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } catch (ex) { // IE 8 doesn't support enumerable:true - // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36 - // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected - if (ex.number === undefined || ex.number === -0x7FF5EC54) { - classListPropDesc.enumerable = false; - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } - } - } else if (objCtr[protoProp].__defineGetter__) { - elemCtrProto.__defineGetter__(classListProp, classListGetter); - } - }(window)); - } - - var testElement = document.createElement('_'); - - testElement.classList.add('c1', 'c2'); - - if (!testElement.classList.contains('c2')) { - var _add = DOMTokenList.prototype.add, - _remove = DOMTokenList.prototype.remove; - - DOMTokenList.prototype.add = function () { - Array.prototype.forEach.call(arguments, _add.bind(this)); - } - - DOMTokenList.prototype.remove = function () { - Array.prototype.forEach.call(arguments, _remove.bind(this)); - } - } - - testElement.classList.toggle('c3', false); - - // Polyfill for IE 10 and Firefox <24, where classList.toggle does not - // support the second argument. - if (testElement.classList.contains('c3')) { - var _toggle = DOMTokenList.prototype.toggle; - - DOMTokenList.prototype.toggle = function (token, force) { - if (1 in arguments && !this.contains(token) === !force) { - return force; - } else { - return _toggle.call(this, token); - } - }; - } - - testElement = null; - - // shallow array comparison - function isEqual (array1, array2) { - return array1.length === array2.length && array1.every(function (element, index) { - return element === array2[index]; - }); - }; - - // - if (!String.prototype.startsWith) { - (function () { - 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` - var defineProperty = (function () { - // IE 8 only supports `Object.defineProperty` on DOM elements - try { - var object = {}; - var $defineProperty = Object.defineProperty; - var result = $defineProperty(object, object, object) && $defineProperty; - } catch (error) { - } - return result; - }()); - var toString = {}.toString; - var startsWith = function (search) { - if (this == null) { - throw new TypeError(); - } - var string = String(this); - if (search && toString.call(search) == '[object RegExp]') { - throw new TypeError(); - } - var stringLength = string.length; - var searchString = String(search); - var searchLength = searchString.length; - var position = arguments.length > 1 ? arguments[1] : undefined; - // `ToInteger` - var pos = position ? Number(position) : 0; - if (pos != pos) { // better `isNaN` - pos = 0; - } - var start = Math.min(Math.max(pos, 0), stringLength); - // Avoid the `indexOf` call if no match is possible - if (searchLength + start > stringLength) { - return false; - } - var index = -1; - while (++index < searchLength) { - if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { - return false; - } - } - return true; - }; - if (defineProperty) { - defineProperty(String.prototype, 'startsWith', { - 'value': startsWith, - 'configurable': true, - 'writable': true - }); - } else { - String.prototype.startsWith = startsWith; - } - }()); - } - - if (!Object.keys) { - Object.keys = function ( - o, // object - k, // key - r // result array - ) { - // initialize object and result - r = []; - // iterate over object keys - for (k in o) { - // fill result array with non-prototypical keys - r.hasOwnProperty.call(o, k) && r.push(k); - } - // return result - return r; - }; - } - - if (HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty('selectedOptions')) { - Object.defineProperty(HTMLSelectElement.prototype, 'selectedOptions', { - get: function () { - return this.querySelectorAll(':checked'); - } - }); - } - - function getSelectedOptions (select, ignoreDisabled) { - var selectedOptions = select.selectedOptions, - options = [], - opt; - - if (ignoreDisabled) { - for (var i = 0, len = selectedOptions.length; i < len; i++) { - opt = selectedOptions[i]; - - if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) { - options.push(opt); - } - } - - return options; - } - - return selectedOptions; - } - - // much faster than $.val() - function getSelectValues (select, selectedOptions) { - var value = [], - options = selectedOptions || select.selectedOptions, - opt; - - for (var i = 0, len = options.length; i < len; i++) { - opt = options[i]; - - if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) { - value.push(opt.value || opt.text); - } - } - - if (!select.multiple) { - return !value.length ? null : value[0]; - } - - return value; - } - - // set data-selected on select element if the value has been programmatically selected - // prior to initialization of bootstrap-select - // * consider removing or replacing an alternative method * - var valHooks = { - useDefault: false, - _set: $.valHooks.select.set - }; - - $.valHooks.select.set = function (elem, value) { - if (value && !valHooks.useDefault) $(elem).data('selected', true); - - return valHooks._set.apply(this, arguments); - }; - - var changedArguments = null; - - var EventIsSupported = (function () { - try { - new Event('change'); - return true; - } catch (e) { - return false; - } - })(); - - $.fn.triggerNative = function (eventName) { - var el = this[0], - event; - - if (el.dispatchEvent) { // for modern browsers & IE9+ - if (EventIsSupported) { - // For modern browsers - event = new Event(eventName, { - bubbles: true - }); - } else { - // For IE since it doesn't support Event constructor - event = document.createEvent('Event'); - event.initEvent(eventName, true, false); - } - - el.dispatchEvent(event); - } else if (el.fireEvent) { // for IE8 - event = document.createEventObject(); - event.eventType = eventName; - el.fireEvent('on' + eventName, event); - } else { - // fall back to jQuery.trigger - this.trigger(eventName); - } - }; - // - - function stringSearch (li, searchString, method, normalize) { - var stringTypes = [ - 'display', - 'subtext', - 'tokens' - ], - searchSuccess = false; - - for (var i = 0; i < stringTypes.length; i++) { - var stringType = stringTypes[i], - string = li[stringType]; - - if (string) { - string = string.toString(); - - // Strip HTML tags. This isn't perfect, but it's much faster than any other method - if (stringType === 'display') { - string = string.replace(/<[^>]+>/g, ''); - } - - if (normalize) string = normalizeToBase(string); - string = string.toUpperCase(); - - if (method === 'contains') { - searchSuccess = string.indexOf(searchString) >= 0; - } else { - searchSuccess = string.startsWith(searchString); - } - - if (searchSuccess) break; - } - } - - return searchSuccess; - } - - function toInteger (value) { - return parseInt(value, 10) || 0; - } - - // Borrowed from Lodash (_.deburr) - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to compose unicode character classes. */ - var rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboMarksExtendedRange = '\\u1ab0-\\u1aff', - rsComboMarksSupplementRange = '\\u1dc0-\\u1dff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange; - - /** Used to compose unicode capture groups. */ - var rsCombo = '[' + rsComboRange + ']'; - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - function deburrLetter (key) { - return deburredLetters[key]; - }; - - function normalizeToBase (string) { - string = string.toString(); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - // List of HTML entities for escaping. - var escapeMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function (map) { - var escaper = function (match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped. - var source = '(?:' + Object.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function (string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; - - var htmlEscape = createEscaper(escapeMap); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var keyCodeMap = { - 32: ' ', - 48: '0', - 49: '1', - 50: '2', - 51: '3', - 52: '4', - 53: '5', - 54: '6', - 55: '7', - 56: '8', - 57: '9', - 59: ';', - 65: 'A', - 66: 'B', - 67: 'C', - 68: 'D', - 69: 'E', - 70: 'F', - 71: 'G', - 72: 'H', - 73: 'I', - 74: 'J', - 75: 'K', - 76: 'L', - 77: 'M', - 78: 'N', - 79: 'O', - 80: 'P', - 81: 'Q', - 82: 'R', - 83: 'S', - 84: 'T', - 85: 'U', - 86: 'V', - 87: 'W', - 88: 'X', - 89: 'Y', - 90: 'Z', - 96: '0', - 97: '1', - 98: '2', - 99: '3', - 100: '4', - 101: '5', - 102: '6', - 103: '7', - 104: '8', - 105: '9' - }; - - var keyCodes = { - ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key - ENTER: 13, // KeyboardEvent.which value for Enter key - SPACE: 32, // KeyboardEvent.which value for space key - TAB: 9, // KeyboardEvent.which value for tab key - ARROW_UP: 38, // KeyboardEvent.which value for up arrow key - ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key - } - - var version = { - success: false, - major: '3' - }; - - try { - version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); - version.major = version.full[0]; - version.success = true; - } catch (err) { - // do nothing - } - - var selectId = 0; - - var EVENT_KEY = '.bs.select'; - - var classNames = { - DISABLED: 'disabled', - DIVIDER: 'divider', - SHOW: 'open', - DROPUP: 'dropup', - MENU: 'dropdown-menu', - MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', - // to-do: replace with more advanced template/customization options - BUTTONCLASS: 'btn-default', - POPOVERHEADER: 'popover-title', - ICONBASE: 'glyphicon', - TICKICON: 'glyphicon-ok' - } - - var Selector = { - MENU: '.' + classNames.MENU - } - - var elementTemplates = { - span: document.createElement('span'), - i: document.createElement('i'), - subtext: document.createElement('small'), - a: document.createElement('a'), - li: document.createElement('li'), - whitespace: document.createTextNode('\u00A0'), - fragment: document.createDocumentFragment() - } - - elementTemplates.a.setAttribute('role', 'option'); - elementTemplates.subtext.className = 'text-muted'; - - elementTemplates.text = elementTemplates.span.cloneNode(false); - elementTemplates.text.className = 'text'; - - elementTemplates.checkMark = elementTemplates.span.cloneNode(false); - - var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN); - var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE); - - var generateOption = { - li: function (content, classes, optgroup) { - var li = elementTemplates.li.cloneNode(false); - - if (content) { - if (content.nodeType === 1 || content.nodeType === 11) { - li.appendChild(content); - } else { - li.innerHTML = content; - } - } - - if (typeof classes !== 'undefined' && classes !== '') li.className = classes; - if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup); - - return li; - }, - - a: function (text, classes, inline) { - var a = elementTemplates.a.cloneNode(true); - - if (text) { - if (text.nodeType === 11) { - a.appendChild(text); - } else { - a.insertAdjacentHTML('beforeend', text); - } - } - - if (typeof classes !== 'undefined' && classes !== '') a.className = classes; - if (version.major === '4') a.classList.add('dropdown-item'); - if (inline) a.setAttribute('style', inline); - - return a; - }, - - text: function (options, useFragment) { - var textElement = elementTemplates.text.cloneNode(false), - subtextElement, - iconElement; - - if (options.content) { - textElement.innerHTML = options.content; - } else { - textElement.textContent = options.text; - - if (options.icon) { - var whitespace = elementTemplates.whitespace.cloneNode(false); - - // need to use for icons in the button to prevent a breaking change - // note: switch to span in next major release - iconElement = (useFragment === true ? elementTemplates.i : elementTemplates.span).cloneNode(false); - iconElement.className = options.iconBase + ' ' + options.icon; - - elementTemplates.fragment.appendChild(iconElement); - elementTemplates.fragment.appendChild(whitespace); - } - - if (options.subtext) { - subtextElement = elementTemplates.subtext.cloneNode(false); - subtextElement.textContent = options.subtext; - textElement.appendChild(subtextElement); - } - } - - if (useFragment === true) { - while (textElement.childNodes.length > 0) { - elementTemplates.fragment.appendChild(textElement.childNodes[0]); - } - } else { - elementTemplates.fragment.appendChild(textElement); - } - - return elementTemplates.fragment; - }, - - label: function (options) { - var textElement = elementTemplates.text.cloneNode(false), - subtextElement, - iconElement; - - textElement.innerHTML = options.label; - - if (options.icon) { - var whitespace = elementTemplates.whitespace.cloneNode(false); - - iconElement = elementTemplates.span.cloneNode(false); - iconElement.className = options.iconBase + ' ' + options.icon; - - elementTemplates.fragment.appendChild(iconElement); - elementTemplates.fragment.appendChild(whitespace); - } - - if (options.subtext) { - subtextElement = elementTemplates.subtext.cloneNode(false); - subtextElement.textContent = options.subtext; - textElement.appendChild(subtextElement); - } - - elementTemplates.fragment.appendChild(textElement); - - return elementTemplates.fragment; - } - } - - var Selectpicker = function (element, options) { - var that = this; - - // bootstrap-select has been initialized - revert valHooks.select.set back to its original function - if (!valHooks.useDefault) { - $.valHooks.select.set = valHooks._set; - valHooks.useDefault = true; - } - - this.$element = $(element); - this.$newElement = null; - this.$button = null; - this.$menu = null; - this.options = options; - this.selectpicker = { - main: {}, - search: {}, - current: {}, // current changes if a search is in progress - view: {}, - keydown: { - keyHistory: '', - resetKeyHistory: { - start: function () { - return setTimeout(function () { - that.selectpicker.keydown.keyHistory = ''; - }, 800); - } - } - } - }; - // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a - // data-attribute) - if (this.options.title === null) { - this.options.title = this.$element.attr('title'); - } - - // Format window padding - var winPad = this.options.windowPadding; - if (typeof winPad === 'number') { - this.options.windowPadding = [winPad, winPad, winPad, winPad]; - } - - // Expose public methods - this.val = Selectpicker.prototype.val; - this.render = Selectpicker.prototype.render; - this.refresh = Selectpicker.prototype.refresh; - this.setStyle = Selectpicker.prototype.setStyle; - this.selectAll = Selectpicker.prototype.selectAll; - this.deselectAll = Selectpicker.prototype.deselectAll; - this.destroy = Selectpicker.prototype.destroy; - this.remove = Selectpicker.prototype.remove; - this.show = Selectpicker.prototype.show; - this.hide = Selectpicker.prototype.hide; - - this.init(); - }; - - Selectpicker.VERSION = '1.13.10'; - - // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. - Selectpicker.DEFAULTS = { - noneSelectedText: 'Nothing selected', - noneResultsText: 'No results matched {0}', - countSelectedText: function (numSelected, numTotal) { - return (numSelected == 1) ? '{0} item selected' : '{0} items selected'; - }, - maxOptionsText: function (numAll, numGroup) { - return [ - (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', - (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' - ]; - }, - selectAllText: 'Select All', - deselectAllText: 'Deselect All', - doneButton: false, - doneButtonText: 'Close', - multipleSeparator: ', ', - styleBase: 'btn', - style: classNames.BUTTONCLASS, - size: 'auto', - title: null, - selectedTextFormat: 'values', - width: false, - container: false, - hideDisabled: false, - showSubtext: false, - showIcon: true, - showContent: true, - dropupAuto: true, - header: false, - liveSearch: false, - liveSearchPlaceholder: null, - liveSearchNormalize: false, - liveSearchStyle: 'contains', - actionsBox: false, - iconBase: classNames.ICONBASE, - tickIcon: classNames.TICKICON, - showTick: false, - template: { - caret: '' - }, - maxOptions: false, - mobile: false, - selectOnTab: false, - dropdownAlignRight: false, - windowPadding: 0, - virtualScroll: 600, - display: false, - sanitize: true, - sanitizeFn: null, - whiteList: DefaultWhitelist - }; - - Selectpicker.prototype = { - - constructor: Selectpicker, - - init: function () { - var that = this, - id = this.$element.attr('id'); - - selectId++; - this.selectId = 'bs-select-' + selectId; - - this.$element[0].classList.add('bs-select-hidden'); - - this.multiple = this.$element.prop('multiple'); - this.autofocus = this.$element.prop('autofocus'); - - if (this.$element[0].classList.contains('show-tick')) { - this.options.showTick = true; - } - - this.$newElement = this.createDropdown(); - this.$element - .after(this.$newElement) - .prependTo(this.$newElement); - - this.$button = this.$newElement.children('button'); - this.$menu = this.$newElement.children(Selector.MENU); - this.$menuInner = this.$menu.children('.inner'); - this.$searchbox = this.$menu.find('input'); - - this.$element[0].classList.remove('bs-select-hidden'); - - if (this.options.dropdownAlignRight === true) this.$menu[0].classList.add(classNames.MENURIGHT); - - if (typeof id !== 'undefined') { - this.$button.attr('data-id', id); - } - - this.checkDisabled(); - this.clickListener(); - - if (this.options.liveSearch) { - this.liveSearchListener(); - this.focusedParent = this.$searchbox[0]; - } else { - this.focusedParent = this.$menuInner[0]; - } - - this.setStyle(); - this.render(); - this.setWidth(); - if (this.options.container) { - this.selectPosition(); - } else { - this.$element.on('hide' + EVENT_KEY, function () { - if (that.isVirtual()) { - // empty menu on close - var menuInner = that.$menuInner[0], - emptyMenu = menuInner.firstChild.cloneNode(false); - - // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = '' - menuInner.replaceChild(emptyMenu, menuInner.firstChild); - menuInner.scrollTop = 0; - } - }); - } - this.$menu.data('this', this); - this.$newElement.data('this', this); - if (this.options.mobile) this.mobile(); - - this.$newElement.on({ - 'hide.bs.dropdown': function (e) { - that.$element.trigger('hide' + EVENT_KEY, e); - }, - 'hidden.bs.dropdown': function (e) { - that.$element.trigger('hidden' + EVENT_KEY, e); - }, - 'show.bs.dropdown': function (e) { - that.$element.trigger('show' + EVENT_KEY, e); - }, - 'shown.bs.dropdown': function (e) { - that.$element.trigger('shown' + EVENT_KEY, e); - } - }); - - if (that.$element[0].hasAttribute('required')) { - this.$element.on('invalid' + EVENT_KEY, function () { - that.$button[0].classList.add('bs-invalid'); - - that.$element - .on('shown' + EVENT_KEY + '.invalid', function () { - that.$element - .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened - .off('shown' + EVENT_KEY + '.invalid'); - }) - .on('rendered' + EVENT_KEY, function () { - // if select is no longer invalid, remove the bs-invalid class - if (this.validity.valid) that.$button[0].classList.remove('bs-invalid'); - that.$element.off('rendered' + EVENT_KEY); - }); - - that.$button.on('blur' + EVENT_KEY, function () { - that.$element.trigger('focus').trigger('blur'); - that.$button.off('blur' + EVENT_KEY); - }); - }); - } - - setTimeout(function () { - that.createLi(); - that.$element.trigger('loaded' + EVENT_KEY); - }); - }, - - createDropdown: function () { - // Options - // If we are multiple or showTick option is set, then add the show-tick class - var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', - multiselectable = this.multiple ? ' aria-multiselectable="true"' : '', - inputGroup = '', - autofocus = this.autofocus ? ' autofocus' : ''; - - if (version.major < 4 && this.$element.parent().hasClass('input-group')) { - inputGroup = ' input-group-btn'; - } - - // Elements - var drop, - header = '', - searchbox = '', - actionsbox = '', - donebutton = ''; - - if (this.options.header) { - header = - '
    ' + - '' + - this.options.header + - '
    '; - } - - if (this.options.liveSearch) { - searchbox = - ''; - } - - if (this.multiple && this.options.actionsBox) { - actionsbox = - '
    ' + - '
    ' + - '' + - '' + - '
    ' + - '
    '; - } - - if (this.multiple && this.options.doneButton) { - donebutton = - '
    ' + - '
    ' + - '' + - '
    ' + - '
    '; - } - - drop = - ''; - - return $(drop); - }, - - setPositionData: function () { - this.selectpicker.view.canHighlight = []; - this.selectpicker.view.size = 0; - - for (var i = 0; i < this.selectpicker.current.data.length; i++) { - var li = this.selectpicker.current.data[i], - canHighlight = true; - - if (li.type === 'divider') { - canHighlight = false; - li.height = this.sizeInfo.dividerHeight; - } else if (li.type === 'optgroup-label') { - canHighlight = false; - li.height = this.sizeInfo.dropdownHeaderHeight; - } else { - li.height = this.sizeInfo.liHeight; - } - - if (li.disabled) canHighlight = false; - - this.selectpicker.view.canHighlight.push(canHighlight); - - if (canHighlight) { - this.selectpicker.view.size++; - li.posinset = this.selectpicker.view.size; - } - - li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height; - } - }, - - isVirtual: function () { - return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true; - }, - - createView: function (isSearching, setSize, refresh) { - var that = this, - scrollTop = 0, - active = [], - selected, - prevActive; - - this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main; - - this.setPositionData(); - - if (setSize) { - if (refresh) { - scrollTop = this.$menuInner[0].scrollTop; - } else if (!that.multiple) { - var element = that.$element[0], - selectedIndex = (element.options[element.selectedIndex] || {}).liIndex; - - if (typeof selectedIndex === 'number' && that.options.size !== false) { - var selectedData = that.selectpicker.main.data[selectedIndex], - position = selectedData && selectedData.position; - - if (position) { - scrollTop = position - ((that.sizeInfo.menuInnerHeight + that.sizeInfo.liHeight) / 2); - } - } - } - } - - scroll(scrollTop, true); - - this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) { - if (!that.noScroll) scroll(this.scrollTop, updateValue); - that.noScroll = false; - }); - - function scroll (scrollTop, init) { - var size = that.selectpicker.current.elements.length, - chunks = [], - chunkSize, - chunkCount, - firstChunk, - lastChunk, - currentChunk, - prevPositions, - positionIsDifferent, - previousElements, - menuIsDifferent = true, - isVirtual = that.isVirtual(); - - that.selectpicker.view.scrollTop = scrollTop; - - if (isVirtual === true) { - // if an option that is encountered that is wider than the current menu width, update the menu width accordingly - if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) { - that.sizeInfo.menuWidth = that.$menu[0].offsetWidth; - that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth; - that.$menu.css('min-width', that.sizeInfo.menuWidth); - } - } - - chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk - chunkCount = Math.round(size / chunkSize) || 1; // number of chunks - - for (var i = 0; i < chunkCount; i++) { - var endOfChunk = (i + 1) * chunkSize; - - if (i === chunkCount - 1) { - endOfChunk = size; - } - - chunks[i] = [ - (i) * chunkSize + (!i ? 0 : 1), - endOfChunk - ]; - - if (!size) break; - - if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) { - currentChunk = i; - } - } - - if (currentChunk === undefined) currentChunk = 0; - - prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1]; - - // always display previous, current, and next chunks - firstChunk = Math.max(0, currentChunk - 1); - lastChunk = Math.min(chunkCount - 1, currentChunk + 1); - - that.selectpicker.view.position0 = isVirtual === false ? 0 : (Math.max(0, chunks[firstChunk][0]) || 0); - that.selectpicker.view.position1 = isVirtual === false ? size : (Math.min(size, chunks[lastChunk][1]) || 0); - - positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1; - - if (that.activeIndex !== undefined) { - prevActive = that.selectpicker.main.elements[that.prevActiveIndex]; - active = that.selectpicker.main.elements[that.activeIndex]; - selected = that.selectpicker.main.elements[that.selectedIndex]; - - if (init) { - if (that.activeIndex !== that.selectedIndex) { - that.defocusItem(active); - } - that.activeIndex = undefined; - } - - if (that.activeIndex && that.activeIndex !== that.selectedIndex) { - that.defocusItem(selected); - } - } - - if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex) { - that.defocusItem(prevActive); - } - - if (init || positionIsDifferent) { - previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : []; - - if (isVirtual === false) { - that.selectpicker.view.visibleElements = that.selectpicker.current.elements; - } else { - that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1); - } - - that.setOptionStatus(); - - // if searching, check to make sure the list has actually been updated before updating DOM - // this prevents unnecessary repaints - if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements); - - // if virtual scroll is disabled and not searching, - // menu should never need to be updated more than once - if ((init || isVirtual === true) && menuIsDifferent) { - var menuInner = that.$menuInner[0], - menuFragment = document.createDocumentFragment(), - emptyMenu = menuInner.firstChild.cloneNode(false), - marginTop, - marginBottom, - elements = that.selectpicker.view.visibleElements, - toSanitize = []; - - // replace the existing UL with an empty one - this is faster than $.empty() - menuInner.replaceChild(emptyMenu, menuInner.firstChild); - - for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) { - var element = elements[i], - elText, - elementData; - - if (that.options.sanitize) { - elText = element.lastChild; - - if (elText) { - elementData = that.selectpicker.current.data[i + that.selectpicker.view.position0]; - - if (elementData && elementData.content && !elementData.sanitized) { - toSanitize.push(elText); - elementData.sanitized = true; - } - } - } - - menuFragment.appendChild(element); - } - - if (that.options.sanitize && toSanitize.length) { - sanitizeHtml(toSanitize, that.options.whiteList, that.options.sanitizeFn); - } - - if (isVirtual === true) { - marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position); - marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position); - - menuInner.firstChild.style.marginTop = marginTop + 'px'; - menuInner.firstChild.style.marginBottom = marginBottom + 'px'; - } else { - menuInner.firstChild.style.marginTop = 0; - menuInner.firstChild.style.marginBottom = 0; - } - - menuInner.firstChild.appendChild(menuFragment); - } - } - - that.prevActiveIndex = that.activeIndex; - - if (!that.options.liveSearch) { - that.$menuInner.trigger('focus'); - } else if (isSearching && init) { - var index = 0, - newActive; - - if (!that.selectpicker.view.canHighlight[index]) { - index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true); - } - - newActive = that.selectpicker.view.visibleElements[index]; - - that.defocusItem(that.selectpicker.view.currentActive); - - that.activeIndex = (that.selectpicker.current.data[index] || {}).index; - - that.focusItem(newActive); - } - } - - $(window) - .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView') - .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () { - var isActive = that.$newElement.hasClass(classNames.SHOW); - - if (isActive) scroll(that.$menuInner[0].scrollTop); - }); - }, - - focusItem: function (li, liData, noStyle) { - if (li) { - liData = liData || this.selectpicker.main.data[this.activeIndex]; - var a = li.firstChild; - - if (a) { - a.setAttribute('aria-setsize', this.selectpicker.view.size); - a.setAttribute('aria-posinset', liData.posinset); - - if (noStyle !== true) { - this.focusedParent.setAttribute('aria-activedescendant', a.id); - li.classList.add('active'); - a.classList.add('active'); - } - } - } - }, - - defocusItem: function (li) { - if (li) { - li.classList.remove('active'); - if (li.firstChild) li.firstChild.classList.remove('active'); - } - }, - - setPlaceholder: function () { - var updateIndex = false; - - if (this.options.title && !this.multiple) { - if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option'); - - // this option doesn't create a new
  • element, but does add a new option at the start, - // so startIndex should increase to prevent having to check every option for the bs-title-option class - updateIndex = true; - - var element = this.$element[0], - isSelected = false, - titleNotAppended = !this.selectpicker.view.titleOption.parentNode; - - if (titleNotAppended) { - // Use native JS to prepend option (faster) - this.selectpicker.view.titleOption.className = 'bs-title-option'; - this.selectpicker.view.titleOption.value = ''; - - // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. - // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, - // if so, the select will have the data-selected attribute - var $opt = $(element.options[element.selectedIndex]); - isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined; - } - - if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) { - element.insertBefore(this.selectpicker.view.titleOption, element.firstChild); - } - - // Set selected *after* appending to select, - // otherwise the option doesn't get selected in IE - // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11 - if (isSelected) element.selectedIndex = 0; - } - - return updateIndex; - }, - - createLi: function () { - var that = this, - iconBase = this.options.iconBase, - optionSelector = ':not([hidden]):not([data-hidden="true"])', - mainElements = [], - mainData = [], - widestOptionLength = 0, - optID = 0, - startIndex = this.setPlaceholder() ? 1 : 0; // append the titleOption if necessary and skip the first option in the loop - - if (this.options.hideDisabled) optionSelector += ':not(:disabled)'; - - if ((that.options.showTick || that.multiple) && !elementTemplates.checkMark.parentNode) { - elementTemplates.checkMark.className = iconBase + ' ' + that.options.tickIcon + ' check-mark'; - elementTemplates.a.appendChild(elementTemplates.checkMark); - } - - var selectOptions = this.$element[0].querySelectorAll('select > *' + optionSelector); - - function addDivider (config) { - var previousData = mainData[mainData.length - 1]; - - // ensure optgroup doesn't create back-to-back dividers - if ( - previousData && - previousData.type === 'divider' && - (previousData.optID || config.optID) - ) { - return; - } - - config = config || {}; - config.type = 'divider'; - - mainElements.push( - generateOption.li( - false, - classNames.DIVIDER, - (config.optID ? config.optID + 'div' : undefined) - ) - ); - - mainData.push(config); - } - - function addOption (option, config) { - config = config || {}; - - config.divider = option.getAttribute('data-divider') === 'true'; - - if (config.divider) { - addDivider({ - optID: config.optID - }); - } else { - var liIndex = mainData.length, - cssText = option.style.cssText, - inlineStyle = cssText ? htmlEscape(cssText) : '', - optionClass = (option.className || '') + (config.optgroupClass || ''); - - if (config.optID) optionClass = 'opt ' + optionClass; - - config.text = option.textContent; - - config.content = option.getAttribute('data-content'); - config.tokens = option.getAttribute('data-tokens'); - config.subtext = option.getAttribute('data-subtext'); - config.icon = option.getAttribute('data-icon'); - config.iconBase = iconBase; - - var textElement = generateOption.text(config); - var liElement = generateOption.li( - generateOption.a( - textElement, - optionClass, - inlineStyle - ), - '', - config.optID - ); - - if (liElement.firstChild) { - liElement.firstChild.id = that.selectId + '-' + liIndex; - } - - mainElements.push(liElement); - - option.liIndex = liIndex; - - config.display = config.content || config.text; - config.type = 'option'; - config.index = liIndex; - config.option = option; - config.disabled = config.disabled || option.disabled; - - mainData.push(config); - - var combinedLength = 0; - - // count the number of characters in the option - not perfect, but should work in most cases - if (config.display) combinedLength += config.display.length; - if (config.subtext) combinedLength += config.subtext.length; - // if there is an icon, ensure this option's width is checked - if (config.icon) combinedLength += 1; - - if (combinedLength > widestOptionLength) { - widestOptionLength = combinedLength; - - // guess which option is the widest - // use this when calculating menu width - // not perfect, but it's fast, and the width will be updating accordingly when scrolling - that.selectpicker.view.widestOption = mainElements[mainElements.length - 1]; - } - } - } - - function addOptgroup (index, selectOptions) { - var optgroup = selectOptions[index], - previous = selectOptions[index - 1], - next = selectOptions[index + 1], - options = optgroup.querySelectorAll('option' + optionSelector); - - if (!options.length) return; - - var config = { - label: htmlEscape(optgroup.label), - subtext: optgroup.getAttribute('data-subtext'), - icon: optgroup.getAttribute('data-icon'), - iconBase: iconBase - }, - optgroupClass = ' ' + (optgroup.className || ''), - headerIndex, - lastIndex; - - optID++; - - if (previous) { - addDivider({ optID: optID }); - } - - var labelElement = generateOption.label(config); - - mainElements.push( - generateOption.li(labelElement, 'dropdown-header' + optgroupClass, optID) - ); - - mainData.push({ - display: config.label, - subtext: config.subtext, - type: 'optgroup-label', - optID: optID - }); - - for (var j = 0, len = options.length; j < len; j++) { - var option = options[j]; - - if (j === 0) { - headerIndex = mainData.length - 1; - lastIndex = headerIndex + len; - } - - addOption(option, { - headerIndex: headerIndex, - lastIndex: lastIndex, - optID: optID, - optgroupClass: optgroupClass, - disabled: optgroup.disabled - }); - } - - if (next) { - addDivider({ optID: optID }); - } - } - - for (var len = selectOptions.length; startIndex < len; startIndex++) { - var item = selectOptions[startIndex]; - - if (item.tagName !== 'OPTGROUP') { - addOption(item, {}); - } else { - addOptgroup(startIndex, selectOptions); - } - } - - this.selectpicker.main.elements = mainElements; - this.selectpicker.main.data = mainData; - - this.selectpicker.current = this.selectpicker.main; - }, - - findLis: function () { - return this.$menuInner.find('.inner > li'); - }, - - render: function () { - // ensure titleOption is appended and selected (if necessary) before getting selectedOptions - this.setPlaceholder(); - - var that = this, - element = this.$element[0], - selectedOptions = getSelectedOptions(element, this.options.hideDisabled), - selectedCount = selectedOptions.length, - button = this.$button[0], - buttonInner = button.querySelector('.filter-option-inner-inner'), - multipleSeparator = document.createTextNode(this.options.multipleSeparator), - titleFragment = elementTemplates.fragment.cloneNode(false), - showCount, - countMax, - hasContent = false; - - button.classList.toggle('bs-placeholder', that.multiple ? !selectedCount : !getSelectValues(element, selectedOptions)); - - this.tabIndex(); - - if (this.options.selectedTextFormat === 'static') { - titleFragment = generateOption.text({ text: this.options.title }, true); - } else { - showCount = this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1 && selectedCount > 1; - - // determine if the number of selected options will be shown (showCount === true) - if (showCount) { - countMax = this.options.selectedTextFormat.split('>'); - showCount = (countMax.length > 1 && selectedCount > countMax[1]) || (countMax.length === 1 && selectedCount >= 2); - } - - // only loop through all selected options if the count won't be shown - if (showCount === false) { - for (var selectedIndex = 0; selectedIndex < selectedCount; selectedIndex++) { - if (selectedIndex < 50) { - var option = selectedOptions[selectedIndex], - titleOptions = {}, - thisData = { - content: option.getAttribute('data-content'), - subtext: option.getAttribute('data-subtext'), - icon: option.getAttribute('data-icon') - }; - - if (this.multiple && selectedIndex > 0) { - titleFragment.appendChild(multipleSeparator.cloneNode(false)); - } - - if (option.title) { - titleOptions.text = option.title; - } else if (thisData.content && that.options.showContent) { - titleOptions.content = thisData.content.toString(); - hasContent = true; - } else { - if (that.options.showIcon) { - titleOptions.icon = thisData.icon; - titleOptions.iconBase = this.options.iconBase; - } - if (that.options.showSubtext && !that.multiple && thisData.subtext) titleOptions.subtext = ' ' + thisData.subtext; - titleOptions.text = option.textContent.trim(); - } - - titleFragment.appendChild(generateOption.text(titleOptions, true)); - } else { - break; - } - } - - // add ellipsis - if (selectedCount > 49) { - titleFragment.appendChild(document.createTextNode('...')); - } - } else { - var optionSelector = ':not([hidden]):not([data-hidden="true"]):not([data-divider="true"])'; - if (this.options.hideDisabled) optionSelector += ':not(:disabled)'; - - // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected, etc. - var totalCount = this.$element[0].querySelectorAll('select > option' + optionSelector + ', optgroup' + optionSelector + ' option' + optionSelector).length, - tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedCount, totalCount) : this.options.countSelectedText; - - titleFragment = generateOption.text({ - text: tr8nText.replace('{0}', selectedCount.toString()).replace('{1}', totalCount.toString()) - }, true); - } - } - - if (this.options.title == undefined) { - // use .attr to ensure undefined is returned if title attribute is not set - this.options.title = this.$element.attr('title'); - } - - // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText - if (!titleFragment.childNodes.length) { - titleFragment = generateOption.text({ - text: typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText - }, true); - } - - // strip all HTML tags and trim the result, then unescape any escaped tags - button.title = titleFragment.textContent.replace(/<[^>]*>?/g, '').trim(); - - if (this.options.sanitize && hasContent) { - sanitizeHtml([titleFragment], that.options.whiteList, that.options.sanitizeFn); - } - - buttonInner.innerHTML = ''; - buttonInner.appendChild(titleFragment); - - if (version.major < 4 && this.$newElement[0].classList.contains('bs3-has-addon')) { - var filterExpand = button.querySelector('.filter-expand'), - clone = buttonInner.cloneNode(true); - - clone.className = 'filter-expand'; - - if (filterExpand) { - button.replaceChild(clone, filterExpand); - } else { - button.appendChild(clone); - } - } - - this.$element.trigger('rendered' + EVENT_KEY); - }, - - /** - * @param [style] - * @param [status] - */ - setStyle: function (newStyle, status) { - var button = this.$button[0], - newElement = this.$newElement[0], - style = this.options.style.trim(), - buttonClass; - - if (this.$element.attr('class')) { - this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); - } - - if (version.major < 4) { - newElement.classList.add('bs3'); - - if (newElement.parentNode.classList.contains('input-group') && - (newElement.previousElementSibling || newElement.nextElementSibling) && - (newElement.previousElementSibling || newElement.nextElementSibling).classList.contains('input-group-addon') - ) { - newElement.classList.add('bs3-has-addon'); - } - } - - if (newStyle) { - buttonClass = newStyle.trim(); - } else { - buttonClass = style; - } - - if (status == 'add') { - if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' ')); - } else if (status == 'remove') { - if (buttonClass) button.classList.remove.apply(button.classList, buttonClass.split(' ')); - } else { - if (style) button.classList.remove.apply(button.classList, style.split(' ')); - if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' ')); - } - }, - - liHeight: function (refresh) { - if (!refresh && (this.options.size === false || this.sizeInfo)) return; - - if (!this.sizeInfo) this.sizeInfo = {}; - - var newElement = document.createElement('div'), - menu = document.createElement('div'), - menuInner = document.createElement('div'), - menuInnerInner = document.createElement('ul'), - divider = document.createElement('li'), - dropdownHeader = document.createElement('li'), - li = document.createElement('li'), - a = document.createElement('a'), - text = document.createElement('span'), - header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null, - search = this.options.liveSearch ? document.createElement('div') : null, - actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, - doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null, - firstOption = this.$element.find('option')[0]; - - this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth; - - text.className = 'text'; - a.className = 'dropdown-item ' + (firstOption ? firstOption.className : ''); - newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW; - newElement.style.width = this.sizeInfo.selectWidth + 'px'; - if (this.options.width === 'auto') menu.style.minWidth = 0; - menu.className = classNames.MENU + ' ' + classNames.SHOW; - menuInner.className = 'inner ' + classNames.SHOW; - menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : ''); - divider.className = classNames.DIVIDER; - dropdownHeader.className = 'dropdown-header'; - - text.appendChild(document.createTextNode('\u200b')); - a.appendChild(text); - li.appendChild(a); - dropdownHeader.appendChild(text.cloneNode(true)); - - if (this.selectpicker.view.widestOption) { - menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true)); - } - - menuInnerInner.appendChild(li); - menuInnerInner.appendChild(divider); - menuInnerInner.appendChild(dropdownHeader); - if (header) menu.appendChild(header); - if (search) { - var input = document.createElement('input'); - search.className = 'bs-searchbox'; - input.className = 'form-control'; - search.appendChild(input); - menu.appendChild(search); - } - if (actions) menu.appendChild(actions); - menuInner.appendChild(menuInnerInner); - menu.appendChild(menuInner); - if (doneButton) menu.appendChild(doneButton); - newElement.appendChild(menu); - - document.body.appendChild(newElement); - - var liHeight = li.offsetHeight, - dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0, - headerHeight = header ? header.offsetHeight : 0, - searchHeight = search ? search.offsetHeight : 0, - actionsHeight = actions ? actions.offsetHeight : 0, - doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, - dividerHeight = $(divider).outerHeight(true), - // fall back to jQuery if getComputedStyle is not supported - menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false, - menuWidth = menu.offsetWidth, - $menu = menuStyle ? null : $(menu), - menuPadding = { - vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + - toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + - toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + - toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), - horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + - toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + - toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + - toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) - }, - menuExtras = { - vert: menuPadding.vert + - toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + - toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, - horiz: menuPadding.horiz + - toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + - toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 - }, - scrollBarWidth; - - menuInner.style.overflowY = 'scroll'; - - scrollBarWidth = menu.offsetWidth - menuWidth; - - document.body.removeChild(newElement); - - this.sizeInfo.liHeight = liHeight; - this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight; - this.sizeInfo.headerHeight = headerHeight; - this.sizeInfo.searchHeight = searchHeight; - this.sizeInfo.actionsHeight = actionsHeight; - this.sizeInfo.doneButtonHeight = doneButtonHeight; - this.sizeInfo.dividerHeight = dividerHeight; - this.sizeInfo.menuPadding = menuPadding; - this.sizeInfo.menuExtras = menuExtras; - this.sizeInfo.menuWidth = menuWidth; - this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth; - this.sizeInfo.scrollBarWidth = scrollBarWidth; - this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight; - - this.setPositionData(); - }, - - getSelectPosition: function () { - var that = this, - $window = $(window), - pos = that.$newElement.offset(), - $container = $(that.options.container), - containerPos; - - if (that.options.container && $container.length && !$container.is('body')) { - containerPos = $container.offset(); - containerPos.top += parseInt($container.css('borderTopWidth')); - containerPos.left += parseInt($container.css('borderLeftWidth')); - } else { - containerPos = { top: 0, left: 0 }; - } - - var winPad = that.options.windowPadding; - - this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); - this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2]; - this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); - this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1]; - this.sizeInfo.selectOffsetTop -= winPad[0]; - this.sizeInfo.selectOffsetLeft -= winPad[3]; - }, - - setMenuSize: function (isAuto) { - this.getSelectPosition(); - - var selectWidth = this.sizeInfo.selectWidth, - liHeight = this.sizeInfo.liHeight, - headerHeight = this.sizeInfo.headerHeight, - searchHeight = this.sizeInfo.searchHeight, - actionsHeight = this.sizeInfo.actionsHeight, - doneButtonHeight = this.sizeInfo.doneButtonHeight, - divHeight = this.sizeInfo.dividerHeight, - menuPadding = this.sizeInfo.menuPadding, - menuInnerHeight, - menuHeight, - divLength = 0, - minHeight, - _minHeight, - maxHeight, - menuInnerMinHeight, - estimate; - - if (this.options.dropupAuto) { - // Get the estimated height of the menu without scrollbars. - // This is useful for smaller menus, where there might be plenty of room - // below the button without setting dropup, but we can't know - // the exact height of the menu until createView is called later - estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert; - this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot); - } - - if (this.options.size === 'auto') { - _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0; - menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert; - minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; - menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0); - - if (this.$newElement.hasClass(classNames.DROPUP)) { - menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert; - } - - maxHeight = menuHeight; - menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert; - } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { - for (var i = 0; i < this.options.size; i++) { - if (this.selectpicker.current.data[i].type === 'divider') divLength++; - } - - menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; - menuInnerHeight = menuHeight - menuPadding.vert; - maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; - minHeight = menuInnerMinHeight = ''; - } - - if (this.options.dropdownAlignRight === 'auto') { - this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth)); - } - - this.$menu.css({ - 'max-height': maxHeight + 'px', - 'overflow': 'hidden', - 'min-height': minHeight + 'px' - }); - - this.$menuInner.css({ - 'max-height': menuInnerHeight + 'px', - 'overflow-y': 'auto', - 'min-height': menuInnerMinHeight + 'px' - }); - - // ensure menuInnerHeight is always a positive number to prevent issues calculating chunkSize in createView - this.sizeInfo.menuInnerHeight = Math.max(menuInnerHeight, 1); - - if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) { - this.sizeInfo.hasScrollBar = true; - this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth; - - this.$menu.css('min-width', this.sizeInfo.totalMenuWidth); - } - - if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update(); - }, - - setSize: function (refresh) { - this.liHeight(refresh); - - if (this.options.header) this.$menu.css('padding-top', 0); - if (this.options.size === false) return; - - var that = this, - $window = $(window); - - this.setMenuSize(); - - if (this.options.liveSearch) { - this.$searchbox - .off('input.setMenuSize propertychange.setMenuSize') - .on('input.setMenuSize propertychange.setMenuSize', function () { - return that.setMenuSize(); - }); - } - - if (this.options.size === 'auto') { - $window - .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize') - .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () { - return that.setMenuSize(); - }); - } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { - $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize'); - } - - that.createView(false, true, refresh); - }, - - setWidth: function () { - var that = this; - - if (this.options.width === 'auto') { - requestAnimationFrame(function () { - that.$menu.css('min-width', '0'); - - that.$element.on('loaded' + EVENT_KEY, function () { - that.liHeight(); - that.setMenuSize(); - - // Get correct width if element is hidden - var $selectClone = that.$newElement.clone().appendTo('body'), - btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth(); - - $selectClone.remove(); - - // Set width to whatever's larger, button title or longest option - that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth); - that.$newElement.css('width', that.sizeInfo.selectWidth + 'px'); - }); - }); - } else if (this.options.width === 'fit') { - // Remove inline min-width so width can be changed from 'auto' - this.$menu.css('min-width', ''); - this.$newElement.css('width', '').addClass('fit-width'); - } else if (this.options.width) { - // Remove inline min-width so width can be changed from 'auto' - this.$menu.css('min-width', ''); - this.$newElement.css('width', this.options.width); - } else { - // Remove inline min-width/width so width can be changed - this.$menu.css('min-width', ''); - this.$newElement.css('width', ''); - } - // Remove fit-width class if width is changed programmatically - if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { - this.$newElement[0].classList.remove('fit-width'); - } - }, - - selectPosition: function () { - this.$bsContainer = $('
    '); - - var that = this, - $container = $(this.options.container), - pos, - containerPos, - actualHeight, - getPlacement = function ($element) { - var containerPosition = {}, - // fall back to dropdown's default display setting if display is not manually set - display = that.options.display || ( - // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default - $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display - : false - ); - - that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP)); - pos = $element.offset(); - - if (!$container.is('body')) { - containerPos = $container.offset(); - containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); - containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); - } else { - containerPos = { top: 0, left: 0 }; - } - - actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight; - - // Bootstrap 4+ uses Popper for menu positioning - if (version.major < 4 || display === 'static') { - containerPosition.top = pos.top - containerPos.top + actualHeight; - containerPosition.left = pos.left - containerPos.left; - } - - containerPosition.width = $element[0].offsetWidth; - - that.$bsContainer.css(containerPosition); - }; - - this.$button.on('click.bs.dropdown.data-api', function () { - if (that.isDisabled()) { - return; - } - - getPlacement(that.$newElement); - - that.$bsContainer - .appendTo(that.options.container) - .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)) - .append(that.$menu); - }); - - $(window) - .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId) - .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () { - var isActive = that.$newElement.hasClass(classNames.SHOW); - - if (isActive) getPlacement(that.$newElement); - }); - - this.$element.on('hide' + EVENT_KEY, function () { - that.$menu.data('height', that.$menu.height()); - that.$bsContainer.detach(); - }); - }, - - setOptionStatus: function (selectedOnly) { - var that = this; - - that.noScroll = false; - - if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) { - for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) { - var liData = that.selectpicker.current.data[i + that.selectpicker.view.position0], - option = liData.option; - - if (option) { - if (selectedOnly !== true) { - that.setDisabled( - liData.index, - liData.disabled - ); - } - - that.setSelected( - liData.index, - option.selected - ); - } - } - } - }, - - /** - * @param {number} index - the index of the option that is being changed - * @param {boolean} selected - true if the option is being selected, false if being deselected - */ - setSelected: function (index, selected) { - var li = this.selectpicker.main.elements[index], - liData = this.selectpicker.main.data[index], - activeIndexIsSet = this.activeIndex !== undefined, - thisIsActive = this.activeIndex === index, - prevActive, - a, - // if current option is already active - // OR - // if the current option is being selected, it's NOT multiple, and - // activeIndex is undefined: - // - when the menu is first being opened, OR - // - after a search has been performed, OR - // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex) - keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet); - - liData.selected = selected; - - a = li.firstChild; - - if (selected) { - this.selectedIndex = index; - } - - li.classList.toggle('selected', selected); - - if (keepActive) { - this.focusItem(li, liData); - this.selectpicker.view.currentActive = li; - this.activeIndex = index; - } else { - this.defocusItem(li); - } - - if (a) { - a.classList.toggle('selected', selected); - - if (selected) { - a.setAttribute('aria-selected', true); - } else { - if (this.multiple) { - a.setAttribute('aria-selected', false); - } else { - a.removeAttribute('aria-selected'); - } - } - } - - if (!keepActive && !activeIndexIsSet && selected && this.prevActiveIndex !== undefined) { - prevActive = this.selectpicker.main.elements[this.prevActiveIndex]; - - this.defocusItem(prevActive); - } - }, - - /** - * @param {number} index - the index of the option that is being disabled - * @param {boolean} disabled - true if the option is being disabled, false if being enabled - */ - setDisabled: function (index, disabled) { - var li = this.selectpicker.main.elements[index], - a; - - this.selectpicker.main.data[index].disabled = disabled; - - a = li.firstChild; - - li.classList.toggle(classNames.DISABLED, disabled); - - if (a) { - if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled); - - if (disabled) { - a.setAttribute('aria-disabled', disabled); - a.setAttribute('tabindex', -1); - } else { - a.removeAttribute('aria-disabled'); - a.setAttribute('tabindex', 0); - } - } - }, - - isDisabled: function () { - return this.$element[0].disabled; - }, - - checkDisabled: function () { - var that = this; - - if (this.isDisabled()) { - this.$newElement[0].classList.add(classNames.DISABLED); - this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true); - } else { - if (this.$button[0].classList.contains(classNames.DISABLED)) { - this.$newElement[0].classList.remove(classNames.DISABLED); - this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false); - } - - if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { - this.$button.removeAttr('tabindex'); - } - } - - this.$button.on('click', function () { - return !that.isDisabled(); - }); - }, - - tabIndex: function () { - if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && - (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { - this.$element.data('tabindex', this.$element.attr('tabindex')); - this.$button.attr('tabindex', this.$element.data('tabindex')); - } - - this.$element.attr('tabindex', -98); - }, - - clickListener: function () { - var that = this, - $document = $(document); - - $document.data('spaceSelect', false); - - this.$button.on('keyup', function (e) { - if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { - e.preventDefault(); - $document.data('spaceSelect', false); - } - }); - - this.$newElement.on('show.bs.dropdown', function () { - if (version.major > 3 && !that.dropdown) { - that.dropdown = that.$button.data('bs.dropdown'); - that.dropdown._menu = that.$menu[0]; - } - }); - - this.$button.on('click.bs.dropdown.data-api', function () { - if (!that.$newElement.hasClass(classNames.SHOW)) { - that.setSize(); - } - }); - - function setFocus () { - if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - } else { - that.$menuInner.trigger('focus'); - } - } - - function checkPopperExists () { - if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) { - setFocus(); - } else { - requestAnimationFrame(checkPopperExists); - } - } - - this.$element.on('shown' + EVENT_KEY, function () { - if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) { - that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop; - } - - if (version.major > 3) { - requestAnimationFrame(checkPopperExists); - } else { - setFocus(); - } - }); - - // ensure posinset and setsize are correct before selecting an option via a click - this.$menuInner.on('mouseenter', 'li a', function (e) { - var hoverLi = this.parentElement, - position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, - index = Array.prototype.indexOf.call(hoverLi.parentElement.children, hoverLi), - hoverData = that.selectpicker.current.data[index + position0]; - - that.focusItem(hoverLi, hoverData, true); - }); - - this.$menuInner.on('click', 'li a', function (e, retainActive) { - var $this = $(this), - element = that.$element[0], - position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, - clickedData = that.selectpicker.current.data[$this.parent().index() + position0], - clickedIndex = clickedData.index, - prevValue = getSelectValues(element), - prevIndex = element.selectedIndex, - prevOption = element.options[prevIndex], - triggerChange = true; - - // Don't close on multi choice menu - if (that.multiple && that.options.maxOptions !== 1) { - e.stopPropagation(); - } - - e.preventDefault(); - - // Don't run if the select is disabled - if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) { - var $options = that.$element.find('option'), - option = clickedData.option, - $option = $(option), - state = option.selected, - $optgroup = $option.parent('optgroup'), - $optgroupOptions = $optgroup.find('option'), - maxOptions = that.options.maxOptions, - maxOptionsGrp = $optgroup.data('maxOptions') || false; - - if (clickedIndex === that.activeIndex) retainActive = true; - - if (!retainActive) { - that.prevActiveIndex = that.activeIndex; - that.activeIndex = undefined; - } - - if (!that.multiple) { // Deselect all others if not multi select box - prevOption.selected = false; - option.selected = true; - that.setSelected(clickedIndex, true); - } else { // Toggle the one we have chosen if we are multi select. - option.selected = !state; - - that.setSelected(clickedIndex, !state); - $this.trigger('blur'); - - if (maxOptions !== false || maxOptionsGrp !== false) { - var maxReached = maxOptions < $options.filter(':selected').length, - maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; - - if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { - if (maxOptions && maxOptions == 1) { - $options.prop('selected', false); - $option.prop('selected', true); - - for (var i = 0; i < $options.length; i++) { - that.setSelected(i, false); - } - - that.setSelected(clickedIndex, true); - } else if (maxOptionsGrp && maxOptionsGrp == 1) { - $optgroup.find('option:selected').prop('selected', false); - $option.prop('selected', true); - - for (var i = 0; i < $optgroupOptions.length; i++) { - var option = $optgroupOptions[i]; - that.setSelected($options.index(option), false); - } - - that.setSelected(clickedIndex, true); - } else { - var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, - maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, - maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), - maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), - $notify = $('
    '); - // If {var} is set in array, replace it - /** @deprecated */ - if (maxOptionsArr[2]) { - maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); - maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); - } - - $option.prop('selected', false); - - that.$menu.append($notify); - - if (maxOptions && maxReached) { - $notify.append($('
    ' + maxTxt + '
    ')); - triggerChange = false; - that.$element.trigger('maxReached' + EVENT_KEY); - } - - if (maxOptionsGrp && maxReachedGrp) { - $notify.append($('
    ' + maxTxtGrp + '
    ')); - triggerChange = false; - that.$element.trigger('maxReachedGrp' + EVENT_KEY); - } - - setTimeout(function () { - that.setSelected(clickedIndex, false); - }, 10); - - $notify.delay(750).fadeOut(300, function () { - $(this).remove(); - }); - } - } - } - } - - if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { - that.$button.trigger('focus'); - } else if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - } - - // Trigger select 'change' - if (triggerChange) { - if (that.multiple || prevIndex !== element.selectedIndex) { - // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed. - changedArguments = [option.index, $option.prop('selected'), prevValue]; - that.$element - .triggerNative('change'); - } - } - } - }); - - this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) { - if (e.currentTarget == this) { - e.preventDefault(); - e.stopPropagation(); - if (that.options.liveSearch && !$(e.target).hasClass('close')) { - that.$searchbox.trigger('focus'); - } else { - that.$button.trigger('focus'); - } - } - }); - - this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { - e.preventDefault(); - e.stopPropagation(); - if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - } else { - that.$button.trigger('focus'); - } - }); - - this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () { - that.$button.trigger('click'); - }); - - this.$searchbox.on('click', function (e) { - e.stopPropagation(); - }); - - this.$menu.on('click', '.actions-btn', function (e) { - if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - } else { - that.$button.trigger('focus'); - } - - e.preventDefault(); - e.stopPropagation(); - - if ($(this).hasClass('bs-select-all')) { - that.selectAll(); - } else { - that.deselectAll(); - } - }); - - this.$element - .on('change' + EVENT_KEY, function () { - that.render(); - that.$element.trigger('changed' + EVENT_KEY, changedArguments); - changedArguments = null; - }) - .on('focus' + EVENT_KEY, function () { - if (!that.options.mobile) that.$button.trigger('focus'); - }); - }, - - liveSearchListener: function () { - var that = this, - noResults = document.createElement('li'); - - this.$button.on('click.bs.dropdown.data-api', function () { - if (!!that.$searchbox.val()) { - that.$searchbox.val(''); - } - }); - - this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) { - e.stopPropagation(); - }); - - this.$searchbox.on('input propertychange', function () { - var searchValue = that.$searchbox.val(); - - that.selectpicker.search.elements = []; - that.selectpicker.search.data = []; - - if (searchValue) { - var i, - searchMatch = [], - q = searchValue.toUpperCase(), - cache = {}, - cacheArr = [], - searchStyle = that._searchStyle(), - normalizeSearch = that.options.liveSearchNormalize; - - if (normalizeSearch) q = normalizeToBase(q); - - that._$lisSelected = that.$menuInner.find('.selected'); - - for (var i = 0; i < that.selectpicker.main.data.length; i++) { - var li = that.selectpicker.main.data[i]; - - if (!cache[i]) { - cache[i] = stringSearch(li, q, searchStyle, normalizeSearch); - } - - if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) { - if (li.headerIndex > 0) { - cache[li.headerIndex - 1] = true; - cacheArr.push(li.headerIndex - 1); - } - - cache[li.headerIndex] = true; - cacheArr.push(li.headerIndex); - - cache[li.lastIndex + 1] = true; - } - - if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i); - } - - for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) { - var index = cacheArr[i], - prevIndex = cacheArr[i - 1], - li = that.selectpicker.main.data[index], - liPrev = that.selectpicker.main.data[prevIndex]; - - if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) { - that.selectpicker.search.data.push(li); - searchMatch.push(that.selectpicker.main.elements[index]); - } - } - - that.activeIndex = undefined; - that.noScroll = true; - that.$menuInner.scrollTop(0); - that.selectpicker.search.elements = searchMatch; - that.createView(true); - - if (!searchMatch.length) { - noResults.className = 'no-results'; - noResults.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"'); - that.$menuInner[0].firstChild.appendChild(noResults); - } - } else { - that.$menuInner.scrollTop(0); - that.createView(false); - } - }); - }, - - _searchStyle: function () { - return this.options.liveSearchStyle || 'contains'; - }, - - val: function (value) { - var element = this.$element[0]; - - if (typeof value !== 'undefined') { - var prevValue = getSelectValues(element); - - changedArguments = [null, null, prevValue]; - - this.$element - .val(value) - .trigger('changed' + EVENT_KEY, changedArguments); - - if (this.$newElement.hasClass(classNames.SHOW)) { - if (this.multiple) { - this.setOptionStatus(true); - } else { - var liSelectedIndex = (element.options[element.selectedIndex] || {}).liIndex; - - if (typeof liSelectedIndex === 'number') { - this.setSelected(this.selectedIndex, false); - this.setSelected(liSelectedIndex, true); - } - } - } - - this.render(); - - changedArguments = null; - - return this.$element; - } else { - return this.$element.val(); - } - }, - - changeAll: function (status) { - if (!this.multiple) return; - if (typeof status === 'undefined') status = true; - - var element = this.$element[0], - previousSelected = 0, - currentSelected = 0, - prevValue = getSelectValues(element); - - element.classList.add('bs-select-hidden'); - - for (var i = 0, len = this.selectpicker.current.elements.length; i < len; i++) { - var liData = this.selectpicker.current.data[i], - option = liData.option; - - if (option && !liData.disabled && liData.type !== 'divider') { - if (liData.selected) previousSelected++; - option.selected = status; - if (status) currentSelected++; - } - } - - element.classList.remove('bs-select-hidden'); - - if (previousSelected === currentSelected) return; - - this.setOptionStatus(); - - changedArguments = [null, null, prevValue]; - - this.$element - .triggerNative('change'); - }, - - selectAll: function () { - return this.changeAll(true); - }, - - deselectAll: function () { - return this.changeAll(false); - }, - - toggle: function (e) { - e = e || window.event; - - if (e) e.stopPropagation(); - - this.$button.trigger('click.bs.dropdown.data-api'); - }, - - keydown: function (e) { - var $this = $(this), - isToggle = $this.hasClass('dropdown-toggle'), - $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU), - that = $parent.data('this'), - $items = that.findLis(), - index, - isActive, - liActive, - activeLi, - offset, - updateScroll = false, - downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab, - isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab, - scrollTop = that.$menuInner[0].scrollTop, - isVirtual = that.isVirtual(), - position0 = isVirtual === true ? that.selectpicker.view.position0 : 0; - - isActive = that.$newElement.hasClass(classNames.SHOW); - - if ( - !isActive && - ( - isArrowKey || - (e.which >= 48 && e.which <= 57) || - (e.which >= 96 && e.which <= 105) || - (e.which >= 65 && e.which <= 90) - ) - ) { - that.$button.trigger('click.bs.dropdown.data-api'); - - if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - return; - } - } - - if (e.which === keyCodes.ESCAPE && isActive) { - e.preventDefault(); - that.$button.trigger('click.bs.dropdown.data-api').trigger('focus'); - } - - if (isArrowKey) { // if up or down - if (!$items.length) return; - - liActive = that.selectpicker.main.elements[that.activeIndex]; - index = liActive ? Array.prototype.indexOf.call(liActive.parentElement.children, liActive) : -1; - - if (index !== -1) { - that.defocusItem(liActive); - } - - if (e.which === keyCodes.ARROW_UP) { // up - if (index !== -1) index--; - if (index + position0 < 0) index += $items.length; - - if (!that.selectpicker.view.canHighlight[index + position0]) { - index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0; - if (index === -1) index = $items.length - 1; - } - } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down - index++; - if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0; - - if (!that.selectpicker.view.canHighlight[index + position0]) { - index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true); - } - } - - e.preventDefault(); - - var liActiveIndex = position0 + index; - - if (e.which === keyCodes.ARROW_UP) { // up - // scroll to bottom and highlight last option - if (position0 === 0 && index === $items.length - 1) { - that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight; - - liActiveIndex = that.selectpicker.current.elements.length - 1; - } else { - activeLi = that.selectpicker.current.data[liActiveIndex]; - offset = activeLi.position - activeLi.height; - - updateScroll = offset < scrollTop; - } - } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down - // scroll to top and highlight first option - if (index === 0) { - that.$menuInner[0].scrollTop = 0; - - liActiveIndex = 0; - } else { - activeLi = that.selectpicker.current.data[liActiveIndex]; - offset = activeLi.position - that.sizeInfo.menuInnerHeight; - - updateScroll = offset > scrollTop; - } - } - - liActive = that.selectpicker.current.elements[liActiveIndex]; - - that.activeIndex = that.selectpicker.current.data[liActiveIndex].index; - - that.focusItem(liActive); - - that.selectpicker.view.currentActive = liActive; - - if (updateScroll) that.$menuInner[0].scrollTop = offset; - - if (that.options.liveSearch) { - that.$searchbox.trigger('focus'); - } else { - $this.trigger('focus'); - } - } else if ( - (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) || - (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) - ) { - var searchMatch, - matches = [], - keyHistory; - - e.preventDefault(); - - that.selectpicker.keydown.keyHistory += keyCodeMap[e.which]; - - if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel); - that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start(); - - keyHistory = that.selectpicker.keydown.keyHistory; - - // if all letters are the same, set keyHistory to just the first character when searching - if (/^(.)\1+$/.test(keyHistory)) { - keyHistory = keyHistory.charAt(0); - } - - // find matches - for (var i = 0; i < that.selectpicker.current.data.length; i++) { - var li = that.selectpicker.current.data[i], - hasMatch; - - hasMatch = stringSearch(li, keyHistory, 'startsWith', true); - - if (hasMatch && that.selectpicker.view.canHighlight[i]) { - matches.push(li.index); - } - } - - if (matches.length) { - var matchIndex = 0; - - $items.removeClass('active').find('a').removeClass('active'); - - // either only one key has been pressed or they are all the same key - if (keyHistory.length === 1) { - matchIndex = matches.indexOf(that.activeIndex); - - if (matchIndex === -1 || matchIndex === matches.length - 1) { - matchIndex = 0; - } else { - matchIndex++; - } - } - - searchMatch = matches[matchIndex]; - - activeLi = that.selectpicker.main.data[searchMatch]; - - if (scrollTop - activeLi.position > 0) { - offset = activeLi.position - activeLi.height; - updateScroll = true; - } else { - offset = activeLi.position - that.sizeInfo.menuInnerHeight; - // if the option is already visible at the current scroll position, just keep it the same - updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight; - } - - liActive = that.selectpicker.main.elements[searchMatch]; - - that.activeIndex = matches[matchIndex]; - - that.focusItem(liActive); - - if (liActive) liActive.firstChild.focus(); - - if (updateScroll) that.$menuInner[0].scrollTop = offset; - - $this.trigger('focus'); - } - } - - // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. - if ( - isActive && - ( - (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) || - e.which === keyCodes.ENTER || - (e.which === keyCodes.TAB && that.options.selectOnTab) - ) - ) { - if (e.which !== keyCodes.SPACE) e.preventDefault(); - - if (!that.options.liveSearch || e.which !== keyCodes.SPACE) { - that.$menuInner.find('.active a').trigger('click', true); // retain active class - $this.trigger('focus'); - - if (!that.options.liveSearch) { - // Prevent screen from scrolling if the user hits the spacebar - e.preventDefault(); - // Fixes spacebar selection of dropdown items in FF & IE - $(document).data('spaceSelect', true); - } - } - } - }, - - mobile: function () { - this.$element[0].classList.add('mobile-device'); - }, - - refresh: function () { - // update options if data attributes have been changed - var config = $.extend({}, this.options, this.$element.data()); - this.options = config; - - this.checkDisabled(); - this.setStyle(); - this.render(); - this.createLi(); - this.setWidth(); - - this.setSize(true); - - this.$element.trigger('refreshed' + EVENT_KEY); - }, - - hide: function () { - this.$newElement.hide(); - }, - - show: function () { - this.$newElement.show(); - }, - - remove: function () { - this.$newElement.remove(); - this.$element.remove(); - }, - - destroy: function () { - this.$newElement.before(this.$element).remove(); - - if (this.$bsContainer) { - this.$bsContainer.remove(); - } else { - this.$menu.remove(); - } - - this.$element - .off(EVENT_KEY) - .removeData('selectpicker') - .removeClass('bs-select-hidden selectpicker'); - - $(window).off(EVENT_KEY + '.' + this.selectId); - } - }; - - // SELECTPICKER PLUGIN DEFINITION - // ============================== - function Plugin (option) { - // get the args of the outer function.. - var args = arguments; - // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them - // to get lost/corrupted in android 2.3 and IE9 #715 #775 - var _option = option; - - [].shift.apply(args); - - // if the version was not set successfully - if (!version.success) { - // try to retreive it again - try { - version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); - } catch (err) { - // fall back to use BootstrapVersion if set - if (Selectpicker.BootstrapVersion) { - version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.'); - } else { - version.full = [version.major, '0', '0']; - - console.warn( - 'There was an issue retrieving Bootstrap\'s version. ' + - 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' + - 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.', - err - ); - } - } - - version.major = version.full[0]; - version.success = true; - } - - if (version.major === '4') { - // some defaults need to be changed if using Bootstrap 4 - // check to see if they have already been manually changed before forcing them to update - var toUpdate = []; - - if (Selectpicker.DEFAULTS.style === classNames.BUTTONCLASS) toUpdate.push({ name: 'style', className: 'BUTTONCLASS' }); - if (Selectpicker.DEFAULTS.iconBase === classNames.ICONBASE) toUpdate.push({ name: 'iconBase', className: 'ICONBASE' }); - if (Selectpicker.DEFAULTS.tickIcon === classNames.TICKICON) toUpdate.push({ name: 'tickIcon', className: 'TICKICON' }); - - classNames.DIVIDER = 'dropdown-divider'; - classNames.SHOW = 'show'; - classNames.BUTTONCLASS = 'btn-light'; - classNames.POPOVERHEADER = 'popover-header'; - classNames.ICONBASE = ''; - classNames.TICKICON = 'bs-ok-default'; - - for (var i = 0; i < toUpdate.length; i++) { - var option = toUpdate[i]; - Selectpicker.DEFAULTS[option.name] = classNames[option.className]; - } - } - - var value; - var chain = this.each(function () { - var $this = $(this); - if ($this.is('select')) { - var data = $this.data('selectpicker'), - options = typeof _option == 'object' && _option; - - if (!data) { - var dataAttributes = $this.data(); - - for (var dataAttr in dataAttributes) { - if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) { - delete dataAttributes[dataAttr]; - } - } - - var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, dataAttributes, options); - config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), dataAttributes.template, options.template); - $this.data('selectpicker', (data = new Selectpicker(this, config))); - } else if (options) { - for (var i in options) { - if (options.hasOwnProperty(i)) { - data.options[i] = options[i]; - } - } - } - - if (typeof _option == 'string') { - if (data[_option] instanceof Function) { - value = data[_option].apply(data, args); - } else { - value = data.options[_option]; - } - } - } - }); - - if (typeof value !== 'undefined') { - // noinspection JSUnusedAssignment - return value; - } else { - return chain; - } - } - - var old = $.fn.selectpicker; - $.fn.selectpicker = Plugin; - $.fn.selectpicker.Constructor = Selectpicker; - - // SELECTPICKER NO CONFLICT - // ======================== - $.fn.selectpicker.noConflict = function () { - $.fn.selectpicker = old; - return this; - }; - - $(document) - .off('keydown.bs.dropdown.data-api') - .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown) - .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { - e.stopPropagation(); - }); - - // SELECTPICKER DATA-API - // ===================== - $(window).on('load' + EVENT_KEY + '.data-api', function () { - $('.selectpicker').each(function () { - var $selectpicker = $(this); - Plugin.call($selectpicker, $selectpicker.data()); - }) - }); -})(jQuery); - - -})); -//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css deleted file mode 100644 index 579ee12..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\0;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js deleted file mode 100644 index 058acb9..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - -!function(e,t){void 0===e&&void 0!==window&&(e=window),"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function(e){!function(z){"use strict";var d=["sanitize","whiteList","sanitizeFn"],r=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],e={"*":["class","dir","id","lang","role","tabindex","style",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},l=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,a=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function v(e,t){var i=e.nodeName.toLowerCase();if(-1!==z.inArray(i,t))return-1===z.inArray(i,r)||Boolean(e.nodeValue.match(l)||e.nodeValue.match(a));for(var s=z(t).filter(function(e,t){return t instanceof RegExp}),n=0,o=s.length;n]+>/g,"")),s&&(a=w(a)),a=a.toUpperCase(),o="contains"===i?0<=a.indexOf(t):a.startsWith(t)))break}return o}function A(e){return parseInt(e,10)||0}z.fn.triggerNative=function(e){var t,i=this[0];i.dispatchEvent?(u?t=new Event(e,{bubbles:!0}):(t=document.createEvent("Event")).initEvent(e,!0,!1),i.dispatchEvent(t)):i.fireEvent?((t=document.createEventObject()).eventType=e,i.fireEvent("on"+e,t)):this.trigger(e)};var f={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},m=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,g=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]","g");function b(e){return f[e]}function w(e){return(e=e.toString())&&e.replace(m,b).replace(g,"")}var I,x,$,y,S,E=(I={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},x=function(e){return I[e]},$="(?:"+Object.keys(I).join("|")+")",y=RegExp($),S=RegExp($,"g"),function(e){return e=null==e?"":""+e,y.test(e)?e.replace(S,x):e}),C={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"},L=27,N=13,D=32,H=9,B=38,W=40,M={success:!1,major:"3"};try{M.full=(z.fn.dropdown.Constructor.VERSION||"").split(" ")[0].split("."),M.major=M.full[0],M.success=!0}catch(e){}var R=0,U=".bs.select",j={DISABLED:"disabled",DIVIDER:"divider",SHOW:"open",DROPUP:"dropup",MENU:"dropdown-menu",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",BUTTONCLASS:"btn-default",POPOVERHEADER:"popover-title",ICONBASE:"glyphicon",TICKICON:"glyphicon-ok"},V={MENU:"."+j.MENU},F={span:document.createElement("span"),i:document.createElement("i"),subtext:document.createElement("small"),a:document.createElement("a"),li:document.createElement("li"),whitespace:document.createTextNode("\xa0"),fragment:document.createDocumentFragment()};F.a.setAttribute("role","option"),F.subtext.className="text-muted",F.text=F.span.cloneNode(!1),F.text.className="text",F.checkMark=F.span.cloneNode(!1);var _=new RegExp(B+"|"+W),G=new RegExp("^"+H+"$|"+L),q=function(e,t,i){var s=F.li.cloneNode(!1);return e&&(1===e.nodeType||11===e.nodeType?s.appendChild(e):s.innerHTML=e),void 0!==t&&""!==t&&(s.className=t),null!=i&&s.classList.add("optgroup-"+i),s},K=function(e,t,i){var s=F.a.cloneNode(!0);return e&&(11===e.nodeType?s.appendChild(e):s.insertAdjacentHTML("beforeend",e)),void 0!==t&&""!==t&&(s.className=t),"4"===M.major&&s.classList.add("dropdown-item"),i&&s.setAttribute("style",i),s},Y=function(e,t){var i,s,n=F.text.cloneNode(!1);if(e.content)n.innerHTML=e.content;else{if(n.textContent=e.text,e.icon){var o=F.whitespace.cloneNode(!1);(s=(!0===t?F.i:F.span).cloneNode(!1)).className=e.iconBase+" "+e.icon,F.fragment.appendChild(s),F.fragment.appendChild(o)}e.subtext&&((i=F.subtext.cloneNode(!1)).textContent=e.subtext,n.appendChild(i))}if(!0===t)for(;0'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,windowPadding:0,virtualScroll:600,display:!1,sanitize:!0,sanitizeFn:null,whiteList:e},J.prototype={constructor:J,init:function(){var i=this,e=this.$element.attr("id");R++,this.selectId="bs-select-"+R,this.$element[0].classList.add("bs-select-hidden"),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$element[0].classList.contains("show-tick")&&(this.options.showTick=!0),this.$newElement=this.createDropdown(),this.$element.after(this.$newElement).prependTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(V.MENU),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element[0].classList.remove("bs-select-hidden"),!0===this.options.dropdownAlignRight&&this.$menu[0].classList.add(j.MENURIGHT),void 0!==e&&this.$button.attr("data-id",e),this.checkDisabled(),this.clickListener(),this.options.liveSearch?(this.liveSearchListener(),this.focusedParent=this.$searchbox[0]):this.focusedParent=this.$menuInner[0],this.setStyle(),this.render(),this.setWidth(),this.options.container?this.selectPosition():this.$element.on("hide"+U,function(){if(i.isVirtual()){var e=i.$menuInner[0],t=e.firstChild.cloneNode(!1);e.replaceChild(t,e.firstChild),e.scrollTop=0}}),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(e){i.$element.trigger("hide"+U,e)},"hidden.bs.dropdown":function(e){i.$element.trigger("hidden"+U,e)},"show.bs.dropdown":function(e){i.$element.trigger("show"+U,e)},"shown.bs.dropdown":function(e){i.$element.trigger("shown"+U,e)}}),i.$element[0].hasAttribute("required")&&this.$element.on("invalid"+U,function(){i.$button[0].classList.add("bs-invalid"),i.$element.on("shown"+U+".invalid",function(){i.$element.val(i.$element.val()).off("shown"+U+".invalid")}).on("rendered"+U,function(){this.validity.valid&&i.$button[0].classList.remove("bs-invalid"),i.$element.off("rendered"+U)}),i.$button.on("blur"+U,function(){i.$element.trigger("focus").trigger("blur"),i.$button.off("blur"+U)})}),setTimeout(function(){i.createLi(),i.$element.trigger("loaded"+U)})},createDropdown:function(){var e=this.multiple||this.options.showTick?" show-tick":"",t=this.multiple?' aria-multiselectable="true"':"",i="",s=this.autofocus?" autofocus":"";M.major<4&&this.$element.parent().hasClass("input-group")&&(i=" input-group-btn");var n,o="",r="",l="",a="";return this.options.header&&(o='
    '+this.options.header+"
    "),this.options.liveSearch&&(r=''),this.multiple&&this.options.actionsBox&&(l='
    "),this.multiple&&this.options.doneButton&&(a='
    "),n='",z(n)},setPositionData:function(){this.selectpicker.view.canHighlight=[];for(var e=this.selectpicker.view.size=0;e=this.options.virtualScroll||!0===this.options.virtualScroll},createView:function(A,e,t){var L,N,D=this,i=0,H=[];if(this.selectpicker.current=A?this.selectpicker.search:this.selectpicker.main,this.setPositionData(),e)if(t)i=this.$menuInner[0].scrollTop;else if(!D.multiple){var s=D.$element[0],n=(s.options[s.selectedIndex]||{}).liIndex;if("number"==typeof n&&!1!==D.options.size){var o=D.selectpicker.main.data[n],r=o&&o.position;r&&(i=r-(D.sizeInfo.menuInnerHeight+D.sizeInfo.liHeight)/2)}}function l(e,t){var i,s,n,o,r,l,a,c,d,h,p=D.selectpicker.current.elements.length,u=[],f=!0,m=D.isVirtual();D.selectpicker.view.scrollTop=e,!0===m&&D.sizeInfo.hasScrollBar&&D.$menu[0].offsetWidth>D.sizeInfo.totalMenuWidth&&(D.sizeInfo.menuWidth=D.$menu[0].offsetWidth,D.sizeInfo.totalMenuWidth=D.sizeInfo.menuWidth+D.sizeInfo.scrollBarWidth,D.$menu.css("min-width",D.sizeInfo.menuWidth)),i=Math.ceil(D.sizeInfo.menuInnerHeight/D.sizeInfo.liHeight*1.5),s=Math.round(p/i)||1;for(var v=0;vp-1?0:D.selectpicker.current.data[p-1].position-D.selectpicker.current.data[D.selectpicker.view.position1-1].position,I.firstChild.style.marginTop=b+"px",w+"px"):I.firstChild.style.marginTop=0,I.firstChild.appendChild(x)}if(D.prevActiveIndex=D.activeIndex,D.options.liveSearch){if(A&&t){var z,T=0;D.selectpicker.view.canHighlight[T]||(T=1+D.selectpicker.view.canHighlight.slice(1).indexOf(!0)),z=D.selectpicker.view.visibleElements[T],D.defocusItem(D.selectpicker.view.currentActive),D.activeIndex=(D.selectpicker.current.data[T]||{}).index,D.focusItem(z)}}else D.$menuInner.trigger("focus")}l(i,!0),this.$menuInner.off("scroll.createView").on("scroll.createView",function(e,t){D.noScroll||l(this.scrollTop,t),D.noScroll=!1}),z(window).off("resize"+U+"."+this.selectId+".createView").on("resize"+U+"."+this.selectId+".createView",function(){D.$newElement.hasClass(j.SHOW)&&l(D.$menuInner[0].scrollTop)})},focusItem:function(e,t,i){if(e){t=t||this.selectpicker.main.data[this.activeIndex];var s=e.firstChild;s&&(s.setAttribute("aria-setsize",this.selectpicker.view.size),s.setAttribute("aria-posinset",t.posinset),!0!==i&&(this.focusedParent.setAttribute("aria-activedescendant",s.id),e.classList.add("active"),s.classList.add("active")))}},defocusItem:function(e){e&&(e.classList.remove("active"),e.firstChild&&e.firstChild.classList.remove("active"))},setPlaceholder:function(){var e=!1;if(this.options.title&&!this.multiple){this.selectpicker.view.titleOption||(this.selectpicker.view.titleOption=document.createElement("option")),e=!0;var t=this.$element[0],i=!1,s=!this.selectpicker.view.titleOption.parentNode;if(s)this.selectpicker.view.titleOption.className="bs-title-option",this.selectpicker.view.titleOption.value="",i=void 0===z(t.options[t.selectedIndex]).attr("selected")&&void 0===this.$element.data("selected");(s||0!==this.selectpicker.view.titleOption.index)&&t.insertBefore(this.selectpicker.view.titleOption,t.firstChild),i&&(t.selectedIndex=0)}return e},createLi:function(){var c=this,f=this.options.iconBase,m=':not([hidden]):not([data-hidden="true"])',v=[],g=[],d=0,b=0,e=this.setPlaceholder()?1:0;this.options.hideDisabled&&(m+=":not(:disabled)"),!c.options.showTick&&!c.multiple||F.checkMark.parentNode||(F.checkMark.className=f+" "+c.options.tickIcon+" check-mark",F.a.appendChild(F.checkMark));var t=this.$element[0].querySelectorAll("select > *"+m);function w(e){var t=g[g.length-1];t&&"divider"===t.type&&(t.optID||e.optID)||((e=e||{}).type="divider",v.push(q(!1,j.DIVIDER,e.optID?e.optID+"div":void 0)),g.push(e))}function I(e,t){if((t=t||{}).divider="true"===e.getAttribute("data-divider"),t.divider)w({optID:t.optID});else{var i=g.length,s=e.style.cssText,n=s?E(s):"",o=(e.className||"")+(t.optgroupClass||"");t.optID&&(o="opt "+o),t.text=e.textContent,t.content=e.getAttribute("data-content"),t.tokens=e.getAttribute("data-tokens"),t.subtext=e.getAttribute("data-subtext"),t.icon=e.getAttribute("data-icon"),t.iconBase=f;var r=Y(t),l=q(K(r,o,n),"",t.optID);l.firstChild&&(l.firstChild.id=c.selectId+"-"+i),v.push(l),e.liIndex=i,t.display=t.content||t.text,t.type="option",t.index=i,t.option=e,t.disabled=t.disabled||e.disabled,g.push(t);var a=0;t.display&&(a+=t.display.length),t.subtext&&(a+=t.subtext.length),t.icon&&(a+=1),d li")},render:function(){this.setPlaceholder();var e,t,i=this,s=this.$element[0],n=function(e,t){var i,s=e.selectedOptions,n=[];if(t){for(var o=0,r=s.length;o")).length&&o>t[1]||1===t.length&&2<=o),!1===e){for(var h=0;h option"+m+", optgroup"+m+" option"+m).length,g="function"==typeof this.options.countSelectedText?this.options.countSelectedText(o,v):this.options.countSelectedText;c=Y({text:g.replace("{0}",o.toString()).replace("{1}",v.toString())},!0)}if(null==this.options.title&&(this.options.title=this.$element.attr("title")),c.childNodes.length||(c=Y({text:void 0!==this.options.title?this.options.title:this.options.noneSelectedText},!0)),r.title=c.textContent.replace(/<[^>]*>?/g,"").trim(),this.options.sanitize&&d&&P([c],i.options.whiteList,i.options.sanitizeFn),l.innerHTML="",l.appendChild(c),M.major<4&&this.$newElement[0].classList.contains("bs3-has-addon")){var b=r.querySelector(".filter-expand"),w=l.cloneNode(!0);w.className="filter-expand",b?r.replaceChild(w,b):r.appendChild(w)}this.$element.trigger("rendered"+U)},setStyle:function(e,t){var i,s=this.$button[0],n=this.$newElement[0],o=this.options.style.trim();this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,"")),M.major<4&&(n.classList.add("bs3"),n.parentNode.classList.contains("input-group")&&(n.previousElementSibling||n.nextElementSibling)&&(n.previousElementSibling||n.nextElementSibling).classList.contains("input-group-addon")&&n.classList.add("bs3-has-addon")),i=e?e.trim():o,"add"==t?i&&s.classList.add.apply(s.classList,i.split(" ")):"remove"==t?i&&s.classList.remove.apply(s.classList,i.split(" ")):(o&&s.classList.remove.apply(s.classList,o.split(" ")),i&&s.classList.add.apply(s.classList,i.split(" ")))},liHeight:function(e){if(e||!1!==this.options.size&&!this.sizeInfo){this.sizeInfo||(this.sizeInfo={});var t=document.createElement("div"),i=document.createElement("div"),s=document.createElement("div"),n=document.createElement("ul"),o=document.createElement("li"),r=document.createElement("li"),l=document.createElement("li"),a=document.createElement("a"),c=document.createElement("span"),d=this.options.header&&0this.sizeInfo.menuExtras.vert&&l+this.sizeInfo.menuExtras.vert+50>this.sizeInfo.selectOffsetBot)),"auto"===this.options.size)n=3this.options.size){for(var g=0;gthis.sizeInfo.selectOffsetRight&&this.sizeInfo.selectOffsetRightthis.sizeInfo.menuInnerHeight&&(this.sizeInfo.hasScrollBar=!0,this.sizeInfo.totalMenuWidth=this.sizeInfo.menuWidth+this.sizeInfo.scrollBarWidth,this.$menu.css("min-width",this.sizeInfo.totalMenuWidth)),this.dropdown&&this.dropdown._popper&&this.dropdown._popper.update()},setSize:function(e){if(this.liHeight(e),this.options.header&&this.$menu.css("padding-top",0),!1!==this.options.size){var t=this,i=z(window);this.setMenuSize(),this.options.liveSearch&&this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize",function(){return t.setMenuSize()}),"auto"===this.options.size?i.off("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize").on("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize",function(){return t.setMenuSize()}):this.options.size&&"auto"!=this.options.size&&this.selectpicker.current.elements.length>this.options.size&&i.off("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize"),t.createView(!1,!0,e)}},setWidth:function(){var i=this;"auto"===this.options.width?requestAnimationFrame(function(){i.$menu.css("min-width","0"),i.$element.on("loaded"+U,function(){i.liHeight(),i.setMenuSize();var e=i.$newElement.clone().appendTo("body"),t=e.css("width","auto").children("button").outerWidth();e.remove(),i.sizeInfo.selectWidth=Math.max(i.sizeInfo.totalMenuWidth,t),i.$newElement.css("width",i.sizeInfo.selectWidth+"px")})}):"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width","")),this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement[0].classList.remove("fit-width")},selectPosition:function(){this.$bsContainer=z('
    ');var s,n,o,r=this,l=z(this.options.container),e=function(e){var t={},i=r.options.display||!!z.fn.dropdown.Constructor.Default&&z.fn.dropdown.Constructor.Default.display;r.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass(j.DROPUP,e.hasClass(j.DROPUP)),s=e.offset(),l.is("body")?n={top:0,left:0}:((n=l.offset()).top+=parseInt(l.css("borderTopWidth"))-l.scrollTop(),n.left+=parseInt(l.css("borderLeftWidth"))-l.scrollLeft()),o=e.hasClass(j.DROPUP)?0:e[0].offsetHeight,(M.major<4||"static"===i)&&(t.top=s.top-n.top+o,t.left=s.left-n.left),t.width=e[0].offsetWidth,r.$bsContainer.css(t)};this.$button.on("click.bs.dropdown.data-api",function(){r.isDisabled()||(e(r.$newElement),r.$bsContainer.appendTo(r.options.container).toggleClass(j.SHOW,!r.$button.hasClass(j.SHOW)).append(r.$menu))}),z(window).off("resize"+U+"."+this.selectId+" scroll"+U+"."+this.selectId).on("resize"+U+"."+this.selectId+" scroll"+U+"."+this.selectId,function(){r.$newElement.hasClass(j.SHOW)&&e(r.$newElement)}),this.$element.on("hide"+U,function(){r.$menu.data("height",r.$menu.height()),r.$bsContainer.detach()})},setOptionStatus:function(e){var t=this;if(t.noScroll=!1,t.selectpicker.view.visibleElements&&t.selectpicker.view.visibleElements.length)for(var i=0;i
    ');$[2]&&(y=y.replace("{var}",$[2][1"+y+"
    ")),d=!1,C.$element.trigger("maxReached"+U)),b&&I&&(E.append(z("
    "+S+"
    ")),d=!1,C.$element.trigger("maxReachedGrp"+U)),setTimeout(function(){C.setSelected(r,!1)},10),E.delay(750).fadeOut(300,function(){z(this).remove()})}}}else c.selected=!1,p.selected=!0,C.setSelected(r,!0);!C.multiple||C.multiple&&1===C.options.maxOptions?C.$button.trigger("focus"):C.options.liveSearch&&C.$searchbox.trigger("focus"),d&&(C.multiple||a!==s.selectedIndex)&&(T=[p.index,u.prop("selected"),l],C.$element.triggerNative("change"))}}),this.$menu.on("click","li."+j.DISABLED+" a, ."+j.POPOVERHEADER+", ."+j.POPOVERHEADER+" :not(.close)",function(e){e.currentTarget==this&&(e.preventDefault(),e.stopPropagation(),C.options.liveSearch&&!z(e.target).hasClass("close")?C.$searchbox.trigger("focus"):C.$button.trigger("focus"))}),this.$menuInner.on("click",".divider, .dropdown-header",function(e){e.preventDefault(),e.stopPropagation(),C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus")}),this.$menu.on("click","."+j.POPOVERHEADER+" .close",function(){C.$button.trigger("click")}),this.$searchbox.on("click",function(e){e.stopPropagation()}),this.$menu.on("click",".actions-btn",function(e){C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus"),e.preventDefault(),e.stopPropagation(),z(this).hasClass("bs-select-all")?C.selectAll():C.deselectAll()}),this.$element.on("change"+U,function(){C.render(),C.$element.trigger("changed"+U,T),T=null}).on("focus"+U,function(){C.options.mobile||C.$button.trigger("focus")})},liveSearchListener:function(){var u=this,f=document.createElement("li");this.$button.on("click.bs.dropdown.data-api",function(){u.$searchbox.val()&&u.$searchbox.val("")}),this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api",function(e){e.stopPropagation()}),this.$searchbox.on("input propertychange",function(){var e=u.$searchbox.val();if(u.selectpicker.search.elements=[],u.selectpicker.search.data=[],e){var t=[],i=e.toUpperCase(),s={},n=[],o=u._searchStyle(),r=u.options.liveSearchNormalize;r&&(i=w(i)),u._$lisSelected=u.$menuInner.find(".selected");for(var l=0;l=a.selectpicker.view.canHighlight.length&&(t=0),a.selectpicker.view.canHighlight[t+f]||(t=t+1+a.selectpicker.view.canHighlight.slice(t+f+1).indexOf(!0))),e.preventDefault();var m=f+t;e.which===B?0===f&&t===c.length-1?(a.$menuInner[0].scrollTop=a.$menuInner[0].scrollHeight,m=a.selectpicker.current.elements.length-1):d=(o=(n=a.selectpicker.current.data[m]).position-n.height)u+a.sizeInfo.menuInnerHeight),s=a.selectpicker.main.elements[v],a.activeIndex=b[x],a.focusItem(s),s&&s.firstChild.focus(),d&&(a.$menuInner[0].scrollTop=o),r.trigger("focus")}}i&&(e.which===D&&!a.selectpicker.keydown.keyHistory||e.which===N||e.which===H&&a.options.selectOnTab)&&(e.which!==D&&e.preventDefault(),a.options.liveSearch&&e.which===D||(a.$menuInner.find(".active a").trigger("click",!0),r.trigger("focus"),a.options.liveSearch||(e.preventDefault(),z(document).data("spaceSelect",!0))))}},mobile:function(){this.$element[0].classList.add("mobile-device")},refresh:function(){var e=z.extend({},this.options,this.$element.data());this.options=e,this.checkDisabled(),this.setStyle(),this.render(),this.createLi(),this.setWidth(),this.setSize(!0),this.$element.trigger("refreshed"+U)},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(U).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"),z(window).off(U+"."+this.selectId)}};var X=z.fn.selectpicker;z.fn.selectpicker=Q,z.fn.selectpicker.Constructor=J,z.fn.selectpicker.noConflict=function(){return z.fn.selectpicker=X,this},z(document).off("keydown.bs.dropdown.data-api").on("keydown"+U,'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',J.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',function(e){e.stopPropagation()}),z(window).on("load"+U+".data-api",function(){z(".selectpicker").each(function(){var e=z(this);Q.call(e,e.data())})})}(e)}); -//# sourceMappingURL=bootstrap-select.min.js.map \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css deleted file mode 100644 index e6ff6bf..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @author zhixin wen - * version: 1.18.3 - * https://github.com/wenzhixin/bootstrap-table/ - */ -.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:LOADING;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:'\2B05'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:'\27A1'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes LOADING{0%{opacity:0}50%{opacity:1}to{opacity:0}} \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js deleted file mode 100644 index 91fc7a0..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @author zhixin wen - * version: 1.18.3 - * https://github.com/wenzhixin/bootstrap-table/ - */ -function getRememberRowIds(a,b){return $.isArray(a)?props=$.map(a,function(c){return c[b]}):props=[a[b]],props}function addRememberRow(b,c){var a=null==table.options.uniqueId?table.options.columns[1].field:table.options.uniqueId,d=getRememberRowIds(b,a);-1==$.inArray(c[a],d)&&(b[b.length]=c)}function removeRememberRow(b,c){var a=null==table.options.uniqueId?table.options.columns[1].field:table.options.uniqueId,f=getRememberRowIds(b,a),d=$.inArray(c[a],f);-1!=d&&b.splice(d,1)}!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],b):(a="undefined"!=typeof globalThis?globalThis:a||self,a.BootstrapTable=b(a.jQuery))}(this,function(fl){function fK(a){return a&&"object"==typeof a&&"default" in a?a:{"default":a}}function fD(a){return(fD="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(b){return typeof b}:function(b){return b&&"function"==typeof Symbol&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b})(a)}function fw(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function fu(b,c){for(var a=0;ab.length)&&(c=b.length);for(var a=0,d=Array(c);c>a;a++){d[a]=b[a]}return d}function fr(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function fG(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function fg(d,h){var c;if("undefined"==typeof Symbol||null==d[Symbol.iterator]){if(Array.isArray(d)||(c=fL(d))||h&&d&&"number"==typeof d.length){c&&(d=c);var k=0,j=function(){};return{s:j,n:function(){return k>=d.length?{done:!0}:{done:!1,value:d[k++]}},e:function(a){throw a},f:j}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var b,f=!0,g=!1;return{s:function(){c=d[Symbol.iterator]()},n:function(){var a=c.next();return f=a.done,a},e:function(a){g=!0,b=a},f:function(){try{f||null==c["return"]||c["return"]()}finally{if(g){throw b}}}}}function fO(a,b){return b={exports:{}},a(b,b.exports),b.exports}function fx(a,b){return RegExp(a,b)}var fc=fK(fl),ff="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},f2=function(a){return a&&a.Math==Math&&a},fd=f2("object"==typeof globalThis&&globalThis)||f2("object"==typeof window&&window)||f2("object"==typeof self&&self)||f2("object"==typeof ff&&ff)||function(){return this}()||Function("return this")(),fA=function(a){try{return !!a()}catch(b){return !0}},f8=!fA(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}),f1={}.propertyIsEnumerable,gw=Object.getOwnPropertyDescriptor,f6=gw&&!f1.call({1:2},1),gk=f6?function(a){var b=gw(this,a);return !!b&&b.enumerable}:f1,gz={f:gk},gS=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}},f3={}.toString,gs=function(a){return f3.call(a).slice(8,-1)},fB="".split,fR=fA(function(){return !Object("z").propertyIsEnumerable(0)})?function(a){return"String"==gs(a)?fB.call(a,""):Object(a)}:Object,f9=function(a){if(void 0==a){throw TypeError("Can't call method on "+a)}return a},gr=function(a){return fR(f9(a))},gu=function(a){return"object"==typeof a?null!==a:"function"==typeof a},fY=function(b,c){if(!gu(b)){return b}var a,d;if(c&&"function"==typeof(a=b.toString)&&!gu(d=a.call(b))){return d}if("function"==typeof(a=b.valueOf)&&!gu(d=a.call(b))){return d}if(!c&&"function"==typeof(a=b.toString)&&!gu(d=a.call(b))){return d}throw TypeError("Can't convert object to primitive value")},gy={}.hasOwnProperty,gd=function(a,b){return gy.call(a,b)},gl=fd.document,gc=gu(gl)&&gu(gl.createElement),f0=function(a){return gc?gl.createElement(a):{}},e9=!f8&&!fA(function(){return 7!=Object.defineProperty(f0("div"),"a",{get:function(){return 7}}).a}),fq=Object.getOwnPropertyDescriptor,fX=f8?fq:function(b,c){if(b=gr(b),c=fY(c,!0),e9){try{return fq(b,c)}catch(a){}}return gd(b,c)?gS(!gz.f.call(b,c),b[c]):void 0},gp={f:fX},gf=function(a){if(!gu(a)){throw TypeError(a+" is not an object")}return a},fV=Object.defineProperty,fW=f8?fV:function(b,c,a){if(gf(b),c=fY(c,!0),gf(a),e9){try{return fV(b,c,a)}catch(d){}}if("get" in a||"set" in a){throw TypeError("Accessors not supported")}return"value" in a&&(b[c]=a.value),b},gh={f:fW},f4=f8?function(b,c,a){return gh.f(b,c,gS(1,a))}:function(b,c,a){return b[c]=a,b},fU=function(b,c){try{f4(fd,b,c)}catch(a){fd[b]=c}return c},a8="__core-js_shared__",eM=fd[a8]||fU(a8,{}),dS=eM,cJ=Function.toString;"function"!=typeof dS.inspectSource&&(dS.inspectSource=function(a){return cJ.call(a)});var cr,gF,bq,bK=dS.inspectSource,dc=fd.WeakMap,fj="function"==typeof dc&&/native code/.test(bK(dc)),d4=fO(function(a){(a.exports=function(b,c){return dS[b]||(dS[b]=void 0!==c?c:{})})("versions",[]).push({version:"3.9.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),aW=0,eZ=Math.random(),eA=function(a){return"Symbol("+((void 0===a?"":a)+"")+")_"+(++aW+eZ).toString(36)},cb=d4("keys"),ek=function(a){return cb[a]||(cb[a]=eA(a))},aK={},fZ=fd.WeakMap,cZ=function(a){return bq(a)?gF(a):cr(a,{})},gV=function(a){return function(c){var b;if(!gu(c)||(b=gF(c)).type!==a){throw TypeError("Incompatible receiver, "+a+" required")}return b}};if(fj){var ay=dS.state||(dS.state=new fZ),dh=ay.get,g7=ay.has,du=ay.set;cr=function(a,b){return b.facade=a,du.call(ay,a,b),b},gF=function(a){return dh.call(ay,a)||{}},bq=function(a){return g7.call(ay,a)}}else{var d8=ek("state");aK[d8]=!0,cr=function(a,b){return b.facade=a,f4(a,d8,b),b},gF=function(a){return gd(a,d8)?a[d8]:{}},bq=function(a){return gd(a,d8)}}var c2={set:cr,get:gF,has:bq,enforce:cZ,getterFor:gV},a2=fO(function(b){var c=c2.get,a=c2.enforce,d=(String+"").split("String");(b.exports=function(h,k,m,g){var i,j=g?!!g.unsafe:!1,f=g?!!g.enumerable:!1,n=g?!!g.noTargetGet:!1;return"function"==typeof m&&("string"!=typeof k||gd(m,"name")||f4(m,"name",k),i=a(m),i.source||(i.source=d.join("string"==typeof k?k:""))),h===fd?void (f?h[k]=m:fU(k,m)):(j?!n&&h[k]&&(f=!0):delete h[k],void (f?h[k]=m:f4(h,k,m)))})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||bK(this)})}),dV=fd,gb=function(a){return"function"==typeof a?a:void 0},bB=function(a,b){return arguments.length<2?gb(dV[a])||gb(fd[a]):dV[a]&&dV[a][b]||fd[a]&&fd[a][b]},cF=Math.ceil,dx=Math.floor,aE=function(a){return isNaN(a=+a)?0:(a>0?dx:cF)(a)},dG=Math.min,af=function(a){return a>0?dG(aE(a),9007199254740991):0},ep=Math.max,al=Math.min,aQ=function(b,c){var a=aE(b);return 0>a?ep(a+c,0):al(a,c)},cx=function(a){return function(g,c,j){var h,b=gr(g),d=af(b.length),f=aQ(j,d);if(a&&c!=c){for(;d>f;){if(h=b[f++],h!=h){return !0}}}else{for(;d>f;f++){if((a||f in b)&&b[f]===c){return a||f||0}}}return !a&&-1}},bh={includes:cx(!0),indexOf:cx(!1)},eQ=bh.indexOf,gL=function(d,f){var c,h=gr(d),g=0,b=[];for(c in h){!gd(aK,c)&&gd(h,c)&&b.push(c)}for(;f.length>g;){gd(h,c=f[g++])&&(~eQ(b,c)||b.push(c))}return b},eD=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],cP=eD.concat("length","prototype"),gB=Object.getOwnPropertyNames||function(a){return gL(a,cP)},bY={f:gB},cf=Object.getOwnPropertySymbols,g1={f:cf},e1=bB("Reflect","ownKeys")||function(b){var c=bY.f(gf(b)),a=g1.f;return a?c.concat(a(b)):c},bP=function(d,g){for(var c=e1(g),j=gh.f,h=gp.f,b=0;b0&&(!q.multiline||q.multiline&&"\n"!==u[q.lastIndex-1])&&(g="(?: "+g+")",k=" "+k,p++),j=RegExp("^(?:"+g+")",b)),d2&&(j=RegExp("^"+g+"$(?!\\s)",b)),c9&&(m=q.lastIndex),f=ak.call(v?j:q,k),v?f?(f.input=f.input.slice(p),f[0]=f[0].slice(p),f.index=q.lastIndex,q.lastIndex+=f[0].length):q.lastIndex=0:c9&&f&&(q.lastIndex=q.global?f.index+f[0].length:m),d2&&f&&f.length>1&&dB.call(f[0],j,function(){for(d=1;d=74)&&(cO=dN.match(/Chrome\/(\d+)/),cO&&(dE=cO[1])));var aV=dE&&+dE,cE=!!Object.getOwnPropertySymbols&&!fA(function(){return !Symbol.sham&&(aJ?38===aV:aV>37&&41>aV)}),bp=cE&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,eX=d4("wks"),gU=fd.Symbol,eK=bp?gU:gU&&gU.withoutSetter||eA,cX=function(a){return(!gd(eX,a)||!cE&&"string"!=typeof eX[a])&&(cE&&gd(gU,a)?eX[a]=gU[a]:eX[a]=eK("Symbol."+a)),eX[a]},gK=cX("species"),b5=!fA(function(){var a=/./;return a.exec=function(){var b=[];return b.groups={a:"7"},b},"7"!=="".replace(a,"$")}),cp=function(){return"$0"==="a".replace(/./,"$0")}(),g6=cX("replace"),e8=function(){return/./[g6]?""===/./[g6]("a","$0"):!1}(),bW=!fA(function(){var b=/(?:)/,c=b.exec;b.exec=function(){return c.apply(this,arguments)};var a="ab".split(b);return 2!==a.length||"a"!==a[0]||"b"!==a[1]}),b8=function(u,m,j,f){var d=cX(u),q=!fA(function(){var a={};return a[d]=function(){return 7},7!=""[u](a)}),v=q&&!fA(function(){var c=!1,a=/a/;return"split"===u&&(a={},a.constructor={},a.constructor[gK]=function(){return a},a.flags="",a[d]=/./[d]),a.exec=function(){return c=!0,null},a[d](""),!c});if(!q||!v||"replace"===u&&(!b5||!cp||e8)||"split"===u&&!bW){var b=/./[d],g=j(d,""[u],function(c,h,a,r,l){return h.exec===bJ?q&&!l?{done:!0,value:b.call(h,a,r)}:{done:!0,value:c.call(a,h,r)}:{done:!1}},{REPLACE_KEEPS_$0:cp,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:e8}),p=g[0],k=g[1];a2(String.prototype,u,p),a2(RegExp.prototype,d,2==m?function(a,c){return k.call(a,this,c)}:function(a){return k.call(a,this)})}f&&f4(RegExp.prototype[d],"sham",!0)},fS=cX("match"),dQ=function(a){var b;return gu(a)&&(void 0!==(b=a[fS])?!!b:"RegExp"==gs(a))},bG=function(a){if("function"!=typeof a){throw TypeError(a+" is not a function")}return a},bf=cX("species"),eR=function(b,c){var a,d=gf(b).constructor;return void 0===d||void 0==(a=gf(d)[bf])?c:bG(a)},dW=function(a){return function(g,c){var j,h,b=f9(g)+"",d=aE(c),f=b.length;return 0>d||d>=f?a?"":void 0:(j=b.charCodeAt(d),55296>j||j>56319||d+1===f||(h=b.charCodeAt(d+1))<56320||h>57343?a?b.charAt(d):j:a?b.slice(d,d+2):(j-55296<<10)+(h-56320)+65536)}},cQ={codeAt:dW(!1),charAt:dW(!0)},cy=cQ.charAt,gN=function(b,c,a){return c+(a?cy(b,c).length:1)},bx=function(b,c){var a=b.exec;if("function"==typeof a){var d=a.call(b,c);if("object"!=typeof d){throw TypeError("RegExp exec method returned something other than an Object or null")}return d}if("RegExp"!==gs(b)){throw TypeError("RegExp#exec called on incompatible receiver")}return bJ.call(b,c)},bQ=[].push,dj=Math.min,fC=4294967295,d9=!fA(function(){return !RegExp(fC,"y")});b8("split",2,function(b,c,a){var d;return d="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(w,k){var g=f9(this)+"",f=void 0===k?fC:k>>>0;if(0===f){return[]}if(void 0===w){return[g]}if(!dQ(w)){return c.call(g,w,f)}for(var q,x,e,j=[],p=(w.ignoreCase?"i":"")+(w.multiline?"m":"")+(w.unicode?"u":"")+(w.sticky?"y":""),m=0,v=RegExp(w.source,p+"g");(q=bJ.call(v,g))&&(x=v.lastIndex,!(x>m&&(j.push(g.slice(m,q.index)),q.length>1&&q.index=f)));){v.lastIndex===q.index&&v.lastIndex++}return m===g.length?(e||!v.test(""))&&j.push(""):j.push(g.slice(m)),j.length>f?j.slice(0,f):j}:"0".split(void 0,0).length?function(f,e){return void 0===f&&0===e?[]:c.call(this,f,e)}:c,[function(h,g){var j=f9(this),f=void 0==h?void 0:h[b];return void 0!==f?f.call(h,j,g):d.call(j+"",h,g)},function(E,j){var B=a(d,E,this,j,d!==c);if(B.done){return B.value}var F=gf(E),e=this+"",n=eR(F,RegExp),z=F.unicode,q=(F.ignoreCase?"i":"")+(F.multiline?"m":"")+(F.unicode?"u":"")+(d9?"y":"g"),D=new n(d9?F:"^(?:"+F.source+")",q),y=void 0===j?fC:j>>>0;if(0===y){return[]}if(0===e.length){return null===bx(D,e)?[e]:[]}for(var x=0,i=0,w=[];ib;){gh.f(d,c=h[b++],f[c])}return d},cg=bB("document","documentElement"),eq=">",aO="<",gg="prototype",c3="script",gZ=ek("IE_PROTO"),aC=function(){},dq=function(a){return aO+c3+eq+a+aO+"/"+c3+eq},ag=function(a){a.write(dq("")),a.close();var b=a.parentWindow.Object;return a=null,b},dy=function(){var b,c=f0("iframe"),a="java"+c3+":";return c.style.display="none",cg.appendChild(c),c.src=a+"",b=c.contentWindow.document,b.open(),b.write(dq("document.F=Object")),b.close(),b.F},eg=function(){try{a0=document.domain&&new ActiveXObject("htmlfile")}catch(a){}eg=a0?ag(a0):dy();for(var b=eD.length;b--;){delete eg[gg][eD[b]]}return eg()};aK[gZ]=!0;var c8=Object.create||function(b,c){var a;return null!==b?(aC[gg]=gf(b),a=new aC,aC[gg]=null,a[gZ]=b):a=eg(),void 0===c?a:eE(a,c)},a6=cX("unscopables"),d1=Array.prototype;void 0==d1[a6]&&gh.f(d1,a6,{configurable:!0,value:c8(null)});var gx=function(a){d1[a6][a]=!0},bI=bh.includes;cB({target:"Array",proto:!0},{includes:function(a){return bI(this,a,arguments.length>1?arguments[1]:void 0)}}),gx("includes");var cL=Array.isArray||function(a){return"Array"==gs(a)},dD=function(a){return Object(f9(a))},aI=function(b,c,a){var d=fY(c);d in b?gh.f(b,d,gS(0,a)):b[d]=a},dK=cX("species"),ap=function(b,c){var a;return cL(b)&&(a=b.constructor,"function"!=typeof a||a!==Array&&!cL(a.prototype)?gu(a)&&(a=a[dK],null===a&&(a=void 0)):a=void 0),new (void 0===a?Array:a)(0===c?0:c)},ex=cX("species"),aw=function(a){return aV>=51||!fA(function(){var c=[],b=c.constructor={};return b[ex]=function(){return{foo:1}},1!==c[a](Boolean).foo})},aU=cX("isConcatSpreadable"),cD=9007199254740991,bm="Maximum allowed index exceeded",eW=aV>=51||!fA(function(){var a=[];return a[aU]=!1,a.concat()[0]!==a}),gT=aw("concat"),eJ=function(a){if(!gu(a)){return !1}var b=a[aU];return void 0!==b?!!b:cL(a)},cW=!eW||!gT;cB({target:"Array",proto:!0,forced:cW},{concat:function(k){var h,g,d,c,j,m=dD(this),b=ap(m,0),f=0;for(h=-1,d=arguments.length;d>h;h++){if(j=-1===h?m:arguments[h],eJ(j)){if(c=af(j.length),f+c>cD){throw TypeError(bm)}for(g=0;c>g;g++,f++){g in j&&aI(b,f,j[g])}}else{if(f>=cD){throw TypeError(bm)}aI(b,f++,j)}}return b.length=f,b}});var gH=function(b,c,a){if(bG(b),void 0===c){return b}switch(a){case 0:return function(){return b.call(c)};case 1:return function(d){return b.call(c,d)};case 2:return function(d,e){return b.call(c,d,e)};case 3:return function(d,f,e){return b.call(c,d,f,e)}}return function(){return b.apply(c,arguments)}},b2=[].push,cm=function(d){var h=1==d,c=2==d,k=3==d,j=4==d,b=6==d,f=7==d,g=5==d||b;return function(i,s,n,B){for(var r,q,a=dD(i),o=fR(a),A=gH(s,n,3),x=af(o.length),e=0,t=B||ap,z=h?t(i,x):c||f?t(i,0):void 0;x>e;e++){if((g||e in o)&&(r=o[e],q=A(r,e,a),d)){if(h){z[e]=q}else{if(q){switch(d){case 3:return !0;case 5:return r;case 6:return e;case 2:b2.call(z,r)}}else{switch(d){case 4:return !1;case 7:b2.call(z,r)}}}}}return b?-1:k||j?j:z}},g5={forEach:cm(0),map:cm(1),filter:cm(2),some:cm(3),every:cm(4),find:cm(5),findIndex:cm(6),filterOut:cm(7)},e7=g5.find,bV="find",b7=!0;bV in []&&Array(1)[bV](function(){b7=!1}),cB({target:"Array",proto:!0,forced:b7},{find:function(a){return e7(this,a,arguments.length>1?arguments[1]:void 0)}}),gx(bV);var fP=function(a){if(dQ(a)){throw TypeError("The method doesn't accept regular expressions")}return a},dP=cX("match"),bD=function(b){var c=/./;try{"/./"[b](c)}catch(a){try{return c[dP]=!1,"/./"[b](c)}catch(d){}}return !1};cB({target:"String",proto:!0,forced:!bD("includes")},{includes:function(a){return !!~(f9(this)+"").indexOf(fP(a),arguments.length>1?arguments[1]:void 0)}});var bd={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},eP=g5.forEach,cN=ck("forEach"),cw=cN?[].forEach:function(a){return eP(this,a,arguments.length>1?arguments[1]:void 0)};for(var gJ in bd){var bv=fd[gJ],bO=bv&&bv.prototype;if(bO&&bO.forEach!==cw){try{f4(bO,"forEach",cw)}catch(dg){bO.forEach=cw}}}var fv=ed.trim,d7=fd.parseFloat,aZ=1/d7(gQ+"-0")!==-(1/0),e0=aZ?function(b){var c=fv(b+""),a=d7(c);return 0===a&&"-"==c.charAt(0)?-0:a}:d7;cB({global:!0,forced:parseFloat!=e0},{parseFloat:e0});var eC=gz.f,cd=function(a){return function(g){for(var c,j=gr(g),h=e2(j),b=h.length,d=0,f=[];b>d;){c=h[d++],(!f8||eC.call(j,c))&&f.push(a?[c,j[c]]:j[c])}return f}},em={entries:cd(!0),values:cd(!1)},aN=em.entries;cB({target:"Object",stat:!0},{entries:function(a){return aN(a)}});var f7=bh.indexOf,c1=[].indexOf,gY=!!c1&&1/[1].indexOf(1,-0)<0,aB=ck("indexOf");cB({target:"Array",proto:!0,forced:gY||!aB},{indexOf:function(a){return gY?c1.apply(this,arguments)||0:f7(this,a,arguments.length>1?arguments[1]:void 0)}});var dl=[],ad=dl.sort,dw=fA(function(){dl.sort(void 0)}),ec=fA(function(){dl.sort(null)}),c5=ck("sort"),a5=dw||!ec||!c5;cB({target:"Array",proto:!0,forced:a5},{sort:function(a){return void 0===a?ad.call(dD(this)):ad.call(dD(this),bG(a))}});var dY=Math.floor,gm="".replace,bF=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,cI=/\$([$&'`]|\d{1,2})/g,dA=function(k,h,g,d,c,j){var m=g+k.length,b=d.length,f=cI;return void 0!==c&&(c=dD(c),f=bF),gm.call(j,f,function(i,e){var p;switch(e.charAt(0)){case"$":return"$";case"&":return k;case"`":return h.slice(0,g);case"'":return h.slice(m);case"<":p=c[e.slice(1,-1)];break;default:var o=+e;if(0===o){return i}if(o>b){var n=dY(o/10);return 0===n?i:b>=n?void 0===d[n-1]?e.charAt(1):d[n-1]+e.charAt(1):i}p=d[o-1]}return void 0===p?"":p})},aH=Math.max,dI=Math.min,aj=function(a){return void 0===a?a:a+""};b8("replace",2,function(d,g,c,j){var h=j.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,b=j.REPLACE_KEEPS_$0,f=h?"$":"$0";return[function(k,m){var l=f9(this),e=void 0==k?void 0:k[d];return void 0!==e?e.call(k,l,m):g.call(l+"",k,m)},function(B,E){if(!h&&b||"string"==typeof E&&-1===E.indexOf(f)){var C=c(g,B,this,E);if(C.done){return C.value}}var G=gf(B),M=this+"",I="function"==typeof E;I||(E+="");var A=G.global;if(A){var L=G.unicode;G.lastIndex=0}for(var K=[];;){var D=bx(G,M);if(null===D){break}if(K.push(D),!A){break}var J=D[0]+"";""===J&&(G.lastIndex=gN(M,af(G.lastIndex),L))}for(var z="",N=0,F=0;F=N&&(z+=M.slice(N,s)+a,N=s+o.length)}return z+M.slice(N)}]});var eu=Object.assign,ar=Object.defineProperty,aT=!eu||fA(function(){if(f8&&1!==eu({b:1},eu(ar({},"a",{enumerable:!0,get:function(){ar(this,"b",{value:3,enumerable:!1})}}),{b:2})).b){return !0}var b={},c={},a=Symbol(),d="abcdefghijklmnopqrst";return b[a]=7,d.split("").forEach(function(e){c[e]=e}),7!=eu({},b)[a]||e2(eu({},c)).join("")!=d})?function(w,m){for(var j=dD(w),f=arguments.length,d=1,q=g1.f,x=gz.f;f>d;){for(var b,g=fR(arguments[d++]),p=q?e2(g).concat(q(g)):e2(g),k=p.length,v=0;k>v;){b=p[v++],(!f8||x.call(g,b))&&(j[b]=g[b])}}return j}:eu;cB({target:"Object",stat:!0,forced:Object.assign!==aT},{assign:aT});var cA=g5.filter,bl=aw("filter");cB({target:"Array",proto:!0,forced:!bl},{filter:function(a){return cA(this,a,arguments.length>1?arguments[1]:void 0)}});var eT=Object.is||function(a,b){return a===b?0!==a||1/a===1/b:a!=a&&b!=b};b8("search",1,function(b,c,a){return[function(f){var d=f9(this),g=void 0==f?void 0:f[b];return void 0!==g?g.call(f,d):RegExp(f)[b](d+"")},function(e){var i=a(c,e,this);if(i.done){return i.value}var h=gf(e),d=this+"",f=h.lastIndex;eT(f,0)||(h.lastIndex=0);var g=bx(h,d);return eT(h.lastIndex,f)||(h.lastIndex=f),null===g?-1:g.index}]});var gP=ed.trim,eG=fd.parseInt,cT=/^[+-]?0[Xx]/,gE=8!==eG(gQ+"08")||22!==eG(gQ+"0x16"),b0=gE?function(b,c){var a=gP(b+"");return eG(a,c>>>0||(cT.test(a)?16:10))}:eG;cB({global:!0,forced:parseInt!=b0},{parseInt:b0});var cj=g5.map,g4=aw("map");cB({target:"Array",proto:!0,forced:!g4},{map:function(a){return cj(this,a,arguments.length>1?arguments[1]:void 0)}});var e4=g5.findIndex,bS="findIndex",b4=!0;bS in []&&Array(1)[bS](function(){b4=!1}),cB({target:"Array",proto:!0,forced:b4},{findIndex:function(a){return e4(this,a,arguments.length>1?arguments[1]:void 0)}}),gx(bS);var fH=function(a){if(!gu(a)&&null!==a){throw TypeError("Can't set "+(a+"")+" as a prototype")}return a},dM=Object.setPrototypeOf||("__proto__" in {}?function(){var b,c=!1,a={};try{b=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,b.call(a,[]),c=a instanceof Array}catch(d){}return function(e,f){return gf(e),fH(f),c?b.call(e,f):e.__proto__=f,e}}():void 0),bz=function(b,c,a){var f,d;return dM&&"function"==typeof(f=c.constructor)&&f!==a&&gu(d=f.prototype)&&d!==a.prototype&&dM(b,d),b},bc=cX("species"),eO=function(b){var c=bB(b),a=gh.f;f8&&c&&!c[bc]&&a(c,bc,{configurable:!0,get:function(){return this}})},dU=gh.f,cM=bY.f,cv=c2.set,gI=cX("match"),bu=fd.RegExp,bN=bu.prototype,df=/a/g,fs=/a/g,d6=new bu(df)!==df,aY=dr.UNSUPPORTED_Y,eB=f8&&dZ("RegExp",!d6||aY||fA(function(){return fs[gI]=!1,bu(df)!=df||bu(fs)==fs||"/a/i"!=bu(df,"i")}));if(eB){for(var cc=function(d,g){var c,j=this instanceof cc,h=dQ(d),b=void 0===g;if(!j&&h&&d.constructor===cc&&b){return d}d6?h&&!b&&(d=d.source):d instanceof cc&&(b&&(g=c6.call(d)),d=d.source),aY&&(c=!!g&&g.indexOf("y")>-1,c&&(g=g.replace(/y/g,"")));var f=bz(d6?new bu(d,g):bu(d,g),j?this:bN,cc);return aY&&c&&cv(f,{sticky:c}),f},el=(function(a){a in cc||dU(cc,a,{configurable:!0,get:function(){return bu[a]},set:function(b){bu[a]=b}})}),aM=cM(bu),f5=0;aM.length>f5;){el(aM[f5++])}bN.constructor=cc,cc.prototype=bN,a2(fd,"RegExp",cc)}eO("RegExp");var c0="toString",gX=RegExp.prototype,aA=gX[c0],dk=fA(function(){return"/a/b"!=aA.call({source:"a",flags:"b"})}),ac=aA.name!=c0;(dk||ac)&&a2(RegExp.prototype,c0,function(){var b=gf(this),c=b.source+"",a=b.flags,d=(void 0===a&&b instanceof RegExp&&!("flags" in gX)?c6.call(b):a)+"";return"/"+c+"/"+d},{unsafe:!0});var dv=cX("toStringTag"),eb={};eb[dv]="z";var c4=eb+""=="[object z]",a4=cX("toStringTag"),dX="Arguments"==gs(function(){return arguments}()),gj=function(b,c){try{return b[c]}catch(a){}},bE=c4?gs:function(b){var c,a,d;return void 0===b?"Undefined":null===b?"Null":"string"==typeof(a=gj(c=Object(b),a4))?a:dX?gs(c):"Object"==(d=gs(c))&&"function"==typeof c.callee?"Arguments":d},cH=c4?{}.toString:function(){return"[object "+bE(this)+"]"};c4||a2(Object.prototype,"toString",cH,{unsafe:!0});var dz=aw("slice"),aG=cX("species"),dH=[].slice,ah=Math.max;cB({target:"Array",proto:!0,forced:!dz},{slice:function(k,h){var g,d,c,j=gr(this),m=af(j.length),b=aQ(k,m),f=aQ(void 0===h?m:h,m);if(cL(j)&&(g=j.constructor,"function"!=typeof g||g!==Array&&!cL(g.prototype)?gu(g)&&(g=g[aG],null===g&&(g=void 0)):g=void 0,g===Array||void 0===g)){return dH.call(j,b,f)}for(d=new (void 0===g?Array:g)(ah(f-b,0)),c=0;f>b;b++,c++){b in j&&aI(d,c,j[b])}return d.length=c,d}});var er,aq,aS,cz=!fA(function(){function a(){}return a.prototype.constructor=null,Object.getPrototypeOf(new a)!==a.prototype}),bk=ek("IE_PROTO"),eS=Object.prototype,gO=cz?Object.getPrototypeOf:function(a){return a=dD(a),gd(a,bk)?a[bk]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?eS:null},eF=cX("iterator"),cS=!1,gD=function(){return this};[].keys&&(aS=[].keys(),"next" in aS?(aq=gO(gO(aS)),aq!==Object.prototype&&(er=aq)):cS=!0);var bZ=void 0==er||fA(function(){var a={};return er[eF].call(a)!==a});bZ&&(er={}),gd(er,eF)||f4(er,eF,gD);var ch={IteratorPrototype:er,BUGGY_SAFARI_ITERATORS:cS},g3=gh.f,e3=cX("toStringTag"),bR=function(b,c,a){b&&!gd(b=a?b:b.prototype,e3)&&g3(b,e3,{configurable:!0,value:c})},b3=ch.IteratorPrototype,fE=function(b,c,a){var d=c+" Iterator";return b.prototype=c8(b3,{next:gS(1,a)}),bR(b,d,!1),b},dL=ch.IteratorPrototype,by=ch.BUGGY_SAFARI_ITERATORS,bj=cX("iterator"),eV="keys",d0="values",cV="entries",cC=function(){return this},gR=function(G,A,w,m,k,D,H){fE(w,A,m);var b,q,C,x=function(a){if(a===k&&y){return y}if(!by&&a in z){return z[a]}switch(a){case eV:return function(){return new w(this,a)};case d0:return function(){return new w(this,a)};case cV:return function(){return new w(this,a)}}return function(){return new w(this)}},F=A+" Iterator",B=!1,z=G.prototype,j=z[bj]||z["@@iterator"]||k&&z[k],y=!by&&j||x(k),E="Array"==A?z.entries||j:j;if(E&&(b=gO(E.call(new G)),dL!==Object.prototype&&b.next&&(gO(b)!==dL&&(dM?dM(b,dL):"function"!=typeof b[bj]&&f4(b,bj,cC)),bR(b,F,!0))),k==d0&&j&&j.name!==d0&&(B=!0,y=function(){return j.call(this)}),z[bj]!==y&&f4(z,bj,y),k){if(q={values:x(d0),keys:D?y:x(eV),entries:x(cV)},H){for(C in q){!by&&!B&&C in z||a2(z,C,q[C])}}else{cB({target:A,proto:!0,forced:by||B},q)}}return q},bC="Array Iterator",bU=c2.set,dp=c2.getterFor(bC),fN=gR(Array,"Array",function(a,b){bU(this,{type:bC,target:gr(a),index:0,kind:b})},function(){var b=dp(this),c=b.target,a=b.kind,d=b.index++;return !c||d>=c.length?(b.target=void 0,{value:void 0,done:!0}):"keys"==a?{value:d,done:!1}:"values"==a?{value:c[d],done:!1}:{value:[d,c[d]],done:!1}},"values");gx("keys"),gx("values"),gx("entries");var ef=cX("iterator"),a3=cX("toStringTag"),e6=fN.values;for(var eI in bd){var cl=fd[eI],ew=cl&&cl.prototype;if(ew){if(ew[ef]!==e6){try{f4(ew,ef,e6)}catch(dg){ew[ef]=e6}}if(ew[a3]||f4(ew,a3,eI),bd[eI]){for(var aR in fN){if(ew[aR]!==fN[aR]){try{f4(ew,aR,fN[aR])}catch(dg){ew[aR]=fN[aR]}}}}}}var gv=aw("splice"),c7=Math.max,g2=Math.min,aF=9007199254740991,ds="Maximum allowed length exceeded";cB({target:"Array",proto:!0,forced:!gv},{splice:function(w,m){var j,f,d,q,x,b,g=dD(this),p=af(g.length),k=aQ(w,p),v=arguments.length;if(0===v?j=f=0:1===v?(j=0,f=p-k):(j=v-2,f=g2(c7(aE(m),0),p-k)),p+j-f>aF){throw TypeError(ds)}for(d=ap(g,f),q=0;f>q;q++){x=k+q,x in g&&aI(d,q,g[x])}if(d.length=f,f>j){for(q=k;p-f>q;q++){x=q+f,b=q+j,x in g?g[b]=g[x]:delete g[b]}for(q=p;q>p-f+j;q--){delete g[q-1]}}else{if(j>f){for(q=p-f;q>k;q--){x=q+f-1,b=q+j-1,x in g?g[b]=g[x]:delete g[b]}}}for(q=0;j>q;q++){g[q+k]=arguments[q+2]}return g.length=p-f+j,d}});var am=bY.f,dC=gp.f,ej=gh.f,db=ed.trim,bb="Number",d3=fd[bb],gC=d3.prototype,bM=gs(c8(gC))==bb,cR=function(p){var j,h,f,d,m,q,b,g,k=fY(p,!1);if("string"==typeof k&&k.length>2){if(k=db(k),j=k.charCodeAt(0),43===j||45===j){if(h=k.charCodeAt(2),88===h||120===h){return NaN}}else{if(48===j){switch(k.charCodeAt(1)){case 66:case 98:f=2,d=49;break;case 79:case 111:f=8,d=55;break;default:return +k}for(m=k.slice(2),q=m.length,b=0;q>b;b++){if(g=m.charCodeAt(b),48>g||g>d){return NaN}}return parseInt(m,f)}}}return +k};if(dZ(bb,!d3(" 0o1")||!d3("0b1")||d3("+0x1"))){for(var dF,aL=function(b){var c=arguments.length<1?0:b,a=this;return a instanceof aL&&(bM?fA(function(){gC.valueOf.call(a)}):gs(a)!=bb)?bz(new d3(cR(c)),a,aL):cR(c)},dO=f8?am(d3):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),av=0;dO.length>av;av++){gd(d3,dF=dO[av])&&!gd(aL,dF)&&ej(aL,dF,dC(d3,dF))}aL.prototype=gC,gC.constructor=aL,a2(fd,bb,aL)}var ez=[].reverse,az=[1,2];cB({target:"Array",proto:!0,forced:az+""==az.reverse()+""},{reverse:function(){return cL(this)&&(this.length=this.length),ez.call(this)}});var aX="1.18.3",cG=4;try{var bs=fc["default"].fn.dropdown.Constructor.VERSION;void 0!==bs&&(cG=parseInt(bs,10))}catch(eY){}try{var gW=bootstrap.Tooltip.VERSION;void 0!==gW&&(cG=parseInt(gW,10))}catch(eY){}var eL={3:{iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus",fullscreen:"glyphicon-fullscreen",search:"glyphicon-search",clearSearch:"glyphicon-trash"},classes:{buttonsPrefix:"btn",buttons:"default",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"pull",inputGroup:"input-group",inputPrefix:"input-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:['"],toolbarDropdownItem:'
  • ',toolbarDropdownSeparator:'
  • ',pageDropdown:['"],pageDropdownItem:'
    ',dropdownCaret:'',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',icon:'',inputGroup:'
    %s%s
    ',searchInput:'',searchButton:'',searchClearButton:''}},4:{iconsPrefix:"fa",icons:{paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on",columns:"fa-th-list",detailOpen:"fa-plus",detailClose:"fa-minus",fullscreen:"fa-arrows-alt",search:"fa-search",clearSearch:"fa-trash"},classes:{buttonsPrefix:"btn",buttons:"secondary",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"float",inputGroup:"btn-group",inputPrefix:"form-control-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:['"],toolbarDropdownItem:'',pageDropdown:['"],pageDropdownItem:'%s',toolbarDropdownSeparator:'',dropdownCaret:'',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',icon:'',inputGroup:'
    %s
    %s
    ',searchInput:'',searchButton:'',searchClearButton:''}},5:{iconsPrefix:"fa",icons:{paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on",columns:"fa-th-list",detailOpen:"fa-plus",detailClose:"fa-minus",fullscreen:"fa-arrows-alt",search:"fa-search",clearSearch:"fa-trash"},classes:{buttonsPrefix:"btn",buttons:"secondary",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"float",inputGroup:"btn-group",inputPrefix:"form-control-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{dataToggle:"data-bs-toggle",toolbarDropdown:['"],toolbarDropdownItem:'',pageDropdown:['"],pageDropdownItem:'%s',toolbarDropdownSeparator:'',dropdownCaret:'',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',icon:'',inputGroup:'
    %s
    %s
    ',searchInput:'',searchButton:'',searchClearButton:''}}}[cG],cY={id:void 0,firstLoad:!0,height:void 0,classes:"table table-bordered table-hover",buttons:{},theadClasses:"",striped:!1,headerStyle:function(a){return{}},rowStyle:function(a,b){return{}},rowAttributes:function(a,b){return{}},undefinedText:"-",locale:void 0,virtualScroll:!1,virtualScrollItemHeight:void 0,sortable:!0,sortClass:void 0,silentSort:!0,sortName:void 0,sortOrder:void 0,sortReset:!1,sortStable:!1,rememberOrder:!1,serverSort:!0,customSort:void 0,columns:[[]],data:[],url:void 0,method:"get",cache:!0,contentType:"application/json",dataType:"json",ajax:void 0,ajaxOptions:{},queryParams:function(a){return a},queryParamsType:"limit",responseHandler:function(a){return a},totalField:"total",totalNotFilteredField:"totalNotFiltered",dataField:"rows",footerField:"footer",pagination:!1,paginationParts:["pageInfo","pageSize","pageList"],showExtendedPagination:!1,paginationLoop:!0,sidePagination:"client",totalRows:0,totalNotFiltered:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"‹",paginationNextText:"›",paginationSuccessivelySize:5,paginationPagesBySide:1,paginationUseIntermediate:!1,search:!1,searchHighlight:!1,searchOnEnterKey:!1,strictSearch:!1,searchSelector:!1,visibleSearch:!1,showButtonIcons:!0,showButtonText:!1,showSearchButton:!1,showSearchClearButton:!1,trimOnSearch:!0,searchAlign:"right",searchTimeOut:500,searchText:"",customSearch:void 0,showHeader:!0,showFooter:!1,footerStyle:function(a){return{}},searchAccentNeutralise:!1,showColumns:!1,showSearch:!1,showPageGo:!1,showColumnsToggleAll:!1,showColumnsSearch:!1,minimumCountColumns:1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,showFullscreen:!1,smartDisplay:!0,escape:!1,filterOptions:{filterAlgorithm:"and"},idField:void 0,selectItemName:"btSelectItem",clickToSelect:!1,ignoreClickToSelectOn:function(a){var b=a.tagName;return["A","BUTTON"].includes(b)},singleSelect:!1,checkboxHeader:!0,maintainMetaData:!1,multipleSelectRow:!1,uniqueId:void 0,cardView:!1,detailView:!1,detailViewIcon:!0,detailViewByClick:!1,detailViewAlign:"left",detailFormatter:function(a,b){return""},detailFilter:function(a,b){return !0},toolbar:void 0,toolbarAlign:"left",buttonsToolbar:void 0,buttonsAlign:"right",buttonsOrder:["search","paginationSwitch","refresh","toggle","fullscreen","columns"],buttonsPrefix:eL.classes.buttonsPrefix,buttonsClass:eL.classes.buttons,icons:eL.icons,iconSize:void 0,iconsPrefix:eL.iconsPrefix,loadingFontSize:"auto",loadingTemplate:function(a){return'\n '.concat(a,'\n \n \n ')},onAll:function(a,b){return !1},onClickCell:function(b,c,a,d){return !1},onDblClickCell:function(b,c,a,d){return !1},onClickRow:function(a,b){return !1},onDblClickRow:function(a,b){return !1},onSort:function(a,b){return !1},onCheck:function(a){return !1},onUncheck:function(a){return !1},onCheckAll:function(a){return !1},onUncheckAll:function(a){return !1},onCheckSome:function(a){return !1},onUncheckSome:function(a){return !1},onLoadSuccess:function(a){return !1},onLoadError:function(a){return !1},onColumnSwitch:function(a,b){return !1},onPageChange:function(a,b){return !1},onSearch:function(a){return !1},onShowSearch:function(){return !1},onToggle:function(a){return !1},onPreBody:function(a){return !1},onPostBody:function(){return !1},onPostHeader:function(){return !1},onPostFooter:function(){return !1},onExpandRow:function(b,c,a){return !1},onCollapseRow:function(a,b){return !1},onRefreshOptions:function(a){return !1},onRefresh:function(a){return !1},onResetView:function(){return !1},onScrollBody:function(){return !1}},gM={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(a){return"".concat(a," rows per page")},formatShowingRows:function(b,c,a,d){return void 0!==d&&d>0&&d>a?"Showing ".concat(b," to ").concat(c," of ").concat(a," rows (filtered from ").concat(d," total rows)"):"Showing ".concat(b," to ").concat(c," of ").concat(a," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(a){return"to page ".concat(a)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(a){return"Showing ".concat(a," rows")},formatSearch:function(){return"Search"},formatShowSearch:function(){return"Show Search"},formatPageGo:function(){return"Go"},formatClearSearch:function(){return"Clear Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"}},b6={field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,width:void 0,widthUnit:"px",rowspan:void 0,colspan:void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,cellStyle:void 0,radio:!1,checkbox:!1,checkboxEnabled:!0,clickToSelect:!0,showSelectTitle:!1,sortable:!1,sortName:void 0,order:"asc",sorter:void 0,visible:!0,ignore:!1,switchable:!0,cardVisible:!0,searchable:!0,formatter:void 0,footerFormatter:void 0,detailFormatter:void 0,searchFormatter:!0,searchHighlightFormatter:!1,escape:!1,events:void 0},cq=["getOptions","refreshOptions","getData","getSelections","load","append","prepend","remove","removeAll","insertRow","updateRow","getRowByUniqueId","updateByUniqueId","removeByUniqueId","updateCell","updateCellByUniqueId","showRow","hideRow","getHiddenRows","showColumn","hideColumn","getVisibleColumns","getHiddenColumns","showAllColumns","hideAllColumns","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","destroy","resetView","showLoading","hideLoading","togglePagination","toggleFullscreen","toggleView","resetSearch","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","toggleDetailView","expandRow","collapseRow","expandRowByUniqueId","collapseRowByUniqueId","expandAllRows","collapseAllRows","updateColumnTitle","updateFormatText"],ab={"all.bs.table":"onAll","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","post-footer.bs.table":"onPostFooter","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh","scroll-body.bs.table":"onScrollBody"};Object.assign(cY,gM);var fb={VERSION:aX,THEME:"bootstrap".concat(cG),CONSTANTS:eL,DEFAULTS:cY,COLUMN_DEFAULTS:b6,METHODS:cq,EVENTS:ab,LOCALES:{en:gM,"en-US":gM}},bX=fA(function(){e2(1)});cB({target:"Object",stat:!0,forced:bX},{keys:function(a){return e2(dD(a))}});var b9=gp.f,fT="".startsWith,dR=Math.min,bH=bD("startsWith"),a9=!bH&&!!function(){var a=b9(String.prototype,"startsWith");return a&&!a.writable}();cB({target:"String",proto:!0,forced:!a9&&!bH},{startsWith:function(b){var c=f9(this)+"";fP(b);var a=af(dR(arguments.length>1?arguments[1]:void 0,c.length)),d=b+"";return fT?fT.call(c,d,a):c.slice(a,a+d.length)===d}});var eN=gp.f,dT="".endsWith,cK=Math.min,cu=bD("endsWith"),gG=!cu&&!!function(){var a=eN(String.prototype,"endsWith");return a&&!a.writable}();cB({target:"String",proto:!0,forced:!gG&&!cu},{endsWith:function(d){var f=f9(this)+"";fP(d);var c=arguments.length>1?arguments[1]:void 0,h=af(f.length),g=void 0===c?h:cK(af(c),h),b=d+"";return dT?dT.call(f,b,g):f.slice(g-b.length,g)===b}});var br={getSearchInput:function(a){return"string"==typeof a.options.searchSelector?fc["default"](a.options.searchSelector):a.$toolbar.find(".search input")},sprintf:function(d){for(var g=arguments.length,c=Array(g>1?g-1:0),j=1;g>j;j++){c[j-1]=arguments[j]}var h=!0,b=0,f=d.replace(/%s/g,function(){var a=c[b++];return void 0===a?(h=!1,""):a});return h?f:""},isObject:function(a){return a instanceof Object&&!Array.isArray(a)},isEmptyObject:function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 0===Object.entries(a).length&&a.constructor===Object},isNumeric:function(a){return !isNaN(parseFloat(a))&&isFinite(a)},getFieldTitle:function(d,f){var c,h=fg(d);try{for(h.s();!(c=h.n()).done;){var g=c.value;if(g.field===f){return g.title}}}catch(b){h.e(b)}finally{h.f()}return""},setFieldIndex:function(k){var F,B=0,y=[],x=fg(k[0]);try{for(x.s();!(F=x.n()).done;){var J=F.value;B+=J.colspan||1}}catch(q){x.e(q)}finally{x.f()}for(var v=0;vA;A++){y[v][A]=!1}}for(var H=0;HI;I++){for(var z=0;w>z;z++){y[H+I][D+z]=!0}}}}catch(q){j.e(q)}finally{j.f()}}},normalizeAccent:function(a){return"string"!=typeof a?a:a.normalize("NFD").replace(/[\u0300-\u036f]/g,"")},updateFieldGroup:function(y){var q,k,g=(q=[]).concat.apply(q,fp(y)),b=fg(y);try{for(b.s();!(k=b.n()).done;){var w,z=k.value,j=fg(z);try{for(j.s();!(w=j.n()).done;){var v=w.value;if(v.colspanGroup>1){for(var m=0,x=function(a){var c=g.find(function(d){return d.fieldIndex===a});c.visible&&m++},r=v.colspanIndex;r0}}}catch(p){j.e(p)}finally{j.f()}}}catch(p){b.e(p)}finally{b.f()}},getScrollBarWidth:function(){if(void 0===this.cachedWidth){var b=fc["default"]("
    ").addClass("fixed-table-scroll-inner"),c=fc["default"]("
    ").addClass("fixed-table-scroll-outer");c.append(b),fc["default"]("body").append(c);var a=b[0].offsetWidth;c.css("overflow","scroll");var d=b[0].offsetWidth;a===d&&(d=c[0].clientWidth),c.remove(),this.cachedWidth=a-d}return this.cachedWidth},calculateObjectValue:function(p,i,d,b){var k=i;if("string"==typeof i){var q=i.split(".");if(q.length>1){k=window;var f,j=fg(q);try{for(j.s();!(f=j.n()).done;){var g=f.value;k=k[g]}}catch(m){j.e(m)}finally{j.f()}}else{k=window[i]}}return null!==k&&"object"===fD(k)?k:"function"==typeof k?k.apply(p,d||[]):!k&&"string"==typeof i&&this.sprintf.apply(this,[i].concat(fp(d)))?this.sprintf.apply(this,[i].concat(fp(d))):b},compareObjects:function(d,h,c){var k=Object.keys(d),j=Object.keys(h);if(c&&k.length!==j.length){return !1}for(var b=0,f=k;b/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/`/g,"`"):a},unescapeHTML:function(a){return"string"==typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/`/g,"`"):a},getRealDataAttr:function(d){for(var g=0,c=Object.entries(d);gtd,>th").each(function(e,r){for(var v=fc["default"](r),k=+v.attr("colspan")||1,q=+v.attr("rowspan")||1,m=e;d[j]&&d[j][m];m++){}for(var t=m;m+k>t;t++){for(var p=j;j+q>p;p++){d[p]||(d[p]=[]),d[p][t]=!0}}var o=b[m].field;i[o]=v.html().trim(),i["_".concat(o,"_id")]=v.attr("id"),i["_".concat(o,"_class")]=v.attr("class"),i["_".concat(o,"_rowspan")]=v.attr("rowspan"),i["_".concat(o,"_colspan")]=v.attr("colspan"),i["_".concat(o,"_title")]=v.attr("title"),i["_".concat(o,"_data")]=a.getRealDataAttr(v.data()),i["_".concat(o,"_style")]=v.attr("style")}),f.push(i)}),f},sort:function(d,f,c,h,g,b){return(void 0===d||null===d)&&(d=""),(void 0===f||null===f)&&(f=""),h&&d===f&&(d=g,f=b),this.isNumeric(d)&&this.isNumeric(f)?(d=parseFloat(d),f=parseFloat(f),f>d?-1*c:d>f?c:0):d===f?0:("string"!=typeof d&&(d=""+d),-1===d.localeCompare(f)?-1*c:c)},getEventName:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return b=b||"".concat(+new Date).concat(~~(1000000*Math.random())),"".concat(a,"-").concat(b)},hasDetailViewIcon:function(a){return a.detailView&&a.detailViewIcon&&!a.cardView},getDetailViewIndexOffset:function(a){return this.hasDetailViewIcon(a)&&"right"!==a.detailViewAlign?1:0},checkAutoMergeCells:function(d){var h,c=fg(d);try{for(c.s();!(h=c.n()).done;){for(var k=h.value,j=0,b=Object.keys(k);jc&&b++;for(var f=g;d>f;f++){k[f]&&m.push(k[f])}return{topOffset:c,bottomOffset:j,rowsAbove:b,rows:m}}},{key:"checkChanges",value:function(c,d){var b=d!==this.cache[c];return this.cache[c]=d,b}},{key:"getExtra",value:function(c,d){var b=document.createElement("tr");return b.className="virtual-scroll-".concat(c),d&&(b.style.height="".concat(d,"px")),b.outerHTML}}]),a}(),d5=function(){function a(d,c){fw(this,a),this.options=c,this.$el=fc["default"](d),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0}return fQ(a,[{key:"init",value:function(){this.initConstants(),this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initHiddenRows(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()}},{key:"initConstants",value:function(){var c=this.options;this.constants=fb.CONSTANTS,this.constants.theme=fc["default"].fn.bootstrapTable.theme,this.constants.dataToggle=this.constants.html.dataToggle||"data-toggle";var d=c.buttonsPrefix?"".concat(c.buttonsPrefix,"-"):"";this.constants.buttonsClass=[c.buttonsPrefix,d+c.buttonsClass,br.sprintf("".concat(d,"%s"),c.iconSize)].join(" ").trim(),this.buttons=br.calculateObjectValue(this,c.buttons,[],{}),"object"!==fD(this.buttons)&&(this.buttons={}),"string"==typeof c.icons&&(c.icons=br.calculateObjectValue(null,c.icons))}},{key:"initLocale",value:function(){if(this.options.locale){var c=fc["default"].fn.bootstrapTable.locales,d=this.options.locale.split(/-|_/);d[0]=d[0].toLowerCase(),d[1]&&(d[1]=d[1].toUpperCase()),c[this.options.locale]?fc["default"].extend(this.options,c[this.options.locale]):c[d.join("-")]?fc["default"].extend(this.options,c[d.join("-")]):c[d[0]]&&fc["default"].extend(this.options,c[d[0]])}}},{key:"initContainer",value:function(){var d=["top","both"].includes(this.options.paginationVAlign)?'
    ':"",f=["bottom","both"].includes(this.options.paginationVAlign)?'
    ':"",c=br.calculateObjectValue(this.options,this.options.loadingTemplate,[this.options.formatLoadingMessage()]);this.$container=fc["default"]('\n
    \n
    \n ').concat(d,'\n
    \n
    \n
    \n
    \n ').concat(c,'\n
    \n
    \n \n
    \n ').concat(f,"\n
    \n ")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$el.find("tfoot"),this.options.buttonsToolbar?this.$toolbar=fc["default"]("body").find(this.options.buttonsToolbar):this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('
    '),this.$el.addClass(this.options.classes),this.$tableLoading.addClass(this.options.classes),this.options.striped&&this.$el.addClass("table-striped"),this.options.height&&(this.$tableContainer.addClass("fixed-height"),this.options.showFooter&&this.$tableContainer.addClass("has-footer"),this.options.classes.split(" ").includes("table-bordered")&&(this.$tableBody.append('
    '),this.$tableBorder=this.$tableBody.find(".fixed-table-border"),this.$tableLoading.addClass("fixed-table-border")),this.$tableFooter=this.$container.find(".fixed-table-footer"))}},{key:"initTable",value:function(){var d=this,c=[];if(this.$header=this.$el.find(">thead"),this.$header.length?this.options.theadClasses&&this.$header.addClass(this.options.theadClasses):this.$header=fc["default"]('')).appendTo(this.$el),this._headerTrClasses=[],this._headerTrStyles=[],this.$header.find("tr").each(function(g,i){var h=fc["default"](i),f=[];h.find("th").each(function(k,l){var j=fc["default"](l);void 0!==j.data("field")&&j.data("field","".concat(j.data("field"))),f.push(fc["default"].extend({},{title:j.html(),"class":j.attr("class"),titleTooltip:j.attr("title"),rowspan:j.attr("rowspan")?+j.attr("rowspan"):void 0,colspan:j.attr("colspan")?+j.attr("colspan"):void 0},j.data()))}),c.push(f),h.attr("class")&&d._headerTrClasses.push(h.attr("class")),h.attr("style")&&d._headerTrStyles.push(h.attr("style"))}),Array.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=fc["default"].extend(!0,[],c,this.options.columns),this.columns=[],this.fieldsColumnsIndex=[],br.setFieldIndex(this.options.columns),this.options.columns.forEach(function(f,g){f.forEach(function(j,k){var h=fc["default"].extend({},a.COLUMN_DEFAULTS,j);void 0!==h.fieldIndex&&(d.columns[h.fieldIndex]=h,d.fieldsColumnsIndex[h.field]=h.fieldIndex),d.options.columns[g][k]=h})}),!this.options.data.length){var e=br.trToData(this.columns,this.$el.find(">tbody>tr"));e.length&&(this.options.data=e,this.fromHtml=!0)}this.options.pagination&&"server"!==this.options.sidePagination||(this.footerData=br.trToData(this.columns,this.$el.find(">tfoot>tr"))),this.footerData&&this.$el.find("tfoot").html(""),!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()}},{key:"initHeader",value:function(){var d=this,f={},c=[];this.header={fields:[],styles:[],classes:[],formatters:[],detailFormatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},br.updateFieldGroup(this.options.columns),this.options.columns.forEach(function(k,j){var h=[];h.push(""));var i="";if(0===j&&br.hasDetailViewIcon(d.options)){var e=d.options.columns.length>1?' rowspan="'.concat(d.options.columns.length,'"'):"";i='\n
    \n ')}i&&"right"!==d.options.detailViewAlign&&h.push(i),k.forEach(function(G,D){var B=br.sprintf(' class="%s"',G["class"]),F=G.widthUnit,L=parseFloat(G.width),H=br.sprintf("text-align: %s; ",G.halign?G.halign:G.align),A=br.sprintf("text-align: %s; ",G.align),K=br.sprintf("vertical-align: %s; ",G.valign);if(K+=br.sprintf("width: %s; ",!G.checkbox&&!G.radio||L?L?L+F:void 0:G.showSelectTitle?void 0:"36px"),void 0!==G.fieldIndex||G.visible){var J=br.calculateObjectValue(null,d.options.headerStyle,[G]),C=[],I="";if(J&&J.css){for(var z=0,M=Object.entries(J.css);z0?" data-not-first-th":"",">"),h.push(br.sprintf('
    ',d.options.sortable&&G.sortable?"sortable both":""));var o=d.options.escape?br.escapeHTML(G.title):G.title,s=o;G.checkbox&&(o="",!d.options.singleSelect&&d.options.checkboxHeader&&(o=''),d.header.stateField=G.field),G.radio&&(o="",d.header.stateField=G.field),!o&&G.showSelectTitle&&(o+=s),h.push(o),h.push("
    "),h.push('
    '),h.push("
    "),h.push("")}}),i&&"right"===d.options.detailViewAlign&&h.push(i),h.push(""),h.length>3&&c.push(h.join(""))}),this.$header.html(c.join("")),this.$header.find("th[data-field]").each(function(h,e){fc["default"](e).data(f[fc["default"](e).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(j){var h=fc["default"](j.currentTarget);return d.options.detailView&&!h.parent().hasClass("bs-checkbox")&&h.closest(".bootstrap-table")[0]!==d.$container[0]?!1:void (d.options.sortable&&h.parent().data().sortable&&d.onSort(j))}),this.$header.children().children().off("keypress").on("keypress",function(j){if(d.options.sortable&&fc["default"](j.currentTarget).data().sortable){var h=j.keyCode||j.which;13===h&&d.onSort(j)}});var g=br.getEventName("resize.bootstrap-table",this.$el.attr("id"));fc["default"](window).off(g),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),fc["default"](window).on(g,function(){return d.resetView()})),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",function(j){j.stopPropagation();var h=fc["default"](j.currentTarget).prop("checked");d[h?"checkAll":"uncheckAll"](),d.updateSelected()})}},{key:"initData",value:function(c,d){"append"===d?this.options.data=this.options.data.concat(c):"prepend"===d?this.options.data=[].concat(c).concat(this.options.data):(c=c||br.deepCopy(this.options.data),this.options.data=Array.isArray(c)?c:c[this.options.dataField]),this.data=fp(this.options.data),this.options.sortReset&&(this.unsortedData=fp(this.data)),"server"!==this.options.sidePagination&&this.initSort()}},{key:"initSort",value:function(){var d=this,f=this.options.sortName,c="desc"===this.options.sortOrder?-1:1,h=this.header.fields.indexOf(this.options.sortName),g=0;-1!==h?(this.options.sortStable&&this.data.forEach(function(i,j){i.hasOwnProperty("_position")||(i._position=j)}),this.options.customSort?br.calculateObjectValue(this.options,this.options.customSort,[this.options.sortName,this.options.sortOrder,this.data]):this.data.sort(function(m,i){d.header.sortNames[h]&&(f=d.header.sortNames[h]);var j=br.getItemField(m,f,d.options.escape),k=br.getItemField(i,f,d.options.escape),e=br.calculateObjectValue(d.header,d.header.sorters[h],[j,k,m,i]);return void 0!==e?d.options.sortStable&&0===e?c*(m._position-i._position):c*e:br.sort(j,k,c,d.options.sortStable,m._position,i._position)}),void 0!==this.options.sortClass&&(clearTimeout(g),g=setTimeout(function(){d.$el.removeClass(d.options.sortClass);var i=d.$header.find('[data-field="'.concat(d.options.sortName,'"]')).index();d.$el.find("tr td:nth-child(".concat(i+1,")")).addClass(d.options.sortClass)},250))):this.options.sortReset&&(this.data=fp(this.unsortedData))}},{key:"onSort",value:function(f){var g=f.type,d=f.currentTarget,j="keypress"===g?fc["default"](d):fc["default"](d).parent(),h=this.$header.find("th").eq(j.index());if(this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===j.data("field")){var c=this.options.sortOrder;void 0===c?this.options.sortOrder="asc":"asc"===c?this.options.sortOrder="desc":"desc"===this.options.sortOrder&&(this.options.sortOrder=this.options.sortReset?void 0:"asc"),void 0===this.options.sortOrder&&(this.options.sortName=void 0)}else{this.options.sortName=j.data("field"),this.options.rememberOrder?this.options.sortOrder="asc"===j.data("order")?"desc":"asc":this.options.sortOrder=this.columns[this.fieldsColumnsIndex[j.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[j.data("field")]].order}return this.trigger("sort",this.options.sortName,this.options.sortOrder),j.add(h).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination&&this.options.serverSort?(this.options.pageNumber=1,void this.initServer(this.options.silentSort)):(this.initSort(),void this.initBody())}},{key:"initToolbar",value:function(){var di,fn=this,ei=this.options,ee=[],ge=0,dn=0;this.$toolbar.find(".bs-bars").children().length&&fc["default"]("body").append(fc["default"](ei.toolbar)),this.$toolbar.html(""),("string"==typeof ei.toolbar||"object"===fD(ei.toolbar))&&fc["default"](br.sprintf('
    ',this.constants.classes.pull,ei.toolbarAlign)).appendTo(this.$toolbar).append(fc["default"](ei.toolbar)),ee=['
    ')],"string"==typeof ei.buttonsOrder&&(ei.buttonsOrder=ei.buttonsOrder.replace(/\[|\]| |'/g,"").split(",")),this.buttons=Object.assign(this.buttons,{search:{text:ei.formatSearch(),icon:ei.icons.search,render:!1,event:this.toggleShowSearch,attributes:{"aria-label":ei.formatShowSearch(),title:ei.formatShowSearch()}},paginationSwitch:{text:ei.pagination?ei.formatPaginationSwitchUp():ei.formatPaginationSwitchDown(),icon:ei.pagination?ei.icons.paginationSwitchDown:ei.icons.paginationSwitchUp,render:!1,event:this.togglePagination,attributes:{"aria-label":ei.formatPaginationSwitch(),title:ei.formatPaginationSwitch()}},refresh:{text:ei.formatRefresh(),icon:ei.icons.refresh,render:!1,event:this.refresh,attributes:{"aria-label":ei.formatRefresh(),title:ei.formatRefresh()}},toggle:{text:ei.formatToggle(),icon:ei.icons.toggleOff,render:!1,event:this.toggleView,attributes:{"aria-label":ei.formatToggleOn(),title:ei.formatToggleOn()}},fullscreen:{text:ei.formatFullscreen(),icon:ei.icons.fullscreen,render:!1,event:this.toggleFullscreen,attributes:{"aria-label":ei.formatFullscreen(),title:ei.formatFullscreen()}},columns:{render:!1,html:function s(){var e=[];if(e.push('
    \n \n ").concat(fn.constants.html.toolbarDropdown[0])),ei.showColumnsSearch&&(e.push(br.sprintf(fn.constants.html.toolbarDropdownItem,br.sprintf('',fn.constants.classes.input,ei.formatSearch()))),e.push(fn.constants.html.toolbarDropdownSeparator)),ei.showColumnsToggleAll){var d=fn.getVisibleColumns().length===fn.columns.filter(function(f){return !fn.isSelectionColumn(f)}).length;e.push(br.sprintf(fn.constants.html.toolbarDropdownItem,br.sprintf(' %s',d?'checked="checked"':"",ei.formatColumnsToggleAll()))),e.push(fn.constants.html.toolbarDropdownSeparator)}var c=0;return fn.columns.forEach(function(f){f.visible&&c++}),fn.columns.forEach(function(g,j){if(!fn.isSelectionColumn(g)&&(!ei.cardView||g.cardVisible)&&!g.ignore){var f=g.visible?' checked="checked"':"",h=c<=ei.minimumCountColumns&&f?' disabled="disabled"':"";g.switchable&&(e.push(br.sprintf(fn.constants.html.toolbarDropdownItem,br.sprintf(' %s',g.field,j,f,h,g.title))),dn++)}}),e.push(fn.constants.html.toolbarDropdown[1],"
    "),e.join("")}}});for(var eo={},ft=0,fa=Object.entries(this.buttons);ft"}eo[fo]=ea;var ct="show".concat(fo.charAt(0).toUpperCase()).concat(fo.substring(1)),es=ei[ct];!(!fi.hasOwnProperty("render")||fi.hasOwnProperty("render")&&fi.render)||void 0!==es&&es!==!0||(ei[ct]=!0),ei.buttonsOrder.includes(fo)||ei.buttonsOrder.push(fo)}var ai,Q=fg(ei.buttonsOrder);try{for(Q.s();!(ai=Q.n()).done;){var ce=ai.value,ae=ei["show".concat(ce.charAt(0).toUpperCase()).concat(ce.substring(1))];ae&&ee.push(eo[ce])}}catch(be){Q.e(be)}finally{Q.f()}ee.push("
    "),(this.showToolbar||ee.length>2)&&this.$toolbar.append(ee.join("")),ei.showSearch&&this.$toolbar.find('button[name="showSearch"]').off("click").on("click",function(){return fn.toggleShowSearch()});for(var cn=0,co=Object.entries(this.buttons);cn'),v=dt;if(ei.showSearchButton||ei.showSearchClearButton){var bn=(ei.showSearchButton?J:"")+(ei.showSearchClearButton?cs:"");v=ei.search?br.sprintf(this.constants.html.inputGroup,dt,bn):bn}ee.push(br.sprintf('\n
    \n %s\n
    \n '),v)),this.$toolbar.append(ee.join(""));var ba=br.getSearchInput(this);ei.showSearchButton?(this.$toolbar.find(".search button[name=search]").off("click").on("click",function(){clearTimeout(ge),ge=setTimeout(function(){fn.onSearch({currentTarget:ba})},ei.searchTimeOut)}),ei.searchOnEnterKey&&ao(ba)):ao(ba),ei.showSearchClearButton&&this.$toolbar.find(".search button[name=clearSearch]").click(function(){fn.resetSearch()})}else{if("string"==typeof ei.searchSelector){var i=br.getSearchInput(this);ao(i)}}}},{key:"onSearch",value:function(){var d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},f=d.currentTarget,c=d.firedByInitSearchText,h=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!0;if(void 0!==f&&fc["default"](f).length&&h){var g=fc["default"](f).val().trim();if(this.options.trimOnSearch&&fc["default"](f).val()!==g&&fc["default"](f).val(g),this.searchText===g){return}(f===br.getSearchInput(this)[0]||fc["default"](f).hasClass("search-input"))&&(this.searchText=g,this.options.searchText=g)}c||(this.options.pageNumber=1),this.initSearch(),c?"client"===this.options.sidePagination&&this.updatePagination():this.updatePagination(),this.trigger("search",this.searchText)}},{key:"initSearch",value:function(){var d=this;if(this.filterOptions=this.filterOptions||this.options.filterOptions,"server"!==this.options.sidePagination){if(this.options.customSearch){return this.data=br.calculateObjectValue(this.options,this.options.customSearch,[this.options.data,this.searchText,this.filterColumns]),void (this.options.sortReset&&(this.unsortedData=fp(this.data)))}var f=this.searchText&&(this.fromHtml?br.escapeHTML(this.searchText):this.searchText).toLowerCase(),c=br.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.options.searchAccentNeutralise&&(f=br.normalizeAccent(f)),"function"==typeof this.filterOptions.filterAlgorithm?this.data=this.options.data.filter(function(h){return d.filterOptions.filterAlgorithm.apply(null,[h,c])}):"string"==typeof this.filterOptions.filterAlgorithm&&(this.data=c?this.options.data.filter(function(j){var l=d.filterOptions.filterAlgorithm;if("and"===l){for(var k in c){if(Array.isArray(c[k])&&!c[k].includes(j[k])||!Array.isArray(c[k])&&j[k]!==c[k]){return !1}}}else{if("or"===l){var h=!1;for(var i in c){(Array.isArray(c[i])&&c[i].includes(j[i])||!Array.isArray(c[i])&&j[i]===c[i])&&(h=!0)}return h}}return !0}):fp(this.options.data));var g=this.getVisibleFields();this.data=f?this.data.filter(function(n,k){for(var A=0;A|=<|>=|>|<)(?:\s+)?(-?\d+)?|(-?\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm,x=C.exec(d.searchText),w=!1;if(x){var j=x[1]||"".concat(x[5],"l"),t=x[2]||x[3],B=parseInt(m,10),z=parseInt(t,10);switch(j){case">":case"z;break;case"<":case">l":w=z>B;break;case"<=":case"=<":case">=l":case"=>l":w=z>=B;break;case">=":case"=>":case"<=l":case"==z}}if(w||"".concat(m).toLowerCase().includes(f)){return !0}}}}}return !1}):this.data,this.options.sortReset&&(this.unsortedData=fp(this.data)),this.initSort()}}},{key:"initPagination",value:function(){var O=this,K=this.options;if(!K.pagination){return void this.$pagination.hide()}this.$pagination.show();var G,F,T,C,D,I,Q,L=[],B=!1,P=this.getData({includeHiddenRows:!1}),N=K.pageList;if("string"==typeof N&&(N=N.replace(/\[|\]| /g,"").toLowerCase().split(",")),N=N.map(function(c){return"string"==typeof c?c.toLowerCase()===K.formatAllRows().toLowerCase()||["all","unlimited"].includes(c.toLowerCase())?K.formatAllRows():+c:c}),this.paginationParts=K.paginationParts,"string"==typeof this.paginationParts&&(this.paginationParts=this.paginationParts.replace(/\[|\]| |'/g,"").split(",")),"server"!==K.sidePagination&&(K.totalRows=P.length),this.totalPages=0,K.totalRows&&(K.pageSize===K.formatAllRows()&&(K.pageSize=K.totalRows,B=!0),this.totalPages=~~((K.totalRows-1)/K.pageSize)+1,K.totalPages=this.totalPages),this.totalPages>0&&K.pageNumber>this.totalPages&&(K.pageNumber=this.totalPages),this.pageFrom=(K.pageNumber-1)*K.pageSize+1,this.pageTo=K.pageNumber*K.pageSize,this.pageTo>K.totalRows&&(this.pageTo=K.totalRows),this.options.pagination&&"server"!==this.options.sidePagination&&(this.options.totalNotFiltered=this.options.data.length),this.options.showExtendedPagination||(this.options.totalNotFiltered=void 0),(this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&L.push('
    ')),this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")){var E=this.paginationParts.includes("pageInfoShort")?K.formatDetailPagination(K.totalRows):K.formatShowingRows(this.pageFrom,this.pageTo,K.totalRows,K.totalNotFiltered);L.push('\n '.concat(E,"\n "))}if(this.paginationParts.includes("pageSize")){L.push('
    ');var M=['
    \n \n ").concat(this.constants.html.pageDropdown[0])];N.forEach(function(c,e){if(!K.smartDisplay||0===e||N[e-1]")),L.push(K.formatRecordsPerPage(M.join("")))}if((this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&L.push("
    "),this.paginationParts.includes("pageList")){L.push('
    '),br.sprintf(this.constants.html.pagination[0],br.sprintf(" pagination-%s",K.iconSize)),br.sprintf(this.constants.html.paginationItem," page-pre",K.formatSRPaginationPreText(),K.paginationPreText)),this.totalPagesthis.totalPages-F&&(F=F-(K.paginationSuccessivelySize-(this.totalPages-F))+1),1>F&&(F=1),T>this.totalPages&&(T=this.totalPages);var A=Math.round(K.paginationPagesBySide/2),R=function(c){var d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return br.sprintf(O.constants.html.paginationItem,d+(c===K.pageNumber?" ".concat(O.constants.classes.paginationActive):""),K.formatSRPaginationPageText(c),c)};if(F>1){var H=K.paginationPagesBySide;for(H>=F&&(H=F-1),G=1;H>=G;G++){L.push(R(G))}F-1===H+1?(G=F-1,L.push(R(G))):F-1>H&&(F-2*K.paginationPagesBySide>K.paginationPagesBySide&&K.paginationUseIntermediate?(G=Math.round((F-A)/2+A),L.push(R(G," page-intermediate"))):L.push(br.sprintf(this.constants.html.paginationItem," page-first-separator disabled","","...")))}for(G=F;T>=G;G++){L.push(R(G))}if(this.totalPages>T){var q=this.totalPages-(K.paginationPagesBySide-1);for(T>=q&&(q=T+1),T+1===q-1?(G=T+1,L.push(R(G))):q>T+1&&(this.totalPages-T>2*K.paginationPagesBySide&&K.paginationUseIntermediate?(G=Math.round((this.totalPages-A-T)/2+T),L.push(R(G," page-intermediate"))):L.push(br.sprintf(this.constants.html.paginationItem," page-last-separator disabled","","..."))),G=q;G<=this.totalPages;G++){L.push(R(G))}}L.push(br.sprintf(this.constants.html.paginationItem," page-next",K.formatSRPaginationNextText(),K.paginationNextText)),L.push(this.constants.html.pagination[1],"
    ")}this.$pagination.html(L.join(""));var z=["bottom","both"].includes(K.paginationVAlign)?" ".concat(this.constants.classes.dropup):"";if(this.$pagination.last().find(".page-list > div").addClass(z),!K.onlyInfoPagination&&(C=this.$pagination.find(".page-list a"),D=this.$pagination.find(".page-pre"),I=this.$pagination.find(".page-next"),Q=this.$pagination.find(".page-item").not(".page-next, .page-pre, .page-last-separator, .page-first-separator"),this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),K.smartDisplay&&(N.length<2||K.totalRows<=N[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"](),K.paginationLoop||(1===K.pageNumber&&D.addClass("disabled"),K.pageNumber===this.totalPages&&I.addClass("disabled")),B&&(K.pageSize=K.formatAllRows()),C.off("click").on("click",function(c){return O.onPageListChange(c)}),D.off("click").on("click",function(c){return O.onPagePre(c)}),I.off("click").on("click",function(c){return O.onPageNext(c)}),Q.off("click").on("click",function(c){return O.onPageNumber(c)}),this.options.showPageGo)){var j=this,t=this.$pagination.find("ul.pagination"),J=t.find("li.pageGo");J.length||(J=fl('
  • '+br.sprintf('',this.options.pageNumber)+('
  • ").appendTo(t),J.find("button").click(function(){var c=parseInt(J.find("input").val())||1;(1>c||c>j.options.totalPages)&&(c=1),j.selectPage(c)}))}}},{key:"updatePagination",value:function(c){c&&fc["default"](c.currentTarget).hasClass("disabled")||(this.options.maintainMetaData||this.resetRows(),this.initPagination(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize),"server"===this.options.sidePagination?this.initServer():this.initBody())}},{key:"onPageListChange",value:function(c){c.preventDefault();var d=fc["default"](c.currentTarget);return d.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive),this.options.pageSize=d.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+d.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(c),!1}},{key:"onPagePre",value:function(c){return c.preventDefault(),this.options.pageNumber-1===0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(c),!1}},{key:"onPageNext",value:function(c){return c.preventDefault(),this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(c),!1}},{key:"onPageNumber",value:function(c){return c.preventDefault(),this.options.pageNumber!==+fc["default"](c.currentTarget).text()?(this.options.pageNumber=+fc["default"](c.currentTarget).text(),this.updatePagination(c),!1):void 0}},{key:"initRow",value:function(G,X,M,L){var ae=this,J=[],Q={},Z=[],U="",F={},Y=[];if(!(br.findIndex(this.hiddenRows,G)>-1)){if(Q=br.calculateObjectValue(this.options,this.options.rowStyle,[G,X],Q),Q&&Q.css){for(var W=0,K=Object.entries(Q.css);W"),this.options.cardView&&J.push('
    '));var A="";return br.hasDetailViewIcon(this.options)&&(A="",br.calculateObjectValue(null,this.options.detailFilter,[X,G])&&(A+='\n \n '.concat(br.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen),"\n \n ")),A+=""),A&&"right"!==this.options.detailViewAlign&&J.push(A),this.header.fields.forEach(function(eo,dt){var dn="",ee=br.getItemField(G,eo,ae.options.escape),es="",de="",fe={},fa="",di=ae.header.classes[dt],et="",da="",fi="",ea="",co="",ct="",r=ae.columns[dt];if((!ae.fromHtml&&!ae.autoMergeCells||void 0!==ee||r.checkbox||r.radio)&&r.visible&&(!ae.options.cardView||r.cardVisible)){if(r.escape&&(ee=br.escapeHTML(ee)),Z.concat([ae.header.styles[dt]]).length&&(da+="".concat(Z.concat([ae.header.styles[dt]]).join("; "))),G["_".concat(eo,"_style")]&&(da+="".concat(G["_".concat(eo,"_style")])),da&&(et=' style="'.concat(da,'"')),G["_".concat(eo,"_id")]&&(fa=br.sprintf(' id="%s"',G["_".concat(eo,"_id")])),G["_".concat(eo,"_class")]&&(di=br.sprintf(' class="%s"',G["_".concat(eo,"_class")])),G["_".concat(eo,"_rowspan")]&&(ea=br.sprintf(' rowspan="%s"',G["_".concat(eo,"_rowspan")])),G["_".concat(eo,"_colspan")]&&(co=br.sprintf(' colspan="%s"',G["_".concat(eo,"_colspan")])),G["_".concat(eo,"_title")]&&(ct=br.sprintf(' title="%s"',G["_".concat(eo,"_title")])),fe=br.calculateObjectValue(ae.header,ae.header.cellStyles[dt],[ee,G,X,eo],fe),fe.classes&&(di=' class="'.concat(fe.classes,'"')),fe.css){for(var cs=[],ei=0,an=Object.entries(fe.css);ei$1",t=es&&/<(?=.*? .*?\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\/\1>/i.test(es);if(t){var bo=(new DOMParser).parseFromString(""+es,"text/html").documentElement.textContent,en=bo.replace(ci,cn);be=es.replace(RegExp("(>\\s*)(".concat(bo,")(\\s*)"),"gm"),"$1".concat(en,"$3"))}else{be=(""+es).replace(ci,cn)}es=br.calculateObjectValue(r,r.searchHighlightFormatter,[es,ae.searchText],be)}if(G["_".concat(eo,"_data")]&&!br.isEmptyObject(G["_".concat(eo,"_data")])){for(var fn=0,ao=Object.entries(G["_".concat(eo,"_data")]);fn'):'"))+'")+(ae.header.formatters[dt]&&"string"==typeof es?es:"")+(ae.options.cardView?"
    ":""),G[ae.header.stateField]=es===!0||!!ee||es&&es.checked}else{if(ae.options.cardView){var at=ae.options.showHeader?'").concat(br.getFieldTitle(ae.columns,eo),""):"";dn='
    '.concat(at,'").concat(es,"
    "),ae.options.smartDisplay&&""===es&&(dn='
    ')}else{dn="").concat(es,"")}}J.push(dn)}}),A&&"right"===this.options.detailViewAlign&&J.push(A),this.options.cardView&&J.push("
    "),J.push(""),J.join("")}}},{key:"initBody",value:function(m){var j=this,h=this.getData();this.trigger("pre-body",h),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=fc["default"]("").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=h.length);var f=[],d=fc["default"](document.createDocumentFragment()),k=!1;this.autoMergeCells=br.checkAutoMergeCells(h.slice(this.pageFrom-1,this.pageTo));for(var p=this.pageFrom-1;p'.concat(br.sprintf('%s',this.getVisibleFields().length+br.getDetailViewIndexOffset(this.options),this.options.formatNoMatches()),"")),m||this.scrollTo(0),this.initBodyEvent(),this.updateSelected(),this.initFooter(),this.resetView(),"server"!==this.options.sidePagination&&(this.options.totalRows=h.length),this.trigger("post-body",h)}},{key:"initBodyEvent",value:function(){var c=this;this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(v){var p=fc["default"](v.currentTarget),k=p.parent(),j=fc["default"](v.target).parents(".card-views").children(),y=fc["default"](v.target).parents(".card-view"),A=k.data("index"),g=c.data[A],m=c.options.cardView?j.index(y):p[0].cellIndex,x=c.getVisibleFields(),q=x[m-br.getDetailViewIndexOffset(c.options)],z=c.columns[c.fieldsColumnsIndex[q]],w=br.getItemField(g,q,c.options.escape);if(!p.find(".detail-icon").length){if(c.trigger("click"===v.type?"click-cell":"dbl-click-cell",q,w,g,p),c.trigger("click"===v.type?"click-row":"dbl-click-row",g,k,q),"click"===v.type&&c.options.clickToSelect&&z.clickToSelect&&!br.calculateObjectValue(c.options,c.options.ignoreClickToSelectOn,[v.target])){var t=k.find(br.sprintf('[name="%s"]',c.options.selectItemName));t.length&&t[0].click()}"click"===v.type&&c.options.detailViewByClick&&c.toggleDetailView(A,c.header.detailFormatters[c.fieldsColumnsIndex[q]])}}).off("mousedown").on("mousedown",function(d){c.multipleSelectRowCtrlKey=d.ctrlKey||d.metaKey,c.multipleSelectRowShiftKey=d.shiftKey}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(d){return d.preventDefault(),c.toggleDetailView(fc["default"](d.currentTarget).parent().parent().data("index")),!1}),this.$selectItem=this.$body.find(br.sprintf('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",function(f){f.stopImmediatePropagation();var d=fc["default"](f.currentTarget);c._toggleCheck(d.prop("checked"),d.data("index"))}),this.header.events.forEach(function(j,f){var l=j;if(l){"string"==typeof l&&(l=br.calculateObjectValue(null,l));var k=c.header.fields[f],d=c.getVisibleFields().indexOf(k);if(-1!==d){d+=br.getDetailViewIndexOffset(c.options);var g=function(n){if(!l.hasOwnProperty(n)){return"continue"}var m=l[n];c.$body.find(">tr:not(.no-records-found)").each(function(v,p){var q=fc["default"](p),e=q.find(c.options.cardView?".card-views>.card-view":">td").eq(d),t=n.indexOf(" "),o=n.substring(0,t),i=n.substring(t+1);e.find(i).off(o).on(o,function(w){var x=q.data("index"),r=c.data[x],u=r[k];m.apply(c,[w,u,r,x])})})};for(var h in l){g(h)}}}})}},{key:"initServer",value:function(x,p,k){var g=this,f={},v=this.header.fields.indexOf(this.options.sortName),y={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};if(this.header.sortNames[v]&&(y.sortName=this.header.sortNames[v]),this.options.pagination&&"server"===this.options.sidePagination&&(y.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,y.pageNumber=this.options.pageNumber),!this.options.firstLoad&&!firstLoadTable.includes(this.options.id)){return void firstLoadTable.push(this.options.id)}if(k||this.options.url||this.options.ajax){if("limit"===this.options.queryParamsType&&(y={search:y.searchText,sort:y.sortName,order:y.sortOrder},this.options.pagination&&"server"===this.options.sidePagination&&(y.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),y.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,0===y.limit&&delete y.limit)),this.options.search&&"server"===this.options.sidePagination&&this.columns.filter(function(c){return !c.searchable}).length){y.searchable=[];var d,j=fg(this.columns);try{for(j.s();!(d=j.n()).done;){var q=d.value;!q.checkbox&&q.searchable&&(this.options.visibleSearch&&q.visible||!this.options.visibleSearch)&&y.searchable.push(q.field)}}catch(m){j.e(m)}finally{j.f()}}if(br.isEmptyObject(this.filterColumnsPartial)||(y.filter=JSON.stringify(this.filterColumnsPartial,null)),fc["default"].extend(y,p||{}),f=br.calculateObjectValue(this.options,this.options.queryParams,[y],f),f!==!1){x||this.showLoading();var w=fc["default"].extend({},br.calculateObjectValue(null,this.options.ajaxOptions),{type:this.options.method,url:k||this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(f):f,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(l,h,n){var c=br.calculateObjectValue(g.options,g.options.responseHandler,[l,n],l);g.load(c),g.trigger("load-success",c,n&&n.status,n),x||g.hideLoading(),"server"===g.options.sidePagination&&c[g.options.totalField]>0&&!c[g.options.dataField].length&&g.updatePagination()},error:function(h){var c=[];"server"===g.options.sidePagination&&(c={},c[g.options.totalField]=0,c[g.options.dataField]=[]),g.load(c),g.trigger("load-error",h&&h.status,h),x||g.$tableLoading.hide()}});return this.options.ajax?br.calculateObjectValue(this,this.options.ajax,[w],null):(this._xhr&&4!==this._xhr.readyState&&this._xhr.abort(),this._xhr=fc["default"].ajax(w)),f}}}},{key:"initSearchText",value:function(){if(this.options.search&&(this.searchText="",""!==this.options.searchText)){var c=br.getSearchInput(this);c.val(this.options.searchText),this.onSearch({currentTarget:c,firedByInitSearchText:!0})}}},{key:"getCaret",value:function(){var c=this;this.$header.find("th").each(function(f,d){fc["default"](d).find(".sortable").removeClass("desc asc").addClass(fc["default"](d).data("field")===c.options.sortName?c.options.sortOrder:"both")})}},{key:"updateSelected",value:function(){var c=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",c),this.$selectItem.each(function(d,f){fc["default"](f).closest("tr")[fc["default"](f).prop("checked")?"addClass":"removeClass"]("selected")})}},{key:"updateRows",value:function(){var c=this;this.$selectItem.each(function(f,d){c.data[fc["default"](d).data("index")][c.header.stateField]=fc["default"](d).prop("checked")})}},{key:"resetRows",value:function(){var d,f=fg(this.data);try{for(f.s();!(d=f.n()).done;){var c=d.value;this.$selectAll.prop("checked",!1),this.$selectItem.prop("checked",!1),this.header.stateField&&(c[this.header.stateField]=!1)}}catch(g){f.e(g)}finally{f.f()}this.initHiddenRows()}},{key:"trigger",value:function(e){for(var d,j,h="".concat(e,".bs.table"),c=arguments.length,f=Array(c>1?c-1:0),g=1;c>g;g++){f[g-1]=arguments[g]}(d=this.options)[a.EVENTS[h]].apply(d,[].concat(f,[this])),this.$el.trigger(fc["default"].Event(h,{sender:this}),f),(j=this.options).onAll.apply(j,[h].concat([].concat(f,[this]))),this.$el.trigger(fc["default"].Event("all.bs.table",{sender:this}),[h,f])}},{key:"resetHeader",value:function(){var c=this;clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(function(){return c.fitHeader()},this.$el.is(":hidden")?100:0)}},{key:"fitHeader",value:function(){var x=this;if(this.$el.is(":hidden")){return void (this.timeoutId_=setTimeout(function(){return x.fitHeader()},100))}var p=this.$tableBody.get(0),k=p.scrollWidth>p.clientWidth&&p.scrollHeight>p.clientHeight+this.$header.outerHeight()?br.getScrollBarWidth():0;this.$el.css("margin-top",-this.$header.outerHeight());var g=fc["default"](":focus");if(g.length>0){var f=g.parents("th");if(f.length>0){var v=f.attr("data-field");if(void 0!==v){var y=this.$header.find("[data-field='".concat(v,"']"));y.length>0&&y.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css("margin-right",k).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),this.$tableLoading.css("width",this.$el.outerWidth());var d=fc["default"](".focus-temp:visible:eq(0)");d.length>0&&(d.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(h,c){x.$header_.find(br.sprintf('th[data-field="%s"]',fc["default"](c).data("field"))).data(fc["default"](c).data())});for(var j=this.getVisibleFields(),q=this.$header_.find("th"),m=this.$body.find(">tr:not(.no-records-found,.virtual-scroll-top)").eq(0);m.length&&m.find('>td[colspan]:not([colspan="1"])').length;){m=m.next()}var w=m.find("> *").length;m.find("> *").each(function(A,l){var C=fc["default"](l);if(br.hasDetailViewIcon(x.options)&&(0===A&&"right"!==x.options.detailViewAlign||A===w-1&&"right"===x.options.detailViewAlign)){var B=q.filter(".detail"),c=B.innerWidth()-B.find(".fht-cell").width();return void B.find(".fht-cell").width(C.innerWidth()-c)}var u=A-br.getDetailViewIndexOffset(x.options),z=x.$header_.find(br.sprintf('th[data-field="%s"]',j[u]));z.length>1&&(z=fc["default"](q[C[0].cellIndex]));var t=z.innerWidth()-z.find(".fht-cell").width();z.find(".fht-cell").width(C.innerWidth()-t)}),this.horizontalScroll(),this.trigger("post-header")}},{key:"initFooter",value:function(){if(this.options.showFooter&&!this.options.cardView){var s=this.getData(),H=[],D="";br.hasDetailViewIcon(this.options)&&(D='
    '),D&&"right"!==this.options.detailViewAlign&&H.push(D);var A,z=fg(this.columns);try{for(z.s();!(A=z.n()).done;){var L=A.value,v="",C="",J=[],E={},q=br.sprintf(' class="%s"',L["class"]);if(L.visible&&(!(this.footerData&&this.footerData.length>0)||L.field in this.footerData[0])){if(this.options.cardView&&!L.cardVisible){return}if(v=br.sprintf("text-align: %s; ",L.falign?L.falign:L.align),C=br.sprintf("vertical-align: %s; ",L.valign),E=br.calculateObjectValue(null,this.options.footerStyle,[L]),E&&E.css){for(var I=0,G=Object.entries(E.css);I0&&(B=this.footerData[0]["_".concat(L.field,"_colspan")]||0),B&&H.push(' colspan="'.concat(B,'" ')),H.push(">"),H.push('
    ');var j="";this.footerData&&this.footerData.length>0&&(j=this.footerData[0][L.field]||""),H.push(br.calculateObjectValue(L,L.footerFormatter,[s,j],j)),H.push("
    "),H.push('
    '),H.push("
    "),H.push("")}}}catch(k){z.e(k)}finally{z.f()}D&&"right"===this.options.detailViewAlign&&H.push(D),this.options.height||this.$tableFooter.length||(this.$el.append(""),this.$tableFooter=this.$el.find("tfoot")),this.$tableFooter.find("tr").length||this.$tableFooter.html("
    "),this.$tableFooter.find("tr").html(H.join("")),this.trigger("post-footer",this.$tableFooter)}}},{key:"fitFooter",value:function(){var f=this;if(this.$el.is(":hidden")){return void setTimeout(function(){return f.fitFooter()},100)}var g=this.$tableBody.get(0),d=g.scrollWidth>g.clientWidth&&g.scrollHeight>g.clientHeight+this.$header.outerHeight()?br.getScrollBarWidth():0;this.$tableFooter.css("margin-right",d).find("table").css("width",this.$el.outerWidth()).attr("class",this.$el.attr("class"));var j=this.$tableFooter.find("th"),h=this.$body.find(">tr:first-child:not(.no-records-found)");for(j.find(".fht-cell").width("auto");h.length&&h.find('>td[colspan]:not([colspan="1"])').length;){h=h.next()}var c=h.find("> *").length;h.find("> *").each(function(q,m){var t=fc["default"](m);if(br.hasDetailViewIcon(f.options)&&(0===q&&"left"===f.options.detailViewAlign||q===c-1&&"right"===f.options.detailViewAlign)){var n=j.filter(".detail"),p=n.innerWidth()-n.find(".fht-cell").width();return void n.find(".fht-cell").width(t.innerWidth()-p)}var k=j.eq(q),u=k.innerWidth()-k.find(".fht-cell").width();k.find(".fht-cell").width(t.innerWidth()-u)}),this.horizontalScroll()}},{key:"horizontalScroll",value:function(){var c=this;this.$tableBody.off("scroll").on("scroll",function(){var d=c.$tableBody.scrollLeft();c.options.showHeader&&c.options.height&&c.$tableHeader.scrollLeft(d),c.options.showFooter&&!c.options.cardView&&c.$tableFooter.scrollLeft(d),c.trigger("scroll-body",c.$tableBody)})}},{key:"getVisibleFields",value:function(){var f,g=[],d=fg(this.header.fields);try{for(d.s();!(f=d.n()).done;){var j=f.value,h=this.columns[this.fieldsColumnsIndex[j]];h&&h.visible&&g.push(j)}}catch(c){d.e(c)}finally{d.f()}return g}},{key:"initHiddenRows",value:function(){this.hiddenRows=[]}},{key:"getOptions",value:function(){var c=fc["default"].extend({},this.options);return delete c.data,fc["default"].extend(!0,{},c)}},{key:"refreshOptions",value:function(c){br.compareObjects(this.options,c,!0)||(this.options=fc["default"].extend(this.options,c),this.trigger("refresh-options",this.options),this.destroy(),this.init())}},{key:"getData",value:function(d){var f=this,c=this.options.data;if(!(this.searchText||this.options.customSearch||void 0!==this.options.sortName||this.enableCustomSort)&&br.isEmptyObject(this.filterColumns)&&br.isEmptyObject(this.filterColumnsPartial)||d&&d.unfiltered||(c=this.data),d&&d.useCurrentPage&&(c=c.slice(this.pageFrom-1,this.pageTo)),d&&!d.includeHiddenRows){var g=this.getHiddenRows();c=c.filter(function(e){return -1===br.findIndex(g,e)})}return d&&d.formatted&&c.forEach(function(k){for(var j=0,q=Object.entries(k);j=0;c--){var g=this.options.data[c];(g.hasOwnProperty(d.field)||"$index"===d.field)&&(!g.hasOwnProperty(d.field)&&"$index"===d.field&&d.values.includes(c)||d.values.includes(g[d.field]))&&(f++,this.options.data.splice(c,1))}f&&("server"===this.options.sidePagination&&(this.options.totalRows-=f,this.data=fp(this.options.data)),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},{key:"removeAll",value:function(){this.options.data.length>0&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"insertRow",value:function(c){c.hasOwnProperty("index")&&c.hasOwnProperty("row")&&(this.options.data.splice(c.index,0,c.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},{key:"updateRow",value:function(f){var g,d=Array.isArray(f)?f:[f],j=fg(d);try{for(j.s();!(g=j.n()).done;){var h=g.value;h.hasOwnProperty("index")&&h.hasOwnProperty("row")&&(h.hasOwnProperty("replace")&&h.replace?this.options.data[h.index]=h.row:fc["default"].extend(this.options.data[h.index],h.row))}}catch(c){j.e(c)}finally{j.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"getRowByUniqueId",value:function(f){var j,d,l,k=this.options.uniqueId,c=this.options.data.length,g=f,h=null;for(j=c-1;j>=0;j--){if(d=this.options.data[j],d.hasOwnProperty(k)){l=d[k]}else{if(!d._data||!d._data.hasOwnProperty(k)){continue}l=d._data[k]}if("string"==typeof l?g=""+g:"number"==typeof l&&(+l===l&&l%1===0?g=parseInt(g):l===+l&&0!==l&&(g=parseFloat(g))),l===g){h=d;break}}return h}},{key:"updateByUniqueId",value:function(f){var h,d=Array.isArray(f)?f:[f],k=fg(d);try{for(k.s();!(h=k.n()).done;){var j=h.value;if(j.hasOwnProperty("id")&&j.hasOwnProperty("row")){var c=this.options.data.indexOf(this.getRowByUniqueId(j.id));-1!==c&&(j.hasOwnProperty("replace")&&j.replace?this.options.data[c]=j.row:fc["default"].extend(this.options.data[c],j.row))}}}catch(g){k.e(g)}finally{k.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"removeByUniqueId",value:function(d){var f=this.options.data.length,c=this.getRowByUniqueId(d);c&&this.options.data.splice(this.options.data.indexOf(c),1),f!==this.options.data.length&&("server"===this.options.sidePagination&&(this.options.totalRows-=1,this.data=fp(this.options.data)),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"updateCell",value:function(c){c.hasOwnProperty("index")&&c.hasOwnProperty("field")&&c.hasOwnProperty("value")&&(this.data[c.index][c.field]=c.value,c.reinit!==!1&&(this.initSort(),this.initBody(!0)))}},{key:"updateCellByUniqueId",value:function(d){var f=this,c=Array.isArray(d)?d:[d];c.forEach(function(h){var g=h.id,k=h.field,j=h.value,e=f.options.data.indexOf(f.getRowByUniqueId(g));-1!==e&&(f.options.data[e][k]=j)}),d.reinit!==!1&&(this.initSort(),this.initBody(!0))}},{key:"showRow",value:function(c){this._toggleRow(c,!0)}},{key:"hideRow",value:function(c){this._toggleRow(c,!1)}},{key:"_toggleRow",value:function(d,f){var c;if(d.hasOwnProperty("index")?c=this.getData()[d.index]:d.hasOwnProperty("uniqueId")&&(c=this.getRowByUniqueId(d.uniqueId)),c){var g=br.findIndex(this.hiddenRows,c);f||-1!==g?f&&g>-1&&this.hiddenRows.splice(g,1):this.hiddenRows.push(c),this.initBody(!0),this.initPagination()}}},{key:"getHiddenRows",value:function(f){if(f){return this.initHiddenRows(),this.initBody(!0),void this.initPagination()}var h,d=this.getData(),k=[],j=fg(d);try{for(j.s();!(h=j.n()).done;){var c=h.value;this.hiddenRows.includes(c)&&k.push(c)}}catch(g){j.e(g)}finally{j.f()}return this.hiddenRows=k,k}},{key:"showColumn",value:function(d){var f=this,c=Array.isArray(d)?d:[d];c.forEach(function(e){f._toggleColumn(f.fieldsColumnsIndex[e],!0,!0)})}},{key:"hideColumn",value:function(d){var f=this,c=Array.isArray(d)?d:[d];c.forEach(function(e){f._toggleColumn(f.fieldsColumnsIndex[e],!1,!0)})}},{key:"_toggleColumn",value:function(d,f,c){if(-1!==d&&this.columns[d].visible!==f&&(this.columns[d].visible=f,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var g=this.$toolbar.find('.keep-open input:not(".toggle-all")').prop("disabled",!1);c&&g.filter(br.sprintf('[value="%s"]',d)).prop("checked",f),g.filter(":checked").length<=this.options.minimumCountColumns&&g.filter(":checked").prop("disabled",!0)}}},{key:"getVisibleColumns",value:function(){var c=this;return this.columns.filter(function(d){return d.visible&&!c.isSelectionColumn(d)})}},{key:"getHiddenColumns",value:function(){return this.columns.filter(function(c){var d=c.visible;return !d})}},{key:"isSelectionColumn",value:function(c){return c.radio||c.checkbox}},{key:"showAllColumns",value:function(){this._toggleAllColumns(!0)}},{key:"hideAllColumns",value:function(){this._toggleAllColumns(!1)}},{key:"_toggleAllColumns",value:function(f){var h,d=this,k=fg(this.columns.slice().reverse());try{for(k.s();!(h=k.n()).done;){var j=h.value;if(j.switchable){if(!f&&this.options.showColumns&&this.getVisibleColumns().length===this.options.minimumCountColumns){continue}j.visible=f}}}catch(c){k.e(c)}finally{k.f()}if(this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var g=this.$toolbar.find('.keep-open input[type="checkbox"]:not(".toggle-all")').prop("disabled",!1);f?g.prop("checked",f):g.get().reverse().forEach(function(i){g.filter(":checked").length>d.options.minimumCountColumns&&fc["default"](i).prop("checked",f)}),g.filter(":checked").length<=this.options.minimumCountColumns&&g.filter(":checked").prop("disabled",!0)}}},{key:"mergeCells",value:function(m){var j,h,f=m.index,d=this.getVisibleFields().indexOf(m.field),k=m.rowspan||1,p=m.colspan||1,c=this.$body.find(">tr");d+=br.getDetailViewIndexOffset(this.options);var g=c.eq(f).find(">td").eq(d);if(!(0>f||0>d||f>=this.data.length)){for(j=f;f+k>j;j++){for(h=d;d+p>h;h++){c.eq(j).find(">td").eq(h).hide()}}g.attr("rowspan",k).attr("colspan",p).show()}}},{key:"checkAll",value:function(){this._toggleCheckAll(!0)}},{key:"uncheckAll",value:function(){this._toggleCheckAll(!1)}},{key:"_toggleCheckAll",value:function(d){var f=this.getSelections();this.$selectAll.add(this.$selectAll_).prop("checked",d),this.$selectItem.filter(":enabled").prop("checked",d),this.updateRows(),this.updateSelected();var c=this.getSelections();return d?void this.trigger("check-all",c,f):void this.trigger("uncheck-all",c,f)}},{key:"checkInvert",value:function(){var c=this.$selectItem.filter(":enabled"),d=c.filter(":checked");c.each(function(f,g){fc["default"](g).prop("checked",!fc["default"](g).prop("checked"))}),this.updateRows(),this.updateSelected(),this.trigger("uncheck-some",d),d=this.getSelections(),this.trigger("check-some",d)}},{key:"check",value:function(c){this._toggleCheck(!0,c)}},{key:"uncheck",value:function(c){this._toggleCheck(!1,c)}},{key:"_toggleCheck",value:function(A,v){var p=this.$selectItem.filter('[data-index="'.concat(v,'"]')),k=this.data[v];if(p.is(":radio")||this.options.singleSelect||this.options.multipleSelectRow&&!this.multipleSelectRowCtrlKey&&!this.multipleSelectRowShiftKey){var j,y=fg(this.options.data);try{for(y.s();!(j=y.n()).done;){var g=j.value;g[this.header.stateField]=!1}}catch(m){y.e(m)}finally{y.f()}this.$selectItem.filter(":checked").not(p).prop("checked",!1)}if(k[this.header.stateField]=A,this.options.multipleSelectRow){if(this.multipleSelectRowShiftKey&&this.multipleSelectRowLastSelectedIndex>=0){for(var x=this.multipleSelectRowLastSelectedIndexs;s++){this.data[s][this.header.stateField]=!0,this.$selectItem.filter('[data-index="'.concat(s,'"]')).prop("checked",!0)}}this.multipleSelectRowCtrlKey=!1,this.multipleSelectRowShiftKey=!1,this.multipleSelectRowLastSelectedIndex=A?v:-1}p.prop("checked",A),this.updateSelected(),this.trigger(A?"check":"uncheck",this.data[v],p)}},{key:"checkBy",value:function(c){this._toggleCheckBy(!0,c)}},{key:"uncheckBy",value:function(c){this._toggleCheckBy(!1,c)}},{key:"_toggleCheckBy",value:function(d,f){var c=this;if(f.hasOwnProperty("field")&&f.hasOwnProperty("values")){var g=[];this.data.forEach(function(i,e){if(!i.hasOwnProperty(f.field)){return !1}if(f.values.includes(i[f.field])){var h=c.$selectItem.filter(":enabled").filter(br.sprintf('[data-index="%s"]',e));if(h=d?h.not(":checked"):h.filter(":checked"),!h.length){return}h.prop("checked",d),i[c.header.stateField]=d,g.push(i),c.trigger(d?"check":"uncheck",i,h)}}),this.updateSelected(),this.trigger(d?"check-some":"uncheck-some",g)}}},{key:"refresh",value:function(c){c&&c.url&&(this.options.url=c.url),c&&c.pageNumber&&(this.options.pageNumber=c.pageNumber),c&&c.pageSize&&(this.options.pageSize=c.pageSize),table.rememberSelecteds={},table.rememberSelectedIds={},this.trigger("refresh",this.initServer(c&&c.silent,c&&c.query,c&&c.url))}},{key:"destroy",value:function(){this.$el.insertBefore(this.$container),fc["default"](this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")}},{key:"resetView",value:function(f){var j=0;if(f&&f.height&&(this.options.height=f.height),this.$selectAll.prop("checked",this.$selectItem.length>0&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.$tableContainer.toggleClass("has-card-view",this.options.cardView),!this.options.cardView&&this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),j+=this.$header.outerHeight(!0)+1):(this.$tableHeader.hide(),this.trigger("post-header")),!this.options.cardView&&this.options.showFooter&&(this.$tableFooter.show(),this.fitFooter(),this.options.height&&(j+=this.$tableFooter.outerHeight(!0))),this.$container.hasClass("fullscreen")){this.$tableContainer.css("height",""),this.$tableContainer.css("width","")}else{if(this.options.height){this.$tableBorder&&(this.$tableBorder.css("width",""),this.$tableBorder.css("height",""));var d=this.$toolbar.outerHeight(!0),l=this.$pagination.outerHeight(!0),k=this.options.height-d-l,c=this.$tableBody.find(">table"),g=c.outerHeight();if(this.$tableContainer.css("height","".concat(k,"px")),this.$tableBorder&&c.is(":visible")){var h=k-g-2;this.$tableBody[0].scrollWidth-this.$tableBody.innerWidth()&&(h-=br.getScrollBarWidth()),this.$tableBorder.css("width","".concat(c.outerWidth(),"px")),this.$tableBorder.css("height","".concat(h,"px"))}}}this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),this.$tableFooter.hide()):(this.getCaret(),this.$tableContainer.css("padding-bottom","".concat(j,"px"))),this.trigger("reset-view")}},{key:"showLoading",value:function(){this.$tableLoading.toggleClass("open",!0);var c=this.options.loadingFontSize;"auto"===this.options.loadingFontSize&&(c=0.04*this.$tableLoading.width(),c=Math.max(12,c),c=Math.min(32,c),c="".concat(c,"px")),this.$tableLoading.find(".loading-text").css("font-size",c)}},{key:"hideLoading",value:function(){this.$tableLoading.toggleClass("open",!1)}},{key:"toggleShowSearch",value:function(){this.$el.parents(".select-table").siblings().slideToggle()}},{key:"togglePagination",value:function(){this.options.pagination=!this.options.pagination;var c=this.options.showButtonIcons?this.options.pagination?this.options.icons.paginationSwitchDown:this.options.icons.paginationSwitchUp:"",d=this.options.showButtonText?this.options.pagination?this.options.formatPaginationSwitchUp():this.options.formatPaginationSwitchDown():"";this.$toolbar.find('button[name="paginationSwitch"]').html("".concat(br.sprintf(this.constants.html.icon,this.options.iconsPrefix,c)," ").concat(d)),this.updatePagination()}},{key:"toggleFullscreen",value:function(){this.$el.closest(".bootstrap-table").toggleClass("fullscreen"),this.resetView()}},{key:"toggleView",value:function(){this.options.cardView=!this.options.cardView,this.initHeader();var c=this.options.showButtonIcons?this.options.cardView?this.options.icons.toggleOn:this.options.icons.toggleOff:"",d=this.options.showButtonText?this.options.cardView?this.options.formatToggleOff():this.options.formatToggleOn():"";this.$toolbar.find('button[name="toggle"]').html("".concat(br.sprintf(this.constants.html.icon,this.options.iconsPrefix,c)," ").concat(d)),this.initBody(),this.trigger("toggle",this.options.cardView)}},{key:"resetSearch",value:function(c){var d=br.getSearchInput(this);d.val(c||""),this.onSearch({currentTarget:d})}},{key:"filterBy",value:function(c,d){this.filterOptions=br.isEmptyObject(d)?this.options.filterOptions:fc["default"].extend(this.options.filterOptions,d),this.filterColumns=br.isEmptyObject(c)?{}:c,this.options.pageNumber=1,this.initSearch(),this.updatePagination()}},{key:"scrollTo",value:function b(c){var d={unit:"px",value:0};"object"===fD(c)?d=Object.assign(d,c):"string"==typeof c&&"bottom"===c?d.value=this.$tableBody[0].scrollHeight:("string"==typeof c||"number"==typeof c)&&(d.value=c);var f=d.value;"rows"===d.unit&&(f=0,this.$body.find("> tr:lt(".concat(d.value,")")).each(function(g,h){f+=fc["default"](h).outerHeight(!0)})),this.$tableBody.scrollTop(f)}},{key:"getScrollPosition",value:function(){return this.$tableBody.scrollTop()}},{key:"selectPage",value:function(c){c>0&&c<=this.options.totalPages&&(this.options.pageNumber=c,this.updatePagination())}},{key:"prevPage",value:function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())}},{key:"nextPage",value:function(){this.options.pageNumber tr[data-index="%s"]',d));c.next().is("tr.detail-view")?this.collapseRow(d):this.expandRow(d,f),this.resetView()}},{key:"expandRow",value:function(f,h){var d=this.data[f],k=this.$body.find(br.sprintf('> tr[data-index="%s"][data-has-detail-view]',f));if(!k.next().is("tr.detail-view")){this.options.detailViewIcon&&k.find("a.detail-icon").html(br.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailClose)),k.after(br.sprintf('',k.children("td").length));var j=k.next().find("td"),c=h||this.options.detailFormatter,g=br.calculateObjectValue(this.options,c,[f,d,j],"");1===j.length&&j.append(g),this.trigger("expand-row",f,d,j)}}},{key:"expandRowByUniqueId",value:function(c){var d=this.getRowByUniqueId(c);d&&this.expandRow(this.data.indexOf(d))}},{key:"collapseRow",value:function(d){var f=this.data[d],c=this.$body.find(br.sprintf('> tr[data-index="%s"][data-has-detail-view]',d));c.next().is("tr.detail-view")&&(this.options.detailViewIcon&&c.find("a.detail-icon").html(br.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen)),this.trigger("collapse-row",d,f,c.next()),c.next().remove())}},{key:"collapseRowByUniqueId",value:function(c){var d=this.getRowByUniqueId(c);d&&this.collapseRow(this.data.indexOf(d))}},{key:"expandAllRows",value:function(){for(var c=this.$body.find("> tr[data-index][data-has-detail-view]"),d=0;d tr[data-index][data-has-detail-view]"),d=0;d1?d-1:0),f=1;d>f;f++){g[f-1]=arguments[f]}var b;return this.each(function(j,k){var h=fc["default"](k).data("bootstrap.table"),i=fc["default"].extend({},d5.DEFAULTS,fc["default"](k).data(),"object"===fD(c)&&c);if("string"==typeof c){var a;if(!fb.METHODS.includes(c)){throw Error("Unknown method: ".concat(c))}if(!h){return}b=(a=h)[c].apply(a,g),"destroy"===c&&fc["default"](k).removeData("bootstrap.table")}h||(h=new fc["default"].BootstrapTable(k,i),fc["default"](k).data("bootstrap.table",h),h.init())}),void 0===b?this:b},fc["default"].fn.bootstrapTable.Constructor=d5,fc["default"].fn.bootstrapTable.theme=fb.THEME,fc["default"].fn.bootstrapTable.VERSION=fb.VERSION,fc["default"].fn.bootstrapTable.defaults=d5.DEFAULTS,fc["default"].fn.bootstrapTable.columnDefaults=d5.COLUMN_DEFAULTS,fc["default"].fn.bootstrapTable.events=d5.EVENTS,fc["default"].fn.bootstrapTable.locales=d5.LOCALES,fc["default"].fn.bootstrapTable.methods=d5.METHODS,fc["default"].fn.bootstrapTable.utils=br,fc["default"](function(){fc["default"]('[data-toggle="table"]').bootstrapTable()}),d5});var TABLE_EVENTS="all.bs.table click-cell.bs.table dbl-click-cell.bs.table click-row.bs.table dbl-click-row.bs.table sort.bs.table check.bs.table uncheck.bs.table onUncheck check-all.bs.table uncheck-all.bs.table check-some.bs.table uncheck-some.bs.table load-success.bs.table load-error.bs.table column-switch.bs.table page-change.bs.table search.bs.table toggle.bs.table show-search.bs.table expand-row.bs.table collapse-row.bs.table refresh-options.bs.table reset-view.bs.table refresh.bs.table",firstLoadTable=[],union=function(a,b){return $.isPlainObject(b)?addRememberRow(a,b):$.isArray(b)?$.each(b,function(d,c){$.isPlainObject(c)?addRememberRow(a,c):-1==$.inArray(c,a)&&(a[a.length]=c)}):-1==$.inArray(b,a)&&(a[a.length]=b),a},difference=function(b,c){if($.isPlainObject(c)){removeRememberRow(b,c)}else{if($.isArray(c)){$.each(c,function(f,d){if($.isPlainObject(d)){removeRememberRow(b,d)}else{var g=$.inArray(d,b);-1!=g&&b.splice(g,1)}})}else{var a=$.inArray(c,b);-1!=a&&b.splice(a,1)}}return b},_={union:union,difference:difference}; \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js deleted file mode 100644 index 30fb316..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @author: Alec Fenichel - * @webSite: https://fenichelar.com - * @update: zhixin wen - */ - -const Utils = $.fn.bootstrapTable.utils - -$.extend($.fn.bootstrapTable.defaults, { - autoRefresh: false, - autoRefreshInterval: 60, - autoRefreshSilent: true, - autoRefreshStatus: true, - autoRefreshFunction: null -}) - -$.extend($.fn.bootstrapTable.defaults.icons, { - autoRefresh: { - bootstrap3: 'glyphicon-time icon-time', - materialize: 'access_time', - 'bootstrap-table': 'icon-clock' - }[$.fn.bootstrapTable.theme] || 'fa-clock' -}) - -$.extend($.fn.bootstrapTable.locales, { - formatAutoRefresh () { - return 'Auto Refresh' - } -}) - -$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales) - -$.BootstrapTable = class extends $.BootstrapTable { - init (...args) { - super.init(...args) - - if (this.options.autoRefresh && this.options.autoRefreshStatus) { - this.setupRefreshInterval() - } - } - - initToolbar (...args) { - if (this.options.autoRefresh) { - this.buttons = Object.assign(this.buttons, { - autoRefresh: { - html: ` - - `, - event: this.toggleAutoRefresh - } - }) - } - - super.initToolbar(...args) - } - - toggleAutoRefresh () { - if (this.options.autoRefresh) { - if (this.options.autoRefreshStatus) { - clearInterval(this.options.autoRefreshFunction) - this.$toolbar.find('>.columns .auto-refresh') - .removeClass(this.constants.classes.buttonActive) - } else { - this.setupRefreshInterval() - this.$toolbar.find('>.columns .auto-refresh') - .addClass(this.constants.classes.buttonActive) - } - this.options.autoRefreshStatus = !this.options.autoRefreshStatus - } - } - - destroy () { - if (this.options.autoRefresh && this.options.autoRefreshStatus) { - clearInterval(this.options.autoRefreshFunction) - } - - super.destroy() - } - - setupRefreshInterval () { - this.options.autoRefreshFunction = setInterval(() => { - if (!this.options.autoRefresh || !this.options.autoRefreshStatus) { - return - } - this.refresh({ silent: this.options.autoRefreshSilent }) - }, this.options.autoRefreshInterval * 1000) - } -} diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js deleted file mode 100644 index d5ee887..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js +++ /dev/null @@ -1,404 +0,0 @@ -/** - * @author zhixin wen - */ - -const Utils = $.fn.bootstrapTable.utils - -// Reasonable defaults -const PIXEL_STEP = 10 -const LINE_HEIGHT = 40 -const PAGE_HEIGHT = 800 - -function normalizeWheel (event) { - let sX = 0 // spinX - let sY = 0 // spinY - let pX = 0 // pixelX - let pY = 0 // pixelY - - // Legacy - if ('detail' in event) { sY = event.detail } - if ('wheelDelta' in event) { sY = -event.wheelDelta / 120 } - if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120 } - if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120 } - - // side scrolling on FF with DOMMouseScroll - if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) { - sX = sY - sY = 0 - } - - pX = sX * PIXEL_STEP - pY = sY * PIXEL_STEP - - if ('deltaY' in event) { pY = event.deltaY } - if ('deltaX' in event) { pX = event.deltaX } - - if ((pX || pY) && event.deltaMode) { - if (event.deltaMode === 1) { // delta in LINE units - pX *= LINE_HEIGHT - pY *= LINE_HEIGHT - } else { // delta in PAGE units - pX *= PAGE_HEIGHT - pY *= PAGE_HEIGHT - } - } - - // Fall-back if spin cannot be determined - if (pX && !sX) { sX = (pX < 1) ? -1 : 1 } - if (pY && !sY) { sY = (pY < 1) ? -1 : 1 } - - return { - spinX: sX, - spinY: sY, - pixelX: pX, - pixelY: pY - } -} - -$.extend($.fn.bootstrapTable.defaults, { - fixedColumns: false, - fixedNumber: 0, - fixedRightNumber: 0 -}) - -$.BootstrapTable = class extends $.BootstrapTable { - - fixedColumnsSupported () { - return this.options.fixedColumns && - !this.options.detailView && - !this.options.cardView - } - - initContainer () { - super.initContainer() - - if (!this.fixedColumnsSupported()) { - return - } - - if (this.options.fixedNumber) { - this.$tableContainer.append('
    ') - this.$fixedColumns = this.$tableContainer.find('.fixed-columns') - } - - if (this.options.fixedRightNumber) { - this.$tableContainer.append('
    ') - this.$fixedColumnsRight = this.$tableContainer.find('.fixed-columns-right') - } - } - - initBody (...args) { - super.initBody(...args) - - if (this.$fixedColumns && this.$fixedColumns.length) { - this.$fixedColumns.toggle(this.fixedColumnsSupported()) - } - if (this.$fixedColumnsRight && this.$fixedColumnsRight.length) { - this.$fixedColumnsRight.toggle(this.fixedColumnsSupported()) - } - - if (!this.fixedColumnsSupported()) { - return - } - - if (this.options.showHeader && this.options.height) { - return - } - - this.initFixedColumnsBody() - this.initFixedColumnsEvents() - } - - trigger (...args) { - super.trigger(...args) - - if (!this.fixedColumnsSupported()) { - return - } - - if (args[0] === 'post-header') { - this.initFixedColumnsHeader() - } else if (args[0] === 'scroll-body') { - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedBody.scrollTop(this.$tableBody.scrollTop()) - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - this.$fixedBodyRight.scrollTop(this.$tableBody.scrollTop()) - } - } - } - - updateSelected () { - super.updateSelected() - - if (!this.fixedColumnsSupported()) { - return - } - - this.$tableBody.find('tr').each((i, el) => { - const $el = $(el) - const index = $el.data('index') - const classes = $el.attr('class') - - const inputSelector = `[name="${this.options.selectItemName}"]` - const $input = $el.find(inputSelector) - - if (typeof index === undefined) { - return - } - - const updateFixedBody = ($fixedHeader, $fixedBody) => { - const $tr = $fixedBody.find(`tr[data-index="${index}"]`) - - $tr.attr('class', classes) - - if ($input.length) { - $tr.find(inputSelector).prop('checked', $input.prop('checked')) - } - - if (this.$selectAll.length) { - $fixedHeader.add($fixedBody) - .find('[name="btSelectAll"]') - .prop('checked', this.$selectAll.prop('checked')) - } - } - - if (this.$fixedBody && this.options.fixedNumber) { - updateFixedBody(this.$fixedHeader, this.$fixedBody) - } - - if (this.$fixedBodyRight && this.options.fixedRightNumber) { - updateFixedBody(this.$fixedHeaderRight, this.$fixedBodyRight) - } - }) - } - - hideLoading () { - super.hideLoading() - - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedColumns.find('.fixed-table-loading').hide() - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - this.$fixedColumnsRight.find('.fixed-table-loading').hide() - } - } - - initFixedColumnsHeader () { - if (this.options.height) { - this.needFixedColumns = this.$tableHeader.outerWidth(true) < this.$tableHeader.find('table').outerWidth(true) - } else { - this.needFixedColumns = this.$tableBody.outerWidth(true) < this.$tableBody.find('table').outerWidth(true) - } - - const initFixedHeader = ($fixedColumns, isRight) => { - $fixedColumns.find('.fixed-table-header').remove() - $fixedColumns.append(this.$tableHeader.clone(true)) - - $fixedColumns.css({ - width: this.getFixedColumnsWidth(isRight) - }) - return $fixedColumns.find('.fixed-table-header') - } - - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedHeader = initFixedHeader(this.$fixedColumns) - this.$fixedHeader.css('margin-right', '') - } else if (this.$fixedColumns) { - this.$fixedColumns.html('').css('width', '') - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - this.$fixedHeaderRight = initFixedHeader(this.$fixedColumnsRight, true) - this.$fixedHeaderRight.scrollLeft(this.$fixedHeaderRight.find('table').width()) - } else if (this.$fixedColumnsRight) { - this.$fixedColumnsRight.html('').css('width', '') - } - - this.initFixedColumnsBody() - this.initFixedColumnsEvents() - } - - initFixedColumnsBody () { - const initFixedBody = ($fixedColumns, $fixedHeader) => { - $fixedColumns.find('.fixed-table-body').remove() - $fixedColumns.append(this.$tableBody.clone(true)) - - const $fixedBody = $fixedColumns.find('.fixed-table-body') - - const tableBody = this.$tableBody.get(0) - const scrollHeight = tableBody.scrollWidth > tableBody.clientWidth ? - Utils.getScrollBarWidth() : 0 - const height = this.$tableContainer.outerHeight(true) - scrollHeight - 1 - - $fixedColumns.css({ - height - }) - - $fixedBody.css({ - height: height - $fixedHeader.height() - }) - - return $fixedBody - } - - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedBody = initFixedBody(this.$fixedColumns, this.$fixedHeader) - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - this.$fixedBodyRight = initFixedBody(this.$fixedColumnsRight, this.$fixedHeaderRight) - this.$fixedBodyRight.scrollLeft(this.$fixedBodyRight.find('table').width()) - this.$fixedBodyRight.css('overflow-y', this.options.height ? 'auto' : 'hidden') - } - } - - getFixedColumnsWidth (isRight) { - let visibleFields = this.getVisibleFields() - let width = 0 - let fixedNumber = this.options.fixedNumber - let marginRight = 0 - - if (isRight) { - visibleFields = visibleFields.reverse() - fixedNumber = this.options.fixedRightNumber - marginRight = parseInt(this.$tableHeader.css('margin-right'), 10) - } - - for (let i = 0; i < fixedNumber; i++) { - width += this.$header.find(`th[data-field="${visibleFields[i]}"]`).outerWidth(true) - } - - return width + marginRight + 1 - } - - initFixedColumnsEvents () { - const toggleHover = (e, toggle) => { - const tr = `tr[data-index="${$(e.currentTarget).data('index')}"]` - let $trs = this.$tableBody.find(tr) - - if (this.$fixedBody) { - $trs = $trs.add(this.$fixedBody.find(tr)) - } - if (this.$fixedBodyRight) { - $trs = $trs.add(this.$fixedBodyRight.find(tr)) - } - - $trs.css('background-color', toggle ? $(e.currentTarget).css('background-color') : '') - } - - this.$tableBody.find('tr').hover(e => { - toggleHover(e, true) - }, e => { - toggleHover(e, false) - }) - - const isFirefox = typeof navigator !== 'undefined' && - navigator.userAgent.toLowerCase().indexOf('firefox') > -1 - const mousewheel = isFirefox ? 'DOMMouseScroll' : 'mousewheel' - const updateScroll = (e, fixedBody) => { - const normalized = normalizeWheel(e) - const deltaY = Math.ceil(normalized.pixelY) - const top = this.$tableBody.scrollTop() + deltaY - - if ( - deltaY < 0 && top > 0 || - deltaY > 0 && top < fixedBody.scrollHeight - fixedBody.clientHeight - ) { - e.preventDefault() - } - - this.$tableBody.scrollTop(top) - if (this.$fixedBody) { - this.$fixedBody.scrollTop(top) - } - if (this.$fixedBodyRight) { - this.$fixedBodyRight.scrollTop(top) - } - } - - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedBody.find('tr').hover(e => { - toggleHover(e, true) - }, e => { - toggleHover(e, false) - }) - - this.$fixedBody[0].addEventListener(mousewheel, e => { - updateScroll(e, this.$fixedBody[0]) - }) - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - this.$fixedBodyRight.find('tr').hover(e => { - toggleHover(e, true) - }, e => { - toggleHover(e, false) - }) - - this.$fixedBodyRight.off('scroll').on('scroll', () => { - const top = this.$fixedBodyRight.scrollTop() - - this.$tableBody.scrollTop(top) - if (this.$fixedBody) { - this.$fixedBody.scrollTop(top) - } - }) - } - - if (this.options.filterControl) { - $(this.$fixedColumns).off('keyup change').on('keyup change', e => { - const $target = $(e.target) - const value = $target.val() - const field = $target.parents('th').data('field') - const $coreTh = this.$header.find(`th[data-field="${field}"]`) - - if ($target.is('input')) { - $coreTh.find('input').val(value) - } else if ($target.is('select')) { - const $select = $coreTh.find('select') - - $select.find('option[selected]').removeAttr('selected') - $select.find(`option[value="${value}"]`).attr('selected', true) - } - - this.triggerSearch() - }) - } - } - - renderStickyHeader () { - if (!this.options.stickyHeader) { - return - } - - this.$stickyContainer = this.$container.find('.sticky-header-container') - super.renderStickyHeader() - - if (this.needFixedColumns && this.options.fixedNumber) { - this.$fixedColumns.css('z-index', 101) - .find('.sticky-header-container') - .css('right', '') - .width(this.$fixedColumns.outerWidth()) - } - - if (this.needFixedColumns && this.options.fixedRightNumber) { - const $stickyHeaderContainerRight = this.$fixedColumnsRight.find('.sticky-header-container') - - this.$fixedColumnsRight.css('z-index', 101) - $stickyHeaderContainerRight.css('left', '') - .scrollLeft($stickyHeaderContainerRight.find('.table').outerWidth()) - .width(this.$fixedColumnsRight.outerWidth()) - } - } - - matchPositionX () { - if (!this.options.stickyHeader) { - return - } - - this.$stickyContainer.eq(0).scrollLeft(this.$tableBody.scrollLeft()) - } -} diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css deleted file mode 100644 index 80135e0..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css +++ /dev/null @@ -1,663 +0,0 @@ -/*! X-editable - v1.5.1 -* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery -* http://github.com/vitalets/x-editable -* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ -.editableform { - margin-bottom: 0; /* overwrites bootstrap margin */ -} - -.editableform .control-group { - margin-bottom: 0; /* overwrites bootstrap margin */ - white-space: nowrap; /* prevent wrapping buttons on new line */ - line-height: 20px; /* overwriting bootstrap line-height. See #133 */ -} - -/* - BS3 width:1005 for inputs breaks editable form in popup - See: https://github.com/vitalets/x-editable/issues/393 -*/ -.editableform .form-control { - width: auto; -} - -.editable-buttons { - display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ - vertical-align: top; - margin-left: 7px; - /* inline-block emulation for IE7*/ - zoom: 1; - *display: inline; -} - -.editable-buttons.editable-buttons-bottom { - display: block; - margin-top: 7px; - margin-left: 0; -} - -.editable-input { - vertical-align: top; - display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ - width: auto; /* bootstrap-responsive has width: 100% that breakes layout */ - white-space: normal; /* reset white-space decalred in parent*/ - /* display-inline emulation for IE7*/ - zoom: 1; - *display: inline; -} - -.editable-buttons .editable-cancel { - margin-left: 7px; -} - -/*for jquery-ui buttons need set height to look more pretty*/ -.editable-buttons button.ui-button-icon-only { - height: 24px; - width: 30px; -} - -.editableform-loading { - background: url('loading.gif') center center no-repeat; - height: 25px; - width: auto; - min-width: 25px; -} - -.editable-inline .editableform-loading { - background-position: left 5px; -} - - .editable-error-block { - max-width: 300px; - margin: 5px 0 0 0; - width: auto; - white-space: normal; -} - -/*add padding for jquery ui*/ -.editable-error-block.ui-state-error { - padding: 3px; -} - -.editable-error { - color: red; -} - -/* ---- For specific types ---- */ - -.editableform .editable-date { - padding: 0; - margin: 0; - float: left; -} - -/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */ -.editable-inline .add-on .icon-th { - margin-top: 3px; - margin-left: 1px; -} - - -/* checklist vertical alignment */ -.editable-checklist label input[type="checkbox"], -.editable-checklist label span { - vertical-align: middle; - margin: 0; -} - -.editable-checklist label { - white-space: nowrap; -} - -/* set exact width of textarea to fit buttons toolbar */ -.editable-wysihtml5 { - width: 566px; - height: 250px; -} - -/* clear button shown as link in date inputs */ -.editable-clear { - clear: both; - font-size: 0.9em; - text-decoration: none; - text-align: right; -} - -/* IOS-style clear button for text inputs */ -.editable-clear-x { - background: url('clear.png') center center no-repeat; - display: block; - width: 13px; - height: 13px; - position: absolute; - opacity: 0.6; - z-index: 100; - - top: 50%; - right: 6px; - margin-top: -6px; - -} - -.editable-clear-x:hover { - opacity: 1; -} - -.editable-pre-wrapped { - white-space: pre-wrap; -} -.editable-container.editable-popup { - max-width: none !important; /* without this rule poshytip/tooltip does not stretch */ -} - -.editable-container.popover { - width: auto; /* without this rule popover does not stretch */ -} - -.editable-container.editable-inline { - display: inline-block; - vertical-align: middle; - width: auto; - /* inline-block emulation for IE7*/ - zoom: 1; - *display: inline; -} - -.editable-container.ui-widget { - font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */ - z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */ -} -.editable-click, -a.editable-click, -a.editable-click:hover { - text-decoration: none; - border-bottom: dashed 1px #0088cc; -} - -.editable-click.editable-disabled, -a.editable-click.editable-disabled, -a.editable-click.editable-disabled:hover { - color: #585858; - cursor: default; - border-bottom: none; -} - -.editable-empty, .editable-empty:hover, .editable-empty:focus{ - font-style: italic; - color: #DD1144; - /* border-bottom: none; */ - text-decoration: none; -} - -.editable-unsaved { - font-weight: bold; -} - -.editable-unsaved:after { -/* content: '*'*/ -} - -.editable-bg-transition { - -webkit-transition: background-color 1400ms ease-out; - -moz-transition: background-color 1400ms ease-out; - -o-transition: background-color 1400ms ease-out; - -ms-transition: background-color 1400ms ease-out; - transition: background-color 1400ms ease-out; -} - -/*see https://github.com/vitalets/x-editable/issues/139 */ -.form-horizontal .editable -{ - padding-top: 5px; - display:inline-block; -} - - -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ - -} -.datepicker-inline { - width: 220px; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; - top: -7px; - left: 6px; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - position: absolute; - top: -6px; - left: 7px; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; -} -.datepicker td, -.datepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - background-color: #fde19a; - background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); - background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); - background-image: linear-gradient(top, #fdd49a, #fdf59a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); - border-color: #fdf59a #fdf59a #fbed50; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #000; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled] { - background-color: #fdf59a; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active { - background-color: #fbf069 \9; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - background-color: #f3d17a; - background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); - background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); - background-image: linear-gradient(top, #f3c17a, #f3e97a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); - border-color: #f3e97a #f3e97a #edde34; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled] { - background-color: #f3e97a; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active { - background-color: #efe24b \9; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - background-color: #9e9e9e; - background-image: -moz-linear-gradient(top, #b3b3b3, #808080); - background-image: -ms-linear-gradient(top, #b3b3b3, #808080); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); - background-image: -webkit-linear-gradient(top, #b3b3b3, #808080); - background-image: -o-linear-gradient(top, #b3b3b3, #808080); - background-image: linear-gradient(top, #b3b3b3, #808080); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); - border-color: #808080 #808080 #595959; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled] { - background-color: #808080; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active { - background-color: #666666 \9; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-append.date .add-on i, -.input-prepend.date .add-on i { - display: block; - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-daterange .add-on { - display: inline-block; - width: auto; - min-width: 16px; - height: 18px; - padding: 4px 5px; - font-weight: normal; - line-height: 18px; - text-align: center; - text-shadow: 0 1px 0 #ffffff; - vertical-align: middle; - background-color: #eeeeee; - border: 1px solid #ccc; - margin-left: -5px; - margin-right: -5px; -} \ No newline at end of file diff --git a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js b/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js deleted file mode 100644 index ec9cf3e..0000000 --- a/supplier-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! X-editable - v1.5.1 -* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery -* http://github.com/vitalets/x-editable -* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ -!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(".editable-buttons");b.append(a.fn.editableform.buttons),"bottom"===this.options.showbuttons&&b.addClass("editable-buttons-bottom")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler("rendering"),this.initInput(),this.$form.find("div.editable-input").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(".editable-cancel").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled");var b=null===this.value||void 0===this.value||""===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler("rendered"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(b){var c,d=this.$form.find(".control-group"),e=this.$form.find(".editable-error-block");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(""+b).split("\n");for(var f=0;f").text(c[f]).html();b=c.join("
    ")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if("object"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),"string"==typeof d.msg)return this.error(d.msg),this.showForm(),void 0}else if(d)return this.error(d),this.showForm(),void 0;if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return this.$div.triggerHandler("nochange"),void 0;var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b="function"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),this.showForm(!1),void 0):"string"==typeof b?(this.error(b),this.showForm(),void 0):(b&&"object"==typeof b&&b.hasOwnProperty("newValue")&&(c=b.newValue),this.error(!1),this.value=c,this.$div.triggerHandler("save",{newValue:c,submitValue:e,response:a}),void 0)},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b="function"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):"string"==typeof a?a:a.responseText||a.statusText||"Unknown error!",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d="function"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!("function"==typeof this.options.url||this.options.url&&("always"===this.options.send||"auto"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||"",value:b,pk:d},"function"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),"function"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:"POST"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),"function"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),"value"===a&&this.setValue(b)},setValue:function(a,b){this.value=b?this.input.str2value(a):a,this.$form&&this.$form.is(":visible")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("editableform"),g="object"==typeof c&&c;f||e.data("editableform",f=new b(this,g)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:"auto",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='
    ',a.fn.editableform.loading='
    ',a.fn.editableform.buttons='',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass="editable-error",a.fn.editableform.engine="jquery"}(window.jQuery),function(a){"use strict";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}},tryParseJson:function(a,b){if("string"==typeof a&&a.length&&a.match(/^[\{\[].*[\}\]]$/))if(b)try{a=new Function("return "+a)()}catch(c){}finally{return a}else a=new Function("return "+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if("function"!=typeof d){var e=d||"value";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&"object"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&"object"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return"date"===f&&("inline"===b.mode?a.fn.editabletypes.datefield?f="datefield":a.fn.editabletypes.dateuifield&&(f="dateuifield"):a.fn.editabletypes.date?f="date":a.fn.editabletypes.dateui&&(f="dateui"),"date"!==f||a.fn.editabletypes.date||(f="combodate")),"datetime"===f&&"inline"===b.mode&&(f="datetimefield"),"wysihtml5"!==f||a.fn.editabletypes[f]||(f="textarea"),"function"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error("Unknown type: "+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(":visible")&&this.$element.hasClass("editable-open")){if(this.$form.data("editableform").isSaving)return this.delayedHide={reason:a},void 0;this.delayedHide=!1,this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",a||"manual")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(":visible")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler("save",b),this.hide("save")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform("option",a,b))},setContainerOption:function(a,b){this.call("option",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off("destroyed"),this.$element.removeData("editableContainer")},innerDestroy:function(){},closeOthers:function(b){a(".editable-open").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data("editableContainer");f&&("cancel"===f.options.onblur?e.data("editableContainer").hide("onblur"):"submit"===f.options.onblur&&e.data("editableContainer").tip().find("form").submit())}})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g="editableContainer",h=f.data(g),i="object"==typeof d&&d,j="inline"===i.mode?c:b;h||f.data(g,h=new j(this,i)),"string"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel",anim:!1,mode:"popup"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:"editableform",innerCss:".editable-inline",containerClass:"editable-container editable-inline",initContainer:function(){this.$tip=a(""),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr("id"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),this.value="string"==typeof this.options.value?this.input.str2value(this.options.value):this.options.value),this.$element.addClass("editable"),"textarea"===this.input.type&&this.$element.addClass("editable-pre-wrapped"),"manual"!==this.options.toggle?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),"mouseenter"===this.options.toggle)this.show();else{var b="click"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr("tabindex",-1),"function"==typeof this.options.display&&(this.options.autotext="always"),this.options.autotext){case"always":b=!0;break;case"auto":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext="never",this.$element.on(this.options.toggle+".editable",b,a.proxy(function(b){var c=a(b.target);c.data("editable")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):"function"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(this.isEmpty),"manual"!==this.options.toggle&&"-1"===this.$element.attr("tabindex")&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(this.isEmpty),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&"object"==typeof b?(a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)),void 0):(this.options[b]=c,"disabled"===b?c?this.disable():this.enable():("value"===b&&this.setValue(c),this.container&&this.container.option(b,c),this.input.option&&this.input.option(b,c),void 0))},handleEmpty:function(b){this.options.display!==!1&&(this.isEmpty=void 0!==b?b:"function"==typeof this.input.isEmpty?this.input.isEmpty(this.$element):""===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(":visible"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on("save.internal",a.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(":visible")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||"function"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css("background-color");d.css("background-color",this.options.highlight),setTimeout(function(){"transparent"===e&&(e=""),d.css("background-color",e),d.addClass("editable-bg-transition"),setTimeout(function(){d.removeClass("editable-bg-transition")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return"function"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){this.value=c?this.input.str2value(b):b,this.container&&this.container.option("value",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),"manual"!==this.options.toggle&&(this.$element.removeClass("editable-click"),this.$element.off(this.options.toggle+".editable")),this.$element.off("save.internal"),this.$element.removeClass("editable editable-open editable-disabled"),this.$element.removeData("editable")}},a.fn.editable=function(c){var d={},e=arguments,f="editable";switch(c){case"validate":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case"getValue":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case"submit":var g=arguments[1]||{},h=this,i=this.editable("validate");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data("editable"),l={name:k.options.name||"",value:k.input.value2submit(k.value),pk:"function"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};"function"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:"POST"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable("getValue");j={url:g.url,data:m,type:"POST"}}j.success="function"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error="function"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else"function"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h="object"==typeof c&&c;return h&&h.selector?(g=new b(this,h),void 0):(g||d.data(f,g=new b(this,h)),"string"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1)),void 0)})},a.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null,emptyclass:"editable-empty",unsavedclass:"editable-unsaved",selector:null,highlight:"#FFFF80"}}(window.jQuery),function(a){"use strict";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?"text":"html"](a.trim(b))},html2value:function(b){return a("
    ").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a("
    ").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:"",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){"use strict";var b=function(){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){"function"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return b.call(this),void 0;try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return c.call(this),void 0}if("string"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),b.call(this),void 0;if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),f.err_callbacks.push(a.proxy(c,this)),void 0;f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:"get",cache:!1,dataType:"json",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),"string"==typeof this.options.prepend&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(){},makeArray:function(b){var c,d,e,f,g=[];if(!b||"string"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,"source"===a&&(this.sourceData=null),"prepend"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("text",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr("placeholder")},activate:function(){this.$input.is(":visible")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a(''),this.$input.after(this.$clear).css("padding-right",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css("position","relative"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(){if(this.$clear){var a=this.$input.val().length,b=this.$clear.is(":visible");a&&!b&&this.$clear.show(),!a&&b&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val("").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("textarea",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr("placeholder"),this.setAttr("rows"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest("form").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:"",inputclass:"input-large",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("select",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a("