Zory 2 settimane fa
parent
commit
6bf0786661

+ 120 - 17
webjob/package-lock.json

@@ -8,6 +8,7 @@
       "name": "webjob",
       "version": "0.1.0",
       "dependencies": {
+        "axios": "^1.20.0",
         "core-js": "^3.8.3",
         "sass-loader": "^17.0.1",
         "tdesign-mobile-vue": "^1.16.1",
@@ -3416,6 +3417,18 @@
         "node": ">= 10.0.0"
       }
     },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
     "node_modules/ajv": {
       "version": "6.15.0",
       "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.15.0.tgz",
@@ -3663,6 +3676,12 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "license": "MIT"
+    },
     "node_modules/at-least-node": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -3710,6 +3729,18 @@
         "postcss": "^8.1.0"
       }
     },
+    "node_modules/axios": {
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.20.0.tgz",
+      "integrity": "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==",
+      "license": "MIT",
+      "dependencies": {
+        "follow-redirects": "^1.16.0",
+        "form-data": "^4.0.6",
+        "https-proxy-agent": "^5.0.1",
+        "proxy-from-env": "^2.1.0"
+      }
+    },
     "node_modules/babel-loader": {
       "version": "8.4.1",
       "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.4.1.tgz",
@@ -4079,7 +4110,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
       "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-errors": "^1.3.0",
@@ -4414,6 +4444,18 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/commander": {
       "version": "8.3.0",
       "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
@@ -5020,7 +5062,6 @@
       "version": "4.4.3",
       "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
       "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "ms": "^2.1.3"
@@ -5250,6 +5291,15 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
     "node_modules/depd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
@@ -5428,7 +5478,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
       "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "call-bind-apply-helpers": "^1.0.1",
@@ -5571,7 +5620,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
       "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -5581,7 +5629,6 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
       "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -5598,7 +5645,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
       "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "es-errors": "^1.3.0"
@@ -5607,6 +5653,21 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/es-set-tostringtag": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+      "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.6",
+        "has-tostringtag": "^1.0.2",
+        "hasown": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/escalade": {
       "version": "3.2.0",
       "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
@@ -6533,7 +6594,6 @@
       "version": "1.16.0",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.16.0.tgz",
       "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
-      "dev": true,
       "funding": [
         {
           "type": "individual",
@@ -6550,6 +6610,22 @@
         }
       }
     },
+    "node_modules/form-data": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
+      "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "es-set-tostringtag": "^2.1.0",
+        "hasown": "^2.0.4",
+        "mime-types": "^2.1.35"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
@@ -6633,7 +6709,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-      "dev": true,
       "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -6670,7 +6745,6 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
       "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "call-bind-apply-helpers": "^1.0.2",
@@ -6695,7 +6769,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
       "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "dunder-proto": "^1.0.1",
@@ -6807,7 +6880,6 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
       "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -6873,7 +6945,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
       "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -6882,6 +6953,21 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/hash-sum": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
@@ -6893,7 +6979,6 @@
       "version": "2.0.4",
       "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.4.tgz",
       "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "function-bind": "^1.1.2"
@@ -7175,6 +7260,19 @@
         }
       }
     },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/human-signals": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
@@ -8116,7 +8214,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
       "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -8240,7 +8337,6 @@
       "version": "2.1.35",
       "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
       "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "mime-db": "1.52.0"
