input.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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', 'msg'],
  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. '<small class="form-text text-danger" v-if="readonly && msg !== null && msg !== undefined ">{{ msg }}</small>' +
  18. '</div>'
  19. });
  20. // 长文本输入框
  21. Vue.component('input-textarea', {
  22. props: ['label', 'id', 'name', 'value', 'required', 'placeholder', 'rows'],
  23. template: '' +
  24. '<div class="form-group row" :class="{ required: required }">' +
  25. '<label class="col-sm-2 text-right">{{ label }}</label>' +
  26. '<div class="col-lg-6">' +
  27. '<textarea class="form-control" :id="id" :name="name" :rows="rows" :placeholder="placeholder">{{ value }}</textarea>' +
  28. '</div>' +
  29. '<div class="col-lg-4"></div>' +
  30. '</div>'
  31. });
  32. // 单选框输入
  33. Vue.component('input-radio', {
  34. props: ['label', 'id', 'name', 'value', 'required', 'items'],
  35. template: '' +
  36. '<div class="form-group row" :class="{ required: required }">' +
  37. '<label class="col-sm-2 text-right">{{ label }}</label>' +
  38. '<div class="col-lg-6">' +
  39. '<label class="radio-inline" v-for="(item, index) of items">' +
  40. '<input type="radio" :name="name" :value="item.value" :checked="item.value.toString() === value"> {{ item.text }} &nbsp;' +
  41. '</label>' +
  42. '</div>' +
  43. '<div class="col-lg-4"></div>' +
  44. '</div>'
  45. });
  46. // 下拉选择
  47. Vue.component('dropdown', {
  48. props: ['id', 'value', 'name', 'options', 'placeholder', 'size'],
  49. template: '' +
  50. '<select class="form-control" :class="[ \'form-control-\' + size ]" :name="name" :id="id">' +
  51. '<option value="">{{ placeholder }}</option>' +
  52. '<option v-if="option !== null && option !== undefined && typeof option == \'string\'" v-for="(option, index) of options" :value="index" :selected="index.toString() === value">{{ option }}</option>' +
  53. '<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>' +
  54. '</select>'
  55. });
  56. // 下拉框(Bootstrap组件)
  57. Vue.component('input-dropdown', {
  58. props: ['label', 'id', 'name', 'value', 'required', 'options', 'placeholder', 'size'],
  59. template: '' +
  60. '<div class="form-group row" :class="{ required: required }">' +
  61. '<label class="col-sm-2 col-form-label text-right">{{ label }}</label>' +
  62. '<div class="col-lg-6">' +
  63. '<dropdown :id="id" class="form-control" :name="name" :options="options" :placeholder="placeholder" ' +
  64. ':value="value" :size="size"></dropdown>' +
  65. '</div>' +
  66. '<div class="col-lg-4"></div>' +
  67. '</div>'
  68. });