qx
qx
2025-03-12 c140987b3ef6fd47e3b795fc3a2c6f880f49f9c2
src/views/system/Checkout/index.vue
@@ -1,64 +1,174 @@
<template>
  <div class="app-container">
    <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 style="width: 116px" ref="inputName" v-model="queryParams.name" placeholder="请输入姓名"
          @keyup.enter.native="handleQuery" />
        <el-input
          style="width: 116px"
          ref="inputName"
          v-model="queryParams.name"
          placeholder="请输入姓名"
          @keyup.enter.native="handleQuery"
          @input="queryParams.name = $event.replace(/\s/g, '')"
        />
      </el-form-item>
      <el-form-item label="体检号" prop="tjNum">
        <el-input ref="inputName" v-model="queryParams.tjNum" placeholder="请输入体检号" @keyup.enter.native="handleQuery"  @blur="handleQuery"
          style="width:170px" clearable />
        <el-input
          ref="inputName"
          v-model="queryParams.tjNum"
          placeholder="请输入体检号"
          @keyup.enter.native="handleQuery"
          @blur="hb"
          style="width: 170px"
          clearable
          @input="queryParams.tjNum = $event.replace(/\s/g, '')"
        />
      </el-form-item>
      <el-form-item label="登记时间" prop="createTimeList">
        <el-date-picker clearable v-model="createTimeList" @change="dateChangebirthday1" style="width: 240px"
          value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
          :picker-options="pickerOptions"></el-date-picker>
        <el-date-picker
          clearable
          v-model="createTimeList"
          @change="dateChangebirthday1"
          :default-time="['00:00:00', '23:59:00']"
          format="yyyy-MM-dd HH:mm"
          value-format="yyyy-MM-dd HH:mm"
          type="daterange"
          range-separator="-"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :picker-options="pickerOptions"
        ></el-date-picker>
      </el-form-item>
      <!-- <el-form-item label="报告时间" prop="reportTimeList">
        <el-date-picker clearable v-model="queryParams.reportTimeList" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" value-format="yyyy-MM-dd" placeholder="请选择出报告时间" style="width: 240px">
        </el-date-picker>
      </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-row :gutter="10" style="margin: 0 16px;">
    <el-row :gutter="10" style="margin: 0 16px">
      <!-- <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
          v-hasPermi="['hosp:order:export']" style="margin-left:14px">导出</el-button>
      </el-col> -->
      <el-col :span="1.5">
        <el-button type="primary" size="mini" @click="handleDelete" :disabled="multiple">签离登记</el-button>
        <el-button
          type="primary"
          size="mini"
          @click="handleDelete"
          :disabled="multiple"
          >签离登记</el-button
        >
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" style="margin-right:40px"></right-toolbar>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
        style="margin-right: 40px"
      ></right-toolbar>
    </el-row>
    <template>
      <el-table ref="tb" border style="margin: 14px; width: 98%" v-loading="loading" :data="orderList"
        @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="40" align="center" fixed="left" />
        <el-table-column label="序号" align="center" prop="newID" width="50px" fixed="left" />
        <el-table-column label="姓名" align="center" prop="tjCustomerName" width="100px" :show-overflow-tooltip="true"
          fixed="left" />
        <el-table-column label="性别" align="center" prop="tjCustomerSex" width="55px" :show-overflow-tooltip="true">
      <el-table
        ref="tb"
        border
        style="margin: 14px; width: 98%"
        v-loading="loading"
        :data="orderList"
        @selection-change="handleSelectionChange"
      >
        <el-table-column
          type="selection"
          width="40"
          align="center"
          fixed="left"
        />
        <el-table-column
          label="序号"
          align="center"
          prop="newID"
          width="50px"
          fixed="left"
        />
        <el-table-column
          label="姓名"
          align="center"
          prop="tjCustomerName"
          width="100px"
          :show-overflow-tooltip="true"
          fixed="left"
        />
        <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>
            <dict-tag
              :options="dict.type.sys_user_sex"
              :value="scope.row.tjCustomerSex"
            />
          </template>
        </el-table-column>
        <el-table-column label="年龄" align="center" prop="tjCustomerAge" width="55px" :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="tjType" width="80px" :show-overflow-tooltip="true">
        <el-table-column
          label="年龄"
          align="center"
          prop="tjCustomerAge"
          width="55px"
          :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="tjType"
          width="80px"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.tjType == '2'">个人</span>
            <span v-if="scope.row.tjType == '1'">团队</span>
          </template>
        </el-table-column>
        <el-table-column label="体检号" align="center" prop="tjNumber" width="160px" :show-overflow-tooltip="true" />
        <el-table-column
          label="体检号"
          align="center"
          prop="tjNumber"
          width="160px"
          :show-overflow-tooltip="true"
        />
        <el-table-column label="登记时间" align="center" prop="createTime" width="155px" :show-overflow-tooltip="true">
        <el-table-column
          label="登记时间"
          align="center"
          prop="createTime"
          width="155px"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
          </template>
