daoji_h5/uni_modules/v-sign/readme.md

246 lines
8.4 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.

# v-sign 手写签名
**如有问题或者建议欢迎留言或加群联系我群号736123963将保持维护**
<img src="https://i.loli.net/2021/12/02/bgsfnDmCzXGq8ct.png" alt="uniapp 交流群群聊二维码" style="zoom: 80%;" />
## 快速使用
基础示例,具体说明见下方 API**若需要使用内置子组件,见下方子组件说明。**
```html
<template>
<v-sign :width="winWidth + 'px'" @init="onSignInit"></v-sign>
<button @click="clear">清空<button>
</template>
<script>
export default {
data() {
return {
winWidth: 0
}
},
created() {
// 宽度设为可使用窗口宽度
const { windowWidth } = uni.getSystemInfoSync()
this.winWidth = windowWidth
},
methods: {
onSignInit(signCtx) {
this.signCtx = signCtx
},
// 清空
clear() {
this.signCtx.clear()
}
}
}
</script>
```
## API
### 属性 (Props)
| 属性名 | 类型 | 默认值 | 说明 |
| :---------: | :-----------: | :-----------: | :--------------------------: |
| cid | String | v-sign-时间戳 | canvas id |
| width | String/Number | - | canvas 宽度Number 单位 rpx |
| height | String/Number | - | canvas 高度Number 单位 rpx |
| customStyle | Object | - | canvas 自定义样式 |
| lineWidth | Number | 4 | 线宽,单位 px |
| lineColor | String | #333 | 线颜色 |
| bgColor | String | #fff | 画布背景颜色 |
### 事件Events
| 事件称名 | 说明 | 返回值 |
| :------: | :------------------------------------------------------------: | :--------------------------------: |
| @init | 创建完 canvas 实例后触发,向外提供 canvas 实例,撤回,清空方法 | Object具体见下方事件回调参数说明 |
| @clear | 清空画布后触发 | - |
| @revoke | 撤销操作后触发 | 坐标信息数组 |
| @end | 每次绘制结束后触发 | 坐标信息数组 |
### 事件回调参数说明
#### **`init(ctx: SignContext)`**
可以通过该事件回调暴露的 clear、revoke 等方法操作画布。
```java
interface SignContext {
// canvas 实例
ctx: object;
// 清空画布
clear(): void;
// 撤回
revoke(): void;
// 保存 png 图片,文件名 filename 配置仅支持 h5
saveImage(filename: string): Promise<object>;
// 返回图片临时文件路径config 参数同 uni.canvasToTempFilePath方法内部只是做了 Promise 化处理而已
canvasToTempFilePath(config: object): Promise<object>;
// 设置画布背景色
setBackgroundColor(color: string): void;
setLineWidth(value: number): void;
setLineColor(value: string): void;
// 获取坐标信息数组
getLineData(): Array<object>;
}
```
示例:
```html
<template>
<v-sign @init="onSignInit"></v-sign>
<button @click="clear">清空<button>
<button @click="revoke">撤回<button>
<button @click="saveTempFilePath">保存临时图片路径<button>
<button @click="saveImage">保存图片<button>
</template>
<script>
export default {
methods: {
onSignInit(signCtx) {
this.signCtx = signCtx
},
// 清空
clear() {
this.signCtx.clear()
},
// 撤回
revoke() {
this.signCtx.revoke()
},
// 保存为临时图片路径h5返回 base64
saveTempFilePath() {
this.signCtx.canvasToTempFilePath()
},
// 保存 png 图片
saveImage() {
this.signCtx.saveImage()
}
}
}
</script>
```
# 子组件
子组件需要包裹在 `v-sign` 组件内使用!!!
## 按钮控件v-sign-action
### 示例
```html
<template>
<v-sign>
<v-sign-action @save="save" @clear="clear" @prev="revoke"></v-sign-action>
</v-sign>
</template>
<script>
export default {
methods: {
save(tempFilePath) {
console.log(tempFilePath);
},
},
};
</script>
```
### API
### 属性 (Props)
| 属性名 | 类型 | 默认值 | 说明 |
| :---------: | :-----------: | :-----------------------: | :----------------------------------------------------: |
| actions | Array | ["clear", "prev", "save"] | 按钮配置清空clear, 撤回prev 保存图片save |
| border | Boolean | true | 按钮是否有边框 |
| space | String/Number | 12 | 按钮间隔Number 单位 rpx |
| customStyle | Object | - | 根元素自定义样式 |
### 事件Events
点击对应类型按钮触发对应事件, 例如配置了清空clear按钮点击则触发 clear 事件。
---
## 画笔组件v-sign-pen
### 示例
```html
<template>
<v-sign>
<v-sign-pen></v-sign-pen>
</v-sign>
</template>
<script>
export default {};
</script>
```
### API
### 属性 (Props)
| 属性名 | 类型 | 默认值 | 说明 |
| :---------: | :-----: | :--------------: | :--------------------------: |
| type | String | circle | 选项样式,可选 circle \ line |
| label | String | - | 标签 |
| sizes | Array | [2, 4, 6, 8, 10] | 画笔尺寸数组,单位 px |
| color | String | #333 | 选项颜色 |
| activeColor | String | #333 | 选中项颜色 |
| border | Boolean | true | 选中项是否有边框 |
| borderWidth | Number | 4 | 边框大小,单位 rpx |
| space | Number | 20 | 选项间隙,单位 rpx |
| bigger | Number | 2 | 圆点变大变粗倍数 |
| minSize | Number | 4 | 圆点最小尺寸,单位 px |
### 事件Events
| 事件称名 | 说明 | 返回值 |
| :------: | :----------------: | :----------------: |
| @change | 选择画笔大小时触发 | size画笔尺寸大小 |
---
## 颜色选择器组件v-sign-color
### 示例
```html
<template>
<v-sign>
<v-sign-color></v-sign-color>
</v-sign>
</template>
<script>
export default {};
</script>
```
### API
### 属性 (Props)
| 属性名 | 类型 | 默认值 | 说明 |
| :---------: | :-----------: | :-------------------------------------------------------------: | :-------------------: |
| type | String | square | 选项样式,可选 circle |
| color | String | - | 默认颜色 |
| options | Array | ['#333', '#f44236', '#3f51b5', '#2195f3', '#ffeb3b', '#ff9900'] | 备选色 |
| size | Number/String | 44 | 圆/方形大小,单位 rpx |
| tick | Boolean | true | 是否选中打勾 |
| tickSize | Number/String | 24 | 勾大小 |
| borderColor | String | #fff | 边框颜色 |
| border | Boolean | false | 是否有边框 |
| space | Number/String | 16 | 选项间隙 |
### 事件Events
| 事件称名 | 说明 | 返回值 |
| :------: | :------------: | :----: |
| @change | 选择颜色时触发 | color |