Huanyi 2 weeks ago
parent
commit
c0d06992d6
2 changed files with 419 additions and 396 deletions
  1. 2 2
      src/views/invoice/management/index.vue
  2. 417 394
      src/views/settlement/chargeRecord/index.vue

+ 2 - 2
src/views/invoice/management/index.vue

@@ -53,11 +53,11 @@
 
             <!-- 统计信息 -->
             <div class="statistics-section mb-4">
-                <el-alert title="该条数据相关信息,请到后端查看应收账款相关数据页面设定对应对象处理提交条目!" type="warning" :closable="false" show-icon
+                <el-alert title="该条数据相关信息,请查看应收账款相关数据页面设定对应对象处理提交条目!" type="warning" :closable="false" show-icon
                     class="mb-4">
                     <template #default>
                         <div class="flex items-center justify-between">
-                            <span>该条数据相关信息,请到后端查看应收账款相关数据页面设定对应对象处理提交条目!</span>
+                            <span>该条数据相关信息,请查看应收账款相关数据页面设定对应对象处理提交条目!</span>
                             <el-button type="warning" size="small" @click="goToSetting">前往配置</el-button>
                         </div>
                     </template>

+ 417 - 394
src/views/settlement/chargeRecord/index.vue

@@ -1,43 +1,56 @@
 <template>
     <div class="p-2">
-        <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+        <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
+            :leave-active-class="proxy?.animate.searchAnimate.leave">
             <div v-show="showSearch" class="mb-[10px]">
                 <el-card shadow="hover">
                     <el-form ref="queryFormRef" :model="queryParams" :inline="true" :label-width="85">
                         <el-form-item label="开单时间:" prop="orderTime">
-                            <el-date-picker v-model="orderTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
+                            <el-date-picker v-model="orderTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
+                                range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+                                :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="付款时间:" prop="createTime">
-                            <el-date-picker v-model="createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
+                            <el-date-picker v-model="createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
+                                range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+                                :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="退费时间:" prop="refundTime">
-                            <el-date-picker v-model="refundTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
+                            <el-date-picker v-model="refundTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
+                                range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+                                :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
                         </el-form-item>
                         <el-form-item label="收费类型:" prop="chargeType">
                             <el-select v-model="queryParams.chargeType">
-                                <el-option v-for="dict in fee_type" :key="dict.value" :label="dict.label" :value="dict.value" />
+                                <el-option v-for="dict in fee_type" :key="dict.value" :label="dict.label"
+                                    :value="dict.value" />
                             </el-select>
                         </el-form-item>
                         <el-form-item label="患者科室" prop="doorId">
-                            <el-tree-select v-model="queryParams.doorId" :data="treeData" :props="treeProps" placeholder="请选择" check-strictly node-key="id" @keyup.enter="handleQuery" />
+                            <el-tree-select v-model="queryParams.doorId" :data="treeData" :props="treeProps"
+                                placeholder="请选择" check-strictly node-key="id" @keyup.enter="handleQuery" />
                         </el-form-item>
                         <el-form-item label="看诊类型:">
                             <el-select v-model="queryParams.visitType">
-                                <el-option v-for="dict in treatment_user_type" :key="dict.value" :label="dict.label" :value="dict.value" />
+                                <el-option v-for="dict in treatment_user_type" :key="dict.value" :label="dict.label"
+                                    :value="dict.value" />
                             </el-select>
                         </el-form-item>
                         <el-form-item label="支付方式:">
                             <el-select v-model="queryParams.paymentMethod">
-                                <el-option v-for="dict in charge_way" :key="dict.value" :label="dict.label" :value="dict.value" />
+                                <el-option v-for="dict in charge_way" :key="dict.value" :label="dict.label"
+                                    :value="dict.value" />
                             </el-select>
                         </el-form-item>
                         <el-form-item label="支付状态:">
                             <el-select v-model="queryParams.paymentStatus">
-                                <el-option v-for="dict in payment_status" :key="dict.value" :label="dict.label" :value="dict.value" />
+                                <el-option v-for="dict in payment_status" :key="dict.value" :label="dict.label"
+                                    :value="dict.value" />
                             </el-select>
                         </el-form-item>
                         <el-form-item>
-                            <el-input v-model="queryParams.searchValue" placeholder="医生姓名/门诊号/住院号" style="width: 240px; " clearable />
+                            <el-input v-model="queryParams.searchValue" placeholder="医生姓名/门诊号/住院号"
+                                style="width: 240px; " clearable />
                         </el-form-item>
 
 
