@@ -9,3 +9,7 @@ export default | |||||
export const REGION = { | export const REGION = { | ||||
YI_LONG_XIAN: '仪陇', | YI_LONG_XIAN: '仪陇', | ||||
} | } | ||||
export const REGEXP = { | |||||
PASSWORD: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/, | |||||
}; |
@@ -63,7 +63,7 @@ | |||||
<div style="padding:15px;"> | <div style="padding:15px;"> | ||||
<p style="display: flex;align-items: center;"> | <p style="display: flex;align-items: center;"> | ||||
<img src="../../assets/images/housesteadSurvey/add03.png" alt="" style="margin-right: 5px;"> | <img src="../../assets/images/housesteadSurvey/add03.png" alt="" style="margin-right: 5px;"> | ||||
<span style="line-height: 1;font-size: 16px;">{{item.fssslx}}</span> | |||||
<span style="line-height: 1;font-size: 16px;">{{ formatDict(fssslxList, item.fssslx) }}</span> | |||||
</p> | </p> | ||||
<div style="display:flex;line-height:20px;margin-top: 15px;font-size: 14px;color: #999999;"> | <div style="display:flex;line-height:20px;margin-top: 15px;font-size: 14px;color: #999999;"> | ||||
<p style="flex:1;text-align:left;">建筑面积(㎡):</p> | <p style="flex:1;text-align:left;">建筑面积(㎡):</p> | ||||
@@ -71,7 +71,7 @@ | |||||
</div> | </div> | ||||
<div style="display:flex;line-height:20px;margin-top: 5px;font-size: 14px;color: #999999;"> | <div style="display:flex;line-height:20px;margin-top: 5px;font-size: 14px;color: #999999;"> | ||||
<p style="flex:1;text-align:left;">建筑物情况:</p> | <p style="flex:1;text-align:left;">建筑物情况:</p> | ||||
<p style="flex:1;text-align:right;">{{item.jzwqk}}</p> | |||||
<p style="flex:1;text-align:right;">{{ formatDict(jzwqkList, item.jzwqk) }} </p> | |||||
</div> | </div> | ||||
<div style="text-align:center;overflow:auto;display: flex;justify-content: center;margin-top: 10px;"> | <div style="text-align:center;overflow:auto;display: flex;justify-content: center;margin-top: 10px;"> | ||||
<p style="width:49%;display: flex;align-items: center;justify-content:center;border: 1px solid transparent;background: #22B7F2;padding: 3px 0;border-radius: 50px;" @click="showPopupzrz(item)"> | <p style="width:49%;display: flex;align-items: center;justify-content:center;border: 1px solid transparent;background: #22B7F2;padding: 3px 0;border-radius: 50px;" @click="showPopupzrz(item)"> | ||||
@@ -173,6 +173,8 @@ export default { | |||||
permission:false, | permission:false, | ||||
bztp:"", | bztp:"", | ||||
ycbz:"", | ycbz:"", | ||||
jzwqkList:[], | |||||
fssslxList:[], | |||||
examineData:[{dictLabel:"审批通过",dictValue:"5"},{dictLabel:"审批驳回",dictValue:"4"}], | examineData:[{dictLabel:"审批通过",dictValue:"5"},{dictLabel:"审批驳回",dictValue:"4"}], | ||||
zjdzdxx:{surveyStatus:"5"}, | zjdzdxx:{surveyStatus:"5"}, | ||||
fssslist:[], | fssslist:[], | ||||
@@ -187,13 +189,19 @@ export default { | |||||
}; | }; | ||||
}, | }, | ||||
created(){ | created(){ | ||||
this.houseGetDicts("jzwqk").then((response) => { | |||||
this.jzwqkList = response.data; | |||||
}); | |||||
this.houseGetDicts("fsss_type").then((response) => { | |||||
this.fssslxList = response.data; | |||||
}); | |||||
this.zjdzdxx = JSON.parse(localStorage.getItem("zjdzdxxItem")); | this.zjdzdxx = JSON.parse(localStorage.getItem("zjdzdxxItem")); | ||||
this.permission = localStorage.getItem("executePermission"); | this.permission = localStorage.getItem("executePermission"); | ||||
let businessLevel = this.$store.state.user.businessLevel; | let businessLevel = this.$store.state.user.businessLevel; | ||||
console.info(this.zjdzdxx); | |||||
if(this.zjdzdxx.surveySign != null){ | if(this.zjdzdxx.surveySign != null){ | ||||
this.signature.resultImg = this.$store.getters.baseRoutingUrl+this.zjdzdxx.surveySign; | this.signature.resultImg = this.$store.getters.baseRoutingUrl+this.zjdzdxx.surveySign; | ||||
} | } | ||||
console.info(businessLevel); | |||||
if(this.zjdzdxx.id !== undefined){ | if(this.zjdzdxx.id !== undefined){ | ||||
getZjdzd(this.zjdzdxx.id).then((response) => { | getZjdzd(this.zjdzdxx.id).then((response) => { | ||||
if(response.data.surveyStatus !== "1" && businessLevel === "2"){ | if(response.data.surveyStatus !== "1" && businessLevel === "2"){ | ||||
@@ -293,12 +301,12 @@ export default { | |||||
zjddcSign(param, this.zjdzdxx.zjddm).then(response => { | zjddcSign(param, this.zjdzdxx.zjddm).then(response => { | ||||
this.$notify({type: 'success', message: '签字成功'}); | this.$notify({type: 'success', message: '签字成功'}); | ||||
this.showesign = false; | this.showesign = false; | ||||
// location.reload(); | |||||
getZjdzd(this.zjdzdxx.id).then((response) => { | getZjdzd(this.zjdzdxx.id).then((response) => { | ||||
localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data)) | localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data)) | ||||
location.reload(); | |||||
}); | }); | ||||
this.getList(); | |||||
}); | }); | ||||
}) | }) | ||||
@@ -307,6 +315,9 @@ export default { | |||||
this.$toast.fail('请签名后再保存签字'); | this.$toast.fail('请签名后再保存签字'); | ||||
}); | }); | ||||
}, | }, | ||||
formatDict(dict, value) { | |||||
return this.selectDictLabel(dict, value); | |||||
}, | |||||
dataURLtoBlob (dataurl, filename = 'file') { | dataURLtoBlob (dataurl, filename = 'file') { | ||||
let arr = dataurl.split(',') | let arr = dataurl.split(',') | ||||
let mime = arr[0].match(/:(.*?);/)[1] | let mime = arr[0].match(/:(.*?);/)[1] | ||||
@@ -566,57 +566,21 @@ | |||||
}, | }, | ||||
//删除户主 | //删除户主 | ||||
deletenh(item,index){ | deletenh(item,index){ | ||||
let yes = true | |||||
let params={ | |||||
nhdm : item.nhdm, | |||||
deptId: item.deptId | |||||
} | |||||
listNhhncy(params).then((res) => { | |||||
console.log(res.rows.length) | |||||
if(res.rows.length>0){ | |||||
yes = false | |||||
this.$toast({ | |||||
icon: 'error', // 找到自己需要的图标 | |||||
message: '无法删除,此户主存在户内成员!', | |||||
duration:"1000", | |||||
onClose:function(){ | |||||
Dialog.confirm({ | |||||
title: '警告', | |||||
message: '确认删除户内成员么?', | |||||
}) | |||||
.then(() => { | |||||
// on confirm | |||||
delNhhncy(item.id).then(res => { | |||||
if(res.code=="200"){ | |||||
this.hncylist.splice(index,1); | |||||
} | } | ||||
}) | }) | ||||
}else{ | |||||
listShyqr(params).then((res) => { | |||||
if(res.rows.length>0){ | |||||
yes = false | |||||
this.$toast({ | |||||
icon: 'error', // 找到自己需要的图标 | |||||
message: '无法删除,此户主已经成为使用权人!', | |||||
duration:"1000", | |||||
onClose:function(){ | |||||
} | |||||
}) | |||||
}else{ | |||||
if(yes){ | |||||
Dialog.confirm({ | |||||
title: '警告', | |||||
message: '确认删除此使用权人么?', | |||||
}) | |||||
.then(() => { | |||||
// on confirm | |||||
delNh(item.id).then(res => { | |||||
if(res.code=="200"){ | |||||
this.nhlist.splice(index,1); | |||||
this.totalH-- | |||||
this.totalR-- | |||||
} | |||||
}) | |||||
}) | |||||
.catch(() => { | |||||
// on cancel | |||||
}); | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
}); | |||||
}) | |||||
.catch(() => { | |||||
// on cancel | |||||
}); | |||||
}, | }, | ||||
// 设为户主 | // 设为户主 | ||||
@@ -84,7 +84,7 @@ | |||||
size="70%" | size="70%" | ||||
layer-color="#ebedf0" | layer-color="#ebedf0" | ||||
:color="chooseColor(item)" | :color="chooseColor(item)" | ||||
:text="item.zjdwcsl!=0?(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%':0+'%'" | |||||
:text="item.zjdwcsl!=0?(item.zjdwcsl == item.zjdsl?100+'%':(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%'):0+'%'" | |||||
/> | /> | ||||
</template> | </template> | ||||
<template #label> | <template #label> | ||||
@@ -111,7 +111,7 @@ | |||||
size="70%" | size="70%" | ||||
layer-color="#ebedf0" | layer-color="#ebedf0" | ||||
:color="chooseColor(item)" | :color="chooseColor(item)" | ||||
:text="item.zjdwcsl!=0?(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%':0+'%'" | |||||
:text="item.zjdwcsl!=0?(item.zjdwcsl == item.zjdsl?100+'%':(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%'):0+'%'" | |||||
/> | /> | ||||
</template> | </template> | ||||
<template #label> | <template #label> | ||||
@@ -137,7 +137,7 @@ | |||||
size="70%" | size="70%" | ||||
layer-color="#ebedf0" | layer-color="#ebedf0" | ||||
:color="chooseColor(item)" | :color="chooseColor(item)" | ||||
:text="item.zjdwcsl!=0?(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%':0+'%'" | |||||
:text="item.zjdwcsl!=0?(item.zjdwcsl == item.zjdsl?100+'%':(((item.zjdwcsl/item.zjdsl)*100).toFixed(2))+'%'):0+'%'" | |||||
/> | /> | ||||
</template> | </template> | ||||
<template #label> | <template #label> | ||||
@@ -436,10 +436,6 @@ | |||||
showUploadList(){ | showUploadList(){ | ||||
this.showImageList = true; | this.showImageList = true; | ||||
}, | }, | ||||
onCancel(){ | |||||
console.info(2321) | |||||
this.zjdvalue = ""; | |||||
}, | |||||
submitUploadList(){ | submitUploadList(){ | ||||
submitUploadImageList(this.uploadImgList1).then(res => { | submitUploadImageList(this.uploadImgList1).then(res => { | ||||
let _this = this | let _this = this | ||||
@@ -73,7 +73,7 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<template #right> | <template #right> | ||||
<van-button v-if="permission == 'true'" square text="删除" type="danger" class="delete-button" @click="deletesyqr(item.id,index)"/> | |||||
<van-button v-if="permission == 'true'" square text="删除" type="danger" class="delete-button" @click="deletehncy(item.id,index)"/> | |||||
</template> | </template> | ||||
</van-swipe-cell> | </van-swipe-cell> | ||||
<div v-if="permission == 'true'" style=" width:95%;margin:20px auto;display: flex;justify-content: space-between;"> | <div v-if="permission == 'true'" style=" width:95%;margin:20px auto;display: flex;justify-content: space-between;"> | ||||
@@ -147,6 +147,24 @@ export default { | |||||
showPopuphncy(val){ | showPopuphncy(val){ | ||||
this.$router.push({name:'nhcyAdd',query:val}); | this.$router.push({name:'nhcyAdd',query:val}); | ||||
}, | }, | ||||
// 删除户内成员 | |||||
deletehncy(id,index){ | |||||
Dialog.confirm({ | |||||
title: '警告', | |||||
message: '确认删除户内成员么?', | |||||
}) | |||||
.then(() => { | |||||
// on confirm | |||||
delNhhncy(id).then(res => { | |||||
if(res.code=="200"){ | |||||
this.hnnylist.splice(index,1); | |||||
} | |||||
}) | |||||
}) | |||||
.catch(() => { | |||||
// on cancel | |||||
}); | |||||
}, | |||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||
@@ -515,7 +515,7 @@ export default { | |||||
} | } | ||||
}, | }, | ||||
cancel(){ | cancel(){ | ||||
this.$router.push({path:'/homesteadSurvey/nmfwList',query: {zjddm: this.form.zjddm}}); | |||||
this.$router.push({path:'/homesteadSurvey/nmfwList',query: {nmfwzh:this.form.nmfwzh}}); | |||||
}, | }, | ||||
// 获取登录人位置坐标 | // 获取登录人位置坐标 | ||||
getLandCoord(func) { | getLandCoord(func) { | ||||
@@ -30,7 +30,7 @@ | |||||
</div> | </div> | ||||
<div class="flex_block"> | <div class="flex_block"> | ||||
<i class="icon icon_2"></i> | <i class="icon icon_2"></i> | ||||
<div class="text">填报数: {{item.params.numReport}}</div> | |||||
<div class="text">总填报数: {{item.params.numReport}}</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -71,7 +71,7 @@ | |||||
<div class="full-height" v-else-if="col.type === '4'"> | <div class="full-height" v-else-if="col.type === '4'"> | ||||
<input class="input-field align-center full-height" v-model="col.name" :readonly="disableEdit"></input> | <input class="input-field align-center full-height" v-model="col.name" :readonly="disableEdit"></input> | ||||
</div> | </div> | ||||
<div v-else :style="{'text-align': calcAlign(col.type)}">{{col.name}}</div> | |||||
<div v-else class="full-height flex-center" :style="{'justify-content': calcAlign(col.type)}">{{col.name}}</div> | |||||
<van-icon name="edit" v-if="cindex === editorData.headerTypes.length - 1 && canEdit(col)" class="edit-icon" color="#1989fa" size="24" @click="edit(col)"/> | <van-icon name="edit" v-if="cindex === editorData.headerTypes.length - 1 && canEdit(col)" class="edit-icon" color="#1989fa" size="24" @click="edit(col)"/> | ||||
</div> | </div> | ||||
@@ -170,6 +170,7 @@ export default { | |||||
this.loading = true; | this.loading = true; | ||||
summaryList({ | summaryList({ | ||||
templateId: this.editorData.templateId, | templateId: this.editorData.templateId, | ||||
deptId: Cookies.get('deptId'), | |||||
}).then((resp) => { | }).then((resp) => { | ||||
this.editorData = resp.data; | this.editorData = resp.data; | ||||
}).finally(() => { | }).finally(() => { | ||||
@@ -467,6 +468,11 @@ export default { | |||||
right: -0.6rem; | right: -0.6rem; | ||||
top: calc(50% - 0.3rem); | top: calc(50% - 0.3rem); | ||||
} | } | ||||
.flex-center { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
} | |||||
} | } | ||||
@@ -51,7 +51,8 @@ | |||||
<div class="main-table" v-if="!!editorData.templateId"> | <div class="main-table" v-if="!!editorData.templateId"> | ||||
<div v-for="(header, rindex) in editorData.detailHeaders"> | <div v-for="(header, rindex) in editorData.detailHeaders"> | ||||
<van-field v-if="header.type === '2'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].val" :label="header.headerName" :placeholder="header.headerName" input-align="right" type="number"/> | <van-field v-if="header.type === '2'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].val" :label="header.headerName" :placeholder="header.headerName" input-align="right" type="number"/> | ||||
<van-field v-else-if="header.type === '4' || header.type === '3'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | |||||
<van-field v-else-if="header.type === '4'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | |||||
<van-field v-else-if="header.type === '3'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" type="digit" input-align="right"/> | |||||
<van-field v-else label-width="50%" :readonly="true" :value="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | <van-field v-else label-width="50%" :readonly="true" :value="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -525,6 +526,11 @@ export default { | |||||
.form_readonly /deep/ .van-icon-arrow-down { | .form_readonly /deep/ .van-icon-arrow-down { | ||||
display: none; | display: none; | ||||
} | } | ||||
.main-table /deep/ .van-field { | |||||
height: unset; | |||||
min-height: 1rem; | |||||
} | |||||
} | } | ||||
@@ -65,9 +65,11 @@ export default { | |||||
loading: false, | loading: false, | ||||
finished: false, | finished: false, | ||||
idcard:null, | idcard:null, | ||||
farmerCode:null, | |||||
queryParams:{ | queryParams:{ | ||||
pageNum:1, | pageNum:1, | ||||
pageSize:10, | pageSize:10, | ||||
farmerCode:null, | |||||
deptId: Cookies.get('deptId'), | deptId: Cookies.get('deptId'), | ||||
orderByColumn:'createTime', | orderByColumn:'createTime', | ||||
isAsc:'desc', | isAsc:'desc', | ||||
@@ -88,8 +90,7 @@ export default { | |||||
this.houseGetDicts("tcfs").then((res) => { | this.houseGetDicts("tcfs").then((res) => { | ||||
this.tcfsStatus = res.data; | this.tcfsStatus = res.data; | ||||
}); | }); | ||||
this.idcard = Cookies.get('idcard'); | |||||
this.$set(this.queryParams, "sqrzjhm", this.idcard); | |||||
this.queryParams.farmerCode = Cookies.get('farmerCode'); | |||||
this.houseGetDicts("yctcsp_status").then((res) => { | this.houseGetDicts("yctcsp_status").then((res) => { | ||||
// this.auditStatus = res.data; | // this.auditStatus = res.data; | ||||
let _this = this; | let _this = this; | ||||
@@ -58,6 +58,7 @@ | |||||
<script> | <script> | ||||
import { getCodeImg, getSmsCode } from "@/api/login"; | import { getCodeImg, getSmsCode } from "@/api/login"; | ||||
import { checkFarmer } from "@/api/sunVillage_info/fixedAssets"; | import { checkFarmer } from "@/api/sunVillage_info/fixedAssets"; | ||||
import { getFamilyMemberList } from "@/api/sunVillage_info/homestead/familyMember"; | |||||
import Cookies from "js-cookie"; | import Cookies from "js-cookie"; | ||||
import { encrypt, decrypt } from "../../utils/jsencrypt"; | import { encrypt, decrypt } from "../../utils/jsencrypt"; | ||||
//引用wx sdk | //引用wx sdk | ||||
@@ -96,6 +97,7 @@ | |||||
idcard: idcard === undefined ? this.formData.idcard : idcard, | idcard: idcard === undefined ? this.formData.idcard : idcard, | ||||
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), | rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), | ||||
}; | }; | ||||
}, | }, | ||||
handleLogin(values) { | handleLogin(values) { | ||||
if (this.formData.rememberMe) { | if (this.formData.rememberMe) { | ||||
@@ -125,9 +127,13 @@ | |||||
let seconds = 3600; | let seconds = 3600; | ||||
let expires = new Date(new Date() * 1 + seconds * 1000); | let expires = new Date(new Date() * 1 + seconds * 1000); | ||||
getFamilyMemberList({idcard:this.formData.idcard,familyStatus:"02"}).then(res => { | |||||
const farmerCode = res.rows[0].farmerCode; | |||||
Cookies.set("farmerCode",farmerCode, { expires: 30 }); | |||||
Cookies.set("user", response.data, { expires: expires }); | |||||
this.$router.push({path:'/sunVillage_info/index_code_rights'}) | |||||
}) | |||||
Cookies.set("user", response.data, { expires: expires }); | |||||
this.$router.push({path:'/sunVillage_info/index_code_rights'}) | |||||
} | } | ||||
}); | }); | ||||
}, | }, | ||||
@@ -5,14 +5,14 @@ | |||||
<div class="return_btn" @click="onClickLeft"></div> | <div class="return_btn" @click="onClickLeft"></div> | ||||
<div class="add_btn" @click="send">保存</div> | <div class="add_btn" @click="send">保存</div> | ||||
</div> | </div> | ||||
<van-form @submit="onSubmit" ref="formData"> | |||||
<van-form @submit="onSubmit" ref="formData" error-message-align="right"> | |||||
<div class="list_main"> | <div class="list_main"> | ||||
<van-field required label="旧密码" :rules="[{ required: true , message:'请输入旧密码' }]" v-model="user.oldPassword" placeholder="请输入旧密码" input-align="right" :border="false" /> | |||||
<van-field required label="旧密码" :rules="[{ required: true , message:'' }]" v-model="user.oldPassword" placeholder="请输入旧密码" input-align="right" :border="false" /> | |||||
<van-field required label="新密码" :rules="[{ required: true , message:'请输入新密码'}]" v-model="user.newPassword" placeholder="请输入新密码" input-align="right" :border="false" /> | |||||
<van-field required label="新密码" :rules="rules.newPassword" v-model="user.newPassword" placeholder="请输入新密码" input-align="right" :border="false" /> | |||||
<van-field required label="确认密码" :rules="[{ required: true, message: '请确认密码' }]" prop="email" v-model="user.confirmPassword" placeholder="请确认密码" input-align="right" :border="false" /> | |||||
<van-field required label="确认密码" :rules="[{ required: true, message: '' }]" prop="email" v-model="user.confirmPassword" placeholder="请确认密码" input-align="right" :border="false" /> | |||||
</div> | </div> | ||||
@@ -27,11 +27,21 @@ | |||||
<script> | <script> | ||||
import { updateUserPwd } from "@/api/sunVillage_info/fixedAssets"; | import { updateUserPwd } from "@/api/sunVillage_info/fixedAssets"; | ||||
import {REGEXP} from "@/utils/global"; | |||||
import {Notify} from "vant"; | |||||
export default { | export default { | ||||
name: "certificateList", | name: "certificateList", | ||||
data() { | data() { | ||||
return { | return { | ||||
user:{}, | user:{}, | ||||
rules: { | |||||
newPassword: [ | |||||
{ required: true , message:''}, | |||||
{ validator: (val) => { return val.length >= 8; }, message: '密码长度至少8位', }, | |||||
{ validator: (val) => { return val.length <= 20; }, message: '密码长度不能超过20位', }, | |||||
{ pattern: REGEXP.PASSWORD, message: '密码必须包括字母、数字、特殊符号!', } | |||||
], | |||||
}, | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -46,6 +56,8 @@ | |||||
that.$notify({ type: 'warning', message: '两次输入的密码不一致!' }); | that.$notify({ type: 'warning', message: '两次输入的密码不一致!' }); | ||||
return; | return; | ||||
} | } | ||||
if(!this.validatePassword(this.user.newPassword)) | |||||
return; | |||||
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { | updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { | ||||
that.$notify({ type: 'success', message: '修改成功!' }); | that.$notify({ type: 'success', message: '修改成功!' }); | ||||
setTimeout(function(){ | setTimeout(function(){ | ||||
@@ -53,6 +65,15 @@ | |||||
},2000) | },2000) | ||||
}); | }); | ||||
}, | }, | ||||
validatePassword(what) { | |||||
if(!(REGEXP.PASSWORD.test(what))) | |||||
{ | |||||
Notify.clear(); | |||||
Notify({ type: 'danger', message: '密码至少8个字符,必须包括字母、数字、特殊符号!' }); | |||||
return false; | |||||
} | |||||
return true; | |||||
}, | |||||
}, | }, | ||||
} | } | ||||
</script> | </script> | ||||
@@ -176,7 +197,7 @@ | |||||
left: 0PX; | left: 0PX; | ||||
} | } | ||||
/deep/ .van-field__error-message{ | /deep/ .van-field__error-message{ | ||||
display: none; | |||||
/*display: none;*/ | |||||
} | } | ||||
} | } | ||||
</style> | </style> |
@@ -6,7 +6,7 @@ | |||||
@click-left="$router.back(-1)" | @click-left="$router.back(-1)" | ||||
/> | /> | ||||
<van-cell-group style="width: 96%;margin:2%;border-radius: 6px;overflow: hidden;padding-top: 10px;padding-bottom: 10px;box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);"> | <van-cell-group style="width: 96%;margin:2%;border-radius: 6px;overflow: hidden;padding-top: 10px;padding-bottom: 10px;box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);"> | ||||
<van-field type="password" v-model="user.oldPassword" placeholder="" > | |||||
<van-field type="password" v-model="user.oldPassword" placeholder="" @input="clearError" > | |||||
<template #left-icon> | <template #left-icon> | ||||
<van-image | <van-image | ||||
height="20" | height="20" | ||||
@@ -17,7 +17,7 @@ | |||||
<H4 style="margin-left: 5px">原密码</H4> | <H4 style="margin-left: 5px">原密码</H4> | ||||
</template> | </template> | ||||
</van-field> | </van-field> | ||||
<van-field type="password" v-model="user.newPassword" placeholder="" > | |||||
<van-field type="password" :error-message="validate.newPassword" v-model="user.newPassword" placeholder="" @input="clearError" @blur="validate_newPassword"> | |||||
<template #left-icon> | <template #left-icon> | ||||
<van-image | <van-image | ||||
height="20" | height="20" | ||||
@@ -28,7 +28,7 @@ | |||||
<H4 style="margin-left: 5px">新密码</H4> | <H4 style="margin-left: 5px">新密码</H4> | ||||
</template> | </template> | ||||
</van-field> | </van-field> | ||||
<van-field type="password" v-model="user.confirmPassword" placeholder="" > | |||||
<van-field type="password" v-model="user.confirmPassword" placeholder="" @input="clearError"> | |||||
<template #left-icon> | <template #left-icon> | ||||
<van-image | <van-image | ||||
height="20" | height="20" | ||||
@@ -49,6 +49,8 @@ | |||||
<script> | <script> | ||||
import onlineHomeIndex from "../onlineHomeIndex"; | import onlineHomeIndex from "../onlineHomeIndex"; | ||||
import {updateUserPwd} from "../../api/onlineHome/my"; | import {updateUserPwd} from "../../api/onlineHome/my"; | ||||
import {REGEXP} from "@/utils/global"; | |||||
import {Notify} from "vant"; | |||||
export default { | export default { | ||||
components: { | components: { | ||||
@@ -62,10 +64,15 @@ | |||||
newPassword: undefined, | newPassword: undefined, | ||||
confirmPassword: undefined | confirmPassword: undefined | ||||
}, | }, | ||||
validate: { | |||||
newPassword: '', | |||||
}, | |||||
}; | }; | ||||
}, | }, | ||||
methods: { | methods: { | ||||
submit() { | submit() { | ||||
if(!this.validate_newPassword()) | |||||
return; | |||||
console.log(this.user) | console.log(this.user) | ||||
if(this.user.confirmPassword | if(this.user.confirmPassword | ||||
!=this.user.newPassword){ | !=this.user.newPassword){ | ||||
@@ -73,14 +80,19 @@ | |||||
icon: 'error', // 找到自己需要的图标 | icon: 'error', // 找到自己需要的图标 | ||||
message: '两次密码不同,请重新输入', | message: '两次密码不同,请重新输入', | ||||
duration:"1000", | duration:"1000", | ||||
onClose:function(){ | |||||
this.user.oldPassword="" | |||||
this.user.newPassword="" | |||||
this.user.confirmPassword="" | |||||
onClose:() => { | |||||
if(0) | |||||
{ | |||||
this.user.oldPassword="" | |||||
this.user.newPassword="" | |||||
this.user.confirmPassword="" | |||||
} | |||||
return false; | return false; | ||||
} | } | ||||
}) | }) | ||||
}else{ | }else{ | ||||
if(!this.validatePassword(this.user.newPassword)) | |||||
return; | |||||
updateUserPwd(this.user.oldPassword, this.user.newPassword).then( | updateUserPwd(this.user.oldPassword, this.user.newPassword).then( | ||||
response => { | response => { | ||||
let _this =this | let _this =this | ||||
@@ -95,7 +107,43 @@ | |||||
} | } | ||||
); | ); | ||||
} | } | ||||
}, | |||||
validatePassword(what) { | |||||
if(!(REGEXP.PASSWORD.test(what))) | |||||
{ | |||||
Notify.clear(); | |||||
Notify({ type: 'danger', message: '密码至少8个字符,必须包括字母、数字、特殊符号!' }); | |||||
return false; | |||||
} | |||||
return true; | |||||
}, | |||||
validate_newPassword() { | |||||
let password = this.user.newPassword; | |||||
if(!password) | |||||
{ | |||||
this.validate.newPassword = ''; | |||||
return false; | |||||
} | |||||
if(password.length < 8) | |||||
{ | |||||
this.validate.newPassword = '密码长度至少8位'; | |||||
return false; | |||||
} | |||||
if(password.length > 20) | |||||
{ | |||||
this.validate.newPassword = '密码长度不能超过20位'; | |||||
return false; | |||||
} | |||||
if(!(REGEXP.PASSWORD.test(password))) | |||||
{ | |||||
this.validate.newPassword = '密码必须包括字母、数字、特殊符号!'; | |||||
return false; | |||||
} | |||||
this.validate.newPassword = ''; | |||||
return true; | |||||
}, | |||||
clearError() { | |||||
this.validate.newPassword = ''; | |||||
}, | }, | ||||
} | } | ||||
} | } | ||||