Browse Source

合并代码

En route 1 year ago
parent
commit
da5e765c49
100 changed files with 2652 additions and 276 deletions
  1. 1 1
      build/webpack.base.conf.js
  2. 1 1
      build/webpack.dev.conf.js
  3. 13 7
      build/webpack.prod.conf.js
  4. 2 1
      config/145.env.js
  5. 2 1
      config/520.env.js
  6. 11 0
      config/962.env.js
  7. 2 0
      config/dev.env.js
  8. 98 5
      config/index.js
  9. 11 0
      config/pre.env.js
  10. 3 2
      config/prod.env.js
  11. 3 2
      config/stage.env.js
  12. 2 1
      config/zz.env.js
  13. 8 3
      index.html
  14. 826 110
      package-lock.json
  15. 19 5
      package.json
  16. 0 11
      src/App.vue
  17. 38 22
      src/apis/apply.js
  18. 26 2
      src/apis/bank.js
  19. 8 1
      src/apis/common.js
  20. 97 4
      src/apis/course.js
  21. 115 61
      src/apis/login.js
  22. 146 28
      src/apis/order.js
  23. 8 1
      src/apis/polvy.js
  24. 14 6
      src/apis/profileTp.js
  25. 36 1
      src/apis/user.js
  26. BIN
      src/assets/contact.png
  27. 397 0
      src/assets/css/quill.core.css
  28. 765 0
      src/assets/css/xlsx.css
  29. BIN
      src/assets/dd.png
  30. BIN
      src/assets/dgzz.png
  31. BIN
      src/assets/favicon.ico
  32. BIN
      src/assets/img/Close@2x.png
  33. BIN
      src/assets/img/a88848d9321bc1706685815ea2103b5.png
  34. BIN
      src/assets/img/tcs.png
  35. BIN
      src/assets/kc.png
  36. BIN
      src/assets/new1/backTop.png
  37. BIN
      src/assets/new1/bankBGC.png
  38. BIN
      src/assets/new1/banner.png
  39. BIN
      src/assets/new1/bkzd.png
  40. BIN
      src/assets/new1/ch.png
  41. BIN
      src/assets/new1/cjwt.png
  42. BIN
      src/assets/new1/course.png
  43. BIN
      src/assets/new1/courseBGC.png
  44. BIN
      src/assets/new1/cyhz.png
  45. BIN
      src/assets/new1/dlgg.png
  46. BIN
      src/assets/new1/handoutBGC.png
  47. BIN
      src/assets/new1/hxx.png
  48. BIN
      src/assets/new1/jxsl.png
  49. BIN
      src/assets/new1/kcst.png
  50. BIN
      src/assets/new1/khc.png
  51. BIN
      src/assets/new1/ksrl.png
  52. BIN
      src/assets/new1/liveBGC.png
  53. BIN
      src/assets/new1/logo-白.png
  54. BIN
      src/assets/new1/logo.png
  55. BIN
      src/assets/new1/mym.png
  56. BIN
      src/assets/new1/ppsl.png
  57. BIN
      src/assets/new1/ppssl.png
  58. BIN
      src/assets/new1/rspz.png
  59. BIN
      src/assets/new1/search-white.png
  60. BIN
      src/assets/new1/search.png
  61. BIN
      src/assets/new1/shoppingcar.png
  62. BIN
      src/assets/new1/sztd.png
  63. BIN
      src/assets/new1/sztd1.png
  64. BIN
      src/assets/new1/tenzz.png
  65. BIN
      src/assets/new1/tjbank.png
  66. BIN
      src/assets/new1/tjkc.png
  67. BIN
      src/assets/new1/tkbank.png
  68. BIN
      src/assets/new1/vipBGC.png
  69. BIN
      src/assets/new1/wechat.png
  70. BIN
      src/assets/new1/wechat2.png
  71. BIN
      src/assets/new1/xcx.png
  72. BIN
      src/assets/new1/xfk.png
  73. BIN
      src/assets/new1/zlps.png
  74. BIN
      src/assets/new1/zshktj.png
  75. BIN
      src/assets/new1/zxrx.png
  76. BIN
      src/assets/new1/zyjn.png
  77. BIN
      src/assets/new1/zykz.png
  78. BIN
      src/assets/new1/zzhteacher.png
  79. BIN
      src/assets/tk.png
  80. BIN
      src/assets/wechat.png
  81. BIN
      src/assets/wxpay.png
  82. BIN
      src/assets/zzzs/2018A1.jpg
  83. BIN
      src/assets/zzzs/2018A2.jpg
  84. BIN
      src/assets/zzzs/2018A3.jpg
  85. BIN
      src/assets/zzzs/2018A4.jpg
  86. BIN
      src/assets/zzzs/2018A5.jpg
  87. BIN
      src/assets/zzzs/2018A6.jpg
  88. BIN
      src/assets/zzzs/2018A7.jpg
  89. BIN
      src/assets/zzzs/2018A8.jpg
  90. BIN
      src/assets/zzzs/2019A1.jpg
  91. BIN
      src/assets/zzzs/bxxkz-zb.jpg
  92. BIN
      src/assets/zzzs/djz.jpg
  93. BIN
      src/assets/zzzs/facesbrzzs.jpg
  94. BIN
      src/assets/zzzs/hjgltxrz.jpg
  95. BIN
      src/assets/zzzs/zlgltxrz.jpg
  96. BIN
      src/assets/zzzs/zyhjaqgktxrz.jpg
  97. BIN
      src/assets/zzzs/zzqyzhjyxtrzzs.jpg
  98. BIN
      src/assets/zzzs/zzyxtptrzzs1.jpg
  99. BIN
      src/assets/zzzs/zzyxtptrzzs2.jpg
  100. BIN
      src/assets/zzzs/zzzhkcrzzs.jpg

+ 1 - 1
build/webpack.base.conf.js

