# 如何创建一个页面
# 步骤
- 在
src/views/
目录创建一个模块目录,例 customer
页面目录
所有业务页面都应改存放于 src/views/
目录,并按照模块划分目录。如果有必要,可以在各模块目录内创建子目录以存放子模块页面。
- 在上述步骤中创建的 customer 目录中创建
index.vue
入口页面
每个模块都应使用 index.vue
作为入口页面,子模块的入口也是如此。同时,请不要在文件标题上添加与模块目录同名的前缀,比如 customer-create.vue,因为模块目录已经指明了该目录下文件的目的。
- 将页面加入到路由,以便可以通过菜单访问该页面。
添加页面路由
框架的路由位于 src/router/
目录,配置方法参考 router
- 刷新一下页面,现在可以看到侧边栏菜单中已经出现配置的路由了。
排除错误
此时如果页面无法加载或报错了,很可能是你配置的路由有错误或入口页面包含错误、缺少依赖引用等。
- 接下来就可以进行页面开发了。
# 示例
你可以直接复制使用此处代码
<template>
<page class="filter-table-demo" class-name="hw100">
<panel
:title-fixed="true"
title="表具列表"
class="h100 w-2-1"
>
<common-table
v-model="params"
:columns="columns"
:filters="filters"
:page="page"
:table-setting="tableSetting"
:list="data"
:loading="loading"
:actions="tableActions"
class="p15 pb0"
@select="rowSelect"
>
<template #meterNo-cell-prefix>#</template>
<template #meterType-cell="{cell}">
{{ meterTypeMap[cell] }}
</template>
<template #meterModel-cell-suffix="{cell}">
{{ cell.indexOf('2018') > -1 ? '已停产' : '' }}
</template>
</common-table>
</panel>
<panel
class="h100 w-2-1"
>
<action-toolbar :actions="formActions">
<template #left>
<span class="f16">表具详述</span>
</template>
</action-toolbar>
<common-form
ref="form"
v-model="formData"
:fields="formFields"
class="pl15 pr0"
/>
</panel>
</page>
</template>
<script>
import { getMeterList } from '@/api/meter'
export default {
name: 'filter-table-demo',
data () {
return {
params: {},
columns: [],
filters: ['meterNo', 'meterType', 'meterStatus'],
page: { total: 0, page: 1, length: 20 },
tableSetting: {
select: 'single'
},
tableActions: [],
formActions: [],
data: [],
loading: false,
formFields: [],
formData: {}
}
},
methods: {
rowSelect (val) {
console.info('row select =>', val)
this.formData = val
},
getList () {
this.loading = true
getMeterList(this.params).then(response => {
this.data = response.data.items
this.page.total = response.data.total
setTimeout(() => {
this.loading = false
}, 200)
})
}
},
watch: {
params: {
handler: function (val) {
this.getList(val)
},
deep: true
},
formData: {
handler: function (val) {
console.info(JSON.stringify(val, null, 2))
},
deep: true
}
}
}
</script>
<style lang="scss" scoped>
</style>
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
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