qinxianzhangyao
2024-07-10 d22eb1ad8827b428af91e44eaeba2d912bfeebd0
src/views/hosp/history/index.vue
@@ -2,32 +2,107 @@
  <div class="app-container">
    <div class="hist1">
      <div class="hist2">
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
        <el-form
          :model="queryParams"
          ref="queryForm"
          size="small"
          :inline="true"
          v-show="showSearch"
          label-width="68px"
        >
          <el-form-item label="姓名" prop="name">
            <el-input v-model="queryParams.name" placeholder="请输入客户名" clearable @keyup.enter.native="handleQuery" style="width:130px"/>
            <el-input
              v-model="queryParams.name"
              placeholder="请输入客户名"
              clearable
              @keyup.enter.native="handleQuery"
              style="width: 130px"
            />
          </el-form-item>
          <el-form-item label="体检号" prop="tjNum">
            <el-input ref="inputName" v-model="queryParams.tjNum" placeholder="请输入体检号" style="width: 170px" clearable @keyup.enter.native="handleQuery"/>
            <el-input
              ref="inputName"
              v-model="queryParams.tjNum"
              placeholder="请输入体检号"
              style="width: 170px"
              clearable
              @keyup.enter.native="handleQuery"
              @blur="hb"
            />
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            <el-button
              type="primary"
              icon="el-icon-search"
              size="mini"
              @click="handleQuery"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
              >重置</el-button
            >
          </el-form-item>
        </el-form>
        <el-table :row-class-name="tableRowClassName" height="650px" v-loading="loading" :data="orderList" ref="multipleTable" @selection-change="handleSelectionChange" border style="width: 95%">
        <el-table
          :row-class-name="tableRowClassName"
          height="650px"
          v-loading="loading"
          :data="orderList"
          ref="multipleTable"
          @selection-change="handleSelectionChange"
          border
          style="width: 95%"
        >
          <el-table-column type="selection" width="40px" align="center" />
          <el-table-column label="序号" align="center" prop="newID" width="50px" :show-overflow-tooltip="true" fixed="left"/>
          <el-table-column label="姓名" align="center" prop="tjCustomerName" width="110px" :show-overflow-tooltip="true"/>
          <el-table-column label="性别" align="center" prop="tjCustomerSex" width="55px" :show-overflow-tooltip="true">
          <el-table-column
            label="序号"
            align="center"
            prop="newID"
            width="50px"
            :show-overflow-tooltip="true"
            fixed="left"
          />
          <el-table-column
            label="姓名"
            align="center"
            prop="tjCustomerName"
            width="110px"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="性别"
            align="center"
            prop="tjCustomerSex"
            width="55px"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <span v-if="scope.row.tjCustomerSex == '0'">男</span>
              <span v-if="scope.row.tjCustomerSex == '1'">女</span>
              <span v-if="scope.row.tjCustomerSex == '2'">未知</span>
            </template>
          </el-table-column>
          <el-table-column label="电话" align="center" prop="tjCustomerPhone" width="120px" :show-overflow-tooltip="true"/>
          <el-table-column label="年龄" align="center" prop="tjCustomerAge" width="70" :show-overflow-tooltip="true"
          <el-table-column
            label="电话"
            align="center"
            prop="tjCustomerPhone"
            width="120px"
            :show-overflow-tooltip="true"
          />
          <el-table-column label="年龄单位" align="center" prop="ageUnit" width="80" :show-overflow-tooltip="true">
          <el-table-column
            label="年龄"
            align="center"
            prop="tjCustomerAge"
            width="70"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="年龄单位"
            align="center"
            prop="ageUnit"
            width="80"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.dict_ageunit"
@@ -35,7 +110,13 @@
              />
            </template>
          </el-table-column>
          <el-table-column label="职业" align="center" prop="career" width="120" :show-overflow-tooltip="true">
          <el-table-column
            label="职业"
            align="center"
            prop="career"
            width="120"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.dict_job"
