Prechádzať zdrojové kódy

修改档案上传时出现超时

unknown 2 týždňov pred
rodič
commit
71bf623ba8

+ 2 - 2
src/api/elderly/apply/check-in.ts

@@ -38,10 +38,10 @@ export const getCheckInRecordId = (id, status) => {
     url: `elderlyInfo/getCheckInDetail?checkInRecordId=${id}&status=${status}`,
   })
 }
-// 获取详情
+// 根据长者ID获取办理入住详情
 export const getCheckInDetailByElderId = (id) => {
   return request.get({
-    url: `/elderlyInfo/getCheckInDetailByElderId?elderId=${id}`,
+    url: `/elderlyInfo/getCheckInDetailByElderId?contractId=${id}`,
   })
 }
 

+ 0 - 296
src/views/elderly/apply/check-in/接口返回值.txt

@@ -1,296 +0,0 @@
-{
-    "code": 0,
-    "data": {
-        "status": 2,
-        "processInstanceId": null,
-        "elderId": "14695",
-        "elderAge": 69,
-        "elderSex": 2,
-        "idCard": "440722195610152361",
-        "relativesList": [
-            {
-                "id": "2795749068470938830",
-                "peopleId": 14695,
-                "peopleName": "黄秋英",
-                "name": "黄莹",
-                "telephone": "",
-                "phone": "13556006292",
-                "relation": "女儿",
-                "workUnit": "",
-                "nowAddress": "广州市海珠区海联路158号902房 \t\t\t\t\t\t\t\t",
-                "address": "",
-                "isurgency": "1",
-                "gender": "2",
-                "papersType": "1",
-                "idCard": "44078119820415236X",
-                "status": "0",
-                "createDate": 1750404989000,
-                "remarks": null,
-                "isBillSender": false,
-                "tenantId": 198,
-                "elderlyInfo": null
-            },
-            {
-                "id": "2795749068470938831",
-                "peopleId": 14695,
-                "peopleName": "黄秋英",
-                "name": "罗嘉祥",
-                "telephone": "",
-                "phone": "13728029636",
-                "relation": "女婿",
-                "workUnit": "",
-                "nowAddress": "广州市海珠区海联路158号902房 \t\t\t\t\t\t\t\t",
-                "address": "",
-                "isurgency": "0",
-                "gender": "1",
-                "papersType": "1",
-                "idCard": "440105197305013330",
-                "status": "0",
-                "createDate": 1750404989000,
-                "remarks": null,
-                "isBillSender": false,
-                "tenantId": 198,
-                "elderlyInfo": null
-            }
-        ],
-        "elderlyContractDO": {
-            "id": 5098,
-            "elderId": 14695,
-            "contractNumber": "00109",
-            "elderName": "黄秋英",
-            "beginTime": 1780272000000,
-            "expireTime": 1811721600000,
-            "createdTime": 1781419683000,
-            "status": null,
-            "contractTerm": "12",
-            "details": null,
-            "times": null,
-            "inStatusType": "1"
-        },
-        "bedId": "7022",
-        "type": 9,
-        "contractJson": "",
-        "monthlyExpensesJson": "",
-        "oneTimeExpensesJson": "",
-        "stageExpensesJson": "",
-        "totalAmount": 14000,
-        "remark": null,
-        "monthlyExpenses": [
-            {
-                "id": 29891,
-                "expenseId": 7463,
-                "itemId": "1803357950676460541",
-                "itemCategoryId": 169,
-                "itemCategoryName": "基本费用-服务费",
-                "itemName": "服务费(全免)",
-                "amount": 0,
-                "actualAmount": 0,
-                "isDiscount": 0,
-                "discount": "",
-                "isMonthlyExpense": 1,
-                "isOneTimeFee": 0,
-                "isDeposit": 0,
-                "isFreeGift": 0,
-                "freeStartTime": null,
-                "freeEndTime": null,
-                "isHirePurchase": 0,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 0,
-                "type": null,
-                "discountAmount": 0,
-                "tenantId": 198,
-                "changeStartDate": [
-                    2026,
-                    6,
-                    1
-                ],
-                "changeEndDate": null,
-                "changeFlag": 0,
-                "createTime": 1752480614000,
-                "isDayCalculate": 0
-            },
-            {
-                "id": 29892,
-                "expenseId": 7463,
-                "itemId": "1803357950676460452",
-                "itemCategoryId": 166,
-                "itemCategoryName": "基本费用-床位费",
-                "itemName": "三人间(A区)",
-                "amount": 1200,
-                "actualAmount": 1200,
-                "isDiscount": 0,
-                "discount": null,
-                "isMonthlyExpense": 1,
-                "isOneTimeFee": 0,
-                "isDeposit": 0,
-                "isFreeGift": 0,
-                "freeStartTime": null,
-                "freeEndTime": null,
-                "isHirePurchase": 0,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 1200,
-                "type": 1,
-                "discountAmount": 0,
-                "tenantId": 198,
-                "changeStartDate": [
-                    2026,
-                    6,
-                    1
-                ],
-                "changeEndDate": null,
-                "changeFlag": 0,
-                "createTime": 1752480614000,
-                "isDayCalculate": 0
-            },
-            {
-                "id": 29893,
-                "expenseId": 7463,
-                "itemId": "1803357950676460412",
-                "itemCategoryId": 168,
-                "itemCategoryName": "基本费用-护理费",
-                "itemName": "一级A护理",
-                "amount": 1800,
-                "actualAmount": 1800,
-                "isDiscount": 0,
-                "discount": null,
-                "isMonthlyExpense": 1,
-                "isOneTimeFee": 0,
-                "isDeposit": 0,
-                "isFreeGift": 0,
-                "freeStartTime": null,
-                "freeEndTime": null,
-                "isHirePurchase": 0,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 1800,
-                "type": 2,
-                "discountAmount": 0,
-                "tenantId": 198,
-                "changeStartDate": [
-                    2026,
-                    6,
-                    1
-                ],
-                "changeEndDate": null,
-                "changeFlag": 0,
-                "createTime": 1752480614000,
-                "isDayCalculate": 0
-            },
-            {
-                "id": 29894,
-                "expenseId": 7463,
-                "itemId": "1803357950676460539",
-                "itemCategoryId": 167,
-                "itemCategoryName": "基本费用-膳食费",
-                "itemName": "普通餐费",
-                "amount": 1000,
-                "actualAmount": 1000,
-                "isDiscount": 0,
-                "discount": null,
-                "isMonthlyExpense": 1,
-                "isOneTimeFee": 0,
-                "isDeposit": 0,
-                "isFreeGift": 0,
-                "freeStartTime": null,
-                "freeEndTime": null,
-                "isHirePurchase": 0,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 1000,
-                "type": 3,
-                "discountAmount": 0,
-                "tenantId": 198,
-                "changeStartDate": [
-                    2026,
-                    6,
-                    1
-                ],
-                "changeEndDate": null,
-                "changeFlag": 0,
-                "createTime": 1752480614000,
-                "isDayCalculate": 0
-            }
-        ],
-        "oneTimeExpenses": [
-            {
-                "id": 29895,
-                "expenseId": 7463,
-                "itemId": "1803357950676460512",
-                "itemCategoryId": 182,
-                "itemCategoryName": "基本费用-押金",
-                "itemName": "预备金",
-                "amount": 10000,
-                "actualAmount": 10000,
-                "isDiscount": null,
-                "discount": "",
-                "isMonthlyExpense": null,
-                "isOneTimeFee": 1,
-                "isDeposit": 1,
-                "isFreeGift": null,
-                "freeStartTime": null,
-                "freeEndTime": null,
-                "isHirePurchase": null,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 10000,
-                "type": null,
-                "discountAmount": null,
-                "tenantId": null,
-                "changeStartDate": null,
-                "changeEndDate": null,
-                "changeFlag": null,
-                "createTime": null,
-                "isDayCalculate": 0
-            }
-        ],
-        "stageExpenses": [
-            {
-                "id": 29896,
-                "expenseId": 7463,
-                "itemId": "1803357950676460555",
-                "itemCategoryId": 191,
-                "itemCategoryName": "基本费用-日常费用",
-                "itemName": "洗衣服",
-                "amount": 100,
-                "actualAmount": 0,
-                "isDiscount": null,
-                "discount": "",
-                "isMonthlyExpense": null,
-                "isOneTimeFee": null,
-                "isDeposit": 0,
-                "isFreeGift": 1,
-                "freeStartTime": 1780272000000,
-                "freeEndTime": 1811721600000,
-                "isHirePurchase": 0,
-                "hirePurchaseNumber": null,
-                "hirePurchaseAmount": null,
-                "count": 1,
-                "totalAmount": 0,
-                "type": null,
-                "discountAmount": null,
-                "tenantId": 198,
-                "changeStartDate": null,
-                "changeEndDate": null,
-                "changeFlag": null,
-                "createTime": null,
-                "isDayCalculate": 0
-            }
-        ],
-        "checkInTime": "2026-06-01",
-        "checkInDeadlineTime": "2027-05-31",
-        "nurseLevelId": 32,
-        "nurseLevelName": "一级A护理",
-        "isPrivateRoom": 0,
-        "specialCareNotes": "",
-        "bpmStatus": 5,
-        "tenantId": 198
-    },
-    "msg": ""
-}

