添加提货功能切分支
This commit is contained in:
109
components/code/code.vue
Normal file
109
components/code/code.vue
Normal file
@ -0,0 +1,109 @@
|
||||
<template>
|
||||
<view class="canvas-img-code"
|
||||
><canvas :style="{ width: width + 'px', height: height + 'px' }" canvas-id="imgcanvas" @tap="refresh"></canvas
|
||||
></view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
width: 120,
|
||||
height: 30,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setTimeout(() => {
|
||||
this.init()
|
||||
}, 300)
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
let context = uni.createCanvasContext('imgcanvas', this),
|
||||
w = this.width,
|
||||
h = this.height
|
||||
context.setFillStyle('white')
|
||||
context.setLineWidth(5)
|
||||
context.fillRect(0, 0, w, h)
|
||||
let pool = [
|
||||
'A',
|
||||
'B',
|
||||
'C',
|
||||
'D',
|
||||
'E',
|
||||
'F',
|
||||
'G',
|
||||
'H',
|
||||
'J',
|
||||
'K',
|
||||
'L',
|
||||
'M',
|
||||
'N',
|
||||
'P',
|
||||
'Q',
|
||||
'R',
|
||||
'S',
|
||||
'T',
|
||||
'U',
|
||||
'V',
|
||||
'W',
|
||||
'S',
|
||||
'Y',
|
||||
'Z',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'7',
|
||||
'8',
|
||||
'9',
|
||||
],
|
||||
str = ''
|
||||
for (let i = 0; i < 4; i++) {
|
||||
let c = pool[this.rn(0, pool.length - 1)] //<2F><><EFBFBD>榊<EFBFBD><E6A68A>絖<EFBFBD>
|
||||
let deg = this.rn(-20, 20) //絖<>篏<EFBFBD><E7AF8F><EFBFBD><EFBFBD><EFBFBD>莉<EFBFBD><E88E89>綺<EFBFBD>
|
||||
context.setFontSize(18)
|
||||
context.setTextBaseline('top')
|
||||
context.setFillStyle(this.rc(80, 150))
|
||||
context.save()
|
||||
context.translate(30 * i + 15, parseInt(h / 1.5))
|
||||
context.rotate((deg * Math.PI) / 180)
|
||||
context.fillText(c, -15 + 5, -15)
|
||||
context.restore()
|
||||
str += c
|
||||
}
|
||||
uni.setStorage({
|
||||
key: 'imgcode',
|
||||
data: str.toLowerCase(),
|
||||
})
|
||||
for (let i = 0; i < 40; i++) {
|
||||
context.beginPath()
|
||||
context.arc(this.rn(0, w), this.rn(0, h), 1, 0, 2 * Math.PI)
|
||||
context.closePath()
|
||||
context.setFillStyle(this.rc(150, 200))
|
||||
context.fill()
|
||||
}
|
||||
context.draw()
|
||||
},
|
||||
rc(min, max) {
|
||||
let r = this.rn(min, max)
|
||||
let g = this.rn(min, max)
|
||||
let b = this.rn(min, max)
|
||||
return 'rgb(' + r + ',' + g + ',' + b + ')'
|
||||
},
|
||||
rn(max, min) {
|
||||
return parseInt(Math.random() * (max - min)) + min
|
||||
},
|
||||
refresh() {
|
||||
this.init()
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.canvas-img-code {
|
||||
// display: inline-block;
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user