许成详 vor 6 Jahren
Ursprung
Commit
ebdd2f0d91

+ 1
- 1
dist/index.html Datei anzeigen

@@ -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_25hulf12ph6.css><title>城的空间后台管理系统</title><link href=./static/css/app.eebfcfbd42b955c6169b6512de1fb5b9.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.7e921535e20f729cf046.js></script><script type=text/javascript src=./static/js/app.d07250824a190a3129e4.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.ad0f0e708c2d5b680a41752ff6709d72.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.08465932dde9d2199008.js></script></body></html>

+ 1
- 1
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map Datei anzeigen

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

+ 31
- 0
package-lock.json Datei anzeigen

@@ -2969,6 +2969,31 @@
2969 2969
         "sha.js": "2.4.11"
2970 2970
       }
2971 2971
     },
2972
+    "cross-env": {
2973
+      "version": "5.2.0",
2974
+      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
2975
+      "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
2976
+      "dev": true,
2977
+      "requires": {
2978
+        "cross-spawn": "6.0.5",
2979
+        "is-windows": "1.0.2"
2980
+      },
2981
+      "dependencies": {
2982
+        "cross-spawn": {
2983
+          "version": "6.0.5",
2984
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
2985
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
2986
+          "dev": true,
2987
+          "requires": {
2988
+            "nice-try": "1.0.5",
2989
+            "path-key": "2.0.1",
2990
+            "semver": "5.5.0",
2991
+            "shebang-command": "1.2.0",
2992
+            "which": "1.3.1"
2993
+          }
2994
+        }
2995
+      }
2996
+    },
2972 2997
     "cross-spawn": {
2973 2998
       "version": "5.1.0",
2974 2999
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@@ -9413,6 +9438,12 @@
9413 9438
       "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
9414 9439
       "dev": true
9415 9440
     },
9441
+    "nice-try": {
9442
+      "version": "1.0.5",
9443
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
9444
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
9445
+      "dev": true
9446
+    },
9416 9447
     "nightwatch": {
9417 9448
       "version": "0.9.21",
9418 9449
       "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-0.9.21.tgz",

+ 8
- 0
src/pages/login/index.vue Datei anzeigen

@@ -58,7 +58,15 @@ export default {
58 58
   },
59 59
   mounted () {
60 60
     this.$nextTick(function () {
61
+      var _that = this
61 62
       this.initLogin()
63
+      document.onkeydown = function (event) {
64
+        var e = event || window.event
65
+        var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode
66
+        if (keyCode === 13) {
67
+          _that.toLogin()
68
+        }
69
+      }
62 70
     })
63 71
   },
64 72
   methods: {

+ 9
- 4
src/pages/system/cardAndCouponManager/cardManager/edit.vue Datei anzeigen

@@ -447,16 +447,15 @@ export default {
447 447
         })
448 448
         return false
449 449
       }
450
+      return true
450 451
     },
