| | |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-row :gutter="10" style="margin: 10px 15px;"> |
| | | <el-col :span="1.5"> |
| | | <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="batch" |
| | | v-hasPermi="['reservation:reservation:remove']">撤销预约</el-button> |
| | |
| | | </el-row> |
| | | |
| | | <el-table border v-loading="loading" :data="reservationList" @selection-change="handleSelectionChange" |
| | | :default-sort="{ prop: 'reservationTime', order: 'descending' }" highlight-current-row> |
| | | :default-sort="{ prop: 'reservationTime', order: 'descending' }" highlight-current-row style="margin-left: 15px;"> |
| | | <el-table-column type="selection" width="40px" align="center" fixed="left" :selectable="selectHandle" /> |
| | | <el-table-column label="姓名" align="center" prop="name" width="90px" :show-overflow-tooltip="true" fixed="left" /> |
| | | <el-table-column label="性别" align="center" prop="sex" width="60px" :show-overflow-tooltip="true"> |
| | | <template slot-scope="scope"> |
| | | <span v-if="scope.row.sex == '0'">男</span> |
| | | <span v-if="scope.row.sex == '1'">女</span> |
| | | <span v-if="scope.row.sex == '2'">未知</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="年龄" align="center" prop="age" width="60px" :show-overflow-tooltip="true" /> |
| | |
| | | <span>{{ parseTime(scope.row.reservationTime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="体检类型" align="center" prop="tjType" width="80px" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="体检类型" align="center" prop="tjType" width="80px" :show-overflow-tooltip="true"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.dict_team" :value="scope.row.tjType" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="婚姻" align="center" prop="marriage" width="60px" :show-overflow-tooltip="true"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.dict_user_marry" :value="scope.row.marriage" /> |
| | |
| | | <el-input v-model="formIn.address" placeholder="请输入现居住地址" style="width: 410px" /> |
| | | </el-form-item> |
| | | <el-form-item label="体检类别" prop="tjCategory"> |
| | | <el-select style="width: 150px" v-model="formIn.tjCategory" placeholder="请选择体检类别"> |
| | | <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label" |
| | | :value="dict.value"></el-option> |
| | | </el-select> |
| | | <el-select style="width: 140px" v-model="formIn.tjCategory" placeholder="请选择体检类别"> |
| | | <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> |
| | | <el-form-item label="部门" prop="department"> |
| | | <el-input v-model="formIn.department" placeholder="请输入部门" style="width: 160px" /> |
| | |
| | | <el-tab-pane label="单项"> |
| | | <div class="tab3"> |
| | | <div class="tab2"> |
| | | <el-tree :data="data" show-checkbox node-key="proId" :props="defaultProps" |
| | | @check-change="handleCurrentChecked"> |
| | | </el-tree> |
| | | <v-tree-transfer :treeData="treedataList" |
| | | :defaultProps="{ children: 'tjProjectList', label: 'proName' }" :defaultKeys="defaultKeys" |
| | | @changeKeys="changeCategoryKeys" :key="datekey"></v-tree-transfer> |
| | | <!-- <el-tree :data="data" show-checkbox node-key="proId" :props="defaultProps" |
| | | @check-change="handleCurrentChecked"> |
| | | </el-tree>--> |
| | | </div> |
| | | </div> |
| | | </el-tab-pane> |
| | |
| | | <!-- <div class="tab1"> --> |
| | | <!-- <el-form :inline="true" class="tab1"> --> |
| | | <el-form-item label="应收金额"> |
| | | <el-input placeholder="应收金额" :value="TotalPrice1 + '.00'" disabled style="width: 160px"></el-input> |
| | | <el-input placeholder="应收金额" :value="TotalPrice1 " disabled style="width: 160px"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="优惠折扣"> |
| | | <!-- <el-input style="width: 100px" type="number" v-model="discount" :value="discount"></el-input> --> |
| | |
| | | :step="0.1" :max="10" :min="1" @change="numberChange" :disabled="isfalse"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="实收金额"> |
| | | <el-input placeholder="实收金额" v-model="TotalPrice" style="width: 120px"></el-input> |
| | | <el-input placeholder="实收金额" v-model="TotalPrice" style="width: 120px" disabled></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | |
| | | item.parentName + |
| | | " (应收金额:" + |
| | | item.ordPrice + |
| | | ".00元 / 实收金额:" + |
| | | " / 实收金额:" + |
| | | item.nowPrice + |
| | | ".00元)" |
| | | "元)" |
| | | }} |
| | | </template> |
| | | <el-table :data="item.list" border style="width: 100%" height="270"> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | </el-table-column> |
| | | <el-table-column prop="isEat" label="空腹"> |
| | | <el-table-column prop="proCheckMethod" label="空腹"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | </el-table-column> |
| | | <el-table-column prop="isEat" label="空腹"> |
| | | <el-table-column prop="proCheckMethod" label="空腹"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | |
| | | <el-form-item label="卡号" prop="indexCard"> |
| | | <el-input v-model="formIn.indexCard" placeholder="请输入卡号" style="width: 190px" /> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="taocan = true" size="mini">选择套餐</el-button> |
| | | <!-- <el-button type="primary" @click="Package" size="mini">选择套餐</el-button> --> |
| | | </el-form> |
| | | </div> |
| | | |
| | |
| | | <template slot="empty">数据正在加载中</template> |
| | | <el-table-column type="selection" width="40px" align="center" label="选择" /> |
| | | <el-table-column label="套餐名称" align="center" prop="pacName" width="120px" /> |
| | | <el-table-column label="套餐价格" align="center" prop="price" width="120px" /> |
| | | <el-table-column label="套餐明细" align="center" prop="allProName" :show-overflow-tooltip="true" /> |
| | | </el-table> |
| | | </div> |
| | |
| | | <!-- <div class="tab1"> --> |
| | | <!-- <el-form :inline="true" class="tab1"> --> |
| | | <el-form-item label="应收金额"> |
| | | <el-input placeholder="应收金额" :value="TotalPrice1 + '.00'" disabled style="width: 160px"></el-input> |
| | | <el-input placeholder="应收金额" :value="TotalPrice1" disabled style="width: 160px"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="优惠折扣"> |
| | | <!-- <el-input style="width: 100px" type="number" v-model="discount" :value="discount"></el-input> --> |
| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitPrice" :disabled="confirm" size="mini">签到登记</el-button> |
| | | <el-button type="primary" @click="submitPrice" :disabled="confirm" size="mini">预约修改</el-button> |
| | | </el-form-item> |
| | | <!-- </el-form> --> |
| | | <!-- </div> --> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | </el-table-column> |
| | | <el-table-column prop="isEat" label="空腹"> |
| | | <el-table-column prop="proCheckMethod" label="空腹"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | </el-table-column> |
| | | <el-table-column prop="isEat" label="空腹"> |
| | | <el-table-column prop="proCheckMethod" label="空腹"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="nowPrice" label="实收金额"> |
| | | </el-table-column> |
| | | <el-table-column prop="isEat" label="空腹"> |
| | | <el-table-column prop="proCheckMethod" label="空腹"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { listReservation, gettjCancel, tjReappoint, tjCancelTj, } from "@/api/reservation/reservation"; |
| | | import { listReservation, gettjCancel, tjReappoint, tjCancelTj, getReservation } from "@/api/reservation/reservation"; |
| | | import printJS from "print-js"; |
| | | import { deptTreeSelect, projectGetList, getPackageListName, getaddtTransition, getTransitionList, } from "@/api/system/tijian"; |
| | | import { getCompany, queryCompany } from "@/api/team/tuanti"; |
| | | import user from "@/store/modules/user"; |
| | | import VTreeTransfer from '../../system/tijian/TreeTransfer.vue' |
| | | export default { |
| | | components: { |
| | | VTreeTransfer |
| | | }, |
| | | name: "Reservation", |
| | | dicts: ["dict_user_national", "dict_user_national", "dict_user_marry", "sys_yes_no", |
| | | "sys_user_sex", "dict_team", "tj_time_region", "dict_tjtype", "dict_job", |
| | | "dict_user_cardtype", "dict_ageunit",], |
| | | data() { |
| | | let checkPhoneNum = (rule, value, callback) => { |
| | | console.log( value) |
| | | 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 { |
| | | isfalse: false, |
| | | tijiao1: true, |
| | |
| | | }, |
| | | }, |
| | | taocan: false, |
| | | defaultKeys: [], |
| | | value1: "", |
| | | pacName: "", |
| | | hides: false, |
| | |
| | | thisCancas: null, |
| | | thisContext: null, |
| | | thisVideo: null, |
| | | datekey: Date.now(), |
| | | treedataList: [], |
| | | list: [], |
| | | activeName: "1", |
| | | // 遮罩层 |
| | |
| | | fmobj: {}, |
| | | // 表单校验 |
| | | rules: { |
| | | cusName: [{ required: true, message: "姓名不能为空", trigger: "blur" }], |
| | | cusName: [{ required: true, validator: checkPhoneNum, trigger: "blur" }], |
| | | cusSex: [ |
| | | { required: true, message: "性别不能为空", trigger: "change" }, |
| | | { required: true, validator: checkPhoneNum, trigger: "change" }, |
| | | ], |
| | | cusBrithday: [ |
| | | { required: true, message: "出生日期不能为空", trigger: "blur" }, |
| | | { required: true, validator: checkPhoneNum, trigger: "blur" }, |
| | | ], |
| | | // cusAddr: [ |
| | | // { required: true, message: "现居住地址不能为空", trigger: "blur" }, |
| | | // ], |
| | | cusPhone: [ |
| | | { required: true, message: "联系电话不能为空", trigger: "blur" }, |
| | | { required: true, validator: checkPhoneNum, trigger: "blur" }, |
| | | ], |
| | | reservationTime: [ |
| | | { required: true, message: "预约日期不能为空", trigger: "change" }, |
| | | { required: true, validator: checkPhoneNum, trigger: "change" }, |
| | | ], |
| | | timeRegion: [ |
| | | { required: true, message: "时间不能为空", trigger: "blur" }, |
| | | { required: true, validator: checkPhoneNum, trigger: "blur" }, |
| | | ], |
| | | }, |
| | | options: [ |
| | |
| | | name: [ |
| | | { |
| | | required: true, |
| | | message: "姓名不能为空", |
| | | validator: checkPhoneNum, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | idCard: [ |
| | | { |
| | | required: true, |
| | | message: "身份证号不能为空", |
| | | validator: checkPhoneNum, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | phoe: [ |
| | | { |
| | | required: true, |
| | | message: "联系电话不能为空", |
| | | validator: checkPhoneNum, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | |
| | | // response.rows.forEach((item, index) => |
| | | // {item.newID =(this.queryParams.pageNum - 1) * this.queryParams.pageSize +index +1; |
| | | // }); |
| | | this.reservationList.forEach((item) => { |
| | | if (item.tjType === "2") { |
| | | item.tjType = "个人"; |
| | | } else { |
| | | item.tjType = "团队"; |
| | | } |
| | | if (item.tjCategory === "01") { |
| | | item.tjCategory = "健康体检"; |
| | | } else if (item.tjCategory === "02") { |
| | | item.tjCategory = "职业病体检"; |
| | | } else if (item.tjCategory === "03") { |
| | | item.tjCategory = "公卫体检"; |
| | | } else if (item.tjCategory === "04") { |
| | | item.tjCategory = "入职体检"; |
| | | } else if (item.tjCategory === "05") { |
| | | item.tjCategory = "公务员体检"; |
| | | } else if (item.tjCategory === "06") { |
| | | item.tjCategory = "医保体检"; |
| | | } else if (item.tjCategory === "07") { |
| | | item.tjCategory = "婚检"; |
| | | } else if (item.tjCategory === "09") { |
| | | item.tjCategory = "出入境体检"; |
| | | } |
| | | }); |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | }); |
| | |
| | | }, |
| | | // 多选框选中数据 |
| | | handleSelectionChange(selection) { |
| | | selection.forEach(item =>{ |
| | | this.fmobj = item |
| | | selection.forEach(item => { |
| | | this.fmobj = item |
| | | }) |
| | | console.log(this.fmobj) |
| | | this.ids = selection.map((item) => item.id); |
| | |
| | | handleUpdate(row) { |
| | | this.title = "修改体检预约"; |
| | | this.formIn = row; |
| | | this.form.tjType = this.formIn.tjType |
| | | if (this.formIn.timeRegion === 0) { |
| | | this.formIn.timeRegion = "8:00-9:00"; |
| | | } |
| | |
| | | let cusSex = this.formIn.sex; |
| | | deptTreeSelect(cusSex).then((response) => { |
| | | this.newpacName = response.rows; |
| | | this.newpacName.forEach((item3) => { |
| | | this.tableData1.forEach((item4) => { |
| | | item4.list.forEach((item6) => { |
| | | if (item6.pacName === item3.pacName) { |
| | | this.$refs.tb.toggleRowSelection(item3, true); |
| | | throw Error(); |
| | | } |
| | | }); |
| | | }); |
| | | }); |
| | | // this.newpacName.forEach((item3) => { |
| | | // this.tableData1.forEach((item4) => { |
| | | // item4.list.forEach((item6) => { |
| | | // if (item6.pacName === item3.pacName) { |
| | | // this.$refs.tb.toggleRowSelection(item3, true); |
| | | // throw Error(); |
| | | // } |
| | | // }); |
| | | // }); |
| | | // }); |
| | | this.loading = false; |
| | | }); |
| | | } else { |
| | | deptTreeSelect().then((response) => { |
| | | this.newpacName = response.rows; |
| | | this.newpacName.forEach((item3) => { |
| | | this.tableData1.forEach((item4) => { |
| | | item4.list.forEach((item6) => { |
| | | if (item6.pacName === item3.pacName) { |
| | | this.$nextTick(() => { |
| | | this.$refs.tb.toggleRowSelection(item3, true); |
| | | }); |
| | | throw Error(); |
| | | } |
| | | }); |
| | | }); |
| | | }); |
| | | // this.newpacName.forEach((item3) => { |
| | | // this.tableData1.forEach((item4) => { |
| | | // item4.list.forEach((item6) => { |
| | | // if (item6.pacName === item3.pacName) { |
| | | // this.$nextTick(() => { |
| | | // this.$refs.tb.toggleRowSelection(item3, true); |
| | | // }); |
| | | // throw Error(); |
| | | // } |
| | | // }); |
| | | // }); |
| | | // }); |
| | | this.loading = false; |
| | | }); |
| | | } |
| | | let cusId = this.formIn.idCard; |
| | | let id = this.formIn.id; |
| | | this.list1 = true; |
| | | (this.tableData1 = []), |
| | | (this.newpacName = []), |
| | | getTransitionList(cusId).then((response) => { |
| | | getReservation(id).then((response) => { |
| | | if (response.data) { |
| | | this.tableData1 = response.data; |
| | | if (this.tableData1.length != 0) { |
| | | this.TotalPrice1 = 0; |
| | | this.tableData1.forEach((item) => { |
| | | this.TotalPrice1 += item.nowPrice; |
| | | this.TotalPrice = ( |
| | | this.TotalPrice1 * |
| | | (this.discount / 10) |
| | | ).toFixed(2); |
| | | if (item.pacName === null) { |
| | | item.pacName = "单项"; |
| | | let cusId = response.data.idCard; |
| | | getTransitionList(cusId).then((response) => { |
| | | if (response.data) { |
| | | this.tableData1 = response.data; |
| | | if (this.tableData1.length != 0) { |
| | | this.TotalPrice1 = 0; |
| | | this.tableData1.forEach((item) => { |
| | | this.TotalPrice1 += item.nowPrice; |
| | | this.TotalPrice = ( |
| | | this.TotalPrice1 * |
| | | (this.discount / 10) |
| | | ).toFixed(2); |
| | | if (item.pacName === null) { |
| | | item.pacName = "单项"; |
| | | } |
| | | }); |
| | | this.list1 = false; |
| | | this.list3 = true; |
| | | } else { |
| | | this.list1 = true; |
| | | } |
| | | }); |
| | | this.list1 = false; |
| | | this.list3 = true; |
| | | } else { |
| | | this.list1 = true; |
| | | } |
| | | } |
| | | }) |
| | | |
| | | } else { |
| | | this.tableData1 = []; |
| | | this.list3 = false; |
| | |
| | | } |
| | | }); |
| | | |
| | | /** 查询部门下拉树结构 */ |
| | | projectGetList().then((response) => { |
| | | this.data = response.data; |
| | | this.dXData = response.data; |
| | | return; |
| | | }); |
| | | // /** 查询部门下拉树结构 */ |
| | | // projectGetList().then((response) => { |
| | | // this.treedataList = response.data.list; |
| | | // this.dXData = response.data.list; |
| | | // return; |
| | | // }); |
| | | } else { |
| | | this.$message.warning("已过期请重新预约"); |
| | | } |
| | | }, |
| | | changeCategoryKeys(val) { |
| | | this.proIds = []; |
| | | this.proIds = val |
| | | }, |
| | | /** 修改详细按钮操作 */ |
| | | handleUpdate1(row) { |
| | |
| | | |
| | | /** 查询部门下拉树结构 */ |
| | | projectGetList().then((response) => { |
| | | this.data = response.data; |
| | | this.dXData = response.data; |
| | | this.treedataList = response.data.list; |
| | | this.dXData = response.data.list; |
| | | return; |
| | | }); |
| | | }, |
| | |
| | | numberChange(currentValue, oldValue) { |
| | | this.discount = currentValue; |
| | | this.TotalPrice = (this.TotalPrice1 * (this.discount / 10)).toFixed(2); |
| | | }, |
| | | |
| | | Package() { |
| | | this.taocan = true; |
| | | this.datekey = Date.now() |
| | | }, |
| | | |
| | | /** 搜索操作 */ |
| | |
| | | this.multiple = !selection.length; |
| | | if (selection[0]) { |
| | | this.DataList = []; |
| | | this.data = JSON.parse(JSON.stringify(this.dXData)); |
| | | this.treedataList = JSON.parse(JSON.stringify(this.dXData)); |
| | | selection[0].tjProjectList.forEach((selectionitem) => { |
| | | this.data.forEach((item) => { |
| | | this.treedataList.forEach((item) => { |
| | | if (selectionitem.proName == item.proName) { |
| | | item.disabled = true; |
| | | item.tjProjectList = []; |
| | |
| | | }); |
| | | }); |
| | | } else { |
| | | this.data = JSON.parse(JSON.stringify(this.dXData)); |
| | | this.treedataList = JSON.parse(JSON.stringify(this.dXData)); |
| | | return; |
| | | } |
| | | }, |
| | |
| | | // 最后提交按钮 |
| | | submitPrice() { |
| | | let _this = this; |
| | | if (_this.tableData1.length > 0) { |
| | | // if (_this.tableData1.length > 0) { |
| | | if (this.tableData[0]) { |
| | | var pacId = this.tableData[0].pacId; |
| | | } |
| | |
| | | }); |
| | | this.getList(); |
| | | this.$tab.refreshPage(); |
| | | } else { |
| | | this.$message.warning("请选择您要体检的内容"); |
| | | } |
| | | // } else { |
| | | // this.$message.warning("请选择您要体检的内容"); |
| | | // } |
| | | }, |
| | | // 最后提交按钮 |
| | | submitPrice1() { |