WXL
2024-09-11 b5a56d53e44c426fa188ba3e4e1db3eb779e2fd9
src/views/patient/patient/profile/index.vue
@@ -42,7 +42,7 @@
        <span class="mulsz" slot="label"
          ><i class="el-icon-s-management"></i> 医疗档案</span
        >
        <el-tabs v-model="sonactiveName" @tab-click="handleClick">
        <el-tabs v-model="sonactiveName" @tab-click="handleClickson">
          <el-tab-pane name="outpatient"
            ><span class="mulsz" slot="label"
              >门诊({{ mznumber }})</span
@@ -50,12 +50,12 @@
          >
          <el-tab-pane name="inhospital"
            ><span class="mulsz" slot="label"
              >住院({{ zynumber }})
              >在院({{ zynumber }})
            </span></el-tab-pane
          >
          <el-tab-pane name="checkout"
            ><span class="mulsz" slot="label"
              >体检({{ jynumber }})
              >出院({{ jynumber }})
            </span></el-tab-pane
          >
        </el-tabs>
@@ -113,81 +113,101 @@
          <el-button type="primary" @click="savefile">保存患者档案</el-button>
        </div>
        <div class="detailed">
          <el-row :gutter="20">
            <el-col :span="12"
              ><div class="grid-content bg-purple">
                患者姓名:<span class="spanvalue">{{ userform.name }}</span>
              </div></el-col
            >
            <el-col :span="12"
              ><div class="grid-content bg-purple">
                联系电话:<span class="spanvalue">{{ userform.telcode }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="grid-content bg-purple">
                出生地:<span class="spanvalue">{{ userform.birthplace }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="grid-content bg-purple">
                居住地:<span class="spanvalue">{{
                  userform.placeOfResidence
                }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClose(tag)"
                >
                  {{ tag.tagname }}
                </el-tag>
                <el-select
                  v-if="inputVisible"
                  v-model="inputValue"
                  @change="handleInputConfirm"
                  filterable
                  allow-create
                  default-first-option
                  placeholder="请选择/查询"
                >
                  <el-option
                    v-for="item in options"
                    :key="item.tagid"
                    :label="item.tagname"
                    :value="item.tagname"
                  >
                  </el-option>
                </el-select>
          <el-form
            ref="userform"
            :model="userform"
            :rules="rules"
            label-width="100px"
          >
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="患者姓名" prop="name">
                  <el-input
                    v-model="userform.name"
                    placeholder="请输入姓名"
                    maxlength="30"
                  ></el-input> </el-form-item
              ></el-col>
              <el-col :span="12"
                ><el-form-item label="联系方式" prop="telcode">
                  <el-input
                    v-model="userform.telcode"
                    placeholder="请输入联系方式"
                    maxlength="30"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24">
                <el-form-item label="出生地" prop="birthplace">
                  <el-input
                    v-model="userform.birthplace"
                    placeholder="国、省、地市、区县、街道等详细信息"
                    maxlength="50"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24"
                ><el-form-item label="居住地" prop="placeOfResidence">
                  <el-input
                    v-model="userform.placeOfResidence"
                    placeholder="国、省、地市、区县、街道等详细信息"
                    maxlength="50"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24">
                <el-form-item label="标签" prop="desc">
                  <div class="xinz-inf">
                    <el-tag
                      :key="tag.tagname"
                      type="success"
                      v-for="tag in dynamicTags"
                      v-if="tag.isoperation != 3"
                      closable
                      :disable-transitions="false"
                      @close="handleClose(tag)"
                    >
                      {{ tag.tagname }}
                    </el-tag>
                    <el-select
                      v-if="inputVisible"
                      v-model="inputValue"
                      @change="handleInputConfirm"
                      filterable
                      allow-create
                      default-first-option
                      placeholder="请选择/查询"
                    >
                      <el-option
                        v-for="item in options"
                        :key="item.tagid"
                        :label="item.tagname"
                        :value="item.tagname"
                      >
                      </el-option>
                    </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInput"
                  >+ 新增标签</el-button
                >
              </div></el-col
            >
          </el-row>
                    <el-button
                      v-else
                      class="button-new-tag"
                      size="small"
                      @click="showInput"
                      >+ 新增标签</el-button
                    >
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
        </div>
      </div>
      <div class="top-message">
        <div class="headline">病史</div>
        <div class="detailed">
          <el-form ref="form" :model="form" label-width="100px">
          <el-form :model="form" label-width="100px">
            <el-row>
              <el-col :span="8">
                <el-form-item label="过往疾病" prop="name">
@@ -296,7 +316,7 @@
      <!-- 联系电话 -->
      <div class="bottom-message">
        <div class="headline">
          号码维护<span style="margin-right: 60px">&nbsp;&nbsp;</span>
          亲属号码维护<span style="margin-right: 60px">&nbsp;&nbsp;</span>
          <el-button type="primary" @click="addcompiletb">+新增</el-button>
        </div>
        <div class="Table-screen">
@@ -346,22 +366,71 @@
      <!-- 门诊 -->
      <div v-if="sonactiveName == 'outpatient'">
        <el-table :data="serviceData" style="width: 100%">
          <el-table-column prop="daya" label="就诊日期" width="180">
          <el-table-column
            label="就诊时间"
            align="center"
            key="createTime"
            prop="createTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="administrative" label="就诊科室" width="180">
          <el-table-column
            label="门诊号"
            align="center"
            key="patid"
            prop="patid"
          />
          <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="doctor" label="医生"> </el-table-column>
          <el-table-column prop="result" label="疾病诊断"> </el-table-column>
          <el-table-column prop="administrative" label="检验">
          </el-table-column>
          <el-table-column prop="administrative" label="检查">
          </el-table-column>
          <el-table-column prop="administrative" label="手术">
          </el-table-column>
          <el-table-column prop="administrative" label="用药">
          </el-table-column>
          <el-table-column prop="columcz" label="医嘱" width="200">
          </el-table-column>
          <el-table-column
            label="年龄"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="联系电话"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="诊断"
            align="center"
            key="diagname"
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="就诊科室"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="接诊医生"
            align="center"
            key="drname"
            prop="drname"
            width="120"
          />
        </el-table>
        <pagination
@@ -374,30 +443,80 @@
      </div>
      <!-- 住院 -->
      <div v-if="sonactiveName == 'inhospital'">
        <el-table :data="serviceData" style="width: 100%">
          <el-table-column prop="godaya" label="入院日期"> </el-table-column>
          <el-table-column prop="hospitalname" label="出院时间">
        <el-table :data="serviceDatary" style="width: 100%">
          <el-table-column
            label="住院号"
            align="center"
            key="patid"
            prop="patid"
          />
          <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="administrative" label="病区">
          </el-table-column>
          <el-table-column prop="result" label="主治医师"> </el-table-column>
          <el-table-column prop="bed" label="管床护士"> </el-table-column>
          <el-table-column prop="doctor" label="出院疾病诊断">
          </el-table-column>
          <el-table-column prop="today" label="检验"> </el-table-column>
          <el-table-column prop="administrative" label="检查">
          </el-table-column>
          <el-table-column prop="administrative" label="手术">
          </el-table-column>
          <el-table-column prop="administrative" label="用药">
          </el-table-column>
          <el-table-column prop="columcz" label="出院小结" width="200">
          </el-table-column>
          <el-table-column
            label="年龄"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="联系电话"
            align="center"
            key="telephone"
            prop="telephone"
            width="120"
          />
          <el-table-column
            label="入院诊断"
            align="center"
            key="diagname"
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="病区"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="床位号"
            align="center"
            key="bedNo"
            prop="bedNo"
            width="120"
          />
          <el-table-column
            label="主治医生"
            align="center"
            key="drname"
            prop="drname"
            width="120"
          />
          <el-table-column
            label="责任护士"
            align="center"
            key="Sister"
            prop="Sister"
            width="120"
          />
        </el-table>
      </div>
      <!-- 体检 -->
      <!-- 出院 -->
      <div v-if="sonactiveName == 'checkout'">
        <el-table :data="serviceData" style="width: 100%">
        <el-table :data="serviceDatacy" style="width: 100%">
          <el-table-column prop="godaya" label="体检类型"> </el-table-column>
          <el-table-column prop="hospitalname" label="体检套餐名称">
          </el-table-column>
@@ -604,7 +723,7 @@
          <el-input v-model="numberform.contactname"></el-input>
        </el-form-item>
        <el-form-item label="联系电话">
          <el-input v-model="numberform.contactway"></el-input>
          <el-input v-model="numberform.telcode"></el-input>
        </el-form-item>
        <el-form-item label="关系">
          <el-input v-model="numberform.relation"></el-input>
@@ -636,7 +755,10 @@
  delcontactinformation,
  listcontactinformation,
  alterpatient,
  Patientclinic,
} from "@/api/patient/homepage";
import { listPatouthosp } from "@/api/smartor/patouthosp";
import { listpatient } from "@/api/patient/record";
export default {
  name: "Profile",
@@ -709,15 +831,9 @@
          address: "89",
        },
      ],
      serviceData: [
        {
          daya: "2023-12-12",
          hospitalname: "协和",
          result: "韧带拉伤",
          administrative: "骨科",
          doctor: "吴大龙",
        },
      ],
      serviceData: [],
      serviceDatary: [],
      serviceDatacy: [],
      options: [
        {
          value: "1",
@@ -764,6 +880,39 @@
        { label: "测量时间", width: "", prop: "name" },
        { label: "体温", width: "", prop: "sex" },
      ],
      // 表单校验
      rules: {
        name: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
        age: [{ required: true, message: "年龄不能为空", trigger: "blur" }],
        nation: [{ required: true, message: "民族不能为空", trigger: "blur" }],
        telcode: [
          { required: true, message: "联系方式不能为空", trigger: "blur" },
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        idcardtype: [
          { required: true, message: "证件类型不能为空", trigger: "blur" },
        ],
        idcardno: [
          { required: true, message: "证件号能为空", trigger: "blur" },
        ],
        placeOfResidence: [
          { required: true, message: "居住地不能为空", trigger: "blur" },
        ],
      },
    };
  },
  created() {
@@ -788,9 +937,29 @@
  },
  methods: {
    // 查询档案列表信息
    getList() {
    // 查询医疗档案各列表信息
    getList(type) {
      this.loading = true;
      if (type == 0) {
        // 门诊记录
        listPatouthosp({ patid: this.id }).then((response) => {
          if (response.code == 200) {
            this.serviceData = response.rows;
          }
        });
      } else if (type == 1) {
        listpatient({ patid: this.id }).then((response) => {
          if (response.code == 200) {
            this.serviceDatary = response.rows;
          }
        });
      } else if (type == 2) {
        listpatient({ patid: this.id }).then((response) => {
          if (response.code == 200) {
            this.serviceDatacy = response.rows;
          }
        });
      }
    },
    getcontactlist() {
      listcontactinformation({ patid: this.id }).then((response) => {
@@ -825,17 +994,21 @@
    },
    // 保存患者档案
    savefile() {
      // this.userform.tagList = this.dynamicTags;
      this.userform.isoperation = 2;
      alterpatient(this.userform).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("基础信息保存成功");
        } else {
          this.$modal.msgError("基础信息修改失败");
      this.$refs["userform"].validate((valid) => {
        if (valid) {
          this.userform.isoperation = 2;
          this.userform.tagList = this.dynamicTags;
          alterpatient(this.userform).then((res) => {
            if (res.code == 200) {
              this.$modal.msgSuccess("基础信息保存成功");
            } else {
              this.$modal.msgError("基础信息修改失败");
            }
          });
          // 病史
          this.medicalhistory();
        }
      });
      // 病史
      this.medicalhistory();
    },
    // 病史
    medicalhistory() {
@@ -943,7 +1116,13 @@
    },
    // tab切换
    handleClick(tab, event) {
      console.log(tab, event);
      if (tab.index == "1") {
        this.getList(0);
      }
    },
    handleClickson(tab, event) {
      console.log(tab.index, "son");
      this.getList(tab.index);
    },
    // 联系方式新增
    Addanumber() {},
@@ -952,7 +1131,7 @@
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
        pageSize: 10000,
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
@@ -977,8 +1156,8 @@
    },
    handleClose(tag) {
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.userform.tagList[lindex].isoperation = 3;
      // this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.dynamicTags[lindex].isoperation = 3;
    },
    showInput() {
@@ -1006,7 +1185,7 @@
            };
          }
          console.log(tagvalue);
          this.userform.tagList.push(tagvalue);
          // this.userform.tagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          console.log(this.userform.tagList);
          console.log(this.dynamicTags);