Sfoglia il codice sorgente

Merge branch 'dev/v4.9.21_tsz' of qmx/jy into feature/v4.9.21

汤世哲 1 anno fa
parent
commit
6f74834cef
1 ha cambiato i file con 43 aggiunte e 49 eliminazioni
  1. 43 49
      src/web/templates/pc/invoice.html

+ 43 - 49
src/web/templates/pc/invoice.html

@@ -111,13 +111,13 @@
                     <el-form-item style="min-height: 36px;height: auto;" label="单位地址:" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入单位地址', trigger: 'blur' }]" prop="company_address">
                       <el-input ref="company_address" :style="{height: addressHeight + 'px'}" type="textarea" :rows="1" placeholder="请输入单位地址" v-model="ruleForm.company_address"></el-input>
                     </el-form-item>
-                    <el-form-item label="电话号码:">
-                      <el-input maxlength="11" placeholder="请输入电话号码" v-model="ruleForm.company_phone"></el-input>
+                    <el-form-item label="电话号码:" prop="company_phone" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入电话号码', trigger: 'blur' }, { validator: ruleForm.invoice_variety == '电子专用发票' ? validateTelPhone : '', trigger: 'blur' }]">
+                      <el-input placeholder="请输入电话号码" v-model="ruleForm.company_phone"></el-input>
                     </el-form-item>
-                    <el-form-item label="开户银行:">
+                    <el-form-item label="开户银行:" prop="bank_name" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入开户银行', trigger: 'blur' }]">
                       <el-input placeholder="请输入开户银行" v-model="ruleForm.bank_name"></el-input>
                     </el-form-item>
-                    <el-form-item label="银行账号:">
+                    <el-form-item label="银行账号:" prop="bank_account" :rules="[{ required: ruleForm.invoice_variety == '电子专用发票', message: '请输入银行账号', trigger: 'blur' }, { validator: ruleForm.invoice_variety == '电子专用发票' ? validateBankAccount : '', trigger: 'blur' }]">
                       <el-input placeholder="请输入银行账号" v-model="ruleForm.bank_account"></el-input>
                     </el-form-item>
                     <el-form-item style="min-height: 36px;height: auto;" class="invoice_desc" label="开票备注:">
@@ -125,7 +125,7 @@
                     </el-form-item>
                   </div>
                   <el-form-item label="联系电话:" prop="phone">
-                    <el-input maxlength="11" placeholder="请输入手机号" v-model="ruleForm.phone"></el-input>
+                    <el-input placeholder="请输入手机号" v-model="ruleForm.phone"></el-input>
                   </el-form-item>
                   <el-form-item  label="电子邮箱:" prop="mail">
                     <el-input placeholder="邮箱用于接收电子发票" v-model="ruleForm.mail"></el-input>
@@ -264,6 +264,17 @@
                 company_address: [
                   { required: true, message: '请输入单位地址', trigger: 'blur' },
                   { validator: this.validateAddress, trigger: 'blur' }
+                ],
+                company_phone: [
+                  { required: true, message: '请输入电话号码', trigger: 'blur' },
+                  { validator: this.validateTelPhone, trigger: 'blur' }
+                ],
+                bank_name: [
+                  { required: true, message: '请输入开户行', trigger: 'blur' }
+                ],
+                bank_account: [
+                  { required: true, message: '请输入银行账号', trigger: 'blur' },
+                  { validator: this.validateBankAccount, trigger: 'blur' }
                 ]
               },
               companyList: [],
@@ -274,8 +285,6 @@
               },
               addressHeight: 36,
               remarkHeight: 36,
-              isFormValid: [], // 表单校验结果
-              isValid: false,  // 表单是否通过校验
               loading: false
             }
           },
@@ -293,14 +302,15 @@
           watch: {
             'ruleForm.invoice_variety': {
               handler (val) {
+                // 清空校验
                 if (val === '电子专用发票') {
                   this.ruleForm.invoice_type = '单位'
-                  this.isFormValid = [false, false, false, false, false]
-                } else {
-                  this.isFormValid = [false, false, false, false]
+                }
+                if(val) {
+                  this.$refs['ruleForm'].clearValidate();
                 }
               },
-              immediate: true
+              // immediate: true
             },
             'ruleForm.company_address': {
               handler() {
@@ -319,13 +329,6 @@
               }
             }
           },
