JeechBoot前端表格内操作设置下拉

上面是最终的结果,这是在业务场景中很容易碰到的功能操作,下面就是该功能的代码展示。

javascript 复制代码
//接口定义
export const openDoor1 = (params: { id: string; dwState: string }) => {
  return defHttp.post({
    url: Api.openDoor,
    params:params ,  // 参数作为query参数传递
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    } // 将参数放到请求头上
  }, { isTransformResponse: false });
}
javascript 复制代码
//在操作栏区域添加组件
<!-- 门禁远程开门(设备名称为门禁时显示) -->
        <template v-if="record.deviceType == 0">
          <a-space>
            <a-dropdown trigger="click" @click="e => e.preventDefault()">
              <a-button type="text" size="small" :loading="doorLoading[record.id]">
                远程开门 <Icon icon="mdi:chevron-down" />
              </a-button>
              <template #overlay>
                <a-menu @click="({ key }) => handleDoorStateChange(record, key)">
                  <a-menu-item key="0">关闭</a-menu-item>
                  <a-menu-item key="1">打开</a-menu-item>
                  <a-menu-item key="2">常开</a-menu-item>
                  <a-menu-item key="3">常关</a-menu-item>
                </a-menu>
              </template>
            </a-dropdown>
          </a-space>
        </template>
javascript 复制代码
//逻辑书写
// ------------------- 门禁远程开门逻辑 -------------------
/**
 * 处理门禁开门状态选择
 */
async function handleDoorStateChange(record: any, dwState: string) {
  if (doorLoading.value[record.id]) return;
  
  try {
    doorLoading.value[record.id] = true;
    const params = { id: record.id, dwState: dwState };
    const result = await openDoor1(params);
    
    if (result.success) {
      const stateMap = { '0': '关闭', '1': '打开', '2': '常开', '3': '常关' };
      createMessage.success(`已设置为${stateMap[dwState]}状态,指令已发送`);
      reload();
    } else {
      createMessage.error(result.message || '操作失败');
    }
  } catch (error) {
    console.error('门禁开门失败:', error);
    createMessage.error('操作失败,请重试');
  } finally {
    doorLoading.value[record.id] = false;
  }
}
相关推荐
Dxy12393102163 分钟前
Python设置Excel表格边框样式:从基础到高级
前端·python·excel
布列瑟农的星空14 分钟前
tree shaking为什么失效
前端
idcu22 分钟前
加入 Lyt.js:从第一行代码到核心贡献者
前端
最炫的美少女战士24 分钟前
claude code 安装报错claude native binary not installed.
javascript
肥羊zzz25 分钟前
Vue2 vs Vue3 中 v-for 的 key 用法对比
前端·vue.js
dsyyyyy11011 小时前
HTML总结
前端·html
用户2367829801681 小时前
Canvas:实现一个高颜值二维码生成器
javascript
剑神一笑1 小时前
从字符串到时间线:实现一个 Cron 表达式解析器
javascript·typescript·reactjs
前端那点事2 小时前
深度解析:Vue中computed的实现原理(易懂不晦涩)
前端·vue.js
Mike_jia2 小时前
PortNote:可视化端口管理工具,让端口冲突成为历史
前端