| | |
| | | </el-table-column> |
| | | <el-table-column prop="proName" label="明细项目" width="260px"> |
| | | </el-table-column> |
| | | <el-table-column prop="sl" label="数量" width="56px"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="proPrice" label="原价" width="56px"> |
| | | </el-table-column> |
| | |
| | | </el-tab-pane> |
| | | <el-tab-pane label="单项" name="second"> |
| | | <div class="tab8"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="8"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | 项目列表 |
| | | </div> |
| | |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-col :span="8"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-col :span="8"> |
| | | <div class="grid-content bg-purple"> |
| | | <div style=" |
| | | text-align: center; |
| | |
| | | <el-form-item label="体检类型"> |
| | | <el-select v-model="form.tjType" placeholder="请选择体检类型"> |
| | | <el-option v-for="dict in dict.type.dict_team" :key="dict.value" :label="dict.label" |
| | | :value="dict.value" :disabled="!form.firmId && dict.value === '1'"></el-option> |
| | | :value="dict.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="体检类别"> |
| | |
| | | <el-form-item style="margin-left: 149px"> |
| | | <el-button type="primary" @click="Package" size="mini" style="margin-right: 20px">选择套餐</el-button> |
| | | <el-button type="primary" @click="resetpackage" size="mini" style="margin-right: 20px">重置套餐</el-button> |
| | | <el-button type="primary" @click="submitPrice" :loading="loadingSubmit" |
| | | :disabled="confirm || loadingSubmit" v-if="showHidden.has_charge == 'N'" size="mini">签到登记</el-button> |
| | | <el-button type="primary" @click="submitPrice" :loading="loadingSubmit" :disabled="loadingSubmit" |
| | | v-if="showHidden.has_charge == 'N'" size="mini">签到登记</el-button> |
| | | <el-button type="primary" @click="submitCheckinfee" :disabled="confirm" |
| | | v-if="showHidden.has_charge == 'Y'" size="mini">登记收费</el-button> |
| | | </el-form-item> |
| | |
| | | }; |
| | | }, |
| | | watch: { |
| | | |
| | | filterText(val) { |
| | | this.$refs.tree.filter(val); |
| | | }, |
| | |
| | | |
| | | // this.getData(); |
| | | }, |
| | | mounted() { }, |
| | | |
| | | mounted() { |
| | | this.TreedataList = []; |
| | | this.DataList = []; |
| | | this.marryall = 0; |
| | | }, |
| | | methods: { |
| | | debounceNumberChange(currentValue, oldValue) { |
| | | clearTimeout(this.debounceTimer); |
| | |
| | | }); |
| | | }, |
| | | numberChangeXianPrice(currentValue, oldValue) { |
| | | // 如果现价没有变化,直接返回 |
| | | if (this.TotalPrice === this.lastXianPrice || !this.TotalPrice) { |
| | | return; |
| | | } |
| | | this.$confirm("确定修改所有子项的折扣吗?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | ); |
| | | } |
| | | } |
| | | this.lastXianPrice = this.TotalPrice; |
| | | }) |
| | | .catch(() => { |
| | | this.discount = oldValue; |
| | |
| | | }); |
| | | } else { |
| | | let configKey = "getInfoFromSqlData"; |
| | | getconfigKey(configKey).then((res) => { |
| | | getconfigKey(configKey).then((res) => { |
| | | if (res.code == 200) { |
| | | if (res.msg == "N") { |
| | | var websocket = null; |
| | |
| | | /* this.$refs.aaa.open = true; |
| | | this.$refs.aaa.getAllList(); |
| | | this.$refs.aaa.title = "证件字典"; */ |
| | | |
| | | |
| | | } else if (res.msg == "S") { |
| | | this.cardreader = true; |
| | | _this.cardreaderradio = 3; |
| | |
| | | |
| | | // 取消按钮 |
| | | cancel() { |
| | | this.Seachopen = false; |
| | | this.taocan = false; |
| | | this.malldisble = false; |
| | | this.defaultKeys = []; |
| | | this.DataLists = []; |
| | | }, |
| | | this.TreedataList = []; |
| | | this.DataList = []; |
| | | this.marryall = 0; // 重置合计 |
| | | this.Seachopen = false; |
| | | this.taocan = false; |
| | | this.malldisble = false; |
| | | this.defaultKeys = []; |
| | | this.DataLists = []; |
| | | }, |
| | | |
| | | cancell() { |
| | | if (this.addAddress.address) { |
| | |
| | | this.DataList = []; // 清空已选项目列表 |
| | | this.checkedkey = []; // 清空树的选中状态 |
| | | this.checkedListkey = []; |
| | | this.TreedataList = []; |
| | | this.$refs.tree.setCheckedKeys([]); // 重置树选中状态 |
| | | this.TreedataList = [] |
| | | |
| | | let data = { |
| | | cusId, |
| | |
| | | } |
| | | }, |
| | | handleClick(tab, event) { |
| | | if (this.activeNames == "second") { |
| | | this.DataList = []; |
| | | this.checkedkey = []; |
| | | this.getDataList(); |
| | | } else if (this.activeNames == "third") { |
| | | this.DataLists = []; |
| | | this.checkedkeys = []; |
| | | getZhList().then((response) => { |
| | | if (response.data) { |
| | | this.packageList = response.data; |
| | | } |
| | | this.loading = false; |
| | | }); |
| | | if (this.activeNames == "second") { |
| | | this.DataList = []; |
| | | this.checkedkey = []; |
| | | this.TreedataList = []; |
| | | this.marryall = 0; // 重置合计 |
| | | this.getDataList(); |
| | | } else if (this.activeNames == "third") { |
| | | this.DataLists = []; |
| | | this.checkedkeys = []; |
| | | this.TreedataList = []; |
| | | this.marryall = 0; // 重置合计 |
| | | getZhList().then((response) => { |
| | | if (response.data) { |
| | | this.packageList = response.data; |
| | | } |
| | | }, |
| | | this.loading = false; |
| | | }); |
| | | } |
| | | }, |
| | | // gaibian(val){ |
| | | // let pname = val; |
| | | // getProParentIdDxList(pname).then(response=>{ |
| | |
| | | getProParentIdDxList().then((response) => { |
| | | this.Treedata = response.data.list; |
| | | |
| | | // 回显 TreedataList 到 DataList |
| | | if (this.TreedataList && this.TreedataList.length > 0) { |
| | | this.DataList = this.TreedataList; |
| | | this.marryall = this.DataList.reduce((sum, item) => sum + (item.proPrice || 0) * (item.sl || 1), 0); |
| | | this.checkedListkey = this.DataList.map(item => item.proId); |
| | | this.$nextTick(() => { |
| | | this.$refs.tree.setCheckedKeys(this.checkedListkey); |
| | | }); |
| | | } |
| | | |
| | | if (this.tableData[0]) { |
| | | this.tableData[0].tjProjectList.forEach((selectionitem) => { |
| | | this.Treedata.forEach((item) => { |
| | |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // 回显 packageList 的选中态 |
| | | this.handlePackageSelection(); |
| | | |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | |
| | | handlePackageSelection() { |
| | | // 假设你有之前保存的选中状态或从某个地方获取这些数据 |
| | | let selectedPackageIds = this.getPreviouslySelectedPackages(); // 这是一个假设的函数,实际使用时替换为实际的逻辑 |
| | | |
| | | // 设置 packageList 的选中状态 |
| | | this.$nextTick(() => { |
| | | if (this.$refs.treas) { // 确保 treas 引用已经存在 |
| | | this.$refs.treas.setCheckedKeys(selectedPackageIds, true); |
| | | } |
| | | // 更新 checkedkeys 以反映当前选中的包 |
| | | this.checkedkeys = selectedPackageIds; |
| | | }); |
| | | |
| | | // 根据选中状态更新 DataLists 或其他需要更新的内容 |
| | | this.updateDataListsBasedOnSelection(selectedPackageIds); |
| | | }, |
| | | |
| | | getPreviouslySelectedPackages() { |
| | | // 返回之前保存的选中包ID数组 |
| | | // 例如,从 localStorage 或者 Vuex store 获取 |
| | | return []; // 这里是示例,替换为实际获取数据的逻辑 |
| | | }, |
| | | |
| | | updateDataListsBasedOnSelection(selectedPackageIds) { |
| | | // 根据选中的包ID更新 DataLists |
| | | this.DataLists = []; |
| | | selectedPackageIds.forEach(id => { |
| | | let packageItem = this.packageList.find(item => item.id === id); |
| | | if (packageItem) { |
| | | // 这里假设每个包项目都有一个 proId 数组或者类似的结构,用来获取包中的项目 |
| | | if (packageItem.proIds) { // 假设 packageItem 包含一个 proId 数组 |
| | | packageItem.proIds.forEach(proId => { |
| | | let project = this.findProjectById(proId); // 假设有一个函数来找到项目 |
| | | if (project) { |
| | | this.DataLists.push(project); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 计算合计 |
| | | this.marryalls = this.DataLists.reduce((sum, item) => sum + item.proPrice, 0); |
| | | }, |
| | | |
| | | findProjectById(proId) { |
| | | // 此函数假设你有一个全局的项目列表或者可以从某个API获取 |
| | | // 这里只是一个示例,实际应用中应该根据你的数据结构来实现 |
| | | return this.allpackageList.find(item => item.proId === proId) || null; |
| | | }, |
| | | |
| | | handlepackage(data, checked, checkedNodes) { |
| | |
| | | if (this.DataLists.length >= 1) { |
| | | this.marryalls = 0; |
| | | this.DataLists.forEach((item1) => { |
| | | this.marryalls += item1.proPrice; |
| | | this.marryalls += item1.proPrice * item1.sl; |
| | | |
| | | this.packagedataList.forEach((item3) => { |
| | | if (item1.proParentId == item3.proId) { |
| | |
| | | }); |
| | | } |
| | | }, |
| | | // 点击获取每个树节点 |
| | | handleCurrentChecked(data, checked, checkedNodes) { |
| | | this.dataObj = data; |
| | | if (checked.checkedNodes.length != 0) { |
| | | this.$refs.tree.setCheckedKeys([data.proId]); |
| | | if (checked.checkedNodes.length > 0) { |
| | | const promises = checked.checkedNodes.map(node => getProSonDxList(node.proId)); |
| | | Promise.all(promises).then(results => { |
| | | this.TreedataList = results.flatMap(res => res.data.list); |
| | | this.checkedListkey = []; |
| | | this.DataList = []; |
| | | |
| | | let proId = data.proId; |
| | | getProSonDxList(proId).then((res) => { |
| | | this.TreedataList = res.data.list; |
| | | this.TreedataList.forEach((item) => { |
| | | this.checkedListkey.push(item.proId); |
| | | |
| | | this.DataList.push(item); |
| | | this.spliceData(); |
| | | this.DataList.forEach((item1) => { |
| | | if (item1.proParentId == data.proId) { |
| | | item1.propinName = data.proName; |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | this.spliceData(); // 假设这个方法是你定义的其他地方处理数据的 |
| | | |
| | | // 更新名称和计算总价 |
| | | this.DataList.forEach((item1) => { |
| | | const parent = checked.checkedNodes.find(node => node.proId === item1.proParentId); |
| | | if (parent) { |
| | | item1.propinName = parent.proName; |
| | | } |
| | | }); |
| | | |
| | | this.TotalPrice1 = 0; |
| | | this.marryall = 0; |
| | | if (this.DataList.length != 0) { |
| | | this.list1 = false; |
| | | this.DataList.forEach((item) => { |
| | | this.marryall = item.proPrice * item.sl; |
| | | this.marryall += Number(item.proPrice) * Number(item.sl); |
| | | }); |
| | | } |
| | | }); |
| | |
| | | pacId: _this.pacId, |
| | | proIds: this.proIds, |
| | | }; |
| | | |
| | | // 根据体检类型选择不同的处理方法 |
| | | if (this.form.tjType == 1) { |
| | | if (this.form.firmId) { |
| | | tuantiqueren(data).then((response) => { |
| | | if (response.code == 200) { |
| | | this.processOrderItems(cusId); |
| | |
| | | cusIdCard: item.cusId, |
| | | })); // 创建新的对象,包含 discount 和 id |
| | | gaibianzhekou(newArray).then((res) => { |
| | | this.loadingSubmit = false; |
| | | if (res.code === 200) { |
| | | this.loadingSubmit = false; |
| | | |
| | | let data; |
| | | |
| | | if (pacId || this.tjOrderList.length > 0) { |
| | |
| | | }; |
| | | this.listgetOrder(data); |
| | | } else { |
| | | this.loadingSubmit = false; |
| | | this.$message({ |
| | | type: "warning ", |
| | | message: "请选择套餐!", |