21
This commit is contained in:
parent
3cbc213ec4
commit
cb22990844
|
|
@ -123,4 +123,24 @@ public class DanyeController : BusinessControllerBase
|
||||||
return Error(ex.Code, ex.Message);
|
return Error(ex.Code, ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除单页
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">单页ID</param>
|
||||||
|
/// <returns>操作结果</returns>
|
||||||
|
[HttpDelete("{id}")]
|
||||||
|
[BusinessPermission("danye:delete")]
|
||||||
|
public async Task<IActionResult> DeleteDanye(int id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var result = await _danyeService.DeleteDanyeAsync(id);
|
||||||
|
return result ? Ok("删除成功") : Error(BusinessErrorCodes.InternalError, "删除失败");
|
||||||
|
}
|
||||||
|
catch (BusinessException ex)
|
||||||
|
{
|
||||||
|
return Error(ex.Code, ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,29 @@ public class DanyeService : IDanyeService
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public async Task<bool> DeleteDanyeAsync(int id)
|
||||||
|
{
|
||||||
|
var danye = await _dbContext.Danyes.FirstOrDefaultAsync(d => d.Id == id);
|
||||||
|
if (danye == null)
|
||||||
|
{
|
||||||
|
throw new BusinessException(BusinessErrorCodes.NotFound, "单页不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 系统预设单页(ID 2-20)不允许删除
|
||||||
|
if (IsTitleProtected(id))
|
||||||
|
{
|
||||||
|
throw new BusinessException(BusinessErrorCodes.ValidationFailed, "系统预设单页不允许删除");
|
||||||
|
}
|
||||||
|
|
||||||
|
_dbContext.Danyes.Remove(danye);
|
||||||
|
var result = await _dbContext.SaveChangesAsync() > 0;
|
||||||
|
|
||||||
|
_logger.LogInformation("删除单页: Id={Id}, Title={Title}", id, danye.Title);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#region Private Helper Methods
|
#region Private Helper Methods
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -42,4 +42,11 @@ public interface IDanyeService
|
||||||
/// <param name="id">单页ID</param>
|
/// <param name="id">单页ID</param>
|
||||||
/// <returns>是否成功</returns>
|
/// <returns>是否成功</returns>
|
||||||
Task<bool> ClearContentAsync(int id);
|
Task<bool> ClearContentAsync(int id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除单页
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">单页ID</param>
|
||||||
|
/// <returns>是否成功</returns>
|
||||||
|
Task<bool> DeleteDanyeAsync(int id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -110,3 +110,15 @@ export function clearDanyeContent(id: number): Promise<ApiResponse<string>> {
|
||||||
method: 'put'
|
method: 'put'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除单页
|
||||||
|
* @param id 单页ID
|
||||||
|
* @returns 操作结果
|
||||||
|
*/
|
||||||
|
export function deleteDanye(id: number): Promise<ApiResponse<string>> {
|
||||||
|
return request({
|
||||||
|
url: `${DANYE_BASE_URL}/${id}`,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" width="160" align="center" fixed="right">
|
<el-table-column label="操作" width="200" align="center" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="primary" link size="small" @click="handleEdit(row)">
|
<el-button type="primary" link size="small" @click="handleEdit(row)">
|
||||||
编辑
|
编辑
|
||||||
|
|
@ -35,6 +35,9 @@
|
||||||
<el-button type="warning" link size="small" @click="handleClear(row)">
|
<el-button type="warning" link size="small" @click="handleClear(row)">
|
||||||
清空
|
清空
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="danger" link size="small" @click="handleDelete(row)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -55,6 +58,7 @@ const emit = defineEmits<{
|
||||||
(e: 'edit', row: DanyeResponse): void
|
(e: 'edit', row: DanyeResponse): void
|
||||||
(e: 'toggle-optimizer', row: DanyeResponse, value: boolean): void
|
(e: 'toggle-optimizer', row: DanyeResponse, value: boolean): void
|
||||||
(e: 'clear', row: DanyeResponse): void
|
(e: 'clear', row: DanyeResponse): void
|
||||||
|
(e: 'delete', row: DanyeResponse): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const handleEdit = (row: DanyeResponse) => {
|
const handleEdit = (row: DanyeResponse) => {
|
||||||
|
|
@ -68,6 +72,10 @@ const handleToggleOptimizer = (row: DanyeResponse, value: boolean) => {
|
||||||
const handleClear = (row: DanyeResponse) => {
|
const handleClear = (row: DanyeResponse) => {
|
||||||
emit('clear', row)
|
emit('clear', row)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleDelete = (row: DanyeResponse) => {
|
||||||
|
emit('delete', row)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
@edit="handleEdit"
|
@edit="handleEdit"
|
||||||
@toggle-optimizer="handleToggleOptimizer"
|
@toggle-optimizer="handleToggleOptimizer"
|
||||||
@clear="handleClear"
|
@clear="handleClear"
|
||||||
|
@delete="handleDelete"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
|
@ -36,6 +37,7 @@ import {
|
||||||
getDanyeById,
|
getDanyeById,
|
||||||
toggleImageOptimizer,
|
toggleImageOptimizer,
|
||||||
clearDanyeContent,
|
clearDanyeContent,
|
||||||
|
deleteDanye,
|
||||||
type DanyeResponse,
|
type DanyeResponse,
|
||||||
type DanyeDetailResponse
|
type DanyeDetailResponse
|
||||||
} from '@/api/business/danye'
|
} from '@/api/business/danye'
|
||||||
|
|
@ -116,6 +118,32 @@ const handleClear = async (row: DanyeResponse) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除单页
|
||||||
|
const handleDelete = async (row: DanyeResponse) => {
|
||||||
|
try {
|
||||||
|
await ElMessageBox.confirm(
|
||||||
|
`确定要删除「${row.title}」吗?删除后无法恢复。`,
|
||||||
|
'删除确认',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确定删除',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'error'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
loading.value = true
|
||||||
|
await deleteDanye(row.id)
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
fetchData()
|
||||||
|
} catch (error) {
|
||||||
|
if (error !== 'cancel') {
|
||||||
|
ElMessage.error((error as any)?.message || '删除失败')
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
fetchData()
|
fetchData()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user