特别说明:这是基于 vue-ydui 组件升级的 UI 库,因为作者实在是太懒了,许久都不更新。
通过npm i git的方式使用过程中,遇到了一个问题,新增的组件就是不编译,所以无奈就单独开了一个版本出来。
工程目录下面执行,引入组件
npm i --save https://github.com/wzf/vue-ydui2
main.js 里面 import 并安装
import YDUI from 'vue-ydui2';
import 'vue-ydui2/dist/ydui.rem.css';
import 'vue-ydui2/dist/ydui.flexible';
Vue.use(YDUI);
- 画板
yd-canvasboard(新增)- 选择器
yd-picker(新增)- 时间选择
datetime(修改)- 大图预览imagepreview(新增)
- 图片选择
yd-filepicker(新增) - 进度条
yd-progressbar(升级) - 分割线
yd-divider(新增) - 下拉菜单
yd-dropdown(新增) - 时间线
yd-timeline(升级) - 图片
yd-image(升级) - 标签
yd-tag(新增) - 章节头
yd-sectionheader(新增) - 自动弹出键盘方案
yd-autoinput(新增) - 历史搜索
yd-searchhistory(新增) - 空数据提醒
yd-empty(新增) - 导航条
yd-navbar(升级) - 启动广告图
yd-launchad(新增) - 图标
yd-icon(持续升级) - 全局样式库(持续升级)
已完成
在原来基础上,添加了一个datetime_full类型,对应的时间组件是年 | 月 | 日 | 时 | 分 | 秒
已完成
通过 api 方式开启大图预览
Vue.use(YDUI);执行以后,给 Vue.prototype 绑定了一个方法$imagePreview,所以可以在 vue 组件内直接调用
const images = [
'http://www.ydcss.com/img/1.jpg',
'http://www.ydcss.com/img/2.jpg',
'http://www.ydcss.com/img/3.jpg'
];
const index = 1;
this.$imagePreview({images, index});
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| images | Array | 图片数组 | 无 |
| index | Number | 初始图片下标 | 0 |
已完成
业务中,为了解决“手写签名”而增加的这个组件
使用方式,具体参照 example/routers/canvasboard.vue
<!-- 添加组件 -->
<yd-canvasboard ref="canvasboard"></yd-canvasboard>
// 实际使用过程中大多数是"横屏签字,竖屏展示"
// 所以获取图像 并 进行-90度旋转
<!-- -90度旋转的画布 -->
<canvas :width="screenW"
:height="imageHeight"
style="background-color:#ffffff;"
ref="previewCanvas">
</canvas>
// 获取图像并进行二次处理
_clickGetImage() {
const imageData = this.$refs.canvasboard.imageBase64Data();
let image = new Image();
image.src = imageData;
// 业务需求(横屏签名 => 竖屏显示)
// 根据实际情况,对图片进行压缩,旋转
this.showPreview = true;
this.$nextTick(() => {
const canvas = this.$refs.previewCanvas;
const canvasW = canvas.getBoundingClientRect().width;
const imgW = image.width;
const imgH = image.height;
const wR = canvasW / imgH; //缩放比例
const diffW = canvasW - imgH; //缩放以后,高度差,需要通过位移抵消这部分值
const rH = imgW * wR; //缩放后图片的高度
this.imageHeight = rH;
this.$nextTick(() => {
const canvasH = canvas.getBoundingClientRect().height;
const ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvasW, rH);
ctx.translate(canvasW / 2, canvasH / 2); // 移动中心点
ctx.rotate((-90 / 180) * Math.PI); //旋转-90度
ctx.drawImage(image, 0, 0, imgW, imgH, canvasH / 2 - rH, -canvasW / 2, imgW * wR, imgH + diffW);
});
});
}
已完成
(这个组件是从 datetime 组件中剥离出来的)
提供一组选项,其中选项必须包括 value、name 两个值,value 是业务值,name 是显示值
使用方式,具体参照 example/routers/picker.vue
<yd-picker :options="options"
:show="show"
@onChange="_onCityPicked"
@onConfirm="_onCityPickFinish"
@onCancel="_onCityPickCancel"
:default="city"></yd-picker>
methods: {
_onCityPicked({ index, value }) {
console.log(index, value);
},
_onCityPickFinish({ index, value }) {
console.log(index, value);
this.city = value;
this.cityName = this.options[index].name;
this.show = false;
},
_onCityPickCancel({ index, value }) {
console.log(index, value);
this.show = false;
}
}
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| options | Array | 选项(必须包含 value、name) | [] |
| default | String | 默认选项的 value 值 | '' |
| show | Boolean | 控制显示 | false |
| confirmText | String | "确认"按钮显示值 | '确认' |
| cancelText | String | "取消"按钮显示值 | '取消' |
| onChange | 事件 | 选择了一个新选项,回调参数({index, value}) | - |
| onConfirm | 事件 | 点击"确定"按钮 | - |
| onCancel | 事件 | 点击"取消"按钮 | - |
样式升级[参照 element]
分割线[参照 element]
基于<input type="file"/>从相册选择照片、拍照
如果基于 h5+做 APP 的话,建议直接使用 plus 功能,相册、相机
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| max | Number | 允许最多几张图片,-1 表示不限 | -1 |
| type | String | all(相册、拍照)、album(只允许相册)、camera(只允许拍照) | all |
| add | slot | 自定义"添加"区域 | - |
| 方法 | 返回值类型 | 说明 |
|---|---|---|
| images | Array | 获取已选择的图片,base64 数组 |
倒序、正序
占位图、懒加载
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| text | string | 文字内容 | 无 |
| color | string | 颜色 | "#04be02" |
| alpha | Number | 颜色*alpha 作为背景颜色 | 0.8 |
从点击位置弹出扩展菜单
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| icon-color | string | 图标颜色 | "#04be02" |
| icon | slot | 自定义"首位图标"区域 | (竖线) |
| text | string | 文字 | 无 |
| text | slot | 自定义"文字"部分 | |
| more | boolean | 是否显示右侧的"更多" | false |
| more-text | string | 右侧更多的文字,只有 more=true 时才显示 | "更多" |
| more-icon | string | 右侧更多的图标,只有 more=true 时才显示 | ">" |
| more | slot | 自定义"更多"区域 |
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| text | string | 提醒文字 | "~~ 暂时未发现有用的数据 ~~" |
| text-color | string | 提醒文字颜色 | "#909090" |
| text | slot | 自定义"文字"区域 | |
| icon | string | 提醒图标 | |
| icon-color | string | 提醒文字颜色 | "#a0a0a0" |
| icon | slot | 自定义"图标"区域 |