From cfa5a3aacd38eab6e89818098a9675456bf52625 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 04 二月 2026 10:16:13 +0800
Subject: [PATCH] 测试完成
---
src/views/patient/SignAcontract/Review.vue | 469 ++++++++++++++++++++--------------------------------------
1 files changed, 164 insertions(+), 305 deletions(-)
diff --git a/src/views/patient/SignAcontract/Review.vue b/src/views/patient/SignAcontract/Review.vue
index 1415166..dfced60 100644
--- a/src/views/patient/SignAcontract/Review.vue
+++ b/src/views/patient/SignAcontract/Review.vue
@@ -5,10 +5,10 @@
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="100px">
<el-row :gutter="20">
<el-col :span="6">
- <el-form-item label="鎮h�呭鍚�" prop="patientName">
+ <el-form-item label="鍎跨濮撳悕" prop="patientName">
<el-input
v-model="queryParams.patientName"
- placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ placeholder="璇疯緭鍏ュ効绔ュ鍚�"
clearable
@keyup.enter="handleQuery"
/>
@@ -81,12 +81,15 @@
style="width: 100%"
:default-sort="{prop: 'applyTime', order: 'descending'}"
>
- <el-table-column label="鎮h�呬俊鎭�" min-width="200" fixed>
+ <el-table-column label="鍎跨淇℃伅" min-width="200" fixed>
<template slot-scope="scope">
<div class="patient-info">
<div class="patient-name">{{ scope.row.patientName }}</div>
<div class="patient-detail">
{{ scope.row.gender }} | {{ scope.row.age }}宀� | {{ scope.row.phone }}
+ <div style="color: #909399; font-size: 12px; margin-top: 2px;">
+ {{ scope.row.applicableAge }}
+ </div>
</div>
</div>
</template>
@@ -110,7 +113,7 @@
</el-table-column>
<el-table-column label="鐢宠鏃堕棿" prop="applyTime" width="160" sortable />
<el-table-column label="鏈熸湜鍖荤敓" prop="expectDoctor" width="120" />
- <el-table-column label="鐗规畩瑕佹眰" min-width="200">
+ <el-table-column label="鐩戞姢浜鸿姹�" min-width="200">
<template slot-scope="scope">
<span v-if="scope.row.specialRequirements" :title="scope.row.specialRequirements">
{{ scope.row.specialRequirements.substring(0, 30) }}...
@@ -187,7 +190,7 @@
type="textarea"
:rows="3"
v-model="reviewForm.rejectReason"
- placeholder="璇疯緭鍏ラ┏鍥炵殑鍏蜂綋鍘熷洜锛屼究浜庢偅鑰呬簡瑙f儏鍐�"
+ placeholder="璇疯緭鍏ラ┏鍥炵殑鍏蜂綋鍘熷洜锛屼究浜庣洃鎶や汉浜嗚В鎯呭喌"
maxlength="200"
show-word-limit
/>
@@ -255,18 +258,44 @@
rejected: 0
},
availableDoctors: [
- { id: '1', name: '鐜嬪尰鐢�', department: '鍐呯' },
- { id: '2', name: '鏉庡尰鐢�', department: '鑰佸勾绉�' },
- { id: '3', name: '寮犲尰鐢�', department: '濡囦骇绉�' },
- { id: '4', name: '鍒樺尰鐢�', department: '鍎跨' },
+ { id: '1', name: '鐜嬪尰鐢�', department: '鍎跨' },
+ { id: '2', name: '鏉庡尰鐢�', department: '鍎跨淇濆仴绉�' },
+ { id: '3', name: '寮犲尰鐢�', department: '鍎跨' },
+ { id: '4', name: '鍒樺尰鐢�', department: '鍎跨钀ュ吇绉�' },
{ id: '5', name: '闄堝尰鐢�', department: '鍏ㄧ' }
],
+ // 鍎跨鏈嶅姟濂楅閰嶇疆
servicePackages: {
- '1': { name: '鍩虹鍋ュ悍绠$悊鍖�', color: 'info' },
- '2': { name: '鎱㈡�х梾绠$悊鍖�', color: 'success' },
- '3': { name: '鑰佸勾浜哄仴搴峰寘', color: 'warning' },
- '4': { name: '瀛曚骇濡囦繚鍋ュ寘', color: 'danger' },
- '5': { name: '鍎跨淇濆仴鍖�', color: 'primary' }
+ '1': {
+ name: '濠村辜鍎垮仴搴峰熀纭�鍖�',
+ color: 'primary',
+ applicableAge: '0-3宀�'
+ },
+ '2': {
+ name: '瀛﹂緞鍓嶅効绔ュ仴搴峰寘',
+ color: 'success',
+ applicableAge: '3-6宀�'
+ },
+ '3': {
+ name: '瀛﹂緞鍎跨缁煎悎鍋ュ悍鍖�',
+ color: 'warning',
+ applicableAge: '7-12宀�'
+ },
+ '4': {
+ name: '闈掑皯骞村仴搴锋敮鎸佸寘',
+ color: 'danger',
+ applicableAge: '13-18宀�'
+ },
+ '5': {
+ name: '鍎跨钀ュ吇涓庣敓闀垮彂鑲插鍊煎寘',
+ color: 'info',
+ applicableAge: '3-18宀�'
+ },
+ '6': {
+ name: '鍎跨涓尰鐗硅壊淇濆仴鍖�',
+ color: 'primary',
+ applicableAge: '0-6宀�'
+ }
},
rules: {
rejectReason: [
@@ -283,111 +312,128 @@
this.calculateStats()
},
methods: {
-//浼樺寲鍚庣殑妯℃嫙鏁版嵁鐢熸垚鏂规硶
-generateMockData() {
- const mockData = []
+ // 鐢熸垚妯℃嫙鏁版嵁
+ generateMockData() {
+ const mockData = []
- // 浣跨敤鎮ㄦ彁渚涚殑鐪熷疄濮撳悕鍒楄〃
- const patientNames = [
- '鏉庤倗鑺�', '鍗㈡湪浠�', '鏉庢垚鐧�', '鏂瑰厗鐜�', '鍒樼繆鎯�', '涓佹眽鑷�', '鍚翠匠鐟�', '鑸掔豢鐝�',
- '鍛ㄧ櫧鑺�', '寮犲Э濡�', '寮犺櫣浼�', '鍛ㄧ惣鐜�', '鍊�¤姵', '閮吹濡�', '鏉ㄤ僵鑺�', '榛勬枃鏃�',
- '榛勭洓鐜�', '閮戜附闈�', '璁告櫤浜�', '寮犲瓱娑�', '鏉庡皬鐖�', '鐜嬫仼榫�', '鏈辨斂寤�', '閭撹瘲娑�',
- '闄堟斂鍊�', '鍚翠繆浼�', '闃Θ瀛�', '缈佹儬鐝�', '鍚存�濈堪', '鏋椾僵鐜�'
- ]
+ // 浣跨敤鍎跨濮撳悕鍒楄〃
+ const patientNames = [
+ '鏉庡皬瀹�', '寮犲皬鏄�', '鐜嬮洦娆�', '鍒樻旦鐒�', '闄堟�濈惇', '鏉ㄥ畤鑸�', '榛勮瘲娑�', '璧靛ぉ瀹�',
+ '鍛ㄥ皬钀�', '鍚翠繆鏉�', '閮戦泤闆�', '瀛欐矏杈�', '鏈遍洦钀�', '椹旦瀹�', '鑳″彲棣�', '鏋椾繆鐔�',
+ '閮瓙杞�', '浣曟鎬�', '楂樺ぉ浣�', '姊侀潤鎬�', '缃楁旦鐒�', '瀹嬮洦娉�', '鍞愯瀚�', '璁稿崥鏂�',
+ '璋㈡濡�', '鍐瓙榛�', '钁i洦妗�', '钀уぉ涔�', '鏇瑰績鎬�', '琚佸槈璞�'
+ ]
- const specialReqs = [
- '甯屾湜鍖荤敓鑳藉畾鏈熶笂闂ㄦ鏌�',
- '闇�瑕佸懆鏈椂闂存鐨勬湇鍔�',
- '瀵硅嵂鐗╂湁杩囨晱鍙诧紝闇�鐗瑰埆娉ㄦ剰',
- '琛屽姩涓嶄究锛岄渶瑕佷笂闂ㄦ湇鍔�',
- '鏃犵壒娈婅姹�',
- '闇�瑕佽嫳璇湇鍔℃敮鎸�',
- '鏈夐珮琛�鍘嬬梾鍙诧紝闇�閲嶇偣鍏虫敞',
- '闇�瑕佸畾鏈熻绯栫洃娴嬫湇鍔�',
- '甯屾湜鏈夊浐瀹氱殑瀹跺涵鍖荤敓',
- '闇�瑕佸績鐞嗙枏瀵兼湇鍔�'
- ]
+ const specialReqs = [
+ '甯屾湜鍖荤敓鑳藉畾鏈熶笂闂ㄦ鏌�',
+ '闇�瑕佸懆鏈椂闂存鐨勬湇鍔�',
+ '瀵硅嵂鐗╂湁杩囨晱鍙诧紝闇�鐗瑰埆娉ㄦ剰',
+ '琛屽姩涓嶄究锛岄渶瑕佷笂闂ㄦ湇鍔�',
+ '鏃犵壒娈婅姹�',
+ '闇�瑕佽嫳璇湇鍔℃敮鎸�',
+ '鏈夊摦鍠樼梾鍙诧紝闇�閲嶇偣鍏虫敞',
+ '闇�瑕佸畾鏈熺敓闀垮彂鑲茬洃娴�',
+ '甯屾湜鏈夊浐瀹氱殑鍎跨鍖荤敓',
+ '闇�瑕佺柅鑻楁帴绉嶆彁閱掓湇鍔�'
+ ]
- const rejectReasons = [
- '璧勬枡涓嶅畬鏁达紝璇疯ˉ鍏呭仴搴锋。妗�',
- '涓嶇鍚堝綋鍓嶇绾︽潯浠�',
- '閫夋嫨鐨勫尰鐢熸。鏈熷凡婊�',
- '鏈嶅姟濂楅涓庣梾鎯呬笉鍖归厤',
- '骞撮緞涓嶇鍚堝椁愯姹�',
- '璇疯ˉ鍏呭畬鏁寸殑鐥呭彶璧勬枡'
- ]
+ const rejectReasons = [
+ '鐩戞姢浜鸿祫鏂欎笉瀹屾暣锛岃琛ュ厖韬唤璇佹槑',
+ '鍎跨骞撮緞涓嶇鍚堝椁愯姹�',
+ '閫夋嫨鐨勫尰鐢熶笓闀夸笌鍎跨闇�姹備笉鍖归厤',
+ '鏈嶅姟濂楅涓庡効绔ュ仴搴风姸鍐典笉鍖归厤',
+ '璇疯ˉ鍏呭畬鏁寸殑鍎跨鍋ュ悍妗f',
+ '鐤嫍鎺ョ璁板綍涓嶅畬鏁�'
+ ]
- // 鐢熸垚绾�30鏉℃暟鎹紙涓庡鍚嶆暟閲忓尮閰嶏級
- for (let i = 0; i < patientNames.length; i++) {
- const packageId = (i % 5) + 1 + ''
- const reviewStatus = i % 3 // 0:寰呭鏍�, 1:閫氳繃, 2:椹冲洖
- const applyDate = this.generateRandomDate('2024-10-01', '2024-12-08')
+ for (let i = 0; i < patientNames.length; i++) {
+ const packageId = (i % 6) + 1 + ''
+ const packageInfo = this.servicePackages[packageId]
+ const reviewStatus = i % 3 // 0:寰呭鏍�, 1:閫氳繃, 2:椹冲洖
+ const applyDate = this.generateRandomDate('2024-10-01', '2024-12-08')
- // 鐢熸垚鏇寸湡瀹炵殑鐢佃瘽鍙风爜
- const phonePrefix = ['138', '139', '150', '151', '152', '186', '187', '188']
- const phone = `${phonePrefix[i % phonePrefix.length]}${this.padNumber(1000 + i * 37, 4)}${this.padNumber(i % 100, 2)}`
+ // 鏍规嵁濂楅閫傜敤骞撮緞鐢熸垚鍚堢悊鐨勫疄闄呭勾榫�
+ let age
+ switch(packageInfo.applicableAge) {
+ case '0-3宀�':
+ age = Math.floor(Math.random() * 3) + 1
+ break
+ case '3-6宀�':
+ age = Math.floor(Math.random() * 3) + 3
+ break
+ case '7-12宀�':
+ age = Math.floor(Math.random() * 6) + 7
+ break
+ case '13-18宀�':
+ age = Math.floor(Math.random() * 6) + 13
+ break
+ default:
+ age = Math.floor(Math.random() * 18) + 1
+ }
- // 鐢熸垚鍚堢悊鐨勫勾榫勶紙0-80宀侊級
- const age = i % 80
- const gender = i % 2 === 0 ? '鐢�' : '濂�'
+ // 鐢熸垚鐩戞姢浜虹數璇濆彿鐮�
+ const phonePrefix = ['138', '139', '150', '151', '152', '186', '187', '188']
+ const phone = `${phonePrefix[i % phonePrefix.length]}${this.padNumber(1000 + i * 37, 4)}${this.padNumber(i % 100, 2)}`
- mockData.push({
- id: `A${2024000 + i}`,
- patientName: patientNames[i],
- gender: gender,
- age: age,
- phone: phone,
- servicePackageId: packageId,
- servicePackage: this.servicePackages[packageId].name,
- services: this.getServicesByPackage(packageId),
- contractPeriod: [1, 2][i % 2],
- applyTime: `${applyDate} ${this.padNumber(8 + (i % 10), 2)}:${this.padNumber(i % 60, 2)}:${this.padNumber(i % 60, 2)}`,
- expectDoctor: ['鐜嬪尰鐢�', '鏉庡尰鐢�', '寮犲尰鐢�', '鍒樺尰鐢�', '闄堝尰鐢�'][i % 5],
- specialRequirements: specialReqs[i % specialReqs.length],
- reviewStatus: reviewStatus,
- reviewer: reviewStatus !== 0 ? ['绠$悊鍛�', '绯荤粺绠$悊鍛�', '瀹℃牳涓撳憳'][i % 3] : '',
- reviewTime: reviewStatus !== 0 ?
- `${this.addDays(applyDate, 1 + (i % 3))} 14:${this.padNumber(i % 60, 2)}:00` : '',
- rejectReason: reviewStatus === 2 ? rejectReasons[i % rejectReasons.length] : ''
- })
- }
+ mockData.push({
+ id: `A${2024000 + i}`,
+ patientName: patientNames[i],
+ gender: i % 2 === 0 ? '鐢�' : '濂�',
+ age: age,
+ phone: phone,
+ servicePackageId: packageId,
+ servicePackage: packageInfo.name,
+ services: this.getServicesByPackage(packageId),
+ contractPeriod: [1, 2][i % 2],
+ applicableAge: packageInfo.applicableAge,
+ applyTime: `${applyDate} ${this.padNumber(8 + (i % 10), 2)}:${this.padNumber(i % 60, 2)}:${this.padNumber(i % 60, 2)}`,
+ expectDoctor: ['鐜嬪尰鐢�', '鏉庡尰鐢�', '寮犲尰鐢�', '鍒樺尰鐢�', '闄堝尰鐢�'][i % 5],
+ specialRequirements: specialReqs[i % specialReqs.length],
+ reviewStatus: reviewStatus,
+ reviewer: reviewStatus !== 0 ? ['绠$悊鍛�', '绯荤粺绠$悊鍛�', '瀹℃牳涓撳憳'][i % 3] : '',
+ reviewTime: reviewStatus !== 0 ?
+ `${this.addDays(applyDate, 1 + (i % 3))} 14:${this.padNumber(i % 60, 2)}:00` : '',
+ rejectReason: reviewStatus === 2 ? rejectReasons[i % rejectReasons.length] : ''
+ })
+ }
- return mockData
-},
+ return mockData
+ },
-// 鏍规嵁濂楅鑾峰彇鏈嶅姟鍒楄〃
-getServicesByPackage(packageId) {
- const servicesMap = {
- '1': ['骞村害鍋ュ悍璇勪及', '鍦ㄧ嚎鍋ュ悍鍜ㄨ', '鍋ュ悍妗f绠$悊', '瀹氭湡鍋ュ悍鎻愰啋'],
- '2': ['涓撳睘鍖荤敓鏈嶅姟', '鐢ㄨ嵂鎸囧绠$悊', '瀹氭湡闅忚鐩戞祴', '涓�у寲搴峰璁″垝', '绱ф�ュ尰鐤楀挩璇�'],
- '3': ['璺屽�掗闄╄瘎浼�', '搴峰璁粌鎸囧', '鐢ㄨ嵂瀹夊叏绠$悊', '瀹氭湡涓婇棬璁胯', '绱ф�ヨ仈绯绘湇鍔�', '蹇冪悊鍋ュ悍鍏虫��'],
- '4': ['瀛曟湡鍋ュ悍绠$悊', '浜у悗搴峰鎸囧', '鏂扮敓鍎挎姢鐞嗗挩璇�', '钀ュ吇鑶抽寤鸿', '蹇冪悊鎯呯华鏀寔'],
- '5': ['鐢熼暱鍙戣偛鐩戞祴', '鐤嫍鎺ョ绠$悊', '甯歌鐥呴槻娌�', '钀ュ吇鎸囧', '鏃╂湡鏁欒偛鍜ㄨ']
- }
- return servicesMap[packageId] || []
-},
+ // 鏍规嵁濂楅鑾峰彇鏈嶅姟鍒楄〃
+ getServicesByPackage(packageId) {
+ const servicesMap = {
+ '1': ['鏂扮敓鍎垮搴瑙�', '瀹氭湡浣撴牸妫�鏌ヤ笌鍙戣偛璇勪及', '琛�甯歌妫�娴�', '鍚姏绛涙煡', '鍠傚吇涓庢姢鐞嗘寚瀵�', '棰勯槻鎺ョ鏈嶅姟', '涓尰淇濆仴鎸囧'],
+ '2': ['鐢熼暱鍙戣偛璇勪及', '瑙嗗姏绛涙煡涓庡彛鑵斾繚鍋�', '琛�甯歌妫�鏌�', '鍚堢悊鑶抽涓庤涓烘寚瀵�', '鐤剧梾棰勯槻涓庡仴搴峰共棰�', '涓尰楗璋冨吇鎸囧'],
+ '3': ['骞村害鍋ュ悍妫�鏌�', '蹇冪悊琛屼负鍙戣偛璇勪及', '绉戝鐢ㄧ溂涓庡彛鑵斾繚鍋�', '鍚堢悊鑶抽鎸囧', '鍋ュ悍鐢熸椿鏂瑰紡骞查', '涓撳杞瘖缁胯壊閫氶亾'],
+ '4': ['闈掓槬鏈熷仴搴锋暀鑲�', '骞村害鍋ュ悍璇勪及', '蹇冪悊鍋ュ悍鏀寔', '鍋ュ悍椋庨櫓琛屼负骞查', '涓�у寲鍋ュ悍鏂规', '浼樺厛棰勭害妫�鏌ユ湇鍔�'],
+ '5': ['寰噺鍏冪礌娴嬪畾', '楠ㄥ瘑搴︽娴�', '涓�у寲鑶抽鏂规', '鐢熼暱鍙戣偛涓撻」璇勪及', '杩愬姩澶勬柟鎸囧', '瀹氭湡钀ュ吇鐩戞祴'],
+ '6': ['涓尰浣撹川杈ㄨ瘑', '涓変紡璐存湇鍔�', '灏忓効鎺ㄦ嬁', '鑰崇┐娌荤枟', '闃叉劅棣欏泭', '椋熺枟鎸囧']
+ }
+ return servicesMap[packageId] || []
+ },
-// 杈呭姪鏂规硶锛氱敓鎴愰殢鏈烘棩鏈�
-generateRandomDate(start, end) {
- const startDate = new Date(start).getTime()
- const endDate = new Date(end).getTime()
- const randomTime = startDate + Math.random() * (endDate - startDate)
- return new Date(randomTime).toISOString().split('T')[0]
-},
+ // 杈呭姪鏂规硶锛氱敓鎴愰殢鏈烘棩鏈�
+ generateRandomDate(start, end) {
+ const startDate = new Date(start).getTime()
+ const endDate = new Date(end).getTime()
+ const randomTime = startDate + Math.random() * (endDate - startDate)
+ return new Date(randomTime).toISOString().split('T')[0]
+ },
-// 杈呭姪鏂规硶锛氭坊鍔犲ぉ鏁�
-addDays(date, days) {
- const result = new Date(date)
- result.setDate(result.getDate() + days)
- return result.toISOString().split('T')[0]
-},
+ // 杈呭姪鏂规硶锛氭坊鍔犲ぉ鏁�
+ addDays(date, days) {
+ const result = new Date(date)
+ result.setDate(result.getDate() + days)
+ return result.toISOString().split('T')[0]
+ },
-// 杈呭姪鏂规硶锛氭暟瀛楄ˉ闆�
-padNumber(num, length) {
- return num.toString().padStart(length, '0')
-},
+ // 杈呭姪鏂规硶锛氭暟瀛楄ˉ闆�
+ padNumber(num, length) {
+ return num.toString().padStart(length, '0')
+ },
- // 鑾峰彇瀹℃牳鍒楄〃 [1](@ref)
+ // 鑾峰彇瀹℃牳鍒楄〃
async getList() {
this.loading = true
try {
@@ -435,7 +481,7 @@
this.stats.rejected = allData.filter(item => item.reviewStatus === 2).length
},
- // 鑾峰彇瀹℃牳鐘舵�佹枃鏈� [2](@ref)
+ // 鑾峰彇瀹℃牳鐘舵�佹枃鏈�
getReviewStatusText(status) {
const statusMap = { 0: '寰呭鏍�', 1: '瀹℃牳閫氳繃', 2: '瀹℃牳椹冲洖' }
return statusMap[status] || '鏈煡'
@@ -449,11 +495,14 @@
// 鑾峰彇濂楅绫诲瀷
getPackageType(packageId) {
- const typeMap = { '1': 'info', '2': 'success', '3': 'warning', '4': 'danger', '5': 'primary' }
+ const typeMap = {
+ '1': 'primary', '2': 'success', '3': 'warning',
+ '4': 'danger', '5': 'info', '6': 'primary'
+ }
return typeMap[packageId] || 'info'
},
- // 鎼滅储鎿嶄綔 [1](@ref)
+ // 鎼滅储鎿嶄綔
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
@@ -471,7 +520,7 @@
this.handleQuery()
},
- // 澶勭悊瀹℃牳鎿嶄綔 [2](@ref)
+ // 澶勭悊瀹℃牳鎿嶄綔
handleReview(row, status) {
this.currentRow = row
this.reviewForm = {
@@ -483,7 +532,6 @@
}
this.reviewDialogVisible = true
- // 娓呴櫎琛ㄥ崟楠岃瘉
this.$nextTick(() => {
if (this.$refs.reviewFormRef) {
this.$refs.reviewFormRef.clearValidate()
@@ -491,10 +539,9 @@
})
},
- // 鎻愪氦瀹℃牳 [2,6](@ref)
+ // 鎻愪氦瀹℃牳
async submitReview() {
try {
- // 琛ㄥ崟楠岃瘉
if (this.reviewForm.reviewStatus === 2) {
if (!this.reviewForm.rejectReason) {
this.$message.error('璇峰~鍐欓┏鍥炲師鍥�')
@@ -507,10 +554,8 @@
return
}
- // 妯℃嫙API璋冪敤
await new Promise(resolve => setTimeout(resolve, 1000))
- // 鏇存柊褰撳墠琛岀殑鐘舵��
const currentIndex = this.reviewList.findIndex(item => item.id === this.currentRow.id)
if (currentIndex !== -1) {
this.reviewList[currentIndex].reviewStatus = this.reviewForm.reviewStatus
@@ -518,7 +563,6 @@
this.reviewList[currentIndex].reviewTime = new Date().toLocaleString()
this.reviewList[currentIndex].rejectReason = this.reviewForm.rejectReason
- // 濡傛灉瀹℃牳閫氳繃锛屽垎閰嶅尰鐢�
if (this.reviewForm.reviewStatus === 1) {
const doctor = this.availableDoctors.find(d => d.id === this.reviewForm.assignDoctor)
this.reviewList[currentIndex].expectDoctor = doctor ? doctor.name : this.reviewList[currentIndex].expectDoctor
@@ -527,7 +571,7 @@
this.$message.success(this.reviewForm.reviewStatus === 1 ? '瀹℃牳閫氳繃鎴愬姛' : '瀹℃牳椹冲洖鎴愬姛')
this.reviewDialogVisible = false
- this.calculateStats() // 閲嶆柊璁$畻缁熻淇℃伅
+ this.calculateStats()
} catch (error) {
console.error('瀹℃牳鎿嶄綔澶辫触:', error)
this.$message.error('瀹℃牳鎿嶄綔澶辫触')
@@ -536,54 +580,10 @@
// 鏌ョ湅璇︽儏
handleView(row) {
- this.$message.info(`鏌ョ湅鎮h�� ${row.patientName} 鐨勭敵璇疯鎯卄)
- // 瀹為檯寮�鍙戜腑璺宠浆鍒拌鎯呴〉
- // this.$router.push({ path: '/patient/contract/apply-detail', query: { id: row.id } })
- },
-
- // 鎵归噺瀹℃牳閫氳繃
- handleBatchApprove() {
- const pendingItems = this.reviewList.filter(item => item.reviewStatus === 0)
- if (pendingItems.length === 0) {
- this.$message.warning('娌℃湁寰呭鏍哥殑鐢宠')
- return
- }
-
- this.$confirm(`纭畾瑕佹壒閲忛�氳繃 ${pendingItems.length} 涓緟瀹℃牳鐢宠鍚楋紵`, '鎵归噺瀹℃牳', {
- type: 'warning'
- }).then(async () => {
- try {
- this.loading = true
- // 妯℃嫙鎵归噺瀹℃牳API璋冪敤
- await new Promise(resolve => setTimeout(resolve, 2000))
-
- // 鏇存柊鎵�鏈夊緟瀹℃牳椤圭殑鐘舵��
- pendingItems.forEach(item => {
- item.reviewStatus = 1
- item.reviewer = '褰撳墠鐢ㄦ埛'
- item.reviewTime = new Date().toLocaleString()
- })
-
- this.$message.success(`鎵归噺瀹℃牳閫氳繃鎴愬姛锛屽叡澶勭悊 ${pendingItems.length} 涓敵璇穈)
- this.calculateStats()
- } catch (error) {
- this.$message.error('鎵归噺瀹℃牳澶辫触')
- } finally {
- this.loading = false
- }
- })
- },
-
- // 瀵煎嚭瀹℃牳鏁版嵁
- handleExport() {
- const exportData = this.generateMockData()
- // 瀹為檯寮�鍙戜腑杩欓噷搴旇璋冪敤瀵煎嚭API
- console.log('瀵煎嚭鏁版嵁:', exportData)
- this.$message.info('瀵煎嚭鍔熻兘寮�鍙戜腑锛屾暟鎹凡鎵撳嵃鍒版帶鍒跺彴')
+ this.$message.info(`鏌ョ湅鍎跨 ${row.patientName} 鐨勭敵璇疯鎯卄)
}
},
watch: {
- // 鐩戝惉瀹℃牳鐘舵�佸彉鍖栵紝鍔ㄦ�佽缃獙璇佽鍒� [6](@ref)
'reviewForm.reviewStatus': function(newVal) {
this.$nextTick(() => {
if (this.$refs.reviewFormRef) {
@@ -638,53 +638,11 @@
.patient-detail {
font-size: 12px;
color: #909399;
+ line-height: 1.4;
}
}
- // 瀹℃牳鐘舵�佹牱寮�
- .review-status {
- padding: 4px 8px;
- border-radius: 4px;
- font-size: 12px;
- font-weight: 500;
-
- &.status-pending {
- background: #fdf6ec;
- color: #e6a23c;
- }
-
- &.status-approved {
- background: #f0f9e8;
- color: #67c23a;
- }
-
- &.status-rejected {
- background: #fef0f0;
- color: #f56c6c;
- }
- }
-
- // 鐗规畩瑕佹眰鏂囨湰鏍峰紡
- .special-requirements {
- max-width: 200px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-
- &:hover {
- white-space: normal;
- overflow: visible;
- background: white;
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
- padding: 8px;
- border-radius: 4px;
- position: absolute;
- z-index: 1000;
- max-width: 300px;
- }
- }
-
- // 琛ㄦ牸鏍峰紡
+ // 琛ㄦ牸鏍峰紡浼樺寲
::v-deep .el-table {
.el-table__header-wrapper {
th {
@@ -714,95 +672,6 @@
}
}
- // 瀹℃牳瀵硅瘽妗嗘牱寮�
- .review-dialog {
- ::v-deep .el-dialog {
- border-radius: 8px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
- }
-
- .dialog-footer {
- text-align: right;
- margin-top: 20px;
- }
- }
-
- // 鎿嶄綔鎸夐挳鏍峰紡
- .action-buttons {
- display: flex;
- gap: 8px;
-
- .el-button {
- padding: 7px 12px;
- border-radius: 4px;
- font-size: 12px;
-
- &.approve-btn {
- background: #67c23a;
- border-color: #67c23a;
- color: white;
-
- &:hover {
- background: #5daf34;
- border-color: #5daf34;
- }
- }
-
- &.reject-btn {
- background: #f56c6c;
- border-color: #f56c6c;
- color: white;
-
- &:hover {
- background: #e65c5c;
- border-color: #e65c5c;
- }
- }
-
- &.detail-btn {
- color: #409eff;
- border-color: #409eff;
-
- &:hover {
- background: #ecf5ff;
- }
- }
- }
- }
-
- // 鎵归噺鎿嶄綔鏍�
- .batch-actions {
- background: #ecf5ff;
- padding: 12px 20px;
- margin-bottom: 16px;
- border-radius: 4px;
- display: flex;
- justify-content: space-between;
- align-items: center;
-
- .batch-info {
- color: #409eff;
- font-size: 14px;
- }
- }
-
- // 绌虹姸鎬佹牱寮�
- .empty-state {
- text-align: center;
- padding: 40px 20px;
- color: #909399;
-
- .empty-icon {
- font-size: 48px;
- margin-bottom: 16px;
- opacity: 0.5;
- }
-
- .empty-text {
- font-size: 14px;
- }
- }
-
// 鍝嶅簲寮忚璁�
@media (max-width: 768px) {
padding: 10px;
@@ -811,16 +680,6 @@
.el-col {
margin-bottom: 10px;
}
- }
-
- .action-buttons {
- flex-direction: column;
- }
-
- .batch-actions {
- flex-direction: column;
- gap: 10px;
- align-items: stretch;
}
}
}
--
Gitblit v1.9.3