captcha.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <el-row class="form-group">
  3. <el-col :span="3" style="min-height:50px;padding-top:10px;">
  4. <label style="margin-left:10px;vertical-align: middle;" class="control-label">{{label ? label : 'Text'}}</label>
  5. </el-col>
  6. <el-col :span="10">
  7. <el-input
  8. type="text"
  9. v-model="text"
  10. :placeholder="placeholder ? placeholder : ''"
  11. :disabled="disabled ? true : false"
  12. :name="name ? name : 'captcha'"
  13. :minlength="minlength ? parseInt(minlength) : 0"
  14. :maxlength="maxlength ? parseInt(maxlength) : 200"
  15. :auto-complete="autoComplete ? 'on' : 'off'"
  16. :readonly="readonly ? true : false"
  17. :autofocus="autofocus ? true : false"
  18. :show-password="showPassword ? true : false"
  19. :id="name"
  20. :size="size ? size : 'large'">
  21. </el-input>
  22. </el-col>
  23. <el-col :span="11">
  24. <div class="classJs">
  25. <div>
  26. <img style="cursor: pointer" v-bind:src="captchaBindSrc" v-on:click="captchaChangeSrc" title="点击切换" alt="">
  27. </div>
  28. </div>
  29. </el-col>
  30. </el-row>
  31. </template>
  32. <script>
  33. export default {
  34. props: ['label','value','placeholder','disabled','name','minlength','maxlength','readonly','autofocus','autoComplete','size','src','showPassword'],
  35. data() {
  36. return {
  37. text: this.value ? this.value : '',
  38. captchaBindSrc: this.src
  39. };
  40. },
  41. mounted() {},
  42. methods: {
  43. captchaChangeSrc: function () {
  44. this.captchaBindSrc = this.captchaBindSrc.split('&')[0] + '&random=' + Math.random();
  45. }
  46. }
  47. }
  48. </script>
  49. <style scoped>
  50. .classJs {
  51. margin-left: 10px;
  52. vertical-align: middle;
  53. height:42px;
  54. line-height:42px;
  55. }
  56. .red{
  57. color: red;
  58. }
  59. </style>