+ 2 - 33
src/views/elderly/contracts/check-in-tab/index.vue

@@ -119,46 +119,15 @@
 
   <AddForm ref="formRef" @success="getList" />
 
-  <!-- 通用批量导出弹窗 -->
-  <BatchExportDialog
-    :show="showBatchExport"
-    :title="exportConfig.title"
-    :loading="exportLoading"
-    :batch-min="exportConfig.batchMin"
-    :batch-max="exportConfig.batchMax"
-    :count-min="exportConfig.countMin"
-    :count-max="exportConfig.countMax"
-    :default-batch="exportConfig.defaultBatch"
-    :default-count="exportConfig.defaultCount"
-    :description="exportConfig.description"
-    @update:show="showBatchExport = $event"
-    @confirm="handleBatchExport"
-    @cancel="showBatchExport = false"
-  />
-
-
-  <Import
-    ref="importRef"
-    @success="getList"
-    :config="{
-      title: '导入',
-      downloadUrl: 'elderly-service-order/get-import-template',
-      excelTempName: '居家工单-【导入】模板',
-      importUrl: '/elderly-service-order/import',
-      failExportUrl: '',
-    }"
-  />
+
+
 
 </template>
 
 <script setup lang="ts">
 import AddForm from "./AddForm.vue";
 import ButtonAdd from "@/components/ButtonAdd/src/ButtonAdd.vue";
-import ButtonImport from "@/components/ButtonImport/src/ButtonImport.vue";
 import { useUserStore } from '@/store/modules/user'
-import {formatTimestamp, getCurrentMonthRange} from "@/utils/dateUtil";
-import Import from "@/components/ImportFile/index.vue";
-import {restraintCreatePage, restraintDelete} from "@/api/elderly/nursing/keep-fit";
 import {
   attackRiskDelete, attackRiskPage,
 } from "@/api/social-work";

+ 212 - 156
src/views/elderly/contracts/components/ContractBody.vue

@@ -2,7 +2,7 @@
 import { reactive, computed, ref, watch } from 'vue'
 import { formatBackendDateTime } from '@/utils/formatTime'
 import { DICT_TYPE, getDictLabel } from '@/utils/dict'
-import {getCheckInDetailByElderId, getCheckInRecordId} from '@/api/elderly/apply/check-in'
+import {getCheckInDetailByElderId} from '@/api/elderly/apply/check-in'
 import FieldItem from './FieldItem.vue'
 import SignatureItem from './SignatureItem.vue'
 
