12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <view class="flex" style="width:80%;margin:30px auto 0">
- <view class="flex-sub">
- <input type="text" class=" verifyInput">
- </view>
- <view class="ValidCode disabled-select flex-sub" :style="`width:${width}; height:${height}`" @click="refreshCode">
- <text v-for="(item, index) in codeList" :key="index" :style="getStyle(item)">{{item.code}}</text>
- </view>
- </view>
-
- </template>
- <script>
- export default {
- name: 'validCode',
- props: {
- width: {
- type: String,
- default: '100px'
- },
- height: {
- type: String,
- default: '40px'
- },
- length: {
- type: Number,
- default: 4
- }
- },
- data () {
- return {
- codeList: []
- }
- },
- mounted () {
- this.createdCode()
- },
- methods: {
- refreshCode () {
- this.createdCode()
- },
- createdCode () {
- let len = this.length,
- codeList = [],
- chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789',
- charsLen = chars.length
- // 生成
- for (let i = 0; i < len; i++) {
- let rgb = [Math.round(Math.random() * 220), Math.round(Math.random() * 240), Math.round(Math.random() * 200)]
- codeList.push({
- code: chars.charAt(Math.floor(Math.random() * charsLen)),
- color: `rgb(${rgb})`,
- fontSize: `1${[Math.floor(Math.random() * 10)]}px`,
- padding: `${[Math.floor(Math.random() * 10)]}px`,
- transform: `rotate(${Math.floor(Math.random() * 90) - Math.floor(Math.random() * 90)}deg)`
- })
- }
- // 指向
- this.codeList = codeList
- // 将当前数据派发出去
- this.$emit('update:value', codeList.map(item => item.code).join(''))
- },
- getStyle (data) {
- return `color: ${data.color}; font-size: ${data.fontSize}; padding: ${data.padding}; transform: ${data.transform}`
- }
- }
- }
- </script>
- <style scoped lang="scss">
- .ValidCode{
- display: flex;
- justify-content: center;
- align-items: center;
- cursor: pointer;
- span{
- display: inline-block;
- }
- }
- .verifyInput{
- width: 180rpx;
- height: 56rpx;
- opacity: 1;
- background: #ffffff;
- border: 1rpx solid #bfbfbf;
- border-radius: 5rpx;
- }
- </style>
|