JeecgBoot - 按钮事件文档

项目案例示例

(1)弹框

  • 在列表页面【MdTestTaskList.vue】添加“新增”按钮(在页面操作按钮区域代码内添加):
    在这里插入图片描述
 <a-button @click="handleAddCont" type="primary" icon="plus">新增</a-button>
  • 添加弹框表单页面【MdTestTaskForm.vue】
    在这里插入图片描述
  • 添加弹框需要的model页面【MdTestTaskModal.vue】
    在这里插入图片描述
  • 在列表页面【MdTestTaskList.vue】引入model页面【MdTestTaskModal.vue】并注册全局组件
    在这里插入图片描述
引入MdTestTaskModal.vue页面
import MdTestTaskModal from './modules/MdTestTaskModal'
全局注册MdTestTaskModal.vue页面
components: {
	MdTestTaskModal
}
完成后在页面添加已经注册好的MdTestTaskModal.vue页面对应标签
<md-test-task-modal ref="modalForm" @ok="modalFormOk"></md-test-task-modal>
  • 上面设置完成后在model页面的j-model标签中添加:visible="visible属性:默认规定次弹框是打开的
  • 在model页面data中设置visible为关闭状态
data () {
	return {
		visible: false,
	}
},
  • 在【MdTestTaskModalm.vue】中引用添加弹出框中需要展示的内容页面(如在列表页面引用model方法一样):
    在model页面【MdTestTaskForm.vue】表单页面并注册全局组件
    在这里插入图片描述
引入MdTestTaskForm.vue页面
import MdTestTaskForm from './MdTestTaskForm'
全局注册MdTestTaskForm.vue页面
components: {
	MdTestTaskForm
},
完成后在页面添加已经注册好的MdTestTaskForm.vue页面对应标签
<md-test-task-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></md-test-task-form>

(2)新增

  • 在model页面添加弹框事件并绑定新增按钮事件,弹框默认值设置为关闭,在调用此方法时改变状态为打开
    在这里插入图片描述
addCont () {
	this.visible=true
	this.$nextTick(()=>{ //数据更新,执行此函数,延迟加载
		this.$refs.realForm.addCont();
	})
}
  • 在表单页面添加新增事件需要的url路径及事件
    在这里插入图片描述
addCont: "/mdtestask/mdTestTask/add"
addCont () {
	this.edit(this.modelDefault);
}
  • 在项目列表页面中新增按钮事件添加定义的【handleAddCont】方法
    在这里插入图片描述
handleAddCont(){
	this.$refs.modalForm.addCont(); //调用model页面的addCont方法
	this.$refs.modalForm.title = "新增项目信息";
	this.$refs.modalForm.disableSubmit = false;
}
(3)编辑
  • 在列表页面添加编辑按钮代码并绑定事件
    在这里插入图片描述
<a-button @click="handleAddEdit" type="primary" icon="edit">编辑</a-button>
  • 在model页面添加编辑弹框事件并绑定新增按钮事件,弹框默认值设置为关闭,在调用此方法时改变状态为打开
    在这里插入图片描述
edit (record) {
	this.visible=true
	this.$nextTick(()=>{
		this.$refs.realForm.edit(record);
	})
}
  • 在表单页面添加新增事件需要的url路径及事件
    在这里插入图片描述
editCont: "/mdtestask/mdTestTask/edit"
editCont (record) {
	this.model = Object.assign({}, record);
	this.visible = true;
}
  • 在项目列表页面中新增按钮事件添加定义的【handleAddEdit】方法
    在这里插入图片描述
handleAddEdit (record) {
	if (this.selectedRowKeys.length <= 0) {
          this.$message.warning('请选择一条记录!');
          return;
        } else if(this.selectedRowKeys.length > 1){
          this.$message.warning('编辑最多选一条!');
          return;
	} else {
		this.$refs.modalForm.editCont(this.selectionRows[0]);
		this.$refs.modalForm.title = "编辑项目信息";
		this.$refs.modalForm.disableSubmit = false;
	}
},
(4)删除
  • 在列表页面添加编辑按钮代码并绑定事件
    在这里插入图片描述
<a-button @click="handleBatchDel" type="primary" icon="delete">删除</a-button>
  • 在列表页面引入deleteAction
    在这里插入图片描述
import { deleteAction, getAction, downFile, getFileAccessHttpUrl } from '@/api/manage'
deleteAction(url,parameter) {
	return axios({
		url: url,
		method: 'delete',
		params: parameter
	})
}
  • 添加删除按钮事件
    在这里插入图片描述
