IO操作

### 文件上传 如何设置弹窗详见 **多场景使用/子页面弹出** , 导入文件弹窗的样式基本基本一致 #### HTML代码 ```html <div class="layboxn"> <h3 class="laytitle f14 b p10">导入</h3> <div class="p10 linb-fa"> <h3 class="pt10 pb10 g6">操作步骤:</h3> <p class="mt5 red">1:请您根据标准模板,在模板中依次填写对应的信息,并且按照相关格式填写。</p> <p class="mt5 red">2:请您上传xls格式文件,并将模板中除了第一行,其他行设置为文本类型。</p> <p class="mt5 red">3:上传文件为必填项。</p> <div class="mt10"> <a class="layui-btn" id="exportBtn"> 导出模板 </a> </div> </div> <div class="p10 linb-fa"> <h3 class="g6">导入文件:</h3> <div class="pt20 "><input type="file" id="uploadFile"></div> </div> <div class="p15 linb-fa layui-center"><button class="layui-btn" id="uploadData">导入</button></div> </div> ``` ![image.png](https://cos.easydoc.net/27100029/files/k9whxhbt.png) #### JS 代码 依次为 导出模板路径, 接口所需文件名, 上传文件接口地址 ```javascript var exportFile = '' var fileName = '' var url = '' ``` 导出模板 ```JavaScript $("#exportBtn").attr('href', exportFile) // exportFile为文件名, 需定义 ``` 上传文件 ```javascript $('#uploadFile').on('change', function (e) { file = e.originalEvent.target.files[0] }) ``` 提交表单 ```javascript $('#uploadData').on('click', function () { if (file.name.indexOf('xls') == -1) { // 当遇到其他文件格式时, 需修改 onion.layer.tipMsg('上传文件格式有问题') return } var formData = new FormData() // 一定要是FormData() formData.append(fileName, file) // fileName为key, 根据实际情况来 // 上传文件使用的是 minPost onion.ajax.minPost(url, formData, function (res) { if (res.code == onion.networkState.SUCC) { // 成功代码 } else { // 失败代码 } }) }) ``` ### 文件下载 采用 GET 方法 ```javascript onion.layer.tipMsg('正在下载') window.location.href = '/manage' + url + '?id=' + data.id ``` ### 图片上传 #### HTML 模板 ```html <div class="layboxn mt10"> <h3 class="laytitle p10 f14">图片上传</h3> <div class="flexbox"> <div class="flexbox jeflex jew50 je-align-center imgUpload p10"> <div class="uploads show flexbox je-align-center g3 je-orient-ver je-text-center" id="uploadLabelImg"> <i class="layui-icon f20">&#xe67c;</i> <p>上传标签图片</p> </div> <div class="jeflex photolist" id="previewLabelImg" style="display: none"> <ul class="oveh"> <li class="jepor"> <span class="jepoa layui-btn layui-btn-sm layui-btn-normal imgdel"> <iclass="layui-icon f16">&#xe640;</i>删除 </span> <img id="labelImg" /> </li> </ul> </div> </div> </div> </div> ``` ![image.png](https://cos.easydoc.net/27100029/files/k9wiab7k.png) #### JS 代码 ```javascript var labelUrl = ""; // 上传图片的时候使用 onion.upload({ elem: "#uploadLabelDefine", url: "/common/image/upload", data: { type: 9 // type 需按实际情况修改 } }, function (res) { var res = res[0]; var data = null; if (res.code == onion.networkState.SUCC) { var data = res.data; dfniPic = data.url; $("#previewDefImg").show(); $("#labelDefine").attr("src", data.absoluteUrl); $("#labelDefine") .prev() .click(function () { dfniPic = ""; $("#previewDefImg").hide(); $("#labelDefine").attr("src", ""); }); } else { onion.layer.tipMsg(res.msg); } } ); ``` ### 图片回显 ```javascript if (data.labelUrl) { $("#previewLabelImg").show() $("#labelImg").attr("src", onion.suffx + data.dfniPic) // suffx为图片前缀 $("#labelDefine") .prev() .click(function () { $("#previewDefImg").hide(); $("#labelDefine").attr("src", ""); }) } ``` ![image.png](https://cos.easydoc.net/27100029/files/k9wicb7c.png) ### 大图预览 点击图片生效, 弹出展示大图的预览页 在 `img标签` 加上 `onclick="onion.myPreviewImg(this)"` 方法 ![image.png](https://cos.easydoc.net/27100029/files/k9y12uyo.png) util.js 中的代码 ![image.png](https://cos.easydoc.net/27100029/files/k9y14su4.png) 展示效果 ![image.png](https://cos.easydoc.net/27100029/files/k9y163u4) ### 图片 hover 鼠标移至图片, 显示小图预览 使用 Jq 中的 `hover()` , 添加 showph 来确定 hover 生效的范围 ![image.png](https://cos.easydoc.net/27100029/files/k9y1jrka.png) JS 代码 ```javascript function showphoto() { $(".showph").hover( function () { $(this).find('.img_preview').css("display", "block"); }, function () { $(this).find('.img_preview').css("display", "none"); } ); } ``` 在合适的地方运行上方函数 ![image.png](https://cos.easydoc.net/27100029/files/k9y1t0x4.png)