当前位置:   article > 正文

el-select 自定义组件下拉框_el-select自定义下拉框

el-select自定义下拉框

一 展示效果

1 新增效果

列表数据正常

2 修改效果

回显正常。

二 数据库设计

  1. CREATE TABLE `dosage_dict` (
  2. `ID` varchar(32) NOT NULL COMMENT '主键ID',
  3. `CREATE_USER` varchar(100) DEFAULT NULL COMMENT '创建人',
  4. `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  5. `UPDATE_USER` varchar(100) DEFAULT NULL COMMENT '更新人',
  6. `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
  7. `DOSAGE` varchar(100) NOT NULL COMMENT '剂型',
  8. `DOSAGE_CLASS` varchar(100) NOT NULL COMMENT '剂型分类',
  9. PRIMARY KEY (`ID`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='剂型字典';

三 后端返回的下拉列表数据

四 自定义组件

1 位置

2 代码

  1. <template>
  2. <div class="areaSelect flex">
  3. <!-- 剂型选择框 -->
  4. <el-select
  5. filterable
  6. :disabled="false"
  7. v-model="dosageId"
  8. :size="''"
  9. placeholder="请选择"
  10. @change="changeDosage($event)">
  11. <el-option
  12. v-for="dosage in dosageList"
  13. :key="dosage.id"
  14. :label="dosage.dosage+'_'+dosage.dosageClass"
  15. :value="dosage.id">
  16. </el-option>
  17. </el-select>
  18. </div>
  19. </template>
  20. <script>
  21. export default {
  22. name: 'dosageSelect',
  23. props: {
  24. dosageId: {
  25. type: String
  26. },
  27. dosage: {
  28. type: Object,
  29. default: () => {
  30. return {
  31. dosageId: ''
  32. }
  33. }
  34. }
  35. },
  36. data () {
  37. return {
  38. dosageList: []
  39. }
  40. },
  41. mounted () {
  42. this.getDosageList()
  43. },
  44. methods: {
  45. resetProvince () {
  46. this.province = ''
  47. },
  48. changeDosage (data) {
  49. debugger
  50. if (this.dosageId !== '') {
  51. this.$emit(
  52. 'dosage', [{
  53. dosageId: this.dosageId
  54. }]
  55. )
  56. }
  57. },
  58. // 从后台获得剂型数据
  59. async getDosageList () {
  60. let url = '/base/dosageDict/queryAll'
  61. let data = await this.$http.get(url)
  62. this.dosageList = data.data.list
  63. }
  64. }
  65. }
  66. </script>

五 组件在 main.js 中注册

  1. // 剂型选择
  2. import DosageSelect from './components/dosageSelect'
  3. // 剂型选择
  4. Vue.use(DosageSelect)
  5. // 剂型选择
  6. Vue.component('dosageSelect', DosageSelect)

六 父组件布局

  1. <el-form-item label="剂型" prop="dosageId">
  2. <dosageSelect
  3. :dosageId="dataForm.dosageId"
  4. @dosage="changeDosage($event)"
  5. v-if="true"
  6. ref="selectDosage"
  7. ></dosageSelect>
  8. </el-form-item>

七 数据定义

  1. dataForm: {
  2. id: 0,
  3. dosageId: ''
  4. },

八 事件处理

  1. // 剂型框改变时,传递出来已选择的剂型Id
  2. changeDosage (data) {
  3. debugger
  4. this.dataForm.dosageId = data[0].dosageId
  5. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/104782
推荐阅读