1
lkk
2025-06-03 d6d190a320c17eca121f629ff09670338a36a3cb
1
2个文件已修改
477 ■■■■■ 已修改文件
src/components/public/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reservation/reservations/index.vue 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/public/index.vue
@@ -258,8 +258,11 @@
    },
    handleOk() {
      if (!this.form.desc && !this.form.jcsj) {
        this.$message.warning("请选择数据");
      const jcsjTrim = this.form.jcsj?.trim();
      const descTrim = this.form.desc?.trim();
      if (!jcsjTrim || !descTrim) {
        this.$message.warning("检查所见和检查结论不能为空");
        return;
      }
src/views/reservation/reservations/index.vue
@@ -99,90 +99,113 @@
      v-show="showSearch"
      label-width="68px"
    >
      <el-form-item label="姓名" prop="name">
        <el-input
          style="width: 120px"
          v-model="queryParams.name"
          placeholder="请输入姓名"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="身份证号" prop="idCard">
        <el-input
          v-model="queryParams.idCard"
          placeholder="请输入身份证号"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="联系电话" prop="phoe">
        <el-input
          v-model="queryParams.phoe"
          placeholder="请输入联系电话"
          clearable
          @keyup.enter.native="handleQuery"
          style="width: 140px"
        />
      </el-form-item>
      <el-form-item label="所在地" prop="szd">
        <el-input
          style="width: 120px"
          v-model="queryParams.szd"
          placeholder="请输入所在地"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="单位名称" prop="company">
        <el-select
          :remote-method="getRemoteData"
          v-model="queryParams.company"
          remote
          default-first-option
          allow-create
          filterable
          style="width: 200px"
          placeholder="请选择单位名称"
          clearable
          @change="idFn1"
        >
          <el-option
            v-for="dict in CompanyList"
            :key="dict.cnName"
            :label="dict.cnName"
            :value="dict.drugManufacturerId"
          />
        </el-select>
        <i class="el-icon-circle-plus-outline" @click="handleAdd1"></i>
      </el-form-item>
      <el-form-item label="预约超期" prop="isExpire">
        <el-select
          v-model="queryParams.isExpire"
          placeholder="请选择是否超期"
          clearable
          style="width: 140px"
        >
          <el-option
            v-for="dict in options"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </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-form-item>
      <el-row>
        <el-col>
          <el-form-item label="姓名" prop="name">
            <el-input
              style="width: 120px"
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="身份证号" prop="idCard">
            <el-input
              v-model="queryParams.idCard"
              placeholder="请输入身份证号"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="单位名称" prop="company">
            <el-select
              :remote-method="getRemoteData"
              v-model="queryParams.company"
              remote
              default-first-option
              allow-create
              filterable
              style="width: 200px"
              placeholder="请选择单位名称"
              clearable
              @change="idFn1"
            >
              <el-option
                v-for="dict in CompanyList"
                :key="dict.cnName"
                :label="dict.cnName"
                :value="dict.drugManufacturerId"
              />
            </el-select>
            <i class="el-icon-circle-plus-outline" @click="handleAdd1"></i>
          </el-form-item>
          <el-form-item label="预约时间">
            <el-date-picker
              clearable
              v-model="createTimeList"
              @change="dateChangebirthday2"
              type="daterange"
              range-separator="-"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions"
              value-format="yyyy-MM-dd"
              placeholder="请选择出预约时间"
              style="width: 300px"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col>
          <el-form-item label="联系电话" prop="phoe">
            <el-input
              v-model="queryParams.phoe"
              placeholder="请输入联系电话"
              clearable
              @keyup.enter.native="handleQuery"
              style="width: 140px"
            />
          </el-form-item>
          <el-form-item label="所在地" prop="szd">
            <el-input
              style="width: 120px"
              v-model="queryParams.szd"
              placeholder="请输入所在地"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="预约超期" prop="isExpire">
            <el-select
              v-model="queryParams.isExpire"
              placeholder="请选择是否超期"
              clearable
              style="width: 140px"
            >
              <el-option
                v-for="dict in options"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </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-form-item>
        </el-col>
      </el-row>
    </el-form>
    <el-row :gutter="10" style="margin: 10px 15px">
      <el-col :span="1.5">
@@ -873,9 +896,19 @@
                  "
                >
                  <el-table :data="tableData1" border style="width: 100%">
                    <el-table-column prop="proName" label="项目" width="180" align="center">
                    <el-table-column
                      prop="proName"
                      label="项目"
                      width="180"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column prop="proType" label="性别" width="50" align="center">
                    <el-table-column
                      prop="proType"
                      label="性别"
                      width="50"
                      align="center"
                    >
                      <template slot-scope="scope">
                        <template v-if="isAll(scope.row.proType)">
                          全部
@@ -889,7 +922,11 @@
                      </template>
                    </el-table-column>
                    <el-table-column prop="ordPrice" label="应收金额" align="center">
                    <el-table-column
                      prop="ordPrice"
                      label="应收金额"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column label="折扣" width="160px" align="center">
                      <template slot-scope="scope">
@@ -903,14 +940,22 @@
                          :step="0.1"
                          :max="10"
                          :min="0"
                          :disabled="true"
                          :disabled="true"
                        >
                        </el-input-number>
                      </template>
                    </el-table-column>
                    <el-table-column prop="nowPrice" label="实收金额" align="center">
                    <el-table-column
                      prop="nowPrice"
                      label="实收金额"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column prop="proCheckMethod" label="是否空腹" align="center">
                    <el-table-column
                      prop="proCheckMethod"
                      label="是否空腹"
                      align="center"
                    >
                      <template slot-scope="scope">
                        <dict-tag
                          :options="dict.type.sys_yes_no"
@@ -1095,7 +1140,7 @@
              </div>
            </el-col>
          </el-row>
          <el-dialog
            title="导检单预览"
            :visible.sync="dialogVisibles"
@@ -1113,7 +1158,6 @@
        </div>
      </template>
    </el-drawer>
    <el-dialog
      title="PDF 预览"
@@ -1153,7 +1197,7 @@
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer2">
        <el-button type="primary" @click="submitType"  >确 定</el-button>
        <el-button type="primary" @click="submitType">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
@@ -1627,9 +1671,19 @@
                  "
                >
                  <el-table :data="tableData1" border style="width: 100%">
                    <el-table-column prop="proName" label="项目" width="180" align="center">
                    <el-table-column
                      prop="proName"
                      label="项目"
                      width="180"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column prop="proType" label="性别" width="50" align="center">
                    <el-table-column
                      prop="proType"
                      label="性别"
                      width="50"
                      align="center"
                    >
                      <template slot-scope="scope">
                        <template v-if="isAll(scope.row.proType)">
                          全部
@@ -1643,7 +1697,11 @@
                      </template>
                    </el-table-column>
                    <el-table-column prop="ordPrice" label="应收金额" align="center">
                    <el-table-column
                      prop="ordPrice"
                      label="应收金额"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column label="折扣" width="160px" align="center">
                      <template slot-scope="scope">
@@ -1657,14 +1715,22 @@
                          :step="0.1"
                          :max="10"
                          :min="0"
                          :disabled="true"
                          :disabled="true"
                        >
                        </el-input-number>
                      </template>
                    </el-table-column>
                    <el-table-column prop="nowPrice" label="实收金额" align="center">
                    <el-table-column
                      prop="nowPrice"
                      label="实收金额"
                      align="center"
                    >
                    </el-table-column>
                    <el-table-column prop="proCheckMethod" label="是否空腹" align="center">
                    <el-table-column
                      prop="proCheckMethod"
                      label="是否空腹"
                      align="center"
                    >
                      <template slot-scope="scope">
                        <dict-tag
                          :options="dict.type.sys_yes_no"
@@ -1869,10 +1935,9 @@
</template>
<script>
import { addComp,
  addPlOrderAndDetail } from "@/api/system/comp";
import { addComp, addPlOrderAndDetail } from "@/api/system/comp";
import Big from "big.js";
import { Loading } from 'element-ui';
import { Loading } from "element-ui";
import {
  listReservation,
  gettjCancel,
@@ -1950,7 +2015,7 @@
      url: "",
      open2: false,
      forms: {
        tjCategory:"12"
        tjCategory: "12",
      },
      dialogVisible: false,
      /** 照相机弹窗模块-start */
@@ -2009,7 +2074,7 @@
      // 是否显示弹出层
      pacId: "",
      cusIds:[],
      cusIds: [],
      // 结果
      result: "",
      proIds: [],
@@ -2022,6 +2087,8 @@
        label: "proName",
      },
      formPacId: "",
      createTimeList: "",
      startTime: "",
      dXData: [],
      // 查询参数
      queryParam: {
@@ -2196,6 +2263,37 @@
        //   },
        // ],
      },
        pickerOptions: {
        shortcuts: [
          {
            text: "最近一周",
            onClick(picker) {
              const end = new Date();
              const start = new Date(new Date().setHours(0, 0, 0, 0));
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近一个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date(new Date().setHours(0, 0, 0, 0));
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近三个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date(new Date().setHours(0, 0, 0, 0));
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
              picker.$emit("pick", [start, end]);
            },
          },
        ],
      },
    };
  },
  created() {
@@ -2313,9 +2411,22 @@
        });
      }
    },
    dateChangebirthday2(val) {
      this.startTime = val;
    },
    /** 查询体检预约列表 */
    getList() {
      this.loading = true;
      if (this.startTime) {
        this.queryParams.yykssj = this.startTime[0];
        this.queryParams.yyjssj = this.startTime[1];
      } else if (this.createTimeList) {
        this.queryParams.yykssj = this.createTimeList[0];
        this.queryParams.yyjssj = this.createTimeList[1];
      } else if (this.createTimeList == null) {
        this.queryParams.yykssj = null;
        this.queryParams.yyjssj = null;
      }
      listReservation(this.queryParams).then((response) => {
        this.reservationList = response.rows;
        //  response.rows.forEach((item, index) =>
@@ -2699,104 +2810,105 @@
      this.open2 = true;
    },
    submitType() {
      // let cusIds = [];
      // this.selectList.forEach((item) => {
      //   cusIds.push(item.idCard);
      // });
      let loadingInstance1 = Loading.service({ fullscreen: true,text:"签到中" });
      let loadingInstance1 = Loading.service({
        fullscreen: true,
        text: "签到中",
      });
      let data = {
        cusIds: this.cusIds,
        tjCategory: this.forms.tjCategory,
      };
      this.open2 = false;
      addPlOrderAndDetail(data).then((res) => {
        if(res.code == 200){
        if (res.code == 200) {
          this.open2 = false;
        this.$modal.msgSuccess("签到成功");
        if (res.file) {
          let base64 = res.file;
          this.base64ToBlob({
            b64data: base64,
            contentType: "application/pdf",
          }).then((res) => {
            this.dialogVisible = true;
            // 转后后的blob对象
            try {
              this.url = res.preview;
            } catch (error) {
              this.url = window.webkitURL.createObjectURL(res.preview);
          this.$modal.msgSuccess("签到成功");
          if (res.file) {
            let base64 = res.file;
            this.base64ToBlob({
              b64data: base64,
              contentType: "application/pdf",
            }).then((res) => {
              this.dialogVisible = true;
              // 转后后的blob对象
              try {
                this.url = res.preview;
              } catch (error) {
                this.url = window.webkitURL.createObjectURL(res.preview);
              }
            });
          } else {
            let _this = this;
            this.$nextTick(() => {
              // 以服务的方式调用的 Loading 需要异步关闭
              loadingInstance1.close();
            });
            var websocket = null;
            var url = _this.valueUrls;
            if ("WebSocket" in window) {
              websocket = new WebSocket(url);
            } else if ("MozWebSocket" in window) {
              websocket = new MozWebSocket(url);
            } else {
            }
          });
        }else{
          let _this = this;
          this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
            loadingInstance1.close();
});
        var websocket = null;
        var url = _this.valueUrls;
        if ("WebSocket" in window) {
          websocket = new WebSocket(url);
        } else if ("MozWebSocket" in window) {
          websocket = new MozWebSocket(url);
        } else {
        }
        if (websocket == null) {
          alert("11111");
        }
        websocket.onopen = function () {
          try {
            // 连接设备
            var jsonObjs = {
              type: 4,
              data: res,
            };
            var jStrs = JSON.stringify(jsonObjs);
            websocket.send(jStrs);
          } catch (err) {
            var tryTime = 0;
            // 重试10次,每次之间间隔3秒
            if (tryTime < 1) {
              var t1 = setTimeout(function () {
                tryTime++;
            if (websocket == null) {
              alert("11111");
            }
            websocket.onopen = function () {
              try {
                // 连接设备
                var jsonObjs = {
                  type: 4,
                  data: res,
                };
                var jStrs = JSON.stringify(jsonObjs);
                websocket.send(jStrs);
              }, 1 * 1000);
            } else {
              console.error("重连失败.");
            }
          }
        };
        websocket.onclose = function () {
          alert("连接关闭");
        };
        websocket.onmessage = function (event) {
          var resultObj = JSON.parse(event.data);
          _this.cardreader = false;
        };
              } catch (err) {
                var tryTime = 0;
                // 重试10次,每次之间间隔3秒
                if (tryTime < 1) {
                  var t1 = setTimeout(function () {
                    tryTime++;
                    var jsonObjs = {
                      type: 4,
                      data: res,
                    };
                    var jStrs = JSON.stringify(jsonObjs);
                    websocket.send(jStrs);
                  }, 1 * 1000);
                } else {
                  console.error("重连失败.");
                }
              }
            };
            websocket.onclose = function () {
              alert("连接关闭");
            };
            websocket.onmessage = function (event) {
              var resultObj = JSON.parse(event.data);
              _this.cardreader = false;
            };
        //连接发生错误的回调方法
        websocket.onerror = function () {
          alert("请检查连接是否正常");
        };
          this.getList()
        }
        }else{
          this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
            //连接发生错误的回调方法
            websocket.onerror = function () {
              alert("请检查连接是否正常");
            };
            this.getList();
          }
        } else {
          this.$nextTick(() => {
            // 以服务的方式调用的 Loading 需要异步关闭
            loadingInstance1.close();
});
          });
        }
      });
    },
    base64ToBlob({ b64data = "", contentType = "", sliceSize = 512 } = {}) {
      return new Promise((resolve, reject) => {
@@ -3223,8 +3335,6 @@
  height: 700px;
  overflow: hidden;
}
#printIframe::-webkit-scrollbar {
  width: 6px;