wwl
2025-03-26 ccf6f215d9689b6daf0663479468fca155f2049e
快捷建议选择
1个文件已修改
156 ■■■■■ 已修改文件
src/views/doctor/checkAll/index.vue 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/checkAll/index.vue
@@ -740,10 +740,10 @@
        <!-- 动态建议组 -->
        <div v-for="(advice, index) in newItem.map" :key="index" class="advice-group">
          <el-form-item label="建议标题" :prop="'map.' + index + '.bt'">
            <el-input v-model="advice.bt" placeholder="请输入建议标题" clearable></el-input>
            <el-input v-model="advice.bt" placeholder="请输入建议标题" clearable @focus="tan"></el-input>
          </el-form-item>
          <el-form-item label="建议内容" :prop="'map.' + index + '.nr'">
            <el-input v-model="advice.nr" type="textarea" rows="3" placeholder="请输入建议内容" resize="none"></el-input>
            <el-input v-model="advice.nr" type="textarea" rows="3" placeholder="请输入建议内容" resize="none" @focus="tan"></el-input>
          </el-form-item>
          <el-button v-if="index > 0" type="danger" size="small" @click="removeAdvice(index)"
            style="margin-left: 100px; margin-bottom: 10px;">删除</el-button>
@@ -756,6 +756,36 @@
      <span slot="footer" class="dialog-footer">
        <el-button @click="addNewDialogVisible = false">取消</el-button>
        <el-button type="primary" @click="submitNewItem">确定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="快捷建议选择" :visible.sync="showjianyi" width="1000px" class="custom-dialog">
      <!-- 添加筛选下拉框 -->
      <div style="margin-bottom: 15px;">
        <el-form :inline="true">
          <el-form-item label="科室">
            <el-select v-model="queryParams1.ks" placeholder="请选择或输入科室" clearable filterable allow-create
              style="width: 200px" @change="filterAdvices(true)">
              <el-option v-for="dept in deptList" :key="dept" :label="dept" :value="dept" />
            </el-select>
          </el-form-item>
        </el-form>
      </div>
      <el-table :data="advicerulesList" ref="adviceTable" border highlight-current-row
        @current-change="handleCurrentChangeAdvice" style="max-height: 400px; overflow-y: auto;">
        <el-table-column label="科室" prop="ks" width="100" align="center" />
        <el-table-column label="建议名称" prop="jymc" align="center" />
        <el-table-column label="建议内容" prop="jynr" align="center" />
      </el-table>
      <!-- 分页组件 -->
      <pagination v-show="total1 > 0" :total="total1" :page.sync="queryParams1.pageNum"
        :limit.sync="queryParams1.pageSize" @pagination="filterAdvices(false)" />
      <span slot="footer" class="dialog-footer">
        <el-button @click="showjianyi = false">取消</el-button>
        <el-button type="primary" @click="applySelectedAdvice" :disabled="!selectedAdvice">确定</el-button>
      </span>
    </el-dialog>
    <Packages ref="bbb" :baogao="baogao" />
