[提示语]去掉form校验提示语的!; bug修改

This commit is contained in:
zhaoxiao
2021-10-22 17:52:02 +08:00
parent 7f62d9c7f4
commit 79933ec6b4
12 changed files with 106 additions and 65 deletions
+4 -4
View File
@@ -70,12 +70,12 @@ export default {
validatorRules: { validatorRules: {
oldpassword: { oldpassword: {
rules: [{ rules: [{
required: true, message: '请输入旧密码!' required: true, message: '请输入旧密码'
}] }]
}, },
password: { password: {
rules: [ rules: [
{ required: true, message: '请输入新密码!' }, { required: true, message: '请输入新密码' },
{ {
//原正则,3种组合时不会提示 /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/ //原正则,3种组合时不会提示 /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
@@ -186,14 +186,14 @@ export default {
callback(new Error('两次密码不一致')) callback(new Error('两次密码不一致'))
} }
if (value && !passwordReg(value)) { if (value && !passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成') callback('密码由8位及以上数字、大小写字母和特殊符号组成')
} }
callback() callback()
}, },
compareToFirstPassword(rule, value, callback) { compareToFirstPassword(rule, value, callback) {
const form = this.form const form = this.form
if (value && value !== form.getFieldValue('password')) { if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!') callback('两次密码不一')
} else { } else {
callback() callback()
} }
@@ -189,9 +189,9 @@ export default {
methods: { methods: {
add(limit) { add(limit) {
// true 是调用无权限接口 // true 是调用无权限接口
if(limit){ if (limit) {
this.url.add = '/company/payCompanyManagement/addMeeting' this.url.add = '/company/payCompanyManagement/addMeeting'
}else { } else {
this.url.add = '/company/payCompanyManagement/add' this.url.add = '/company/payCompanyManagement/add'
} }
this.edit({}) this.edit({})
@@ -312,7 +312,7 @@ export default {
callback('请输入15位、18位的信用代码') callback('请输入15位、18位的信用代码')
return return
} }
if (!this.model.id) { if (this.model.dutyCode !== value) {
const params = { const params = {
confusionCode: 'pay_company_duty_code', confusionCode: 'pay_company_duty_code',
fieldVal: value fieldVal: value
@@ -325,8 +325,9 @@ export default {
} }
}) })
return return
} else {
callback()
} }
callback()
} else { } else {
callback('请输入信用代码') callback('请输入信用代码')
} }
@@ -75,7 +75,7 @@
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="税率" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="税率" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row> <a-row :gutter="10">
<a-col :span="20"> <a-col :span="20">
<a-input placeholder="请输入税率" <a-input placeholder="请输入税率"
v-decorator="['rate',validatorRules.rate]" v-decorator="['rate',validatorRules.rate]"
@@ -104,7 +104,7 @@
<div class="part-title"> <div class="part-title">
<div class="part-title-text">日期节点</div> <div class="part-title-text">日期节点</div>
</div> </div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同签订日期" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同签订日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同签订日期" <j-date placeholder="请选择合同签订日期"
@@ -123,12 +123,15 @@
date-format="YYYY-MM-DD"/> date-format="YYYY-MM-DD"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> </a-row>
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row>
<a-input placeholder="请输入合同约定主要时点" <a-col :xxl="12" :xl="16" :sm="24">
v-decorator="['contractTimePoints',validatorRules.contractTimePoints]" <a-form-item label="合同约定主要时点" :labelCol="longLabelCol" :wrapperCol="longWrapperCol">
:maxLength='50' <!-- 20211022需求变更将input改为textarea-->
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input> <a-textarea placeholder="请输入合同约定主要时点"
v-decorator="['contractTimePoints',validatorRules.contractTimePoints]"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-textarea>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -141,7 +144,7 @@
<div class="part-title-text">账款信息</div> <div class="part-title-text">账款信息</div>
</div> </div>
<div> <div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入应收金额" <a-input placeholder="请输入应收金额"
@@ -189,7 +192,7 @@
<div class="part-title-text">其他信息</div> <div class="part-title-text">其他信息</div>
</div> </div>
<div> <div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定付款次数" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同约定付款次数" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同约定付款次数" <a-input placeholder="请输入合同约定付款次数"
@@ -278,6 +281,14 @@ export default {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 14 } sm: { span: 14 }
}, },
longLabelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
longWrapperCol: {
xs: { span: 24 },
sm: { span: 19 }
},
validatorRules: { validatorRules: {
contractNum: { contractNum: {
rules: [{ required: true, validator: this.checkContractNum }], rules: [{ required: true, validator: this.checkContractNum }],
@@ -108,7 +108,7 @@
<div class="part-title"> <div class="part-title">
<div class="part-title-text">日期节点</div> <div class="part-title-text">日期节点</div>
</div> </div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同签订日期" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同签订日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择合同签订日期" <j-date placeholder="请选择合同签订日期"
@@ -127,12 +127,15 @@
date-format="YYYY-MM-DD"/> date-format="YYYY-MM-DD"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xxl="6" :xl="8" :sm="12"> </a-row>
<a-form-item label="合同约定主要时点" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row>
<a-input placeholder="请输入合同约定主要时点" <a-col :xxl="12" :xl="16" :sm="24">
v-decorator="['contractTimePoints']" <a-form-item label="合同约定主要时点" :labelCol="longLabelCol" :wrapperCol="longWrapperCol">
:maxLength='50' <!-- 20211022需求变更将input改为textarea-->
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input> <a-textarea placeholder="请输入合同约定主要时点"
v-decorator="['contractTimePoints']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-textarea>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -145,7 +148,7 @@
<div class="part-title-text">账款信息</div> <div class="part-title-text">账款信息</div>
</div> </div>
<div> <div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入应收金额" <a-input placeholder="请输入应收金额"
@@ -193,7 +196,7 @@
<div class="part-title-text">其他信息</div> <div class="part-title-text">其他信息</div>
</div> </div>
<div> <div>
<a-row :gutter="30"> <a-row>
<a-col :xxl="6" :xl="8" :sm="12"> <a-col :xxl="6" :xl="8" :sm="12">
<a-form-item label="合同约定付款次数" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合同约定付款次数" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同约定付款次数" <a-input placeholder="请输入合同约定付款次数"
@@ -258,7 +261,8 @@
<a-card :bordered="false" v-else class="associated-project" style="height: 200px"></a-card> <a-card :bordered="false" v-else class="associated-project" style="height: 200px"></a-card>
<!-- 项目类型选择--> <!-- 项目类型选择-->
<project-type-selection ref="projectTypeSelection" :is-pack="isPackage" @ok="selectProjectTypeOk"></project-type-selection> <project-type-selection ref="projectTypeSelection" :is-pack="isPackage"
@ok="selectProjectTypeOk"></project-type-selection>
<!-- 普通项目选择--> <!-- 普通项目选择-->
<select-project-module ref="selectProjectModule" <select-project-module ref="selectProjectModule"
@ok="selectProjectOk" @ok="selectProjectOk"
@@ -345,6 +349,14 @@ export default {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 14 } sm: { span: 14 }
}, },
longLabelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
longWrapperCol: {
xs: { span: 24 },
sm: { span: 19 }
},
validatorRules: { validatorRules: {
contractNum: { contractNum: {
rules: [{ required: true, validator: this.checkContractNum }], rules: [{ required: true, validator: this.checkContractNum }],
@@ -189,7 +189,7 @@ export default {
align: 'center', align: 'center',
width: 280, width: 280,
dataIndex: 'chargeProject', dataIndex: 'chargeProject',
scopedSlots: { customRender: 'projectName' } scopedSlots: { customRender: 'text' }
}, { }, {
title: '来款用途', title: '来款用途',
align: 'center', align: 'center',
@@ -135,11 +135,12 @@ export default {
title: '工作组项目', title: '工作组项目',
align: 'center', align: 'center',
dataIndex: 'workingGroupProject', dataIndex: 'workingGroupProject',
scopedSlots: { customRender: 'projectName' } scopedSlots: { customRender: 'text' }
}, { }, {
title: '负责人A', title: '负责人A',
align: 'center', align: 'center',
dataIndex: 'principalNameA' dataIndex: 'principalNameA',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '进度', title: '进度',
align: 'center', align: 'center',
@@ -1,37 +1,37 @@
export default { export default {
meetingType: { meetingType: {
rules: [ rules: [
{ required: true, message: '请选择会议类型!' }, { required: true, message: '请选择会议类型' },
], ],
validateTrigger:['blur','change'] validateTrigger:['blur','change']
}, },
convokeTime: { convokeTime: {
rules: [ rules: [
{ required: true, message: '请选择召开时间!' }, { required: true, message: '请选择召开时间' },
], ],
validateTrigger:['change'] validateTrigger:['change']
}, },
meetingContent:{ meetingContent:{
rules: [ rules: [
{ required: true, message: '请输入会议内容!' }, { required: true, message: '请输入会议内容' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
}, },
registerDeadline:{ registerDeadline:{
rules: [ rules: [
{ required: true, message: '请选择报名截止时间!' }, { required: true, message: '请选择报名截止时间' },
], ],
validateTrigger:['blur','change'] validateTrigger:['blur','change']
}, },
convokeLocale: { convokeLocale: {
rules: [ rules: [
{ required: true, message: '请选择省市!' }, { required: true, message: '请选择省市' },
], ],
validateTrigger:['change'] validateTrigger:['change']
}, },
address:{ address:{
rules: [ rules: [
{ required: true, message: '请输入详细地址!' }, { required: true, message: '请输入详细地址' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
}, },
@@ -49,43 +49,43 @@ export default {
}, },
tbMeetingType:{ tbMeetingType:{
rules: [ rules: [
{ required: true, message: '请选择标协会议类型' }, { required: true, message: '请选择标协会议类型' },
], ],
validateTrigger:['blur','change'] validateTrigger:['blur','change']
}, },
signInTime:{ signInTime:{
rules: [ rules: [
{ required: true, message: '请选择注册签到时间' }, { required: true, message: '请选择注册签到时间' },
], ],
validateTrigger:['change'] validateTrigger:['change']
}, },
meetingCostsVip:{ meetingCostsVip:{
rules: [ rules: [
{ required: true, message: '请输入会议费用' }, { required: true, message: '请输入会议费用' },
], ],
validateTrigger:['blur','change'] validateTrigger:['blur','change']
}, },
hotelName:{ hotelName:{
rules: [ rules: [
{ required: true, message: '请输入酒店名称' }, { required: true, message: '请输入酒店名称' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
}, },
hotelAddress:{ hotelAddress:{
rules: [ rules: [
{ required: true, message: '请输入酒店地址' }, { required: true, message: '请输入酒店地址' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
}, },
contactPerson:{ contactPerson:{
rules: [ rules: [
{ required: true, message: '请输入酒店联系人' }, { required: true, message: '请输入酒店联系人' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
}, },
telephoneNumber:{ telephoneNumber:{
rules: [ rules: [
{ required: true, message: '请输入联系人手机号' }, { required: true, message: '请输入联系人手机号' },
], ],
validateTrigger:['blur'] validateTrigger:['blur']
} }
@@ -41,7 +41,8 @@
<a-row> <a-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="成员单位" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="成员单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入成员单位" v-model="queryParam.chargeCompanyTemporaryName" :maxLength='50'></a-input> <a-input placeholder="请输入成员单位" v-model="queryParam.chargeCompanyTemporaryName"
:maxLength='50'></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -69,9 +70,12 @@
<!-- 操作按钮区域--> <!-- 操作按钮区域-->
<div class="table-operator"> <div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd" v-has="'workingGroupMember:add'" v-if="canOperate">添加成员</a-button> <a-button type="primary" icon="plus" @click="handleAdd" v-has="'workingGroupMember:add'" v-if="canOperate">
添加成员
</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :data="importParam" <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :data="importParam"
:action="importExcelUrl" @change="handleImportExcel" v-has="'workingGroupMember:import'" v-if="canOperate"> :action="importExcelUrl" @change="handleImportExcel" v-has="'workingGroupMember:import'"
v-if="canOperate">
<a-button type="primary" icon="import">导入</a-button> <a-button type="primary" icon="import">导入</a-button>
</a-upload> </a-upload>
<a-button type="primary" icon="export" @click="handleExportXls('工作组成员')" v-has="'workingGroupMember:export'"> <a-button type="primary" icon="export" @click="handleExportXls('工作组成员')" v-has="'workingGroupMember:export'">
@@ -80,9 +84,14 @@
<a-button type="primary" icon="download" @click="downTemplate('工作组成员导入模板')" <a-button type="primary" icon="download" @click="downTemplate('工作组成员导入模板')"
v-has="'workingGroupMember:downTemplate'" v-if="canOperate">下载模板 v-has="'workingGroupMember:downTemplate'" v-if="canOperate">下载模板
</a-button> </a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'workingGroupMember:batchDel'" v-if="canOperate">批量删除</a-button> <a-button type="danger" icon="delete" @click="batchDel" v-has="'workingGroupMember:batchDel'" v-if="canOperate">
<a-button type="primary" @click="setChargeNotic" v-has="'workingGroupMember:setChargeNotic'" v-if="canOperate">设置收费通知</a-button> 批量删除
<a-button type="primary" @click="setDunningReminder" v-has="'workingGroupMember:setDunningReminder'" v-if="canOperate">催款提醒 </a-button>
<a-button type="primary" @click="setChargeNotic" v-has="'workingGroupMember:setChargeNotic'" v-if="canOperate">
设置收费通知
</a-button>
<a-button type="primary" @click="setDunningReminder" v-has="'workingGroupMember:setDunningReminder'"
v-if="canOperate">催款提醒
</a-button> </a-button>
</div> </div>
<!-- /操作按钮区域-end--> <!-- /操作按钮区域-end-->
@@ -261,6 +270,13 @@ export default {
width: 280, width: 280,
dataIndex: 'contactsTemporaryNameOne', dataIndex: 'contactsTemporaryNameOne',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, {
// 2021-10-22需求变更新加
title: '收费通知号',
align: 'center',
width: 280,
dataIndex: 'chargeNoticeNo',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '应收金额', title: '应收金额',
align: 'center', align: 'center',
@@ -322,7 +338,7 @@ export default {
// lastQueryParam: { // lastQueryParam: {
// paymentDate: new Date().getFullYear().toString() // paymentDate: new Date().getFullYear().toString()
// }, // },
canOperate: true, // 是否可操作(负责人B不可操作) canOperate: true // 是否可操作(负责人B不可操作)
} }
}, },
created() { created() {
@@ -469,7 +485,7 @@ export default {
// let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}` // let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
window.open(url) window.open(url)
} }
}, }
// 2021 10 11 沟通后去掉了这个功能 // 2021 10 11 沟通后去掉了这个功能
// searchReset() { // searchReset() {
// this.lastQueryParam = { // this.lastQueryParam = {
@@ -69,7 +69,7 @@
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="本年应收款A" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="本年应收款A" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row> <a-row :gutter="10">
<a-col :span="20"> <a-col :span="20">
<a-input placeholder="请输入本年应收款A" <a-input placeholder="请输入本年应收款A"
v-decorator="['yearChargeA',validatorRules.checkMoney]" v-decorator="['yearChargeA',validatorRules.checkMoney]"
@@ -105,7 +105,7 @@
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="本年应收款B" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="本年应收款B" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row> <a-row :gutter="10">
<a-col :span="20"> <a-col :span="20">
<a-input placeholder="请输入本年应收款B" <a-input placeholder="请输入本年应收款B"
v-decorator="['yearChargeB',validatorRules.checkMoney]" v-decorator="['yearChargeB',validatorRules.checkMoney]"
+1 -1
View File
@@ -166,7 +166,7 @@
if(value){ if(value){
let reg=new RegExp("[`_~!@#$^&*()=|{}'.<>《》/?!¥()—【】‘;:”“。,、?]") let reg=new RegExp("[`_~!@#$^&*()=|{}'.<>《》/?!¥()—【】‘;:”“。,、?]")
if(reg.test(value)){ if(reg.test(value)){
callback('数据值不能包含特殊字符') callback('数据值不能包含特殊字符')
}else{ }else{
//update--begin--autor:lvdandan-----date:20201203------forJT-27【数据字典】字典 - 数据值可重复 //update--begin--autor:lvdandan-----date:20201203------forJT-27【数据字典】字典 - 数据值可重复
getAction('/sys/dictItem/dictItemCheck',param).then((res)=>{ getAction('/sys/dictItem/dictItemCheck',param).then((res)=>{
+3 -3
View File
@@ -597,7 +597,7 @@ export default {
callback() callback()
} }
if (!passwordReg(value)) { if (!passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成') callback('密码由8位及以上数字、大小写字母和特殊符号组成')
} }
if (value && this.confirmDirty) { if (value && this.confirmDirty) {
form.validateFields(['confirm'], {force: true}) form.validateFields(['confirm'], {force: true})
@@ -607,10 +607,10 @@ export default {
compareToFirstPassword(rule, value, callback) { compareToFirstPassword(rule, value, callback) {
const form = this.form const form = this.form
if (value && value !== form.getFieldValue('password')) { if (value && value !== form.getFieldValue('password')) {
callback('两次输入的密码不一样!') callback('两次密码不一')
} }
if (value && !passwordReg(value)) { if (value && !passwordReg(value)) {
callback('密码由8位及以上数字、大小写字母和特殊符号组成') callback('密码由8位及以上数字、大小写字母和特殊符号组成')
} }
callback() callback()
}, },
+7 -7
View File
@@ -129,35 +129,35 @@ export default {
validatorRules: { validatorRules: {
username: { username: {
rules: [ rules: [
{ required: true, message: '请输入账号!' }], { required: true, message: '请输入账号' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
phone: { phone: {
rules: [ rules: [
{ required: true, message: '请输入手机号!' }, { required: true, message: '请输入手机号' },
{ validator: this.validatePhone } { validator: this.validatePhone }
], ],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
verifyCode: { verifyCode: {
rules: [{ required: true, message: '请输入验证码!' }], rules: [{ required: true, message: '请输入验证码' }],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
password: { password: {
rules: [ rules: [
{ required: true, message: '请输入新密码!' }, { required: true, message: '请输入新密码' },
{ {
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
message: '密码由8位及以上数字、大小写字母和特殊符号组成' message: '密码由8位及以上数字、大小写字母和特殊符号组成'
} }
], ],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
confirmPassword: { confirmPassword: {
rules: [ rules: [
{ required: true, message: '请输入确认密码!' }, { required: true, message: '请输入确认密码' },
{ pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
message: '密码由8位及以上数字、大小写字母和特殊符号组成' message: '密码由8位及以上数字、大小写字母和特殊符号组成'
}, },
{ validator: this.handlePasswordCheck } { validator: this.handlePasswordCheck }
], ],