静态表单搭建需要完成以下功能:

image-20230104123514646

el-table展示:

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
  <!-- trademarkArr为getHasTrademark函数调用reqHasTrademark接口获得的 -->

<el-table style="margin: 10px 0px" border :data="trademarkArr">
<el-table-column
label="序号"
width="80px"
align="center"
type="index"<!-- index参数展示1... -->
></el-table-column>
<!-- table-column:默认展示数据用div -->
<el-table-column label="品牌名称" prop="tmName"></el-table-column>
<el-table-column label="品牌LOGO">
<template #="{ row, $index }">
<img :src="row.logoUrl" style="width: 100px; height: 100px" />
</template>
</el-table-column>
<el-table-column label="品牌操作">
<template #="{ row, $index }">
<el-button
type="primary"
size="small"
icon="Edit"
@click="updateTrademark(row)"
></el-button>
<el-popconfirm
:title="`您确定要删除${row.tmName}?`"
width="250px"
icon="Delete"
@confirm="removeTradeMark(row.id)"
>
<template #reference>
<el-button
type="primary"
size="small"
icon="Delete"
></el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>

其中trademarkArr数据展示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
{
"id": 1,
"createTime": "2021-12-10 01:31:41",
"updateTime": "2023-04-15 15:48:02",
"tmName": "小米",
"logoUrl": "39.98.123.211/group1/M00/03/D9/rBHu8mHmKC6AQ-j2AAAb72A3EO0942.jpg"
},
{
"id": 2,
"createTime": "2021-12-10 01:31:41",
"updateTime": "2023-04-15 15:48:21",
"tmName": "苹果",
"logoUrl": "http://39.98.123.211/group1/M00/03/D9/rBHu8mHmKHOADErHAAAQBezsFBo612.jpg"
},
{
"id": 3,
"createTime": "2021-12-10 01:31:41",
"updateTime": "2023-04-15 15:48:28",
"tmName": "华为",
"logoUrl": "http://39.98.123.211/group1/M00/03/D9/rBHu8mHmKF2AWpcKAADv98DWYRo516.jpg"
}
]

trademarkArr数据通过getHasTrademark函数获得:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//获取已有品牌的接口封装为一个函数:在任何情况下向获取数据,调用次函数即可
const getHasTrademark = async (pager = 1) => {
//当前页码
pageNo.value = pager //为分页数据中的参数 所有数据总共有多少页
let result: TradeMarkResponseData = await reqHasTrademark(
pageNo.value,
limit.value,
)
if (result.code == 200) {
//存储已有品牌总个数
total.value = result.data.total
trademarkArr.value = result.data.records
console.log(trademarkArr.value)
}
}

reqHasTrademark调用数据API定义如下:

1
2
3
4
5
6
7
8
9
//获取已有品牌接口
TRADEMARK_URL = '/admin/product/baseTrademark/',
//获取已有品牌的接口方法
//page:获取第几页 ---默认第一页
//limit:获取几个已有品牌的数据
export const reqHasTrademark = (page: number, limit: number) =>
request.get<any, TradeMarkResponseData>(
API.TRADEMARK_URL + `${page}/${limit}`,
)

其中编辑按钮的操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
//修改已有品牌的按钮的回调
//row:row即为当前已有的品牌
const updateTrademark = (row: TradeMark) => {
//清空校验规则错误提示信息
nextTick(() => {
formRef.value.clearValidate('tmName')//formRef对应着规则
formRef.value.clearValidate('logoUrl')
})
//对话框显示
dialogFormVisible.value = true
//ES6语法合并对象
Object.assign(trademarkParams, row)
}

其中删除品牌按钮如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//气泡确认框确定按钮的回调
const removeTradeMark = async (id: number) => {
//点击确定按钮删除已有品牌请求
let result = await reqDeleteTrademark(id)
if (result.code == 200) {
//删除成功提示信息
ElMessage({
type: 'success',
message: '删除品牌成功',
})
//再次获取已有的品牌数据
getHasTrademark(//如果说当前获取的列表数组的数据大于1 删除了一个数据还有数据需要展示不需要列表退一
trademarkArr.value.length > 1 ? pageNo.value : pageNo.value - 1,
)
} else {
ElMessage({
type: 'error',
message: '删除品牌失败',
})
}
}