From fbb61549bf96e9e0910b676a5524b0760d29c4be Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 07 四月 2026 15:16:54 +0800
Subject: [PATCH] 测试完成
---
src/views/Satisfaction/configurationmyd/batch.vue | 922 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 922 insertions(+), 0 deletions(-)
diff --git a/src/views/Satisfaction/configurationmyd/batch.vue b/src/views/Satisfaction/configurationmyd/batch.vue
new file mode 100644
index 0000000..10d6619
--- /dev/null
+++ b/src/views/Satisfaction/configurationmyd/batch.vue
@@ -0,0 +1,922 @@
+<template>
+ <div class="batch-process">
+ <!-- 椤甸潰鏍囬 -->
+ <div class="page-header">
+ <div class="header-content">
+ <h2 class="page-title">寮傚父鎵归噺澶勭悊</h2>
+ <p class="page-description">鎵归噺澶勭悊閫変腑鐨勫紓甯稿弽棣�</p>
+ <div class="header-actions">
+ <el-button
+ type="primary"
+ icon="el-icon-check"
+ @click="handleBatchSubmit"
+ :loading="batchProcessing"
+ >
+ 鎵归噺鎻愪氦澶勭悊
+ </el-button>
+ <el-button type="warning" icon="el-icon-back" @click="handleGoBack">
+ 杩斿洖寮傚父鍒楄〃
+ </el-button>
+ </div>
+ </div>
+ </div>
+
+ <!-- 寮傚父鍒楄〃 -->
+ <div class="list-section">
+ <el-card shadow="never">
+ <div class="filter-section">
+ <el-form
+ :model="filterParams"
+ :inline="true"
+ size="medium"
+ class="filter-form"
+ >
+ <el-form-item label="璐熻矗绉戝">
+ <el-select
+ v-model="filterParams.deptId"
+ placeholder="璇烽�夋嫨绉戝"
+ clearable
+ style="width: 200px"
+ >
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.id"
+ :label="dept.name"
+ :value="dept.id"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="澶勭悊鐘舵��">
+ <el-select
+ v-model="filterParams.status"
+ placeholder="璇烽�夋嫨鐘舵��"
+ clearable
+ style="width: 200px"
+ >
+ <el-option label="寰呭鐞�" :value="0" />
+ <el-option label="澶勭悊涓�" :value="1" />
+ <el-option label="宸插鐞�" :value="2" />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ @click="handleFilter"
+ >
+ 绛涢��
+ </el-button>
+ <el-button icon="el-icon-refresh" @click="handleResetFilter">
+ 閲嶇疆
+ </el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+
+ <el-table
+ v-loading="loading"
+ :data="exceptionList"
+ :border="true"
+ style="width: 100%"
+ @selection-change="handleSelectionChange"
+ class="exception-table"
+ >
+ <el-table-column type="selection" width="55" align="center" />
+
+ <el-table-column
+ label="搴忓彿"
+ type="index"
+ width="60"
+ align="center"
+ />
+
+ <el-table-column
+ label="璐熻矗绉戝"
+ prop="responsibilityDept"
+ width="120"
+ align="center"
+ >
+ <template slot-scope="{ row }">
+ <el-tag type="primary">{{ row.responsibilityDept }}</el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="涓嶆弧鎰忚鎯�"
+ prop="unsatisfactoryDetail"
+ min-width="200"
+ align="center"
+ >
+ <template slot-scope="{ row }">
+ <div class="detail-content">
+ {{ row.unsatisfactoryDetail }}
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鎮h�呬俊鎭�" width="300" align="center">
+ <template slot-scope="{ row }">
+ <div class="patient-info">
+ <div class="patient-item">
+ <span class="label">濮撳悕锛�</span>
+ <span class="value">{{ row.patientName }}</span>
+ </div>
+ <div class="patient-item">
+ <span class="label">鎬у埆锛�</span>
+ <span class="value">{{
+ row.gender === 1 ? "鐢�" : "濂�"
+ }}</span>
+ </div>
+ <div class="patient-item">
+ <span class="label">骞撮緞锛�</span>
+ <span class="value">{{ row.age }}宀�</span>
+ </div>
+ <div class="patient-item">
+ <span class="label">鐢佃瘽锛�</span>
+ <span class="value">{{ row.phone }}</span>
+ </div>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鍑洪櫌淇℃伅" width="250" align="center">
+ <template slot-scope="{ row }">
+ <div class="discharge-info">
+ <div class="info-item">
+ <span class="label">绉戝锛�</span>
+ <span class="value">{{ row.dischargeDept }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鐥呭尯锛�</span>
+ <span class="value">{{ row.dischargeWard }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">濉啓鏃堕棿锛�</span>
+ <span class="value time">{{ row.fillTime }}</span>
+ </div>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="澶勭悊鐘舵��"
+ prop="processStatus"
+ width="100"
+ align="center"
+ >
+ <template slot-scope="{ row }">
+ <el-tag :type="getStatusTagType(row.processStatus)" effect="dark">
+ {{ getStatusText(row.processStatus) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="鎿嶄綔"
+ width="210"
+ align="center"
+ fixed="right"
+ >
+ <template slot-scope="{ row }">
+ <el-button
+ type="primary"
+ size="small"
+ icon="el-icon-view"
+ @click="handleViewDetail(row)"
+ >
+ 鏌ョ湅璇︽儏
+ </el-button>
+ <el-button
+ type="warning"
+ size="small"
+ icon="el-icon-edit"
+ @click="handleProcess(row)"
+ :disabled="row.processStatus === 2"
+ >
+ 澶勭悊
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 鍒嗛〉 -->
+ <div class="pagination-section">
+ <el-pagination
+ background
+ layout="total, sizes, prev, pager, next, jumper"
+ :current-page="filterParams.pageNum"
+ :page-size="filterParams.pageSize"
+ :page-sizes="[10, 20, 30, 50]"
+ :total="total"
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ />
+ </div>
+ </el-card>
+ </div>
+
+ <!-- 澶勭悊瀵硅瘽妗� -->
+ <el-dialog
+ title="澶勭悊寮傚父鍙嶉"
+ :visible.sync="processDialogVisible"
+ width="600px"
+ center
+ >
+ <el-form
+ :model="processForm"
+ :rules="processRules"
+ ref="processForm"
+ label-width="100px"
+ size="medium"
+ >
+ <el-form-item label="澶勭悊鐘舵��" prop="status">
+ <el-select
+ v-model="processForm.status"
+ placeholder="璇烽�夋嫨澶勭悊鐘舵��"
+ style="width: 100%"
+ >
+ <el-option label="澶勭悊涓�" :value="1" />
+ <el-option label="宸插鐞�" :value="2" />
+ <el-option label="宸查┏鍥�" :value="3" />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="鎶ュ绉戝" prop="reportDepts">
+ <el-select
+ v-model="processForm.reportDepts"
+ placeholder="璇烽�夋嫨鎶ュ绉戝"
+ multiple
+ filterable
+ collapse-tags
+ style="width: 100%"
+ >
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.id"
+ :label="dept.name"
+ :value="dept.id"
+ />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="澶勭悊澶囨敞" prop="remark">
+ <el-input
+ v-model="processForm.remark"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏ュ鐞嗗娉紙鏈�澶�500瀛楋級"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+
+ <el-form-item label="闄勪欢涓婁紶">
+ <el-upload
+ class="upload-demo"
+ action="#"
+ :on-preview="handlePreview"
+ :on-remove="handleRemove"
+ :before-remove="beforeRemove"
+ :limit="3"
+ :on-exceed="handleExceed"
+ :file-list="fileList"
+ >
+ <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+ <div slot="tip" class="el-upload__tip">
+ 鏀寔涓婁紶鍥剧墖銆佹枃妗g瓑闄勪欢锛屽崟涓枃浠朵笉瓒呰繃10MB
+ </div>
+ </el-upload>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="processDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="submitProcess" :loading="processing">
+ 鎻愪氦澶勭悊
+ </el-button>
+ </span>
+ </el-dialog>
+
+ <!-- 鎵归噺澶勭悊瀵硅瘽妗� -->
+ <el-dialog
+ title="鎵归噺澶勭悊寮傚父鍙嶉"
+ :visible.sync="batchDialogVisible"
+ width="600px"
+ center
+ >
+ <el-form
+ :model="batchProcessForm"
+ :rules="processRules"
+ ref="batchProcessForm"
+ label-width="100px"
+ size="medium"
+ >
+ <el-form-item label="澶勭悊鐘舵��" prop="status">
+ <el-select
+ v-model="batchProcessForm.status"
+ placeholder="璇烽�夋嫨澶勭悊鐘舵��"
+ style="width: 100%"
+ >
+ <el-option label="澶勭悊涓�" :value="1" />
+ <el-option label="宸插鐞�" :value="2" />
+ <el-option label="宸查┏鍥�" :value="3" />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="鎶ュ绉戝" prop="reportDepts">
+ <el-select
+ v-model="batchProcessForm.reportDepts"
+ placeholder="璇烽�夋嫨鎶ュ绉戝"
+ multiple
+ filterable
+ collapse-tags
+ style="width: 100%"
+ >
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.id"
+ :label="dept.name"
+ :value="dept.id"
+ />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="澶勭悊澶囨敞" prop="remark">
+ <el-input
+ v-model="batchProcessForm.remark"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏ュ鐞嗗娉紙鏈�澶�500瀛楋級"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="batchDialogVisible = false">鍙栨秷</el-button>
+ <el-button
+ type="primary"
+ @click="submitBatchProcess"
+ :loading="batchProcessing"
+ >
+ 鎵归噺鎻愪氦
+ </el-button>
+ </span>
+ </el-dialog>
+ <!-- 寮傚父璇︽儏寮规 -->
+ <Details-anomaly
+ :visible="detailDialogVisible"
+ :record-id="selectedRecordId"
+ :title="detailDialogTitle"
+ @update:visible="handleDetailDialogClose"
+ @processed="handleProcessed"
+ @close="handleDetailDialogClose"
+ />
+ </div>
+</template>
+
+<script>
+import DetailsAnomaly from "./components/DetailsAnomaly.vue";
+export default {
+ name: "BatchProcess",
+ components: {
+ DetailsAnomaly,
+ },
+ data() {
+ return {
+ // 娣诲姞浠ヤ笅鏁版嵁
+ detailDialogVisible: false,
+ selectedRecordId: null,
+ detailDialogTitle: "寮傚父鍙嶉璇︽儏",
+ // 褰撳墠澶勭悊鐨勫紓甯窱D
+ currentExceptionId: null,
+
+ // 鎵归噺閫変腑鐨勫紓甯窱D
+ selectedExceptionIds: [],
+
+ // 杩囨护鍙傛暟
+ filterParams: {
+ deptId: "",
+ status: "",
+ pageNum: 1,
+ pageSize: 10,
+ },
+
+ // 鍔犺浇鐘舵��
+ loading: false,
+ processing: false,
+ batchProcessing: false,
+
+ // 绉戝鍒楄〃
+ deptList: [
+ { id: 1, name: "蹇冭绠″唴绉�" },
+ { id: 2, name: "绁炵粡鍐呯" },
+ { id: 3, name: "鏅绉�" },
+ { id: 4, name: "楠ㄧ" },
+ { id: 5, name: "濡囦骇绉�" },
+ { id: 6, name: "鍎跨" },
+ { id: 7, name: "鎬ヨ瘖绉�" },
+ { id: 8, name: "鍛煎惛鍐呯" },
+ { id: 9, name: "娑堝寲鍐呯" },
+ { id: 10, name: "鍐呭垎娉岀" },
+ ],
+
+ // 寮傚父鍒楄〃鏁版嵁
+ exceptionList: [],
+ total: 0,
+
+ // 澶勭悊瀵硅瘽妗�
+ processDialogVisible: false,
+ processForm: {
+ status: "",
+ reportDepts: [],
+ remark: "",
+ },
+ processRules: {
+ status: [
+ { required: true, message: "璇烽�夋嫨澶勭悊鐘舵��", trigger: "change" },
+ ],
+ remark: [
+ { required: true, message: "璇疯緭鍏ュ鐞嗗娉�", trigger: "blur" },
+ {
+ min: 5,
+ max: 500,
+ message: "澶囨敞闀垮害鍦� 5 鍒� 500 涓瓧绗�",
+ trigger: "blur",
+ },
+ ],
+ },
+ fileList: [],
+
+ // 鎵归噺澶勭悊瀵硅瘽妗�
+ batchDialogVisible: false,
+ batchProcessForm: {
+ status: "",
+ reportDepts: [],
+ remark: "",
+ },
+ };
+ },
+
+ mounted() {
+ this.loadExceptionList();
+ },
+
+ methods: {
+ // 鍔犺浇寮傚父鍒楄〃
+ async loadExceptionList() {
+ this.loading = true;
+ try {
+ // Mock 鏁版嵁
+ await new Promise((resolve) => {
+ setTimeout(() => {
+ this.exceptionList = [
+ {
+ id: 1,
+ responsibilityDept: "蹇冭绠″唴绉�",
+ unsatisfactoryDetail:
+ "鍖荤敓鏌ユ埧鏃堕棿澶煭锛屾矡閫氫笉澶熷厖鍒嗭紝瀵圭梾鎯呰В閲婁笉澶熻缁�",
+ patientName: "寮犲厛鐢�",
+ gender: 1,
+ age: 45,
+ phone: "138****1234",
+ dischargeDept: "蹇冭绠″唴绉�",
+ dischargeWard: "鍐呯涓�鐥呭尯",
+ fillTime: "2024-01-15 10:30:25",
+ processStatus: 0,
+ questionnaireId: 1001,
+ },
+ {
+ id: 2,
+ responsibilityDept: "绁炵粡鍐呯",
+ unsatisfactoryDetail:
+ "鎶ゅ+鎵撻拡鎶�鏈笉浣筹紝鎵庝簡涓夋鎵嶆垚鍔燂紝涓旀�佸害涓嶅鑰愬績",
+ patientName: "鏉庡コ澹�",
+ gender: 0,
+ age: 38,
+ phone: "139****5678",
+ dischargeDept: "绁炵粡鍐呯",
+ dischargeWard: "鍐呯浜岀梾鍖�",
+ fillTime: "2024-01-14 16:20:10",
+ processStatus: 0,
+ questionnaireId: 1002,
+ },
+ {
+ id: 3,
+ responsibilityDept: "鏅绉�",
+ unsatisfactoryDetail: "鏈悗鎹㈣嵂涓嶅強鏃讹紝浼ゅ彛鐤肩棝鏃舵病鏈夊強鏃跺鐞�",
+ patientName: "鐜嬪厛鐢�",
+ gender: 1,
+ age: 52,
+ phone: "137****9012",
+ dischargeDept: "鏅绉�",
+ dischargeWard: "澶栫涓�鐥呭尯",
+ fillTime: "2024-01-13 09:15:45",
+ processStatus: 1,
+ questionnaireId: 1003,
+ },
+ {
+ id: 4,
+ responsibilityDept: "楠ㄧ",
+ unsatisfactoryDetail: "搴峰鎸囧涓嶅涓撲笟锛屽鎭㈠杩囩▼鎻忚堪涓嶆竻妤�",
+ patientName: "鍒樺コ澹�",
+ gender: 0,
+ age: 65,
+ phone: "136****3456",
+ dischargeDept: "楠ㄧ",
+ dischargeWard: "澶栫浜岀梾鍖�",
+ fillTime: "2024-01-12 14:40:30",
+ processStatus: 0,
+ questionnaireId: 1004,
+ },
+ {
+ id: 5,
+ responsibilityDept: "濡囦骇绉�",
+ unsatisfactoryDetail:
+ "浜у墠妫�鏌ユ帓闃熸椂闂磋繃闀匡紝绛夊緟鏈熼棿娌℃湁浼戞伅搴т綅",
+ patientName: "闄堝コ澹�",
+ gender: 0,
+ age: 28,
+ phone: "135****7890",
+ dischargeDept: "濡囦骇绉�",
+ dischargeWard: "濡囦骇绉戠梾鍖�",
+ fillTime: "2024-01-11 11:25:15",
+ processStatus: 2,
+ questionnaireId: 1005,
+ },
+ {
+ id: 6,
+ responsibilityDept: "鍎跨",
+ unsatisfactoryDetail:
+ "鍎跨鐢ㄨ嵂鍓傞噺浜や唬涓嶆竻鏅帮紝鐢ㄨ嵂娉ㄦ剰浜嬮」娌℃湁璇存槑",
+ patientName: "璧靛疂瀹�",
+ gender: 1,
+ age: 5,
+ phone: "134****1234",
+ dischargeDept: "鍎跨",
+ dischargeWard: "鍎跨鐥呭尯",
+ fillTime: "2024-01-10 15:50:20",
+ processStatus: 0,
+ questionnaireId: 1006,
+ },
+ {
+ id: 7,
+ responsibilityDept: "鎬ヨ瘖绉�",
+ unsatisfactoryDetail: "鎬ヨ瘖绛夊緟鏃堕棿杩囬暱锛岀梾鎯呮病鏈夊緱鍒板強鏃惰瘎浼�",
+ patientName: "瀛欏厛鐢�",
+ gender: 1,
+ age: 40,
+ phone: "133****5678",
+ dischargeDept: "鎬ヨ瘖绉�",
+ dischargeWard: "鎬ヨ瘖鐥呭尯",
+ fillTime: "2024-01-09 10:15:40",
+ processStatus: 0,
+ questionnaireId: 1007,
+ },
+ {
+ id: 8,
+ responsibilityDept: "鍛煎惛鍐呯",
+ unsatisfactoryDetail: "鍖荤敓寮�鑽緝澶氾紝璐圭敤杈冮珮锛屾病鏈夎鏄庡繀瑕佹��",
+ patientName: "鍛ㄥコ澹�",
+ gender: 0,
+ age: 55,
+ phone: "132****9012",
+ dischargeDept: "鍛煎惛鍐呯",
+ dischargeWard: "鍐呯涓�鐥呭尯",
+ fillTime: "2024-01-08 13:30:55",
+ processStatus: 1,
+ questionnaireId: 1008,
+ },
+ ];
+ this.total = this.exceptionList.length;
+ resolve();
+ }, 500);
+ });
+ } finally {
+ this.loading = false;
+ }
+ },
+
+ // 鑾峰彇鐘舵�佹爣绛剧被鍨�
+ getStatusTagType(status) {
+ switch (status) {
+ case 0:
+ return "warning"; // 寰呭鐞�
+ case 1:
+ return "primary"; // 澶勭悊涓�
+ case 2:
+ return "success"; // 宸插鐞�
+ default:
+ return "info";
+ }
+ },
+
+ // 鑾峰彇鐘舵�佹枃鏈�
+ getStatusText(status) {
+ switch (status) {
+ case 0:
+ return "寰呭鐞�";
+ case 1:
+ return "澶勭悊涓�";
+ case 2:
+ return "宸插鐞�";
+ default:
+ return "鏈煡";
+ }
+ },
+
+ // 澶勭悊绛涢��
+ handleFilter() {
+ this.filterParams.pageNum = 1;
+ this.loadExceptionList();
+ },
+
+ // 閲嶇疆绛涢��
+ handleResetFilter() {
+ this.filterParams = {
+ deptId: "",
+ status: "",
+ pageNum: 1,
+ pageSize: 10,
+ };
+ this.loadExceptionList();
+ },
+
+ // 澶勭悊閫夋嫨鍙樺寲
+ handleSelectionChange(selection) {
+ this.selectedExceptionIds = selection.map((item) => item.id);
+ },
+
+ // 澶勭悊鎵归噺鎻愪氦
+ handleBatchSubmit() {
+ if (this.selectedExceptionIds.length === 0) {
+ this.$message.warning("璇峰厛閫夋嫨瑕佸鐞嗙殑寮傚父鍙嶉");
+ return;
+ }
+ this.batchDialogVisible = true;
+ },
+
+ // 杩斿洖寮傚父鍒楄〃
+ handleGoBack() {
+ this.$router.push("/satisfaction/exception/list");
+ },
+
+ // 鏌ョ湅璇︽儏
+ handleViewDetail(row) {
+ this.selectedRecordId = row.id;
+ this.detailDialogTitle = `${row.patientName} - 寮傚父鍙嶉璇︽儏`;
+ this.detailDialogVisible = true;
+ },
+ // 澶勭悊璇︽儏寮规鍏抽棴
+ handleDetailDialogClose() {
+ this.detailDialogVisible = false;
+ this.selectedRecordId = null;
+ }, // 澶勭悊瀹屾垚鍚庣殑鍥炶皟
+ handleProcessed() {
+ // 閲嶆柊鍔犺浇鏁版嵁
+ this.loadExceptionList();
+ },
+ // 澶勭悊鍗曚釜寮傚父
+ handleProcess(row) {
+ this.currentExceptionId = row.id;
+ this.processForm = {
+ status: row.processStatus === 0 ? 1 : row.processStatus,
+ reportDepts: [],
+ remark: "",
+ };
+ this.processDialogVisible = true;
+ },
+
+ // 鎻愪氦澶勭悊
+ async submitProcess() {
+ this.$refs.processForm.validate(async (valid) => {
+ if (valid) {
+ this.processing = true;
+ try {
+ // Mock API璋冪敤
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+
+ this.$message.success("澶勭悊鎻愪氦鎴愬姛");
+ this.processDialogVisible = false;
+ this.loadExceptionList();
+ } finally {
+ this.processing = false;
+ }
+ }
+ });
+ },
+
+ // 鎻愪氦鎵归噺澶勭悊
+ async submitBatchProcess() {
+ this.$refs.batchProcessForm.validate(async (valid) => {
+ if (valid) {
+ this.batchProcessing = true;
+ try {
+ // Mock API璋冪敤
+ await new Promise((resolve) => setTimeout(resolve, 1500));
+
+ this.$message.success(
+ `宸叉壒閲忓鐞� ${this.selectedExceptionIds.length} 鏉″紓甯稿弽棣坄
+ );
+ this.batchDialogVisible = false;
+ this.selectedExceptionIds = [];
+ this.loadExceptionList();
+ } finally {
+ this.batchProcessing = false;
+ }
+ }
+ });
+ },
+
+ // 鍒嗛〉澶у皬鍙樺寲
+ handleSizeChange(size) {
+ this.filterParams.pageSize = size;
+ this.filterParams.pageNum = 1;
+ this.loadExceptionList();
+ },
+
+ // 椤电爜鍙樺寲
+ handlePageChange(page) {
+ this.filterParams.pageNum = page;
+ this.loadExceptionList();
+ },
+
+ // 鏂囦欢涓婁紶鐩稿叧鏂规硶
+ handlePreview(file) {
+ console.log("棰勮鏂囦欢:", file);
+ },
+
+ handleRemove(file, fileList) {
+ console.log("绉婚櫎鏂囦欢:", file, fileList);
+ },
+
+ beforeRemove(file) {
+ return this.$confirm(`纭畾绉婚櫎 ${file.name}锛焋);
+ },
+
+ handleExceed(files, fileList) {
+ this.$message.warning(
+ `褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${
+ files.length + fileList.length
+ } 涓枃浠禶
+ );
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.batch-process {
+ padding: 20px;
+ background-color: #f5f7fa;
+ min-height: 100vh;
+
+ .page-header {
+ margin-bottom: 20px;
+ padding: 20px;
+ background: linear-gradient(135deg, #5788fe 0%, #66b1ff 100%);
+ border-radius: 8px;
+ color: white;
+
+ .header-content {
+ .page-title {
+ margin: 0 0 8px 0;
+ font-size: 20px;
+ font-weight: 600;
+ }
+
+ .page-description {
+ margin: 0 0 20px 0;
+ opacity: 0.9;
+ font-size: 14px;
+ }
+
+ .header-actions {
+ display: flex;
+ gap: 10px;
+ }
+ }
+ }
+
+ .list-section {
+ .filter-section {
+ margin-bottom: 20px;
+
+ .filter-form {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+
+ ::v-deep .el-form-item {
+ margin-bottom: 0;
+ margin-right: 20px;
+
+ &:last-child {
+ margin-right: 0;
+ }
+ }
+ }
+ }
+
+ .exception-table {
+ ::v-deep .el-table__header-wrapper {
+ th {
+ background-color: #f8f9fa;
+ font-weight: 600;
+ color: #333;
+ }
+ }
+
+ .detail-content {
+ font-size: 13px;
+ color: #606266;
+ line-height: 1.5;
+ text-align: left;
+ }
+
+ .patient-info {
+ .patient-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 5px;
+ padding: 2px 0;
+
+ .label {
+ font-size: 12px;
+ color: #606266;
+ min-width: 40px;
+ }
+
+ .value {
+ font-size: 13px;
+ color: #333;
+ font-weight: 500;
+ text-align: right;
+ flex: 1;
+ }
+ }
+ }
+
+ .discharge-info {
+ .info-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 5px;
+ padding: 2px 0;
+
+ .label {
+ font-size: 12px;
+ color: #606266;
+ min-width: 50px;
+ }
+
+ .value {
+ font-size: 13px;
+ color: #333;
+ font-weight: 500;
+ text-align: right;
+ flex: 1;
+
+ &.time {
+ font-size: 12px;
+ color: #909399;
+ }
+ }
+ }
+ }
+ }
+
+ .pagination-section {
+ display: flex;
+ justify-content: center;
+ padding: 20px 0 0 0;
+ }
+ }
+}
+
+@media (max-width: 768px) {
+ .batch-process {
+ padding: 10px;
+
+ .page-header {
+ .header-actions {
+ flex-direction: column;
+ align-items: stretch;
+ }
+ }
+
+ .list-section {
+ .filter-section {
+ .filter-form {
+ ::v-deep .el-form-item {
+ width: 100%;
+ margin-right: 0;
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+ }
+}
+</style>
--
Gitblit v1.9.3