数据字典

... 2021-7-29 About 2 min

# 数据字典

Tips

更多字典详细用法参考Form组件数据字典

//使用字典需要引入axios
import axios from 'axios'
Vue.use(Avue,{axios})

//老版本需要使用如下
//main.js
window.axios = axios
1
2
3
4
5
6
7

# 字典使用

本地字典配置dicData为一个Array数组,网络字典可以配置dicUrl字段,自动加载字典到对应的组件中,注意返回的字典中 value 类型和数据的类型必须要对应,比如都是字符串或者都是数字。配置dicFlagtrue,打开表单的时候会重新请求字典

<avue-crud :data="data" :option="option" ></avue-crud>

<script>
let baseUrl = 'https://cli.avuejs.com/api/area'
export default {
    data() {
      return {
        data: [
          {
            province: '110000',
            cascader:[0,1],
          }, {
            province: '130000',
            cascader:[0,2],
          }
        ],
        option:{
          column:[{
              label:'本地字典',
              prop:'cascader',
              type:'cascader',
              dicData:[{
                label:'一级',
                value:0,
                children:[
                  {
                    label:'一级1',
                    value:1,
                  },{
                    label:'一级2',
                    value:2,
                  }
                ]
              }],
            },
            {
              label:'网络字典',
              prop:'province',
              type:'select',
              props: {
                  label: 'name',
                  value: 'code'
              },
              dicFlag:true,
              dicUrl:`${baseUrl}/getProvince`
            }]
        }
      }
    }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Expand Copy

# 字典联动

Tips

2.9.0+

cascader为需要联动的子选择框prop值,填写多个就会形成一对多的关系,表格加载联动数据需要调用内置方法dicInit

<avue-crud ref="crud" :data="data" :option="option" ></avue-crud>

<script>
let baseUrl = 'https://cli.avuejs.com/api/area'
export default {
    data() {
      return {
        data: [],
        option:{
          column:[
             {
              label:'姓名',
              prop:'name',
            }, {
              label:'性别',
              prop:'sex'
            },{
              label:'省份',
              prop:'province',
              type:'select',
              cascader: ['city'],
              cascaderIndex:1,
              props: {
                  label: 'name',
                  value: 'code'
              },
              dicUrl:`${baseUrl}/getProvince`
            },
            {
              width: 120,
              label: '城市',
              prop: 'city',
              type: 'select',
              cascader: ['area'],
              cascaderIndex:1,
              cell: true,
              props: {
                label: 'name',
                value: 'code'
              },
              dicUrl: `${baseUrl}/getCity/{{key}}`,
              rules: [
                {
                  required: true,
                  message: '请选择城市',
                  trigger: 'blur'
                }
              ]
            },
            {
              width: 120,
              label: '地区',
              prop: 'area',
              cell: true,
              props: {
                label: 'name',
                value: 'code'
              },
              type: 'select',
              dicUrl: `${baseUrl}/getArea/{{key}}`,
              rules: [
                {
                  required: true,
                  message: '请选择地区',
                  trigger: 'blur'
                }
              ]
            }
          ]
        }
      }
    },
    mounted(){
      this.data=[{
          name:'张三',
          sex:'男',
          province: '110000',
          city: '110100',
          area: '110101',
        }, {
          name:'李四',
          sex:'女',
          province: '130000',
          city: '130200',
          area: '130202',
        }]
      this.$nextTick(()=>{
        //放在数据加载完后执行
        this.$refs.crud.dicInit('cascader');
      })
    }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Expand Copy
Last update: August 14, 2024 15:38
Contributors: smallwei
您正在浏览基于 Vue 2.x 的 Avue 文档; 点击这里 查看 Vue 3.x 的升级版本