src/api/system/tijian.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/request1.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/doctor/checkAll/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/hosp/order/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/tijian/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
vue.config.js | ●●●●● 补丁 | 查看 | 原始文档 | 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, },