Browse Source

【埃驰-看板】项目初始化+备料看板暂存

master
安虹睿 9 months ago
parent
commit
85979aeb1b
  1. 5
      PC/IAC_LargeScreen/.gitignore
  2. 16
      PC/IAC_LargeScreen/babel.config.js
  3. 29026
      PC/IAC_LargeScreen/package-lock.json
  4. 58
      PC/IAC_LargeScreen/package.json
  5. 1
      PC/IAC_LargeScreen/public/WMS.svg
  6. 1
      PC/IAC_LargeScreen/public/config.js
  7. 27
      PC/IAC_LargeScreen/public/index.html
  8. 21
      PC/IAC_LargeScreen/src/App.vue
  9. BIN
      PC/IAC_LargeScreen/src/assets/img/bg-page.png
  10. BIN
      PC/IAC_LargeScreen/src/assets/img/bg-title-top.png
  11. BIN
      PC/IAC_LargeScreen/src/assets/img/bg-title.png
  12. BIN
      PC/IAC_LargeScreen/src/assets/img/light-col.png
  13. BIN
      PC/IAC_LargeScreen/src/assets/img/light-row.png
  14. BIN
      PC/IAC_LargeScreen/src/assets/logo.png
  15. 5
      PC/IAC_LargeScreen/src/assets/svg/icons/goods.svg
  16. 7
      PC/IAC_LargeScreen/src/assets/svg/icons/noput.svg
  17. 6
      PC/IAC_LargeScreen/src/assets/svg/icons/order.svg
  18. 6
      PC/IAC_LargeScreen/src/assets/svg/icons/shop.svg
  19. 20
      PC/IAC_LargeScreen/src/assets/svg/icons/title-line.svg
  20. 10
      PC/IAC_LargeScreen/src/assets/svg/index.js
  21. 82
      PC/IAC_LargeScreen/src/components/boardHeader/index.vue
  22. 91
      PC/IAC_LargeScreen/src/components/lineLightContain/index.vue
  23. 28
      PC/IAC_LargeScreen/src/components/svgIcon/index.vue
  24. 20
      PC/IAC_LargeScreen/src/main.js
  25. 51
      PC/IAC_LargeScreen/src/router/index.js
  26. 175
      PC/IAC_LargeScreen/src/styles/index.css
  27. 200
      PC/IAC_LargeScreen/src/styles/index.less
  28. 68
      PC/IAC_LargeScreen/src/utils/dateUtil.js
  29. 60
      PC/IAC_LargeScreen/src/utils/request.js
  30. 10
      PC/IAC_LargeScreen/src/utils/util.js
  31. 30
      PC/IAC_LargeScreen/src/views/Home.vue
  32. 335
      PC/IAC_LargeScreen/src/views/stockBoard.vue
  33. 101
      PC/IAC_LargeScreen/vue.config.js

5
PC/IAC_LargeScreen/.gitignore

@ -0,0 +1,5 @@
node_modules
dist
.idea
.vscode/launch.json

16
PC/IAC_LargeScreen/babel.config.js

@ -0,0 +1,16 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
],
"plugins": [
[
"import",
{
"libraryName": "vant",
"libraryDirectory": "es",
"style": true
},
"vant"
]
]
}

29026
PC/IAC_LargeScreen/package-lock.json

File diff suppressed because it is too large

58
PC/IAC_LargeScreen/package.json

@ -0,0 +1,58 @@
{
"name": "wmslargescreen",
"version": "2.0.0",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@jiaminghi/data-view": "^2.10.0",
"axios": "^0.21.1",
"core-js": "^3.6.5",
"echarts": "^5.4.0",
"element-ui": "2.15.13",
"js-cookie": "^3.0.1",
"postcss-px-to-viewport": "^1.1.1",
"quill": "^1.3.7",
"quill-emoji": "^0.2.0",
"svg-sprite-loader": "^6.0.11",
"vue": "^2.6.11",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.2.0",
"vue-video-player": "^5.0.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "^4.5.13",
"@vue/cli-service": "~4.5.0",
"babel-eslint": "^10.1.0",
"babel-plugin-import": "^1.13.3",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.2.2",
"less-loader": "^7.3.0",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

1
PC/IAC_LargeScreen/public/WMS.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1642571135328" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2046" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M935.808 330.752c10.624 18.176 16.128 26.112 16.768 48.64V840.96c-1.152 35.712-7.296 59.264-30.848 82.944-23.552 23.68-46.976 29.952-82.432 30.976H184.704c-35.584-1.152-59.008-7.424-82.432-30.976C78.72 900.224 72.576 876.8 71.424 840.96V379.392c0-22.528 5.76-30.464 17.152-48.64 11.52-18.176 20.608-27.392 39.552-40.064L449.152 88.064c19.456-12.672 41.472-19.072 65.792-19.072s46.336 6.272 65.792 19.072l321.152 202.624c16.128 12.672 23.296 21.888 33.92 40.064z" fill="#319EEC" p-id="2047"></path><path d="M447.616 833.28H261.504c-27.52 0-50.048-22.528-50.048-50.048V595.584c0-27.52 22.528-50.048 50.048-50.048h186.112c27.52 0 50.048 22.528 50.048 50.048v187.648c0.128 27.52-22.4 50.048-50.048 50.048zM640.896 823.936h-80.896c-12.032 0-21.76-9.856-21.76-21.76V720.64c0-12.032 9.856-21.76 21.76-21.76h80.896c12.032 0 21.76 9.856 21.76 21.76v81.536c0 12.032-9.728 21.76-21.76 21.76zM640.896 670.72h-80.896c-12.032 0-21.76-9.856-21.76-21.76v-81.536c0-12.032 9.856-21.76 21.76-21.76h80.896c12.032 0 21.76 9.856 21.76 21.76V648.96c0 11.904-9.728 21.76-21.76 21.76zM802.944 823.936h-80.896c-12.032 0-21.76-9.856-21.76-21.76V720.64c0-12.032 9.856-21.76 21.76-21.76h80.896c12.032 0 21.76 9.856 21.76 21.76v81.536c0 12.032-9.728 21.76-21.76 21.76z" fill="#FFFFFF" p-id="2048"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

1
PC/IAC_LargeScreen/public/config.js

@ -0,0 +1 @@
window.SITE_CONFIG['apiURL'] = 'http://dev.ccwin-in.com:60087'

27
PC/IAC_LargeScreen/public/index.html

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> -->
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> -->
<!-- <meta name="x5-fullscreen" content="true"> -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<!-- <meta name="viewport" content="initial-scale=1,maximum-scale=1, minimum-scale=1"> -->
<link rel="icon" href="<%= BASE_URL %>WMS.svg">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<script>
window.SITE_CONFIG = {};
window.SITE_CONFIG['apiURL'] = '';// api请求地址
</script>
<script src="./config.js"></script>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

21
PC/IAC_LargeScreen/src/App.vue

@ -0,0 +1,21 @@
<template>
<div id="app">
<router-view/>
</div>
</template>
<style>
html, body {
margin: 0;
height: 100%;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
height: 100%;
user-select: none;
}
</style>

BIN
PC/IAC_LargeScreen/src/assets/img/bg-page.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

BIN
PC/IAC_LargeScreen/src/assets/img/bg-title-top.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
PC/IAC_LargeScreen/src/assets/img/bg-title.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
PC/IAC_LargeScreen/src/assets/img/light-col.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
PC/IAC_LargeScreen/src/assets/img/light-row.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
PC/IAC_LargeScreen/src/assets/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

5
PC/IAC_LargeScreen/src/assets/svg/icons/goods.svg

@ -0,0 +1,5 @@
<svg width="87" height="101" viewBox="0 0 87 101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 28.9372L43.0707 1L86 28.9372V73.9589L43.0707 99.5L1 73.9589V28.9372Z" fill="#00FFFF" fill-opacity="0.19" stroke="#1288B7"/>
<path d="M26.2145 51.4258C24.8902 51.4258 23.7688 52.4045 23.5876 53.7144L22.2222 63.5792C22.1703 63.9547 22.1996 64.3369 22.3081 64.7001C22.4165 65.0633 22.6015 65.399 22.8507 65.6846C23.0999 65.9702 23.4075 66.1991 23.7526 66.3557C24.0977 66.5124 24.4725 66.5932 24.8515 66.5928H39.3684C40.9779 66.5928 42.2152 65.1718 41.9953 63.5792L40.6323 53.7144C40.5443 53.0801 40.2299 52.4992 39.7471 52.0786C39.2643 51.658 38.6457 51.4261 38.0054 51.4258H26.2145ZM25.5282 63.3496L26.7292 54.6689H37.4907L38.6917 63.3496H25.5282ZM47.9959 51.4258C46.6716 51.4258 45.5502 52.4045 45.369 53.7144L44.006 63.5792C43.9542 63.9545 43.9834 64.3365 44.0917 64.6995C44.2 65.0625 44.3848 65.3981 44.6338 65.6837C44.8827 65.9693 45.1899 66.1982 45.5348 66.355C45.8796 66.5118 46.2541 66.5929 46.6329 66.5928H61.1498C62.7593 66.5928 63.9991 65.1718 63.7768 63.5792L62.4137 53.7144C62.3257 53.0801 62.0113 52.4992 61.5285 52.0786C61.0457 51.658 60.4271 51.4261 59.7868 51.4258H47.9959V51.4258ZM47.3096 63.3496L48.5107 54.6689H59.2721L60.4732 63.3496H47.3096V63.3496Z" fill="#3FC9FF"/>
<path d="M33.9664 36.6939C34.1476 35.384 35.2714 34.4053 36.5933 34.4053H48.3842C49.7085 34.4053 50.8299 35.384 51.0111 36.6939L52.3765 46.5587C52.4287 46.9343 52.3997 47.3168 52.2915 47.6803C52.1832 48.0438 51.9982 48.3798 51.749 48.6657C51.4998 48.9516 51.1921 49.1807 50.8468 49.3375C50.5014 49.4943 50.1265 49.5752 49.7472 49.5747H35.2303C34.8512 49.5748 34.4765 49.4937 34.1315 49.3367C33.7864 49.1798 33.4791 48.9507 33.2301 48.6648C32.9811 48.379 32.7964 48.0431 32.6882 47.6797C32.5801 47.3164 32.5512 46.9341 32.6034 46.5587L33.9664 36.6939V36.6939ZM37.108 37.6484L35.9069 46.3315H49.0705L47.8694 37.6484H37.108Z" fill="#3FC9FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

7
PC/IAC_LargeScreen/src/assets/svg/icons/noput.svg

@ -0,0 +1,7 @@
<svg width="87" height="101" viewBox="0 0 87 101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 28.9372L43.0707 1L86 28.9372V73.9589L43.0707 99.5L1 73.9589V28.9372Z" fill="#00FFFF" fill-opacity="0.19" stroke="#1288B7"/>
<path d="M53.0082 47.6705C53.1411 47.8019 53.2996 47.9063 53.4743 47.9779C53.6491 48.0495 53.8367 48.0868 54.0264 48.0877C54.2161 48.0886 54.404 48.0529 54.5795 47.9829C54.7549 47.9129 54.9143 47.8099 55.0485 47.6797C55.1827 47.5496 55.2891 47.395 55.3614 47.2247C55.4337 47.0545 55.4707 46.8721 55.47 46.6879C55.4693 46.5038 55.4311 46.3216 55.3576 46.1519C55.284 45.9821 55.1766 45.8282 55.0414 45.699L50.2516 41.0492C49.9854 40.7904 49.625 40.6434 49.2482 40.64H49.2362H49.2218C48.8449 40.6427 48.4842 40.7897 48.2184 41.0492L43.4286 45.699C43.2934 45.8282 43.186 45.9821 43.1124 46.1519C43.0389 46.3216 43.0007 46.5038 43 46.6879C42.9994 46.8721 43.0363 47.0545 43.1086 47.2247C43.1809 47.395 43.2873 47.5496 43.4215 47.6797C43.5557 47.8099 43.7151 47.9129 43.8905 47.9829C44.066 48.0529 44.2539 48.0886 44.4436 48.0877C44.6333 48.0868 44.8209 48.0495 44.9957 47.9779C45.1705 47.9063 45.3289 47.8019 45.4618 47.6705L47.7993 45.4014L47.8112 56.6451C47.8112 57.0151 47.9626 57.3699 48.2321 57.6315C48.5016 57.8931 48.8671 58.04 49.2482 58.04C49.6293 58.04 49.9948 57.8931 50.2642 57.6315C50.5337 57.3699 50.6851 57.0151 50.6851 56.6451L50.6731 45.4014L53.0082 47.6705Z" fill="#3FC9FF"/>
<path d="M31.8398 46.4404C31.5694 46.4405 31.3102 46.5942 31.119 46.8677C30.9279 47.1412 30.8205 47.5122 30.8205 47.8989C30.8205 48.2857 30.9279 48.6566 31.119 48.9301C31.3102 49.2037 31.5694 49.3574 31.8398 49.3574H39.7976C39.9315 49.3575 40.0641 49.3198 40.1878 49.2465C40.3115 49.1732 40.4239 49.0658 40.5186 48.9303C40.6133 48.7949 40.6884 48.6341 40.7397 48.4571C40.7909 48.2802 40.8173 48.0905 40.8173 47.8989C40.8173 47.7074 40.7909 47.5177 40.7397 47.3407C40.6884 47.1638 40.6133 47.003 40.5186 46.8675C40.4239 46.7321 40.3115 46.6247 40.1878 46.5514C40.0641 46.4781 39.9315 46.4404 39.7976 46.4404H31.8398V46.4404ZM31.8398 54.5434C31.5694 54.5434 31.3101 54.6971 31.1189 54.9706C30.9277 55.2441 30.8203 55.6151 30.8203 56.0019C30.8203 56.3887 30.9277 56.7597 31.1189 57.0332C31.3101 57.3068 31.5694 57.4604 31.8398 57.4604H44.3008C44.5712 57.4604 44.8305 57.3068 45.0217 57.0332C45.2129 56.7597 45.3203 56.3887 45.3203 56.0019C45.3203 55.6151 45.2129 55.2441 45.0217 54.9706C44.8305 54.6971 44.5712 54.5434 44.3008 54.5434H31.8398Z" fill="#3FC9FF"/>
<path d="M61.2695 67.0553C61.2695 67.3947 61.1913 67.7308 61.0394 68.0443C60.8875 68.3579 60.6648 68.6427 60.384 68.8827C60.1033 69.1227 59.77 69.3131 59.4032 69.4429C59.0364 69.5728 58.6432 69.6396 58.2462 69.6396H50.5504V66.3505H57.4216L57.4216 35.8088L28.2874 35.8088L28.2874 66.3505H35.1587V69.6396H27.4629C27.0659 69.6396 26.6727 69.5728 26.3059 69.4429C25.9391 69.3131 25.6058 69.1227 25.325 68.8827C25.0443 68.6427 24.8216 68.3579 24.6697 68.0443C24.5177 67.7308 24.4395 67.3947 24.4395 67.0553L24.4395 35.104C24.4395 34.7646 24.5177 34.4285 24.6697 34.115C24.8216 33.8014 25.0443 33.5165 25.325 33.2766C25.6058 33.0366 25.9391 32.8462 26.3059 32.7164C26.6727 32.5865 27.0659 32.5196 27.4629 32.5196L58.2462 32.5196C58.6432 32.5196 59.0364 32.5865 59.4032 32.7164C59.77 32.8462 60.1033 33.0366 60.384 33.2766C60.6648 33.5165 60.8875 33.8014 61.0394 34.115C61.1913 34.4285 61.2695 34.7646 61.2695 35.104L61.2695 67.0553Z" fill="#3FC9FF"/>
<rect x="21.5391" y="66.1602" width="42.92" height="3.48" rx="1.74" fill="#3FC9FF"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

6
PC/IAC_LargeScreen/src/assets/svg/icons/order.svg

@ -0,0 +1,6 @@
<svg width="87" height="101" viewBox="0 0 87 101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 28.9372L43.0707 1L86 28.9372V73.9589L43.0707 99.5L1 73.9589V28.9372Z" fill="#00FFFF" fill-opacity="0.19" stroke="#1288B7"/>
<path d="M26.8086 34.0665C26.8086 33.7174 26.8774 33.3718 27.0109 33.0492C27.1445 32.7267 27.3404 32.4337 27.5872 32.1868C27.8341 31.94 28.1271 31.7442 28.4496 31.6106C28.7722 31.477 29.1178 31.4082 29.4669 31.4082H36.2336V34.7915H30.1919V66.2082H55.8086V34.7915H49.7669V31.4082H56.5336C56.8827 31.4082 57.2284 31.477 57.5509 31.6106C57.8734 31.7442 58.1665 31.94 58.4133 32.1868C58.6602 32.4337 58.856 32.7267 58.9896 33.0492C59.1232 33.3718 59.1919 33.7174 59.1919 34.0665V66.9332C59.1919 67.2823 59.1232 67.628 58.9896 67.9505C58.856 68.273 58.6602 68.5661 58.4133 68.8129C58.1665 69.0598 57.8734 69.2556 57.5509 69.3892C57.2284 69.5228 56.8827 69.5915 56.5336 69.5915H29.4669C29.1178 69.5915 28.7722 69.5228 28.4496 69.3892C28.1271 69.2556 27.8341 69.0598 27.5872 68.8129C27.3404 68.5661 27.1445 68.273 27.0109 67.9505C26.8774 67.628 26.8086 67.2823 26.8086 66.9332V34.0665Z" fill="#3FC9FF"/>
<path d="M36.4746 48.3294C36.4746 47.8807 36.6528 47.4504 36.9701 47.1332C37.2873 46.8159 37.7176 46.6377 38.1663 46.6377H47.8329C48.0551 46.6377 48.2751 46.6814 48.4804 46.7664C48.6857 46.8514 48.8722 46.976 49.0293 47.1331C49.1865 47.2902 49.3111 47.4767 49.3961 47.6819C49.4812 47.8872 49.5249 48.1072 49.5249 48.3294C49.5249 48.5515 49.4812 48.7715 49.3961 48.9768C49.3111 49.1821 49.1865 49.3686 49.0293 49.5257C48.8722 49.6827 48.6857 49.8073 48.4804 49.8923C48.2751 49.9773 48.0551 50.0211 47.8329 50.021H38.1663C37.7176 50.021 37.2873 49.8428 36.9701 49.5256C36.6528 49.2083 36.4746 48.778 36.4746 48.3294ZM36.4746 55.4875C36.4746 55.0389 36.6528 54.6086 36.9701 54.2913C37.2873 53.9741 37.7176 53.7959 38.1663 53.7959H47.8329C48.2816 53.7959 48.7119 53.9741 49.0291 54.2913C49.3464 54.6086 49.5246 55.0389 49.5246 55.4875C49.5246 55.9362 49.3464 56.3665 49.0291 56.6837C48.7119 57.001 48.2816 57.1792 47.8329 57.1792H38.1663C37.7176 57.1792 37.2873 57.001 36.9701 56.6837C36.6528 56.3665 36.4746 55.9362 36.4746 55.4875Z" fill="#3FC9FF"/>
<path d="M42.9993 29.9585C42.8407 29.9585 42.6835 29.9898 42.5369 30.0505C42.3903 30.1112 42.2571 30.2002 42.1449 30.3124C42.0327 30.4246 41.9437 30.5579 41.883 30.7045C41.8223 30.8511 41.791 31.0082 41.791 31.1669V33.0519C41.791 33.5133 41.6077 33.9559 41.2814 34.2822C40.9551 34.6085 40.5125 34.7919 40.051 34.7919H37.9243V37.2085H48.0743V34.7919H45.9477C45.4862 34.7919 45.0436 34.6085 44.7173 34.2822C44.391 33.9559 44.2077 33.5133 44.2077 33.0519V31.1669C44.2077 31.0082 44.1764 30.8511 44.1157 30.7045C44.055 30.5579 43.966 30.4246 43.8538 30.3124C43.7416 30.2002 43.6084 30.1112 43.4618 30.0505C43.3152 29.9898 43.158 29.9585 42.9993 29.9585V29.9585ZM38.4077 31.1669C38.4077 29.9491 38.8914 28.7812 39.7526 27.9201C40.6137 27.059 41.7816 26.5752 42.9993 26.5752C44.2171 26.5752 45.385 27.059 46.2461 27.9201C47.1073 28.7812 47.591 29.9491 47.591 31.1669V31.4085H51.4577V37.9335C51.4577 38.2826 51.3889 38.6283 51.2553 38.9508C51.1217 39.2734 50.9259 39.5664 50.6791 39.8133C50.4322 40.0601 50.1392 40.2559 49.8166 40.3895C49.4941 40.5231 49.1484 40.5919 48.7994 40.5919H37.1993C36.8503 40.5919 36.5046 40.5231 36.1821 40.3895C35.8595 40.2559 35.5665 40.0601 35.3196 39.8133C35.0728 39.5664 34.877 39.2734 34.7434 38.9508C34.6098 38.6283 34.541 38.2826 34.541 37.9335V31.4085H38.4077V31.1669V31.1669Z" fill="#3FC9FF"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

6
PC/IAC_LargeScreen/src/assets/svg/icons/shop.svg

@ -0,0 +1,6 @@
<svg width="87" height="101" viewBox="0 0 87 101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 28.9372L43.0707 1L86 28.9372V73.9589L43.0707 99.5L1 73.9589V28.9372Z" fill="#00FFFF" fill-opacity="0.19" stroke="#1288B7"/>
<path d="M36.1607 40.3819C35.998 40.3816 35.8369 40.4134 35.6865 40.4754C35.5361 40.5374 35.3994 40.6285 35.2842 40.7435C35.1691 40.8584 35.0777 40.9949 35.0154 41.1452C34.953 41.2954 34.921 41.4565 34.921 41.6192V52.8567C34.921 53.5407 35.4768 54.0965 36.1607 54.0965H56.7628C57.4467 54.0965 58.0001 53.5407 58.0001 52.8567V41.6192C58.0001 41.2911 57.8698 40.9764 57.6377 40.7443C57.4057 40.5123 57.091 40.3819 56.7628 40.3819H36.1607V40.3819ZM31.7793 41.6192C31.7793 39.2026 33.7416 37.2402 36.1607 37.2402H56.7628C59.1795 37.2402 61.1418 39.2002 61.1418 41.6192V52.8567C61.1421 53.432 61.0291 54.0017 60.8092 54.5332C60.5892 55.0648 60.2667 55.5478 59.8601 55.9547C59.4534 56.3616 58.9706 56.6844 58.4391 56.9046C57.9077 57.1248 57.3381 57.2382 56.7628 57.2382H36.1607C34.9987 57.2382 33.8843 56.7765 33.0626 55.9549C32.2409 55.1332 31.7793 54.0188 31.7793 52.8567V41.6192V41.6192Z" fill="#3FC9FF"/>
<path d="M54.5872 47.2378C54.5872 47.4441 54.5466 47.6484 54.4676 47.839C54.3887 48.0295 54.273 48.2027 54.1271 48.3486C53.9812 48.4944 53.8081 48.6101 53.6175 48.6891C53.4269 48.768 53.2226 48.8087 53.0164 48.8087H39.9204C39.5038 48.8087 39.1043 48.6432 38.8097 48.3486C38.5151 48.054 38.3496 47.6544 38.3496 47.2378C38.3496 46.8212 38.5151 46.4217 38.8097 46.1271C39.1043 45.8325 39.5038 45.667 39.9204 45.667H53.0164C53.2226 45.667 53.4269 45.7076 53.6175 45.7866C53.8081 45.8655 53.9812 45.9812 54.1271 46.1271C54.273 46.2729 54.3887 46.4461 54.4676 46.6367C54.5466 46.8273 54.5872 47.0315 54.5872 47.2378V47.2378Z" fill="#3FC9FF"/>
<path d="M20.541 35.9995C20.541 35.5829 20.7065 35.1834 21.0011 34.8888C21.2957 34.5942 21.6952 34.4287 22.1118 34.4287H25.8577C27.7596 34.4287 29.3014 35.9705 29.3014 37.8725V59.4098C29.3014 59.579 29.4368 59.7143 29.6035 59.7143H59.5702C59.9868 59.7143 60.3863 59.8798 60.6809 60.1744C60.9755 60.469 61.141 60.8685 61.141 61.2851C61.141 61.7017 60.9755 62.1013 60.6809 62.3959C60.3863 62.6905 59.9868 62.856 59.5702 62.856H57.3952V64.0933C57.3952 64.6685 57.2819 65.2381 57.0618 65.7695C56.8416 66.301 56.519 66.7838 56.1123 67.1906C55.7055 67.5973 55.2226 67.92 54.6912 68.1401C54.1598 68.3602 53.5902 68.4735 53.015 68.4735C52.4398 68.4735 51.8702 68.3602 51.3387 68.1401C50.8073 67.92 50.3244 67.5973 49.9177 67.1906C49.511 66.7838 49.1883 66.301 48.9682 65.7695C48.7481 65.2381 48.6348 64.6685 48.6348 64.0933V62.856H40.5389V64.0933C40.5389 65.255 40.0774 66.3691 39.256 67.1906C38.4346 68.012 37.3204 68.4735 36.1587 68.4735C34.997 68.4735 33.8829 68.012 33.0615 67.1906C32.24 66.3691 31.7785 65.255 31.7785 64.0933V62.856H29.6035C28.6902 62.856 27.8142 62.4931 27.1684 61.8473C26.5226 61.2015 26.1598 60.3256 26.1598 59.4122V37.87C26.1598 37.8304 26.152 37.7911 26.1368 37.7544C26.1216 37.7178 26.0993 37.6845 26.0713 37.6564C26.0432 37.6284 26.0099 37.6061 25.9733 37.591C25.9366 37.5758 25.8974 37.568 25.8577 37.568H22.1118C21.9056 37.568 21.7013 37.5273 21.5107 37.4484C21.3201 37.3694 21.147 37.2537 21.0011 37.1079C20.8552 36.962 20.7395 36.7888 20.6606 36.5983C20.5816 36.4077 20.541 36.2034 20.541 35.9971V35.9995ZM51.7764 62.856V64.0933C51.7764 64.4218 51.9069 64.7368 52.1392 64.9691C52.3715 65.2014 52.6865 65.3318 53.015 65.3318C53.3435 65.3318 53.6585 65.2014 53.8908 64.9691C54.123 64.7368 54.2535 64.4218 54.2535 64.0933V62.856H51.7764ZM37.3973 62.856H34.9202V64.0933C34.9202 64.4218 35.0507 64.7368 35.2829 64.9691C35.5152 65.2014 35.8302 65.3318 36.1587 65.3318C36.4872 65.3318 36.8022 65.2014 37.0345 64.9691C37.2668 64.7368 37.3973 64.4218 37.3973 64.0933V62.856V62.856Z" fill="#3FC9FF"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

20
PC/IAC_LargeScreen/src/assets/svg/icons/title-line.svg

@ -0,0 +1,20 @@
<svg width="109" height="8" viewBox="0 0 109 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="34.998" y1="6" x2="108.998" y2="6" stroke="#31CEFF" stroke-width="2"/>
<rect x="0.998047" y="0.201172" width="7" height="7" fill="url(#paint0_linear_1518_19060)"/>
<rect x="11.998" y="0.201172" width="7" height="7" fill="url(#paint1_linear_1518_19060)"/>
<rect x="22.998" y="0.201172" width="7" height="7" fill="url(#paint2_linear_1518_19060)"/>
<defs>
<linearGradient id="paint0_linear_1518_19060" x1="4.49805" y1="0.201172" x2="4.49805" y2="7.20117" gradientUnits="userSpaceOnUse">
<stop stop-color="#0366FF"/>
<stop offset="1" stop-color="#3BE7FE"/>
</linearGradient>
<linearGradient id="paint1_linear_1518_19060" x1="15.498" y1="0.201172" x2="15.498" y2="7.20117" gradientUnits="userSpaceOnUse">
<stop stop-color="#0366FF"/>
<stop offset="1" stop-color="#3BE7FE"/>
</linearGradient>
<linearGradient id="paint2_linear_1518_19060" x1="26.498" y1="0.201172" x2="26.498" y2="7.20117" gradientUnits="userSpaceOnUse">
<stop stop-color="#0366FF"/>
<stop offset="1" stop-color="#3BE7FE"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

10
PC/IAC_LargeScreen/src/assets/svg/index.js

@ -0,0 +1,10 @@
import Vue from "vue"
import SvgIcon from "@/components/svgIcon"
Vue.component('svg-icon', SvgIcon)
const req = require.context('@/assets/svg/icons',false,/\.svg$/)
const requireAll = requireContext =>{
// requireContext.keys()数据:['./404.svg', './agency.svg', './det.svg', './user.svg']
requireContext.keys().map(requireContext)
}
requireAll(req)

82
PC/IAC_LargeScreen/src/components/boardHeader/index.vue

@ -0,0 +1,82 @@
<template>
<div class="boardHeader">
<!-- <a href="/" class="back"><i class="el-icon-arrow-left"></i>返回</a> -->
<div class="title">{{name}}</div>
<div class="time">{{time}}</div>
<div class="dateSelect" v-if="hasDateSelect">
<el-date-picker
v-model="dateValue"
type="date"
placeholder="选择日期"
@change="dateSelectChange"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
></el-date-picker>
</div>
</div>
</template>
<script>
import dateUtil from '../../utils/dateUtil'
import axiosUtil from '../../utils/request'
export default {
name: 'boardHeader',
props:['title','timeCheck','hasDateSelect'],
data (props) {
const defaultDateOption = {
disabledDate(time) {
// 7
let _current = new Date().getTime()//
let _before = _current - 7 * 24 * 60 * 60 * 1000//7
let _time = time.getTime() //time
return !(_time >= _before && _time <= _current)
},
}
return {
name:props.title,
time:"",
timer:null,
timeCheckHandle:props.timeCheck,
dateValue:'',//
pickerOptions:props.selectDataOptions || defaultDateOption
}
},
destroyed() {
if(this.timer)clearInterval(this.timer)
},
created() {
//
this.getServerTime()
},
methods:{
//
getServerTime(){
let _this=this
this.timer = setInterval(() => {
let _res = new Date()
_res += 1000
_this.time = dateUtil.getnowDay() + ' ' + dateUtil.getnowTime()
},1000)
this.time = dateUtil.getnowDay() + ' ' + dateUtil.getnowTime()
// dateUtil.getServerTime((date,time,dateTime,res)=>{
// this.dateValue = dateUtil.getnowDay(date)
// this.timer = setInterval(() => {
// let _res = res
// if(this.timeCheckHandle)this.timeCheckHandle(res)
// _res += 1000
// _this.time = dateUtil.getnowDay(_res) + ' ' + dateUtil.getnowTime(_res)
// // //
// let _time = dateUtil.getnowTime(_res)
// if(_time == '00:00:00' || _time == '0:00:00'){
// location.reload()
// }
// }, 1000)
// })
},
//
dateSelectChange(value){
this.$emit('headerDateChange',value)
}
}
}
</script>

91
PC/IAC_LargeScreen/src/components/lineLightContain/index.vue

@ -0,0 +1,91 @@
<template>
<div class="lineLightContain-outer" :class="lineClass">
<div class="lineLightContain">
<img src="../../assets/img/light-row.png" class="line top">
<img src="../../assets/img/light-col.png" class="line right">
<img src="../../assets/img/light-row.png" class="line bottom">
<img src="../../assets/img/light-col.png" class="line left">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
name: 'lineLightContain',
props:{
lineClass:String
},
}
</script>
<style scoped lang="less">
@border_size:0.2rem;
@line_size:0.15rem;
@boxTitle_height:2.3rem;
// -
.lineLightContain-outer{
width: calc(100% - 2*@border_size);
height: calc(100% - 2*@border_size);
box-sizing: border-box;
overflow: hidden;
position: relative;
}
.lineLightContain{
height: 100%;
width: 100%;
border: #1d36b3 solid @border_size;
border-radius: 0.2rem;
background: rgba(0, 15, 80, 0.48);
padding: 1rem 1.2rem;
box-sizing: border-box;
.box-title{
position: relative;
color: #31ceff;
// font-style: italic;
letter-spacing: 0.05rem;
font-size: 1rem;
height: @boxTitle_height;
overflow: hidden;
text-align: left;
.name{
padding-left: 0.4rem;
}
.svg-icon {
position: absolute;
width: 6rem;
height: 0.4rem;
font-size: unset;
left: 0;
bottom: 0;
text-align: left;
}
}
.line{
position: absolute;
&.top{
height: @line_size;
right: 20%;
top: 0;
}
&.right{
width: @line_size;
right: 0;
bottom: 20%;
}
&.bottom{
height: @line_size;
left: 20%;
bottom: 0;
}
&.left{
width: @line_size;
left: 0;
top: 20%;
}
}
}
</style>

