NurseStationPersonAppletUl/pages/v-sign/readme.md
2023-04-12 15:39:24 +08:00

246 lines
8.4 KiB
Markdown
Raw 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 |