@@ -57,278 +138,7 @@
        </div>
      </div>
      <div class="hist3">
        <span class="txt">问诊信息</span>
        <el-form
          ref="form"
          :model="form"
          :rules="rules"
          label-width="100px"
          :inline="true"
          size="mini"
        >
          <el-collapse class="coll" v-model="activeName" accordion>
            <el-collapse-item
              class="coll"
              title="基本信息"
              name="1"
              style="width: 900px; font-weight: 600"
            >
              <div style="width: 900px">
                <el-form-item label="姓名" prop="cusName">
                  <el-input v-model="form.cusName" placeholder="请输入姓名" />
                </el-form-item>
                <el-form-item label="职业" prop="work">
                  <el-select
                  filterable
                    v-model="form.work"
                    placeholder="请选择职业"
                    clearable
                    style="width: 150px"
                  >
                    <el-option
                      v-for="dict in dict.type.tj_work"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    />
                  </el-select>
                </el-form-item>
                <el-form-item label="工作状态" prop="workStatus">
                  <el-select
                  filterable
                    v-model="form.workStatus"
                    placeholder="请选择工作状态"
                    clearable
                    style="width: 150px"
                  >
                    <el-option
                      v-for="dict in dict.type.tj_work_status"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    />
                  </el-select>
                </el-form-item>
                <el-form-item label="既往病史" prop="medicalHistory">
                  <el-input
                    type="textarea"
                    rows="4"
                    v-model="form.medicalHistory"
                    placeholder="请输入既往病史"
                    style="width: 700px"
                  />
                </el-form-item>
              </div>
            </el-collapse-item>
            <el-collapse-item title="月经史" name="2" v-show="sex">
              <div style="width: 900px">
                <el-form-item label="初潮(岁)" prop="chuchao">
                  <el-input v-model="form.chuchao" style="width: 70px" />
                </el-form-item>
                <el-form-item label="经期" prop="jingqi">
                  <el-input v-model="form.jingqi" style="width: 70px" />天
                </el-form-item>
                <el-form-item label="周期" prop="zhouqi">
                  <el-input v-model="form.zhouqi" style="width: 70px" />天
                </el-form-item>
                <el-form-item label="末次月经" prop="mociage">
                  <el-input v-model="form.mociage" style="width: 100px" />
                </el-form-item>
              </div>
            </el-collapse-item>
            <el-collapse-item title="生育史" name="3" v-show="sex">
              <div style="width: 900px">
                <el-form-item label="现有子女(人)" prop="zinv">
                  <el-input v-model="form.zinv" style="width: 70px" />
                </el-form-item>
                <el-form-item label="流产(次)" prop="liuchan">
                  <el-input v-model="form.liuchan" style="width: 70px" />
                </el-form-item>
                <el-form-item label="早产(次)" prop="zaochan">
                  <el-input v-model="form.zaochan" style="width: 70px" />
                </el-form-item>
                <el-form-item label="死产(次)" prop="sichan">
                  <el-input v-model="form.sichan" style="width: 70px" />
                </el-form-item>
                <el-form-item label="异常胎(次)" prop="yichangtai">
                  <el-input v-model="form.yichangtai" style="width: 70px" />
                </el-form-item>
              </div>
            </el-collapse-item>
            <el-collapse-item title="烟酒史" name="4">
              <div style="width: 900px">
                <el-form-item label="是否吸烟" prop="xiyan">
                  <!-- <el-input v-model="form.xiyanpinlv" placeholder="请输入吸烟频率" /> -->
                  <el-select
                  filterable
                    v-model="form.xiyan"
                    placeholder="请选择是否吸烟"
                    clearable
                    style="width: 150px"
                  >
                    <el-option
                      v-for="dict in dict.type.tj_smoking_pinlv"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    />
                  </el-select>
                </el-form-item>
                <el-form-item label="吸烟频率" prop="xiyanpinlv">
                  <el-input
                    v-model="form.xiyanpinlv"
                    style="width: 70px"
                  />支/天
                </el-form-item>
                <el-form-item label="吸烟时间" prop="xiyanyear">
                  <el-input
                    v-model="form.xiyanyear"
                    style="width: 70px"
                  />年 </el-form-item
                ><br />
                <el-form-item label="是否饮酒" prop="yinjiu">
                  <!-- <el-input v-model="form.yinjiupinlv" placeholder="请输入饮酒频率" /> -->
                  <el-select
                  filterable
                    v-model="form.yinjiu"
                    placeholder="请选择是否饮酒"
                    clearable
                    style="width: 150px"
                  >
                    <el-option
                      v-for="dict in dict.type.tj_smoking_pinlv"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    />
                  </el-select>
                </el-form-item>
                <el-form-item label="饮酒频率" prop="yinjiupinlv">
                  <el-input
                    v-model="form.yinjiupinlv"
                    style="width: 70px"
                  />ml/天
                </el-form-item>
                <el-form-item label="饮酒时间" prop="yinjiuyear">
                  <el-input v-model="form.yinjiuyear" style="width: 70px" />年
                </el-form-item>
                <el-form-item label="其他" prop="qita">
                  <el-input
                    v-model="form.qita"
                    placeholder="请输入其他"
                    type="textarea"
                    style="width: 600px"
                    rows="2"
                  />
                </el-form-item>
              </div>
            </el-collapse-item>
            <el-collapse-item title="急慢性职业病史信息" name="5">
              <div style="width: 900px">
                <el-row :gutter="10" class="mb8">
                  <el-col :span="1.5">
                    <el-button
                      type="primary"
                      icon="el-icon-plus"
                      size="mini"
                      @click="addmembers()"
                      >添加
                    </el-button>
                  </el-col>
                  <el-col :span="1.5">
                    <el-button type="danger" icon="el-icon-delete" size="mini"
                      >删除
                    </el-button>
                  </el-col>
                </el-row>
                <el-table
                  border
                  :data="form.tjAskHistorysList"
                  ref="tjAskHistorys"
                  style="width: 98%"
                >
                  <el-table-column type="selection" width="40" align="center" />
                  <!-- <el-table-column
            label="序号"
            align="center"
            prop="index"
            width="50"
          /> -->
                  <el-table-column label="疾病名称" prop="diseaseName">
                    <template slot-scope="scope">
                      <el-input
                        size="mini"
                        v-model="scope.row.diseaseName"
                        placeholder="请输入疾病名称"
                      />
                    </template>
                  </el-table-column>
                  <el-table-column label="诊断日期" prop="diseaseData">
                    <template slot-scope="scope">
                      <!-- <el-input
                v-model="scope.row.diseaseData"
                placeholder="请输入诊断日期"
              /> -->
                      <el-date-picker
                        size="mini"
                        v-model="scope.row.diseaseData"
                        align="right"
                        type="date"
                        placeholder="选择日期"
                        :picker-options="pickerOptions"
                        style="width: 130px"
                        value-format="yyyy-MM-dd"
                      >
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="诊断单位" prop="diseaseCompany">
                    <template slot-scope="scope">
                      <el-input
                        size="mini"
                        v-model="scope.row.diseaseCompany"
                        placeholder="请输入诊断单位"
                      />
                    </template>
                  </el-table-column>
                  <el-table-column label="是否痊愈" prop="isOk">
                    <template slot-scope="scope">
                      <!-- <el-input v-model="scope.row.isOk" placeholder="请输入是否痊愈" /> -->
                      <el-select
                      filterable
                        size="mini"
                        v-model="scope.row.isOk"
                        placeholder="请选择是否痊愈"
                        clearable
                      >
                        <el-option
                          v-for="dict in dict.type.sys_yes_no"
                          :key="dict.value"
                          :label="dict.label"
                          :value="dict.value"
                        />
                      </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column label="备注" prop="remark">
                    <template slot-scope="scope">
                      <el-input
                        size="mini"
                        v-model="scope.row.remark"
                        placeholder="请输入备注"
                      />
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </el-collapse-item>
          </el-collapse>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submitForm" style="margin-top: 10px" :disabled="isdisabled"
            >提交</el-button
          >
        </div>
        <jianqianwenzhen :jianqianwenzhendata="jianqianwenzhendata"></jianqianwenzhen>
      </div>
    </div>
