Skip to content

Commit c9d5ec2

Browse files
author
puhui999
committed
fix: 主子表 demo03 List props
1 parent 1694827 commit c9d5ec2

File tree

3 files changed

+90
-74
lines changed

3 files changed

+90
-74
lines changed

src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,40 @@
22
<!-- 列表 -->
33
<ContentWrap>
44
<el-button
5-
type="primary"
5+
v-hasPermi="['infra:demo03-student:create']"
66
plain
7+
type="primary"
78
@click="openForm('create')"
8-
v-hasPermi="['infra:demo03-student:create']"
99
>
10-
<Icon icon="ep:plus" class="mr-5px" /> 新增
10+
<Icon class="mr-5px" icon="ep:plus" />
11+
新增
1112
</el-button>
12-
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
13-
<el-table-column label="编号" align="center" prop="id" />
14-
<el-table-column label="名字" align="center" prop="name" />
15-
<el-table-column label="分数" align="center" prop="score" />
13+
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
14+
<el-table-column align="center" label="编号" prop="id" />
15+
<el-table-column align="center" label="名字" prop="name" />
16+
<el-table-column align="center" label="分数" prop="score" />
1617
<el-table-column
17-
label="创建时间"
18+
:formatter="dateFormatter"
1819
align="center"
20+
label="创建时间"
1921
prop="createTime"
20-
:formatter="dateFormatter"
2122
width="180px"
2223
/>
23-
<el-table-column label="操作" align="center">
24+
<el-table-column align="center" label="操作">
2425
<template #default="scope">
2526
<el-button
27+
v-hasPermi="['infra:demo03-student:update']"
2628
link
2729
type="primary"
2830
@click="openForm('update', scope.row.id)"
29-
v-hasPermi="['infra:demo03-student:update']"
3031
>
3132
编辑
3233
</el-button>
3334
<el-button
35+
v-hasPermi="['infra:demo03-student:delete']"
3436
link
3537
type="danger"
3638
@click="handleDelete(scope.row.id)"
37-
v-hasPermi="['infra:demo03-student:delete']"
3839
>
3940
删除
4041
</el-button>
@@ -43,17 +44,17 @@
4344
</el-table>
4445
<!-- 分页 -->
4546
<Pagination
46-
:total="total"
47-
v-model:page="queryParams.pageNo"
4847
v-model:limit="queryParams.pageSize"
48+
v-model:page="queryParams.pageNo"
49+
:total="total"
4950
@pagination="getList"
5051
/>
5152
</ContentWrap>
5253
<!-- 表单弹窗:添加/修改 -->
5354
<Demo03CourseForm ref="formRef" @success="getList" />
5455
</template>
5556

