qinxianzhangyao
2024-07-04 683b2620e0fbfba24787046e2630cbfed0337484
qxtj
5个文件已修改
1个文件已添加
394 ■■■■■ 已修改文件
src/api/system/tijian.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request1.js 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/checkAll/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/order/index.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/tijian/index.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/tijian.js
@@ -1,4 +1,5 @@
import request from "@/utils/request";
import request1 from "@/utils/request1";
// 查询体检套餐列表
export function deptTreeSelect(cusSex) {
@@ -188,3 +189,11 @@
    params:{zhId:zhId}
  });
}
export function readCertCardInfos() {
  return request1({
    url: "/readCertCardInfos",
    method: "get",
  });
}
src/utils/request1.js
New file
@@ -0,0 +1,168 @@
import axios from 'axios'
import { Notification, MessageBox, Message, Loading } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from "@/utils/ruoyi";
import cache from '@/plugins/cache'
import { saveAs } from 'file-saver'
let downloadLoadingInstance;
// 是否显示重新登录
export let isRelogin = { show: false };
// let url = window.location.protocol + "//" + window.location.host+ ':6789';
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  // baseURL:url,
  baseURL:'/douban',
  // 超时
  timeout: 20000
})
// request拦截器
service.interceptors.request.use(config => {
  // 是否需要设置 token
  const isToken = (config.headers || {}).isToken === false
  // 是否需要防止数据重复提交
  const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?' + tansParams(config.params);
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }
  if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
    const requestObj = {
      url: config.url,
      data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
      time: new Date().getTime()
    }
    const sessionObj = cache.session.getJSON('sessionObj')
    if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
      cache.session.setJSON('sessionObj', requestObj)
    } else {
      const s_url = sessionObj.url;                  // 请求地址
      const s_data = sessionObj.data;                // 请求数据
      const s_time = sessionObj.time;                // 请求时间
      const interval = 1000;                         // 间隔时间(ms),小于此时间视为重复提交
      if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
        // const message = '数据正在处理,请勿重复提交';
        // const message = '';
        // console.warn(`[${s_url}]: ` + message)
        // return Promise.reject(new Error(message))
        return Promise.reject()
      } else {
        cache.session.setJSON('sessionObj', requestObj)
      }
    }
  }
  return config
}, error => {
    // console.log(error)
    Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
    // 未设置状态码则默认成功状态
    const code = res.data.code || 200;
    // 获取错误信息
    const msg = errorCode[code] || res.data.msg || errorCode['default']
    // 二进制数据则直接返回
    if(res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer'){
      return res.data
    }
    if (code === 401) {
      if (!isRelogin.show) {
        isRelogin.show = true;
        MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }
      ).then(() => {
        isRelogin.show = false;
        store.dispatch('LogOut').then(() => {
          location.href = '/index';
        })
      }).catch(() => {
        isRelogin.show = false;
      });
    }
      return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
    } else if (code === 500) {
      Message({
        message: msg,
        type: 'error'
      })
      return Promise.reject(new Error(msg))
    } else if (code === 601) {
      Message({
        message: msg,
        type: 'warning'
      })
      return Promise.reject('error')
    } else if (code !== 200) {
      Notification.error({
        title: msg
      })
      return Promise.reject('error')
    } else {
      return res.data
    }
  },
  error => {
    // console.log('err' + error)
    let { message } = error;
    if (message == "Network Error") {
      message = "后端接口连接异常";
    }
    // else if (message.includes("timeout")) {
    //   message = "数据加载失败,请刷新页面";
    // }
    else if (message.includes("Request failed with status code")) {
      message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    Message({
      message: message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)
// 通用下载方法
export function download(url, params, filename, config) {
  downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
  return service.post(url, params, {
    transformRequest: [(params) => { return tansParams(params) }],
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    responseType: 'blob',
    ...config
  }).then(async (data) => {
    const isLogin = await blobValidate(data);
    if (isLogin) {
      const blob = new Blob([data])
      saveAs(blob, filename)
    } else {
      const resText = await data.text();
      const rspObj = JSON.parse(resText);
      const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
      Message.error(errMsg);
    }
    downloadLoadingInstance.close();
  }).catch((r) => {
    console.error(r)
    Message.error('下载文件出现错误,请联系管理员!')
    downloadLoadingInstance.close();
  })
}
export default service
src/views/doctor/checkAll/index.vue
@@ -95,6 +95,7 @@
        ref="table"
        border
        style="margin: 20px; width: 98%"
        @current-change="handleCurrentChange"
      >
        <!-- <template slot="empty">数据正在加载中</template> -->
        <el-table-column
@@ -297,14 +298,14 @@
        <el-row>
          <el-col :span="18">
            <div style="margin: 10px 10px">
              <el-radio-group
               <!--<el-radio-group
                v-model="tjproject"
                @input="radiotjprojectChange"
                style="margin-left: 20px"
              >
                <el-radio-button label="0">体检项目</el-radio-button>
                <el-radio-button label="1">化验项目</el-radio-button>
              </el-radio-group>
              </el-radio-group> -->
            </div>
          </el-col>
          <el-col :span="6">
@@ -385,14 +386,14 @@
                      {{
                        scope.row.standard.tjStandardGtValue +
                        "-" +
                        scope.row.standard.tjStandardLtValue
                        scope.row.standard.tjStandardLtValue || "/"
                      }}
                    </div>
                    <div v-else>{{ scope.row.stanId }}</div>
                    <div v-else>{{ scope.row.stanId || "/"}}</div>
                  </template>
                </el-table-column>
              </el-table>
              <table style="width: 100%">
              <table style="width: 100%" v-if="tjproject!='1'">
                <tr
                  style="border: 1px solid #dfe6ec; border-collapse: collapse"
                >
@@ -467,7 +468,7 @@
              </table>
            </div>
            <div style="margin: 0 0px 10px 15px">
            <div style="margin: 0 0px 10px 15px" v-if="tjproject!='1'">
              <el-button type="primary" @click="propoChange"
                >快捷建议</el-button
              >
@@ -480,6 +481,7 @@
              ref="numberValidateForm"
              label-width="80px"
              class="demo-ruleForm"
              v-if="tjproject!='1'"
            >
              <el-form-item label="总检建议">
                <el-input
@@ -1588,6 +1590,10 @@
      }
    },
    handleCurrentChange(val){
      this.handleClick(val)
    },
    // 点击详情
    handleClick(row) {
      this.$refs.Pre.open = false;
@@ -1626,6 +1632,7 @@
                    for (let i = 0; i < this.changedate.length; i++) {
                      this.remark = this.changedate[i].remark;
                    }
                    console.log( this.changedate)
                    this.changedate.forEach((item) => {
                      // this.remark = item.remark;
                      item.sons.forEach((item3) => {
@@ -1636,7 +1643,6 @@
                          item3.standard.tjStandardLtValue = "";
                        }
                      });
                      // item.remark = "";
                    });
                  } else {
                    this.$message({
src/views/hosp/order/index.vue
@@ -116,6 +116,16 @@
          >补录项目</el-button
        >
      </el-col>
      <!-- <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          @click="revokeProject"
          :disabled="single"
          v-hasPermi="['hosp:order:export']"
          >撤销补录</el-button
        >
      </el-col> -->
      <el-col :span="1.5">
        <el-button
@@ -863,6 +873,70 @@
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    <!-- <el-dialog
      :title="title"
      :visible.sync="Projectopen"
      width="1100px"
      style="height: 860px"
      append-to-body
    >
      <el-row type="flex" class="row-bg" justify="space-around">
        <el-col :span="6">
          <div
            style="text-align: center; margin-bottom: 10px; margin-top: 10px"
          >
            项目列表
          </div>
          <el-input placeholder="输入关键字进行过滤" v-model="filterText">
          </el-input>
          <div class="tab3">
            <el-table
              :data="DataList"
              border
              style="width: 100%"
              height="400"
              :span-method="objectSpanMethod"
            >
              <el-table-column prop="propinName" label="检查项目">
              </el-table-column>
              <el-table-column prop="proPrice" label="原价" width="56px">
              </el-table-column>
              <el-table-column prop="proName" label="明细项目" width="260px">
              </el-table-column>
            </el-table>
          </div>
        </el-col>
        <el-col :span="11">
          <div class="grid-content bg-purple">
            <div
              style="text-align: center; margin-bottom: 10px; margin-top: 10px"
            >
              补录项目
            </div>
            <el-table
              :data="DataList"
              border
              style="width: 100%"
              height="400"
              :span-method="objectSpanMethod"
            >
              <el-table-column prop="propinName" label="检查项目">
              </el-table-column>
              <el-table-column prop="proPrice" label="原价" width="56px">
              </el-table-column>
              <el-table-column prop="proName" label="明细项目" width="260px">
              </el-table-column>
            </el-table>
          </div>
        </el-col>
      </el-row>
    </el-dialog> -->
  </div>
</template>
@@ -1405,6 +1479,9 @@
        this.loading = false;
      });
    },
    revokeProject(){
    },
    // 补录项目
    handleProject1() {
      this.loading = true;
src/views/system/tijian/index.vue
@@ -1381,7 +1381,8 @@
  getByTjNum,
} from "@/api/hosp/customer";
import { getPrintSetUp } from "@/api/system/examcharge";
import axios from "axios";
import { getIp } from '@/utils/auth'
import {
  deptTreeSelect,
  projectGetList,
@@ -1398,6 +1399,7 @@
  getIsRequired,
  getconfigKey,
  getHistryTjOrderProByCusIdCard,
  readCertCardInfos,
} from "@/api/system/tijian";
import Packages from "@/components/Packages";
import { MessageBox } from "element-ui";
@@ -1591,6 +1593,8 @@
        pacRemark: null,
      },
      valueUrl: "ws://127.0.0.1:18890",
      valueUrls: "ws://127.0.0.1:6789/websocket",
      // valueUrls: "ws://"+getIp() +":6789/websocket",
      WebSocket: null,
      // 身份证需要
      // socket: null,
