浏览代码

Merge branch 'master' of http://47.107.245.0:3000/xiongxing/kyj-yanglao-web-new

xiongxing 1 天之前
父节点
当前提交
1e544c5e45

+ 2 - 2
src/api/elderly/fee/overheadCharge/index.ts

@@ -1,10 +1,10 @@
 import request from '@/config/axios'
 
 // 获得收费项目列表
-export const getOverheadPage = (query) => {
+export const getOverheadPage = (query,isP=true) => {
   return request.get({
     url: 'overheadCharge/queryPage',
-    params: query
+    params: { ...query, status:isP?1:undefined }
   })
 }
 

+ 6 - 13
src/views/elderly/apply/nine-precautions/nutritional-risk/AddForm.vue

@@ -441,8 +441,7 @@
             <p>若初筛总分≥12分提示无营养不良风险,无需评估;</p>
             <p>若初筛总分&lt;12分提示有营养不良风险,继续评估;</p>
             <p>若营养不良风险评估总分(初筛+评估)≥24分,表示营养状况良好;</p>
-            <p>若营养不良风险评估总分(初筛+评估)&gt;24分,当BMI≥24(或男性腰围&gt;90cm,女性腰围&gt;80cm)时,提示可能是肥胖/超重型营养不良或有营养不良风险;</p>
-            <p>若营养不良风险评估总分(初筛+评估)17分~24分,表示有营养不良风险;</p>
+            <p>若营养不良风险评估总分(初筛+评估)17分~24分(不含24分),表示有营养不良风险;</p>
             <p>若营养不良风险评估总分(初筛+评估)≤17分,表示有营养不良。</p>
           </div>
           <div class="current-result" v-if="form.resultLevel">
@@ -579,18 +578,13 @@ const calculateScores = () => {
     // 初筛通过,无营养不良风险
     form.resultLevel = 'good'
   } else {
-    // 初筛未通过,根据总分判断
+    // 初筛未通过,根据总分判断(结果等级仅由总分决定,不受BMI/腰围影响)
     if (form.totalScore >= 24) {
-      // 检查是否肥胖/超重
-      if (form.bmi && form.bmi >= 24) {
-        form.resultLevel = 'at_risk' // 肥胖/超重型营养不良或有营养不良风险
-      } else {
-        form.resultLevel = 'good'
-      }
+      form.resultLevel = 'good' // 营养状况良好
     } else if (form.totalScore > 17 && form.totalScore < 24) {
-      form.resultLevel = 'at_risk'
+      form.resultLevel = 'at_risk' // 有营养不良风险
     } else {
-      form.resultLevel = 'malnutrition'
+      form.resultLevel = 'malnutrition' // 有营养不良
     }
   }
 }
