浏览代码

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

wangfei 6 年前
父节点
当前提交
f1ebd5c607

+ 2
- 2
config/index.js 查看文件

@@ -12,10 +12,10 @@ module.exports = {
12 12
     proxyTable: {
13 13
       '/api': {
14 14
         // target: 'https://dp.huiju360.com.cn/hj_operations',
15
-        // target: 'http://192.168.0.62:8080', //wf
15
+        target: 'http://192.168.0.62:8080', //wf
16 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
- 1
dist/index.html 查看文件

@@ -1 +1 @@
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
+<!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.9da93fc0afa1628cf2ccaf4da55cc10e.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.d18f63f8de3ea0e97eda.js></script></body></html>

+ 1
- 1
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map 查看文件

@@ -1 +1 @@
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":""}
1
+{"version":3,"sources":["webpack:///webpack/bootstrap ec401281f26b415a60ed"],"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 ec401281f26b415a60ed"],"sourceRoot":""}

+ 2
- 2
src/pages/system/cardAndCouponManager/bodyBuildingCardManager/index.vue 查看文件

@@ -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-ddT00:00:00Z"
138
+              value-format="yyyy-MM-dd"
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-ddT23:59:59Z"
144
+              value-format="yyyy-MM-dd"
145 145
               v-model="dialogPostData.enddate"
146 146
               type="date"
147 147
               placeholder="选择截止日期">

+ 2
- 2
src/pages/system/cardAndCouponManager/cardManager/index.vue 查看文件

@@ -142,13 +142,13 @@
142 142
         <ul class="dialogSearchList flex-h">
143 143
           <li class="flex-item">
144 144
             <el-date-picker
145
-              value-format="yyyy-MM-ddT00:00:00Z"
145
+              value-format="yyyy-MM-dd"
146 146
               v-model="dialogPostData.begindate"
147 147
               type="date"
148 148
               placeholder="选择起始日期">
149 149
             </el-date-picker>
150 150
             <el-date-picker
151
-              value-format="yyyy-MM-ddT23:59:59Z"
151
+              value-format="yyyy-MM-dd"
152 152
               v-model="dialogPostData.enddate"
153 153
               type="date"
154 154
               placeholder="选择截止日期">

+ 22
- 0
src/pages/system/cardAndCouponManager/couponManager/edit.vue 查看文件

@@ -748,6 +748,28 @@ export default {
748 748
         if (this.couponInfo.ValidDays) {
749 749
           this.couponInfo.StartDate = undefined
750 750
           this.couponInfo.EndDate = undefined
751
+        } else {
752
+          if (this.couponInfo.StartDate === '') {
753
+            this.$message({
754
+              type: 'error',
755
+              message: '开始时间不能为空'
756
+            })
757
+            return false
758
+          }
759
+          if (this.couponInfo.EndDate === '') {
760
+            this.$message({
761
+              type: 'error',
762
+              message: '截止时间不能为空'
763
+            })
764
+            return false
765
+          }
766
+          if (new Date(this.couponInfo.StartDate).getTime() > new Date(this.couponInfo.EndDate).getTime()) {
767
+            this.$message({
768
+              type: 'error',
769
+              message: '开始时间不能大于截止时间'
770
+            })
771
+            return false
772
+          }
751 773
         }
752 774
         if (!this.checkInfo()) {
753 775
           return false

+ 8
- 3
src/pages/system/cardAndCouponManager/couponManager/index.vue 查看文件

@@ -8,6 +8,11 @@
8 8
         <ul>
9 9
           <li>
10 10
             <el-select v-model="CaseId" placeholder="请选择案场">
11
+              <el-option
12
+                key="all"
13
+                label="所有案场"
14
+                value="all">
15
+              </el-option>
11 16
               <el-option
12 17
                 v-for="item in cases"
13 18
                 :key="item.CaseId"
@@ -133,13 +138,13 @@
133 138
         <ul class="dialogSearchList flex-h">
134 139
           <li class="flex-item">
135 140
             <el-date-picker
136
-              value-format="yyyy-MM-ddT00:00:00Z"
141
+              value-format="yyyy-MM-dd"
137 142
               v-model="dialogPostData.begindate"
138 143
               type="date"
139 144
               placeholder="选择起始日期">
140 145
             </el-date-picker>
141 146
             <el-date-picker
142
-              value-format="yyyy-MM-ddT23:59:59Z"
147
+              value-format="yyyy-MM-dd"
143 148
               v-model="dialogPostData.enddate"
144 149
               type="date"
145 150
               placeholder="选择截止日期">
@@ -295,7 +300,7 @@ export default {
295 300
     getList () { // 获取列表
296 301
       this.GetCouponList({
297 302
         ...this.postData,
298
-        caseid: this.CaseId || this.defaultCaseId
303
+        caseid: this.postData.caseid === 'all' || this.postData.caseid === '' ? '' : this.postData.caseid
299 304
       }).then((res) => {
300 305
         this.total = res.pagenum
301 306
         // console.log(JSON.stringify(res))

+ 7
- 6
src/pages/system/cardAndCouponManager/givingRecords.vue 查看文件

@@ -13,14 +13,14 @@
13 13
           </li>
14 14
           <li>
15 15
             <el-date-picker
16
-              value-format="yyyy-MM-ddT00:00:00Z"
16
+              value-format="yyyy-MM-dd"
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-ddT23:59:59Z"
23
+              value-format="yyyy-MM-dd"
24 24
               v-model="postData.endDate"
25 25
               type="date"
26 26
               placeholder="选择截止日期">
@@ -62,7 +62,7 @@
62 62
           prop="CreateDate"
63 63
           label="赠送时间">
64 64
           <template slot-scope="scope">
65
-            <span>{{FormatDate(scope.row.CreateDate)}}</span>
65
+            <span>{{toolClass.dateFormat(scope.row.CreateDate)}}</span>
66 66
           </template>
67 67
         </el-table-column>
68 68
         <el-table-column
@@ -127,10 +127,11 @@ export default {
127 127
       this.getList()
128 128
     },
129 129
     getList () { // 获取列表
130
-      this.$ajax(this.$api.channelManager.getChannelList.url, {
131
-        method: this.$api.channelManager.getChannelList.method,
130
+      this.$ajax(this.$api.record.getRecordList.url, {
131
+        method: this.$api.record.getRecordList.method,
132 132
         queryData: { ...this.postData, caseid: this.CaseId }
133 133
       }).then(res => {
134
+        // console.log(JSON.stringify(res))
134 135
         this.currentList = res.list
135 136
         this.postData.page = res.page
136 137
         this.total = res.pagenum
@@ -140,7 +141,7 @@ export default {
140 141
       this.getList()
141 142
     },
142 143
     FormatDate (date) {
143
-      return this.toolClass.dateFormat(date, 'yyyy-MM-ddThh:mm:ss')
144
+      return this.toolClass.dateFormat(date, 'yyyy-MM-dd hh:mm:ss')
144 145
     },
145 146
   }
146 147
 }

+ 2
- 2
src/pages/system/cardAndCouponManager/vipManager/index.vue 查看文件

@@ -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-ddThh:mm')}}</span>
96
+            <span>{{toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-dd')==='1-01-01'?'':toolClass.dateFormat(scope.row.ActiveDate, 'yyyy-MM-dd hh: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-ddThh:mm')}}</span>
103
+            <span>{{toolClass.dateFormat(scope.row.CreateDate, 'yyyy-MM-dd hh:mm')}}</span>
104 104
           </template>
105 105
         </el-table-column>
106 106
       </el-table>

+ 1
- 1
src/pages/system/caseManager/signinManager/index.vue 查看文件

@@ -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-ddThh:mm:ss')
180
+      return this.toolClass.dateFormat(date, 'yyyy-MM-dd hh: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')

+ 13
- 13
src/pages/system/cmsManager/majorProjects/edit.vue 查看文件

@@ -266,7 +266,7 @@ export default {
266 266
     },
267 267
     checkFn (arr) {
268 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)) {
269
+        if (arr[n].type === 'isNull' && !arr[n].target) {
270 270
           this.$message({
271 271
             message: arr[n].errorMsg,
272 272
             type: 'error'
@@ -278,31 +278,31 @@ export default {
278 278
     },
279 279
     submit () {
280 280
       var checkOff = this.checkFn([{
281
-        target: (this.CaseId || ''),
281
+        target: Boolean(this.CaseId || ''),
282 282
         errorMsg: '对应案场不能为空',
283 283
         type: 'isNull'
284 284
       }, {
285
-        target: (this.detail.Name || ''),
285
+        target: Boolean(this.detail.Name || ''),
286 286
         errorMsg: '名称不能为空',
287 287
         type: 'isNull'
288 288
       }, {
289
-        target: (this.imgShow || ''),
289
+        target: Boolean(this.imgShow || ''),
290 290
         errorMsg: '图片不能为空',
291 291
         type: 'isNull'
292 292
       }, {
293
-        target: (this.detailImgShow || ''),
293
+        target: Boolean(this.detailImgShow || ''),
294 294
         errorMsg: '详细图片不能为空',
295 295
         type: 'isNull'
296 296
       }, {
297
-        target: (this.detail.DetailContent || ''),
297
+        target: Boolean(this.detail.DetailContent || ''),
298 298
         errorMsg: '专题简介不能为空',
299 299
         type: 'isNull'
300 300
       }, {
301
-        target: (this.detail.IsAllCourse || ''),
301
+        target: Boolean(this.detail.IsAllCourse || ''),
302 302
         errorMsg: '展示课程不能为空',
303 303
         type: 'isNull'
304 304
       }, {
305
-        target: ((this.detail.Status === 0 || this.detail.Status) || ''),
305
+        target: Boolean(String(this.detail.Status) || ''),
306 306
         errorMsg: '是否前台展示不能为空',
307 307
         type: 'isNull'
308 308
       }])
@@ -319,11 +319,13 @@ export default {
319 319
       const courseids = (this.detail.Courses || []).map(x => x.CourseId).join(',')
320 320
       if (this.id === '') {
321 321
         this.detail.OrgId = this.OrgId
322
-        this.AddCaseInfo({ ...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then(res => {
322
+        console.log(JSON.stringify({ ...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }))
323
+        this.AddCaseInfo({ ...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then((res) => {
323 324
           this.afterSave()
324 325
         })
325 326
       } else {
326
-        this.AddCaseInfo({ ...this.detail, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then(res => {
327
+        console.log(JSON.stringify({ ...this.detail, OrgId: this.OrgId, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }))
328
+        this.AddCaseInfo({ ...this.detail, imgs: this.imgShow, detailimgs: this.detailImgShow, courseids }).then((res) => {
327 329
           this.afterSave()
328 330
         })
329 331
       }
@@ -334,9 +336,7 @@ export default {
334 336
         type: 'success',
335 337
         duration: 1000
336 338
       })
337
-      setTimeout(() => {
338
-        this.$router.push({ name: 'indexCase' })
339
-      }, 1000)
339
+      this.$router.push({ name: 'indexCase' })
340 340
     },
341 341
     cancel () {
342 342
       this.$router.go(-1)

+ 2
- 2
src/pages/system/courseManager/scheduleManager/index.vue 查看文件

@@ -202,8 +202,8 @@ export default {
202 202
     },
203 203
     handlUpdateDetail () {
204 204
       this.UpdateDetail({...this.currentCourseItem,
205
-        // BeginDate: this.toolClass.dateFormat(this.currentCourseItem.BeginDate, 'yyyy-MM-ddThh:mm:ss'),
206
-        // EndDate: this.toolClass.dateFormat(this.currentCourseItem.EndDate, 'yyyy-MM-ddThh:mm:ss'),
205
+        // BeginDate: this.toolClass.dateFormat(this.currentCourseItem.BeginDate, 'yyyy-MM-dd hh:mm:ss'),
206
+        // EndDate: this.toolClass.dateFormat(this.currentCourseItem.EndDate, 'yyyy-MM-dd hh:mm:ss'),
207 207
         callback: this.AfterAction})
208 208
     },
209 209
     AfterAction () {

+ 65
- 8
src/pages/system/dashboard/index.vue 查看文件

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="subPage">
3 3
     <div class="selectCase">
4
-      <el-select v-model="postData.caseid" placeholder="请选择">
4
+      <el-select v-model="postData.caseid" placeholder="请选择" @change="caseChange">
5 5
         <el-option
6 6
           v-for="item in cases"
7 7
           :key="item.CaseId"
@@ -15,14 +15,14 @@
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' && typeof(subItem.value) === 'object' && subItem.value.length">
19 19
           <histogram :data="subItem.value" :index="index + '-' + subIndex"></histogram>
20 20
         </div>
21 21
         <div v-if="subItem.type === 'pieDiagram' && typeof(subItem.value) === 'object' && subItem.value.length">
22 22
           <pieDiagram :data="subItem" :index="index + '-' + subIndex"></pieDiagram>
23 23
         </div>
24 24
         <div v-if="subItem.type === 'brokenLineGraph' && typeof(subItem.value) === 'object' && subItem.value.length">
25
-          <brokenLineGraph :data="subItem.value" :index="index + '-' + subIndex"></brokenLineGraph>
25
+          <brokenLineGraph :data="subItem" :index="index + '-' + subIndex"></brokenLineGraph>
26 26
         </div>
27 27
         <div v-if="subItem.type === 'ringChart' && typeof(subItem.value) === 'object' && subItem.value.length">
28 28
           <ringChart :data="subItem.value" :index="index + '-' + subIndex"></ringChart>
@@ -35,6 +35,29 @@
35 35
         </div>
36 36
       </div>
37 37
     </div>
38
+    <div class="bottomData">
39
+      <div class="flex-h">
40
+        <div class="flex-item">
41
+          <h1>数据统计</h1>
42
+        </div>
43
+        <el-select v-model="bottomSelectValue" placeholder="请选择" @change="bottomChange">
44
+          <el-option
45
+            v-for="item in bottomSelect"
46
+            :key="item.id"
47
+            :label="item.value"
48
+            :value="item.id">
49
+          </el-option>
50
+        </el-select>
51
+      </div>
52
+      <ul>
53
+        <li v-for="(item,index) in bottomNav" :key="index" :class="{'active': bottomActive === index}" @click="bottomActive = index">{{item}}</li>
54
+      </ul>
55
+      <div style="height: 400px;" v-if="bottomData.length">
56
+        <div v-for="(item,index) in bottomData" :key="index" v-if="bottomActive === index && bottomData.length">
57
+          <brokenLineGraph :data="item.data" :index="'bottomData-' + index"></brokenLineGraph>
58
+        </div>
59
+      </div>
60
+    </div>
38 61
   </div>
39 62
 </template>
40 63
 
@@ -57,6 +80,17 @@ export default {
57 80
       postData: {
58 81
         caseid: ''
59 82
       },
83
+      bottomSelect: [{
84
+        value: '最近一周',
85
+        id: 'week'
86
+      }, {
87
+        value: '最近一个月',
88
+        id: 'month'
89
+      }],
90
+      bottomSelectValue: 'week',
91
+      bottomActive: 0,
92
+      bottomNav: ['推荐会员新增', '排课数', '课程预约量', '饮品下单量', '到场人次'],
93
+      bottomData: [],
60 94
       pageData: [
61 95
         [
62 96
           { type: 'dashboardList', remark: '列表面板', data: { title: '', list: [{ name: '会员总数', value: '1000', }, { name: '课程预约总量', value: '1000', }, { name: '饮品下单总量', value: '1000', }] } }
@@ -91,7 +125,8 @@ export default {
91 125
   computed: {
92 126
     ...mapState({
93 127
       cases: x => x.app.cases.list,
94
-      defaultCaseId: x => x.app.cases.default
128
+      defaultCaseId: x => x.app.cases.belongCase,
129
+      user: x => x.app.user
95 130
     }),
96 131
     CaseId: {
97 132
       get () {
@@ -108,11 +143,15 @@ export default {
108 143
         this.postData.caseid = val
109 144
       }
110 145
       this.getData(val)
111
-      this.getBottomData(val, 'week')
146
+      this.getBottomData(val, this.bottomSelectValue)
112 147
     },
113 148
   },
114 149
   mounted () {
115 150
     this.$nextTick(function () {
151
+      if (this.defaultCaseId !== null) {
152
+        this.getData(this.defaultCaseId)
153
+        this.getBottomData(this.defaultCaseId, this.bottomSelectValue)
154
+      }
116 155
     })
117 156
   },
118 157
   methods: {
@@ -120,6 +159,13 @@ export default {
120 159
       'getDashboardData',
121 160
       'getDashboardBottomData',
122 161
     ]),
162
+    bottomChange () {
163
+      this.getBottomData(this.postData.caseid, this.bottomSelectValue)
164
+    },
165
+    caseChange () {
166
+      this.getData(this.postData.caseid)
167
+      this.getBottomData(this.postData.caseid, this.bottomSelectValue)
168
+    },
123 169
     getData (id) {
124 170
       this.getDashboardData({
125 171
         caseid: id
@@ -141,7 +187,18 @@ export default {
141 187
         caseid: id,
142 188
         statype: type
143 189
       }).then((res) => {
144
-        // console.log(JSON.stringify(res))
190
+        this.bottomData = []
191
+        for (var n = 0; n < res.length; n++) {
192
+          this.bottomData.push({
193
+            type: 'brokenLineGraph',
194
+            remark: '折线图',
195
+            data: {
196
+              title: '',
197
+              value: res[n]
198
+            }
199
+          })
200
+        }
201
+        console.log(JSON.stringify(this.bottomData))
145 202
       })
146 203
     },
147 204
   }
@@ -151,9 +208,9 @@ export default {
151 208
 <!-- Add "scoped" attribute to limit CSS to this component only -->
152 209
 <style lang="scss" scoped>
153 210
 @import "page.scss";
154
-.listMargin{
211
+.listMargin {
155 212
   margin-left: 20px;
156
-  &:first-child{
213
+  &:first-child {
157 214
     margin-left: 0;
158 215
   }
159 216
 }

+ 36
- 0
src/pages/system/dashboard/page.scss 查看文件

@@ -22,6 +22,42 @@
22 22
   .top{
23 23
     
24 24
   }
25
+  .bottomData{
26
+    width: calc(100% - 40px);
27
+    margin: 0 auto;
28
+    position: relative;
29
+    overflow: hidden;
30
+    >ul{
31
+      width: 100%;
32
+      position: relative;
33
+      overflow: hidden;
34
+      font-size: 0;
35
+      white-space: nowrap;
36
+      margin: 20px auto 0;
37
+      >li{
38
+        display: inline-block;
39
+        line-height: 40px;
40
+        padding: 0 15px;
41
+        border: 1px solid #ccc;
42
+        border-left: none;
43
+        &:first-child{
44
+          border-left: 1px solid #ccc;
45
+          border-radius: 6px 0 0 6px;
46
+        }
47
+        &:last-child{
48
+          border-radius: 0 6px 6px 0;
49
+        }
50
+        &:hover{
51
+          cursor: pointer;
52
+          background: #f8f8f8;
53
+        }
54
+        &.active{
55
+          background: rgb(64, 158, 255);
56
+          color: #fff;
57
+        }
58
+      }
59
+    }
60
+  }
25 61
 }
26 62
 
27 63
 

+ 2
- 2
src/pages/system/dataStatistics/cardCouponUsedList/index.vue 查看文件

@@ -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-ddT00:00:00Z"
53
+              value-format="yyyy-MM-dd"
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-ddT23:59:59Z"
60
+              value-format="yyyy-MM-dd"
61 61
               v-model="postData.enddate"
62 62
               type="date"
63 63
               placeholder="选择截止日期">

+ 2
- 2
src/pages/system/dataStatistics/courseOrderList/index.vue 查看文件

@@ -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-ddT00:00:00Z"
36
+              value-format="yyyy-MM-dd"
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-ddT23:59:59Z"
43
+              value-format="yyyy-MM-dd"
44 44
               v-model="postData.enddate"
45 45
               type="date"
46 46
               placeholder="选择截止日期">

+ 2
- 2
src/pages/system/dataStatistics/goodsOrderList/index.vue 查看文件

@@ -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-ddT00:00:00Z"
39
+              value-format="yyyy-MM-dd"
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-ddT23:59:59Z"
46
+              value-format="yyyy-MM-dd"
47 47
               v-model="postData.enddate"
48 48
               type="date"
49 49
               placeholder="选择截止日期">

+ 1
- 1
src/pages/system/newOrder/caseRecord/index.vue 查看文件

@@ -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-ddT00:00:00Z"
91
+                    value-format="yyyy-MM-dd"
92 92
                     v-model="detail.Month"
93 93
                     type="month"
94 94
                     placeholder="选择月">

+ 13
- 2
src/pages/system/verificationManager/phoneVerification/index.vue 查看文件

@@ -20,12 +20,13 @@
20 20
       <div class="flex-h">
21 21
         <div class="flex-item">
22 22
           <div>
23
-          <el-input
23
+          <!-- <el-input
24 24
             placeholder="请输入手机号"
25 25
             v-model="phone"
26 26
             @input="phone=phone.replace(/\D/g,'')"
27 27
             clearable>
28
-          </el-input>
28
+          </el-input> -->
29
+          <input class="inputBorder" placeholder="请输入手机号" type="text" v-model="phone" @input="phone=phone.replace(/\D/g,'')">
29 30
           </div>
30 31
         </div>
31 32
         <el-button type="danger" @click="toVerificationList">立即核销</el-button>
@@ -81,5 +82,15 @@ export default {
81 82
       }
82 83
     }
83 84
   }
85
+  .inputBorder{
86
+    width: 100%;
87
+    display: block;
88
+    box-sizing: border-box;
89
+    border: 1px solid #ccc;
90
+    line-height: 20px;
91
+    padding: 10px 0;
92
+    text-indent: 10px;
93
+    border-radius: 6px;
94
+  }
84 95
 }
85 96
 </style>

+ 3
- 1
src/store/app.js 查看文件

@@ -54,6 +54,7 @@ export default {
54 54
     cases: {
55 55
       list: [],
56 56
       default: '',
57
+      belongCase: null,
57 58
     },
58 59
     roles: [],
59 60
     user: {},
@@ -75,7 +76,8 @@ export default {
75 76
 
76 77
       state.cases = {
77 78
         list: data.cases,
78
-        default: defaultCase
79
+        default: defaultCase,
80
+        belongCase: defaultCase,
79 81
       }
80 82
     },
81 83
 

+ 2
- 2
src/store/cms/case.js 查看文件

@@ -28,8 +28,8 @@ export default {
28 28
         this.$ajax(this.$api.cms.addCase.url, {
29 29
           method: this.$api.cms.addCase.method,
30 30
           data: payload
31
-        }).then(res => {
32
-          resolve()
31
+        }).then((res) => {
32
+          resolve(res)
33 33
         })
34 34
       })
35 35
     },

+ 3
- 1
src/util/ajax.js 查看文件

@@ -47,7 +47,9 @@ Axios.interceptors.request.use((config) => {
47 47
   let fm = new FormData()
48 48
   for (let k in config.data) {
49 49
     if (Array.isArray(config.data[k])) {
50
-      fm.append(k, ...config.data[k].map(v => `${k}=${encodeURIComponent(v)}`))
50
+      config.data[k].forEach((v) => {
51
+        fm.append(k, v)
52
+      })
51 53
     } else {
52 54
       fm.append(k, config.data[k])
53 55
     }

+ 1
- 1
src/util/api.js 查看文件

@@ -821,7 +821,7 @@ const $api = {
821 821
   record: {
822 822
     getRecordList: {
823 823
       method: 'get',
824
-      url: `${baseUrl}${common}/card/record`
824
+      url: `${baseUrl}${common}/record`
825 825
     }
826 826
   }
827 827
 }