@@ -73,89 +183,205 @@
            <span>{{ parseTime(scope.row.reportTime) }}</span>
          </template>
        </el-table-column> -->
        <el-table-column label="所选套餐" align="center" prop="pacName" width="150px" :show-overflow-tooltip="true" />
        <el-table-column label="单位工号" align="center" prop="firmWorkId" width="100px" :show-overflow-tooltip="true" />
        <el-table-column label="单位名称" align="center" prop="dictCompName" :show-overflow-tooltip="true" height="10px" />
        <el-table-column
          label="所选套餐"
          align="center"
          prop="pacName"
          width="150px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="单位工号"
          align="center"
          prop="firmWorkId"
          width="100px"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="单位名称"
          align="center"
          prop="dictCompName"
          :show-overflow-tooltip="true"
          height="10px"
        />
      </el-table>
    </template>
    <div class="pag">
      <div class="pag1">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
          :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 40]" :page-size="queryParams.pageSize"
          layout="total, sizes, prev, pager, next, jumper" :total="total">
        <el-pagination
          background
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="queryParams.pageNum"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="queryParams.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
        >
        </el-pagination>
      </div>
    </div>
    <el-dialog title="PDF 预览" :visible.sync="dialogVisible" :close-on-click-modal="false">
    <el-dialog
      title="PDF 预览"
      :visible.sync="dialogVisible"
      :close-on-click-modal="false"
    >
      <div class="main">
        <iframe id="printIframe" :src="url" frameborder="0" style="width: 100%; height: 100%"></iframe>
        <iframe
          id="printIframe"
          :src="url"
          frameborder="0"
          style="width: 100%; height: 100%"
        ></iframe>
      </div>
    </el-dialog>
    <el-dialog title="导诊单" :visible.sync="daoZhenDan" :close-on-click-modal="false">
    <el-dialog
      title="导诊单"
      :visible.sync="daoZhenDan"
      :close-on-click-modal="false"
    >
      <div class="main">
        <iframe id="printIframe" :src="url" frameborder="0" style="width: 100%; height: 100%"></iframe>
        <iframe
          id="printIframe"
          :src="url"
          frameborder="0"
          style="width: 100%; height: 100%"
        ></iframe>
      </div>
    </el-dialog>
    <!-- 添加或修改体检记录对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="660px">
      <el-form :model="formIn" ref="queryForm" size="small" :inline="true" label-width="68px">
    <el-dialog
      :title="title"
      :visible.sync="open"
      width="660px"
      :close-on-click-modal="false"
    >
      <el-form
        :model="formIn"
        ref="queryForm"
        size="small"
        :inline="true"
        label-width="68px"
      >
        <el-form-item label="体检号" prop="tjNumber">
          <el-input ref="inputName" v-model="formIn.tjNumber" style="width:212px" clearable />
          <el-input
            ref="inputName"
            v-model="formIn.tjNumber"
            style="width: 212px"
            clearable
          />
        </el-form-item>
        <el-form-item label="登记时间" prop="createTime">
          <el-input ref="inputName" v-model="formIn.createTime" style="width:212px" clearable />
          <el-input
            ref="inputName"
            v-model="formIn.createTime"
            style="width: 212px"
            clearable
          />
        </el-form-item>
        <br>
        <br />
        <el-form-item label="姓名" prop="tjCustomerName">
          <el-input style="width: 116px" ref="inputName" v-model="formIn.tjCustomerName" />
          <el-input
            style="width: 116px"
            ref="inputName"
            v-model="formIn.tjCustomerName"
          />
        </el-form-item>
        <el-form-item label="性别" prop="tjCustomerSex">
          <el-input style="width: 116px" ref="inputName" v-model="formIn.tjCustomerSex" />
          <el-input
            style="width: 116px"
            ref="inputName"
            v-model="formIn.tjCustomerSex"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="年龄" prop="tjCustomerAge">
          <el-input style="width: 116px" ref="inputName" v-model="formIn.tjCustomerAge" placeholder="请输入姓名" />
          <el-input
            style="width: 116px"
            ref="inputName"
            v-model="formIn.tjCustomerAge"
            placeholder="请输入姓名"
          />
        </el-form-item>
      </el-form>
      <el-table :data="numberList" style="width: 100%;margin-bottom: 10px;" height="400px" border :row-class-name="tableRowClassName">
        <el-table-column prop="proCheckType" label="检查类型" width="180" align="center">
      <el-table
        :data="numberList"
        style="width: 100%; margin-bottom: 10px"
        height="400px"
        border
        :row-class-name="tableRowClassName"
      >
        <el-table-column
          prop="proCheckType"
          label="检查类型"
          width="180"
          align="center"
        >
        </el-table-column>
        <el-table-column prop="proName" label="项目" width="180" align="center">
        </el-table-column>
        <el-table-column label="完成" prop="type" width="86" align="center">
          <template slot-scope="scope">
            <el-checkbox v-model="scope.row.type" disabled></el-checkbox>
            <el-checkbox
              @change="handelcheckbox1(scope.row)"
              v-model="scope.row.type"
              :disabled="scope.row.leave"
            ></el-checkbox>
          </template>
        </el-table-column>
        <el-table-column label="弃检" prop="type2" width="86" align="center">
          <template slot-scope="scope">
            <el-checkbox @change="handelcheckbox" v-model="scope.row.type2" :disabled="leave">
            <el-checkbox
              @change="handelcheckbox(scope.row)"
              v-model="scope.row.type2"
              :disabled="scope.row.leave"
            >
              <!-- <el-checkbox v-model="scope.row.type2"></el-checkbox> -->
            </el-checkbox>
          </template>
        </el-table-column>
        <el-table-column label="延期" prop="type3" width="86" align="center">
          <template slot-scope="scope">
            <el-checkbox @change="handelcheck" v-model="scope.row.type3" :disabled="leave">
            <el-checkbox
              @change="handelcheck(scope.row)"
              v-model="scope.row.type3"
              :disabled="scope.row.leave"
            >
            </el-checkbox>
          </template>
        </el-table-column>
      </el-table>
      <div v-show="tcShow">
        <el-form :model="postpone" ref="queryForm" v-show="postpone" size="small" label-width="68px">
        <el-form
          :model="postpone"
          ref="queryForm"
          v-show="postpone"
          size="small"
          label-width="68px"
        >
          <el-form-item label="延期天数" prop="day">
            <el-input ref="inputName" v-model="postpone.day" style="width:170px" clearable />
            <el-input
              ref="inputName"
              v-model="postpone.day"
              style="width: 170px"
              clearable
            />
          </el-form-item>
          <br>
          <br />
          <el-form-item label="延期原因" prop="cause">
            <el-input style="width:100%" ref="inputName" v-model="postpone.cause" maxlength="10" show-word-limit />
            <el-input
              style="width: 100%"
              ref="inputName"
              v-model="postpone.cause"
              maxlength="10"
              show-word-limit
            />
          </el-form-item>
        </el-form>
      </div>
