Commit 744cc1fb authored by 刘飞's avatar 刘飞

MES工位机功能添加

parent 652b912c
......@@ -4,7 +4,7 @@ const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
......@@ -18,9 +18,8 @@ module.exports = {
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
publicPath: process.env.NODE_ENV === 'production' ?
config.build.assetsPublicPath : config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
......@@ -31,6 +30,10 @@ module.exports = {
},
module: {
rules: [
{
test: /\.scss$/,
loaders: ['style', 'css', 'sass']
},
{
test: /\.vue$/,
loader: 'vue-loader',
......
......@@ -2,8 +2,10 @@
<html>
<head>
<meta charset="utf-8" />
<meta name="referrer" content="origin" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<!-- <link rel="stylesheet" href="./src/assets/font/iconfont.css"> -->
<script src="./static/js/configuration.js"></script>
<title>board</title>
<style>
.el-progress-bar {
......@@ -15,22 +17,22 @@
display: flex !important;
align-items: center !important;
justify-content: flex-end !important;
margin: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
/* padding:0 0 0 35px !important; */
padding:0 0 0 18px !important;
padding: 0 0 0 18px !important;
}
.el-table .cell, .el-table th div{
.el-table .cell,
.el-table th div {
overflow: hidden !important;
}
.el-progress-bar__outer{
.el-progress-bar__outer {
height: 60% !important;
}
.el-progress-bar__inner{
.el-progress-bar__inner {
border-radius: 11px !important;
}
.el-progress-bar__outer{
.el-progress-bar__outer {
border-radius: 11px !important;
}
</style>
......@@ -39,4 +41,14 @@
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
<script>
// function ComReadCardCallBack(data) {
// console.log("ComReadCardCallBack回调方法");
// console.log(data);
// JsControllerObj.CsExecuter("StopReadRFID",null)
// }
// console.log("调用 JsControllerObj 前");
// JsControllerObj.CsExecuter("StartReadRFID", "ComReadCardCallBack");
// console.log("调用 JsControllerObj 后");
</script>
</html>
......@@ -86,7 +86,7 @@
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz",
"integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
"ansi-html": {
......@@ -293,7 +293,7 @@
"async-foreach": {
"version": "0.1.3",
"resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz",
"integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==",
"integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
"dev": true
},
"async-limiter": {
......@@ -343,43 +343,11 @@
"dev": true
},
"aws4": {
"version": "1.10.0",
"resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.10.0.tgz",
"integrity": "sha1-oXs6jqgRBg501H0wYSJACtRJeuI=",
"version": "1.11.0",
"resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101230105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz",
"integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=",
"dev": true
},
"axios": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
}
},
"is-buffer": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
}
}
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
......@@ -1862,7 +1830,7 @@
"clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=",
"dev": true,
"requires": {
"is-plain-object": "^2.0.4",
......@@ -1873,7 +1841,7 @@
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
"dev": true
}
}
......@@ -1963,7 +1931,7 @@
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
......@@ -2371,7 +2339,7 @@
"cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=",
"dev": true
},
"cssnano": {
......@@ -2935,7 +2903,7 @@
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
"dev": true
},
"emojis-list": {
......@@ -3460,7 +3428,7 @@
"fastparse": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz",
"integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
"integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=",
"dev": true
},
"faye-websocket": {
......@@ -4274,7 +4242,7 @@
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
......@@ -4292,7 +4260,7 @@
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz",
"integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"requires": {
"aproba": "^1.0.3",
......@@ -4330,7 +4298,7 @@
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=",
"dev": true,
"requires": {
"globule": "^1.0.0"
......@@ -4504,19 +4472,19 @@
"dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
"integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
"version": "5.1.5",
"resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz?cache=0&sync_timestamp=1596082578993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhar-validator%2Fdownload%2Fhar-validator-5.1.5.tgz",
"integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
},
"dependencies": {
"ajv": {
"version": "6.12.3",
"resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.3.tgz?cache=0&sync_timestamp=1593876933357&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.3.tgz",
"integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=",
"version": "6.12.6",
"resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1603561486770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
"integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
......@@ -4952,7 +4920,7 @@
"icss-replace-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz",
"integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==",
"integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
"dev": true
},
"icss-utils": {
......@@ -5024,7 +4992,7 @@
"in-publish": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz",
"integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
"integrity": "sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw=",
"dev": true
},
"indent-string": {
......@@ -5716,13 +5684,13 @@
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npm.taobao.org/lodash.camelcase/download/lodash.camelcase-4.3.0.tgz",
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
"dev": true
},
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
"dev": true
},
"lodash.memoize": {
......@@ -6153,7 +6121,8 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"multicast-dns": {
"version": "6.2.3",
......@@ -6326,8 +6295,8 @@
},
"node-sass": {
"version": "4.14.1",
"resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.14.1.tgz",
"integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
"resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.14.1.tgz?cache=0&sync_timestamp=1604150672615&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-sass%2Fdownload%2Fnode-sass-4.14.1.tgz",
"integrity": "sha1-mch+wu+3BH7WOPtMnbfzpC4iF7U=",
"dev": true,
"requires": {
"async-foreach": "^0.1.3",
......@@ -6371,50 +6340,11 @@
"cross-spawn": {
"version": "3.0.1",
"resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
"integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==",
"integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"which": "^1.2.9"
},
"dependencies": {
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
}
}
},
"supports-color": {
......@@ -9726,7 +9656,7 @@
"sass-graph": {
"version": "2.2.5",
"resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.5.tgz",
"integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
"integrity": "sha1-qYHIdEa4MZ2W3OBnHkh4eb0kwug=",
"dev": true,
"requires": {
"glob": "^7.0.0",
......@@ -9876,7 +9806,7 @@
},
"sass-loader": {
"version": "7.3.1",
"resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz?cache=0&sync_timestamp=1594134152417&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-7.3.1.tgz",
"resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz?cache=0&sync_timestamp=1603396429561&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-7.3.1.tgz",
"integrity": "sha1-pb9ooEvOocE/+ELXRxUPerfQ0j8=",
"dev": true,
"requires": {
......@@ -9918,7 +9848,7 @@
"scss-tokenizer": {
"version": "0.2.3",
"resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz",
"integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==",
"integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
"dev": true,
"requires": {
"js-base64": "^2.1.8",
......@@ -10073,7 +10003,7 @@
"shallow-clone": {
"version": "3.0.1",
"resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=",
"dev": true,
"requires": {
"kind-of": "^6.0.2"
......@@ -10082,7 +10012,7 @@
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
"dev": true
}
}
......@@ -10474,7 +10404,7 @@
"stdout-stream": {
"version": "1.4.1",
"resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz",
"integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
"integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=",
"dev": true,
"requires": {
"readable-stream": "^2.0.1"
......@@ -10696,7 +10626,7 @@
"stylus-loader": {
"version": "3.0.2",
"resolved": "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-3.0.2.tgz",
"integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
"integrity": "sha1-J6cGQgsFo44DjnyssVNXjUUFE8Y=",
"dev": true,
"requires": {
"loader-utils": "^1.0.2",
......@@ -10749,7 +10679,7 @@
"tar": {
"version": "2.2.2",
"resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz",
"integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
"integrity": "sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA=",
"dev": true,
"requires": {
"block-stream": "*",
......@@ -10902,7 +10832,7 @@
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
"type-is": {
......@@ -11180,9 +11110,9 @@
"dev": true
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"version": "3.4.0",
"resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz",
"integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=",
"dev": true
},
"validate-npm-package-license": {
......@@ -11925,7 +11855,7 @@
"when": {
"version": "3.6.4",
"resolved": "https://registry.npm.taobao.org/when/download/when-3.6.4.tgz",
"integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
"integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
"dev": true
},
"whet.extend": {
......
......@@ -10,7 +10,7 @@
"build": "node build/build.js"
},
"dependencies": {
"axios": "^0.19.0",
"axios": "^0.21.0",
"echarts": "^4.2.1",
"element-ui": "^2.11.1",
"moment": "^2.24.0",
......@@ -41,7 +41,7 @@
"html-webpack-plugin": "^2.30.1",
"less-loader": "^6.2.0",
"node-notifier": "^5.1.2",
"node-sass": "^4.12.0",
"node-sass": "^4.14.1",
"optimize-css-assets-webpack-plugin": "^2.0.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
......@@ -49,7 +49,7 @@
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"sass-loader": "^7.2.0",
"sass-loader": "^7.3.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"style-loader": "^1.2.1",
......
import Vue from 'vue'
import Router from 'vue-router'
import $Router from '@/router/index'
// import store from '@/store'
Vue.use(Router)
import $cookie from './common.js';
// import url from './url.js'
import axios from 'axios'
import {
Message,
MessageBox
} from 'element-ui'
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.headers['Content-Type'] = "application/json; charset=UTF-8";
// let state = JSON.parse(localStorage.getItem('$state'))
// console.log($cookie.getCookie('host'));
let http = axios.create({
// baseURL: $cookie.getCookie('host'),
timeout: 20000,
// withCredentials: true
})
// axios拦截,未登录链接到登录
http.interceptors.request.use(
response => {
// console.log(response);
//没有token或者token无效跳到登录页
if ($cookie.getCookie('access_token')) {
// console.log(response);
var timestamp = (new Date()).valueOf().toString()
if (response.data === undefined) {
response.data = {
token: $cookie.getCookie('access_token'),
timestamp: timestamp
}
} else {
if (response.data.data !== undefined && response.data.data != null) {
// 时间+8小时 由于js时间和后台时间 不一致 所以追加8小时
Object.keys(response.data.data).forEach(function (key) {
if (response.data.data[key] instanceof Date) {
response.data.data[key] = new Date(response.data.data[key].setHours(response.data.data[key].getHours() +
8))
// console.log(key, response.data.data[key])
}
})
}
response.data.token = $cookie.getCookie('access_token')
response.data.timestamp = timestamp
}
}
return response;
},
error => {
// console.log(err)
if (error.response) {
// console.log(err)
}
return Promise.reject(error.response.data) // 返回接口返回的错误信息
})
http.interceptors.response.use(
response => {
console.log(response);
//只针对get方式进行序列化
if (response.config.method === 'get') {
const res = response.data
return res
}
if (response.config.url == 'api/Platform/User/Login') {
console.log(789);
return response.data
}
try {
const res = response.data
if (res.success) {
// console.log(res.code)
// Message({
// message: '操作成功',
// type: 'success',
// duration: 5 * 1000
// })
return res
} else {
if (res.message) {
Message({
message: res.message,
type: 'error',
duration: 5 * 1000
})
} else {
switch (res.code) {
case 3:
// to re-login
MessageBox.confirm('您已经长时间未操作,系统已下线,您可以取消以停留在此页面,或再次登录', '登录超时', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$cookie.delCookie('access_token')
$cookie.delCookie('host')
localStorage.removeItem('$state')
$Router.push({path: '/login'})
location.reload()
})
break;
case 4:
// to re-login
MessageBox.confirm('您的登录已经失效请重新登录', '请求失败', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$cookie.delCookie('access_token')
$cookie.delCookie('host')
localStorage.removeItem('$state')
$Router.push({path: '/login'})
location.reload()
}).catch(err=>{
})
break;
case 5:
// msg = "公司不可用";
Message({
message: res.message || '公司不可用',
type: 'error',
duration: 5 * 1000
})
break;
case 6:
// msg = "未知错误";
Message({
message: res.message || '未知错误',
type: 'error',
duration: 5 * 1000
})
break;
case 7:
// msg = "公司不存在";
Message({
message: res.message || '公司不存在',
type: 'error',
duration: 5 * 1000
})
break;
case 8:
// 参数错误
Message({
message: res.message || '请求参数错误',
type: 'error',
duration: 5 * 1000
})
break
case 9:
// Message({
// message: '异地登录,请重新登录!',
// type: 'error',
// duration: 5 * 1000
// })
MessageBox('您的账号在其他地方登录,请重新登录!', '异地登录', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$cookie.delCookie('access_token')
$cookie.delCookie('host')
localStorage.removeItem('$state')
$Router.push({path: '/login'})
location.reload()
}).catch(() => {
// Message({
// type: 'info',
// message: '取消'
// });
});
break
default:
// console.log(res);
Message({
message: res.message || '服务器异常',
type: 'error',
duration: 5 * 1000
})
break
}
}
return res
}
} catch (err) {
// console.log(err.message)
// console.log(err);
// console.log(this);
Message({
message: err.msg,
type: 'error',
duration: 5 * 1000
})
}
},
error => {
// console.log('err::' + error) // for debug
Message({
message: error,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
);
export default http;
// import message from './errMessage';
//获取cookie、
function getCookie(cname) {
// var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
var arr = c.split("=");
if (arr[0] == cname) {
return arr[1];
}
}
return "";
}
//设置cookie,增加到vue实例方便全局调用
let setCookie = (function(){
// let model = window.model;
return function(cname, cvalue, exdays){
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
// console.log(document.domain)
// if (document.domain == "euser.eiisys.com") {
// console.log('model',model)
// if(model == 1){
// document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/" + ";domain=.feteto.com";
// } else {
document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/";
// }
}
})();
//删除cookie
function delCookie(name) {
this.setCookie(name, "", -1);
}
// let accessToken;
// let loginState = false; //false未登录
// //判断token是否存在
// function judgeAccessToken() {
// if (this.$cookie.getCookie('access-token') && this.$cookie.getCookie('loginState')) {
// accessToken = this.$cookie.getCookie('access-token');
// loginState = true;
// console.log(accessToken);
// console.log(loginState);
// } else {
// loginState = false;
// accessToken = '';
// }
// }
// const api = function (that) {
// return new Promise(function (resolve, reject) {
// // 判断短信是否开通,如果已开通直接resolve
// judgeAccessToken();
// resolve(loginState);
// })
// };
export default {
//获取cookie、
getCookie,
//设置cookie,增加到vue实例方便全局调用
setCookie,
//删除cookie
delCookie,
// api
}
// 消息提示
// export const errInfo = function (param = '内容不能为空', time = 5) {
// message.warning({
// content: param,
// duration: time,
// });
// };
// export const errorMessage = message.errorMessage;
\ No newline at end of file
......@@ -4,6 +4,16 @@ import Vue from 'vue'
import App from './App'
import router from './router'
import './assets/font/iconfont.css'
import axios from 'axios'
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.headers.post['Content-Type'] = "application/json; charset=UTF-8";
Vue.prototype.axios = axios
import http from './function/axiosMes.js'
Vue.prototype.$http = http;
import cookie from './function/common.js'
Vue.prototype.$cookie = cookie;
//文字滚动https://chenxuan0000.github.io/component-document/index_prod.html#/component/seamless-default
import scroll from 'vue-seamless-scroll'
......@@ -12,7 +22,10 @@ Vue.config.productionTip = false
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// import App from './App.vue';
Vue.use(ElementUI, { size: 'small', zIndex: 3000 });
Vue.use(ElementUI, {
size: 'small',
zIndex: 3000
});
//通用辅助类
import utils from '@/function/utils.js'
Vue.prototype.$utils = utils
......@@ -23,9 +36,69 @@ import UtilityTools from "@/function/UtilityTools"
import echarts from 'echarts'
Vue.use(echarts)
Vue.prototype.echarts = echarts
Vue.prototype.__defaultErrorHandlder = function (code, message) {
let msg = '';
console.log(message);
if (message) {
this.$message({
message: message,
type: "warning"
});
return;
}
console.log(code)
switch (code) {
case 2:
msg = "用户名或者密码错误";
break;
case 3:
break;
case 4:
msg = "未知的服务器错误";
break;
case 5:
msg = "公司不可用";
break;
case 6:
msg = "未知错误";
break;
case 7:
msg = "公司不存在";
break;
case 8:
msg = "请求参数有问题";
break;
case 9:
// msg = "账号在另一地点登陆"
break;
default:
case 0:
msg = "未指定的错误";
break;
}
console.log(msg)
this.$message({
message: msg,
type: "warning"
});
}
Vue.prototype.jsController = function(){
JsControllerObj.CsExecuter("StartReadRFID",'ComReadCardCallBack')
}
function ComReadCardCallBack(data){
console.log(data);
}
new Vue({
el: '#app',
router,
components: { App },
components: {
App
},
template: '<App/>'
})
import Vue from 'vue'
import Router from 'vue-router'
import $cookie from '../function/common'
import home from '../views/home/index.vue'
import boardlist from '../views/board/boardlist/index.vue'
import chartList from '../views/board/chartList/index.vue'
......@@ -21,181 +21,217 @@ import ViewXY from '../views/board/workShopList/kanbanViewXY.vue'
import Efficiency from '../views/board/workShopList/dynamicEfficiency.vue'
import DataShow from '../views/board/workShopList/dataShow.vue'
import SearchSOP from '../views/board/workShopList/searchSOP.vue'
import login from '../views/machine/login.vue'
import processSheet from '../views/machine/processSheet.vue'
Vue.use(Router)
export default new Router({
// mode: 'history',
// base: config.ProjectName,//
linkActiveClass: 'active',
routes: [
{
path: '/',
name: '主页',
component: home,
children: [
{
path: '/boardlist',
name: 'boardlist',
meta: {
title: '看板列表',
},
component: boardlist,
},
{
path: '/chartlist',
name: 'chartlist',
meta: {
title: '图表列表',
},
component: chartList,
},
{
path: '/chartdemoList',
name: 'chartDemoList',
meta: {
title: '图表列表2',
},
component: chartDemoList,
},
{
path:'/zcList',
name:'zcList',
meta: {
title: '车间配置',
},
component: ZCList,
},
]
},
{
path: '/board',
name: 'board',
meta: {
title: '看板',
},
component: board,
},
{
path: '/pie',
name: 'pie',
meta: {
title: '饼图',
},
component: chartPie,
},
{
path: '/bar',
name: 'bar',
meta: {
title: '柱状图',
},
component: chartBar,
},
{
path: '/radar',
name: 'radar',
meta: {
title: '雷达图',
},
component: chartRadar,
},
{
path: '/test',
name: 'test',
meta: {
title: '测试',
},
component: test,
},
{
path: '/scatter',
name: 'scatter',
meta: {
title: '散点图',
},
component: chartScatter,
},
{
path: '/line',
name: 'line',
meta: {
title: '折线图',
},
component: chartLine,
},
{
path: '/chartdemo',
name: 'chartdemo',
meta: {
title: '图表模板',
},
component: chartDemo,
},{
path: '/chartdemo1',
name: 'chartdemo1',
meta: {
title: '图表模板1',
},
component: chartDemo1,
},
{
path:'/zcList',
name:'zcList',
meta: {
title: '车间选择',
},
component: ZCList,
},
{
path:'/viewZC',
name:'viewZC',
meta: {
title: '车间展示',
},
component: ViewZC,
},
{
path:'/viewCX',
name:'viewCX',
meta: {
title: '车间展示',
},
component: ViewCX,
},
{
path:'/viewXY',
name:'viewXY',
meta: {
title: '鑫源看板',
},
component: ViewXY,
},
{
path:'/Efficiency',
name:'Efficiency',
meta:{
title:'工厂动态效率展示'
},
component:Efficiency
},
{
path:'/dataShow',
name:'dataShow',
meta:{
title:'样品运行控制中心'
},
component:DataShow
},
{
path:'/searchSOP',
name:'searchSOP',
meta:{
title:'查询SOP'
},
component:SearchSOP
}
],
// mode: 'history',
// base: config.ProjectName,//
linkActiveClass: 'active',
routes: [{
path: '/',
name: '主页',
component: home,
children: [{
path: '/boardlist',
name: 'boardlist',
meta: {
title: '看板列表',
},
component: boardlist,
},
{
path: '/chartlist',
name: 'chartlist',
meta: {
title: '图表列表',
},
component: chartList,
},
{
path: '/chartdemoList',
name: 'chartDemoList',
meta: {
title: '图表列表2',
},
component: chartDemoList,
},
{
path: '/zcList',
name: 'zcList',
meta: {
title: '车间配置',
},
component: ZCList,
},
]
},
{
path: '/board',
name: 'board',
meta: {
title: '看板',
},
component: board,
},
{
path: '/pie',
name: 'pie',
meta: {
title: '饼图',
},
component: chartPie,
},
{
path: '/bar',
name: 'bar',
meta: {
title: '柱状图',
},
component: chartBar,
},
{
path: '/radar',
name: 'radar',
meta: {
title: '雷达图',
},
component: chartRadar,
},
{
path: '/test',
name: 'test',
meta: {
title: '测试',
},
component: test,
},
{
path: '/scatter',
name: 'scatter',
meta: {
title: '散点图',
},
component: chartScatter,
},
{
path: '/line',
name: 'line',
meta: {
title: '折线图',
},
component: chartLine,
},
{
path: '/chartdemo',
name: 'chartdemo',
meta: {
title: '图表模板',
},
component: chartDemo,
}, {
path: '/chartdemo1',
name: 'chartdemo1',
meta: {
title: '图表模板1',
},
component: chartDemo1,
},
{
path: '/zcList',
name: 'zcList',
meta: {
title: '车间选择',
},
component: ZCList,
},
{
path: '/viewZC',
name: 'viewZC',
meta: {
title: '车间展示',
},
component: ViewZC,
},
{
path: '/viewCX',
name: 'viewCX',
meta: {
title: '车间展示',
},
component: ViewCX,
},
{
path: '/viewXY',
name: 'viewXY',
meta: {
title: '鑫源看板',
},
component: ViewXY,
},
{
path: '/Efficiency',
name: 'Efficiency',
meta: {
title: '工厂动态效率展示'
},
component: Efficiency
},
{
path: '/dataShow',
name: 'dataShow',
meta: {
title: '样品运行控制中心'
},
component: DataShow
},
{
path: '/searchSOP',
name: 'searchSOP',
meta: {
title: '查询SOP'
},
component: SearchSOP
},
{
path: '/login',
name: 'login',
meta: {
title: '工位机'
},
component: login
},
{
path: '/processSheet',
name: 'processSheet',
meta: {
title: '工位机'
},
component: processSheet
}
],
})
// const router = new VueRouter({
// mode: 'hash',
// base: process.env.BASE_URL,
// routes
// })
// // 路由守卫
// router.beforeEach((to, from, next) => {
// // 无需登录
// if (['processSheet'].some(str => str == to.name)) {
// let token = $cookie.getCookie('access_token');
// console.log('ssss' + token);
// if (token) {
// next()
// } else {
// next(`/login`)
// }
// return;
// }
// })
import Vue from 'vue'
import Vuex from 'vuex'
\ No newline at end of file
......@@ -20,13 +20,13 @@
<td
:key="index1"
class="tableclass"
:style="{width:getwidth(obj)+'%',border:'1px'+' solid '+getfontcolor(item),borderColor:boardstore.BorderColor==null?'red':boardstore.BorderColor}"
:style="{width:getwidth(obj)+'%',border:'1px'+' solid '+boardstore.BorderColor==null?'red':boardstore.BorderColor}"
v-if="obj.Key.indexOf('_')>0 && obj.Key.indexOf('_percent')<0"
>{{obj.Value}}</td>
<td
:key="index1"
class="tableclass"
:style="{width:getwidth(obj)+'%',border:'1px'+' solid '+getfontcolor(item),borderColor:boardstore.BorderColor==null?'red':boardstore.BorderColor}"
:style="{width:getwidth(obj)+'%',border:'1px'+' solid '+boardstore.BorderColor==null?'red':boardstore.BorderColor}"
v-if="obj.Key.indexOf('_percent')>0"
>
<el-progress :text-inside="true" :style="{color:getfontcolor(item)}" :stroke-width="20" type="line" :color="obj.Key.indexOf('#') ? '#'+obj.Value.split('#')[1] : '#409EFF'" :percentage="obj.Key.indexOf('#') ? parseInt(obj.Value.split('#')[0]) : parseInt(obj.Value)" status="exception"></el-progress>
......
<template>
<div class="con">
<div class="login_main">
<div class="main">
<div class="left">
<img src="../../assets/image/lgin_main.png" alt="" />
</div>
<div class="right">
<h3 class="title">飞天兔MES系统</h3>
<div class="tab_list">
<div
v-for="(item, index) in tabList"
:key="index"
@click="checkIcon(index)"
>
<span :class="[{ active: tabIndex == index }]">{{ item }}</span>
</div>
</div>
<div class="tab_line">
<div
class="line"
:style="{ transform: `translateX(${tabIndex * 175}px)` }"
style="transition:all .5s"
></div>
<div class="bottom_line"></div>
</div>
<div class="login_account" v-show="tabIndex == 0">
<div>
<input
class="account"
type="text"
placeholder="请输入账号"
ref="inputs"
v-model="loginForm.account"
@focus="showInputPanel($event)"
/>
<!-- @blur="hideInputPanel($event)" -->
</div>
<div>
<input
type="password"
placeholder="请输入密码"
v-model="loginForm.pwd"
@focus="showInputPanel($event)"
/>
<!-- @blur="hideInputPanel($event)" -->
</div>
<div class="rember">
<input
type="checkbox"
class="checkBox"
v-model="loginForm.checked"
/>记住密码
</div>
<div>
<button @click="login">登 陆</button>
</div>
</div>
<div class="rfid" v-show="tabIndex == 1">
<img src="../../assets/image/rfid.png" alt="" />
</div>
<h4 class="rfid_dis" v-show="tabIndex == 1">
请将一卡通放到感应区域
</h4>
</div>
</div>
<h4 class="company">版权所有@杭州禹荣网络科技有限公司 保留所有权利</h4>
</div>
</div>
</template>
<script>
import qs from "qs";
import Axios from "@/function/axios.js";
export default {
data() {
return {
tabList: ["账号登陆", "一卡通登录"],
tabIndex: 0,
isLogin: false,
loginForm: {
companyCode: "",
account: "",
pwd: "",
checked: false
}
};
},
created() {
window.vue = this;
this.checkLoacl();
const infor = JSON.parse(localStorage.getItem("$loginInfor"));
if (infor) {
// this.loginForm.companyCode = infor.companyCode;
this.loginForm.account = infor.loginName;
if (infor.saveInfor) {
this.loginForm.pwd = infor.pwd;
}
this.loginForm.checked = infor.saveInfor;
}
},
mounted() {
//绑定事件
window.addEventListener("keydown", this.keyDown);
},
destroyed() {
window.removeEventListener("keydown", this.keyDown, false);
if (typeof JsControllerObj != "undefined") {
console.log('隐藏');
JsControllerObj.CsExecuter("HideInputPanel_Osk", null);
}
},
methods: {
showInputPanel(e) {
//调起虚拟键盘
if (typeof JsControllerObj != "undefined") {
console.log('ShowInputPanel_Osk');
JsControllerObj.CsExecuter("ShowInputPanel_Osk", null);
}
},
hideInputPanel(e) {
//隐藏虚拟键盘
if (typeof JsControllerObj != "undefined") {
console.log('HideInputPanel_Osk');
JsControllerObj.CsExecuter("HideInputPanel_Osk", null);
}
},
keyDown(e) {
//如果是回车则执行登录方法
if (e.keyCode == 13) {
if (this.tabIndex == 0) {
this.login();
} else {
console.log("不是账号密码登陆");
}
}
},
checkIcon(index) {
this.tabIndex = index;
if (index == 1) {
if (typeof JsControllerObj != "undefined") {
console.log("调用 JsControllerObj 前");
// JsControllerObj.CsExecuter(
// "StartReadRFID",
// "vue.ComReadCardCallBack"
// );
let result = JsControllerObj.CsExecuter(
"StartReadRFID",
"vue.ComReadCardCallBack"
);
console.log(result.data);
if (!result.success) {
this.$message({
message: result.message,
type: "warning"
});
}
console.log(result);
console.log("调用 JsControllerObj 后");
} else {
console.log("我是浏览器打开的");
}
} else {
if (typeof JsControllerObj != "undefined") {
console.log("调用StopReadRFID");
JsControllerObj.CsExecuter("StopReadRFID", null);
}
}
},
ComReadCardCallBack(data) {
console.log("ComReadCardCallBack回调方法");
console.log(data);
if (data.success && !this.isLogin) {
console.log("我要开始调用登陆接口了" + JSON.stringify(data.data));
this.SmartCradLogin(data.data);
}
if (!data.success) {
this.$message({
message: data.message,
type: "warning"
});
}
},
SmartCradLogin(data) {
console.log("登陆方法接收到的参数" + JSON.stringify(data));
this.isLogin = true;
let url = "";
if (window.apiUrl) {
url = window.apiUrl + "/api/User/SmartCradLogin";
} else {
this.loginForm.companyCode = window.companyCode;
url = "http://116.62.146.125/ftt_cloud_api/api/SmartCradLogin";
if (this.loginForm.companyCode == "") {
this.$message({
message: "请先配置企业代码",
type: "warning"
});
return;
}
}
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)"
});
let params = {
company_code: this.loginForm.companyCode,
CountryId: data.CountryId,
NationalId: data.NationalId
};
// console.log("请求的参数params" + JSON.stringify(params));
// this.axios
// .post(url, params)
this.axios({
method: "post",
url: url,
data: params,
header: {
"Content-Type": "application/json"
}
})
.then(res => {
console.log(res);
console.log("请求的参数params" + JSON.stringify(params));
if (res.data.success) {
this.$cookie.setCookie("access_token", res.data.access_token);
if (window.apiUrl) {
this.$cookie.setCookie("host", window.apiUrl);
} else {
this.$cookie.setCookie("host", res.data.host);
}
JsControllerObj.CsExecuter("StopReadRFID", null);
this.setUserInfo(res.data);
this.$router.push("/processSheet");
} else {
this.__defaultErrorHandlder(res.data.code, res.data.message);
}
loading.close();
this.isLogin = false;
})
.catch(err => {
console.log(err);
loading.close();
this.isLogin = false;
});
},
checkLoacl() {
if (window.apiUrl) {
this.axios({
url: window.apiUrl,
header: {
"Content-Type": "application/json"
}
})
.then(res => {
console.log("内网连接成功");
})
.catch(err => {
this.$message({
message: "无法链接服务器,请联系系统管理员。",
type: "error"
});
});
}
},
login() {
let url = "";
if (window.apiUrl) {
url = window.apiUrl + "/api/User/UserLogin";
} else {
this.loginForm.companyCode = window.companyCode;
url = "http://116.62.146.125/ftt_cloud_api/api/UserLogin";
if (this.loginForm.companyCode == "") {
this.$message({
message: "请先配置企业代码",
type: "warning"
});
return;
}
}
if (this.tabIndex == 0) {
if (this.loginForm.account == "") {
this.$message({
message: "账号不能为空",
type: "warning"
});
return;
}
if (this.loginForm.pwd == "") {
this.$message({
message: "密码不能为空",
type: "warning"
});
return;
}
}
console.log("login", this.loginForm.pwd);
let params = {
company_code: this.loginForm.companyCode,
user_name: this.loginForm.account,
password: this.loginForm.pwd,
clientid: 0,
clienttype: 20
};
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)"
});
this.axios({
method: "post",
url: url,
data: params,
header: {
"Content-Type": "application/json"
}
})
.then(res => {
console.log(res);
if (res.data.success) {
this.$cookie.setCookie("access_token", res.data.access_token);
if (window.apiUrl) {
this.$cookie.setCookie("host", window.apiUrl);
} else {
this.$cookie.setCookie("host", res.data.host);
}
this.setUserInfo(res.data);
this.$router.push("/processSheet");
} else {
this.__defaultErrorHandlder(
res.data.error_code ? res.data.error_code : res.data.code,
res.data.message
);
}
loading.close();
})
.catch(err => {
console.log(err);
this.$message({
showClose: true,
message: err.errMsg,
type: "error"
});
loading.close();
});
},
setUserInfo: function(result) {
//存储用户部分信息
var state = {};
state.name = result.display_name;
state.userId = result.user_id;
state.token = result.access_token;
state.loginName = result.login_name
? result.login_name
: this.loginForm.account;
state.companyName = result.company_name
? result.company_name
: this.loginForm.companyCode;
state.companyLogo = result.image_url;
state.companyCode = result.company_code
? result.company_code
: this.loginForm.companyCode;
state.psd = result.password;
state.host = window.apiUrl ? window.apiUrl : result.host;
console.log(state);
localStorage.setItem("$state", JSON.stringify(state));
var loginInfor = {};
loginInfor.loginName = result.login_name
? result.login_name
: this.loginForm.account;
loginInfor.companyCode = result.company_code
? result.company_code
: this.loginForm.companyCode;
loginInfor.saveInfor = this.loginForm.checked;
console.log("1111111:" + this.saveInfor);
const infor = localStorage.getItem("$loginInfor");
if (this.loginForm.checked) {
if (infor) {
localStorage.removeItem("$loginInfor");
}
loginInfor.pwd = this.loginForm.pwd;
console.log(loginInfor);
localStorage.setItem("$loginInfor", JSON.stringify(loginInfor));
console.log(loginInfor);
} else {
console.log("移除");
// local.setLocalData('$loginInfor', loginInfor);
if (infor) {
localStorage.removeItem("$loginInfor");
}
console.log(loginInfor);
localStorage.setItem("$loginInfor", JSON.stringify(loginInfor));
console.log(loginInfor);
}
}
}
};
</script>
<style scoped>
.con {
width: 100%;
height: 100vh;
background-image: url("../../assets/image/login_bg.png");
background-repeat: no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
justify-content: center;
}
.login_main {
width: 1000px;
/* height: 550px; */
}
.main {
width: 1000px;
height: 550px;
background: #ffffff;
box-shadow: 5px 5px 10px #e1ecff;
display: flex;
}
.left {
width: 395px;
height: 550px;
}
.right {
width: 604px;
height: 550px;
}
.title {
margin-top: 59px;
font-size: 38px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #474747;
line-height: 48px;
letter-spacing: 1px;
text-align: center;
}
.tab_list {
width: 342px;
margin: 64px auto 0;
display: flex;
justify-content: space-around;
}
.tab_list > div > span {
font-size: 19px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 500;
color: #333333;
cursor: pointer;
}
.tab_list > div > .active {
/* color: rgba(4, 151, 250, 1) ; */
font-weight: 600 !important;
/* transition: all 0.5s; */
}
.tab_line {
margin: 0 auto;
width: 342px;
}
.active1 {
color: rgba(4, 151, 250, 1);
transition: all 0.5s;
}
.line {
width: 80px;
height: 2px;
background: rgba(4, 151, 250, 1);
margin-top: 9px;
margin-left: 40px;
}
.bottom_line {
width: 342px;
height: 1px;
background: rgba(229, 229, 229, 1);
margin: 0px auto 0px;
}
.login_account {
width: 342px;
margin: 44px auto 0;
}
.login_account > div {
display: flex;
justify-content: center;
}
input {
width: 259px;
height: 38px;
text-indent: 11px;
outline: none;
border: 1px solid #d8d8d8;
margin: 0 auto 22px;
}
input:focus {
border: 1px solid #4589ff;
}
.rember {
width: 259px;
margin: 22px auto;
height: auto;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 22px;
display: flex;
align-items: center;
justify-content: flex-start !important;
}
.checkBox {
width: 12px;
height: 12px;
border-radius: 1px;
border: 1px solid #4589ff;
text-align: left;
vertical-align: baseline;
margin: 0 4px 0 0;
}
button {
width: 259px;
height: 34px;
background: #4589ff;
border-radius: 5px;
outline: none;
color: #ffffff;
border: none;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
}
.rfid {
width: 342px;
margin: 44px auto 0;
display: flex;
justify-content: center;
}
.rfid_dis {
text-align: center;
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-top: 28px;
}
.company {
font-size: 15px;
color: #666666;
font-weight: 400;
margin-top: 34px;
text-align: center;
}
</style>
<template>
<div class="con">
<div class="top">
<div class="tab_bar">
<span class="tab_select">
<i class="el-icon-s-operation"></i>
<label for="">指令单:</label>
<el-select
v-model="value"
filterable
placeholder="请选择指令单"
@change="getIndexInfo"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</span>
<span class="order_number">
<label for="">订单号:</label>
<span>{{ item.CustomPO }}</span>
</span>
<span>
<label for="">货号:</label>
<span>{{ item.StyleCode }}</span>
</span>
<span>
<label for="">颜色:</label>
<span>{{ item.ColorName }}</span>
</span>
<!-- <span class="name">张三</span> -->
</div>
<div class="name">
<el-dropdown @command="handleCommand">
<span class="el-dropdown-link">
<span class="name"
>{{ userName
}}<i class="el-icon-arrow-down el-icon-caret-bottom"></i
></span>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="a">退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<div class="middle">
<div class="process">
<div class="search">
<!-- <el-input placeholder="请输入[序号]工序进行搜索" v-model="searchText">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
<span class="el-icon-search" @click="search"></span> -->
[序号]工序
</div>
<div class="process_list">
<div
class="list_cell"
:class="{ active: checkIndex == index }"
v-for="(item, index) in processList"
:key="index"
@click="check(item, index)"
>
<div>[{{ item.SerialNo }}]{{ item.IEName }}</div>
</div>
<div class="none" v-if="processList.length == 0">暂无数据...</div>
</div>
</div>
<div class="process_information">
<div class="infor_title">
<div>尺码</div>
<div>指令数量</div>
<div>完成总量</div>
<div>今日完成量</div>
<div>未完成量</div>
</div>
<div class="infor_main">
<div
class="list_cell"
v-for="(item, index) in inforList"
:key="index"
>
<div>{{ item.SizeName }}</div>
<div>{{ item.TaskQty }}</div>
<div>{{ item.ReportQty }}</div>
<div>{{ item.DailyQty }}</div>
<div>{{ item.SurplusQty }}</div>
</div>
<div class="none" v-if="inforList.length == 0">暂无数据...</div>
</div>
</div>
</div>
<div class="bottom">
<div class="detail_title">
<div class="tab_cell" v-for="(item, index) in TitleList" :key="index">
{{ item }}
</div>
</div>
<div class="detail_main">
<div class="list_cell" v-for="(item, index) in detailList" :key="index">
<span>{{ item.StyleCode }}</span>
<span>{{ item.TotalPrice }}</span>
<span>{{ item.TotalPrice }}</span>
<span>{{ item.HourYield }}</span>
<span>{{ item.Hour7 }}</span>
<span>{{ item.Hour8 }}</span>
<span>{{ item.Hour9 }}</span>
<span>{{ item.Hour10 }}</span>
<span>{{ item.Hour11 }}</span>
<span>{{ item.Hour12 }}</span>
<span>{{ item.Hour13 }}</span>
<span>{{ item.Hour14 }}</span>
<span>{{ item.Hour15 }}</span>
<span>{{ item.Hour16 }}</span>
<span>{{ item.Hour17 }}</span>
<span>{{ item.Hour18 }}</span>
<span>{{ item.Hour19 }}</span>
<span>{{ item.Hour20 }}</span>
<span>{{ item.Total }}</span>
</div>
<div class="none" v-if="detailList.length == 0">暂无数据...</div>
</div>
</div>
</div>
</template>
<script>
import qs from "qs";
export default {
data() {
return {
options: [],
value: "",
checkIndex: -1,
searchText: "",
item: {},
processList: [], //工序列表
inforList: [],
detailList: [],
userName: localStorage.getItem("$state") ? JSON.parse(localStorage.getItem("$state")).name : '',
TitleList: [
"型体",
"工序号",
"工价",
"时产量",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20+",
"汇总"
]
};
},
created() {
this.getIndexNO();
this.getIEDailyReportInfo();
},
methods: {
handleCommand(command) {
// this.$message("click on item " + command);
if (command == "a") {
this.$cookie.delCookie("access_token");
this.$cookie.delCookie("host");
localStorage.removeItem('$state')
this.$router.push('login')
}
},
check(item, index) {
this.checkIndex = index;
this.getIEReportInfo(item);
},
search() {
if (!this.value) {
this.$message({
message: "清新选择指令单",
type: "warning"
});
return;
}
let params = {
SearchText: this.searchText,
IndexNo: this.value
};
this.$http({
method: "post",
url: this.$cookie.getCookie("host") + "/api/vWSM/WorkStation/GetIEInfo",
data: params
})
.then(res => {
console.log(qs.stringify(params));
if (res.success) {
console.log(res);
this.processList = res.items;
}
})
.catch(err => {
console.log(err);
});
},
getIEDailyReportInfo() {
let params = {};
this.$http
.post(
this.$cookie.getCookie("host") +
"/api/vWSM/WorkStation/GetIEDailyReportInfo",
params
)
.then(res => {
if (res.success) {
console.log(res);
this.detailList = res.items;
}
})
.catch(err => {
console.log(err);
});
},
getIEReportInfo(item) {
let params = {
IndexNo: this.value,
WorkSectionID: item.WorkSectionID,
IEType: item.IEType,
IEID: item.IEID
};
this.$http({
method: "post",
url:
this.$cookie.getCookie("host") +
"/api/vWSM/WorkStation/GetIEReportInfo",
data: params
})
.then(res => {
if (res.success) {
this.inforList = res.items;
}
})
.catch(err => {
console.log(err);
});
},
getIndexNO() {
let params = {};
this.$http({
method: "post",
url:
this.$cookie.getCookie("host") +
"/api/vWSM/WorkStation/GetIndexNoList",
data: params
})
.then(res => {
if (res.success) {
console.log(res);
this.options = [];
res.items.forEach(item => {
this.options.push({ value: item, label: item });
});
}
})
.catch(err => {
console.log(err);
});
},
getIndexInfo() {
this.search();
let params = {
IndexNo: this.value
};
this.$http({
method: "post",
url:
this.$cookie.getCookie("host") + "/api/vWSM/WorkStation/GetIndexInfo",
// transformRequest: [
// function(params) {
// return qs.stringify(params);
// }
// ],
data: params
})
.then(res => {
if (res.success) {
console.log(res);
this.item = res.data;
}
})
.catch(err => {
console.log(err);
});
}
}
};
</script>
<style lang="scss" scoped>
.con {
width: 100%;
box-sizing: border-box;
padding: 0 20px;
min-height: 720px;
}
.el-dropdown-link:hover {
cursor: pointer;
color: #409eff;
}
.el-icon-arrow-down {
font-size: 12px;
}
.top {
width: 100%;
height: 60px;
/* background: brown; */
display: flex;
justify-content: space-between;
align-items: center;
.tab_bar {
width: 80%;
display: flex;
align-items: center;
justify-content: space-between;
}
.tab_select > i {
font-size: 20px;
margin-right: 10px;
}
/* .tab_select{} */
.name {
font-size: 26px;
font-weight: bold;
cursor: pointer;
}
}
.middle {
width: 100%;
display: flex;
justify-content: space-between;
.process {
width: 34%;
border: 1px solid #d8d8d8;
border-top: none;
border-top: none;
overflow: hidden;
border-radius: 6px;
.search {
width: 100%;
height: 60px;
background-color: cornflowerblue;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 0 10px;
color: #ffffff;
.el-input {
width: 94%;
}
span {
font-size: 20px;
color: #ffffff;
cursor: pointer;
}
}
.process_list {
width: 100%;
height: 350px;
// border-bottom: 1px solid #d8d8dd;
&::-webkit-scrollbar {
display: none;
}
// background-color: cyan;
overflow: auto !important;
.list_cell {
height: 45px;
line-height: 45px;
border-bottom: 1px solid #d8d8d8;
box-sizing: border-box;
padding: 0 10px;
cursor: pointer;
&:hover,
&:active {
background: #d8d8d8;
}
}
.active {
background: #9dc7fb !important;
color: #ffffff;
}
}
}
.process_information {
width: 64%;
border: 1px solid #d8d8d8;
border-top: none;
border-radius: 6px;
overflow: hidden;
.infor_title {
height: 60px;
background-color: cornflowerblue;
display: flex;
justify-content: space-between;
align-items: center;
> div {
width: 20%;
font-size: 18px;
color: #ffffff;
text-align: center;
}
}
.infor_main {
height: 350px;
// border-bottom: 1px solid #d8d8d8;
overflow: auto !important;
&::-webkit-scrollbar {
display: none;
}
.list_cell {
line-height: 45px;
height: 45px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #d8d8d8;
> div {
width: 20%;
font-size: 18px;
text-align: center;
}
}
}
}
}
.none {
text-align: center;
padding-top: 50px;
color: #d8d8d8;
}
.bottom {
width: 100%;
// height: 220px;
min-height: 220px;
height: calc(100vh - 510px);
margin-top: 20px;
overflow: hidden;
border: 1px solid #d8d8d8;
border-top: none;
border-radius: 6px;
.detail_title {
width: 100%;
height: 40px;
background-color: cornflowerblue;
display: flex;
justify-content: space-between;
align-items: center;
.tab_cell {
color: #ffffff;
font-size: 18px;
text-align: center;
width: 5%;
&:nth-child(1) {
width: 10%;
}
&:nth-child(2),
&:nth-child(3),
&:nth-child(4) {
width: 8%;
}
&:last-child {
width: 6%;
}
}
}
.detail_main {
height: calc(100vh - 550px);
min-height: 180px;
width: 100%;
overflow: auto !important;
&::-webkit-scrollbar {
display: none;
}
.list_cell {
display: flex;
justify-content: space-between;
align-items: center;
height: 35px;
line-height: 35px;
border-bottom: 1px solid #d8d8dd;
width: 100%;
span {
width: 5%;
text-align: center;
&:nth-child(1) {
width: 10%;
}
&:nth-child(2),
&:nth-child(3),
&:nth-child(4) {
width: 8%;
}
&:last-child {
width: 6%;
}
}
}
}
}
</style>
window.apiUrl = 'http://jhdsoft.gicp.net:9201/ftt_mes2',
window.companyCode = '8901'
\ No newline at end of file
File added
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment