This commit is contained in:
2025-06-19 17:32:00 +08:00
commit f6df695404
516 changed files with 119052 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
# 工程前端字典目录
## system - 系统设置模块
+15
View File
@@ -0,0 +1,15 @@
export default {
status: {
1: '正常',
2: '冻结'
},
delFlag: {
0: '正常',
1: '已删除'
},
sex: {
0: '未知',
1: '男',
2: '女'
}
};
+404
View File
@@ -0,0 +1,404 @@
@font-face {font-family: "iconfont";
src: url(iconfont/iconfont.eot); /* IE9 */
src: url(iconfont/iconfont.eot#iefix) format('embedded-opentype'),
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAU8AAsAAAAAC/QAAATsAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCEHgqJMIgMATYCJAMsCxgABCAFhG0HgRobbgojEXZ7UNKT/XPBPLlRAmyQkdBo7w0aKdIXCdYEz//XWffVr6r8ropaaWlkrijtwMw5oLdyMtRqcjhnA0K3OU8ETxeb2KIfoFBvbCEA/N41Kx2g0CPMoqw98ujT9M9S6E0mhXv2mxV9nUbUwxu9mN0HDrWZWlvStLV5dO+eCgttqa20PA3Y1a4XkvAyBHDIphTSqEmrTmhMOKeg2dBBA3qhbX7MEIGg3bbPjSayEi3aWGTcAVaoPy8fqSAaDCwF96p2/Rv3pV6EaI6aGYOKmgnkFwVut4ECSgEmyHrf+ErUekUpFM6nroa+QJAXKoicnx4pG3kYeRUNRHNiMZfsQeRl1N8XLkllxL95CSQRAhw0cRgoTCxsPAiIDefyEn9hpQMRRJOJ6SA0sCyIOOADEAbwIQgFfAnCBL6CFhZE/YQNDIDwAHNgmQMuV74hBKSBjAL5Bcd0UuMG5giWCYLSSw2swj6WHbQHFPIGjTqRogFrQKOjWnPky+VZSSXFYE8mp5KgwJvNqCRp4s9nL02zeRAELElIlokofok2u7dKkEGShPGrQBTzmFGqEWs2E1qhAspkYbJfOrh75Omp1KOX2UoeDbRZQ6xBYd81Qc1/vHnJZmoooJ/iowvqylbcvEsaMuQ7WM5BVo2f41sdX212PW/Bq+eCj9tjX8g3wpSnY7reFQr4xIno7Zpvr+xjz70ia8ooapOQpFYE4Tug4DkslxxUdyxg+Cfg4spEIevgThLj4gTlWg//28MD+vNtwjl7Km7OCfc3txzO2VxxT45PqycrJ4y7eXPcFyE97uYXfR1yVdUJThNajf/ceVnHjsvCrF7xhKnOkhl6k24hMsPV8VrY96XG64RCgc4Bmi/2+r6QzzOSi1c+NjdxTnry8ORG6cYKxZsldS7EpC88o1NtD63Wfvif8/WS/hb+kte1iZLKG8YWzdd2RkseT7X6g/v125vZJSvcv//QYV2u/39m7+nXv99QZybz1ND+nDecpb3Z3n8VrC2d6vnbd7yf8iTlYjurjeyoYIeoGdKhmjx627VBqTYrD7ZZodTu1rf02Csymf9jx15On2BvbVTf177jAfuxfahduzbG2op2KFgr5EmpyafupY+UTutefOGOcvcqfSu+qPjJe+XK/9ALS5y4Xy6n3P2TJRbx9wIgdlMdV1XVsfvsG11Uq1VdPz3if1S1MD26lQNQF9SpdBJbqlVs0CNQ67d2D68lj2sdvqvmYhdN8muExoDY5hPHHHOU+bVypjyGRTSllLrUwCozAIefBSdNOoFn+YeSKatK0CSbYOAhCxSaQmyTXwosXCqBjaYuOJSk6e0uiYxGIWYcUIJ5DAhB9oOBn/OgCHKXbfKfgkWIz2ATFAUOXSTxgS5F5NLp8U1gFEc6XGmyMbAQ0ket+TeG4oxYraroH5KnYurq1ln9hQDJ45J8GnpVJpbo6ZN5HZyLlCTOsFqPqmnfNOz3SbWNfvXIm8AojnS40mRjYHlxfXTl/xtDcUZC+v3o/kPytHnq6jYG+8sVYvVbl7b5NPRKZUx8axo9fVIUjq+IlPyPm2G1HlOUpX1D43FcV10+46f3GsCB+05XDFFiiiW2eERLnDjiipfnsZNHruwk1uE1mZJhiVfx5l7zkpy5up27V71d1phepF5+T/ZFcXuKrng8cnEuWwHCagUAAAA=') format('woff2'),
url(iconfont/iconfont.woff) format('woff'),
url(iconfont/iconfont.ttf) format('truetype'),
url(iconfont/iconfont.svg#iconfont) format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-times-circle:before {
content: "\e71f";
}
.icon-pause-circle-o:before {
content: "\e6d8";
}
.icon-pause:before {
content: "\e6d9";
}
.icon-play-circle-o:before {
content: "\e6e1";
}
.icon-play:before {
content: "\e6e2";
}
.icon-stop:before {
content: "\e70e";
}
.icon-stop-circle-o:before {
content: "\e70f";
}
.icon-mute:before {
content: "\e61a";
}
.icon-volume:before {
content: "\e62f";
}
.icon-fullscreen:before {
content: "\e600";
}
.gciplayer-wrapper {
width: 100%;
height: 100%;
}
.gciplayer-timeline {
width: 100%;
height: 90px;
/* background-color: red; */
}
.gciplayer-canvas {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-moz-transform-origin: 0 0;
z-index: 1;
}
.gciplayer-video {
/* object-fit: fill; */
height: 100%;
width: 100%;
}
.timeline-canvas {
cursor: pointer;
width: 100%;
height: 100%;
background-color: rgb(29, 29, 29);
vertical-align: middle;
}
.gciplayer-preview{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 1;
}
.gciplayer-water {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-moz-transform-origin: 0 0;
z-index: 2;
}
.gciplayer-close {
z-index: 99;
position: absolute;
top: 1%;
right: 1%;
color: #fff;
background-color: #3b3b3b;
font-size: 16px;
cursor: pointer;
/* border-radius: 50%;
padding: .2em; */
}
/*
* controlbar
*/
.gciplayer-controlbar {
position: absolute;
bottom: 0;
background: #0f0f0f77;
width: 100%;
height: 36px;
opacity: 0;
color: #fff;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-moz-box-shadow: 0px -2px 8px #bbbbbb;
-webkit-box-shadow: 0px -2px 8px #bbbbbb;
box-shadow: 0px -2px 8px #bbbbbb;
z-index: 99;
}
.gciplayer-controlbar:hover {
/* opacity: 1; */
/* background: #ff000077; */
}
.gciplayer-controlbar>.gciplayer-capture,
.gciplayer-controlbar>.gciplayer-fullscreen,
.gciplayer-controlbar>.gciplayer-volume {
float: right;
margin: 8px 16px 8px 0;
cursor: pointer;
line-height: 100%;
}
.gciplayer-controlbar>.gciplayer-play {
/* display: none; */
float: left;
margin: 8px 0px 8px 16px;
cursor: pointer;
line-height: 100%;
}
.gciplayer-controlbar>i.iconfont {
font-size: 18px;
}
.gciplayer-controlbar>.disabled {
cursor: not-allowed;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
opacity: .65;
}
.show {
display: block;
}
.hide {
display: none;
}
/*
Loading
*/
.player-loading {
z-index: 99;
width: 50px;
height: 50px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -25px;
margin-left: -25px;
}
.player-loading .player-loading-item {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
margin: 0;
}
.player-loading .player-loading-item:before {
content: '';
display: block;
margin: 0 auto;
width: 15%;
height: 15%;
background-color: #d1d1d1;
border-radius: 100%;
-webkit-animation: loadingFadeDelay 1.2s infinite ease-in-out both;
animation: loadingFadeDelay 1.2s infinite ease-in-out both;
}
.player-loading .player-loading-item:nth-child(2) {
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
transform: rotate(30deg);
}
.player-loading .player-loading-item:nth-child(3) {
-webkit-transform: rotate(60deg);
-ms-transform: rotate(60deg);
transform: rotate(60deg);
}
.player-loading .player-loading-item:nth-child(4) {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.player-loading .player-loading-item:nth-child(5) {
-webkit-transform: rotate(120deg);
-ms-transform: rotate(120deg);
transform: rotate(120deg);
}
.player-loading .player-loading-item:nth-child(6) {
-webkit-transform: rotate(150deg);
-ms-transform: rotate(150deg);
transform: rotate(150deg);
}
.player-loading .player-loading-item:nth-child(7) {
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.player-loading .player-loading-item:nth-child(8) {
-webkit-transform: rotate(210deg);
-ms-transform: rotate(210deg);
transform: rotate(210deg);
}
.player-loading .player-loading-item:nth-child(9) {
-webkit-transform: rotate(240deg);
-ms-transform: rotate(240deg);
transform: rotate(240deg);
}
.player-loading .player-loading-item:nth-child(10) {
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.player-loading .player-loading-item:nth-child(11) {
-webkit-transform: rotate(300deg);
-ms-transform: rotate(300deg);
transform: rotate(300deg);
}
.player-loading .player-loading-item:nth-child(12) {
-webkit-transform: rotate(330deg);
-ms-transform: rotate(330deg);
transform: rotate(330deg);
}
.player-loading .player-loading-item:nth-child(2):before {
-webkit-animation-delay: -1.1s;
animation-delay: -1.1s;
}
.player-loading .player-loading-item:nth-child(3):before {
-webkit-animation-delay: -1s;
animation-delay: -1s;
}
.player-loading .player-loading-item:nth-child(4):before {
-webkit-animation-delay: -0.9s;
animation-delay: -0.9s;
}
.player-loading .player-loading-item:nth-child(5):before {
-webkit-animation-delay: -0.8s;
animation-delay: -0.8s;
}
.player-loading .player-loading-item:nth-child(6):before {
-webkit-animation-delay: -0.7s;
animation-delay: -0.7s;
}
.player-loading .player-loading-item:nth-child(7):before {
-webkit-animation-delay: -0.6s;
animation-delay: -0.6s;
}
.player-loading .player-loading-item:nth-child(8):before {
-webkit-animation-delay: -0.5s;
animation-delay: -0.5s;
}
.player-loading .player-loading-item:nth-child(9):before {
-webkit-animation-delay: -0.4s;
animation-delay: -0.4s;
}
.player-loading .player-loading-item:nth-child(10):before {
-webkit-animation-delay: -0.3s;
animation-delay: -0.3s;
}
.player-loading .player-loading-item:nth-child(11):before {
-webkit-animation-delay: -0.2s;
animation-delay: -0.2s;
}
.player-loading .player-loading-item:nth-child(12):before {
-webkit-animation-delay: -0.1s;
animation-delay: -0.1s;
}
@-webkit-keyframes loadingFadeDelay {
0%,
39%,
100% {
opacity: 0;
}
40% {
opacity: 1;
}
}
@keyframes loadingFadeDelay {
0%,
39%,
100% {
opacity: 0;
}
40% {
opacity: 1;
}
}
/*
prompt
*/
.gciplayer-prompt {
z-index: 3;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-moz-transform-origin: 0 0;
color: #ececec;
}
/*
*/
.gciplayer-flow {
z-index: 99;
position: absolute;
top: 7%;
right: 6%;
color: #fff;
font-weight: bold;
font-size: 1rem;
text-shadow: 1px 1px 1px #000, -1px -1px 1px #000, 1px -1px 1px #000, -1px 1px 1px #000;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
Binary file not shown.
@@ -0,0 +1,56 @@
<?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" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="times-circle" unicode="&#59167;" d="M729.714286 254.857143q0 14.857143-10.857143 25.714286L615.428571 384l103.428572 103.428571q10.857143 10.857143 10.857143 25.714286 0 15.428571-10.857143 26.285714l-51.428572 51.428572q-10.857143 10.857143-26.285714 10.857143-14.857143 0-25.714286-10.857143L512 487.428571 408.571429 590.857143q-10.857143 10.857143-25.714286 10.857143-15.428571 0-26.285714-10.857143l-51.428572-51.428572q-10.857143-10.857143-10.857143-26.285714 0-14.857143 10.857143-25.714286l103.428572-103.428571-103.428572-103.428571q-10.857143-10.857143-10.857143-25.714286 0-15.428571 10.857143-26.285714l51.428572-51.428572q10.857143-10.857143 26.285714-10.857143 14.857143 0 25.714286 10.857143l103.428571 103.428572 103.428571-103.428572q10.857143-10.857143 25.714286-10.857143 15.428571 0 26.285714 10.857143l51.428572 51.428572q10.857143 10.857143 10.857143 26.285714z m221.142857 129.142857q0-119.428571-58.857143-220.285714T732.285714 4 512-54.857143t-220.285714 58.857143T132 163.714286 73.142857 384t58.857143 220.285714T291.714286 764 512 822.857143t220.285714-58.857143T892 604.285714 950.857143 384z" horiz-adv-x="1024" />
<glyph glyph-name="pause-circle-o" unicode="&#59096;" d="M512 822.857143q119.428571 0 220.285714-58.857143T892 604.285714 950.857143 384t-58.857143-220.285714-159.714286-159.714286T512-54.857143t-220.285714 58.857143T132 163.714286 73.142857 384t58.857143 220.285714T291.714286 764 512 822.857143z m0-749.714286q84.571429 0 156 41.714286t113.142857 113.142857 41.714286 156-41.714286 156-113.142857 113.142857-156 41.714286-156-41.714286-113.142857-113.142857-41.714286-156 41.714286-156 113.142857-113.142857 156-41.714286z m54.857143 128q-8 0-13.142857 5.142857t-5.142857 13.142857V548.571429q0 8 5.142857 13.142857t13.142857 5.142857h109.714286q8 0 13.142857-5.142857t5.142857-13.142857v-329.142858q0-8-5.142857-13.142857t-13.142857-5.142857H566.857143z m-219.428572 0q-8 0-13.142857 5.142857t-5.142857 13.142857V548.571429q0 8 5.142857 13.142857t13.142857 5.142857h109.714286q8 0 13.142857-5.142857t5.142857-13.142857v-329.142858q0-8-5.142857-13.142857t-13.142857-5.142857H347.428571z" horiz-adv-x="1024" />
<glyph glyph-name="pause" unicode="&#59097;" d="M941.967463 786.285714v-804.571428q0-14.857143-10.857143-25.714286t-25.714286-10.857143H612.824606q-14.857143 0-25.714286 10.857143t-10.857143 25.714286V786.285714q0 14.857143 10.857143 25.714286t25.714286 10.857143h292.571428q14.857143 0 25.714286-10.857143t10.857143-25.714286z m-512 0v-804.571428q0-14.857143-10.857143-25.714286t-25.714286-10.857143H100.824606q-14.857143 0-25.714286 10.857143t-10.857143 25.714286V786.285714q0 14.857143 10.857143 25.714286t25.714286 10.857143h292.571428q14.857143 0 25.714286-10.857143t10.857143-25.714286z" horiz-adv-x="1024" />
<glyph glyph-name="play-circle-o" unicode="&#59105;" d="M749.714286 384q0-21.142857-18.285715-31.428571l-310.857142-182.857143q-8.571429-5.142857-18.285715-5.142857-9.142857 0-18.285714 4.571428-18.285714 10.857143-18.285714 32V566.857143q0 21.142857 18.285714 32 18.857143 10.285714 36.571429-0.571429l310.857142-182.857143q18.285714-10.285714 18.285715-31.428571z m73.142857 0q0 84.571429-41.714286 156t-113.142857 113.142857-156 41.714286-156-41.714286-113.142857-113.142857-41.714286-156 41.714286-156 113.142857-113.142857 156-41.714286 156 41.714286 113.142857 113.142857 41.714286 156z m128 0q0-119.428571-58.857143-220.285714T732.285714 4 512-54.857143t-220.285714 58.857143T132 163.714286 73.142857 384t58.857143 220.285714T291.714286 764 512 822.857143t220.285714-58.857143T892 604.285714 950.857143 384z" horiz-adv-x="1024" />
<glyph glyph-name="play" unicode="&#59106;" d="M900.571429 366.285714L141.714286-55.428571q-13.142857-7.428571-22.571429-1.714286T109.714286-36.571429V804.571429q0 14.857143 9.428571 20.571428t22.571429-1.714286l758.857143-421.714285q13.142857-7.428571 13.142857-17.714286t-13.142857-17.714286z" horiz-adv-x="1024" />
<glyph glyph-name="stop" unicode="&#59150;" d="M941.967463 786.285714v-804.571428q0-14.857143-10.857143-25.714286t-25.714286-10.857143H100.824606q-14.857143 0-25.714286 10.857143t-10.857143 25.714286V786.285714q0 14.857143 10.857143 25.714286t25.714286 10.857143h804.571428q14.857143 0 25.714286-10.857143t10.857143-25.714286z" horiz-adv-x="1024" />
<glyph glyph-name="stop-circle-o" unicode="&#59151;" d="M512 822.857143q119.428571 0 220.285714-58.857143T892 604.285714 950.857143 384t-58.857143-220.285714-159.714286-159.714286T512-54.857143t-220.285714 58.857143T132 163.714286 73.142857 384t58.857143 220.285714T291.714286 764 512 822.857143z m0-749.714286q84.571429 0 156 41.714286t113.142857 113.142857 41.714286 156-41.714286 156-113.142857 113.142857-156 41.714286-156-41.714286-113.142857-113.142857-41.714286-156 41.714286-156 113.142857-113.142857 156-41.714286z m-164.571429 128q-8 0-13.142857 5.142857t-5.142857 13.142857V548.571429q0 8 5.142857 13.142857t13.142857 5.142857h329.142858q8 0 13.142857-5.142857t5.142857-13.142857v-329.142858q0-8-5.142857-13.142857t-13.142857-5.142857H347.428571z" horiz-adv-x="1024" />
<glyph glyph-name="mute" unicode="&#58906;" d="M899.648 362.048l102.4 102.4c14.624 14.624 14.624 36.576 0 51.2s-36.576 14.624-51.2 0l-102.4-102.4-109.728 109.728c-7.328 7.328-29.248 21.952-51.2 0a35.36 35.36 0 0 1 0-51.2l102.4-102.4-102.4-109.728c-14.624-14.624-14.624-36.576 0-51.2s36.576-14.624 51.2 0l109.728 102.4 102.4-102.4c14.624-14.624 36.576-14.624 51.2 0s14.624 36.576 0 51.2l-102.4 102.4z m-402.272 460.8c-7.328 0-14.624 0-21.952-7.328L153.6 544.896H73.152c-29.248 7.328-51.2-21.952-51.2-51.2v-219.424c0-29.248 21.952-58.528 51.2-58.528 0 0 87.776 0 95.072-7.328l307.2-263.328h21.952c21.952 0 36.576 21.952 36.576 51.2V771.616c0 29.248-14.624 51.2-36.576 51.2z" horiz-adv-x="1024" />
<glyph glyph-name="volume" unicode="&#58927;" d="M731.424 742.4v-87.776c87.776-58.528 146.272-160.928 146.272-277.952s-58.528-219.424-146.272-277.952v-87.776c131.648 58.528 219.424 204.8 219.424 365.728s-87.776 307.2-219.424 365.728z m-182.848 73.152c-7.328 0-14.624 0-21.952-7.328L204.8 537.6H124.352c-29.248 7.328-51.2-21.952-51.2-51.2v-219.424c0-29.248 21.952-58.528 51.2-58.528 0 0 87.776 0 95.072-7.328l307.2-263.328h21.952c21.952 0 36.576 21.952 36.576 51.2V764.32c0 29.248-14.624 51.2-36.576 51.2z" horiz-adv-x="1024" />
<glyph glyph-name="fullscreen" unicode="&#58880;" d="M237.1 602h557v-435.7h-557zM774.5 768v-41.3h136.7v-164.9h48.1V768zM112.4 726.7h136.7V768H64.2v-206.2h48.2zM911.2 41.7H774.5v-41.3h184.8V206.6h-48.1zM112.4 206.6H64.2v-206.2h184.9v41.3H112.4z" horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4
View File
@@ -0,0 +1,4 @@
declare interface Window {
gciplayerMonitor: any;
gciplayer: any;
}
Binary file not shown.
Binary file not shown.
+283
View File
@@ -0,0 +1,283 @@
import { RouteRecordRaw } from 'vue-router';
import cloneDeep from 'lodash/cloneDeep';
/**
* TODO: 转化权限路由数据为路由菜单数据
* @param route
*/
export const permissionListToRouteData = (
permissionList: Array<any>
): RouteRecordRaw[] => {
return permissionList;
};
/**
* TODO: 手机号校验
* @param str
*/
export function checkMobilephone(str: string) {
const regex = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
if (!regex.test(str)) {
return false;
} else {
return true;
}
}
/**
* @description 手机号校验
* @param str
* @returns
*/
export function validatePhone(mobile: string) {
const tel = /^0\d{2,3}-?\d{7,8}$/;
const phone = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
if (mobile.length == 11) {
//手机号码
if (phone.test(mobile)) {
console.log(mobile);
return true;
}
} else if (mobile.length == 13 && mobile.indexOf('-') != -1) {
//电话号码
if (tel.test(mobile)) {
console.log(mobile);
return true;
}
}
return false;
}
/**
* TODO: 车牌号校验(新能源+非新能源)
* @param str
*/
export function checkPlateNumber(str: string) {
const regex =
/(^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$)|(^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{5}[A-Z0-9挂学警港澳]{1}$)/;
if (!regex.test(str)) {
return false;
} else {
return true;
}
}
/**
* 动态获取工程图片地址
* @param name
* @param suffix
* @returns
*/
export const getImages = (name: string, suffix = 'png'): string => {
const path = `/src/assets/images/${name}.${suffix}`;
const modules = import.meta.glob('/src/assets/images/*', { eager: true });
return (modules[path] as any).default;
};
/**
* 转化时间格式的方法
* @param val
* @returns
*/
export const formatDate = (val: string | number): string | boolean => {
let isAllowParse = typeof val === 'number';
// 查看是否是能被格式化的格式
if (typeof val === 'string') {
const NOTDATE = Number.isNaN(Date.parse(val));
if (!NOTDATE) {
isAllowParse = true;
}
}
if (!isAllowParse) {
return isAllowParse;
}
const TEMPDATE = new Date(val);
// 自动补全0
const completeZero = (val: number) => {
const stringVal = val.toString();
return stringVal.padStart(2, '0');
};
return `${TEMPDATE.getFullYear()}-${completeZero(
TEMPDATE.getMonth() + 1
)}-${completeZero(TEMPDATE.getDate())} ${completeZero(
TEMPDATE.getHours()
)}:${completeZero(TEMPDATE.getMinutes())}:${completeZero(
TEMPDATE.getSeconds()
)}`;
};
const formFieldCNMap = {
sentVehicleUser: '交车人',
checkUserName: '验车人',
acceptUserName: '接收人',
checkAddress: '验收地点'
};
/**
* 输入框校验长度、特殊字符
* @param str
*/
export function validatorString({ field }, str: string, callback: any) {
// 非空
if (!str) {
return callback(new Error(`请输入${formFieldCNMap[field] ?? '必填项'}`));
}
// 空格输入校验
const spaceRegex = new RegExp(/\s+/g);
if (str && spaceRegex.test(str)) {
return callback(new Error('不支持含有空格'));
}
const regex = /[!@#$%^&*?><|\\\\]/;
if (str && regex.test(str)) {
return callback(new Error('不支持特殊字符'));
}
const tooLong = str.length > 32;
if (tooLong) {
return callback(new Error('输入长度不得超过32个字符'));
}
return callback();
}
/**
* 非必填输入框校验长度、特殊字符
* @param str
*/
export function validatorStringNoRequired(_: any, str: string, callback: any) {
// 空格输入校验
const spaceRegex = new RegExp(/\s+/g);
if (str && spaceRegex.test(str)) {
return callback(new Error('不支持含有空格'));
}
const regex = /[!@#$%^&*?><|\\\\]/;
if (str && regex.test(str)) {
return callback(new Error('不支持特殊字符'));
}
const tooLong = str ? str.length > 32 : false;
if (str && tooLong) {
return callback(new Error('输入长度不得超过32个字符'));
}
return callback();
}
// 字符为64位
export function validatorStringNoRequired64(
_: any,
str: string,
callback: any
) {
// 空格输入校验
const spaceRegex = new RegExp(/\s+/g);
if (str && spaceRegex.test(str)) {
return callback(new Error('不支持含有空格'));
}
const regex = /[!@#$%^&*?><|\\\\]/;
if (str && regex.test(str)) {
return callback(new Error('不支持特殊字符'));
}
const tooLong = str ? str.length > 64 : false;
if (str && tooLong) {
return callback(new Error('输入长度不得超过64个字符'));
}
return callback();
}
/**
* 备注校验纯空格/特殊字符/超长字段
* @param str
*/
export function validatorRemark(_: any, str: string, callback: any) {
// 非空
// if (str && /^\s*$/.test(str)) {
// return callback(new Error('不支持纯空格'));
// }
// 空格输入校验
const spaceRegex = /^\s*$/;
if (str && spaceRegex.test(str)) {
return callback(new Error('不支持仅空格输入'));
}
const regex = /[!@#$%^&*?><|\\\\]/;
if (regex.test(str)) {
return callback(new Error('不支持特殊字符'));
}
const tooLong = str ? str.length > 500 : false;
if (str && tooLong) {
return callback(new Error('不得超过500个字符'));
}
return callback();
}
// 不需要检查长度
export function validatorRemarkNoLength(_: any, str: string, callback: any) {
// 空格输入校验
const spaceRegex = /^\s*$/;
if (str && spaceRegex.test(str)) {
return callback(new Error('不支持仅空格输入'));
}
const regex = /[!@#$%^&*?><|\\\\]/;
if (regex.test(str)) {
return callback(new Error('不支持特殊字符'));
}
return callback();
}
/**
* @description 根据路径生成缓存标识
*/
export const getCacheByUrl = (routePath: string) => {
if (routePath) {
let target = cloneDeep(routePath.split('?')[0]);
if (target[0] === '/') {
target = target.replace('/', '');
}
target = target.replace(/\//g, '-');
target = target.replace(/:/g, '@');
// const sourceStr = formValue.value.url.split('?')[0].replace('/', '');
return target;
}
};
import {
API_URL,
API_URL_OUTER,
API_PATH,
ACCESS_TOKEN_HEADER_NAME,
ACCESS_TOKEN_STORAGE_KEY
} from '@/constants';
import { useStorage } from '@vueuse/core';
export const getBaseUrlAndHeaders = () => {
const innerApi = ['127.0.0.1:5173', '10.105.148.2:19098'];
// 判断内外网
// 如果是内网 则用VITE_APP_API_URL 否则用外网 VITE_APP_API_URL_OUTER
const apiUrl = innerApi.includes(window.location.host)
? API_URL
: API_URL_OUTER;
const baseURL =
import.meta.env.VITE_APP_PROXY === 'OPEN'
? '/api' + API_PATH
: apiUrl + API_PATH;
const defautlTokenValue = localStorage.getItem(ACCESS_TOKEN_STORAGE_KEY);
const token = useStorage(
ACCESS_TOKEN_STORAGE_KEY,
defautlTokenValue,
localStorage
);
const headers = { [ACCESS_TOKEN_HEADER_NAME]: token.value };
return { baseURL, headers };
};