diff --git a/src/views/TicketManagement.vue b/src/views/TicketManagement.vue
index 33f1a7b..0856fbe 100644
--- a/src/views/TicketManagement.vue
+++ b/src/views/TicketManagement.vue
@@ -24,30 +24,21 @@
新增任务
-
+
-
+
@@ -125,7 +116,7 @@ const loadTickets = async () => {
...filters
}
const response = await ticketApi.getTickets(params)
- console.log('工单列表响应:', response)
+ // console.log('工单列表响应:', response)
if (response.code) {
tickets.value = response.data.data
pagination.total = response.total
@@ -162,10 +153,96 @@ const handleFormSubmit = async (formData) => {
}
const handleDelete = async (id) => {
- // ... 删除逻辑 ...
- // 成功后调用 refreshAll()
+ try {
+ // 1. 弹出二次确认框,防止用户点错
+ await ElMessageBox.confirm(
+ '确定要删除该工单吗?此操作不可逆',
+ '提示',
+ {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ }
+ )
+
+ // 2. 开启 loading(如果有的话)
+ // loading.value = true
+
+ // 3. 调用 API 发送删除请求
+ const res = await ticketApi.deleteTicket(id)
+ // console.log('删除响应:', res)
+
+ // 4. 根据你的后端返回结构判断是否成功
+ // 假设后端返回 code 为 200 表示成功
+ if (res.code) {
+ ElMessage.success('删除成功')
+
+ // 5. 成功后调用刷新列表的方法
+ if (typeof refreshAll === 'function') {
+ refreshAll()
+ }
+ } else {
+ ElMessage.error(res.message || '删除失败')
+ }
+ } catch (error) {
+ // 处理取消操作或接口报错
+ if (error !== 'cancel') {
+ console.error('删除出错:', error)
+ ElMessage.error('系统错误,删除失败')
+ }
+ } finally {
+ // loading.value = false
+ }
}
+
+/**
+ * 新增任务:清空表单并打开弹窗
+ */
+const handleAdd = () => {
+ isEditing.value = false
+ // 初始化一个空的工单对象
+ currentTicket.value = {
+ website: '',
+ operator: '',
+ principalpeople: '',
+ is_complete: '未分配'
+ }
+ showAddDialog.value = true
+}
+
+
+/**
+ * 编辑任务:克隆数据并打开弹窗
+ */
+const handleEdit = (row) => {
+ isEditing.value = true
+ // 使用解构赋值 {...row} 进行浅拷贝,避免修改弹窗时直接影响表格行
+ currentTicket.value = { ...row }
+ showAddDialog.value = true
+}
+
+
+/**
+ * 加载运营人员列表(用于弹窗下拉框)
+ */
+const loadOperators = async () => {
+ try {
+ const response = await ticketApi.getOperators()
+ console.log('运营人员列表响应:', response.data)
+
+ // 这里的判断逻辑要根据你后端的实际返回结构调整
+ // 如果后端直接返回数组:operators.value = response
+ // 如果后端返回带 code 的结构:
+ if (response.code) {
+ operators.value = response.data || response
+ }
+ } catch (error) {
+ console.error('加载运营人员失败:', error)
+ }
+}
+
+
// 分页逻辑
const handleSizeChange = (val) => { pagination.limit = val; loadTickets(); }
const handleCurrentChange = (val) => { pagination.page = val; loadTickets(); }
@@ -174,21 +251,72 @@ const handleCurrentChange = (val) => { pagination.page = val; loadTickets(); }
onMounted(() => {
loadTickets() // 渲染表格
initGlobalStats() // 锁定卡片统计
- // loadOperators()
+ loadOperators()
})
\ No newline at end of file