Browse Source

打印结算单 和 修复bug

xiaochan 3 years ago
parent
commit
c95be69138

+ 22 - 0
src/api/medical-insurance/si-setl-upload.js

@@ -25,6 +25,20 @@ export function getMedType() {
     })
 }
 
+export function getMedChrgitmType() {
+    return request({
+        url: '/setlListUpld/getMedChrgitmType',
+        method: 'get'
+    })
+}
+
+export function getFundPayType() {
+    return request({
+        url: '/setlListUpld/getFundPayType',
+        method: 'get'
+    })
+}
+
 export function huoQuJieSuanRenYuan(data) {
     return request({
         url: '/setlListUpld/huoQuJieSuanRenYuan',
@@ -98,4 +112,12 @@ export function xiuGaiGuanChuangYiShen(patNo, times, code) {
     })
 }
 
+export function daYingShangChuanJieSuanDan(patNo, times, ledgerSn) {
+    return request({
+        url: '/setlListUpld/daYingShangChuanJieSuanDan',
+        method: 'get',
+        params: {patNo, times, ledgerSn}
+    })
+}
+
 

+ 18 - 11
src/components/si-sheet-upload/JieSuanDanXiangQing.vue

@@ -355,7 +355,7 @@ export default {
     }
     /*以下全部都是诊断*/
     const zhenDuanQuery = ref({
-      method: 'alpha',
+      method: 'name',
       target: 'diag',
       // 内容
       content: '',
@@ -374,6 +374,8 @@ export default {
     const addZhenDuanFlag = ref(false)
     let zhenDuanIndex = 0
     const xiuGaiZhenDuanClick = (index, val) => {
+      queryZhenDuanData.value = []
+      zhenDuanQuery.value.content = val.disDiagComment
       lingShiZhenDuan.value = val
       addZhenDuanFlag.value = false
       zhenDuanDialog.value = true
@@ -451,9 +453,8 @@ export default {
         ElMessage.error("请先选择诊断类别")
         return true
       }
-      if (stringIsBlank(lingShiZhenDuan.value.disDiagStatus)
-          || lingShiZhenDuan.value.disDiagStatus === '0') {
-        ElMessage.error("请先选择出院病情")
+      if (stringIsBlank(lingShiZhenDuan.value.admissCond)) {
+        ElMessage.error("请先选择入院院病情")
         return true
       }
       return false
@@ -620,9 +621,6 @@ export default {
       } else if (oprninfo.value.length > 5) {
         return ElMessage.error("手术不能超过五个。")
       }
-      // if (stringIsBlank(setlinfo.value.decType)) {
-      //   return ElMessage.error("请填写申报类型。")
-      // }
       if (listIsBlank(diseinfo.value)) {
         return ElMessage.error("诊断不能为空切不能大于27个。")
       } else if (diseinfo.value.length > 27) {
@@ -644,11 +642,11 @@ export default {
     const keFeiShenHe = ref(false)
     watch(() => props.data.shenHeXinXi,
         () => {
-          if (stringIsBlank(props.data.shenHeXinXi.id)
-              && props.data.shenHeXinXi.auditFlag !== 0) {
-            keFeiShenHe.value = true
-          } else {
+          if (stringNotBlank(props.data.shenHeXinXi.id)
+              && props.data.shenHeXinXi.auditFlag === 0) {
             keFeiShenHe.value = false
+          } else {
+            keFeiShenHe.value = true
           }
         })
 
@@ -760,10 +758,19 @@ export default {
       if (stringNotBlank(props.data.shenHeXinXi.id)) {
         diseinfo.value = clone(props.data.newYbZyDisDiag)
         oprninfo.value = clone(props.data.newBatjBa4)
+        if (stringNotBlank(props.data.shenHeXinXi.reqRemark)
+            && props.data.shenHeXinXi.auditFlag === 0) {
+          setTimeout(() => {
+            ElMessageBox.alert(props.data.shenHeXinXi.reqRemark, '申请备注', {
+              type: 'warning'
+            })
+          }, 1000)
+        }
       } else {
         diseinfo.value = clone(props.data.ybZyDisDiag)
         oprninfo.value = clone(props.data.batjBa4)
       }
+
       zhenDuanQuery.value.medType = props.data.medType
     }
     watch(() => props.data,

File diff suppressed because it is too large
+ 854 - 101
src/components/si-sheet-upload/jieSuanDanDaYing.vue


+ 355 - 0
src/components/si-sheet-upload/jieSuanDanXiuGai.js

@@ -1,6 +1,8 @@
 import {ref} from "vue";
 import {maZuiFangShi} from "../../api/public-api";
 import store from '@/store';
+import {listIsBlank, listNotBlank, stringIsBlank, stringNotBlank} from "../../utils/blank-utils";
+import {getFundPayType, getMedChrgitmType} from "../../api/medical-insurance/si-setl-upload";
 
 const getRoles = store.state.user.info.roles
 
@@ -130,3 +132,356 @@ export function xianZhongChuQu(arr, notNode) {
     })
     return data
 }
+
+
+/* 打印结算单的一些工具类 */
+export function brdyName(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let name = val.split("-")
+    return `${name[0]}年${name[1]}月${name[2]}日`
+}
+
+/* 入院时间拆分 */
+export function getDateName(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let date = val.split(" ")[0].split("-")
+    let times = val.split(" ")[1].split(":")
+    return `${date[0]}年${date[1]}月${date[2]}日 ${times[0]}时`
+}
+
+// 手术时间拆分
+export function getShouShuShiJian(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let date = val.split(" ")[0].split("-")
+    let times = val.split(" ")[1].split(":")
+    return `${date[0]}年${date[1]}月${date[2]}日 ${times[0]}时${times[1]}分${times[2]}秒`
+}
+
+// 颅内时间拆分
+export function luNeiShiJian(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let data = val.split("/")
+    return ` ${data[0]}天 ${data[1]}小时 ${data[2]}分钟`
+}
+
+//结算时间计算
+export function nianYueRi(val) {
+    if (stringIsBlank(val)) {
+        return ' 年 月 日'
+    }
+    let date = val.split("-")
+    return `${date[0]}年${date[1]}月${date[2]}日`
+}
+
+export function getAge(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    return val.split('.')[0];
+}
+
+export function getAdmissCond(val) {
+    switch (val) {
+        case 1:
+            return "有"
+        case 2:
+            return "临床未确定"
+        case 3:
+            return "情况不明"
+        case 4:
+            return "无"
+        default:
+            return ""
+
+    }
+}
+
+export function getXiYiZhenDuan(val) {
+    if (listIsBlank(val)) {
+        return []
+    }
+    let diag = []
+    val.forEach(item => {
+        if (item.siDiagType === '1' || item.siDiagType === '2') {
+            diag.push(item)
+        }
+    })
+    if (listIsBlank(diag)) {
+        return []
+    }
+    let zhuYao = []
+    let ciYao = []
+    diag.forEach(item => {
+        if (item.siDiagType === '1' && zhuYao.length === 0) {
+            zhuYao.push(item)
+        } else {
+            ciYao.push(item)
+        }
+    })
+    return zhuYao.concat(ciYao)
+}
+
+export function getZhongYiZhenDuan(val) {
+    if (listIsBlank(val)) {
+        return []
+    }
+    let diag = []
+    val.forEach(item => {
+        if (item.siDiagType === '3' || item.siDiagType === '4') {
+            diag.push(item)
+        }
+    })
+    if (listIsBlank(diag)) {
+        return []
+    }
+    let zhuYao = []
+    let ciYao = []
+    diag.forEach(item => {
+        if (item.siDiagType === '3' && zhuYao.length === 0) {
+            zhuYao.push(item)
+        } else {
+            ciYao.push(item)
+        }
+    })
+    return zhuYao.concat(ciYao)
+}
+
+export function zhenDuanData(val) {
+    let xiYiData = []
+    let zhongYiData = []
+    let obj = {disDiagComment: '我大姐可视对讲阿数据回到吉安市按实际和大家开始良好的卡时间段', disDiag: '', admissCond: ''}
+    // 只有当诊断全部为空的 时候才创建 9 个 空的数据
+    if (listIsBlank(val)) {
+        for (let i = 0; i < 9; i++) {
+            xiYiData.push(obj)
+            zhongYiData.push(obj)
+        }
+    }
+    xiYiData = getXiYiZhenDuan(val)
+    zhongYiData = getZhongYiZhenDuan(val)
+    let maxLength = xiYiData.length > zhongYiData.length ? xiYiData.length : zhongYiData.length
+    let newXiYiData = []
+    let newZhongYiData = []
+    if (maxLength < 2) {
+        maxLength = 9
+    }
+    for (let i = 0; i < maxLength; i++) {
+        if (i >= xiYiData.length) {
+            newXiYiData.push(obj)
+        } else {
+            newXiYiData.push(xiYiData[i])
+        }
+        if (i >= zhongYiData.length) {
+            newZhongYiData.push(obj)
+        } else {
+            newZhongYiData.push(zhongYiData[i])
+        }
+    }
+    return zhenDuanHeBing(newXiYiData, newZhongYiData)
+}
+
+export function zhenDuanHeBing(xiYiZhenDuan, ZhongYiZhenDuan) {
+    // 因为我在上面 保证了 两个诊断的长度完全一致 所以怎么循环都可以
+    let data = []
+    for (let i = 0; i < xiYiZhenDuan.length; i++) {
+        data.push({
+            xiYiDisDiag: xiYiZhenDuan[i].disDiag,
+            xiYiDisDiagComment: xiYiZhenDuan[i].disDiag,
+            xiYiAdmissCond: xiYiZhenDuan[i].disDiag,
+            ZhongYiDisDiag: ZhongYiZhenDuan[i].disDiag,
+            ZhongYiDiagComment: ZhongYiZhenDuan[i].disDiag,
+            ZhongYiAdmissCond: ZhongYiZhenDuan[i].disDiag,
+        })
+    }
+    return data
+}
+
+
+export function getShouShuData(val) {
+    if (listIsBlank(val)) {
+        let kong = []
+        for (let i = 0; i < 2; i++) {
+            kong.push({
+                ssmc: '',
+                ssbm: '',
+                mzff: '',
+                ssysName: '',
+                ssys: '',
+                mzysName: '',
+                mzys: '',
+            })
+        }
+        return kong
+    }
+    let zhuYaoShouShu = []
+    let ciYaoShouShu = []
+    val.forEach(item => {
+        if (item.ssjb === 4 && zhuYaoShouShu.length === 0) {
+            zhuYaoShouShu.push(item)
+        } else {
+            ciYaoShouShu.push(item)
+        }
+    })
+    return zhuYaoShouShu.concat(ciYaoShouShu)
+}
+
+// 重症监护类型
+export function zhongZhenJianHu(val) {
+    let data = []
+    if (listIsBlank(val)) {
+        data.push({
+            scsCutdWardType: '',
+            scsCutdInpoolTime: '',
+            scsCutdExitTime: '',
+            scsCutdSumDura: '',
+        })
+        return data
+    }
+    val.forEach(item => {
+        item.scsCutdInpoolTime = nianYueRiShiFen(item.scsCutdInpoolTime)
+        item.scsCutdExitTime = nianYueRiShiFen(item.scsCutdExitTime)
+        item.scsCutdSumDura = zhongZhenShiFenMiao(item.scsCutdSumDura)
+    })
+    return val
+
+}
+
+export function nianYueRiShiFen(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let date = val.split(" ")[0].split("-")
+    let times = val.split(" ")[1].split(":")
+    return `${date[0]}年${date[1]}月${date[2]}日${times[0]}时${times[1]}分`
+}
+
+export function zhongZhenShiFenMiao(val) {
+    if (stringIsBlank(val)) {
+        return ""
+    }
+    let times = val.split("/")
+    return `${times[0]}时${times[1]}分${times[2]}秒`
+}
+
+// 获取费用类型
+export let medChrgitmType = []
+export let medChrgitmTypeMap = {}
+
+getMedChrgitmType().then((res) => {
+    medChrgitmType = res
+    medChrgitmType.forEach(item => {
+        medChrgitmTypeMap[item.code] = {name: item.name}
+    })
+})
+
+export function getMedChrgitmTypeData(val) {
+    let data = []
+    if (listIsBlank(val)) {
+        medChrgitmType.forEach(item => {
+            data.push({
+                medChrgitm: item.name,
+                amt: '',
+                claaSumfee: '',
+                clabAmt: '',
+                fulamtOwnpayAmt: '',
+                othAmt: '',
+            })
+        })
+        data.push({
+            medChrgitm: "合计",
+            amt: 0,
+            claaSumfee: 0,
+            clabAmt: 0,
+            fulamtOwnpayAmt: 0,
+            othAmt: 0,
+        })
+        return data
+    }
+    for (let i = 0; i < medChrgitmType.length; i++) {
+        if (i >= val.length) {
+            data.push({
+                medChrgitm: medChrgitmType[i].name,
+                amt: '',
+                claaSumfee: '',
+                clabAmt: '',
+                fulamtOwnpayAmt: '',
+                othAmt: '',
+            })
+        } else if (stringNotBlank(val[i].medChrgitm)) {
+            data.push({
+                medChrgitm: medChrgitmType[i].name,
+                amt: val[i].amt,
+                claaSumfee: val[i].claaSumfee,
+                clabAmt: val[i].clabAmt,
+                fulamtOwnpayAmt: val[i].fulamtOwnpayAmt,
+                othAmt: val[i].othAmt,
+            })
+        }
+    }
+    data.push({
+        medChrgitm: "合计",
+        amt: val[val.length - 1].amt,
+        claaSumfee: val[val.length - 1].claaSumfee,
+        clabAmt: val[val.length - 1].clabAmt,
+        fulamtOwnpayAmt: val[val.length - 1].fulamtOwnpayAmt,
+        othAmt: val[val.length - 1].othAmt,
+    })
+
+    return data
+}
+
+// 医保统筹支付
+export let fndPayTypeData = []
+export let fndPayTypeMap = {}
+
+getFundPayType().then(res => {
+    fndPayTypeData = res
+    fndPayTypeData.forEach(item => {
+        fndPayTypeMap[item.code] = {code: item.code, name: item.name}
+    })
+})
+
+export function fenLeiZhiFuLeiXing(val) {
+    let obj = {}
+    let qiTa = []
+    let shuShiHua = ['310100', '330100', '390200', '320100', '610100', "370100"]
+    for (let i = 0; i < shuShiHua.length; i++) {
+        obj[shuShiHua[i]] = {
+            fundPayType: shuShiHua[i],
+            fundPayamt: "",
+        }
+    }
+    val.forEach(item => {
+        let name = fndPayTypeMap.hasOwnProperty(item.fundPayType)
+        if (shuShiHua.indexOf(item.fundPayType) > -1) {
+            obj[item.fundPayType] = {
+                fundPayType: item.fundPayType,
+                fundPayamt: item.fundPayamt,
+                name: name ? fndPayTypeMap[item.fundPayType].name : ""
+            }
+        } else {
+            qiTa.push({
+                fundPayType: item.fundPayType,
+                fundPayamt: item.fundPayamt,
+                name: name ? fndPayTypeMap[item.fundPayType].name : ""
+            })
+        }
+    })
+    if (listIsBlank(qiTa)) {
+        qiTa.push({
+            fundPayType: "",
+            fundPayamt: "",
+            name: ""
+        })
+    }
+    return {obj, qiTa}
+}
+

File diff suppressed because it is too large
+ 0 - 0
src/data/css-for-print.js


+ 1 - 2
src/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue

@@ -245,9 +245,8 @@ export default {
       }
       // A4: 210毫米 × 297毫米 = 793.70px *  1122.52px
       let LODOP = getLodop()
-
       // 导入css样式,以及 内容
-      var strFormHtml = huiZhenJiLvDanCss + '<body>' + document.getElementById('huiZhenXinXiDaYin').innerHTML + '</body>'
+      var strFormHtml = huiZhenJiLvDanCss  + '<body>' + document.getElementById('huiZhenXinXiDaYin').innerHTML + '</body>'
       LODOP.PRINT_INIT('会诊记录单') // 初始化打印机 名字
       LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '') // 设置纸张大小  A4
       LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形

+ 9 - 3
src/views/medical-insurance/allpatient/SetSheetUpload.vue

@@ -59,11 +59,11 @@
         <el-table-column prop="zhuanKeName" label="转科室"></el-table-column>
         <el-table-column label="结算单" v-if="shenHeQuanXian()">
           <template #default="scope">
-            <el-button>查看结算单</el-button>
+            <el-button @click="jieSuanDanClick(scope.row)">查看结算单</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <jie-suan-dan-da-ying></jie-suan-dan-da-ying>
+      <jie-suan-dan-da-ying ref="daYingJieSuanDanRef"></jie-suan-dan-da-ying>
       <el-pagination
           :page-sizes="[10, 20, 30, 40, 50 , 100]"
           :page-size="queryTerm.pageSize"
@@ -541,7 +541,11 @@ export default {
       queryTerm.value.insutype = xianZhongChuQu(insutypes.value, ['340', '350', '360', '510', '410'])
       queryTerm.value.psnType = xianZhongChuQu(getPsnType, ["13"])
       queryTerm.value.clrOptins = xianZhongChuQu(clrOptins.value, ["439900", "430121"])
-      queryTermDialog.value = true
+    }
+
+    const daYingJieSuanDanRef = ref(null)
+    const jieSuanDanClick = (val) => {
+      daYingJieSuanDanRef.value.isOpen(val)
     }
 
     onMounted(() => {
@@ -598,6 +602,8 @@ export default {
       dept,
       decTypes,
       zhongKongTiaoJian,
+      daYingJieSuanDanRef,
+      jieSuanDanClick,
       flags: ref([
         {code: 0, name: '全部'},
         {code: 1, name: '未传'},

Some files were not shown because too many files changed in this diff