From 11812ec34931e78939e87effdc32a0d0b8d04b3b Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 21 八月 2024 14:32:22 +0800 Subject: [PATCH] 提交 --- pages/tabBar/count/count.vue | 261 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 206 insertions(+), 55 deletions(-) diff --git a/pages/tabBar/count/count.vue b/pages/tabBar/count/count.vue index 56fb158..90a0b8f 100644 --- a/pages/tabBar/count/count.vue +++ b/pages/tabBar/count/count.vue @@ -15,7 +15,7 @@ <view class="m-p-15"> <view class="userInfo"> <view class="info-l"> - <image src="../../../static/companyLogo.png" mode="widthFix"></image> + <image :src="avator" mode="aspectFill"></image> <!-- <view class="info-icons">--> <!-- <u-icon v-if="user.sex==0" name="man" color="#0f7ff9" bold size="24"></u-icon>--> <!-- <u-icon v-else-if="user.sex==1" name="woman" color="#ff69bf" bold size="24"></u-icon>--> @@ -29,21 +29,21 @@ <span>{{username}}</span> </view> -<!-- <view class="info-id">--> -<!-- ID:<span>{{user.idNo}}</span>--> -<!-- </view>--> + <view class="info-id" @click="resetPwd()"> + <span>重置密码</span><u-icon name="edit-pen" color="#e6e6e6" size="16"></u-icon> + </view> </view> </view> <view class="card-list"> <view class="paper-card"> - <view class="menu-i" @click="toHazmat"> + <view :class="user.useProd == 1?'menu-i':'menu-i-l'" @click="toHazmat"> <view class="menu-l"> <u-icon name="warning" color="#0f7ff9" size="32"></u-icon> <view><span style="color: #ed6464">危化品</span>操作记录</view> </view> <u-icon name="arrow-right" color="#ccc" size="20"></u-icon> </view> - <view class="menu-i" @click="toProduct"> + <view class="menu-i" @click="toProduct" v-if="user.useProd == 1"> <view class="menu-l"> <u-icon name="bag" color="#0f7ff9" size="32"></u-icon> <view><span style="color: #5fb734">成品</span>操作记录</view> @@ -57,14 +57,53 @@ <u-button @click="loginOut" type="primary" text="退出登录" style="width: 80%" shape="circle"></u-button> </view> </view> + <u-modal :show="showModal" title="重置密码" :showConfirmButton="false" :closeOnClickOverlay="true" ref="uModal" :asyncClose="true" @close="closeModal()"> + <view> + <u--form labelPosition="top" labelWidth="120" :model="pwdForm" :rules="rules" ref="uForm"> + <u-form-item + prop="password" + ref="password" + label="新密码" + > + <u--input + v-model="pwdForm.password" + placeholder="请输入新密码" + :type="codeType1" + > + <template slot="suffix"> + <u-icon v-show="codeType1 == 'password'" name="eye" color="#999" size="20" @click="viewCode(1)"></u-icon> + <u-icon v-show="codeType1 == 'text'" name="eye-off" color="#999" size="20" @click="viewCode(1)"></u-icon> + </template> + </u--input> + </u-form-item> + <u-form-item + prop="rePassword" + ref="rePassword" + label="确认密码" + > + <u--input + v-model="pwdForm.rePassword" + placeholder="请确认密码" + :type="codeType2" + ><template slot="suffix"> + <u-icon v-show="codeType2 == 'password'" name="eye" color="#999" size="20" @click="viewCode(2)"></u-icon> + <u-icon v-show="codeType2 == 'text'" name="eye-off" color="#999" size="20" @click="viewCode(2)"></u-icon> + </template></u--input> + </u-form-item> + </u--form> + <u-button type="primary" style="margin-top: 20px" text="确认" @click="confirmPwd()"></u-button> + </view> + </u-modal> + <u-toast ref="uToast"></u-toast> <tabBar :currentPagePath="page"></tabBar> </view> </template> <script> import tabBar from '../tabBarIndex.vue' - import {getExamList, getUserInfo, loginOut} from "../../../api"; - import {getCleanRecord} from "../../../api/wearhouse"; + import {loginOut, postHazmatReturn, resetPwd} from "../../../api"; + import VUE_APP_BASE_URL from 'common/constant.js' + import avatorPic from '../../../static/avator.png' export default { components:{ tabBar @@ -80,7 +119,49 @@ completed: 1 }, examList: [], - totalPage: 0 + totalPage: 0, + user: {}, + avator: '', + showModal: false, + pwdForm:{ + id: null, + password: '', + rePassword: '' + }, + rules: { + password: [ + { + type: 'string', + required: true, + message: '新密码不可为空', + trigger: ['blur', 'change'] + }, + { + validator: (rule, value, callback) => { + return /^(?![a-zA-Z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*\-_]{6,16}$/.test(value) + }, + message: '密码须同时包含字母、数字和特殊字符,长度在6-16之间', + trigger: ['change','blur'], + } + ], + rePassword: [ + { + type: 'string', + required: true, + message: '请再次确认密码', + trigger: ['blur', 'change'], + }, + { + validator: (rule, value, callback) => { + return value == this.pwdForm.password; + }, + message: '两次输入密码不一致', + trigger: ['change','blur'], + } + ] + }, + codeType1: 'password', + codeType2: 'password' } }, @@ -92,31 +173,19 @@ this.username = uni.getStorageSync('name') // uni.hideTabBar(); // this.getUserInfo() + this.user = uni.getStorageSync('userSet') + if(this.user.logoPath && this.user.logoPath !== ''){ + this.avator = VUE_APP_BASE_URL + '/api/' + this.user.logoPath + }else{ + this.avator = avatorPic + } }, methods: { - goBack() { - uni.switchTab({ - url:'/pages/tabBar/firstPage/firstPage' - }); - }, - - getUserInfo(){ - getUserInfo(uni.getStorageSync('uid')).then(res => { - if(res.code == 200) { - this.user = res.data - }else{ - uni.$u.toast(res.message) - } - }) + base64Encode(str) { + return btoa(unescape(encodeURIComponent(str))); }, - toDetail(item,type){ - uni.setStorageSync("prevPage", '/pages/tabBar/count/count'); - uni.navigateTo({ - url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type)) - }) - }, toHazmat(){ uni.setStorageSync("prevPage", '/pages/tabBar/count/count'); uni.navigateTo({ @@ -159,10 +228,77 @@ }) }, - getPhoneNumber(phone) { - const firstThree = phone?phone.slice(0, 3):'' - const lastFour = phone?phone.slice(-4):'' - return `${firstThree}****${lastFour}` + resetPwd(){ + const t = this + t.showModal = true + }, + + viewCode(type){ + const t = this + if(type == 1){ + if(this.codeType1 == 'password'){ + this.codeType1 = 'text' + } else{ + this.codeType1 = 'password' + } + }else{ + if(this.codeType2 == 'password'){ + this.codeType2 = 'text' + } else{ + this.codeType2 = 'password' + } + } + }, + + confirmPwd(){ + const t = this + t.$refs.uForm.validate().then(res => { + let data = {} + data.id = uni.getStorageSync("uid"); + data.password = t.base64Encode(t.pwdForm.password) + resetPwd(data).then((r)=>{ + if(r.code == 200){ + t.$refs.uToast.show({ + type: 'default', + message: '密码已重置,请重新登录', + duration: 1000 + }) + loginOut().then(res=>{ + if(res.code == 200){ + setTimeout(()=>{ + uni.clearStorageSync(); + uni.clearStorage(); + uni.navigateTo({ + url: '/pages/index/index' + }) + },1000) + } + }) + }else{ + t.$refs.uToast.show({ + type: 'default', + message: r.message + }) + } + }).catch((err) => { + uni.showToast({ + title: err, + duration: 2000 + }) + }) + t.closeModal() + }).catch(errors => { + uni.$u.toast('请按要求完善信息') + }) + }, + + closeModal(){ + this.showModal = false + this.pwdForm = { + id: null, + password: '', + rePassword: '' + } } } } @@ -207,9 +343,20 @@ background-color:lightgrey; } -.myImg{ - width: 100%; - height: 100% +/deep/ .u-modal__title{ + padding-top: 20px !important; +} + +/deep/ .u-modal__content{ + display: flex; + flex-direction: column !important; + align-items: center; + text-align: left; + padding-top: 0 !important; + + &>view{ + width: 100%; + } } .m-p-15{ @@ -227,26 +374,17 @@ .info-l{ width: 150rpx; height: 150rpx; - border-radius: 50%; - position: relative; + border-radius: 75rpx; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; margin-right: 20px; + border: 2px solid #fff; + box-sizing: border-box; image{ - width: 150rpx; - height: 150rpx; - border-radius: 50%; - } - .info-icons{ - width: 48rpx; - height: 48rpx; - border-radius: 90%; - position: absolute; - bottom: 10rpx; - right: 0; - background: #fff; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 2px 4px rgba(0,0,0,.1); + width: calc(100% + 4px) !important; + height: calc(100% + 4px) !important; } } @@ -263,6 +401,16 @@ margin-right: 10px; } } + + .info-id{ + display: flex; + align-items: center; + + span{ + font-size: 24rpx; + color: #e6e6e6; + } + } } } @@ -277,7 +425,7 @@ align-items: center; justify-content: space-between; - .menu-i{ + .menu-i,.menu-i-l{ width: calc(50% - 5px); background: rgba(255,255,255,1); border-radius: 12px; @@ -307,6 +455,9 @@ } } } + .menu-i-l{ + width: 100%; + } } } } -- Gitblit v1.9.2