WXL (wul)
5 小时以前 01d3b0dd65574a8b6ff6ff66b0474f2de82daa6a
src/views/Satisfaction/configurationmyd/batch.vue
@@ -14,11 +14,7 @@
          >
            批量提交处理
          </el-button>
          <el-button
            type="warning"
            icon="el-icon-back"
            @click="handleGoBack"
          >
          <el-button type="warning" icon="el-icon-back" @click="handleGoBack">
            返回异常列表
          </el-button>
        </div>
@@ -70,10 +66,7 @@
              >
                筛选
              </el-button>
              <el-button
                icon="el-icon-refresh"
                @click="handleResetFilter"
              >
              <el-button icon="el-icon-refresh" @click="handleResetFilter">
                重置
              </el-button>
            </el-form-item>
@@ -88,11 +81,7 @@
          @selection-change="handleSelectionChange"
          class="exception-table"
        >
          <el-table-column
            type="selection"
            width="55"
            align="center"
          />
          <el-table-column type="selection" width="55" align="center" />
          <el-table-column
            label="序号"
@@ -125,11 +114,7 @@
            </template>
          </el-table-column>
          <el-table-column
            label="患者信息"
            width="300"
            align="center"
          >
          <el-table-column label="患者信息" width="300" align="center">
            <template slot-scope="{ row }">
              <div class="patient-info">
                <div class="patient-item">
@@ -138,7 +123,9 @@
                </div>
                <div class="patient-item">
                  <span class="label">性别:</span>
                  <span class="value">{{ row.gender === 1 ? '男' : '女' }}</span>
                  <span class="value">{{
                    row.gender === 1 ? "男" : "女"
                  }}</span>
                </div>
                <div class="patient-item">
                  <span class="label">年龄:</span>
@@ -152,11 +139,7 @@
            </template>
          </el-table-column>
          <el-table-column
            label="出院信息"
            width="250"
            align="center"
          >
          <el-table-column label="出院信息" width="250" align="center">
            <template slot-scope="{ row }">
              <div class="discharge-info">
                <div class="info-item">
@@ -182,10 +165,7 @@
            align="center"
          >
            <template slot-scope="{ row }">
              <el-tag
                :type="getStatusTagType(row.processStatus)"
                effect="dark"
              >
              <el-tag :type="getStatusTagType(row.processStatus)" effect="dark">
                {{ getStatusText(row.processStatus) }}
              </el-tag>
            </template>
@@ -193,7 +173,7 @@
          <el-table-column
            label="操作"
            width="180"
            width="210"
            align="center"
            fixed="right"
          >
@@ -302,17 +282,15 @@
            :file-list="fileList"
          >
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">支持上传图片、文档等附件,单个文件不超过10MB</div>
            <div slot="tip" class="el-upload__tip">
              支持上传图片、文档等附件,单个文件不超过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 type="primary" @click="submitProcess" :loading="processing">
          提交处理
        </el-button>
      </span>
@@ -384,14 +362,31 @@
        </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',
  name: "BatchProcess",
  components: {
    DetailsAnomaly,
  },
  data() {
    return {
      // 添加以下数据
      detailDialogVisible: false,
      selectedRecordId: null,
      detailDialogTitle: "异常反馈详情",
      // 当前处理的异常ID
      currentExceptionId: null,
@@ -400,10 +395,10 @@
      // 过滤参数
      filterParams: {
        deptId: '',
        status: '',
        deptId: "",
        status: "",
        pageNum: 1,
        pageSize: 10
        pageSize: 10,
      },
      // 加载状态
@@ -413,16 +408,16 @@
      // 科室列表
      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: '内分泌科' }
        { 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: "内分泌科" },
      ],
      // 异常列表数据
@@ -432,28 +427,33 @@
      // 处理对话框
      processDialogVisible: false,
      processForm: {
        status: '',
        status: "",
        reportDepts: [],
        remark: ''
        remark: "",
      },
      processRules: {
        status: [
          { required: true, message: '请选择处理状态', trigger: 'change' }
          { required: true, message: "请选择处理状态", trigger: "change" },
        ],
        remark: [
          { required: true, message: '请输入处理备注', trigger: 'blur' },
          { min: 5, max: 500, message: '备注长度在 5 到 500 个字符', trigger: 'blur' }
        ]
          { required: true, message: "请输入处理备注", trigger: "blur" },
          {
            min: 5,
            max: 500,
            message: "备注长度在 5 到 500 个字符",
            trigger: "blur",
          },
        ],
      },
      fileList: [],
      // 批量处理对话框
      batchDialogVisible: false,
      batchProcessForm: {
        status: '',
        status: "",
        reportDepts: [],
        remark: ''
      }
        remark: "",
      },
    };
  },