@@ -1139,8 +1133,7 @@ const handleExport = () => {
           <p>若初筛总分≥12分提示无营养不良风险,无需评估;</p>
           <p>若初筛总分<12分提示有营养不良风险,继续评估;</p>
           <p>若营养不良风险评估总分(初筛+评估)≥24分,表示营养状况良好;</p>
-          <p>若营养不良风险评估总分(初筛+评估)>24分,当BMI≥24(或男性腰围>90cm,女性腰围>80cm)时,提示可能是肥胖/超重型营养不良或有营养不良风险;</p>
-          <p>若营养不良风险评估总分(初筛+评估)17分~24分,表示有营养不良风险;</p>
+          <p>若营养不良风险评估总分(初筛+评估)17分~24分(不含24分),表示有营养不良风险;</p>
           <p>若营养不良风险评估总分(初筛+评估)≤17分,表示有营养不良。</p>
         </div>
         ${form.resultLevel ? `

+ 61 - 5
src/views/elderly/contracts/components/ContractBody.vue

@@ -195,7 +195,10 @@ const contractForm = reactive({
   // 费用明细列表
   monthlyExpenses: [] as any[],
   oneTimeExpenses: [] as any[],
-  stageExpenses: [] as any[]
+  stageExpenses: [] as any[],
+  // 违约条款中的违约金比例(%)——用户可输入,两处条款各自独立,保存到 contractInfo JSON
+  penaltyPercent1: 1,
+  penaltyPercent2: 1
 })
 
 // 父组件下拉切换合同类型时,同步到本地表单(保存时会写入 contractInfo)
@@ -233,8 +236,12 @@ const calcMonthsBetween = (startStr: string, endStr: string): number | null => {
   const start = parseChineseDate(startStr)
   const end = parseChineseDate(endStr)
   if (!start || !end || end < start) return null
-  // 直接按"年月差"计算整月数,末尾差几天不影响(如 2026-08-15 → 2028-08-14 = 24 个月)
-  return (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth())
+  // 合同场景下截止日通常为到期日的前一天(如 2026-09-01 至 2028-08-31 = 24 个月)
+  // 因此把结束日期 +1 天后再计算年月差,保证"前一天到期"的情况算满整月
+  const endNext = new Date(end.getFullYear(), end.getMonth(), end.getDate() + 1)
+  return (
+    (endNext.getFullYear() - start.getFullYear()) * 12 + (endNext.getMonth() - start.getMonth())
+  )
 }
 
 const isIdCardType = (papersType: any): boolean => {
@@ -531,6 +538,13 @@ const fetchContractData = async (row: any) => {
 
           if (parsedData) {
             Object.assign(contractForm, parsedData)
+            // 旧数据可能没有违约金比例字段或为 null,兜底为默认值 1
+            if (contractForm.penaltyPercent1 == null || Number.isNaN(Number(contractForm.penaltyPercent1))) {
+              contractForm.penaltyPercent1 = 1
+            }
+            if (contractForm.penaltyPercent2 == null || Number.isNaN(Number(contractForm.penaltyPercent2))) {
+              contractForm.penaltyPercent2 = 1
+            }
           }
         } catch (e) {
           console.error('解析合同信息失败', e)
@@ -1997,7 +2011,19 @@ watch(
           &nbsp;&nbsp;&nbsp;&nbsp;2.2&nbsp;除本合同另有约定外,下列情况下,甲方可以单方解除本合同,并无需承担违约责任:
         </p>
         <p class="content-text" style="padding-left: 2em">
-          (1)乙方或丙方无无故拖欠各项费用超过15日,经甲方书面催告后7日内仍不交纳的,甲方有权解除合同,并书面通知乙方搬出养老机构。乙方在甲方发出书面解除合同通知后7日内仍不搬出的,甲方有权提起诉讼,请求法院确认合同解除。乙方和丙方除应支付拖欠的服务费用,诉讼期间的服务费用以外,还应每天支付应付未付费用金额的1%违约金,并负担甲方由此产生的一切费用(包括但不限于诉讼费、甲方聘请律师的实际支出、搬出费用)等。
+          (1)乙方或丙方无无故拖欠各项费用超过15日,经甲方书面催告后7日内仍不交纳的,甲方有权解除合同,并书面通知乙方搬出养老机构。乙方在甲方发出书面解除合同通知后7日内仍不搬出的,甲方有权提起诉讼,请求法院确认合同解除。乙方和丙方除应支付拖欠的服务费用,诉讼期间的服务费用以外,还应每天支付应付未付费用金额的
+          <el-input-number
+            v-if="!isTextMode"
+            v-model="contractForm.penaltyPercent1"
+            :min="0"
+            :max="100"
+            :precision="2"
+            size="small"
+            class="percent-input"
+            controls-position="right"
+          />
+          <template v-else>{{ contractForm.penaltyPercent1 }}</template>%
+          违约金,并负担甲方由此产生的一切费用(包括但不限于诉讼费、甲方聘请律师的实际支出、搬出费用)等。
         </p>
         <p class="content-text" style="padding-left: 2em">
           (2)乙方严重违反甲方的规章制度,造成甲方难以履行对乙方的养老服务,或造成其他入住老人伤害或存在可能造成他人伤害危险的。需对有关事实进行甄别别的,可提请属地民政部门或委托第三方协助认定。
@@ -2069,7 +2095,19 @@ watch(
       </div>
       <div class="page-content">
         <p class="content-text">
-          &nbsp;&nbsp;&nbsp;&nbsp;4.如果乙方或丙方无故拖欠各项费用超过15日,经甲方发出催告通知后7日内仍不交纳的,甲方有权解除合同,书面通知乙方和丙方,要求乙方出院。如果乙方在甲方发出解除合同通知后7日内仍不出院,甲方有权强制要求乙方出院或者送回乙方或丙方住所。此种情况下解除合同,乙方及丙方除应支付拖欠的费用外,还应每天支付应付未付费用金额的1%违约金,并负担甲方由此产生的一切费用(包括但不限于诉讼费、甲方聘请律师的实际支出、搬出费用)等;
+          &nbsp;&nbsp;&nbsp;&nbsp;4.如果乙方或丙方无故拖欠各项费用超过15日,经甲方发出催告通知后7日内仍不交纳的,甲方有权解除合同,书面通知乙方和丙方,要求乙方出院。如果乙方在甲方发出解除合同通知后7日内仍不出院,甲方有权强制要求乙方出院或者送回乙方或丙方住所。此种情况下解除合同,乙方及丙方除应支付拖欠的费用外,还应每天支付应付未付费用金额的
+          <el-input-number
+            v-if="!isTextMode"
+            v-model="contractForm.penaltyPercent2"
+            :min="0"
+            :max="100"
+            :precision="2"
+            size="small"
+            class="percent-input"
+            controls-position="right"
+          />
+          <template v-else>{{ contractForm.penaltyPercent2 }}</template>%
+          违约金,并负担甲方由此产生的一切费用(包括但不限于诉讼费、甲方聘请律师的实际支出、搬出费用)等;
         </p>
         <p class="content-text">
           &nbsp;&nbsp;&nbsp;&nbsp;5.乙方或丙方未将乙方健康状况、用药情况及过往病史如实告知甲方,造成甲方在提供服务过程中护理失当的,由乙方或丙方承担相应的后果。
@@ -2598,6 +2636,24 @@ watch(
   color: #333;
 }
 
+/* 违约金百分比内联输入框:融入文档段落样式 */
+.percent-input {
+  width: 90px;
+  margin: 0 4px;
+  vertical-align: middle;
+
+  :deep(.el-input__inner) {
+    font-size: 14px;
+    font-family: 'SimSun', 'Microsoft YaHei', serif;
+    text-align: center;
+  }
+
+  :deep(.el-input-number__decrease),
+  :deep(.el-input-number__increase) {
+    font-size: 12px;
+  }
+}
+
 @media print {
   .contract-body {
     background: #fff;

+ 6 - 2
src/views/elderly/contracts/components/ContractBodyHubei.vue

@@ -265,8 +265,12 @@ const calcMonthsBetween = (startStr: string, endStr: string): number | null => {
   const start = parseChineseDate(startStr)
   const end = parseChineseDate(endStr)
   if (!start || !end || end < start) return null
-  // 直接按"年月差"计算整月数,末尾差几天不影响(如 2026-08-15 → 2028-08-14 = 24 个月)
-  return (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth())
+  // 合同场景下截止日通常为到期日的前一天(如 2026-09-01 至 2028-08-31 = 24 个月)
+  // 因此把结束日期 +1 天后再计算年月差,保证"前一天到期"的情况算满整月
+  const endNext = new Date(end.getFullYear(), end.getMonth(), end.getDate() + 1)
+  return (
+    (endNext.getFullYear() - start.getFullYear()) * 12 + (endNext.getMonth() - start.getMonth())
+  )
 }
 
 const isIdCardType = (papersType: any): boolean => {

+ 1 - 1
src/views/elderly/fee/overhead-charge/index.vue

@@ -195,7 +195,7 @@ const category = reactive({
 const getList = async () => {
   loading.value = true
   try {
-    const data = await getOverheadPage(queryParams)
+    const data = await getOverheadPage(queryParams,false)
     list.value = data.list
     total.value = data.total
   } finally {