wzp
2025-05-03 ff76ba9c9c56aa2dd1c6a96d5d6365fbb3db1fad
feat: 新增支付记录前端展示
5个文件已添加
2个文件已修改
192 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/PayInfo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayInfoMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/IPayInfoService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayInfoServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/PayInfoMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/system/order/detail.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java
@@ -13,10 +13,9 @@
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.DictionaryCondition;
import com.ruoyi.system.domain.DispatchOrd;
import com.ruoyi.system.domain.TbOrders;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.IDispatchOrdService;
import com.ruoyi.system.service.IPayInfoService;
import com.ruoyi.system.service.ITbOrdersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -35,7 +34,6 @@
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.ServiceOrder;
import com.ruoyi.system.service.IServiceOrderService;
@@ -58,6 +56,9 @@
    @Autowired
    private IDispatchOrdService dispatchOrdService;
    @Autowired
    private IPayInfoService payInfoService;
    /**
     * 获取服务订单列表
@@ -98,9 +99,9 @@
        //查询服务单
        ServiceOrder mingServiceOrder = serviceOrderService.selectServiceOrderById(Long.valueOf(orderDetail.getServiceOrdID()));
        DispatchOrd dispatchOrd = dispatchOrdService.selectDispatchOrdByServiceOrdIDDt(mingServiceOrder.getServiceOrdId().toString());
        Map<String, Object> data = new HashMap<>();
        
        // 构建订单基本信息
@@ -260,12 +261,16 @@
        medicalInfo.put("useVentilator", useVentilator);
        //支付信息
//        List<PayInfo> payInfoList = payInfoService.selectPayInfoByServiceOrdIDDt(orderDetail.getServiceOrdID()); //1016302788
        List<PayInfo> payInfoList = payInfoService.selectPayInfoByServiceOrdIDDt("1016302788");
        data.put("orderInfo", orderInfo);
        data.put("patientInfo", patientInfo);
        data.put("serviceInfo", serviceInfo);
        data.put("medicalInfo", medicalInfo); // 暂时为空
        data.put("dispatchInfo", dispatchInfo);  // 更新为包含人员信息的dispatchInfo
        data.put("paymentInfo", new ArrayList<>()); // 暂时为空
        data.put("paymentInfo", payInfoList); // 暂时为空
        data.put("operationInfo", new ArrayList<>()); // 暂时为空
        
        return AjaxResult.success(data);
ruoyi-system/src/main/java/com/ruoyi/system/domain/PayInfo.java
New file
@@ -0,0 +1,34 @@
package com.ruoyi.system.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 支付信息对象 pay_info
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PayInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** 服务订单ID */
    private String serviceOrdIDDt;
    /** 支付ID */
    private Long id;
    /** 备注文本 */
    private String vtext;
    /** 支付金额 */
    private BigDecimal paidMoney;
    /** 支付时间 */
    private Date paidMoneyTime;
    /** 支付备注 */
    private String paidMoneyMono;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/PayInfoMapper.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.PayInfo;
import org.apache.ibatis.annotations.Mapper;
/**
 * 支付信息Mapper接口
 */