451 452
     submit () { // 保存
452
-      if (!this.checkInfo()) {
453
-        return false
454
-      }
455 453
       if (this.$route.query.id) {
456 454
         if (this.date !== '') {
457 455
           this.cardInfo.StartDate = this.date[0]
458 456
           this.cardInfo.EndDate = this.date[1]
459 457
         }
458
+        this.courseList = this.courseList || []
460 459
         for (var x = 0; x < this.courseList.length; x++) {
461 460
           if (this.courseList[x].CourseId === this.cardInfo.Targets[0].TargetId) {
462 461
             this.cardInfo.Targets[0].TargetType = this.courseList[x].CourseType
@@ -464,6 +463,9 @@ export default {
464 463
           }
465 464
         }
466 465
         this.cardInfo.TotalCount = this.cardInfo.TotalCount - 0
466
+        if (!this.checkInfo()) {
467
+          return false
468
+        }
467 469
         this.editCard(this.cardInfo).then((res) => {
468 470
           this.$message({
469 471
             type: 'success',
@@ -477,6 +479,7 @@ export default {
477 479
           this.cardInfo.StartDate = this.date[0]
478 480
           this.cardInfo.EndDate = this.date[1]
479 481
         }
482
+        this.courseList = this.courseList || []
480 483
         for (var n = 0; n < this.courseList.length; n++) {
481 484
           if (this.courseList[n].CourseId === this.cardInfo.Targets[0].TargetId) {
482 485
             this.cardInfo.Targets[0].TargetType = this.courseList[n].CourseType
@@ -484,7 +487,9 @@ export default {
484 487
           }
485 488
         }
486 489
         this.cardInfo.TotalCount = this.cardInfo.TotalCount - 0
487
-        // console.log(JSON.stringify(this.cardInfo))
490
+        if (!this.checkInfo()) {
491
+          return false
492
+        }
488 493
         this.addCard(this.cardInfo).then((res) => {
489 494
           this.$message({
490 495
             type: 'success',

+ 7
- 3
src/pages/system/cardAndCouponManager/couponManager/edit.vue Datei anzeigen

@@ -679,16 +679,17 @@ export default {
679 679
         })
680 680
         return false
681 681
       }
682
+      return true
682 683
     },
683 684
     submit () { // 保存
684
-      if (!this.checkInfo()) {
685
-        return false
686
-      }
687 685
       if (this.$route.query.id) {
688 686
         if (this.couponInfo.ValidDays) {
689 687
           this.couponInfo.StartDate = undefined
690 688
           this.couponInfo.EndDate = undefined
691 689
         }
690
+        if (!this.checkInfo()) {
691
+          return false
692
+        }
692 693
         this.editCoupon({
693 694
           ...this.couponInfo,
694 695
           IsAll: this.couponInfo.IsAll - 0,
@@ -707,6 +708,9 @@ export default {
707 708
           this.couponInfo.StartDate = undefined
708 709
           this.couponInfo.EndDate = undefined
709 710
         }
711
+        if (!this.checkInfo()) {
712
+          return false
713
+        }
710 714
         this.addCoupon({
711 715
           ...this.couponInfo,
712 716
           IsAll: this.couponInfo.IsAll - 0,

+ 32
- 4
src/pages/system/caseManager/deviceManager/add.vue Datei anzeigen

@@ -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="Case" 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
@@ -30,7 +30,7 @@
30 30
           </div>
31 31
         </li>
32 32
         <li class="flex-h">
33
-          <span>设备Code:</span>
33
+          <span>设备Code:<em>*</em></span>
34 34
           <div class="flex-item">
35 35
             <div style="width:50%">
36 36
               <el-input
@@ -74,7 +74,7 @@ export default {
74 74
         return this.detail.CaseId || this.caseid
75 75
       },
76 76
       set (val) {
77
-        this.UpdateInfo({...this.detail, CaseId: val})
77
+        this.UpdateInfo({ ...this.detail, CaseId: val })
78 78
       }
79 79
     }
80 80
   },
@@ -88,6 +88,20 @@ export default {
88 88
     ]),
89 89
     submit () {
90 90
       if ((this.detail.EquipmentId || '') === '') {
91
+        if ((this.detail.Name || '') === '') {
92
+          this.$message({
93
+            message: '设备名称不能为空',
94
+            type: 'error'
95
+          })
96
+          return false
97
+        }
98
+        if ((this.detail.EquipmentCode || '') === '') {
99
+          this.$message({
100
+            message: '设备Code不能为空',
101
+            type: 'error'
102
+          })
103
+          return false
104
+        }
91 105
         this.detail.OrgId = this.orgid
92 106
         if (!this.detail.CaseId || this.detail.CaseId === '') {
93 107
           this.detail.CaseId = this.caseid
@@ -100,6 +114,20 @@ export default {
100 114
           this.$router.push({ name: 'deviceManager' })
101 115
         })
102 116
       } else {
117
+        if ((this.detail.Name || '') === '') {
118
+          this.$message({
119
+            message: '设备名称不能为空',
120
+            type: 'error'
121
+          })
122
+          return false
123
+        }
124
+        if ((this.detail.EquipmentCode || '') === '') {
125
+          this.$message({
126
+            message: '设备Code不能为空',
127
+            type: 'error'
128
+          })
129
+          return false
130
+        }
103 131
         this.UpdateDevice(this.detail).then(() => {
104 132
           this.$message({
105 133
             type: 'success',

+ 13
- 2
src/pages/system/caseManager/keyManager/index.vue Datei anzeigen

@@ -117,12 +117,14 @@
117 117
 </template>
118 118
 
119 119
 <script>
120
-import { mapState } from 'vuex'
120
+import { createNamespacedHelpers, mapState } from 'vuex'
121
+const { mapActions: mapDeviceActions } = createNamespacedHelpers('device')
121 122
 
122 123
 export default {
123 124
   name: '',
124 125
   data () {
125 126
     return {
127
+      currentItem: {},
126 128
       gridData: [],
127 129
       showCardList: false, // 显隐卡列表
128 130
       bindPhone: '', // 绑定手机号
@@ -158,11 +160,19 @@ export default {
158 160
     }
159 161
   },
160 162
   methods: {
163
+    ...mapDeviceActions([
164
+      'bindKeyByPhone',
165
+    ]),
161 166
     addKey () {
162 167
       this.$router.push({ name: 'addKey' })
163 168
     },
164 169
     sureBindPhone () { // 确认绑定手机号
165
-      this.showCardList = true
170
+      this.bindKeyByPhone({
171
+        phone: this.bindPhone,
172
+        keyid: this.currentItem.KeyId
173
+      }).then((res) => {
174
+        console.log(JSON.stringify(res))
175
+      })
166 176
     },
167 177
     search () { // 搜索
168 178
       this.postData.page = 1
@@ -186,6 +196,7 @@ export default {
186 196
       this.getList()
187 197
     },
188 198
     bindItem (index, row) { // 绑定
199
+      this.currentItem = row
189 200
       this.dialogTableVisible = true
190 201
     },
191 202
     unBindItem (index, row) { // 解绑

+ 6
- 42
src/pages/system/cmsManager/bannerManager/edit.vue Datei anzeigen

@@ -6,12 +6,12 @@
6 6
           <span>跳转类型:<em>*</em></span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%" class="radio">
9
-                <el-radio v-model="postData.ForwardType" label='1' >链接</el-radio>
10
-                <el-radio v-model="postData.ForwardType" label='0' >课程</el-radio>
9
+                <el-radio v-model="postData.ForwardType" label='url' >链接</el-radio>
10
+                <el-radio v-model="postData.ForwardType" label='course' >课程</el-radio>
11 11
             </div>
12 12
           </div>
13 13
         </li>
14
-        <li class="flex-h" v-if="postData.ForwardType==='1'">
14
+        <li class="flex-h" v-if="postData.ForwardType==='url'">
15 15
           <span>链接:<em>*</em></span>
16 16
           <div class="flex-item">
17 17
             <div style="width:50%">
@@ -126,11 +126,11 @@ export default {
126 126
   components: {},
127 127
   created () {
128 128
     this.GetCourseList({page: 1, pagesize: 100, callback: this.getDetail})
129
-    this.updateLocationInfo()
129
+    this.updateLocationAllInfo()
130 130
   },
131 131
   computed: {
132 132
     ...mapState({
133
-      positionList: x => x.cms.location,
133
+      positionList: x => x.cms.locationAll,
134 134
       OrgId: x => x.app.user.OrgId,
135 135
       caseList: x => x.app.cases.list
136 136
     }),
@@ -142,7 +142,7 @@ export default {
142 142
     ...mapCourseActions([
143 143
       'GetCourseList',
144 144
     ]),
145
-    ...mapCmsActions(['updateLocationInfo']),
145
+    ...mapCmsActions(['updateLocationAllInfo']),
146 146
     submit () {
147 147
       if (this.postData.ForwardType === 'url') {
148 148
         this.postData.ForwardResourceId = ''
@@ -188,14 +188,6 @@ export default {
188 188
       }
189 189
       this.postData.OrgId = this.OrgId
190 190
       this.postData.CaseId = this.CaseId
191
-      this.postData.ForwardType === '1' ? this.postData.ForwardType = 'url' : this.postData.ForwardType = 'course'
192
-      // this.postData.ImageUrl = ''
193
-      // for (let i = 0; i < this.imgsArr.length; i++) {
194
-      //   this.postData.ImageUrl += this.imgsArr[i].response.result.url + ','
195
-      // }
196
-      // if (this.postData.ImageUrl) {
197
-      //   this.postData.ImageUrl = this.postData.ImageUrl.substr(0, this.postData.ImageUrl.length - 1)
198
-      // }
199 191
       this.$ajax(this.$api.cms.editImage.url, {
200 192
         method: this.$api.cms.editImage.method,
201 193
         data: this.postData,
@@ -225,40 +217,12 @@ export default {
225 217
           id: this.$route.query.id
226 218
         }
227 219
       }).then(res => {
228
-        console.log(res)
229 220
         res.Status = res.Status + ''
230
-        res.ForwardType === 'url' ? res.ForwardType = '1' : res.ForwardType = '0'
231
-        // let imgsArr = []
232
-        // let item = {
233
-        //   url: res.ImageUrl,
234
-        //   response: {
235
-        //     result: {
236
-        //       url: res.ImageUrl
237
-        //     }
238
-        //   }
239
-        // }
240
-        // imgsArr.push(item)
241
-        // this.imgsArr = imgsArr
242 221
         this.postData = res
243 222
       }).catch(msg => {
244 223
 
245 224
       })
246 225
     },
247
-    // handlePictureCardPreview (res, file, fileList) {
248
-    //   this.imgs = res.result.url
249
-    //   this.dialogVisible = false
250
-    //   this.imgsArr = fileList
251
-    // },
252
-    // handleRemove (file, fileList) {
253
-    //   this.imgsArr = fileList
254
-    // },
255
-    // exceed () {
256
-    //   this.$message({
257
-    //     message: '超过可传的图片上限',
258
-    //     type: 'info',
259
-    //     duration: 1000
260
-    //   })
261
-    // }
262 226
     handleAvatarSuccess (res, file) {
263 227
       this.postData.ImageUrl = res.result.url
264 228
     }

+ 3
- 8
src/pages/system/cmsManager/bannerManager/index.vue Datei anzeigen

@@ -73,7 +73,7 @@ export default {
73 73
   },
74 74
   computed: {
75 75
     ...mapState({
76
-      positionList: x => x.cms.location
76
+      positionList: x => x.cms.locationAll,
77 77
     })
78 78
   },
79 79
   components: {
@@ -83,10 +83,10 @@ export default {
83 83
     this.updateSystemInfo().then(() => {
84 84
       this.getList()
85 85
     })
86
-    this.updateLocationInfo()
86
+    this.updateLocationAllInfo()
87 87
   },
88 88
   methods: {
89
-    ...mapCmsActions(['updateLocationInfo']),
89
+    ...mapCmsActions(['updateLocationAllInfo']),
90 90
     ...mapActions(['updateSystemInfo']),
91 91
     handleCurrentChange (val) {
92 92
       this.postData.currentPage = val
@@ -109,9 +109,6 @@ export default {
109 109
         })
110 110
       })
111 111
     },
112
-    // searchList (key) { // 搜索列表
113
-    //   console.log(key)
114
-    // },
115 112
     addBanner () {
116 113
       this.$router.push({ name: 'addBanner' })
117 114
     },
@@ -124,7 +121,6 @@ export default {
124 121
           pagesize: this.postData.pageSize
125 122
         }
126 123
       }).then(res => {
127
-        console.log(res)
128 124
         let length = res.list.length
129 125
         for (let i = 0; i < length; i++) {
130 126
           if (res.list[i].Status === 1) {
@@ -152,7 +148,6 @@ export default {
152 148
           id: id
153 149
         }
154 150
       }).then(res => {
155
-        console.log(res)
156 151
         this.$message({
157 152
           type: 'success',
158 153
           message: '删除成功!'

+ 4
- 2
src/pages/system/cmsManager/newsManager/add.vue Datei anzeigen

@@ -27,7 +27,7 @@
27 27
           <span>课程:<em>*</em></span>
28 28
           <div class="flex-item">
29 29
             <div style="width:50%">
30
-              <el-select v-model="postData.ForwardResourceId" placeholder="请选择课程">
30
+              <el-select v-model="postData.ForwardCourseId" placeholder="请选择课程">
31 31
                 <el-option
32 32
                   v-for="item in courses.list"
33 33
                   :key="item.CourseId"
@@ -137,6 +137,7 @@ export default {
137 137
       positionList: x => x.cms.locationAll,
138 138
       OrgId: x => x.app.user.OrgId,
139 139
       CaseId: x => x.app.cases.default,
140
+      defaultCaseId: x => x.app.cases.default,
140 141
     }),
141 142
     ...mapCourseState({
142 143
       courses: x => x.courseList,
@@ -171,7 +172,7 @@ export default {
171 172
         }
172 173
       } else {
173 174
         this.postData.ForwardUrl = ''
174
-        if (this.postData.ForwardResourceId === '') {
175
+        if (this.postData.ForwardCourseId === '') {
175 176
           this.$message({
176 177
             message: '课程不能为空',
177 178
             type: 'error',
@@ -200,6 +201,7 @@ export default {
200 201
         })
201 202
         return false
202 203
       }
204
+      this.postData.CaseId = this.defaultCaseId
203 205
       this.postData.locationids = this.postData.LocationIds.join(',')
204 206
       this.$ajax(this.$api.cms.addNews.url, {
205 207
         method: this.$api.cms.addNews.method,

+ 10
- 3
src/pages/system/cmsManager/newsManager/edit.vue Datei anzeigen

@@ -27,7 +27,7 @@
27 27
           <span>课程:<em>*</em></span>
28 28
           <div class="flex-item">
29 29
             <div style="width:50%">
30
-              <el-select v-model="postData.ForwardResourceId" placeholder="请选择课程">
30
+              <el-select v-model="postData.ForwardCourseId" placeholder="请选择课程">
31 31
                 <el-option
32 32
                   v-for="item in courses.list"
33 33
                   :key="item.CourseId"
@@ -100,6 +100,7 @@
100 100
 <script>
101 101
 import { mapState, createNamespacedHelpers } from 'vuex'
102 102
 const { mapActions: mapCmsActions } = createNamespacedHelpers('cms')
103
+const { mapState: mapCourseState, mapActions: mapCourseActions } = createNamespacedHelpers('course')
103 104
 export default {
104 105
   name: '',
105 106
   data () {
@@ -125,14 +126,21 @@ export default {
125 126
   created () {
126 127
     this.updateLocationInfo().then(() => {
127 128
       this.getDetail()
129
+      this.GetCourseList({ page: 1, pagesize: 10000 })
128 130
     })
129 131
   },
130 132
   computed: {
131 133
     ...mapState({
132 134
       positionList: x => x.cms.location
135
+    }),
136
+    ...mapCourseState({
137
+      courses: x => x.courseList,
133 138
     })
134 139
   },
135 140
   methods: {
141
+    ...mapCourseActions([
142
+      'GetCourseList',
143
+    ]),
136 144
     ...mapCmsActions(['updateLocationInfo']),
137 145
     submit () {
138 146
       if (this.postData.ForwardType === 'url') {
@@ -155,7 +163,7 @@ export default {
155 163
         }
156 164
       } else {
157 165
         this.postData.ForwardUrl = ''
158
-        if (this.postData.ForwardResourceId === '') {
166
+        if (this.postData.ForwardCourseId === '') {
159 167
           this.$message({
160 168
             message: '课程不能为空',
161 169
             type: 'error',
@@ -214,7 +222,6 @@ export default {
214 222
           id: this.$route.query.id
215 223
         }
216 224
       }).then(res => {
217
-        res.ForwardType === 'url' ? res.ForwardType = '1' : res.ForwardType = '0'
218 225
         res.Status += ''
219 226
         res.LocationIds = res.NewsLocations.reduce((previousValue, currentValue, index, array) => {
220 227
           previousValue.push(currentValue.LocationId)

+ 7
- 0
src/pages/system/goodsManager/goodsSpecManager/add.vue Datei anzeigen

@@ -72,6 +72,13 @@ export default {
72 72
   components: {},
73 73
   methods: {
74 74
     submit () { // 提交数据
75
+      if (this.postData.SpecName === '') {
76
+        this.$message({
77
+          message: '规格名不能为空',
78
+          type: 'error'
79
+        })
80
+        return false
81
+      }
75 82
       this.postData.OrgId = this.OrgId
76 83
       if (this.postData.CaseId === '') this.postData.CaseId = this.CaseId
77 84
       this.$ajax(this.$api.goodsManager.addGoodsSpec.url, {

+ 14
- 0
src/pages/system/goodsManager/goodsTypeManager/add.vue Datei anzeigen

@@ -94,6 +94,20 @@ export default {
94 94
   components: {},
95 95
   methods: {
96 96
     submit () {
97
+      if (this.postData.TypeName === '') {
98
+        this.$message({
99
+          type: 'error',
100
+          message: '种类名称不能为空'
101
+        })
102
+        return false
103
+      }
104
+      if (this.postData.EnglishName === '') {
105
+        this.$message({
106
+          type: 'error',
107
+          message: '种类英文不能为空'
108
+        })
109
+        return false
110
+      }
97 111
       this.postData.OrgId = this.OrgId
98 112
       if (this.postData.CaseId === '') this.postData.CaseId = this.CaseId
99 113
       this.$ajax(this.$api.goodsManager.addGoodsType.url, {

+ 7
- 0
src/pages/system/goodsManager/goodsTypeManager/edit.vue Datei anzeigen

@@ -105,6 +105,13 @@ export default {
105 105
         })
106 106
         return false
107 107
       }
108
+      if (this.postData.EnglishName === '') {
109
+        this.$message({
110
+          type: 'error',
111
+          message: '种类英文不能为空'
112
+        })
113
+        return false
114
+      }
108 115
       this.$ajax(this.$api.goodsManager.editGoodsType.url, {
109 116
         method: this.$api.goodsManager.editGoodsType.method,
110 117
         data: this.postData,

+ 10
- 0
src/store/case/device.js Datei anzeigen

@@ -16,6 +16,16 @@ export default {
16 16
     },
17 17
   },
18 18
   actions: {
19
+    bindKeyByPhone ({ commit }, payload) {
20
+      return new Promise((resolve, reject) => {
21
+        ajax(api.caseManager.bindKeyByPhone.url, {
22
+          method: api.caseManager.bindKeyByPhone.method,
23
+          urlData: { ...payload },
24
+        }).then(res => {
25
+          resolve(res)
26
+        }).catch(reject)
27
+      })
28
+    },
19 29
     bindKeyer ({ commit }, payload) {
20 30
       return new Promise((resolve, reject) => {
21 31
         ajax(api.caseManager.bindKey.url, {

+ 4
- 0
src/util/api.js Datei anzeigen

@@ -89,6 +89,10 @@ const $api = {
89 89
       method: 'get',
90 90
       url: `${baseUrl}${common}/case/key`
91 91
     },
92
+    bindKeyByPhone: {
93
+      method: 'post',
94
+      url: `${baseUrl}${common}/case/key/:phone/:keyid`
95
+    },
92 96
     bindKey: {
93 97
       method: 'post',
94 98
       url: `${baseUrl}${common}/case/key/:keyid/:customerid/:customername`