a-transfer中使用a-table

<template>
  <a-drawer :title="businessDrawerTitle" :visible="businessVisible" class="dis-drawer-main" width="70%" @close="() => { $emit('close') }">
    <!-- 关闭按钮 -->
   <div class="closeBut" @click="() => $emit('close')"><a-icon type="close-circle" /></div>
    <a-transfer
      :data-source="mockData"
      :target-keys="targetKeys"
      show-search
      :filter-option="filterOption"
      @change="onChange"
    >
      <template
        slot="children"
        slot-scope="{
          props: { direction, filteredItems, selectedKeys, disabled: listDisabled },
          on: { itemSelectAll, itemSelect },
        }"
      >
        <a-table
          :row-selection="
            getRowSelection({ disabled: listDisabled, selectedKeys, itemSelectAll, itemSelect })
          "
          :columns="Columns"
          :data-source="filteredItems"
          size="small"
          :style="{ pointerEvents: listDisabled ? 'none' : null }"
          :custom-row="
            ({ key, disabled: itemDisabled }) => ({
              on: {
                click: () => {
                  if (itemDisabled || listDisabled) return;
                  itemSelect(key, !selectedKeys.includes(key));
                },
              },
            })
          "
        />
      </template>
    </a-transfer>
    <div id="components-form-demo-advanced-search" class="page-root">
      <div
        class="dis-drawer-contain-save-module"
      >
        <a-button :style="{ marginRight: '8px' }" @click="() => $emit('close')">
          {{ $t('action.close') }}
        </a-button>
        <a-button type="primary" :loading="loading" @click="() => $emit('ok',mockData,targetKeys)">
          {{ $t('action.save') }}
        </a-button>
      </div>
    </div>
  </a-drawer>
</template>
<script>
import { getBusiSys } from '@/api/systemManage/systemRe'
import difference from 'lodash/difference';
export default {
    components: {
    },
    props: {
      businessVisible: {
        type: Boolean,
        default: () => false
      }
    },
    data () {
      return {
        mockData: [],
        targetKeys: [],
        loading: false
      }
    },
    computed: {
      businessDrawerTitle () {
          return this.$t('systemManage.systemRe.setBusinessSystem')
      },
      Columns () {
        return [
          {
            title: this.$t('systemManage.systemRe.sysCd'),
            dataIndex: 'sysCd'
          },
          {
            title: this.$t('systemManage.systemRe.sysName'),
            dataIndex: 'sysName'
          },
          {
            title: this.$t('systemManage.systemRe.liablePerson'),
            dataIndex: 'liablePerson'
          }
        ]
      }
    },
    mounted () {
    },
    created () { },
    watch: {
    },
    methods: {
      loadData (sysCd) {
        getBusiSys(sysCd).then(res => {
          if (res && res.code === 200) {
            // res.data = {
            //   "leftData": [
            //     {
            //       "sysCd": "0807test",
            //       "sysName": "0807test",
            //       "sysType": "2",
            //       "department": "test",
            //       "liablePerson": "wzh_t",
            //       "sysNote": "0807test",
            //       "upUser": "wzh_t",
            //       "upDate": "2024-08-07T03:05:04.000+00:00",
            //       "sysStat": "1",
            //       "startDt": "2000-01-01",
            //       "endDt": "2099-01-01",
            //       "tenantId": null,
            //       "submitTenantId": 21,
            //       "dbId": null
            //     },
            //   ],
            //   "rightData": [
            //     "919",
            //     "991"
            //   ]
            // }
            this.mockData = res.data.leftData//左侧数据
            this.mockData.forEach(item => {
              item.key = item.sysCd
            })
            this.targetKeys = res.data.rightData//右侧数据
          } else this.$message.error(res.msg)
        }).catch(err => {
          this.$message.error(err)
        })
      },
      onChange (nextTargetKeys) {
        this.targetKeys = nextTargetKeys
      },
      // 选中勾选处理
      getRowSelection ({ disabled, selectedKeys, itemSelectAll, itemSelect }) {
        return {
          getCheckboxProps: item => ({ props: { disabled: disabled || item.disabled } }),
          onSelectAll (selected, selectedRows) {
            const treeSelectedKeys = selectedRows
              .filter(item => !item.disabled)
              .map(({ key }) => key)
            const diffKeys = selected
              ? difference(treeSelectedKeys, selectedKeys)
              : difference(selectedKeys, treeSelectedKeys)
            itemSelectAll(diffKeys, selected)
          },
          onSelect ({ key }, selected) {
            itemSelect(key, selected)
          },
          selectedRowKeys: selectedKeys
        }
      },
      filterOption (inputValue, option) {
      return option.sysName.indexOf(inputValue) > -1
    }
    }
}
</script>
<style scoped lang="less">
.ant-transfer {
  height: calc(100vh - 108px);
  padding: 50px 30px !important;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值