src/views/doctor/check/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/package/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/doctor/check/index.vue
@@ -676,7 +676,8 @@ <el-tab-pane label="病种" name="first"> <div class="tab8"> <div class="tab3"> <el-form :model="queryParam1" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px"> <el-form @submit.native.prevent :model="queryParam1" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px"> <el-form-item> <el-input placeholder="输入关键字进行过滤" v-model="queryParam1.nr" clearable> </el-input> @@ -812,7 +813,8 @@ import { getlistUser } from "@/api/system/user"; import { getChildList } from "@/api/system/dept"; import { resultList } from "@/api/doctor/examination"; import { get } from "sortablejs"; import { selectZT } from "@/api/system/package"; export default { dicts: ["sys_user_sex", "sys_yes_no", "tj_result_type", "lj_positive"], name: "check", @@ -847,7 +849,6 @@ jianqians: false, selected: false, checkval: false, // 遮罩层 loading: false, open: false, foropen: false, @@ -862,8 +863,6 @@ formIn: {}, focusrow: {}, hzlogList: [], // proDefault: "", // dataList: [], rows: [], id: [], deptAdviceList: [], @@ -872,19 +871,14 @@ deptAdviceList3: [], deptAdviceList4: [], value: {}, remark: "", //备注 remark: "", remarks: "", // 总条数 total: 0, total1: 0, // 绑定单选按钮 tjStatus: "0", // 抽屉打开方式 drawer: false, Parentcheck: {}, // 获取抽屉列表 drawerList: [], // 获取信息集合 tableList: [], deptList: [], jieguoList: [], @@ -898,19 +892,14 @@ form: { createTime: new Date(), }, // 医生 doctorName: "", // 父项 proName: "", // 父项Id proId: "", company: "", tjStandardGtValue: "", xiangmuList: [], name: "", // 用户表格数据 userList: null, // 父项目列表 curindex: {}, Parent: [], hzReplyLogsList: [], @@ -919,10 +908,8 @@ nums: "", proParentList: [], tjNumber: "", // 全部小结 DeptadviceAll: [], project: {}, // 小结 summaryList: [], summaryAll: [], tjOrderDetailList: [], @@ -935,7 +922,6 @@ .toJSON() .substr(0, 19) .replace("T", " "), // 查询参数 queryParams: { page: 1, pageSize: 10, @@ -985,67 +971,177 @@ }, methods: { // 计算 BMI calculateBMI(height, weight) { if (height && weight) { const heightInMeters = parseFloat(height) / 100; // cm转换为m const heightInMeters = parseFloat(height) / 100; // cm 转换为 m const weightInKg = parseFloat(weight); const bmi = weightInKg / (heightInMeters * heightInMeters); return bmi.toFixed(1); // 保留一位小数 } return ''; }, handleFocus(row) { this.autorule = []; if (!row.resultType || row.resultType == 2) { return; } else { this.curindex = row; this.$refs.bbb.title = "选择检测结果"; this.$refs.bbb.proId = row.proId; this.$refs.bbb.getList(); // 实时更新 BMI vale(value, row) { if (row.project.proName === '身高' || row.project.proName === '体重') { const heightRow = this.proParentList.sons.find( item => item.project.proName === '身高' ); const weightRow = this.proParentList.sons.find( item => item.project.proName === '体重' ); const bmiRow = this.proParentList.sons.find( item => item.project.proName === 'BMI' ); if (heightRow && weightRow && bmiRow) { const height = row.project.proName === '身高' ? value : heightRow.proResult; const weight = row.project.proName === '体重' ? value : weightRow.proResult; const bmi = this.calculateBMI(height, weight); bmiRow.proResult = bmi || ''; // 实时更新 BMI } } }, // 输入确认时更新 BMI handleInputConfirm(row) { if (row.proResult) { if (row.project.proName === '身高' || row.project.proName === '体重') { const heightRow = this.proParentList.sons.find( item => item.project.proName === '身高' ); const weightRow = this.proParentList.sons.find( item => item.project.proName === '体重' ); const bmiRow = this.proParentList.sons.find( item => item.project.proName === 'BMI' ); if (heightRow && weightRow && bmiRow) { const height = heightRow.proResult; const weight = weightRow.proResult; const bmi = this.calculateBMI(height, weight); bmiRow.proResult = bmi || ''; } } this.rows.push(row); } }, // 初始化数据时计算 BMI getParentIdsss() { let data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { if (response.data != {}) { this.proParentList = response.data; const heightRow = this.proParentList.sons.find( item => item.project.proName === '身高' ); const weightRow = this.proParentList.sons.find( item => item.project.proName === '体重' ); const bmiRow = this.proParentList.sons.find( item => item.project.proName === 'BMI' ); if (heightRow && weightRow && bmiRow) { const bmi = this.calculateBMI(heightRow.proResult, weightRow.proResult); bmiRow.proResult = bmi || ''; } this.proParentList.xiaoJie.forEach((item) => { this.titles += item.title + ","; }); } this.loading = false; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) item.isReturn = true; if (item.isReturn == 0) item.isReturn = false; if (item.exceptionDesc == "1") item.exceptionDesc = true; if (item.exceptionDesc == "0") item.exceptionDesc = false; }); if (this.proParentList.xiaoJie && this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === this.nums) { this.proParentList.remark = item3.remark; } }); } else { this.proParentList.remark = ""; } }); }, // 以下为其他方法,未做修改,仅保留必要部分,其余省略以保持简洁 handleFocus(row) { this.autorule = []; if (!row.resultType || row.resultType == 2) return; this.curindex = row; selectZT({ proId: row.proId }).then((res) => { if (res.data.length > 0) { this.$refs.bbb.title = "选择检测结果"; this.$refs.bbb.open = true; this.$refs.bbb.getList(this.curindex); } else { this.$refs.bbb.open = false; } }); }, handleChangesZt(params) { this.curindex.proResult = params.map((item) => item.ruleStr).join(","); this.handleInputConfirm(this.curindex, params); }, tableRowClassName({ row }) { if (row.exceptionDesc) { return "warning-row"; } if (row.exceptionDesc) return "warning-row"; return ""; }, getbzlist() { this.loading = true; getDeptAdvice(this.queryParam1).then((response) => { if (response.data.list) { this.deptAdviceList = response.data.list; this.loading = false this.loading = false; } this.total1 = response.data.total; }); }, /** 搜索按钮操作 */ handleQuerys() { this.queryParam1.page = 1; this.getbzlist(); }, bzxz() { this.taocan = true; let data = { proId: this.proId, tjNum: this.tableAll.tjNumber, }; let data = { proId: this.proId, tjNum: this.tableAll.tjNumber }; getAdviceByTjNumAndPro(data).then((res) => { if (res.data) { // this.deptAdviceList2 = []; this.deptAdviceList3 = res.data; this.deptAdviceList1 = [ ...new Set(this.deptAdviceList2.concat(this.deptAdviceList3)), ]; this.deptAdviceList1 = [...new Set(this.deptAdviceList2.concat(this.deptAdviceList3))]; this.deptAdviceList3.forEach((items) => { this.idss.push(items.id); this.remakes += items.advice + ","; @@ -1053,95 +1149,65 @@ } }); }, // 检查检验结果按钮 result() { let tjNumber = this.tableAll.tjNumber; console.log(this.tableAll.tjNumber, 666); getXm(tjNumber).then((res) => { this.xiangmuList = res.data; if (this.xiangmuList.length > 0) { this.openOne = true; } if (this.xiangmuList.length > 0) this.openOne = true; else { this.openOne = false; this.$modal.msgWarning("暂无项目与检查检验结果") this.$modal.msgWarning("暂无项目与检查检验结果"); } }); }, queryResultone(row) { const tjNum = this.tableAll.tjNumber; const proId = row.proId; resultList(tjNum, proId).then((res) => { this.jieguoList = res.data; console.log(this.jieguoList, 998877); this.jyjc = this.jieguoList[0].jyjc; const ycbz = this.jieguoList[0].ycbz; // 设置是否需要改变颜色 if (ycbz === "1") { this.isRed = true; // 设置标识,改变字体颜色 } else { this.isRed = false; // 恢复默认颜色 } this.isRed = ycbz === "1"; if (res.data.length > 0) { this.drawer = true; this.$nextTick(() => this.initInputDOM()); } else { this.$message.warning("该项目没有结果"); } }); }, changRed({ row }) { if (row.ycbz != "" && row.ycbz != null && row.ycbz === "1") { // 变颜色的条件 return { color: "red", // 这个return的就是样式 可以是color 也可以是backgroundColor }; } if (row.ycbz === "1") return { color: "red" }; }, /** 删除按钮操作 */ handleDelete(row) { this.deptAdviceList1.forEach((item, index) => { if (item.id == row.id) { this.deptAdviceList1.splice(index, 1); } if (item.id == row.id) this.deptAdviceList1.splice(index, 1); }); }, handleSelectionChanges(selection) { this.deptAdviceList2 = this.deptAdviceList1; if (selection.length > 1) { const del_row = selection.shift(); this.$refs.multipleTable.toggleRowSelection(del_row, false); } // this.selectArr = selection; selection.forEach((item) => { this.deptAdviceList2.push(item); }); this.deptAdviceList1 = [ ...new Set(this.deptAdviceList2.concat(this.deptAdviceList3)), ]; selection.forEach((item) => this.deptAdviceList2.push(item)); this.deptAdviceList1 = [...new Set(this.deptAdviceList2.concat(this.deptAdviceList3))]; }, queding() { if (this.proParentList.xiaoJie.length != 0) { // this.proParentList.remark = ""; this.remakes = ""; this.titles = ""; // this.deptAdviceList.forEach((item) => { // this.ids = item.id; this.deptAdviceList1.forEach((item1) => { // if ( // item1.id === item.id && // !this.proParentList.remark.includes(item.title) // ) { if (this.proParentList.remark != null) { this.titles += item1.title + ","; this.remakes += item1.advice + ","; this.proParentList.remark = this.proParentList.remark + this.remakes; this.proParentList.remark = this.proParentList.remark + this.remakes; this.value += item1.title + ","; this.vaids.push(item1.id); this.vaids1 = this.vaids.concat(this.idss); @@ -1152,50 +1218,32 @@ this.vaids.push(item1.id); this.vaids1 = this.vaids.concat(this.idss); } // } }); // }); this.taocan = false; } else { // this.proParentList.remark = ""; this.titles = ""; this.remakes = ""; this.deptAdviceList1.forEach((item) => { this.titles += item.title + ","; this.remakes += item.advice + ","; this.vaids.push(item.id); this.vaids1 = this.vaids.concat(this.idss); }); if (this.proParentList.remark != null) { this.proParentList.remark = ""; let data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { this.proParentList = response.data; this.proParentList.remark = this.remakes + this.proParentList.remark; }); this.proParentList.remark = this.remakes + this.proParentList.remark; } else { this.proParentList.remark = this.remakes; } this.taocan = false; } }, /** 查询用户列表 */ getListUser() { getlistUser().then((response) => { this.userList = response.data; this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } if (userName == element.userName) this.doctorName = element.nickName; }); }); getInfo().then((response) => { @@ -1205,52 +1253,34 @@ this.nickName = response.user.nickName; }); }, handleClose() { this.$tab.refreshPage(); }, handleClose1() { this.jianqians = false; }, // 获取医生 selName(val) { this.doctorName = val; // this.userList.forEach(item =>{ // if(val === item.userId){ // this.doctorName = item.nickName // } // }) }, changDesc(item) { console.log(item) if (item.exceptionDesc == true) { item.conclusion = "异常" } else { item.conclusion = "正常" } item.conclusion = item.exceptionDesc ? "异常" : "正常"; }, myclass(row, column, rowIndex, columnIndex) { if (row.row.isPositive == 1) { return "setclass"; } if (row.row.isPositive == 1) return "setclass"; }, // 小结获取备注 sel(val) { if (this.proParentList.xiaoJie.length != 0) { // this.proParentList.remark = ""; this.deptAdviceList.forEach((item) => { this.ids = item.id; val.forEach((item1) => { if ( item1 === item.id && !this.proParentList.remark.includes(item.title) ) { if (this.proParentList.remark) { this.proParentList.remark += item.title + ","; } else { this.proParentList.remark = item.title + ","; } if (item1 === item.id && !this.proParentList.remark.includes(item.title)) { this.proParentList.remark = this.proParentList.remark ? this.proParentList.remark + item.title + "," : item.title + ","; } }); }); @@ -1259,145 +1289,34 @@ this.deptAdviceList.forEach((item) => { this.ids = item.id; val.forEach((item1) => { if ( item1 === item.id && !this.proParentList.remark.includes(item.title) ) { if (this.proParentList.remark) { this.proParentList.remark += item.title + ","; } else { this.proParentList.remark = item.title + ","; } if (item1 === item.id && !this.proParentList.remark.includes(item.title)) { this.proParentList.remark = this.proParentList.remark ? this.proParentList.remark + item.title + "," : item.title + ","; } }); }); } }, vale(value) { // 你可以在这里处理输入事件 console.log("输入内容:", value); }, handleInputConfirm(datas, params) { // 现有逻辑保持不变 if (params && params.length === 0) { this.curindex.exceptionDesc = false; this.curindex.proResult = ""; this.curindex.conclusion = ""; this.curindex.proAdvice = ""; this.curindex.rulesList = []; console.log("触发了取消选择"); return; } if (datas.proResult) { this.focusrow = datas; this.proResult = datas; var pattern3 = new RegExp("[0-9]+"); if (pattern3.test(this.proResult)) { let data = { proId: this.focusrow.proId, cusId: this.tableAll.cusId, tjNum: this.tableAll.tjNumber, keyNum: this.proResult.proResult, }; AutoGetRule(data).then((res) => { this.focusrow.conclusion = ""; if (res.data) { this.autorule = res.data; this.focusrow.rulesList = res.data; if (res.data.length > 0) { const conditions = ["正常", "未见异常", "阴性", "未见明显异常"]; this.focusrow.exceptionDesc = !conditions.some((condition) => this.autorule[0].bz.includes(condition) ); } else { this.focusrow.exceptionDesc = false; } this.focusrow.proAdvice = this.autorule[0].nr; this.autorule.forEach((item) => { if (this.focusrow.conclusion) { this.focusrow.conclusion += item.bz; } else { this.focusrow.conclusion += item.bz; } }); } }); } else { let data = { proId: this.focusrow.proId, cusId: this.tableAll.cusId, keyWord: this.proResult, tjNum: this.tableAll.tjNumber, keyNum: this.proResult.proResult, }; AutoGetRule(data).then((res) => { this.focusrow.conclusion = ""; if (res.data) { this.autorule = res.data; this.focusrow.rulesList = res.data; if (res.data.length > 0) { const conditions = ["正常", "未见异常", "阴性", "未见明显异常"]; this.focusrow.exceptionDesc = !conditions.some((condition) => this.autorule[0].bz.includes(condition) ); } else { this.focusrow.exceptionDesc = false; } this.focusrow.proAdvice = this.autorule[0].nr; this.autorule.forEach((item) => { if (this.focusrow.conclusion) { this.focusrow.conclusion += item.bz; } else { this.focusrow.conclusion += item.bz; } }); } }); } this.rows.push(datas); } // 新增 BMI 计算逻辑 let height = null; let weight = null; let bmiRow = null; // 遍历 proParentList.sons 查找身高、体重和BMI项目 this.proParentList.sons.forEach((item) => { const proName = item.project.proName.toLowerCase(); // 不区分大小写比较 if (proName === "height" || proName === "身高") { height = item.proResult; } else if (proName === "weight" || proName === "体重") { weight = item.proResult; } else if (proName === "bmi") { bmiRow = item; // 找到 BMI 项目行 } }); // 如果身高和体重都有值,则计算 BMI if (height && weight && bmiRow) { const parsedHeight = parseFloat(height.replace(/[^0-9.]/g, "")); // 提取数字,去除单位 const parsedWeight = parseFloat(weight.replace(/[^0-9.]/g, "")); if (!isNaN(parsedHeight) && !isNaN(parsedWeight) && parsedHeight > 0) { const heightInMeters = parsedHeight / 100; // 厘米转换为米 const bmi = parsedWeight / (heightInMeters * heightInMeters); bmiRow.proResult = bmi.toFixed(1); // 保留一位小数并赋值给 BMI 的 proResult console.log(`计算BMI: 身高=${parsedHeight}cm, 体重=${parsedWeight}kg, BMI=${bmiRow.proResult}`); } } }, handleguize(row) { this.row = row; this.$refs.aaa.open = true; this.$refs.aaa.title = "诊断结果结论"; this.$refs.aaa.getList(this.row); initInputDOM() { const inputDoms = document.querySelectorAll('.el-input__inner'); inputDoms.forEach((item, index) => item.setAttribute('data-index', index)); this.inputDoms = inputDoms; }, handleChanges(param1, param2) { this.row.conclusion = param1; this.row.rulesList = param2; keyInputConfirm(event, currentRowIndex) { event.preventDefault(); event.stopPropagation(); const nextRowIndex = currentRowIndex + 1; if (nextRowIndex < this.proParentList.sons.length) { this.$nextTick(() => { const nextInputRef = `input-${nextRowIndex}`; const nextInput = this.$refs[nextInputRef]; if (nextInput) { const target = Array.isArray(nextInput) ? nextInput[0] : nextInput; target.focus(); } }); } }, @@ -1429,11 +1348,7 @@ if (response.code == 200) { this.loading = false; if (response.data) { if (response.data.date) { this.tableList = response.data.date; } else { this.tableList = response.data.customers; } this.tableList = response.data.date || response.data.customers || []; this.total = response.data.total; } else { this.tableList = []; @@ -1442,119 +1357,70 @@ }); }, // 单选按钮 radioChange(val) { this.queryParams.type = val; this.loading = true; getProList(this.queryParams).then((response) => { if (response.code == 200) { this.loading = false; if (response.data) { this.tableList = response.data.date; this.total = response.data.total; } else { this.tableList = []; } this.tableList = response.data.date || response.data.customers || []; this.total = response.data.total; } else { this.tableList = []; } }); }, hb() { /* if (this.queryParams.tjNumber != "") { // this.submitForm(); } */ }, hb() {}, propoChange() { this.cusobj = { sex: this.tableAll.cusSex, isZj: 1 }; this.$refs.proposal.open = true; this.$refs.proposal.title = "建议方案"; // this.$refs.proposal.getList(); }, eventchange(data) { this.dataText = data; data.forEach((item) => { this.proParentList.remark += item.advice; }); data.forEach((item) => this.proParentList.remark += item.advice); }, proposalChange() { if (this.proParentList.remark) { this.creatobj = { proParentList: this.proParentList.remark, isZj: 1 }; this.$refs.createproposal.open = true; this.$refs.createproposal.title = "常用建议维护"; } else { this.$message({ type: "warning ", message: "请先填写总检建议", }); this.$message({ type: "warning", message: "请先填写总检建议" }); } }, // 搜索 submitForm() { this.queryParams.page = 1; this.loading = true; this.queryParams.type = this.tjStatus; getProList(this.queryParams).then((response) => { console.log(response, 333); if (response.code == 200) { this.loading = false; if (response.data) { if (response.data.date) { this.tableList = response.data.date; this.queryParams.tjNumber = ""; } else { this.tableList = response.data.customers; this.queryParams.tjNumber = ""; } this.total = response.data.total; } else { this.tableList = []; } this.tableList = response.data.date || response.data.customers || []; this.total = response.data.total; this.queryParams.tjNumber = ""; } else { this.tableList = []; } }); // this.loading = true; // (this.queryParams = { // page: 1, // pageSize: 10, // tjNumber: this.queryParams.tjNumber, // name: this.queryParams.name, // }), // getProList(this.queryParams).then((response) => { // if (response.data) { // if (response.data.customers) { // this.tableList = response.data.customers; // this.loading = false; // this.tableList.forEach((item) => { // this.tjStatus = item.tjStatus; // }); // } else { // this.tableList = response.data.customers; // this.tableList.forEach((item) => { // this.tjStatus = item.tjStatus; // }); // } // this.total = response.data.total; // } else { // this.tableList = []; // } // }); }, // 重置 resetQuery() { this.resetForm("tableList"); this.submitForm(); this.$nextTick(() => { this.$refs.inputName.focus(); }); this.$nextTick(() => this.$refs.inputName.focus()); }, Changeapplyfor(row) { this.open = true; this.form = row; this.form.hzDoctorId = this.info.userId; getChildList().then((res) => { this.deptList = res.data; }); getChildList().then((res) => this.deptList = res.data); this.Hzlog(this.form.tjNumber); }, @@ -1585,6 +1451,7 @@ }); } }, submitcheckval() { addBigPositive(this.formIn).then((res) => { this.$modal.msgSuccess("新增成功"); @@ -1592,36 +1459,31 @@ this.checkval = false; }); }, cancell() { this.checkval = false; this.vals.isPositive = "0"; }, Hzlog(val) { let data = { tjNumber: val, }; let data = { tjNumber: val }; listHzlog(data).then((response) => { this.hzlogList = response.rows; this.hzlogList.forEach((item) => { item.hzDeptName = ""; if (item.hzType == "0") { item.hzDeptName = "全院会诊"; } else { item.hzDeptName = item.hzType == "0" ? "全院会诊" : ""; if (item.hzType != "0") { item.hzDeptIdList.forEach((item1) => { this.deptList.forEach((item2) => { if (item1 == item2.deptId) { item.hzDeptName += item2.deptName + ","; } if (item1 == item2.deptId) item.hzDeptName += item2.deptName + ","; }); }); } }); }); }, handledele(row) { this.id = []; this.id.push(row.id); this.id = [row.id]; delHzlog(this.id).then((res) => { this.$modal.msgSuccess("删除成功"); this.Hzlog(this.form.tjNumber); @@ -1636,9 +1498,7 @@ submitFormapply() { let data = {}; this.userList.forEach((item1) => { if (this.form.hzDoctorId == item1.userId) { this.form.hzDoctorName = item1.nickName; } if (this.form.hzDoctorId == item1.userId) this.form.hzDoctorName = item1.nickName; }); if (this.form.hzType != undefined) { this.$refs["form"].validate((valid) => { @@ -1675,7 +1535,7 @@ hzDoctorName: this.form.hzDoctorName, id: this.form.id, }; if (this.form.hzDeptId.length != 0) { if (this.form.hzDeptId?.length) { addHzlog(data).then((res) => { if (res.code == 200) { this.$modal.msgSuccess("申请成功"); @@ -1695,6 +1555,7 @@ this.$modal.msgError("请选择会诊科室"); } }, cancel() { this.open = false; this.foropen = false; @@ -1704,32 +1565,24 @@ this.foropen = true; this.Hzlog(this.tableAll.tjNumber); }, historicalreport() { this.baogaoqian = false; this.baogaohou = true; this.loading = true; let data = { cusId: this.tableAll.cusId, }; let data = { cusId: this.tableAll.cusId }; reportHistory(data).then((res) => { this.loading = false; if (res.data[0] != null) { this.reportHistorydata = res.data; } if (this.reportHistorydata.length >= 1) { this.lishi = true; } else { this.lishi = true; this.$modal.msgError("暂无历史报告"); } if (res.data[0] != null) this.reportHistorydata = res.data; this.lishi = this.reportHistorydata.length >= 1; if (!this.lishi) this.$modal.msgError("暂无历史报告"); }); }, jianqian() { this.flags = true; this.jianqians = true; let tjNumber = this.tableAll.tjNumber; this.jianqianwenzhendata.push(tjNumber); this.jianqianwenzhendata.push(this.tableAll.tjNumber); }, handlecan(row) { @@ -1744,21 +1597,15 @@ spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); setTimeout(() => { loading.close(); }, 3000); // this.$message.msgSuccess("报告正在生成,请两分钟后预览!"); this.$message({ type: "warning ", message: "报告正在生成,请两分钟后预览!!", }); setTimeout(() => loading.close(), 3000); this.$message({ type: "warning", message: "报告正在生成,请两分钟后预览!" }); } else { this.dialogVisible = true; this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url this.url = window.webkitURL.createObjectURL(response); } }); }, submitFormreply() { let data = { hzId: this.allList[0].id, @@ -1780,7 +1627,6 @@ }); }, // 多选框选中数据 handleSelectionChange(selection) { if (selection.length > 1) { const newRows = selection.filter((it, index) => { @@ -1795,9 +1641,7 @@ } else { this.allList = []; if (selection[0]) { if (selection[0].hzReplyLogsList) { this.hzReplyLogsList = selection[0].hzReplyLogsList; } if (selection[0].hzReplyLogsList) this.hzReplyLogsList = selection[0].hzReplyLogsList; } else { this.hzReplyLogsList = []; } @@ -1805,21 +1649,12 @@ } }, // 点击详情 handleClick(row) { this.getDept(row.tjNumber); this.loading = true; this.drawer = true; this.$nextTick(() => this.initInputDOM()); this.tableAll = row; // if (this.tableAll.cusSex === 0) { // this.tableAll.cusSex = "男"; // } // if (this.tableAll.cusSex === 1) { // this.tableAll.cusSex = "女"; // } // if (this.tableAll.cusSex === 2) { // this.tableAll.cusSex = "未知"; // } this.tjNumber = row.tjNumber; let num = 0; getParentList(this.tjNumber).then((response) => { @@ -1827,16 +1662,12 @@ this.loading = false; this.Parent = response.data; this.Parent.forEach((item) => { if (item.type === 1) { item.proName += " ✔"; } if (item.type === 1) item.proName += " ✔"; if (num === 0) { this.nums = item.proId; this.radio = item.proId; this.proId = item.proId; // this.radioChange1(item.proId, item); this.getParentIdsss(); this.getbzlist(); } num = num + 1; @@ -1848,104 +1679,19 @@ } }); this.getbzlist(); // getSons(this.tjNumber).then((response) => { // response.data.forEach(item1 => { // if (item1.parent == '肝功检查') { // this.DeptadviceAll = item1.parentAdvices // } // }) // }); // 获取小结 // getDeptadvice().then((response) => { // response.data.forEach(item => { // this.DeptadviceAll = item // }) // }); }, getParentIdsss() { let data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { if (response.data != {}) { this.proParentList = response.data; this.proParentList.xiaoJie.forEach((item) => { this.titles += item.title + ","; // this.advice += item.advice + ","; }); } this.loading = false; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) { item.isReturn = true; } if (item.isReturn == 0) { item.isReturn = false; } if (item.exceptionDesc == "1") { item.exceptionDesc = true; } if (item.exceptionDesc == "0") { item.exceptionDesc = false; } }); if (this.proParentList.xiaoJie) { if (this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === this.nums) { this.proParentList.remark = item3.remark; } }); } } else { this.proParentList.remark = ""; } }); }, getDept(val) { let data = { tjNumber: val, deptId: this.deptId, }; let data = { tjNumber: val, deptId: this.deptId }; hzHasDept(data).then((res) => { if (res.data) { this.hasdeptList = res.data; this.hasdeptList.forEach((item) => { item.hzDeptName = ""; if (item.hzType == "0") { item.hzDeptName = "全院会诊"; } else { item.hzDeptName = item.hzType == "0" ? "全院会诊" : ""; if (item.hzType != "0") { item.hzDeptIdList.forEach((item1) => { this.deptList.forEach((item2) => { if (item1 == item2.deptId) { item.hzDeptName += item2.deptName + ","; } if (item1 == item2.deptId) item.hzDeptName += item2.deptName + ","; }); }); } @@ -1956,39 +1702,27 @@ handleTabClick(tab, event) { this.Parent.forEach((item) => { if (tab.name == item.proId) { this.Parentcheck = item; } if (tab.name == item.proId) this.Parentcheck = item; }); this.$confirm( "检测到体检结果未提交,是否在离开该项目前提交修改?", "确认信息", { distinguishCancelAndClose: true, confirmButtonText: "提交", cancelButtonText: "不保存,离开", } ) this.$confirm("检测到体检结果未提交,是否在离开该项目前提交修改?", "确认信息", { distinguishCancelAndClose: true, confirmButtonText: "提交", cancelButtonText: "不保存,离开", }) .then(() => { // 体检号 let tjNumber = this.tableAll.tjNumber; this.userList.forEach((item) => { if (this.doctorName == item.nickName) { this.doctorName = item.userId; } if (this.doctorName == item.nickName) this.doctorName = item.userId; }); this.proParentList.sons.forEach((item) => { if (this.rows) { this.rows.forEach((item1) => { if (item1 === item) { item = item1; } if (item1 === item) item = item1; }); } this.tjOrderDetail.push({ proAdvice: item.proAdvice, proName: item.project.proName, proId: item.project.proId, orderDetailId: item.orderDetailId, @@ -2002,349 +1736,41 @@ }); }); var data = [ { tjNumber, proId: this.proId, remark: this.proParentList.remark, // 备注 proName: this.proName, //父项 summaryList: this.value, //小结 doctorName: this.doctorName, tjOrderDetailList: this.tjOrderDetail, }, ]; getaddRemark(data).then((res) => { this.$modal.msgSuccess("提交成功"); }); this.proName = item.proName; this.nums = tab.name; this.proId = tab.name; var data = { tjNumber: this.tjNumber, proParentId: this.nums, }; this.loading = true; getParentId(data).then((response) => { this.proParentList = response.data; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) { item.isReturn = true; } if (item.isReturn == 0) { item.isReturn = false; } if (item.exceptionDesc == "1") { item.exceptionDesc = true; } if (item.exceptionDesc == "0") { item.exceptionDesc = false; } }); if (this.proParentList.xiaoJie) { if (this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === tab.name) { this.remark = this.Parentcheck.remark; } }); } } else { this.remark = ""; } }); this.getbzlist(); }) .catch((action) => { if (action === "cancel") { this.$message({ type: "warning", message: "放弃保存并离开", }); } var data = [{ tjNumber, proId: this.proId, remark: this.proParentList.remark, proName: this.proName, summaryList: this.value, doctorName: this.doctorName, tjOrderDetailList: this.tjOrderDetail, }]; getaddRemark(data).then((res) => this.$modal.msgSuccess("提交成功")); this.proName = this.Parentcheck.proName; this.nums = tab.name; this.proId = tab.name; let data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { this.proParentList = response.data; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) { item.isReturn = true; } if (item.isReturn == 0) { item.isReturn = false; } if (item.exceptionDesc == "1") { item.exceptionDesc = true; } if (item.exceptionDesc == "0") { item.exceptionDesc = false; } }); if (this.proParentList.xiaoJie) { if (this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === tab.name) { this.remark = this.Parentcheck.remark; } }); } } else { this.remark = ""; } }); this.getbzlist(); }); }, // 按钮点击事件 radioChange1(proParentId, item) { this.Parentcheck = item; this.$confirm( "检测到体检结果未提交,是否在离开该项目前提交修改?", "确认信息", { distinguishCancelAndClose: true, confirmButtonText: "提交", cancelButtonText: "不保存,离开", } ) .then(() => { // 体检号 let tjNumber = this.tableAll.tjNumber; this.userList.forEach((item) => { if (this.doctorName == item.nickName) { this.doctorName = item.userId; } }); this.proParentList.sons.forEach((item) => { if (this.rows) { this.rows.forEach((item1) => { if (item1 === item) { item = item1; } // if (item.isReturn == true) { // item.isReturn = 1; // } // if (item.isReturn == false) { // item.isReturn = 0; // } }); } this.tjOrderDetail.push({ proAdvice: item.proAdvice, proName: item.project.proName, proId: item.project.proId, orderDetailId: item.orderDetailId, flowingWaterId: item.flowingWaterId, proResult: item.proResult, tjStatus: 1, isReturn: item.isReturn === true ? 1 : 0, exceptionDesc: item.exceptionDesc === true ? 1 : 0, conclusion: item.conclusion, rulesList: item.rulesList, }); }); var data = [ { tjNumber, proId: this.proId, remark: this.proParentList.remark, // 备注 proName: this.proName, //父项 summaryList: this.value, //小结 doctorName: this.doctorName, tjOrderDetailList: this.tjOrderDetail, }, ]; getaddRemark(data).then((res) => { this.$modal.msgSuccess("提交成功"); }); this.proName = item.proName; this.nums = proParentId; this.proId = proParentId; var data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { this.proParentList = response.data; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) { item.isReturn = true; } if (item.isReturn == 0) { item.isReturn = false; } if (item.exceptionDesc == "1") { item.exceptionDesc = true; } if (item.exceptionDesc == "0") { item.exceptionDesc = false; } }); if (this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === proParentId) { this.remark = item.remark; } }); } else { this.remark = ""; } }); this.getParentIdsss(); this.getbzlist(); }) .catch((action) => { if (action === "cancel") { this.$message({ type: "warning", message: "放弃保存并离开", }); } this.proName = item.proName; this.nums = proParentId; this.proId = proParentId; let data = { tjNumber: this.tjNumber, proParentId: this.nums, }; getParentId(data).then((response) => { this.proParentList = response.data; this.value = []; if (this.proParentList.xiaoJieIds != null) { if (this.proParentList.xiaoJieIds.length != 0) { this.proParentList.xiaoJieIds.forEach((item2) => { let item = Number(item2); this.value.push(item); }); } } this.proParentList.sons.forEach((item) => { this.doctorName = item.doctorName; if (this.doctorName == null) { this.userList.forEach((element) => { const userName = this.$store.state.user.name; if (userName == element.userName) { this.doctorName = element.nickName; } }); } if (item.isReturn == 1) { item.isReturn = true; } if (item.isReturn == 0) { item.isReturn = false; } if (item.exceptionDesc == "1") { item.exceptionDesc = true; } if (item.exceptionDesc == "0") { item.exceptionDesc = false; } }); if (this.proParentList.xiaoJie.length != 0) { this.Parent.forEach((item3) => { if (item3.proId === proParentId) { this.remark = item.remark; } }); } else { this.remark = ""; } }); if (action === "cancel") this.$message({ type: "warning", message: "放弃保存并离开" }); this.proName = this.Parentcheck.proName; this.nums = tab.name; this.proId = tab.name; this.getParentIdsss(); this.getbzlist(); }); }, // 点击确认 determine() { // 体检号 let tjNumber = this.tableAll.tjNumber; this.userList.forEach((item) => { if (this.doctorName == item.nickName) { this.doctorName = item.userId; } if (this.doctorName == item.nickName) this.doctorName = item.userId; }); this.proParentList.sons.forEach((item) => { if (this.rows) { this.rows.forEach((item1) => { if (item1 === item) { item = item1; } // if (item.isReturn == true) { // item.isReturn = 1; // } // if (item.isReturn == false) { // item.isReturn = 0; // } if (item1 === item) item = item1; }); } this.tjOrderDetail.push({ @@ -2362,17 +1788,15 @@ }); }); let data = [ { tjNumber, proId: this.proId, remark: this.proParentList.remark, // 备注 proName: this.proName, //父项 summaryList: this.vaids1, //小结 doctorName: this.doctorName, tjOrderDetailList: this.tjOrderDetail, }, ]; let data = [{ tjNumber, proId: this.proId, remark: this.proParentList.remark, proName: this.proName, summaryList: this.vaids1, doctorName: this.doctorName, tjOrderDetailList: this.tjOrderDetail, }]; getaddRemark(data).then((res) => { this.$modal.msgSuccess("提交成功"); this.drawer = false; src/views/system/package/index.vue
@@ -1,106 +1,42 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" > <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="套餐名称" prop="pacName"> <el-input v-model="queryParams.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="套餐描述" prop="pacRemark"> <el-input v-model="queryParams.pacRemark" placeholder="请输入套餐描述" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.pacRemark" placeholder="请输入套餐描述" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="体检类别" prop="tjCategory"> <el-select v-model="queryParams.tjCategory" placeholder="请选择状态" style="width: 200px" filterable clearable > <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.id" :label="dict.label" :value="dict.value" ></el-option> <el-select v-model="queryParams.tjCategory" placeholder="请选择状态" style="width: 200px" filterable clearable> <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.id" :label="dict.label" :value="dict.value"></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" >搜索</el-button > <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" >重置</el-button > <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:package:add']" >新增</el-button > <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:package:add']">新增</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:package:edit']" >修改</el-button > <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUp" v-hasPermi="['system:package:edit']">修改</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:package:remove']" >删除</el-button > <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:package:remove']">删除</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:package:export']" >导出</el-button > <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:package:export']">导出</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" ></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!-- @@ -108,77 +44,22 @@ element-loading-spinner="el-icon-loading" element-loading-text="正在加载中..." --> <template> <el-table v-loading="loading" style="width: 100%" :data="packageList" @selection-change="handleSelectionChange" border > <el-table-column fixed type="selection" width="40" align="center" :show-overflow-tooltip="true" /> <el-table-column label="序号" align="center" width="50" prop="newID" fixed /> <el-table v-loading="loading" style="width: 100%" :data="packageList" @selection-change="handleSelectionChange" border> <el-table-column fixed type="selection" width="40" align="center" :show-overflow-tooltip="true" /> <el-table-column label="序号" align="center" width="50" prop="newID" fixed /> <!-- <el-table-column label="编号" align="center" prop="pacId" /> --> <el-table-column label="体检类别" width="100px" align="center" prop="categoryNames" fixed > <el-table-column label="体检类别" width="100px" align="center" prop="categoryNames" fixed> <template slot-scope="scope"> <dict-tag :options="dict.type.dict_tjtype" :value="scope.row.tjCategory" /> <dict-tag :options="dict.type.dict_tjtype" :value="scope.row.tjCategory" /> </template> </el-table-column> <el-table-column label="套餐名称" align="center" prop="pacName" width="150px" fixed /> <el-table-column label="原价" width="80px" align="center" prop="price" fixed ></el-table-column> <el-table-column label="折扣" width="80px" align="center" prop="limits" fixed ></el-table-column> <el-table-column label="优惠价" width="80px" align="center" prop="newPrice" fixed > <el-table-column label="套餐名称" align="center" prop="pacName" width="150px" fixed /> <el-table-column label="原价" width="80px" align="center" prop="price" fixed></el-table-column> <el-table-column label="折扣" width="80px" align="center" prop="limits" fixed></el-table-column> <el-table-column label="现价" width="80px" align="center" prop="newPrice" fixed> </el-table-column> <el-table-column label="单项列表" align="center" prop="allProName" width="1200px" > <el-table-column label="单项列表" align="center" prop="allProName" width="1200px"> </el-table-column> <!-- <el-table-column label="项目明细" @@ -187,12 +68,7 @@ :show-overflow-tooltip="true" > </el-table-column>--> <el-table-column label="套餐描述" align="center" :show-overflow-tooltip="true" width="120px" > <el-table-column label="套餐描述" align="center" :show-overflow-tooltip="true" width="120px"> <template slot-scope="scope"> <div class="showInline">{{ scope.row.pacRemark }}</div> </template> @@ -209,23 +85,10 @@ </template> </el-table-column> --> <el-table-column label="关键字" width="110px" align="center" prop="keyNames" ></el-table-column> <el-table-column label="是否上架" width="94px" align="center" prop="isOnSale" > <el-table-column label="关键字" width="110px" align="center" prop="keyNames"></el-table-column> <el-table-column label="是否上架" width="94px" align="center" prop="isOnSale"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isOnSale" /> <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isOnSale" /> </template> </el-table-column> <!-- <el-table-column @@ -235,70 +98,27 @@ align="center" prop="detail" ></el-table-column> --> <el-table-column label="排序" width="50px" align="center" prop="sort" ></el-table-column> <el-table-column label="小程序价格" width="90px" align="center" prop="retailPrice" ></el-table-column> <el-table-column label="排序" width="50px" align="center" prop="sort"></el-table-column> <el-table-column label="小程序价格" width="90px" align="center" prop="retailPrice"></el-table-column> <!-- <el-table-column label="原价" width="90px" align="center" prop="counterPrice" ></el-table-column> --> <el-table-column label="已售数量" width="90px" align="center" prop="saleNum" ></el-table-column> <el-table-column label="状态" align="center" prop="pacStatus" fixed="right" width="100px" > <el-table-column label="已售数量" width="90px" align="center" prop="saleNum"></el-table-column> <el-table-column label="状态" align="center" prop="pacStatus" fixed="right" width="100px"> <template slot-scope="scope"> <el-switch v-model="scope.row.pacStatus" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)" ></el-switch> <el-switch v-model="scope.row.pacStatus" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch> </template> </el-table-column> <el-table-column label="操作" align="center" width="80px" fixed="right" class-name="small-padding fixed-width" > <el-table-column label="操作" align="center" width="80px" fixed="right" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:package:edit']" title="修改" ></el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:package:remove']" title="删除" ></el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:package:edit']" title="修改"></el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:package:remove']" title="删除"></el-button> <!-- <el-button size="mini" type="text" icon="el-icon-circle-check" @click="handleSeach(scope.row)" v-hasPermi="['system:package:Seach']" title="套餐详情"></el-button> --> </template> @@ -307,66 +127,31 @@ <div class="pag"> <div class="pag1"> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </div> </template> <!-- 修改体检套餐对话框 --> <el-dialog :title="title" :visible.sync="open" width="1400px" append-to-body :close-on-click-modal="false" > <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true" > <el-dialog :title="title" :visible.sync="open" width="1400px" append-to-body :close-on-click-modal="false"> <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true"> <!-- <div class="dialo"> <div class="dialo1"> --> <el-form-item label="套餐名称" prop="pacName"> <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="handlePackage" > <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="handlePackage"> 套餐名称 </span> <el-input v-model="form.pacName" placeholder="请输入套餐名称" style="width: 150px" /> <el-input v-model="form.pacName" placeholder="请输入套餐名称" style="width: 150px" /> </el-form-item> <el-form-item label="套餐状态" prop="pacStatus"> <!-- <el-radio-group v-model="form.pacStatus"> <el-radio :label="0">启用</el-radio> <el-radio :label="1">停用</el-radio> </el-radio-group> --> <el-select v-model="form.pacStatus" placeholder="请选择状态" style="width: 150px" filterable clearable > <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" ></el-option> <el-select v-model="form.pacStatus" placeholder="请选择状态" style="width: 150px" filterable clearable> <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> </el-select> </el-form-item> @@ -377,7 +162,7 @@ style="width: 150px" @change="shangpin" filterable clearable clearablez > <el-option v-for="item in categoryList" @@ -388,19 +173,9 @@ </el-select> </el-form-item> --> <el-form-item label="体检类别" prop="tjCategory"> <el-select v-model="form.tjCategory" placeholder="请选择体检类别" style="width: 150px" filterable clearable > <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label" :value="dict.value" ></el-option> <el-select v-model="form.tjCategory" placeholder="请选择体检类别" style="width: 150px" filterable clearable> <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> </el-select> </el-form-item> @@ -409,93 +184,42 @@ <el-radio :label="0">启用</el-radio> <el-radio :label="1">停用</el-radio> </el-radio-group> --> <el-select v-model="form.isOnSale" placeholder="请选择是否上架" style="width: 140px" filterable clearable > <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value" ></el-option> <el-select v-model="form.isOnSale" placeholder="请选择是否上架" style="width: 140px" filterable clearable> <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> </el-select> </el-form-item> <el-form-item label="排序" prop="sort"> <el-input v-model="form.sort" placeholder="请输入排序" style="width: 150px" /> <el-input v-model="form.sort" placeholder="请输入排序" style="width: 150px" /> </el-form-item> <el-form-item label="小程序价格" prop="retailPrice"> <el-input v-model="form.retailPrice" placeholder="请输入小程序价格" style="width: 150px" /> <el-input v-model="form.retailPrice" placeholder="请输入小程序价格" style="width: 150px" /> </el-form-item> <el-form-item label="原价" prop="pics"> <el-input v-model="pics" placeholder="请输入原价" style="width: 150px" /> <el-input v-model="pics" placeholder="请输入原价" style="width: 150px" /> </el-form-item> <el-form-item label="折扣"> <el-input-number ref="inputNumber" style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="1" @change="numberChange" ></el-input-number> <el-input-number style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="0.1" @change="debounceNumberChange" :debounce="3000"></el-input-number> </el-form-item> <el-form-item label="优惠价"> <el-input ref="inputName" v-model="form.xianprice" placeholder="优惠价" clearable style="width: 140px" /> <el-form-item label="现价" prop="xianprice"> <el-input v-model="form.xianprice" placeholder="现价" clearable style="width: 140px" @input="changeXianjia" @blur="numberChangeXianPrice(youhui, youhui)" type="number" :debounce="3000"/> </el-form-item> <el-form-item label="关键字" prop="keywords"> <el-select multiple v-model="form.keywords" placeholder="请选择关键字" style="width: 160px" @change="sel" filterable clearable > <el-option v-for="item in keywordList" :key="item.id" :label="item.keyword" :value="item.id" ></el-option> <el-select multiple v-model="form.keywords" placeholder="请选择关键字" style="width: 160px" @change="sel" filterable clearable> <el-option v-for="item in keywordList" :key="item.id" :label="item.keyword" :value="item.id"></el-option> </el-select> </el-form-item> <div v-if="!isCollapsed" style="display: flex"> <div> <el-form-item label="套餐描述" prop="pacRemark"> <el-input type="textarea" v-model="form.pacRemark" placeholder="请输入套餐描述" style="width: 670px" rows="2" ></el-input> <el-input type="textarea" v-model="form.pacRemark" placeholder="请输入套餐描述" style="width: 670px" rows="2"></el-input> </el-form-item> <el-form-item label="详细介绍" prop="detail"> <!-- <el-input @@ -503,11 +227,7 @@ placeholder="请输入详细介绍" style="width: 200px" /> --> <editor v-model="form.detail" :min-height="192" style="width: 670px" /> <editor v-model="form.detail" :min-height="192" style="width: 670px" /> </el-form-item> </div> <!-- </div> --> @@ -554,40 +274,17 @@ <el-row style="display: flex; width: 1300px"> <el-col> <div style="text-align: center; margin-bottom: 10px; margin-top: 10px" > <div style="text-align: center; margin-bottom: 10px; margin-top: 10px"> 项目列表 </div> <el-input placeholder="输入关键字进行过滤" @input="handleFilterInput" v-model="queryParams1.nr" clearable /> <el-input placeholder="输入关键字进行过滤" @input="handleFilterInput" v-model="queryParams1.nr" clearable /> <div class="tab3" style="height: 365px"> <el-tree class="filter-tree" v-loading="loading" :data="Treedata" :props="defaultProps" show-checkbox node-key="proId" @check-change="handleCurrentChecked" :default-checked-keys="checkedkey" :filter-node-method="filterNode" ref="tree" :render-content="renderContent" > <el-tree class="filter-tree" v-loading="loading" :data="Treedata" :props="defaultProps" show-checkbox node-key="proId" @check-change="handleCurrentChecked" :default-checked-keys="checkedkey" :filter-node-method="filterNode" ref="tree" :render-content="renderContent"> </el-tree> <pagination small v-show="total1 > 0" :total="total1" :page.sync="queryParams1.page" :limit.sync="queryParams1.pageSize" @pagination="getDataList" /> <pagination small v-show="total1 > 0" :total="total1" :page.sync="queryParams1.page" :limit.sync="queryParams1.pageSize" @pagination="getDataList" /> </div> </el-col> <!-- <el-col :span="6"> @@ -615,65 +312,34 @@ </el-col> --> <el-col> <div class="grid-content bg-purple"> <div style=" <div style=" text-align: center; margin-bottom: 10px; margin-top: 10px; margin-left: 8%; " > "> 已选项目列表 </div> <el-table :data="DataList" border style="width: 90%; margin-left: 20px" height="400" :span-method="objectSpanMethod" > <el-table :data="DataList" border style="width: 90%; margin-left: 20px" height="400" :span-method="objectSpanMethod"> <el-table-column prop="proName" label="检查项目"> </el-table-column> <el-table-column prop="priceOrd" label="原价" align="center" width="80px" > <el-table-column prop="priceOrd" label="原价" align="center" width="80px"> </el-table-column> <el-table-column label="折扣" width="100px"> <template slot-scope="scope"> <!-- 只输入纯数字折扣 --> <el-input v-model.number="scope.row.limits" @input="calculateDiscount(scope.row)" placeholder="输入折扣" size="small" type="number" min="0" step="0.1" max="10" > <el-input v-model.number="scope.row.limits" @input="calculateDiscount(scope.row)" placeholder="输入折扣" size="small" type="number" min="0" step="0.1" max="10"> </el-input> </template> </el-table-column> <el-table-column prop="priceNow" label="优惠价" width="80px" align="center" > <el-table-column prop="priceNow" label="现价" width="80px" align="center"> </el-table-column> <el-table-column label="操作" align="center" width="80px"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)" title="删除" > <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)" title="删除"> </el-button> </template> </el-table-column> @@ -698,10 +364,7 @@ </template> </el-table-column>--> </el-table> <!-- 添加项目总数显示 --> <div style="margin-top: 10px; text-align: right;font-size: 14px"> 共计 <span style="font-weight: bold;">{{ DataList.length }}</span> 条项目 </div> <h4 style="font-weight: 600;padding-left:20px">一共选中{{DataList.length}}项,合计:{{ form.xianprice }}元</h4> </div> </el-col> </el-row> @@ -736,12 +399,7 @@ import Packages from "@/components/Packages"; import { listCategory } from "@/api/mall/category"; import { listKeyword } from "@/api/mall/keyword"; // import { getProParentIdDxList, getProSonDxList } from "@/api/system/tijian"; import { getProParentIdDxList, search, getProSonDxList, } from "@/api/system/package"; import { getProParentIdDxList, search, getProSonDxList } from "@/api/system/package"; import { getPacList, getPacInFo, @@ -758,22 +416,13 @@ saveOreditTjPacNew, } from "@/api/system/package"; import { Message } from "element-ui"; import Big from "big.js"; import Big from 'big.js'; export default { name: "Package", dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"], components: { Packages }, data() { let checkPhoneNum = (rule, value, callback) => { let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/); if (value == "" && value == undefined && !value) { return callback(""); } else if (value != undefined && value != "") { return callback(); } else if (!patter.test(value)) { return callback(""); } }; return { pics: 0, filterText: "", @@ -792,48 +441,33 @@ children: [], label: "proName", }, isCollapsed: true, // 默认为折叠状态 isCollapsed: true, categoryList: [], keys: "", keywordList: [], dataListAll: [], // 多选框 priceNow: "", checkAll: false, isIndeterminate: true, // 遮罩层 loading: false, radio: 3, // 选中数组 ids: [], // 非单个禁用 single: true, // 非多个禁用 multiple: true, // 显示搜索条件 showSearch: true, // 体检套餐表格数据 packageList: [], // 套餐选中的父项 allpackageList: [], // 已选 newproName: [], // 所有体检项目· allList: [], treeList: [], // 所有套餐数据 // allpackage:[], // 弹出层标题 title: "", // 是否显示弹出层 lastXianPrice: 0, open: false, Seachopen: false, checkedNodes: [], pacId: "", // 总条数 total: 0, total1: 0, // 查询参数 queryParams: { pageNum: 1, pageSize: 10, @@ -845,364 +479,29 @@ pageSize: 30, nr: "", }, // 表单参数 form: { xianprice: null, // 优惠价 counterPrice: null, //原价 xianprice: null, counterPrice: null, limits: 10, }, forms: {}, youhui: 10, // 表单校验 rules: { deleted: [ { required: true, validator: checkPhoneNum, trigger: "blur" }, ], pacName: [ { required: true, validator: checkPhoneNum, trigger: "blur" }, ], pacStatus: [ { required: true, validator: checkPhoneNum, trigger: "change" }, ], // categoryId: [ // { required: true, validator: checkPhoneNum, trigger: "change" }, // ], /* keywords: [ { required: true, validator: checkPhoneNum, trigger: "change" }, ], */ isOnSale: [ { required: true, validator: checkPhoneNum, trigger: "change" }, ], sort: [{ required: true, validator: checkPhoneNum, trigger: "blur" }], retailPrice: [ { required: true, validator: checkPhoneNum, trigger: "blur" }, ], counterPrice: [ { required: true, validator: checkPhoneNum, trigger: "blur" }, ], tjCategory: [ { required: true, validator: checkPhoneNum, trigger: "blur" }, ], }, debounceTimer: null, rules: {}, }; }, // watch: { // filterText(val) { // this.$refs.tree.filter(val); // }, // }, created() { this.getList(); this.getKeyword(); this.getCategory(); }, methods: { toggleCollapse() { this.isCollapsed = !this.isCollapsed; // 点击按钮时切换isCollapsed的值 debounceNumberChange(currentValue, oldValue) { clearTimeout(this.debounceTimer); this.debounceTimer = setTimeout(() => { this.numberChange(currentValue, oldValue); }, 300); }, filterNode(value, data) { if (!value) return true; // return data.proName.indexOf(value) !== -1; if (data.proName.indexOf(value) !== -1) { return data.proName.indexOf(value) !== -1; } else { return data.proEngName.indexOf(value) !== -1; } }, /** 查询体检套餐列表 */ getList() { this.loading = true; getPacTjProjectList().then((response) => { this.allList = response.data; if (this.allList.proStatus === 0) { this.allList.proStatus = "启用"; } else { this.allList.proStatus = "停用"; } this.loading = false; }); getPacList(this.queryParams).then((response) => { response.rows.forEach((item, index) => { item.newID = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1; }); this.total = response.total; this.packageList = response.rows; this.loading = false; }); }, /** 查询关键字列表 */ getKeyword() { this.loading = true; listKeyword(this.queryParams).then((response) => { this.keywordList = response.rows; }); }, sel(val) { let id = val; this.keys = ""; id.forEach((item) => { this.keys += item + ","; }); }, /** 查询类目列表 */ getCategory() { this.loading = true; listCategory(this.queryParams).then((response) => { this.categoryList = response.rows; console.log(this.categoryList, 9988); }); }, shangpin(vals) {}, // 取消按钮 cancel() { this.open = false; this.Seachopen = false; this.reset(); }, // 表单重置 reset() { this.form = { pacId: null, pacName: null, pacRemark: null, createBy: null, createTime: null, updateBy: null, updateTime: null, deleted: null, allSonName: null, allProName: null, priceNow: null, proId: null, // pacStatus: "启用", }; this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, handlePackage() { this.$refs.aaa.open = true; this.$refs.aaa.getList(); this.$refs.aaa.title = "套餐字典"; }, handleChanges(param1) { this.form.pacName = param1[0].pacName; this.form.hisPacId = param1[0].pacId; if (param1[0].price) { this.form.counterPrice = param1[0].price; this.form.retailPrice = param1[0].price; } }, /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, // 多选框选中数据 handleSelectionChange(selection) { if (!selection[0]) { return; } this.forms = selection[0]; this.ids = selection.map((item) => item.pacId); this.single = selection.length !== 1; this.multiple = !selection.length; }, /** 新增按钮操作 */ handleAdd() { this.reset(); this.open = true; this.title = "体检套餐信息维护"; this.DataList = []; this.checkedkey = []; this.checkedListkey = []; this.getDataList(); // getAllList().then((response) => { // this.allList = response.data; // if (this.allList.proStatus === 0) { // this.allList.proStatus = "启用"; // } else { // this.allList.proStatus = "停用"; // } // this.loading = false; // }); // if (!this.form.tjProjectList) { // this.form.tjProjectList = [] // this.form.tjProjectList.push({ // id: parseInt(length), // proName: "", // allSonProName: "", // proPrice: "", // priceNow: "", // proId: "", // Selection, // }); // } }, // 是否启用 handleStatusChange(row) { let data = { pacId: row.pacId, pacStatus: row.pacStatus, }; let text = row.pacStatus === "0" ? "启用" : "停用"; this.$confirm("确认要" + text + row.pacName + "套餐吗?") .then(function () { return updateStatus(data); }) .then(() => { this.msgSuccess(text + "成功"); }) .catch(function () { row.pacStatus = row.pacStatus === "0" ? "0" : "1"; }); }, /** 修改按钮操作 */ handleUpdate(row) { this.title = "体检套餐信息维护"; this.open = true; // 重置数据 this.DataList = []; this.checkedkey = []; this.checkedListkey = []; this.checkedNodes = []; // 添加这行,重置选中节点 getPacInFo(row.pacId).then((response) => { this.form = response.data; // 处理关键字 if (this.form.keywords) { this.form.keywords = this.form.keywords.slice(0, -1); this.form.keywords = this.form.keywords.split(","); } // 处理项目数据 if (response.data.packageProjects && response.data.packageProjects.length > 0) { this.DataList = response.data.packageProjects; // 更新选中状态 this.DataList.forEach((item) => { this.checkedkey.push(item.proId); this.checkedListkey.push(item.proId); this.checkedNodes.push(item.proId); // 添加到选中节点数组 }); // 计算总价和折扣 this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); this.form.xianprice = this.DataList.reduce((total, item) => total + item.priceNow, 0); this.youhui = this.DataList[0]?.limits || 10; } // 获取新的数据列表 this.getDataList(); }); }, // 新增行 addmembers() { if (this.form.pacName) { if (!this.form.tjProjectList) { this.form.tjProjectList = []; this.form.tjProjectList.push({ id: parseInt(length), proName: "", allSonProName: "", proPrice: "", priceNow: "", proId: "", Selection, }); } else { this.form.tjProjectList.push({ id: parseInt(length), proName: "", allSonProName: "", proPrice: "", priceNow: "", proId: "", Selection, }); } } else { Message.warning("请先填写套餐名称"); } this.$forceUpdate(); }, // 删除行 Delete(index) { if (this.form.tjProjectList.length == 0) { this.$alert("请先选择要删除的数据", "提示", { confirmButtonText: "确定", }); } else { this.form.tjProjectList.splice(index, 1); } }, /** 删除按钮操作 */ handleDelete1(row) { this.DataList = this.DataList.filter((item) => item.proId !== row.proId); // 从 checkedNodes 中移除 const index = this.checkedNodes.indexOf(row.proId); if (index > -1) { this.checkedNodes.splice(index, 1); } const tree = this.$refs.tree; const node = tree.getNode(row.proId); if (node) { node.setChecked(false); } this.updateTotalPrice(); }, getSelectValue(val) { this.form.tjProjectList.forEach((formitem) => { if (formitem.proName == val) { formitem.allSonProName = ""; this.allList.find((item) => { if (item.proName == val) { formitem.proId = item.proId; formitem.proPrice = item.proPrice; formitem.priceNow = item.proPrice; formitem.allSonProName = item.allSonProName; // item.tjProjectList.forEach((item1) => { // this.$nextTick(() => { // formitem.allSonProName = // formitem.allSonProName + "," + item1.proName; // }); // // this.form.tjProjectList.allSonProName = this.form.tjProjectList.allSonProName+','+item1.proName // }); } }); } }); for (let i = 0; i < this.form.tjProjectList.length; i++) { for (let j = i + 1; j < this.form.tjProjectList.length; j++) { if ( this.form.tjProjectList[i].proId == this.form.tjProjectList[j].proId ) { this.form.tjProjectList.splice(j, 1); j--; this.$modal.msgError("此项目已录入,不可重复录入"); } } } return this.form.tjProjectList; }, numberChange(currentValue, oldValue) { this.$confirm("确定修改所有子项的折扣吗?", "提示", { confirmButtonText: "确定", @@ -1217,37 +516,279 @@ const limits = new Big(item.limits); const result = proPrice.times(limits.div(10)); item.priceNow = result.toNumber(); this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)); }); this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)).toNumber(); this.lastXianPrice = this.form.xianprice; }) .catch(() => { this.youhui = oldValue; }); }, updateProPrice(row) { const proPrice = new Big(row.priceOrd); const limits = new Big(row.limits); const result = proPrice.times(limits.div(10)); // ordPrice * (discount / 10) const result = proPrice.times(limits.div(10)); row.priceNow = result.toNumber(); this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)).toNumber(); this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; // console.log(this.youhui, 1212); this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; }, calculateDiscount(row) { if (row.limits > 10) { row.limits = 10; // 强制将值设置为最大值 row.limits = 10; } else if (row.limits < 0) { row.limits = 0; // 强制将值设置为最小值 row.limits = 0; } this.updateProPrice(row); // 更新价格或其他逻辑 this.updateProPrice(row); }, // 默认接受四个值 { 当前行的值, 当前列的值, 行的下标, 列的下标 } toggleCollapse() { this.isCollapsed = !this.isCollapsed; }, filterNode(value, data) { if (!value) return true; return data.proName.indexOf(value) !== -1 || data.proEngName.indexOf(value) !== -1; }, getList() { this.loading = true; getPacTjProjectList().then((response) => { this.allList = response.data; this.loading = false; }); getPacList(this.queryParams).then((response) => { response.rows.forEach((item, index) => { item.newID = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1; }); this.total = response.total; this.packageList = response.rows; this.loading = false; }); }, getKeyword() { this.loading = true; listKeyword(this.queryParams).then((response) => { this.keywordList = response.rows; }); }, sel(val) { let id = val; this.keys = id.join(","); }, getCategory() { this.loading = true; listCategory(this.queryParams).then((response) => { this.categoryList = response.rows; }); }, shangpin(vals) {}, cancel() { this.open = false; this.Seachopen = false; this.reset(); }, reset() { this.form = { pacId: null, pacName: null, pacRemark: null, createBy: null, createTime: null, updateBy: null, updateTime: null, deleted: null, allSonName: null, allProName: null, priceNow: null, proId: null, xianprice: null, counterPrice: null, limits: 10, }; this.resetForm("form"); }, handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, handlePackage() { this.$refs.aaa.open = true; this.$refs.aaa.getList(); this.$refs.aaa.title = "套餐字典"; }, handleChanges(param1) { this.form.pacName = param1[0].pacName; this.form.hisPacId = param1[0].pacId; if (param1[0].price) { this.form.counterPrice = param1[0].price; this.form.retailPrice = param1[0].price; } }, resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, handleSelectionChange(selection) { if (!selection[0]) return; this.forms = selection[0]; this.ids = selection.map((item) => item.pacId); this.single = selection.length !== 1; this.multiple = !selection.length; }, handleAdd() { this.reset(); this.open = true; this.title = "体检套餐信息维护"; this.DataList = []; this.checkedkey = []; this.queryParams1.nr = ""; this.queryParams1.page = 1; this.checkedListkey = []; this.checkedNodes = []; this.getDataList(); }, handleStatusChange(row) { let data = { pacId: row.pacId, pacStatus: row.pacStatus, }; let text = row.pacStatus === "0" ? "启用" : "停用"; this.$confirm("确认要" + text + row.pacName + "套餐吗?") .then(() => updateStatus(data)) .then(() => { this.msgSuccess(text + "成功"); }) .catch(() => { row.pacStatus = row.pacStatus === "0" ? "0" : "1"; }); }, handleUp() { this.title = "体检套餐信息维护"; this.open = true; getPacInFo(this.forms.pacId).then((response) => { Object.keys(response.data).forEach((key) => { this.$set(this.form, key, response.data[key]); }); this.youhui = response.data.limits || 10; this.pics = response.data.price || 0; this.form.xianprice = response.data.newPrice || 0; this.lastXianPrice = this.form.xianprice; this.form.keywords = response.data.keywords && response.data.keywords.length > 0 ? response.data.keywords.slice(0, -1).split(",") : []; this.DataList = response.data.packageProjects || []; this.checkedkey = this.DataList.map(item => item.proId || ''); this.checkedListkey = [...this.checkedkey]; this.checkedNodes = [...this.checkedkey]; this.getDataList(); }); }, handleUpdate(row) { this.reset(); this.title = "体检套餐信息维护"; this.open = true; this.loading = true; getPacInFo(row.pacId).then((response) => { const data = response.data || {}; Object.keys(data).forEach((key) => { this.$set(this.form, key, data[key]); }); this.youhui = data.limits || 10; this.pics = data.price || 0; this.form.xianprice = data.newPrice || 0; this.lastXianPrice = this.form.xianprice; this.form.keywords = data.keywords && data.keywords.length > 0 ? data.keywords.slice(0, -1).split(",") : []; this.DataList = data.packageProjects || []; this.checkedkey = this.DataList.map(item => item.proId || ''); this.checkedListkey = [...this.checkedkey]; this.checkedNodes = [...this.checkedkey]; return this.getDataList(); }).then(() => { this.loading = false; this.$nextTick(() => { this.$refs.form.validate(); }); }).catch((error) => { this.loading = false; this.$message.error("加载数据失败"); console.error(error); }); }, addmembers() { if (this.form.pacName) { if (!this.form.tjProjectList) { this.form.tjProjectList = []; this.form.tjProjectList.push({ id: parseInt(length), proName: "", allSonProName: "", proPrice: "", priceNow: "", proId: "", }); } else { this.form.tjProjectList.push({ id: parseInt(length), proName: "", allSonProName: "", proPrice: "", priceNow: "", proId: "", }); } } else { Message.warning("请先填写套餐名称"); } this.$forceUpdate(); }, Delete(index) { if (this.form.tjProjectList.length === 0) { this.$alert("请先选择要删除的数据", "提示", { confirmButtonText: "确定" }); } else { this.form.tjProjectList.splice(index, 1); } }, handleDelete1(row) { this.DataList = this.DataList.filter((item) => item.proId !== row.proId); const index = this.checkedNodes.indexOf(row.proId); if (index > -1) { this.checkedNodes.splice(index, 1); } const tree = this.$refs.tree; const node = tree.getNode(row.proId); if (node) { node.setChecked(false); } this.updateTotalPrice(); }, getSelectValue(val) { this.form.tjProjectList.forEach((formitem) => { if (formitem.proName === val) { formitem.allSonProName = ""; this.allList.find((item) => { if (item.proName === val) { formitem.proId = item.proId; formitem.proPrice = item.proPrice; formitem.priceNow = item.proPrice; formitem.allSonProName = item.allSonProName; } }); } }); for (let i = 0; i < this.form.tjProjectList.length; i++) { for (let j = i + 1; j < this.form.tjProjectList.length; j++) { if (this.form.tjProjectList[i].proId === this.form.tjProjectList[j].proId) { this.form.tjProjectList.splice(j, 1); j--; this.$modal.msgError("此项目已录入,不可重复录入"); } } } return this.form.tjProjectList; }, objectSpanMethod({ row, column, rowIndex, columnIndex }) { let fields = ["propinName"]; let cellValue = row[column.property]; @@ -1278,14 +819,9 @@ getDataList() { this.loading = true; search(this.queryParams1).then((response) => { this.Treedata = response.data.list; // 更新树形数据 this.total1 = response.data.total; // 更新总条数 this.pics = this.DataList.reduce( (total, item) => total + item.priceOrd, 0 ); // 确保在数据加载后保持选中状态 this.Treedata = response.data.list; this.total1 = response.data.total; this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); this.$nextTick(() => { this.$refs.tree.setCheckedKeys(this.checkedNodes); }); @@ -1293,140 +829,116 @@ this.loading = false; }, handleFilterInput() { this.queryParams1.page = 1; // 搜索时重置为第一页 this.getDataList(); // 调用接口获取数据 // 在过滤后,重新设置选中状态 this.queryParams1.page = 1; this.getDataList(); this.$nextTick(() => { this.$refs.tree.setCheckedKeys(this.checkedNodes); }); }, // 分页事件 handlePageChange({ page, pageSize }) { this.queryParams.page = page; // 更新当前页 this.queryParams.pageSize = pageSize; // 更新每页条数 this.getDataList(); // 调用接口获取数据 }, handleCurrentChecked(data, checked, indeterminate) { if (checked) { // 检查是否已存在 if (!this.DataList.some(item => item.proId === data.proId)) { // 添加新项目时使用与已有项目相同的折扣率 const currentDiscount = this.DataList.length > 0 ? this.DataList[0].limits : 10; const priceNow = new Big(data.proPrice).times(new Big(currentDiscount).div(10)).toNumber(); if (!this.DataList.some((item) => item.proId === data.proId)) { this.DataList.push({ proId: data.proId, proName: data.proName, priceOrd: data.proPrice, limits: currentDiscount, priceNow: priceNow limits: 10, priceNow: data.proPrice, }); if (!this.checkedNodes.includes(data.proId)) { this.checkedNodes.push(data.proId); } } if (!this.checkedNodes.includes(data.proId)) { this.checkedNodes.push(data.proId); } } else { // 移除项目 this.DataList = this.DataList.filter(item => item.proId !== data.proId); this.DataList = this.DataList.filter((item) => item.proId !== data.proId); const index = this.checkedNodes.indexOf(data.proId); if (index > -1) { this.checkedNodes.splice(index, 1); } } // 更新总价和折扣 this.updateTotalPrice(); }, updateTotalPrice() { // 计算所有项目的总优惠价 this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)).toNumber(); // 计算原价总和 this.pics = this.DataList.reduce( (total, item) => total + item.priceOrd, 0 ); this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); }, changeXianjia() { if (this.form.xianprice !== 0) { this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; } }, numberChangeXianPrice(currentValue, oldValue) { if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) return; clearTimeout(this.debounceTimer); this.debounceTimer = setTimeout(() => { this.$confirm("确定修改所有子项的折扣吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }) .then(() => { this.youhui = currentValue; let totalYsprice = new Big(0); this.DataList.forEach((item) => { item.limits = this.youhui; const ordPrice = new Big(item.priceOrd); const discount = new Big(item.limits); const result = ordPrice.times(discount.div(10)); item.priceNow = result.toNumber(); totalYsprice = totalYsprice.plus(new Big(item.priceNow)); }); if (!totalYsprice.eq(this.form.xianprice)) { const diff = new Big(this.form.xianprice).minus(totalYsprice); if (this.DataList.length > 0) { const lastItem = this.DataList[this.DataList.length - 1]; const newYsPrice = new Big(lastItem.priceNow).plus(diff).toNumber(); this.$set(this.DataList[this.DataList.length - 1], "priceNow", newYsPrice); } } this.lastXianPrice = this.form.xianprice; }) .catch(() => { this.youhui = oldValue; }); }, 500); }, spliceData() { for (var i = 0; i < this.DataList.length; i++) { for (var j = i + 1; j < this.DataList.length; j++) { if (this.DataList[i].proId == this.DataList[j].proId) { //如果第一个等于第二个,splice方法删除第二个 if (this.DataList[i].proId === this.DataList[j].proId) { this.DataList.splice(j, 1); j--; } } } return this.DataList; }, // 点击获取每个树节点 handleCurrentChecked1(data, checked, checkedNodes) { if (checked == false) { this.DataList.forEach((item, index) => { if (item.proId == data.proId) { this.DataList.splice(index, 1); this.TotalPrice1 = 0; this.pics = 0; this.DataList.forEach((item1) => { this.pics += item1.priceOrd; // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; }); } }); } else if (checked == true) { if (!checked) { this.DataList = this.DataList.filter((item) => item.proId !== data.proId); this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); this.pics = this.TotalPrice1; } else { this.DataList.push(data); this.pics = 0; this.DataList.forEach((item1) => { this.pics += item1.priceOrd; if (item1.proParentId == this.dataObj.proId) { item1.propinName = this.dataObj.proName; item1.propinPrice = this.dataObj.proPrice; } }); this.pics = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); this.spliceData(); this.TotalPrice1 = 0; this.pics = 0; this.DataList.forEach((item1) => { // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; this.pics += item1.priceOrd; }); this.TotalPrice1 = this.pics; } }, /** 删除按钮操作 */ handleDeletes(row) { this.DataList.forEach((item, index) => { if (item.proParentId == row.proParentId) { this.DataList.splice(index, 1); this.TotalPrice1 = 0; this.DataList.forEach((item1) => { this.TotalPrice1 = item1.proPrice + this.TotalPrice1; }); } }); // this.$refs.trees.setCheckedKeys([]); this.DataList = this.DataList.filter((item) => item.proParentId !== row.proParentId); this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); }, /** 提交按钮 */ submitForm() { this.form.limits = this.youhui; this.form.price = this.pics; this.form.priceNow = this.queryParams.xianprice; this.form.priceNow = this.form.xianprice; if (this.keys) { this.form.keywords = this.keys; // 如果有 this.keys,则直接赋值 } else { // this.form.keywords = this.form.keywords; // 如果没有,则将 this.form.keywords 转成字符串 this.form.keywords = this.keys; } let packageProjects = []; // 定义一个空数组 let packageProjects = []; this.DataList.forEach((item) => { packageProjects.push({ proName: item.proName, @@ -1445,76 +957,42 @@ price: this.pics, pacId: this.form.pacId || null, isOnSale: this.form.isOnSale, // keywords: this.form.keywords, sort: this.form.sort, retailPrice: this.form.retailPrice, tjCategory: this.form.tjCategory, pacRemark: this.form.pacRemark, detail: this.form.detail, }; saveOreditTjPacNew(data).then((res) => { console.log(res, 555); this.open = false; this.getList(); }); }, /** 删除按钮操作 */ handleDelete(row) { const pacIds = row.pacId || this.ids; this.$modal .confirm('是否确认删除体检套餐编号为"' + pacIds + '"的数据项?') .then(function () { return delPackage(pacIds); }) .then(() => delPackage(pacIds)) .then(() => { this.getList(); this.$modal.msgSuccess("删除成功"); }) .catch(() => {}); }, /** 分配套餐内项目操作 */ handleProject: function (row) { handleProject(row) { const pacId = row.pacId; this.$router.push("/system/user-auth/role/" + pacId); }, /** 导出按钮操作 */ handleExport() { this.download( "system/package/export", { ...this.queryParams, }, { ...this.queryParams }, `package_${new Date().getTime()}.xlsx` ); }, submitcheckbox() { let _this = this; let proIds = []; this.allList.forEach((item) => { _this.newproName.forEach((item1) => { if (item.proName == item1) { proIds.push(item.proId); } }); }); let data = { pacid: Number(this.pacId), proIds: proIds.toString(), }; updateProject(data).then((response) => { this.$modal.msgSuccess("成功"); this.Seachopen = false; }); }, }, }; </script> <style> .el-tooltip__popper { max-width: 800px; @@ -1544,11 +1022,13 @@ left: 40%; bottom: 2%; } .tab3 { max-height: 400px; overflow-y: auto; border: 1px solid #d9d9d9; } /* .custom-tree-node { flex: 1; display: flex;