shikeying
2023-05-08 83efa8f1ebd3ad80dfb5078a10caf9fcc4499dc8
src/views/components/myTableV3.vue
@@ -24,7 +24,7 @@
              <el-radio label="2">全部</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="页码" style="display: none;" prop="pageNumber"><el-input v-model="exportParams.pageNumber" /></el-form-item>
          <el-form-item label="页码" style="display: none;" prop="pageNum"><el-input v-model="exportParams.pageNum" /></el-form-item>
          <el-form-item label="步长" style="display: none;" prop="pageSize"><el-input v-model="exportParams.pageSize" /></el-form-item>
        </el-form>
        <div style="text-align: right; margin: 0">
@@ -80,7 +80,7 @@
      <!--序号 有分页时-->
      <el-table-column v-if="myTable.showIndex && myTable.paging.page.pageSize != undefined" label="序号" align="center" width="60">
        <template slot-scope="scope">
          <span>{{ scope.$index + (myTable.paging.page.pageNumber - 1) * myTable.paging.page.pageSize + 1 }}</span>
          <span>{{ scope.$index + (myTable.paging.page.pageNum - 1) * myTable.paging.page.pageSize + 1 }}</span>
        </template>
      </el-table-column>
@@ -122,7 +122,8 @@
            <template v-else>
              <!--点击弹出单元格内容-->
              <el-popover placement="top-start" trigger="click" :content="getPopoverContent(scope.row, column)">
                <span slot="reference" class="content-text">{{ scope.row[column.field] }}</span>
<!--                <span slot="reference" class="content-text">{{ scope.row[column.field] }}</span>-->
                <span slot="reference" class="content-text">{{ splitField(scope.row, column.field) }}</span>
              </el-popover>
            </template>
          </template>
@@ -175,7 +176,7 @@
    </el-table>
    <el-pagination
      :small="myTable.paging.page.small"
      :current-page="myTable.paging.page.pageNumber"
      :current-page="myTable.paging.page.pageNum"
      :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
      :page-size="myTable.paging.page.pageSize"
      layout="total, sizes, prev, pager, next, jumper"