handleBatchDel() {
		if (!this.url.deleteBatch) {
			this.$message.error("请设置url.deleteBatch属性!")
			return
		}
		if (this.selectedRowKeys.length <= 0) {
			this.$message.warning('请选择一条记录!');
			return;
		} else {
			var ids = "";
			for (var a = 0; a < this.selectedRowKeys.length; a++) {
				ids += this.selectedRowKeys[a] + ",";
			}
			var that = this;
			this.$confirm({
				title: "确认删除",
				content: "是否删除选中数据?",
				onOk: function () {
					that.loading = true;
					deleteAction(that.url.deleteBatch, { ids: ids }).then((res) => {
					if (res.success) {
						//重新计算分页问题
						that.reCalculatePage(that.selectedRowKeys.length)
						that.loadData();
						that.onClearSelected();
					} else {
						that.$message.warning(res.message);
					}
				}).finally(() => {
					that.loading = false;
				});
			}
		});
	}
}
(5)导入
(6)导出
(7)上传
(8)下载
(9)刷新
  • 以删除功能为例,在方法中添加页面定义的loadDatas()方法,引用自定义刷新样式进行页面刷新
    在这里插入图片描述
that.loadDatas();
 loadDatas() {
      console.log(333,'加载成功')
      this.$message.info(<a-spin tip="正在加载新数据,请稍后..."></a-spin>, 2);
 }
<think>好的,用户询问的是JeecgBoot-Vue3中是否存在拖拽上传组件,以及相关的示例或实现方法。首先,我需要确认JeecgBoot-Vue3的技术栈,他们用的是Ant Design Vue组件库,而Ant Design Vue确实提供了a-upload-dragger组件用于拖拽上传。然后,我得回忆文档中的引用内容,特别是引用[4]提到了一个错误的示例,里面确实用了a-upload-dragger,这说明在项目中是存在的。接着要整理正确的使用方法,比如如何设置action、处理上传事件等。另外,需要结合JeecgBoot的特点,比如权限控制和API对接,可能需要用到他们的封装方法或hooks。还要注意用户可能遇到的问题,比如组件引用是否正确,上传地址的配置,以及如何与后端接口对接。最后,确保回答结构清晰,分步骤说明,并提供示例代码,同时引用相关的文档部分来增强可信度。</think>JeecgBoot-Vue3 中确实提供了拖拽上传组件的实现方案。该平台基于 Ant Design Vue 组件库封装了文件上传功能,具体实现方法如下: ### 拖拽上传组件实现步骤 1. **组件引用** 使用 Ant Design Vue 的 `<a-upload-dragger>` 组件作为基础,结合 JeecgBoot 封装的 API 接口: ```vue <template> <a-upload-dragger name="files" :multiple="true" :action="uploadUrl" :headers="headers" @change="handleUploadChange" > <!-- 拖拽区域图标与文字 --> <p class="ant-upload-drag-icon"> <inbox-outlined /> </p> <p class="ant-upload-text">单击或拖动文件到此处上传</p> </a-upload-dragger> </template> ``` 2. **核心参数配置** - `action`: 需设置为 JeecgBoot 后台上传接口地址,例如:`/sys/common/upload`[^2] - `headers`: 通过 `getAccessToken()` 方法注入鉴权令牌[^3] - `beforeUpload`: 可在此钩子中实现文件类型/大小校验 3. **事件处理方法** ```js import { getAccessToken } from '/@/utils/auth'; export default { setup() { const uploadUrl = import.meta.env.VITE_GLOB_API_URL + '/sys/common/upload'; const handleUploadChange = (info) => { if (info.file.status === 'done') { // 上传成功后获取文件路径 const fileUrl = info.file.response.result.url; // 调用JeecgBoot表单绑定方法 handleFileBind(fileUrl); } }; return { headers: { 'X-Access-Token': getAccessToken() }, uploadUrl, handleUploadChange }; } } ``` ### 关键特性说明 1. **权限集成** 通过 `getAccessToken` 自动注入身份令牌,实现按钮级权限控制[^3] 2. **低代码对接** 上传成功后返回的文件路径可直接绑定到在线表单的字段中[^1] 3. **多文件支持** 设置 `:multiple="true"` 属性即可开启多文件选择模式[^4] ### 常见问题解决方案 - **跨域问题**:确保 `VITE_GLOB_API_URL` 已正确配置代理 - **样式丢失**:检查是否已正确导入 Ant Design 的样式文件 - **大文件上传**:建议结合 `chunk-upload` 插件实现分片上传
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值