suochencheng vor 7 Jahren
Ursprung
Commit
a8ba5c9692
86 geänderte Dateien mit 1981 neuen und 605 gelöschten Zeilen
  1. 332 322
      src/main/java/com/izouma/awesomeadmin/dao/ArContentMapper.xml
  2. 113 81
      src/main/java/com/izouma/awesomeadmin/model/ArContent.java
  3. 535 0
      src/main/vue/package-lock.json
  4. 1 0
      src/main/vue/package.json
  5. 161 0
      src/main/vue/src/components/ArContent.vue
  6. 180 0
      src/main/vue/src/components/ArContentTemplateStep2.vue
  7. 135 0
      src/main/vue/src/components/ArContentTemplateStep3.vue
  8. 143 0
      src/main/vue/src/components/ArContentTemplateStep4.vue
  9. 88 89
      src/main/vue/src/pages/ArContent.vue
  10. 103 108
      src/main/vue/src/pages/ArContentChild.vue
  11. 57 0
      src/main/vue/src/pages/ArContentTemplate.vue
  12. 119 0
      src/main/vue/src/pages/MyCanvas.vue
  13. 10 1
      src/main/vue/src/router/index.js
  14. 1 1
      src/main/webapp/WEB-INF/html/admin.html
  15. 1 1
      src/main/webapp/WEB-INF/html/loginAdmin.html
  16. 0 0
      src/main/webapp/static/css/admin.54d9583e8d7b01d17c069994c453f14e.css
  17. 0 0
      src/main/webapp/static/js/10.809625e125728dc7b775.js
  18. 0 0
      src/main/webapp/static/js/11.40d40fe411ac4d84f141.js
  19. 0 0
      src/main/webapp/static/js/12.0708ee5cdb1a5e407e80.js
  20. 0 0
      src/main/webapp/static/js/13.faa3a65a5c6bd0c39549.js
  21. 0 0
      src/main/webapp/static/js/14.4713ee4e9bdf3971f188.js
  22. 0 0
      src/main/webapp/static/js/15.07d34f38b6681b9e6de6.js
  23. 0 0
      src/main/webapp/static/js/16.3901369d3a160518c495.js
  24. 0 0
      src/main/webapp/static/js/17.0b7e99ce257deeff1e94.js
  25. 0 0
      src/main/webapp/static/js/18.740d4f8f1ed10f2be058.js
  26. 0 0
      src/main/webapp/static/js/19.a7ca75cfbaa430be4930.js
  27. 0 0
      src/main/webapp/static/js/20.a557331416410eca25d1.js
  28. 0 0
      src/main/webapp/static/js/21.7057a6fe59fe25a2cb97.js
  29. 0 0
      src/main/webapp/static/js/22.799abb526fd18556c30d.js
  30. 0 0
      src/main/webapp/static/js/23.d015e2e05252a084d4fa.js
  31. 0 0
      src/main/webapp/static/js/24.01b7b74c64a58958ad78.js
  32. 0 0
      src/main/webapp/static/js/24.c39883ca5a2885fac692.js
  33. 0 0
      src/main/webapp/static/js/26.9c39b16e40cebdeb3c8c.js
  34. 0 0
      src/main/webapp/static/js/26.ca372a4b002a9bf81c66.js
  35. 0 0
      src/main/webapp/static/js/27.7928d17ab2acd9d367e5.js
  36. 0 0
      src/main/webapp/static/js/28.8f25eaf03c4811bfe6be.js
  37. 0 0
      src/main/webapp/static/js/29.fb854c5e3fc75c9a3e0e.js
  38. 0 0
      src/main/webapp/static/js/30.ca2514af9a66c3e89fa9.js
  39. 0 0
      src/main/webapp/static/js/31.5a8765bf3dd4d368d68e.js
  40. 0 0
      src/main/webapp/static/js/32.95554048d5cab3e492ac.js
  41. 0 0
      src/main/webapp/static/js/33.bf694e1cc7cdf8e4d056.js
  42. 0 0
      src/main/webapp/static/js/34.651ea2053401803be6f6.js
  43. 0 0
      src/main/webapp/static/js/35.d528bdb82b66391b35d0.js
  44. 0 0
      src/main/webapp/static/js/36.13f7dd40584ab3262939.js
  45. 0 0
      src/main/webapp/static/js/37.1010974cc9f31fc7e93f.js
  46. 0 0
      src/main/webapp/static/js/38.448ad75433d9614c038c.js
  47. 0 0
      src/main/webapp/static/js/39.01f0e2d42bdb13f06210.js
  48. 0 0
      src/main/webapp/static/js/40.0ce7e711fbb5686f0082.js
  49. 0 0
      src/main/webapp/static/js/41.cae5ce96990376eb0009.js
  50. 0 0
      src/main/webapp/static/js/42.46f3b4116f76c118e335.js
  51. 0 0
      src/main/webapp/static/js/42.5df5ad2f5b8de487ac0b.js
  52. 0 0
      src/main/webapp/static/js/43.e72bd5d4a284b97f6b67.js
  53. 0 0
      src/main/webapp/static/js/44.f5db0b2068fe41544931.js
  54. 0 0
      src/main/webapp/static/js/45.cf3509507b36b451a9cf.js
  55. 0 0
      src/main/webapp/static/js/46.10cd17479b65180bd389.js
  56. 0 0
      src/main/webapp/static/js/47.08f2164be86427ed1d6e.js
  57. 0 0
      src/main/webapp/static/js/48.11bd7e5576d8ea59a83e.js
  58. 0 0
      src/main/webapp/static/js/49.c693245dd830efee471d.js
  59. 0 0
      src/main/webapp/static/js/50.a3d74f5c30ded9a81bd2.js
  60. 0 0
      src/main/webapp/static/js/51.cd8a93ed20265b8ffe75.js
  61. 0 0
      src/main/webapp/static/js/52.2a4a6578f0cbd2916341.js
  62. 0 0
      src/main/webapp/static/js/53.5dd43657f182618a3a62.js
  63. 0 0
      src/main/webapp/static/js/54.497a0a9ccd2559371a1d.js
  64. 0 0
      src/main/webapp/static/js/55.722948888a8cd35f3926.js
  65. 0 0
      src/main/webapp/static/js/56.e4d18998d6bc52859e4f.js
  66. 1 1
      src/main/webapp/static/js/57.c06efdf5e546168bb03e.js
  67. 0 0
      src/main/webapp/static/js/58.060e40bb14ce839fe8af.js
  68. 0 0
      src/main/webapp/static/js/59.e455f828a49974e13238.js
  69. 0 0
      src/main/webapp/static/js/60.b353052c0e694b363108.js
  70. 0 0
      src/main/webapp/static/js/61.a4eb30d6d8edaf4387bc.js
  71. 0 0
      src/main/webapp/static/js/62.fbb8219b40261e905ed5.js
  72. 0 0
      src/main/webapp/static/js/63.811fa917750e65257065.js
  73. 0 0
      src/main/webapp/static/js/64.fa96d36fb1f947fc8a38.js
  74. 1 1
      src/main/webapp/static/js/65.a7f9133528374df1b30a.js
  75. 0 0
      src/main/webapp/static/js/66.ce237318d6dbb38b8c1a.js
  76. 0 0
      src/main/webapp/static/js/67.eca8d6551f7f16cf7b46.js
  77. 0 0
      src/main/webapp/static/js/7.db9c08dde61335d9d6f8.js
  78. 0 0
      src/main/webapp/static/js/8.6c34033501a6f2017bc7.js
  79. 0 0
      src/main/webapp/static/js/9.680c0644d939394868b4.js
  80. 0 0
      src/main/webapp/static/js/9.db0cac329c209aa19339.js
  81. 0 0
      src/main/webapp/static/js/admin.40932256d9566e11f5d4.js
  82. 0 0
      src/main/webapp/static/js/admin.d8287b4dc2af02c01bba.js
  83. 0 0
      src/main/webapp/static/js/loginAdmin.503b7a5df8a33b3fe30a.js
  84. 0 0
      src/main/webapp/static/js/manifest.2ee9655a2d9c044957f7.js
  85. 0 0
      src/main/webapp/static/js/manifest.ede6705ad2ef33c82f83.js
  86. 0 0
      src/main/webapp/static/js/vendor.e45891dc2e3759c91121.js

