ZBLOG

为了实现提交时,如果查询到 tagsId 为空则禁用按钮,您可以使用 Vue 的计算属性和条件判断来控制按钮的可用状态。以下是您的代码示例,增加了对 tagsId 是否为空的检查,以防止在未选择标签时进行下一步操作。

更新后的代码示例

<template>
  <div>
    <a-table
      :columns="columns"
      :data-source="data"
      :scroll="{
        x: columns.reduce((sum, col) => sum + (col.width || 0), 0) > 1800 ? 'max-content' : undefined
      }"
      :pagination="{
        current: currentPage,
        pageSize: pageSize,
        total: totalRecords,
        pageSizeOptions: ['10', '20', '30', '40', '100'],
        onShowSizeChange: handlePageSizeChange,
        onChange: handlePageChange,
        showQuickJumper: true,
        showSizeChanger: true,
        showTotal: (total, range) => `显示 ${range[0]} ~ ${range[1]} 条记录,共 ${total} 条记录`
      }"
      :custom-row="customRow"
      style="padding: 5px"
      bordered
      :row-selection="rowSelection"
      :rowKey="record => record.customerId" <!-- Assuming customerId is unique -->
    />

    <a-button 
      type="primary" 
      @click="processBatchAction" 
      :disabled="!isTagsIdValid" 
    >
      确认
    </a-button>
  </div>
</template>

<script setup>
import { reactive, ref, computed } from 'vue';
import { message } from 'ant-design-vue';

const columns = [
  // Define your columns here
];

const data = ref([]); // Your data source
const currentPage = ref(1);
const pageSize = ref(10);
const totalRecords = ref(0);

const rowSelection = reactive({
  preserveSelectedRowKeys: true,
  selectedRowKeys: [],
  onChange(selectedRowKeys, selectedRows) {
    newSelectedRowKeys.value = selectedRowKeys;
    
    // Update the names of the selected customers
    newSelectedCustomerNames.value = selectedRows.map(row => row.customerName);
    
    console.log('Selected Row Keys:', selectedRowKeys);
  }
});

// 假设 tagsId 是一个响应式变量,这里初始化为 null 或者有效值。
const tagsId = ref(null); // 或者某个合法值

// 使用计算属性判断 tagsId 是否有效
const isTagsIdValid = computed(() => {
   return !!tagsId.value; // 当 tagsId 不为空时返回 true
});

const handlePageSizeChange = (current, size) => {
  pageSize.value = size;
};

const handlePageChange = (page, size) => {
  currentPage.value = page;
};

const customRow = (record) => {
  return {
    onClick: () => {
      console.log('Clicked row:', record);
    }
  };
};

// Add other necessary methods and API calls

// 示例:批量处理客户标签的函数
const batchCustomerTags = async ({ tagsId, customerIds, customerNames }) => {
   // 实现您的API调用,并返回一个 Promise
   console.log("Batch processing for IDs:", customerIds);
   console.log("Batch processing for Names:", customerNames);
   
   // 模拟成功响应
   return { success: true, message: "操作成功!" };
};

// 用于处理选中客户并在操作后显示消息的函数。
const newSelectedRowKeys = ref([]);
const newSelectedCustomerNames = ref([]);

function processBatchAction() {
   if (!isTagsIdValid.value) { 
     message.warning("请确保选择了标签!"); 
     return; 
   }

   batchCustomerTags({ 
     tagsId: tagsId.value, // 使用当前的 tagsId 值 
     customerIds:newSelectedRowKeys.value, 
     customerNames:newSelectedCustomerNames.value 
   }).then(response => {
     if(response.success){
       message.success(response.message);
     } else {
       message.error(response.message);
     }
   });
}

// 获取或更新 tagsId 的逻辑需要根据实际情况进行实现。
// 举例:
function fetchTags() {
   // 根据您的业务逻辑获取或更新tagsId,例如:
   // const fetchedTags= await apiGetTags(); // 假设有此方法返回结果
  
   // 标签ID的赋值可以是下面这样的:
   // tagsId.value=fetchedTags.id || null;

}

// 在适当的位置调用 fetchTags()
fetchTags();

</script>

修改说明:

  1. 添加 tagsId 状态

    • 初始化一个响应式变量 tagsId 来存储标签 ID。
  2. 计算属性 isTagsIdValid

    • 创建一个计算属性,根据 tagsId 是否为空来决定按钮是否禁用。
  3. 禁用确认按钮

    • 将确认按钮的 disabled 属性绑定到计算属性 !isTagsIdValid,这样当没有选中的标签时按钮会被禁用。
  4. 处理提交逻辑

    • 在提交函数中检查 isTagsIdValid 的值,如果无效则提示用户并阻止进一步操作。

这样,当您点击确认按钮时,如果没有选择标签,将会弹出提示并阻止后续操作,从而提高用户体验。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21742

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?