input.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. 'use strict';
  2. /**
  3. * vue自定义组件
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/11/27
  7. * @version
  8. */
  9. // 文本输入框
  10. Vue.component('input-text', {
  11. props: ['label', 'id', 'name', 'value', 'required', 'placeholder', 'maxlength', 'readonly', 'password', 'disabled'],
  12. template: '' +
  13. '<div class="form-group" :class="{ required: required }">' +
  14. '<label>{{ label }}</label>' +
  15. '<input :type="[ password ? \'password\' : \'text\']" :id="id" :name="name" :value="value" :placeholder="placeholder" ' +
  16. ':maxlength="maxlength" :readonly="readonly" :disabled="disabled" class="form-control form-control-sm"/>' +
  17. '</div>'
  18. });
  19. // 长文本输入框
  20. Vue.component('input-textarea', {
  21. props: ['label', 'id', 'name', 'value', 'required', 'placeholder', 'rows'],
  22. template: '' +
  23. '<div class="form-group row" :class="{ required: required }">' +
  24. '<label class="col-sm-2 text-right">{{ label }}</label>' +
  25. '<div class="col-lg-6">' +
  26. '<textarea class="form-control" :id="id" :name="name" :rows="rows" :placeholder="placeholder">{{ value }}</textarea>' +
  27. '</div>' +
  28. '<div class="col-lg-4"></div>' +
  29. '</div>'
  30. });
  31. // 单选框输入
  32. Vue.component('input-radio', {
  33. props: ['label', 'id', 'name', 'value', 'required', 'items'],
  34. template: '' +
  35. '<div class="form-group row" :class="{ required: required }">' +
  36. '<label class="col-sm-2 text-right">{{ label }}</label>' +
  37. '<div class="col-lg-6">' +
  38. '<label class="radio-inline" v-for="(item, index) of items">' +
  39. '<input type="radio" :name="name" :value="item.value" :checked="item.value.toString() === value"> {{ item.text }} &nbsp;' +
  40. '</label>' +
  41. '</div>' +
  42. '<div class="col-lg-4"></div>' +
  43. '</div>'
  44. });
  45. // 下拉选择
  46. Vue.component('dropdown', {
  47. props: ['id', 'value', 'name', 'options', 'placeholder', 'size'],
  48. template: '' +
  49. '<select class="form-control" :class="[ \'form-control-\' + size ]" :name="name" :id="id">' +
  50. '<option value="">{{ placeholder }}</option>' +
  51. '<option v-if="option !== null && option !== undefined && typeof option == \'string\'" v-for="(option, index) of options" :value="index" :selected="index.toString() === value">{{ option }}</option>' +
  52. '<option v-if="option !== null && option !== undefined && option instanceof Object" v-for="(option, index) of options" :value="index" :selected="option.id.toString() === value">{{ option.name }}</option>' +
  53. '</select>'
  54. });
  55. // 下拉框(Bootstrap组件)
  56. Vue.component('input-dropdown', {
  57. props: ['label', 'id', 'name', 'value', 'required', 'options', 'placeholder', 'size'],
  58. template: '' +
  59. '<div class="form-group row" :class="{ required: required }">' +
  60. '<label class="col-sm-2 col-form-label text-right">{{ label }}</label>' +
  61. '<div class="col-lg-6">' +
  62. '<dropdown :id="id" class="form-control" :name="name" :options="options" :placeholder="placeholder" ' +
  63. ':value="value" :size="size"></dropdown>' +
  64. '</div>' +
  65. '<div class="col-lg-4"></div>' +
  66. '</div>'
  67. });