| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699 |
- <script setup lang="ts">
- import { reactive, computed, ref, watch, onMounted } from 'vue'
- import { formatBackendDateTime } from '@/utils/formatTime'
- import { DICT_TYPE, getDictLabel } from '@/utils/dict'
- import { getTenantId } from '@/utils/auth'
- import { getCheckInDetailByContractId } from '@/api/elderly/apply/check-in'
- import { getOverheadListByType } from '@/api/elderly/fee/overheadCharge'
- import FieldItem from './FieldItem.vue'
- import SignatureItem from './SignatureItem.vue'
- import { useUserStore } from '@/store/modules/user'
- import { getElderlyContractById } from '@/api/elderly/elder/contract'
- import { updateContractDate } from '@/api/elderly/fee/leave-settle'
- import {
- riskDisclosure_getById,
- checkInRegistration_getById,
- elderSafetyCommitment_getById,
- outingConfirmation_getById,
- signatureProxyApplication_getById,
- powerOfAttorney_getById,
- delegationAgentConfirmation_getById,
- serviceChargingStandards_getById,
- roomFacilitiesEquipment_getById,
- explanationExaminationReport_getById,
- partyBIdentificationDocument_getById,
- guardianPartyB_getById,
- registrationCertificateCivilAffairs_getById,
- comprehensiveAssessmentCapabilities_getById,
- firstServiceProjectConfirmation_getById,
- changeConfirmationForm_getById
- } from '@/api/elderly/contracts'
- const userStore = useUserStore()
- const attachmentConfig: Record<
- string,
- { idField: string; getDetail: (id: number | string) => Promise<any> }
- > = {
- attach_1: { idField: 'riskDisclosureId', getDetail: riskDisclosure_getById },
- attach_2: { idField: 'checkInTabId', getDetail: checkInRegistration_getById },
- attach_4: { idField: 'safetyCommitmentId', getDetail: elderSafetyCommitment_getById },
- attach_5: { idField: 'outingConfirmationFormId', getDetail: outingConfirmation_getById },
- attach_6: {
- idField: 'signatureProxyApplicationId',
- getDetail: signatureProxyApplication_getById
- },
- attach_7: { idField: 'powerOfAttorneyId', getDetail: powerOfAttorney_getById },
- attach_8: {
- idField: 'authorizedAgentConfirmationId',
- getDetail: delegationAgentConfirmation_getById
- },
- attach_9: { idField: 'orgServiceScopeFeeId', getDetail: serviceChargingStandards_getById },
- attach_10: { idField: 'roomFacilityListId', getDetail: roomFacilitiesEquipment_getById },
- attach_11: { idField: 'physicalExamReportId', getDetail: explanationExaminationReport_getById },
- attach_12: { idField: 'partyBCertificateId', getDetail: partyBIdentificationDocument_getById },
- attach_13: { idField: 'partyBGuardianCertificateId', getDetail: guardianPartyB_getById },
- attach_14: {
- idField: 'partyACertificateId',
- getDetail: registrationCertificateCivilAffairs_getById
- },
- attach_15: {
- idField: 'elderlyAbilityEvaluationId',
- getDetail: comprehensiveAssessmentCapabilities_getById
- },
- attach_16: {
- idField: 'firstServiceConfirmationId',
- getDetail: firstServiceProjectConfirmation_getById
- },
- attach_17: { idField: 'changeConfirmationId', getDetail: changeConfirmationForm_getById }
- }
- const props = defineProps<{
- recordRow?: any
- isTextMode?: boolean
- signatureData?: any
- modelValue?: any
- attachmentIds?: Record<string, any>
- visible?: boolean
- contractType?: string
- // 手动切换合同类型后,form.contractType 以父组件当前选择为准;初次加载时用存储的类型
- lockContractType?: boolean
- }>()
- const emit = defineEmits<{
- (e: 'update:data', val: any): void
- (e: 'update:modelValue', val: any): void
- (e: 'update:attachments', val: any): void
- (e: 'update:formData', val: any): void
- (e: 'update:contractType', val: string): void
- (e: 'update:contractExists', val: boolean): void
- }>()
- const loading = ref(false)
- const detailData = ref<any>(null)
- const elderId = computed(() => {
- if (!props.recordRow) return ''
- return props.recordRow.elderId || props.recordRow.id || ''
- })
- const contractForm = reactive({
- // 合同类型:广州地区合同 / 湖北地区合同 / 天河老人院合同(保存到 contractInfo 中,下次打开据此渲染对应合同组件)
- // 默认从父组件传入的合同区域配置读取,未传入时兜底广州
- contractType: props.contractType || '广州地区合同',
- contractNumber: '',
- elderName: '',
- elderGenderText: '',
- elderBirth: '',
- elderPapersType: '',
- elderIdCard: '',
- elderAge: '',
- elderAddress: '',
- elderZip: '',
- partyAName: '颐年健康产业(集团)有限公司',
- partyACode: '',
- partyAAddr: '',
- partyAZip: '',
- partyALegal: '',
- partyAPhone: '',
- partyCName: '',
- partyCGenderText: '',
- partyCBirth: '',
- partyCPapersType: '',
- partyCRelation: '',
- partyCIdCard: '',
- partyCPhone: '',
- partyCAddress: '',
- partyCHomeAddr: '',
- partyCZip: '',
- partyCWorkUnit: '',
- partyCCommAddr: '',
- nurseLevelName: '',
- contractMonths: '',
- startDate: '',
- endDate: '',
- servicePlace: userStore.getTenantName || '',
- bedFee: '',
- nurseFee: '',
- mealFee: '',
- manageFee: '',
- totalFee: '',
- // 费用相关扩展字段
- roomType: '',
- roomNo: '',
- freeElectric: '',
- freeWater: '',
- hotWaterFee: '',
- coldWaterFee: '',
- electricFee: '',
- diagnosisFee: '',
- oneTimeEquipFee: '',
- oneTimeEquipStart: '',
- oneTimeEquipEnd: '',
- depositFee: '',
- depositType: '',
- depositInterest: '',
- depositInterestType: '0',
- payMode: '1',
- payMonthDay: '5',
- paySeasonMonth: '1',
- paySeasonDay: '5',
- partyAAccountName: '',
- partyABank: '',
- partyAAccount: '',
- partyCAccountName: '',
- partyCBank: '',
- partyCAccount: '',
- depositRefund: '',
- otherPayMode: '',
- otherPayMode2: '',
- // 合同续签/变更/解除
- renewNoticeDays: '30',
- moveOutDays: '3',
- changeConfirmDays: '7',
- priceAdjustNoticeDays: '30',
- priceThreshold: '6',
- priceObjDays: '15',
- priceConfirmDays: '15',
- leaveDays: '60',
- depositAmt: '',
- depositAmtCn: '',
- depositAmt1: '',
- depositAmtCn1: '',
- depositAmt2: '',
- depositAmtCn2: '',
- disputeMode: '1',
- disputeCourt: '',
- disputeArbitration: '',
- copyCount: '叁',
- partyACopy: '壹',
- partyBCopy: '壹',
- partyCCopy: '壹',
- partyASign: '',
- partyALegalSign: '',
- partyADate: '',
- partyBSign: '',
- partyBDate: '',
- partyCSign: '',
- partyCDate: '',
- // 费用明细列表
- monthlyExpenses: [] as any[],
- oneTimeExpenses: [] as any[],
- stageExpenses: [] as any[],
- // ===== 2024 湖北版新增字段 =====
- // 甲方扩展信息
- partyARecordNo: '',
- partyAEmail: '',
- partyAContactPhone: '',
- // 乙方扩展信息(户籍所在地与家庭住址分离、联系方式)
- elderCensusAddr: '',
- elderPhone: '',
- elderEmail: '',
- // 房间楼层 / 床位号
- roomFloor: '',
- bedNo: '',
- // 合同期限 / 试住期 / 续约
- trialDays: '7',
- trialStart: '',
- trialEnd: '',
- renewDays: '15',
- // 重大事项:紧急联系人
- emergencyContactName: '',
- emergencyContactPhone: '',
- emergencyContactAddr: '',
- // 会员费(3.5,可选)
- memberFeeAmt: '',
- memberFeeCn: '',
- memberDepositBank: '',
- memberDepositAccount: '',
- memberFeeRefundMode: '',
- // 违约责任(10.5 / 10.6 中的可填比例)
- penaltyRate: '',
- penaltyPercent: ''
- })
- // 父组件下拉切换合同类型时,同步到本地表单(保存时会写入 contractInfo)
- watch(
- () => props.contractType,
- (val) => {
- if (val) contractForm.contractType = val
- },
- { immediate: true }
- )
- const parseIdCardBirth = (idCard: string): string => {
- 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 parseChineseDate = (dateStr: string): Date | null => {
- if (!dateStr) return null
- const match = dateStr.match(/^(\d{4})年(\d{2})月(\d{2})日$/)
- if (!match) return null
- const year = Number(match[1])
- const month = Number(match[2]) - 1
- const day = Number(match[3])
- return new Date(year, month, day)
- }
- const calcMonthsBetween = (startStr: string, endStr: string): number | null => {
- const start = parseChineseDate(startStr)
- const end = parseChineseDate(endStr)
- if (!start || !end || end < start) return null
- // 合同场景下截止日通常为到期日的前一天(如 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 => {
- const label = getDictLabel(DICT_TYPE.PAPERS_TYPE, papersType)
- return !!label && (label.includes('身份证') || label.includes('居民身份'))
- }
- const numToChinese = (num: number | string): string => {
- const n = Number(num)
- if (isNaN(n) || n < 0) return ''
- if (n === 0) return '零元整'
- const fractions = ['角', '分']
- const digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
- const radices = ['', '拾', '佰', '仟']
- const bigRadices = ['', '万', '亿']
- const dStr = n.toFixed(2)
- const parts = dStr.split('.')
- let intPart = parts[0]
- let decPart = parts[1]
- let chinese = ''
- let zeroFlag = false
- for (let i = 0; i < intPart.length; i++) {
- const ch = intPart.charAt(i)
- const numDigit = parseInt(ch)
- const pos = intPart.length - i - 1
- const radixIdx = pos % 4
- const bigRadixIdx = Math.floor(pos / 4)
- if (numDigit === 0) {
- zeroFlag = true
- } else {
- if (zeroFlag) {
- chinese += '零'
- zeroFlag = false
- }
- chinese += digit[numDigit] + radices[radixIdx]
- }
- if (radixIdx === 0 && numDigit !== 0) {
- chinese += bigRadices[bigRadixIdx]
- } else if (radixIdx === 0 && intPart.length > 4) {
- const segStart = Math.max(0, intPart.length - (bigRadixIdx + 1) * 4)
- const seg = intPart.substring(segStart, intPart.length - bigRadixIdx * 4)
- if (parseInt(seg) > 0) {
- chinese += bigRadices[bigRadixIdx]
- }
- }
- }
- chinese = chinese.replace(/零+/g, '零').replace(/零$/, '')
- chinese += '元'
- if (decPart === '00') {
- chinese += '整'
- } else {
- const jiao = parseInt(decPart.charAt(0))
- const fen = parseInt(decPart.charAt(1))
- if (jiao > 0) chinese += digit[jiao] + fractions[0]
- if (fen > 0) chinese += digit[fen] + fractions[1]
- if (jiao === 0 && fen > 0) {
- // 零元几分的情况
- }
- }
- return chinese
- }
- const fillContractForm = (data: any) => {
- if (!data) return
- detailData.value = data
- const contract = data.elderlyContractDO || {}
- // 先清空可能从上份合同残留的数据,再重新回填
- contractForm.elderGenderText = ''
- contractForm.elderIdCard = ''
- contractForm.elderPapersType = ''
- contractForm.elderBirth = ''
- contractForm.startDate = ''
- contractForm.endDate = ''
- contractForm.roomType = ''
- contractForm.roomNo = ''
- contractForm.totalFee = ''
- contractForm.depositFee = ''
- contractForm.depositAmt = ''
- contractForm.depositAmtCn = ''
- contractForm.depositAmt1 = ''
- contractForm.depositAmtCn1 = ''
- contractForm.depositAmt2 = ''
- contractForm.depositAmtCn2 = ''
- contractForm.depositType = ''
- contractForm.partyCName = ''
- contractForm.partyCGenderText = ''
- contractForm.partyCBirth = ''
- contractForm.partyCPapersType = ''
- contractForm.partyCRelation = ''
- contractForm.partyCIdCard = ''
- contractForm.partyCPhone = ''
- contractForm.partyCAddress = ''
- contractForm.partyCHomeAddr = ''
- contractForm.partyCZip = ''
- contractForm.partyCWorkUnit = ''
- contractForm.partyCCommAddr = ''
- contractForm.partyCAccountName = ''
- contractForm.partyCBank = ''
- contractForm.partyCAccount = ''
- contractForm.partyCSign = ''
- contractForm.partyCDate = ''
- contractForm.contractNumber = contract.contractNumber || ''
- contractForm.elderName = contract.elderName || data.elderName || ''
- if (data.elderSex) {
- contractForm.elderGenderText = Number(data.elderSex) === 1 ? '男' : '女'
- }
- if (data.idCard) {
- contractForm.elderIdCard = data.idCard
- }
- if (data.papersType != null && data.papersType !== '' && data.papersType !== undefined) {
- 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 || ''
- contractForm.elderAddress = data.elderAddress || ''
- contractForm.elderZip = data.elderZip || ''
- contractForm.nurseLevelName = data.nurseLevelName || ''
- if (data.checkInTime) {
- contractForm.startDate = formatBackendDateTime(data.checkInTime, 'YYYY年MM月DD日')
- }
- if (data.checkInDeadlineTime) {
- contractForm.endDate = formatBackendDateTime(data.checkInDeadlineTime, 'YYYY年MM月DD日')
- }
- if (contract.beginTime) {
- contractForm.startDate = formatBackendDateTime(contract.beginTime, 'YYYY年MM月DD日')
- }
- if (contract.expireTime) {
- contractForm.endDate = formatBackendDateTime(contract.expireTime, 'YYYY年MM月DD日')
- }
- const monthly = data.monthlyExpenses || []
- const findItem = (list: any[], key: string): any => {
- return list.find(
- (x: any) => (x.itemName || '').includes(key) || (x.itemCategoryName || '').includes(key)
- )
- }
- const findAmt = (list: any[], key: string): string => {
- const item = findItem(list, key)
- return item ? String(item.actualAmount || item.amount || '') : ''
- }
- contractForm.bedFee = findAmt(monthly, '床位') || ''
- contractForm.nurseFee = findAmt(monthly, '护理') || ''
- contractForm.mealFee = findAmt(monthly, '膳食') || ''
- contractForm.manageFee = findAmt(monthly, '服务') || ''
- const total = monthly.reduce(
- (sum: number, it: any) => sum + (Number(it.actualAmount) || Number(it.amount) || 0),
- 0
- )
- contractForm.totalFee = total > 0 ? String(total) : ''
- const bedItem = findItem(monthly, '床位')
- if (bedItem && bedItem.itemName) {
- const m = bedItem.itemName.match(/^(.+?)\(/)
- contractForm.roomType = m ? m[1] : bedItem.itemName
- }
- console.log('ADDD', data)
- if (data.bedName) {
- contractForm.roomNo = data.bedName
- } else if (data.bedId) {
- contractForm.roomNo = contractFormUpdate.value.bedName
- }
- if (data.bedType) {
- contractForm.roomType = data.bedType
- }
- contractForm.monthlyExpenses = data.monthlyExpenses || []
- //contractForm.oneTimeExpenses = data.oneTimeExpenses || []
- contractForm.stageExpenses = data.stageExpenses || []
- //天河颐养院需要过滤掉‘一次性设施费’
- const oneTime = data.oneTimeExpenses || []
- const filteredOneTime = oneTime.filter((item: { itemName: string; itemCategoryName: string }) => {
- const name = item.itemName || ''
- const category = item.itemCategoryName || ''
- return !name.includes('一次性设施费') && !category.includes('一次性设施费')
- })
- contractForm.oneTimeExpenses = filteredOneTime || []
- //console.log('一次性:', contractForm.oneTimeExpenses)
- //const deposit = findItem(oneTime, '押金')
- const firstItem = filteredOneTime.length > 0 ? filteredOneTime[0] : undefined // 取出数组第一个元素(对象)
- if (firstItem) {
- const depositAmt = Number(firstItem.actualAmount || firstItem.amount || 0)
- contractForm.depositFee = String(depositAmt)
- contractForm.depositAmt = String(depositAmt)
- contractForm.depositAmtCn = numToChinese(depositAmt)
- contractForm.depositAmt1 = String(depositAmt)
- contractForm.depositAmtCn1 = numToChinese(depositAmt)
- contractForm.depositAmt2 = String(depositAmt)
- contractForm.depositAmtCn2 = numToChinese(depositAmt)
- contractForm.depositType = firstItem.itemName || ''
- }
- const relative = (data.relativesList && data.relativesList[0]) || {}
- contractForm.partyCName = relative.name || ''
- if (relative.gender) {
- contractForm.partyCGenderText = Number(relative.gender) === 1 ? '男' : '女'
- }
- if (relative.idCard) {
- contractForm.partyCIdCard = relative.idCard
- }
- if (
- relative.papersType != null &&
- relative.papersType !== '' &&
- relative.papersType !== undefined
- ) {
- 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 || ''
- contractForm.partyCAddress = relative.address || relative.nowAddress || ''
- contractForm.partyCHomeAddr = relative.nowAddress || ''
- contractForm.partyCWorkUnit = relative.workUnit || ''
- // ===== 2024 湖北版新增字段映射(尽量从后端/已存合同信息回填) =====
- contractForm.partyARecordNo = data.partyARecordNo || contract.partyARecordNo || ''
- contractForm.partyAEmail = data.partyAEmail || contract.partyAEmail || ''
- contractForm.partyAContactPhone = data.partyAContactPhone || contract.partyAContactPhone || ''
- contractForm.elderCensusAddr =
- data.elderCensusAddr || contract.elderCensusAddr || data.censusAddr || ''
- contractForm.elderPhone = data.elderPhone || contract.elderPhone || ''
- contractForm.elderEmail = data.elderEmail || contract.elderEmail || ''
- contractForm.roomFloor = data.roomFloor || contract.roomFloor || ''
- contractForm.bedNo = data.bedNo || contract.bedNo || ''
- contractForm.trialDays = data.trialDays || contract.trialDays || '7'
- contractForm.trialStart = data.trialStart || contract.trialStart || ''
- contractForm.trialEnd = data.trialEnd || contract.trialEnd || ''
- contractForm.renewDays = data.renewDays || contract.renewDays || '15'
- contractForm.emergencyContactName =
- data.emergencyContactName || contract.emergencyContactName || ''
- contractForm.emergencyContactPhone =
- data.emergencyContactPhone || contract.emergencyContactPhone || ''
- contractForm.emergencyContactAddr =
- data.emergencyContactAddr || contract.emergencyContactAddr || ''
- contractForm.memberFeeAmt = data.memberFeeAmt || contract.memberFeeAmt || ''
- contractForm.memberFeeCn = data.memberFeeCn || contract.memberFeeCn || ''
- contractForm.memberDepositBank = data.memberDepositBank || contract.memberDepositBank || ''
- contractForm.memberDepositAccount =
- data.memberDepositAccount || contract.memberDepositAccount || ''
- contractForm.memberFeeRefundMode = data.memberFeeRefundMode || contract.memberFeeRefundMode || ''
- contractForm.penaltyRate = data.penaltyRate || contract.penaltyRate || ''
- contractForm.penaltyPercent = data.penaltyPercent || contract.penaltyPercent || ''
- contractForm.disputeCourt = data.disputeCourt || contract.disputeCourt || ''
- contractForm.disputeArbitration = data.disputeArbitration || contract.disputeArbitration || ''
- // 如果外部传入了签名数据(如打印时),覆盖合同表单中的签名字段
- // 优先使用 v-model 传入的 modelValue,其次是 signatureData
- const externalSignData = props.modelValue || props.signatureData
- if (externalSignData) {
- if (externalSignData.partyASign != null && externalSignData.partyASign !== '')
- contractForm.partyASign = externalSignData.partyASign
- if (externalSignData.partyALegalSign != null && externalSignData.partyALegalSign !== '')
- contractForm.partyALegalSign = externalSignData.partyALegalSign
- if (externalSignData.partyADate != null && externalSignData.partyADate !== '')
- contractForm.partyADate = externalSignData.partyADate
- if (externalSignData.partyBSign != null && externalSignData.partyBSign !== '')
- contractForm.partyBSign = externalSignData.partyBSign
- if (externalSignData.partyBDate != null && externalSignData.partyBDate !== '')
- contractForm.partyBDate = externalSignData.partyBDate
- if (externalSignData.partyCSign != null && externalSignData.partyCSign !== '')
- contractForm.partyCSign = externalSignData.partyCSign
- if (externalSignData.partyCDate != null && externalSignData.partyCDate !== '')
- contractForm.partyCDate = externalSignData.partyCDate
- }
- emit('update:data', { ...contractForm })
- }
- const fetchContractData = async (row: any) => {
- if (!row) return
- // 切换人员/重新打开抽屉时,先清空上一个人的附件缓存,避免残留到当前合同
- contractForm.attachments = {}
- // // 如果已经有完整数据(如直接返回了elderlyContractDO),直接填充
- // if (row.elderlyContractDO) {
- // console.log('有历史完整数据,直接填充')
- // fillContractForm(row)
- // return
- // }
- // console.log('合同id', row)
- // // 否则调用接口获取
- // const recordId = row.id
- // if (!recordId) {
- // console.log('没有id,使用历史数据填充?')
- // fillContractForm(row)
- // return
- // }
- loading.value = true
- try {
- const res = await getElderlyContractById(props.recordRow.id)
- //console.log('合同信息接口:', res)
- //console.log('合同信息接口:', JSON.parse(res.contractInfo))
- if (res) {
- contractFormUpdate.value = res
- // console.log('接口获取合同信息:', contractFormUpdate.value.contractInfo)
- contractFormUpdate.value.id = props.recordRow.id
- if (contractFormUpdate.value.contractInfo) {
- try {
- const parsedData = JSON.parse(contractFormUpdate.value.contractInfo)
- //天河颐养院需要过滤掉‘一次性设施费’
- const oneTime = parsedData.oneTimeExpenses || []
- const filteredOneTime = oneTime.filter(
- (item: { itemName: string; itemCategoryName: string }) => {
- const name = item.itemName || ''
- const category = item.itemCategoryName || ''
- return !name.includes('一次性设施费') && !category.includes('一次性设施费')
- }
- )
- parsedData.oneTimeExpenses = filteredOneTime || []
- // console.log('一次性的:', parsedData.oneTimeExpenses)
- if (parsedData) {
- Object.assign(contractForm, parsedData)
- }
- } catch (e) {
- console.error('解析合同信息失败', e)
- }
- const attachmentsMap: Record<string, any> = {}
- const detailPromises: Promise<any>[] = []
- Object.keys(attachmentConfig).forEach((key) => {
- const config = attachmentConfig[key]
- //console.log('config', config, key)
- let id = undefined
- try {
- id = contractForm.attachments[key].id
- } catch (e) {}
- //console.log('id', id)
- if (id) {
- detailPromises.push(
- config
- .getDetail(id)
- .then((detail) => {
- //console.log('获取详情', detail)
- attachmentsMap[key] = JSON.parse(detail.content)
- })
- .catch((err) => {
- console.error(`获取附件详情失败: ${key}`, err)
- attachmentsMap[key] = { id }
- })
- )
- } else {
- attachmentsMap[key] = null
- }
- })
- if (detailPromises.length > 0) {
- await Promise.all(detailPromises)
- }
- emit('update:attachments', attachmentsMap)
- loading.value = false
- } else {
- console.log('保存')
- try {
- const checkInRes = await getCheckInDetailByContractId(row.id)
- if (checkInRes) {
- if (checkInRes) {
- }
- fillContractForm(checkInRes)
- }
- contractForm.roomNo = contractFormUpdate.value.bedName
- try {
- contractFormUpdate.value.contractInfo = JSON.stringify({ ...contractForm })
- const saveRes = await updateContractDate(contractFormUpdate.value)
- if (saveRes) {
- }
- } catch (error) {
- console.log(error)
- }
- } catch (e) {
- console.error('获取合同详情失败', e)
- } finally {
- loading.value = false
- }
- }
- }
- // 手动切换合同类型后(父组件已解析完成),以父组件当前选择为准,避免沿用旧合同类型
- if (props.lockContractType && props.contractType) {
- contractForm.contractType = props.contractType
- }
- // 回传合同是否已存在(已有保存记录,父组件据此决定是否二次确认)
- emit(
- 'update:contractExists',
- !!(contractFormUpdate.value && contractFormUpdate.value.contractInfo)
- )
- // 回传合同类型给父组件,父组件据此切换渲染对应合同组件(广州/湖北/天河)
- emit('update:contractType', contractForm.contractType || '广州地区合同')
- console.log('接口获取到的合同详情:', contractFormUpdate.value)
- } catch (e) {
- console.log(e)
- }
- }
- // 用于避免抽屉关闭/打开相同数据时重复请求,同时在重新打开时强制刷新
- let lastFetchedKey: string | number | undefined
- const tryFetchContractData = () => {
- const row = props.recordRow
- if (!row || !props.visible) return
- const key = row.id ?? row.elderId
- if (key === lastFetchedKey) return
- lastFetchedKey = key
- fetchContractData(row)
- }
- watch(() => props.recordRow, tryFetchContractData, { immediate: true })
- watch(
- () => props.visible,
- (val) => {
- if (!val) {
- // 抽屉关闭后重置标记,下次打开同一条数据会重新请求接口
- lastFetchedKey = undefined
- } else {
- tryFetchContractData()
- }
- }
- )
- watch(
- () => props.signatureData,
- (val) => {
- if (!val) return
- if (val.partyASign) contractForm.partyASign = val.partyASign
- if (val.partyALegalSign) contractForm.partyALegalSign = val.partyALegalSign
- if (val.partyADate) contractForm.partyADate = val.partyADate
- if (val.partyBSign) contractForm.partyBSign = val.partyBSign
- if (val.partyBDate) contractForm.partyBDate = val.partyBDate
- if (val.partyCSign) contractForm.partyCSign = val.partyCSign
- if (val.partyCDate) contractForm.partyCDate = val.partyCDate
- },
- { deep: true }
- )
- watch(
- () => contractForm.depositAmt1,
- (val) => {
- const n = Number(val)
- if (!isNaN(n) && n >= 0) {
- contractForm.depositAmtCn1 = numToChinese(n)
- }
- }
- )
- watch(
- () => contractForm.depositAmt2,
- (val) => {
- const n = Number(val)
- if (!isNaN(n) && n >= 0) {
- contractForm.depositAmtCn2 = numToChinese(n)
- }
- }
- )
- // 会员费金额变化时,同步大写金额
- watch(
- () => contractForm.memberFeeAmt,
- (val) => {
- const n = Number(val)
- if (!isNaN(n) && n >= 0) {
- contractForm.memberFeeCn = numToChinese(n)
- }
- }
- )
- // 外部 modelValue 变化时,同步签名和日期字段到 contractForm
- watch(
- () => props.modelValue,
- (val) => {
- if (!val) return
- if (val.partyASign != null && val.partyASign !== '') contractForm.partyASign = val.partyASign
- if (val.partyALegalSign != null && val.partyALegalSign !== '')
- contractForm.partyALegalSign = val.partyALegalSign
- if (val.partyADate != null && val.partyADate !== '') contractForm.partyADate = val.partyADate
- if (val.partyBSign != null && val.partyBSign !== '') contractForm.partyBSign = val.partyBSign
- if (val.partyBDate != null && val.partyBDate !== '') contractForm.partyBDate = val.partyBDate
- if (val.partyCSign != null && val.partyCSign !== '') contractForm.partyCSign = val.partyCSign
- if (val.partyCDate != null && val.partyCDate !== '') contractForm.partyCDate = val.partyCDate
- },
- { immediate: true, deep: true }
- )
- // 签名或日期变化时,同步给父组件(用于打印时共享签名数据)
- watch(
- () => [
- contractForm.partyASign,
- contractForm.partyALegalSign,
- contractForm.partyADate,
- contractForm.partyBSign,
- contractForm.partyBDate,
- contractForm.partyCSign,
- contractForm.partyCDate
- ],
- () => {
- emit('update:data', { ...contractForm })
- emit('update:modelValue', {
- partyASign: contractForm.partyASign,
- partyALegalSign: contractForm.partyALegalSign,
- partyADate: contractForm.partyADate,
- partyBSign: contractForm.partyBSign,
- partyBDate: contractForm.partyBDate,
- partyCSign: contractForm.partyCSign,
- partyCDate: contractForm.partyCDate
- })
- }
- )
- const displayDate = computed(() => {
- const today = new Date()
- return `${today.getFullYear()}年${today.getMonth() + 1}月${today.getDate()}日`
- })
- // 费用相关动态列表
- const monthlyExpensesList = computed(() => contractForm.monthlyExpenses || [])
- const oneTimeExpensesList = computed(() => contractForm.oneTimeExpenses || [])
- const stageExpensesList = computed(() => contractForm.stageExpenses || [])
- const formatExpenseAmount = (val: any): string => {
- if (val == null || val === '') return ''
- return String(val)
- }
- /** 手动添加一行月度费用(名称可编辑,随 contractForm.monthlyExpenses 一并保存/解析) */
- const addMonthlyExpense = () => {
- contractForm.monthlyExpenses.push({
- id: `manual-${Date.now()}`,
- isManual: true,
- itemName: '',
- itemCategoryName: '',
- actualAmount: ''
- })
- }
- /** 删除手动添加的月度费用行(仅 isManual 行提供删除入口) */
- const removeMonthlyExpense = (index: number) => {
- contractForm.monthlyExpenses.splice(index, 1)
- }
- 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}`
- }
- // 费用项显示名称:类别名(项目名)
- // 严谨优先级:类别与项目都存在且不同 → "类别(项目)¥";否则取二者非空者;都为空返回空串
- // (不能用 `category + '¥' || name + '¥'`,空类别时 `'' + '¥'` 为真值会吞掉项目名)
- const displayExpenseName = (item: any): string => {
- const category = item?.itemCategoryName || ''
- const name = item?.itemName || ''
- if (category && name && category !== name) {
- return `${category}(${name})¥`
- }
- const label = category || name
- return label ? `${label}¥` : ''
- }
- const bedList = ref<{ chargeName: string; id: string; price: number }[]>([])
- const loadBedTypes = async () => {
- try {
- const tenantId = getTenantId()
- const res = await getOverheadListByType(1, tenantId)
- bedList.value = res || []
- } catch (e) {
- bedList.value = []
- }
- }
- const roomTypeOptions = computed(() => {
- return bedList.value.map((item) => ({ label: item.chargeName, value: item.chargeName }))
- })
- const isAttachmentSelected = (no: number) => !!props.attachmentIds?.[`attach_${no}`]
- const attachmentTitleMap: Record<number, { title: string; subTitle?: string }> = {
- 1: { title: '《知情同意书》' },
- 2: { title: '《入住登记表》' },
- 3: { title: '《入住须知》' },
- 4: { title: '《长者安全承诺书》' },
- 5: { title: '《长者外出情况确认书》' },
- 6: { title: '《签名代理申请》' },
- 7: { title: '《授权委托书》' },
- 8: { title: '《委托代理人确认表》' },
- 9: { title: '《机构服务范围及收费标准》' },
- 10: { title: '《房间设施设备清单》' },
- 11: {
- title: '二级甲等以上医院出具的《体检报告项目说明》',
- subTitle: '(体检时间应在签订服务合同前30日以内)'
- },
- 12: { title: '乙方有效证件(身份证、户口本)复印件' },
- 13: { title: '乙方监护人(丙方)身份证、户口本复印件' },
- 14: { title: '甲方登记证书及民政部门备案回执' },
- 15: { title: '老年人能力综合评估结果' },
- 16: { title: '首次服务项目确认表' },
- 17: { title: '变更事项确认表' }
- }
- const toChineseNumber = (num: number): string => {
- const chars = [
- '零',
- '一',
- '二',
- '三',
- '四',
- '五',
- '六',
- '七',
- '八',
- '九',
- '十',
- '十一',
- '十二',
- '十三',
- '十四',
- '十五',
- '十六',
- '十七'
- ]
- return chars[num] || String(num)
- }
- const selectedAttachmentItems = computed(() => {
- const items: { no: number; title: string; subTitle?: string }[] = []
- for (let no = 1; no <= 17; no++) {
- if (isAttachmentSelected(no)) {
- const config = attachmentTitleMap[no]
- if (config) {
- items.push({ no, ...config })
- }
- }
- }
- return items
- })
- const page24AttachmentItems = computed(() => selectedAttachmentItems.value.slice(0, 14))
- const page25AttachmentItems = computed(() => selectedAttachmentItems.value.slice(14))
- const contractFormUpdate = ref({})
- const saveContract = async () => {
- try {
- // 保存时只保留当前选中的附件,防止历史/上一个人的附件残留
- contractForm.attachments = {}
- if (props.attachmentIds) {
- Object.keys(props.attachmentIds).forEach((key) => {
- const row = props.attachmentIds![key]
- if (row) {
- try {
- const data = typeof row === 'string' ? JSON.parse(row) : row
- if (data.id) {
- contractForm.attachments[key] = { id: data.id }
- const config = attachmentConfig[key]
- contractFormUpdate.value[config.idField] = data.id
- }
- } catch (e) {
- console.log(e)
- }
- } else {
- }
- })
- }
- contractFormUpdate.value.contractInfo = JSON.stringify({
- ...contractForm
- // attachments: contractForm.attachments
- })
- const saveRes = await updateContractDate(contractFormUpdate.value)
- return saveRes
- } catch (error) {
- console.error('保存合同失败', error)
- throw error
- }
- }
- defineExpose({ saveContract })
- onMounted(async () => {
- await loadBedTypes()
- })
- // 月度费用总额随明细自动汇总
- 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 }
- )
- // 合同期限根据起止日期自动计算
- watch(
- [() => contractForm.startDate, () => contractForm.endDate],
- ([start, end]) => {
- const months = calcMonthsBetween(start, end)
- if (months !== null) {
- contractForm.contractMonths = String(months)
- }
- },
- { immediate: true }
- )
- </script>
- <template>
- <div class="contract-body">
- <!-- ========== 第1页:封面 ========== -->
- <div class="a4-page cover-a4">
- <div class="page-header">
- <div class="logo-line">
- <span class="logo-circle">颐</span>
- <span class="logo-text">颐年医养</span>
- </div>
- <span class="page-no-right">-1-</span>
- </div>
- <div class="page-content cover-page">
- <div class="cover-fields">
- <p>
- <span class="label">合同编号:</span>
- <FieldItem
- v-model="contractForm.contractNumber"
- :is-text-mode="isTextMode"
- width="180px"
- placeholder="请输入合同编号"
- />
- </p>
- <p>
- <span class="label">长者姓名:</span>
- <FieldItem
- v-model="contractForm.elderName"
- :is-text-mode="isTextMode"
- width="180px"
- placeholder="请输入长者姓名"
- />
- </p>
- </div>
- <h1 class="doc-title">湖北省养老机构服务合同</h1>
- <p class="cover-issuer">
- 湖北省民政厅<br />
- 湖北省市场监督管理局 制定
- </p>
- </div>
- </div>
- <!-- ========== 第2页:使用说明 ========== -->
- <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">2</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">使用说明</h2>
- <p class="content-text">
- 一、本合同文本为示范文本,供本省养老机构与入住老年人及第三方(入住老年人家属或监护人、担保人以及委托代理的个人或组织)之间签订养老服务合同使用。特困供养老年人的委托照料不适用本合同。
- </p>
- <p class="content-text">
- 二、本合同所称养老机构是指依法办理登记并在民政部门备案,为老年人提供全日集中住宿和照料护理服务,床位数在(含)10张以上的机构。提供短中期集中住宿和照料护理服务的居家社区养老服务机构可参照本合同。
- </p>
- <p class="content-text">
- 三、养老机构应当就合同内容对入住老年人及其家属或其他付款人、保证人、联系人等第三方尽到提示义务。入住老年人及第三方应当审慎签订合同,注意查看养老机构的经营资质、收费情况、服务质量。在签订本合同前仔细阅读合同条款,特别是其中具有选择性、补充性、修改性的内容,注意防范潜在的风险。
- </p>
- <p class="content-text">
- 四、本合同文本"□"中选择内容、空格部位或划线处填写内容及其他需要删除或添加的内容,双方当事人应当协商确定。"□"中选择内容,以划√方式选定;对于实际情况未发生或双方当事人不作约定时,应当在空格部位打×或划线处写"无",以示删除。
- </p>
- <p class="content-text">
- 五、各方当事人可参照本示范文本签订服务合同,也可在有关法律法规规定范围内,针对合同中未约定或约定不明确的内容,根据养老服务内容的具体情况在相关条款后的空白处中进行补充约定或另行签订补充协议,补充协议内容不得与主合同条款冲突,且补充的内容不得减轻或者免除应当由养老机构承担的责任。
- </p>
- <p class="content-text">
- 六、当事人可以根据实际情况决定本合同原件的份数,并在签订合同时认真核对,以确保各份合同内容一致;在任何情况下,各方当事人都有权持有至少一份合同原件。
- </p>
- <p class="content-text">
- 七、本合同约定了各方的民事权利义务关系,产生纠纷时,各方可依据《中华人民共和国民法典》和本合同的约定协商解决,也可以通过诉讼或仲裁解决。
- </p>
- <p class="content-text">
- 八、本合同示范文本,由湖北省民政厅、湖北省市场监督管理局共同制定。
- </p>
- </div>
- </div>
- <!-- ========== 第3页:甲乙丙方信息 ========== -->
- <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">3</span>
- </div>
- <div class="page-content">
- <h3 class="subsection-title">甲方(养老机构):</h3>
- <p class="content-text">
- 名称:
- <FieldItem
- v-model="contractForm.partyAName"
- :is-text-mode="isTextMode"
- width="240px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 统一社会信用代码:
- <FieldItem
- v-model="contractForm.partyACode"
- :is-text-mode="isTextMode"
- width="220px"
- placeholder="请输入"
- />
- 机构备案号:
- <FieldItem
- v-model="contractForm.partyARecordNo"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 地址:
- <FieldItem
- v-model="contractForm.partyAAddr"
- :is-text-mode="isTextMode"
- width="220px"
- placeholder="请输入"
- />
- 邮编:
- <FieldItem
- v-model="contractForm.partyAZip"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 机构电话:
- <FieldItem
- v-model="contractForm.partyAPhone"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="请输入"
- />
- 机构邮箱:
- <FieldItem
- v-model="contractForm.partyAEmail"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 法定代表人:
- <FieldItem
- v-model="contractForm.partyALegal"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="请输入"
- />
- 联系电话:
- <FieldItem
- v-model="contractForm.partyAContactPhone"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="请输入"
- />
- </p>
- <h3 class="subsection-title" style="margin-top: 16px">乙方(入住老年人):</h3>
- <div class="content-text">
- 姓名:
- <FieldItem
- v-model="contractForm.elderName"
- :is-text-mode="isTextMode"
- width="140px"
- placeholder="请输入"
- />
- 性别:
- <FieldItem
- v-model="contractForm.elderGenderText"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="男/女"
- />
- 出生年月:
- <FieldItem
- v-model="contractForm.elderBirth"
- :is-text-mode="isTextMode"
- type="date"
- width="200px"
- placeholder="请选择日期"
- />
- </div>
- <p class="content-text">
- 证件类型:
- <FieldItem
- v-model="contractForm.elderPapersType"
- :is-text-mode="isTextMode"
- type="dict"
- dictType="PAPERS_TYPE"
- width="200px"
- placeholder="请选择证件类型"
- />
- 证件号码:
- <FieldItem
- v-model="contractForm.elderIdCard"
- :is-text-mode="isTextMode"
- width="220px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 户籍所在地:
- <FieldItem
- v-model="contractForm.elderCensusAddr"
- :is-text-mode="isTextMode"
- width="260px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 家庭住址:
- <FieldItem
- v-model="contractForm.elderAddress"
- :is-text-mode="isTextMode"
- width="260px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 手机号码:
- <FieldItem
- v-model="contractForm.elderPhone"
- :is-text-mode="isTextMode"
- width="180px"
- placeholder="请输入"
- />
- 电子邮箱:
- <FieldItem
- v-model="contractForm.elderEmail"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="请输入"
- />
- </p>
- <h3 class="subsection-title" style="margin-top: 16px"
- >丙方(老年人家属/监护人,担保人/委托代理的个人或组织):</h3
- >
- <div class="content-text">
- 姓名:
- <FieldItem
- v-model="contractForm.partyCName"
- :is-text-mode="isTextMode"
- width="140px"
- placeholder="请输入"
- />
- 性别:
- <FieldItem
- v-model="contractForm.partyCGenderText"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="男/女"
- />
- 出生年月:
- <FieldItem
- v-model="contractForm.partyCBirth"
- :is-text-mode="isTextMode"
- type="date"
- width="200px"
- placeholder="请选择日期"
- />
- </div>
- <p class="content-text">
- 与乙方关系:
- <FieldItem
- v-model="contractForm.partyCRelation"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="请输入"
- />
- 联系方式:
- <FieldItem
- v-model="contractForm.partyCPhone"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 证件类型:
- <FieldItem
- v-model="contractForm.partyCPapersType"
- :is-text-mode="isTextMode"
- type="dict"
- dictType="PAPERS_TYPE"
- width="200px"
- placeholder="请选择证件类型"
- />
- 证件号码:
- <FieldItem
- v-model="contractForm.partyCIdCard"
- :is-text-mode="isTextMode"
- width="220px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 住所(址):
- <FieldItem
- v-model="contractForm.partyCAddress"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 户籍所在地:
- <FieldItem
- v-model="contractForm.partyCHomeAddr"
- :is-text-mode="isTextMode"
- width="260px"
- placeholder="请输入"
- />
- 邮编:
- <FieldItem
- v-model="contractForm.partyCZip"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 工作单位:
- <FieldItem
- v-model="contractForm.partyCWorkUnit"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 通信地址:
- <FieldItem
- v-model="contractForm.partyCCommAddr"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text" style="margin-top: 14px; font-size: 13px">
- (若乙方属于限制民事行为能力或者无民事行为能力的入住老年人,须由监护人签字确认。入住老年人的代理人作为连带保证人,就入住老年人在本合同项下对养老机构所负的债务承担连带保证责任。)
- </p>
- <p class="content-text" style="margin-top: 12px">
- 根据《中华人民共和国民法典》《中华人民共和国老年人权益保障法》《养老机构管理办法》等法律法规规定,甲方、乙方、丙方本着平等、自愿、诚实守信的原则,经过友好协商,就甲方向乙方提供养老服务事宜达成一致,签订本合同。
- </p>
- </div>
- </div>
- <!-- ========== 第4页:第一条 服务地点及服务设施 + 第二条 服务内容与质量标准 ========== -->
- <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">4</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第一条 服务地点及服务设施</h2>
- <p class="content-text">
- 1.1 甲方为乙方提供养老服务的地点为:
- <FieldItem
- v-model="contractForm.servicePlace"
- :is-text-mode="isTextMode"
- width="260px"
- placeholder="具体到门牌号"
- />
- 。
- </p>
- <p class="content-text">
- 1.2 乙方选择入住的房间类型为:
- <span v-if="!isTextMode" style="display: inline-block; vertical-align: middle">
- <el-select v-model="contractForm.roomType" placeholder="请选择" style="width: 200px">
- <el-option
- v-for="item in roomTypeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </span>
- <span v-else class="fill-text">{{ contractForm.roomType || '' }}</span>
- </p>
- <p class="content-text">
- 1.3 乙方选择的房间,具体楼层为:
- <FieldItem
- v-model="contractForm.roomFloor"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="楼层"
- />
- ,房间号为:
- <FieldItem
- v-model="contractForm.roomNo"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="房间号"
- />
- ,床位号为:
- <FieldItem
- v-model="contractForm.bedNo"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="床位号"
- />
- 。
- </p>
- <p class="content-text">
- 1.4 乙方、丙方基于正当理由要求调整房间的,甲方在条件许可的范围内应尽量满足;甲方基于照料护理等级的改变而需要调整房间的,应事先经乙方、丙方同意。若因房间变化,需要相应调整费用的,应经各方协商一致并书面确认,如各方不能达成一致,则仍按本合同约定的房间履行。
- </p>
- <p class="content-text">
- 1.5 甲方提供的服务设施设备除了住宿的房屋外,还包括房间内设施设备和公共设施设备。
- </p>
- <h2 class="section-title">第二条 服务内容与质量标准</h2>
- <p class="content-text">
- 2.1 甲方根据《老年人能力评估规范》国家标准(GB/T42195-2022)、《入住登记表》《体检报告》及对乙方的能力综合评估结果,经甲方与乙方、丙方商定,确定甲方向乙方提供照料护理等级和服务项目,签署《首次服务项目确认表》。
- </p>
- <p class="content-text">
- 2.2 在本合同履行过程中,如乙方身心状况发生变化,需要变更照料护理等级及相关服务项目的,甲方应当及时重新对乙方进行老年人能力综合评估,甲方确定或者变更乙方照料护理等级,应当经乙方或丙方同意并签署《变更事项确认表》。乙方、丙方对重新评估结果有异议的,可与甲方协商进行复评,根据复评结果,仍需调整乙方相应的照料护理等级和服务项目的,乙方、丙方应当签署《变更事项确认表》。其中,经评估确定的乙方护理级别为:
- <FieldItem
- v-model="contractForm.nurseLevelName"
- :is-text-mode="isTextMode"
- width="180px"
- placeholder="请输入"
- />
- ,甲方向乙方提供的护理等级服务项目详见本合同附件《护理等级与服务项目》。
- </p>
- </div>
- </div>
- <!-- ========== 第5页:第三条 收费标准及费用的支付(动态费用明细) ========== -->
- <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">5</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第三条 收费标准及费用的支付</h2>
- <p class="content-text">
- 3.1 甲方的收费标准和调整应遵守养老机构服务收费管理的相关规定,若甲方有收取会员费行为,应遵循《湖北省养老机构会员费管理办法(试行)》相关要求执行。
- </p>
- <p class="content-text">
- 3.2 甲方的《服务项目及收费标准》和收费依据应在养老机构内公共区域显著位置进行公示,并作为本合同附件。
- </p>
- <p class="content-text">
- 3.3 甲方在收到费用后应当给乙方出具符合政府相关部门要求的等额收费凭证或发票。
- </p>
- <p class="content-text"> 3.4 养老服务费用 </p>
- <p class="content-text">
- 3.4.1 根据乙方入住时所选择的房间、照料护理等级及服务项目收费标准,乙方入住甲方的养老服务总费用为:¥
- <FieldItem
- v-model="contractForm.totalFee"
- :is-text-mode="isTextMode"
- width="100px"
- placeholder="0"
- />
- 元/月,包括:
- </p>
- <p
- v-for="(item, index) in monthlyExpensesList"
- :key="item.id ?? 'manual-' + index"
- class="content-text"
- >
-
- <template v-if="item.isManual">
- <FieldItem
- v-model="item.itemName"
- :is-text-mode="isTextMode"
- width="140px"
- placeholder="请输入费用名称"
- no-underline
- />¥:
- </template>
- <template v-else>
- {{ displayExpenseName(item) }}:
- </template>
- <FieldItem
- v-model="item.actualAmount"
- :is-text-mode="isTextMode"
- width="120px"
- placeholder="0"
- no-underline
- />
- 元/月;
- <el-button
- v-if="item.isManual && !isTextMode"
- link
- type="danger"
- size="small"
- class="expense-del"
- @click="removeMonthlyExpense(index)"
- >
- 删除
- </el-button>
- </p>
- <p v-if="!isTextMode" class="content-text">
-
- <el-button link type="primary" size="small" @click="addMonthlyExpense">
- + 添加费用
- </el-button>
- </p>
- <p class="content-text"> 其他费用: </p>
- <p class="content-text">
- (1)水电费:超出床位费包含的每人每月
- <FieldItem
- v-model="contractForm.freeElectric"
- :is-text-mode="isTextMode"
- width="80px"
- placeholder="0"
- />
- 千瓦时电和
- <FieldItem
- v-model="contractForm.freeWater"
- :is-text-mode="isTextMode"
- width="80px"
- placeholder="0"
- />
- 立方冷水的免费额度后,超出部分按实际支出进行对应房型具体入住床数进行均摊收取,超出部分收费标准为:热水
- <FieldItem
- v-model="contractForm.hotWaterFee"
- :is-text-mode="isTextMode"
- width="80px"
- placeholder="0"
- />
- 元/立方;冷水
- <FieldItem
- v-model="contractForm.coldWaterFee"
- :is-text-mode="isTextMode"
- width="80px"
- placeholder="0"
- />
- 元/立方;电
- <FieldItem
- v-model="contractForm.electricFee"
- :is-text-mode="isTextMode"
- width="80px"
- placeholder="0"
- />
- 元/千瓦时;
- </p>
- <p class="content-text" style="padding-left: 2em">
- 出现合同中止或终止情形的,扣除实际入住天数产生的费用后予以退款。
- </p>
- <p class="content-text"> (2)一次性收取的费用(如有请填写)。 </p>
- <div v-for="(item, index) in oneTimeExpensesList" :key="item.id" class="content-text">
- {{ 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'"
- >☑押金不计利息 □押金计利息</span
- >
- <span v-else>□押金不计利息 ☑押金计利息</span>
- </template>
- <template v-if="contractForm.depositInterestType === '1'">
- ,计息标准为:
- <FieldItem
- v-model="contractForm.depositInterest"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="无"
- />
-
- </template>
- )。
- </template>
- </div>
- <p v-if="!oneTimeExpensesList.length" class="content-text">
- 无。
- </p>
- <p class="content-text">
- 合同期限内出现押金不足时,乙方或丙方应在接到甲方通知之日起5日内补足。涉及退款的,在出现合同中止或终止情形后,双方进行结算,经双方确认无误之日起15个工作日内将资金退给付款方。
- </p>
- <p class="content-text">
- 3.4.2 费用支付方式(原则上一次性收取费用不超过12个月):
- </p>
- <p class="content-text">
- <span v-if="!isTextMode" style="display: inline-block; vertical-align: middle">
- <el-radio-group v-model="contractForm.payMode" size="small">
- <el-radio label="1">按月支付</el-radio>
- <el-radio label="2">其它相关约定</el-radio>
- </el-radio-group>
- </span>
- <template v-else>
- <span>{{ contractForm.payMode === '1' ? '☑按月支付' : '□按月支付' }}</span>
-
- <span>{{ contractForm.payMode === '2' ? '☑其它相关约定' : '□其它相关约定' }}</span>
- </template>
- <template v-if="contractForm.payMode === '1'">
- (每月
- <FieldItem
- v-model="contractForm.payMonthDay"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="5"
- />
- 日前支付下一个月的费用);
- </template>
- <template v-else>
- (其它相关约定:
- <FieldItem
- v-model="contractForm.otherPayMode"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="请填写"
- />);
- </template>
- </p>
- <p class="content-text">
- 3.4.3 乙方因就医或者其他原因暂时不在甲方入住,但是应乙方、丙方的要求保留房间或者床位的,应当向甲方支付床位费;服务费、膳食费等其他费用可在3.4.2"其他相关约定中"进行商议约定。
- </p>
- <p class="content-text">
- 3.4.4 因食品、材料、劳动力等市场价格发生重大变化,致使甲方服务成本急剧上升(单项价格涨幅达到10%)的,甲方可要求按照价格涨幅增加相应费用;服务成本显著下降(单项价格跌幅达到10%)的,乙方可要求按照价格跌幅减少费用。前述价格涨跌指数,以政府统计部门公布的数据为准。费用调整前30日,甲方书面通知乙方、丙方。
- </p>
- <p class="content-text">
- 3.4.5 乙方因公共卫生突发事件被采取隔离措施的,所发生的隔离费用按照乙方被隔离的原因确定。如果乙方被隔离的原因与甲方无关,则隔离费用全部由乙方承担;如果乙方在养老机构外隔离,为其保留床位的,床位费由乙方承担。如果乙方被隔离是由于甲方原因所致,则隔离费用全部由甲方承担。
- </p>
- <p class="content-text">
- 3.4.6 在本合同约定的期限届满后,如各方未续订书面合同,但乙方继续入住甲方的,在甲方提供实际服务的期间,乙方应当按照该期间的甲方收费标准支付费用并承担违约责任。
- </p>
- <p class="content-text">
- 3.4.7 乙方应支付的阶段性费用及支付方式如下:
- </p>
- <div v-for="item in stageExpensesList" :key="item.id" class="content-text">
- {{ displayExpenseName(item) }}:
- <template v-if="item.isFreeGift == 1">
- ({{ item.amount }})
- 赠送开始时间
- <FieldItem
- v-model="item.freeStartTime"
- :is-text-mode="isTextMode"
- type="date"
- width="160px"
- placeholder="请选择日期"
- />
- ,赠送结束时间
- <FieldItem
- v-model="item.freeEndTime"
- :is-text-mode="isTextMode"
- type="date"
- width="160px"
- placeholder="请选择日期"
- />
- ;
- </template>
- <template v-else>
- 费用总额
- <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"
- />
- 元;
- </template>
- </div>
- <p v-if="!stageExpensesList.length" class="content-text"> 无。 </p>
- </div>
- </div>
- <!-- ========== 第6页:第三条 会员费 + 其他事宜(冷静期) ========== -->
- <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">6</span>
- </div>
- <div class="page-content">
- <h3 class="subsection-title">3.5 会员费</h3>
- <p class="content-text">
- 3.5.1 甲方收取会员费的,需符合《湖北省养老机构会员费管理办法(试行)》规定的收取会员费的必要条件,且应在属地民政部门备案。
- </p>
- <p class="content-text">
- 3.5.2 甲方收取的单个会员费金额不得超过本机构平均养老服务费月收费标准的12倍。收取的会员费总额不得超过本机构扣除银行贷款和其他债务后可抵押物估值的60%。
- </p>
- <p class="content-text">
- 3.5.3 经甲方、乙方、丙方协商一致,甲方一次性收取会员费金额为人民币
- <FieldItem
- v-model="contractForm.memberFeeAmt"
- :is-text-mode="isTextMode"
- width="120px"
- placeholder="0"
- />
- 元(大写:
- <FieldItem
- v-model="contractForm.memberFeeCn"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="零元整"
- />
- 圆整)。
- </p>
- <p class="content-text">
- 3.5.4 会员费存入以下专用资金存管账户:
- </p>
- <p class="content-text">
- 开户银行:
- <FieldItem
- v-model="contractForm.memberDepositBank"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 银行账号:
- <FieldItem
- v-model="contractForm.memberDepositAccount"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="请输入"
- />
- </p>
- <p class="content-text">
- 3.5.5 甲方收取的会员费仅限用于弥补本机构设施建设资金不足及主营业务,不得用于不动产、股权、证券、债券、期货等投资及其他借贷用途。
- </p>
- <p class="content-text">
- 3.5.6 乙方或丙方提出退还会员费要求时,甲方不得以任何理由拒绝,应在提出退款要求后1个月内全额退还会员费,除工本费以外不得收取其他任何费用。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">3.6 其他事宜</h3>
- <p class="content-text">
- 3.6.1 乙方自签署本合同的次日起,有7日冷静期,冷静期期间,在未入住机构的情况下,有权无条件解除本合同,乙方经与甲方以
- <FieldItem
- v-model="contractForm.otherPayMode2"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="书面/电子邮件/短信/微信/其他"
- />
- 方式确认退费申请后,甲方应于30日内一次性返还全部费用。
- </p>
- <p class="content-text">
- 3.6.2 本合同终止、解除,涉及甲方应当给乙方、丙方退费的,直接按
- <FieldItem
- v-model="contractForm.memberFeeRefundMode"
- :is-text-mode="isTextMode"
- width="200px"
- placeholder="请填写退款方式"
- />
- 方式退回。
- </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">
- <h2 class="section-title">第四条 合同期限及合同期满的处理</h2>
- <p class="content-text">
- 4.1 本合同服务期限为
- <FieldItem
- v-model="contractForm.contractMonths"
- :is-text-mode="true"
- width="60px"
- placeholder="12"
- />
- 个月,自
- <FieldItem
- v-model="contractForm.startDate"
- :is-text-mode="isTextMode"
- type="date"
- width="180px"
- placeholder="请选择日期"
- />
- 起至
- <FieldItem
- v-model="contractForm.endDate"
- :is-text-mode="isTextMode"
- type="date"
- width="180px"
- placeholder="请选择日期"
- />
- 止。其中,试住期为
- <FieldItem
- v-model="contractForm.trialDays"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="7"
- />
- 日,自
- <FieldItem
- v-model="contractForm.trialStart"
- :is-text-mode="isTextMode"
- type="date"
- width="160px"
- placeholder="请选择日期"
- />
- 至
- <FieldItem
- v-model="contractForm.trialEnd"
- :is-text-mode="isTextMode"
- type="date"
- width="160px"
- placeholder="请选择日期"
- />
- 。
- </p>
- <p class="content-text">
- 4.2 试住期:乙方按本合同约定的收费标准,根据实际入住天数结算费用,不足一天的按一天计算。
- </p>
- <p class="content-text">
- 4.3 甲方、乙方、丙方在本合同期满前
- <FieldItem
- v-model="contractForm.renewDays"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="15"
- />
- 日内同意按照本合同的条款续约的,由甲方、乙方、丙方续签合同。
- </p>
- <p class="content-text">
- 4.4 如果甲方、乙方、丙方未能在合同期满前
- <FieldItem
- v-model="contractForm.renewDays"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="15"
- />
- 日内就续约事项达成一致、且乙方在合同期满后亦不再继续入住甲方的,则乙方应当在合同到期日搬离甲方,办理离院手续并结清所有费用。
- </p>
- <p class="content-text">
- 4.5 本合同约定的期限届满后,如各方未续订书面合同,且乙方未按期搬离甲方的,甲方有权通知乙方、丙方要求乙方于
- <FieldItem
- v-model="contractForm.moveOutDays"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="15"
- />
- 日内搬离甲方,乙方、丙方办理离院手续并结清所有费用。
- </p>
- <p class="content-text">
- 4.6 当出现4.4款或4.5款的情形时,为保障乙方安全,乙方监护人及丙方以外的人接走乙方时,应当征得乙方监护人或丙方的同意。未经乙方监护人或丙方同意,其他任何人均无权将乙方接离甲方。
- </p>
- </div>
- </div>
- <!-- ========== 第8页:第五条 甲方的权利义务 ========== -->
- <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">8</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第五条 甲方的权利义务</h2>
- <h3 class="subsection-title">5.1 甲方权利</h3>
- <p class="content-text">
- 5.1.1 按照本合同约定收取相关费用。
- </p>
- <p class="content-text">
- 5.1.2 制订、修改、完善养老机构的各项管理制度,并按照公开的管理制度对乙方进行管理。
- </p>
- <p class="content-text">
- 5.1.3 为了乙方的健康和安全,乙方出现紧急情况时,在通知乙方或丙方的同时,有权采取必要的处置措施,包括但不限于转送医疗机构,由此产生的费用由乙方或丙方承担。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">5.2 甲方义务</h3>
- <p class="content-text">
- 5.2.1 应是依法登记、备案的养老机构,履行养老机构备案承诺,按照建筑、消防、食品安全、医疗卫生、特种设备等法律法规、文件规定和《养老机构服务安全基本规范》强制性标准、《养老机构服务质量基本规范》等规范以及本合同的约定,为乙方提供养老服务。
- </p>
- <p class="content-text">
- 5.2.2 应保证从事医疗、康复、安全等服务人员符合资质要求,保证养老护理人员接受专业技能培训,并定期组织工作人员进行职业道德教育和业务培训,能够满足岗位职责要求。
- </p>
- <p class="content-text">
- 5.2.3 制订、修改的涉及乙方权利义务的各项管理服务制度和各类服务项目收费标准,应当在养老机构内的公共区域显著位置进行公示,并按照公示的制度为乙方提供管理服务。
- </p>
- <p class="content-text">
- 5.2.4 在提供服务过程中,甲方及其工作人员应尊重乙方,依法维护乙方的人格尊严和保障人身、财产安全,并接受乙方、丙方的合理建议和监督。
- </p>
- <p class="content-text">
- 5.2.5 应当根据需要为乙方提供情绪疏导、心理咨询、危机干预等精神慰藉服务;应当开展适合老年人的文化、教育、体育、娱乐活动,丰富老年人的精神文化生活。甲方开展文化、教育、体育、娱乐活动时,应当为乙方提供必要的安全防护措施。
- </p>
- <p class="content-text">
- 5.2.6 定期组织所在地的医疗机构为乙方开展体检并建立个人健康档案。妥善保存乙方的入住登记表、体检报告等健康资料以及日常经费开支情况等个人信息。应当建立各类信息资料档案的保管、归档和保密制度,除向乙方、丙方和其他有权部门提供查阅、允许复制外,不得对外透露。
- </p>
- <p class="content-text">
- 5.2.7 发现乙方为疑似传染病病人或者精神障碍患者时,应依照传染病防治、精神卫生等相关法律法规的规定处理,及时向附近的疾病预防控制机构或者医疗机构报告,配合实施卫生处理、隔离等预防控制措施,并及时通知丙方。乙方需要外出就医的,甲方应及时告知丙方并由有相关义务的丙方亲自携带乙方就诊,丙方确实未能亲自携带乙方就诊的,应通过委托办理等方式作出妥善安排。
- </p>
- <p class="content-text">
- 5.2.8 应当为乙方家庭成员看望或者问候老年人提供便利,为乙方联系家庭成员提供帮助;但不得影响甲方对于乙方正常服务运营或执行政府部门规定的公共安全管理要求,否则甲方有权拒绝。
- </p>
- <p class="content-text">
- 5.2.9 在发生公共卫生事件等特殊情况下,甲方应贯彻执行政府部门的防控政策规定,积极落实防控措施,并向乙方或丙方做好解释工作。
- </p>
- <p class="content-text">
- 5.2.10 甲方暂停、终止服务的,应当在暂停或终止服务60日前,书面通知乙方或丙方,并向社会公告;将入住老年人的安置方案书面告知甲方所在地县级民政部门。在暂停、终止服务或解散清算前,甲方应当依法妥善安置乙方。如乙方或丙方有意与其他养老机构签订服务协议的,甲方应当积极为乙方联系与甲方具有同等资质和服务水平的养老机构,努力促进双方建立合同;如乙方或丙方需解除或终止服务协议的,甲方应当退还乙方或丙方剩余未消费或合同约定的有关费用。
- </p>
- <p class="content-text">
- 5.2.11 当乙方出现紧急情况时,应及时联系和通知丙方,并积极采取必要的紧急处理措施。
- </p>
- <p class="content-text">
- 5.2.12 乙方入住养老机构、请假外出、终止合同、离院和去世,甲方应及时在金民工程信息系统等填报有关信息。
- </p>
- <p class="content-text">
- 5.2.13 甲方应妥善处理与乙方、丙方之间的纠纷,对不能及时处理的,应及时向相关管理部门报告,防止事态扩大。积极配合相关管理部门解决纠纷,并服从纠纷调解决定。
- </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">第六条 乙方的权利义务</h2>
- <h3 class="subsection-title">6.1 乙方的权利</h3>
- <p class="content-text">
- 6.1.1 享有隐私权及人格尊严和人身、财产安全不受侵害的权利。
- </p>
- <p class="content-text">
- 6.1.2 有权按照约定的服务项目获得甲方提供的符合服务标准的养老服务,对甲方的服务有批评建议的权利。
- </p>
- <p class="content-text">
- 6.1.3 对自身的健康状况、费用支出、入院记录等有知情权,有权查阅、复印甲方为其建立的个人档案。
- </p>
- <p class="content-text">
- 6.1.4 有权了解提供服务的人员是否经过专业培训,是否具备相应资质,有权要求甲方更换未经专业培训或不具备相应资质或提供服务不合格的人员。
- </p>
- <p class="content-text">
- 6.1.5 在突发疾病或意外的情况下,有权获得及时、必要的医疗帮助。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">6.2 乙方的义务</h3>
- <p class="content-text">
- 6.2.1 应当按照约定自行或与丙方共同支付养老服务费及相关费用。
- </p>
- <p class="content-text">
- 6.2.2 入住前,应当按照《体检报告项目说明》提供相关的体检报告,如实告知甲方本人的健康状况、药品使用情况及过往病史等信息,如实填写《入住登记表》。
- </p>
- <p class="content-text">
- 6.2.3 应当配合甲方做好持续评估及确认照护等级;入住期间,及时如实向甲方报告身体、心理等方面出现的状况变化,配合甲方定期参加体检。
- </p>
- <p class="content-text">
- 6.2.4 应当服从甲方管理,遵守甲方的规章制度,维护养老机构正常服务秩序。
- </p>
- <p class="content-text">
- 6.2.5 应当与其他入住人员和谐相处。
- </p>
- <p class="content-text">
- 6.2.6 在接受甲方提供的养老服务期间,因疾病进行诊疗时,应在治疗期间遵守医嘱,配合治疗。如外出就医需在医院观察治疗的,应当及时通知甲方。
- </p>
- <p class="content-text">
- 6.2.7 具备独自外出能力,外出应当做好请假、销假登记,在外留宿应当及时通知甲方。不具备独自外出能力,需限制外出服务管理,因特殊情况确需外出必须由乙方或丙方指定人员(如家属等)陪同,且每次外出须由乙方或丙方提前通知甲方,并做好登记。
- </p>
- <p class="content-text">
- 6.2.8 爱护甲方提供的各项服务设施,入住期间损坏甲方设施设备的,乙方或丙方应当予以赔偿。损坏有关服务设施的赔偿价格可与甲方协商约定。
- </p>
- <p class="content-text">
- 6.2.9 对于甲方提供的其他符合合同约定、法律规定的养老服务,乙方应予配合。
- </p>
- </div>
- </div>
- <!-- ========== 第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">10</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第七条 丙方的权利义务</h2>
- <h3 class="subsection-title">7.1 丙方的权利</h3>
- <p class="content-text">
- 7.1.1 对乙方有探视权,但不得影响甲方对乙方的正常服务管理和执行政府规定的公共安全管理要求。
- </p>
- <p class="content-text">
- 7.1.2 对乙方的健康状况、享受服务情况、费用支出、入院记录等有知情权,有权查阅、复印甲方为乙方建立的个人档案。
- </p>
- <p class="content-text">
- 7.1.3 有权了解提供服务的人员是否经过专业培训,是否具备相应资质,有权要求甲方更换未经专业培训或不具备相应资质或提供服务不合格的人员;有权对甲方的服务提出批评建议。
- </p>
- <p class="content-text">
- 7.1.4 遇紧急情况,包括但不限于乙方走失、身体健康状况出现紧急情况时,有权及时从甲方得到相关信息。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">7.2 丙方的义务</h3>
- <p class="content-text">
- 7.2.1 按时足额向甲方支付约定的养老服务费及相关费用。
- </p>
- <p class="content-text">
- 7.2.2 乙方入住前,丙方要如实向甲方反映乙方的情况,如脾气秉性、家庭成员、既往病史、健康状况和药品使用情况等,协助乙方如实填写《入住登记表》。
- </p>
- <p class="content-text">
- 7.2.3 劝导乙方入住后自觉遵守养老机构的规章制度,接受管理,爱护甲方提供的各项服务设施,乙方违反本合同约定或甲方制定的规章制度,造成甲方损失的,乙方需承担赔偿责任,负有付款义务或连带责任的丙方应当承担有关赔偿责任。
- </p>
- <p class="content-text">
- 7.2.4 劝导乙方与其他入住人员和谐相处,并经常与乙方沟通,保持联络,满足乙方的精神需求,及时将乙方的身体、心理等方面出现的状况变化如实向甲方报告。
- </p>
- <p class="content-text">
- 7.2.5 劝导乙方在接收甲方提供的养老服务期间,因疾病进行诊疗时,应在治疗期间遵守医嘱,配合治疗。乙方需外出就医的,负有相关义务的丙方应当及时携乙方到医院就诊,并向甲方如实告知乙方的就医情况。
- </p>
- <p class="content-text">
- 7.2.6 丙方的家庭及单位地址、联系方式变更时,应及时通知甲方。
- </p>
- <p class="content-text">
- 7.2.7 及时协助甲方处理乙方出现的紧急情况。当甲方按照合同约定处理时,负有付款义务或连带责任的丙方应当及时足额支付由此产生的费用。
- </p>
- <p class="content-text">
- 7.2.8 乙方在养老机构去世的,丙方应及时进行善后处理并承担由此产生的费用。
- </p>
- </div>
- </div>
- <!-- ========== 第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">11</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第八条 合同的变更、解除和终止</h2>
- <h3 class="subsection-title">8.1 合同的变更</h3>
- <p class="content-text">
- 在本合同履行过程中,根据乙方健康状况的变化,甲方可以提出变更服务方案或对合同相关内容进行变更,并以书面形式通知乙方或乙方监护人及丙方,经甲、乙、丙三方协商一致,可以签订补充协议。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">8.2 合同的解除</h3>
- <p class="content-text">
- 8.2.1 出现下列情形之一的,乙方、丙方有权解除本合同:
- </p>
- <p class="content-text" style="padding-left: 2em">
- (1)甲方提供的服务不符合合同约定,经乙方、丙方书面提出后15日内不改正的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (2)因甲方或甲方工作人员的故意或者重大过失造成乙方人身或重大财产损害的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (3)乙方在试住期内不适应居住环境或管理方式的。
- </p>
- <p class="content-text" style="padding-left: 2em"> (4)乙方在冷静期内要求解除合同的。 </p>
- <p class="content-text" style="padding-left: 2em">
- (5)本合同履行过程中,乙方或丙方提前15日书面通知甲方解除合同并结清服务费用的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (6)乙方因疾病离开甲方的,但乙方、丙方要求保留房间或者床位的除外。
- </p>
- <p class="content-text">
- 8.2.2 出现下列情形之一的,甲方有权解除本合同:
- </p>
- <p class="content-text" style="padding-left: 2em">
- (1)乙方无故拖欠各项费用超过15日,经甲方催告后7日内仍不支付的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (2)乙方严重违反甲方的规章制度、拒不配合甲方管理造成甲方难以履行对乙方的养老服务,或者影响甲方其他入住人员的正常生活、造成其他入住老人伤害或现实性伤害危险的,导致甲方的运营秩序无法正常维持的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (3)乙方出现精神障碍、患有必须隔离治疗的疾病或者具有暴力倾向等人身危险的。
- </p>
- <p class="content-text">
- 8.2.3 出现下列情形之一的,甲方、乙方、丙方均有权解除本合同:
- </p>
- <p class="content-text" style="padding-left: 2em">
- (1)因食品、材料、劳动力等与甲方日常管理服务直接相关的市场价格发生重大变化,调整相应费用时,乙方、丙方对收费标准有异议的,要求按原收费标准继续履行合同的,或拒绝根据调整后的收费标准支付相应费用的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (2)乙方、丙方对老年人能力评估结果如有异议,可向有资质的第三方机构申请复评,根据复评结果,仍需要调整乙方相应的照料护理等级、服务内容和服务费用,但乙方、丙方拒绝签署《变更事项确认表》的,或者乙方或丙方对评估结果有异议,但又不与甲方协商进行复评的。
- </p>
- <p class="content-text" style="padding-left: 2em">
- (3)如果根据乙方健康状况的变化,不调整服务项目将导致乙方的健康安全无法保障的,在甲方提出变更的服务方案后,乙方、丙方拒绝变更服务方案的。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">8.3 合同的终止</h3>
- <p class="content-text"> 乙方在入住甲方期间去世,合同自动终止。 </p>
- </div>
- </div>
- <!-- ========== 第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">12</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第九条 重大事项的特别约定</h2>
- <h3 class="subsection-title">9.1 乙方外出管理</h3>
- <p class="content-text">
- 甲方不对乙方是否具备独自外出能力进行判断,由丙方在《入住登记表》中"外出管理"栏确认是否需要实行限制外出服务管理,亦不对此承担责任。外出期间发生事故(包括但不限于摔伤、走失、财物丢失)、突发疾病、遭受人身损害、死亡或者造成他人损害的,因此造成的后果由乙方或丙方承担,甲方不承担责任。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px"
- >9.2 乙方突发重大情况,甲方与丙方的责任承担</h3
- >
- <p class="content-text">
- 在乙方入住甲方期间,乙方因自身原因出现突发危重疾病、身体伤害等紧急情况,或精神状况恶化、去世等重大情况时,如甲方在所提供服务和自身能力的范围内,采取必要措施,及时联系120等医疗急救机构,并及时联系丙方,但甲方无法联系到丙方的,应尽早与本合同附件确定的其他联系人取得联系,通报情况。
- </p>
- <p class="content-text">
- 因乙方发生紧急情况产生的急救费用、治疗费用、住院押金等均由乙方或乙方监护人负担。甲方因此垫付费用的,乙方或乙方监护人应及时清偿。甲方在按照本合同的约定履行相应义务后,不承担责任。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px"
- >9.3 乙方去世善后事宜及相关费用</h3
- >
- <p class="content-text">
- 乙方在入住甲方期间去世的,甲方应当及时通知丙方负责善后事宜并承担相关费用。甲方如与丙方无法取得联系的,应当及时联系殡仪馆妥善保存乙方遗体,因此发生的费用由丙方承担。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">9.4 紧急联系人</h3>
- <p class="content-text">
- 由乙方、丙方指定
- <FieldItem
- v-model="contractForm.emergencyContactName"
- :is-text-mode="isTextMode"
- width="160px"
- placeholder="紧急联系人姓名"
- />
- 为紧急联系人,紧急联系人电话为:
- <FieldItem
- v-model="contractForm.emergencyContactPhone"
- :is-text-mode="isTextMode"
- width="180px"
- placeholder="联系电话"
- />
- 。联系地址为:
- <FieldItem
- v-model="contractForm.emergencyContactAddr"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="联系地址"
- />
- 。紧急联系人信息发生变更时,乙方、丙方应当及时通知甲方。因乙方或丙方提供的紧急联系人的联系地址、方式不准确或不详细或变更后未及时通知甲方,或其他客观原因致使甲方无法与乙方或丙方及时联系,连续达一个月则视为联系中断。甲方与乙方或乙方监护人协商后,可以重新确定联系人。
- </p>
- <p class="content-text">
- 在乙方发生突发疾病(含危重疾病)、身体伤害等紧急情况,而甲方无法联系丙方时,紧急联系人应当配合甲方联系丙方。紧急联系人不配合的,由乙方、丙方承担责任。
- </p>
- <h3 class="subsection-title" style="margin-top: 14px">9.5 其他情形下责任的承担</h3>
- <p class="content-text">
- 9.5.1 在乙方入住甲方期间,甲方应当告知乙方不能食用与其身体状况不适宜的食品,乙方因食用他人带入的食品等原因造成损害的,甲方应当及时通知丙方自行承担责任。
- </p>
- <p class="content-text">
- 9.5.2 在乙方属于完全民事行为能力人时,因乙方原因造成其自身或者他人损害的,由乙方承担相应责任,丙方承担民事连带责任;在乙方属于限制民事行为能力人或无民事行为能力人时,因乙方原因造成其自身或者他人损害的,应由丙方承担相应责任。甲方未充分履行安全保障义务的,需依法承担相应责任。
- </p>
- <p class="content-text">
- 9.5.3 甲方在询问乙方健康状况、用药情况及过往病史时,乙方、丙方应当如实告知,若因未如实告知造成甲方在提供服务过程中导致乙方发生人身损害的,由乙方、丙方承担相应责任。
- </p>
- <p class="content-text">
- 9.5.4 乙方需外出就医,丙方拒绝及时携乙方到医院就诊的,由此造成的一切后果由丙方承担;丙方拒绝及时携乙方就诊的,为了乙方的健康和安全,甲方可以派人陪同送医,就诊结果由乙方、丙方承担责任并支付就医费用。甲方充分履行安全保障义务的,无需承担其他责任。
- </p>
- <p class="content-text">
- 9.6 本条约定的上述各款内容,甲方应当提示乙方、丙方重点注意,按照乙方或丙方的要求,逐条向乙方、丙方讲解。
- </p>
- </div>
- </div>
- <!-- ========== 第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">13</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第十条 违约责任</h2>
- <p class="content-text">
- 10.1 因甲方及其工作人员的过错,造成乙方受到损失的,甲方应当赔偿损失。
- </p>
- <p class="content-text">
- 10.2 甲方提供的服务不符合本合同约定的标准,乙方、丙方有权要求甲方改正,造成乙方人身或财产损失的,甲方应当赔偿相应损失。
- </p>
- <p class="content-text">
- 10.3 甲方或其工作人员侵犯乙方、丙方知情权的,乙方、丙方有权要求甲方改正,造成乙方经济损失的,甲方应当赔偿损失。
- </p>
- <p class="content-text">
- 10.4 因乙方原因造成甲方或第三人损害的,乙方、丙方应当承担赔偿责任。
- </p>
- <p class="content-text">
- 10.5 乙方逾期支付入住费用,每逾期一日应按应补足金额的万分之
- <FieldItem
- v-model="contractForm.penaltyRate"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="0"
- />
- 向甲方支付违约金(违约金比例不得超过万分之三,违约金总额不超过应补足金额的30%)。
- </p>
- <p class="content-text">
- 10.6 本合同期满终止或解除后,乙方既未搬离甲方又不支付服务费用的,应当自合同期满终止或解除后的次日起,按照养老服务费用每日金额的
- <FieldItem
- v-model="contractForm.penaltyPercent"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="0"
- />
- %向甲方支付违约金。造成甲方经济损失的,乙方、丙方还应当赔偿损失。
- </p>
- <h2 class="section-title">第十一条 不可抗力</h2>
- <p class="content-text">
- 11.1 甲、乙、丙三方中的任何一方因遭受不可抗力导致未能履行其在本合同下的全部或部分义务的,不承担违约责任。遭受不可抗力的一方应及时将发生不可抗力的情形通知对方,并在15个工作日内将不可抗力发生的有效证明提供给对方。
- </p>
- <p class="content-text">
- 11.2 不可抗力指在签订合同时不可预见,在合同履行过程中不可避免且不能克服的自然灾害和社会性突发事件,包括但不限于疫情、地震、海啸、骚乱、戒严、暴动、战争、政府行为等其他情形。
- </p>
- <p class="content-text">
- 11.3 因不可抗力导致本合同无法履行的,遭受不可抗力的一方应在不可抗力发生后及时通知合同其他当事人,本合同可依法解除,各方互不承担违约责任。甲方、乙方、丙方应积极协调,妥善安置乙方。
- </p>
- </div>
- </div>
- <!-- ========== 第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">14</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第十二条 纠纷的解决方式</h2>
- <template v-if="!isTextMode">
- <p class="content-text">
- 因本合同产生的纠纷,各方应当首先协商解决。协商不成的,按下列第
- <el-radio-group
- v-model="contractForm.disputeMode"
- size="small"
- style="display: inline-flex; vertical-align: middle; margin: 0 4px"
- >
- <el-radio label="1">1</el-radio>
- <el-radio label="2">2</el-radio>
- </el-radio-group>
- 种方式处理:
- </p>
- <p class="content-text"> (1)依法向 </p>
- <p class="content-text" style="padding-left: 2em">
- <FieldItem
- v-model="contractForm.disputeCourt"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="有管辖权的人民法院名称"
- />
- 人民法院起诉。
- </p>
- <p class="content-text"> (2)提交 </p>
- <p class="content-text" style="padding-left: 2em">
- <FieldItem
- v-model="contractForm.disputeArbitration"
- :is-text-mode="isTextMode"
- width="280px"
- placeholder="仲裁委员会名称"
- />
- 仲裁委员会仲裁。
- </p>
- </template>
- <template v-else>
- <p class="content-text">
- 因本合同产生的纠纷,各方应当首先协商解决。协商不成的,按下列第
- <span
- style="
- display: inline-block;
- min-width: 30px;
- text-align: center;
- border-bottom: 1px solid #333;
- "
- >
- {{ contractForm.disputeMode || '1' }}
- </span>
- 种方式处理:
- </p>
- <p class="content-text">
- {{ contractForm.disputeMode === '1' ? '☑' : '□' }}
- (1)依法向有管辖权的人民法院起诉。
- </p>
- <p class="content-text">
- {{ contractForm.disputeMode === '2' ? '☑' : '□' }}
- (2)提交仲裁委员会仲裁。
- </p>
- </template>
- <h2 class="section-title">第十三条 通知与送达</h2>
- <p class="content-text">
- 13.1 本合同所载明的甲方、乙方、丙方的通信地址和联系电话为各方各自有效的通讯地址和联系方式,一方要求变更的,应于变更之日书面告知对方。
- </p>
- <p class="content-text">
- 13.2 一方给对方发出的通知,按照下列情形确定通知送达对方的时间:
- </p>
- <p class="content-text" style="padding-left: 2em">
- 13.2.1 采用邮寄、特快专递送达的,回执上注明的收件日期为送达日。
- </p>
- <p class="content-text" style="padding-left: 2em">
- 13.2.2 采用手机短信、微信等即时通信方式发送通知的,通知发送到收件方的手机时即为送达。
- </p>
- <p class="content-text" style="padding-left: 2em">
- 13.2.3 采用电子邮件发送通知的,通知进入收件方邮箱时即为送达。
- </p>
- <p class="content-text" style="padding-left: 2em">
- 13.2.4 采用传真发送通知的,收件方的传真机接收通知时即为送达。
- </p>
- <p class="content-text">
- 13.3 因收件方的通信地址、手机号码、传真、微信号、电子邮箱等信息错误、不详或发生变更未及时通知其他各方造成通知无法送达的,由收件方自行承担由此引起的一切后果和责任。
- </p>
- </div>
- </div>
- <!-- ========== 第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">15</span>
- </div>
- <div class="page-content">
- <h2 class="section-title">第十四条 合同生效及附件</h2>
- <p class="content-text">
- 14.1 本合同一式
- <FieldItem
- v-model="contractForm.copyCount"
- :is-text-mode="isTextMode"
- width="60px"
- placeholder="叁"
- />
- 份,甲方执
- <FieldItem
- v-model="contractForm.partyACopy"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="壹"
- />
- 份,乙方执
- <FieldItem
- v-model="contractForm.partyBCopy"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="壹"
- />
- 份,乙方监护人执
- <FieldItem
- v-model="contractForm.partyCCopy"
- :is-text-mode="isTextMode"
- width="40px"
- placeholder="壹"
- />
- 份,自甲方签字盖章和乙方、丙方签字之日起生效。
- </p>
- <p class="content-text" style="margin-top: 12px">
- 14.2 本合同的附件如下:
- </p>
- <template v-for="(item, index) in page24AttachmentItems" :key="item.no">
- <p class="content-text" style="padding-left: 2em">
- 附件{{ toChineseNumber(index + 1) }}:{{ item.title }}
- </p>
- <p v-if="item.subTitle" class="content-text" style="padding-left: 3em; font-size: 13px">
- {{ item.subTitle }}
- </p>
- </template>
- <template v-for="(item, index) in page25AttachmentItems" :key="item.no">
- <p class="content-text" style="padding-left: 2em">
- 附件{{ toChineseNumber(page24AttachmentItems.length + index + 1) }}:{{ item.title }}
- </p>
- <p v-if="item.subTitle" class="content-text" style="padding-left: 3em; font-size: 13px">
- {{ item.subTitle }}
- </p>
- </template>
- <p class="content-text" style="margin-top: 8px">
- 14.3 本合同附件系本合同不可分割的组成部分,与本合同具有同等法律效力。
- </p>
- <p class="content-text" style="text-align: center; margin-top: 30px; font-size: 14px">
- (本文以下无正文,为合同签署页)
- </p>
- <div style="margin-top: 30px; font-size: 14px; line-height: 2.2">
- <p>
- 甲方(盖章):
- <SignatureItem
- :elder-id="props.recordRow.elderId"
- v-model="contractForm.partyASign"
- :is-text-mode="isTextMode"
- :width="260"
- :height="80"
- placeholder="(签字/盖章处)"
- title="甲方签字"
- />
- </p>
- <div>
- 法定代表人或授权代表(签名并按指印):
- <SignatureItem
- :elder-id="props.recordRow.elderId"
- v-model="contractForm.partyALegalSign"
- :is-text-mode="isTextMode"
- :width="260"
- :height="80"
- placeholder="(签字处)"
- title="法定代表人签字"
- />
- </div>
- <div style="margin-top: 6px">
- 日期:
- <FieldItem
- v-model="contractForm.partyADate"
- :is-text-mode="isTextMode"
- type="date"
- width="200px"
- placeholder="请选择日期"
- />
- </div>
- <div style="margin-top: 20px">
- 乙方(签名并按指印):
- <SignatureItem
- :elder-id="props.recordRow.elderId"
- v-model="contractForm.partyBSign"
- :is-text-mode="isTextMode"
- :width="260"
- :height="80"
- placeholder="(签字处)"
- title="乙方签字"
- />
- </div>
- <div style="margin-top: 6px">
- 日期:
- <FieldItem
- v-model="contractForm.partyBDate"
- :is-text-mode="isTextMode"
- type="date"
- width="200px"
- placeholder="请选择日期"
- />
- </div>
- <div style="margin-top: 20px">
- 丙方(签名并按指,印系单位的盖章):
- <SignatureItem
- :elder-id="props.recordRow.elderId"
- v-model="contractForm.partyCSign"
- :is-text-mode="isTextMode"
- :width="260"
- :height="80"
- placeholder="(签字/盖章处)"
- title="丙方签字"
- />
- </div>
- <div style="margin-top: 6px">
- 日期:
- <FieldItem
- v-model="contractForm.partyCDate"
- :is-text-mode="isTextMode"
- type="date"
- width="200px"
- placeholder="请选择日期"
- />
- </div>
- <div style="margin-top: 20px">
- 签订地点:
- <FieldItem
- v-model="contractForm.servicePlace"
- :is-text-mode="isTextMode"
- width="260px"
- placeholder="请输入"
- />
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <style lang="scss" scoped>
- .contract-body {
- width: 100%;
- padding: 0;
- background: #f5f5f5;
- }
- .a4-page {
- width: 210mm;
- min-height: auto;
- margin: 4mm auto;
- padding: 10mm 14mm;
- background: #fff;
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.12);
- position: relative;
- box-sizing: border-box;
- }
- /* 封面页保留完整 A4 高度 */
- .a4-page.cover-a4 {
- min-height: 297mm;
- }
- /* 非封面页隐藏页眉(logo+页码) */
- .a4-page:not(.cover-a4) .page-header {
- display: none;
- }
- .page-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding-bottom: 6px;
- border-bottom: 1.5px solid #333;
- margin-bottom: 16px;
- }
- .logo-line {
- display: flex;
- align-items: center;
- }
- .logo-circle {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- width: 24px;
- height: 24px;
- border-radius: 50%;
- background: #2b7c4e;
- color: #fff;
- font-size: 14px;
- font-weight: bold;
- margin-right: 8px;
- }
- .logo-text {
- font-size: 16px;
- font-weight: bold;
- color: #333;
- }
- .page-no-right {
- font-size: 12px;
- color: #666;
- }
- .page-content {
- font-size: 14px;
- line-height: 1.9;
- color: #333;
- }
- .cover-page {
- text-align: center;
- padding-top: 30mm;
- }
- .cover-fields {
- text-align: left;
- margin: 0 auto;
- width: 100%;
- }
- .cover-fields .label {
- display: inline-block;
- min-width: 80px;
- font-size: 14px;
- }
- .doc-title {
- margin-top: 50mm;
- font-size: 32px;
- font-weight: bold;
- letter-spacing: 4px;
- color: #222;
- }
- .cover-issuer {
- margin-top: 60mm;
- font-size: 16px;
- line-height: 2;
- text-align: center;
- }
- .section-title {
- font-size: 18px;
- font-weight: bold;
- text-align: center;
- margin: 20px 0 14px 0;
- color: #222;
- }
- .subsection-title {
- font-size: 15px;
- font-weight: bold;
- margin: 12px 0 6px 0;
- color: #222;
- }
- .content-text {
- font-size: 14px;
- line-height: 1.9;
- margin: 4px 0;
- text-indent: 0;
- text-align: left;
- color: #333;
- }
- /* 手动费用行的删除按钮:与正文保持对齐、留间距 */
- .expense-del {
- margin-left: 6px;
- vertical-align: middle;
- }
- .fill-text {
- display: inline-block;
- min-width: 60px;
- border-bottom: 1px solid #333;
- padding: 0 4px;
- }
- @media print {
- .contract-body {
- background: #fff;
- margin: 0;
- padding: 0;
- width: 210mm;
- }
- /* 封面页:填满一整页(@page margin 16mm,可打印区域高度 = 297-32=265mm) */
- .a4-page.cover-a4 {
- width: 210mm !important;
- min-height: 265mm !important;
- margin: 0 !important;
- padding: 0 !important;
- background: #fff !important;
- box-shadow: none !important;
- box-sizing: border-box !important;
- page-break-after: always;
- break-after: page;
- }
- /* 其他页:保留屏幕内边距,由 @page margin 控制物理边距 */
- .a4-page:not(.cover-a4) {
- width: 210mm !important;
- min-height: auto !important;
- margin: 0 !important;
- padding: 0 !important;
- background: #fff !important;
- box-shadow: none !important;
- box-sizing: border-box !important;
- page-break-after: auto;
- break-after: auto;
- }
- .a4-page:last-child {
- page-break-after: auto;
- break-after: auto;
- }
- /* 注意:@page 规则统一在 ContractManageForm.vue 中声明,避免多组件冲突 */
- }
- </style>
|