From 2f9bd54361499e85dc63ba36bb0f57e5388692c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E9=B9=8F?= Date: Fri, 7 Feb 2025 16:28:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=A1=E7=89=87=E7=9B=B8?= =?UTF-8?q?=E5=85=B3UI=E5=8F=8A=E9=83=A8=E5=88=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/card.js | 12 + components/LockSwitch/LockSwitch.vue | 48 ++ pages.json | 42 ++ pages/cardDetail/cardDetail.vue | 166 +++++++ pages/cardList/cardList.vue | 412 ++++++++++++++++++ pages/createCard/createCard.vue | 290 ++++++++++++ pages/createFingerprint/createFingerprint.vue | 7 + pages/fingerprintDetail/fingerprintDetail.vue | 7 + pages/fingerprintList/fingerprintList.vue | 7 + pages/lockDetail/lockDetail.vue | 21 +- static/images/icon_add_blue.png | Bin 0 -> 1655 bytes static/images/icon_admin_black.png | Bin 0 -> 1906 bytes static/images/icon_card.png | Bin 0 -> 2200 bytes static/images/icon_card_white.png | Bin 0 -> 7460 bytes static/images/icon_fingerprint.png | Bin 0 -> 3249 bytes static/images/icon_record.png | Bin 0 -> 2284 bytes stores/basic.js | 30 ++ stores/bluetooth.js | 4 +- 18 files changed, 1042 insertions(+), 4 deletions(-) create mode 100644 api/card.js create mode 100644 components/LockSwitch/LockSwitch.vue create mode 100644 pages/cardDetail/cardDetail.vue create mode 100644 pages/cardList/cardList.vue create mode 100644 pages/createCard/createCard.vue create mode 100644 pages/createFingerprint/createFingerprint.vue create mode 100644 pages/fingerprintDetail/fingerprintDetail.vue create mode 100644 pages/fingerprintList/fingerprintList.vue create mode 100644 static/images/icon_add_blue.png create mode 100644 static/images/icon_admin_black.png create mode 100644 static/images/icon_card.png create mode 100755 static/images/icon_card_white.png create mode 100644 static/images/icon_fingerprint.png create mode 100644 static/images/icon_record.png diff --git a/api/card.js b/api/card.js new file mode 100644 index 0000000..fea2f8d --- /dev/null +++ b/api/card.js @@ -0,0 +1,12 @@ +import request from '../utils/request' + +// card 卡片模块 + +// 获取卡片列表 +export function getCardList(data) { + return request({ + url: '/identityCard/list', + method: 'POST', + data + }) +} diff --git a/components/LockSwitch/LockSwitch.vue b/components/LockSwitch/LockSwitch.vue new file mode 100644 index 0000000..f23e8a1 --- /dev/null +++ b/components/LockSwitch/LockSwitch.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/pages.json b/pages.json index 342e554..7e7d55a 100644 --- a/pages.json +++ b/pages.json @@ -141,6 +141,48 @@ "navigationBarTitleText": "添加锁", "disableScroll": true } + }, + { + "path": "pages/cardList/cardList", + "style": { + "navigationBarTitleText": "卡", + "disableScroll": true + } + }, + { + "path": "pages/createCard/createCard", + "style": { + "navigationBarTitleText": "添加卡", + "disableScroll": true + } + }, + { + "path": "pages/cardDetail/cardDetail", + "style": { + "navigationBarTitleText": "卡详情", + "disableScroll": true + } + }, + { + "path": "pages/fingerprintList/fingerprintList", + "style": { + "navigationBarTitleText": "指纹", + "disableScroll": true + } + }, + { + "path": "pages/createFingerprint/createFingerprint", + "style": { + "navigationBarTitleText": "添加指纹", + "disableScroll": true + } + }, + { + "path": "pages/fingerprintDetail/fingerprintDetail", + "style": { + "navigationBarTitleText": "指纹详情", + "disableScroll": true + } } ], "globalStyle": { diff --git a/pages/cardDetail/cardDetail.vue b/pages/cardDetail/cardDetail.vue new file mode 100644 index 0000000..647f4b3 --- /dev/null +++ b/pages/cardDetail/cardDetail.vue @@ -0,0 +1,166 @@ + + + + + + + diff --git a/pages/cardList/cardList.vue b/pages/cardList/cardList.vue new file mode 100644 index 0000000..5bd3812 --- /dev/null +++ b/pages/cardList/cardList.vue @@ -0,0 +1,412 @@ + + + + + + + diff --git a/pages/createCard/createCard.vue b/pages/createCard/createCard.vue new file mode 100644 index 0000000..3f5d288 --- /dev/null +++ b/pages/createCard/createCard.vue @@ -0,0 +1,290 @@ + + + + + + + diff --git a/pages/createFingerprint/createFingerprint.vue b/pages/createFingerprint/createFingerprint.vue new file mode 100644 index 0000000..6ebc436 --- /dev/null +++ b/pages/createFingerprint/createFingerprint.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/fingerprintDetail/fingerprintDetail.vue b/pages/fingerprintDetail/fingerprintDetail.vue new file mode 100644 index 0000000..281e78b --- /dev/null +++ b/pages/fingerprintDetail/fingerprintDetail.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/fingerprintList/fingerprintList.vue b/pages/fingerprintList/fingerprintList.vue new file mode 100644 index 0000000..281e78b --- /dev/null +++ b/pages/fingerprintList/fingerprintList.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/lockDetail/lockDetail.vue b/pages/lockDetail/lockDetail.vue index e587973..e33c018 100644 --- a/pages/lockDetail/lockDetail.vue +++ b/pages/lockDetail/lockDetail.vue @@ -68,6 +68,22 @@ 密码 + + + + + + + 指纹 + + + + 授权管理员 + + + + 操作记录 + @@ -428,7 +444,6 @@ .menu { margin-top: 32rpx; margin-left: 32rpx; - padding-bottom: 32rpx; width: 686rpx; background-color: #ffffff; border-radius: 32rpx; @@ -449,16 +464,16 @@ .menu-main { padding-top: 32rpx; - padding-bottom: 32rpx; display: flex; align-items: center; - font-size: 32rpx; + font-size: 28rpx; flex-wrap: wrap; text-align: center; margin-left: 43rpx; .menu-main-view { width: 150rpx; + margin-bottom: 48rpx; .menu-main-image { filter: sepia(100%) saturate(10000%) hue-rotate(180deg) brightness(0.1); diff --git a/static/images/icon_add_blue.png b/static/images/icon_add_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..d08fc1253f806d706b67a714fe396c31aa0a7515 GIT binary patch literal 1655 zcmV--28j8IP)Px*F-b&0RCr$Pol#obFbv0?@;Y`U;4tIcEk%_`&OOk%`K|yCK<6Il+XcW0IkVLW#B ziQ$m`KMdh@`ulMg4!?g6?YdI0_f zojTw^l!g%Ysfl(NR07Z{=$Dw#41+2Fqy>Hrhy;TsRZszdhQKdj&;o*J05k@ExvGda zVJ~?VAr^qIkMSvnQ$;VSY~C;y$!Z`DfN|Cz!^;Lgi|-;41W^E3n)TOK43dgO5df&q z^;qqR;qd-zc))h!Xx|(F%aRWTEbhWX>jJSU06hnPf}=GA%>d{j-$M#89dB72HUYqc z{~3)|5L5@iW&g4+v`7b40r23%Nuf3bRROqtj1hK$x2Oq0H2`kE#TW92G_0~xai5?H z0ABRrNv%~BvIF43#|OXW9sxT5V)Op&8NcLksdpaVp9j_$v7TJ&>|ZOgq>hz46|e!I z(V2SD=d*A4)O3XlRIefFydfI$TufW=0gbOobU0a5_OJ5TW{V9qJDlEG{~ zlL4SX{w<_{aod`(7<2%%rGSqc7i5o>lL4SX{;eoLjvcvafCK<7@}J{4Eg(~+0S7>1 z3Ls1aBmhXg@v|m_Pz9|;0jTN#8UPeM>}dvoj3sSO9Z(E_*juO0UK-D> z{n^u_bpSL6e}aa!NEQJA*AkGxxUDmnx*wZL68NY*1uy|%VfIfTu>nA^7a$e@s+}(C z*}Ua^oV5V7uK|tM0f0P2aGY~{*)9M?>s*5P6`g`}_UCMDL4z+>0Os%gPp@K6zuW;C zlXDz;E!*@fBRS`S+KfM5!MrEXUICZ^fSimy4mpfduCZeU+lyEQH~?Ur*cvzhc-LA| z0E(q@aSgy-TLNUn(6>63LpvqO?7}303bVZ@;{jZ zXsQDs$7x6bRI{HH04-_20U+K8nx9U??6CjeOnPY!^FG~fU* zrT`5ppdA2c{22KsSAcXv=_&v@P;v^OmVXuiq^p3+mqnkZH3Tnq_Ok&XS_Q7`p-XflBjbr8~cehCMybssxXH|f7a?!J@G%A() za|WLs08KZED#a6h8IHnlp)Tk#p*pBY1t^Q^HRhiERTRKe!8TxO1iu;p(pLrBLd4jM z=y9){5wfiUmKXO_kQ0uNHr#o?Y7H>Im_q9fB4)UrY*E z4n)(}%eKt4vpz8#;!W5?ud6A(PR0qED?o3>VXI>A5(}aLNQ1Oo97>RUu_<6VFiRjv zoAu3h0y9$5S(6ch81A@VwT2y6c6&j&UQG&E8>l)pP!RaZ&*Ex;YqLu{2#Nx)5`g(G zV)}Os;YYR{b2d~Mc+~(bmyS(fP#knMMId(4rW7&4z)?7!o*LPHfvFTpJ z?ilW;{v#Oav-TMH;zy~5A-qm6sFtu}x77zwKUGB_WQ-rjd%yv}`^;1i2f$P~@y0j+ zc%PZ-;Q*KlC*Bwb0PizXJsbd2;lvx`0N{OQs)qw$Dx7#@900t}O!aU8OobC~j01r8 znW-KQfT?iejd1|*J~P$B0WcL#yfF>{-e;zI`~}JKPOeK+)o=g+002ovPDHLkV1gZH B!KDBI literal 0 HcmV?d00001 diff --git a/static/images/icon_admin_black.png b/static/images/icon_admin_black.png new file mode 100644 index 0000000000000000000000000000000000000000..c43108643c33cf169336bc7db29388633ab9c554 GIT binary patch literal 1906 zcmV-&2aWiNP)Px+EJ;K`RCr$Poegr`C=7sKPPW~Xb@ycLo~(^JWlIP)`o)sao9Q%}V9?JeAuxV^ zd)4P?3%nhzeJTGc01k(s04M+sx4_}*R|Y5m4!6MJ>Q@FR08(4v%Wv)4|9=hI{@4Bf z{q=gmzoR}GGeC3p*LR1upD9iS2mp*DfXD>EKd;vdBAny&J3#(@|0DFB@{<7oa5y*G zDNaoZLSz7TIevsB6$nuQfRqeT|I{Z91Q7vv+W8H-6c9uL;Hi{N{4)6v*rt}}84k!TZ%R_HA{-Cip z;j(1_Ft#@vy9FT222iM#fG0W&0Q>3a(+CBCz0qCo1rz`UfV~9>BUBMcFqTGBPZ9rOf%cgF(+Y3>4g+6sfKES&LqC0=K{KHHE8qk{i$9jN_&IiX900_LJIlrZ8SkJegXM6oS^|B67 zv+uIsX(R-Tw@s*9yE}DTtt6znn*b20+NW%|v|YciVyn|SFwFuMol`4hnmKe^&$f22 z989U+b)}r&gBTCHQn#Rg$*2v$&h#iX@)-TvviCK`D68bi`W1+*=|U3#Z39Xjyt=*z zKvQ-~O`$z5KtTFv0PN$dj{y)Z`p5c5Qn+e3zd<39W42?t3>J+Hph50ZP=f}2v`BQ&uwheAx`ZanLcU<) zh=|b-YDjPJup$ltGB*p5)4#?tP!c%^TbMVIE(J9LXjGD#1w`itqzZ6pHTNuGfH88g zP;1WpqqtbRie-=hKqZynlkH7M2rv#18~;YjZR1M-z(&e;Z!!iP(kbJJ`VQJyov<5NH;0A|L- z=%?m{Nf@lgR~wr<1+3Deo6trGGPA)d`ez$Sh@sF;FypJ#0bBqu0;08ju;FM#%9(u- z+oBFwMSpKDF$5d{FiWHdeTp7hx(jHP1tqCVbw2l?6@(U^JEl0IjJ&T3A;GAWR?FXZ;CXe!9Jky;iHH;si76RIrp( ztYIwMX`BVPl8=&#wQNZl^Ml+RYP5v5bTFpxUU#i19G7TqdH~@13=F9!gNbh#AN zumL54cEeARjb$PZ05Fhr*~Ajo_#%k3_GtLsSHSM7fy|xHodV#x-H~AI`%m598Go1V zt^ojx?TUom&Tr#gIbhcm=pKMwhIk5qs|;BgVDL!hOfajFb^)MykKr z%m!B}m{I`G`oP*M6adXJSmky)k~7ww@v#8h-JHQrpIQNGo&m-I`ft(J-16i&lX4Aa z(*@%^OaZqF7S`Q8in5YrAa$GuK@Y?D0>>vnY3qG(7<}&5|JZ2{)!)ayYu3;Ay4hztPMz}4=?0tLX~coYByz~L4+ sT>Z)b1;F7JI9&b800qF|7C2n}pZINbkjx`!4FCWD07*qoM6N<$g4Hx{ssI20 literal 0 HcmV?d00001 diff --git a/static/images/icon_card.png b/static/images/icon_card.png new file mode 100644 index 0000000000000000000000000000000000000000..b6606292941412a833b3b216ffcd90ada9f12f02 GIT binary patch literal 2200 zcmV;J2xs?+P)Px-Qb|NXRCr$Poojj&ISfT%WizufhLth1GWY~BxT~v5S5M1j=O1ZXmUNHhR}wyd z+Fwg&;PcYa@8Cae02YT}1pxj&(U`vX-{Jeme=mW?lK^N!f9aGv6Q2{7K={9F^e@+8 z=Fevapch;tv_!Waibnx48vvQ2-vRRVjsK5FAW=4| z0PxLWgV)4vJ9Nv%4nc5sub|bT?EYXh0F-1BU;9NOdkBt3;aG!+Dq0H8r@#LpJq0|Yc5sr!K_03-rQe5mwVs5zp32dAkdC!opmW>Ev7fl5lA zWJxh4Mc6qa28m6fyRXe706=HIBuLceRWh!gg}t7DBVtKe3cLY8g^EbnQGDr3q4fwU z*~=jN0f{|z6&M8oIxY%SOMqrwzDk~SZ0Xf5vP_0o0aOTtFf?K4>__djiyN{V@xmtY zLjnO}H@pgD1AqpEB&R`%0);^ARSi&|kfk8B3U~s5lr$tUlHGo2a*Pi>h;K-&=%i5r z?gaocV-fKw2*eh(LlUe?3eySo4;2on0$w`3h2~}0Yxbkb9VLECpr@Zm6$p#h0{}D` z$XEzSVaX7d3nXr@DuCJ%hT!uUgd_qf|6X>)NicLk$~O}GuquGeN-jUhtVPD*>>!Ce z^R->@&@A#kCL+R-Ph9+nosi1MImU@kpL4Fa7?__#R0;CF9^>RN2aEV5bYg_^)fg?V(+e5G4+e60WVn6^u zDv78Ha87Z?xUz+;e_Zk;v!AndjK}lsfP)wj&%*|%nd=h3IgFHAPBau!&dyz85OKJ~ za+3kc1!qGt890A`evT&h$`}U#;_#gfBx&TEMf?_<6#}G$bNS}tK=T2KZv_Ae*a`sB zpGz8?42SDwZbEPXa5Shxf+SyaaHxA}4?=8;A%I z;(I`FmzU)L;7Z=03c#XAVchN zNzDA*8-mn307{fZ9L<`AoCKQP*~IUc18#SZK*_ED9(uj`VFkeJBrvP^eL}6}nahE8 zKXnVA2LN~L7E&U)z>(QgrHuswt^!zWU*^XHfGfvW6TcB@5b?Pk zZiW^HGIAT;K%($aaoy7(T;K^O$l z0BrGJr7KqnA^~{P1&`+pECoRn09*WfWRQCjPv}B#0*}Ub*~g?S0YO9sSm~UPNqyaF zI0PF2tAzIcLm}7z*ah^k;Q4n7ME*nous47r30@joUJ_NKMgTyLa6j6la(0nUsSrc~ zu&aQL)-(vB0HE;qanJ@q%7sxR02=}u0Mt7if@lCX1jQl90ANE<7=kPS8U$ZH_6GKp ztY;x)ImiT{Nw%+w_3*kwFaiJye?w3Nf>8i$2=oBBo(@I=K!NNFBRvQ%k4U2d*bwLe zpq^$3DgZDu1pWU&LN}iyzDyg#Dgev|!Bx^nU4N@}RCf$Qz51R2oo(5t9MrEj*{T6h zxe`d%+sr3%_3L3p0IEVDO>*XPpw>~{F=z?s%~o0tq_aQs)>B>n$;rw9RC+|xCOH~n zEttP2T6F-bKp-vuEy0n?fELP^;ynWZ6(G5iF{=zT>K{i@H7at7f)g+HAfrq zAc-Bk*WX0fe-D)={?jTz%izoqq>BGk0A^ec%#S+SQuVYYpwGiBm0+0oPp$y7EC)ly zUjYD$(fdkPTWyd1hKs)n02LufIpZUwK6wvtjK4}HC?oz#6`;W|8iG>duLwX}4o3V; zK{@eP1)x=f%;)5i;;#+>#h(E|S@AajziL4w1f|8_0Q@;8MBEyd7k>lrdQkL)U<&a! z0Pi;?9uTCz=ph$AS8Z0h2txB@fnX}}cLlgcLIc5c;%@-%YXS;EiANo@ydB%^CBO#3 z)Z*_7fK3~EKRCNOo@S?i7v`=27zFJNp|$S+Iv8%DV9O0aK~XYY+5lu`yWm(GfP$iA ay7U8drxl+io>c7s0000dXA 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