Fix Bug #443: 手术计费签发耗材时因 bizRequestFlag 过滤导致签发的项目列表为空
根因:prescriptionlist.vue 中 handleSave()、changeCheck()、watch、handleSingOut() 四处使用 bizRequestFlag 过滤(仅允许操作本人开立的医嘱)。 在手术计费场景下,手术医生创建的手术申请及其耗材的 requester_id 为医生ID, 手术室护士的 practitionerId 与之不匹配,bizRequestFlag='0',导致所有耗材 被过滤掉,saveList 为空,后端返回"医嘱列表为空"错误。 修复:在四处过滤逻辑中增加 isSurgeryChargeBillingContext() 判断(generateSourceEnum=6), 手术计费场景下跳过 bizRequestFlag 限制,允许任何授权用户签发/签退。 门诊划价场景保留 bizRequestFlag 限制,不影响原有安全校验。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -461,6 +461,10 @@ watch(
|
|||||||
console.log(prescriptionList.value,"prescriptionList.value")
|
console.log(prescriptionList.value,"prescriptionList.value")
|
||||||
if(newValue&&newValue.length>0){
|
if(newValue&&newValue.length>0){
|
||||||
let saveList = prescriptionList.value.filter((item) => {
|
let saveList = prescriptionList.value.filter((item) => {
|
||||||
|
// 手术计费场景(generateSourceEnum=6)不限制 bizRequestFlag
|
||||||
|
if (isSurgeryChargeBillingContext()) {
|
||||||
|
return item.check && item.statusEnum == 1
|
||||||
|
}
|
||||||
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
||||||
})
|
})
|
||||||
console.log(saveList,"prescriptionList.value")
|
console.log(saveList,"prescriptionList.value")
|
||||||
@@ -1025,7 +1029,9 @@ function changeCheck(value,index,row){
|
|||||||
groupList.value.map(k=>{
|
groupList.value.map(k=>{
|
||||||
if(k.check){
|
if(k.check){
|
||||||
if(k.statusEnum == 1){//待签发
|
if(k.statusEnum == 1){//待签发
|
||||||
if(Number(k.bizRequestFlag)==1||!k.bizRequestFlag){
|
// 手术计费场景(generateSourceEnum=6)不限制 bizRequestFlag
|
||||||
|
const bizAllowed = isSurgeryChargeBillingContext() || Number(k.bizRequestFlag)==1||!k.bizRequestFlag
|
||||||
|
if(bizAllowed){
|
||||||
if(handleSaveDisabled.value&&!handleSingOutDisabled.value&&groupList.value.length>1){
|
if(handleSaveDisabled.value&&!handleSingOutDisabled.value&&groupList.value.length>1){
|
||||||
proxy.$modal.msgWarning('请选择相同的状态的项目进行操作')
|
proxy.$modal.msgWarning('请选择相同的状态的项目进行操作')
|
||||||
return
|
return
|
||||||
@@ -1040,7 +1046,9 @@ function changeCheck(value,index,row){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(k.statusEnum == 2){ //已签发
|
if(k.statusEnum == 2){ //已签发
|
||||||
if(Number(k.bizRequestFlag)==1||!k.bizRequestFlag){
|
// 手术计费场景(generateSourceEnum=6)不限制 bizRequestFlag
|
||||||
|
const bizAllowed = isSurgeryChargeBillingContext() || Number(k.bizRequestFlag)==1||!k.bizRequestFlag
|
||||||
|
if(bizAllowed){
|
||||||
if(!handleSaveDisabled.value&&handleSingOutDisabled.value&&groupList.value.length>1){
|
if(!handleSaveDisabled.value&&handleSingOutDisabled.value&&groupList.value.length>1){
|
||||||
proxy.$modal.msgWarning('请选择相同的状态的项目进行操作')
|
proxy.$modal.msgWarning('请选择相同的状态的项目进行操作')
|
||||||
return
|
return
|
||||||
@@ -1067,6 +1075,11 @@ function handleSave() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let saveList = prescriptionList.value.filter((item) => {
|
let saveList = prescriptionList.value.filter((item) => {
|
||||||
|
// 手术计费场景(generateSourceEnum=6)不限制 bizRequestFlag,允许任何授权用户签发
|
||||||
|
// 门诊划价场景保留 bizRequestFlag 限制,只能操作本人开立的医嘱
|
||||||
|
if (isSurgeryChargeBillingContext()) {
|
||||||
|
return item.check && item.statusEnum == 1
|
||||||
|
}
|
||||||
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
return item.check && item.statusEnum == 1&&(Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
||||||
});
|
});
|
||||||
// let saveList = prescriptionList.value
|
// let saveList = prescriptionList.value
|
||||||
@@ -1185,6 +1198,10 @@ function handleSingOut() {
|
|||||||
return item.check;
|
return item.check;
|
||||||
})
|
})
|
||||||
.filter((item) => {
|
.filter((item) => {
|
||||||
|
// 手术计费场景(generateSourceEnum=6)不限制 bizRequestFlag
|
||||||
|
if (isSurgeryChargeBillingContext()) {
|
||||||
|
return item.statusEnum == 2 && item.chargeStatus != 5
|
||||||
|
}
|
||||||
return item.statusEnum == 2 && item.chargeStatus != 5 && (Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
return item.statusEnum == 2 && item.chargeStatus != 5 && (Number(item.bizRequestFlag)==1||!item.bizRequestFlag)
|
||||||
})
|
})
|
||||||
.map((item) => {
|
.map((item) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user