@@ -1655,11 +1659,12 @@
  },
  created() {
    this.getCurrentDateTime();
    this.startTimer();
    this.getList1();
    // this.getData();
  },
  methods: {
    getCurrentDateTime() {
      const currentDate = new Date();
@@ -2350,6 +2355,91 @@
              this.$refs.aaa.open = true;
              this.$refs.aaa.getAllList();
              this.$refs.aaa.title = "证件字典";
            } else if (res.msg == "S") {
              var websocket = null;
              var url = this.valueUrls;
              // var url = 'ws://'+ getIp() +':6789/websocket'
              console.log(url)
              if ("WebSocket" in window) {
                websocket = new WebSocket(url);
              } else if ("MozWebSocket" in window) {
                websocket = new MozWebSocket(url);
              } else {
                // console.log("SockJS");
              }
              if (websocket == null) {
                alert("11111");
              }
              websocket.onopen = function () {
                try {
                websocket.send("发送");
              } catch (err) {
                var tryTime = 0;
                // 重试10次,每次之间间隔3秒
                if (tryTime < 1) {
                  var t1 = setTimeout(function () {
                    tryTime++;
                websocket.send("发送");
                  }, 1 * 1000);
                } else {
                  console.error("重连失败.");
                }
              }
              };
              websocket.onclose = function () {
                alert("读卡器连接关闭");
              };
              websocket.onmessage = function (event) {
                var resultObj =JSON.parse(event.data);
               _this.form.cusName = resultObj.data.name;
                    _this.form.cusSex =
                    resultObj.data.sex;
                    _this.form.cusNational =resultObj.data.mz;
                    _this.form.cusBrithday = resultObj.data.csrq;
                    if (_this.form.cusBrithday) {
                      _this.form.cusBrithday = _this.form.cusBrithday.replace(
                        /^(\d{4})(\d{2})(\d{2})$/,
                        "$1-$2-$3"
                      );
                    }
                    _this.form.cusAddr = resultObj.data.addres;
                    _this.form.cusIdcard = resultObj.data.card;
              };
              //连接发生错误的回调方法
              websocket.onerror = function () {
                alert("请检查读卡器连接是否正常");
              };
              // let url = window.location.protocol + "//" + window.location.host;
              // console.log(url);
              // axios
              //   .get("http://localhost:81/dev-api/readCertCardInfos")
              //   .then((res) => {
              //     console.log(res);
              //   })
              //   .catch((err) => {
              //     console.log(err);
              //   });
              // readCertCardInfos().then((res) => {
              //   _this.form.cusName = res.data.name;
              //       _this.form.cusSex =
              //       res.data.sex;
              //       _this.form.cusNational = res.data.mz;
              //       _this.form.cusBrithday = res.data.csrq;
              //       if (_this.form.cusBrithday) {
              //         _this.form.cusBrithday = _this.form.cusBrithday.replace(
              //           /^(\d{4})(\d{2})(\d{2})$/,
              //           "$1-$2-$3"
              //         );
              //       }
              //       _this.form.cusAddr = res.data.addres;
              //       _this.form.cusIdcard = res.data.card;
              // });
            }
          }
        });