@@ -163,7 +389,7 @@
      <!-- 弃检2,延期3 -->
      <div slot="footer" class="dialog-footer">
        <!-- <el-button @click="cancel">延期</el-button> -->
        <el-button @click="canaffirm">确认签离</el-button>
        <el-button :loading = isLoading @click="canaffirm">确认签离</el-button>
      </div>
    </el-dialog>
  </div>
@@ -178,7 +404,9 @@
  goOut,
  getPdf,
  goabandon,
  getNewDateList,
} from "@/api/hosp/order";
import moment from "moment";
import { getwater } from "@/api/hosp/customer";
import ViewPdf from "@/components/ViewPdf";
import { projectGetList, getaddtTransition } from "@/api/system/tijian";
@@ -186,15 +414,16 @@
  components: {
    ViewPdf,
  },
  dicts: ["dict_pay_type"],
  dicts: ["dict_pay_type","sys_user_sex"],
  name: "Order",
  data() {
    return {
      selectList:[],
      leave:false,
      selectList: [],
      leave: false,
      checked: false,
      radioId1: false,
      createTimeList: "",
      isLoading:false,
      createTimeList: [],
      cusId: "",
      payType: "0",
      dialogVisible: false,
@@ -205,7 +434,7 @@
      flag: true,
      bill: null,
      Treedata: [],
      DataList:[],
      DataList: [],
      defaultProps: {
        children: "tjProjectList",
        label: "proName",
@@ -216,13 +445,14 @@
      List: [],
      postpone: {
        day: null,
        caches: null
        caches: null,
      },
      tcShow: false,
      // remarkId: "",
      // remarkId1: "",
      type: null,
      type1: null,
      types: null,
      // 套餐提交按钮
      confirm: false,
      list1: true,
@@ -307,8 +537,9 @@
    };
  },
  created() {
    this.getNowTime();
    this.getList();
    // this.getNowTime();
    this.getdate();
  },
  mounted() {
    this.$nextTick(() => {
@@ -316,6 +547,15 @@
    });
  },
  methods: {
    getdate() {
      getNewDateList().then((res) => {
        this.createTimeList = [
          moment(res.data).format("YYYY-MM-DD 00:00:00"),
          moment(res.data).format("YYYY-MM-DD 23:59:00"),
        ];
        this.getList();
      });
    },
    // / 处理默认选中当前日期
    getNowTime() {
      var curDate = new Date().getTime();
@@ -340,8 +580,17 @@
    },
    /** 查询体检记录列表 */
    getList() {
      this.queryParams.djbeginTime = this.startTime[0];
      this.queryParams.djendTime = this.startTime[1];
      if (this.startTime) {
        this.queryParams.djbeginTime = this.startTime[0];
        this.queryParams.djendTime = this.startTime[1];
      } else if (this.createTimeList) {
        this.queryParams.djbeginTime = this.createTimeList[0];
        this.queryParams.djendTime = this.createTimeList[1];
      } else if (this.createTimeList == null) {
        this.queryParams.djbeginTime = null;
        this.queryParams.djendTime = null;
      }
      this.loading = true;
      getQianLiList(this.queryParams).then((response) => {
        this.orderList = response.data.list;
@@ -425,6 +674,11 @@
      };
      this.resetForm("form");
    },
    hb() {
      if (this.queryParams.tjNum != undefined) {
        this.handleQuery();
      }
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
@@ -432,6 +686,8 @@
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.createTimeList = [];
      this.startTime = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
@@ -525,17 +781,56 @@
      });
    },
    handelcheckbox(val) {
    handelcheckbox1(val) {
      // this.numberList.forEach(item => {
      //   if(item.type2 === true){
      //     item.type3 = false
      //   }
      // })
      for (let i = 0; i <= this.numberList.length; i++) {
        if (this.numberList[i].type2 === true) {
          this.numberList[i].type3 = false
          this.tcShow = false
          return
        if (val.proId == this.numberList[i].proId) {
          if (this.numberList[i].type === true) {
            this.numberList[i].type3 = false;
            this.numberList[i].type2 = false;
            this.tcShow = false;
            return;
          } else {
            return;
          }
        }
      }
      // this.type2 = val
      // this.numberList.forEach(item => {
      //   if (item.type === true) {
      //     item.type2 = false;
      //     item.type3 = false;
      //   } else{
      //     this.type2 = val
      //     if (this.type2 === true) {
      //       item.type = false
      //       item.type3 = false
      //     }
      //   }
      // })
    },
    handelcheckbox(val) {
      // this.numberList.forEach(item => {
      //   if(item.type2 === true){
      //     item.type3 = false
      //   }
      // })
      for (let i = 0; i <= this.numberList.length; i++) {
        if (val.proId == this.numberList[i].proId) {
          if (this.numberList[i].type2 === true) {
            this.numberList[i].type3 = false;
            this.numberList[i].type = false;
            this.tcShow = false;
            return;
          } else {
            return;
          }
        }
      }
      // this.type2 = val
@@ -563,10 +858,17 @@
      //   }
      // })
      for (let i = 0; i <= this.numberList.length; i++) {
        if (this.numberList[i].type3 === true) {
          this.numberList[i].type2 = false
          this.tcShow = true
          return
        if (val.proId == this.numberList[i].proId) {
          if (this.numberList[i].type3) {
            if (this.numberList[i].type3 === true) {
              this.numberList[i].type2 = false;
              this.numberList[i].type = false;
              this.tcShow = true;
              return;
            }
          } else {
            return;
          }
        }
      }
      // this.numberList.forEach(item => {
@@ -584,19 +886,21 @@
      //     }
      //   }
      // })
    },
    /** 签离按钮操作 */
    handleDelete() {
      this.title = "签离登记";
      this.List.forEach((item) => {
        this.formIn = item
      this.numberList = [];
      let list = JSON.parse(JSON.stringify(this.List))
      list.forEach((item) => {
        this.formIn = item;
        if (this.formIn.tjCustomerSex === 0) {
          this.formIn.tjCustomerSex = "男"
        } else {
          this.formIn.tjCustomerSex = "女"
          this.formIn.tjCustomerSex = "男";
        } else if (this.formIn.tjCustomerSex === 1) {
          this.formIn.tjCustomerSex = "女";
        } else if (this.formIn.tjCustomerSex === 2) {
          this.formIn.tjCustomerSex = "未知";
        }
        this.tjNumber = item.tjNumber;
      });
@@ -606,20 +910,21 @@
      goabandon(data).then((res) => {
        if (res.data.length != 0) {
          this.numberList = res.data;
          this.numberList.forEach(item => {
          this.numberList.forEach((item) => {
            if (item.type === 1) {
              item.type = true;
              item.type2 = false;
              item.type3 = false;
              this.leave = true;
            }else{
              this.leave = false;
              item.leave = true;
            } else {
              item.leave = false;
            }
            item = {
              type2: false,
              type3: false,
            }
          })
              leave: false,
            };
          });
          this.open = true;
        } else {
          let data = {
@@ -635,39 +940,49 @@
        }
      });
    },
    // 确认弃检
    canaffirm() {
      this.List.forEach((item) => {
        this.tjNumber = item.tjNumber;
      });
      this.numberList.forEach(element => {
        if (element.type2 === true) {
          this.type = 2
      this.numberList.forEach((element) => {
        if (element.type === true) {
          this.types = 1;
          this.DataList.push({
            tjNumber: this.tjNumber,
            type: this.types,
            remarkId: element.remarkId,
          });
        } else if (element.type2 === true) {
          this.type = 2;
          this.DataList.push({
            tjNumber: this.tjNumber,
            type: this.type,
            remarkId: element.remarkId
          })
            remarkId: element.remarkId,
          });
        } else if (element.type3 === true) {
          this.type1 = 3
          this.type1 = 3;
          this.DataList.push({
            tjNumber: this.tjNumber,
            day: this.postpone.day,
            remark: this.postpone.cause,
            type: this.type1,
            remarkId: element.remarkId,
          })
          });
        }
      });
      let data = {
        domainVos:this.DataList,
        tjNumber:this.tjNumber
      }
        domainVos: this.DataList,
        tjNumber: this.tjNumber,
      };
      this.isLoading = true
      gettjGoOut(data).then((res) => {
        if (res.code === 200) {
          this.$modal.msgSuccess("操作成功");
          this.open = false;
          this.multiple = true;
          this.isLoading = false
          this.getList();
        }
      });