| @@ -9,3 +9,7 @@ export default | |||
| export const REGION = { | |||
| YI_LONG_XIAN: '仪陇', | |||
| } | |||
| export const REGEXP = { | |||
| PASSWORD: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/, | |||
| }; | |||
| @@ -63,7 +63,7 @@ | |||
| <div style="padding:15px;"> | |||
| <p style="display: flex;align-items: center;"> | |||
| <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> | |||
| <div style="display:flex;line-height:20px;margin-top: 15px;font-size: 14px;color: #999999;"> | |||
| <p style="flex:1;text-align:left;">建筑面积(㎡):</p> | |||
| @@ -71,7 +71,7 @@ | |||
| </div> | |||
| <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:right;">{{item.jzwqk}}</p> | |||
| <p style="flex:1;text-align:right;">{{ formatDict(jzwqkList, item.jzwqk) }} </p> | |||
| </div> | |||
| <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)"> | |||
| @@ -173,6 +173,8 @@ export default { | |||
| permission:false, | |||
| bztp:"", | |||
| ycbz:"", | |||
| jzwqkList:[], | |||
| fssslxList:[], | |||
| examineData:[{dictLabel:"审批通过",dictValue:"5"},{dictLabel:"审批驳回",dictValue:"4"}], | |||
| zjdzdxx:{surveyStatus:"5"}, | |||
| fssslist:[], | |||
| @@ -187,13 +189,19 @@ export default { | |||
| }; | |||
| }, | |||
| 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.permission = localStorage.getItem("executePermission"); | |||
| let businessLevel = this.$store.state.user.businessLevel; | |||
| console.info(this.zjdzdxx); | |||
| if(this.zjdzdxx.surveySign != null){ | |||
| this.signature.resultImg = this.$store.getters.baseRoutingUrl+this.zjdzdxx.surveySign; | |||
| } | |||
| console.info(businessLevel); | |||
| if(this.zjdzdxx.id !== undefined){ | |||
| getZjdzd(this.zjdzdxx.id).then((response) => { | |||
| if(response.data.surveyStatus !== "1" && businessLevel === "2"){ | |||
| @@ -293,12 +301,12 @@ export default { | |||
| zjddcSign(param, this.zjdzdxx.zjddm).then(response => { | |||
| this.$notify({type: 'success', message: '签字成功'}); | |||
| this.showesign = false; | |||
| // location.reload(); | |||
| getZjdzd(this.zjdzdxx.id).then((response) => { | |||
| localStorage.setItem("zjdzdxxItem",JSON.stringify(response.data)) | |||
| location.reload(); | |||
| }); | |||
| this.getList(); | |||
| }); | |||
| }) | |||
| @@ -307,6 +315,9 @@ export default { | |||
| this.$toast.fail('请签名后再保存签字'); | |||
| }); | |||
| }, | |||
| formatDict(dict, value) { | |||
| return this.selectDictLabel(dict, value); | |||
| }, | |||
| dataURLtoBlob (dataurl, filename = 'file') { | |||
| let arr = dataurl.split(',') | |||
| let mime = arr[0].match(/:(.*?);/)[1] | |||
| @@ -566,57 +566,21 @@ | |||
| }, | |||
| //删除户主 | |||
| 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%" | |||
| layer-color="#ebedf0" | |||
| :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 #label> | |||
| @@ -111,7 +111,7 @@ | |||
| size="70%" | |||
| layer-color="#ebedf0" | |||
| :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 #label> | |||
| @@ -137,7 +137,7 @@ | |||
| size="70%" | |||
| layer-color="#ebedf0" | |||
| :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 #label> | |||
| @@ -436,10 +436,6 @@ | |||
| showUploadList(){ | |||
| this.showImageList = true; | |||
| }, | |||
| onCancel(){ | |||
| console.info(2321) | |||
| this.zjdvalue = ""; | |||
| }, | |||
| submitUploadList(){ | |||
| submitUploadImageList(this.uploadImgList1).then(res => { | |||
| let _this = this | |||
| @@ -73,7 +73,7 @@ | |||
| </div> | |||
| </div> | |||
| <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> | |||
| </van-swipe-cell> | |||
| <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){ | |||
| 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> | |||
| @@ -515,7 +515,7 @@ export default { | |||
| } | |||
| }, | |||
| 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) { | |||
| @@ -30,7 +30,7 @@ | |||
| </div> | |||
| <div class="flex_block"> | |||
| <i class="icon icon_2"></i> | |||
| <div class="text">填报数: {{item.params.numReport}}</div> | |||
| <div class="text">总填报数: {{item.params.numReport}}</div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -71,7 +71,7 @@ | |||
| <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> | |||
| </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)"/> | |||
| </div> | |||
| @@ -170,6 +170,7 @@ export default { | |||
| this.loading = true; | |||
| summaryList({ | |||
| templateId: this.editorData.templateId, | |||
| deptId: Cookies.get('deptId'), | |||
| }).then((resp) => { | |||
| this.editorData = resp.data; | |||
| }).finally(() => { | |||
| @@ -467,6 +468,11 @@ export default { | |||
| right: -0.6rem; | |||
| 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 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-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"/> | |||
| </div> | |||
| </div> | |||
| @@ -525,6 +526,11 @@ export default { | |||
| .form_readonly /deep/ .van-icon-arrow-down { | |||
| display: none; | |||
| } | |||
| .main-table /deep/ .van-field { | |||
| height: unset; | |||
| min-height: 1rem; | |||
| } | |||
| } | |||
| @@ -65,9 +65,11 @@ export default { | |||
| loading: false, | |||
| finished: false, | |||
| idcard:null, | |||
| farmerCode:null, | |||
| queryParams:{ | |||
| pageNum:1, | |||
| pageSize:10, | |||
| farmerCode:null, | |||
| deptId: Cookies.get('deptId'), | |||
| orderByColumn:'createTime', | |||
| isAsc:'desc', | |||
| @@ -88,8 +90,7 @@ export default { | |||
| this.houseGetDicts("tcfs").then((res) => { | |||
| 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.auditStatus = res.data; | |||
| let _this = this; | |||
| @@ -58,6 +58,7 @@ | |||
| <script> | |||
| import { getCodeImg, getSmsCode } from "@/api/login"; | |||
| import { checkFarmer } from "@/api/sunVillage_info/fixedAssets"; | |||
| import { getFamilyMemberList } from "@/api/sunVillage_info/homestead/familyMember"; | |||
| import Cookies from "js-cookie"; | |||
| import { encrypt, decrypt } from "../../utils/jsencrypt"; | |||
| //引用wx sdk | |||
| @@ -96,6 +97,7 @@ | |||
| idcard: idcard === undefined ? this.formData.idcard : idcard, | |||
| rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), | |||
| }; | |||
| }, | |||
| handleLogin(values) { | |||
| if (this.formData.rememberMe) { | |||
| @@ -125,9 +127,13 @@ | |||
| let seconds = 3600; | |||
| 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="add_btn" @click="send">保存</div> | |||
| </div> | |||
| <van-form @submit="onSubmit" ref="formData"> | |||
| <van-form @submit="onSubmit" ref="formData" error-message-align="right"> | |||
| <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> | |||
| @@ -27,11 +27,21 @@ | |||
| <script> | |||
| import { updateUserPwd } from "@/api/sunVillage_info/fixedAssets"; | |||
| import {REGEXP} from "@/utils/global"; | |||
| import {Notify} from "vant"; | |||
| export default { | |||
| name: "certificateList", | |||
| data() { | |||
| return { | |||
| 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() { | |||
| @@ -46,6 +56,8 @@ | |||
| that.$notify({ type: 'warning', message: '两次输入的密码不一致!' }); | |||
| return; | |||
| } | |||
| if(!this.validatePassword(this.user.newPassword)) | |||
| return; | |||
| updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { | |||
| that.$notify({ type: 'success', message: '修改成功!' }); | |||
| setTimeout(function(){ | |||
| @@ -53,6 +65,15 @@ | |||
| },2000) | |||
| }); | |||
| }, | |||
| validatePassword(what) { | |||
| if(!(REGEXP.PASSWORD.test(what))) | |||
| { | |||
| Notify.clear(); | |||
| Notify({ type: 'danger', message: '密码至少8个字符,必须包括字母、数字、特殊符号!' }); | |||
| return false; | |||
| } | |||
| return true; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -176,7 +197,7 @@ | |||
| left: 0PX; | |||
| } | |||
| /deep/ .van-field__error-message{ | |||
| display: none; | |||
| /*display: none;*/ | |||
| } | |||
| } | |||
| </style> | |||
| @@ -6,7 +6,7 @@ | |||
| @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-field type="password" v-model="user.oldPassword" placeholder="" > | |||
| <van-field type="password" v-model="user.oldPassword" placeholder="" @input="clearError" > | |||
| <template #left-icon> | |||
| <van-image | |||
| height="20" | |||
| @@ -17,7 +17,7 @@ | |||
| <H4 style="margin-left: 5px">原密码</H4> | |||
| </template> | |||
| </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> | |||
| <van-image | |||
| height="20" | |||
| @@ -28,7 +28,7 @@ | |||
| <H4 style="margin-left: 5px">新密码</H4> | |||
| </template> | |||
| </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> | |||
| <van-image | |||
| height="20" | |||
| @@ -49,6 +49,8 @@ | |||
| <script> | |||
| import onlineHomeIndex from "../onlineHomeIndex"; | |||
| import {updateUserPwd} from "../../api/onlineHome/my"; | |||
| import {REGEXP} from "@/utils/global"; | |||
| import {Notify} from "vant"; | |||
| export default { | |||
| components: { | |||
| @@ -62,10 +64,15 @@ | |||
| newPassword: undefined, | |||
| confirmPassword: undefined | |||
| }, | |||
| validate: { | |||
| newPassword: '', | |||
| }, | |||
| }; | |||
| }, | |||
| methods: { | |||
| submit() { | |||
| if(!this.validate_newPassword()) | |||
| return; | |||
| console.log(this.user) | |||
| if(this.user.confirmPassword | |||
| !=this.user.newPassword){ | |||
| @@ -73,14 +80,19 @@ | |||
| icon: 'error', // 找到自己需要的图标 | |||
| message: '两次密码不同,请重新输入', | |||
| 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; | |||
| } | |||
| }) | |||
| }else{ | |||
| if(!this.validatePassword(this.user.newPassword)) | |||
| return; | |||
| updateUserPwd(this.user.oldPassword, this.user.newPassword).then( | |||
| response => { | |||
| 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 = ''; | |||
| }, | |||
| } | |||
| } | |||