|
|
|
@ -4,25 +4,23 @@ |
|
|
|
<!--未选组合项目--> |
|
|
|
<div style="display: block; width:260px;"> |
|
|
|
<div> |
|
|
|
<span style="padding: 5px;font-size: 14px;font-weight: 400;color: #232748;font-family: NotoSansSC-Regular;margin-bottom: 10px;">项目类别</span> |
|
|
|
<span |
|
|
|
style="padding: 5px;font-size: 14px;font-weight: 400;color: #232748;font-family: NotoSansSC-Regular;margin-bottom: 10px;">项目类别</span> |
|
|
|
<el-cascader :options="dict.itemTypeTree" v-model="itemTypeIds" |
|
|
|
:props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }" popper-class="example" @change="getAsbItemByItemType" size="small" ref="itemTypeIds"> |
|
|
|
:props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }" popper-class="example" |
|
|
|
@change="getAsbItemByItemType" size="small" ref="itemTypeIds"> |
|
|
|
</el-cascader> |
|
|
|
</div> |
|
|
|
<div class="box"> |
|
|
|
<el-table :data="dict.asbItem" size="small" highlight-current-row |
|
|
|
:height="window.pageHeight < 600 ? 190:Math.floor((window.pageHeight - 230) / 2)" |
|
|
|
@row-dblclick="dbClickChoosedAsb" row-key="id" border |
|
|
|
@selection-change="selectLeft" |
|
|
|
<el-table :data="dict.asbItem" size="small" highlight-current-row |
|
|
|
:height="window.pageHeight < 600 ? 190 : Math.floor((window.pageHeight - 230) / 2)" |
|
|
|
@row-dblclick="dbClickChoosedAsb" row-key="id" border @selection-change="selectLeft" |
|
|
|
@row-click="chooseAsbItem"> |
|
|
|
<!-- |
|
|
|
<el-table-column type="selection" align="center" ></el-table-column> |
|
|
|
--> |
|
|
|
<el-table-column type="index" align="center" min-width="40" label="序号"/> |
|
|
|
<el-table-column |
|
|
|
label="未选组合项目" min-width="170" |
|
|
|
prop="displayName" align="center" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column type="index" align="center" min-width="40" label="序号" /> |
|
|
|
<el-table-column label="未选组合项目" min-width="170" prop="displayName" align="center"></el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -30,47 +28,41 @@ |
|
|
|
<!--中间操作按钮--> |
|
|
|
<div style="display: flex;margin: 0px 10px 0px;flex-direction: column;justify-content: center;"> |
|
|
|
<div> |
|
|
|
<el-button class="commonbutton" @click="addAbs(asbItemChoosed,'choosed')" >添加 <i class="el-icon-arrow-right"></i></el-button> |
|
|
|
<el-button class="commonbutton" @click="addAbs(asbItemChoosed, 'choosed')">添加 <i |
|
|
|
class="el-icon-arrow-right"></i></el-button> |
|
|
|
</div> |
|
|
|
<div style="margin-top: 10px"> |
|
|
|
<el-button class="difference" @click="addAbs(asbItemChoosed,'all')">全部添加</el-button> |
|
|
|
<el-button class="difference" @click="addAbs(asbItemChoosed, 'all')">全部添加</el-button> |
|
|
|
</div> |
|
|
|
<div style="margin-top: 10px"> |
|
|
|
<el-button class="commonbutton" |
|
|
|
@click="delAbs(medicalPackageAsbitemsChoosed,'choosed')">移除 <i class="el-icon-arrow-left"></i |
|
|
|
></el-button> |
|
|
|
<el-button class="commonbutton" @click="delAbs(medicalPackageAsbitemsChoosed, 'choosed')">移除 <i |
|
|
|
class="el-icon-arrow-left"></i></el-button> |
|
|
|
</div> |
|
|
|
<div style="margin-top: 10px"> |
|
|
|
<el-button class="difference" @click="delAbs(medicalPackageAsbitemsChoosed,'all')">全部移除</el-button> |
|
|
|
<el-button class="difference" @click="delAbs(medicalPackageAsbitemsChoosed, 'all')">全部移除</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!--已选组合项目--> |
|
|
|
<div :style="'display: block; width:' + (window.pageWidth - 310 - 280 - 120 - 45 - 110) + 'px;'"> |
|
|
|
<div style="height:32px;"> |
|
|
|
<span style="padding: 5px;font-size: 14px;font-weight: 400;color: #232748;font-family: NotoSansSC-Regular;margin-bottom: 10px;">快速选择</span> |
|
|
|
<el-select v-model="asbItemId" placeholder="快速选择组合项目" size="small" |
|
|
|
filterable default-first-option :filter-method="filterMethod" |
|
|
|
clearable @clear="quickAsb = deepCopy(dict.asbItemQuick)" |
|
|
|
<span |
|
|
|
style="padding: 5px;font-size: 14px;font-weight: 400;color: #232748;font-family: NotoSansSC-Regular;margin-bottom: 10px;">快速选择</span> |
|
|
|
<el-select v-model="asbItemId" placeholder="快速选择组合项目" size="small" filterable default-first-option |
|
|
|
:filter-method="filterMethod" clearable @clear="quickAsb = deepCopy(dict.asbItemQuick)" |
|
|
|
@change="quickChoosedAsb" ref="quickAsbOCX"> |
|
|
|
<el-option v-for="item in quickAsb" :key="item.id" :value="item.id" :label="item.displayName" /> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<div class="box"> |
|
|
|
<el-table :data="medicalPackageAsbitems" size="small" border |
|
|
|
@selection-change="selectRight" highlight-current-row |
|
|
|
:height="window.pageHeight < 600 ? 190:Math.floor((window.pageHeight - 230) / 2)" |
|
|
|
@row-dblclick="removeAbs" |
|
|
|
@row-click="removeAsbItem" ref="tablemedicalPackageAsbitems"> |
|
|
|
<el-table :data="medicalPackageAsbitems" size="small" border @selection-change="selectRight" |
|
|
|
highlight-current-row :height="window.pageHeight < 600 ? 190 : Math.floor((window.pageHeight - 230) / 2)" |
|
|
|
@row-dblclick="removeAbs" @row-click="removeAsbItem" ref="tablemedicalPackageAsbitems"> |
|
|
|
<!-- |
|
|
|
<el-table-column type="selection"></el-table-column> |
|
|
|
--> |
|
|
|
<el-table-column type="index" min-width="40" align="center" label="序号"/> |
|
|
|
<el-table-column |
|
|
|
label="已选组合项目" |
|
|
|
min-width="120" |
|
|
|
prop="displayName" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column type="index" min-width="40" align="center" label="序号" /> |
|
|
|
<el-table-column label="已选组合项目" min-width="120" prop="displayName"></el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -88,27 +80,27 @@ |
|
|
|
import moment from 'moment'; |
|
|
|
import { mapState } from "vuex"; |
|
|
|
import { getapi, postapi, putapi } from "@/api/api"; |
|
|
|
import { arrayExistObj, tcdate, arrayFilter, arrayReduce, deepCopy,dddw } from "../../utlis/proFunc"; |
|
|
|
import { arrayExistObj, tcdate, arrayFilter, arrayReduce, deepCopy, dddw } from "../../utlis/proFunc"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
props:['asbitemId','PreAsbitemBrush'], |
|
|
|
props: ['asbitemId', 'PreAsbitemBrush'], |
|
|
|
data() { |
|
|
|
return { |
|
|
|
packagePrice:0, //分组总价 |
|
|
|
medicalPackageAsbitems:[], //分组包含组合项目 |
|
|
|
medicalPackageAsbitemsChoosed:[], //分组包含组合项目(选中的) |
|
|
|
itemTypeIds:[], //项目类别 |
|
|
|
asbItemId:'', //当前快速选到的给合项目ID |
|
|
|
quickAsb:[], //过滤显示的组合项目 |
|
|
|
packagePrice: 0, //分组总价 |
|
|
|
medicalPackageAsbitems: [], //分组包含组合项目 |
|
|
|
medicalPackageAsbitemsChoosed: [], //分组包含组合项目(选中的) |
|
|
|
itemTypeIds: [], //项目类别 |
|
|
|
asbItemId: '', //当前快速选到的给合项目ID |
|
|
|
quickAsb: [], //过滤显示的组合项目 |
|
|
|
|
|
|
|
asbItemChoosed: [], //勾选的 未选组合项目 |
|
|
|
startPoint:-1, |
|
|
|
PstartPoint:-1, |
|
|
|
startPoint: -1, |
|
|
|
PstartPoint: -1, |
|
|
|
|
|
|
|
medicalPackageVisble:false, //复制套餐 |
|
|
|
curPackageId:'', //当前选中套餐ID |
|
|
|
packageAsbitems:[], //套餐中包含的组合项目 |
|
|
|
medicalPackageVisble: false, //复制套餐 |
|
|
|
curPackageId: '', //当前选中套餐ID |
|
|
|
packageAsbitems: [], //套餐中包含的组合项目 |
|
|
|
|
|
|
|
|
|
|
|
selecteddata: [], //已选数据 |
|
|
|
@ -128,27 +120,27 @@ export default { |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
...mapState(["window","dict","customerOrg"]), |
|
|
|
...mapState(["window", "dict", "customerOrg"]), |
|
|
|
}, |
|
|
|
|
|
|
|
created() { |
|
|
|
this.dictInit() |
|
|
|
}, |
|
|
|
|
|
|
|
updated () { |
|
|
|
updated() { |
|
|
|
this.refreshTable('tablemedicalPackageAsbitems') |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
moment,dddw,deepCopy, |
|
|
|
moment, dddw, deepCopy, |
|
|
|
//表格强制刷新 |
|
|
|
refreshTable(tableRef){ |
|
|
|
refreshTable(tableRef) { |
|
|
|
this.$nextTick(() => { |
|
|
|
this.$refs[tableRef].doLayout() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
//初始数据 |
|
|
|
dictInit(){ |
|
|
|
dictInit() { |
|
|
|
//体检类别 树结构 |
|
|
|
getapi("/api/app/item-type/by-code-all").then((res) => { |
|
|
|
if (res.code != -1) { |
|
|
|
@ -158,7 +150,7 @@ export default { |
|
|
|
}); |
|
|
|
|
|
|
|
//获取所有组合项目 |
|
|
|
postapi("/api/app/asbitem/GetBasicList",{isFilterActive:'Y'}).then((res) => { |
|
|
|
postapi("/api/app/asbitem/GetBasicList", { isFilterActive: 'Y' }).then((res) => { |
|
|
|
if (res.code != -1) { |
|
|
|
this.dict.asbItemAll = res.data; |
|
|
|
this.dict.asbItemAll.forEach(e => { |
|
|
|
@ -171,7 +163,7 @@ export default { |
|
|
|
}); |
|
|
|
|
|
|
|
//套餐 |
|
|
|
postapi("/api/app/medicalpackage/getmedicalpackagelist",{}).then((res) => { |
|
|
|
postapi("/api/app/medicalpackage/getmedicalpackagelist", {}).then((res) => { |
|
|
|
if (res.code != -1) { |
|
|
|
this.dict.medicalPackage = res.data; |
|
|
|
} |
|
|
|
@ -203,11 +195,11 @@ export default { |
|
|
|
getAsbItemByItemType(e) { |
|
|
|
this.getAsbItemByItemTypeAll() |
|
|
|
//刷新显示 未选组合项目 |
|
|
|
let choosed = [].concat(this.medicalPackageAsbitems,[{asbitemId:this.asbitemId}]) |
|
|
|
let choosed = [].concat(this.medicalPackageAsbitems, [{ asbitemId: this.asbitemId }]) |
|
|
|
arrayReduce(this.dict.asbItem, choosed, "id=asbitemId"); |
|
|
|
arrayReduce(this.dict.asbItemQuick, choosed, "id=asbitemId"); |
|
|
|
this.quickAsb = Object.assign(this.dict.asbItemQuick) |
|
|
|
if(e){ |
|
|
|
if (e) { |
|
|
|
this.$refs.itemTypeIds.toggleDropDownVisible(); |
|
|
|
} |
|
|
|
}, |
|
|
|
@ -231,11 +223,11 @@ export default { |
|
|
|
|
|
|
|
// 添加组合项目 |
|
|
|
///api/app/register-asbitem/many/3fa85f64-5717-4562-b3fc-2c963f66afa6' |
|
|
|
async addAbs(asbItemChoosed,oprType) { |
|
|
|
async addAbs(asbItemChoosed, oprType) { |
|
|
|
// console.log('this.medicalPackage',this.medicalPackage) |
|
|
|
// console.log('asbItemChoosed', asbItemChoosed) |
|
|
|
if(!this.asbitemId){ |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目"}) |
|
|
|
if (!this.asbitemId) { |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目" }) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
@ -243,12 +235,12 @@ export default { |
|
|
|
|
|
|
|
//oprType 不传值时,兼容勾选方式 |
|
|
|
//勾选时不需要此操作 start |
|
|
|
if(oprType && oprType == 'all'){ |
|
|
|
if (oprType && oprType == 'all') { |
|
|
|
asbItemChoosed = deepCopy(this.dict.asbItem) |
|
|
|
}else if(oprType && oprType == 'choosed'){ |
|
|
|
} else if (oprType && oprType == 'choosed') { |
|
|
|
asbItemChoosed = [] |
|
|
|
this.dict.asbItem.forEach(e =>{ |
|
|
|
if(e.choosed){ |
|
|
|
this.dict.asbItem.forEach(e => { |
|
|
|
if (e.choosed) { |
|
|
|
asbItemChoosed.push(e) |
|
|
|
e.choosed = false |
|
|
|
} |
|
|
|
@ -257,7 +249,7 @@ export default { |
|
|
|
//勾选时不需要此操作 end |
|
|
|
|
|
|
|
if (asbItemChoosed.length < 1) { |
|
|
|
this.$message.warning({ showClose: true, message: "请选择要添加的组合项目"}) |
|
|
|
this.$message.warning({ showClose: true, message: "请选择要添加的组合项目" }) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
@ -268,7 +260,7 @@ export default { |
|
|
|
for (let i = 0; i < asbItemChoosed.length; i++) { |
|
|
|
let pojo = { |
|
|
|
asbitemId: asbItemChoosed[i].id, |
|
|
|
displayName:asbItemChoosed[i].displayName |
|
|
|
displayName: asbItemChoosed[i].displayName |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -311,8 +303,8 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//选择 未选的组合项目 |
|
|
|
chooseAsbItem(row){ |
|
|
|
this.dict.asbItem.forEach((e,index) => { |
|
|
|
chooseAsbItem(row) { |
|
|
|
this.dict.asbItem.forEach((e, index) => { |
|
|
|
e.index = index; |
|
|
|
return e |
|
|
|
}); |
|
|
|
@ -344,7 +336,7 @@ export default { |
|
|
|
|
|
|
|
// 按住了ctrl 键 |
|
|
|
if (this.window.ctrl) { |
|
|
|
console.log('this.window.ctrl',this.window.ctrl,this.dict.asbItem) |
|
|
|
console.log('this.window.ctrl', this.window.ctrl, this.dict.asbItem) |
|
|
|
this.dict.asbItem[row.index].choosed = true; |
|
|
|
this.startPoint = row.index; |
|
|
|
return |
|
|
|
@ -364,21 +356,21 @@ export default { |
|
|
|
|
|
|
|
//删除 人员已选中的组合项目 |
|
|
|
///api/app/register-asbitem/many?RegisterAsbitemIds=3fa85f64-5717-4562-b3fc-2c963f66afa6 |
|
|
|
delAbs(absForDel,oprType) { |
|
|
|
if(!this.asbitemId){ |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目"}) |
|
|
|
delAbs(absForDel, oprType) { |
|
|
|
if (!this.asbitemId) { |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目" }) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let lfind = -1 |
|
|
|
|
|
|
|
//勾选时不需要此操作 start |
|
|
|
if(oprType && oprType == 'all'){ |
|
|
|
if (oprType && oprType == 'all') { |
|
|
|
absForDel = deepCopy(this.medicalPackageAsbitems) |
|
|
|
}else if(oprType && oprType == 'choosed'){ |
|
|
|
} else if (oprType && oprType == 'choosed') { |
|
|
|
absForDel = [] |
|
|
|
this.medicalPackageAsbitems.forEach(e =>{ |
|
|
|
if(e.choosed){ |
|
|
|
this.medicalPackageAsbitems.forEach(e => { |
|
|
|
if (e.choosed) { |
|
|
|
absForDel.push(deepCopy(e)) |
|
|
|
e.choosed = false |
|
|
|
} |
|
|
|
@ -387,7 +379,7 @@ export default { |
|
|
|
//勾选时不需要此操作 end |
|
|
|
|
|
|
|
if (absForDel.length < 1) { |
|
|
|
this.$message.warning({ showClose: true, message: "请选择要移除的组合项目"}) |
|
|
|
this.$message.warning({ showClose: true, message: "请选择要移除的组合项目" }) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
@ -413,8 +405,8 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//选择 已选的组合项目 |
|
|
|
removeAsbItem(row){ |
|
|
|
this.medicalPackageAsbitems.forEach((e,index) => { |
|
|
|
removeAsbItem(row) { |
|
|
|
this.medicalPackageAsbitems.forEach((e, index) => { |
|
|
|
e.index = index; |
|
|
|
return e |
|
|
|
}); |
|
|
|
@ -446,7 +438,7 @@ export default { |
|
|
|
|
|
|
|
// 按住了ctrl 键 |
|
|
|
if (this.window.ctrl) { |
|
|
|
console.log('this.window.ctrl',this.window.ctrl,this.medicalPackageAsbitems) |
|
|
|
console.log('this.window.ctrl', this.window.ctrl, this.medicalPackageAsbitems) |
|
|
|
this.medicalPackageAsbitems[row.index].choosed = true; |
|
|
|
this.PstartPoint = row.index; |
|
|
|
return |
|
|
|
@ -471,26 +463,26 @@ export default { |
|
|
|
|
|
|
|
//保存按钮 |
|
|
|
btnSave() { |
|
|
|
if(!this.asbitemId){ |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目"}) |
|
|
|
if (!this.asbitemId) { |
|
|
|
this.$message.warning({ showClose: true, message: "请先选中组合项目" }) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let body = { |
|
|
|
asbitemId:this.asbitemId, |
|
|
|
mutualExclusionAsbitemIds:[] |
|
|
|
asbitemId: this.asbitemId, |
|
|
|
preCheckAsbitemIds: [] |
|
|
|
} |
|
|
|
|
|
|
|
this.medicalPackageAsbitems.forEach(e =>{ |
|
|
|
body.mutualExclusionAsbitemIds.push(e.asbitemId) |
|
|
|
this.medicalPackageAsbitems.forEach(e => { |
|
|
|
body.preCheckAsbitemIds.push(e.asbitemId) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// /api/app/medical-package-detail/many |
|
|
|
postapi('/api/app/AsbitemMutualExclusion/UpdateAsbitemMutualExclusion',body |
|
|
|
).then(res => { |
|
|
|
if(res.code > -1){ |
|
|
|
this.$message.success({showClose:true,message:'操作成功!'}) |
|
|
|
postapi('/api/app/PreCheckAsbitem/UpdatePreCheckAsbitem', body |
|
|
|
).then(res => { |
|
|
|
if (res.code > -1) { |
|
|
|
this.$message.success({ showClose: true, message: '操作成功!' }) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
@ -504,25 +496,27 @@ export default { |
|
|
|
|
|
|
|
|
|
|
|
// 左侧勾选 |
|
|
|
selectLeft(val) { |
|
|
|
selectLeft(val) { |
|
|
|
this.asbItemChoosed = val; |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
//获取当前列列表数据 |
|
|
|
getPreAsbitems(asbitemId) { |
|
|
|
if(asbitemId){ |
|
|
|
postapi('/api/app/AsbitemMutualExclusion/GetAsbitemMutualExclusionByAsbitemId',{asbitemId}).then((res) => { |
|
|
|
if(res.code != -1){ |
|
|
|
this.medicalPackageAsbitems = res.data.details; |
|
|
|
this.medicalPackageAsbitems.forEach(e => { |
|
|
|
e.asbitemId = e.mutualExclusionAsbitemId |
|
|
|
e.displayName = e.mutualExclusionAsbitemName |
|
|
|
}); |
|
|
|
if (asbitemId) { |
|
|
|
postapi('/api/app/PreCheckAsbitem/GetPreCheckAsbitemByAsbitemId', { asbitemId }).then((res) => { |
|
|
|
if (res.code != -1) { |
|
|
|
this.medicalPackageAsbitems = res.data; |
|
|
|
if (this.medicalPackageAsbitems.length > 0) { |
|
|
|
this.medicalPackageAsbitems.forEach(e => { |
|
|
|
e.asbitemId = e.preCheckAsbitemId |
|
|
|
e.displayName = e.preCheckAsbitemName |
|
|
|
}); |
|
|
|
} |
|
|
|
this.getAsbItemByItemType() |
|
|
|
} |
|
|
|
}); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
this.medicalPackageAsbitems = [] |
|
|
|
this.getAsbItemByItemType() |
|
|
|
} |
|
|
|
@ -534,7 +528,7 @@ export default { |
|
|
|
watch: { |
|
|
|
// |
|
|
|
"PreAsbitemBrush"(newVal, oldVal) { |
|
|
|
console.log("asbitemId ",newVal,oldVal); |
|
|
|
console.log("asbitemId ", newVal, oldVal); |
|
|
|
if (newVal != oldVal) { |
|
|
|
this.getPreAsbitems(this.asbitemId); |
|
|
|
} |
|
|
|
@ -543,10 +537,7 @@ export default { |
|
|
|
}; |
|
|
|
</script> |
|
|
|
<style scoped> |
|
|
|
|
|
|
|
.box { |
|
|
|
margin-top: 5px; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
</style> |