123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771 |
- <template>
- <div class="patient-container">
- <patient-sidebar :id="patientID" defaultActive="1-3"></patient-sidebar>
- <div
- class="patient-app-container app-container"
- v-loading="pageLoading"
- element-loading-text="拼命加载中"
- >
- <el-row :gutter="20">
- <el-col :span="7">
- <el-table
- :header-cell-style="{
- backgroundColor: 'rgb(245, 247, 250)',
- color: '#606266'
- }"
- :row-style="{ color: '#303133' }"
- :data="projects"
- border
- style="width: 100%"
- highlight-current-row
- @current-change="handleCurrentChange"
- ref="singleTable"
- >
- <el-table-column label="检验检查项目" align="center">
- <el-table-column
- prop="project_name"
- label="检验项目"
- align="center"
- >
- </el-table-column>
- <el-table-column
- prop="count"
- label="次数"
- width="80"
- align="center"
- >
- </el-table-column>
- </el-table-column>
- </el-table>
- </el-col>
- <el-col :span="17" v-loading="itemLoading">
- <div class="filter-container" style="float:right">
- <el-button
- size="small"
- class="filter-item"
- type="primary"
- @click="openNew()"
- icon="el-icon-circle-plus-outline"
- :disabled="project ? false : true"
- >新增</el-button
- >
- <el-button
- size="small"
- class="filter-item"
- type="primary"
- icon="el-icon-edit-outline"
- @click="openEdit()"
- :disabled="itemDate ? false : true"
- >修改</el-button
- >
- <el-button
- size="small"
- class="filter-item"
- type="danger"
- icon="el-icon-delete"
- @click="deleteInspection()"
- :disabled="itemDate ? false : true"
- >删除</el-button
- >
- </div>
- <div class="filter-container">
- <el-button class="filter-item" type="text" style="color:#000"
- >{{ itemName }}
- <span v-if="itemDate"
- >(检查日期:{{ itemDate }})</span
- ></el-button
- >
- </div>
- <el-table
- :header-cell-style="{
- backgroundColor: 'rgb(245, 247, 250)',
- color: '#606266'
- }"
- :row-style="{ color: '#303133' }"
- :data="items"
- border
- style="width: 100%"
- id="user-inspection-order"
- >
- <el-table-column
- prop="item_name"
- label="检验项目"
- align="center"
- min-width="180"
- >
- <template slot-scope="scope">
- {{ scope.row.item_name }} {{ scope.row.item_name_addition }}
- </template>
- </el-table-column>
- <el-table-column
- prop="name"
- label="结果"
- align="center"
- min-width="80"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.value }}</span>
- <span v-if="scope.row.range_type == 1">{{
- scope.row.value_direction
- }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="address"
- label="参考值"
- align="center"
- min-width="120"
- >
- <template slot-scope="scope">
- <span v-if="scope.row.range_type == 1"
- >{{ scope.row.range_min }}~{{ scope.row.range_max }}</span
- >
- <span v-else>{{ scope.row.range_value }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="unit"
- label="单位"
- align="center"
- min-width="80"
- >
- </el-table-column>
- </el-table>
- <el-pagination
- align="right"
- @current-change="handleCurrentChangePage"
- :current-page="queryParams.page"
- :page-size="1"
- background
- style="margin-top:20px;"
- layout="total, prev, pager, next, jumper"
- :total="total"
- >
- </el-pagination>
- </el-col>
- </el-row>
- </div>
-
- <el-dialog
- :title="formTitle"
- :visible.sync="dialogFormVisible"
- width="1000px"
- id="user-inspection-form"
- v-loading="formLoading"
- >
- <el-form :model="form" ref="form" label-position="top">
- <el-row>
- <el-col :span="24" v-if="form.formItem[0].project_id == 14">
- <el-form-item label="传染病周期提醒: ">
- <el-radio-group v-model="form.remind_cycle">
- <el-radio :label="1">一月一次</el-radio>
- <el-radio :label="2">两月一次</el-radio>
- <el-radio :label="3">三月一次</el-radio>
- <el-radio :label="4">半年一次</el-radio>
- <el-radio :label="5">一年一次</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
-
- <el-col :span="7">
- <el-form-item
- label="检验日期"
- prop="inspect_date"
- :rules="[
- { required: true, message: '请输入检验日期', trigger: 'blur' }
- ]"
- >
- <el-date-picker
- style="width:95%"
- v-model="form.inspect_date"
- type="date"
- value-format="yyyy-MM-dd"
- format="yyyy-MM-dd"
- placeholder="选择日期"
- :readonly="form.method == 'add' ? false : true"
- >
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="1"> </el-col>
-
- <template v-for="(item, index) in form.formItem">
- <el-col :span="7" :key="index">
- <el-form-item
- :label="item.item_name"
- v-if="item.range_type == 1"
- :key="item.item_id"
- :prop="'formItem.' + index + '.value'"
- >
- <el-input
- placeholder="请填入"
- v-model="item.value"
- style="width:95%"
- type="number"
- >
- <template slot="append">{{ item.unit }}</template>
- </el-input>
- </el-form-item>
- <el-form-item
- :label="item.item_name"
- v-else
- :key="item.item_id"
- :prop="'formItem.' + index + '.value'"
- >
- <el-select
- v-model="item.value"
- placeholder="请选择"
- style="width:95%"
- >
- <el-option
- v-for="(optionItem, oidex) in item.select_options"
- :key="oidex"
- :label="optionItem"
- :value="optionItem"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="1" :key="'form-col' + index"> </el-col>
- </template>
- </el-row>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="dialogFormVisible = false">取 消</el-button>
- <el-button
- type="primary"
- v-if="form.method == 'add'"
- @click="submitNew('form')"
- >保 存</el-button
- >
- <el-button type="primary" v-else @click="submitEdit('form')"
- >保 存</el-button
- >
- </div>
- </el-dialog>
- </div>
- </template>
-
- <script>
- import PatientSidebar from "./components/PatientSidebar";
- import {
- fetchInspectionReference,
- CreatePatientInspection,
- fetchPatientInspections,
- EditPatientInspection,
- DeletePatientInspection
- } from "@/api/inspection";
- import { uParseTime, isPositiveNumber } from "@/utils/tools";
-
- export default {
- name: "Inspection",
- components: { PatientSidebar },
- data() {
- return {
- total: 0,
- pageLoading: true,
- itemLoading: false,
- formLoading: false,
- itemDate: "",
- patientID: 0,
- panelClass: "patient-app-container",
- patientInfo: {
- id: 0
- },
- itemName: "请选择项目",
- formTitle: "",
- dialogFormVisible: false,
- patient_info: null,
- form: {
- remind_cycle: "",
- method: "add",
- project_id: 0,
- inspect_date: "",
- formItem: [{ id: 0, value: "" }]
- },
- formItem: [],
- items: [],
- inspections: [],
- inspectionsMap: {},
- projects: [],
- project: null,
- queryParams: {
- patient: 0,
- project_id: 0,
- page: 1
- }
- };
- },
- methods: {
- deleteInspection() {
- if (this.project == null || this.itemDate == "") {
- this.$message.error("请先选择删除删除的记录");
- return false;
- }
-
- this.$confirm("确认删除此记录?", "删除", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(() => {
- var params = {
- patient: this.patientID,
- date: this.itemDate,
- project_id: this.project.project_id
- };
- DeletePatientInspection(params).then(response => {
- if (response.data.state == 0) {
- this.$message.error(response.data.msg);
- return false;
- } else {
- this.$notify({
- title: "成功",
- message: "删除成功",
- type: "success",
- duration: 2000
- });
-
- for (var index in this.projects) {
- if (this.projects[index].project_id == params.project_id) {
- this.projects[index].count--;
- break;
- }
- }
- this.total -= 1;
- this.itemDate = "";
- this.items = [];
- if (this.total > 0) {
- this.queryParams.page = 1;
- this.fetchPatientInspections(this.queryParams);
- }
- }
- });
- })
- .catch(() => {});
- },
- openEdit() {
- if (this.project == null) {
- this.$message.error("请先选择项目");
- return false;
- }
-
- this.form.method = "edit";
- this.formTitle = "修改" + this.project.project_name;
- this.form.project_id = this.project.project_id;
- this.form.inspect_date = this.itemDate;
- this.form.remind_cycle = this.patient_info.remind_cycle;
- console.log(this.form.remind_cycle);
-
- this.form.formItem = [];
- for (var index in this.project.inspection_reference) {
- this.form.formItem.push({
- id:
- this.project.inspection_reference[index].id in this.inspectionsMap
- ? this.inspectionsMap[this.project.inspection_reference[index].id]
- .id
- : 0,
- project_id: this.project.inspection_reference[index].project_id,
- project_name: this.project.inspection_reference[index].project_name,
- item_id: this.project.inspection_reference[index].id,
- item: this.project.inspection_reference[index].item,
- item_name: this.project.inspection_reference[index].item_name,
- range_type: this.project.inspection_reference[index].range_type,
- value:
- this.project.inspection_reference[index].id in this.inspectionsMap
- ? this.inspectionsMap[this.project.inspection_reference[index].id]
- .inspect_value
- : "",
- select_options: this.project.inspection_reference[
- index
- ].range_options.split(","),
- unit: this.project.inspection_reference[index].unit
- });
- }
-
- console.log(this.form.formItem);
-
- this.dialogFormVisible = true;
- },
- openNew() {
- if (this.project == null) {
- this.$message.error("请先选择项目");
- return false;
- }
- this.form.method = "add";
- this.formTitle = "新增" + this.project.project_name;
- this.form.project_id = this.project.project_id;
- this.form.remind_cycle = this.patient_info.remind_cycle;
-
- var today = new Date();
- this.form.inspect_date = uParseTime(today, "{y}-{m}-{d}");
- this.form.formItem = [];
- for (var index in this.project.inspection_reference) {
- // var formItem = this.project.inspection_reference[index];
- // formItem["value"] = '';
- // if (formItem.range_type==2) {
- // formItem["select_options"] = formItem.range_options.split(",");
- // }
- this.form.formItem.push({
- id: 0,
- project_id: this.project.inspection_reference[index].project_id,
- project_name: this.project.inspection_reference[index].project_name,
- item_id: this.project.inspection_reference[index].id,
- item: this.project.inspection_reference[index].item,
- item_name: this.project.inspection_reference[index].item_name,
- range_type: this.project.inspection_reference[index].range_type,
- value: "",
- select_options: this.project.inspection_reference[
- index
- ].range_options.split(","),
- unit: this.project.inspection_reference[index].unit
- });
- }
-
- this.dialogFormVisible = true;
- },
- submitEdit(formName) {
- this.$refs[formName].validate(valid => {
- if (valid) {
- this.formLoading = true;
- if (this.form.formItem.length == 0) {
- this.$message.error("未填写项目");
- return false;
- }
- for (var index in this.form.formItem) {
- this.form.formItem[index].value =
- "" + this.form.formItem[index].value;
- }
-
- EditPatientInspection(
- this.patientID,
- this.form,
- this.form.remind_cycle,
- this.form.inspect_date,
- this.form.project_id
- )
- .then(response => {
- if (response.data.state == 1) {
- this.$notify({
- title: "成功",
- message: "修改成功",
- type: "success",
- duration: 2000
- });
- this.patient_info.remind_cycle =
- response.data.data.remind_cycle;
- this.itemDate = this.form.inspect_date;
- this.items = [];
- var inspections = response.data.data.inspections;
- this.inspections = response.data.data.inspections;
- if (inspections == null) {
- this.inspections = [];
- return false;
- }
- var inspectionsMap = {};
- this.inspectionsMap = {};
- for (var index in inspections) {
- inspectionsMap[inspections[index].item_id] =
- inspections[index];
- this.inspectionsMap[inspections[index].item_id] =
- inspections[index];
- }
- var items = this.project.inspection_reference;
- for (var index in items) {
- if (items[index].id in inspectionsMap) {
- var item = {};
- for (var key in items[index]) {
- item[key] = items[index][key];
- }
- item.value = inspectionsMap[items[index].id].inspect_value;
- item.value_direction = "";
- if (item.range_type == 1) {
- var value = parseFloat(item.value);
- var range_min = parseFloat(item.range_min);
- var range_max = parseFloat(item.range_max);
- if (value < range_min) {
- item.value_direction = "↓";
- } else if (value > range_max) {
- item.value_direction = "↑";
- }
- }
- this.items.push(item);
- }
- }
-
- this.resetForm(formName);
- this.dialogFormVisible = false;
- } else {
- this.$message.error(response.data.msg);
- return false;
- }
- })
- .catch(v => {
- this.$message.error(v);
- return false;
- });
- this.formLoading = false;
- return false;
- } else {
- return false;
- }
- });
- },
- submitNew(formName) {
- this.$refs[formName].validate(valid => {
- if (valid) {
- this.formLoading = true;
- if (this.form.formItem.length == 0) {
- this.$message.error("未填写项目");
- return false;
- }
- for (var index in this.form.formItem) {
- this.form.formItem[index].value =
- "" + this.form.formItem[index].value;
- }
- CreatePatientInspection(
- this.patientID,
- this.form,
- this.form.remind_cycle
- )
- .then(response => {
- if (response.data.state == 1) {
- this.$notify({
- title: "成功",
- message: "新增成功",
- type: "success",
- duration: 2000
- });
- // this.form.remind_reycle = response.data.data.remind_reycc
- this.patient_info.remind_cycle =
- response.data.data.remind_cycle;
- console.log(this.patient_info.remind_cycle);
-
- this.itemDate = this.form.inspect_date;
- console.log(this.itemDate);
-
- this.items = [];
- for (var index in this.projects) {
- if (this.projects[index].project_id == this.form.project_id) {
- this.projects[index].count++;
- break;
- }
- }
- this.total += 1;
- var inspections = response.data.data.inspections;
- this.inspections = response.data.data.inspections;
- if (inspections == null) {
- this.inspections = [];
- return false;
- }
- var inspectionsMap = {};
- this.inspectionsMap = {};
- for (var index in inspections) {
- inspectionsMap[inspections[index].item_id] =
- inspections[index];
- this.inspectionsMap[inspections[index].item_id] =
- inspections[index];
- }
- var items = this.project.inspection_reference;
- for (var index in items) {
- if (items[index].id in inspectionsMap) {
- var item = {};
- for (var key in items[index]) {
- item[key] = items[index][key];
- }
- item.value = inspectionsMap[items[index].id].inspect_value;
- item.value_direction = "";
- if (item.range_type == 1) {
- var value = parseFloat(item.value);
- var range_min = parseFloat(item.range_min);
- var range_max = parseFloat(item.range_max);
- if (value < range_min) {
- item.value_direction = "↓";
- } else if (value > range_max) {
- item.value_direction = "↑";
- }
- }
- this.items.push(item);
- }
- }
-
- this.resetForm(formName);
- this.dialogFormVisible = false;
-
- this.queryParams.patient = this.patientID;
- this.queryParams.project_id = this.project.project_id;
- this.queryParams.page = 1;
- this.total = 0;
- this.fetchPatientInspections(this.queryParams);
- } else {
- this.$message.error(response.data.msg);
- return false;
- }
- })
- .catch(v => {
- this.$message.error(v);
- return false;
- });
- this.formLoading = false;
- return false;
- } else {
- return false;
- }
- });
- },
- fetchInspectionReference() {
- fetchInspectionReference(this.patientID)
- .then(response => {
- if (response.data.state == 1) {
- var reference = response.data.data.reference;
- var patient_info = response.data.data.patient_info;
- this.projects = reference;
- this.patient_info = patient_info;
- this.pageLoading = false;
- this.form.remind_cycle = this.patient_info.remind_cycle;
- } else {
- this.$message.error(response.data.msg);
- return false;
- }
- })
- .catch(v => {});
- },
- setCurrent(row) {
- this.$refs.singleTable.setCurrentRow(row);
- },
- resetForm(formName) {
- this.$refs[formName].resetFields();
- },
- handleCurrentChange(row) {
- this.itemDate = "";
- this.form.method = "add";
- if (typeof row === "undefined" || row == null) {
- this.project = null;
- this.items = [];
- this.itemName = "请选择项目";
- } else {
- this.itemLoading = true;
- this.project = row;
- this.items = row.inspection_reference;
- this.itemName = row.project_name;
-
- this.queryParams.patient = this.patientID;
- this.queryParams.project_id = this.project.project_id;
- this.queryParams.page = 1;
- this.total = 0;
- this.fetchPatientInspections(this.queryParams);
- }
- },
-
- handleCurrentChangePage(val) {
- this.itemLoading = true;
- this.queryParams.page = val;
- this.fetchPatientInspections(this.queryParams);
- },
- fetchPatientInspections(params) {
- this.items = [];
- fetchPatientInspections(params)
- .then(response => {
- if (response.data.state == 1) {
- var inspections = response.data.data.inspections;
- this.total = response.data.data.total;
- this.itemDate = response.data.data.date.split(" ")[0];
- console.log("1111"+this.itemDate)
- this.inspections = response.data.data.inspections;
- if (inspections == null) {
- this.inspections = [];
- return false;
- }
- var inspectionsMap = {};
- this.inspectionsMap = {};
- for (var index in inspections) {
- inspectionsMap[inspections[index].item_id] = inspections[index];
- this.inspectionsMap[inspections[index].item_id] =
- inspections[index];
- }
- var items = this.project.inspection_reference;
- for (var index in items) {
- if (
- items[index].id in inspectionsMap ||
- items[index].item_id in inspectionsMap
- ) {
- var item = {};
- for (var key in items[index]) {
- item[key] = items[index][key];
- }
- if (item.item_id > 0) {
- item.value =
- inspectionsMap[items[index].item_id].inspect_value;
- } else {
- item.value = inspectionsMap[items[index].id].inspect_value;
- }
- item.value_direction = "";
- if (item.range_type == 1) {
- var value = parseFloat(item.value);
- var range_min = parseFloat(item.range_min);
- var range_max = parseFloat(item.range_max);
- if (value < range_min) {
- item.value_direction = "↓";
- } else if (value > range_max) {
- item.value_direction = "↑";
- }
- }
- this.items.push(item);
- }
- }
- console.log(this.items);
- }
- })
- .catch(v => {});
- setTimeout(() => {
- this.itemLoading = false;
- }, 1000);
- }
- },
- created() {
- const id = this.$route.query && this.$route.query.id;
- this.patientID = parseInt(id);
- if (isNaN(this.patientID) || this.patientID <= 0) {
- this.$notify.error({
- title: "错误",
- message: "无效的id"
- });
- this.$router.push("/patients/patients");
- }
-
- this.fetchInspectionReference();
- }
- };
- </script>
-
- <style>
- #oictable ::-webkit-scrollbar {
- height: 15px;
- }
- </style>
-
- <style>
- #user-inspection-order td {
- border-bottom: 0px !important;
- border-right: 0px !important;
- }
- #user-inspection-order th {
- border-right: 0px !important;
- }
- #user-inspection-form .el-form-item__content {
- line-height: 0 !important;
- }
- .el-table td,
- .el-table th.is-leaf,
- .el-table--border,
- .el-table--group {
- border-color: #d0d3da;
- }
- .el-table--border::after,
- .el-table--group::after,
- .el-table::before {
- background-color: #d0d3da;
- }
- </style>
|