@@ -467,121 +467,125 @@
      this.loading = true;
      try {
        // Mock 数据
        await new Promise(resolve => {
        await new Promise((resolve) => {
          setTimeout(() => {
            this.exceptionList = [
              {
                id: 1,
                responsibilityDept: '心血管内科',
                unsatisfactoryDetail: '医生查房时间太短,沟通不够充分,对病情解释不够详细',
                patientName: '张先生',
                responsibilityDept: "心血管内科",
                unsatisfactoryDetail:
                  "医生查房时间太短,沟通不够充分,对病情解释不够详细",
                patientName: "张先生",
                gender: 1,
                age: 45,
                phone: '138****1234',
                dischargeDept: '心血管内科',
                dischargeWard: '内科一病区',
                fillTime: '2024-01-15 10:30:25',
                phone: "138****1234",
                dischargeDept: "心血管内科",
                dischargeWard: "内科一病区",
                fillTime: "2024-01-15 10:30:25",
                processStatus: 0,
                questionnaireId: 1001
                questionnaireId: 1001,
              },
              {
                id: 2,
                responsibilityDept: '神经内科',
                unsatisfactoryDetail: '护士打针技术不佳,扎了三次才成功,且态度不够耐心',
                patientName: '李女士',
                responsibilityDept: "神经内科",
                unsatisfactoryDetail:
                  "护士打针技术不佳,扎了三次才成功,且态度不够耐心",
                patientName: "李女士",
                gender: 0,
                age: 38,
                phone: '139****5678',
                dischargeDept: '神经内科',
                dischargeWard: '内科二病区',
                fillTime: '2024-01-14 16:20:10',
                phone: "139****5678",
                dischargeDept: "神经内科",
                dischargeWard: "内科二病区",
                fillTime: "2024-01-14 16:20:10",
                processStatus: 0,
                questionnaireId: 1002
                questionnaireId: 1002,
              },
              {
                id: 3,
                responsibilityDept: '普外科',
                unsatisfactoryDetail: '术后换药不及时,伤口疼痛时没有及时处理',
                patientName: '王先生',
                responsibilityDept: "普外科",
                unsatisfactoryDetail: "术后换药不及时,伤口疼痛时没有及时处理",
                patientName: "王先生",
                gender: 1,
                age: 52,
                phone: '137****9012',
                dischargeDept: '普外科',
                dischargeWard: '外科一病区',
                fillTime: '2024-01-13 09:15:45',
                phone: "137****9012",
                dischargeDept: "普外科",
                dischargeWard: "外科一病区",
                fillTime: "2024-01-13 09:15:45",
                processStatus: 1,
                questionnaireId: 1003
                questionnaireId: 1003,
              },
              {
                id: 4,
                responsibilityDept: '骨科',
                unsatisfactoryDetail: '康复指导不够专业,对恢复过程描述不清楚',
                patientName: '刘女士',
                responsibilityDept: "骨科",
                unsatisfactoryDetail: "康复指导不够专业,对恢复过程描述不清楚",
                patientName: "刘女士",
                gender: 0,
                age: 65,
                phone: '136****3456',
                dischargeDept: '骨科',
                dischargeWard: '外科二病区',
                fillTime: '2024-01-12 14:40:30',
                phone: "136****3456",
                dischargeDept: "骨科",
                dischargeWard: "外科二病区",
                fillTime: "2024-01-12 14:40:30",
                processStatus: 0,
                questionnaireId: 1004
                questionnaireId: 1004,
              },
              {
                id: 5,
                responsibilityDept: '妇产科',
                unsatisfactoryDetail: '产前检查排队时间过长,等待期间没有休息座位',
                patientName: '陈女士',
                responsibilityDept: "妇产科",
                unsatisfactoryDetail:
                  "产前检查排队时间过长,等待期间没有休息座位",
                patientName: "陈女士",
                gender: 0,
                age: 28,
                phone: '135****7890',
                dischargeDept: '妇产科',
                dischargeWard: '妇产科病区',
                fillTime: '2024-01-11 11:25:15',
                phone: "135****7890",
                dischargeDept: "妇产科",
                dischargeWard: "妇产科病区",
                fillTime: "2024-01-11 11:25:15",
                processStatus: 2,
                questionnaireId: 1005
                questionnaireId: 1005,
              },
              {
                id: 6,
                responsibilityDept: '儿科',
                unsatisfactoryDetail: '儿童用药剂量交代不清晰,用药注意事项没有说明',
                patientName: '赵宝宝',
                responsibilityDept: "儿科",
                unsatisfactoryDetail:
                  "儿童用药剂量交代不清晰,用药注意事项没有说明",
                patientName: "赵宝宝",
                gender: 1,
                age: 5,
                phone: '134****1234',
                dischargeDept: '儿科',
                dischargeWard: '儿科病区',
                fillTime: '2024-01-10 15:50:20',
                phone: "134****1234",
                dischargeDept: "儿科",
                dischargeWard: "儿科病区",
                fillTime: "2024-01-10 15:50:20",
                processStatus: 0,
                questionnaireId: 1006
                questionnaireId: 1006,
              },
              {
                id: 7,
                responsibilityDept: '急诊科',
                unsatisfactoryDetail: '急诊等待时间过长,病情没有得到及时评估',
                patientName: '孙先生',
                responsibilityDept: "急诊科",
                unsatisfactoryDetail: "急诊等待时间过长,病情没有得到及时评估",
                patientName: "孙先生",
                gender: 1,
                age: 40,
                phone: '133****5678',
                dischargeDept: '急诊科',
                dischargeWard: '急诊病区',
                fillTime: '2024-01-09 10:15:40',
                phone: "133****5678",
                dischargeDept: "急诊科",
                dischargeWard: "急诊病区",
                fillTime: "2024-01-09 10:15:40",
                processStatus: 0,
                questionnaireId: 1007
                questionnaireId: 1007,
              },
              {
                id: 8,
                responsibilityDept: '呼吸内科',
                unsatisfactoryDetail: '医生开药较多,费用较高,没有说明必要性',
                patientName: '周女士',
                responsibilityDept: "呼吸内科",
                unsatisfactoryDetail: "医生开药较多,费用较高,没有说明必要性",
                patientName: "周女士",
                gender: 0,
                age: 55,
                phone: '132****9012',
                dischargeDept: '呼吸内科',
                dischargeWard: '内科一病区',
                fillTime: '2024-01-08 13:30:55',
                phone: "132****9012",
                dischargeDept: "呼吸内科",
                dischargeWard: "内科一病区",
                fillTime: "2024-01-08 13:30:55",
                processStatus: 1,
                questionnaireId: 1008
              }
                questionnaireId: 1008,
              },
            ];
            this.total = this.exceptionList.length;
            resolve();
@@ -595,20 +599,28 @@
    // 获取状态标签类型
    getStatusTagType(status) {
      switch (status) {
        case 0: return 'warning'; // 待处理
        case 1: return 'primary'; // 处理中
        case 2: return 'success'; // 已处理
        default: return 'info';
        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 '未知';
        case 0:
          return "待处理";
        case 1:
          return "处理中";
        case 2:
          return "已处理";
        default:
          return "未知";
      }
    },
@@ -621,23 +633,23 @@
    // 重置筛选
    handleResetFilter() {
      this.filterParams = {
        deptId: '',
        status: '',
        deptId: "",
        status: "",
        pageNum: 1,
        pageSize: 10
        pageSize: 10,
      };
      this.loadExceptionList();
    },
    // 处理选择变化
    handleSelectionChange(selection) {
      this.selectedExceptionIds = selection.map(item => item.id);
      this.selectedExceptionIds = selection.map((item) => item.id);
    },
    // 处理批量提交
    handleBatchSubmit() {
      if (this.selectedExceptionIds.length === 0) {
        this.$message.warning('请先选择要处理的异常反馈');
        this.$message.warning("请先选择要处理的异常反馈");
        return;
      }
      this.batchDialogVisible = true;
@@ -645,26 +657,31 @@
    // 返回异常列表
    handleGoBack() {
      this.$router.push('/satisfaction/exception/list');
      this.$router.push("/satisfaction/exception/list");
    },
    // 查看详情
    handleViewDetail(row) {
      this.$router.push({
        path: '/satisfaction/exception/detail',
        query: {
          id: row.questionnaireId
        }
      });
      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: ''
        remark: "",
      };
      this.processDialogVisible = true;
    },
@@ -676,9 +693,9 @@
          this.processing = true;
          try {
            // Mock API调用
            await new Promise(resolve => setTimeout(resolve, 1000));
            await new Promise((resolve) => setTimeout(resolve, 1000));
            this.$message.success('处理提交成功');
            this.$message.success("处理提交成功");
            this.processDialogVisible = false;
            this.loadExceptionList();
          } finally {
@@ -695,9 +712,11 @@
          this.batchProcessing = true;
          try {
            // Mock API调用
            await new Promise(resolve => setTimeout(resolve, 1500));
            await new Promise((resolve) => setTimeout(resolve, 1500));
            this.$message.success(`已批量处理 ${this.selectedExceptionIds.length} 条异常反馈`);
            this.$message.success(
              `已批量处理 ${this.selectedExceptionIds.length} 条异常反馈`
            );
            this.batchDialogVisible = false;
            this.selectedExceptionIds = [];
            this.loadExceptionList();
@@ -723,11 +742,11 @@
    // 文件上传相关方法
    handlePreview(file) {
      console.log('预览文件:', file);
      console.log("预览文件:", file);
    },
    handleRemove(file, fileList) {
      console.log('移除文件:', file, fileList);
      console.log("移除文件:", file, fileList);
    },
    beforeRemove(file) {
@@ -735,9 +754,13 @@
    },
    handleExceed(files, fileList) {
      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
    }
  }
      this.$message.warning(
        `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
          files.length + fileList.length
        } 个文件`
      );
    },
  },
};
</script>
@@ -750,7 +773,7 @@
  .page-header {
    margin-bottom: 20px;
    padding: 20px;
    background: linear-gradient(135deg, #5788FE 0%, #66b1ff 100%);
    background: linear-gradient(135deg, #5788fe 0%, #66b1ff 100%);
    border-radius: 8px;
    color: white;