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;
  }
}
相关推荐
佛山个人技术开发26 分钟前
个人建站接单|汽车汽配行业宽屏自适应官网模板 工厂企业定制建站源码
前端·css·前端框架·html·汽车·php
光影少年36 分钟前
react的Context 和 Redux 区别?
前端·javascript·react.js·前端框架
前端 贾公子44 分钟前
uni-app工程化实战:基于vue-i18n和i18n-ally的国际化方案 (上)
前端·javascript·vue.js
喵个咪1 小时前
基于 Flutter 的 Headless CMS 全平台前端架构:技术解析与二次开发导引
前端·flutter·cms
vim怎么退出1 小时前
Dive into React——Diff 算法
前端·react.js·源码阅读
半个落月1 小时前
面试必问的 JS 原型链,我用 16 个示例给你彻底讲明白
javascript
拾年2751 小时前
别调 BERT 了:我用 Prompt 做了套 NLP 系统,20 分钟搞定
前端·人工智能
丷丩2 小时前
12. 渲染:MapLibre GL JS 集成与多源瓦片联动
javascript·矢量瓦片·maplibre gl js·地图服务器
半个落月2 小时前
别再死记变量提升了——从 V8 编译过程真正理解 JS 执行机制
前端
橘子星2 小时前
别再懵圈!JS 执行机制的 “千层套路” 全揭秘
前端·javascript