@@ -79,6 +79,7 @@ const contractForm = reactive({
   depositFee: '',
   depositType: '',
   depositInterest: '',
+  depositInterestType: '0',
   payMode: '1',
   payMonthDay: '5',
   paySeasonMonth: '1',
@@ -122,11 +123,20 @@ const contractForm = reactive({
 })
 
 const parseIdCardBirth = (idCard: string): string => {
-  if (!idCard || idCard.length < 14) return ''
-  const year = idCard.substring(6, 10)
-  const month = idCard.substring(10, 12)
-  const day = idCard.substring(12, 14)
-  return `${year}年${month}月${day}日`
+  if (!idCard) return ''
+  const len = idCard.length
+  if (len === 18) {
+    return `${idCard.substring(6, 10)}年${idCard.substring(10, 12)}月${idCard.substring(12, 14)}日`
+  }
+  if (len === 15) {
+    return `19${idCard.substring(6, 8)}年${idCard.substring(8, 10)}月${idCard.substring(10, 12)}日`
+  }
+  return ''
+}
+
+const isIdCardType = (papersType: any): boolean => {
+  const label = getDictLabel(DICT_TYPE.PAPERS_TYPE, papersType)
+  return label && (label.includes('身份证') || label.includes('居民身份'))
 }
 
 const numToChinese = (num: number | string): string => {
@@ -198,10 +208,13 @@ const fillContractForm = (data: any) => {
 
   if (data.idCard) {
     contractForm.elderIdCard = data.idCard
-    contractForm.elderBirth = parseIdCardBirth(data.idCard)
   }
   if (data.papersType != null && data.papersType !== '' && data.papersType !== undefined) {
-    contractForm.elderPapersType = data.papersType
+    const papersNum = Number(data.papersType)
+    contractForm.elderPapersType = Number.isNaN(papersNum) ? data.papersType : papersNum
+  }
+  if (data.idCard && isIdCardType(contractForm.elderPapersType)) {
+    contractForm.elderBirth = parseIdCardBirth(data.idCard)
   }
 
   contractForm.elderAge = data.elderAge || ''
@@ -255,9 +268,14 @@ const fillContractForm = (data: any) => {
     contractForm.roomType = m ? m[1] : bedItem.itemName
   }
 
-  if (data.bedId) {
+  if (data.bedName) {
+    contractForm.roomNo = data.bedName
+  } else if (data.bedId) {
     contractForm.roomNo = String(data.bedId)
   }
+  if (data.bedType) {
+    contractForm.roomType = data.bedType
+  }
 
   const oneTime = data.oneTimeExpenses || []
   const deposit = findItem(oneTime, '押金')
@@ -280,10 +298,13 @@ const fillContractForm = (data: any) => {
   }
   if (relative.idCard) {
     contractForm.partyCIdCard = relative.idCard
-    contractForm.partyCBirth = parseIdCardBirth(relative.idCard)
   }
   if (relative.papersType != null && relative.papersType !== '' && relative.papersType !== undefined) {
-    contractForm.partyCPapersType = relative.papersType
+    const papersNum = Number(relative.papersType)
+    contractForm.partyCPapersType = Number.isNaN(papersNum) ? relative.papersType : papersNum
+  }
+  if (relative.idCard && isIdCardType(contractForm.partyCPapersType)) {
+    contractForm.partyCBirth = parseIdCardBirth(relative.idCard)
   }
   contractForm.partyCRelation = relative.relation || ''
   contractForm.partyCPhone = relative.phone || ''
@@ -314,18 +335,18 @@ const fetchContractData = async (row: any) => {
     fillContractForm(row)
     return
   }
+  console.log("合同id",row)
   // 否则调用接口获取
-  const recordId = row.checkInRecordId || row.id || row.elderId
+  const recordId =  row.id 
   if (!recordId) {
     fillContractForm(row)
     return
   }
   loading.value = true
   try {
-    const status = row.status ?? ''
-    const res = await getCheckInDetailByElderId(row.elderId)
-    if (res && res.data) {
-      fillContractForm(res.data)
+    const res = await getCheckInDetailByElderId(row.id)
+    if (res) {
+      fillContractForm(res)
     }
   } catch (e) {
     console.error('获取合同详情失败', e)
@@ -424,6 +445,67 @@ const displayDate = computed(() => {
   const today = new Date()
   return `${today.getFullYear()}年${today.getMonth() + 1}月${today.getDate()}日`
 })
+
+// 费用相关动态列表
+const monthlyExpensesList = computed(() => detailData.value?.monthlyExpenses || [])
+const oneTimeExpensesList = computed(() => detailData.value?.oneTimeExpenses || [])
+const stageExpensesList = computed(() => detailData.value?.stageExpenses || [])
+
+const formatExpenseAmount = (val: any): string => {
+  if (val == null || val === '') return ''
+  return String(val)
+}
+
+const isDepositFee = (item: any): boolean => {
+  return item.isDeposit === 1 || (item.itemCategoryName || '').includes('押金') || (item.itemName || '').includes('押金')
+}
+
+const numberToCircle = (num: number): string => {
+  const circles = ['①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩']
+  return circles[num - 1] || `${num}`
+}
+
+// 费用项显示名称:类别名(项目名)
+const displayExpenseName = (item: any): string => {
+  const category = item?.itemCategoryName || ''
+  const name = item?.itemName || ''
+  if (category && name && category !== name) {
+    return `${category}(${name})`
+  }
+  return category || name || ''
+}
+
+// 房间类型映射:优先根据月度费用中 type=1 的床位项目,再回退 bedType
+const selectedRoomType = computed(() => {
+  const bedItem = monthlyExpensesList.value.find((item: any) => item.type === 1)
+  const bedType = bedItem?.itemName || contractForm.roomType || detailData.value?.bedType || ''
+  const map: Record<string, string> = {
+    '单人间': '单间',
+    '双人间': '双人间',
+    '三人间': '三人间',
+    '多人间': '多人间'
+  }
+  return map[bedType] || '其他'
+})
+
+const roomTypeOptions = [
+  { label: '单间', value: '单人间' },
+  { label: '双人间', value: '双人间' },
+  { label: '三人间', value: '三人间' },
+  { label: '多人间', value: '多人间' },
+  { label: '其他', value: '其他' }
+]
+
+// 月度费用总额随明细自动汇总
+watch(
+  () => monthlyExpensesList.value.map((item: any) => item.actualAmount),
+  () => {
+    contractForm.totalFee = monthlyExpensesList.value
+      .reduce((sum: number, item: any) => sum + (Number(item.actualAmount) || 0), 0)
+      .toString()
+  },
+  { deep: true }
+)
 </script>
 
 <template>
@@ -649,7 +731,7 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第5页:第二条 ========== -->
+    <!-- ========== 第5页:第二条 服务地点及设施 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
@@ -673,36 +755,37 @@ const displayDate = computed(() => {
           2.甲方为乙方提供养老服务的地点为:
           <FieldItem v-model="contractForm.servicePlace" :is-text-mode="isTextMode" width="260px" placeholder="请输入" />
         </p>
-
-        <h3 class="subsection-title" style="margin-top: 14px;">第三条&nbsp;&nbsp;服务费用</h3>
+        <div class="content-text">
+          3.乙方或丙方为乙方选择入住的房间类型为:
+          <template v-if="!isTextMode">
+            <el-select v-model="contractForm.roomType" placeholder="请选择" style="width: 180px">
+              <el-option v-for="item in roomTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
+            </el-select>
+          </template>
+          <template v-else>
+            <span class="fill-text">{{ contractForm.roomType || detailData.value?.bedType || '' }}</span>
+          </template>
+        </div>
         <p class="content-text">
-          1.养老服务费用标准:
+          4.乙方或丙方为乙方选择的具体房间为:
+          <FieldItem v-model="contractForm.roomNo" :is-text-mode="isTextMode" width="120px" placeholder="请输入" />
+          。
         </p>
         <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;(1)养老服务费用为:
-          <FieldItem v-model="contractForm.totalFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元/月。
+          5.乙方或丙方基于正当理由要求调整房间的,甲方在条件许可的范围内应尽量满足。若因房间变化,需要相应调整费用的,应由各方协商一致书面确认后调整,如各方不能达成一致意见书面确认,则仍依本合同约定房间履行。
         </p>
         <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;其中:床位费:
-          <FieldItem v-model="contractForm.bedFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元/月;护理费:
-          <FieldItem v-model="contractForm.nurseFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元/月;伙食费:
-          <FieldItem v-model="contractForm.mealFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元/月;
+          6.甲方提供的服务设施除了住宿的房屋,还包括房间内生活起居必要的基础设施及其他公共设施。
         </p>
+
+        <h2 class="section-title">第三条&nbsp;&nbsp;收费标准及费用支付方式</h2>
         <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;其他费用:1)水电费:超出床位费包含的每人每月
-          <FieldItem v-model="contractForm.manageFee" :is-text-mode="isTextMode" width="80px" placeholder="0" />
-          千瓦时电和
-          <FieldItem v-model="contractForm.manageFee" :is-text-mode="isTextMode" width="80px" placeholder="0" />
-          立方冷水的免费额度后,超出部分按实际支出进行对应房型具体入住床数进行均摊收取。
+          1.甲方的收费标准和调整应遵守养老机构服务收费管理的相关规定,不得违规收取大额预付、向服务对象兜售保健品,不得以许诺还本付息或者给予其他投资回报、虚假夸大宣传、承诺明显低于市场价入住、折扣返利等与事实不符的条件诱导乙方或丙方交纳费用。
         </p>
       </div>
     </div>
 
-    <!-- ========== 第6页:第二条继续 + 第三条开头 ========== -->
+    <!-- ========== 第6页:第三条 收费标准及费用明细 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
@@ -712,28 +795,6 @@ const displayDate = computed(() => {
         <span class="page-no-right">6</span>
       </div>
       <div class="page-content">
-        <p class="content-text">
-          3.乙方或丙方为乙方选择入住的房间类型为(在以下几种情况中选择一种):
-        </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;□单间&nbsp;&nbsp;□双人间&nbsp;&nbsp;□三人间&nbsp;&nbsp;□多人间(四人以上六人以下,含四人、六人)&nbsp;&nbsp;□其他(套房等)。
-        </p>
-        <p class="content-text">
-          4.乙方或丙方为乙方选择的具体房间为:
-          <FieldItem v-model="contractForm.roomNo" :is-text-mode="isTextMode" width="120px" placeholder="请输入" />
-          。
-        </p>
-        <p class="content-text">
-          5.乙方或丙方基于正当理由要求调整房间的,甲方在条件许可的范围内应尽量满足。若因房间变化,需要相应调整费用的,应由各方协商一致书面确认后调整,如各方不能达成一致意见书面确认,则仍依本合同约定房间履行。
-        </p>
-        <p class="content-text">
-          6.甲方提供的服务设施除了住宿的房屋,还包括房间内生活起居必要的基础设施及其他公共设施。
-        </p>
-
-        <h3 class="subsection-title" style="margin-top: 14px;">第三条&nbsp;&nbsp;服务费用及费用支付方式</h3>
-        <p class="content-text">
-          1.甲方的收费标准和调整应遵守养老机构服务收费管理的相关规定,不得违规收取大额预付、向服务对象兜售保健品,不得以许诺还本付息或者给予其他投资回报、虚假夸大宣传、承诺明显低于市场价入住、折扣返利等与事实不符的条件诱导乙方或丙方交纳费用。
-        </p>
         <p class="content-text">
           2.甲方提供的各种服务项目的收费标准和收费依据应在养老机构内公共区域显著位置进行公示,并以公共区域或网络方式(养老机构网站、政府部门有关网站等)进行线上公示,服务项目及其收费标准应作为本合同附件。
         </p>
@@ -748,32 +809,9 @@ const displayDate = computed(() => {
         <p class="content-text">
           &nbsp;&nbsp;&nbsp;&nbsp;其中:
         </p>
-      </div>
-    </div>
-
-    <!-- ========== 第7页:第三条费用条款明细 ========== -->
-    <div class="a4-page">
-      <div class="page-header">
-        <div class="logo-line">
-          <span class="logo-circle">颐</span>
-          <span class="logo-text">颐年医养</span>
-        </div>
-        <span class="page-no-right">7</span>
-      </div>
-      <div class="page-content">
-        <p class="content-text">
-          床位费:
-          <FieldItem v-model="contractForm.bedFee" :is-text-mode="isTextMode" width="120px" placeholder="0" />
-          元/月;
-        </p>
-        <p class="content-text">
-          护理费:
-          <FieldItem v-model="contractForm.nurseFee" :is-text-mode="isTextMode" width="120px" placeholder="0" />
-          元/月;
-        </p>
-        <p class="content-text">
-          伙食费:
-          <FieldItem v-model="contractForm.mealFee" :is-text-mode="isTextMode" width="120px" placeholder="0" />
+        <p v-for="item in monthlyExpensesList" :key="item.id" class="content-text">
+          {{ item.itemCategoryName || item.itemName }}:
+          <FieldItem v-model="item.actualAmount" :is-text-mode="isTextMode" width="120px" placeholder="0" />
           元/月;
         </p>
         <p class="content-text">
@@ -792,59 +830,72 @@ const displayDate = computed(() => {
           <FieldItem v-model="contractForm.electricFee" :is-text-mode="isTextMode" width="80px" placeholder="0" />
           元/千瓦时;
         </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;2)诊查费:
-          <FieldItem v-model="contractForm.diagnosisFee" :is-text-mode="isTextMode" width="120px" placeholder="0" />
-          元/月
-        </p>
         <p class="content-text" style="padding-left: 2em;">
           出现合同中止或终止情形的,扣除实际入住天数产生的费用后予以退款。
         </p>
         <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;(2)一次性收取的费用(如有请填写)。
+          &nbsp;&nbsp;(2)一次性收取的费用(如有请填写)。
         </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;①一次性设施设备费
-          <FieldItem v-model="contractForm.oneTimeEquipFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元,收取的期限自
-          <FieldItem v-model="contractForm.oneTimeEquipStart" :is-text-mode="isTextMode" type="date" width="180px" placeholder="请选择日期" />
-          至
-          <FieldItem v-model="contractForm.oneTimeEquipEnd" :is-text-mode="isTextMode" type="date" width="180px" placeholder="请选择日期" />
-          (建议时长不超过3年)。出现合同中止或终止情形的,扣除实际入住天数产生的费用后,按照以下标准予以退款:
-          <FieldItem v-model="contractForm.depositRefund" :is-text-mode="isTextMode" width="180px" placeholder="请填写" />
-          。
-        </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;②押金(如有请填写押金类型:履约及医疗保证金:
-          <FieldItem v-model="contractForm.depositFee" :is-text-mode="isTextMode" width="100px" placeholder="0" />
-          元。出现合同中止情形的,予以全额退还(□押金不计利息 ☑押金计利息,计息标准为:
-          <FieldItem v-model="contractForm.depositInterest" :is-text-mode="isTextMode" width="160px" placeholder="无" />
-          &nbsp;&nbsp;元&nbsp;&nbsp;)。
+      </div>
+    </div>
+
+    <!-- ========== 第7页:第三条 一次性费用及支付方式 ========== -->
+    <div class="a4-page">
+      <div class="page-header">
+        <div class="logo-line">
+          <span class="logo-circle">颐</span>
+          <span class="logo-text">颐年医养</span>
+        </div>
+        <span class="page-no-right">7</span>
+      </div>
+      <div class="page-content">
+        <div v-for="(item, index) in oneTimeExpensesList" :key="item.id" class="content-text">
+          &nbsp;&nbsp;&nbsp;&nbsp;{{ numberToCircle(index + 1) }}{{ displayExpenseName(item) }}
+          <FieldItem v-model="item.actualAmount" :is-text-mode="isTextMode" width="100px" placeholder="0" />
+          元。
+          <template v-if="isDepositFee(item)">
+            出现合同中止情形的,予以全额退还(
+            <el-radio-group style="margin-left: 4mm;" v-if="!isTextMode" v-model="contractForm.depositInterestType" size="small">
+              <el-radio label="0">押金不计利息</el-radio>
+              <el-radio label="1">押金计利息</el-radio>
+            </el-radio-group>
+            <template v-else>
+              <span v-if="contractForm.depositInterestType === '0'">☑押金不计利息&nbsp;&nbsp;□押金计利息</span>
+              <span v-else>□押金不计利息&nbsp;&nbsp;☑押金计利息</span>
+            </template>
+            <template v-if="contractForm.depositInterestType === '1'">
+              ,计息标准为:
+              <FieldItem v-model="contractForm.depositInterest" :is-text-mode="isTextMode" width="160px" placeholder="无" />
+              &nbsp;&nbsp;
+            </template>
+            )。
+          </template>
+        </div>
+        <p v-if="!oneTimeExpensesList.length" class="content-text">
+          &nbsp;&nbsp;&nbsp;&nbsp;无。
         </p>
         <p class="content-text">
           &nbsp;&nbsp;&nbsp;&nbsp;合同期限内出现押金不足时,乙方或丙方应在接到甲方通知之日起5日内补足。涉及退款的,在出现合同中止或终止情形后,双方进行结算,经双方确认无误之日起15个工作日内将资金退给付款方。
         </p>
         <p class="content-text">
-          4.定期支付的费用按第
-          <FieldItem v-model="contractForm.payMode" :is-text-mode="isTextMode" width="40px" placeholder="1" />
-          种方式支付:
+          4.乙方应支付的阶段性费用及支付方式如下:
         </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;(1)按月支付(每月
-          <FieldItem v-model="contractForm.payMonthDay" :is-text-mode="isTextMode" width="40px" placeholder="5" />
-          日前支付下一个月费用);
+        <p v-for="item in stageExpensesList" :key="item.id" class="content-text">
+          &nbsp;&nbsp;&nbsp;&nbsp;{{ displayExpenseName(item) }}:费用总额
+          <FieldItem v-model="item.totalAmount" :is-text-mode="isTextMode" width="100px" placeholder="0" />
+          元,分
+          <FieldItem v-model="item.hirePurchaseNumber" :is-text-mode="isTextMode" width="60px" placeholder="0" />
+          期支付,每期
+          <FieldItem v-model="item.hirePurchaseAmount" :is-text-mode="isTextMode" width="100px" placeholder="0" />
+          元;
         </p>
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;(2)按季度支付(每季度第
-          <FieldItem v-model="contractForm.paySeasonMonth" :is-text-mode="isTextMode" width="40px" placeholder="1" />
-          个月的
-          <FieldItem v-model="contractForm.paySeasonDay" :is-text-mode="isTextMode" width="40px" placeholder="5" />
-          日前支付当季费用);
+        <p v-if="!stageExpensesList.length" class="content-text">
+          &nbsp;&nbsp;&nbsp;&nbsp;无。
         </p>
       </div>
     </div>
 
-    <!-- ========== 第8页:第三条继续 + 第四条甲方权利义务 ========== -->
+    <!-- ========== 第8页:第三条 账户信息及后续 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
@@ -854,13 +905,6 @@ const displayDate = computed(() => {
         <span class="page-no-right">8</span>
       </div>
       <div class="page-content">
-        <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;(3)其它:
-          <FieldItem v-model="contractForm.otherPayMode" :is-text-mode="isTextMode" width="160px" placeholder="请填写" />
-          /
-          <FieldItem v-model="contractForm.otherPayMode2" :is-text-mode="isTextMode" width="100px" placeholder="请填写" />
-          。
-        </p>
         <p class="content-text">
           5.甲方指定的收款账户信息如下:
         </p>
@@ -906,7 +950,19 @@ const displayDate = computed(() => {
         <p class="content-text">
           10.甲方在收到款项后应向付款人开具等额的合法收费发票。
         </p>
+      </div>
+    </div>
 
+    <!-- ========== 第9页:第四条 甲方权利及义务 ========== -->
+    <div class="a4-page">
+      <div class="page-header">
+        <div class="logo-line">
+          <span class="logo-circle">颐</span>
+          <span class="logo-text">颐年医养</span>
+        </div>
+        <span class="page-no-right">9</span>
+      </div>
+      <div class="page-content">
         <h2 class="section-title">第四条&nbsp;&nbsp;甲方权利及义务</h2>
         <h3 class="subsection-title">1.甲方权利</h3>
         <p class="content-text">
@@ -921,14 +977,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第9页:第四条甲方权利义务继续 + 甲方义务 ========== -->
+    <!-- ========== 第10页:第四条甲方权利义务继续 + 甲方义务 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">9</span>
+        <span class="page-no-right">10</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -957,14 +1013,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第10页:第四条甲方义务继续 ========== -->
+    <!-- ========== 第11页:第四条甲方义务继续 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">10</span>
+        <span class="page-no-right">11</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -991,14 +1047,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第11页:甲方义务继续 + 第五条 ========== -->
+    <!-- ========== 第12页:甲方义务继续 + 第五条 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">11</span>
+        <span class="page-no-right">12</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1030,14 +1086,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第12页:乙方权利及义务 ========== -->
+    <!-- ========== 第13页:乙方权利及义务 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">12</span>
+        <span class="page-no-right">13</span>
       </div>
       <div class="page-content">
         <h3 class="subsection-title">1.乙方的权利</h3>
@@ -1082,14 +1138,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第13页:乙方义务继续 + 第六条 ========== -->
+    <!-- ========== 第14页:乙方义务继续 + 第六条 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">13</span>
+        <span class="page-no-right">14</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1127,14 +1183,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第14页:丙方义务继续 + 第七条 + 第八条 ========== -->
+    <!-- ========== 第15页:丙方义务继续 + 第七条 + 第八条 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">14</span>
+        <span class="page-no-right">15</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1185,14 +1241,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第15页:合同变更继续 + 合同解除 ========== -->
+    <!-- ========== 第16页:合同变更继续 + 合同解除 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">15</span>
+        <span class="page-no-right">16</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1259,14 +1315,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第17页:合同解除继续 + 第九条违约责任 ========== -->
+    <!-- ========== 第18页:合同解除继续 + 第九条违约责任 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">17</span>
+        <span class="page-no-right">18</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1306,14 +1362,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第18页:违约责任继续 ========== -->
+    <!-- ========== 第19页:违约责任继续 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">18</span>
+        <span class="page-no-right">19</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1340,14 +1396,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第19页:违约责任继续 + 第十条通知与送达 + 第十一条陈述与保证 ========== -->
+    <!-- ========== 第20页:违约责任继续 + 第十条通知与送达 + 第十一条陈述与保证 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">19</span>
+        <span class="page-no-right">20</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1381,14 +1437,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第20页:陈述与保证继续 + 第十二条特别约定 ========== -->
+    <!-- ========== 第21页:陈述与保证继续 + 第十二条特别约定 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">20</span>
+        <span class="page-no-right">21</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1449,14 +1505,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第22页:特别约定继续 + 第十三条争议解决 ========== -->
+    <!-- ========== 第23页:特别约定继续 + 第十三条争议解决 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">22</span>
+        <span class="page-no-right">23</span>
       </div>
       <div class="page-content">
         <p class="content-text">
@@ -1502,14 +1558,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第23页:第十四条合同生效及附件 ========== -->
+    <!-- ========== 第24页:第十四条合同生效及附件 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">23</span>
+        <span class="page-no-right">24</span>
       </div>
       <div class="page-content">
         <h2 class="section-title">第十四条&nbsp;&nbsp;合同生效及附件</h2>
@@ -1576,14 +1632,14 @@ const displayDate = computed(() => {
       </div>
     </div>
 
-    <!-- ========== 第24页:附件继续 + 签署页 ========== -->
+    <!-- ========== 第25页:附件继续 + 签署页 ========== -->
     <div class="a4-page">
       <div class="page-header">
         <div class="logo-line">
           <span class="logo-circle">颐</span>
           <span class="logo-text">颐年医养</span>
         </div>
-        <span class="page-no-right">24</span>
+        <span class="page-no-right">25</span>
       </div>
       <div class="page-content">
         <p class="content-text" style="padding-left: 2em;">

+ 14 - 1
src/views/elderly/contracts/components/FieldItem.vue

@@ -32,7 +32,20 @@ const dictOptions = computed(() => {
 
 const dictLabel = computed(() => {
   if (!props.dictType || localValue.value === '' || localValue.value == null) return ''
-  return getDictLabel((DICT_TYPE as any)[props.dictType], localValue.value)
+  const dictTypeValue = (DICT_TYPE as any)[props.dictType]
+  const val = localValue.value
+  // 优先使用通用字典标签(字符串匹配)
+  const label = getDictLabel(dictTypeValue, val)
+  if (label) return label
+  // 兜底:兼容数字/字符串类型不一致的情况
+  const numVal = Number(val)
+  if (!Number.isNaN(numVal)) {
+    const found = getDictOptions(dictTypeValue).find(
+      (dict: any) => dict.value === numVal || dict.value === String(val)
+    )
+    if (found) return found.label
+  }
+  return String(val)
 })
 
 const dateValue = computed({

+ 1 - 33
src/views/elderly/contracts/risk-disclosure-statement/index.vue

@@ -119,46 +119,14 @@
 
   <AddForm ref="formRef" @success="getList" />
 
-  <!-- 通用批量导出弹窗 -->
-  <BatchExportDialog
-    :show="showBatchExport"
-    :title="exportConfig.title"
-    :loading="exportLoading"
-    :batch-min="exportConfig.batchMin"
-    :batch-max="exportConfig.batchMax"
-    :count-min="exportConfig.countMin"
-    :count-max="exportConfig.countMax"
-    :default-batch="exportConfig.defaultBatch"
-    :default-count="exportConfig.defaultCount"
-    :description="exportConfig.description"
-    @update:show="showBatchExport = $event"
-    @confirm="handleBatchExport"
-    @cancel="showBatchExport = false"
-  />
-
-
-  <Import
-    ref="importRef"
-    @success="getList"
-    :config="{
-      title: '导入',
-      downloadUrl: 'elderly-service-order/get-import-template',
-      excelTempName: '居家工单-【导入】模板',
-      importUrl: '/elderly-service-order/import',
-      failExportUrl: '',
-    }"
-  />
+
 
 </template>
 
 <script setup lang="ts">
 import AddForm from "./AddForm.vue";
 import ButtonAdd from "@/components/ButtonAdd/src/ButtonAdd.vue";
-import ButtonImport from "@/components/ButtonImport/src/ButtonImport.vue";
 import { useUserStore } from '@/store/modules/user'
-import {formatTimestamp, getCurrentMonthRange} from "@/utils/dateUtil";
-import Import from "@/components/ImportFile/index.vue";
-import {restraintCreatePage, restraintDelete} from "@/api/elderly/nursing/keep-fit";
 import {
   attackRiskDelete, attackRiskPage,
 } from "@/api/social-work";

+ 568 - 0
src/views/elderly/contracts/接口返回值.txt

@@ -0,0 +1,568 @@
+{
+    "code": 0,
+    "data": {
+        "status": 2,
+        "processInstanceId": null,
+        "elderId": "19107",
+        "elderName": "哇哇哇2",
+        "elderAge": 0,
+        "elderSex": 2,
+        "idCard": "111",
+        "relativesList": [],
+        "elderlyContractDO": {
+            "id": 4900,
+            "elderId": 19107,
+            "contractNumber": "789",
+            "elderName": "哇哇哇2",
+            "beginTime": 1779321600000,
+            "expireTime": 1810166400000,
+            "createdTime": 1779335796000,
+            "status": 1,
+            "contractTerm": "",
+            "details": null,
+            "times": null,
+            "inStatusType": null
+        },
+        "bedId": "13142",
+        "bedName": "测试楼-2层-202-2",
+        "bedType": "单人间",
+        "type": 9,
+        "contractJson": null,
+        "monthlyExpensesJson": null,
+        "oneTimeExpensesJson": null,
+        "stageExpensesJson": null,
+        "totalAmount": 14687,
+        "remark": "1231",
+        "monthlyExpenses": [
+            {
+                "id": 25607,
+                "expenseId": 6410,
+                "itemId": "1803357950676460884",
+                "itemCategoryId": 195,
+                "itemCategoryName": "杂费",
+                "itemName": "药品管理费",
+                "amount": 80,
+                "actualAmount": 78,
+                "isDiscount": 1,
+                "discount": "9.75",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 78,
+                "type": null,
+                "discountAmount": 2,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25608,
+                "expenseId": 6410,
+                "itemId": "1803357950676459746",
+                "itemCategoryId": 82,
+                "itemCategoryName": "床位费",
+                "itemName": "单人间",
+                "amount": 1000,
+                "actualAmount": 923,
+                "isDiscount": 1,
+                "discount": "9.23",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 923,
+                "type": 1,
+                "discountAmount": 77,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25609,
+                "expenseId": 6410,
+                "itemId": "1803357950676459749",
+                "itemCategoryId": 83,
+                "itemCategoryName": "护理费",
+                "itemName": "一级护理",
+                "amount": 2000,
+                "actualAmount": 1935,
+                "isDiscount": 1,
+                "discount": "9.675",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 1935,
+                "type": 2,
+                "discountAmount": 65,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25610,
+                "expenseId": 6410,
+                "itemId": "1803357950676459752",
+                "itemCategoryId": 84,
+                "itemCategoryName": "餐饮费",
+                "itemName": "普通餐费",
+                "amount": 1200,
+                "actualAmount": 1101,
+                "isDiscount": 1,
+                "discount": "9.175",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 1101,
+                "type": 3,
+                "discountAmount": 99,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25611,
+                "expenseId": 6410,
+                "itemId": "1803357950676459758",
+                "itemCategoryId": 90,
+                "itemCategoryName": "服务费",
+                "itemName": "服务费",
+                "amount": 500,
+                "actualAmount": 500,
+                "isDiscount": 0,
+                "discount": null,
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 500,
+                "type": 7,
+                "discountAmount": 0,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            }
+        ],
+        "oneTimeExpenses": [
+            {
+                "id": 25612,
+                "expenseId": 6410,
+                "itemId": "1803357950676459757",
+                "itemCategoryId": 85,
+                "itemCategoryName": "押金",
+                "itemName": "保证金",
+                "amount": 10000,
+                "actualAmount": 10000,
+                "isDiscount": 0,
+                "discount": "",
+                "isMonthlyExpense": 0,
+                "isOneTimeFee": 1,
+                "isDeposit": 1,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 10000,
+                "type": null,
+                "discountAmount": 0,
+                "tenantId": 0,
+                "changeStartDate": null,
+                "changeEndDate": null,
+                "changeFlag": 0,
+                "createTime": 1779335795000,
+                "isDayCalculate": 0
+            }
+        ],
+        "stageExpenses": [
+            {
+                "id": 25613,
+                "expenseId": 6410,
+                "itemId": "1803357950676460885",
+                "itemCategoryId": 241,
+                "itemCategoryName": "优惠费用",
+                "itemName": "洗衣服",
+                "amount": 150,
+                "actualAmount": 25,
+                "isDiscount": 0,
+                "discount": "",
+                "isMonthlyExpense": 0,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 1,
+                "hirePurchaseNumber": 6,
+                "hirePurchaseAmount": 25,
+                "count": 1,
+                "totalAmount": 150,
+                "type": null,
+                "discountAmount": 0,
+                "tenantId": 195,
+                "changeStartDate": null,
+                "changeEndDate": null,
+                "changeFlag": 0,
+                "createTime": 1779335795000,
+                "isDayCalculate": 0
+            }
+        ],
+        "expenseItems": [
+            {
+                "id": 25612,
+                "expenseId": 6410,
+                "itemId": "1803357950676459757",
+                "itemCategoryId": 85,
+                "itemCategoryName": "押金",
+                "itemName": "保证金",
+                "amount": 10000,
+                "actualAmount": 10000,
+                "isDiscount": 0,
+                "discount": "",
+                "isMonthlyExpense": 0,
+                "isOneTimeFee": 1,
+                "isDeposit": 1,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 10000,
+                "type": null,
+                "discountAmount": 0,
+                "tenantId": 0,
+                "changeStartDate": null,
+                "changeEndDate": null,
+                "changeFlag": 0,
+                "createTime": 1779335795000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25613,
+                "expenseId": 6410,
+                "itemId": "1803357950676460885",
+                "itemCategoryId": 241,
+                "itemCategoryName": "优惠费用",
+                "itemName": "洗衣服",
+                "amount": 150,
+                "actualAmount": 25,
+                "isDiscount": 0,
+                "discount": "",
+                "isMonthlyExpense": 0,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 1,
+                "hirePurchaseNumber": 6,
+                "hirePurchaseAmount": 25,
+                "count": 1,
+                "totalAmount": 150,
+                "type": null,
+                "discountAmount": 0,
+                "tenantId": 195,
+                "changeStartDate": null,
+                "changeEndDate": null,
+                "changeFlag": 0,
+                "createTime": 1779335795000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25607,
+                "expenseId": 6410,
+                "itemId": "1803357950676460884",
+                "itemCategoryId": 195,
+                "itemCategoryName": "杂费",
+                "itemName": "药品管理费",
+                "amount": 80,
+                "actualAmount": 78,
+                "isDiscount": 1,
+                "discount": "9.75",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 78,
+                "type": null,
+                "discountAmount": 2,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25608,
+                "expenseId": 6410,
+                "itemId": "1803357950676459746",
+                "itemCategoryId": 82,
+                "itemCategoryName": "床位费",
+                "itemName": "单人间",
+                "amount": 1000,
+                "actualAmount": 923,
+                "isDiscount": 1,
+                "discount": "9.23",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 923,
+                "type": 1,
+                "discountAmount": 77,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25609,
+                "expenseId": 6410,
+                "itemId": "1803357950676459749",
+                "itemCategoryId": 83,
+                "itemCategoryName": "护理费",
+                "itemName": "一级护理",
+                "amount": 2000,
+                "actualAmount": 1935,
+                "isDiscount": 1,
+                "discount": "9.675",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 1935,
+                "type": 2,
+                "discountAmount": 65,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25610,
+                "expenseId": 6410,
+                "itemId": "1803357950676459752",
+                "itemCategoryId": 84,
+                "itemCategoryName": "餐饮费",
+                "itemName": "普通餐费",
+                "amount": 1200,
+                "actualAmount": 1101,
+                "isDiscount": 1,
+                "discount": "9.175",
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 1101,
+                "type": 3,
+                "discountAmount": 99,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            },
+            {
+                "id": 25611,
+                "expenseId": 6410,
+                "itemId": "1803357950676459758",
+                "itemCategoryId": 90,
+                "itemCategoryName": "服务费",
+                "itemName": "服务费",
+                "amount": 500,
+                "actualAmount": 500,
+                "isDiscount": 0,
+                "discount": null,
+                "isMonthlyExpense": 1,
+                "isOneTimeFee": 0,
+                "isDeposit": 0,
+                "isFreeGift": 0,
+                "freeStartTime": null,
+                "freeEndTime": null,
+                "isHirePurchase": 0,
+                "hirePurchaseNumber": null,
+                "hirePurchaseAmount": null,
+                "count": 1,
+                "totalAmount": 500,
+                "type": 7,
+                "discountAmount": 0,
+                "tenantId": 195,
+                "changeStartDate": [
+                    2026,
+                    5,
+                    21
+                ],
+                "changeEndDate": [
+                    2026,
+                    6,
+                    4
+                ],
+                "changeFlag": 0,
+                "createTime": 1780907524000,
+                "isDayCalculate": 0
+            }
+        ],
+        "checkInTime": "2026-05-21",
+        "checkInDeadlineTime": "2027-05-13",
+        "nurseLevelId": 15,
+        "nurseLevelName": "三级护理",
+        "isPrivateRoom": 0,
+        "specialCareNotes": null,
+        "bpmStatus": 5,
+        "tenantId": 195
+    },
+    "msg": ""
+}

+ 2 - 2
src/views/elderly/elder/contract/index.vue

@@ -154,8 +154,8 @@ const resetQuery = () => {
 /** 添加/修改操作 */
 const formRef = ref()
 const openForm = (row: any = {}, type: number = 1) => {
-  //contractManageFormRef.value.open(row, type)
-  formRef.value.open(row, type)
+  contractManageFormRef.value.open(row, type)
+  //formRef.value.open(row, type)
 }
 
 // 变更/续签