-          computed: {
-            getValidateResult() {
-              console.info(this.isFormValid, 'isFormValid')
-              let hasFalse = this.isFormValid.includes(false);
-              return hasFalse
-            }
-          },
           methods: {
             // 查询是否可以开发票
             setPageOver () {
@@ -389,83 +392,74 @@
             validateCode: (rule, value, callback) => {
               const regCode = /(^[A-Za-z0-9]{15}$)|(^[A-Za-z0-9]{17,18}$)|(^[A-Za-z0-9]{20}$)/;
               if (!value) {
-                invoiceNode.setFormValidate(invoiceNode.isFormValid)
                 return callback(new Error('请输入纳税人识别号'))
               } else {
                 if (regCode.test(value)) {
-                  invoiceNode.isFormValid.push(true)
                   return callback()
                 } else {
-                  invoiceNode.setFormValidate(invoiceNode.isFormValid)
                   return callback(new Error('请输入正确的纳税人识别号'))
                 }
               }
             },
             validatePhone: (rule, value, callback) => {
-              const regPhone = /^1[3-9]\d{9}$/;
+              const regPhone = /^1[3-9]\d{9}$/; // 手机号正则
+              const regTel = /^0\d{2,3}-?\d{7,8}$/ // 座机号码正则
               if(!value) {
-                invoiceNode.setFormValidate(invoiceNode.isFormValid)
                 return callback(new Error('请输入手机号'));
               } else {
-                if (regPhone.test(value)) {
-                  invoiceNode.isFormValid.push(true)
+                if (regPhone.test(value) || regTel.test(value)) {
                   return callback()
                 } else {
-                  invoiceNode.setFormValidate(invoiceNode.isFormValid)
-                  return callback(new Error('请输入正确的手机号'))
+                  return callback(new Error('联系电话格式不正确'))
                 }
               }
             },
+            validateTelPhone: (rule, value, callback) => {
+              const regPhone = /^1[3-9]\d{9}$/; // 手机号正则
+              const regTel = /^0\d{2,3}-?\d{7,8}$/ // 座机号码正则
+              if (regPhone.test(value) || regTel.test(value)) {
+                return callback()
+              } else {
+                return callback(new Error('电话号码格式不正确'))
+              }
+            },
+            validateBankAccount: (rule, value, callback) => {
+              const regAccount = /^\d+$/;
+              if (regAccount.test(value)) {
+                return callback()
+              } else {
+                return callback(new Error('请输入正确的银行账号'))
+              }
+            },
             validateMail: (rule, value, callback) => {
-              console.info(rule, value,'isFormValid')
               const regEmail = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/
               if(!value) {
-                invoiceNode.setFormValidate(invoiceNode.isFormValid)
                 return callback(new Error('请输入邮箱'))
               } else {
                 if (regEmail.test(value.trim())) {
-                  invoiceNode.isFormValid.push(true)
                   return callback()
                 } else {
-                  invoiceNode.setFormValidate(invoiceNode.isFormValid)
-                  return callback(new Error('请输入正确的邮箱'))
+                  return callback(new Error('邮箱格式不正确'))
                 }
               }
             },
             validateCompany: (rule, value, callback) => {
               const regCompany=/^[\u4e00-\u9fa5_a-zA-Z0-9_\(_\)_\uff08_\uff09\)]{2,50}$/;
               if(!value) {
-                invoiceNode.setFormValidate(invoiceNode.isFormValid)
                 return callback(new Error('请输入公司名称'))
               } else {
                 if (regCompany.test(value)) {
-                  invoiceNode.isFormValid.push(true)
                   return callback()
                 } else {
-                  invoiceNode.setFormValidate(invoiceNode.isFormValid)
                   return callback(new Error('请输入正确的公司名称'))
                 }
               }
             },
             validateAddress: (rule, value, callback) => {
               if (value.trim().length > 0) {
-                invoiceNode.isFormValid.push(true)
                 return callback()
-              } else {
-                invoiceNode.setFormValidate(invoiceNode.isFormValid)
               }
             },
-            setFormValidate (array) {
-              let data = Array.from(array)
-              console.info(data.length, 'array')
-              data.forEach((e, i) => {
-                if(e) {
-                  data.splice(i, 1)
-                  data.push(false)
-                }
-              });
-              this.isFormValid = data
-            },
             setHighLight(item) {
               const keyword = utils.replaceKeyword(item.name, this.ruleForm.company_name, '<span class="highlight-text">' + this.ruleForm.company_name + '</span>')
               return keyword