jiangping
2023-08-18 40609a1bd11ce79445562ac23f16af23a48c3933
web_standard/src/components/base/BaseTable.vue
@@ -3,7 +3,7 @@
export default {
  name: 'BaseTable',
  extends: BasePage,
  data () {
  data() {
    return {
      // 接口
      api: null,
@@ -51,7 +51,7 @@
     *
     * @param extParams 配置参数
     */
    config (extParams) {
    config(extParams) {
      if (extParams == null) {
        throw new Error('Parameter can not be null of method \'config\' .')
      }
@@ -70,13 +70,13 @@
    /**
     * 搜索(点击搜索按钮时触发)
     */
    search () {
    search() {
      this.handlePageChange(1)
    },
    /**
     * 导出Excel(点击导出按钮时触发)
     */
    exportExcel () {
    exportExcel() {
      this.__checkApi()
      this.$dialog.exportConfirm('确认导出吗?')
        .then(() => {
@@ -108,7 +108,7 @@
    /**
     * 重置搜索条件(点击重置按钮时触发)
     */
    reset () {
    reset() {
      this.$refs.searchForm.resetFields()
      this.search()
    },
@@ -117,7 +117,7 @@
     *
     * @param pageSize 页容量
     */
    handleSizeChange (pageSize) {
    handleSizeChange(pageSize) {
      this.tableData.pagination.pageSize = pageSize
      this.search()
    },
@@ -126,7 +126,7 @@
     *
     * @param selectedRows 已选中的行数组
     */
    handleSelectionChange (selectedRows) {
    handleSelectionChange(selectedRows) {
      this.tableData.selectedRows = selectedRows
    },
    /**
@@ -134,7 +134,7 @@
     *
     * @param sortData 排序参数
     */
    handleSortChange (sortData) {
    handleSortChange(sortData) {
      this.tableData.sorts = []
      if (sortData.order != null) {
        this.tableData.sorts.push({
@@ -149,7 +149,7 @@
     *
     * @param pageIndex 新页码
     */
    handlePageChange (pageIndex) {
    handlePageChange(pageIndex) {
      this.__checkApi()
      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
      this.isWorking.search = true
@@ -176,7 +176,7 @@
     * @param row 行对象
     * @param childConfirm 删除子节点时是否进行二次确认
     */
    deleteById (row, childConfirm = true) {
    deleteById(row, childConfirm = true) {
      this.__checkApi()
      let message = `确认删除${this.module}【${row[this.configData['field.main']]}】吗?`
      if (childConfirm && row.children != null && row.children.length > 0) {
@@ -196,14 +196,14 @@
              this.isWorking.delete = false
            })
        })
        .catch(() => {})
        .catch(() => { })
    },
    /**
     * 批量删除(点击批量删除时触发)
     *
     * @param childConfirm 删除子节点时是否进行二次确认
     */
    deleteByIdInBatch (childConfirm = true) {
    deleteByIdInBatch(childConfirm = true) {
      this.__checkApi()
      if (this.tableData.selectedRows.length === 0) {
        this.$tip.warning('请至少选择一条数据')
@@ -235,7 +235,7 @@
              this.isWorking.delete = false
            })
        })
        .catch(() => {})
        .catch(() => { })
    },
    /**
     * 删除后处理,在单行删除或多行删除后调用
@@ -243,7 +243,7 @@
     * @param deleteCount 删除数量
     * @private
     */
    __afterDelete (deleteCount = 1) {
    __afterDelete(deleteCount = 1) {
      this.$tip.apiSuccess('删除成功')
      // 删除当前页最后一条记录时查询上一页数据
      if (this.tableData.list.length - deleteCount === 0) {
@@ -257,12 +257,101 @@
     *
     * @private
     */
    __checkApi () {
    __checkApi() {
      console.log(this.api);
      if (this.api == null) {
        throw new Error('The page is not initialized, you can use method \'this.config\' to initialize this page.')
      }
    },
    /**
 * 数字相加
 * @param {*} arg1
 * @param {*} arg2
 * @returns
 */
    accAdd(arg1, arg2) {
      return this.changeNum(arg1, arg2)
    },
    /**
     * 数字相减
     * @param {*} arg1
     * @param {*} arg2
     * @returns
     */
    accSub(arg1, arg2) {
      return this.changeNum(arg1, arg2, false)
    },
    /**
     * 数字相乘
     * @param {*} arg1
     * @param {*} arg2
     * @returns
     */
    accMul(arg1, arg2) {
      let m = 0;
      m = accAdd(m, getDecimalLength(arg1))
      m = accAdd(m, getDecimalLength(arg2))
      return getNum(arg1) * getNum(arg2) / Math.pow(10, m)
    },
    /**
     * 数字相除
     * @param {*} arg1
     * @param {*} arg2
     * @returns
     */
    accDiv(arg1, arg2) {
      let t1, t2;
      t1 = this.getDecimalLength(arg1)
      t2 = this.getDecimalLength(arg2)
      if (t1 - t2 > 0) {
        return (this.getNum(arg1) / this.getNum(arg2)) / Math.pow(10, t1 - t2)
      } else {
        return (this.getNum(arg1) / this.getNum(arg2)) * Math.pow(10, t2 - t1)
      }
    },
    changeNum(arg1 = '', arg2 = '', isAdd = true) {
      function changeInteger(arg, r, maxR) {
        if (r != maxR) {
          let addZero = ''
          for (let i = 0; i < maxR - r; i++) {
            addZero += '0'
          }
          arg = Number(arg.toString().replace('.', '') + addZero)
        } else {
          arg = this.getNum(arg)
        }
        return arg
      }
      let r1, r2, maxR, m;
      r1 = this.getDecimalLength(arg1)
      r2 = this.getDecimalLength(arg2)
      maxR = Math.max(r1, r2)
      arg1 = changeInteger(arg1, r1, maxR)
      arg2 = changeInteger(arg2, r2, maxR)
      m = Math.pow(10, maxR)
      if (isAdd) {
        return (arg1 + arg2) / m
      } else {
        return (arg1 - arg2) / m
      }
    },
    getDecimalLength(arg = '') {
      try {
        return arg.toString().split(".")[1].length
      } catch (e) {
        return 0
      }
    },
    getNum(arg = '') {
      return Number(arg.toString().replace(".", ""))
    }
  }
}
</script>