| | |
| | | <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="请输入联系电话" :disabled="isDisabled" @input="form.cusPhone = $event.replace(/\s/g, '')"/> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="出生日期" prop="cusBrithday"> |
| | |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="组合" name="third"> |
| | | <!-- <div class="tab3"> --> |
| | | <el-row :gutter="20" style="width: 100%"> |
| | | <el-col :span="6"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | <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="filterage"> |
| | |
| | | </el-tree> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <div style=" |
| | | text-align: center; |
| | | margin-bottom: 10px; |
| | | margin-top: 10px; |
| | | "> |
| | | <el-col :span="6" style="min-width: 200px"> |
| | | <div style="text-align: center; margin-bottom: 10px; margin-top: 10px;"> |
| | | 明细项目列表 |
| | | </div> |
| | | <div class="tab3"> |
| | |
| | | margin-top: 10px; |
| | | "> |
| | | 已选项目列表 |
| | | |
| | | </div> |
| | | <el-table :data="DataLists" border style="width: 100%" height="400" :span-method="objectspanmethod"> |
| | | <el-table-column prop="propinName" label="检查项目"> |
| | |
| | | </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> |
| | |
| | | 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"; |
| | |
| | | this.marryall = 0; |
| | | }, |
| | | methods: { |
| | | handleIdCardInput(value) { |
| | | this.form.cusIdcard = value.replace(/\s/g, ''); |
| | | this.inputChange(); // 保留原有的身份证输入处理逻辑 |
| | | }, |
| | | debounceNumberChange(currentValue, oldValue) { |
| | | clearTimeout(this.debounceTimer); |
| | | this.debounceTimer = setTimeout(() => { |
| | |
| | | }, 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; |
| | | if (data.proEngName.indexOf(value) !== -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; |
| | |
| | | }); |
| | | }, |
| | | /** 登记提交按钮 */ |
| | | 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; |
| | | } |
| | | /** 登记提交按钮 */ |
| | | submitForm() { |
| | | let _this = this; |
| | | 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("新增成功"); |
| | | |
| | | _this.tcShow = true; |
| | | _this.isDisabled = true; |
| | | _this.top = false; |
| | | }); |
| | | } |
| | | addCustomer(formData).then((response) => { |
| | | this.responseList = response.data; |
| | | this.$modal.msgSuccess("新增成功"); |
| | | _this.tcShow = true; |
| | | _this.isDisabled = true; |
| | | _this.top = false; |
| | | }); |
| | | }, |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | getmailType() { |
| | | if (this.getType == "2") { |
| | |
| | | websocket.onmessage = (event) => { |
| | | var resultObj = eval("(" + event.data + ")"); |
| | | this.readCardWebSocket(resultObj); |
| | | }; |
| | | websocket.onclose = function () { |
| | | alert("读卡器连接关闭"); |
| | | }; |
| | | } else if (res.msg == "Y") { |
| | | /* this.$refs.aaa.open = true; |
| | |
| | | }); |
| | | }, |
| | | submitCheckinfee() { |
| | | let _this = this; |
| | | if (_this.tjCategory !== "") { |
| | | let List = _this.tableData1; |
| | | if (this.responseList.cusId) { |
| | | var userId = this.responseList.cusId; |
| | | } else { |
| | | var userId = _this.form.cusId; |
| | | } |
| | | let tjType = _this.form.tjType; |
| | | if (this.tableData[0]) { |
| | | var pacId = this.tableData[0].pacId; |
| | | } |
| | | List.forEach((item) => { |
| | | if (item.list) { |
| | | item.list.forEach((item1) => { |
| | | this.tjOrderList.push({ |
| | | proName: item1.proName, |
| | | proPrice: item1.nowPrice, |
| | | proId: item1.proId, |
| | | }); |
| | | }); |
| | | } else if (item.tjProjectList) { |
| | | item.tjProjectList.forEach((item1) => { |
| | | this.tjOrderList.push({ |
| | | proName: item1.proName, |
| | | proPrice: item1.priceNow, |
| | | proId: item1.proId, |
| | | }); |
| | | }); |
| | | } else { |
| | | this.tjOrderList.push({ |
| | | proName: item.proName, |
| | | proPrice: item.ysPrice, |
| | | proId: item.proId, |
| | | }); |
| | | } |
| | | }); |
| | | let copeWith = this.TotalPrice1; |
| | | let paidIn = this.TotalPrice.toString(); |
| | | let discount = this.discount; |
| | | this.tjFlowingWater = { copeWith, paidIn, discount }; |
| | | let _this = this; |
| | | if (_this.tjCategory !== "") { |
| | | let List = _this.tableData1; |
| | | if (this.responseList.cusId) { |
| | | var userId = this.responseList.cusId; |
| | | } else { |
| | | var userId = _this.form.cusId; |
| | | } |
| | | let tjType = _this.form.tjType; |
| | | if (this.tableData[0]) { |
| | | var pacId = this.tableData[0].pacId; |
| | | } |
| | | |
| | | let data; |
| | | if (pacId || this.getType == "2") { |
| | | data = { |
| | | photo: this.srcUrl, |
| | | pacId, |
| | | tjOrderList: this.tjOrderList, |
| | | tjFlowingWater: this.tjFlowingWater, |
| | | userId, |
| | | tjType, |
| | | getType: this.getType, |
| | | addAddress: this.addAddress, |
| | | tjCategory: this.tjCategory, |
| | | }; |
| | | } else { |
| | | data = { |
| | | photo: this.srcUrl, |
| | | tjOrderList: this.tjOrderList, |
| | | tjFlowingWater: this.tjFlowingWater, |
| | | userId, |
| | | tjType, |
| | | getType: this.getType, |
| | | tjCategory: this.tjCategory, |
| | | }; |
| | | } |
| | | getOrder(data).then((res) => { |
| | | this.$modal.msgSuccess("提交成功"); |
| | | this.tjNumbers = res.msg; |
| | | this.charge = true; |
| | | let data = { |
| | | tjNum: res.msg, |
| | | }; |
| | | getfindTj(data).then((response) => { |
| | | if (response.data) { |
| | | this.feeitems = response.data; |
| | | if (this.feeitems.length != 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.multipleTable.toggleRowSelection( |
| | | this.feeitems[0], |
| | | true |
| | | ); |
| | | }); |
| | | } else { |
| | | this.$refs.multipleTable.clearSelection(); |
| | | } |
| | | this.loading = false; |
| | | } else { |
| | | this.feeitems = []; |
| | | this.loading = false; |
| | | } |
| | | // 去空格处理 |
| | | 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) => { |
| | | this.tjOrderList.push({ |
| | | proName: item1.proName, |
| | | proPrice: item1.nowPrice, |
| | | proId: item1.proId, |
| | | }); |
| | | }); |
| | | } else if (item.tjProjectList) { |
| | | item.tjProjectList.forEach((item1) => { |
| | | this.tjOrderList.push({ |
| | | proName: item1.proName, |
| | | proPrice: item1.priceNow, |
| | | proId: item1.proId, |
| | | }); |
| | | }); |
| | | } else { |
| | | this.$modal.msgError("请选择体检类别"); |
| | | this.tjOrderList.push({ |
| | | proName: item.proName, |
| | | proPrice: item.ysPrice, |
| | | proId: item.proId, |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | let copeWith = this.TotalPrice1; |
| | | let paidIn = this.TotalPrice.toString(); |
| | | let discount = this.discount; |
| | | this.tjFlowingWater = { copeWith, paidIn, discount }; |
| | | |
| | | let data; |
| | | if (pacId || this.getType == "2") { |
| | | data = { |
| | | photo: this.srcUrl, |
| | | pacId, |
| | | tjOrderList: this.tjOrderList, |
| | | tjFlowingWater: this.tjFlowingWater, |
| | | userId, |
| | | tjType, |
| | | getType: this.getType, |
| | | addAddress: this.addAddress, |
| | | tjCategory: this.tjCategory, |
| | | // 使用去掉空格后的数据 |
| | | cusName: processedForm.cusName, |
| | | cusPhone: processedForm.cusPhone, |
| | | cusIdcard: processedForm.cusIdcard |
| | | }; |
| | | } else { |
| | | data = { |
| | | photo: this.srcUrl, |
| | | tjOrderList: this.tjOrderList, |
| | | tjFlowingWater: this.tjFlowingWater, |
| | | userId, |
| | | 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.charge = true; |
| | | let data = { |
| | | tjNum: res.msg, |
| | | }; |
| | | getfindTj(data).then((response) => { |
| | | if (response.data) { |
| | | this.feeitems = response.data; |
| | | if (this.feeitems.length != 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.multipleTable.toggleRowSelection( |
| | | this.feeitems[0], |
| | | true |
| | | ); |
| | | }); |
| | | } else { |
| | | this.$refs.multipleTable.clearSelection(); |
| | | } |
| | | this.loading = false; |
| | | } else { |
| | | this.feeitems = []; |
| | | this.loading = false; |
| | | } |
| | | }); |
| | | }); |
| | | } else { |
| | | this.$modal.msgError("请选择体检类别"); |
| | | } |
| | | }, |
| | | |
| | | // 表格单选 |
| | | handleSelect(selection, val) { |
| | |
| | | discount: item.discount, |
| | | parentProId: item.parentProId, |
| | | cusIdCard: item.cusId, |
| | | yhj: item.nowPrice |
| | | })); // 创建新的对象,包含 discount 和 id |
| | | gaibianzhekou(newArray).then((res) => { |
| | | this.loadingSubmit = false; |