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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
| <template>
| <div class="scope">
| <div class="h">
| <el-tag size="small" effect="dark" disable-transitions>base</el-tag>
| <span>起步</span>
| </div>
|
| <div class="c">
| <el-button @click="open">预览</el-button>
| <demo-code :files="['crud/base.vue']" />
|
| <!-- 自定义表格组件 -->
| <cl-dialog v-model="visible" title="起步" width="80%">
| <cl-crud ref="Crud">
| <cl-row>
| <cl-refresh-btn />
| <cl-add-btn />
| <cl-multi-delete-btn />
|
| <cl-flex1 />
|
| <cl-search-key />
| </cl-row>
|
| <cl-row>
| <cl-table ref="Table" />
| </cl-row>
|
| <cl-row>
| <cl-flex1 />
| <cl-pagination />
| </cl-row>
|
| <!-- 新增、编辑 -->
| <cl-upsert ref="Upsert" />
| </cl-crud>
| </cl-dialog>
| </div>
|
| <div class="f">
| <span class="date">2024-01-01</span>
| </div>
| </div>
| </template>
|
| <script setup lang="ts">
| import { useCrud, useTable, useUpsert } from '@cool-vue/crud';
| import { ref } from 'vue';
| import { useDict } from '/$/dict';
| import { useCool } from '/@/cool';
|
| const { service } = useCool();
| const { dict } = useDict();
|
| // cl-crud 配置
| const Crud = useCrud(
| {
| // test 为测试数据模式,详细说明移步到 service 例子
| service: 'test'
| },
| app => {
| //【很重要】首次请求,数据一并添加到请求参数中
| app.refresh({
| size: 10,
| status: 1
| });
| }
| );
|
| // cl-table 配置
| const Table = useTable({
| autoHeight: false,
| contextMenu: ['refresh'],
|
| columns: [
| {
| type: 'selection'
| },
| {
| label: '姓名',
| prop: 'name',
| minWidth: 140
| },
| {
| label: '手机号',
| prop: 'phone',
| minWidth: 140
| },
| {
| label: '工作',
| prop: 'occupation',
| dict: dict.get('occupation'),
| minWidth: 140
| },
| {
| label: '创建时间',
| prop: 'createTime',
| minWidth: 170,
| sortable: 'desc'
| },
| {
| type: 'op',
| buttons: ['edit', 'delete']
| }
| ]
| });
|
| // cl-upsert 配置
| const Upsert = useUpsert({
| items: [
| {
| label: '姓名',
| prop: 'name',
| component: {
| name: 'el-input'
| }
| },
| {
| label: '手机号',
| prop: 'phone',
| component: {
| name: 'el-input'
| }
| },
| {
| label: '工作',
| prop: 'occupation',
| component: {
| name: 'cl-select',
| props: {
| tree: true,
| checkStrictly: true,
| options: dict.get('occupation')
| }
| }
| }
| ]
| });
|
| const visible = ref(false);
|
| function open() {
| visible.value = true;
| }
| </script>
|
|