wg-basic-doc/docs/code-template/layui-util.md
2022-08-15 15:17:10 +08:00

340 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# layui工具
layui需要引入 **upload** 模块
引入依赖:
css
```html
<link rel="stylesheet" href="assets/js/vendor/viewer/viewer.min.css">
<link rel="stylesheet" href="assets/css/layui-util.css">
```
js
```html
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/js/layui-util.js"></script>
```
初始化
```js
var layuiUtil = new LayuiUtil(layui, Viewer ? Viewer : null);
```
## 表单
### 构建下拉列表
html
```html
<div class="layui-form-item">
<label class="layui-form-label">最高学历</label>
<input type="hidden" id="highestEducationName" name="highestEducationName">
<div class="layui-input-block" id="highestEducationIdBox"></div>
</div>
```
js
```js
layuiUtil.select({
url: top.restAjax.path('', []),
domId: 'xxxIdBox',
name: 'xxxId',
dataForm: 'dataForm',
valueKey: 'dataId',
nameKey: 'dataName',
onSelect: function(data, option) {
var optionValue = option.value;
var optionText = option.innerText;
}
});
```
### 构建数据字典
js
```js
layuiUtil.selectData({
parentId: '',
domId: 'xxxIdBox',
name: 'xxxId',
dataForm: 'dataForm',
onSelect: function(data, option) {
$('#highestEducationName').val(option.innerText);
}
});
```
参数
|名称|类型|描述|是否必填|
|-|-|-|-|
|url|string|请求地址|是|
|domId|string|加载下拉的div|是|
|name|string|select的ID与NAME属性值|是|
|dataForm|string|表单的lay-filter值|是|
|valueKey|string|接口返回的数据渲染到option的value属性的值|是|
|nameKey|string|接口返回的数据渲染到option的innerText的值|是|
|selectedValue|string|选中的默认值|否|
|onInit|function|渲染时触发回调|否|
|onSelect|function|选择时触发回调|否|
事件
onInit渲染或更新时触发事件
|名称|类型|描述|
|-|-|-|
|selectedValue|string|选中的默认值,空字符串时,不触发数据加载|
onSelect选择时触发事件
|名称|类型|描述|
|-|-|-|
|data|obj|选择的option数据包含原始DOM美化后的DOM选中的值|
|option|dom|选中的option|
## 下拉联动
### 下拉多级地区联动
> 树形结构下拉联动需要配合dom实现
html
```html
<div class="layui-row" style="margin-top: 10px;">
<span class="search-item-key">户籍地</span>
<div class="layui-inline layui-form search-item ">
<select id="registerArea0" name="registerArea0" lay-filter="registerArea0Select"></select>
</div>
<div class="layui-inline layui-form search-item ">
<select id="registerArea1" name="registerArea1" lay-filter="registerArea1Select"></select>
</div>
<div class="layui-inline layui-form search-item ">
<select id="registerArea2" name="registerArea2" lay-filter="registerArea2Select"></select>
</div>
<div class="layui-inline layui-form search-item ">
<select id="registerArea3" name="registerArea3" lay-filter="registerArea3Select"></select>
</div>
<div class="layui-inline layui-form search-item ">
<select id="registerArea4" name="registerArea4" lay-filter="registerArea4Select"></select>
</div>
</div>
```
`<select>`**id**、**name** 需要相同,下标从**0**开始,**lay-filter** 为 **id** 值 + **Select**
固定写法,下标递增
```js
layuiUtil.selectLinkageArea({
baseRootId: 0,
selectId: 'registerArea',
optionDataKeyArray: ['areaCode'],
onSelect: function(data, option, index) {
var value = data.value;
// 删除元素
selectedRegisterAreaArray.splice(index, 5 - index);
if(value) {
selectedRegisterAreaArray[index] = option.innerText;
}
}
});
```
参数
|名称|类型|描述|是否必填|
|-|-|-|-|
|baseRootId|string|第一个下拉框的根节点ID|是|
|selectId|string|select的ID不包含下标|是|
|optionDataKeyArray|array|需要附带在option上的属性值取值的时候通过option.dataset.dataX 获取其中X为数组下标|否|
|onSelect|function|选择事件|是|
事件
onSelect选择时触发事件
|名称|类型|描述|
|-|-|-|
|data|obj|选择的option数据包含原始DOM美化后的DOM选中的值|
|option|dom|选中的option|
|index|number|select下标|
## 上传
### 上传图片
> 已上传头像为例,**avatar** 需要前后一致
html
```html
<div id="avatarBox" class="layui-form-item">
<label class="layui-form-label">头像</label>
<button type="button" class="layui-btn layui-upload-file-btn" id="avatarUploadBtn">上传头像</button>
<div class="upload-image-box">
<input type="hidden" id="avatar" name="avatar">
<div class="layui-btn-container" id="avatarFileBox"></div>
</div>
</div>
```
js
```js
layuiUtil.initUploadImage({
fieldName: 'avatar',
maxCount: 6,
isShow: false,
allowExts: [],
acceptMime: []
})
```
参数
|名称|类型|描述|是否必填|默认|
|-|-|-|-|-|
|maxCount|int|最大数量|否|9|
|fieldName|string|字段名称|是||
|isShow|boolean|是否展示(不能上报、删除)|是||
|allowExts|array|允许的后缀|否|'jpg', 'png', 'gif', 'bmp', 'jpeg'|
|acceptMime|array|文件选择支持的类型|否|'image/*'|
事件
onInit渲染或更新时触发事件
|名称|类型|描述|
|-|-|-|
|selectedValue|string|选中的默认值,空字符串时,不触发数据加载|
onSelect选择时触发事件
|名称|类型|描述|
|-|-|-|
|data|obj|选择的option数据包含原始DOM美化后的DOM选中的值|
|option|dom|选中的option|
### 上传视频
html
```html
<div id="videoBox" class="layui-form-item">
<label class="layui-form-label">视频</label>
<button type="button" class="layui-btn layui-upload-file-btn" id="videoUploadBtn">上传视频</button>
<div class="upload-image-box">
<input type="hidden" id="video" name="video">
<div class="layui-btn-container" id="videoFileBox"></div>
</div>
</div>
```
js
```js
layuiUtil.initUploadVideo({
fieldName: 'video',
maxCount: 1,
isShow: false,
allowExts: [],
acceptMime: []
})
```
参数
|名称|类型|描述|是否必填|默认|
|-|-|-|-|-|
|maxCount|int|最大数量|否|1|
|fieldName|string|字段名称|是||
|isShow|boolean|是否展示(不能上报、删除)|是||
|allowExts|array|允许的后缀|否|'mp4'|
|acceptMime|array|文件选择支持的类型|否|'video/mp4'|
### 上传音频
html
```html
<div id="audioBox" class="layui-form-item">
<label class="layui-form-label">音频</label>
<button type="button" class="layui-btn layui-upload-file-btn" id="audioUploadBtn">上传音频</button>
<div class="upload-image-box">
<input type="hidden" id="audio" name="audio">
<div class="layui-btn-container" id="audioFileBox"></div>
</div>
</div>
```
js
```js
layuiUtil.initUploadAudio({
fieldName: 'audio',
maxCount: 1,
isShow: false,
allowExts: [],
acceptMime: []
})
```
参数
|名称|类型|描述|是否必填|默认|
|-|-|-|-|-|
|maxCount|int|最大数量|否|1|
|fieldName|string|字段名称|是||
|isShow|boolean|是否展示(不能上报、删除)|是||
|allowExts|array|允许的后缀|否|'wav', 'mp3'|
|acceptMime|array|文件选择支持的类型|否|'audio/wav', 'audio/mp3'|
### 上传附件
html
```html
<div id="fileBox" class="layui-form-item">
<label class="layui-form-label">附件</label>
<button type="button" class="layui-btn layui-upload-file-btn" id="fileUploadBtn">上传附件</button>
<div class="upload-image-box">
<input type="hidden" id="file" name="file">
<div class="layui-btn-container" id="fileFileBox"></div>
</div>
</div>
```
js
```js
layuiUtil.initUploadFile({
fieldName: 'file',
maxCount: 3,
isShow: false,
allowExts: [],
acceptMime: [],
onFileClick: function(fileId) {}
})
```
参数
|名称|类型|描述|是否必填|默认|
|-|-|-|-|-|
|maxCount|int|最大数量|否|9|
|fieldName|string|字段名称|是||
|isShow|boolean|是否展示(不能上报、删除)|是||
|allowExts|array|允许的后缀|否|'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'wps', 'txt', 'rar', 'zip'|
|acceptMime|array|文件选择支持的类型|否|'application/pdf'等|
|onFileClick|function|文件点击事件|否|下载文件|
事件
onFileClick文件点击事件
|名称|类型|描述|
|-|-|-|
|fileId|string|点击的文件ID|