@@ -17,7 +17,7 @@ module.exports = {
   },
   output: {
     path: config.build.assetsRoot,
-    filename: '[name].js',
+    filename: '[name].[hash].js',
     publicPath: process.env.NODE_ENV === 'production'
       ? config.build.assetsPublicPath
       : config.dev.assetsPublicPath

+ 1 - 1
build/webpack.dev.conf.js

@@ -56,7 +56,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
     new HtmlWebpackPlugin({
       filename: 'index.html',
       template: 'index.html',
-      favicon:'./src/assets/favicon.ico',
+      // favicon:'./src/assets/favicon.ico',
       inject: true
     }),
     // copy custom static assets

+ 13 - 7
build/webpack.prod.conf.js

@@ -19,11 +19,17 @@ switch (process.env.ENV_ID) {
   case '520':
     env = require('../config/520.env')
     break;
-  case '680':
+  case '962':
+    env = require('../config/962.env')
+    break;
+  case 'prod':
     env = require('../config/prod.env')
     break;
-  case 'test':
-    env = require('../config/test.env')
+  case 'stage':
+    env = require('../config/stage.env')
+    break;
+  case 'pre':
+    env = require('../config/pre.env')
     break;
   case 'zz':
     env = require('../config/zz.env')
@@ -43,8 +49,8 @@ const webpackConfig = merge(baseWebpackConfig, {
   devtool: config.build.productionSourceMap ? config.build.devtool : false,
   output: {
     path: config.build.assetsRoot,
-    filename: utils.assetsPath('js/[name].[chunkhash].js'),
-    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+    filename: utils.assetsPath('js/[name].[hash].js'),
+    chunkFilename: utils.assetsPath('js/[id].[hash].js')
   },
   plugins: [
     // http://vuejs.github.io/vue-loader/en/workflow/production.html
@@ -84,7 +90,7 @@ const webpackConfig = merge(baseWebpackConfig, {
     new HtmlWebpackPlugin({
       filename: config.build.index,
       template: 'index.html',
-      favicon: './src/assets/favicon.ico',
+      // favicon: './src/assets/favicon.ico',
       inject: true,
       minify: {
         removeComments: true,
@@ -153,7 +159,7 @@ if (config.build.productionGzip) {
         config.build.productionGzipExtensions.join('|') +
         ')$'
       ),
-      threshold: 10240,
+      threshold: 1024,
       minRatio: 0.8
     })
   )

+ 2 - 1
config/145.env.js

@@ -6,5 +6,6 @@ module.exports = {
     TENANT_ID: '"141250585240548145"',
     ENV_ID: '"145"',
     WEAPP_LOGO: '"@/assets/xcxqrcode145.jpg"', // 微信小程序扫码图片
-    TENANT_NANE: '"中正云学堂"'
+    WEAPP_STATUS: true,//小程序相关显示
+    TENANT_NANE: '"中正云学堂"'//子系统
 }

+ 2 - 1
config/520.env.js

@@ -6,5 +6,6 @@ module.exports = {
     TENANT_ID: '"567735392758918520"',
     ENV_ID: '"520"',
     WEAPP_LOGO: '"@/assets/xcxqrcode520.jpg"', // 微信小程序扫码图片
-    TENANT_NANE: '"勘设云学堂"',
+    WEAPP_STATUS: true,//小程序相关显示
+    TENANT_NANE: '"勘设云学堂"',//子系统
 }

+ 11 - 0
config/962.env.js

@@ -0,0 +1,11 @@
+'use strict'
+module.exports = {
+    NODE_ENV: '"production"',
+    BASE_IMG_URL: '"https://file.xyyxt.net/"', //图片上传api
+    BASE_URL: '"https://api.xyyxt.net"',
+    TENANT_ID: '"471722209971055962"',
+    ENV_ID: '"962"',
+    WEAPP_LOGO: '"@/assets/xcxqrcode145.jpg"', // 微信小程序扫码图片
+    WEAPP_STATUS: false,//小程序相关显示
+    TENANT_NANE: '"山西云学堂"'//子系统
+}

+ 2 - 0
config/dev.env.js

@@ -3,9 +3,11 @@ module.exports = {
   NODE_ENV: '"development"',
   BASE_IMG_URL: '"https://file-dev.xyyxt.net/"', //图片上传api
   BASE_URL: '"http://120.79.166.78:19012"',
+  // BASE_URL: '"http://192.168.1.7:5055"',
   TENANT_ID: '"867735392558919680"',
   WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片
   TENANT_NANE: '"祥粤云学堂"',
+  WEAPP_STATUS: true,//小程序相关显示
   ENV_ID: '"680"',
 }
 // BASE_URL:'https://test.xyyxt.net'   //预发布

+ 98 - 5
config/index.js

@@ -2,8 +2,14 @@
 // Template version: 1.3.1
 // see http://vuejs-templates.github.io/webpack for documentation.
 
-const path = require('path')
+const path = require('path') 
 
+const webpack = require('webpack')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+const CompressionWebpackPlugin = require('compression-webpack-plugin')
+function resolve(dir) {
+    return path.join(__dirname, dir);
+}
 module.exports = {
   dev: {
 
@@ -58,7 +64,7 @@ module.exports = {
      * Source Maps
      */
 
-    productionSourceMap: true,
+    // productionSourceMap: true,
     // https://webpack.js.org/configuration/devtool/#production
     devtool: '#source-map',
 
@@ -66,13 +72,100 @@ module.exports = {
     // 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,
+    productionGzip: true,
     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
-  }
+    bundleAnalyzerReport: process.env.npm_config_report,
+    
+  lintOnSave: false,//禁用代码检测
+  productionSourceMap: false,
+  chainWebpack: config => {
+      // ============压缩图片 start============
+      // config.module
+      //     .rule('images') 
+      //     .use('image-webpack-loader')
+      //     .loader('image-webpack-loader')
+      //     .options({ bypassOnDebug: true })
+      //     .end();
+      // ============压缩图片 end============
+      // 移除 prefetch 插件
+      config.plugins.delete('prefetch')
+      // 移除 preload 插件
+      config.plugins.delete('preload');
+      config.plugin('provide').use(webpack.ProvidePlugin, [{
+          'window.Quill': 'quill'
+      }])
+  },
+  configureWebpack: config => {
+          // 代码压缩
+          config.plugins.push(
+              new UglifyJsPlugin({
+                  uglifyOptions: {
+                      //生产环境自动删除console
+                      compress: {
+                          drop_debugger: true,
+                          drop_console: true,
+                          pure_funcs: ['console.log']
+                      },
+                      warnings: false, // 若打包错误,则注释这行
+                  },
+                  sourceMap: false,
+                  parallel: true
+              })
+          )
+          // gzip压缩
+          const productionGzipExtensions = ['html', 'js', 'css']
+          config.plugins.push(
+              new CompressionWebpackPlugin({
+                  filename: '[path].gz[query]',
+                  algorithm: 'gzip',
+                  test: new RegExp(
+                      '\\.(' + productionGzipExtensions.join('|') + ')$'
+                  ),
+                  threshold: 10240, // 只有大小大于该值的资源会被处理 10240
+                  minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
+                  deleteOriginalAssets: false // 删除原文件
+              })
+          )
+          // 公共代码抽离
+          config.optimization = {
+              splitChunks: {
+                  cacheGroups: {
+                      vendor: {
+                          chunks: 'all',
+                          test: /node_modules/,
+                          name: 'vendor',
+                          minChunks: 1,
+                          maxInitialRequests: 5,
+                          minSize: 0,
+                          priority: 100
+                      },
+                      common: {
+                          chunks: 'all',
+                          test: /[\\/]src[\\/]js[\\/]/,
+                          name: 'common',
+                          minChunks: 2,
+                          maxInitialRequests: 5,
+                          minSize: 0,
+                          priority: 60
+                      },
+                      styles: {
+                          name: 'styles',
+                          test: /\.(sa|sc|c)ss$/,
+                          chunks: 'all',
+                          enforce: true
+                      },
+                      runtimeChunk: {
+                          name: 'manifest'
+                      }
+                  }
+              }
+          }
+      
+  },
+  },
 }

+ 11 - 0
config/pre.env.js

@@ -0,0 +1,11 @@
+'use strict'
+module.exports = {
+  NODE_ENV: '"production"',
+  BASE_IMG_URL: '"https://file.xyyxt.net/"', //图片上传api
+  BASE_URL: '"https://test.xyyxt.net"',//预发布
+  TENANT_ID: '"867735392558919680"',
+  ENV_ID: '"pre"',//预发布环境
+  WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片
+  WEAPP_STATUS: true,//小程序相关显示
+  TENANT_NANE: '"祥粤云学堂"',
+}

+ 3 - 2
config/prod.env.js

@@ -2,9 +2,10 @@
 module.exports = {
   NODE_ENV: '"production"',
   BASE_IMG_URL: '"https://file.xyyxt.net/"', //图片上传api
-  BASE_URL: '"https://api.xyyxt.net"',
+  BASE_URL: '"https://api.xyyxt.net"',//正式
   TENANT_ID: '"867735392558919680"',
-  ENV_ID: '"680"',
+  ENV_ID: '"prod"',//生产环境
   WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片
+  WEAPP_STATUS: true,//小程序相关显示
   TENANT_NANE: '"祥粤云学堂"',
 }

+ 3 - 2
config/test.env.js → config/stage.env.js

@@ -2,9 +2,10 @@
 module.exports = {
     NODE_ENV: '"production"',
     BASE_IMG_URL: '"https://file-dev.xyyxt.net/"', //图片上传api
-    BASE_URL: '"http://120.79.166.78:19012"',
+    BASE_URL: '"https://testapi.xyyxt.net"',
+    // BASE_URL: '"http://120.79.166.78:19012"',
     TENANT_ID: '"867735392558919680"',
-    ENV_ID: '"test"',
+    ENV_ID: '"stage"',//测试环境
     WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片
     TENANT_NANE: '"祥粤云学堂"'
 }

+ 2 - 1
config/zz.env.js

@@ -6,5 +6,6 @@ module.exports = {
     TENANT_ID: '"867735392558919680"',
     ENV_ID: '"zz"',
     WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片
-    TENANT_NANE: '"中正云学堂"'
+    WEAPP_STATUS: true,//小程序相关显示
+    TENANT_NANE: '"中正云学堂"'//一般不动----内部
 }

+ 8 - 3
index.html

@@ -4,14 +4,19 @@
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
-  <meta name="keywords" content="祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师" />
-  <meta name="description" content="祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982" />
-  <title>祥粤云学堂-建造师造价师在线教育培训平台报名报考</title>
+  <meta name="keywords" content="-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师" />
+  <meta name="description" content="-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982" />
+  <title>建造师造价师在线教育培训平台报名报考</title>
+  <link href="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.min.css" rel="stylesheet" />
+  <style></style>
 </head>
 
 <body>
   <div id="app"></div>
   <!-- built files will be auto injected -->
+  <!--播放器脚本文件-->
+  <script src="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.v5.1.0.min.js"></script>
+
 </body>
 
 </html>

File diff suppressed because it is too large
+ 826 - 110
package-lock.json


+ 19 - 5
package.json

@@ -9,14 +9,23 @@
     "start": "npm run dev",
     "build": "node build/build.js",
     "build:145": "cross-env NODE_ENV=production ENV_ID=145 node build/build.js",
-    "build:test": "cross-env NODE_ENV=production ENV_ID=test node build/build.js",
     "build:520": "cross-env NODE_ENV=production ENV_ID=520 node build/build.js",
-    "build:680": "cross-env NODE_ENV=production ENV_ID=680 node build/build.js",
+    "build:962": "cross-env NODE_ENV=production ENV_ID=962 node build/build.js",
+    "build:stage": "cross-env NODE_ENV=production ENV_ID=stage node build/build.js",
+    "build:prod": "cross-env NODE_ENV=production ENV_ID=prod node build/build.js",
+    "build:pre": "cross-env NODE_ENV=production ENV_ID=pre node build/build.js",
     "build:zz": "cross-env NODE_ENV=production ENV_ID=zz node build/build.js"
   },
   "dependencies": {
+    "@vue-office/docx": "^0.2.4",
+    "@vue-office/excel": "^0.2.10",
+    "@vue-office/pdf": "^0.2.5",
+    "@vue/composition-api": "^1.7.1",
+    "ali-oss": "^6.18.1",
     "axios": "^0.26.1",
-    "element-ui": "^2.15.6",
+    "compression-webpack-plugin": "^1.1.12",
+    "docx-preview": "^0.1.15",
+    "element-ui": "^2.15.14",
     "image-conversion": "^2.1.1",
     "js-base64": "^3.7.2",
     "jsencrypt": "^3.2.1",
@@ -26,10 +35,13 @@
     "v-distpicker": "^1.2.13",
     "vue": "^2.5.2",
     "vue-awesome-swiper": "^3.1.3",
+    "vue-demi": "^0.14.0",
+    "vue-drag-verify2": "^1.2.0",
     "vue-esign": "^1.1.0",
     "vue-pdf": "^4.3.0",
     "vue-router": "^3.0.1",
-    "vuex": "^3.6.2"
+    "vuex": "^3.6.2",
+    "xlsx": "^0.18.5"
   },
   "devDependencies": {
     "autoprefixer": "^7.1.2",
@@ -43,11 +55,13 @@
     "babel-preset-stage-2": "^6.22.0",
     "chalk": "^2.0.1",
     "copy-webpack-plugin": "^4.0.1",
+    "cross-env": "^7.0.3",
     "css-loader": "^0.28.0",
     "extract-text-webpack-plugin": "^3.0.0",
     "file-loader": "^1.1.4",
     "friendly-errors-webpack-plugin": "^1.6.1",
     "html-webpack-plugin": "^2.30.1",
+    "image-webpack-loader": "^8.1.0",
     "node-notifier": "^5.1.2",
     "node-sass": "^7.0.1",
     "optimize-css-assets-webpack-plugin": "^3.2.0",
@@ -79,4 +93,4 @@
     "last 2 versions",
     "not ie <= 8"
   ]
-}
+}

+ 0 - 11
src/App.vue

@@ -9,21 +9,10 @@ export default {
   name: "App",
   data() {
     return {
-      isDesktop: false,
     };
   },
-  created() {
-    this.$store.dispatch("getCommonBaseHomeList");
-    if (!this.$store.state.isDesktop) {
-      this.$request.getWeAppLink().then((res) => {
-        res.msg && (window.location.href = res.msg);
-      });
-    }
-  },
 };
 </script>
 
 <style>
-#app {
-}
 </style>

+ 38 - 22
src/apis/apply.js

@@ -1,24 +1,24 @@
 import request from '@/axios'
 export default {
-  //点击预约报考按钮
-  getApplysubscribe(data) {
-    return request({
-      url: '/apply/subscribe',
-      method: 'get',
-      params: data
-    })
-  },
+	//点击预约报考按钮
+	getApplysubscribe(data) {
+		return request({
+			url: '/apply/subscribe',
+			method: 'get',
+			params: data
+		})
+	},
 
-  //预约报考下一步按钮 1 进入有考陪有考试地点得预约考试 2进入无考陪有考试地点预约考试 3无考试次数购买商品
-  getApplysubscribeNext(data) {
-    return request({
-      url: '/apply/subscribeNext',
-      method: 'get',
-      params: data
-    })
-  },
+	//预约报考下一步按钮 1 进入有考陪有考试地点得预约考试 2进入无考陪有考试地点预约考试 3无考试次数购买商品
+	getApplysubscribeNext(data) {
+		return request({
+			url: '/apply/subscribeNext',
+			method: 'get',
+			params: data
+		})
+	},
 
-  //获得考试的考试地点
+	//获得考试的考试地点
 	getApplysubscribeApplySite(data) {
 		return request({
 			url: '/apply/subscribeApplySite',
@@ -26,7 +26,7 @@ export default {
 			params: data
 		})
 	},
-  //获得考试的考培地点
+	//获得考试的考培地点
 	getApplysubscribeApplySiteTrain(data) {
 		return request({
 			url: '/apply/subscribeApplySiteTrain',
@@ -35,7 +35,7 @@ export default {
 		})
 	},
 
-  //新增用户预约考试
+	//新增用户预约考试
 	addApply(data) {
 		return request({
 			// url: '/apply',
@@ -45,7 +45,7 @@ export default {
 		})
 	},
 
-  //查询报考数据列表
+	//查询报考数据列表
 	getApplylist(data) {
 		return request({
 			url: '/apply/list',
@@ -53,8 +53,16 @@ export default {
 			params: data
 		})
 	},
+	//考前须知
+	applybeforeknow(data) {
+		return request({
+			url: '/apply/before/know',
+			method: 'get',
+			params: data
+		})
+	},
+
 
-  
 	//修改用户预约考试
 	editApply(data) {
 		return request({
@@ -64,7 +72,7 @@ export default {
 		})
 	},
 
-  //查询报考数据列表
+	//查询报考数据列表
 	getApplylist(data) {
 		return request({
 			url: '/apply/list',
@@ -72,4 +80,12 @@ export default {
 			params: data
 		})
 	},
+	//预约考试跳转判断
+	courseoldgoodsredirect(data) {
+		return request({
+			url: '/course/old/goods/redirect',
+			method: 'get',
+			params: data
+		})
+	},
 }

+ 26 - 2
src/apis/bank.js

@@ -8,7 +8,14 @@ export default {
     })
   },
 
-
+  //其他题库跳转二维码
+  goocoursespecialquestionskipcodedsBank(data) {
+    return request({
+      url: '/course/special/question/skip/code',
+      method: 'get',
+      params: data,
+    })
+  },
   goodsBank(data) {
     return request({
       url: '/goods/bank/list',
@@ -16,6 +23,14 @@ export default {
       params: data,
     })
   },
+  //查询用户是否拥有(山东题库) 
+  coursespecialquestioncount(data) {
+    return request({
+      url: '/course/special/question/count',
+      method: 'get',
+      params: data,
+    })
+  },
 
 
   goodsBankQuestionNum(data) {
@@ -147,7 +162,8 @@ export default {
 
   examWrongRecordWrongNum(data) {
     return request({
-      url: `/exam/wwrong/record/wrongNum/${data}`,
+      url: `/exam/wwrong/record/wrongNum`,
+      params: data,
       method: 'get'
     })
   },
@@ -352,4 +368,12 @@ export default {
       method: 'get'
     })
   },
+  coursespecialquestionlist(data) {
+    return request({
+      url: "/course/special/question/list",
+      method: 'get',
+      params: data
+    })
+  },
+
 }

+ 8 - 1
src/apis/common.js

@@ -1,4 +1,7 @@
 import request from '@/axios'
+import axios from 'axios'
+const CancelToken = axios.CancelToken;
+export let cancel;
 export default {
   /**
    * 
@@ -128,7 +131,11 @@ export default {
       url: '/app/common/goods/list',
       method: 'get',
       params: data,
-      noToken: true
+      noToken: true,
+      cancelToken: new CancelToken(function executor(c) {
+        // executor 函数接收一个 cancel 函数作为参数
+        cancel = c;
+      })
     })
   },
 

+ 97 - 4
src/apis/course.js

@@ -28,6 +28,33 @@ export default {
 			params: data
 		})
 	},
+	/**
+	 * 
+	 * @param {*} data 
+	 * @returns 
+	 * 继教七大员公共课程同步
+	 */
+	syncSevenPublicClass(data) {
+		return request({
+			url: '/study/record/syncSevenPublicClass',
+			method: 'get',
+			params: data
+		})
+	},
+
+	/**
+	 * 
+	 * @param {*} data 
+	 * @returns 
+	 * 检查二建二造用户是否学完必修
+	 */
+	goodsGradeCheckFinishRequiredCourse(data) {
+		return request({
+			url: '/grade/grade/checkFinishRequiredCourse',
+			method: 'get',
+			params: data
+		})
+	},
 	/**
 	  * 
 	  * @param {*} data 
@@ -110,6 +137,13 @@ export default {
 			method: 'get'
 		})
 	},
+	courseHandoutsdetail(data) {
+		return request({
+			url: '/course/handouts/file/detail',
+			method: 'get',
+			params: data
+		})
+	},
 
 	reMenuList(data) {
 		return request({
@@ -159,6 +193,14 @@ export default {
 			params: data
 		})
 	},
+	// 查询商品所有子目录带试卷结构列表
+	studyrecordgoodsAllListWithExam(data) {
+		return request({
+			url: '/study/record/goodsAllListWithExam',
+			method: 'get',
+			params: data
+		})
+	},
 	// 重修课程目录
 	getRebuildCourse(data) {
 		return request({
@@ -182,7 +224,14 @@ export default {
 			params: data
 		})
 	},
-
+	
+	courseoldgoodslist(data) {
+		return request({
+			url: '/course/old/goods/list',
+			method: 'get',
+			params: data
+		})
+	},
 	studyRecordMenuAllList(data) {
 		return request({
 			url: '/study/record/menuAllList',
@@ -190,6 +239,13 @@ export default {
 			params: data
 		})
 	},
+	studyRecordMenuAllListWithExam(data) {
+		return request({
+			url: '/study/record/menuAllListWithExam',
+			method: 'get',
+			params: data
+		})
+	},
 
 	gradeCheckGoodsStudy(data) {
 		return request({
@@ -198,7 +254,12 @@ export default {
 			params: data
 		})
 	},
-
+	orderstudycheck(data) {
+		return request({
+			url: '/order/study/check/' + data,
+			method: 'get',
+		})
+	},
 	goodsTodayStudySectionNum(data) {
 		return request({
 			url: '/goods/todayStudySectionNum',
@@ -214,7 +275,14 @@ export default {
 			data: data
 		})
 	},
-
+	
+	ordersevenyear(data) {
+		return request({
+			url: '/order/seven/year/' + data,
+			method: 'get',
+		})
+	},
+	
 	faceCertificationCompareFace(data) {
 		return request({
 			url: '/face/certification/CompareFace',
@@ -255,6 +323,13 @@ export default {
 		})
 	},
 
+	orderfirstChoiceGoods(data) {
+		return request({
+			url: '/order/firstChoiceGoods',
+			method: 'post',
+			data: data
+		})
+	},
 
 	faceCertificationIDCardOCR(data) {
 		return request({
@@ -263,7 +338,7 @@ export default {
 			data: data
 		})
 	},
-
+	
 	facCertificationImageRecognition(data) {
 		return request({
 			url: '/face/certification/ImageRecognition',
@@ -336,4 +411,22 @@ export default {
 			params: data
 		})
 	},
+	// 查询用户拥有的讲义商品
+	courseGoodsHandoutsList(data) {
+		return request({
+			url: '/course/goodsHandoutsList',
+			method: 'get',
+			params: data
+		})
+	},
+	//获取讲义列详细信息去地址
+	coursehandoutsfiledetail(data) {
+		return request({
+			url: '/app/common/course/handouts/file/detail',
+			method: 'get',
+			noToken: true,
+			params: data
+		})
+	},
+
 }

+ 115 - 61
src/apis/login.js

@@ -9,18 +9,18 @@ export default {
   login(data) {
     return request({
       url: '/app/common/account_login',
-			method: 'post',
-			data: data,
-			noToken: true
+      method: 'post',
+      data: data,
+      noToken: true
     })
   },
 
   skipLogin(data) {
     return request({
       url: '/app/common/telphone_login',
-			method: 'post',
-			data: data,
-			noToken: true
+      method: 'post',
+      data: data,
+      noToken: true
     })
   },
   /**
@@ -32,9 +32,9 @@ export default {
   getLoginSms(data) {
     return request({
       url: '/app/common/sms/login',
-			method: 'post',
-			data: data,
-			noToken: true
+      method: 'post',
+      data: data,
+      noToken: true
     })
   },
   /**
@@ -46,9 +46,9 @@ export default {
   loginSms(data) {
     return request({
       url: '/app/common/sms_login',
-			method: 'post',
-			data: data,
-			noToken: true
+      method: 'post',
+      data: data,
+      noToken: true
     })
   },
   /**
@@ -56,12 +56,12 @@ export default {
    * @returns 获取用户登录信息
    */
   getInfo(data) {
-		return request({
-			url: '/app/user/getInfo',
-			method: 'get',
-      params:data,
-		})
-	},
+    return request({
+      url: '/app/user/getInfo',
+      method: 'get',
+      params: data,
+    })
+  },
 
   /**
    * 
@@ -69,14 +69,14 @@ export default {
    * @returns 
    * 注册用户
    */
-	registerUser(data) {
-		return request({
-			url: '/app/common/register_small',
-			method: 'post',
-			data: data,
-			noToken: true
-		})
-	},
+  registerUser(data) {
+    return request({
+      url: '/app/common/register_small',
+      method: 'post',
+      data: data,
+      noToken: true
+    })
+  },
 
   /**
    * 
@@ -84,18 +84,18 @@ export default {
    * @returns 
    * 绑定身份证号信息
    */
-   bindIdCard(data) {
-		return request({
-      token:data.token,
-      headers:{
-        AuthorizationToken:"WX "+data.token
+  bindIdCard(data) {
+    return request({
+      token: data.token,
+      headers: {
+        AuthorizationToken: "WX " + data.token
       },
-      noToken:true,
-			url: '/app/user/bind_idcard',
-			method: 'post',
-			data: data
-		})
-	},
+      noToken: true,
+      url: '/app/user/bind_idcard',
+      method: 'post',
+      data: data
+    })
+  },
 
   /**
    * 
@@ -104,13 +104,13 @@ export default {
    * 获取注册短信
    */
   getRegisterSms(data) {
-		return request({
-			url: '/app/common/sms/register',
-			method: 'post',
-			data: data,
-			noToken: true
-		})
-	},
+    return request({
+      url: '/app/common/sms/register',
+      method: 'post',
+      data: data,
+      noToken: true
+    })
+  },
 
   /**
    * 
@@ -118,27 +118,81 @@ export default {
    * @returns 
    * 找回密码
    */
-	forgetUser(data) {
-		return request({
-			url: '/app/common/register_forget',
-			method: 'post',
-			data: data,
-			noToken: true
-		})
-	},
-  
+  forgetUser(data) {
+    return request({
+      url: '/app/common/register_forget',
+      method: 'post',
+      data: data,
+      noToken: true
+    })
+  },
+
   /**
    * 
    * @param {*} data 
    * @returns 
    * 获取找回密码短信
    */
-   getRegisterSmsforget(data) {
-		return request({
-			url: '/app/common/sms/forget',
-			method: 'post',
-			data: data,
-			noToken: true
-		})
-	},
+  getRegisterSmsforget(data) {
+    return request({
+      url: '/app/common/sms/forget',
+      method: 'post',
+      data: data,
+      noToken: true
+    })
+  },
+  /**
+   * 
+   * @returns 获取用户登录是否需要验证码
+   */
+  dualAuth(data) {
+    return request({
+      url: '/app/common/dual_auth',
+      method: 'get',
+      params: data,
+      noToken: true
+    })
+  },
+  /**
+   * 
+   * @returns 刷新令牌
+   */
+  refreshTokendata(data) {
+    return request({
+      url: '/refreshToken/' + data,
+      method: 'get',
+      noToken: true
+    })
+  },
+  /**
+   * 
+   * @returns 获取7个工作日后的时间戳
+   */
+  get7dayAfterTime(data) {
+    return request({
+      url: '/app/common/live/time',
+      method: 'get',
+      noToken: true
+    })
+  },
+  /**
+   * 
+   * @returns 免登
+   */
+  account_login(data) {
+    return request({
+      url: '/app/common/automatic/account_login',
+      method: 'post',
+      data: data,
+      noToken: true
+    })
+  },
+  // 检查是否有二建班级10天过期
+  checkTenClassGradeUser(params) {
+    return request({
+      url: '/grade/grade/checkTenClassGradeUser',
+      method: 'get',
+      params: params
+    })
+  },
 }

+ 146 - 28
src/apis/order.js

@@ -1,6 +1,6 @@
 import request from '@/axios'
 export default {
-  //查询订单列表
+	//查询订单列表
 	getorderlists(data) {
 		return request({
 			url: '/order/list',
@@ -9,10 +9,10 @@ export default {
 		})
 	},
 
-  /**
-	 * @param {Object} data
-	 * 查询订单商品退款列表
-	 */
+	/**
+	   * @param {Object} data
+	   * 查询订单商品退款列表
+	   */
 	orderRefundList(data) {
 		return request({
 			url: '/order/refund/list',
@@ -21,7 +21,7 @@ export default {
 		})
 	},
 
-  
+
 	refundSmallOrder(data) {
 		return request({
 			url: '/order/refund',
@@ -30,30 +30,30 @@ export default {
 		})
 	},
 
-  eddOrder(data) {
+	eddOrder(data) {
 		return request({
 			url: '/order/edit',
 			method: 'post',
 			data: data
 		})
 	},
-  
-  orderPayStatus(data) {
+
+	orderPayStatus(data) {
 		return request({
-			url: '/order/'+data,
+			url: '/order/' + data,
 			method: 'get'
 		})
 	},
 
-  orderResumePCOrder(data) {
+	orderResumePCOrder(data) {
 		return request({
 			url: '/order/resumePCOrder',
 			method: 'post',
-      data
+			data
 		})
 	},
 
-  orderInvoiceList(data) {
+	orderInvoiceList(data) {
 		return request({
 			url: '/order/invoice/list',
 			method: 'get',
@@ -61,7 +61,7 @@ export default {
 		})
 	},
 
-  orderInvoiceCancel(data) {
+	orderInvoiceCancel(data) {
 		return request({
 			url: '/order/invoice/cancel',
 			method: 'post',
@@ -69,7 +69,7 @@ export default {
 		})
 	},
 
-  orderInvoiceCanInvoiceList(data) {
+	orderInvoiceCanInvoiceList(data) {
 		return request({
 			url: '/order/invoice/canInvoiceList',
 			method: 'get',
@@ -77,7 +77,7 @@ export default {
 		})
 	},
 
-  orderInvoice(data) {
+	orderInvoice(data) {
 		return request({
 			url: '/order/invoice',
 			method: 'post',
@@ -85,7 +85,7 @@ export default {
 		})
 	},
 
-  orderUserEduList(data) {
+	orderUserEduList(data) {
 		return request({
 			url: '/order/userEduList',
 			method: 'get',
@@ -93,7 +93,7 @@ export default {
 		})
 	},
 
-  
+
 	orderInfo(data) {
 		return request({
 			url: '/order/info',
@@ -102,30 +102,148 @@ export default {
 		})
 	},
 
-  orderDetail(data) {
+	orderDetail(data) {
 		return request({
-			url: '/order/detail/'+data,
+			url: '/order/detail/' + data,
 			method: 'get'
 		})
 	},
 
-  orderGoodsList(data) {
+	orderGoodsList(data) {
 		return request({
 			url: '/order/goods/list',
 			method: 'get',
-      params:data,
+			params: data,
 		})
 	},
 
-  orderUserAllBusinessList(data) {
+	orderUserAllBusinessList(data) {
 		return request({
 			url: '/order/userAllBusinessList',
 			method: 'get',
 			params: data
 		})
-	}
-  
-  
-  
-  
+	},
+
+
+	orderhandle(data) {
+		return request({
+			url: '/order/handle',
+			method: 'post',
+			data: data
+		})
+	},
+	orderhandleinputOrder(data) {
+		return request({
+			url: '/order/handle/inputOrder',
+			method: 'post',
+			data: data
+		})
+	},
+	orderhandlelist(data) {
+		return request({
+			url: '/order/handle/list',
+			method: 'get',
+			params: data
+		})
+	},
+	orderhandlegoodsList(data) {
+		return request({
+			url: '/order/handle/goodsList',
+			method: 'get',
+			params: data
+		})
+	},
+	orderhandledetail(data) {
+		return request({
+			url: '/order/handle/detail',
+			method: 'get',
+			params: data
+		})
+	},
+	/**
+	 * 
+	 * @param {经办订单继续支付} data 
+	 * @returns 
+	 */
+	orderhandleresumePay(data) {
+		return request({
+			url: '/order/handle/resumePay',
+			method: 'post',
+			data: data
+		})
+	},
+	orderhandlecloseOrder(data) {
+		return request({
+			url: '/order/handle/closeOrder',
+			method: 'post',
+			data: data
+		})
+	},
+
+	//经办名单解析
+	userhandleanalysis(data) {
+		return request({
+			url: '/user/handle/analysis',
+			method: 'post',
+			data: data
+		})
+	},
+	//批量删除用户经办名单
+	userhandledelete(data) {
+		return request({
+			url: '/user/handle/delete',
+			method: 'post',
+			data: data
+		})
+	},
+	//修改用户经办名单
+	userhandleedit(data) {
+		return request({
+			url: '/user/handle/edit',
+			method: 'post',
+			data: data
+		})
+	},
+	//用户经办名单列表
+	userhandlelist(data) {
+		return request({
+			url: '/user/handle/list',
+			method: 'get',
+			params: data
+		})
+	},
+	//新增用户经办名单
+	userhandlesave(data) {
+		return request({
+			url: '/user/handle/save',
+			method: 'post',
+			data: data
+		})
+	},
+	//新增订单发票
+	orderinvoice(data) {
+		return request({
+			url: '/order/invoice',
+			method: 'post',
+			data: data
+		})
+	},
+	//经办订单退款申请
+	orderhandlerefundapply(data) {
+		return request({
+			url: '/order/handle/refund/apply',
+			method: 'post',
+			data: data
+		})
+	},
+	//修改拒绝经办录单
+	orderhandleupdateRefuseBo(data) {
+		return request({
+			url: '/order/handle/updateRefuseBo',
+			method: 'post',
+			data: data
+		})
+	},
+	
 }

+ 8 - 1
src/apis/polvy.js

@@ -64,6 +64,13 @@ export default {
             params: data
         })
     },
+    //腾讯云视频加密视频
+    vodvidesignid(data) {
+        return request({
+            url: `/vod/video/sign/${data}`,
+            method: 'get'
+        })
+    },
 
-
+    
 }

+ 14 - 6
src/apis/profileTp.js

@@ -56,7 +56,7 @@ export default {
 		})
 	},
 
-  //获取填写盖章审核详细信息
+	//获取填写盖章审核详细信息
 	getbaseprofileStampgetInfo(data) {
 		return request({
 			url: '/base/profileStamp/getInfo',
@@ -65,7 +65,7 @@ export default {
 		})
 	},
 
-  
+
 	//导出盖章word
 	addWordbaseprofileStamp(data) {
 		return request({
@@ -75,7 +75,7 @@ export default {
 		})
 	},
 
-  //修改填写盖章审核
+	//修改填写盖章审核
 	editbaseprofileStamp(data) {
 		return request({
 			url: '/base/profileStamp/edit',
@@ -84,7 +84,7 @@ export default {
 		})
 	},
 
-  //新增填写盖章审核
+	//新增填写盖章审核
 	addbaseprofileStamp(data) {
 		return request({
 			url: '/base/profileStamp',
@@ -93,12 +93,20 @@ export default {
 		})
 	},
 
-  baseProfileStampV2AddWord(data) {
+	baseProfileStampV2AddWord(data) {
 		return request({
 			url: '/base/profileStamp/V2/addWord',
 			method: 'post',
 			data: data
 		})
-	}
+	},
+	//更新七大员承诺书
+	baseprofiletpcommitmentupload(data) {
+		return request({
+			url: '/base/profile/tp/commitment/upload',
+			method: 'post',
+			data: data
+		})
+	},
 
 }

+ 36 - 1
src/apis/user.js

@@ -27,6 +27,19 @@ export default {
       noToken: true
     })
   },
+  /**
+   * 
+   * @param {*} data 
+   * @returns 
+   * 消息数量
+   */
+   appinformUsercount(data) {
+    return request({
+      url: '/app/informUser/count',
+      method: 'get',
+      params: data
+    })
+  },
   /**
    * 
    * @param {*} data 
@@ -167,6 +180,13 @@ export default {
       data: data,
     })
   },
+  appuseroffline(data) {
+    return request({
+      url: '/app/user/offline',
+      method: 'post',
+      data: data,
+    })
+  },
 
   lockLockAction(data) {
 		return request({
@@ -269,7 +289,14 @@ export default {
 			data: data
 		})
 	},
-
+	//file-文件流
+	commonreturnStream(data) {
+		return request({
+			url: '/app/common/returnStream',
+			method: 'post',
+			data: data
+		})
+	},
   studyRecord(data) {
 		return request({
 			url: '/study/record',
@@ -380,4 +407,12 @@ export default {
          params:data,
        })
      },
+     //检查密码修改时间
+     usercheckPwdTime(data) {
+        return request({
+          url: '/app/user/checkPwdTime',
+          method: 'get',
+          params:data,
+        })
+      },
 }

BIN
src/assets/contact.png


+ 397 - 0
src/assets/css/quill.core.css

@@ -0,0 +1,397 @@
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+.ql-container {
+  box-sizing: border-box;
+  font-family: Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  height: 100%;
+  margin: 0px;
+  position: relative;
+}
+.ql-container.ql-disabled .ql-tooltip {
+  visibility: hidden;
+}
+.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {
+  pointer-events: none;
+}
+.ql-clipboard {
+  left: -100000px;
+  height: 1px;
+  overflow-y: hidden;
+  position: absolute;
+  top: 50%;
+}
+.ql-clipboard p {
+  margin: 0;
+  padding: 0;
+}
+.ql-editor {
+  box-sizing: border-box;
+  line-height: 1.42;
+  height: 100%;
+  outline: none;
+  overflow-y: auto;
+  padding: 12px 15px;
+  tab-size: 4;
+  -moz-tab-size: 4;
+  text-align: left;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+.ql-editor > * {
+  cursor: text;
+}
+.ql-editor p,
+.ql-editor ol,
+.ql-editor ul,
+.ql-editor pre,
+.ql-editor blockquote,
+.ql-editor h1,
+.ql-editor h2,
+.ql-editor h3,
+.ql-editor h4,
+.ql-editor h5,
+.ql-editor h6 {
+  margin: 0;
+  padding: 0;
+  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol,
+.ql-editor ul {
+  padding-left: 1.5em;
+}
+.ql-editor ol > li,
+.ql-editor ul > li {
+  list-style-type: none;
+}
+.ql-editor ul > li::before {
+  content: '\2022';
+}
+.ql-editor ul[data-checked=true],
+.ql-editor ul[data-checked=false] {
+  pointer-events: none;
+}
+.ql-editor ul[data-checked=true] > li *,
+.ql-editor ul[data-checked=false] > li * {
+  pointer-events: all;
+}
+.ql-editor ul[data-checked=true] > li::before,
+.ql-editor ul[data-checked=false] > li::before {
+  color: #777;
+  cursor: pointer;
+  pointer-events: all;
+}
+.ql-editor ul[data-checked=true] > li::before {
+  content: '\2611';
+}
+.ql-editor ul[data-checked=false] > li::before {
+  content: '\2610';
+}
+.ql-editor li::before {
+  display: inline-block;
+  white-space: nowrap;
+  width: 1.2em;
+}
+.ql-editor li:not(.ql-direction-rtl)::before {
+  margin-left: -1.5em;
+  margin-right: 0.3em;
+  text-align: right;
+}
+.ql-editor li.ql-direction-rtl::before {
+  margin-left: 0.3em;
+  margin-right: -1.5em;
+}
+.ql-editor ol li:not(.ql-direction-rtl),
+.ql-editor ul li:not(.ql-direction-rtl) {
+  padding-left: 1.5em;
+}
+.ql-editor ol li.ql-direction-rtl,
+.ql-editor ul li.ql-direction-rtl {
+  padding-right: 1.5em;
+}
+.ql-editor ol li {
+  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+  counter-increment: list-0;
+}
+.ql-editor ol li:before {
+  content: counter(list-0, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-1 {
+  counter-increment: list-1;
+}
+.ql-editor ol li.ql-indent-1:before {
+  content: counter(list-1, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-1 {
+  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-2 {
+  counter-increment: list-2;
+}
+.ql-editor ol li.ql-indent-2:before {
+  content: counter(list-2, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-2 {
+  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-3 {
+  counter-increment: list-3;
+}
+.ql-editor ol li.ql-indent-3:before {
+  content: counter(list-3, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-3 {
+  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-4 {
+  counter-increment: list-4;
+}
+.ql-editor ol li.ql-indent-4:before {
+  content: counter(list-4, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-4 {
+  counter-reset: list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-5 {
+  counter-increment: list-5;
+}
+.ql-editor ol li.ql-indent-5:before {
+  content: counter(list-5, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-5 {
+  counter-reset: list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-6 {
+  counter-increment: list-6;
+}
+.ql-editor ol li.ql-indent-6:before {
+  content: counter(list-6, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-6 {
+  counter-reset: list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-7 {
+  counter-increment: list-7;
+}
+.ql-editor ol li.ql-indent-7:before {
+  content: counter(list-7, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-7 {
+  counter-reset: list-8 list-9;
+}
+.ql-editor ol li.ql-indent-8 {
+  counter-increment: list-8;
+}
+.ql-editor ol li.ql-indent-8:before {
+  content: counter(list-8, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-8 {
+  counter-reset: list-9;
+}
+.ql-editor ol li.ql-indent-9 {
+  counter-increment: list-9;
+}
+.ql-editor ol li.ql-indent-9:before {
+  content: counter(list-9, decimal) '. ';
+}
+.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
+  padding-left: 3em;
+}
+.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
+  padding-left: 4.5em;
+}
+.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
+  padding-right: 3em;
+}
+.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
+  padding-right: 4.5em;
+}
+.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
+  padding-left: 6em;
+}
+.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
+  padding-left: 7.5em;
+}
+.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
+  padding-right: 6em;
+}
+.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
+  padding-right: 7.5em;
+}
+.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
+  padding-left: 9em;
+}
+.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
+  padding-left: 10.5em;
+}
+.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
+  padding-right: 9em;
+}
+.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
+  padding-right: 10.5em;
+}
+.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
+  padding-left: 12em;
+}
+.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
+  padding-left: 13.5em;
+}
+.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
+  padding-right: 12em;
+}
+.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
+  padding-right: 13.5em;
+}
+.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
+  padding-left: 15em;
+}
+.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
+  padding-left: 16.5em;
+}
+.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
+  padding-right: 15em;
+}
+.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
+  padding-right: 16.5em;
+}
+.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
+  padding-left: 18em;
+}
+.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
+  padding-left: 19.5em;
+}
+.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
+  padding-right: 18em;
+}
+.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
+  padding-right: 19.5em;
+}
+.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
+  padding-left: 21em;
+}
+.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
+  padding-left: 22.5em;
+}
+.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
+  padding-right: 21em;
+}
+.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
+  padding-right: 22.5em;
+}
+.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
+  padding-left: 24em;
+}
+.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
+  padding-left: 25.5em;
+}
+.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
+  padding-right: 24em;
+}
+.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
+  padding-right: 25.5em;
+}
+.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
+  padding-left: 27em;
+}
+.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
+  padding-left: 28.5em;
+}
+.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
+  padding-right: 27em;
+}
+.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
+  padding-right: 28.5em;
+}
+.ql-editor .ql-video {
+  display: block;
+  max-width: 100%;
+}
+.ql-editor .ql-video.ql-align-center {
+  margin: 0 auto;
+}
+.ql-editor .ql-video.ql-align-right {
+  margin: 0 0 0 auto;
+}
+.ql-editor .ql-bg-black {
+  background-color: #000;
+}
+.ql-editor .ql-bg-red {
+  background-color: #e60000;
+}
+.ql-editor .ql-bg-orange {
+  background-color: #f90;
+}
+.ql-editor .ql-bg-yellow {
+  background-color: #ff0;
+}
+.ql-editor .ql-bg-green {
+  background-color: #008a00;
+}
+.ql-editor .ql-bg-blue {
+  background-color: #06c;
+}
+.ql-editor .ql-bg-purple {
+  background-color: #93f;
+}
+.ql-editor .ql-color-white {
+  color: #fff;
+}
+.ql-editor .ql-color-red {
+  color: #e60000;
+}
+.ql-editor .ql-color-orange {
+  color: #f90;
+}
+.ql-editor .ql-color-yellow {
+  color: #ff0;
+}
+.ql-editor .ql-color-green {
+  color: #008a00;
+}
+.ql-editor .ql-color-blue {
+  color: #06c;
+}
+.ql-editor .ql-color-purple {
+  color: #93f;
+}
+.ql-editor .ql-font-serif {
+  font-family: Georgia, Times New Roman, serif;
+}
+.ql-editor .ql-font-monospace {
+  font-family: Monaco, Courier New, monospace;
+}
+.ql-editor .ql-size-small {
+  font-size: 0.75em;
+}
+.ql-editor .ql-size-large {
+  font-size: 1.5em;
+}
+.ql-editor .ql-size-huge {
+  font-size: 2.5em;
+}
+.ql-editor .ql-direction-rtl {
+  direction: rtl;
+  text-align: inherit;
+}
+.ql-editor .ql-align-center {
+  text-align: center;
+}
+.ql-editor .ql-align-justify {
+  text-align: justify;
+}
+.ql-editor .ql-align-right {
+  text-align: right;
+}
+.ql-editor.ql-blank::before {
+  color: rgba(0,0,0,0.6);
+  content: attr(data-placeholder);
+  font-style: italic;
+  left: 15px;
+  pointer-events: none;
+  position: absolute;
+  right: 15px;
+}

+ 765 - 0
src/assets/css/xlsx.css

@@ -0,0 +1,765 @@
+body {
+  margin: 0;
+}
+.x-spreadsheet {
+  font-size: 13px;
+  line-height: normal;
+  user-select: none;
+  -moz-user-select: none;
+  font-family: 'Lato', 'Source Sans Pro', Roboto, Helvetica, Arial, sans-serif;
+  box-sizing: content-box;
+  background: #fff;
+  -webkit-font-smoothing: antialiased;
+}
+.x-spreadsheet textarea {
+  font: 400 13px Arial, 'Lato', 'Source Sans Pro', Roboto, Helvetica, sans-serif;
+}
+.x-spreadsheet-sheet {
+  position: relative;
+  overflow: hidden;
+}
+.x-spreadsheet-table {
+  vertical-align: bottom;
+}
+.x-spreadsheet-tooltip {
+  font-family: inherit;
+  position: absolute;
+  padding: 5px 10px;
+  color: #fff;
+  border-radius: 1px;
+  background: #000000;
+  font-size: 12px;
+  z-index: 201;
+}
+.x-spreadsheet-tooltip:before {
+  pointer-events: none;
+  position: absolute;
+  left: calc(50% - 4px);
+  top: -4px;
+  content: "";
+  width: 8px;
+  height: 8px;
+  background: inherit;
+  -webkit-transform: rotate(45deg);
+  transform: rotate(45deg);
+  z-index: 1;
+  box-shadow: 1px 1px 3px -1px rgba(0, 0, 0, 0.3);
+}
+.x-spreadsheet-color-palette {
+  padding: 5px;
+}
+.x-spreadsheet-color-palette table {
+  margin: 0;
+  padding: 0;
+  border-collapse: separate;
+  border-spacing: 2;
+  background: #fff;
+}
+.x-spreadsheet-color-palette table td {
+  margin: 0;
+  cursor: pointer;
+  border: 1px solid transparent;
+}
+.x-spreadsheet-color-palette table td:hover {
+  border-color: #ddd;
+}
+.x-spreadsheet-color-palette table td .x-spreadsheet-color-palette-cell {
+  width: 16px;
+  height: 16px;
+}
+.x-spreadsheet-border-palette {
+  padding: 6px;
+}
+.x-spreadsheet-border-palette table {
+  margin: 0;
+  padding: 0;
+  border-collapse: separate;
+  border-spacing: 0;
+  background: #fff;
+  table-layout: fixed;
+}
+.x-spreadsheet-border-palette table td {
+  margin: 0;
+}
+.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left {
+  border-right: 1px solid #eee;
+  padding-right: 6px;
+}
+.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell {
+  width: 30px;
+  height: 30px;
+  cursor: pointer;
+  text-align: center;
+}
+.x-spreadsheet-border-palette .x-spreadsheet-border-palette-left .x-spreadsheet-border-palette-cell:hover {
+  background-color: #eee;
+}
+.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right {
+  padding-left: 6px;
+}
+.x-spreadsheet-border-palette .x-spreadsheet-border-palette-right .x-spreadsheet-line-type {
+  position: relative;
+  left: 0;
+  top: -3px;
+}
+.x-spreadsheet-dropdown {
+  position: relative;
+}
+.x-spreadsheet-dropdown .x-spreadsheet-dropdown-content {
+  position: absolute;
+  z-index: 200;
+  background: #fff;
+  box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
+}
+.x-spreadsheet-dropdown.bottom-left .x-spreadsheet-dropdown-content {
+  top: calc(100% + 5px);
+  left: 0;
+}
+.x-spreadsheet-dropdown.bottom-right .x-spreadsheet-dropdown-content {
+  top: calc(100% + 5px);
+  right: 0;
+}
+.x-spreadsheet-dropdown.top-left .x-spreadsheet-dropdown-content {
+  bottom: calc(100% + 5px);
+  left: 0;
+}
+.x-spreadsheet-dropdown.top-right .x-spreadsheet-dropdown-content {
+  bottom: calc(100% + 5px);
+  right: 0;
+}
+.x-spreadsheet-dropdown .x-spreadsheet-dropdown-title {
+  padding: 0 5px;
+  display: inline-block;
+}
+/* resizer **/
+.x-spreadsheet-resizer {
+  position: absolute;
+  z-index: 11;
+}
+.x-spreadsheet-resizer .x-spreadsheet-resizer-hover {
+  background-color: rgba(75, 137, 255, 0.25);
+}
+.x-spreadsheet-resizer .x-spreadsheet-resizer-line {
+  position: absolute;
+}
+.x-spreadsheet-resizer.horizontal {
+  cursor: row-resize;
+}
+.x-spreadsheet-resizer.horizontal .x-spreadsheet-resizer-line {
+  border-bottom: 2px dashed #4b89ff;
+  left: 0;
+  bottom: 0;
+}
+.x-spreadsheet-resizer.vertical {
+  cursor: col-resize;
+}
+.x-spreadsheet-resizer.vertical .x-spreadsheet-resizer-line {
+  border-right: 2px dashed #4b89ff;
+  top: 0;
+  right: 0;
+}
+/* scrollbar */
+.x-spreadsheet-scrollbar {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  background-color: #f4f5f8;
+  opacity: 0.9;
+  z-index: 12;
+}
+.x-spreadsheet-scrollbar.horizontal {
+  right: 15px;
+  overflow-x: scroll;
+  overflow-y: hidden;
+}
+.x-spreadsheet-scrollbar.horizontal > div {
+  height: 1px;
+  background: #ddd;
+}
+.x-spreadsheet-scrollbar.vertical {
+  bottom: 15px;
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+.x-spreadsheet-scrollbar.vertical > div {
+  width: 1px;
+  background: #ddd;
+}
+/* @{css-prefix}-overlayer */
+.x-spreadsheet-overlayer {
+  position: absolute;
+  left: 0;
+  top: 0;
+  z-index: 10;
+}
+.x-spreadsheet-overlayer .x-spreadsheet-overlayer-content {
+  position: absolute;
+  overflow: hidden;
+  pointer-events: none;
+  width: 100%;
+  height: 100%;
+}
+.x-spreadsheet-editor,
+.x-spreadsheet-selector {
+  box-sizing: content-box;
+  position: absolute;
+  overflow: hidden;
+  pointer-events: none;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+/* @{css-prefix}-selector */
+.x-spreadsheet-selector .hide-input {
+  position: absolute;
+  z-index: 0;
+}
+.x-spreadsheet-selector .hide-input input {
+  padding: 0;
+  width: 0;
+  border: none!important;
+}
+.x-spreadsheet-selector .x-spreadsheet-selector-area {
+  position: absolute;
+  border: 2px solid #4b89ff;
+  background: rgba(75, 137, 255, 0.1);
+  z-index: 5;
+}
+.x-spreadsheet-selector .x-spreadsheet-selector-clipboard,
+.x-spreadsheet-selector .x-spreadsheet-selector-autofill {
+  position: absolute;
+  background: transparent;
+  z-index: 100;
+}
+.x-spreadsheet-selector .x-spreadsheet-selector-clipboard {
+  border: 2px dashed #4b89ff;
+}
+.x-spreadsheet-selector .x-spreadsheet-selector-autofill {
+  border: 1px dashed rgba(0, 0, 0, 0.45);
+}
+.x-spreadsheet-selector .x-spreadsheet-selector-corner {
+  pointer-events: auto;
+  position: absolute;
+  cursor: crosshair;
+  font-size: 0;
+  height: 5px;
+  width: 5px;
+  right: -5px;
+  bottom: -5px;
+  border: 2px solid #ffffff;
+  background: #4b89ff;
+}
+.x-spreadsheet-editor {
+  z-index: 20;
+}
+.x-spreadsheet-editor .x-spreadsheet-editor-area {
+  position: absolute;
+  text-align: left;
+  border: 2px solid #4b89ff;
+  line-height: 0;
+  z-index: 100;
+  pointer-events: auto;
+}
+.x-spreadsheet-editor .x-spreadsheet-editor-area textarea {
+  box-sizing: content-box;
+  border: none;
+  padding: 0 3px;
+  outline: none;
+  resize: none;
+  text-align: start;
+  overflow-y: hidden;
+  font: 400 13px Arial, 'Lato', 'Source Sans Pro', Roboto, Helvetica, sans-serif;
+  color: inherit;
+  white-space: normal;
+  word-wrap: break-word;
+  line-height: 22px;
+  margin: 0;
+}
+.x-spreadsheet-editor .x-spreadsheet-editor-area .textline {
+  overflow: hidden;
+  visibility: hidden;
+  position: fixed;
+  top: 0;
+  left: 0;
+}
+.x-spreadsheet-item {
+  user-select: none;
+  background: 0;
+  border: 1px solid transparent;
+  outline: none;
+  height: 26px;
+  color: rgba(0, 0, 0, 0.9);
+  line-height: 26px;
+  list-style: none;
+  padding: 2px 10px;
+  cursor: default;
+  text-align: left;
+  overflow: hidden;
+}
+.x-spreadsheet-item.disabled {
+  pointer-events: none;
+  opacity: 0.5;
+}
+.x-spreadsheet-item:hover,
+.x-spreadsheet-item.active {
+  background: rgba(0, 0, 0, 0.05);
+}
+.x-spreadsheet-item.divider {
+  height: 0;
+  padding: 0;
+  margin: 5px 0;
+  border: none;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+.x-spreadsheet-item .label {
+  float: right;
+  opacity: 0.65;
+  font-size: 1em;
+}
+.x-spreadsheet-item.state,
+.x-spreadsheet-header.state {
+  padding-left: 35px!important;
+  position: relative;
+}
+.x-spreadsheet-item.state:before,
+.x-spreadsheet-header.state:before {
+  content: '';
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  left: 12px;
+  top: calc(50% - 5px);
+  background: rgba(0, 0, 0, 0.08);
+  border-radius: 2px;
+}
+.x-spreadsheet-item.state.checked:before,
+.x-spreadsheet-header.state.checked:before {
+  background: #4b89ff;
+}
+.x-spreadsheet-checkbox {
+  position: relative;
+  display: inline-block;
+  backface-visibility: hidden;
+  outline: 0;
+  vertical-align: baseline;
+  font-style: normal;
+  font-size: 1rem;
+  line-height: 1em;
+}
+.x-spreadsheet-checkbox > input {
+  position: absolute;
+  top: 0;
+  left: 0;
+  opacity: 0!important;
+  outline: 0;
+  z-index: -1;
+}
+.x-spreadsheet-suggest,
+.x-spreadsheet-contextmenu,
+.x-spreadsheet-sort-filter {
+  position: absolute;
+  box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
+  background: #fff;
+  z-index: 100;
+  width: 260px;
+  pointer-events: auto;
+  overflow: auto;
+}
+.x-spreadsheet-suggest {
+  width: 200px;
+}
+.x-spreadsheet-filter {
+  border: 1px solid #e9e9e9;
+  font-size: 12px;
+  margin: 10px;
+}
+.x-spreadsheet-filter .x-spreadsheet-header {
+  padding: 0.5em 0.75em;
+  background: #f8f8f9;
+  border-bottom: 1px solid #e9e9e9;
+  border-left: 1px solid transparent;
+}
+.x-spreadsheet-filter .x-spreadsheet-body {
+  height: 200px;
+  overflow-y: auto;
+}
+.x-spreadsheet-filter .x-spreadsheet-body .x-spreadsheet-item {
+  height: 20px;
+  line-height: 20px;
+}
+.x-spreadsheet-sort-filter .x-spreadsheet-buttons {
+  margin: 10px;
+}
+.x-spreadsheet-bottombar {
+  height: 40px;
+  padding: 0 30px;
+  text-align: left;
+  background: #f5f6f7;
+  display: flex;
+}
+.x-spreadsheet-bottombar {
+  position: relative;
+  border-top: 1px solid #e0e2e4;
+}
+.x-spreadsheet-bottombar .x-spreadsheet-menu > li {
+  line-height: 40px;
+  height: 40px;
+  padding-top: 0;
+  padding-bottom: 0;
+  vertical-align: middle;
+  border-right: 1px solid #e8eaed;
+}
+.x-spreadsheet-menu {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+  user-select: none;
+}
+.x-spreadsheet-menu > li {
+  float: left;
+  line-height: 1.25em;
+  padding: 0.785em 1em;
+  margin: 0;
+  vertical-align: middle;
+  text-align: left;
+  font-weight: 400;
+  color: #80868b;
+  white-space: nowrap;
+  cursor: pointer;
+  transition: all 0.3s;
+  font-weight: bold;
+}
+.x-spreadsheet-menu > li.active {
+  background-color: #fff;
+  color: rgba(0, 0, 0, 0.65);
+}
+.x-spreadsheet-menu > li .x-spreadsheet-dropdown {
+  display: inline-block;
+}
+.x-spreadsheet-print {
+  position: absolute;
+  left: 0;
+  top: 0;
+  z-index: 100;
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+}
+.x-spreadsheet-print-bar {
+  background: #424242;
+  height: 60px;
+  line-height: 60px;
+  padding: 0 30px;
+}
+.x-spreadsheet-print-bar .-title {
+  color: #fff;
+  font-weight: bold;
+  font-size: 1.2em;
+  float: left;
+}
+.x-spreadsheet-print-bar .-right {
+  float: right;
+  margin-top: 12px;
+}
+.x-spreadsheet-print-content {
+  display: flex;
+  flex: auto;
+  flex-direction: row;
+  background: #d0d0d0;
+  height: calc(100% - 60px);
+}
+.x-spreadsheet-print-content .-sider {
+  flex: 0 0 300px;
+  width: 300px;
+  border-left: 2px solid #ccc;
+  background: #fff;
+}
+.x-spreadsheet-print-content .-content {
+  flex: auto;
+  overflow-x: auto;
+  overflow-y: scroll;
+  height: 100%;
+}
+.x-spreadsheet-canvas-card-wraper {
+  margin: 40px 20px;
+}
+.x-spreadsheet-canvas-card {
+  background: #fff;
+  margin: auto;
+  page-break-before: auto;
+  page-break-after: always;
+  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 5px 0 rgba(0, 0, 0, 0.2);
+}
+.x-spreadsheet-calendar {
+  color: rgba(0, 0, 0, 0.65);
+  background: #ffffff;
+  user-select: none;
+}
+.x-spreadsheet-calendar .calendar-header {
+  font-weight: 700;
+  line-height: 30px;
+  text-align: center;
+  width: 100%;
+  float: left;
+  background: #f9fafb;
+}
+.x-spreadsheet-calendar .calendar-header .calendar-header-left {
+  padding-left: 5px;
+  float: left;
+}
+.x-spreadsheet-calendar .calendar-header .calendar-header-right {
+  float: right;
+}
+.x-spreadsheet-calendar .calendar-header .calendar-header-right a {
+  padding: 3px 0;
+  margin-right: 2px;
+  border-radius: 2px;
+}
+.x-spreadsheet-calendar .calendar-header .calendar-header-right a:hover {
+  background: rgba(0, 0, 0, 0.08);
+}
+.x-spreadsheet-calendar .calendar-body {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.x-spreadsheet-calendar .calendar-body th,
+.x-spreadsheet-calendar .calendar-body td {
+  width: 14.28571429%;
+  min-width: 32px;
+  text-align: center;
+  font-weight: 700;
+  line-height: 30px;
+  padding: 0;
+}
+.x-spreadsheet-calendar .calendar-body td > .cell:hover {
+  background: #ecf6fd;
+}
+.x-spreadsheet-calendar .calendar-body td > .cell.active,
+.x-spreadsheet-calendar .calendar-body td > .cell.active:hover {
+  background: #ecf6fd;
+  color: #2185D0;
+}
+.x-spreadsheet-calendar .calendar-body td > .cell.disabled {
+  pointer-events: none;
+  opacity: 0.5;
+}
+.x-spreadsheet-datepicker {
+  box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);
+  position: absolute;
+  left: 0;
+  top: calc(100% + 5px);
+  z-index: 10;
+  width: auto;
+}
+.x-spreadsheet-buttons {
+  display: flex;
+  justify-content: flex-end;
+}
+.x-spreadsheet-buttons .x-spreadsheet-button {
+  margin-left: 8px;
+}
+.x-spreadsheet-button {
+  display: inline-block;
+  border-radius: 3px;
+  line-height: 1em;
+  min-height: 1em;
+  white-space: nowrap;
+  text-align: center;
+  cursor: pointer;
+  font-size: 1em;
+  font-weight: 700;
+  padding: 0.75em 1em;
+  color: rgba(0, 0, 0, 0.6);
+  background: #E0E1E2;
+  text-decoration: none;
+  font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif;
+  outline: none;
+  vertical-align: baseline;
+  zoom: 1;
+  user-select: none;
+  transition: all 0.1s linear;
+}
+.x-spreadsheet-button.active,
+.x-spreadsheet-button:hover {
+  background-color: #C0C1C2;
+  color: rgba(0, 0, 0, 0.8);
+}
+.x-spreadsheet-button.primary {
+  color: #fff;
+  background-color: #2185D0;
+}
+.x-spreadsheet-button.primary:hover,
+.x-spreadsheet-button.primary.active {
+  color: #fff;
+  background-color: #1678c2;
+}
+.x-spreadsheet-form-input {
+  font-size: 1em;
+  position: relative;
+  font-weight: 400;
+  display: inline-flex;
+  color: rgba(0, 0, 0, 0.87);
+}
+.x-spreadsheet-form-input input {
+  z-index: 1;
+  margin: 0;
+  max-width: 100%;
+  flex: 1 0 auto;
+  outline: 0;
+  -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+  text-align: left;
+  line-height: 30px;
+  height: 30px;
+  padding: 0 8px;
+  background: #fff;
+  border: 1px solid #e9e9e9;
+  border-radius: 3px;
+  transition: box-shadow 0.1s ease, border-color 0.1s ease;
+  box-shadow: inset 0 1px 2px hsla(0, 0%, 4%, 0.06);
+}
+.x-spreadsheet-form-input input:focus {
+  border-color: #4b89ff;
+  box-shadow: inset 0 1px 2px rgba(75, 137, 255, 0.2);
+}
+.x-spreadsheet-form-select {
+  position: relative;
+  display: inline-block;
+  background: #fff;
+  border: 1px solid #e9e9e9;
+  border-radius: 2px;
+  cursor: pointer;
+  color: rgba(0, 0, 0, 0.87);
+  user-select: none;
+  box-shadow: inset 0 1px 2px hsla(0, 0%, 4%, 0.06);
+}
+.x-spreadsheet-form-select .input-text {
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  min-width: 60px;
+  width: auto;
+  height: 30px;
+  line-height: 30px;
+  padding: 0 8px;
+}
+.x-spreadsheet-form-fields {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+}
+.x-spreadsheet-form-fields .x-spreadsheet-form-field {
+  flex: 0 1 auto;
+}
+.x-spreadsheet-form-fields .x-spreadsheet-form-field .label {
+  display: inline-block;
+  margin: 0 10px 0 0;
+}
+.x-spreadsheet-form-field {
+  display: block;
+  vertical-align: middle;
+  margin-left: 10px;
+  margin-bottom: 10px;
+}
+.x-spreadsheet-form-field:first-child {
+  margin-left: 0;
+}
+.x-spreadsheet-form-field.error .x-spreadsheet-form-select,
+.x-spreadsheet-form-field.error input {
+  border-color: #f04134;
+}
+.x-spreadsheet-form-field .tip {
+  color: #f04134;
+  font-size: 0.9em;
+}
+.x-spreadsheet-dimmer {
+  display: none;
+  position: absolute;
+  top: 0 !important;
+  left: 0 !important;
+  width: 100%;
+  height: 100%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: rgba(0, 0, 0, 0.6);
+  opacity: 0;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+  -webkit-animation-duration: 0.5s;
+  animation-duration: 0.5s;
+  transition: background-color 0.5s linear;
+  user-select: none;
+  z-index: 1000;
+}
+.x-spreadsheet-dimmer.active {
+  display: block;
+  opacity: 1;
+}
+form fieldset {
+  border: none;
+}
+form fieldset label {
+  display: block;
+  margin-bottom: 0.5em;
+  font-size: 1em;
+  color: #666;
+}
+form fieldset select {
+  font-size: 1.1em;
+  width: 100%;
+  background-color: #fff;
+  border: none;
+  border-bottom: 2px solid #ddd;
+  padding: 0.5em 0.85em;
+  border-radius: 2px;
+}
+.x-spreadsheet-modal,
+.x-spreadsheet-toast {
+  font-size: 13px;
+  position: fixed;
+  z-index: 1001;
+  text-align: left;
+  line-height: 1.25em;
+  min-width: 360px;
+  color: rgba(0, 0, 0, 0.87);
+  font-family: 'Lato', 'Source Sans Pro', Roboto, Helvetica, Arial, sans-serif;
+  border-radius: 4px;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  background-color: #fff;
+  background-clip: padding-box;
+  box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 8px;
+}
+.x-spreadsheet-toast {
+  background-color: rgba(255, 255, 255, 0.85);
+}
+.x-spreadsheet-modal-header,
+.x-spreadsheet-toast-header {
+  font-weight: 600;
+  background-clip: padding-box;
+  background-color: rgba(255, 255, 255, 0.85);
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+  border-radius: 4px 4px 0 0;
+}
+
+.x-spreadsheet-toast-header {
+  color: #F2711C;
+}
+.x-spreadsheet-modal-header {
+  border-bottom: 1px solid #e0e2e4;
+  background: rgba(0, 0, 0, 0.08);
+  font-size: 1.0785em;
+}
+.x-spreadsheet-modal-header,
+.x-spreadsheet-modal-content,
+.x-spreadsheet-toast-header,
+.x-spreadsheet-toast-content {
+  padding: 0.75em 1em;
+}
+
+.x-spreadsheet-menu li:first-child {
+  display: none;
+}
+
+.vue-office-excel {
+  height: 100%;
+}

BIN
src/assets/dd.png


BIN
src/assets/dgzz.png


BIN
src/assets/favicon.ico


BIN
src/assets/img/Close@2x.png


BIN
src/assets/img/a88848d9321bc1706685815ea2103b5.png


BIN
src/assets/img/tcs.png


BIN
src/assets/kc.png


BIN
src/assets/new1/backTop.png


BIN
src/assets/new1/bankBGC.png


BIN
src/assets/new1/banner.png


BIN
src/assets/new1/bkzd.png


BIN
src/assets/new1/ch.png


BIN
src/assets/new1/cjwt.png


BIN
src/assets/new1/course.png


BIN
src/assets/new1/courseBGC.png


BIN
src/assets/new1/cyhz.png


BIN
src/assets/new1/dlgg.png


BIN
src/assets/new1/handoutBGC.png


BIN
src/assets/new1/hxx.png


BIN
src/assets/new1/jxsl.png


BIN
src/assets/new1/kcst.png


BIN
src/assets/new1/khc.png


BIN
src/assets/new1/ksrl.png


BIN
src/assets/new1/liveBGC.png


BIN
src/assets/new1/logo-白.png


BIN
src/assets/new1/logo.png


BIN
src/assets/new1/mym.png


BIN
src/assets/new1/ppsl.png


BIN
src/assets/new1/ppssl.png


BIN
src/assets/new1/rspz.png


BIN
src/assets/new1/search-white.png


BIN
src/assets/new1/search.png


BIN
src/assets/new1/shoppingcar.png


BIN
src/assets/new1/sztd.png


BIN
src/assets/new1/sztd1.png


BIN
src/assets/new1/tenzz.png


BIN
src/assets/new1/tjbank.png


BIN
src/assets/new1/tjkc.png


BIN
src/assets/new1/tkbank.png


BIN
src/assets/new1/vipBGC.png


BIN
src/assets/new1/wechat.png


BIN
src/assets/new1/wechat2.png


BIN
src/assets/new1/xcx.png


BIN
src/assets/new1/xfk.png


BIN
src/assets/new1/zlps.png


BIN
src/assets/new1/zshktj.png


BIN
src/assets/new1/zxrx.png


BIN
src/assets/new1/zyjn.png


BIN
src/assets/new1/zykz.png


BIN
src/assets/new1/zzhteacher.png


BIN
src/assets/tk.png


BIN
src/assets/wechat.png


BIN
src/assets/wxpay.png


BIN
src/assets/zzzs/2018A1.jpg


BIN
src/assets/zzzs/2018A2.jpg


BIN
src/assets/zzzs/2018A3.jpg


BIN
src/assets/zzzs/2018A4.jpg


BIN
src/assets/zzzs/2018A5.jpg


BIN
src/assets/zzzs/2018A6.jpg


BIN
src/assets/zzzs/2018A7.jpg


BIN
src/assets/zzzs/2018A8.jpg


BIN
src/assets/zzzs/2019A1.jpg


BIN
src/assets/zzzs/bxxkz-zb.jpg


BIN
src/assets/zzzs/djz.jpg


BIN
src/assets/zzzs/facesbrzzs.jpg


BIN
src/assets/zzzs/hjgltxrz.jpg


BIN
src/assets/zzzs/zlgltxrz.jpg


BIN
src/assets/zzzs/zyhjaqgktxrz.jpg


BIN
src/assets/zzzs/zzqyzhjyxtrzzs.jpg


BIN
src/assets/zzzs/zzyxtptrzzs1.jpg


BIN
src/assets/zzzs/zzyxtptrzzs2.jpg


BIN
src/assets/zzzs/zzzhkcrzzs.jpg


Some files were not shown because too many files changed in this diff