@@ -804,7 +834,9 @@
import { getconfigKey } from "@/api/login";
import moment from "moment";
import { get } from "sortablejs";
import {
  listAdvicerules,
} from "@/api/hosp/advicerules";
export default {
  components: {
    ViewPdf,
@@ -829,6 +861,11 @@
  name: "checkAll",
  data() {
    return {
      deptList: [], // 去重后的科室列表
      selectedAdvice: null,
      activeAdviceIndex: 0,
      advicerulesList: [],
      showjianyi: false,
      addNewDialogVisible: false,
      newItem: {
        parentName: '',   // 项目分类,对应模板中的 parentName
@@ -973,6 +1010,12 @@
        tjCategory: undefined,
        payType: undefined,
      },
      total1: 0,
      queryParams1: {
        pageNum: 1,
        pageSize: 10,
        ks: ''
      },
      status1: 0, // 0展示异常1展示项目情况
      viewportHeight: 0,
      expends: [],
@@ -993,6 +1036,76 @@
    });
  },
  methods: {
    handleCurrentChangeAdvice(currentRow) {
      this.selectedAdvice = currentRow; // 存储选中的建议项
    },
    applySelectedAdvice() {
      if (this.selectedAdvice) {
        this.$set(this.newItem.map, this.activeAdviceIndex, {
          bt: this.selectedAdvice.jymc, // 建议名称赋值给标题
          nr: this.selectedAdvice.jynr  // 建议内容赋值给内容
        });
        this.showjianyi = false; // 关闭弹窗
        this.selectedAdvice = null; // 清空选中项
      } else {
        this.$message.warning('请先选择一条建议');
      }
    },
    handleSelectionChange(selection) {
      console.log(selection);
    },
    tan(event) {
      this.activeAdviceIndex = event.target.closest('.advice-group')
        ? Array.from(event.target.closest('.el-form').querySelectorAll('.advice-group'))
          .indexOf(event.target.closest('.advice-group'))
        : 0; // 获取当前建议组的索引
      // 确保 projectCategories 已加载
      if (!this.projectCategories || this.projectCategories.length === 0) {
        cSWebGetPro(this.tjNumber).then((res) => {
          if (res.data && Array.isArray(res.data)) {
            this.projectCategories = res.data;
            // 提取去重后的科室列表
            this.deptList = [...new Set(this.projectCategories.map(item => item.deptName))].filter(Boolean);
          } else {
            this.$message.warning('未获取到项目分类数据');
            this.projectCategories = [];
            this.deptList = [];
          }
        }).catch((error) => {
          console.error('获取项目分类失败:', error);
          this.$message.error('获取项目分类失败');
          this.projectCategories = [];
          this.deptList = [];
        });
      } else {
        // 如果 projectCategories 已加载,直接更新 deptList
        this.deptList = [...new Set(this.projectCategories.map(item => item.deptName))].filter(Boolean);
      }
      // 重置分页参数
      this.queryParams1.pageNum = 1;
      this.queryParams1.pageSize = 10;
      // 加载快捷建议列表
      this.filterAdvices();
      this.showjianyi = true;
    },
    // 下拉框筛选快捷建议(包含分页逻辑)
    filterAdvices(resetPage = false) {
      if (resetPage) {
        this.queryParams1.pageNum = 1; // 切换科室时重置页码为 1
      }
      listAdvicerules(this.queryParams1).then((response) => {
        this.advicerulesList = response.rows;
        this.total1 = response.total;
      }).catch((error) => {
        console.error('筛选快捷建议失败:', error);
        this.$message.error('筛选快捷建议失败');
      });
    },
    submitNewItem() {
      const data = {
        tjh: this.tableAll.tjNumber, // 体检号,从 tableAll 中获取
@@ -1046,6 +1159,10 @@
    },
    handleCategoryChange(value) {
      const selectedCategory = this.projectCategories.find(item => item.proName === value);
      console.log(this.projectCategories, selectedCategory);
      this.queryParams1.ks = selectedCategory.deptName || '';
      if (value) {
        this.newItem.jcxm = value; // 将选择的项目分类赋值给检测项目
      }
@@ -2292,10 +2409,20 @@
  width: 100%;
  display: flex;
  justify-content: center;
  /* 确保分页器整体居中 */
  align-items: center;
  /* 垂直居中 */
  margin-top: 15px;
  /* 与表格的间距 */
}
.pag1 {
  width: 30%;
  width: auto;
  /* 移除固定宽度,让分页器根据内容自适应 */
  min-width: 300px;
  /* 设置最小宽度,确保分页器不会太窄 */
  text-align: center;
  /* 确保分页器内部元素居中 */
}
.dialog-footers {
@@ -2462,4 +2589,23 @@
    }
  }
}
</style>
.dialog-pager {
  display: flex;
  justify-content: center;
  /* 水平居中 */
  align-items: center;
  /* 垂直居中 */
  margin-top: 15px;
  /* 与表格的间距 */
  padding: 0 20px;
  /* 增加内边距,避免过于贴边 */
  box-sizing: border-box;
  /* 确保内边距不影响宽度 */
}
// .dialog-pager-inner {
//   width: auto; /* 自适应宽度 */
//   min-width: 300px; /* 设置最小宽度,确保分页器不会太窄 */
//   text-align: center; /* 确保分页器内部元素居中 */
// }</style>