28
PC/IAC_LargeScreen/src/components/svgIcon/index.vue

@ -0,0 +1,28 @@
<template>
<i v-if="iconFileName.indexOf('el-icon-') === 0" :class="iconFileName" />
<svg v-else class="svg-icon" aria-hidden="true" v-on="$listeners">
<use :xlink:href="`#icon-${iconFileName}`" />
</svg>
</template>
<script>
export default {
name: 'SvgIcon',
props: {
iconFileName: {
type: String,
required: true
}
},
}
</script>
<style scoped>
/* .svg-icon {
width: 1em;
height: 1em;
overflow: hidden;
vertical-align: -0.15em;
fill: currentColor;
} */
</style>

20
PC/IAC_LargeScreen/src/main.js

@ -0,0 +1,20 @@
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './styles/index.css'
import dataV from '@jiaminghi/data-view'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import './assets/svg/index'
Vue.use(dataV)
Vue.use(ElementUI);
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App)
}).$mount('#app')

51
PC/IAC_LargeScreen/src/router/index.js

@ -0,0 +1,51 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import stockBoard from '../views/stockBoard'
import dateUtil from '../utils/dateUtil'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
// 纳入计划与实际看板
{
path: '/stockBoard',
name: 'stockBoard',
component: stockBoard,
meta:{
title:"备料看板"
}
},
]
const router = new VueRouter({
routes
})
router.beforeEach((to, from, next) => {
console.log('router.beforeEach',to)
/* 路由发生变化修改页面title */
if (to.meta.title) {
document.title = to.meta.title
}
if(to.meta.content){
let head = document.getElementsByTagName('head');
let metas = document.getElementsByTagName('meta');
for (let i = 0; i < metas.length; i++) {
if (metas[i].name === 'viewport') {
metas[i].content += ', ' + to.meta.content
}
}
}
// 获取服务器当前时间
// dateUtil.getServerTime((date,time,dateTime,res)=>{
next()
// })
})
export default router

