Skip to content

模版条件判断语句

  • 在vue模版中,一般在使用条件判断时,为增强代码可读性,应该单独定义条件判断的属性,并增加详细的代码注释,避免通过多个条件来进行判断

错误示例:

vue
<template>
  <!-- 条件判断语句中有多个判断条件,代码可读性差 -->
  <el-button size="small" :disabled="reportInfo.submitStatus !== AGENCY_STATE.SUBMIT && reportType === REPORT_TYPE.REPORT_REMARK && reportInfo.tbsmStatus === 2" v-if="reportType === REPORT_TYPE.REPORT_REMARK && reportInfo.tbsmStatus === 1" @click="onCancelConfirm">
    <v-svg type="bs-cancel" :disabled="reportInfo.submitStatus !== AGENCY_STATE.SUBMIT && reportType === REPORT_TYPE.REPORT_REMARK && reportInfo.tbsmStatus === 2"></v-svg> 取消确认
  </el-button>
</template>

正确示例:

vue
<template>
  <el-button size="small" :disabled="cancelConfirmDisabled" @click="onCancelConfirm" v-if="cancelConfirmVisible">
    <v-svg type="bs-cancel" :disabled="cancelConfirmDisabled"></v-svg> 取消确认
  </el-button>
</template>
<script>
export default {
  computed: {
    /**
     * 确认按钮是否禁用
     * 1、如果单位已经是上报状态,则需要禁用
     * 2、如果当前报告类型是报告说明,且报告说明确认了,则不可以再次确认
     * 3、如果当前报告类型是决算分析报告,且决算分析报告确认了,则不可以再次确认
     */
    confirmDisabled() {
      let { submitStatus, tbsmStatus, jsfxbgStatus } = this.reportInfo;
      if (submitStatus !== AGENCY_STATE.SUBMIT) {
        if (this.reportType === REPORT_TYPE.REPORT_REMARK) {
          return tbsmStatus === 1;
        } else {
          return jsfxbgStatus === 1;
        }
      } else {
        return true;
      }
    },
    /**
     * 取消确认按钮是否显示
     * 1、如果不包含附件,则并且当前报告类型的报告已确认,则需要显示
     */
    cancelConfirmVisible() {
      if (!this.hasAttachment) {
        let { tbsmStatus, jsfxbgStatus } = this.reportInfo;
        if (this.reportType === REPORT_TYPE.REPORT_REMARK) {
          return tbsmStatus === 1;
        } else {
          return jsfxbgStatus === 1;
        }
      } else {
        return false;
      }
    },
  },
};
</script>