c_select.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <div class="slider-box">
  3. <div class="c_row-item">
  4. <Col class="label" span="4" v-if="datas[name].title">
  5. {{ datas[name].title }}
  6. </Col>
  7. <Col span="19" class="slider-box">
  8. <Select v-model="datas[name].activeValue" clearable style="width: 350px" @on-change="sliderChange">
  9. <Option v-for="(item, index) in datas[name].list" :value="item.activeValue" :key="index">{{
  10. item.title
  11. }}</Option>
  12. </Select>
  13. </Col>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'c_select',
  20. props: {
  21. name: {
  22. type: String,
  23. },
  24. configData: {
  25. type: null,
  26. },
  27. configNum: {
  28. type: Number | String,
  29. default: 'default',
  30. },
  31. },
  32. data() {
  33. return {
  34. defaults: {},
  35. datas: this.configData[this.configNum],
  36. };
  37. },
  38. mounted() {
  39. if (this.name === 'selectConfig') {
  40. this.bus.$on('upData', (data) => {
  41. this.datas[this.name].list = data;
  42. this.bus.$off();
  43. });
  44. }
  45. },
  46. watch: {
  47. configData: {
  48. handler(nVal, oVal) {
  49. this.datas = nVal[this.configNum];
  50. },
  51. deep: true,
  52. },
  53. },
  54. methods: {
  55. sliderChange(e) {
  56. this.$emit('getConfig', { name: 'select', values: e });
  57. },
  58. },
  59. };
  60. </script>
  61. <style scoped>
  62. .slider-box {
  63. margin-top: 10px;
  64. }
  65. </style>