175
PC/IAC_LargeScreen/src/styles/index.css

@ -0,0 +1,175 @@
.dv-loading {
color: #fff;
margin-top: -6rem;
}
.opacityHide {
opacity: 0;
}
.boardHeader {
position: relative;
line-height: 6rem;
height: 6rem;
overflow: hidden;
background: url(../assets/img/bg-title.png) no-repeat;
background-size: 100% 6rem;
background-position: bottom center;
}
.boardHeader .title {
font-size: 1.4rem;
font-style: italic;
letter-spacing: 0.3rem;
color: #fff;
line-height: 1.4rem;
padding-top: 1.6rem;
}
.boardHeader .time {
font-size: 1.1rem;
color: #fff;
line-height: 4.2rem;
}
.boardHeader .dateSelect {
position: absolute;
left: 2rem;
top: 0.5rem;
}
.boardHeader .dateSelect .el-input__inner {
background: transparent !important;
border-color: #1d36b3 !important;
color: #fff !important;
}
.boardFullPage {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: url('../assets/img/bg-page.png') no-repeat;
background-size: cover;
background-position: bottom center;
}
.lineContain {
border: #1d36b3 solid 0.2rem;
border-radius: 1rem;
overflow: hidden;
background: rgba(0, 15, 80, 0.5);
box-sizing: border-box;
}
.hasNoData {
position: absolute;
top: 40%;
left: 0;
right: 0;
color: #fff;
font-size: 1.1rem;
}
.doubleNameTagHeader {
width: 100%;
position: relative;
height: 100%;
line-height: 2rem;
}
.doubleNameTagHeader .name {
position: absolute;
left: 0;
bottom: 0;
}
.doubleNameTagHeader .time {
position: absolute;
right: 0;
top: 0;
}
.doubleNameTagHeader .line {
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
}
.doubleNameTagHeader .line::before {
content: "";
position: absolute;
left: 0;
top: 2rem;
width: 100%;
box-sizing: border-box;
border-bottom: 0.1rem solid #fff;
transform-origin: bottom center;
transform: rotate(10deg);
}
.chartContain {
display: flex;
height: calc(46vh - 6rem);
justify-content: space-around;
padding-top: 1rem;
box-sizing: border-box;
}
.chartContain .oneRow {
display: flex;
width: calc(50% - 2rem);
margin: 0 0.5rem;
}
.chartContain .oneRow .totalContain {
background: url(../assets/img/bg-title-top.png) no-repeat;
background-position: top center;
display: flex;
}
.chartContain .oneRow .totalContain .box {
height: calc(100% - 6rem);
margin-right: 1rem;
overflow: hidden;
align-self: end;
min-height: 12rem;
}
.chartContain .oneRow .totalContain .box .lineLightContain {
width: 15rem;
flex-shrink: 0;
color: #43caff;
display: flex;
flex-wrap: wrap;
align-content: center;
}
.chartContain .oneRow .totalContain .box .icon {
width: 100%;
}
.chartContain .oneRow .totalContain .box .icon .svg-icon {
width: 5rem;
height: 5rem;
overflow: hidden;
vertical-align: -0.15em;
fill: currentColor;
}
.chartContain .oneRow .totalContain .box .val {
width: 100%;
font-size: 2rem;
padding: 5% 0;
}
.chartContain .oneRow .totalContain .box .name {
width: 100%;
font-size: 1rem;
}
.chartContain .oneRow .chartBox {
position: relative;
width: 100%;
height: 100%;
}
.chartContain .oneRow .chartBox .myEchart {
width: 100%;
height: calc(100% - 2.3rem);
margin: 0 auto;
}
.chartContain .oneRow .chartBox .echatCenterDataSum {
position: absolute;
top: calc(50% + 2.3rem / 2);
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
text-align: center;
color: #fff;
z-index: 1111;
}
.chartContain .oneRow .chartBox .echatCenterDataSum p {
margin: 0;
}
.chartContain .oneRow .chartBox .echatCenterDataSum .sum {
font-size: 1.6rem;
padding-top: 0.3rem;
}

