From db18eb4fa8dfbc2d8e4015ff838c57b2de00b10f Mon Sep 17 00:00:00 2001 From: XingQue Date: Mon, 27 Jul 2026 00:57:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8A=95=E8=AF=89=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E9=A1=B5=E5=A2=9E=E5=8A=A0=E3=80=8C=E6=8A=95=E8=AF=89=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=E6=8F=90=E7=8E=B0=E3=80=8D=E4=BF=B1=E4=B9=90=E9=83=A8?= =?UTF-8?q?=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/views/gongdan/List.vue | 183 ++++++++++++++++++++++++++++++++----- 1 file changed, 159 insertions(+), 24 deletions(-) diff --git a/src/views/gongdan/List.vue b/src/views/gongdan/List.vue index 7849f46..f0055b0 100644 --- a/src/views/gongdan/List.vue +++ b/src/views/gongdan/List.vue @@ -1,5 +1,27 @@ - + + + + @@ -202,13 +238,30 @@
申请人 - {{ current.shenqingren_id }} + {{ current.complainant_nicheng || current.shenqingren_id || '-' }} 复制 + >复制UID +
+
+ 被投诉 + + {{ current.target_role_label || '' }} + {{ current.target_nicheng || '' }} + + 复制UID +
+
+ 介入 + 平台已介入
订单ID @@ -225,11 +278,6 @@ {{ current.fadan_id }} 复制
-
- 管事ID - {{ current.guanshi_id }} - 复制 -
创建时间 {{ formatTime(current.CreateTime) }} @@ -271,7 +319,7 @@
处理信息
处理人 - {{ current.chuliren_name || current.chuliren_id || '尚未处理' }} + {{ current.chuliren_name || '尚未处理' }}
处理时间 @@ -287,6 +335,12 @@
填写处理结果
+ {{ current.platform_intervened ? '已介入' : '标记平台介入' }} 标记已处理 关闭工单
@@ -300,9 +354,14 @@ import { reactive, ref, onMounted } from 'vue' import { ElMessage } from 'element-plus' import request from '@/utils/request' +import ClubScopeHint from '@/components/ClubScopeHint.vue' const loading = ref(false) const saving = ref(false) +const configLoading = ref(false) +const configSaving = ref(false) +const withdrawBlock = ref(false) +const configClubId = ref('') const list = ref([]) const total = ref(0) const page = ref(1) @@ -324,11 +383,12 @@ const stats = reactive({ }) function isPending(row) { - return Number(row?.zhuangtai) === 1 + const z = Number(row?.zhuangtai) + return z === 1 || z === 5 } function statusLabel(z) { - return ({ 1: '处理中', 2: '已处理', 3: '不满意', 4: '已关闭' })[Number(z)] || String(z || '') + return ({ 1: '处理中', 2: '已处理', 3: '不满意', 4: '已关闭', 5: '协商中' })[Number(z)] || String(z || '') } function statusTagType(z) { @@ -337,13 +397,14 @@ function statusTagType(z) { if (n === 2) return 'success' if (n === 3) return 'warning' if (n === 4) return 'info' + if (n === 5) return 'warning' return '' } function rowClassName({ row }) { - if (Number(row.zhuangtai) === 1) return 'row-pending' + if (Number(row.zhuangtai) === 1 || Number(row.zhuangtai) === 5) return 'row-pending' if (Number(row.zhuangtai) === 3) return 'row-dissatisfied' - if ((row.shengji_cishu || 0) > 0 && [1, 3].includes(Number(row.zhuangtai))) return 'row-escalate' + if ((row.shengji_cishu || 0) > 0 && [1, 3, 5].includes(Number(row.zhuangtai))) return 'row-escalate' return '' } @@ -509,10 +570,15 @@ async function handle(action) { gongdan_id: current.value.gongdan_id, action, chuli_jieguo: jieguo.value, + intervene_reason: action === 'intervene' ? 'kefu' : '', }) if (res.code === 200 || res.code === 0) { - ElMessage.success('已保存') - drawer.value = false + ElMessage.success(action === 'intervene' ? '已标记平台介入' : '已保存') + if (action === 'intervene' && res.data) { + current.value = res.data + } else { + drawer.value = false + } load(page.value) } else ElMessage.error(res.message || res.msg || '失败') } catch (e) { @@ -522,12 +588,81 @@ async function handle(action) { } } -onMounted(() => load(1)) +async function loadClubConfig() { + configLoading.value = true + try { + const res = await request.get('/gongdan/admin/club-config/') + if (res.code === 200 || res.code === 0) { + configClubId.value = res.data?.club_id || '' + withdrawBlock.value = !!res.data?.complaint_withdraw_block + } + } catch (e) { + // 旧后端无此接口时忽略 + } finally { + configLoading.value = false + } +} + +async function onToggleWithdrawBlock(val) { + configSaving.value = true + try { + const res = await request.post('/gongdan/admin/club-config/', { + complaint_withdraw_block: !!val, + }) + if (res.code === 200 || res.code === 0) { + withdrawBlock.value = !!res.data?.complaint_withdraw_block + configClubId.value = res.data?.club_id || configClubId.value + ElMessage.success(val ? '已开启投诉拦截提现' : '已关闭投诉拦截提现') + } else { + withdrawBlock.value = !val + ElMessage.error(res.message || res.msg || '保存失败') + } + } catch (e) { + withdrawBlock.value = !val + ElMessage.error('保存失败') + } finally { + configSaving.value = false + } +} + +onMounted(() => { + loadClubConfig() + load(1) +})