Commit 37e4e354 by 侯昆

Merge branch 'master' of http://gitlab.coralcodes.com:30000/shil0009/cihai

# Conflicts:
#	serverside/cihai-core/src/test/java/com/dookay/cihai/core/CihaiCoreApplicationTests.java
2 parents 20de98eb 2286effe
Showing 512 changed files with 2082 additions and 18 deletions
/.idea/
/serverside/.idea/
/serverside/cihai.iml
/serverside/cihai-jsp/cihai-jsp.iml
/serverside/cihai-core/cihai-core.iml
/serverside/cihai-app/cihai-app.iml
/serverside/cihai-wechat/cihai-wechat.iml
# Eclipse project files
.classpath
.project
.settings/
# Intellij project files
*.iml
.idea/
# hibernate & Spring files
.myhibernatedata
hibernate.cfg.xml
hibernate.reveng.xml
.springBeans
# Others
target/
logs/
bak/
reports/
RemoteSystemsTempFiles/
Servers/
/src/main/webapp/WEB-INF/classes/*
/src/main/webapp/userfiles/*
.mymetadata
.checkstyle
.DS_Store
.tern-project
.war
.zip
.rar
.externalToolBuilders/
build/
*.bak
*.ldb
*.xls
*.orig
*/src/main/resources/rebel.xml
.vscode/
package com.dookay.cihai.app;
package com.dookay.cihai.admin;
import com.dookay.cihai.core.CiHaiCoreApplication;
import com.dookay.coral.common.core.CoralCommonCoreMarker;
import com.dookay.coral.common.web.CoralCommonWebMarker;
import org.mybatis.spring.annotation.MapperScan;
......@@ -21,22 +22,23 @@ import org.springframework.cache.annotation.EnableCaching;
scanBasePackageClasses = {
CoralCommonCoreMarker.class,
CoralCommonWebMarker.class,
CihaiCoreMarker.class,
CihaiAppApplication.class,
CihaiAdminApplication.class,
CiHaiCoreApplication.class
})
@ServletComponentScan(basePackageClasses = {
CoralCommonWebMarker.class,
CihaiAppApplication.class
CihaiAdminApplication.class,
CiHaiCoreApplication.class
})
@MapperScan(basePackageClasses = CihaiCoreMarker.class)
@MapperScan(basePackageClasses = CiHaiCoreApplication.class)
@EnableCaching
public class CihaiAppApplication extends SpringBootServletInitializer {
public class CihaiAdminApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(CihaiAppApplication.class);
return builder.sources(CihaiAdminApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(CihaiAppApplication.class, args);
SpringApplication.run(CihaiAdminApplication.class, args);
}
}
package com.dookay.cihai.app.config;
package com.dookay.cihai.admin.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......
package com.dookay.cihai.app.config;
package com.dookay.cihai.admin.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
......@@ -10,7 +10,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
* @author houkun
*/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
public class WebAdminConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
......
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* NO BUG ENJOY LIFE *
* *
****************************************/
package com.dookay.cihai.admin.controller;
import com.dookay.cihai.admin.controller.form.ThemeForm;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
import com.dookay.cihai.core.theme.query.ThemeQuery;
import com.dookay.cihai.core.theme.service.IThemeService;
import com.dookay.coral.common.core.persistence.pager.PageList;
import com.dookay.coral.common.web.constant.MediaTypes;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 石磊
* @date 2017/12/6
*/
@RestController
@RequestMapping("/theme")
public class ThemeController extends BaseController {
@Autowired
private IThemeService themeService;
/**
* @author 石磊
* @date 2017/12/6
* @description 专题列表
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
public JsonResult list(ThemeQuery q) {
PageList<ThemeDomain> list = themeService.getPageList(q);
return successResult(list);
}
/**
* @author 石磊
* @date 2017/12/6
* @description 主题详情
*/
@RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
public JsonResult detail(@PathVariable Long id) {
ThemeDomain themeDomain = themeService.get(id);
return successResult(themeDomain);
}
/**
* @author 石磊
* @date 2017/12/6
* @description 创建主题
*/
@RequestMapping(value = "/create", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult create(ThemeForm form) {
ThemeDomain themeDomain = form.toDomain();
themeService.create(themeDomain);
return successResult("success");
}
/**
* @author 石磊
* @date 2017/12/6
* @description 编辑主题
*/
@RequestMapping(value = "/edit", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult edit(ThemeForm form) {
ThemeDomain themeDomain = form.toDomain();
themeService.update(themeDomain);
return successResult("success");
}
/**
* @author 石磊
* @date 2017/12/6
* @description 删除主题
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult delete(@PathVariable Long id) {
themeService.delete(id);
return successResult("success");
}
}
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* NO BUG ENJOY LIFE *
* *
****************************************/
package com.dookay.cihai.admin.controller;
import com.dookay.cihai.admin.controller.form.WordForm;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.persistence.pager.PageList;
import com.dookay.coral.common.web.constant.MediaTypes;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 石磊
* @date 2017/12/6
*/
@RequestMapping("/word")
@RestController
public class WordController extends BaseController {
@Autowired
private IWordService wordService;
/**
* @author 石磊
* @date 2017/12/6
* @description 词条列表
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
public JsonResult list(WordQuery query) {
PageList<WordDomain> wordList = wordService.getPageList(query);
return successResult(wordList);
}
/**
* @author 石磊
* @date 2017/12/6
* @description 词条详情
*/
@RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
public JsonResult detail(@PathVariable Long id) {
WordDomain wordDomain = wordService.get(id);
return successResult(wordDomain);
}
/**
* @author 石磊
* @date 2017/12/6
* @description 创建词条
*/
@RequestMapping(value = "/create", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult create(WordForm form) {
WordDomain wordDomain = form.toDomain();
wordService.create(wordDomain);
return successResult("success");
}
/**
* @author 石磊
* @date 2017/12/6
* @description 编辑词条
*/
@RequestMapping(value = "/edit", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult edit(WordForm form) {
WordDomain wordDomain = form.toDomain();
wordService.update(wordDomain);
return successResult("success");
}
/**
* @author 石磊
* @date 2017/12/6
* @description 删除词条
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
public JsonResult delete(@PathVariable Long id) {
wordService.delete(id);
return successResult("success");
}
}
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* NO BUG ENJOY LIFE *
* *
****************************************/
package com.dookay.cihai.admin.controller.form;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
import com.dookay.coral.common.core.utils.bean.BeanMapper;
import lombok.Data;
import java.util.Date;
/**
* @author 石磊
* @date 2017/12/6
*/
@Data
public class ThemeForm {
private Long id;
/**
*
*/
private String title;
/**
*
*/
private String introduce;
/**
*
*/
private String basicInfo;
private Date updateTime = new Date();
public ThemeDomain toDomain() {
return BeanMapper.map(this, ThemeDomain.class);
}
}
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* NO BUG ENJOY LIFE *
* *
****************************************/
package com.dookay.cihai.admin.controller.form;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.bean.BeanMapper;
import lombok.Data;
import java.util.Date;
/**
* @author 石磊
* @date 2017/12/6
*/
@Data
public class WordForm {
private Long id;
/**
*
*/
private String word;
/**
*
*/
private String body;
/**
*
*/
private String baikePoster;
/**
*
*/
private String baikeVoice;
/**
*
*/
private String baikeDescription;
/**
*
*/
private String baikeParaphrase;
/**
*
*/
private String baikePhotos;
/**
*
*/
private String baikeVideo;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime=new Date();
/**
* 拼音
*/
private String wordSpell;
public WordDomain toDomain() {
return BeanMapper.map(this, WordDomain.class);
}
}
# 解决 springboot-devtool 影响 tk.mybatis.mapper 插件报错问题
# 详见: https://github.com/abel533/MyBatis-Spring-Boot/issues/5
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
restart.include.coralcommon=/coral-common-[\\w-\\.]+jar
restart.include.coraldemocore=/cihai-core[\\w-\\.]+jar
\ No newline at end of file
debug=false
# 数据库连接
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgof5ExfKmEZEjq+GuqEoHA8tkIftarLRzUDAxdQzJQtF57DF63gPJJkIZLcKa2t8jt5JC2SRdxERg1A/kx0BMCAwEAAQ==
# 日志
logging.level.root=info
logging.level.com.dookay.core=trace
# redis
spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 文件存储
coral.web.resource.mapping.uploads-inner=/uploads/*
coral.web.resource.mapping.uploads-mapping=/data/www/uploads/cihai
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ==
# 日志
logging.level.root=error
logging.level.com.dookay.coral.common.core=info
logging.level.com.dookay.coral.common.web=info
logging.level.com.dookay.front=info
logging.level.com.dookay.core=info
logging.file=/data/www/log/cihai.log
# redis
spring.redis.host=127.0.0.1
# 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/www/uploads/demo/
# 打开 gzip
server.compression.enabled=true
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ==
# 日志
logging.level.root=warn
logging.level.com.dookay.coral.common.core=debug
logging.level.com.dookay.coral.common.web=debug
logging.level.com.dookay.front=debug
logging.level.com.dookay.core=debug
logging.file=/data/www/log/cihai.log
# redis
spring.redis.host=127.0.0.1
# 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/www/uploads/demo/
# 打开 gzip
server.compression.enabled=true
# 通用配置
spring.profiles.active=dev
# druid性能相关配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=50
spring.datasource.druid.min-idle=5
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.validation-query=select 1
spring.datasource.druid.max-wait=5000
spring.datasource.druid.time-between-eviction-runs-millis=600000
spring.datasource.druid.min-evictable-idle-time-millis=1800000
# druid解密配置
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
spring.datasource.druid.filter.config.enabled=true
# 关闭druid监控
spring.datasource.druid.filter.stat.enabled=false
# mybatis插件配置
# 设置扫描 mapper xml路径
mapper.mappers=com.dookay.coral.common.core.persistence.Mapper
mybatis.mapper-locations=classpath*:mapper/*.xml
# jsp页面配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
# 错误页面
coral.web.view.error.not-found=404
coral.web.view.error.bad-request=400
coral.web.view.error.internal-error=500
coral.web.view.error.service=service
coral.web.view.error.other=other
......@@ -34,6 +34,10 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.dookay</groupId>
<artifactId>coral-builder</artifactId>
</dependency>
<!--开发工具-->
<dependency>
<groupId>com.hankcs</groupId>
......
......@@ -43,6 +43,11 @@
<artifactId>coral-common-web</artifactId>
<version>${dookay.common.version}</version>
</dependency>
<dependency>
<groupId>com.dookay</groupId>
<artifactId>coral-builder</artifactId>
<version>2.0</version>
</dependency>
<!--稻壳基础库-->
<!--项目内依赖-->
......
{
"presets": [
["env", {
"modules": false
}],
"stage-2"
],
"plugins": [
"transform-runtime",["component",[{
"libraryName": "element-ui",
"styleLibraryName": "theme-default"
}]]
],
"comments": false,
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["istanbul"]
}
}
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
build/*.js
config/*.js
// http://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parser: 'babel-eslint',
parserOptions: {
sourceType: 'module'
},
env: {
browser: true,
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
'html'
],
// add your custom rules here
'rules': {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
}
}
.DS_Store
node_modules/
dist/
npm-debug.log
yarn-error.log
test/unit/coverage
test/e2e/reports
selenium-debug.log
/.idea
/.idea
/.idea/workspace.xml
/.idea/vcs.xml
/.idea/modules.xml
/.idea/misc.xml
/.idea/jsLibraryMappings.xml
/.idea/copyright
/.idea/compiler.xml
/.idea/cofco-admin-web.iml
*.iml
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
// to edit target browsers: use "browserlist" field in package.json
"autoprefixer": {}
}
}
# 稻壳前端vue模板
> 稻壳管理后台皮肤vue版
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
```
For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
},
dev: {
env: require('./dev.env'),
port: 8081,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
},
'/upload': {
target: 'http://localhost:8080',
changeOrigin: true
}
},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
}
}
module.exports = {
NODE_ENV: '"production"'
}
var merge = require('webpack-merge')
var devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})
const gulp = require('gulp');
const plugins = require('gulp-load-plugins')();
const _ = require('lodash');
/**
* hello world
*/
gulp.task('default', function () {
console.log('hello world !');
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>九回运动场</title>
</head>
<body>
<div id="dk-app"></div>
<!-- built files will be auto injected -->
</body>
</html>
{
"name": "dookayVue",
"version": "1.0.0",
"description": "稻壳前端vue模板",
"author": "xiaopig",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
},
"dependencies": {
"bootstrap": "^3.3.7",
"echarts": "^3.4.0",
"element-ui": "^1.2.4",
"jquery": "^3.1.1",
"jquery-migrate": "^3.0.0",
"vue": "^2.2.2",
"vue-resource": "^1.2.1",
"vue-router": "^2.2.0",
"vuex": "^2.2.1",
"zepto": "^1.2.0"
},
"devDependencies": {
"alloyfinger": "^0.1.6",
"alloytouch": "^0.2.1",
"animate.css": "^3.5.2",
"autoprefixer": "^6.7.2",
"babel-core": "^6.22.1",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.10",
"babel-plugin-component": "^0.9.1",
"babel-plugin-istanbul": "^3.1.2",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-env": "^1.2.1",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"bootbox": "^4.4.0",
"bootstrap-colorpicker": "^2.5.1",
"bootstrap-confirmation": "0.0.2",
"bootstrap-maxlength": "^1.6.0",
"bootstrap-select": "^1.12.2",
"bootstrap-switch": "^3.3.4",
"bootstrap-tagsinput": "^0.7.1",
"bootstrap-timepicker": "^0.5.2",
"bootstrap-touchspin": "^3.1.1",
"bootstrap-vue": "^0.10.0-alpha.1",
"bxslider": "^4.2.11",
"chai": "^3.5.0",
"chalk": "^1.1.3",
"chromedriver": "^2.27.2",
"connect-history-api-fallback": "^1.3.0",
"copy-webpack-plugin": "^4.0.1",
"cropper": "^3.0.0-beta",
"cross-env": "^3.1.4",
"cross-spawn": "^5.0.1",
"css-loader": "^0.26.4",
"datatables.net": "^1.10.13",
"datatables.net-bs": "^1.10.13",
"devbridge-autocomplete": "^1.3.0",
"echarts": "^3.4.0",
"eslint": "^3.14.1",
"eslint-config-standard": "^6.2.1",
"eslint-friendly-formatter": "^2.0.7",
"eslint-loader": "^1.6.1",
"eslint-plugin-html": "^2.0.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^2.0.1",
"eventsource-polyfill": "^0.9.6",
"express": "^4.14.1",
"extract-text-webpack-plugin": "^2.0.0",
"file-loader": "^0.10.0",
"fine-uploader": "^5.14.1",
"flatpickr": "^2.4.4",
"framework7": "^1.5.4",
"friendly-errors-webpack-plugin": "^1.1.3",
"fullcalendar": "^3.2.0",
"function-bind": "^1.1.0",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.1",
"gulp-cache": "^0.4.5",
"gulp-changed": "^1.3.2",
"gulp-cheerio": "^0.6.2",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^2.3.2",
"gulp-concat": "^2.6.1",
"gulp-cssnano": "^2.1.2",
"gulp-file-include": "^1.0.0",
"gulp-gzip": "^1.4.0",
"gulp-imagemin": "^3.1.1",
"gulp-less": "^3.3.0",
"gulp-load-plugins": "^1.4.0",
"gulp-markdown": "^1.2.0",
"gulp-minify-html": "^1.0.6",
"gulp-postcss": "^6.3.0",
"gulp-pug": "^3.2.0",
"gulp-rename": "^1.2.2",
"gulp-ruby-sass": "^2.1.1",
"gulp-sass": "^3.1.0",
"gulp-sequence": "^0.4.6",
"gulp-sourcemaps": "^2.3.1",
"gulp-uglify": "^2.0.0",
"gulp-watch": "^4.3.11",
"gulp.spritesmith": "^6.3.0",
"hover.css": "^2.0.2",
"html-webpack-plugin": "^2.28.0",
"http-proxy-middleware": "^0.17.3",
"imagesloaded": "^4.1.1",
"inject-loader": "^2.0.1",
"jquery-lazyload": "^1.9.7",
"jquery-serializejson": "^2.8.1",
"jquery-ui": "^1.12.1",
"jquery-validation": "^1.16.0",
"jquery.cookie": "^1.4.1",
"jquery.inputmask": "^3.3.4",
"jquery.uniform": "^4.1.0",
"jstree": "^3.3.3",
"karma": "^1.4.1",
"karma-coverage": "^1.1.1",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.2",
"karma-sinon-chai": "^1.2.4",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.26",
"karma-webpack": "^2.0.2",
"lolex": "^1.5.2",
"masonry-layout": "^4.1.1",
"merge-stream": "^1.0.1",
"mocha": "^3.2.0",
"moment": "^2.17.1",
"multiselect": "^0.9.12",
"nestable": "^0.2.0",
"nightwatch": "^0.9.12",
"node-waves": "^0.7.5",
"noty": "^2.4.1",
"opn": "^4.0.2",
"optimize-css-assets-webpack-plugin": "^1.3.0",
"ora": "^1.1.0",
"pace-progress": "^1.0.2",
"particles.js": "^2.0.0",
"path": "^0.12.7",
"phantomjs-prebuilt": "^2.1.14",
"photoswipe": "^4.1.1",
"precss": "^1.4.0",
"qrcodejs": "^1.0.0",
"raty-js": "^2.7.1",
"require-dir": "^0.3.1",
"rimraf": "^2.6.0",
"scrollmagic": "^2.0.5",
"select2": "^4.0.3",
"selenium-server": "^3.0.1",
"semver": "^5.3.0",
"sinon": "^1.17.7",
"sinon-chai": "^2.8.0",
"swiper": "^3.4.2",
"twitter-bootstrap-wizard": "^1.2.0",
"url-loader": "^0.5.7",
"vinyl-buffer": "^1.0.0",
"vue-loader": "^11.1.4",
"vue-style-loader": "^2.0.0",
"vue-template-compiler": "^2.2.1",
"waypoints": "^4.0.1",
"webpack": "^2.2.1",
"webpack-bundle-analyzer": "^2.2.1",
"webpack-dev-middleware": "^1.10.0",
"webpack-hot-middleware": "^2.16.1",
"webpack-merge": "^2.6.1",
"webuploader": "^0.1.8",
"weui": "^1.1.1",
"zeroclipboard": "^2.3.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
<template>
<transition
enter-active-class="animated slideInUp"
leave-active-class="animated slideOutUp">
<router-view></router-view>
</transition>
</template>
<script>
export default {
name: 'dk-app'
}
</script>
<style>
.animated.container-fluid,
.animated.dk-login-wrapper{
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
</style>
This diff could not be displayed because it is too large.
.widget-box .widget-box-item{
padding: 15px;
margin-bottom: 20px;
border-radius: 4px;
background-color: #fff;
border:1px solid #ddd;
}
.widget-box h3{
margin-top: 15px;
}
.widget-box h4{
font-size: 14px;
}
.widget-circle-icon{
position: relative;
width: 80px;
height: 80px;
}
.widget-circle-icon .ion-record{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 1;
font-size: 80px;
line-height: 80px;
text-align: center;
}
.widget-circle-icon .ion{
font-size: 30px;
position: absolute;
top: 50%;
left: 50%;
z-index: 2;
width: 30px;
height: 30px;
text-align: center;
line-height: 30px;
margin: -15px 0 0 -15px;
color: #fff;
}
/* inline widget */
.widget-box-inline{
overflow: hidden;
padding-top: 10px;
padding-bottom: 10px;
}
.widget-box-inline .widget-box-item{
position: relative;
padding:10px;
}
.widget-box-inline .widget-box-item:after{
content: '';
position: absolute;
right: -1px;
top: 0;
width: 1px;
height: 100%;
background-color: #e9e9e9;
}
.widget-box-item h3{
margin-top: 15px;
margin-bottom: 15px;
color: #666;
}
.widget-box-inline .widget-box-item .ion{
margin-right: 15px;
transform: scale(1.3);
}
.widget-box-item h4{
font-weight: normal;
}
\ No newline at end of file
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
*{margin: 0;padding: 0;list-style: none;}
/*
KISSY CSS Reset
理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
特色:1. 适应中文;2. 基于最新主流浏览器。
维护:玉伯<lifesinger@gmail.com>, 正淳<ragecarrier@gmail.com>
*/
/** 清除内外边距 **/
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
pre, /* text formatting elements 文本格式元素 */
form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
th, td /* table elements 表格元素 */ {
margin: 0;
padding: 0;
}
/** 设置默认字体 **/
body,
button, input, select, textarea /* for ie */ {
font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
}
h1, h2, h3, h4, h5, h6 { font-size: 100%; }
address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
/** 重置列表元素 **/
ul, ol { list-style: none; }
/** 重置文本格式元素 **/
a { text-decoration: none; }
a:hover { text-decoration: underline; }
/** 重置表单元素 **/
legend { color: #000; } /* for ie6 */
fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
/* 注:optgroup 无法扶正 */
/** 重置表格元素 **/
table { border-collapse: collapse; border-spacing: 0; }
/* 清除浮动 */
.ks-clear:after, .clear:after {
content: '\20';
display: block;
height: 0;
clear: both;
}
.ks-clear, .clear {
*zoom: 1;
}
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
.helps{margin-top:40px;}
.helps pre{
padding:20px;
margin:10px 0;
border:solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists{
width: 100% !important;
}
.icon_lists li{
float:left;
width: 100px;
height:180px;
text-align: center;
list-style: none !important;
}
.icon_lists .icon{
font-size: 42px;
line-height: 100px;
margin: 10px 0;
color:#333;
-webkit-transition: font-size 0.25s ease-out 0s;
-moz-transition: font-size 0.25s ease-out 0s;
transition: font-size 0.25s ease-out 0s;
}
.icon_lists .icon:hover{
font-size: 100px;
}
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p,
.markdown pre {
margin: 1em 0;
}
.markdown > p,
.markdown > blockquote,
.markdown > .highlight,
.markdown > ol,
.markdown > ul {
width: 80%;
}
.markdown ul > li {
list-style: circle;
}
.markdown > ul li,
.markdown blockquote ul > li {
margin-left: 20px;
padding-left: 4px;
}
.markdown > ul li p,
.markdown > ol li p {
margin: 0.6em 0;
}
.markdown ol > li {
list-style: decimal;
}
.markdown > ol li,
.markdown blockquote ol > li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown pre {
border-radius: 6px;
background: #f7f7f7;
padding: 20px;
}
.markdown pre code {
border: none;
background: #f7f7f7;
margin: 0;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown > table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown > table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown > table th,
.markdown > table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown > table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
font-style: italic;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown > br,
.markdown > p > br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
pre{
background: #fff;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>IconFont</title>
<link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css">
</head>
<body>
<div class="main markdown">
<h1>IconFont 图标</h1>
<ul class="icon_lists clear">
<li>
<i class="icon iconfont icon-caiwu"></i>
<div class="name">财务</div>
<div class="fontclass">.icon-caiwu</div>
</li>
<li>
<i class="icon iconfont icon-cha"></i>
<div class="name"></div>
<div class="fontclass">.icon-cha</div>
</li>
<li>
<i class="icon iconfont icon-shangjia"></i>
<div class="name">商家</div>
<div class="fontclass">.icon-shangjia</div>
</li>
<li>
<i class="icon iconfont icon-icon19"></i>
<div class="name">添加</div>
<div class="fontclass">.icon-icon19</div>
</li>
<li>
<i class="icon iconfont icon-huojian"></i>
<div class="name">火箭</div>
<div class="fontclass">.icon-huojian</div>
</li>
<li>
<i class="icon iconfont icon-yijianfankui"></i>
<div class="name">意见反馈</div>
<div class="fontclass">.icon-yijianfankui</div>
</li>
<li>
<i class="icon iconfont icon-kaiguanguan-copy"></i>
<div class="name">开关 关</div>
<div class="fontclass">.icon-kaiguanguan-copy</div>
</li>
<li>
<i class="icon iconfont icon-time"></i>
<div class="name">时间</div>
<div class="fontclass">.icon-time</div>
</li>
<li>
<i class="icon iconfont icon-xiaoxi"></i>
<div class="name">消息</div>
<div class="fontclass">.icon-xiaoxi</div>
</li>
<li>
<i class="icon iconfont icon-anquan"></i>
<div class="name">安全</div>
<div class="fontclass">.icon-anquan</div>
</li>
<li>
<i class="icon iconfont icon-sousuo"></i>
<div class="name">搜索</div>
<div class="fontclass">.icon-sousuo</div>
</li>
<li>
<i class="icon iconfont icon-rizhi"></i>
<div class="name">日志</div>
<div class="fontclass">.icon-rizhi</div>
</li>
<li>
<i class="icon iconfont icon-calendar"></i>
<div class="name">日历</div>
<div class="fontclass">.icon-calendar</div>
</li>
<li>
<i class="icon iconfont icon-xiala"></i>
<div class="name">下拉</div>
<div class="fontclass">.icon-xiala</div>
</li>
<li>
<i class="icon iconfont icon-cuxiao"></i>
<div class="name">促销</div>
<div class="fontclass">.icon-cuxiao</div>
</li>
<li>
<i class="icon iconfont icon-xiangxiajiantou"></i>
<div class="name">向下箭头</div>
<div class="fontclass">.icon-xiangxiajiantou</div>
</li>
<li>
<i class="icon iconfont icon-tab-stadium-off"></i>
<div class="name">场馆</div>
<div class="fontclass">.icon-tab-stadium-off</div>
</li>
<li>
<i class="icon iconfont icon-tongzhi"></i>
<div class="name">通知</div>
<div class="fontclass">.icon-tongzhi</div>
</li>
<li>
<i class="icon iconfont icon-tubiaozhizuomoban"></i>
<div class="name">套餐</div>
<div class="fontclass">.icon-tubiaozhizuomoban</div>
</li>
<li>
<i class="icon iconfont icon-arrow-up"></i>
<div class="name"></div>
<div class="fontclass">.icon-arrow-up</div>
</li>
<li>
<i class="icon iconfont icon-shuju"></i>
<div class="name">数据</div>
<div class="fontclass">.icon-shuju</div>
</li>
<li>
<i class="icon iconfont icon-neirong"></i>
<div class="name">内容</div>
<div class="fontclass">.icon-neirong</div>
</li>
<li>
<i class="icon iconfont icon-renqun"></i>
<div class="name">人群</div>
<div class="fontclass">.icon-renqun</div>
</li>
<li>
<i class="icon iconfont icon-qiusai"></i>
<div class="name">球赛</div>
<div class="fontclass">.icon-qiusai</div>
</li>
<li>
<i class="icon iconfont icon-dianchangxinxi"></i>
<div class="name">店长信息</div>
<div class="fontclass">.icon-dianchangxinxi</div>
</li>
<li>
<i class="icon iconfont icon-xinxi"></i>
<div class="name">信息</div>
<div class="fontclass">.icon-xinxi</div>
</li>
<li>
<i class="icon iconfont icon-Shapex"></i>
<div class="name">Shape@2x</div>
<div class="fontclass">.icon-Shapex</div>
</li>
<li>
<i class="icon iconfont icon-ion-android-drafts-"></i>
<div class="name">ion-android-drafts -</div>
<div class="fontclass">.icon-ion-android-drafts-</div>
</li>
<li>
<i class="icon iconfont icon-ion-social-vimeo-I"></i>
<div class="name">ion-social-vimeo - I</div>
<div class="fontclass">.icon-ion-social-vimeo-I</div>
</li>
<li>
<i class="icon iconfont icon-ion-pricetags-Ioni"></i>
<div class="name">ion-pricetags - Ioni</div>
<div class="fontclass">.icon-ion-pricetags-Ioni</div>
</li>
<li>
<i class="icon iconfont icon-ion-pie-graph-Ioni"></i>
<div class="name">ion-pie-graph - Ioni</div>
<div class="fontclass">.icon-ion-pie-graph-Ioni</div>
</li>
<li>
<i class="icon iconfont icon-ion-ios-basketball-"></i>
<div class="name">ion-ios-basketball -</div>
<div class="fontclass">.icon-ion-ios-basketball-</div>
</li>
<li>
<i class="icon iconfont icon-ion-android-cart-I"></i>
<div class="name">ion-android-cart - I</div>
<div class="fontclass">.icon-ion-android-cart-I</div>
</li>
<li>
<i class="icon iconfont icon-Shapex1"></i>
<div class="name">Shape@2x</div>
<div class="fontclass">.icon-Shapex1</div>
</li>
<li>
<i class="icon iconfont icon-up-arrow"></i>
<div class="name">向下箭头</div>
<div class="fontclass">.icon-up-arrow</div>
</li>
</ul>
<h2 id="font-class-">font-class引用</h2>
<hr>
<p>font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。</p>
<p>与unicode使用方式相比,具有如下特点:</p>
<ul>
<li>兼容性良好,支持ie8+,及所有现代浏览器。</li>
<li>相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。</li>
<li>因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。</li>
<li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的fontclass代码:</h3>
<pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;link rel="stylesheet" type="text/css" href="./iconfont.css"&gt;</span></code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="lang-css hljs">&lt;<span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">class</span>="<span class="hljs-selector-tag">iconfont</span> <span class="hljs-selector-tag">icon-xxx</span>"&gt;&lt;/<span class="hljs-selector-tag">i</span>&gt;</code></pre>
<blockquote>
<p>"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
</blockquote>
</div>
</body>
</html>
No preview for this file type
No preview for this file type
(function () {
var api = {
/**
* api 接口
* @type {{prototype: {}}}
*/
login: '/api/passport/login',
signOut: '/api/passport/signOut',
upload: '/api/common/upload',
common: {
listProvince: '/api/common/listProvince',
listCity: function (provinceName) {
return '/api/common/listCity?provinceName=' + provinceName;
},
listArea: function (cityName) {
return '/api/common/listArea?cityName=' + cityName;
},
},
//商家管理
storeManage: {
list: {
type: 'GET',
url: '/api/store/list',
desc: "商家列表"
},
create: {
type: "POST",
url: "/api/store/create",
desc: '添加商家信息'
},
update: {
type: "POST",
url: "/api/store/update",
desc: "修改商家信息"
},
get: {
type: "GET",
url: function (id) {
return "/api/store/get/" + id;
},
desc: "商家详情"
},
disable: {
type: 'GET',
url: function (id) {
return "/api/store/disable/" + id;
},
desc: "禁用商家"
},
enable: {
type: "GET",
url: function (id) {
return "/api/store/enable/" + id;
},
desc: '启用商家',
},
},
//场馆管理
venues: {
list: {
type: 'GET',
url: '/api/venues/list',
},
start: {
type: 'POST',
url: '/api/venues/start',
},
create: '/api/venues/create',
update: '/api/venues/update',
detail: function (id) {
return '/api/venues/detail/' + id;
},
//收费
price: '/api/venues/priceList',
savePrice: '/api/venues/price/config/save',
detailPriceConfig: function (id) {
return '/api/venues/price/config/detail/' + id;
},
savePriceList: '/api/venues/price/list/save'
},
//场地管理:
ground: {
list: '/api/venues/ground/list',
create: '/api/venues/ground/create',
start: function (id) {
return '/api/venues/ground/start/' + id;
},
detail: '/api/venues/ground/detail',
update: '/api/venues/ground/update',
changeRank: '/api/venues/ground/changeRank',
},
//闸机管理
door: {
list: '/api/venues/door/list',
create: '/api/venues/door/create',
detail: '/api/venues/door/detail',
update: '/api/venues/door/update',
delete: function (id) {
return '/api/venues/door/delete/' + id;
},
},
//会员管理
user: {
list: {
type: 'GET',
url: '/api/user/list',
},
getUserInfo: function (id) {
return '/api/user/getUserInfo/' + id;
},
getUserVipCard: {
type: 'GET',
url: '/api/user/getUserVipCard',
},
getUserIdentify: function (id) {
return '/api/user/getUserIdentify/' + id;
},
getUserAccount: function (id) {
return '/api/user/getUserAccount/' + id;
},
getTimeList: {
type: 'GET',
url: '/api/user/getTimeList',
},
getBlockList: {
type: 'GET',
url: '/api/user/getBlockList',
},
resettingPwd: {
type: 'POST',
url: '/api/user/resettingPwd',
},
getUserIdcard: '/api/user/getUserIdcard',
getCount: '/api/user/getCount',
identifyPass: function (id) {
return '/api/user/identifyPass/' + id;
},
identifyRefuse: function (id) {
return '/api/user/identifyRefuse/' + id;
},
getUser: '/api/user/getUser',
create: '/api/user/create',
},
//包场管理
block: {
list: '/api/block/order/list',
today: '/api/block/order/list/today',
statusList: '/api/block/status/list'
},
//消费管理
order: {
//计时订单
time: {
list: {
type: "GET",
url: '/api/order/time/list',
desc: '计时订单列表',
},
get: {
type: "GET",
url: function (id) {
return '/api/order/time/get/' + id;
},
desc: '计时详情'
},
},
//包场订单
block: {
list: {
type: "GET",
url: '/api/order/block/list',
desc: '包场订单列表',
},
get: {
type: 'GET',
url: function (id) {
return '/api/order/block/get/' + id;
},
desc: '包场订单详情',
},
},
//套餐订单
package: {
list: {
type: "GET",
url: '/api/order/package/list',
desc: '套餐订单列表',
},
get: {
type: 'GET',
url: function (id) {
return '/api/order/package/get/' + id;
},
desc: '套餐订单详情',
}
},
//充值订单
recharge: {
list: {
type: "GET",
url: '/api/order/list',
desc: '充值订单列表'
},
get: {
type: "GET",
url: function (id) {
return '/api/order/get/' + id;
},
desc: '充值订单详情'
}
},
},
//促销管理
promotion: {
package: {
list: {
type: "GET",
url: "/api/promotion/package/list",
desc: "套餐列表"
},
get: {
type: "GET",
url: function (id) {
return '/api/promotion/package/get/' + id;
},
desc: "套餐详情"
},
create: {
type: "POST",
url: '/api/promotion/package/create',
desc: "添加套餐"
},
update: {
type: "POST",
url: "/api/promotion/package/update",
desc: '修改套餐'
},
delete: {
type: "POST",
url: function (id) {
return "/api/promotion/package/delete/" + id;
},
desc: '删除套餐'
}
},
packageType: {
list: {
type: 'GET',
url: '/api/promotion/package/type/list',
desc: '套餐类型列表'
},
get: {
type: 'GET',
url: function (id) {
return "/api/promotion/package/type/get/" + id;
},
desc: '添加套餐类型'
},
create: {
type: 'POST',
url: "/api/promotion/package/type/create",
desc: '添加套餐类型'
},
update: {
type: "POST",
url: '/api/promotion/package/type/update',
desc: '修改套餐类型',
},
delete: {
type: "POST",
url: function (id) {
return "/api/promotion/package/type/delete/" + id;
},
desc: "删除套餐类型"
},
},
}
}
window.api = api
})()
var commonApp = function () {
/**
* 初始化
* @private
*/
var _init = function () {
// 网页全屏
_fullScreen($('#js-full-screen'),function (isNormalScreen,$e) {
$e.html('<span class="ion ion-arrow-'+(isNormalScreen?'expand':'shrink')+'">');
});
// 加载侧导航
_navNarrow($('#js-toggle-aside-nav'));
_navCollapse($('#js-aside-collapse'));
};
/**
* 侧导航折叠效果
* @param $element 根<ul>元素
* @private
*/
var _navCollapse = function ($element) {
$element.children('li').each(function (i,n) {
var $this = $(n),
$ul = $this.children('ul'),
$a = $this.children('a');
if($ul.size() > 0){
var aClass = 'collapsed',
ulClass = '',
thisClass= 'panel';
if($ul.children('.active').size() > 0){
aClass = '';
ulClass = 'collapse in';
thisClass = 'panel has-children-active';
}
$this.attr({'class':thisClass});
$a.attr({'href':'javascript:;','data-toggle':'collapse','data-parent':'#'+$element[0].id,'class':aClass,'data-target':'#nav-aside-collapse-'+i,'data-index':i})
.append('<span class="ion-chevron-right">');
$ul.attr({'id':'nav-aside-collapse-'+i,'class':ulClass});
}
});
};
/**
* 侧导航收起
* @param $element
* @private
*/
var _navNarrow = function ($element) {
/*if(localStorage.getItem('navAsideStatus')){
$('body').addClass('dk-nav-aside-narrow');
}*/
$element.click(function () {
var $body = $('body');
if($body.hasClass('dk-nav-aside-narrow')){
$body.removeClass('dk-nav-aside-narrow');
//localStorage.removeItem('navAsideStatus');
}else{
$body.addClass('dk-nav-aside-narrow');
//localStorage.setItem('navAsideStatus',true);
}
});
};
/**
* 浏览器全屏
* @private
* @param $element
* @param callback(isNormalScreen,$element)
*/
var _fullScreen = function ($element,callback) {
var isNormalScreen = function () {
return !document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement;
},
fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;
// 触发全屏切换
$element.click(function () {
if(fullscreenEnabled) {
// 全屏
if(isNormalScreen()) {
var element = document.documentElement;
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 取消全屏
else{
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
});
// 监听全屏事件
var callbackFun = function (event) {
if(typeof callback == "function"){
callback(isNormalScreen(),$element);
}
};
document.onwebkitfullscreenchange = callbackFun;
document.onmozfullscreenchange = callbackFun;
document.onwebkitfullscreenchange = callbackFun;
document.onmsfullscreenchange = callbackFun;
};
/**
* 工具
* @private
*/
var _tools = {};
/**
* 获取url参数
* @param name
* @returns {null}
*/
_tools.getUrlParam = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
};
/**
* 滚动条美化
* @param ele = '.slimscroll',width = 'px',height='px'
* @returns {{}}
*/
_tools.beautifyScroll = function (ele,w,h) {
$(ele).slimScroll({
color: '#999',
size: '5px',
width: w,
height: h,
alwaysVisible: true,
allowPageScroll: true
});
};
/**
* 获取表单数据
* @param $form jquery对象
* @returns {{}}
*/
_tools.getFromData = function ($form) {
var o = {};
var a = $form.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
return {
init:_init,
tools:_tools
}
}();
/* 模块2 */
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This file is too large to display.
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!