@@ -187,13 +188,14 @@
</template>
<script>
import myButtonV2 from '@/views/components/myButtonV2'
import myButton from '@/views/components/myButton'
import mySwitch from './mySwitch'
import request from '@/utils/request'
import * as valid from '@/utils/validate'
import previewPicture from '@/views/components/previewPicture'
export default {
  import myButtonV2 from '@/views/components/myButtonV2'
  import myButton from '@/views/components/myButton'
  import mySwitch from './mySwitch'
  import request from '@/utils/request'
  import * as valid from '@/utils/validate'
  import previewPicture from '@/views/components/previewPicture'
  export default {
  components: { myButtonV2, myButton, mySwitch, previewPicture },
  props: {
    table: {
@@ -213,9 +215,9 @@
  },
  data() {
    const validatepageNumber = (rule, value, callback) => {
      if (!valid.isNotEmpty(this.exportParams.pageNumber)) {
      if (!valid.isNotEmpty(this.exportParams.pageNum)) {
        callback(new Error('请输入页码'))
      } else if (!valid.isInteger(this.exportParams.pageNumber)) {
      } else if (!valid.isInteger(this.exportParams.pageNum)) {
        callback(new Error('页码为正整数'))
      } else {
        callback()
@@ -282,7 +284,7 @@
          // 分页信息
          page: {
            small: false,
            pageNumber: 1,
            pageNum: 1,
            pageSize: 10,
            total: 0
          }
@@ -295,13 +297,13 @@
        fileName: '',
        fileFormat: '.xls',
        page: '2',
        pageNumber: 1,
        pageNum: 1,
        pageSize: 20000
      },
      // 导出表单校验
      rules: {
        fileName: [{ required: true, validator: validatefileName, trigger: 'blur' }],
        pageNumber: [{ required: true, validator: validatepageNumber, trigger: 'blur' }],
        pageNum: [{ required: true, validator: validatepageNumber, trigger: 'blur' }],
        pageSize: [{ required: true, validator: validatepageSize, trigger: 'blur' }]
      },
      timeStamp: new Date().getTime()
@@ -324,8 +326,6 @@
      return function(row) {
        const arr = []
        that.myTable.operation.attr.map(item => {
          console.log(item)
          console.log(!(item.hidden && item.hidden(row)) && item.checkPermission)
          if (!(item.hidden && item.hidden(row)) && item.checkPermission) {
            arr.push(item)
          }
@@ -336,7 +336,7 @@
  },
  watch: {
    filter(val) {
      this.search({ pageNumber: 1 })
      this.search({ pageNum: 1 })
    }
  },
  created() {
@@ -348,13 +348,35 @@
    this.initTable()
  },
  methods: {
    /**
     * 解决:field中属性套属性的情况。2023-04-25
     * @param row
     * @param field
     */
    splitField(row, field){
      if(field.indexOf('.') > -1){
        const arr = field.split('.');
        let fieldStr = '';
        for(let i=0, len=arr.length; i<len; i++){
          if(i == len - 1){
            fieldStr += arr[i];
          } else {
            fieldStr += arr[i] + '.';
          }
        }
        return eval('row.' + fieldStr);
      } else {
        return row[field];
      }
    },
    initTable() {
      if (this.table !== null) {
        Object.assign(this.myTable, this.table)
        if (this.myTable.paging.page === undefined) {
          this.$set(this.myTable.paging, 'page', {
            small: false,
            pageNumber: 1,
            pageNum: 1,
            pageSize: 10,
            total: 0
          })
@@ -366,7 +388,7 @@
        })
        this.$nextTick(() => {
          if (this.myTable.autoLoad) {
            this.search({ pageNumber: 1 })
            this.search({ pageNum: 1 })
          }
        })
      }
@@ -381,25 +403,25 @@
        this.myTable.loading = true
        const params = Object.assign({}, this.filter)
        params.pageSize = this.myTable.paging.page.pageSize
        if (param && param.pageNumber) {
          this.myTable.paging.page.pageNumber = param.pageNumber
        if (param && param.pageNum) {
          this.myTable.paging.page.pageNum = param.pageNum
        }
        params.pageNumber = this.myTable.paging.page.pageNumber
        params.pageNum = this.myTable.paging.page.pageNum
        request({
          url: this.myTable.url,
          method: 'get',
          params: params
        }).then(res => {
          if (res.data.rows) {
            this.$set(this.myTable, 'rows', res.data.rows)
          if (res.data) {
            this.$set(this.myTable, 'rows', res.data.datas);
          }
          this.$set(
            this.myTable.paging,
            'page',
            Object.assign(this.myTable.paging.page, {
              pageSize: res.data.pageSize,
              pageNumber: res.data.pageNumber,
              total: res.data.total
              pageNum: res.data.pageIndex,
              total: res.data.totalRows
            })
          )
          this.myTable.loading = false
@@ -474,16 +496,16 @@
       */
    handleSizeChange(pageSize) {
      this.myTable.paging.page.pageSize = pageSize
      this.search({ pageNumber: 1 })
      this.search({ pageNum: 1 })
    },
    /*
       * @Author : liu.q [916000612@qq.com]
       * @Date : 2019-07-17 14:22
       * @Description :切换pageNumber
       */
    handleCurrentChange(pageNumber) {
      this.myTable.paging.page.pageNumber = pageNumber
      this.search({ pageNumber: pageNumber })
    handleCurrentChange(pageNum) {
      this.myTable.paging.page.pageNum = pageNum
      this.search({ pageNum: pageNum })
    },
    /*
       * @Author : liu.q [916000612@qq.com]
@@ -571,7 +593,7 @@
        JSON.stringify(
          Object.assign(
            {
              pageNumber: this.exportParams.pageNumber,
              pageNum: this.exportParams.pageNum,
              pageSize: this.exportParams.pageSize
            },
            this.filter