对数据模型中的数据进行增删改查
批量导出列表的全部数据
解决方案:
一般情况下微搭会提供导出按钮支持当前页面数据的批量导出,但是要批量导出列表的全量数据时就必须通过低代码方式实现。(这种用 JS 实现导出的方案还有很多种开源方案,用户也可以自行查找解决方案替换)。
实战代码:
export default async function({event, data}) {//查询条件//const conditions = [{ key:"fkyqm",rel:"eq",val:event.detail.fkyqm },{ key:"mzt",rel:"eq",val:"2" }];const result1 = await app.cloud.callDataSource({ dataSourceName: 'sys_user', // 数据表名methodName: 'wedaGetRecords', // 查询方法(多条数据列表)params:{//添加条件//where:conditions,},});/** 1、查出总数 **/var total = result1.total;// 要导出的json数据const jsonData = [];/** 2、每1000条取一次数据 **/for(var i = 1 ; i-1 < total/1000 ; i++){const result2 = await app.cloud.callDataSource({ dataSourceName: 'sys_user', // 数据表名methodName: 'wedaGetRecords', // 查询方法(多条数据列表)params:{pageNo:i,pageSize:1000,//添加条件//where:conditions,},});//数组拼接jsonData.push.apply(jsonData,result2.records);}/** 3、拼接导出文件数据 **/// 列标题,逗号隔开,每一个逗号就是隔开一个单元格let str = `列表标题A,列表标题B,列表标题C,列表标题D\\n`;// 循环取值for(let i = 0 ; i < jsonData.length ; i++ ){//这里可以根据业务字段取值,增加""为区分字符串中的逗号,增加\\t为了不让表格显示科学计数法或者其他格式for(const key in jsonData[i]){str+=`"${jsonData[i][key] + '"\\t'},`;}str+='\\n';//可以根据列内容选择对应的key//str+=`"${jsonData[i]['xm'] + '"\\t'},`;//str+=`"${jsonData[i]['nl'] + '"\\t'},`;//str+='\\n';}// encodeURIComponent解决中文乱码const uri = 'data:text/csv;charset=utf-8,\\ufeff' + encodeURIComponent(str);/** 4、导出链接设置 **/// 通过创建a标签实现const link = document.createElement("a");link.href = uri;// 对下载的文件命名link.download = "json数据表.csv";link.click();}