Browse Source

Merge branch 'dev' of http://git.ycjcjy.com/SpaceOfCheng/admin into dev

keyman1995 6 years ago
parent
commit
e7457a7a04
27 changed files with 306 additions and 151 deletions
  1. 2
    2
      config/index.js
  2. 1
    2
      dist/index.html
  3. 1
    2
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  4. 13
    3
      src/pages/system/cardAndCouponManager/bodyBuildingCardManager/edit.vue
  5. 11
    3
      src/pages/system/cardAndCouponManager/bodyBuildingCardManager/index.vue
  6. 22
    5
      src/pages/system/cardAndCouponManager/cardManager/edit.vue
  7. 3
    2
      src/pages/system/cardAndCouponManager/cardManager/index.vue
  8. 23
    11
      src/pages/system/cardAndCouponManager/couponManager/edit.vue
  9. 3
    2
      src/pages/system/cardAndCouponManager/couponManager/index.vue
  10. 3
    3
      src/pages/system/cardAndCouponManager/givingRecords.vue
  11. 2
    2
      src/pages/system/cardAndCouponManager/vipManager/index.vue
  12. 1
    1
      src/pages/system/caseManager/signinManager/index.vue
  13. 2
    2
      src/pages/system/channelManager/channelList/add.vue
  14. 2
    2
      src/pages/system/channelManager/channelList/edit.vue
  15. 61
    34
      src/pages/system/cmsManager/majorProjects/edit.vue
  16. 117
    38
      src/pages/system/courseManager/courseList/add.vue
  17. 4
    4
      src/pages/system/courseManager/scheduleManager/index.vue
  18. 11
    10
      src/pages/system/dashboard/index.vue
  19. 3
    3
      src/pages/system/dataStatistics/cardCouponUsedList/index.vue
  20. 2
    2
      src/pages/system/dataStatistics/courseOrderList/index.vue
  21. 3
    3
      src/pages/system/dataStatistics/goodsOrderList/index.vue
  22. 1
    1
      src/pages/system/newOrder/caseRecord/index.vue
  23. 9
    9
      src/pages/system/newOrder/newOrderList/index.vue
  24. 1
    1
      src/pages/system/systemSet/roleManager/add.vue
  25. 1
    1
      src/pages/system/systemSet/userManager/add.vue
  26. 3
    3
      src/pages/system/systemSet/userManager/edit.vue
  27. 1
    0
      src/pages/system/verificationManager/drawVerification/index.vue

+ 2
- 2
config/index.js View File