@@ -85,12 +98,12 @@
                 </el-table-column>
                 <el-table-column label="看诊类型" align="center" prop="visitType">
                     <template #default="scope">
-                        <span>{{getDictLabel(treatment_user_type,scope.row.visitType)||'--' }}</span>
+                        <span>{{ getDictLabel(treatment_user_type, scope.row.visitType) || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="收费类型" align="center" prop="chargeType">
                     <template #default="scope">
-                        <span>{{getDictLabel(fee_type,scope.row.chargeType)||'--' }}</span>
+                        <span>{{ getDictLabel(fee_type, scope.row.chargeType) || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="患者姓名" align="center" prop="patientName" />
@@ -102,37 +115,39 @@
                 <el-table-column label="实收金额(元)" align="center" prop="fundsReceived" />
                 <el-table-column label="退费金额(元)" align="center" prop="refundAmount">
                     <template #default="scope">
-                        <span>{{ scope.row.refundAmount||'--' }}</span>
+                        <span>{{ scope.row.refundAmount || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="支付状态" align="center" prop="paymentStatus">
                     <template #default="scope">
-                        <span>{{getDictLabel(payment_status,scope.row.paymentStatus)||'--' }}</span>
+                        <span>{{ getDictLabel(payment_status, scope.row.paymentStatus) || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="支付方式" align="center" prop="paymentMethod">
                     <template #default="scope">
-                        <span>{{getDictLabel(charge_way,scope.row.paymentMethod)||'--' }}</span>
+                        <span>{{ getDictLabel(charge_way, scope.row.paymentMethod) || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="退费时间" align="center" prop="refundTime" width="180">
                     <template #default="scope">
-                        <span>{{ scope.row.refundTime||'--' }}</span>
+                        <span>{{ scope.row.refundTime || '--' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
                     <template #default="scope">
                         <el-tooltip content="详情" placement="top">
-                            <el-button link type="primary" icon="Edit" @click="handleDetail(scope.row)" v-hasPermi="['settlement:chargeRecord:edit']">详情</el-button>
+                            <el-button link type="primary" icon="Edit" @click="handleDetail(scope.row)"
+                                v-hasPermi="['settlement:chargeRecord:edit']">详情</el-button>
                         </el-tooltip>
                         <el-tooltip content="删除" placement="top">
-                            <el-button link type="primary" icon="Delete" >打印</el-button>
+                            <el-button link type="primary" icon="Delete">打印</el-button>
                         </el-tooltip>
                     </template>
                 </el-table-column>
             </el-table>
 
-            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+                v-model:limit="queryParams.pageSize" @pagination="getList" />
         </el-card>
         <!-- 详情对话框 -->
         <el-dialog :title="dialog.title" v-model="dialog.visible" width="65%" append-to-body>
@@ -200,7 +215,7 @@
                     <el-col :span="5">
                         <div class="info-item">
                             <span class="label">处方Id:</span>
-                            <span class="value">{{ rowData.id  || '' }}</span>
+                            <span class="value">{{ rowData.id || '' }}</span>
                         </div>
                     </el-col>
                 </el-row>
@@ -257,7 +272,7 @@
                     </thead>
                     <tbody>
                         <tr v-for="(item, index) in screeningData" :key="index">
-                            <td>{{ getDictLabel(fee_type,rowData.chargeType) || '--' }}</td>
+                            <td>{{ getDictLabel(fee_type, rowData.chargeType) || '--' }}</td>
                             <td>次</td>
                             <td>{{ rowData.receivableAmount || '--' }}</td>
                             <td>1</td>
@@ -281,7 +296,7 @@
                     </thead>
                     <tbody>
                         <tr v-for="(item, index) in evaluationData" :key="index">
-                            <td>{{ getDictLabel(fee_type,rowData.chargeType) || '--' }}</td>
+                            <td>{{ getDictLabel(fee_type, rowData.chargeType) || '--' }}</td>
                             <td>次</td>
                             <td>{{ rowData.receivableAmount || '--' }}</td>
                             <td>1</td>
@@ -292,34 +307,43 @@
                 </table>
 
                 <!-- 无数据提示 -->
-                <div v-if="recipeDetailData.length === 0 && screeningData.length === 0 && evaluationData.length === 0" style="text-align: center; color: #909399; padding: 40px 0;">
+                <div v-if="recipeDetailData.length === 0 && screeningData.length === 0 && evaluationData.length === 0"
+                    style="text-align: center; color: #909399; padding: 40px 0;">
                     暂无数据
                 </div>
 
                 <!-- 金额统计 -->
-                 <div style="margin-top:10px;" v-if="rowData.chargeType=='0'||rowData.chargeType=='1'">
+                <div style="margin-top:10px;" v-if="rowData.chargeType == '0' || rowData.chargeType == '1'">
                     <el-row :gutter="20">
                         <el-col :span="4">
-                            <span>项目总金额:<span style="color: #f56c6c;">¥{{rowData.receivableAmount}}</span></span>
+                            <span>项目总金额:<span style="color: #f56c6c;">¥{{ rowData.receivableAmount }}</span></span>
                         </el-col>
                         <el-col :span="4">
-                             <span>实收金额:<span style="color: #f56c6c;">¥{{rowData.fundsReceived}}</span></span><span style="margin-left:5px">  退费金额:<span style="color: #f56c6c;">¥{{ rowData.refundAmount||'0.00' }}</span></span>
+                            <span>实收金额:<span style="color: #f56c6c;">¥{{ rowData.fundsReceived }}</span></span><span
+                                style="margin-left:5px"> 退费金额:<span style="color: #f56c6c;">¥{{
+                                    rowData.refundAmount || '0.00'
+                                }}</span></span>
                         </el-col>
                     </el-row>
                 </div>
                 <div style="margin-top:10px;" v-else>
                     <el-row :gutter="20">
                         <el-col :span="6">
-                            <span>处方总金额:<span style="color: #f56c6c;">¥{{rowData.receivableAmount}}</span></span><span>(营养配置费:<span>¥{{ prescriptionFee||'0' }}</span>)</span>
+                            <span>处方总金额:<span style="color: #f56c6c;">¥{{ rowData.receivableAmount
+                                    }}</span></span><span>(营养配置费:<span>¥{{
+                                        prescriptionFee || '0' }}</span>)</span>
                         </el-col>
                         <el-col :span="4">
-                             <span>实收金额:<span style="color: #f56c6c;">¥{{rowData.fundsReceived}}</span></span><span style="margin-left:5px">  退费金额:<span style="color: #f56c6c;">¥{{ rowData.refundAmount||'0.00' }}</span></span>
+                            <span>实收金额:<span style="color: #f56c6c;">¥{{ rowData.fundsReceived }}</span></span><span
+                                style="margin-left:5px"> 退费金额:<span style="color: #f56c6c;">¥{{
+                                    rowData.refundAmount || '0.00'
+                                }}</span></span>
                         </el-col>
                     </el-row>
                 </div>
-               
-                 <!-- 筛查数据表格 -->
-                 <span>操作记录</span>
+
+                <!-- 筛查数据表格 -->
+                <span>操作记录</span>
                 <table v-if="recordLogData.length > 0" class="prescription-table" style="margin-top: 10px;">
                     <thead>
                         <tr>
@@ -336,11 +360,11 @@
                     <tbody>
                         <tr v-for="(item, index) in recordLogData" :key="index">
                             <td>{{ item.createTime || '--' }}</td>
-                            <td>{{item.settlementId}}</td>
-                             <td>{{ item.productName || '--' }}</td>
-                              <td>{{getDictLabel(charge_way,item.paymentMethod) || '--' }}</td>
+                            <td>{{ item.settlementId }}</td>
+                            <td>{{ item.productName || '--' }}</td>
+                            <td>{{ getDictLabel(charge_way, item.paymentMethod) || '--' }}</td>
                             <td>{{ rowData.receivableAmount || '--' }}</td>
-                            <td>{{getDictLabel(action_status,item.status)  || '--' }}</td>
+                            <td>{{ getDictLabel(action_status, item.status) || '--' }}</td>
                             <td>{{ rowData.remark || '--' }}</td>
                             <td>{{ item.createByName || '--' }}</td>
                         </tr>
@@ -359,395 +383,394 @@
 </template>
 
 <script setup name="Record" lang="ts">
-    import { listRecord, getRecord, delRecord, addRecord, updateRecord } from '@/api/settlement/chargeRecord';
-    import { ChrageRecordVO, ChrageRecordQuery, ChrageRecordForm } from '@/api/settlement/chargeRecord/types';
-    import { listDept } from '@/api/system/dept'; // 部门列表
-    const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-    const { treatment_user_type, check_status, recipe_type, fee_type, charge_way, payment_status,action_status } = toRefs < any > (proxy ?.useDict('treatment_user_type', 'check_status', 'recipe_type', 'fee_type', 'charge_way', 'payment_status','action_status'));
-
-    const orderTime = ref < [DateModelType, DateModelType] > (['', '']);
-    const createTime = ref < [DateModelType, DateModelType] > (['', '']);
-    const refundTime = ref < [DateModelType, DateModelType] > (['', '']);
-    const recordList = ref < ChrageRecordVO[] > ([]);
-    const buttonLoading = ref(false);
-    const loading = ref(true);
-    const showSearch = ref(true);
-    const ids = ref < Array < string | number >> ([]);
-    const single = ref(true);
-    const multiple = ref(true);
-    const total = ref(0);
-    // 处方明细数据
-    const recipeDetailData = ref([]);
-    const evaluationData = ref([]);
-    const screeningData = ref([]);
-    const recordLogData = ref([]);
-    const prescriptionFee = ref(0)
-    const queryFormRef = ref < ElFormInstance > ();
-    const ChrageRecordFormRef = ref < ElFormInstance > ();
-    const treeData = ref([]); // 定义 treeData
-    const treeProps = ref({
-        value: 'deptId', // 对应部门的 deptId
-        label: 'deptName', // 对应部门的 deptName
-        children: 'children' // 保持原有的父子结构
-    });
-    const dialog = reactive < DialogOption > ({
-        visible: false,
-        title: ''
+import { listRecord, getRecord, delRecord, addRecord, updateRecord } from '@/api/settlement/chargeRecord';
+import { ChrageRecordVO, ChrageRecordQuery, ChrageRecordForm } from '@/api/settlement/chargeRecord/types';
+import { listDept } from '@/api/system/dept'; // 部门列表
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { treatment_user_type, check_status, recipe_type, fee_type, charge_way, payment_status, action_status } = toRefs<any>(proxy?.useDict('treatment_user_type', 'check_status', 'recipe_type', 'fee_type', 'charge_way', 'payment_status', 'action_status'));
+
+const orderTime = ref<[DateModelType, DateModelType]>(['', '']);
+const createTime = ref<[DateModelType, DateModelType]>(['', '']);
+const refundTime = ref<[DateModelType, DateModelType]>(['', '']);
+const recordList = ref<ChrageRecordVO[]>([]);
+const buttonLoading = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref<Array<string | number>>([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+// 处方明细数据
+const recipeDetailData = ref([]);
+const evaluationData = ref([]);
+const screeningData = ref([]);
+const recordLogData = ref([]);
+const prescriptionFee = ref(0)
+const queryFormRef = ref<ElFormInstance>();
+const ChrageRecordFormRef = ref<ElFormInstance>();
+const treeData = ref([]); // 定义 treeData
+const treeProps = ref({
+    value: 'deptId', // 对应部门的 deptId
+    label: 'deptName', // 对应部门的 deptName
+    children: 'children' // 保持原有的父子结构
+});
+const dialog = reactive<DialogOption>({
+    visible: false,
+    title: ''
+});
+const rowData = ref<ChrageRecordVO>({})
+const initFormData: ChrageRecordForm = {
+    id: undefined,
+    settlementId: undefined,
+    orderTime: undefined,
+    visitType: undefined,
+    chargeType: undefined,
+    patientId: undefined,
+    patientName: undefined,
+    doorId: undefined,
+    patientNo: undefined,
+    phone: undefined,
+    idCard: undefined,
+    receivableAmount: undefined,
+    fundsReceived: undefined,
+    refundAmount: undefined,
+    paymentStatus: undefined,
+    paymentMethod: undefined,
+    bedNo: undefined,
+    refundTime: undefined,
+    status: undefined,
+    wardId: undefined,
+    wardName: undefined,
+    treatNum: undefined,
+    remark: undefined,
+}
+const data = reactive<PageData<ChrageRecordForm,
+    ChrageRecordQuery>>({
+        form: { ...initFormData },
+        queryParams: {
+            pageNum: 1,
+            pageSize: 10,
+            orderTime: undefined,
+            createTime: undefined,
+            visitType: undefined,
+            chargeType: undefined,
+            doorId: undefined,
+            patientId: undefined,
+            patientNo: undefined,
+            receivableAmount: undefined,
+            fundsReceived: undefined,
+            refundAmount: undefined,
+            paymentStatus: undefined,
+            paymentMethod: undefined,
+            refundTime: undefined,
+            searchValue: undefined,
+            params: {}
+        },
+        rules: {
+            id: [
+                { required: true, message: "主键ID不能为空", trigger: "blur" }
+            ],
+            settlementId: [
+                { required: true, message: "处方id不能为空", trigger: "blur" }
+            ],
+        }
     });
-    const rowData = ref < ChrageRecordVO > ({})
-    const initFormData: ChrageRecordForm = {
-        id: undefined,
-        settlementId: undefined,
-        orderTime: undefined,
-        visitType: undefined,
-        chargeType: undefined,
-        patientId: undefined,
-        patientName: undefined,
-        doorId: undefined,
-        patientNo: undefined,
-        phone: undefined,
-        idCard: undefined,
-        receivableAmount: undefined,
-        fundsReceived: undefined,
-        refundAmount: undefined,
-        paymentStatus: undefined,
-        paymentMethod: undefined,
-        bedNo: undefined,
-        refundTime: undefined,
-        status: undefined,
-        wardId: undefined,
-        wardName: undefined,
-        treatNum: undefined,
-        remark: undefined,
-    }
-    const data = reactive < PageData < ChrageRecordForm,
-        ChrageRecordQuery >> ({
-            form: { ...initFormData },
-            queryParams: {
-                pageNum: 1,
-                pageSize: 10,
-                orderTime: undefined,
-                createTime: undefined,
-                visitType: undefined,
-                chargeType: undefined,
-                doorId: undefined,
-                patientId:undefined,
-                patientNo: undefined,
-                receivableAmount: undefined,
-                fundsReceived: undefined,
-                refundAmount: undefined,
-                paymentStatus: undefined,
-                paymentMethod: undefined,
-                refundTime: undefined,
-                searchValue: undefined,
-                params: {}
-            },
-            rules: {
-                id: [
-                    { required: true, message: "主键ID不能为空", trigger: "blur" }
-                ],
-                settlementId: [
-                    { required: true, message: "处方id不能为空", trigger: "blur" }
-                ],
-            }
-        });
 
-    const { queryParams, form, rules } = toRefs(data);
+const { queryParams, form, rules } = toRefs(data);
+
+// 字典label工具
+function getDictLabel(dictList: any[], value: string) {
+    if (!dictList || !Array.isArray(dictList)) return value || '--';
+    const found = dictList.find((item) => item.value === value);
+    return found ? found.label : value || '--';
+}
+
+/** 添加多个日期范围 */
+const addMultipleDateRanges = (params: any, dateRanges: {
+    [key: string]: any[]
+}) => {
+    const search = { ...params };
+    search.params = typeof search.params === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
+
+    // 添加各个时间范围
+    Object.keys(dateRanges).forEach(propName => {
+        const dateRange = Array.isArray(dateRanges[propName]) ? dateRanges[propName] : [];
+        if (dateRange.length >= 2 && dateRange[0] && dateRange[1]) {
+            search.params['beginTime'] = dateRange[0];
+            search.params['endTime'] = dateRange[1];
+        }
+    });
 
-    // 字典label工具
-    function getDictLabel(dictList: any[], value: string) {
-        if (!dictList || !Array.isArray(dictList)) return value || '--';
-        const found = dictList.find((item) => item.value === value);
-        return found ? found.label : value || '--';
-    }
+    return search;
+};
 
-    /** 添加多个日期范围 */
-    const addMultipleDateRanges = (params: any, dateRanges: {
-        [key: string]: any[]
-    }) => {
-        const search = { ...params };
-        search.params = typeof search.params === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
-
-        // 添加各个时间范围
-        Object.keys(dateRanges).forEach(propName => {
-            const dateRange = Array.isArray(dateRanges[propName]) ? dateRanges[propName] : [];
-            if (dateRange.length >= 2 && dateRange[0] && dateRange[1]) {
-                search.params['beginTime'] = dateRange[0];
-                search.params['endTime'] = dateRange[1];
-            }
-        });
+/** 查询收费记录列表 */
+const getList = async () => {
+    loading.value = true;
 
-        return search;
+    // 构建多个时间范围参数
+    const dateRanges = {
+        OrderTime: orderTime.value,
+        CreateTime: createTime.value,
+        RefundTime: refundTime.value
     };
 
-    /** 查询收费记录列表 */
-    const getList = async () => {
-        loading.value = true;
-
-        // 构建多个时间范围参数
-        const dateRanges = {
-            OrderTime: orderTime.value,
-            CreateTime: createTime.value,
-            RefundTime: refundTime.value
-        };
-
-        const res = await listRecord(addMultipleDateRanges(queryParams.value, dateRanges));
-        recordList.value = res.rows;
-        total.value = res.total;
-        loading.value = false;
-    }
-    const getDeptList = async () => {
-        loading.value = true;
-        try {
-            const res = await listDept({ pageNum: 1, pageSize: 999 });
-            if (!res.data) {
-                console.warn("部门数据为空");
-                treeData.value = [];
-                return;
-            }
-
-            // 处理树形数据
-            const processedData = proxy ?.handleTree(res.data, 'deptId');
-            if (!processedData) {
-                console.warn("树形数据处理失败");
-                treeData.value = [];
-                return;
-            }
-
-            treeData.value = processedData;
-
-        } catch (error) {
-            console.error('获取部门列表失败:', error);
+    const res = await listRecord(addMultipleDateRanges(queryParams.value, dateRanges));
+    recordList.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+}
+const getDeptList = async () => {
+    loading.value = true;
+    try {
+        const res = await listDept({ pageNum: 1, pageSize: 999 });
+        if (!res.data) {
+            console.warn("部门数据为空");
             treeData.value = [];
-        } finally {
-            loading.value = false;
+            return;
         }
-    };
-
-    /** 取消按钮 */
-    const cancel = () => {
-        reset();
-        dialog.visible = false;
-    }
-
-    /** 表单重置 */
-    const reset = () => {
-        form.value = { ...initFormData };
-        ChrageRecordFormRef.value ?.resetFields();
-    }
 
-    /** 搜索按钮操作 */
-    const handleQuery = () => {
-        queryParams.value.pageNum = 1;
-        getList();
-    }
-
-    /** 重置按钮操作 */
-    const resetQuery = () => {
-        queryFormRef.value ?.resetFields();
-        queryParams.value.searchValue = undefined;
-        queryParams.value.visitType = undefined;
-        queryParams.value.chargeType = undefined;
-        queryParams.value.doorId = undefined;
-        queryParams.value.paymentMethod = undefined;
-        queryParams.value.paymentStatus = undefined;
-        handleQuery();
-    }
-
-    /** 多选框选中数据 */
-    const handleSelectionChange = (selection: ChrageRecordVO[]) => {
-        ids.value = selection.map(item => item.id);
-        single.value = selection.length != 1;
-        multiple.value = !selection.length;
-    }
+        // 处理树形数据
+        const processedData = proxy?.handleTree(res.data, 'deptId');
+        if (!processedData) {
+            console.warn("树形数据处理失败");
+            treeData.value = [];
+            return;
+        }
 
-    /** 新增按钮操作 */
-    const handleAdd = () => {
-        reset();
-        dialog.visible = true;
-        dialog.title = "添加收费记录";
-    }
+        treeData.value = processedData;
 
-    /** 修改按钮操作 */
-    const handleDetail = async (row ? : ChrageRecordVO) => {
-        reset();
-        rowData.value = row || {} as ChrageRecordVO;
-        console.log(JSON.stringify(row));
-        const _id = row ?.id
-        const res = await getRecord(_id);
-        recipeDetailData.value = res.data.enteralNutritionList
-        evaluationData.value = res.data.nutritionEvaluationList
-        screeningData.value = res.data.nutritionScreeningList
-        recordLogData.value = res.data.recordLogList
-
-        prescriptionFee.value = res.data.prescriptionFee
-        Object.assign(form.value, res.data);
-        dialog.visible = true;
-        dialog.title = "收费详情";
+    } catch (error) {
+        console.error('获取部门列表失败:', error);
+        treeData.value = [];
+    } finally {
+        loading.value = false;
     }
-
-    /** 提交按钮 */
-    const submitForm = () => {
-        ChrageRecordFormRef.value ?.validate(async (valid: boolean) => {
-            if (valid) {
-                buttonLoading.value = true;
-                if (form.value.id) {
-                    await updateRecord(form.value).finally(() => buttonLoading.value = false);
-                } else {
-                    await addRecord(form.value).finally(() => buttonLoading.value = false);
-                }
-                proxy ?.$modal.msgSuccess("操作成功");
-                dialog.visible = false;
-                await getList();
+};
+
+/** 取消按钮 */
+const cancel = () => {
+    reset();
+    dialog.visible = false;
+}
+
+/** 表单重置 */
+const reset = () => {
+    form.value = { ...initFormData };
+    ChrageRecordFormRef.value?.resetFields();
+}
+
+/** 搜索按钮操作 */
+const handleQuery = () => {
+    queryParams.value.pageNum = 1;
+    getList();
+}
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+    queryFormRef.value?.resetFields();
+    queryParams.value.searchValue = undefined;
+    queryParams.value.visitType = undefined;
+    queryParams.value.chargeType = undefined;
+    queryParams.value.doorId = undefined;
+    queryParams.value.paymentMethod = undefined;
+    queryParams.value.paymentStatus = undefined;
+    handleQuery();
+}
+
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: ChrageRecordVO[]) => {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+const handleAdd = () => {
+    reset();
+    dialog.visible = true;
+    dialog.title = "添加收费记录";
+}
+
+/** 修改按钮操作 */
+const handleDetail = async (row?: ChrageRecordVO) => {
+    reset();
+    rowData.value = row || {} as ChrageRecordVO;
+    console.log(JSON.stringify(row));
+    const _id = row?.id
+    const res = await getRecord(_id);
+    recipeDetailData.value = res.data.enteralNutritionList
+    evaluationData.value = res.data.nutritionEvaluationList
+    screeningData.value = res.data.nutritionScreeningList
+    recordLogData.value = res.data.recordLogList
+
+    prescriptionFee.value = res.data.prescriptionFee
+    Object.assign(form.value, res.data);
+    dialog.visible = true;
+    dialog.title = "收费详情";
+}
+
+/** 提交按钮 */
+const submitForm = () => {
+    ChrageRecordFormRef.value?.validate(async (valid: boolean) => {
+        if (valid) {
+            buttonLoading.value = true;
+            if (form.value.id) {
+                await updateRecord(form.value).finally(() => buttonLoading.value = false);
+            } else {
+                await addRecord(form.value).finally(() => buttonLoading.value = false);
             }
-        });
-    }
-
-    /** 删除按钮操作 */
-    const handleDelete = async (row ? : ChrageRecordVO) => {
-        const _ids = row ?.id || ids.value;
-        await proxy ?.$modal.confirm('是否确认删除收费记录编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
-        await delRecord(_ids);
-        proxy ?.$modal.msgSuccess("删除成功");
-        await getList();
-    }
-
-    /** 导出按钮操作 */
-    const handleExport = () => {
-        proxy ?.download('system/record/export', {
-            ...queryParams.value
-        }, `record_${new Date().getTime()}.xlsx`)
-    }
-
-    function formatDate(date) {
-        const pad = (n) => (n < 10 ? '0' + n : n);
-        return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
-    }
-
-    onMounted(() => {
-        getList();
-        getDeptList()
-        let now = new Date();
-        let start = formatDate(now);
-        let end = formatDate(new Date(now.getTime() - 24 * 60 * 60 * 1000 * 30));
-        // orderTime.value = [end + ' 00:00:00', start + ' 23:59:59'];
-        // createTime.value = [end + ' 00:00:00', start + ' 23:59:59'];
+            proxy?.$modal.msgSuccess("操作成功");
+            dialog.visible = false;
+            await getList();
+        }
     });
+}
+
+/** 删除按钮操作 */
+const handleDelete = async (row?: ChrageRecordVO) => {
+    const _ids = row?.id || ids.value;
+    await proxy?.$modal.confirm('是否确认删除收费记录编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
+    await delRecord(_ids);
+    proxy?.$modal.msgSuccess("删除成功");
+    await getList();
+}
+
+/** 导出按钮操作 */
+const handleExport = () => {
+    proxy?.download('system/record/export', {
+        ...queryParams.value
+    }, `record_${new Date().getTime()}.xlsx`)
+}
+
+function formatDate(date) {
+    const pad = (n) => (n < 10 ? '0' + n : n);
+    return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
+}
+
+onMounted(() => {
+    getList();
+    getDeptList()
+    let now = new Date();
+    let start = formatDate(now);
+    let end = formatDate(new Date(now.getTime() - 24 * 60 * 60 * 1000 * 30));
+    // orderTime.value = [end + ' 00:00:00', start + ' 23:59:59'];
+    // createTime.value = [end + ' 00:00:00', start + ' 23:59:59'];
+});
 </script>
 <style lang="scss" scoped>
- .patient-info {
-        background-color: #f5f7fa;
-        padding: 16px;
-        border-radius: 4px;
-        margin-bottom: 20px;
-    }
-
-    .info-item {
-        display: flex;
-        margin-bottom: 12px;
-    }
-
-    .info-item .label {
-        font-weight: bold;
-        color: #606266;
-        min-width: 100px;
-        flex-shrink: 0;
-    }
-
-    .info-item .value {
-        color: #303133;
-        flex: 1;
-    }
-
-    .recipe-detail {
-        margin-top: 20px;
-    }
-
-    .dialog-footer {
-        text-align: center;
-    }
-
-    .dialog-footer .el-button {
-        margin: 0 10px;
-    }
-
-    .prescription-table-wrapper {
-        overflow-x: auto;
-
-        .prescription-table {
-            width: 100%;
-            border-collapse: collapse;
+.patient-info {
+    background-color: #f5f7fa;
+    padding: 16px;
+    border-radius: 4px;
+    margin-bottom: 20px;
+}
+
+.info-item {
+    display: flex;
+    margin-bottom: 12px;
+}
+
+.info-item .label {
+    font-weight: bold;
+    color: #606266;
+    min-width: 100px;
+    flex-shrink: 0;
+}
+
+.info-item .value {
+    color: #303133;
+    flex: 1;
+}
+
+.recipe-detail {
+    margin-top: 20px;
+}
+
+.dialog-footer {
+    text-align: center;
+}
+
+.dialog-footer .el-button {
+    margin: 0 10px;
+}
+
+.prescription-table-wrapper {
+    overflow-x: auto;
+
+    .prescription-table {
+        width: 100%;
+        border-collapse: collapse;
+        border: 1px solid #ddd;
+        background: white;
+        font-size: 14px;
+
+        th,
+        td {
             border: 1px solid #ddd;
-            background: white;
-            font-size: 14px;
-
-            th,
-            td {
-                border: 1px solid #ddd;
-                padding: 10px 12px;
-                text-align: center;
-                vertical-align: middle;
-                min-width: 90px;
-                white-space: nowrap;
-                overflow: hidden;
-                text-overflow: ellipsis;
-            }
+            padding: 10px 12px;
+            text-align: center;
+            vertical-align: middle;
+            min-width: 90px;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
 
-            th {
-                background: #e8f4fd !important;
-                color: #303133 !important;
-                font-weight: 600 !important;
-                font-size: 14px !important;
-                height: 40px !important;
-            }
+        th {
+            background: #e8f4fd !important;
+            color: #303133 !important;
+            font-weight: 600 !important;
+            font-size: 14px !important;
+            height: 40px !important;
+        }
 
-            td {
-                color: #303133;
-                font-size: 14px;
-                height: 36px;
+        td {
+            color: #303133;
+            font-size: 14px;
+            height: 36px;
 
-                &:first-child {
-                    font-weight: 500;
-                }
+            &:first-child {
+                font-weight: 500;
             }
+        }
 
-            // 斑马纹
-            tbody tr:nth-child(even) {
-                background: #fafbfc;
-            }
+        // 斑马纹
+        tbody tr:nth-child(even) {
+            background: #fafbfc;
+        }
 
-            // 悬停效果
-            tbody tr:hover {
-                background: #f0f9ff;
-            }
+        // 悬停效果
+        tbody tr:hover {
+            background: #f0f9ff;
         }
     }
+}
 
-    .setting-group {
-        display: flex;
-        align-items: center;
-        margin-bottom: 20px;
+.setting-group {
+    display: flex;
+    align-items: center;
+    margin-bottom: 20px;
 
-        .setting-label {
-            width: 180px;
-            color: #606266;
-            font-size: 14px;
-            flex-shrink: 0;
-            text-align: right;
-
-            .required {
-                color: #f56c6c;
-                margin-right: 4px;
-            }
-        }
+    .setting-label {
+        width: 180px;
+        color: #606266;
+        font-size: 14px;
+        flex-shrink: 0;
+        text-align: right;
 
-        .amount-value {
-            color: #303133;
-            font-size: 14px;
-            font-weight: 500;
-            min-width: 80px;
-            text-align: left;
+        .required {
+            color: #f56c6c;
+            margin-right: 4px;
         }
     }
 
+    .amount-value {
+        color: #303133;
+        font-size: 14px;
+        font-weight: 500;
+        min-width: 80px;
+        text-align: left;
+    }
+}
 </style>