From a892d395bf9083e8ebbcd1b7b1c83de10080bd57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E8=BE=89?= <814457906@qq.com> Date: Thu, 10 Nov 2022 10:51:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 20 +- api/confirmCompletion/index.js | 9 + components/v-sign/utils.js | 15 ++ components/v-sign/v-sign-action.vue | 162 ++++++++++++ components/v-sign/v-sign-pen.vue | 211 ++++++++++++++++ components/v-sign/v-sign.vue | 238 ++++++++++++++++++ pages.json | 88 ++++--- pages/Modifyinformation/Modifyinformation.vue | 25 +- pages/Mymission/Mymission.vue | 66 +++-- pages/confirmCompletion/confirmCompletion.vue | 214 +++++++++++++--- pages/homepage/homepage.vue | 14 -- pages/login/login.vue | 10 +- pages/personal/personal.vue | 18 +- pages/signature/signature.vue | 49 ++++ pages/startup/startup.vue | 26 +- static/v-sign/clear.png | Bin 0 -> 6420 bytes static/v-sign/next.png | Bin 0 -> 7319 bytes static/v-sign/prev.png | Bin 0 -> 7356 bytes static/v-sign/save.png | Bin 0 -> 3573 bytes 19 files changed, 1014 insertions(+), 151 deletions(-) create mode 100644 api/confirmCompletion/index.js create mode 100644 components/v-sign/utils.js create mode 100644 components/v-sign/v-sign-action.vue create mode 100644 components/v-sign/v-sign-pen.vue create mode 100644 components/v-sign/v-sign.vue create mode 100644 pages/signature/signature.vue create mode 100644 static/v-sign/clear.png create mode 100644 static/v-sign/next.png create mode 100644 static/v-sign/prev.png create mode 100644 static/v-sign/save.png diff --git a/App.vue b/App.vue index 493643a..bb32f46 100644 --- a/App.vue +++ b/App.vue @@ -1,7 +1,25 @@ diff --git a/api/confirmCompletion/index.js b/api/confirmCompletion/index.js new file mode 100644 index 0000000..1094867 --- /dev/null +++ b/api/confirmCompletion/index.js @@ -0,0 +1,9 @@ +import request from "../request.js" + +export function orderConfirm(data) { + return request({ + url: `/nurseApp/personLogin/orderConfirm`, + method: 'POST', + data + }) +} diff --git a/components/v-sign/utils.js b/components/v-sign/utils.js new file mode 100644 index 0000000..a5a9ab7 --- /dev/null +++ b/components/v-sign/utils.js @@ -0,0 +1,15 @@ +/** + * 判断是否未数值 + * @param {Object} val + */ +export function isNumber(val) { + return !isNaN(Number(val)) +} + +/** + * 处理大小单位 + * @param {Object} val + */ +export function formatSize(val) { + return isNumber(val) ? `${val}rpx` : val +} diff --git a/components/v-sign/v-sign-action.vue b/components/v-sign/v-sign-action.vue new file mode 100644 index 0000000..65d11d1 --- /dev/null +++ b/components/v-sign/v-sign-action.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/components/v-sign/v-sign-pen.vue b/components/v-sign/v-sign-pen.vue new file mode 100644 index 0000000..9c26a66 --- /dev/null +++ b/components/v-sign/v-sign-pen.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/components/v-sign/v-sign.vue b/components/v-sign/v-sign.vue new file mode 100644 index 0000000..afb3020 --- /dev/null +++ b/components/v-sign/v-sign.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/pages.json b/pages.json index 8fb5f94..d1b28c0 100644 --- a/pages.json +++ b/pages.json @@ -4,13 +4,26 @@ }, "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { + "path": "pages/startup/startup", + "style": { + "navigationBarTitleText": "启动页", + "navigationStyle": "custom" + } + }, + { + "path": "pages/confirmCompletion/confirmCompletion", + "style": { + "navigationBarTitleText": "完成确认", + "navigationBarBackgroundColor": "#ffffff" //背景颜色 + } + }, { "path": "pages/login/login", "style": { "navigationBarTitleText": "登录", - "navigationBarBackgroundColor": "#ffffff" ,//背景颜色 + "navigationBarBackgroundColor": "#ffffff", //背景颜色 "navigationStyle": "custom" } - },{ + }, { "path": "pages/personal/personal", "style": { "navigationBarTitleText": "个人信息", @@ -24,13 +37,13 @@ "navigationBarTitleText": "忘记密码", "navigationBarBackgroundColor": "#ffffff" //背景颜色 } - },{ + }, { "path": "pages/register/register", "style": { "navigationBarTitleText": "注册账号", "navigationBarBackgroundColor": "#ffffff" //背景颜色 } - },{ + }, { "path": "pages/homepage/homepage", "style": { "navigationBarTitleText": "泉医到家", @@ -38,38 +51,30 @@ } }, { - "path": "pages/confirmCompletion/confirmCompletion", + "path": "pages/taskReturn/taskReturn", "style": { - "navigationBarTitleText": "完成确认", - "navigationBarBackgroundColor": "#ffffff" //背景颜色 - } - },{ - "path" : "pages/taskReturn/taskReturn", - "style" : - { - "navigationBarTitleText": "任务退回", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#ffffff" //背景颜色 - } - - },{ - "path": "pages/Mymission/Mymission", - "style": { - "navigationBarTitleText": "我的任务", - + "navigationBarTitleText": "任务退回", "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#ffffff" //背景颜色 } - - },{ - "path" : "pages/taskDetails/taskDetails", - "style" : - { - "navigationBarTitleText": "任务详情", - "enablePullDownRefresh": false, + + }, { + "path": "pages/Mymission/Mymission", + "style": { + "navigationBarTitleText": "我的任务", + + "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#ffffff" //背景颜色 - } - + } + + }, { + "path": "pages/taskDetails/taskDetails", + "style": { + "navigationBarTitleText": "任务详情", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff" //背景颜色 + } + }, { "path": "pages/Modifyinformation/Modifyinformation", @@ -79,24 +84,15 @@ "navigationBarBackgroundColor": "#ffffff" //背景颜色 // "navigationBarTextStyle": "white" } - }, - { - "path": "pages/startup/startup", + }, { + "path": "pages/signature/signature", "style": { - "navigationBarTitleText": "启动页" + "navigationBarTitleText": "", + "enablePullDownRefresh": false } + } - - ,{ - "path" : "pages/confirmCompletion/confirmCompletion", - "style" : - { - "navigationBarTitleText": "", - "enablePullDownRefresh": false - } - - } - ], + ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", diff --git a/pages/Modifyinformation/Modifyinformation.vue b/pages/Modifyinformation/Modifyinformation.vue index 419db06..2c36b1a 100644 --- a/pages/Modifyinformation/Modifyinformation.vue +++ b/pages/Modifyinformation/Modifyinformation.vue @@ -58,10 +58,12 @@ return data => data?.nurseStationSysUserVOList?. [0]?.nurseStationName || '' }, }, - onLoad(options) { - this.info(); - this.baseurl = baseurl; - const that = this + onShow() { + let that = this + // try { + // const value = uni.getStorageSync('nursePersonId'); + // if (value) {} else {} + // } catch (e) {} try { const value = uni.getStorageSync('phonenumber'); if (value) { @@ -75,7 +77,10 @@ } } catch (e) {} this.myInfo() + this.info(); + this.baseurl = baseurl; }, + onLoad(options) {}, methods: { //上传头像 uploadImag() { @@ -98,11 +103,11 @@ gofinish() { var that = this uni.uploadFile({ - url: baseurl + '/nurseApp/personLogin/updateHeadAvatarHead', + url: baseurl + '/nurseApplet/uploadFile/uploadHeadPictureUrl', filePath: that.appPersonallist.avatar, //file: 二进制(filePath) name: 'file', formData: { //多余值 - 'userId': that.appPersonallist.userId, + 'nursePersonId': that.appPersonallist.nursePersonId, }, timeout: 5000, success(res) { @@ -112,9 +117,13 @@ that.$refs.uToast.show({ title: '修改成功', type: 'success', - url: '/pages/personal/personal', - duration: '1500' + duration: '1500', }) + setTimeout(e => { + uni.navigateBack({ + delta: 1 + }) + }, 1500) } else { that.$refs.uToast.show({ title: res.msg, diff --git a/pages/Mymission/Mymission.vue b/pages/Mymission/Mymission.vue index c1b7a5b..39e1d3e 100644 --- a/pages/Mymission/Mymission.vue +++ b/pages/Mymission/Mymission.vue @@ -2,7 +2,7 @@ - + 详情 - 去完成 + 去完成 @@ -70,22 +70,36 @@ }, { name: "已完成" }, ], - nursePersonId: 2, //护理员id + nursePersonId: '', //护理员id orderStatus: 'NOT_FINISH', // orderStatus:订单状态 未完成:NOT_FINISH,服务完成:COMPLETE pageNum: 1, pageSize: 10, //未完成任务 list: [], total: 0, + nurseItemName: '', + } + }, + watch: { + nurseItemName() { + this.selectMissioninfo() } }, methods: { + //去完成 + goconfirmCompletion(item) { + console.log(item) + uni.navigateTo({ + url: `/pages/confirmCompletion/confirmCompletion?orderDetailsId=${item.id}&orderNo=${item.orderNo}` + }) + }, //任务list selectMissioninfo() { - selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => { - this.list = res.rows - this.total = res.total - }) + selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize, this.nurseItemName).then( + res => { + this.list = res.rows + this.total = res.total + }) }, //跳转详情页 gotask(item) { @@ -104,10 +118,11 @@ } else { this.orderStatus = 'COMPLETE' } - selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => { - this.list = res.rows - this.total = res.total - }) + selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize, this.nurseItemName).then( + res => { + this.list = res.rows + this.total = res.total + }) }, // goorderdetails() { // uni.navigateTo({ @@ -115,26 +130,35 @@ // }) // }, }, - onLoad() { //开局调用 + onShow() { //加载的时候执行(没有次数限制) this.baseurl = baseurl - this.selectMissioninfo(); + var that = this + try { + const value = uni.getStorageSync('nursePersonId'); + if (value) { + that.nursePersonId = value + this.selectMissioninfo(); + } + } catch (e) {} }, onReachBottom() { //下滑加载 if (this.list.length >= this.total) {} else { this.pageNum++ - selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize).then(res => { - res.rows.forEach(e => { - this.list.push(e) + selectMission(this.nursePersonId, this.orderStatus, this.pageNum, this.pageSize, this.nurseItemName).then( + res => { + res.rows.forEach(e => { + this.list.push(e) + }) }) - }) } }, onPullDownRefresh() { //下拉刷新 this.pageNum = 1; - selectMission(this.nursePersonId, this.orderStatus, this.PageNum, this.PageSize).then(res => { - this.list = res.rows - this.total = res.total - }) + selectMission(this.nursePersonId, this.orderStatus, this.PageNum, this.PageSize, this.nurseItemName).then( + res => { + this.list = res.rows + this.total = res.total + }) setTimeout(function() { uni.stopPullDownRefresh(); }, 1000); diff --git a/pages/confirmCompletion/confirmCompletion.vue b/pages/confirmCompletion/confirmCompletion.vue index 470cc36..bcdb29a 100644 --- a/pages/confirmCompletion/confirmCompletion.vue +++ b/pages/confirmCompletion/confirmCompletion.vue @@ -4,31 +4,37 @@ 护理员到岗照片 - - + + + 选择图片 + + + - - + 服务结束照片 - - + + + 选择图片 + + + - @@ -37,39 +43,170 @@ 我确认已接受服务 - - - 点此签名 + + + + 点此签名 + - - + 去完成 + + + + diff --git a/pages/login/login.vue b/pages/login/login.vue index 97c07e2..c6788c6 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -49,14 +49,7 @@ if (res.code == 200) { uni.setStorageSync("phonenumber", that.phonenumber) uni.setStorageSync("password", that.password) - // uni.setStorage({ - // key: 'phonenumber', - // data: that.phonenumber - // }) - // uni.setStorage({ - // key: 'password', - // data: that.password - // }) + uni.setStorageSync("nursePersonId", res.data.nursePersonId) this.$refs.uToast.show({ title: '登录成功', type: 'success', @@ -74,7 +67,6 @@ type: 'error' }) } - }) }, //跳转注册页 diff --git a/pages/personal/personal.vue b/pages/personal/personal.vue index efe92ed..74d57d2 100644 --- a/pages/personal/personal.vue +++ b/pages/personal/personal.vue @@ -36,18 +36,14 @@ 我的设备 - - - + @@ -120,13 +116,6 @@ border-radius: 20rpx; position: relative; - .righttext { - position: absolute; - right: 12%; - top: 50%; - color: #969394; - transform: translateY(-50%); - } image { width: 18rpx; @@ -137,8 +126,7 @@ transform: translateY(-50%); } - .lefttext, - .righttext { + .lefttext { display: inline-block; } } diff --git a/pages/signature/signature.vue b/pages/signature/signature.vue new file mode 100644 index 0000000..d8d66d8 --- /dev/null +++ b/pages/signature/signature.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/pages/startup/startup.vue b/pages/startup/startup.vue index 22d79db..8cb8f42 100644 --- a/pages/startup/startup.vue +++ b/pages/startup/startup.vue @@ -14,18 +14,32 @@ }; }, - created() { - this.info(); - }, - methods: { - info() { + onShow() { + let that = this + try { + const value = uni.getStorageSync('nursePersonId'); + if (value) { + setTimeout(() => { + uni.reLaunch({ + url: '/pages/homepage/homepage' + }); + }, 2000); + } else { + setTimeout(() => { + uni.reLaunch({ + url: '/pages/login/login' + }); + }, 2000); + } + } catch (e) { setTimeout(() => { uni.reLaunch({ url: '/pages/login/login' }); }, 2000); - }, + } }, + methods: {}, } diff --git a/static/v-sign/clear.png b/static/v-sign/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..032e7aa232545ca6c6554a04b5fa34eee1239f10 GIT binary patch literal 6420 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 literal 0 HcmV?d00001 diff --git a/static/v-sign/next.png b/static/v-sign/next.png new file mode 100644 index 0000000000000000000000000000000000000000..20cbf6c8023a5f96939ad11820457e63bf601302 GIT binary patch literal 7319 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 literal 0 HcmV?d00001 diff --git a/static/v-sign/prev.png b/static/v-sign/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..e81d3b9b629775099f4fffbc10347281c1b0f07c GIT binary patch literal 7356 zcmaJ`c|4SD)PBZbWSM4&LNX0Pc8aWxjIztn*oo|Ggpg%k!f3IKC6f?YUNK}D%3ehF zt+8gwE+k~%zUTdZzwh7gkD2F>`^=g9KF_(YbDeX=-Zi+x#>~SE005h|78VCSzy0@N zVg$b_W+j>61M&!W=N3@Xb8#5}E(U00)lC9z)-qVqE^1QSdY8%8O{O_}7>GLZ^WkMv zb;wr~-R4~cL+rC}x)`nU!2+iwqR3N`U@1E}>-r?%_DANcA`p74(WMBhETR>CN(_3k zs0H>6OE1**_tVswdba4|3l4qk z6GJT*ig&xn;_Js`(6_wsQ(_MTK>%`pNH8{ryl;W68~HqtUuHej1sQ04is&Z;A96JZ z^DNv87j@1mPXpSDL0CT}AVk)#f@ZPu>C8%voAnX_D)==QVZ;rj7Pz4A@d=8ut>piL zCp@h%x|(9Jqq1K2lvaR$lK$k1>)Cd>}NEr&Qg766^R)F?bqQ&wS zq_-&f3mWcgb@Gl*aY|kTJZbvaTA;~Lzb6vflAFHos))%CtiS&`g75j)8P)uPCW!r5 zf5_j9sH70dSDlu3jQ)np7e6M9Jft<`Lj`xtM7QajPKqQt`A}7Fs6{IPgzz9KPQm;Z)X~JGZI3N1bi0CXI zD#KT8+y_R7$ooFu6%r_4R89>bIBb;~Qw}d7&^1gz-0$SizqxYw#*Ikg4KKsD&?W;F3#5bxM(AUwf~9P4+yq>D+$>5}(f_~Az=Ye3mbsl;{z zv}N}=9z7F2CR=Q64b!Ua@vpMBg@7LEu*DW1Od@dJOt^`-252tdu+mh%H(;d0*Vc9F z_<6u_OFTb-5I<5qcU*+~Z_%$||5{-oYx=iV+zeKf#nQLco>#*rOVT(#B${ znvNeIitEQ3vOSYA*GjTc;#tnR*`EU*%62wK4IIG&-z7Tq(t-c|o46-1s3y17ZFk|f zocS>Ln&&6`SF|xYc>@NSixUt)Bbw4sZzld*RbGDQBedm1h3eJeM+9-JkAFC+7W(ok zWO(_*slL9x$;CI1diV=^@@gagE{%G=9am)_t{+NmsH{smg_ZqNW|+DcdQS83MST3} z`@|B^(YUJMupFT)U143Zxw*L!AiPTddmee(+I8qknNOwI`4H0l>Z&V)=@3r0^S;*u zf83gPN;F!IBT)$%(fZFp4=bPt4#Eg?`E=0aLwB9$~pu$_0I7Lpmairptm;S4NUVm zoh+=5R(RXg__<1~+^{}ehWnjEOzrk!TJpHAEXW6G7E{B%KMi>9wsvZ#$tu|5sz zkb*@YW8Qa$t|L3%F}{I1B(n5hnwzOf5iLgfdramH53m2gfgWw+)Xa%h5od}h9qr@l z_WcxMa!%8>GH*(KA|`GBhrYsu-~6a^R()0E@zR*aA{`N@)1axvo^Cg2AiX7HcVX<~ zRnMhg5ezH=;#|*n(|$iWzdRxQw%EMFDKB<-#`;=GmvtGO3AqLXOo65?+1-GeCOXQt z4ol6TVCd8-8eMW$aJWsgim&v$#W>T?v7{<rh+>hb55BrTqGmnEgxo>ATmh!t2GzM71iM1;7orOmJu7j)s9hnZlWl9? zH|E6ZLyDN2{|p&yXAibf>9jssh54V;90r=;`LHy{(VEx>kvyBGuJd$Fwfaljgxl66 zWR#tVZUke=1sGP8DkK*U1x_X+(u*pG_{-j=Tabu7^aNF4T0b?j6t~;%1pV|HHM1-i zb*DV&$iS5s+`bc(;E{6uk^=;g$6Br@n|H_QVr#KRl?-T|%C<%QqtvDN&8e=sliswT zM^0g!Xs=1n2U;Up)D4=0irsN$sS|60kZvk#sdep6Ft0inFnyJ>{UmsDEfCl|tDSv! zqy%47-?3G+blV<$=7F%|8O`4;&c5T-HU(45kiUi99hcGYjb* z85xNTN+0NM6UZ6F|^#1%KG{ zFv&SS#Qm9iVxCGZ`MW_;6p=k7r#*3>!+j+zsrj z*BSSW`~yta_^%9gtM2}IbZUqD?mFr-oos9nbn@rVAK(2j`$Z-V%@r*n!Wf^DxE!EioD^pBi>-`&kS8p9gg05&CkC3*`V}^3%=KIio{ly14g7$wUfQs z7>Wh;SD}F+wt2XYYuNUf8@b4+juQQ1wd?~6nF>FT?l{Sah|2cUyjV$Y$nC6kFu4NSu)aI7Mv4S6{AMTgEM;0h~~7K7M(7Vn8(Pcmr) zNl%YIQkP^#pyS>wIm6}k`P!9kj=Kjn{_S&T$|J66%A zCw4`yA8rY*B;+afTe$PuJr(yKZtt0EI@;e-;OF5fM@sHoqil!IEr;1-a*eTqwLKm} zxaHVmNRWYn6n`gPUb1&<(z4J*aM4jxh!Z6vSROVtgf|y@MY6j68*V=V=G94;hZ57< z+>)?67otDqe$i#qVvP+^r;?V>Amh(QG_^WOtO!326-H0%G}p zNI5$38ckR~{i@=m*7m@x=K4(o_hW|fW*6Rsz0b!=*viCfi-|V~+xk^(4-fWlOdp1E zBF|q?89V-J@6$6fl2#{EftQ7_JBOrn-y?k+aIsr}&ECuK(tc*-tSp?LTtg!3=MPkz z?8tGTHtu1EX1>K>c`xs-|5aJHPSMd!mH9X@3l}&0aKFvIOr+oUg@m?x3ls!^A8B|U zC(O)Z;zXJ`Du^6q6IKnv_#+RGRUeiy16gO7IK4ofru(tHWwSJ$7Hj*7(Ya7IWR_!g z#jp$IEcI=AdaeT`Y_+VdiZZ-X3J^S1d!KO2b#7*C-`t$aT%?>%toEku+Y zwOIMFWhKbRBKHpGcHDk*`Hp;s{?Tb?lAB|(@F-zktP0ptc50}1)q<`pJ=k1s~uh8TPofL2>RB?Uw9a>KLm0(fayoK-@K8;(JWqxyB4Gh<xU;;Roy@tPm{RbyPv$#PPSd^5XR5spgaLHg{e2r0j}NkNEtS0} z;Qk^hCJ>LHFW{A>N^s|WPwf(~KEtQ&GlVZlR|qDM=kDMo%s|u|C)F@e<%*rjSY+_Nr+Y3naXX^f^rSFLQiF}*Er*L zlqlQEdOR*{347$0ziruU5AL*ZM4&$Q<#JOhXV&t{MVF!|zjoTEI#cG|fR8%vp7T$> zfBW_=AnMl7);+H46`uL$h;^m*h>1pQ~z7cOLkc8)rh{g-p8puh3ZKGm(WHae{NlE*8<*pFD3(>w$vI^%I ziGN8%n=`;v8G>pw*QfxJ`p{RB)-{qz0{T20{oMd+{kOI2D&a?PhOIbPueZXRK`?C3 zReBF)&>gVh;`tbh6$NL`c22~y$0w^vfoD11kf!3|4DY@ZUW=7Ti6!PA@C1j}lY1EM zOPAEbN6Q@>4Tt8)7FaBR$n_llS4}Pp5p9>RknstMhQ?~(J9v?^3`nUn5z~?RQGBT7 zi<&JrWh+#^73gf$JG8TVuZ>Y}G7=PWmF=6ys@*A5X_^HB1g)49T$^+Sh0ku$m9pq4 zSh#-9a`fc>>4w26%-U(){q77A!!}Z_VZFG`b!VIDWRs) ztHeJ0kL>l-S>8i`g{k-L2uH`!u}^trAPe{m9IRgJ5Y6BbP2Y}-!4_{zf5pbUbl9*I zU)1Q4hrgOK3AP#v7Bt<>U88eriXe=~x*ETVgR*Pj)Ujg!%px{MP)w3KYhB5V@PuNx z+Jst|d}2{M1La)ok}i<2AHIix(a^k#i2ADI2SJ zUqi5FO}-$$Y5g~h&f(X``JL6mf=p6TRk7LR6wdFpU_j@atYYfP$y|p{p`r9v0g0*d z-y|h|eN#GgF8l)0v*mu~2E8VhIRf?O-`wN_Svh|4QgLQBZmi|4HJjFviZ22P zkt>qX9}|uv$r1^Af&XP6c+@!Og<0`#4Y^TAi4(gB2g?i0yaIcQuA7Gq;V^WATG16?^*yyg zAlASTV7JvSj$$X(DpLIYuQXpo^?uaAZhGJt35wbVvQYm9@H(R0k39m6dH*)4@X zf*BJou)B{^5F3%|2&(}PSw7TY2G~kGCB6ghtGWrwO|1k?%7At9JW`>X$$CcOlPUv9 z6R4~B^59ByaS@o-tg$RSN7$5Ozs%ZUIEVhh4bhc<5I&12CPByT7kP_7V!ue9hhudx ziM)6%m~9Cl?_<$9p=tYr)|>rhv>>VQESF_%Lpt`GAICeqgt(ti=2B0(9bWOFD7~NL zdR4Z}xvEhsy$ImPfllm`=^@PJ1h4S66?OS`=ePBNDbrop&+{@Sj=kjBM+ z`l(tqDmcE2PkcGHtAg6N60Y6vq*6_y9yhWhkeZ1b@&{c8pC;@b<6#vhN3U z347V0&e$U|8!uUr*f?FqccW(~T9kKIzR+Cql`X$!B39`~d#)FrBJykjoTllv^hW1- zgHcTBoDY2`Lb`h(-yva+7K1CHI5zRrq`b^ir*Lqt+1}FWwWnX!P;lEnpCa^X zlCu~9euWjsLpONB@}y|qj>6LvfdkBuIrQ#h$UoN=3Ek$t{-^S_!(_J3MHy*je zv;rQd;MScNbSuQJ<3+fhmtN%M9Tz!{0LS$myT>U+muvoi=Ug8W(iAD4HXH9m#=Jv9 zj`G`8{Rw)$kwn3{hNsonY%Zb}#D&o2c@jlb{Z||XSI&d0WoDxOEOL#s$}KpeBJQ9e zT>VXROPaJ?_!ZXXmsMIfFgzo=*j9}*ikKG}ZM;v3-~OV%>r#h!=TSa{Yh(p9iRpQ3 zxuqhe7$}#JJ4GO?rE|mThYo;UR#Klnn)Fcm_Kcz;hW&MBIS-Po_u;Q5WxF5LMv^}K zA2~ulbCz(g9I|xc^jYIoew&Q*d011-r9XaS-mA>Q%*~~+d6+u1-l6oQB=iw18Aq-* z6_~M8M}%}+tK%|Vv4W6tp}PUKLPoEv1HM|<7Vx2REae>PgE8)^5^Eo8BLr1ylW{S! z6|3HcmM2D~!?qwX=GPkUqZzIPNL5xqN^gpt=R{xu(Ecfi%m9Ea-G2JC{Ud2sL+!y< zTK58gZ1+v{OnQ%+;Z#RlJHo62+Q00rq#T?6R{#<{`|~|7m^PA7f`Em#%vLpGBapJq z&qMPkRQi7SJSA*y-qCeF+D^puqN&mx_^t~s<VjY?I!K2d3+!S%uyP49)P``2t`iFdrL$baD+6rJaZoryxj~7h<^#%O!W_%dc5R^S#%G)1mIdl$%So|*%^zk7 z(3ZGT1F9h?s{L)p*4T}J#`bNd1!KaX)O6s0o{(Mzjmu_>jMq3oDK1nt(d$A0Xgsn( zE8K|%RVOvFmIA9XXuP`j%jB>H)ZMc5a(ScqK;wWA|M#IYO{dWDtH19y6d7iNawMRw MX@D)cbwA>N00B4zL;wH) literal 0 HcmV?d00001 diff --git a/static/v-sign/save.png b/static/v-sign/save.png new file mode 100644 index 0000000000000000000000000000000000000000..5269210fa987d4b07c2820b7ed4419162a9badb2 GIT binary patch literal 3573 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 literal 0 HcmV?d00001