@@ -8253,7 +8349,6 @@
       "version": "1.52.0",
       "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -8565,7 +8660,6 @@
       "version": "2.1.3",
       "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/muggle-string": {
@@ -10023,6 +10117,15 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/proxy-from-env": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+      "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/pseudomap": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",

+ 2 - 1
webjob/package.json

@@ -1,5 +1,5 @@
 {
-  "name": "webjob",
+  "name": "Loading...",
   "version": "0.1.0",
   "private": true,
   "scripts": {
@@ -8,6 +8,7 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "axios": "^1.20.0",
     "core-js": "^3.8.3",
     "sass-loader": "^17.0.1",
     "tdesign-mobile-vue": "^1.16.1",

+ 11 - 0
webjob/src/api/index.js

@@ -0,0 +1,11 @@
+/**
+ * @description 自动import导入所有 api 模块
+ */
+
+const files = require.context('./model', false, /\.js$/)
+const modules = {}
+files.keys().forEach((key) => {
+	modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
+})
+
+export default modules

+ 13 - 0
webjob/src/api/model/home.js

@@ -0,0 +1,13 @@
+import http from "@/utils/request"
+var url = "/api";
+
+
+export default {
+    data: {
+        url:`${url}/portal`,
+		name: "-",
+		get: async function(data={}){
+			return await http.get(this.url, data);
+		}
+    }
+}

+ 4 - 1
webjob/src/components/mobile.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="mobile-design">
+    <div class="mobile-design" :style="{ backgroundColor: params.bgColor }">
         <t-form
             ref="form"
             :data="formData"
@@ -41,6 +41,9 @@
 
 <script>
 export default {
+    props: {
+        params: { type: Object, default: () => {} }
+    },
     data() {
         return {
             formData:{},

+ 3 - 0
webjob/src/main.js

@@ -2,6 +2,7 @@ import { createApp } from 'vue';
 import TDesign from 'tdesign-mobile-vue';
 import App from './App.vue'
 import router from './router'   // 自动解析 index.js
+import webDesign from './web'
 
 // 引入组件库的少量全局样式变量
 import 'tdesign-mobile-vue/es/style/index.css';
@@ -9,4 +10,6 @@ import 'tdesign-mobile-vue/es/style/index.css';
 const app = createApp(App);
 app.use(TDesign);
 app.use(router) 
+app.use(webDesign)
+
 app.mount("#app");

+ 1 - 1
webjob/src/router/index.js

@@ -3,7 +3,7 @@ import { createRouter, createWebHistory } from 'vue-router'
 import PageComponent from '@/views/PageComponent.vue'
 
 //设置标题
-document.title = "产品下单页";
+// document.title = "Loading...";
 
 // 定义路由数组
 const routes = [

+ 7 - 1
webjob/src/style/style.css

@@ -38,7 +38,13 @@ a,button,input,textarea {
 	outline: none;
 }
 .page-design{
-	background-color: #de3f4a;
+	/* background-color: #de3f4a; */
+}
+.skeleton-group{
+	padding: 10px;
+}
+.text-group .text{
+	padding: 10px;
 }
 @media (min-width: 992px){
 	.page-design{

+ 32 - 0
webjob/src/utils/errorHandler.js

@@ -0,0 +1,32 @@
+/**
+ * 全局代码错误捕捉
+ * 比如 null.length 就会被捕捉到
+ */
+
+export default (error, vm)=>{
+	//过滤HTTP请求错误
+	if(error.status || error.status==0){
+		return false
+	}
+
+	var errorMap = {
+		InternalError: "Javascript引擎内部错误",
+		ReferenceError: "未找到对象",
+		TypeError: "使用了错误的类型或对象",
+		RangeError: "使用内置对象时,参数超范围",
+		SyntaxError: "语法错误",
+		EvalError: "错误的使用了Eval",
+		URIError: "URI错误"
+	}
+	var errorName = errorMap[error.name] || "未知错误"
+
+	console.error(error);
+	//throw error;
+
+	vm.$nextTick(() => {
+		vm.$notify.error({
+			title: errorName,
+			message: error
+		});
+	})
+}

+ 187 - 0
webjob/src/utils/request.js

@@ -0,0 +1,187 @@
+import axios from "axios";
+
+axios.defaults.baseURL = "";
+axios.defaults.timeout = 10000;
+
+import { Message } from 'tdesign-mobile-vue';
+
+axios.interceptors.request.use(
+    (config) => {
+		if(config.method == 'get'){
+			config.params = config.params || {};
+			config.params['_'] = new Date().getTime();
+		}
+		var typeName = "web";
+		let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
+		if(flag){
+			typeName = "wap";
+		}
+		config.headers["api-type"] = typeName
+		Object.assign(config.headers, {})
+		return config;
+    },
+    (error) => {
+        return Promise.reject(error)
+    }
+)
+
+
+// HTTP response 拦截器
+axios.interceptors.response.use(
+	(response) => {
+		return response;
+	},
+	(error) => {
+		// 构造一个统一的错误对象
+		let errorMsg = '请求失败,请稍后重试';
+		let errorCode = -1;
+
+		if (error.response) {
+			// 服务器返回了错误状态码(4xx/5xx)
+			const { status, data } = error.response;
+			errorCode = status;
+			errorMsg = data?.msg || data?.message || `请求异常 (${status})`;
+			// 可在这里根据 status 做特定处理,如 401 跳转登录等
+		} else if (error.request) {
+			// 请求已发出,但未收到响应(网络问题)
+			errorMsg = '网络连接异常,请检查网络设置';
+		} else {
+			// 请求配置出错
+			errorMsg = error.message || errorMsg;
+		}
+		// 拒绝时传递包含错误信息的对象
+		return Promise.reject({
+			code: errorCode,
+			msg: errorMsg,
+		});
+    }
+)
+
+var http = {
+
+	/** get 请求
+	 * @param  {string} url 接口地址
+	 * @param  {object} params 请求参数
+	 * @param  {object} config 参数
+	 */
+	get: function(url, params={}, config={}) {
+		return new Promise((resolve, reject) => {
+			axios({
+				method: 'get',
+				url: url,
+				params: params,
+				...config
+			}).then((response) => {
+				resolve(response.data);
+			}).catch((error) => {
+				reject(error);
+			})
+		})
+	},
+
+	/** post 请求
+	 * @param  {string} url 接口地址
+	 * @param  {object} data 请求参数
+	 * @param  {object} config 参数
+	 */
+	post: function(url, data={}, config={}) {
+		return new Promise((resolve, reject) => {
+			axios({
+				method: 'post',
+				url: url,
+				data: data,
+				...config
+			}).then((response) => {
+				resolve(response.data);
+			}).catch((error) => {
+				reject(error);
+			})
+		})
+	},
+
+	/** put 请求
+	 * @param  {string} url 接口地址
+	 * @param  {object} data 请求参数
+	 * @param  {object} config 参数
+	 */
+	put: function(url, data={}, config={}) {
+		return new Promise((resolve, reject) => {
+			axios({
+				method: 'put',
+				url: url,
+				data: data,
+				...config
+			}).then((response) => {
+				resolve(response.data);
+			}).catch((error) => {
+				reject(error);
+			})
+		})
+	},
+
+	/** patch 请求
+	 * @param  {string} url 接口地址
+	 * @param  {object} data 请求参数
+	 * @param  {object} config 参数
+	 */
+	patch: function(url, data={}, config={}) {
+		return new Promise((resolve, reject) => {
+			axios({
+				method: 'patch',
+				url: url,
+				data: data,
+				...config
+			}).then((response) => {
+				resolve(response.data);
+			}).catch((error) => {
+				reject(error);
+			})
+		})
+	},
+
+	/** delete 请求
+	 * @param  {string} url 接口地址
+	 * @param  {object} data 请求参数
+	 * @param  {object} config 参数
+	 */
+	delete: function(url, data={}, config={}) {
+		return new Promise((resolve, reject) => {
+			axios({
+				method: 'delete',
+				url: url,
+				data: data,
+				...config
+			}).then((response) => {
+				resolve(response.data);
+			}).catch((error) => {
+				reject(error);
+			})
+		})
+	},
+
+	/** jsonp 请求
+	 * @param  {string} url 接口地址
+	 * @param  {string} name JSONP回调函数名称
+	 */
+	jsonp: function(url, name='jsonp'){
+		return new Promise((resolve) => {
+			var script = document.createElement('script')
+			var _id = `jsonp${Math.ceil(Math.random() * 1000000)}`
+			script.id = _id
+			script.type = 'text/javascript'
+			script.src = url
+			window[name] =(response) => {
+				resolve(response)
+				document.getElementsByTagName('head')[0].removeChild(script)
+				try {
+					delete window[name];
+				}catch(e){
+					window[name] = undefined;
+				}
+			}
+			document.getElementsByTagName('head')[0].appendChild(script)
+		})
+	}
+}
+
+export default http;

+ 30 - 7
webjob/src/views/PageComponent.vue

@@ -1,7 +1,22 @@
 <template>
     <div class="page-design">
-        
-        <mobileMain></mobileMain>
+        <template v-if="designData.length ==0">
+            <div v-for="(themeItem, index) in 5" class="skeleton-group" :key="index">
+                <t-skeleton :loading="true" animation="gradient" theme="paragraph"></t-skeleton>
+            </div>
+        </template>
+        <template v-for="item in designData" v-else>
+            <div class="image-group" v-if="item.type == 'image'">
+                <t-image :src="item.url"></t-image>
+            </div>
+            <div class="line-group" v-if="item.type == 'line'">
+                <div :style="{height:item.height+'px',backgroundColor:item.bgColor}"></div>
+            </div>
+            <div class="text-group" v-if="item.type == 'text'">
+                <div class="text" :style="{ backgroundColor: item.bgColor,color: item.color,fontSize: item.size+'px',lineHeight: item.lineHeight+'px' }">{{ item.content }}</div>
+            </div>
+            <mobileMain :params="item" v-if="item.type == 'form'"></mobileMain>
+        </template>
     </div>
 </template>
 
@@ -13,7 +28,8 @@ export default {
     },
     data(){
         return {
-            paramData:null
+            paramData:null,
+            designData:[]
         }
     },
     created(){
@@ -22,15 +38,22 @@ export default {
         // 获取查询参数
         const queryId = this.$route.query.id
         const queryAccount = this.$route.query.account
-
         this.paramData = {
             pageId:pageId,
             queryId:queryId,
             queryAccount:queryAccount
         };
-        console.log('路径参数 pageId:', pageId)
-        console.log('查询参数 id:', queryId)
-        console.log('查询参数 account:', queryAccount)
+        this.getDesign()
+    },
+    methods: {
+        async getDesign() {
+            var resp = await this.$API.home.data.get(this.paramData);
+            if (resp.code !== 1) {
+                return ;
+            }
+            document.title = resp.data.title;
+            this.designData = resp.data.design;
+        }
     }
 }
 </script>

+ 19 - 0
webjob/src/web.js

@@ -0,0 +1,19 @@
+
+import api from './api'
+import errorHandler from './utils/errorHandler'
+import http from "./utils/request"
+
+
+export default {
+	install(app) {
+		//挂载全局对象
+		app.config.globalProperties.$API = api;
+		app.config.globalProperties.$HTTP = http;
+
+		//关闭async-validator全局控制台警告
+		window.ASYNC_VALIDATOR_NO_WARNING = 1
+
+		//全局代码错误捕捉
+		app.config.errorHandler = errorHandler
+    }
+}

+ 40 - 1
webjob/vue.config.js

@@ -2,5 +2,44 @@ const { defineConfig } = require('@vue/cli-service')
 module.exports = defineConfig({
 	// build编译后不生成资源MAP文件
 	productionSourceMap: false,
-	lintOnSave: false
+	lintOnSave: false,
+
+	//开发服务,build后的生产模式还需nginx代理
+	devServer: {
+        allowedHosts: 'all',
+		open: false, //运行后自动打开浏览器
+		port: 1988, //挂载端口
+		proxy: {
+			'/api': {
+				target: "http://127.0.0.1:1881/web/",
+				ws: true,
+				changeOrigin: true,
+				pathRewrite: {
+					'^/api': '/'
+				}
+			}
+		}
+	},
+	configureWebpack: {
+		//性能提示
+		performance: {
+			hints: false
+		},
+		optimization: {
+			splitChunks: {
+				chunks: "all",
+				automaticNameDelimiter: '~',
+				name: "webChunks",
+				cacheGroups: {
+					//第三方库抽离
+					vendor: {
+						name: "modules",
+						test: /[\\/]node_modules[\\/]/,
+						priority: -10
+					}
+				}
+			}
+		}
+	}
+
 })