56-
<script setup lang="ts">
57+
<script lang="ts" setup>
5758
import { dateFormatter } from '@/utils/formatTime'
5859
import * as Demo03StudentApi from '@/api/infra/demo/demo03/erp'
5960
import Demo03CourseForm from './Demo03CourseForm.vue'
@@ -62,25 +63,28 @@ const { t } = useI18n() // 国际化
6263
const message = useMessage() // 消息弹窗
6364
6465
const props = defineProps<{
65-
studentId: undefined // 学生编号(主表的关联字段)
66+
studentId?: number // 学生编号(主表的关联字段)
6667
}>()
6768
const loading = ref(false) // 列表的加载中
6869
const list = ref([]) // 列表的数据
6970
const total = ref(0) // 列表的总页数
7071
const queryParams = reactive({
7172
pageNo: 1,
7273
pageSize: 10,
73-
studentId: undefined
74+
studentId: undefined as unknown
7475
})
7576
7677
/** 监听主表的关联字段的变化,加载对应的子表数据 */
7778
watch(
7879
() => props.studentId,
79-
(val) => {
80+
(val: number) => {
81+
if (!val) {
82+
return
83+
}
8084
queryParams.studentId = val
8185
handleQuery()
8286
},
83-
{ immediate: false }
87+
{ immediate: true, deep: true }
8488
)
8589
8690
/** 查询列表 */

src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,40 @@
22
<!-- 列表 -->
33
<ContentWrap>
44
<el-button
5-
type="primary"
5+
v-hasPermi="['infra:demo03-student:create']"
66
plain
7+
type="primary"
78
@click="openForm('create')"
8-
v-hasPermi="['infra:demo03-student:create']"
99
>
10-
<Icon icon="ep:plus" class="mr-5px" /> 新增
10+
<Icon class="mr-5px" icon="ep:plus" />
11+
新增
1112
</el-button>
12-
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
13-
<el-table-column label="编号" align="center" prop="id" />
14-
<el-table-column label="名字" align="center" prop="name" />
15-
<el-table-column label="班主任" align="center" prop="teacher" />
13+
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
14+
<el-table-column align="center" label="编号" prop="id" />
15+
<el-table-column align="center" label="名字" prop="name" />
16+
<el-table-column align="center" label="班主任" prop="teacher" />
1617
<el-table-column
17-
label="创建时间"
18+
:formatter="dateFormatter"
1819
align="center"
20+
label="创建时间"
1921
prop="createTime"
20-
:formatter="dateFormatter"
2122
width="180px"
2223
/>
23-
<el-table-column label="操作" align="center">
24+
<el-table-column align="center" label="操作">
2425
<template #default="scope">
2526
<el-button
27+
v-hasPermi="['infra:demo03-student:update']"
2628
link
2729
type="primary"
2830
@click="openForm('update', scope.row.id)"
29-
v-hasPermi="['infra:demo03-student:update']"
3031
>
3132
编辑
3233
</el-button>
3334
<el-button
35+
v-hasPermi="['infra:demo03-student:delete']"
3436
link
3537
type="danger"
3638
@click="handleDelete(scope.row.id)"
37-
v-hasPermi="['infra:demo03-student:delete']"
3839
>
3940
删除
4041
</el-button>
@@ -43,17 +44,17 @@
4344
</el-table>
4445
<!-- 分页 -->
4546
<Pagination
46-
:total="total"
47-
v-model:page="queryParams.pageNo"
4847
v-model:limit="queryParams.pageSize"
48+
v-model:page="queryParams.pageNo"
49+
:total="total"
4950
@pagination="getList"
5051
/>
5152
</ContentWrap>
5253
<!-- 表单弹窗:添加/修改 -->
5354
<Demo03GradeForm ref="formRef" @success="getList" />
5455
</template>
5556

56-
<script setup lang="ts">
57+
<script lang="ts" setup>
5758
import { dateFormatter } from '@/utils/formatTime'
5859
import * as Demo03StudentApi from '@/api/infra/demo/demo03/erp'
5960
import Demo03GradeForm from './Demo03GradeForm.vue'
@@ -62,25 +63,28 @@ const { t } = useI18n() // 国际化
6263
const message = useMessage() // 消息弹窗
6364
6465
const props = defineProps<{
65-
studentId: undefined // 学生编号(主表的关联字段)
66+
studentId?: number // 学生编号(主表的关联字段)
6667
}>()
6768
const loading = ref(false) // 列表的加载中
6869
const list = ref([]) // 列表的数据
6970
const total = ref(0) // 列表的总页数
7071
const queryParams = reactive({
7172
pageNo: 1,
7273
pageSize: 10,
73-
studentId: undefined
74+
studentId: undefined as unknown
7475
})
7576
7677
/** 监听主表的关联字段的变化,加载对应的子表数据 */
7778
watch(
7879
() => props.studentId,
79-
(val) => {
80+
(val: number) => {
81+
if (!val) {
82+
return
83+
}
8084
queryParams.studentId = val
8185
handleQuery()
8286
},
83-
{ immediate: false }
87+
{ immediate: true, deep: true }
8488
)
8589
8690
/** 查询列表 */

src/views/infra/demo/demo03/erp/index.vue

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
<ContentWrap>
55
<!-- 搜索工作栏 -->
66
<el-form
7-
class="-mb-15px"
8-
:model="queryParams"
97
ref="queryFormRef"
108
:inline="true"
9+
:model="queryParams"
10+
class="-mb-15px"
1111
label-width="68px"
1212
>
1313
<el-form-item label="名字" prop="name">
1414
<el-input
1515
v-model="queryParams.name"
16-
placeholder="请输入名字"
16+
class="!w-240px"
1717
clearable
18+
placeholder="请输入名字"
1819
@keyup.enter="handleQuery"
19-
class="!w-240px"
2020
/>
2121
</el-form-item>
2222
<el-form-item label="性别" prop="sex">
23-
<el-select v-model="queryParams.sex" placeholder="请选择性别" clearable class="!w-240px">
23+
<el-select v-model="queryParams.sex" class="!w-240px" clearable placeholder="请选择性别">
2424
<el-option
2525
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
2626
:key="dict.value"
@@ -32,33 +32,41 @@
3232
<el-form-item label="创建时间" prop="createTime">
3333
<el-date-picker
3434
v-model="queryParams.createTime"
35-
value-format="YYYY-MM-DD HH:mm:ss"
36-
type="daterange"
37-
start-placeholder="开始日期"
38-
end-placeholder="结束日期"
3935
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
4036
class="!w-240px"
37+
end-placeholder="结束日期"
38+
start-placeholder="开始日期"
39+
type="daterange"
40+
value-format="YYYY-MM-DD HH:mm:ss"
4141
/>
4242
</el-form-item>
4343
<el-form-item>
44-
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
45-
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
44+
<el-button @click="handleQuery">
45+
<Icon class="mr-5px" icon="ep:search" />
46+
搜索
47+
</el-button>
48+
<el-button @click="resetQuery">
49+
<Icon class="mr-5px" icon="ep:refresh" />
50+
重置
51+
</el-button>
4652
<el-button
47-
type="primary"
53+
v-hasPermi="['infra:demo03-student:create']"
4854
plain
55+
type="primary"
4956
@click="openForm('create')"
50-
v-hasPermi="['infra:demo03-student:create']"
5157
>
52-
<Icon icon="ep:plus" class="mr-5px" /> 新增
58+
<Icon class="mr-5px" icon="ep:plus" />
59+
新增
5360
</el-button>
5461
<el-button
55-
type="success"
62+
v-hasPermi="['infra:demo03-student:export']"
63+
:loading="exportLoading"
5664
plain
65+
type="success"
5766
@click="handleExport"
58-
:loading="exportLoading"
59-
v-hasPermi="['infra:demo03-student:export']"
6067
>
61-
<Icon icon="ep:download" class="mr-5px" /> 导出
68+
<Icon class="mr-5px" icon="ep:download" />
69+
导出
6270
</el-button>
6371
</el-form-item>
6472
</el-form>
@@ -69,48 +77,48 @@
6977
<el-table
7078
v-loading="loading"
7179
:data="list"
72-
:stripe="true"
7380
:show-overflow-tooltip="true"
81+
:stripe="true"
7482
highlight-current-row
7583
@current-change="handleCurrentChange"
7684
>
77-
<el-table-column label="编号" align="center" prop="id" />
78-
<el-table-column label="名字" align="center" prop="name" />
79-
<el-table-column label="性别" align="center" prop="sex">
85+
<el-table-column align="center" label="编号" prop="id" />
86+
<el-table-column align="center" label="名字" prop="name" />
87+
<el-table-column align="center" label="性别" prop="sex">
8088
<template #default="scope">
8189
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.sex" />
8290
</template>
8391
</el-table-column>
8492
<el-table-column
85-
label="出生日期"
93+
:formatter="dateFormatter"
8694
align="center"
95+
label="出生日期"
8796
prop="birthday"
88-
:formatter="dateFormatter"
8997
width="180px"
9098
/>
91-
<el-table-column label="简介" align="center" prop="description" />
99+
<el-table-column align="center" label="简介" prop="description" />
92100
<el-table-column
93-
label="创建时间"
101+
:formatter="dateFormatter"
94102
align="center"
103+
label="创建时间"
95104
prop="createTime"
96-
:formatter="dateFormatter"
97105
width="180px"
98106
/>
99-
<el-table-column label="操作" align="center">
107+
<el-table-column align="center" label="操作">
100108
<template #default="scope">
101109
<el-button
110+
v-hasPermi="['infra:demo03-student:update']"
102111
link
103112
type="primary"
104113
@click="openForm('update', scope.row.id)"
105-
v-hasPermi="['infra:demo03-student:update']"
106114
>
107115
编辑
108116
</el-button>
109117
<el-button
118+
v-hasPermi="['infra:demo03-student:delete']"
110119
link
111120
type="danger"
112121
@click="handleDelete(scope.row.id)"
113-
v-hasPermi="['infra:demo03-student:delete']"
114122
>
115123
删除
116124
</el-button>
@@ -119,9 +127,9 @@
119127
</el-table>
120128
<!-- 分页 -->
121129
<Pagination
122-
:total="total"
123-
v-model:page="queryParams.pageNo"
124130
v-model:limit="queryParams.pageSize"
131+
v-model:page="queryParams.pageNo"
132+
:total="total"
125133
@pagination="getList"
126134
/>
127135
</ContentWrap>
@@ -132,17 +140,17 @@
132140
<ContentWrap>
133141
<el-tabs model-value="demo03Course">
134142
<el-tab-pane label="学生课程" name="demo03Course">
135-
<Demo03CourseList :student-id="currentRow.id" />
143+
<Demo03CourseList :student-id="currentRow?.id" />
136144
</el-tab-pane>
137145
<el-tab-pane label="学生班级" name="demo03Grade">
138-
<Demo03GradeList :student-id="currentRow.id" />
146+
<Demo03GradeList :student-id="currentRow?.id" />
139147
</el-tab-pane>
140148
</el-tabs>
141149
</ContentWrap>
142150
</template>
143151

144-
<script setup lang="ts">
145-
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
152+
<script lang="ts" setup>
153+
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
146154
import { dateFormatter } from '@/utils/formatTime'
147155
import download from '@/utils/download'
148156
import * as Demo03StudentApi from '@/api/infra/demo/demo03/erp'

0 commit comments

Comments
 (0)