qx
qx
2025-05-30 47b9d49bf40010d0eba022379ab50ca47d021c62
qx
5个文件已修改
1个文件已添加
389 ■■■■■ 已修改文件
src/views/doctor/examination/index.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/diseasetypes/index.vue 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jmreport/jmreport/clinical.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reservation/career/index.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/comp/index.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/tijian/index.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/examination/index.vue
@@ -166,6 +166,7 @@
            <el-table-column label="检测结果" prop="pro_result">
            </el-table-column>
            <el-table-column label="参考范围" prop="ckfw"> </el-table-column>
             <el-table-column label="异常标志" prop="ycbz"> </el-table-column>
          </el-table>
        </div>
@@ -330,7 +331,7 @@
  },
  methods: {
    changRed({ row }) {
      if (row.ycbz != "" && row.ycbz != null && row.ycbz === "1") {
      if (row.ycbz != "" && row.ycbz != null && row.ycbz === 1) {
        // 变颜色的条件
        return {
          color: "red", // 这个return的就是样式 可以是color 也可以是backgroundColor
src/views/hosp/diseasetypes/index.vue
New file
@@ -0,0 +1,320 @@
<template>
  <div class="app-container">
    <el-row :gutter="24">
      <!-- 第一列:单选标本 -->
      <el-col :span="8" :xs="24">
        <el-form
          :model="queryParams"
          ref="queryForm"
          size="small"
          :inline="true"
          label-width="68px"
          style="height: 45px"
          @submit.native.prevent
        >
          <el-form-item label="项目名称" prop="tjh">
            <el-input
              v-model="queryParams.tjh"
              placeholder="请输入项目名称"
              clearable
              @keyup.enter.native="handleManual"
            />
          </el-form-item>
          <el-form-item>
            <el-button type="primary" size="mini" @click="handleManual">查询</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
          </el-form-item>
        </el-form>
        <!-- 标本单选表格(带多选框样式) -->
        <el-table
          border
          v-loading="loading"
          :data="filteredSpecimenData"
          height="478"
          style="width: 100%"
          ref="specimenTable"
          :row-key="row => row.value"
          @select="handleSpecimenSelect"
        >
          <el-table-column type="selection" width="40px" align="center" />
          <el-table-column label="序号" align="center" type="index" width="50px" />
          <el-table-column label="标本名称" align="center" prop="label" show-overflow-tooltip />
        </el-table>
      </el-col>
      <!-- 第二列:中间选中项目列表 -->
      <el-col :span="8" :xs="24">
        <el-form :model="form" size="small" :inline="true" label-width="68px" style="height: 45px" @submit.native.prevent />
        <el-table
          border
          v-loading="loading"
          :data="OnenewpacName"
          height="478"
          style="width: 100%"
        >
          <el-table-column label="已选项目列表" align="center" prop="proName" />
          <el-table-column label="操作" align="center" width="85">
            <template slot-scope="scope">
              <el-button size="mini" type="text" icon="el-icon-delete" @click="handledbelete(scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <div class="dialog-footer1" style="margin-top: 60px; text-align: center;">
          <el-button type="primary" @click="submitrighr">确认并保存</el-button>
          <el-button @click="cancell">取 消</el-button>
        </div>
      </el-col>
      <!-- 第三列:搜索 + 项目选择 -->
      <el-col :span="8" :xs="24">
        <el-form
          :model="queryParams1"
          ref="queryForm"
          size="small"
          :inline="true"
          v-show="showSearch"
          label-width="68px"
          style="height: 45px"
          @submit.native.prevent
        >
          <el-form-item label="项目名称" prop="proName">
            <el-input
              ref="inputName"
              v-model="queryParams1.proName"
              placeholder="请输入项目名称"
              clearable
              @keyup.enter.native="handleSearchFor"
              style="width: 140px"
            />
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleSearchFor">搜索</el-button>
          </el-form-item>
        </el-form>
        <el-table
          border
          v-loading="loading"
          ref="tre"
          :data="Treedata"
          @selection-change="handleChangesingle"
          height="478"
          style="width: 100%"
        >
          <el-table-column type="selection" width="40px" align="center" />
          <el-table-column label="项目名称" align="center" prop="proName" show-overflow-tooltip />
        </el-table>
      </el-col>
    </el-row>
  </div>
</template>
<script>
import { searchBiaoben, delBiaoben, editBiaoben } from "@/api/hosp/biaoben";
import { debounce } from 'lodash';
export default {
  name: "Part",
  data() {
    return {
      loading: false,
      OnenewpacName: [],
      Treedata: [],
      originalTreedata: [],
      queryParams: {
        tjh: '',
        tjCategory: null,
      },
      queryParams1: {
        proName: '',
      },
      form: {
        price: '',
      },
      showSearch: true,
      filteredSpecimenData: [],
      originalSpecimenData: [],
    };
  },
  dicts: ["sys_dict_specimen"],
  created() {
    this.fetchInitialBiaobenData();
    this.initializeSpecimenData();
    this.debouncedFetchBiaobenData = debounce(this.fetchBiaobenData, 300);
  },
  watch: {
    'dict.type.sys_dict_specimen': {
      handler(newVal) {
        if (newVal && newVal.length > 0) {
          console.log('标本字典数据加载:', newVal);
          this.originalSpecimenData = [...newVal];
          this.filteredSpecimenData = [...newVal];
        } else {
          console.warn('标本字典数据为空或未加载');
        }
      },
      deep: true,
      immediate: true,
    },
  },
  methods: {
    initializeSpecimenData() {
      if (this.dict?.type?.sys_dict_specimen) {
        this.originalSpecimenData = [...this.dict.type.sys_dict_specimen];
        this.filteredSpecimenData = [...this.originalSpecimenData];
        console.log('初始化标本数据:', this.originalSpecimenData);
      } else {
        this.$message.warning('标本数据未加载,请检查字典配置');
        this.originalSpecimenData = [];
        this.filteredSpecimenData = [];
      }
    },
    handleSearchFor() {
      const searchText = this.queryParams1.proName?.trim().toLowerCase() || '';
      if (searchText) {
        this.Treedata = this.originalTreedata.filter(item =>
          item.proName.toLowerCase().includes(searchText)
        );
        this.Treedata.length
          ? this.$message.success('查询成功')
          : this.$message.warning('未找到匹配的项目');
      } else {
        this.Treedata = [...this.originalTreedata];
        this.$message.info('已显示所有项目');
      }
      this.$refs.tre.clearSelection();
    },
    resetQuery() {
      this.$refs.queryForm.resetFields();
      this.queryParams.tjh = '';
      this.queryParams.tjCategory = null;
      this.OnenewpacName = [];
      this.filteredSpecimenData = [...this.originalSpecimenData];
      this.$refs.specimenTable.clearSelection();
      this.$message.success('已重置查询条件和标本数据');
    },
    handleManual() {
      const searchText = this.queryParams.tjh?.trim().toLowerCase() || '';
      this.filteredSpecimenData = searchText
        ? this.originalSpecimenData.filter(item => item.label.toLowerCase().includes(searchText))
        : [...this.originalSpecimenData];
      this.queryParams.tjCategory = null;
      this.OnenewpacName = [];
      this.$refs.specimenTable.clearSelection();
      this.$message[this.filteredSpecimenData.length ? 'success' : 'warning'](
        this.filteredSpecimenData.length ? '查询成功' : '未找到匹配的标本'
      );
    },
    handleSpecimenSelect(selection, row) {
      console.log('标本选择触发:', { selection, row });
      this.$refs.specimenTable.clearSelection();
      if (selection.includes(row)) {
        this.$refs.specimenTable.toggleRowSelection(row, true);
        if (this.queryParams.tjCategory !== row.value) {
          this.queryParams.tjCategory = row.value;
          console.log('选中的标本 value:', this.queryParams.tjCategory);
          this.debouncedFetchBiaobenData(row.value);
        }
      } else {
        this.queryParams.tjCategory = null;
        this.OnenewpacName = [];
        console.log('标本选择已清空');
      }
    },
    handleChangesingle(selection) {
      if (selection.length > 0) {
        selection.forEach(item => {
          if (!this.OnenewpacName.some(existing => existing.proId === item.proId)) {
            this.OnenewpacName.push({ ...item });
          }
        });
        this.$refs.tre.clearSelection();
      }
    },
    cancell() {
      this.openOne = false;
    },
    submitrighr() {
      if (!this.queryParams.tjCategory) {
        this.$message.error('请先选择一个标本');
        return;
      }
      if (!this.OnenewpacName.length) {
        this.$message.error('请至少选择一个项目');
        return;
      }
      const proIds = this.OnenewpacName.map(item => item.proId);
      const bblx = this.queryParams.tjCategory;
      this.loading = true;
      editBiaoben({ proIds, bblx })
        .then(() => {
          this.$message.success('保存成功');
          this.OnenewpacName = [];
          this.queryParams.tjCategory = null;
          this.$refs.specimenTable.clearSelection();
          this.loading = false;
        })
        .catch(error => {
          this.$message.error('保存失败');
          console.error(error);
          this.loading = false;
        });
    },
    handledbelete(row) {
      this.loading = true;
      delBiaoben({ proId: row.proId })
        .then(() => {
          this.OnenewpacName = this.OnenewpacName.filter(item => item.proId !== row.proId);
          this.$message.success('删除成功');
          this.loading = false;
        })
        .catch(error => {
          this.$message.error('删除失败');
          console.error(error);
          this.loading = false;
        });
    },
    fetchBiaobenData(bblx) {
      console.log('调用 searchBiaoben(中间表格),参数:', { bblx });
      this.loading = true;
      searchBiaoben({ bblx })
        .then(response => {
          this.OnenewpacName = response.data || [];
          this.loading = false;
        })
        .catch(error => {
          this.$message.error('获取标本数据失败');
          console.error(error);
          this.loading = false;
        });
    },
    fetchInitialBiaobenData() {
      console.log('调用 searchBiaoben(初始加载,右侧表格),参数: {}');
      this.loading = true;
      searchBiaoben({})
        .then(response => {
          this.originalTreedata = response.data || [];
          this.Treedata = [...this.originalTreedata];
          this.loading = false;
        })
        .catch(error => {
          this.$message.error('获取初始项目数据失败');
          console.error(error);
          this.loading = false;
        });
    },
  },
};
</script>
<style scoped>
.app-container {
  padding: 20px;
}
.dialog-footer1 {
  margin-top: 60px;
  text-align: center;
}
</style>
src/views/jmreport/jmreport/clinical.vue
@@ -40,7 +40,7 @@
        res +
        "/" +
        this.viewNum +
        "?tj_number=" +
        "?tjNumber=" +
        this.tj_number +
        "&token=Bearer " +
        getToken();
src/views/reservation/career/index.vue
@@ -127,8 +127,8 @@
    <!-- 添加或修改体检单位信息维护对话框 -->
    <div class="dia">
      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
        <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true">
      <el-dialog :title="title" :visible.sync="open" width="1100px" append-to-body>
        <el-form ref="form" :model="form" :rules="rules" label-width="106px" :inline="true">
                <el-form-item
            label="单位名称"
            prop="cnName"
@@ -194,7 +194,7 @@
              v-model="form.lsgx"
              placeholder="请选择隶属关系"
              clearable
              style="width: 183px"
              style="width: 202px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -210,7 +210,7 @@
              v-model="form.jjlx"
              placeholder="请选择经济类型"
              clearable
              style="width: 183px"
              style="width: 202px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -229,7 +229,7 @@
              v-model="form.hyfl"
              placeholder="请选择行业分类"
              clearable
              style="width: 183px"
              style="width: 202px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -245,7 +245,7 @@
              v-model="form.fxpg"
              placeholder="请选择风险评估"
              clearable
              style="width: 183px"
              style="width: 202px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -283,7 +283,7 @@
              v-model="form.areaName"
              placeholder="请选择行政区划名称"
              clearable
              style="width: 186px"
              style="width: 202px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
src/views/system/comp/index.vue
@@ -150,6 +150,12 @@
                <el-form-item label="签约金额" prop="signingPrice">
                  <el-input v-model="form.signingPrice" placeholder="请输入签约金额" />
                </el-form-item>
                 <el-form-item label="病种" prop="bz" v-if="dwlxs == 1">
                <el-select v-model="form.bz" placeholder="请选择病种" style="width: 180px" clearable>
                  <el-option v-for="dict in dict.type.reservation_pay_type" :key="dict.value" :label="dict.label"
                    :value="dict.value" />
                </el-select>
              </el-form-item>
              </el-form>
              <el-row :gutter="10" class="mb8">
                <el-col :span="1.5">
@@ -162,7 +168,7 @@
                </el-col>
              </el-row>
              <el-table ref="tb" v-loading="loading" :data="deptList" @selection-change="handleSelection" border
                style="width: 320px" height="350">
                style="width: 320px" height="300">
                <el-table-column type="selection" width="40px" align="center" />
                <el-table-column label="套餐名称" align="center" prop="dwDeptName" />
              </el-table>
@@ -201,6 +207,7 @@
                    :value="dict.value" />
                </el-select>
              </el-form-item>
              <el-form-item label="年龄段">
                <el-col :span="7">
                  <el-input v-model="forms.ltAge" style="width: 53px" />
@@ -563,14 +570,14 @@
            <el-input
              v-model="form.cnName"
              placeholder="请输入中文名称"
              style="width: 476px"
              style="width:510px"
            />
          </el-form-item>
          <el-form-item label="统一信用代码" prop="taxNumber">
            <el-input
              v-model="form.taxNumber"
              placeholder="请输入统一信用代码"
              style="width: 476px"
              style="width: 510px"
            />
          </el-form-item>
          <el-form-item label="法人代表" prop="legalPerson">
@@ -597,14 +604,14 @@
            <el-input
              v-model="form.registerAddress"
              placeholder="请输入注册地址"
              style="width: 1058px"
              style="width: 1128px"
            />
          </el-form-item>
          <el-form-item label="通讯地址" prop="mailingAddress">
            <el-input
              v-model="form.mailingAddress"
              placeholder="请输入通讯地址"
              style="width: 1058px"
              style="width: 1128px"
            />
          </el-form-item>
          <el-form-item label="所属地区" prop="ssdq" v-if="form.dwlx == 1">
@@ -624,7 +631,7 @@
              v-model="form.lsgx"
              placeholder="请选择隶属关系"
              clearable
              style="width: 186px"
              style="width: 198px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -640,7 +647,7 @@
              v-model="form.jjlx"
              placeholder="请选择经济类型"
              clearable
              style="width: 186px"
              style="width: 199px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -659,7 +666,7 @@
              v-model="form.hyfl"
              placeholder="请选择行业分类"
              clearable
              style="width: 186px"
              style="width: 199px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -675,7 +682,7 @@
              v-model="form.fxpg"
              placeholder="请选择风险评估"
              clearable
              style="width: 186px"
              style="width: 198px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -685,18 +692,19 @@
              />
            </el-select>
          </el-form-item>
          <br/>
          <el-form-item label="开户银行" prop="bankAccount">
            <el-input
              v-model="form.bankAccount"
              placeholder="请输入开户银行"
              style="width: 476px"
              style="width: 510px"
            />
          </el-form-item>
          <el-form-item label="银行账户" prop="countNum">
            <el-input
              v-model="form.countNum"
              placeholder="请输入银行账户"
              style="width: 476px"
              style="width: 510px"
            />
          </el-form-item>
          <el-form-item label="联系邮箱" prop="email">
@@ -715,7 +723,7 @@
              v-model="form.areaName"
              placeholder="请选择行政区划名称"
              clearable
              style="width: 186px"
              style="width: 198px"
            >
              <el-option
                v-for="dict in dict.type.sys_yes_no"
@@ -823,6 +831,7 @@
      singleg: true,
      singlegg: true,
      isfalse: false,
      dwlxs:null,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
@@ -1231,6 +1240,7 @@
      const drugManufacturerId = row.drugManufacturerId || this.ids;
      getComp(drugManufacturerId).then((response) => {
        this.form = response.data;
         this.form.dwlx= Number(response.data.dwlx)
        this.open = true;
        this.title = "修改体检单位信息维护";
      });
@@ -1240,7 +1250,7 @@
      this.opens = true;
      this.groupingList = [];
      this.dwlxs = this.form.dwlx
      if (this.form.drugManufacturerId) {
        this.beCurrentDept();
      }
src/views/system/tijian/index.vue
@@ -285,7 +285,8 @@
      <el-tabs type="border-card" style="height: 560px; margin: 0 10px; width: 100%" v-model="activeNames"
        @tab-click="handleClick">
        <el-tab-pane label="套餐" name="first">
          <el-form :model="queryParam" ref="queryForm" size="small" :inline="true" v-if="showSearch" label-width="auto" @submit.native.prevent="handle">
          <el-form :model="queryParam" ref="queryForm" size="small" :inline="true" v-if="showSearch" label-width="auto"
            @submit.native.prevent="handle">
            <el-form-item label="套餐名称" prop="pacName">
              <el-input v-model="queryParam.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handle" />
            </el-form-item>
@@ -957,6 +958,7 @@
      // valueUrl: "ws://192.168.1.3:6789/websocket",
      valueUrl: "ws://127.0.0.1:6789/websocket",
      valueUrls: "ws://127.0.0.1:6789/websocket",
      // valueUrls: "ws://"+getIp() +":6789/websocket",
      webSocket: null,
      // 身份证需要
@@ -1926,11 +1928,15 @@
    // 最新使用webSocket通信
    readCardWebSocket(resultObj) {
      let _this = this;
      const isChineseChar = (char) => /[\u4E00-\u9FA5]/.test(char)
      if (resultObj.code === 200 && resultObj.data.name != null) {
        //回显相关数据
        _this.form.cusName = resultObj.data.name;
        _this.form.cusSex = resultObj.data.sex == "0" ? "女" : "男";
        if (isChineseChar(resultObj.data.sex)) {
          _this.form.cusSex = resultObj.data.sex == "女" ? 1 : 0
        } else {
          _this.form.cusSex = resultObj.data.sex;
        }
        _this.form.cusNational = resultObj.data.mz;
        _this.form.cusBrithday = resultObj.data.csrq;
        if (_this.form.cusBrithday) {
@@ -1985,7 +1991,7 @@
          //回显相关数据
          _this.form.cusName = resultObj.resultContent.partyName;
          _this.form.cusSex =
            resultObj.resultContent.gender == "0" ? "女" : "男";
            resultObj.resultContent.gender;
          _this.form.cusNational = resultObj.resultContent.nation;
          _this.form.cusBrithday = resultObj.resultContent.bornDay;
          if (_this.form.cusBrithday) {