Datei-Diff unterdrückt, da er zu groß ist
+ 332 - 322
src/main/java/com/izouma/awesomeadmin/dao/ArContentMapper.xml


+ 113 - 81
src/main/java/com/izouma/awesomeadmin/model/ArContent.java

@@ -1,13 +1,14 @@
 package com.izouma.awesomeadmin.model;
 
 import java.util.*;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 
 @JsonAutoDetect
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ArContent{
+public class ArContent {
     private Integer id;
     private String delFlag;
     private Date updateTime;
@@ -32,213 +33,244 @@ public class ArContent{
     private String remark5;
     private String remark6;
 
-private String idStr;
+    private List<ArContentChild> arContentChildList;
+
+    private String idStr;
 
-private String searchKey;
+    private String searchKey;
 
-/**
-* and,test_name,like,value;or,remark,=,123
-*/
-private String advancedQuery;
+    /**
+     * and,test_name,like,value;or,remark,=,123
+     */
+    private String advancedQuery;
 
-/**
-* column_name_,desc_;column_name_,asc
-*/
-private String orderByStr;
+    /**
+     * column_name_,desc_;column_name_,asc
+     */
+    private String orderByStr;
 
-    public Integer getId(){
+    public Integer getId() {
         return this.id;
     }
 
-    public void setId(Integer id){
+    public void setId(Integer id) {
         this.id = id;
     }
-    public String getDelFlag(){
+
+    public String getDelFlag() {
         return this.delFlag;
     }
 
-    public void setDelFlag(String delFlag){
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
-    public Date getUpdateTime(){
+
+    public Date getUpdateTime() {
         return this.updateTime;
     }
 
-    public void setUpdateTime(Date updateTime){
+    public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    public String getUpdateUser(){
+
+    public String getUpdateUser() {
         return this.updateUser;
     }
 
-    public void setUpdateUser(String updateUser){
+    public void setUpdateUser(String updateUser) {
         this.updateUser = updateUser;
     }
-    public Date getCreateTime(){
+
+    public Date getCreateTime() {
         return this.createTime;
     }
 
-    public void setCreateTime(Date createTime){
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    public String getCreateUser(){
+
+    public String getCreateUser() {
         return this.createUser;
     }
 
-    public void setCreateUser(String createUser){
+    public void setCreateUser(String createUser) {
         this.createUser = createUser;
     }
-    public String getGroupId(){
+
+    public String getGroupId() {
         return this.groupId;
     }
 
-    public void setGroupId(String groupId){
+    public void setGroupId(String groupId) {
         this.groupId = groupId;
     }
-    public String getName(){
+
+    public String getName() {
         return this.name;
     }
 
-    public void setName(String name){
+    public void setName(String name) {
         this.name = name;
     }
-    public String getType(){
+
+    public String getType() {
         return this.type;
     }
 
-    public void setType(String type){
+    public void setType(String type) {
         this.type = type;
     }
-    public String getText(){
+
+    public String getText() {
         return this.text;
     }
 
-    public void setText(String text){
+    public void setText(String text) {
         this.text = text;
     }
-    public String getImage(){
+
+    public String getImage() {
         return this.image;
     }
 
-    public void setImage(String image){
+    public void setImage(String image) {
         this.image = image;
     }
-    public String getUrl(){
+
+    public String getUrl() {
         return this.url;
     }
 
-    public void setUrl(String url){
+    public void setUrl(String url) {
         this.url = url;
     }
-    public String getVoice(){
+
+    public String getVoice() {
         return this.voice;
     }
 
-    public void setVoice(String voice){
+    public void setVoice(String voice) {
         this.voice = voice;
     }
-    public String getMovie(){
+
+    public String getMovie() {
         return this.movie;
     }
 
-    public void setMovie(String movie){
+    public void setMovie(String movie) {
         this.movie = movie;
     }
-    public String getModel(){
+
+    public String getModel() {
         return this.model;
     }
 
-    public void setModel(String model){
+    public void setModel(String model) {
         this.model = model;
     }
-    public String getCfile(){
+
+    public String getCfile() {
         return this.cfile;
     }
 
-    public void setCfile(String cfile){
+    public void setCfile(String cfile) {
         this.cfile = cfile;
     }
-    public String getResourceSize(){
+
+    public String getResourceSize() {
         return this.resourceSize;
     }
 
-    public void setResourceSize(String resourceSize){
+    public void setResourceSize(String resourceSize) {
         this.resourceSize = resourceSize;
     }
-    public String getRemark1(){
+
+    public String getRemark1() {
         return this.remark1;
     }
 
-    public void setRemark1(String remark1){
+    public void setRemark1(String remark1) {
         this.remark1 = remark1;
     }
-    public String getRemark2(){
+
+    public String getRemark2() {
         return this.remark2;
     }
 
-    public void setRemark2(String remark2){
+    public void setRemark2(String remark2) {
         this.remark2 = remark2;
     }
-    public String getRemark3(){
+
+    public String getRemark3() {
         return this.remark3;
     }
 
-    public void setRemark3(String remark3){
+    public void setRemark3(String remark3) {
         this.remark3 = remark3;
     }
-    public String getRemark4(){
+
+    public String getRemark4() {
         return this.remark4;
     }
 
-    public void setRemark4(String remark4){
+    public void setRemark4(String remark4) {
         this.remark4 = remark4;
     }
-    public String getRemark5(){
+
+    public String getRemark5() {
         return this.remark5;
     }
 
-    public void setRemark5(String remark5){
+    public void setRemark5(String remark5) {
         this.remark5 = remark5;
     }
-    public String getRemark6(){
+
+    public String getRemark6() {
         return this.remark6;
     }
 
-    public void setRemark6(String remark6){
+    public void setRemark6(String remark6) {
         this.remark6 = remark6;
     }
 
-public String getSearchKey() {
-    return searchKey;
-}
+    public String getSearchKey() {
+        return searchKey;
+    }
 
-public void setSearchKey(String searchKey) {
-    this.searchKey = searchKey;
-}
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
 
-public String getAdvancedQuery() {
-    return advancedQuery;
-}
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
 
-public void setAdvancedQuery(String advancedQuery) {
-    this.advancedQuery = advancedQuery;
-}
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
 
-public String getOrderByStr() {
-    return orderByStr;
-}
+    public String getOrderByStr() {
+        return orderByStr;
+    }
 
-public void setOrderByStr(String orderByStr) {
-    this.orderByStr = orderByStr;
-}
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
 
-public String getIdStr() {
-    return idStr;
-}
+    public String getIdStr() {
+        return idStr;
+    }
 
-public void setIdStr(String idStr) {
-    this.idStr = idStr;
-}
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
 
+    public List<ArContentChild> getArContentChildList() {
+        return arContentChildList;
+    }
+
+    public void setArContentChildList(List<ArContentChild> arContentChildList) {
+        this.arContentChildList = arContentChildList;
+    }
 }
 

+ 535 - 0
src/main/vue/package-lock.json

@@ -1753,6 +1753,7 @@
         "anymatch": "2.0.0",
         "async-each": "1.0.1",
         "braces": "2.3.1",
+        "fsevents": "1.2.4",
         "glob-parent": "3.1.0",
         "inherits": "2.0.3",
         "is-binary-path": "1.0.1",
@@ -3974,6 +3975,535 @@
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
+    "fsevents": {
+      "version": "1.2.4",
+      "resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.4.tgz",
+      "integrity": "sha1-9B3LGvJYKvNpLaNvxVy9jhBBxCY=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "nan": "2.11.0",
+        "node-pre-gyp": "0.10.0"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "1.0.0",
+            "readable-stream": "2.3.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "deep-extend": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "2.2.4"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "1.2.0",
+            "console-control-strings": "1.1.0",
+            "has-unicode": "2.0.1",
+            "object-assign": "4.1.1",
+            "signal-exit": "3.0.2",
+            "string-width": "1.0.2",
+            "strip-ansi": "3.0.1",
+            "wide-align": "1.1.2"
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "1.0.0",
+            "inflight": "1.0.6",
+            "inherits": "2.0.3",
+            "minimatch": "3.0.4",
+            "once": "1.4.0",
+            "path-is-absolute": "1.0.1"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.21",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": "2.1.2"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "1.4.0",
+            "wrappy": "1.0.2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "number-is-nan": "1.0.1"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "1.1.11"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true
+        },
+        "minipass": {
+          "version": "2.2.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "5.1.1",
+            "yallist": "3.0.2"
+          }
+        },
+        "minizlib": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "2.2.4"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "2.6.9",
+            "iconv-lite": "0.4.21",
+            "sax": "1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.10.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "1.0.3",
+            "mkdirp": "0.5.1",
+            "needle": "2.2.0",
+            "nopt": "4.0.1",
+            "npm-packlist": "1.1.10",
+            "npmlog": "4.1.2",
+            "rc": "1.2.7",
+            "rimraf": "2.6.2",
+            "semver": "5.5.0",
+            "tar": "4.4.1"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1.1.1",
+            "osenv": "0.1.5"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.1.10",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "3.0.1",
+            "npm-bundled": "1.0.3"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "1.1.4",
+            "console-control-strings": "1.1.0",
+            "gauge": "2.7.4",
+            "set-blocking": "2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1.0.2"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "1.0.2",
+            "os-tmpdir": "1.0.2"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "0.5.1",
+            "ini": "1.3.5",
+            "minimist": "1.2.0",
+            "strip-json-comments": "2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "1.0.2",
+            "inherits": "2.0.3",
+            "isarray": "1.0.0",
+            "process-nextick-args": "2.0.0",
+            "safe-buffer": "5.1.1",
+            "string_decoder": "1.1.1",
+            "util-deprecate": "1.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "7.1.2"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.5.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "code-point-at": "1.1.0",
+            "is-fullwidth-code-point": "1.0.0",
+            "strip-ansi": "3.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "5.1.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "2.1.1"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "1.0.1",
+            "fs-minipass": "1.2.5",
+            "minipass": "2.2.4",
+            "minizlib": "1.1.0",
+            "mkdirp": "0.5.1",
+            "safe-buffer": "5.1.1",
+            "yallist": "3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "1.0.2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true
+        }
+      }
+    },
     "fstream": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
@@ -6521,6 +7051,11 @@
         "find-up": "2.1.0"
       }
     },
+    "point-in-polygon": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/point-in-polygon/download/point-in-polygon-1.0.1.tgz",
+      "integrity": "sha1-1Ztk6P7kHElFiqyCtWcYxZV7Kvc="
+    },
     "portfinder": {
       "version": "1.0.13",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",

+ 1 - 0
src/main/vue/package.json

@@ -24,6 +24,7 @@
         "less-loader": "^4.1.0",
         "moment": "^2.22.2",
         "normalize.css": "^8.0.0",
+        "point-in-polygon": "^1.0.1",
         "sass-loader": "^7.1.0",
         "tinymce": "^4.8.2",
         "vue": "^2.5.2",

+ 161 - 0
src/main/vue/src/components/ArContent.vue

@@ -0,0 +1,161 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="groupId" label="内容组ID">
+                <el-input v-model="formData.groupId" :disabled="'groupId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="name" label="名称/描述">
+                <el-input v-model="formData.name" :disabled="'name'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="type" label="类别">
+                <el-input v-model="formData.type" :disabled="'type'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="text" label="文字">
+                <el-input v-model="formData.text" :disabled="'text'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="image" label="图片">
+                <el-input v-model="formData.image" :disabled="'image'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="url" label="URL">
+                <el-input v-model="formData.url" :disabled="'url'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="voice" label="音频">
+                <el-input v-model="formData.voice" :disabled="'voice'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="movie" label="视频">
+                <el-input v-model="formData.movie" :disabled="'movie'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="model" label="模型">
+                <el-input v-model="formData.model" :disabled="'model'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="cfile" label="文本文件">
+                <el-input v-model="formData.cfile" :disabled="'cfile'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="resourceSize" label="资源大小(M)">
+                <el-input v-model="formData.resourceSize" :disabled="'resourceSize'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark1" label="备注1">
+                <el-input v-model="formData.remark1" :disabled="'remark1'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark2" label="备注2">
+                <el-input v-model="formData.remark2" :disabled="'remark2'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark3" label="备注3">
+                <el-input v-model="formData.remark3" :disabled="'remark3'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark4" label="备注4">
+                <el-input v-model="formData.remark4" :disabled="'remark4'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark5" label="备注5">
+                <el-input v-model="formData.remark5" :disabled="'remark5'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark6" label="备注6">
+                <el-input v-model="formData.remark6" :disabled="'remark6'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+
+export default {
+    name: 'ArContent',
+    props: {
+        formData: {
+            type: Object,
+            default: () => {
+                return {}
+            }
+        }
+    },
+    created() {
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/arContent/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
+
+
+                    this.formData = res.data;
+
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
+            }
+        }
+
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {
+            },
+            subColumn: '',
+            subValue: '',
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContent/update' : '/arContent/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/arContent/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 180 - 0
src/main/vue/src/components/ArContentTemplateStep2.vue

@@ -0,0 +1,180 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="remark1" label="特效名称">
+                <template>
+                    <el-select v-model="formData.remark1" clearable placeholder="特效">
+                        <el-option label="Effect001" value="Effect001"></el-option>
+                        <el-option label="Effect002" value="Effect002"></el-option>
+                        <el-option label="Effect003" value="Effect003"></el-option>
+                    </el-select>
+                </template>
+
+            </el-form-item>
+            <el-form-item prop="remark2" label="模型出场方式">
+                <template>
+                    <el-select v-model="formData.remark2" clearable placeholder="出场方式">
+                        <el-option label="直接出现" value="1"></el-option>
+                        <el-option label="渐变" value="2"></el-option>
+                        <el-option label="从上方进入" value="3"></el-option>
+                        <el-option label="从下方进入" value="4"></el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="remark3" label="模型名称">
+                <template>
+                    <el-select v-model="formData.remark3" clearable placeholder="模型名称">
+                        <el-option label="Role001" value="Role001"></el-option>
+                        <el-option label="Role002" value="Role002"></el-option>
+                        <el-option label="Role003" value="Role003"></el-option>
+                        <el-option label="Role004" value="Role004"></el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="remark4" label="是否打招呼">
+                <template>
+                    <el-select v-model="formData.remark4" clearable placeholder="是否打招呼">
+                        <el-option label="是" value="0"></el-option>
+                        <el-option label="否" value="1"></el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="remark5" label="讲解员模式">
+                <template>
+                    <el-select v-model="formData.remark5" clearable placeholder="讲解员模式">
+                        <el-option label="实景" value="1"></el-option>
+                        <el-option label="菲实景" value="2"></el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+
+export default {
+    name: 'ArContentTemplateStep2',
+    props: {
+        formData: {
+            type: Object,
+            default: () => {
+                return {}
+            }
+        }
+    },
+
+    created() {
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/arContentChild/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
+
+
+                    this.formData = res.data;
+
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
+            }
+        }
+
+
+
+
+        this.$http.get({
+            url: '/arContent/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.arContentIdOptions.push({ label: item.name, value: item.id });
+                    })
+                }
+            }
+        });
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+                arContentId: 3,
+                type: 1,
+                remark1: 'Effect001',
+                remark2: '1',
+                remark3: 'Role001',
+                remark4: '0',
+                remark5: '1',
+            },
+            rules: {
+            },
+            arContentIdOptions: [],
+            subColumn: '',
+            subValue: '',
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContentChild/update' : '/arContentChild/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/arContentChild/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 135 - 0
src/main/vue/src/components/ArContentTemplateStep3.vue

@@ -0,0 +1,135 @@
+<template>
+    <div>
+
+        <el-tabs v-model="editableTabsValue" type="card">
+            <el-tab-pane v-for="(item, index) in arContentChilds" :key="item.remark1" :label="item.remark2" :name="item.remark1">
+                <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+                    <el-form-item prop="remark1" label="顺序">(提示:默认增长)
+                        <el-input v-model="formData.remark1"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark2" label="标题">
+                        <el-input v-model="formData.remark2"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark3" label="内容">
+                        <el-input v-model="formData.remark3"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark4" label="语音">
+                        <el-input v-model="formData.remark4"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark5" label="按钮内容">
+                        <el-input v-model="formData.remark5"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark6" label="图片">
+                        <el-input v-model="formData.remark6"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="remark7" label="自动播放">
+                        <template>
+                            <el-select v-model="formData.remark7" clearable placeholder="自动播放">
+                                <el-option label="是" value="0"></el-option>
+                                <el-option label="否" value="1"></el-option>
+                            </el-select>
+                        </template>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                        <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                        <el-button @click="$router.go(-1)">取消</el-button>
+                    </el-form-item>
+                </el-form>
+            </el-tab-pane>
+        </el-tabs>
+
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+
+export default {
+    name: 'ArContentTemplateStep3',
+    props: {
+        formData: {
+            type: Object,
+            default: () => {
+                return {}
+            }
+        }
+    },
+
+    created() {
+
+
+        this.$http.get({
+            url: '/arContentChild/all',
+            data: {
+                type: 2,
+                arContentId: 3
+            }
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    this.arContentChilds = res.data;
+                }
+            }
+        });
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+                arContentId: 3,
+                type: 2,
+                remark1: '0',
+            },
+            rules: {
+            },
+            arContentChilds: [],
+            editableTabsValue: '1',
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContentChild/update' : '/arContentChild/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/arContentChild/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 143 - 0
src/main/vue/src/components/ArContentTemplateStep4.vue

@@ -0,0 +1,143 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="remark1" label="标题">
+                <el-input v-model="formData.remark1"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark2" label="内容">
+                <el-input v-model="formData.remark2"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark3" label="语音">
+                <el-input v-model="formData.remark3"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark4" label="按键内容">
+                <el-input v-model="formData.remark4"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark5" label="图片">
+                <el-input v-model="formData.remark5"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark6" label="下一个位置X">
+                <el-input v-model="formData.remark6" :disabled="'remark6'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark7" label="下一个位置Y">
+                <el-input v-model="formData.remark7" :disabled="'remark7'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark8" label="下一个位置Z">
+                <el-input v-model="formData.remark8" :disabled="'remark8'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+
+export default {
+    name: 'ArContentTemplateStep4',
+    props: {
+        formData: {
+            type: Object,
+            default: () => {
+                return {}
+            }
+        }
+    },
+
+    created() {
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/arContentChild/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
+
+
+                    this.formData = res.data;
+
+                }
+            })
+        }
+
+
+
+
+        this.$http.get({
+            url: '/arContent/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.arContentIdOptions.push({ label: item.name, value: item.id });
+                    })
+                }
+            }
+        });
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+                arContentId: 3,
+                type: 3,
+            },
+            rules: {
+            },
+            arContentIdOptions: [],
+            subColumn: '',
+            subValue: '',
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContentChild/update' : '/arContentChild/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/arContentChild/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 88 - 89
src/main/vue/src/pages/ArContent.vue

@@ -1,59 +1,58 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
-                 style="max-width: 500px;">
-                                                                                                                                                                                                                                    <el-form-item prop="groupId" label="内容组ID">
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="groupId" label="内容组ID">
                 <el-input v-model="formData.groupId" :disabled="'groupId'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="name" label="名称/描述">
+            <el-form-item prop="name" label="名称/描述">
                 <el-input v-model="formData.name" :disabled="'name'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="type" label="类别">
+            <el-form-item prop="type" label="类别">
                 <el-input v-model="formData.type" :disabled="'type'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="text" label="文字">
+            <el-form-item prop="text" label="文字">
                 <el-input v-model="formData.text" :disabled="'text'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="image" label="图片">
+            <el-form-item prop="image" label="图片">
                 <el-input v-model="formData.image" :disabled="'image'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="url" label="URL">
+            <el-form-item prop="url" label="URL">
                 <el-input v-model="formData.url" :disabled="'url'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="voice" label="音频">
+            <el-form-item prop="voice" label="音频">
                 <el-input v-model="formData.voice" :disabled="'voice'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="movie" label="视频">
+            <el-form-item prop="movie" label="视频">
                 <el-input v-model="formData.movie" :disabled="'movie'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="model" label="模型">
+            <el-form-item prop="model" label="模型">
                 <el-input v-model="formData.model" :disabled="'model'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="cfile" label="文本文件">
+            <el-form-item prop="cfile" label="文本文件">
                 <el-input v-model="formData.cfile" :disabled="'cfile'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="resourceSize" label="资源大小(M)">
+            <el-form-item prop="resourceSize" label="资源大小(M)">
                 <el-input v-model="formData.resourceSize" :disabled="'resourceSize'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark1" label="备注1">
+            <el-form-item prop="remark1" label="备注1">
                 <el-input v-model="formData.remark1" :disabled="'remark1'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark2" label="备注2">
+            <el-form-item prop="remark2" label="备注2">
                 <el-input v-model="formData.remark2" :disabled="'remark2'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark3" label="备注3">
+            <el-form-item prop="remark3" label="备注3">
                 <el-input v-model="formData.remark3" :disabled="'remark3'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark4" label="备注4">
+            <el-form-item prop="remark4" label="备注4">
                 <el-input v-model="formData.remark4" :disabled="'remark4'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark5" label="备注5">
+            <el-form-item prop="remark5" label="备注5">
                 <el-input v-model="formData.remark5" :disabled="'remark5'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark6" label="备注6">
+            <el-form-item prop="remark6" label="备注6">
                 <el-input v-model="formData.remark6" :disabled="'remark6'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                        <el-form-item>
+            <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
@@ -62,92 +61,92 @@
     </div>
 </template>
 <script>
-    import formValidator from '../formValidator'
+import formValidator from '../formValidator'
 
-    export default {
-        created() {
-            if (this.$route.query.column) {
-                this.subColumn = this.$route.query.column.split(',')[1];
-                this.subValue = this.$route.query.column.split(',')[0];
-            }
+export default {
+    created() {
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/arContent/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
 
-            if (this.$route.query.id) {
-                this.$http.get({
-                    url: '/arContent/getOne',
-                    data: {
-                        id: this.$route.query.id
-                    }
-                }).then(res => {
-                    if (res.success) {
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
-                        this.formData = res.data;
+                    this.formData = res.data;
 
                     if (this.$route.query.column) {
                         this.formData[this.subColumn] = this.subValue;
                     }
-                    }
-                })
-            }else {
-                if (this.$route.query.column) {
-                    this.formData[this.subColumn] = this.subValue;
                 }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
             }
+        }
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-        data() {
-            return {
-                saving: false,
-                formData: {},
-                rules: {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-                                                                                                                                                                                                    subColumn: '',
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {
+            },
+            subColumn: '',
             subValue: '',
         }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
         },
-        methods: {
-            onSave() {
-                this.$refs.form.validate((valid) => {
-                    if (valid) {
-                        this.submit();
-                    } else {
-                        return false;
-                    }
-                });
-            },
-            submit() {
-                var data = JSON.parse(JSON.stringify(this.formData));
-                this.$http.post({
-                    url: this.formData.id ? '/arContent/update' : '/arContent/save',
-                    data: data
-                }).then(res => {
-                    if (res.success) {
-                        this.$message.success('成功');
-                        this.$router.go(-1);
-                    } else {
-                        this.$message.warning('失败')
-                    }
-                });
-            },
-            onDelete() {
-                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-                    return this.$http.post({
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContent/update' : '/arContent/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
                     url: '/arContent/del',
                     data: { id: this.formData.id }
-                    })
-                }).then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                }).catch(action => {
-                    if (action === 'cancel') {
-                        this.$message.info('删除取消');
-                    } else {
-                        this.$message.error('删除失败');
-                    }
                 })
-            },
-        }
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
     }
+}
 </script>
 <style lang="less" scoped>
 </style>

+ 103 - 108
src/main/vue/src/pages/ArContentChild.vue

@@ -1,68 +1,63 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
-                 style="max-width: 500px;">
-                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="arContentId" label="AR内容ID">
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="arContentId" label="AR内容ID">
                 <template>
-                    <el-select v-model="formData.arContentId" clearable  placeholder="请选择" :disabled="'arContentId'==subColumn">
-                        <el-option
-                                v-for="item in arContentIdOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                    <el-select v-model="formData.arContentId" clearable placeholder="请选择" :disabled="'arContentId'==subColumn">
+                        <el-option v-for="item in arContentIdOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                        <el-form-item prop="type" label="类型">
+            <el-form-item prop="type" label="类型">
                 <el-input v-model="formData.type" :disabled="'type'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark1" label="字段1">
+            <el-form-item prop="remark1" label="字段1">
                 <el-input v-model="formData.remark1" :disabled="'remark1'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark2" label="字段2">
+            <el-form-item prop="remark2" label="字段2">
                 <el-input v-model="formData.remark2" :disabled="'remark2'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark3" label="字段3">
+            <el-form-item prop="remark3" label="字段3">
                 <el-input v-model="formData.remark3" :disabled="'remark3'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark4" label="字段4">
+            <el-form-item prop="remark4" label="字段4">
                 <el-input v-model="formData.remark4" :disabled="'remark4'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark5" label="字段5">
+            <el-form-item prop="remark5" label="字段5">
                 <el-input v-model="formData.remark5" :disabled="'remark5'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark6" label="字段6">
+            <el-form-item prop="remark6" label="字段6">
                 <el-input v-model="formData.remark6" :disabled="'remark6'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark7" label="字段7">
+            <el-form-item prop="remark7" label="字段7">
                 <el-input v-model="formData.remark7" :disabled="'remark7'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark8" label="字段8">
+            <el-form-item prop="remark8" label="字段8">
                 <el-input v-model="formData.remark8" :disabled="'remark8'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark9" label="字段9">
+            <el-form-item prop="remark9" label="字段9">
                 <el-input v-model="formData.remark9" :disabled="'remark9'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark10" label="字段10">
+            <el-form-item prop="remark10" label="字段10">
                 <el-input v-model="formData.remark10" :disabled="'remark10'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark11" label="字段11">
+            <el-form-item prop="remark11" label="字段11">
                 <el-input v-model="formData.remark11" :disabled="'remark11'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark12" label="字段12">
+            <el-form-item prop="remark12" label="字段12">
                 <el-input v-model="formData.remark12" :disabled="'remark12'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark13" label="字段13">
+            <el-form-item prop="remark13" label="字段13">
                 <el-input v-model="formData.remark13" :disabled="'remark13'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark14" label="字段14">
+            <el-form-item prop="remark14" label="字段14">
                 <el-input v-model="formData.remark14" :disabled="'remark14'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark15" label="字段15">
+            <el-form-item prop="remark15" label="字段15">
                 <el-input v-model="formData.remark15" :disabled="'remark15'==subColumn"></el-input>
             </el-form-item>
-                                                                                                                                                                                                                                                                                        <el-form-item>
+            <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
@@ -71,108 +66,108 @@
     </div>
 </template>
 <script>
-    import formValidator from '../formValidator'
+import formValidator from '../formValidator'
 
-    export default {
-        created() {
-            if (this.$route.query.column) {
-                this.subColumn = this.$route.query.column.split(',')[1];
-                this.subValue = this.$route.query.column.split(',')[0];
-            }
+export default {
+    created() {
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/arContentChild/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
 
-            if (this.$route.query.id) {
-                this.$http.get({
-                    url: '/arContentChild/getOne',
-                    data: {
-                        id: this.$route.query.id
-                    }
-                }).then(res => {
-                    if (res.success) {
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
-                        this.formData = res.data;
+                    this.formData = res.data;
 
                     if (this.$route.query.column) {
                         this.formData[this.subColumn] = this.subValue;
                     }
-                    }
-                })
-            }else {
-                if (this.$route.query.column) {
-                    this.formData[this.subColumn] = this.subValue;
                 }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
             }
+        }
 
-                                                                                                                                                                                                                        
 
 
-                        this.$http.get({
-                        url:'/arContent/all'
-                        }).then(res => {
-                        if (res.success) {
 
-                        if (res.data.length > 0) {
-                        res.data.forEach(item => {
-                        this.arContentIdOptions.push({label: item.name, value:item.id});
-                        })
-                        }
-                        }
-                        });
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-        data() {
-            return {
-                saving: false,
-                formData: {},
-                rules: {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-                                                                        arContentIdOptions:[],
-                                                                                                                                                                subColumn: '',
+        this.$http.get({
+            url: '/arContent/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.arContentIdOptions.push({ label: item.name, value: item.id });
+                    })
+                }
+            }
+        });
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {
+            },
+            arContentIdOptions: [],
+            subColumn: '',
             subValue: '',
         }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
         },
-        methods: {
-            onSave() {
-                this.$refs.form.validate((valid) => {
-                    if (valid) {
-                        this.submit();
-                    } else {
-                        return false;
-                    }
-                });
-            },
-            submit() {
-                var data = JSON.parse(JSON.stringify(this.formData));
-                this.$http.post({
-                    url: this.formData.id ? '/arContentChild/update' : '/arContentChild/save',
-                    data: data
-                }).then(res => {
-                    if (res.success) {
-                        this.$message.success('成功');
-                        this.$router.go(-1);
-                    } else {
-                        this.$message.warning('失败')
-                    }
-                });
-            },
-            onDelete() {
-                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-                    return this.$http.post({
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/arContentChild/update' : '/arContentChild/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
                     url: '/arContentChild/del',
                     data: { id: this.formData.id }
-                    })
-                }).then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                }).catch(action => {
-                    if (action === 'cancel') {
-                        this.$message.info('删除取消');
-                    } else {
-                        this.$message.error('删除失败');
-                    }
                 })
-            },
-        }
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
     }
+}
 </script>
 <style lang="less" scoped>
 </style>

+ 57 - 0
src/main/vue/src/pages/ArContentTemplate.vue

@@ -0,0 +1,57 @@
+<template>
+    <div>
+        <el-steps :active="active" finish-status="success">
+            <el-step title="AR内容">
+            </el-step>
+            <el-step title="讲解员"></el-step>
+            <el-step title="讲解内容"></el-step>
+            <el-step title="引导内容"></el-step>
+            <el-step title="完成"></el-step>
+        </el-steps>
+        <el-button style="margin-top: 12px;" @click="next">下一步</el-button>
+        <div>AR内容
+            <ArContent></ArContent>
+        </div>
+
+        <div>讲解员和出场方式
+            <ArContentTemplateStep2></ArContentTemplateStep2>
+        </div>
+        <div>讲解内容
+            <ArContentTemplateStep3></ArContentTemplateStep3>
+        </div>
+        <div>引导内容
+            <ArContentTemplateStep4></ArContentTemplateStep4>
+        </div>
+        <div>结束
+        </div>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+import ArContent from '../components/ArContent';
+import ArContentTemplateStep2 from '../components/ArContentTemplateStep2';
+import ArContentTemplateStep3 from '../components/ArContentTemplateStep3';
+import ArContentTemplateStep4 from '../components/ArContentTemplateStep4';
+export default {
+    created() {
+    },
+    data() {
+        return {
+            active: 0,
+        }
+    },
+    methods: {
+
+        next() {
+            if (this.active++ > 4) this.active = 0;
+        },
+
+
+    },
+    components: {
+        ArContent, ArContentTemplateStep2, ArContentTemplateStep3, ArContentTemplateStep4
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 119 - 0
src/main/vue/src/pages/MyCanvas.vue

@@ -0,0 +1,119 @@
+<template>
+    <div>
+
+        <div style="width:700px;height:500px;">
+            <canvas id="areaCanvas" style="border:1px solid red;width:100%;height:90%;">
+            </canvas>
+        </div>
+
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex'
+import { format } from 'date-fns'
+import zh from 'date-fns/locale/zh_cn'
+
+var inside = require('point-in-polygon');
+export default {
+    created() {
+
+    },
+    data() {
+        return {
+            pointsArr: [[0, 20], [30, 20], [10, 0]],
+            collectionArr: [],
+
+        }
+    },
+    mounted() {
+        this.collectionArr.push(this.pointsArr);
+        this.collectionArr.push([[20, 30], [50, 30], [50, 50], [20, 50]]);
+        this.collectionArr.push([[60, 3], [50, 20], [70, 40], [80, 30], [70, 20], [80, 0]]);
+        this.drawPolygons();
+
+
+    },
+
+    computed: {
+        ...mapState(['tableHeight']),
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+
+        drawPolygons: function () {
+            var canvas = document.getElementById('areaCanvas');
+            if (null == canvas || !canvas.getContext) return;
+            var ctx = canvas.getContext("2d");
+            // 清除画布,准备绘制
+            // ctx.clearRect(0, 0, canvas.width, canvas.height);
+            this.drawPolygonByPoint(ctx, null);
+            var _this = this;
+            canvas.onmousemove = function (e) {
+                ctx.clearRect(0, 0, canvas.width, canvas.height);
+                var location = _this.getLocation(canvas, e.clientX, e.clientY);
+                _this.drawPolygonByPoint(ctx, location);
+            };
+        },
+        drawPolygonByPoint: function (ctx, location) {
+            this.collectionArr.map(pointsArr => {
+                if (location != null && inside(location, pointsArr) == true) {
+                    //绘制高亮图形
+                    this.drawHighLightPolygon(ctx, pointsArr);
+                } else {
+                    //绘制一般图形
+                    this.drawGeneralPolygon(ctx, pointsArr);
+                }
+            });
+        },
+        drawGeneralPolygon: function (ctx, pointsArr) {
+            ctx.beginPath();
+            for (let i = 0; i < pointsArr.length; i++) {
+                if (i == 0) {
+                    ctx.moveTo(pointsArr[i][0], pointsArr[i][1]);
+                } else if (i < pointsArr.length - 1) {
+                    ctx.lineTo(pointsArr[i][0], pointsArr[i][1]);
+                } else {
+                    ctx.lineTo(pointsArr[i][0], pointsArr[i][1]);
+                    ctx.closePath();
+                    ctx.stroke();
+                }
+            }
+        },
+        drawHighLightPolygon: function (ctx, pointsArr) {
+            ctx.beginPath();
+            for (let i = 0; i < pointsArr.length; i++) {
+                if (i == 0) {
+                    ctx.moveTo(pointsArr[i][0], pointsArr[i][1]);
+                } else if (i < pointsArr.length - 1) {
+                    ctx.lineTo(pointsArr[i][0], pointsArr[i][1]);
+                } else {
+                    ctx.lineTo(pointsArr[i][0], pointsArr[i][1]);
+                    ctx.fillStyle = "#FF7F00";
+                    ctx.fill();
+                    ctx.closePath();
+                    ctx.stroke();
+                }
+            }
+        },
+        getLocation: function (canvas, x, y) {
+            var bbox = canvas.getBoundingClientRect();
+            return [(x - bbox.left) * (canvas.width / bbox.width), (y - bbox.top) * (canvas.height / bbox.height)];
+            /*
+             * 此处不用下面两行是为了防止使用CSS和JS改变了canvas的高宽之后是表面积拉大而实际
+             * 显示像素不变而造成的坐标获取不准的情况
+            x: (x - bbox.left),
+            y: (y - bbox.top)
+            */
+        },
+
+
+    }
+}
+
+
+
+</script>
+<style lang="less" scoped>
+</style>

+ 10 - 1
src/main/vue/src/router/index.js

@@ -175,7 +175,16 @@ const router = new Router({
                     name: 'DeploySystem',
                     component: () => import('../pages/DeploySystem')
                 },
-                
+                {
+                    path: '/myCanvas',
+                    name: 'MyCanvas',
+                    component: () => import('../pages/MyCanvas')
+                },
+                {
+                    path: '/arContentTemplate',
+                    name: 'ArContentTemplate',
+                    component: () => import('../pages/ArContentTemplate')
+                },
                 {
                     path: '/marketMap',
                     name: 'MarketMap',

+ 1 - 1
src/main/webapp/WEB-INF/html/admin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.a57601a0a59acbca8129d26ffc741f51.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.ede6705ad2ef33c82f83.js></script><script type=text/javascript src=/static/js/vendor.4f3df74780cf05e5ce7c.js></script><script type=text/javascript src=/static/js/admin.d8287b4dc2af02c01bba.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.54d9583e8d7b01d17c069994c453f14e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.2ee9655a2d9c044957f7.js></script><script type=text/javascript src=/static/js/vendor.e45891dc2e3759c91121.js></script><script type=text/javascript src=/static/js/admin.40932256d9566e11f5d4.js></script></body></html>

+ 1 - 1
src/main/webapp/WEB-INF/html/loginAdmin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><link href=/static/css/loginAdmin.9647b664948af8f1752259b9d1c6528e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.ede6705ad2ef33c82f83.js></script><script type=text/javascript src=/static/js/vendor.4f3df74780cf05e5ce7c.js></script><script type=text/javascript src=/static/js/loginAdmin.037854f4b3e0c2df3daf.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><link href=/static/css/loginAdmin.9647b664948af8f1752259b9d1c6528e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.2ee9655a2d9c044957f7.js></script><script type=text/javascript src=/static/js/vendor.e45891dc2e3759c91121.js></script><script type=text/javascript src=/static/js/loginAdmin.503b7a5df8a33b3fe30a.js></script></body></html>

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/css/admin.54d9583e8d7b01d17c069994c453f14e.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/10.809625e125728dc7b775.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/11.40d40fe411ac4d84f141.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/12.0708ee5cdb1a5e407e80.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/13.faa3a65a5c6bd0c39549.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/14.4713ee4e9bdf3971f188.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/15.07d34f38b6681b9e6de6.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/16.3901369d3a160518c495.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/17.0b7e99ce257deeff1e94.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/18.740d4f8f1ed10f2be058.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/19.a7ca75cfbaa430be4930.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/20.a557331416410eca25d1.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/21.7057a6fe59fe25a2cb97.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/22.799abb526fd18556c30d.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/23.d015e2e05252a084d4fa.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/24.01b7b74c64a58958ad78.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/24.c39883ca5a2885fac692.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/26.9c39b16e40cebdeb3c8c.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/26.ca372a4b002a9bf81c66.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/27.7928d17ab2acd9d367e5.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/28.8f25eaf03c4811bfe6be.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/29.fb854c5e3fc75c9a3e0e.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/30.ca2514af9a66c3e89fa9.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/31.5a8765bf3dd4d368d68e.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/32.95554048d5cab3e492ac.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/33.bf694e1cc7cdf8e4d056.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/34.651ea2053401803be6f6.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/35.d528bdb82b66391b35d0.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/36.13f7dd40584ab3262939.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/37.1010974cc9f31fc7e93f.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/38.448ad75433d9614c038c.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/39.01f0e2d42bdb13f06210.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/40.0ce7e711fbb5686f0082.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/41.cae5ce96990376eb0009.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/42.46f3b4116f76c118e335.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/42.5df5ad2f5b8de487ac0b.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/43.e72bd5d4a284b97f6b67.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/44.f5db0b2068fe41544931.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/45.cf3509507b36b451a9cf.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/46.10cd17479b65180bd389.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/47.08f2164be86427ed1d6e.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/48.11bd7e5576d8ea59a83e.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/49.c693245dd830efee471d.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/50.a3d74f5c30ded9a81bd2.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/51.cd8a93ed20265b8ffe75.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/52.2a4a6578f0cbd2916341.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/53.5dd43657f182618a3a62.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/54.497a0a9ccd2559371a1d.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/55.722948888a8cd35f3926.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/56.e4d18998d6bc52859e4f.js


+ 1 - 1
src/main/webapp/static/js/55.f0e6436fd661b1322091.js → src/main/webapp/static/js/57.c06efdf5e546168bb03e.js

@@ -1 +1 @@
-webpackJsonp([55],{"5LNU":function(e,t){},Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("5LNU")},"data-v-3122cd72",null);t.default=s.exports}});
+webpackJsonp([57],{"5LNU":function(e,t){},Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("5LNU")},"data-v-3122cd72",null);t.default=s.exports}});

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/58.060e40bb14ce839fe8af.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/59.e455f828a49974e13238.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/60.b353052c0e694b363108.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/61.a4eb30d6d8edaf4387bc.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/62.fbb8219b40261e905ed5.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/63.811fa917750e65257065.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/64.fa96d36fb1f947fc8a38.js


+ 1 - 1
src/main/webapp/static/js/63.95adf589d37397ef217a.js → src/main/webapp/static/js/65.a7f9133528374df1b30a.js

@@ -1 +1 @@
-webpackJsonp([63],{izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("xnY9")},"data-v-04168182",null);e.default=c.exports},xnY9:function(t,e){}});
+webpackJsonp([65],{izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("xnY9")},"data-v-04168182",null);e.default=c.exports},xnY9:function(t,e){}});

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/66.ce237318d6dbb38b8c1a.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/67.eca8d6551f7f16cf7b46.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/7.db9c08dde61335d9d6f8.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/8.6c34033501a6f2017bc7.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/9.680c0644d939394868b4.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/9.db0cac329c209aa19339.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/admin.40932256d9566e11f5d4.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/admin.d8287b4dc2af02c01bba.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/loginAdmin.503b7a5df8a33b3fe30a.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/manifest.2ee9655a2d9c044957f7.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/manifest.ede6705ad2ef33c82f83.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
src/main/webapp/static/js/vendor.e45891dc2e3759c91121.js


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.