// 管理员纠纷详情页
const { useState, useEffect } = React;

function AdminDisputeDetailPage() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [actionLoading, setActionLoading] = useState(false);
  const [error, setError] = useState('');
  const [showRecord, setShowRecord] = useState(false);
  const [showReject, setShowReject] = useState(false);
  const [showRefund, setShowRefund] = useState(false);
  const [recordContent, setRecordContent] = useState('');
  const [rejectResult, setRejectResult] = useState('');
  const [refundResult, setRefundResult] = useState('');
  const pageParams = NK.Store.get('pageParams');
  const disputeId = pageParams && pageParams.id;

  useEffect(function(){
    if (!disputeId) { setLoading(false); return; }
    setLoading(true);
    NK.Api.Admin.disputeDetail(disputeId).then(function(res){
      if (res && res.code===0) setData(res.data);
      else {
        var httpStatus = (res && res._httpStatus) || 0;
        var msg = (res && res.message) || '加载失败';
        if (httpStatus === 401 || (res && res.code === -2)) msg = '管理员登录已过期，请重新登录';
        else if (httpStatus === 403) msg = '没有管理员权限';
        else if (httpStatus === 404) msg = '接口不存在';
        setError(msg);
        if (res && (res.code === -2 || httpStatus === 401)) NK.Api.Admin.clearToken();
      }
    }).catch(function(e){setError('无法连接后端服务，请确认服务已启动');})
    .finally(function(){setLoading(false);});
  }, [disputeId]);

  var doAction = async function(fn, successMsg){
    setActionLoading(true); setError('');
    try {
      var res = await fn();
      if (res && res.code===0){
        alert(successMsg);
        setShowRecord(false); setShowReject(false); setShowRefund(false);
        var r = await NK.Api.Admin.disputeDetail(disputeId);
        if (r && r.code===0) setData(r.data);
      } else {
        var httpStatus = (res && res._httpStatus) || 0;
        var msg = (res && res.message) || '操作失败';
        if (httpStatus === 401) msg = '管理员登录已过期，请重新登录';
        else if (httpStatus === 403) msg = '没有管理员权限';
        else if (httpStatus === 404) msg = '接口不存在';
        else if (httpStatus >= 500) msg = msg;
        setError(msg);
      }
    } catch(e){ setError('无法连接后端服务，请确认服务已启动'); }
    finally { setActionLoading(false); }
  };

  var sec = function(title,body){return React.createElement('div',{className:'dt-section'},React.createElement('div',{className:'dt-section-title'},title),body);};
  var row = function(l,v){return React.createElement('div',{style:{display:'flex',justifyContent:'space-between',padding:'8px 0',borderBottom:'1px solid #f5f5f5',fontSize:14}},React.createElement('span',{style:{color:'#999'}},l),React.createElement('span',{style:{color:'#333',fontWeight:500}},v||'-'));};

  if (loading) {
    return React.createElement('div',{className:'page-loading'},
      React.createElement('div',{className:'spinner'}),
      React.createElement('div',{style:{color:'#999',fontSize:14}},'加载中...')
    );
  }

  return React.createElement('div',{className:'detail-page'},
    React.createElement('div',{className:'back-header'},
      React.createElement('div',{className:'bbtn',onClick:function(){NK.Store.navigate('adminDisputes');}},'←'),
      React.createElement('div',{className:'btitle'},'纠纷详情')
    ),

    error && React.createElement('div',{style:{padding:'8px 12px',color:'#ff4d4f',fontSize:13,background:'#fff2f0'}},error),

    data && React.createElement('div',null,
      (function(){
        var a = data.appeal;
        var o = data.order;
        return React.createElement('div',null,
          sec('纠纷信息', React.createElement('div',null,
            row('类型',a.dispute_type||a.type||'-'),
            row('原因',a.reason||'-'),
            row('描述',a.description||'-'),
            row('提交时间',a.create_time?new Date(a.create_time).toLocaleString('zh-CN'):'-'),
            row('状态',a.status===0?'待处理':a.status===2?'已处理':'处理中'),
            a.result && row('处理结果',a.result)
          )),

          o && sec('订单信息', React.createElement('div',null,
            row('订单号',o.order_no||('#'+o.id)),
            row('商品',o.account_title||o.title||'-'),
            row('服务器',o.server||'-'),
            row('金额','¥'+Number(o.amount||0).toFixed(2)),
            row('订单状态','状态'+o.status)
          )),

          data.buyer && sec('买家信息', React.createElement('div',null,
            row('昵称',data.buyer.nickname||'-'),
            row('ID',String(data.buyer.id||'-'))
          )),

          data.seller && sec('卖家信息', React.createElement('div',null,
            row('昵称',data.seller.nickname||'-'),
            row('ID',String(data.seller.id||'-'))
          )),

          data.csRecords && sec('客服记录', React.createElement('div',null,
            data.csRecords.length>0
              ? data.csRecords.map(function(r,i){return React.createElement('div',{key:i,style:{padding:'6px 0',borderBottom:'1px solid #f5f5f5',fontSize:13}},React.createElement('div',{style:{color:'#999',fontSize:11}},r.create_time?new Date(r.create_time).toLocaleString('zh-CN'):''),React.createElement('div',{style:{color:'#333'}},typeof r.content==='string'?r.content:JSON.stringify(r.content)));})
              : React.createElement('div',{style:{color:'#bbb',fontSize:13}},'暂无记录')
          )),

          a.status===0 && React.createElement('div',{style:{padding:'0 16px 20px',display:'flex',gap:8,flexWrap:'wrap'}},
            React.createElement('button',{className:'pub3-btn',style:{flex:'1 1 45%',height:42,borderRadius:21,border:'none',fontSize:14,fontWeight:600,cursor:'pointer',background:'#1677ff',color:'#fff'},
              onClick:function(){setShowRecord(true);},disabled:actionLoading},'添加记录'),
            React.createElement('button',{className:'pub3-btn',style:{flex:'1 1 45%',height:42,borderRadius:21,border:'1px solid #fa8c16',fontSize:14,fontWeight:600,cursor:'pointer',background:'#fff',color:'#fa8c16'},
              onClick:function(){setShowReject(true);},disabled:actionLoading},'驳回纠纷'),
            React.createElement('button',{className:'pub3-btn',style:{flex:'1 1 45%',height:42,borderRadius:21,border:'none',fontSize:14,fontWeight:600,cursor:'pointer',background:'#ff4d4f',color:'#fff'},
              onClick:function(){setShowRefund(true);},disabled:actionLoading},'同意退款')
          )
        );
      })()
    ),

    showRecord && React.createElement('div',{className:'modal-overlay',onClick:function(){setShowRecord(false);}},
      React.createElement('div',{className:'modal-box',onClick:function(e){e.stopPropagation();}},
        React.createElement('div',{className:'modal-header'},React.createElement('div',{className:'modal-title'},'添加处理记录')),
        React.createElement('div',{className:'modal-body'},
          React.createElement('textarea',{style:{width:'100%',minHeight:80,border:'1px solid #e8e8e8',borderRadius:8,padding:10,fontSize:14,outline:'none',fontFamily:'inherit'},placeholder:'处理说明',value:recordContent,onChange:function(e){setRecordContent(e.target.value);}})
        ),
        React.createElement('div',{className:'modal-footer'},
          React.createElement('button',{className:'btn-cancel',onClick:function(){setShowRecord(false);}},'取消'),
          React.createElement('button',{className:'btn-confirm',onClick:function(){doAction(function(){return NK.Api.Admin.addDisputeRecord(disputeId,{content:recordContent});},'记录已添加');},disabled:actionLoading},actionLoading?'处理中...':'确认')
        )
      )
    ),

    showReject && React.createElement('div',{className:'modal-overlay',onClick:function(){setShowReject(false);}},
      React.createElement('div',{className:'modal-box',onClick:function(e){e.stopPropagation();}},
        React.createElement('div',{className:'modal-header'},React.createElement('div',{className:'modal-title'},'驳回纠纷')),
        React.createElement('div',{className:'modal-body'},
          React.createElement('div',{style:{fontSize:14,color:'#333',marginBottom:12}},'确认驳回该纠纷并恢复验号流程吗？'),
          React.createElement('input',{className:'pub3-input',placeholder:'处理结果说明',value:rejectResult,onChange:function(e){setRejectResult(e.target.value);}})
        ),
        React.createElement('div',{className:'modal-footer'},
          React.createElement('button',{className:'btn-cancel',onClick:function(){setShowReject(false);}},'取消'),
          React.createElement('button',{className:'btn-confirm',style:{background:'#fa8c16'},onClick:function(){doAction(function(){return NK.Api.Admin.rejectDispute(disputeId,{result:rejectResult});},'已驳回纠纷');},disabled:actionLoading},actionLoading?'处理中...':'确认驳回')
        )
      )
    ),

    showRefund && React.createElement('div',{className:'modal-overlay',onClick:function(){setShowRefund(false);}},
      React.createElement('div',{className:'modal-box',onClick:function(e){e.stopPropagation();}},
        React.createElement('div',{className:'modal-header'},React.createElement('div',{className:'modal-title'},'同意退款')),
        React.createElement('div',{className:'modal-body'},
          React.createElement('div',{style:{fontSize:14,color:'#333',marginBottom:12}},'确认同意退款吗？退款后订单将结束，款项退回买家。'),
          React.createElement('input',{className:'pub3-input',placeholder:'退款说明',value:refundResult,onChange:function(e){setRefundResult(e.target.value);}})
        ),
        React.createElement('div',{className:'modal-footer'},
          React.createElement('button',{className:'btn-cancel',onClick:function(){setShowRefund(false);}},'取消'),
          React.createElement('button',{className:'btn-confirm',style:{background:'#ff4d4f'},onClick:function(){doAction(function(){return NK.Api.Admin.refundDispute(disputeId,{result:refundResult});},'退款已完成');},disabled:actionLoading},actionLoading?'处理中...':'确认退款')
        )
      )
    )
  );
}

window.NK = window.NK || {};
NK.AdminDisputeDetailPage = AdminDisputeDetailPage;