@Mapper
public interface PayInfoMapper {
    /**
     * 根据服务订单ID查询支付信息列表
     *
     * @param serviceOrdIDDt 服务订单ID
     * @return 支付信息列表
     */
    public List<PayInfo> selectPayInfoByServiceOrdIDDt(String serviceOrdIDDt);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/IPayInfoService.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.PayInfo;
/**
 * 支付信息Service接口
 */
public interface IPayInfoService {
    /**
     * 根据服务订单ID查询支付信息列表
     *
     * @param serviceOrdIDDt 服务订单ID
     * @return 支付信息列表
     */
    public List<PayInfo> selectPayInfoByServiceOrdIDDt(String serviceOrdIDDt);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PayInfoServiceImpl.java
New file
@@ -0,0 +1,32 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.PayInfoMapper;
import com.ruoyi.system.domain.PayInfo;
import com.ruoyi.system.service.IPayInfoService;
/**
 * 支付信息Service业务层处理
 */
@DataSource(DataSourceType.SQLSERVER)
@Service
public class PayInfoServiceImpl implements IPayInfoService {
    @Autowired
    private PayInfoMapper payInfoMapper;
    /**
     * 根据服务订单ID查询支付信息列表
     *
     * @param serviceOrdIDDt 服务订单ID
     * @return 支付信息列表
     */
    @Override
    public List<PayInfo> selectPayInfoByServiceOrdIDDt(String serviceOrdIDDt) {
        return payInfoMapper.selectPayInfoByServiceOrdIDDt(serviceOrdIDDt);
    }
}
ruoyi-system/src/main/resources/mapper/system/PayInfoMapper.xml
New file
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.PayInfoMapper">
    <resultMap type="com.ruoyi.system.domain.PayInfo" id="PayInfoResult">
        <result property="serviceOrdIDDt" column="ServiceOrdIDDt"/>
        <result property="id"             column="id"/>
        <result property="vtext"          column="vtext"/>
        <result property="paidMoney"      column="PaidMoney"/>
        <result property="paidMoneyTime"  column="PaidMoneyTime"/>
        <result property="paidMoneyMono"  column="PaidMoneyMono"/>
    </resultMap>
    <sql id="selectPayInfoVo">
        select ServiceOrdIDDt, PaidMoney.id, vtext, PaidMoney, PaidMoneyTime, PaidMoneyMono
        from PaidMoney,dictionary
        where vtitle = 'PaidMoneyType'
        and vType &gt;= 1
        and vID = PaidMoneyType
        and PaidMoney &lt;&gt; 0
    </sql>
    <select id="selectPayInfoByServiceOrdIDDt" parameterType="String" resultMap="PayInfoResult">
        <include refid="selectPayInfoVo"/>
        and ServiceOrdIDDt = #{serviceOrdIDDt}
        order by PaidMoneyTime desc
    </select>
</mapper>
ruoyi-ui/src/views/system/order/detail.vue
@@ -97,11 +97,16 @@
              style="width: 100%"
              :size="isMobile ? 'mini' : 'medium'"
              class="responsive-table">
              <el-table-column prop="paymentNo" label="收款流水" min-width="120" />
              <el-table-column prop="paymentTime" label="收款时间" min-width="140" />
              <el-table-column prop="amount" label="金额" min-width="100" />
              <el-table-column prop="method" label="方式" min-width="100" />
              <el-table-column prop="remark" label="备注" min-width="120" />
              <el-table-column prop="id" label="收款流水" min-width="120" />
              <el-table-column
                prop="paidMoneyTime"
                label="收款时间"
                min-width="140"
                :formatter="(row, column, cellValue) => formatDateTime(cellValue)"
              />
              <el-table-column prop="paidMoney" label="金额(元)" min-width="100" />
              <el-table-column prop="vtext" label="方式" min-width="100" />
              <el-table-column prop="paidMoneyMono" label="备注" min-width="120" />
            </el-table>
          </el-card>
        </el-col>
@@ -129,12 +134,33 @@
          </el-card>
        </el-col>
      </el-row>
      <!-- 订单情况 -->
      <el-row :gutter="20">
        <!-- 调度信息 -->
        <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
          <el-card class="inner-card">
            <div slot="header"><b>调度信息</b></div>
            <el-descriptions :column="isMobile ? 1 : 2" border>
              <el-descriptions-item label="服务评价">{{ dispatchInfo.dispatchTime }}</el-descriptions-item>
              <el-descriptions-item label="发票状态">{{ dispatchInfo.dispatchStatus }}</el-descriptions-item>
              <el-descriptions-item label="支付状态">{{ dispatchInfo.driver }}</el-descriptions-item>
              <el-descriptions-item label="车牌">{{ dispatchInfo.carLicense }}</el-descriptions-item>
              <el-descriptions-item label="医生">{{ dispatchInfo.doctor }}</el-descriptions-item>
              <!-- <el-descriptions-item label="职位">{{ dispatchInfo.doctorPosition }}</el-descriptions-item> -->
              <el-descriptions-item label="护士">{{ dispatchInfo.nurse }}</el-descriptions-item>
            </el-descriptions>
          </el-card>
        </el-col>
      </el-row>
    </el-card>
  </div>
</template>
<script>
import { getOrderDetail } from '@/api/system/order'
import { parseTime } from '@/utils/ruoyi'
export default {
  name: 'OrderDetail',
@@ -187,6 +213,12 @@
    // 处理窗口大小变化
    handleResize() {
      this.screenWidth = document.documentElement.clientWidth
    },
    formatDateTime(time) {
      if (!time) {
        return '';
      }
      return parseTime(time, '{y}-{m}-{d} {h}:{i}:{s}');
    }
  }
}