wg-basic-doc/docs/code-template/layui-util.md

340 lines
8.3 KiB
Markdown
Raw Normal View History

2022-06-02 17:47:13 +08:00
# layui工具
2022-08-15 15:17:10 +08:00
layui需要引入 **upload** 模块
2022-06-02 17:47:13 +08:00
2022-08-15 15:17:10 +08:00
引入依赖:
2022-06-02 17:47:13 +08:00
2022-08-15 15:17:10 +08:00
css
```html
<link rel="stylesheet" href="assets/js/vendor/viewer/viewer.min.css">
<link rel="stylesheet" href="assets/css/layui-util.css">
```
2022-06-02 17:47:13 +08:00
2022-08-15 15:17:10 +08:00
js
```html
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/js/layui-util.js"></script>
```
2022-06-02 17:47:13 +08:00
初始化
```js
2022-08-15 15:17:10 +08:00
var layuiUtil = new LayuiUtil(layui, Viewer ? Viewer : null);
2022-06-02 17:47:13 +08:00
```
## 表单
### 构建下拉列表
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('', []),
2022-08-15 15:17:10 +08:00
domId: 'xxxIdBox',
name: 'xxxId',
2022-06-02 17:47:13 +08:00
dataForm: 'dataForm',
valueKey: 'dataId',
nameKey: 'dataName',
onSelect: function(data, option) {
var optionValue = option.value;
var optionText = option.innerText;
}
});
```
2022-08-15 15:17:10 +08:00
### 构建数据字典
js
```js
layuiUtil.selectData({
parentId: '',
domId: 'xxxIdBox',
name: 'xxxId',
dataForm: 'dataForm',
onSelect: function(data, option) {
$('#highestEducationName').val(option.innerText);
}
});
```
2022-06-02 17:47:13 +08:00
参数
|名称|类型|描述|是否必填|
|-|-|-|-|
|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|
2022-08-15 15:17:10 +08:00
## 下拉联动
### 下拉多级地区联动
> 树形结构下拉联动需要配合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下标|
2022-06-02 17:47:13 +08:00
## 上传
### 上传图片
> 已上传头像为例,**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: []
})
2022-08-15 15:17:10 +08:00
```
参数
|名称|类型|描述|是否必填|默认|
|-|-|-|-|-|
|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|