@@ -13,9 +13,9 @@ module.exports = {
13 13
       '/api': {
14 14
         // target: 'https://dp.huiju360.com.cn/hj_operations',
15 15
         // target: 'http://192.168.0.62:8080', //wf
16
-         target: 'http://127.0.0.1:8080', 
16
+        // target: 'http://127.0.0.1:8080', 
17 17
         // target: 'http://192.168.0.11', //ys
18
-        // target: 'http://192.168.0.125:8080', //hyq
18
+        target: 'http://192.168.0.125:8080', //hyq
19 19
         // target: 'http://dev.ycjcjy.com/', //frp
20 20
         changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
21 21
         // pathRewrite: {

+ 1
- 2
dist/index.html View File

@@ -1,2 +1 @@
1
-
2
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel=stylesheet href=//at.alicdn.com/t/font_775069_dwqa9wy3lkh.css><title>城的空间后台管理系统</title><link href=./static/css/app.f1330eb7ddca7c66192d24439e0e80e0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.992319e39e0ff64940a3.js></script><script type=text/javascript src=./static/js/app.bd7e90e4ab21a6bad85b.js></script></body></html>
1
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel=stylesheet href=//at.alicdn.com/t/font_775069_dwqa9wy3lkh.css><title>城的空间后台管理系统</title><link href=./static/css/app.3f22746ff9befe9fe6f3e4011c66377b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.992319e39e0ff64940a3.js></script><script type=text/javascript src=./static/js/app.c8c5753171ab375d2925.js></script></body></html>

+ 1
- 2
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map View File

@@ -1,2 +1 @@
1
-
2
-{"version":3,"sources":["webpack:///webpack/bootstrap 24ade506a94376035435"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 24ade506a94376035435"],"sourceRoot":""}
1
+{"version":3,"sources":["webpack:///webpack/bootstrap 90ac201ee119caeae796"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 90ac201ee119caeae796"],"sourceRoot":""}

+ 13
- 3
src/pages/system/cardAndCouponManager/bodyBuildingCardManager/edit.vue View File

@@ -120,7 +120,8 @@
120 120
             <div>
121 121
               <div class="addLine flex-h" style="align-item:center;margin-bottom:20px;">
122 122
                 <el-date-picker
123
-                  value-format="yyyy-MM-dd 00:00:00"
123
+                  value-format="yyyy-MM-ddT00:00:00Z"
124
+                  :picker-options="pickerOptions"
124 125
                   v-model="cardInfo.StartDate"
125 126
                   type="date"
126 127
                   placeholder="选择起始日期"
@@ -128,7 +129,8 @@
128 129
                 </el-date-picker>
129 130
                 <span style="line-height:40px;">至</span>
130 131
                 <el-date-picker
131
-                  value-format="yyyy-MM-dd 23:59:59"
132
+                  value-format="yyyy-MM-ddT23:59:59Z"
133
+                  :picker-options="pickerOptions"
132 134
                   v-model="cardInfo.EndDate"
133 135
                   type="date"
134 136
                   placeholder="选择截止日期"
@@ -276,7 +278,15 @@ export default {
276 278
       set (val) {
277 279
         this.postData.caseid = val
278 280
       }
279
-    }
281
+    },
282
+    pickerOptions () {
283
+      var beginDate = Date.now() - 24 * 60 * 60 * 1000
284
+      return {
285
+        disabledDate (time) {
286
+          return time.getTime() < beginDate
287
+        }
288
+      }
289
+    },
280 290
   },
281 291
   methods: {
282 292
     ...mapGymCardActions([

+ 11
- 3
src/pages/system/cardAndCouponManager/bodyBuildingCardManager/index.vue View File

@@ -135,13 +135,13 @@
135 135
         <ul class="dialogSearchList flex-h">
136 136
           <li class="flex-item">
137 137
             <el-date-picker
138
-              value-format="yyyy-MM-dd 00:00:00"
138
+              value-format="yyyy-MM-ddT00:00:00Z"
139 139
               v-model="dialogPostData.begindate"
140 140
               type="date"
141 141
               placeholder="选择起始日期">
142 142
             </el-date-picker>
143 143
             <el-date-picker
144
-              value-format="yyyy-MM-dd 23:59:59"
144
+              value-format="yyyy-MM-ddT23:59:59Z"
145 145
               v-model="dialogPostData.enddate"
146 146
               type="date"
147 147
               placeholder="选择截止日期">
@@ -274,7 +274,15 @@ export default {
274 274
       set (val) {
275 275
         this.postData.caseid = val
276 276
       }
277
-    }
277
+    },
278
+    pickerOptions () {
279
+      var beginDate = Date.now() - 24 * 60 * 60 * 1000
280
+      return {
281
+        disabledDate (time) {
282
+          return time.getTime() < beginDate
283
+        }
284
+      }
285
+    },
278 286
   },
279 287
   methods: {
280 288
     ...mapGymCardActions([

+ 22
- 5
src/pages/system/cardAndCouponManager/cardManager/edit.vue View File

@@ -101,7 +101,7 @@
101 101
           <span>目标课程:<em>*</em></span>
102 102
           <div class="flex-item">
103 103
             <div>
104
-              <el-select v-model="cardInfo.Targets[0].TargetId" placeholder="请选择" :disabled="isEdit">
104
+              <el-select v-model="cardInfo.Targets[0].TargetId" placeholder="请选择" :disabled="isEdit" @change="courseChange">
105 105
                 <el-option
106 106
                   v-for="item in courseList"
107 107
                   :key="item.CourseId"
@@ -119,16 +119,17 @@
119 119
             <div>
120 120
               <div class="addLine flex-h" style="align-item:center;margin-bottom:20px;">
121 121
                 <el-date-picker
122
-                  value-format="yyyy-MM-dd 00:00:00"
122
+                  value-format="yyyy-MM-ddT00:00:00Z"
123 123
                   :disabled="isEdit"
124 124
                   v-model="cardInfo.StartDate"
125
+                  :picker-options="pickerOptions"
125 126
                   type="date"
126 127
                   placeholder="选择起始日期">
127 128
                 </el-date-picker>
128 129
                 <span style="line-height:40px;">至</span>
129 130
                 <el-date-picker
130
-                  value-format="yyyy-MM-dd 23:59:59"
131
-                  :disabled="isEdit"
131
+                  value-format="yyyy-MM-ddT23:59:59Z"
132
+                  :disabled="true"
132 133
                   v-model="cardInfo.EndDate"
133 134
                   type="date"
134 135
                   placeholder="选择截止日期">
@@ -324,7 +325,16 @@ export default {
324 325
       set (val) {
325 326
         this.postData.caseid = val
326 327
       }
327
-    }
328
+    },
329
+    pickerOptions () {
330
+      var beginDate = Date.now() - 24 * 60 * 60 * 1000
331
+      var endDate = new Date(this.cardInfo.EndDate).getTime()
332
+      return {
333
+        disabledDate (time) {
334
+          return time.getTime() < beginDate || time.getTime() > endDate
335
+        }
336
+      }
337
+    },
328 338
   },
329 339
   methods: {
330 340
     ...mapCardActions([
@@ -338,6 +348,13 @@ export default {
338 348
     ...mapChannelActions([
339 349
       'GetChannelListList',
340 350
     ]),
351
+    courseChange () {
352
+      for (var n = 0; n < this.courseList.length; n++) {
353
+        if (this.courseList[n].CourseId === this.cardInfo.Targets[0].TargetId) {
354
+          this.cardInfo.EndDate = this.courseList[n].EndDate
355
+        }
356
+      }
357
+    },
341 358
     caseChange () { // 选择案场
342 359
       this.GetChannelListList({
343 360
         caseid: this.cardInfo.CaseId,

+ 3
- 2
src/pages/system/cardAndCouponManager/cardManager/index.vue View File

@@ -110,6 +110,7 @@
110 110
       title="选择赠送客户"
111 111
       :visible.sync="centerDialogVisible"
112 112
       width="800px"
113
+      @close="dialogPostData.page = 1"
113 114
       center>
114 115
       <div>
115 116
         <ul class="dialogSearchList flex-h" style="margin-bottom:10px;">
@@ -141,13 +142,13 @@
141 142
         <ul class="dialogSearchList flex-h">
142 143
           <li class="flex-item">
143 144
             <el-date-picker
144
-              value-format="yyyy-MM-dd 00:00:00"
145
+              value-format="yyyy-MM-ddT00:00:00Z"
145 146
               v-model="dialogPostData.begindate"
146 147
               type="date"
147 148
               placeholder="选择起始日期">
148 149
             </el-date-picker>
149 150
             <el-date-picker
150
-              value-format="yyyy-MM-dd 23:59:59"
151
+              value-format="yyyy-MM-ddT23:59:59Z"
151 152
               v-model="dialogPostData.enddate"
152 153
               type="date"
153 154
               placeholder="选择截止日期">

+ 23
- 11
src/pages/system/cardAndCouponManager/couponManager/edit.vue View File

@@ -162,17 +162,19 @@
162 162
               <div class="addLine flex-h" style="align-item:center;margin-bottom:20px;">
163 163
                 <el-radio v-model="postData.TimeType" label="1" :disabled="isEdit">固定时间</el-radio>
164 164
                 <el-date-picker
165
-                  value-format="yyyy-MM-dd 00:00:00"
165
+                  value-format="yyyy-MM-ddT00:00:00Z"
166 166
                   :disabled="isEdit"
167 167
                   v-model="couponInfo.StartDate"
168
+                  :picker-options="pickerOptions"
168 169
                   type="date"
169 170
                   placeholder="选择起始日期">
170 171
                 </el-date-picker>
171 172
                 <span style="line-height:40px;">至</span>
172 173
                 <el-date-picker
173
-                  value-format="yyyy-MM-dd 23:59:59"
174
+                  value-format="yyyy-MM-ddT23:59:59Z"
174 175
                   :disabled="isEdit"
175 176
                   v-model="couponInfo.EndDate"
177
+                  :picker-options="pickerOptions"
176 178
                   type="date"
177 179
                   placeholder="选择截止日期">
178 180
                 </el-date-picker>
@@ -197,17 +199,19 @@
197 199
           <div class="flex-item">
198 200
             <div>
199 201
               <el-date-picker
200
-                value-format="yyyy-MM-dd 00:00:00"
202
+                value-format="yyyy-MM-ddT00:00:00Z"
201 203
                 :disabled="isEdit"
202 204
                 v-model="couponInfo.StartDate"
205
+                :picker-options="pickerOptions"
203 206
                 type="date"
204 207
                 placeholder="选择起始日期">
205 208
               </el-date-picker>
206 209
               <span style="line-height:40px;">至</span>
207 210
               <el-date-picker
208
-                value-format="yyyy-MM-dd 23:59:59"
211
+                value-format="yyyy-MM-ddT23:59:59Z"
209 212
                 :disabled="isEdit"
210 213
                 v-model="couponInfo.EndDate"
214
+                :picker-options="pickerOptions"
211 215
                 type="date"
212 216
                 placeholder="选择截止日期">
213 217
               </el-date-picker>
@@ -491,6 +495,14 @@ export default {
491 495
         this.couponInfo.caseid = val
492 496
       }
493 497
     },
498
+    pickerOptions () {
499
+      var beginDate = Date.now() - 24 * 60 * 60 * 1000
500
+      return {
501
+        disabledDate (time) {
502
+          return time.getTime() < beginDate
503
+        }
504
+      }
505
+    },
494 506
   },
495 507
   methods: {
496 508
     ...mapGoodsActions([
@@ -588,12 +600,12 @@ export default {
588 600
       this.currentSelectArr = val
589 601
     },
590 602
     couponTypeChange () {
591
-      if (this.goodsList.length) {
592
-        this.goodsList = []
593
-      }
594
-      if (this.courseList.length) {
595
-        this.courseList = []
596
-      }
603
+      // if (this.goodsList.length) {
604
+      //   this.goodsList = []
605
+      // }
606
+      // if (this.courseList.length) {
607
+      //   this.courseList = []
608
+      // }
597 609
       this.couponInfo.Targets = []
598 610
     },
599 611
     addGoods () { // 添加指定商品
@@ -612,7 +624,7 @@ export default {
612 624
         }).then((res) => {
613 625
           this.total = res.pagenum
614 626
           this.centerDialogVisible = true
615
-          console.log(JSON.stringify(this.courseList))
627
+          // console.log(JSON.stringify(this.courseList))
616 628
         })
617 629
       }
618 630
     },

+ 3
- 2
src/pages/system/cardAndCouponManager/couponManager/index.vue View File

@@ -101,6 +101,7 @@
101 101
       title="选择赠送客户"
102 102
       :visible.sync="centerDialogVisible"
103 103
       width="800px"
104
+      @close="dialogPostData.page = 1"
104 105
       center>
105 106
       <div>
106 107
         <ul class="dialogSearchList flex-h" style="margin-bottom:10px;">
@@ -132,13 +133,13 @@
132 133
         <ul class="dialogSearchList flex-h">
133 134
           <li class="flex-item">
134 135
             <el-date-picker
135
-              value-format="yyyy-MM-dd 00:00:00"
136
+              value-format="yyyy-MM-ddT00:00:00Z"
136 137
               v-model="dialogPostData.begindate"
137 138
               type="date"
138 139
               placeholder="选择起始日期">
139 140
             </el-date-picker>
140 141
             <el-date-picker
141
-              value-format="yyyy-MM-dd 23:59:59"
142
+              value-format="yyyy-MM-ddT23:59:59Z"
142 143
               v-model="dialogPostData.enddate"
143 144
               type="date"
144 145
               placeholder="选择截止日期">

+ 3
- 3
src/pages/system/cardAndCouponManager/givingRecords.vue View File

@@ -13,14 +13,14 @@
13 13
           </li>
14 14
           <li>
15 15
             <el-date-picker
16
-              value-format="yyyy-MM-dd 00:00:00"
16
+              value-format="yyyy-MM-ddT00:00:00Z"
17 17
               v-model="postData.startDate"
18 18
               type="date"
19 19
               placeholder="选择起始日期">
20 20
             </el-date-picker>
21 21
             <span>至</span>
22 22
             <el-date-picker
23
-              value-format="yyyy-MM-dd 23:59:59"
23
+              value-format="yyyy-MM-ddT23:59:59Z"
24 24
               v-model="postData.endDate"
25 25
               type="date"
26 26
               placeholder="选择截止日期">
@@ -140,7 +140,7 @@ export default {
140 140
       this.getList()
141 141
     },
142 142
     FormatDate (date) {
143
-      return this.toolClass.dateFormat(date, 'yyyy-MM-dd hh:mm:ss')
143
+      return this.toolClass.dateFormat(date, 'yyyy-MM-ddThh:mm:ss')
144 144
     },
145 145
   }
146 146
 }

+ 2
- 2
src/pages/system/cardAndCouponManager/vipManager/index.vue View File

@@ -93,14 +93,14 @@
93 93
           prop="ActiveDate"
94 94
           label="激活时间">
95 95
           <template slot-scope="scope">
96
-            <span>{{toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-dd')==='1-01-01'?'':toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-dd hh:mm')}}</span>
96
+            <span>{{toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-dd')==='1-01-01'?'':toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-ddThh:mm')}}</span>
97 97
           </template>
98 98
         </el-table-column>
99 99
         <el-table-column
100 100
           prop="CreateDate"
101 101
           label="创建时间">
102 102
           <template slot-scope="scope">
103
-            <span>{{toolClass.dateFormat(scope.row.CreateDate, 'yyyy-MM-dd hh:mm')}}</span>
103
+            <span>{{toolClass.dateFormat(scope.row.CreateDate, 'yyyy-MM-ddThh:mm')}}</span>
104 104
           </template>
105 105
         </el-table-column>
106 106
       </el-table>

+ 1
- 1
src/pages/system/caseManager/signinManager/index.vue View File

@@ -177,7 +177,7 @@ export default {
177 177
       this.$data.valueCase = ''
178 178
     },
179 179
     FormatDate (date) {
180
-      return this.toolClass.dateFormat(date, 'yyyy-MM-dd hh:mm:ss')
180
+      return this.toolClass.dateFormat(date, 'yyyy-MM-ddThh:mm:ss')
181 181
     },
182 182
     excelSignin () { // 导出Excel
183 183
       window.open(`${this.toolClass.ReplaceOrg(this.$api.caseManager.getExcelSignin.url)}?token=${localStorage.getItem('JWT')}&selectType=${this.$data.valueTime}&caseid=${this.$data.valueCase}`, '_blank')

+ 2
- 2
src/pages/system/channelManager/channelList/add.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>选择案场:</span>
6
+          <span>选择案场:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-select v-model="CaseId" placeholder="请选择">
@@ -18,7 +18,7 @@
18 18
           </div>
19 19
         </li>
20 20
         <li class="flex-h">
21
-          <span>渠道名:</span>
21
+          <span>渠道名:<em>*</em></span>
22 22
           <div class="flex-item">
23 23
             <div style="width:50%">
24 24
               <el-input

+ 2
- 2
src/pages/system/channelManager/channelList/edit.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>选择案场:</span>
6
+          <span>选择案场:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-select v-model="CaseId" placeholder="请选择">
@@ -18,7 +18,7 @@
18 18
           </div>
19 19
         </li>
20 20
         <li class="flex-h">
21
-          <span>渠道名:</span>
21
+          <span>渠道名:<em>*</em></span>
22 22
           <div class="flex-item">
23 23
             <div style="width:50%">
24 24
               <el-input

+ 61
- 34
src/pages/system/cmsManager/majorProjects/edit.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>对应案场:</span>
6
+          <span>对应案场:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-select :disabled="id && id !== ''" v-model="CaseId" placeholder="请选择" @change="caseChange">
@@ -23,7 +23,7 @@
23 23
           </div>
24 24
         </li>
25 25
         <li class="flex-h">
26
-          <span>名称:</span>
26
+          <span>名称:<em>*</em></span>
27 27
           <div class="flex-item">
28 28
             <div style="width:50%">
29 29
               <el-input
@@ -47,20 +47,8 @@
47 47
           </div>
48 48
         </li>
49 49
         <li class="flex-h">
50
-          <span>图片:</span>
50
+          <span>图片:<em>*</em></span>
51 51
           <div class="flex-item">
52
-            <!-- <el-upload
53
-              action='string'
54
-              :http-request="toolClass.upload"
55
-              list-type="picture-card"
56
-              :limit='limit'
57
-              :file-list='imgsArr'
58
-              :on-success="handlePictureCardPreview"
59
-              :on-remove="handleRemove"
60
-              :on-exceed="exceed">
61
-              <i class="el-icon-plus"></i>
62
-            </el-upload> -->
63
-            <!-- 单选 -->
64 52
             <el-upload
65 53
               class="avatar-uploader"
66 54
               action='string'
@@ -73,20 +61,8 @@
73 61
           </div>
74 62
         </li>
75 63
         <li class="flex-h">
76
-          <span>详细图片:</span>
64
+          <span>详细图片:<em>*</em></span>
77 65
           <div class="flex-item">
78
-            <!-- <el-upload
79
-              action='string'
80
-              :http-request="toolClass.upload"
81
-              list-type="picture-card"
82
-              :limit='limit'
83
-              :file-list='detailimgsArr'
84
-              :on-success="handlePictureCardPreviewDetail"
85
-              :on-remove="handleRemoveDetail"
86
-              :on-exceed="exceed">
87
-              <i class="el-icon-plus"></i>
88
-            </el-upload> -->
89
-            <!-- 单选 -->
90 66
             <el-upload
91 67
               class="avatar-uploader"
92 68
               action='string'
@@ -99,7 +75,7 @@
99 75
           </div>
100 76
         </li>
101 77
         <li class="flex-h">
102
-          <span>专题简介:</span>
78
+          <span>专题简介:<em>*</em></span>
103 79
           <div class="flex-item">
104 80
             <div style="width:50%">
105 81
               <el-input
@@ -113,7 +89,7 @@
113 89
           </div>
114 90
         </li>
115 91
         <li class="flex-h">
116
-          <span>展示课程:</span>
92
+          <span>展示课程:<em>*</em></span>
117 93
           <div class="flex-item">
118 94
             <div style="width:50%" class="radio">
119 95
               <el-radio v-model="detail.IsAllCourse" :label='1' >全部课程</el-radio>
@@ -156,7 +132,7 @@
156 132
             <el-button type="primary" size="mini" @click="coursesShow">新增</el-button>
157 133
         </li>
158 134
         <li class="flex-h">
159
-          <span>是否前台展示:</span>
135
+          <span>是否前台展示:<em>*</em></span>
160 136
           <div class="flex-item">
161 137
             <div style="width:50%" class="radio">
162 138
               <el-radio v-model="detail.Status" :label='1' >是</el-radio>
@@ -288,15 +264,66 @@ export default {
288 264
       this.selCourseList = []
289 265
       this.detail.Courses = []
290 266
     },
267
+    checkFn (arr) {
268
+      for (var n = 0; n < arr.length; n++) {
269
+        if ((arr[n].type === 'isNull' && arr[n].target === '') || (arr[n].type === 'Array' && arr[n].target.length)) {
270
+          this.$message({
271
+            message: arr[n].errorMsg,
272
+            type: 'error'
273
+          })
274
+          return false
275
+        }
276
+      }
277
+      return true
278
+    },
291 279
     submit () {
280
+      var checkOff = this.checkFn([{
281
+        target: (this.CaseId || ''),
282
+        errorMsg: '对应案场不能为空',
283
+        type: 'isNull'
284
+      }, {
285
+        target: (this.detail.Name || ''),
286
+        errorMsg: '名称不能为空',
287
+        type: 'isNull'
288
+      }, {
289
+        target: (this.imgShow || ''),
290
+        errorMsg: '图片不能为空',
291
+        type: 'isNull'
292
+      }, {
293
+        target: (this.detailImgShow || ''),
294
+        errorMsg: '详细图片不能为空',
295
+        type: 'isNull'
296
+      }, {
297
+        target: (this.detail.DetailContent || ''),
298
+        errorMsg: '专题简介不能为空',
299
+        type: 'isNull'
300
+      }, {
301
+        target: (this.detail.IsAllCourse || ''),
302
+        errorMsg: '展示课程不能为空',
303
+        type: 'isNull'
304
+      }, {
305
+        target: ((this.detail.Status === 0 || this.detail.Status) || ''),
306
+        errorMsg: '是否前台展示不能为空',
307
+        type: 'isNull'
308
+      }])
309
+      if (!checkOff) {
310
+        return false
311
+      }
312
+      if (this.detail.IsAllCourse === '0' && !this.detail.Courses.length) {
313
+        this.$message({
314
+          message: '选择指定课程不能为空',
315
+          type: 'error'
316
+        })
317
+        return false
318
+      }
292 319
       const courseids = (this.detail.Courses || []).map(x => x.CourseId).join(',')
293 320
       if (this.id === '') {
294 321
         this.detail.OrgId = this.OrgId
295
-        this.AddCaseInfo({...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids}).then(res => {
322
+        this.AddCaseInfo({ ...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then(res => {
296 323
           this.afterSave()
297 324
         })
298 325
       } else {
299
-        this.AddCaseInfo({...this.detail, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids}).then(res => {
326
+        this.AddCaseInfo({ ...this.detail, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then(res => {
300 327
           this.afterSave()
301 328
         })
302 329
       }
@@ -318,7 +345,7 @@ export default {
318 345
       this.GetCaseInfo({ id: this.id })
319 346
     },
320 347
     getCourse () {
321
-      this.GetCourseList({caseid: this.CaseId === 'all' ? '' : this.CaseId, page: 1, pagesize: 100, status: 1})
348
+      this.GetCourseList({ caseid: this.CaseId === 'all' ? '' : this.CaseId, page: 1, pagesize: 100, status: 1 })
322 349
     },
323 350
     toggleSelection (rows) {
324 351
       if (rows) {

+ 117
- 38
src/pages/system/courseManager/courseList/add.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>课程主图:</span>
6
+          <span>课程主图:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div>
9 9
               <el-upload
@@ -19,7 +19,7 @@
19 19
           </div>
20 20
         </li>
21 21
         <li class="flex-h">
22
-          <span>课程名称:</span>
22
+          <span>课程名称:<em>*</em></span>
23 23
           <div class="flex-item">
24 24
             <div style="width: 50%;">
25 25
               <el-input
@@ -32,7 +32,7 @@
32 32
           </div>
33 33
         </li>
34 34
         <li class="flex-h">
35
-          <span>课程类型:</span>
35
+          <span>课程类型:<em>*</em></span>
36 36
           <div class="flex-item">
37 37
             <div style="width: 50%;">
38 38
               <el-select v-model="detail.LocationId" placeholder="请选择">
@@ -47,7 +47,7 @@
47 47
           </div>
48 48
         </li>
49 49
         <li class="flex-h">
50
-          <span>课程价格:</span>
50
+          <span>课程价格:<em>*</em></span>
51 51
           <div class="flex-item">
52 52
             <div style="width: 200px;">
53 53
               <el-input
@@ -60,7 +60,7 @@
60 60
           </div>
61 61
         </li>
62 62
         <li class="flex-h">
63
-          <span>案场:</span>
63
+          <span>案场:<em>*</em></span>
64 64
           <div class="flex-item">
65 65
             <div style="width: 50%;">
66 66
               <el-select v-model="CaseId" placeholder="请选择">
@@ -75,7 +75,7 @@
75 75
           </div>
76 76
         </li>
77 77
         <li class="flex-h">
78
-          <span>开课人数:</span>
78
+          <span>开课人数:<em>*</em></span>
79 79
           <div class="flex-item">
80 80
             <div style="width: 200px;">
81 81
               <el-input
@@ -88,7 +88,7 @@
88 88
           </div>
89 89
         </li>
90 90
         <li class="flex-h">
91
-          <span>最小开课人数:</span>
91
+          <span>最小开课人数:<em>*</em></span>
92 92
           <div class="flex-item">
93 93
             <div style="width: 200px;">
94 94
               <el-input
@@ -101,7 +101,7 @@
101 101
           </div>
102 102
         </li>
103 103
         <li class="flex-h">
104
-          <span>课时数:</span>
104
+          <span>课时数:<em>*</em></span>
105 105
           <div class="flex-item">
106 106
             <div style="width: 200px;">
107 107
               <el-input
@@ -114,10 +114,25 @@
114 114
           </div>
115 115
         </li>
116 116
         <li class="flex-h">
117
-          <span>课程时间:</span>
117
+          <span>课程时间:<em>*</em></span>
118 118
           <div class="flex-item">
119 119
             <div>
120 120
               <el-date-picker
121
+                value-format="yyyy-MM-ddT00:00:00Z"
122
+                :picker-options="pickerOptions"
123
+                v-model="detail.BeginDate"
124
+                type="date"
125
+                placeholder="选择起始日期">
126
+              </el-date-picker>
127
+              <span style="line-height:40px;">至</span>
128
+              <el-date-picker
129
+                value-format="yyyy-MM-ddT23:59:59Z"
130
+                :picker-options="pickerOptions"
131
+                v-model="detail.EndDate"
132
+                type="date"
133
+                placeholder="选择截止日期">
134
+              </el-date-picker>
135
+              <!-- <el-date-picker
121 136
                 v-model="courseDate"
122 137
                 type="daterange"
123 138
                 align="right"
@@ -127,7 +142,7 @@
127 142
                 end-placeholder="结束日期"
128 143
                 :default-time="['00:00:00', '23:59:59']"
129 144
                 :picker-options="pickerOptions">
130
-              </el-date-picker>
145
+              </el-date-picker> -->
131 146
             </div>
132 147
           </div>
133 148
         </li>
@@ -186,7 +201,7 @@
186 201
           </div>
187 202
         </li>
188 203
         <li class="flex-h">
189
-          <span>是否精选课程:</span>
204
+          <span>是否精选课程:<em>*</em></span>
190 205
           <div class="flex-item">
191 206
             <div>
192 207
               <el-radio v-model="detail.IsSelect" :label="1">是</el-radio>
@@ -214,33 +229,33 @@ export default {
214 229
   name: '',
215 230
   data () {
216 231
     return {
217
-      pickerOptions: {
218
-        shortcuts: [{
219
-          text: '最近一周',
220
-          onClick (picker) {
221
-            const end = new Date()
222
-            const start = new Date()
223
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
224
-            picker.$emit('pick', [start, end])
225
-          }
226
-        }, {
227
-          text: '最近一个月',
228
-          onClick (picker) {
229
-            const end = new Date()
230
-            const start = new Date()
231
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
232
-            picker.$emit('pick', [start, end])
233
-          }
234
-        }, {
235
-          text: '最近三个月',
236
-          onClick (picker) {
237
-            const end = new Date()
238
-            const start = new Date()
239
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
240
-            picker.$emit('pick', [start, end])
241
-          }
242
-        }]
243
-      },
232
+      // pickerOptions: {
233
+      //   shortcuts: [{
234
+      //     text: '最近一周',
235
+      //     onClick (picker) {
236
+      //       const end = new Date()
237
+      //       const start = new Date()
238
+      //       start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
239
+      //       picker.$emit('pick', [start, end])
240
+      //     }
241
+      //   }, {
242
+      //     text: '最近一个月',
243
+      //     onClick (picker) {
244
+      //       const end = new Date()
245
+      //       const start = new Date()
246
+      //       start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
247
+      //       picker.$emit('pick', [start, end])
248
+      //     }
249
+      //   }, {
250
+      //     text: '最近三个月',
251
+      //     onClick (picker) {
252
+      //       const end = new Date()
253
+      //       const start = new Date()
254
+      //       start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
255
+      //       picker.$emit('pick', [start, end])
256
+      //     }
257
+      //   }]
258
+      // },
244 259
     }
245 260
   },
246 261
   computed: {
@@ -266,6 +281,14 @@ export default {
266 281
         this.UpdateInfo({ ...this.detail, CaseId: val })
267 282
       }
268 283
     },
284
+    pickerOptions () {
285
+      var beginDate = Date.now() - 24 * 60 * 60 * 1000
286
+      return {
287
+        disabledDate (time) {
288
+          return time.getTime() < beginDate
289
+        }
290
+      }
291
+    },
269 292
     courseDate: {
270 293
       get () {
271 294
         return this.detail.BeginDate && this.detail.EndDate ? [this.detail.BeginDate, this.detail.EndDate] : []
@@ -308,7 +331,63 @@ export default {
308 331
     upLoad (item) {
309 332
       this.toolClass.upload(item).then((res) => { this.handleAvatarSuccess(res, item.file) })
310 333
     },
334
+    checkFn (arr) {
335
+      for (var n = 0; n < arr.length; n++) {
336
+        if ((arr[n].type === 'isNull' && arr[n].target === '') || (arr[n].type === 'Array' && arr[n].target.length)) {
337
+          this.$message({
338
+            message: arr[n].errorMsg,
339
+            type: 'error'
340
+          })
341
+          return false
342
+        }
343
+      }
344
+      return true
345
+    },
311 346
     submit () { // 提交数据
347
+      var checkOff = this.checkFn([{
348
+        target: (this.detail.CourseImg || ''),
349
+        errorMsg: '课程主图不能为空',
350
+        type: 'isNull'
351
+      }, {
352
+        target: (this.detail.CourseName || ''),
353
+        errorMsg: '课程名称不能为空',
354
+        type: 'isNull'
355
+      }, {
356
+        target: (this.detail.LocationId || ''),
357
+        errorMsg: '课程类型不能为空',
358
+        type: 'isNull'
359
+      }, {
360
+        target: (this.detail.Price || ''),
361
+        errorMsg: '课程价格不能为空',
362
+        type: 'isNull'
363
+      }, {
364
+        target: (this.detail.MaxNum || ''),
365
+        errorMsg: '开课人数不能为空',
366
+        type: 'isNull'
367
+      }, {
368
+        target: (this.detail.MinNum || ''),
369
+        errorMsg: '最小开课人数不能为空',
370
+        type: 'isNull'
371
+      }, {
372
+        target: (this.detail.CourseNum || ''),
373
+        errorMsg: '课时数不能为空',
374
+        type: 'isNull'
375
+      }, {
376
+        target: (this.detail.BeginDate || ''),
377
+        errorMsg: '起始日期不能为空',
378
+        type: 'isNull'
379
+      }, {
380
+        target: (this.detail.EndDate || ''),
381
+        errorMsg: '截止日期不能为空',
382
+        type: 'isNull'
383
+      }, {
384
+        target: ((this.detail.IsSelect === 0 || this.detail.IsSelect) || ''),
385
+        errorMsg: '是否精选课程不能为空',
386
+        type: 'isNull'
387
+      }])
388
+      if (!checkOff) {
389
+        return false
390
+      }
312 391
       const { id } = this.$route.query
313 392
       if (!id || id === '') {
314 393
         this.UpdateInfo({ ...this.detail, CourseId: '' })

+ 4
- 4
src/pages/system/courseManager/scheduleManager/index.vue View File

@@ -80,10 +80,10 @@
80 80
                   placeholder="选择开始日期"
81 81
                   >
82 82
                 </el-date-picker>
83
-                <span v-else>{{this.toolClass.dateFormat(currentCourseItem.BeginDate, 'yyyy-MM-dd hh:mm')}}</span>
83
+                <span v-else>{{this.toolClass.dateFormat(currentCourseItem.BeginDate, 'yyyy-MM-ddThh:mm')}}</span>
84 84
               </div>
85 85
             </div> -->
86
-            <span>{{this.toolClass.dateFormat(currentCourseItem.BeginDate, 'yyyy-MM-dd hh:mm')}}</span>
86
+            <span>{{this.toolClass.dateFormat(currentCourseItem.BeginDate, 'yyyy-MM-ddThh:mm')}}</span>
87 87
           </li>
88 88
           <li class="flex-h">
89 89
             <span>结束时间:</span>
@@ -95,10 +95,10 @@
95 95
                   type="datetime"
96 96
                   placeholder="选择结束日期">
97 97
                 </el-date-picker>
98
-                <span v-else>{{this.toolClass.dateFormat(currentCourseItem.EndDate, 'yyyy-MM-dd hh:mm')}}</span>
98
+                <span v-else>{{this.toolClass.dateFormat(currentCourseItem.EndDate, 'yyyy-MM-ddThh:mm')}}</span>
99 99
               </div>
100 100
             </div> -->
101
-            <span>{{this.toolClass.dateFormat(currentCourseItem.EndDate, 'yyyy-MM-dd hh:mm')}}</span>
101
+            <span>{{this.toolClass.dateFormat(currentCourseItem.EndDate, 'yyyy-MM-ddThh:mm')}}</span>
102 102
           </li>
103 103
         </ul>
104 104
       </div>

+ 11
- 10
src/pages/system/dashboard/index.vue View File

@@ -15,24 +15,24 @@
15 15
         <div v-if="subItem.type === 'dashboardList'">
16 16
           <dashboardList :data="subItem" :index="subIndex"></dashboardList>
17 17
         </div>
18
-        <!-- <div v-if="subItem.type === 'histogram' && subItem.value.length">
18
+        <div v-if="subItem.type === 'histogram' && subItem.value.length">
19 19
           <histogram :data="subItem.value" :index="index + '-' + subIndex"></histogram>
20
-        </div> -->
21
-        <!-- <div v-if="subItem.type === 'pieDiagram' && subItem.value.length">
20
+        </div>
21
+        <div v-if="subItem.type === 'pieDiagram' && typeof(subItem.value) === 'object' && subItem.value.length">
22 22
           <pieDiagram :data="subItem" :index="index + '-' + subIndex"></pieDiagram>
23
-        </div> -->
24
-        <!-- <div v-if="subItem.type === 'brokenLineGraph' && subItem.value.length">
23
+        </div>
24
+        <div v-if="subItem.type === 'brokenLineGraph' && typeof(subItem.value) === 'object' && subItem.value.length">
25 25
           <brokenLineGraph :data="subItem.value" :index="index + '-' + subIndex"></brokenLineGraph>
26 26
         </div>
27
-        <div v-if="subItem.type === 'ringChart' && subItem.value.length">
27
+        <div v-if="subItem.type === 'ringChart' && typeof(subItem.value) === 'object' && subItem.value.length">
28 28
           <ringChart :data="subItem.value" :index="index + '-' + subIndex"></ringChart>
29 29
         </div>
30
-        <div v-if="subItem.type === 'dashboard' && subItem.value.length">
30
+        <div v-if="subItem.type === 'dashboard' && typeof(subItem.value) === 'object' && subItem.value.length">
31 31
           <dashboard :data="subItem.value" :index="index + '-' + subIndex"></dashboard>
32 32
         </div>
33
-        <div v-if="subItem.type === 'brokenLineGraphGroup' && subItem.value.length">
33
+        <div v-if="subItem.type === 'brokenLineGraphGroup' && typeof(subItem.value) === 'object' && subItem.value.length">
34 34
           <brokenLineGraphGroup :data="subItem.value" :index="index + '-' + subIndex"></brokenLineGraphGroup>
35
-        </div> -->
35
+        </div>
36 36
       </div>
37 37
     </div>
38 38
   </div>
@@ -125,6 +125,7 @@ export default {
125 125
         caseid: id
126 126
       }).then((res) => {
127 127
         this.pageData = []
128
+        res = res || []
128 129
         for (var n = 0; n < res.length; n++) {
129 130
           this.pageData.push([])
130 131
           for (var a = 0; a < res[n].length; a++) {
@@ -132,7 +133,7 @@ export default {
132 133
             this.pageData[n].push(res[n][a])
133 134
           }
134 135
         }
135
-        // console.log(JSON.stringify(this.pageData))
136
+        console.log(JSON.stringify(this.pageData))
136 137
       })
137 138
     },
138 139
     getBottomData (id, type) {

+ 3
- 3
src/pages/system/dataStatistics/cardCouponUsedList/index.vue View File

@@ -50,14 +50,14 @@
50 50
           <li style="white-space: nowrap;">
51 51
             <span>有效期:</span>
52 52
             <el-date-picker
53
-              value-format="yyyy-MM-dd 00:00:00"
53
+              value-format="yyyy-MM-ddT00:00:00Z"
54 54
               v-model="postData.begindate"
55 55
               type="date"
56 56
               placeholder="选择起始日期">
57 57
             </el-date-picker>
58 58
             <span>至</span>
59 59
             <el-date-picker
60
-              value-format="yyyy-MM-dd 23:59:59"
60
+              value-format="yyyy-MM-ddT23:59:59Z"
61 61
               v-model="postData.enddate"
62 62
               type="date"
63 63
               placeholder="选择截止日期">
@@ -252,7 +252,7 @@ export default {
252 252
       this.getCardCouponUsedList(this.postData).then((res) => {
253 253
         // console.log(JSON.stringify(res))
254 254
         this.postData.page = res.page
255
-        this.total = res.total
255
+        this.total = res.pagenum
256 256
       })
257 257
     },
258 258
     exportExcel () {

+ 2
- 2
src/pages/system/dataStatistics/courseOrderList/index.vue View File

@@ -33,14 +33,14 @@
33 33
           <li style="white-space: nowrap;">
34 34
             <span>下单时间:</span>
35 35
             <el-date-picker
36
-              value-format="yyyy-MM-dd 00:00:00"
36
+              value-format="yyyy-MM-ddT00:00:00Z"
37 37
               v-model="postData.begindate"
38 38
               type="date"
39 39
               placeholder="选择起始日期">
40 40
             </el-date-picker>
41 41
             <span>至</span>
42 42
             <el-date-picker
43
-              value-format="yyyy-MM-dd 23:59:59"
43
+              value-format="yyyy-MM-ddT23:59:59Z"
44 44
               v-model="postData.enddate"
45 45
               type="date"
46 46
               placeholder="选择截止日期">

+ 3
- 3
src/pages/system/dataStatistics/goodsOrderList/index.vue View File

@@ -36,14 +36,14 @@
36 36
           <li style="white-space: nowrap;">
37 37
             <span>下单时间:</span>
38 38
             <el-date-picker
39
-              value-format="yyyy-MM-dd 00:00:00"
39
+              value-format="yyyy-MM-ddT00:00:00Z"
40 40
               v-model="postData.begindate"
41 41
               type="date"
42 42
               placeholder="选择起始日期">
43 43
             </el-date-picker>
44 44
             <span>至</span>
45 45
             <el-date-picker
46
-              value-format="yyyy-MM-dd 23:59:59"
46
+              value-format="yyyy-MM-ddT23:59:59Z"
47 47
               v-model="postData.enddate"
48 48
               type="date"
49 49
               placeholder="选择截止日期">
@@ -113,7 +113,7 @@
113 113
             <div style="font-size:12px;">下单人:{{returnListItem(goodsOrderList, index).CustomerName}}</div>
114 114
             <span style="display:block;margin-top:10px;font-size:12px;">下单时间:{{toolClass.dateFormat(returnListItem(goodsOrderList, index).CreateDate)}}</span>
115 115
           </div>
116
-          <div style="padding:10px 10px;font-size:12px;"></div>
116
+          <div style="padding:10px 10px;font-size:12px;">备注:{{item.Remark}}</div>
117 117
           <div style="text-align: right;font-size: 12px;">城的空间.诚咖啡</div>
118 118
           <div style="height:10px"></div>
119 119
         </div>

+ 1
- 1
src/pages/system/newOrder/caseRecord/index.vue View File

@@ -88,7 +88,7 @@
88 88
               <div class="flex-item">
89 89
                 <div style="width:50%">
90 90
                   <el-date-picker
91
-                    value-format="yyyy-MM-dd 00:00:00"
91
+                    value-format="yyyy-MM-ddT00:00:00Z"
92 92
                     v-model="detail.Month"
93 93
                     type="month"
94 94
                     placeholder="选择月">

+ 9
- 9
src/pages/system/newOrder/newOrderList/index.vue View File

@@ -27,10 +27,11 @@
27 27
     <div class="order-list-box">
28 28
       <div style='position:relative;' v-for="(item,index) in list" :key="index">
29 29
         <div>
30
-          <div style="padding:25px 20px 5px;border-bottom:2px solid #cccccc;">
31
-            <i class="iconfont icon-yinchenglogo" style="font-size:70px;color:red;position: relative;bottom: 20px;margin-right:10px;"></i>
30
+          <div style="padding:25px 20px 5px;border-bottom:2px solid #cccccc;display:flex;align-items: center;">
31
+            <!-- <i class="iconfont icon-yinchenglogo" style="font-size:70px;color:red;position: relative;bottom: 20px;margin-right:10px;"></i> -->
32
+            <img :src="item.AreaIcon" style="width:70px;height:70px;margin-right:10px;">
32 33
             <div style="display:inline-block;">
33
-              <span style="display:block;font-size:20px;font-weight:700;width:180px;white-space: nowrap;">{{item.AreaName + item.TableNo}}</span>
34
+              <span style="display:block;font-size:20px;font-weight:700;width:180px;white-space: initial;">{{item.AreaName + item.TableNo}}</span>
34 35
               <span style="display:block;margin-top:10px">下单时间:{{toolClass.dateFormat(item.CreateDate)}}</span>
35 36
               <span style="display:block;margin-top:10px">已等待:<span style="color:red;font-weight:700;">{{leftTimes[item.OrdersId]}}</span></span>
36 37
             </div>
@@ -42,14 +43,14 @@
42 43
               <span style="display:inline-block;width:20%;text-align:right">× {{item1.Number}}</span>
43 44
             </div>
44 45
           </div>
45
-          <!-- <div style="padding:10px 20px;border-bottom:1px solid #cccccc">备注:{{item.Remark}}</div> -->
46
+          <div style="padding:10px 20px;border-bottom:1px solid #cccccc">备注:{{item.Remark}}</div>
46 47
           <div style="padding:10px 20px;" @click="printPdf(`item${index}`)">下单人:{{item.UserName}}</div>
47 48
         </div>
48 49
         <div class="print-area" :class="'item_' + item.OrdersId" style="width:180px;">
49 50
           <div style="padding:0px 10px 5px;border-bottom:2px solid #cccccc;">
50 51
             <div style="display:inline-block;">
51 52
               <img class="topIcon" style="display:block;width:60%;margin:0 0 20px 0px;" src="http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/111101940020.png" alt="">
52
-              <span style="display:block;font-size:20px;font-weight:700;text-align: center;"> <img width='25px' height="25px" :src='item.AreaIconWhite' alt=""> {{item.AreaName}}</span>
53
+              <span style="display:block;font-size:20px;font-weight:700;text-align: center;"> <img width='25px' height="25px" :src='item.AreaIcon' alt=""> {{item.AreaName}}</span>
53 54
             </div>
54 55
           </div>
55 56
           <div style="padding:10px 10px 5px;border-bottom:1px solid #cccccc;" v-for='(item1,index1) in item.Goods' :key='index1'>
@@ -63,7 +64,7 @@
63 64
             <div style="font-size:12px;">下单人:{{item.UserName}}</div>
64 65
             <span style="display:block;margin-top:10px;font-size:12px;">下单时间:{{toolClass.dateFormat(item.CreateDate)}}</span>
65 66
           </div>
66
-          <div style="padding:10px 10px;font-size:12px;"></div>
67
+          <div style="padding:10px 10px;font-size:12px;">备注:{{item.Remark}}</div>
67 68
           <div style="text-align: right;font-size: 12px;">城的空间.诚咖啡</div>
68 69
           <div style="height:10px"></div>
69 70
         </div>
@@ -146,7 +147,6 @@ export default {
146 147
           }
147 148
         })
148 149
       })
149
-
150 150
       this.refreshList()
151 151
     },
152 152
     refreshList () {
@@ -247,8 +247,8 @@ export default {
247 247
       this.websock.onclose = console.log
248 248
     },
249 249
     websocketonmessage (e) {
250
-      const oldList = this.list
251
-      const newList = JSON.parse(e.data).data.refreshOnlineGoodsOrders
250
+      let oldList = this.list
251
+      let newList = JSON.parse(e.data).data.refreshOnlineGoodsOrders
252 252
       let newinfo = newList.filter(x => oldList.filter(item => item.OrdersId === x.OrdersId).length === 0)
253 253
       this.updateList({list: newList}).then(() => {
254 254
         for (let i = 0; i < newinfo.length; i++) {

+ 1
- 1
src/pages/system/systemSet/roleManager/add.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>角色名称:</span>
6
+          <span>角色名称:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-input

+ 1
- 1
src/pages/system/systemSet/userManager/add.vue View File

@@ -51,7 +51,7 @@
51 51
           </div>
52 52
         </li>
53 53
         <li class="flex-h">
54
-          <span>邮箱:<em>*</em></span>
54
+          <span>邮箱:</span>
55 55
           <div class="flex-item">
56 56
             <div style="width:50%">
57 57
               <el-input

+ 3
- 3
src/pages/system/systemSet/userManager/edit.vue View File

@@ -3,7 +3,7 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>帐户名称:</span>
6
+          <span>帐户名称:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-input
@@ -39,7 +39,7 @@
39 39
           </div>
40 40
         </li>
41 41
         <li class="flex-h">
42
-          <span>真实姓名:</span>
42
+          <span>真实姓名:<em>*</em></span>
43 43
           <div class="flex-item">
44 44
             <div style="width:50%">
45 45
               <el-input
@@ -75,7 +75,7 @@
75 75
           </div>
76 76
         </li>
77 77
         <li class="flex-h">
78
-          <span>手机号:</span>
78
+          <span>手机号:<em>*</em></span>
79 79
           <div class="flex-item">
80 80
             <div style="width:50%">
81 81
               <el-input

+ 1
- 0
src/pages/system/verificationManager/drawVerification/index.vue View File

@@ -30,6 +30,7 @@
30 30
       title="核销"
31 31
       :visible.sync="centerDialogVisible"
32 32
       width="500px"
33
+      @close="verificationCode = ''"
33 34
       center>
34 35
       <div v-if="centerDialogVisible">
35 36
         <el-input