@@ -344,19 +154,36 @@
</template>
<script>
import {
  updateHistory,
  getInfoById,
} from "@/api/hosp/history";
import jianqianwenzhen from "@/components/jianqianwenzhen";
import { Message } from "element-ui";
import { getOrderList } from "@/api/hosp/order";
import { listHarmType } from "@/api/hosp/harmType";
export default {
  name: "History",
  dicts: ["tj_smoking_pinlv", "sys_yes_no", "tj_work_status", "tj_work","dict_ageunit","dict_job"],
  components: { jianqianwenzhen },
  dicts: [
    "tj_smoking_pinlv",
    "sys_yes_no",
    "tj_work_status",
    "tj_work",
    "dict_ageunit",
    "dict_job",
  ],
  data() {
    let checkPhoneNum = (rule, value, callback) => {
      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
      if (value == "" && value == undefined && !value) {
        return callback("");
      } else if (value != undefined && value != "") {
        return callback();
      } else if (!patter.test(value)) {
        return callback("");
      }
    };
    return {
      selectList:[],
      jianqianwenzhendata: [],
      selectList: [],
      dataList: [],
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now();
@@ -419,15 +246,18 @@
        pageSize: 20,
        cusName: null,
      },
      harmTypeList: [],
      // 表单参数
      form: {},
      chageall: [],
      bingshiall: [],
      rew: [],
      // 表单校验
      rules: {
        deleted: [
          {
            required: true,
            message: "$comment不能为空",
            validator: checkPhoneNum,
            trigger: "blur",
          },
        ],
@@ -436,6 +266,11 @@
  },
  created() {
    this.getList();
  },
  mounted() {
    this.$nextTick(() => {
      this.$refs.inputName.focus();
    });
  },
  methods: {
    /** 查询问诊列表 */
@@ -456,6 +291,10 @@
    /** 查询体检记录列表 */
    getList() {
      this.loading = true;
      listHarmType().then((response) => {
        this.harmTypeList = response.rows;
      });
      getOrderList(this.queryParams).then((response) => {
        this.orderList = response.data.list;
        if (this.orderList) {
@@ -473,6 +312,7 @@
                  true
                );
              });
              this.dataList = this.orderList[0];
            } else {
              this.$refs.multipleTable.clearSelection();
            }
@@ -523,6 +363,11 @@
      this.tjAskHistorysList = [];
      this.resetForm("form");
    },
    hb(){
       if (this.queryParams.tjNum != undefined) {
        this.handleQuery();
      }
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
@@ -535,6 +380,7 @@
    },
    // 单选框选中数据
    handleSelectionChange(selection) {
      this.dataList = [];
      this.selectList = selection;
      // this.ids = selection.map((item) => item.askId);
      // this.single = selection.length !== 1;
@@ -549,37 +395,38 @@
        let del_row = selection.shift();
        this.$refs.multipleTable.toggleRowSelection(del_row, false);
      }
      selection.forEach(item1=>{
      selection.forEach((item1) => {
        if (item1.tjCustomerSex === 1) {
        this.sex = true;
      } else {
        this.sex = false;
      }
      })
      let userId = selection.map((item) => item.userId);
      getInfoById(userId).then((response) => {
        this.form = response.data;
        if(this.form.xiyan == null){
          this.form.xiyan ="1"
          this.sex = true;
        } else {
          this.sex = false;
        }
        if(this.form.xiyanpinlv == null){
          this.form.xiyanpinlv ="0"
        }
        if(this.form.xiyanyear == null){
          this.form.xiyanyear ="0"
        }
        if(this.form.yinjiu == null){
          this.form.yinjiu ="1"
        }
        if(this.form.yinjiupinlv == null){
          this.form.yinjiupinlv ="0"
        }
        if(this.form.yinjiuyear == null){
          this.form.yinjiuyear ="0"
        }
        this.form.tjAskHistorysList = response.data.tjAskHistorysList;
        // this.isdisabled= true
      });
      let tjNumber = selection.map((item) => item.tjNumber);
      this.jianqianwenzhendata = tjNumber;
      // getInfoById(tjNumber).then((response) => {
      //   this.jianqianwenzhendata = response.data;
      //   if (this.form.xiyan == null) {
      //     this.form.xiyan = "1";
      //   }
      //   if (this.form.xiyanpinlv == null) {
      //     this.form.xiyanpinlv = "0";
      //   }
      //   if (this.form.xiyanyear == null) {
      //     this.form.xiyanyear = "0";
      //   }
      //   if (this.form.yinjiu == null) {
      //     this.form.yinjiu = "1";
      //   }
      //   if (this.form.yinjiupinlv == null) {
      //     this.form.yinjiupinlv = "0";
      //   }
      //   if (this.form.yinjiuyear == null) {
      //     this.form.yinjiuyear = "0";
      //   }
      //   this.form.tjAskHistorysList = response.data.tjAskHistorysList;
      //   // this.isdisabled= true
      // });
    },
    tableRowClassName({ row, rowIndex }) {
      for (let i = 0; i < this.selectList.length; i++) {
@@ -588,42 +435,12 @@
        }
      }
    },
    // 新增行
    addmembers() {
      if (this.form.cusName) {
        if (!this.form.tjAskHistorysList) {
          this.form.tjAskHistorysList = [];
          this.form.tjAskHistorysList.push({
            id: parseInt(length),
            diseaseName: "",
            diseaseData: "",
            diseaseCompany: "",
            isOk: "",
            remark: "",
            Selection,
          });
        } else {
          this.form.tjAskHistorysList.push({
            id: parseInt(length),
            diseaseName: "",
            diseaseData: "",
            diseaseCompany: "",
            isOk: "",
            remark: "",
            Selection,
          });
        }
      } else {
        Message.warning("请先填写客户名");
      }
      this.$forceUpdate();
    },
    /** 提交按钮 */
    submitForm() {
      updateHistory(this.form).then((response) => {
        this.$modal.msgSuccess("修改成功");
      });
    },
  },
};
</script>
@@ -640,27 +457,20 @@
  display: flex;
  justify-content: space-evenly;
}
.hist2 {
  width: 708px;
}
.hist3 {
  margin-top: 60px;
}
.coll {
  width: 100%;
}
::v-deep .el-collapse-item__header {
  font-weight: 800;
  font-size: 16px;
}
.txt {
  font-size: 16px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
}
.el-table .warning-row {
  background: #e5f3ff !important;
}