| | |
| | | <template> |
| | | <div v-loading="isLoading" element-loading-text="请稍候..." element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(255, 255, 255, 0.8)" style="height: 100%; padding: 20px; position: relative;"> |
| | | <div class="app-container"> |
| | | <el-dialog :title="title" :visible.sync="open1" width="1000px" append-to-body> |
| | | <el-form ref="form1" :model="form1" :rules="rules1" label-width="100px" :inline="true"> |
| | |
| | | <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="openname"> |
| | | 姓名 |
| | | </span> |
| | | <el-input v-model="form.cusName" placeholder="请输入姓名" :disabled="isDisabled" /> |
| | | <el-input v-model="form.cusName" placeholder="请输入姓名" :disabled="isDisabled" |
| | | @input="form.cusName = $event.replace(/\s/g, '')" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="证件类型" prop="idType"> |
| | |
| | | <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="handleQuery"> |
| | | 证件号码 |
| | | </span> |
| | | <el-input :disabled="isDisabled" v-model="form.cusIdcard" placeholder="请输入身份证号" @input="inputChange" /> |
| | | <el-input :disabled="isDisabled" v-model="form.cusIdcard" placeholder="请输入身份证号" |
| | | @input="handleIdCardInput" /> |
| | | <!-- <i style=" |
| | | font-size: 1rem; |
| | | position: absolute; |
| | |
| | | trigger: 'blur', |
| | | }, |
| | | ]"> |
| | | <el-input v-model="form.cusPhone" placeholder="请输入联系电话" :disabled="isDisabled" /> |
| | | <el-input v-model="form.cusPhone" placeholder="请输入联系电话" maxlength="11" :disabled="isDisabled" |
| | | @input="form.cusPhone = $event.replace(/\s/g, '')" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="出生日期" prop="cusBrithday"> |
| | |
| | | |
| | | <el-form-item label="文化程度" prop="wenHua" label-width="93px"> |
| | | <el-input :disabled="isDisabled" v-model="form.wenHua" placeholder="请输入文化程度" /> |
| | | </el-form-item> |
| | | <el-form-item label="工龄" prop="gl"> |
| | | <div> |
| | | <el-input v-model="form.gl" style="width: 50%"> |
| | | <template slot="append">年</template> |
| | | </el-input> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form ref="form" :model="form" :rules="rules" :label-position="labelPosition" label-width="106px" |
| | |
| | | <el-tabs type="border-card" style="height: 560px; margin: 0 10px; width: 100%" v-model="activeNames" |
| | | @tab-click="handleClick"> |
| | | <el-tab-pane label="套餐" name="first"> |
| | | <el-form :model="queryParam" ref="queryForm" size="small" :inline="true" v-if="showSearch" label-width="auto"> |
| | | <el-form :model="queryParam" ref="queryForm" size="small" :inline="true" v-if="showSearch" label-width="auto" @submit.native.prevent="handle"> |
| | | <el-form-item label="套餐名称" prop="pacName"> |
| | | <el-input v-model="queryParam.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handle" /> |
| | | </el-form-item> |
| | |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="组合" name="third"> |
| | | <!-- <div class="tab3"> --> |
| | | <el-row :gutter="20" style="width: 100%"> |
| | | <el-col :span="6"> |
| | | <el-col :span="6" style="min-width: 200px"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-col :span="6" style="min-width: 200px"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </div> --> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="单项" name="second"> |
| | | <div class="tab8"> |
| | | <div style="width: 500px; float: left; margin-right: 10px;"> |
| | | <div style="text-align: center;">项目列表</div> |
| | | <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 10px;"></el-input> |
| | | <div class="tab3" style="overflow: hidden;"> |
| | | <el-tree class="filter-tree" v-loading="loading" :data="Treedata" :props="defaultProps" show-checkbox |
| | | node-key="proId" @check="handleCurrentChecked" :default-checked-keys="checkedkey" |
| | | :filter-node-method="filterNode" ref="tree" :render-content="renderContent"> |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <div style="width: 400px; float: left; margin: 0 10px;"> |
| | | <div style="text-align: center; margin-bottom: 45px;">明细项目列表</div> |
| | | <div class="tab3" style="overflow: hidden;"> |
| | | <el-tree class="filter-tree" v-loading="loading" :data="TreedataList" node-key="proId" |
| | | :props="defaultProps" :filter-node-method="filterNode" show-checkbox |
| | | @check-change="handleCurrentChecked1" :default-checked-keys="checkedListkey" |
| | | :render-content="renderContent"> |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <div style="width: 500px; float: left;"> |
| | | <div style="text-align: center; margin-bottom: 45px;">已选项目列表</div> |
| | | <div style="height: 350px; overflow-y: auto; overflow-x: hidden;"> |
| | | <el-table :data="DataList" border style="width: 100%;" height="350" :span-method="objectSpanMethod"> |
| | | <el-table-column prop="propinName" label="检查项目"></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-table-column prop="proName" label="明细项目" width="220px"></el-table-column> |
| | | <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="50px"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" title="删除"></el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div style="clear: both;"></div> |
| | | </div> |
| | | <h3 style="font-weight: 600; text-align: center; margin-top: 40px;">合计:{{ marryall }}元</h3> |
| | | </el-tab-pane> |
| | | <el-row :gutter="20" style="width: 100%"> |
| | | <el-col :span="6" style="min-width: 200px"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | 项目列表 |
| | | </div> |
| | | <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 10px"> |
| | | </el-input> |
| | | <div class="tab3"> |
| | | <el-tree class="filter-tree" v-loading="loading" :data="Treedata" :props="defaultProps" show-checkbox |
| | | node-key="proId" @check="handleCurrentChecked" :default-checked-keys="checkedkey" |
| | | :filter-node-method="filterNode" ref="tree" :render-content="renderContent"> |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6" style="min-width: 200px"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | 明细项目列表 |
| | | </div> |
| | | <div class="tab3"> |
| | | <el-tree class="filter-tree" v-loading="loading" :data="TreedataList" node-key="proId" |
| | | :props="defaultProps" :filter-node-method="filterNode" show-checkbox |
| | | @check-change="handleCurrentChecked1" :default-checked-keys="checkedListkey" |
| | | :render-content="renderContent"> |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <div class="grid-content bg-purple"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | 已选项目列表 |
| | | </div> |
| | | <el-table :data="DataList" border style="width: 100%" height="400" :span-method="objectSpanMethod"> |
| | | <el-table-column prop="propinName" label="检查项目"> |
| | | </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-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" |
| | | width="50px"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" |
| | | title="删除"></el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <h3 style="font-weight: 600">合计:{{ marryall }}元</h3> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="cancel">取 消</el-button> |
| | |
| | | this.tableData1[0].pacName || "" |
| | | }}</span> |
| | | 已选项目条数:<span style="font-weight: 700; color: red; margin-right: 5px">{{ this.tableData1.length || 0 |
| | | }}</span>条 |
| | | }}</span>条 |
| | | </div> |
| | | 已选项目列表 |
| | | </div> |
| | | |
| | | <div v-loading="contentLoading" element-loading-text="加载中..." element-loading-spinner="el-icon-loading" element-loading-background="rgba(255, 255, 255, 0.7)" style=" padding: 0px 6px; |
| | | border: 1px solid #e6ebf5; |
| | | max-height: 650%; |
| | | overflow: auto; |
| | | width: 916px; |
| | | margin-left: 35px;" > |
| | | |
| | | |
| | | <div style=" |
| | | padding: 0px 6px; |
| | | border: 1px solid #e6ebf5; |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.nowPrice.toFixed(2) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="proCheckMethod" label="是否空腹"> |
| | | <template slot-scope="scope"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | |
| | | <Packages ref="aaa" @add="handleChanges" /> |
| | | <selectName ref="bbb" @add="handleChangesName" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | getByTjNum, |
| | | } from "@/api/hosp/customer"; |
| | | import { getPrintSetUp } from "@/api/system/examcharge"; |
| | | import cnchar from "cnchar"; |
| | | import { |
| | | tuantiSelect, |
| | | deptTreeSelect, |
| | |
| | | getPackageListName, |
| | | getaddtTransition, |
| | | tuantiqueren, |
| | | getTransitionList, |
| | | getTransitionList1, |
| | | getByTeamNo, |
| | | delTbBycusCardIdAndProId, |
| | | getLoadFile, |
| | | getIsRequired, |
| | | getconfigKey, |
| | | getHistryTjOrderProByCusIdCard, |
| | | readCertCardInfos, |
| | | gaibianzhekou, |
| | | } from "@/api/system/tijian"; |
| | | import { addComp } from "@/api/system/comp"; |
| | |
| | | "dict_job", |
| | | "dict_user_cardtype", |
| | | "dict_ageunit", |
| | | "gz", |
| | | ], |
| | | name: "Tijian", |
| | | components: { |
| | |
| | | data() { |
| | | return { |
| | | isSubmitting: false, |
| | | contentLoading: false, |
| | | isLoading: false, |
| | | open1: false, |
| | | filterage: "", |
| | | checkedkeys: [], |
| | |
| | | contactPhone: [ |
| | | { |
| | | required: true, |
| | | message: "", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | |
| | | }; |
| | | }, |
| | | watch: { |
| | | |
| | | filterText(val) { |
| | | this.$refs.tree.filter(val); |
| | | }, |
| | |
| | | this.marryall = 0; |
| | | }, |
| | | methods: { |
| | | handleIdCardInput(value) { |
| | | this.form.cusIdcard = value.replace(/\s/g, ""); |
| | | this.inputChange(); // 保留原有的身份证输入处理逻辑 |
| | | }, |
| | | debounceNumberChange(currentValue, oldValue) { |
| | | clearTimeout(this.debounceTimer); |
| | | this.debounceTimer = setTimeout(() => { |
| | |
| | | }, |
| | | /** 删除按钮操作 */ |
| | | handleDelete1(row) { |
| | | // console.log(row); |
| | | let data = { |
| | | cusCardId: row.cusId, |
| | | proId: row.parentProId, |
| | |
| | | .catch(() => { }); |
| | | }, |
| | | handleManualChange(row) { |
| | | console.log("这是主动出发的"); |
| | | this.updateProPrice(row); |
| | | }, |
| | | validateDiscount(row) { |
| | | if (this.TotalPrice !== undefined && !isNaN(this.TotalPrice) && this.TotalPrice !== this.lastXianPrice) { |
| | | if ( |
| | | this.TotalPrice !== undefined && |
| | | !isNaN(this.TotalPrice) && |
| | | this.TotalPrice !== this.lastXianPrice |
| | | ) { |
| | | this.updateProPrice1(row); |
| | | this.lastXianPrice = this.TotalPrice; |
| | | } |
| | |
| | | (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; |
| | | }, |
| | | updateProPrice1(row) { |
| | | console.log("进入了1") |
| | | const ordPrice = new Big(row.ordPrice); |
| | | const discount = new Big(row.discount); |
| | | const result = ordPrice.times(discount.div(10)); |
| | | row.nowPrice = result.toNumber(); |
| | | const totalYsPrice = this.tableData1.reduce((sum, item) => { |
| | | return sum.plus(new Big(item.nowPrice || '0')); |
| | | return sum.plus(new Big(item.nowPrice || "0")); |
| | | }, new Big(0)); |
| | | const totalYsPriceNum = totalYsPrice.toNumber(); |
| | | if (this.TotalPrice !== undefined && !isNaN(this.TotalPrice)) { |
| | |
| | | if (!diff.eq(0) && this.tableData1.length > 0) { |
| | | const lastItem = this.tableData1[this.tableData1.length - 1]; |
| | | const newYsPrice = new Big(lastItem.nowPrice).plus(diff).toNumber(); |
| | | this.$set(this.tableData1[this.tableData1.length - 1], 'nowPrice', newYsPrice); |
| | | this.$set( |
| | | this.tableData1[this.tableData1.length - 1], |
| | | "nowPrice", |
| | | newYsPrice |
| | | ); |
| | | } |
| | | } |
| | | |
| | | // Update youhui calculation |
| | | if (this.TotalPrice1 !== 0 && this.TotalPrice !== 0) { |
| | | this.discount = (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; |
| | | this.discount = |
| | | (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; |
| | | } else { |
| | | this.discount = 0; |
| | | } |
| | |
| | | this.open1 = true; |
| | | this.title = "添加体检单位信息维护"; |
| | | }, |
| | | idFn1(value) { |
| | | if (value) { |
| | | // console.log(value); |
| | | idFn1() { |
| | | if (this.form.firmName) { |
| | | const originalCompId = this.form.firmId; |
| | | this.form.firmName = value; |
| | | this.CompanyList.forEach((item) => { |
| | | if (item.cnName == this.form.firmName) { |
| | | this.form.firmId = item.drugManufacturerId; |
| | |
| | | if (this.form.firmId === originalCompId) { |
| | | this.form.firmId = ""; |
| | | } |
| | | if (this.form.firmId) { |
| | | this.form.tjType = "1"; |
| | | } |
| | | } |
| | | |
| | | if (this.form.firmName) { |
| | | this.form.tjType = this.dict.type.dict_team[1].value; |
| | | } else { |
| | | this.form.tjType = this.dict.type.dict_team[0].value; |
| | | } |
| | | }, |
| | | getCurrentDateTime() { |
| | |
| | | }, 1000); //每秒钟更新一次 |
| | | }, |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | // 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; |
| | | // if (data.proName.indexOf(value) !== -1) { |
| | | // return data.proName.indexOf(value) !== -1; |
| | | // } else { |
| | | // return data.proEngName.indexOf(value) !== -1; |
| | | // } |
| | | if (!value) return true; |
| | | if (data.proName.indexOf(value) !== -1) return true; |
| | | let values = value.toLowerCase(); |
| | | if (data.proEngName.indexOf(values) !== -1) return true; |
| | | |
| | | // 匹配小写 |
| | | let arr = data.proName.spell("low", "array"); |
| | | let spell = arr.join(""); |
| | | let lengths = [0]; |
| | | for (var i = 0; i < arr.length - 1; i++) { |
| | | lengths.push(lengths[i] + arr[i].length); |
| | | } |
| | | //判断label完整拼音 中 输入值的 index 是不是等于某个汉字第一个拼音字母的index值 |
| | | if (lengths.indexOf(spell.indexOf(value)) !== -1) return true; |
| | | // 大写 |
| | | let arrUp = data.proName.spell("up", "array"); |
| | | let spellUp = arrUp.join(""); |
| | | let lengthsUp = [0]; |
| | | for (var i = 0; i < arrUp.length - 1; i++) { |
| | | lengthsUp.push(lengthsUp[i] + arrUp[i].length); |
| | | } |
| | | return lengthsUp.indexOf(spellUp.indexOf(value)) !== -1; |
| | | }, |
| | | filterpackage(value, data) { |
| | | if (!value) return true; |
| | | if (data.zhmc.indexOf(value) !== -1) { |
| | | return data.zhmc.indexOf(value) !== -1; |
| | | } else { |
| | | return data.pym.indexOf(value) !== -1; |
| | | let values = value.toLowerCase(); |
| | | return data.pym.indexOf(values) !== -1; |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | |
| | | }, |
| | | getList1() { |
| | | getInfo().then((response) => { |
| | | |
| | | this.hospName = response.hospName; |
| | | |
| | | }); |
| | | getIsRequired().then((response) => { |
| | | this.showHidden = response.data; |
| | |
| | | this.TotalPrice1 = 0; |
| | | if (this.tableData1) { |
| | | this.tableData1.forEach((item) => { |
| | | // parseFloat(item.nowPrice.toFixed(2)) |
| | | |
| | | this.TotalPrice1 += item.ordPrice; |
| | | this.TotalPrice += item.nowPrice; |
| | | if (item.pacName === null) { |
| | |
| | | |
| | | /** 查询信息列表 */ |
| | | getList() { |
| | | getInfo().then((response) => { |
| | | |
| | | |
| | | }); |
| | | getInfo().then((response) => { }); |
| | | let cusSex = this.form.cusSex; |
| | | //全部套餐 |
| | | if (cusSex) { |
| | |
| | | const newYsPrice = new Big(lastItem.nowPrice) |
| | | .plus(diff) |
| | | .toNumber(); |
| | | console.log( |
| | | "hhh", |
| | | this.tableData1[this.tableData1.length - 1].nowPrice, |
| | | newYsPrice |
| | | ); |
| | | // console.log( |
| | | // "hhh", |
| | | // this.tableData1[this.tableData1.length - 1].nowPrice, |
| | | // newYsPrice |
| | | // ); |
| | | this.$set( |
| | | this.tableData1[this.tableData1.length - 1], |
| | | "nowPrice", |
| | |
| | | }); |
| | | }, |
| | | /** 登记提交按钮 */ |
| | | /** 登记提交按钮 */ |
| | | submitForm() { |
| | | let _this = this; |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | // return; |
| | | if (this.form.cusSex === "女") { |
| | | this.form.cusSex = 1; |
| | | } |
| | | if (this.form.cusSex === "男") { |
| | | this.form.cusSex = 0; |
| | | } |
| | | if (this.form.cusSex === "未知") { |
| | | this.form.cusSex = 2; |
| | | } |
| | | if (this.form.tjType === "") { |
| | | this.form.tjType = this.dict.type.dict_team[0].value; |
| | | } |
| | | if (!this.form.cusPhone || !this.form.cusName) { |
| | | this.$message.warning("请填写必填项"); |
| | | } else { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | // 创建表单数据的副本并去除空格 |
| | | const formData = { ...this.form }; |
| | | formData.cusName = formData.cusName |
| | | ? formData.cusName.replace(/\s/g, "") |
| | | : ""; |
| | | formData.cusPhone = formData.cusPhone |
| | | ? formData.cusPhone.replace(/\s/g, "") |
| | | : ""; |
| | | formData.cusIdcard = formData.cusIdcard |
| | | ? formData.cusIdcard.replace(/\s/g, "") |
| | | : ""; |
| | | |
| | | addCustomer(this.form).then((response) => { |
| | | this.responseList = response.data; |
| | | // 处理性别值 |
| | | if (formData.cusSex === "女") { |
| | | formData.cusSex = 1; |
| | | } |
| | | if (formData.cusSex === "男") { |
| | | formData.cusSex = 0; |
| | | } |
| | | if (formData.cusSex === "未知") { |
| | | formData.cusSex = 2; |
| | | } |
| | | if (formData.tjType === "") { |
| | | formData.tjType = this.dict.type.dict_team[0].value; |
| | | } |
| | | |
| | | this.$modal.msgSuccess("新增成功"); |
| | | addCustomer(formData).then((response) => { |
| | | this.responseList = response.data; |
| | | this.form.tjType = this.dict.type.dict_team[0].value; |
| | | this.$modal.msgSuccess("新增成功"); |
| | | _this.tcShow = true; |
| | | _this.isDisabled = true; |
| | | _this.top = false; |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | _this.tcShow = true; |
| | | _this.isDisabled = true; |
| | | _this.top = false; |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | getmailType() { |
| | |
| | | if (this.form.reservationId != null) { |
| | | if (this.form.groupingId) { |
| | | this.form.firmName = this.form.compName; |
| | | this.form.tjType = "1"; |
| | | this.form.tjType = this.dict.type.dict_team[1].value; |
| | | this.CompanyList.forEach((item) => { |
| | | if (item.cnName == this.form.firmName) { |
| | | this.form.firmId = item.drugManufacturerId; |
| | |
| | | var resultObj = eval("(" + event.data + ")"); |
| | | this.readCardWebSocket(resultObj); |
| | | }; |
| | | websocket.onclose = function () { |
| | | alert("读卡器连接关闭"); |
| | | }; |
| | | } else if (res.msg == "Y") { |
| | | /* this.$refs.aaa.open = true; |
| | | this.$refs.aaa.getAllList(); |
| | | this.$refs.aaa.title = "证件字典"; */ |
| | | |
| | | } else if (res.msg == "S") { |
| | | this.cardreader = true; |
| | | _this.cardreaderradio = 3; |
| | |
| | | // 最新使用webSocket通信 |
| | | readCardWebSocket(resultObj) { |
| | | let _this = this; |
| | | |
| | | const isChineseChar = (char) => /[\u4E00-\u9FA5]/.test(char) |
| | | if (resultObj.code === 200 && resultObj.data.name != null) { |
| | | //回显相关数据 |
| | | _this.form.cusName = resultObj.data.name; |
| | | _this.form.cusSex = resultObj.data.sex == "0" ? "女" : "男"; |
| | | if (isChineseChar(resultObj.data.sex)) { |
| | | _this.form.cusSex = resultObj.data.sex == "女" ? 1 : 0 |
| | | } else { |
| | | _this.form.cusSex = resultObj.data.sex; |
| | | } |
| | | _this.form.cusNational = resultObj.data.mz; |
| | | _this.form.cusBrithday = resultObj.data.csrq; |
| | | if (_this.form.cusBrithday) { |
| | |
| | | //回显相关数据 |
| | | _this.form.cusName = resultObj.resultContent.partyName; |
| | | _this.form.cusSex = |
| | | resultObj.resultContent.gender == "0" ? "女" : "男"; |
| | | resultObj.resultContent.gender ; |
| | | _this.form.cusNational = resultObj.resultContent.nation; |
| | | _this.form.cusBrithday = resultObj.resultContent.bornDay; |
| | | if (_this.form.cusBrithday) { |
| | |
| | | this.malldisble = false; |
| | | this.defaultKeys = []; |
| | | this.DataLists = []; |
| | | |
| | | }, |
| | | |
| | | cancell() { |
| | |
| | | dwId: this.form.firmId, |
| | | }; |
| | | if (this.name) { |
| | | getPackageListName(this.name).then((response) => { |
| | | let name= this.name.toLowerCase() |
| | | getPackageListName(name).then((response) => { |
| | | this.newpacName = response.data; |
| | | this.loading = false; |
| | | }); |
| | |
| | | this.DataList = []; // 清空已选项目列表 |
| | | this.checkedkey = []; // 清空树的选中状态 |
| | | this.checkedListkey = []; |
| | | this.TreedataList = [] |
| | | this.TreedataList = []; |
| | | |
| | | let data = { |
| | | cusId, |
| | |
| | | |
| | | Package() { |
| | | this.activeNames = "first"; |
| | | if (this.form.cusSex == "男") { |
| | | this.form.cusSex = 0; |
| | | } else if (this.form.cusSex == "女") { |
| | | _this.form.cusSex = 1; |
| | | } |
| | | let cusSex = this.form.cusSex; |
| | | this.datekey = Date.now(); |
| | | //全部套餐 |
| | |
| | | } catch (error) { } |
| | | this.loading = false; |
| | | }); |
| | | } |
| | | |
| | | else { |
| | | } else { |
| | | this.taocan = true; |
| | | this.loading = true; |
| | | tuantiSelect(param).then((res) => { |
| | |
| | | // 回显 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.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); |
| | | }); |
| | |
| | | |
| | | // 设置 packageList 的选中状态 |
| | | this.$nextTick(() => { |
| | | if (this.$refs.treas) { // 确保 treas 引用已经存在 |
| | | if (this.$refs.treas) { |
| | | // 确保 treas 引用已经存在 |
| | | this.$refs.treas.setCheckedKeys(selectedPackageIds, true); |
| | | } |
| | | // 更新 checkedkeys 以反映当前选中的包 |
| | |
| | | updateDataListsBasedOnSelection(selectedPackageIds) { |
| | | // 根据选中的包ID更新 DataLists |
| | | this.DataLists = []; |
| | | selectedPackageIds.forEach(id => { |
| | | let packageItem = this.packageList.find(item => item.id === id); |
| | | selectedPackageIds.forEach((id) => { |
| | | let packageItem = this.packageList.find((item) => item.id === id); |
| | | if (packageItem) { |
| | | // 这里假设每个包项目都有一个 proId 数组或者类似的结构,用来获取包中的项目 |
| | | if (packageItem.proIds) { // 假设 packageItem 包含一个 proId 数组 |
| | | packageItem.proIds.forEach(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); |
| | | this.marryalls = this.DataLists.reduce( |
| | | (sum, item) => sum + item.proPrice, |
| | | 0 |
| | | ); |
| | | }, |
| | | |
| | | findProjectById(proId) { |
| | | // 此函数假设你有一个全局的项目列表或者可以从某个API获取 |
| | | // 这里只是一个示例,实际应用中应该根据你的数据结构来实现 |
| | | return this.allpackageList.find(item => item.proId === proId) || null; |
| | | return this.allpackageList.find((item) => item.proId === proId) || null; |
| | | }, |
| | | |
| | | handlepackage(data, checked, checkedNodes) { |
| | |
| | | handleCurrentChecked(data, checked, checkedNodes) { |
| | | this.dataObj = data; |
| | | 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); |
| | | 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 = []; |
| | | |
| | |
| | | |
| | | // 更新名称和计算总价 |
| | | this.DataList.forEach((item1) => { |
| | | const parent = checked.checkedNodes.find(node => node.proId === item1.proParentId); |
| | | const parent = checked.checkedNodes.find( |
| | | (node) => node.proId === item1.proParentId |
| | | ); |
| | | if (parent) { |
| | | item1.propinName = parent.proName; |
| | | } |
| | |
| | | |
| | | // 项目提交 |
| | | submit() { |
| | | this.isLoading = true; |
| | | if (this.form.cusIdcard) { |
| | | var cusId = this.form.cusIdcard; |
| | | } else { |
| | |
| | | this.isSubmitting = true; // 开始提交时设置标志 |
| | | this.TotalPrice1 = 0; // 初始化应收金额 |
| | | this.TotalPrice = 0; // 初始化实收金额 |
| | | |
| | | this.contentLoading = true; |
| | | this.discount = 10; // 初始化折扣为10(100%) |
| | | |
| | | // 判断是否有选中的套餐 |
| | |
| | | }; |
| | | // 根据体检类型选择不同的处理方法 |
| | | if (this.form.firmId) { |
| | | tuantiqueren(data).then((response) => { |
| | | if (response.code == 200) { |
| | | this.processOrderItems(cusId); |
| | | } |
| | | this.isSubmitting = false; // 提交完成后重置标志 |
| | | }).catch(() => { |
| | | this.isSubmitting = false; // 确保在错误情况下也重置标志 |
| | | }); |
| | | tuantiqueren(data) |
| | | .then((response) => { |
| | | if (response.code == 200) { |
| | | this.processOrderItems(cusId); |
| | | } |
| | | this.isSubmitting = false; // 提交完成后重置标志 |
| | | this.isLoading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.isSubmitting = false; // 确保在错误情况下也重置标志 |
| | | this.isLoading = false; |
| | | }); |
| | | } else { |
| | | getaddtTransition(data).then((response) => { |
| | | if (response.code == 200) { |
| | | this.processOrderItems(cusId); |
| | | } |
| | | this.isSubmitting = false; // 提交完成后重置标志 |
| | | }).catch(() => { |
| | | this.isSubmitting = false; // 确保在错误情况下也重置标志 |
| | | }); |
| | | getaddtTransition(data) |
| | | .then((response) => { |
| | | if (response.code == 200) { |
| | | this.processOrderItems(cusId); |
| | | } |
| | | this.isSubmitting = false; // 提交完成后重置标志 |
| | | this.isLoading = false; |
| | | // this.contentLoading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.isSubmitting = false; // 确保在错误情况下也重置标志 |
| | | this.isLoading = false; |
| | | // this.contentLoading = false; |
| | | }); |
| | | } |
| | | |
| | | this.taocan = false; |
| | |
| | | // 处理订单项目 |
| | | processOrderItems(cusId) { |
| | | getTransitionList1(cusId).then((response) => { |
| | | this.contentLoading = false; |
| | | this.tableData1 = response.data; |
| | | let Price = 0; |
| | | if (this.tableData1) { |
| | | this.tableData1.forEach((item) => { |
| | | if (typeof item.nowPrice === 'number') { |
| | | item.nowPrice = Number(item.nowPrice.toFixed(2)); |
| | | } |
| | | if (item.tjCategory != null) { |
| | | this.tjCategory = item.tjCategory; |
| | | } |
| | |
| | | }); |
| | | } |
| | | this.TotalPrice1 += item.ordPrice || 0; // 累加应收金额 |
| | | this.TotalPrice += item.nowPrice || 0; // 累加实收金额 |
| | | Price += item.nowPrice || 0; // 累加实收金额 |
| | | this.TotalPrice = Price.toFixed(2); |
| | | }); |
| | | // 计算折扣 |
| | | this.discount = this.TotalPrice1 > 0 ? |
| | | (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10 : 0; |
| | | this.discount = |
| | | this.TotalPrice1 > 0 |
| | | ? (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * |
| | | 10 |
| | | : 0; |
| | | |
| | | this.list1 = false; |
| | | this.list3 = true; |
| | |
| | | if (this.tableData[0]) { |
| | | var pacId = this.tableData[0].pacId; |
| | | } |
| | | |
| | | // 去空格处理 |
| | | const processedForm = { |
| | | ...this.form, |
| | | cusName: this.form.cusName |
| | | ? this.form.cusName.replace(/\s/g, "") |
| | | : "", |
| | | cusPhone: this.form.cusPhone |
| | | ? this.form.cusPhone.replace(/\s/g, "") |
| | | : "", |
| | | cusIdcard: this.form.cusIdcard |
| | | ? this.form.cusIdcard.replace(/\s/g, "") |
| | | : "", |
| | | }; |
| | | |
| | | List.forEach((item) => { |
| | | if (item.list) { |
| | | item.list.forEach((item1) => { |
| | |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | let copeWith = this.TotalPrice1; |
| | | let paidIn = this.TotalPrice.toString(); |
| | | let discount = this.discount; |
| | |
| | | getType: this.getType, |
| | | addAddress: this.addAddress, |
| | | tjCategory: this.tjCategory, |
| | | // 使用去掉空格后的数据 |
| | | cusName: processedForm.cusName, |
| | | cusPhone: processedForm.cusPhone, |
| | | cusIdcard: processedForm.cusIdcard, |
| | | }; |
| | | } else { |
| | | data = { |
| | |
| | | tjType, |
| | | getType: this.getType, |
| | | tjCategory: this.tjCategory, |
| | | // 使用去掉空格后的数据 |
| | | cusName: processedForm.cusName, |
| | | cusPhone: processedForm.cusPhone, |
| | | cusIdcard: processedForm.cusIdcard, |
| | | }; |
| | | } |
| | | |
| | | getOrder(data).then((res) => { |
| | | this.$modal.msgSuccess("提交成功"); |
| | | this.tjNumbers = res.msg; |
| | |
| | | } |
| | | this.discount = |
| | | (this.formInline.paidIn / this.formInline.price) * 10; |
| | | |
| | | } else { |
| | | this.discount = 10; |
| | | this.formInline.paidIn = "0.00"; |
| | |
| | | }, |
| | | |
| | | listgetOrder(data) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '正在加载中,请稍等!', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | getOrder(data).then((res) => { |
| | | loading.close(); |
| | | this.$modal.msgSuccess("提交成功"); |
| | | //调接口显示导检单 |
| | | const tjNumber = res.msg; |
| | |
| | | discount: item.discount, |
| | | parentProId: item.parentProId, |
| | | cusIdCard: item.cusId, |
| | | yhj: item.nowPrice, |
| | | })); // 创建新的对象,包含 discount 和 id |
| | | gaibianzhekou(newArray).then((res) => { |
| | | this.loadingSubmit = false; |
| | | if (res.code === 200) { |
| | | |
| | | let data; |
| | | |
| | | if (pacId || this.tjOrderList.length > 0) { |
| | |
| | | } |
| | | |
| | | .filter-tree { |
| | | overflow-y: auto; /* 保留纵向滚动条 */ |
| | | overflow-x: hidden; /* 隐藏横向滚动条 */ |
| | | overflow-y: auto; |
| | | /* 保留纵向滚动条 */ |
| | | overflow-x: hidden; |
| | | /* 隐藏横向滚动条 */ |
| | | height: 350px; |
| | | } |
| | | |
| | |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | /* .tab3 { |
| | | overflow-y: auto; |
| | | } |