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
| <template>
| <cl-crud ref="Crud">
| <cl-view-head />
|
| <cl-row>
| <!-- 刷新按钮 -->
| <cl-refresh-btn />
| <!-- 新增按钮 -->
| <cl-add-btn />
| <!-- 删除按钮 -->
| <cl-multi-delete-btn />
| <cl-flex1 />
| <!-- 关键字搜索 -->
| <cl-search-key placeholder="搜索用户昵称" />
| </cl-row>
|
| <cl-row>
| <!-- 数据表格 -->
| <cl-table ref="Table" />
| </cl-row>
|
| <cl-row>
| <cl-flex1 />
| <!-- 分页控件 -->
| <cl-pagination />
| </cl-row>
|
| <!-- 新增、编辑 -->
| <cl-upsert ref="Upsert" />
| </cl-crud>
| </template>
|
| <script lang="ts" name="market-coupon-user" setup>
| import { useCrud, useTable, useUpsert } from '@cool-vue/crud';
| import { useCool } from '/@/cool';
| import { reactive } from 'vue';
| import UserSelect from '/$/user/components/user-select.vue';
|
| const { service, route, refs, setRefs } = useCool();
|
| const options = reactive({
| status: [
| { label: '未使用', value: 0, type: 'info' },
| { label: '已使用', value: 1, type: 'success' }
| ]
| });
|
| // cl-upsert
| const Upsert = useUpsert({
| dialog: {
| width: '600px'
| },
| items: [
| {
| label: '选择用户',
| prop: 'userId',
| component: {
| vm: UserSelect,
| ref: setRefs('userSelect'),
| props: {
| multiple: false
| }
| },
| required: true
| },
| {
| label: '状态',
| prop: 'status',
| component: {
| name: 'el-radio-group',
| options: options.status
| },
| value: 0,
| required: true
| }
| ],
| onOpened(data) {
| if (Upsert.value?.mode != 'add') {
| service.user.info
| .info({
| id: data.userId
| })
| .then(res => {
| refs.userSelect.select(res);
| });
| }
| },
| onSubmit(data, { next }) {
| next({
| ...data,
| couponId: route.query.id
| });
| }
| });
|
| // cl-table
| const Table = useTable({
| columns: [
| { type: 'selection' },
| { label: '用户昵称', prop: 'nickName', minWidth: 140 },
| {
| label: '状态',
| prop: 'status',
| dict: options.status,
| minWidth: 120
| },
| { label: '使用时间', prop: 'useTime', minWidth: 160, sortable: 'custom' },
| {
| label: '创建时间',
| prop: 'createTime',
| minWidth: 160,
| sortable: 'desc'
| },
| { type: 'op', buttons: ['edit', 'delete'] }
| ]
| });
|
| // cl-crud
| const Crud = useCrud(
| {
| service: service.market.coupon.user
| },
| app => {
| app.refresh({
| couponId: route.query.id
| });
| }
| );
| </script>
|
|