200
PC/IAC_LargeScreen/src/styles/index.less

@ -0,0 +1,200 @@
@header_height:6rem;
@border_size:0.2rem;
@boxTitle_height:2.3rem;
.dv-loading{
color: #fff;
margin-top: -@header_height;
}
// 模拟隐藏
.opacityHide{
opacity: 0;
}
// 头部
.boardHeader{
position: relative;
line-height: @header_height;
height: @header_height;
overflow: hidden;
background: url(../assets/img/bg-title.png) no-repeat;
background-size: 100% 6rem;
background-position: bottom center;
.title{
font-size: 1.4rem;
font-style: italic;
letter-spacing: 0.3rem;
color: #fff;
line-height: 1.4rem;
padding-top: 1.6rem;
}
.time{
font-size: 1.1rem;
color: #fff;
line-height: 4.2rem;
}
.dateSelect{
position: absolute;
left: 2rem;
top: 0.5rem;
.el-input__inner{
background: transparent !important;
border-color: #1d36b3 !important;
color: #fff !important;
}
}
}
// 页面
.boardFullPage{
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: url('../assets/img/bg-page.png') no-repeat;
background-size: cover;
background-position: bottom center;
}
// 边框
.lineContain{
border: #1d36b3 solid @border_size;
border-radius: 1rem;
overflow: hidden;
// background: rgba(0, 44, 81, 0.9);
background: rgba(0, 15, 80, 0.5);
box-sizing: border-box;
}
// 暂无信息
.hasNoData{
position: absolute;
top: 40%;
left: 0;
right: 0;
color: #fff;
font-size: 1.1rem;
}
// 表格双头部(如:物流时刻表,左上)
.doubleNameTagHeader{
width: 100%;
position: relative;
height:100%;
line-height: 2rem;
.name{
position: absolute;
left: 0;
bottom: 0;
}
.time{
position: absolute;
right: 0;
top: 0;
}
.line{
position:absolute;
width:100%;
height:100%;
box-sizing:border-box;
// line-height:120px;
// text-indent:5px;
&::before{
content:"";
position:absolute;
left:0;
top:2rem;
width:100%;
// height:44%;
box-sizing:border-box;
border-bottom:0.1rem solid #fff;
transform-origin:bottom center;
transform: rotate(10deg);
}
}
}
// 图表内容
.chartContain{
display: flex;
height: calc(46vh - @header_height);
justify-content: space-around;
padding-top: 1rem;
box-sizing: border-box;
.oneRow{
display: flex;
width: calc(50% - 2rem);
margin: 0 0.5rem;
// 左侧汇总
.totalContain{
background: url(../assets/img/bg-title-top.png) no-repeat;
background-position: top center;
display: flex;
.box{
height: calc(100% - 6rem);
margin-right: 1rem;
overflow: hidden;
align-self: end;
min-height: 12rem;
.lineLightContain{
width: 15rem;
flex-shrink: 0;
color: #43caff;
display: flex;
flex-wrap: wrap;
align-content: center;
}
.icon{
width: 100%;
.svg-icon {
width: 5rem;
height: 5rem;
overflow: hidden;
vertical-align: -0.15em;
fill: currentColor;
}
}
.val{
width: 100%;
font-size: 2rem;
padding: 5% 0;
}
.name{
width: 100%;
font-size:1rem;
}
}
}
// 右侧图表
.chartBox{
position: relative;
width: 100%;
height: 100%;
.myEchart{
width: 100%;
height: calc(100% - @boxTitle_height);
margin: 0 auto;
}
// echart中间汇总数
.echatCenterDataSum{
position: absolute;
top: calc(50% + @boxTitle_height / 2);
left: 50%;
transform:translate(-50%,-50%);
-webkit-transform:translate(-50%,-50%);
text-align: center;
color: #fff;
z-index: 1111;
p{
margin: 0;
}
.sum{
font-size: 1.6rem;
padding-top: 0.3rem;
}
}
}
}
}

