|
|
<template> <div style="display: flex; margin-top:5px;"> <div :style="'display: flex;width:' + (window.pageWidth - window.pageMarginWidth - 110 - 5) + 'px;font-size:14px;'"> <!--未选组合项目--> <div style="display: block; width:300px;"> <div> <span>项目类别</span> <el-cascader :options="dict.itemTypeTree" v-model="itemTypeIds" popper-class="example" style="margin-left: 3px;width:240px;" :props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }" clearable filterable @change="getAsbItemByItemType" size="small"> </el-cascader> </div> <div class="box"> <el-table :data="dict.asbItem" border size="small" highlight-current-row :height="tableHeight" @row-dblclick="dbClickChoosedAsb" row-key="id" @selection-change="selectLeft" :row-class-name="handleRowClassName" @row-click="chooseAsbItem"> <!-- <el-table-column type="selection" align="center" ></el-table-column> --> <el-table-column type="index" align="center" width="40"/> <el-table-column label="未选组合项目" min-width="170" prop="displayName" align="center" ></el-table-column> </el-table> </div> </div>
<!--中间操作按钮--> <div style="display: block;margin: 40px 10px 0 15px;width:110px;"> <div v-show="checkPagePriv(pagePriv.privs,'添加')" style="padding: 5px 0;"> <el-button class="commonbutton" @click="addAbs(asbItemChoosed,'choosed')" >添加 <i class="el-icon-arrow-right"></i></el-button> </div> <div v-show="checkPagePriv(pagePriv.privs,'全部添加')" style="padding: 5px 0;"> <el-button class="difference" @click="addAbs(asbItemChoosed,'all')">全部添加</el-button> </div> <div v-show="checkPagePriv(pagePriv.privs,'移除')" style="padding: 5px 0;"> <el-button class="commonbutton" @click="delAbs(customerOrgGroupAsbitemsChoosed,'choosed')">移除 <i class="el-icon-arrow-left"></i ></el-button> </div> <div v-show="checkPagePriv(pagePriv.privs,'全部移除')" style="padding: 5px 0;"> <el-button class="difference" @click="delAbs(customerOrgGroupAsbitemsChoosed,'all')">全部移除</el-button> </div> </div>
<!--已选组合项目--> <div :style="'display: block; width:' + (window.pageWidth - 300 - 120 - window.pageMarginWidth - 110 - 5) + 'px;'"> <div style="height:32px;"> <div v-show="checkPagePriv(pagePriv.privs,'快速选择')"> <span>快速选择</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" style="margin-left: 3px;width:240px;"> <el-option v-for="item in quickAsb" :key="item.id" :value="item.id" :label="item.displayName" /> </el-select> </div> </div> <div class="box"> <el-table :data="customerOrgGroupAsbitems" border size="small" @selection-change="selectRight" highlight-current-row :height="tableHeight" :summary-method="getSummaries" show-summary :row-class-name="handleRowClassName" @row-dblclick="removeAbs" @row-click="removeAsbItem" ref="tableCustomerOrgGroupAsbitems"> <!-- <el-table-column type="selection"></el-table-column> --> <el-table-column type="index" width="40" align="center"/> <el-table-column label="已选组合项目" min-width="140" prop="displayName" ></el-table-column> <el-table-column label="标准价格" prop="price" min-width="60" align="center"/> <el-table-column label="折扣" min-width="40" align="center"> <template slot-scope="scope"> <el-input @input="changeDiscount(scope.$index)" type="number" size="small" v-model="scope.row.discount" /> </template> </el-table-column> <el-table-column label="应收价格" prop="customerOrgGroupDetailPrice" min-width="60" align="center"> <template slot-scope="scope"> <el-input @input="changePrices(scope.$index)" type="number" size="small" v-model="scope.row.customerOrgGroupDetailPrice" /> </template> </el-table-column> <el-table-column label="数量" prop="customerOrgGroupDetailAmount" width="50" align="center"> <template slot-scope="scope"> <el-input @input="changePrices(scope.$index)" type="number" size="small" v-model="scope.row.customerOrgGroupDetailAmount" /> </template> </el-table-column> <el-table-column label="标准金额" prop="asbitemMoney" min-width="60" align="center"> </el-table-column> <el-table-column label="应收金额" prop="customerOrgGroupDetailMoney" min-width="60" align="center"> </el-table-column> </el-table> </div> </div> </div> <!--批量操作按钮(复制套餐与分组)--> <div style="display: block;margin-left: 5px;"> <div v-show="checkPagePriv(pagePriv.privs,'复制分组')" style="margin-top: 50px;"> <el-button class="commonbutton" @click="btnCopyGroup">复制分组</el-button> </div> <div v-show="checkPagePriv(pagePriv.privs,'复制套餐')" style="margin-top: 10px;"> <el-button class="commonbutton" @click="btnCopyMedicalPackage">复制套餐</el-button> </div> <div v-show="checkPagePriv(pagePriv.privs,'保存')" style="margin-top: 10px;"> <el-button class="commonbutton" @click="btnSave">保存</el-button> </div> </div> <!--复制套餐--> <el-dialog title="体检套餐" :visible.sync="medicalPackageVisble" width="600px" height="400" :show-close="false" :close-on-click-modal="false" :append-to-body="true"> <el-table :data="dict.medicalPackage" border height="350" row-key="id" size="small" highlight-current-row @row-click="packageRowClick" @row-dblclick="rowDblclick" ref="patientList" > <!-- "displayName": "健康体检套餐", "price": 20.00, "forSexId": "0", "isActive": "Y", "remark": "2", "displayOrder": 1, "simpleCode": "JKTJTC", "creatorName": "admin", "lastModifierName": "users", "lastModificationTime": "2023-08-04T16:34:02.94408", "lastModifierId": "3a0ca83b-3116-da05-3916-dfd4c0c548cb", "creationTime": "2023-07-10T19:53:30.210553", "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec", "id": "3a0c51d3-2345-38df-ba0b-1862a3c3606f" --> <el-table-column type="index" width="50" /> <el-table-column prop="displayName" label="套餐名称" width="180"/> <el-table-column prop="price" label="价格" width="80"/> <el-table-column prop="forSexId" label="适用性别" width="80"> <template slot-scope="scope"> <div> {{ dddw(dict.forSex, "id", scope.row.forSexId, "displayName") }} </div> </template> </el-table-column> <el-table-column prop="remark" label="备注" width="100"/> <el-table-column prop="creatorName" label="创建人员" width="80"/> <el-table-column prop="creationTime" label="创建日期" width="100"> <template slot-scope="scope"> <div v-if="scope.row.creationTime"> {{ moment(scope.row.creationTime).format("yyyy-MM-DD") }} </div> </template> </el-table-column> <el-table-column prop="lastModifierName" label="修改人员" width="80"/> <el-table-column prop="lastModificationTime" label="修改日期" width="100"> <template slot-scope="scope"> <div v-if="scope.row.lastModificationTime"> {{ moment(scope.row.lastModificationTime).format("yyyy-MM-DD") }} </div> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="medicalPackageVisble = false" style="width:90px;">取消</el-button> <el-button type="primary" @click="copyMedicalPackage" style="width:90px;">确定</el-button> </span> </el-dialog>
<!--复制分组--> <el-dialog title="单位分组" :visible.sync="groupVisble" width="700px" height="500" :show-close="false" :close-on-click-modal="false" :append-to-body="true"> <el-table :data="customerOrgGroups" ref="customerOrgGroups" style="margin-top: 2px" row-key="id" border height="240px" size="small" highlight-current-row :row-class-name="handleRowClassName" @row-click="groupRowClick" @row-dblclick="groupRowDblclick" > > <el-table-column type="index" label="序号" min-width="50" align="center" /> <el-table-column prop="displayName" label="名称" min-width="150" /> <el-table-column prop="price" label="价格" min-width="60" align="center" /> <el-table-column prop="forSexId" label="适用性别" min-width="60" align="center" > <template slot-scope="scope"> {{ dddw(dict.forSex, "id", scope.row.forSexId, "displayName") }} </template> </el-table-column> <el-table-column prop="maritalStatusId" label="适用婚姻状况" min-width="80" align="center" > <template slot-scope="scope"> {{ dddw( dict.forMaritalStatus, "id", scope.row.maritalStatusId, "displayName" ) }} </template> </el-table-column> <el-table-column prop="creatorName" label="创建者" min-width="60" align="center" /> <el-table-column label="创建时间" min-width="150" align="center"> <template slot-scope="scope"> {{ scope.row.creationTime ? moment(scope.row.creationTime).format("yyyy-MM-DD HH:mm:ss") : "" }} </template> </el-table-column> <el-table-column label="操作"> <template> <el-tag class="move" style="cursor: move; margin-left: 15px" draggable="true" > <i class="el-icon-d-caret" style="width: 1rem; height: 1rem"></i> </el-tag> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="groupVisble = false" style="width:90px;">取消</el-button> <el-button type="primary" @click="copyGroup" style="width:90px;">确定</el-button> </span> </el-dialog> </div></template><script>import moment from 'moment';import { mapState } from "vuex";import { getapi, postapi, putapi } from "@/api/api";import { getPagePriv,checkPagePriv, arrayExistObj, tcdate, arrayFilter, arrayReduce, deepCopy,dddw } from "../../utlis/proFunc";
export default { props:['customerOrgGroup','refreshMoney'], data() { return { pagePriv:{ routeUrlorPageName:'customerOrgGroup', //当前页面归属路由或归属页面权限名称
privs:[] // 页面权限
}, groupPrice:0, //分组总价
customerOrgGroupAsbitems:[], //分组包含组合项目(显示)
customerOrgGroupAsbitemsChoosed:[], //分组包含组合项目(显示) 被选中
itemTypeIds:[], //项目类别
asbItemId:'', //当前快速选到的给合项目ID
quickAsb:[], //过滤显示的组合项目
asbItemChoosed: [], //勾选的 未选组合项目
startPoint:-1, PstartPoint:-1,
medicalPackageVisble:false, //复制套餐
curPackageId:'', //当前选中套餐ID
packageAsbitems:[], //套餐中包含的组合项目
groupVisble:false, //复制分组
customerOrgGroups:[], //历次分组
curGroupId:'', //当前选中套餐ID
groupAsbitems:[], //选中分组包含组合项目
dialogVisible: false, copyGroupdialogVisible: false, packagelist: [], tabledata: [], temporaryselection: [], //已选组合项目table
copegroupdata: [], //复制分组
addrulst: [], //添加保存的Id
price: "", //价格
title: 1, }; }, computed: { ...mapState(["window","dict","dataTransOpts", "customerOrg"]),
tableHeight(){ let height = 600 if(this.window.pageHeight > 600){ height = this.window.pageHeight } // console.log(height - this.window.pageHeaderHeight - this.window.pageMarginHeight - 240 - 96 - 10)
return height - this.window.pageHeaderHeight - this.window.pageMarginHeight - 240 - 96 - 16 } },
created() { //获取用户当前页面的权限
let userPriv = window.sessionStorage.getItem('userPriv') if(userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
this.dictInit() }, updated () { this.refreshTable('tableCustomerOrgGroupAsbitems') }, methods: { moment,dddw,deepCopy,checkPagePriv, //表格强制刷新
refreshTable(tableRef){ this.$nextTick(() => { this.$refs[tableRef].doLayout() }) },
//初始数据
dictInit(){ //体检类别 树结构
getapi("/api/app/item-type/by-code-all").then((res) => { if (res.code != -1) { this.dict.itemTypeTree = res.data; tcdate(this.dict.itemTypeTree); } });
//获取所有组合项目
postapi("/api/app/asbitem/getasbitemlist",{isFilterActive:'Y'}).then((res) => { if (res.code != -1) { this.dict.asbItemAll = res.data; this.dict.asbItemAll.forEach(e => { e.choosed = false }) this.dict.asbItem = deepCopy(this.dict.asbItemAll); this.dict.asbItemQuick = deepCopy(res.data); this.quickAsb = deepCopy(res.data); } });
//套餐
postapi("/api/app/medicalpackage/getmedicalpackagelist",{}).then((res) => { if (res.code != -1) { this.dict.medicalPackage = res.data; } });
},
handleRowClassName({ row, rowIndex }) { // highLightBg 为 'selected'的高亮
//console.log(rowIndex, row)
//return row.highLightBg == 'selected' ? 'high-light-bg' : '';
if (row.choosed) { return 'current-row'; } else { return ''; }
},
//项目类别过滤 组合项目,未过滤已选择的组合项目
getAsbItemByItemTypeAll() { //console.log('getAsbItemByItemType', typeof this.itemTypeIds, this.itemTypeIds)
let lv = ""; if (typeof this.itemTypeIds === "object") { lv = this.itemTypeIds[this.itemTypeIds.length - 1]; }
if (lv) { this.dict.asbItem = arrayFilter(this.dict.asbItemAll, "itemTypeId", lv); } else { this.dict.asbItem = deepCopy(this.dict.asbItemAll); } //console.log('lv,this.dict.asbItem', lv, this.dict.asbItem)
this.dict.asbItemQuick = deepCopy(this.dict.asbItemAll);
},
//按项目类别显示组合项目,并过滤已选择的组合项目
getAsbItemByItemType() { this.getAsbItemByItemTypeAll() //刷新显示 未选组合项目
arrayReduce(this.dict.asbItem, [...this.customerOrgGroupAsbitems], "id=asbitemId"); arrayReduce(this.dict.asbItemQuick, [...this.customerOrgGroupAsbitems], "id=asbitemId"); this.quickAsb = Object.assign(this.dict.asbItemQuick) },
//快速选择组合项目时,调整可按拼间简码及简称查找
filterMethod(keyWords) { //console.log('filterMethod',this.dict.asbItemQuick)
if (keyWords) { this.quickAsb = []; this.dict.asbItemQuick.forEach(item => { if (item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1 || item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1 || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1) { this.quickAsb.push(item); } }); } else { this.quickAsb = deepCopy(this.dict.asbItemQuick); } },
// 添加组合项目
///api/app/register-asbitem/many/3fa85f64-5717-4562-b3fc-2c963f66afa6'
async addAbs(asbItemChoosed,oprType) { // console.log('this.customerOrgGroup',this.customerOrgGroup)
// console.log('asbItemChoosed', asbItemChoosed)
if(!this.customerOrgGroup.id){ this.$message.warning("请先选中单位分组") return } if(this.customerOrgGroup.isComplete && this.customerOrgGroup.isComplete.toUpperCase() == 'Y'){ this.$message.warning("体检次数已完成,不允许操作") return } let message = [] let checked = true let lfind = -1
//oprType 不传值时,兼容勾选方式
//勾选时不需要此操作 start
if(oprType && oprType == 'all'){ asbItemChoosed = deepCopy(this.dict.asbItem) }else if(oprType && oprType == 'choosed'){ asbItemChoosed = [] this.dict.asbItem.forEach(e =>{ if(e.choosed){ asbItemChoosed.push(e) e.choosed = false } }) } //勾选时不需要此操作 end
if (asbItemChoosed.length < 1) { this.$message.warning("请选择要添加的组合项目") return }
//性别、年龄判断
// "displayName": "身高体重",
// "shortName": "哈f哈",
// "forSexId": "F",
// "itemTypeId": "3a0b16de-75b9-c910-c61b-844709a88940",
// "price": 0,
// for (let i = 0; i < asbItemChoosed.length; i++) {
// if (this.customerOrgGroup.forSexId == 'A') break //未选性别时,无需判断组合项目性别限制
// if (asbItemChoosed[i].forSexId == 'A' || asbItemChoosed[i].forSexId == 'U') continue
// if (asbItemChoosed[i].forSexId != this.customerOrgGroup.sexId) {
// this.$message.warning(`所选项目:${asbItemChoosed[i].displayName},不适合当前人员性别`)
// checked = false
// break
// }
// }
// //console.log(222,checked)
// if (!checked) return
// 去掉重复的项目
arrayReduce(asbItemChoosed, this.customerOrgGroupAsbitems, "id=asbitemId")
for (let i = asbItemChoosed.length - 1; i > - 1; i--) { if (this.customerOrgGroup.forSexId == 'A') break //未选性别时,无需判断组合项目性别限制
if (asbItemChoosed[i].forSexId == 'A' || asbItemChoosed[i].forSexId == 'U') continue if (asbItemChoosed[i].forSexId != this.customerOrgGroup.forSexId) { message.push(asbItemChoosed[i].displayName) //.warning(`所选项目:${asbItemChoosed[i].displayName},不适合当前人员性别`)
checked = false asbItemChoosed.splice(i,1) } } //console.log(222,checked)
if (!checked) this.$message.warning(`所选项目【${JSON.stringify(message)}】不适合当前人员性别`)
for (let i = 0; i < asbItemChoosed.length; i++) { let pojo = { asbitemId: asbItemChoosed[i].id, displayName:asbItemChoosed[i].displayName, discount:100, customerOrgGroupDetailAmount:1, price:asbItemChoosed[i].price, customerOrgGroupDetailPrice:asbItemChoosed[i].price, customerOrgGroupDetailMoney: asbItemChoosed[i].price, asbitemMoney: asbItemChoosed[i].price, }
this.customerOrgGroupAsbitems.push(pojo) //this.customerOrgGroupAsbitems.push({ ...pojo, asbitemName: asbItemChoosed[i].displayName })
lfind = arrayExistObj(this.dict.asbItem, 'id', asbItemChoosed[i].id) if (lfind > -1) this.dict.asbItem.splice(lfind, 1)
lfind = arrayExistObj(this.dict.asbItemQuick, 'id', asbItemChoosed[i].id) if (lfind > -1) this.dict.asbItemQuick.splice(lfind, 1)
}
},
//双击选择组合项目
dbClickChoosedAsb(row) { this.addAbs([row]); }, //快速选择组合项目
quickChoosedAsb(v) { //远程查询时,设置了 value-key 也不管用,只能取到value console.log('quickChoosedAsb',v)
let lfind = -1 if (v) { lfind = arrayExistObj(this.dict.asbItemQuick, 'id', v) if (lfind > -1) { this.addAbs([this.dict.asbItemQuick[lfind]]) } }
this.$nextTick(() => { this.$refs['quickAsbOCX'].blur(); //total asbItemId
this.asbItemId = '' this.quickAsb = deepCopy(this.dict.asbItemQuick) this.$refs['quickAsbOCX'].focus(); //total asbItemId
});
},
//选择 未选的组合项目
chooseAsbItem(row){ this.dict.asbItem.forEach((e,index) => { e.index = index; return e }); // 按住了shift键
if (this.window.shift) { //清除所有选择
this.dict.asbItem.forEach(e => { e.choosed = false; return e });
if (this.startPoint == - 1) { this.dict.asbItem[row.index].choosed = true; this.startPoint = row.index; return }
if (this.startPoint > row.index) { for (let i = row.index; i <= this.startPoint; i++) { this.dict.asbItem[i].choosed = true } } else if (this.startPoint <= row.index) { for (let i = this.startPoint; i <= row.index; i++) { this.dict.asbItem[i].choosed = true } } return }
// 按住了ctrl 键
if (this.window.ctrl) { console.log('this.window.ctrl',this.window.ctrl,this.dict.asbItem) this.dict.asbItem[row.index].choosed = true; this.startPoint = row.index; return }
// 未按住了ctrl 、shift 键
//清除所有选择
//console.log('清除所有选择')
this.dict.asbItem.forEach(e => { e.choosed = false; return e }); this.dict.asbItem[row.index].choosed = true; this.startPoint = row.index;
},
//删除 人员已选中的组合项目
///api/app/register-asbitem/many?RegisterAsbitemIds=3fa85f64-5717-4562-b3fc-2c963f66afa6
delAbs(absForDel,oprType) { if(!this.customerOrgGroup.id){ this.$message.warning("请先选中单位分组") return } if(this.customerOrgGroup.isComplete && this.customerOrgGroup.isComplete.toUpperCase() == 'Y'){ this.$message.warning("体检次数已完成,不允许操作") return }
let lfind = -1
//勾选时不需要此操作 start
if(oprType && oprType == 'all'){ absForDel = deepCopy(this.customerOrgGroupAsbitems) }else if(oprType && oprType == 'choosed'){ absForDel = [] this.customerOrgGroupAsbitems.forEach(e =>{ if(e.choosed){ absForDel.push(deepCopy(e)) e.choosed = false } }) } //勾选时不需要此操作 end
if (absForDel.length < 1) { this.$message.warning("请选择要移除的组合项目") return }
for (let i = 0; i < absForDel.length; i++) { lfind = arrayExistObj(this.customerOrgGroupAsbitems, 'asbitemId', absForDel[i].asbitemId) if (lfind > -1) this.customerOrgGroupAsbitems.splice(lfind, 1)
absForDel.splice(i, 1) i-- continue }
//刷新
this.getAsbItemByItemType()
},
//双击删除已选项目
removeAbs(row) { this.delAbs([row]); },
//选择 已选的组合项目
removeAsbItem(row){ this.customerOrgGroupAsbitems.forEach((e,index) => { e.index = index; return e }); // 按住了shift键
if (this.window.shift) { //清除所有选择
this.customerOrgGroupAsbitems.forEach(e => { e.choosed = false; return e });
if (this.PstartPoint == - 1) { this.customerOrgGroupAsbitems[row.index].choosed = true; this.PstartPoint = row.index; return }
if (this.PstartPoint > row.index) { for (let i = row.index; i <= this.PstartPoint; i++) { this.customerOrgGroupAsbitems[i].choosed = true } } else if (this.PstartPoint <= row.index) { for (let i = this.PstartPoint; i <= row.index; i++) { this.customerOrgGroupAsbitems[i].choosed = true } } return }
// 按住了ctrl 键
if (this.window.ctrl) { console.log('this.window.ctrl',this.window.ctrl,this.customerOrgGroupAsbitems) this.customerOrgGroupAsbitems[row.index].choosed = true; this.PstartPoint = row.index; return }
// 未按住了ctrl 、shift 键
//清除所有选择
//console.log('清除所有选择')
this.customerOrgGroupAsbitems.forEach(e => { e.choosed = false; return e }); this.customerOrgGroupAsbitems[row.index].choosed = true; this.PstartPoint = row.index;
},
changeDiscount(index){
this.customerOrgGroupAsbitems[index].customerOrgGroupDetailPrice = (this.customerOrgGroupAsbitems[index].discount * this.customerOrgGroupAsbitems[index].price/100).toFixed(2)
this.customerOrgGroupAsbitems[index].customerOrgGroupDetailMoney = (this.customerOrgGroupAsbitems[index].customerOrgGroupDetailPrice * this.customerOrgGroupAsbitems[index].customerOrgGroupDetailAmount).toFixed(2)
//this.getSummaries()
},
//修改价格或数量
changePrices(index){ this.customerOrgGroupAsbitems[index].customerOrgGroupDetailMoney = (this.customerOrgGroupAsbitems[index].customerOrgGroupDetailPrice * this.customerOrgGroupAsbitems[index].customerOrgGroupDetailAmount).toFixed(2)
this.customerOrgGroupAsbitems[index].asbitemMoney = (this.customerOrgGroupAsbitems[index].price * this.customerOrgGroupAsbitems[index].customerOrgGroupDetailAmount).toFixed(2)
this.customerOrgGroupAsbitems[index].discount = (this.customerOrgGroupAsbitems[index].customerOrgGroupDetailPrice * 100 / this.customerOrgGroupAsbitems[index].price).toFixed(2) //this.getSummaries()
},
//合计
getSummaries(param) { console.log('getSummaries param',param) // if(!param){
// param = {
// columns:[{}, {}, {}, {}, {}, {}, {property: 'asbitemMoney'},{property: 'customerOrgGroupDetailMoney'}],
// data:this.customerOrgGroupAsbitems
// }
// }
const { columns, data } = param; const sumCol = [6, 7] //需合计的列
const sums = []; columns.forEach((column, index) => { //console.log('column, index,data',column, index,data)
//显示合计列
if (index === 1) { sums[index] = '合计'; return; }
//不合计的列
if (sumCol.indexOf(index) == -1) { sums[index] = ''; return; }
sums[index] = 0 data.forEach(e => { if (!isNaN(e[column.property])) sums[index] += Number(e[column.property])// * e['amount']
}) sums[index] = sums[index].toFixed(2) //+ ' 元';
}); this.groupPrice = sums[7]; // console.log('getSummaries',sums)
// if (!this.totalFoucs) this.total = sums[5];
// if (!this.discountFoucs) this.discount = Number(this.total * 100 / this.totalStand).toFixed(2);
return sums; },
//复制分组
btnCopyGroup(){ console.log('this.customerOrgGroup',this.customerOrgGroup) if(!this.customerOrgGroup.id || !this.customerOrgGroup.customerOrgId){ this.$message.warning("请先选中单位分组") return } if(this.customerOrgGroup.isComplete && this.customerOrgGroup.isComplete.toUpperCase() == 'Y'){ this.$message.warning("体检次数已完成,不允许操作") return } getapi( `/api/app/customerorggroup/getlistinfilter?CustomerOrgRegisterId=${this.customerOrgGroup.customerOrgRegisterId}` ).then((res) => { if (res.code != -1) { this.customerOrgGroups = res.data.items; if(this.customerOrgGroups.length <2){ this.$message.warning("暂无其他分组可供复制") }else{ this.groupVisble = true } } }); },
//选中分组
async groupRowClick(row){ this.curGroupId = row.id this.groupAsbitems = [] try { let res = await getapi(`/api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=${row.id}`) if(res.code != -1) this.groupAsbitems = res.data } catch (error) { console.log(error) } },
//双击选分组,并确认复制
async groupRowDblclick(row){ await this.groupRowClick(row) this.copyGroup() },
//复制分组(确认选中分组)
copyGroup(){ if(!this.curGroupId){ this.$message.warning("请先选择要复制的套餐!") return } console.log('this.packageAsbitems',this.groupAsbitems) this.addAbs(deepCopy(this.groupAsbitems)) this.groupVisble = false },
//复制套餐
btnCopyMedicalPackage(){ if(!this.customerOrgGroup.id){ this.$message.warning("请先选中单位分组") return } if(this.customerOrgGroup.isComplete && this.customerOrgGroup.isComplete.toUpperCase() == 'Y'){ this.$message.warning("体检次数已完成,不允许操作") return } this.medicalPackageVisble = true },
//选中套餐
async packageRowClick(row){ this.curPackageId = row.id this.packageAsbitems = [] try { let res = await postapi('/api/app/medicalpackagedetail/getmedicalpackageinasbitem',{medicalPackageId:row.id}) this.packageAsbitems = res.data } catch (error) { console.log(error) } },
//双击选套餐,并确认复制
async rowDblclick(row){ await this.packageRowClick(row) this.copyMedicalPackage() },
//复制套餐(确认选中套餐)
copyMedicalPackage(){ if(!this.curPackageId){ this.$message.warning("请先选择要复制的套餐!") return } console.log('this.packageAsbitems',this.packageAsbitems) this.addAbs(deepCopy(this.packageAsbitems)) this.medicalPackageVisble = false },
//保存按钮
btnSave() { if(!this.customerOrgGroup.id){ this.$message.warning("请先选中单位分组") return } if(this.customerOrgGroup.isComplete && this.customerOrgGroup.isComplete.toUpperCase() == 'Y'){ this.$message.warning("体检次数已完成,不允许操作") return } let body = { customerOrgGroupId:this.customerOrgGroup.id, details:[] } // {
// "customerOrgGroupId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
// "details": [
// {
// "customerOrgGroupId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
// "asbitemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
// "price": 0,
// "amount": 0
// }
// ]
// }
this.customerOrgGroupAsbitems.forEach(e =>{ body.details.push({ customerOrgGroupId:this.customerOrgGroup.id, asbitemId:e.asbitemId, price:e.customerOrgGroupDetailPrice, amount:e.customerOrgGroupDetailAmount }) }) let group = deepCopy(this.customerOrgGroup); postapi('/api/app/customerorggroupdetail/createcustomerorggroupdetailmany',body ).then(res => { if(res.code != -1){ delete group.id; delete group.customerOrgId; delete group.isComplete; group.price = this.groupPrice // console.log('this.customerOrgGroup',this.customerOrgGroup)
// console.log('group',group)
return putapi(`/api/app/customer-org-group/${this.customerOrgGroup.id}`, group) } }).then(res =>{ if(res && res.code != -1){ console.log("操作成功"); group.id = this.customerOrgGroup.id this.refreshMoney(group) } }) },
//右侧勾选按钮
selectRight(val) { this.customerOrgGroupAsbitemsChoosed = val; },
// 左侧未选
selectLeft(val) { this.asbItemChoosed = val; },
//获取当前列列表数据
getCustomerOrgGroupAsbitems(customerOrgGroupId) { if(customerOrgGroupId){ getapi( `/api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=${customerOrgGroupId}` ).then((res) => { if(res.code != -1){ this.customerOrgGroupAsbitems = res.data; this.getAsbItemByItemType() } }); }else{ this.customerOrgGroupAsbitems = [] this.getAsbItemByItemType() } }, },
//监听事件
watch: { // 体检分组ID未切换换时 也可以强制刷新数据
"dataTransOpts.refresh.customer_org_group_detail.M":{ immediate:true, handler(newVal, oldVal) { console.log(`watch 体检分组 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.customerOrgGroup.id}`); this.getCustomerOrgGroupAsbitems(this.customerOrgGroup.id); } }, },};</script><style scoped>
.box { margin-top: 5px; /* border: 1px solid #000; */}
.btnClass { width:100px; margin-bottom: 5px}
</style>
|