Newer
Older
smart-metering-front / src / utils / useCheckList.ts
dutingting on 10 Jul 2 KB 业务结算80%
import { ElMessage } from 'element-plus'
// import type { TableColumn } from '@/components/NormalTable/table_interface'

/**
 * 检查列表
 * @param list 要检查的表格数据(被依赖项如果满足某个条件就去检查依赖项,否则不检查依赖项)
 * @param columns // 表头信息
 * @param tableTitle // 表格名称
 * @param depend // 依赖项
 * @param depended // 被依赖项
 * @param dependedValue // 被依赖项条件
 * @param requireLength // 要检查的表格数据长度是否大于0
 */
export default function useCheckList(list: any, columns: any, tableTitle = '', depend?: string, depended?: string, dependedValue?: number | string, requireLength = false): boolean {
  for (const prop of columns) {
    for (let index = 0; index < list.length; index++) {
      const item = list[index]

      if (depend && depended && item[depended] === dependedValue && !(`${item[prop.value]}`)) { // 被依赖项满足条件时需要检查
        ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`)
        return false
      }
      else {
        // 检查必填
        if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) {
          if (`${prop.belongStandardEquipment}` === '15') { // 小功率
            ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`)
          }
          else {
            ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`)
          }
          return false
        }
      }

      // 验证正则
      if (prop.reg && typeof prop.reg === 'function') {
        if (prop.value === 'resolution') { // 分辨力特殊处理
          if (!prop.reg(item[prop.value])) {
            ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text}  不能大于1`)
            return false
          }
        }
        else {
          if (!prop.reg(item[prop.value])) {
            if (`${prop.belongStandardEquipment}` === '15') { // 小功率
              ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为0`)
            }
            else if (`${prop.belongStandardEquipment}` === '17') { // S参数
              ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 仅允许输入数字、字母、特殊字符`)
            }
            else {
              ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text}  字段输入不合法`)
            }
            return false
          }
        }
      }

      if (prop.children && prop.children.length) {
        if (!useCheckList(list, prop.children, tableTitle, depend, depended, dependedValue)) {
          return false
        }
      }
    }
  }

  if (requireLength && !list.length) {
    ElMessage.warning(`${tableTitle}表格数据不能为空`)
    return false
  }
  return true
}