68
PC/IAC_LargeScreen/src/utils/dateUtil.js

@ -0,0 +1,68 @@
import axiosUtil from '../utils/request'
var getAgoDay = function (n){
let date = new Date()
let seperator = '-'
let newDate = new Date(date.getTime() - n*24*60*60*1000)
let year = newDate.getFullYear()
let month = newDate.getMonth()+1
let day = newDate.getDate()
return year.toString() + seperator + month.toString() + seperator + day.toString()
}
/**
* 获取当前时间 yyyy-dd-mm todo:待测试
* @param {*} value 时间戳
* @returns
*/
var getnowDay = function (value){
let date = new Date()
let seperator = '-'
let newDate = value ? new Date(value) : new Date(date.getTime())
let year = newDate.getFullYear()
let month = newDate.getMonth()+1
let day = newDate.getDate()
return year.toString() + seperator + month.toString() + seperator + day.toString()
}
/**
* 获取当前时间 hh:mm:ss
* @param {*} value 时间戳
* @returns
*/
var getnowTime = function (value){
let date = new Date()
let seperator = ':'
let newDate = value ? new Date(value) : new Date(date.getTime())
function __formatLength(value){
if(Number(value) < 10){
return "0"+value
}else{
return value
}
}
let hour = __formatLength(newDate.getHours());
let minute = __formatLength(newDate.getMinutes());
let second = __formatLength(newDate.getSeconds());
return hour.toString() + seperator + minute.toString() + seperator + second.toString()
}
var getServerTime = function (callback){
axiosUtil.ajax_get('/api/dashboard/asn-time-window/get-server-date-time').then(res => {
let _res = new Date(res).getTime()
let date = getnowDay(_res)
let time = getnowTime(_res)
let datetime = date + ' ' + time
if(callback)callback(date,time,datetime,_res,res)
}).catch(error => {
console.log(error)
})
}
export default {
getAgoDay: getAgoDay, // 获取当前天前几天
getnowDay: getnowDay, // 获取当前时间 yyyy-dd-mm
getnowTime: getnowTime, // 获取当前时间 hh:mm:ss
getServerTime:getServerTime,// 获取服务器时间 走接口
}