@@ -2559,7 +2649,7 @@
        this.tableData.forEach((item) => {
          this.tableData1.forEach((item1) => {
            item.tjProjectList.forEach((item2) => {
              console.log(item1)
              console.log(item1);
              if (item2.proId == item1.proPrantId && item1.pacName == "单项") {
                this.$confirm(
                  "该套餐包含了已选单项,是否确认选择该套餐?",
@@ -3415,11 +3505,17 @@
  width: 100%;
  display: flex;
}
.tab3 {
  max-height: 400px;
  border: 1px solid #dcdfe6;
}
.filter-tree {
  /* max-height: 360px;
  overflow-y: auto;
  border: 1px solid #d9d9d9;
  border: 1px solid #d9d9d9; */
  overflow: auto;
  flex: 1;
  height: 350px;
}
.tab2 {
vue.config.js
@@ -53,7 +53,7 @@
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        // target: `https://ltpeis.xaltjdkj.cn:5801/`,
        target: `http://192.168.1.113:5011/ltkj-admin`,
        target: `http://192.168.1.113:5011`,
        // // target: `http://192.168.0.99:8080/ltkj-admin`,
        // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`,
        // target: `http://10.168.0.9:5011`,
@@ -62,6 +62,16 @@
          ["^" + process.env.VUE_APP_BASE_API]: "",
        },
      },
      '/douban':{
        target:'http://192.168.1.82:6789',
        changeOrigin:true,
        ws: true,
        pathRewrite: {
          '^/douban': '',
        },
      },
    },
    disableHostCheck: true,
  },