<el-table-column align="center" label="上架状态">
<template #default="{ row }">
<el-switch
@click="handlePublishStatus(row)"
v-model="row.publishStatus"
:active-value="1"
:inactive-value="0"
/>
</template>
</el-table-column>
// 上架
const handlePublishStatus = async (row) => {
// 保存点击前按钮状态
let flag = row.publishStatus;
row.publishStatus = flag == 0 ? 1 : 0;
proxy.$modal
.confirm(`是否确认${row.publishStatus == 0 ? "下架" : "上架"}?`)
.then(async () => {
await updateNoticeStatusAPI({
id: row.id,
publishStatus: flag,
});
proxy.$modal.msgSuccess("操作成功!");
getList();
})
.catch(() => {
// 用户取消操作时不做任何处理
});
};
点击按钮后状态不应发生改变,应该由弹出来确认状态,因为v-model 双向绑定的缘由导致一点击按钮就已经发生了改变,在点击触发处理函数将v-model的值保存便于提交初始值,再取返让按钮不会发生变化