You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

464 lines
14 KiB

<template>
<div class="examinationcategory">
<div>
<span>项目类别</span>
<el-select
v-model="value"
placeholder="请选择"
style="margin-left: 20px"
@change="getprojectgroups"
clearable
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.displayName"
:value="item.id"
>
</el-option>
</el-select>
</div>
<div class="mainarea">
<div class="mainarealeftbox">
<el-table
:header-cell-style="{ background: '#eef1f6' }"
:data="tabledata"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection"></el-table-column>
<el-table-column
label="未选组合项目"
prop="displayName"
></el-table-column>
</el-table>
</div>
<div class="mainbutton">
<div>
<el-button
type="primary"
style="margin-top: 10px"
@click="addselecteditems"
>移除 <i class="el-icon-arrow-left"></i
></el-button>
</div>
<div>
<el-button type="primary" style="margin-top: 10px" @click="removedata"
>添加 <i class="el-icon-arrow-right"></i
></el-button>
</div>
<div>
<el-button
style="margin-top: 10px"
:disabled="saveornot"
@click="Onsubmit"
>保存
</el-button>
</div>
</div>
<!-- -->
<div class="mainarearightbox">
<el-table
:header-cell-style="{ background: '#eef1f6' }"
:data="personnelUnit.nogroupselected"
@selection-change="selecteditems"
>
<!-- temporaryselection personnelUnit.nogroupselected-->
<el-table-column type="selection"></el-table-column>
<el-table-column
label="已选组合项目"
width="110"
prop="displayName"
></el-table-column>
<el-table-column label="标准价格" prop="price">
<template slot-scope="scope">
<el-input
disabled
type="text"
v-model="personnelUnit.nogroupselected[scope.$index].price"
/>
</template>
</el-table-column>
<el-table-column label="折扣" prop="price">
<template slot-scope="scope">
<el-input
@change="discount(scope.$index)"
type="text"
v-model="personnelUnit.nogroupselected[scope.$index].discount"
/>
</template>
</el-table-column>
<el-table-column label="价格" prop="price">
<template slot-scope="scope">
<el-input
@input="changingprices(scope.row.price)"
type="text"
v-model="personnelUnit.nogroupselected[scope.$index].price"
/>
</template>
</el-table-column>
</el-table>
</div>
<div class="operatebottom">
<div>
<el-button type="primary" @click="packagerepicion"
>复制套餐</el-button
>
</div>
<div style="margin-top: 10px">
<el-button type="primary" @click="copygroup">复制分组</el-button>
</div>
</div>
</div>
<!-- 复制套餐弹框 -->
<el-dialog title="编辑" :visible.sync="dialogVisible" width="60%">
<el-table :data="packagelist">
<el-table-column label="编号" prop="id"></el-table-column>
<el-table-column label="名称" prop="displayName"></el-table-column>
<el-table-column label="创建者" prop="creatorName"></el-table-column>
<el-table-column label="创建时间" prop="creatorName">
<template slot-scope="scope">
{{ scope.row.creationTime | dateFormat }}
</template>
</el-table-column>
<el-table-column
label="修改者"
prop="lastModifierName"
></el-table-column>
<el-table-column label="修改时间" prop="lastModificationTime">
<template slot-scope="scope">
{{ scope.row.lastModificationTime | dateFormat }}
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"
> </el-button
>
</span>
</el-dialog>
<!-- 复制分组 弹框-->
<el-dialog
title="复制分组"
:visible.sync="copyGroupdialogVisible"
width="50%"
>
<el-table>
<el-table-column label="编号"></el-table-column>
<el-table-column label="创建者"></el-table-column>
<el-table-column label="创建时间"></el-table-column>
<el-table-column label="修改者"></el-table-column>
<el-table-column label="修改时间"></el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="copyGroupdialogVisible = false"> </el-button>
<el-button type="primary" @click="copyGroupdialogVisible = false"
> </el-button
>
</span>
</el-dialog>
<!-- -->
</div>
</template>
<script>
import { getapi, postapi } from "@/api/api";
import { mapState } from "vuex";
import { arrayExistObj } from "../../utlis/proFunc";
export default {
data() {
return {
saveornot: true, //保存按钮
selecteddata: [], //已选数据
unselecteddata: [], //未选数据
unselecteddata: [], //右边勾选中
rightselctedata: [], //右侧已选
options: [],
value: "",
dialogVisible: false,
copyGroupdialogVisible: false,
packagelist: [],
tabledata: [],
temporaryselection: [], //已选组合项目table
copegroupdata: [], //复制分组
addrulst: [], //添加保存的Id
price: "", //价格
title: 1,
};
},
computed: {
...mapState(["personnelUnit"]),
},
created() {
this.getitemtype();
this.getportfolioitems();
},
methods: {
changingprices(price) {
this.price = price;
},
discount(index) {
console.log(index); //100标准价格
this.personnelUnit.nogroupselected[index].price = Math.round(
(100 * Number(this.personnelUnit.nogroupselected[index].queueTime)) /
100,
2
);
},
inputchang(row, newVal) {
this.price = row.price;
console.log(this.price);
},
//保存按钮
Onsubmit() {
if (!this.personnelUnit.customerOrgGroupId) {
alert("请先选择单位分组");
return;
} else {
console.log(this.personnelUnit.nogroupselected);
postapi("/api/app/customer-org-group-detail/many", this.addrulst).then(
(res) => {
this.$message.success("操作成功");
console.log(this.addrulst);
}
);
}
// if (this.title == 2) {
// if (!this.personnelUnit.customerOrgGroupId) {
// alert("请先选择单位分组");
// return;
// } else {
// console.log(this.personnelUnit.nogroupselected);
// postapi(
// "/api/app/customer-org-group-detail/many",
// this.addrulst
// ).then((res) => {
// this.$message.success("操作成功");
// console.log(this.addrulst);
// });
// }
// }
// console.log(this.addrulst);
// // console.log(this.personnelUnit.form.id);
// if (this.addrulst[customerOrgGroupId] == undefined) {
// this.$message.warning("请先选择单位分组");
// } else {
// postapi("/api/app/customer-org-group-detail/many", this.addrulst).then(
// (res) => {
// console.log(this.personnelUnit.form.id);
// this.$message.success("操作成功");
// }
// );
// }
},
//移除按钮
addselecteditems() {
let lfind = -1;
console.log(this.personnelUnit.id);
if (this.personnelUnit.form.id == "") {
alert("请先选择单位类别");
} else {
// 让按钮恢复禁用
this.saveornot = false;
//personnelUnit.nogroupselected
if (this.rightselctedata.length == 0) {
this.$message.warning("已选数据为空无法移动");
} else {
// this.title = 2;
let count = this.rightselctedata.length - 1;
for (var i = count; i >= 0; i--) {
if ([...new Set(this.rightselctedata)]) {
this.tabledata.push(this.rightselctedata[i]);
this.personnelUnit.nogroupselected.splice(i, 1);
}
}
console.log(this.personnelUnit.customerOrgGroupId);
// this.
this.rightselctedata.forEach((item) => {
lfind = arrayExistObj(
this.personnelUnit.nogroupselected,
"id",
item.id
);
if (lfind > -1) this.personnelUnit.nogroupselected.splice(lfind, 1);
this.addrulst.push({
asbitemId: item.id,
price: item.price,
// price: this.price,
customerOrgGroupId: this.personnelUnit.customerOrgGroupId,
});
});
}
}
},
//右侧勾选按钮
selecteditems(val) {
this.rightselctedata = val;
console.log(this.rightselctedata);
},
// 添加按钮
removedata() {
let lfind = -1;
if (this.personnelUnit.form.id == "") {
alert("请先选择单位分组");
} else {
if (this.unselecteddata.length == 0) {
this.$message.warning("未选数据为空无法移动");
} else {
this.saveornot = false;
let count = this.unselecteddata.length - 1;
for (var i = count; i >= 0; i--) {
// this.tabledata.splice(i, 1);
if ([...new Set(this.personnelUnit.nogroupselected)]) {
// this.unselecteddata.push(this.unselecteddata[i]);
this.personnelUnit.nogroupselected.push(this.unselecteddata[i]);
this.tabledata.splice(this.tabledata[i], 1);
}
// this.personnelUnit.nogroupselected.push(this.unselecteddata[i]);
}
console.log(this.personnelUnit.customerOrgGroupId);
// let prices = "";
this.personnelUnit.nogroupselected.forEach((items) => {
// prices = items.price;
//this.tabledata
console.log(items);
lfind = arrayExistObj(this.tabledata, "id", items.id);
if (lfind > -1) this.tabledata.splice(lfind, 1);
this.addrulst.push({
asbitemId: items.id, // "3a0b2f0c-f884-bec4-a350-79b46b455a2d"
price: items.price,
// price: this.price == "" ? items.price : this.price,
customerOrgGroupId: this.personnelUnit.customerOrgGroupId,
});
});
console.log(this.addrulst, "hhhhhhh");
}
}
},
// 左侧未选
handleSelectionChange(val) {
// this.selecteddata = val;
this.unselecteddata = val;
console.log(this.unselecteddata);
},
//获取所有组合项目
getportfolioitems() {
getapi("/api/app/asbitem/in-filter?Filter").then((res) => {
this.tabledata = res.data.items;
});
},
//项目类别选择
getprojectgroups(v) {
if (v !== "") {
getapi(`/api/app/asbitem/in-item-type/${v}`).then((res) => {
console.log(res);
this.tabledata = res.data;
});
} else {
getapi("/api/app/asbitem/in-filter?Filter").then((res) => {
this.tabledata = res.data.items;
});
}
},
//复制分组弹框
copygroup() {
if (this.personnelUnit.form == "") {
this.$message.warning("请选择分组");
} else {
this.copyGroupdialogVisible = true;
getapi(
`/api/app/customer-org-group-detail/customer-org-group-detail-in-asbitem?CustomerOrgGroupId=${this.personnelUnit.form.id}`
).then((res) => {
console.log(res);
this.personnelUnit.form = res.data;
});
}
},
//复制套餐
packagerepicion() {
this.dialogVisible = true;
getapi("/api/app/medical-package").then((res) => {
this.packagelist = res.data.items;
console.log(res);
});
},
//
getitemtype() {
getapi("/api/app/item-type/by-code-all").then((res) => {
this.options = res.data;
});
},
//获取当前列列表数据
listeninglist(customerOrgGroupId) {
getapi(`/api/app/customer-org-group/${customerOrgGroupId}`).then(
(res) => {
this.personnelUnit.form = res.data;
console.log(res);
}
);
getapi(
`/api/app/customer-org-group-detail/customer-org-group-detail-in-asbitem/${customerOrgGroupId}`
).then((res) => {
console.log(
`/api/app/customer-org-group-detail/customer-org-group-detail-in-asbitem/${customerOrgGroupId}`,
res
);
this.personnelUnit.nogroupselected = res.data;
});
},
// getapi(`/api/app/customer-org-group/${row.id}`).then((res)
},
//监听事件
watch: {
//
"personnelUnit.customerOrgGroupId"(newVal, oldVal) {
console.log(
"watch patientRegister.addTimes newVal:",
newVal,
" oldVal:",
oldVal
);
if (newVal != oldVal) {
this.listeninglist(newVal);
//
}
},
},
};
</script>
<style scoped>
.operatebottom {
margin-left: 5%;
}
.mainarearightbox {
width: 35%;
border: 1px solid #000;
height: 300px;
margin-left: 7%;
overflow: auto;
}
.mainbutton {
margin-left: 5%;
padding: 5px 10px;
margin-top: 5%;
}
.mainarea {
display: flex;
margin-top: 20px;
}
.mainarealeftbox {
width: 20%;
border: 1px solid #000;
height: 300px;
overflow: hidden;
overflow: auto;
margin-left: 7%;
}
.examinationcategory {
margin-top: 30px;
}
</style>