60
PC/IAC_LargeScreen/src/utils/request.js

@ -0,0 +1,60 @@
import axios from 'axios'
import qs from "querystring";
// http request拦截器 添加一个请求拦截器
axios.interceptors.request.use(function (config) {
// Do something before request is sent
let token = localStorage.getItem('token') //window.localStorage.getItem("accessToken")
if (token) {
config.headers.token = token; //将token放到请求头发送给服务器
return config;
//这里经常搭配token使用,将token值配置到tokenkey中,将tokenkey放在请求头中
// config.headers['accessToken'] = Token;
}
return config
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
// // 添加一个响应拦截器
// axios.interceptors.response.use(function (response) {
// // Do something with response data
// return response;
// }, function (error) {
// // Do something with response error
// return Promise.reject(error);
// });
//是我封装的axios.post请求方式
const baseApi = window.SITE_CONFIG['apiURL']
export default class Axios {
static ajax_post(url, params ) {
return new Promise((resolve, reject) => {
const URL = baseApi + url
return axios.post(URL, qs.stringify(params)).then(response => {
resolve(response.data);
return response.data
}).catch(error => {
reject(error);
return error
// 异常处理
})
})
}
static ajax_get(url, param ) {
return new Promise((resolve, reject) => {
const URL = baseApi + url
return axios.get(URL, {
params: param,
}).then(response => {
resolve(response.data);
return response.data
}).catch(error => {
reject(error);
return error
// 异常处理
})
})
}
}

10
PC/IAC_LargeScreen/src/utils/util.js

@ -0,0 +1,10 @@
// 窗口改变,页面刷新
var addEventResizeFlesh = function(){
window.addEventListener('resize',function(){
window.location.reload()
})
}
export default {
waitTime:20000,//滚屏列表刷新等待间隔配置项
addEventResizeFlesh:addEventResizeFlesh,
}

30
PC/IAC_LargeScreen/src/views/Home.vue

@ -0,0 +1,30 @@
<template>
<div class="nav">
<div class="item"><el-button type="primary" plain><a href="/#/stockBoard">备料看板</a></el-button></div>
</div>
</template>
<script>
export default {
name: 'largeScreen',
data () {
return {}
},
methods: {}
}
</script>
<style lang="less" scoped>
.nav{
padding-top: 1rem;
.item{
margin: 0 auto 1rem;
button{
width: 20rem;
}
a{
display: block;
color: inherit;
}
}
}
</style>

335
PC/IAC_LargeScreen/src/views/stockBoard.vue

@ -0,0 +1,335 @@
<template>
<div class="boardFullPage stockBoardPage">
<boardHeader
ref="boardHeader_Ref"
:title="'备料看板'"
></boardHeader>
<dv-loading v-show="dataLoading">Loading...</dv-loading>
<div class="lineContain">
<dv-scroll-board :config="config" ref="PAAscrollBoard" style="height:100%"/>
<div class="hasNoData" v-if="config.data.length <= 0 && !dataLoading">暂无数据</div>
</div>
</div>
</template>
<script>
import axiosUtil from '../utils/request'
import boardHeader from '../components/boardHeader'
import util from '../utils/util'
export default {
name: 'stockBoard',
components:{boardHeader},
data () {
return {
dataLoading: true,
// config
configDefult:{
header:['物料', '描述', '数量', '需求库位', '状态' ],
waitTime: util.waitTime,//20d
carousel: 'page',
// index: true,
// indexHeader: '',
columnWidth: [660,660,280,280,280],
align: ['left','left','center','center','center'],
hoverPause: false, //
rowNum: 10,
headerBGC: '#1981f6',
headerHeight: 65,
evenRowBGC: 'rgba(0, 44, 81, 0.9)',
oddRowBGC: 'rgba(10, 29, 50, 0.9)'
},
config: {}
}
},
created() {
this.initConfig()
this.getList()
clearInterval(this.intervalId)
this.intervalId = setInterval(() => {
this.getList()
}, 60000)//
util.addEventResizeFlesh()
},
destroyed() {
clearInterval(this.intervalId)
},
methods: {
init(){
this.initConfig()
this.getList()
util.addEventResizeFlesh()
},
initConfig(data){
this.config = {
header: this.configDefult.header,
data: data || [],
waitTime: this.configDefult.waitTime,//20d
carousel: this.configDefult.carousel,
index: this.configDefult.index,
indexHeader: this.configDefult.indexHeader,
columnWidth: this.configDefult.columnWidth,
align: this.configDefult.align,
hoverPause: this.configDefult.hoverPause, //
rowNum: this.configDefult.rowNum,
headerBGC: this.configDefult.headerBGC,
headerHeight: this.configDefult.headerHeight,
oddRowBGC: this.configDefult.oddRowBGC,
evenRowBGC: this.configDefult.evenRowBGC
}
},
async getList(){
this.dataLoading = true
this.initConfig()
// axiosUtil.ajax_get('/api/dashboard/plan-and-actual/plan-actual-list').then(res => {
this.dataLoading = false
// if(res.length <= 0){
// return
// }
let rows = []
//
let _res = [
{
"itemCode": "294FL047",
"itemName": "294项目左前门",
"qty": 65,
"locationCode": 'WIP',
"status": '紧急'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 23,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "294RR027",
"itemName": "294项目右后门",
"qty": 60,
"locationCode": 'WIP',
"status": '正常'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 80,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "254FR005",
"itemName": "254项目右前门",
"qty": 20,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "254FL036",
"itemName": "254项目左前门",
"qty": 30,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "L0385670AA_1D03",
"itemName": "IP HUD WSS HIGH 1D03 L0385670AA 1D03",
"qty": 10,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "V01",
"itemName": "scrap item. ",
"qty": 16,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "41300016AA",
"itemName": "PVC KL NAPPAO BLANK19K21 L0387018AA",
"qty": 20,
"locationCode": 'SALE',
"status": '紧急'
},
{
"itemCode": "294FL047",
"itemName": "294项目左前门",
"qty": 65,
"locationCode": 'WIP',
"status": '紧急'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 23,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "294RR027",
"itemName": "294项目右后门",
"qty": 60,
"locationCode": 'WIP',
"status": '正常'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 80,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "254FR005",
"itemName": "254项目右前门",
"qty": 20,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "254FL036",
"itemName": "254项目左前门",
"qty": 30,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "L0385670AA_1D03",
"itemName": "IP HUD WSS HIGH 1D03 L0385670AA 1D03",
"qty": 10,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "V01",
"itemName": "scrap item. ",
"qty": 16,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "41300016AA",
"itemName": "PVC KL NAPPAO BLANK19K21 L0387018AA",
"qty": 20,
"locationCode": 'SALE',
"status": '紧急'
},
{
"itemCode": "294FL047",
"itemName": "294项目左前门",
"qty": 65,
"locationCode": 'WIP',
"status": '紧急'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 23,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "294RR027",
"itemName": "294项目右后门",
"qty": 60,
"locationCode": 'WIP',
"status": '正常'
},
{
"itemCode": "294RL005",
"itemName": "294项目左后门",
"qty": 80,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "254FR005",
"itemName": "254项目右前门",
"qty": 20,
"locationCode": 'FG',
"status": '紧急'
},
{
"itemCode": "254FL036",
"itemName": "254项目左前门",
"qty": 30,
"locationCode": 'FG',
"status": '正常'
},
{
"itemCode": "L0385670AA_1D03",
"itemName": "IP HUD WSS HIGH 1D03 L0385670AA 1D03",
"qty": 10,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "V01",
"itemName": "scrap item. ",
"qty": 16,
"locationCode": 'SH',
"status": '正常'
},
{
"itemCode": "41300016AA",
"itemName": "PVC KL NAPPAO BLANK19K21 L0387018AA",
"qty": 20,
"locationCode": 'SALE',
"status": '紧急'
},
]
_res.forEach(item=>{
let _item = []
_item[0] = item.itemCode;//
_item[1] = item.itemName;//
_item[2] = item.qty;//
_item[3] = item.locationCode;//
if(item.status == '紧急'){
_item[4] = `<span class="statusItem statusItem_warning">${item.status}</span>`;//
}else{
_item[4] = `<span class="statusItem statusItem_normal">${item.status}</span>`;//
}
rows.push(_item)
})
this.initConfig(rows)
// this_.$refs['PAAscrollBoard'].updateRows(rows,0) //
// }).catch(error => {
// this.dataLoading = false
// console.log(error)
// })
},
}
}
</script>
<style lang="less">
.stockBoardPage{
background: rgba(0, 44, 81, 1);
.header-item{
font-size: 1rem;
font-weight: bold;
}
.ceil{
font-size: 1rem;
}
.dv-loading{
color: #fff;
}
.lineContain{
margin: 2rem;
height: calc(100vh - 10rem);
}
.statusItem{
padding:0.5rem 1.5rem;
color:#fff;
border-radius:0.1rem
}
.statusItem_warning{
background:#ff2626
}
.statusItem_normal{
background:#28b119
}
}
</style>

101
PC/IAC_LargeScreen/vue.config.js

@ -0,0 +1,101 @@
/**
* 配置参考: https://cli.vuejs.org/zh/config/
*/
var webpack = require('webpack');
const path = require('path')
const pxtovw = require('postcss-px-to-viewport');
function resolve(dir) {
return path.join(__dirname, dir)
}
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
chainWebpack: config => {
const svgRule = config.module.rule('svg')
svgRule.uses.clear()
svgRule
.test(/\.svg$/)
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
// svg图标加载
config.module
.rule('svg')
.exclude.add(resolve('src/assets/svg/icons'))
.end()
config.module
.rule('icons')// 定义一个名叫 icons 的规则
.test(/\.svg$/)// 设置 icons 的匹配正则
.include.add(resolve('src/assets/svg/icons'))// 设置当前规则的作用目录,只在当前目录下才执行当前规则
.end()
.use('svg-sprite')// 指定一个名叫 svg-sprite 的 loader 配置
.loader('svg-sprite-loader')// 该配置使用 svg-sprite-loader 作为处理 loader
.options({// 该 svg-sprite-loader 的配置
symbolId:'icon-[name]'
})
.end()
},
configureWebpack: {
resolve: {
alias: {
'@': resolve('src')
}
},
plugins: [],
},
// eslint : false,
// 默认打开eslint效验,如果需要关闭,设置成false即可
lintOnSave: false,
productionSourceMap: false,
devServer: {
open: true,
port: 8082,
https: false,
hotOnly: false,
overlay: {
errors: true,
warnings: true
},
// proxy: {
// '/asn': {
// target: 'http://192.168.0.67:8081',
// changeOrigin: true,
// // logLevel: 'debug',
// pathRewrite: {
// '^/asn': ''
// }
// }
// }
},
css: {
loaderOptions: {
sass: {
//给sass-loader传递选项
},
css: {
//给css-loader传递选项
},
postcss: {
//给postcss-loader传递选项
plugins: [
new pxtovw({
unitToConvert: 'px', //需要转换的单位,默认为"px";
viewportWidth: 375, //设计稿的视口宽度
unitPrecision: 5, //单位转换后保留的小数位数
propList: ['*'], //要进行转换的属性列表,*表示匹配所有,!表示不转换
viewportUnit: 'vw', //转换后的视口单位
fontViewportUnit: 'vw', //转换后字体使用的视口单位
selectorBlackList: [], //不进行转换的css选择器,继续使用原有单位
minPixelValue: 1, //设置最小的转换数值
mediaQuery: false, //设置媒体查询里的单位是否需要转换单位
replace: true, //是否直接更换属性值,而不添加备用属性
exclude: [/node_modules/] //忽略某些文件夹下的文件
})
]
}
}
}
}
Loading…
Cancel
Save