<template>
|
<div class="app-container">
|
<el-form
|
:model="queryParams"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
v-show="showSearch"
|
label-width="68px"
|
>
|
<el-form-item label="姓名" prop="name">
|
<el-input
|
style="width: 120px"
|
v-model="queryParams.name"
|
placeholder="请输入姓名"
|
clearable
|
@keyup.enter.native="handleQuery"
|
/>
|
</el-form-item>
|
<el-form-item label="身份证号" prop="idCard">
|
<el-input
|
v-model="queryParams.idCard"
|
placeholder="请输入身份证号"
|
clearable
|
@keyup.enter.native="handleQuery"
|
/>
|
</el-form-item>
|
<el-form-item label="联系电话" prop="phoe">
|
<el-input
|
v-model="queryParams.phoe"
|
placeholder="请输入联系电话"
|
clearable
|
@keyup.enter.native="handleQuery"
|
style="width: 140px"
|
/>
|
</el-form-item>
|
<el-form-item label="单位名称" prop="company">
|
<el-select
|
:remote-method="getRemoteData"
|
v-model="queryParams.company"
|
value-key="drugManufacturerId"
|
remote
|
filterable
|
placeholder="请选择单位名称"
|
clearable
|
@change="searchSelect"
|
>
|
<el-option
|
v-for="dict in CompanyList"
|
:key="dict.drugManufacturerId"
|
:label="dict.cnName"
|
:value="dict.cnName"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="预约超期" prop="isExpire">
|
<el-select
|
v-model="queryParams.isExpire"
|
placeholder="请选择是否超期"
|
clearable
|
style="width: 140px"
|
>
|
<el-option
|
v-for="dict in options"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="mini"
|
@click="handleQuery"
|
>搜索</el-button
|
>
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
>重置</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<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"
|
|
>撤销预约</el-button
|
>
|
<!-- v-hasPermi="['reservation:reservation:remove']" -->
|
</el-col>
|
<el-col :span="1.5">
|
<el-button
|
type="primary"
|
size="mini"
|
:disabled="single"
|
@click="receipt"
|
|
>补打小票</el-button
|
>
|
<!-- v-hasPermi="['reservation:reservation:remove']" -->
|
</el-col>
|
<right-toolbar
|
:showSearch.sync="showSearch"
|
@queryTable="getList"
|
></right-toolbar>
|
</el-row>
|
|
<el-table
|
border
|
v-loading="loading"
|
:data="reservationList"
|
@selection-change="handleSelectionChange"
|
: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"
|
/>
|
<el-table-column
|
label="身份证号"
|
align="center"
|
prop="idCard"
|
width="170px"
|
:show-overflow-tooltip="true"
|
/>
|
<el-table-column
|
label="出生日期"
|
align="center"
|
prop="birthday"
|
width="100px"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<span>{{ parseTime(scope.row.birthday, "{y}-{m}-{d}") }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="联系电话"
|
align="center"
|
prop="phoe"
|
width="110px"
|
:show-overflow-tooltip="true"
|
/>
|
|
<el-table-column
|
label="预约时间"
|
align="center"
|
prop="reservationTime"
|
width="100px"
|
:show-overflow-tooltip="true"
|
sortable
|
>
|
<template slot-scope="scope">
|
<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"
|
>
|
<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"
|
/>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="民族"
|
align="center"
|
prop="nation"
|
width="60px"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<dict-tag
|
:options="dict.type.dict_user_national"
|
:value="scope.row.nation"
|
/>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column label="体检类别" align="center" prop="tjCategory" width="100px" :show-overflow-tooltip="true" /> -->
|
<!-- <el-table-column label="部门" align="center" prop="department" width="90px" :show-overflow-tooltip="true" /> -->
|
<el-table-column
|
label="预约超期"
|
align="center"
|
prop="isExpire"
|
width="80px"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<span v-if="scope.row.isExpire == '1'">已过期</span>
|
<span v-if="scope.row.isExpire == '2'">未过期</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="单位名称"
|
align="center"
|
prop="company"
|
:show-overflow-tooltip="true"
|
/>
|
<el-table-column
|
label="邮箱"
|
align="center"
|
prop="email"
|
:show-overflow-tooltip="true"
|
width="160px"
|
/>
|
<el-table-column
|
label="地址"
|
align="center"
|
prop="address"
|
:show-overflow-tooltip="true"
|
width="160px"
|
/>
|
<el-table-column label="操作" align="center" width="90px" fixed="right">
|
<template slot-scope="scope">
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-s-order"
|
@click="handleUpdate1(scope.row)"
|
title="预约详细"
|
></el-button>
|
<!-- v-hasPermi="['reservation:reservation:edit']" -->
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-edit"
|
@click="handleUpdate(scope.row)"
|
title="修改"
|
></el-button>
|
<!-- v-hasPermi="['reservation:reservation:edit']" -->
|
<el-button
|
size="mini"
|
type="text"
|
title="撤销预约"
|
icon="el-icon-delete"
|
@click="handleDelete(scope.row)"
|
>
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<div class="pag">
|
<div class="pag1">
|
<pagination
|
v-show="total > 0"
|
:total="total"
|
:page.sync="queryParams.pageNum"
|
:limit.sync="queryParams.pageSize"
|
@pagination="getList"
|
/>
|
</div>
|
</div>
|
<!-- 预约登记详情对话框 -->
|
<el-drawer title="预约详细信息" :visible.sync="drawer1" size="55%">
|
<template>
|
<div>
|
<div style="width: 1000px">
|
<el-form
|
style="margin: 0px 8px"
|
:inline="true"
|
ref="formIn"
|
:model="formIn"
|
:rules="rules"
|
:label-position="labelPosition"
|
class="demo-form-inline"
|
label-width="78px"
|
>
|
<el-form-item label="姓名" prop="name">
|
<el-input
|
v-model="formIn.name"
|
placeholder="请输入姓名"
|
style="width: 160px"
|
/>
|
</el-form-item>
|
<el-form-item label="证件类型" prop="idType">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.idType"
|
placeholder="请选择证件类型"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_cardtype"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="证件号" prop="idCard">
|
<el-input
|
style="width: 186px"
|
v-model="formIn.idCard"
|
placeholder="请输入身份证号"
|
/>
|
</el-form-item>
|
<el-form-item label="年龄" prop="age">
|
<el-input style="width: 55px" v-model="formIn.age" />
|
</el-form-item>
|
<el-form-item prop="ageUnit">
|
<el-select
|
style="width: 60px"
|
v-model="formIn.ageUnit"
|
@change="formchang"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_ageunit"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="性别" prop="sex">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.sex"
|
placeholder="请选择性别"
|
@change="formchang"
|
>
|
<el-option
|
v-for="dict in dict.type.sys_user_sex"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="联系电话" prop="phoe">
|
<el-input
|
v-model="formIn.phoe"
|
placeholder="请输入联系电话"
|
style="width: 160px"
|
/>
|
</el-form-item>
|
<el-form-item label="民族" prop="nation">
|
<el-select
|
v-model="formIn.nation"
|
placeholder="请选择民族"
|
style="width: 160px"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_national"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="邮箱" prop="email">
|
<el-input
|
v-model="formIn.email"
|
placeholder="请输入邮箱"
|
style="width: 150px"
|
/>
|
</el-form-item>
|
<el-form-item label="婚姻" prop="marriage">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.marriage"
|
placeholder="请选择婚姻状况"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_marry"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="现住址" prop="address">
|
<el-input
|
v-model="formIn.address"
|
placeholder="请输入现居住地址"
|
style="width: 410px"
|
/>
|
</el-form-item>
|
<el-form-item label="体检类别" prop="tjCategory">
|
<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-form-item>
|
<el-form-item label="工作单位" prop="company">
|
<el-input
|
v-model="formIn.company"
|
placeholder="请输入工作单位"
|
style="width: 410px"
|
/>
|
</el-form-item>
|
<el-form-item label="职业" prop="career">
|
<el-select
|
filterable
|
:disabled="isDisabled"
|
v-model="formIn.career"
|
placeholder="请输入职业"
|
style="width: 150px"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_job"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="预约日期" prop="reservationTime">
|
<el-date-picker
|
v-model="formIn.reservationTime"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="选择日期"
|
:picker-options="setDisabled"
|
style="width: 160px"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="时间" prop="timeRegion">
|
<el-select
|
style="width: 130px"
|
v-model="formIn.timeRegion"
|
placeholder="请选择预约时间"
|
>
|
<el-option
|
v-for="dict in dict.type.tj_time_region"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<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"
|
v-show="tijiao1"
|
>选择套餐</el-button
|
>
|
</el-form>
|
</div>
|
|
<el-dialog
|
title="选择套餐"
|
:visible.sync="taocan"
|
width="35%"
|
append-to-body
|
>
|
<el-tabs
|
type="border-card"
|
style="height: 538px; margin-left: 10px; width: 600px"
|
>
|
<el-tab-pane label="套餐">
|
<el-form
|
:model="queryParam"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
v-show="showSearch"
|
label-width="auto"
|
@submit.native.prevent
|
>
|
<el-form-item label="套餐名称" prop="pacName">
|
<el-input
|
v-model="queryParam.pacName"
|
placeholder="请输入套餐名称"
|
clearable
|
@keyup.enter.native="handle"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="mini"
|
@click="handle"
|
>查询</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<div class="tab4">
|
<div
|
class="grid-content bg-purple"
|
style="margin-left: 5px; width: 100%"
|
>
|
<el-table
|
v-loading="loading"
|
element-loading-text="正在加载中..."
|
border
|
element-loading-spinner="el-icon-loading"
|
:data="newpacName"
|
@select="handleSelectionChange1"
|
height="430"
|
ref="tb"
|
style="width: 900px"
|
>
|
<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="allProName"
|
:show-overflow-tooltip="true"
|
/>
|
</el-table>
|
</div>
|
<!-- <el-button
|
style="
|
width: 20px;
|
height: 100px;
|
margin-top: 20%;
|
font-size: 10px;
|
padding-right: 20px;
|
"
|
type="primary"
|
size="mini"
|
@click="submit"
|
><i
|
style="font-size: 18px"
|
class="el-icon-d-arrow-right"
|
></i
|
></el-button> -->
|
</div>
|
</el-tab-pane>
|
<el-tab-pane label="单项">
|
<div class="tab3">
|
<div class="tab2">
|
<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>
|
</el-tabs>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="taocan = false">取 消</el-button>
|
<el-button type="primary" @click="submit">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<el-row type="flex" class="row-bg" justify="space-around">
|
<el-col>
|
<div style="margin-left: 20px" class="grid-content bg-purple">
|
<template>
|
<el-form :model="form" :inline="true" label-width="68px">
|
<el-form-item label="体检类型">
|
<el-select
|
style="width: 160px"
|
v-model="form.tjType"
|
placeholder="请选择体检类型"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_team"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<!-- <div class="tab1"> -->
|
<!-- <el-form :inline="true" class="tab1"> -->
|
<el-form-item label="应收金额">
|
<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-input-number
|
ref="inputNumber"
|
style="width: 130px"
|
v-model="discount"
|
:precision="2"
|
: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"
|
disabled
|
></el-input>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button
|
type="primary"
|
@click="submitPrice"
|
:disabled="confirm"
|
size="mini"
|
v-show="tijiao1"
|
>签到登记</el-button
|
>
|
</el-form-item>
|
<!-- </el-form> -->
|
<!-- </div> -->
|
</el-form>
|
</template>
|
|
<div style="text-align: center; margin-bottom: 10px">
|
已选项目列表
|
</div>
|
<div
|
style="
|
padding: 0px 6px;
|
border: 1px solid #e6ebf5;
|
max-height: 420px;
|
overflow: auto;
|
"
|
>
|
<el-collapse v-model="index" accordion v-if="list3">
|
<div
|
class="info1"
|
v-for="(item, index) in tableData1"
|
:key="'info1-' + index"
|
>
|
<el-collapse-item :name="index">
|
<template slot="title">
|
{{
|
item.pacName +
|
":" +
|
item.parentName +
|
" (应收金额:" +
|
item.ordPrice +
|
" / 实收金额:" +
|
item.nowPrice +
|
"元)"
|
}}
|
</template>
|
<el-table
|
:data="item.list"
|
border
|
style="width: 100%"
|
height="270"
|
>
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
|
<el-collapse v-model="activeName" accordion v-if="list2">
|
<div
|
class="info"
|
v-for="(item, index) in tableData1"
|
:key="'info-' + index"
|
>
|
<el-collapse-item>
|
<template slot="title">
|
{{ item.pacName }}
|
</template>
|
<el-table
|
:data="item.tjProjectList"
|
border
|
style="width: 100%"
|
height="250"
|
>
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="proSex"
|
label="性别"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
<el-table-column prop="proCheckMethod" label="空腹">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
|
<el-collapse v-model="activeName" accordion v-if="list1">
|
<div>
|
<el-collapse-item title="请选择项目">
|
<el-table :data="list" border style="width: 100%">
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="proSex"
|
label="性别"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
<el-table-column prop="proCheckMethod" label="空腹">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
</div>
|
</div>
|
</el-col>
|
</el-row>
|
|
<el-dialog
|
title="导检单预览"
|
:visible.sync="dialogVisibles"
|
:close-on-click-modal="false"
|
>
|
<div class="main">
|
<iframe
|
id="printIframe"
|
:src="url"
|
frameborder="0"
|
style="width: 100%; height: 100%"
|
></iframe>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
</el-drawer>
|
|
<div
|
style="
|
position: absolute;
|
bottom: 100px;
|
left: 500px;
|
width: 700px;
|
display: none;
|
"
|
>
|
<div id="printBill">
|
<div style="font-size: 13px; color: #000000">
|
<div style="width: 48%; margin-top: 10px">姓名:{{ fmobj.name }}</div>
|
<div style="width: 48%; margin-top: 10px">
|
性别:{{ fmobj.sex === 0 ? "男" : "女" }}
|
</div>
|
<div style="width: 48%; margin-top: 10px">电话:{{ fmobj.phoe }}</div>
|
<div style="width: 48%; margin-top: 10px">
|
日期:{{ fmobj.reservationTime }}
|
</div>
|
<div style="width: 58%; margin-top: 10px">套餐:{{ pacName }}</div>
|
<div style="width: 100%; margin-top: 10px">温馨提示:</div>
|
<div style="width: 100%">1、采血,腹部彩超检查后方可用餐。</div>
|
<div style="width: 100%">
|
2、近期若有生育计划及未成年人,不宜进行胸片、双能骨密度等放射检查。
|
</div>
|
<div style="width: 100%">
|
3、怀孕或可能已受孕的女士,还应避免妇科、放射科及阴式超声检查。
|
</div>
|
<div style="width: 100%">4、经期女性不宜进行妇科及尿常规检查。</div>
|
<div style="width: 100%">
|
5、若您在等待检查过程中有疑问,请及时联系导检护士。
|
</div>
|
<div style="width: 100%">6、体检结束后请将导检单交还至前台。</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- 修改预约登记信息对话框 -->
|
<el-drawer title="预约信息维护" :visible.sync="drawer" size="55%">
|
<template>
|
<div>
|
<div style="width: 1000px">
|
<el-form
|
style="margin: 0px 8px"
|
:inline="true"
|
ref="formIn"
|
:model="formIn"
|
:rules="rules"
|
:label-position="labelPosition"
|
class="demo-form-inline"
|
label-width="78px"
|
>
|
<el-form-item label="姓名" prop="name">
|
<el-input
|
v-model="formIn.name"
|
placeholder="请输入姓名"
|
style="width: 160px"
|
/>
|
</el-form-item>
|
<el-form-item label="证件类型" prop="idType">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.idType"
|
placeholder="请选择证件类型"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_cardtype"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="证件号" prop="idCard">
|
<el-input
|
style="width: 186px"
|
v-model="formIn.idCard"
|
placeholder="请输入身份证号"
|
/>
|
</el-form-item>
|
<el-form-item label="年龄" prop="age">
|
<el-input style="width: 55px" v-model="formIn.age" />
|
</el-form-item>
|
<el-form-item prop="ageUnit">
|
<el-select
|
style="width: 60px"
|
v-model="formIn.ageUnit"
|
@change="formchang"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_ageunit"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="性别" prop="sex">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.sex"
|
placeholder="请选择性别"
|
@change="formchang"
|
>
|
<el-option
|
v-for="dict in dict.type.sys_user_sex"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="联系电话" prop="phoe">
|
<el-input
|
v-model="formIn.phoe"
|
placeholder="请输入联系电话"
|
style="width: 160px"
|
/>
|
</el-form-item>
|
<el-form-item label="民族" prop="nation">
|
<el-select
|
v-model="formIn.nation"
|
placeholder="请选择民族"
|
style="width: 160px"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_national"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="邮箱" prop="email">
|
<el-input
|
v-model="formIn.email"
|
placeholder="请输入邮箱"
|
style="width: 150px"
|
/>
|
</el-form-item>
|
<el-form-item label="婚姻" prop="marriage">
|
<el-select
|
style="width: 160px"
|
v-model="formIn.marriage"
|
placeholder="请选择婚姻状况"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_marry"
|
:key="dict.value"
|
:label="dict.label"
|
:value="parseInt(dict.value)"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="现住址" prop="address">
|
<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-form-item>
|
<el-form-item label="部门" prop="department">
|
<el-input
|
v-model="formIn.department"
|
placeholder="请输入部门"
|
style="width: 160px"
|
/>
|
</el-form-item>
|
<el-form-item label="工作单位" prop="company">
|
<el-input
|
v-model="formIn.company"
|
placeholder="请输入工作单位"
|
style="width: 410px"
|
/>
|
</el-form-item>
|
<el-form-item label="职业" prop="career">
|
<el-select
|
filterable
|
:disabled="isDisabled"
|
v-model="formIn.career"
|
placeholder="请输入职业"
|
style="width: 150px"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_job"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="预约日期" prop="reservationTime">
|
<el-date-picker
|
v-model="formIn.reservationTime"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="选择日期"
|
:picker-options="setDisabled"
|
style="width: 160px"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="时间" prop="timeRegion">
|
<el-select
|
style="width: 130px"
|
v-model="formIn.timeRegion"
|
placeholder="请选择预约时间"
|
>
|
<el-option
|
v-for="dict in dict.type.tj_time_region"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="卡号" prop="indexCard">
|
<el-input
|
v-model="formIn.indexCard"
|
placeholder="请输入卡号"
|
style="width: 190px"
|
/>
|
</el-form-item>
|
<!-- <el-button type="primary" @click="Package" size="mini">选择套餐</el-button> -->
|
</el-form>
|
</div>
|
|
<el-dialog
|
title="选择套餐"
|
:visible.sync="taocan"
|
width="35%"
|
append-to-body
|
>
|
<el-tabs
|
type="border-card"
|
style="height: 538px; margin-left: 10px; width: 600px"
|
>
|
<el-tab-pane label="套餐">
|
<el-form
|
:model="queryParam"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
v-show="showSearch"
|
label-width="auto"
|
@submit.native.prevent
|
>
|
<el-form-item label="套餐名称" prop="pacName">
|
<el-input
|
v-model="queryParam.pacName"
|
placeholder="请输入套餐名称"
|
clearable
|
@keyup.enter.native="handle"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="mini"
|
@click="handle"
|
>查询</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<div class="tab4">
|
<div
|
class="grid-content bg-purple"
|
style="margin-left: 5px; width: 100%"
|
>
|
<el-table
|
v-loading="loading"
|
element-loading-text="正在加载中..."
|
border
|
element-loading-spinner="el-icon-loading"
|
:data="newpacName"
|
@select="handleSelectionChange1"
|
height="430"
|
ref="tb"
|
style="width: 900px"
|
>
|
<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>
|
<!-- <el-button
|
style="
|
width: 20px;
|
height: 100px;
|
margin-top: 20%;
|
font-size: 10px;
|
padding-right: 20px;
|
"
|
type="primary"
|
size="mini"
|
@click="submit"
|
><i
|
style="font-size: 18px"
|
class="el-icon-d-arrow-right"
|
></i
|
></el-button> -->
|
</div>
|
</el-tab-pane>
|
<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>
|
</div>
|
<!-- <el-button
|
style="
|
width: 20px;
|
height: 100px;
|
margin-left: 10px;
|
margin-top: 20%;
|
font-size: 10px;
|
"
|
type="primary"
|
size="mini"
|
@click="submit"
|
><i
|
style="font-size: 18px"
|
class="el-icon-d-arrow-right"
|
></i
|
></el-button> -->
|
</div>
|
</el-tab-pane>
|
</el-tabs>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="taocan = false">取 消</el-button>
|
<el-button type="primary" @click="submit">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<el-row type="flex" class="row-bg" justify="space-around">
|
<el-col>
|
<div style="margin-left: 20px" class="grid-content bg-purple">
|
<template>
|
<el-form :model="form" :inline="true" label-width="68px">
|
<el-form-item label="体检类型">
|
<el-select
|
style="width: 160px"
|
v-model="form.tjType"
|
placeholder="请选择体检类型"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_team"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<!-- <div class="tab1"> -->
|
<!-- <el-form :inline="true" class="tab1"> -->
|
<el-form-item label="应收金额">
|
<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-input-number
|
ref="inputNumber"
|
style="width: 130px"
|
v-model="discount"
|
:precision="2"
|
: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-form-item>
|
|
<el-form-item>
|
<el-button
|
type="primary"
|
@click="submitPrice"
|
:disabled="confirm"
|
size="mini"
|
>预约修改</el-button
|
>
|
</el-form-item>
|
<!-- </el-form> -->
|
<!-- </div> -->
|
</el-form>
|
</template>
|
|
<div style="text-align: center; margin-bottom: 10px">
|
已选项目列表
|
</div>
|
<div
|
style="
|
padding: 0px 6px;
|
border: 1px solid #e6ebf5;
|
max-height: 420px;
|
overflow: auto;
|
"
|
>
|
<el-collapse v-model="index" accordion v-if="list3">
|
<div
|
class="info1"
|
v-for="(item, index) in tableData1"
|
:key="'info1-' + index"
|
>
|
<el-collapse-item :name="index">
|
<template slot="title">
|
{{
|
item.pacName +
|
":" +
|
item.parentName +
|
" (应收金额:" +
|
item.ordPrice +
|
".00元 / 实收金额:" +
|
item.nowPrice +
|
".00元)"
|
}}
|
</template>
|
<el-table
|
:data="item.list"
|
border
|
style="width: 100%"
|
height="270"
|
>
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="proSex"
|
label="性别"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
<el-table-column prop="proCheckMethod" label="空腹">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
|
<el-collapse v-model="activeName" accordion v-if="list2">
|
<div
|
class="info"
|
v-for="(item, index) in tableData1"
|
:key="'info-' + index"
|
>
|
<el-collapse-item>
|
<template slot="title">
|
{{ item.pacName }}
|
</template>
|
<el-table
|
:data="item.tjProjectList"
|
border
|
style="width: 100%"
|
height="250"
|
>
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="proSex"
|
label="性别"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
<el-table-column prop="proCheckMethod" label="空腹">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
|
<el-collapse v-model="activeName" accordion v-if="list1">
|
<div>
|
<el-collapse-item title="请选择项目">
|
<el-table :data="list" border style="width: 100%">
|
<el-table-column
|
prop="proName"
|
label="项目"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="proSex"
|
label="性别"
|
width="180"
|
>
|
</el-table-column>
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column prop="nowPrice" label="实收金额">
|
</el-table-column>
|
<el-table-column prop="proCheckMethod" label="空腹">
|
</el-table-column>
|
</el-table>
|
</el-collapse-item>
|
</div>
|
</el-collapse>
|
</div>
|
</div>
|
</el-col>
|
</el-row>
|
|
<el-dialog
|
title="导检单预览"
|
:visible.sync="dialogVisibles"
|
:close-on-click-modal="false"
|
>
|
<div class="main">
|
<iframe
|
id="printIframe"
|
:src="url"
|
frameborder="0"
|
style="width: 100%; height: 100%"
|
></iframe>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
</el-drawer>
|
</div>
|
</template>
|
|
<script>
|
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,
|
index: 0,
|
proIds: "",
|
alue: "2",
|
setDisabled: {
|
// 返回禁用时间
|
disabledDate(time) {
|
return time.getTime() < Date.now() - 8.64e7; // 不可选历史天、不可选当前天、可选未来天
|
},
|
},
|
taocan: false,
|
defaultKeys: [],
|
value1: "",
|
pacName: "",
|
hides: false,
|
hide: true,
|
beat: false,
|
barcode: null,
|
dialogVisibles: false,
|
src: "",
|
url: "",
|
dialogVisible: false,
|
/** 照相机弹窗模块-start */
|
videoWidth: 200,
|
videoHeight: 200,
|
// canvasWidth:300,
|
// canvasHeight:300,
|
imgSrc: "",
|
thisCancas: null,
|
thisContext: null,
|
thisVideo: null,
|
datekey: Date.now(),
|
treedataList: [],
|
list: [],
|
activeName: "1",
|
// 遮罩层
|
loading: false,
|
list2: false,
|
list3: false,
|
list1: true,
|
labelPosition: "right",
|
imageUrl: "",
|
isDisabled: false,
|
size: "",
|
tcShow: false,
|
// 套餐提交按钮
|
confirm: false,
|
TotalPrice: 0,
|
TotalPrice1: 0,
|
discount: 10,
|
newpacName: [],
|
// 所有体检项目·
|
allpackageList: [],
|
tjProjectList: [],
|
customerList: [],
|
// 表格
|
tableData: [],
|
tableData1: [],
|
tableData2: [],
|
tableDataList: [],
|
|
activeName: "1",
|
DataList: [],
|
fData: [],
|
tjOrderList: [], //单个项目集合
|
tjFlowingWater: {},
|
// 搜索套餐名字
|
name: "",
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
nodeobj: {},
|
// 是否显示弹出层
|
Seachopen: false,
|
pacId: "",
|
// 结果
|
result: "",
|
proIds: [],
|
// 显示搜索条件
|
showSearch: true,
|
// 树状形状
|
data: [],
|
defaultProps: {
|
children: "tjProjectList",
|
label: "proName",
|
},
|
formPacId: "",
|
dXData: [],
|
// 查询参数
|
queryParam: {
|
pageNum: 1,
|
pageSize: 10,
|
pacName: null,
|
pacRemark: null,
|
},
|
socket: null,
|
value: 1,
|
sendFlag: 0,
|
sector: 0,
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
cusName: null,
|
cusSex: null,
|
cusBrithday: null,
|
cusAddr: null,
|
cusPhone: null,
|
cusPostcode: null,
|
cusEmail: null,
|
indexCard: null,
|
cusNational: null,
|
cusMarryStatus: null,
|
cusIdcard: null,
|
cusIntroduce: null,
|
cusNumber: null,
|
cusIsvip: null,
|
},
|
formIn: {},
|
fmobj: {},
|
// 表单校验
|
rules: {
|
cusName: [
|
{ required: true, validator: checkPhoneNum, trigger: "blur" },
|
],
|
cusSex: [
|
{ required: true, validator: checkPhoneNum, trigger: "change" },
|
],
|
cusBrithday: [
|
{ required: true, validator: checkPhoneNum, trigger: "blur" },
|
],
|
// cusAddr: [
|
// { required: true, message: "现居住地址不能为空", trigger: "blur" },
|
// ],
|
cusPhone: [
|
{ required: true, validator: checkPhoneNum, trigger: "blur" },
|
],
|
reservationTime: [
|
{ required: true, validator: checkPhoneNum, trigger: "change" },
|
],
|
timeRegion: [
|
{ required: true, validator: checkPhoneNum, trigger: "blur" },
|
],
|
},
|
options: [
|
{
|
value: "1",
|
label: "已过期",
|
},
|
{
|
value: "2",
|
label: "未过期",
|
},
|
],
|
CompanyList: [],
|
// 遮罩层
|
loading: true,
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 显示搜索条件
|
showSearch: true,
|
// 总条数
|
total: 0,
|
// 体检预约表格数据
|
reservationList: [],
|
// 弹出层标题
|
title: "",
|
drawer: false,
|
drawer1: false,
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
orderByColumn: "reservationTime",
|
isAsc: "desc",
|
name: null,
|
idCard: null,
|
phoe: null,
|
email: null,
|
tjType: null,
|
company: null,
|
reservationTime: null,
|
isExpire: null,
|
},
|
// 表单参数
|
form: {},
|
// 表单校验
|
rules: {
|
name: [
|
{
|
required: true,
|
validator: checkPhoneNum,
|
trigger: "blur",
|
},
|
],
|
idCard: [
|
{
|
required: true,
|
validator: checkPhoneNum,
|
trigger: "blur",
|
},
|
],
|
phoe: [
|
{
|
required: true,
|
validator: checkPhoneNum,
|
trigger: "blur",
|
},
|
],
|
// email: [
|
// {
|
// required: true,
|
// message: "邮箱不能为空",
|
// trigger: "blur",
|
// },
|
// ],
|
},
|
};
|
},
|
created() {
|
this.getList();
|
},
|
methods: {
|
/** 查询体检预约列表 */
|
getList() {
|
this.loading = true;
|
listReservation(this.queryParams).then((response) => {
|
this.reservationList = response.rows;
|
// response.rows.forEach((item, index) =>
|
// {item.newID =(this.queryParams.pageNum - 1) * this.queryParams.pageSize +index +1;
|
// });
|
this.total = response.total;
|
this.loading = false;
|
});
|
// 获取单位信息集合
|
getCompany(this.queryParam).then((response) => {
|
this.CompanyList = response.data;
|
});
|
},
|
// 取消按钮
|
cancel() {
|
this.open = false;
|
this.reset();
|
},
|
|
// 选框数据
|
searchSelect(val) {
|
this.CheckBox = val;
|
},
|
// 体检公司拼音搜索
|
getRemoteData(query) {
|
if (query) {
|
let compName = query;
|
queryCompany(compName).then((response) => {
|
this.CompanyList = response.data;
|
});
|
}
|
},
|
// 表单重置
|
reset() {
|
this.form = {
|
id: null,
|
name: null,
|
sex: null,
|
age: null,
|
idCard: null,
|
birthday: null,
|
phoe: null,
|
email: null,
|
address: null,
|
marriage: null,
|
nation: null,
|
tjCategory: null,
|
tjType: null,
|
proIds: null,
|
pacId: null,
|
company: null,
|
companyId: null,
|
jobNo: null,
|
department: null,
|
departmentId: null,
|
position: null,
|
createTime: null,
|
createBy: null,
|
updateTime: null,
|
updateBy: null,
|
reservationTime: null,
|
isExpire: null,
|
deleted: null,
|
payType: null,
|
};
|
this.resetForm("form");
|
},
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
this.getList();
|
},
|
/** 重置按钮操作 */
|
resetQuery() {
|
this.resetForm("queryForm");
|
this.handleQuery();
|
},
|
// 多选框选中数据
|
handleSelectionChange(selection) {
|
selection.forEach((item) => {
|
this.fmobj = item;
|
});
|
console.log(this.fmobj);
|
this.ids = selection.map((item) => item.id);
|
this.single = selection.length !== 1;
|
this.multiple = !selection.length;
|
},
|
selectHandle(row, index) {
|
if (row.isExpire === 1) {
|
return false;
|
} else {
|
return true;
|
}
|
},
|
|
/** 修改按钮操作 */
|
handleUpdate(row) {
|
console.log(row);
|
this.title = "修改体检预约";
|
this.formIn = row;
|
this.form.tjType = this.formIn.tjType;
|
if (this.formIn.timeRegion === 0) {
|
this.formIn.timeRegion = "8:00-9:00";
|
}
|
if (row.timeRegion === 1) {
|
this.formIn.timeRegion = "9:00-10:00";
|
}
|
if (row.timeRegion === 2) {
|
this.formIn.timeRegion = "10:00-11:00";
|
}
|
if (row.timeRegion === 3) {
|
this.formIn.timeRegion = "11:00-12:00";
|
}
|
if (this.formIn.isExpire === 2) {
|
this.drawer = true;
|
if (this.formIn.discount != null) {
|
this.discount = this.formIn.discount;
|
}
|
|
//全部套餐
|
if (this.formIn.sex != null) {
|
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.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.loading = false;
|
});
|
}
|
let id = this.formIn.id;
|
this.list1 = true;
|
(this.tableData1 = []),
|
(this.newpacName = []),
|
getReservation(id).then((response) => {
|
if (response.data) {
|
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;
|
console.log(this.discount);
|
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;
|
}
|
}
|
});
|
} else {
|
this.tableData1 = [];
|
this.list3 = false;
|
this.list1 = true;
|
}
|
});
|
|
// /** 查询部门下拉树结构 */
|
// 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) {
|
this.title = "预约详细信息";
|
this.formIn = row;
|
if (this.formIn.timeRegion === 0) {
|
this.formIn.timeRegion = "8:00-9:00";
|
}
|
if (row.timeRegion === 1) {
|
this.formIn.timeRegion = "9:00-10:00";
|
}
|
if (row.timeRegion === 2) {
|
this.formIn.timeRegion = "10:00-11:00";
|
}
|
if (row.timeRegion === 3) {
|
this.formIn.timeRegion = "11:00-12:00";
|
}
|
if (this.formIn.isExpire === 1) {
|
this.tijiao1 = false;
|
}
|
this.drawer1 = true;
|
if (this.formIn.discount != null) {
|
this.discount = this.formIn.discount;
|
}
|
//全部套餐
|
if (this.formIn.sex != null) {
|
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.$nextTick(() => {
|
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.loading = false;
|
});
|
}
|
let id = this.formIn.id;
|
this.list1 = true;
|
(this.tableData1 = []),
|
(this.newpacName = []),
|
getReservation(id).then((response) => {
|
if (response.data) {
|
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;
|
}
|
} else {
|
this.tableData1 = [];
|
this.list3 = false;
|
this.list1 = true;
|
}
|
});
|
}
|
});
|
|
/** 查询部门下拉树结构 */
|
projectGetList().then((response) => {
|
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();
|
},
|
|
/** 搜索操作 */
|
handle() {
|
this.loading = true;
|
this.name = this.queryParam.pacName;
|
if (this.name) {
|
getPackageListName(this.name).then((response) => {
|
this.newpacName = response.data;
|
this.loading = false;
|
});
|
} else {
|
deptTreeSelect().then((response) => {
|
this.newpacName = response.rows;
|
this.loading = false;
|
});
|
}
|
},
|
|
// 点击多选框获取选中数据
|
handleSelectionChange1(selection, row) {
|
this.tableData = selection;
|
if (selection.length > 1) {
|
let del_row = selection.shift();
|
this.$refs.tb.toggleRowSelection(del_row, false); //设置这一行取消选中
|
}
|
this.single = selection.length !== 1;
|
this.multiple = !selection.length;
|
if (selection[0]) {
|
this.DataList = [];
|
this.treedataList = JSON.parse(JSON.stringify(this.dXData));
|
selection[0].tjProjectList.forEach((selectionitem) => {
|
this.treedataList.forEach((item) => {
|
if (selectionitem.proName == item.proName) {
|
item.disabled = true;
|
item.tjProjectList = [];
|
}
|
if (item.tjProjectList) {
|
item.tjProjectList.forEach((item1) => {
|
if (selectionitem.proName == item1.proName) {
|
item1.disabled = true;
|
item1.tjProjectList = [];
|
}
|
if (item1.tjProjectList) {
|
item1.tjProjectList.forEach((item2) => {
|
if (selectionitem.proName == item2.proName) {
|
item2.disabled = true;
|
item2.tjProjectList = [];
|
}
|
});
|
}
|
});
|
}
|
});
|
});
|
} else {
|
this.treedataList = JSON.parse(JSON.stringify(this.dXData));
|
return;
|
}
|
},
|
|
// 点击获取每个树节点
|
handleCurrentChecked(data, checked, checkedNodes) {
|
if (checked === true) {
|
this.DataList.push(data);
|
} else {
|
this.DataList.pop(data);
|
}
|
this.proIds = [];
|
if (this.DataList.length != 0) {
|
this.DataList.forEach((item) => {
|
this.proIds.push(item.proId);
|
});
|
} else {
|
this.proIds = [];
|
}
|
},
|
|
receipt() {
|
setTimeout(function () {
|
const style = "@media print { @page{margin:0 10mm,size:4mm 6mm;}};"; //打印时去掉眉页眉尾
|
printJS({
|
printable: "printBill", // 标签元素id
|
type: "html",
|
header: "",
|
targetStyles: ["*"],
|
scanStyles: false, //打印必须加上,不然页面上的css样式无效
|
style,
|
});
|
}, 100);
|
},
|
|
// 项目提交
|
submit() {
|
if (this.formIn.idCard) {
|
var cusId = this.formIn.idCard;
|
} else {
|
this.$message.warning("请先填写信息,再选体检内容");
|
}
|
|
let _this = this;
|
if (this.tableData.length != 0) {
|
this.tableData.forEach((item) => {
|
_this.pacId = item.pacId;
|
});
|
} else {
|
_this.pacId = "";
|
}
|
let data = {
|
cusId,
|
pacId: _this.pacId,
|
proIds: this.proIds,
|
};
|
getaddtTransition(data).then((response) => {
|
if (response.msg === "操作成功") {
|
let cusId = this.formIn.idCard;
|
getTransitionList(cusId).then((response) => {
|
this.tableData1 = response.data;
|
if (this.tableData1.length != 0) {
|
this.tableData1.forEach((item) => {
|
if (item.pacName === null) {
|
item.pacName = "单项";
|
}
|
this.pacName = item.pacName;
|
});
|
this.list1 = false;
|
} else {
|
this.list1 = true;
|
}
|
this.TotalPrice1 = 0;
|
response.data.forEach((item) => {
|
this.TotalPrice1 += item.nowPrice;
|
this.TotalPrice = this.TotalPrice1;
|
});
|
});
|
}
|
});
|
this.taocan = false;
|
},
|
|
formchang(val) {
|
let cusSex = val;
|
this.loading = true;
|
//全部套餐
|
deptTreeSelect(cusSex).then((response) => {
|
this.newpacName = response.rows;
|
this.loading = false;
|
});
|
},
|
|
// 最后提交按钮
|
submitPrice() {
|
let _this = this;
|
// if (_this.tableData1.length > 0) {
|
if (this.tableData[0]) {
|
var pacId = this.tableData[0].pacId;
|
}
|
// let copeWith = this.TotalPrice1;
|
// let paidIn = this.TotalPrice;
|
// let discount = this.discount;
|
// this.tjFlowingWater = { copeWith, paidIn, discount };
|
if (this.formIn.timeRegion === "8:00-9:00") {
|
this.formIn.timeRegion = 0;
|
}
|
if (this.formIn.timeRegion === "9:00-10:00") {
|
this.formIn.timeRegion = 1;
|
}
|
if (this.formIn.timeRegion === "10:00-11:00") {
|
this.formIn.timeRegion = 2;
|
}
|
if (this.formIn.timeRegion === "11:00-12:00") {
|
this.formIn.timeRegion = 3;
|
}
|
let data;
|
if (pacId) {
|
data = {
|
id: this.formIn.id,
|
isExpire: this.formIn.isExpire,
|
address: this.formIn.address,
|
company: this.formIn.company,
|
department: this.formIn.department,
|
discount: this.discount,
|
email: this.formIn.email,
|
idCard: this.formIn.idCard,
|
marriage: this.formIn.marriage,
|
name: this.formIn.name,
|
nation: this.formIn.nation,
|
pacId,
|
phoe: this.formIn.cusPhone,
|
reservationTime: this.formIn.reservationTime,
|
sex: this.formIn.sex,
|
timeRegion: this.formIn.timeRegion,
|
tjCategory: this.formIn.tjCategory,
|
// tjFlowingWater: this.tjFlowingWater,
|
tjType: this.formIn.tjType,
|
idType: this.formIn.idType,
|
age: this.formIn.age,
|
ageUnit: this.formIn.ageUnit,
|
career: this.formIn.career,
|
};
|
} else {
|
data = {
|
id: this.formIn.id,
|
isExpire: this.formIn.isExpire,
|
address: this.formIn.address,
|
company: this.formIn.company,
|
department: this.formIn.department,
|
discount: this.discount,
|
email: this.formIn.email,
|
idCard: this.formIn.idCard,
|
marriage: this.formIn.marriage,
|
name: this.formIn.name,
|
nation: this.formIn.nation,
|
pacId,
|
phoe: this.formIn.phoe,
|
reservationTime: this.formIn.reservationTime,
|
sex: this.formIn.sex,
|
timeRegion: this.formIn.timeRegion,
|
tjCategory: this.formIn.tjCategory,
|
// tjFlowingWater: this.tjFlowingWater,
|
tjType: this.formIn.tjType,
|
idType: this.formIn.idType,
|
age: this.formIn.age,
|
ageUnit: this.formIn.ageUnit,
|
career: this.formIn.career,
|
};
|
}
|
tjReappoint(data).then((res) => {
|
if (res.code === 200) {
|
this.$modal.msgSuccess("预约成功");
|
}
|
_this.drawer = false;
|
});
|
this.getList();
|
this.$tab.refreshPage();
|
// } else {
|
// this.$message.warning("请选择您要体检的内容");
|
// }
|
},
|
// 最后提交按钮
|
submitPrice1() {
|
let _this = this;
|
if (_this.tableData1.length > 0) {
|
if (this.tableData[0]) {
|
var pacId = this.tableData[0].pacId;
|
}
|
// let copeWith = this.TotalPrice1;
|
// let paidIn = this.TotalPrice;
|
// let discount = this.discount;
|
// this.tjFlowingWater = { copeWith, paidIn, discount };
|
if (this.formIn.timeRegion === "8:00-9:00") {
|
this.formIn.timeRegion = 0;
|
}
|
if (this.formIn.timeRegion === "9:00-10:00") {
|
this.formIn.timeRegion = 1;
|
}
|
if (this.formIn.timeRegion === "10:00-11:00") {
|
this.formIn.timeRegion = 2;
|
}
|
if (this.formIn.timeRegion === "11:00-12:00") {
|
this.formIn.timeRegion = 3;
|
}
|
let data;
|
if (pacId) {
|
data = {
|
id: this.formIn.id,
|
isExpire: this.formIn.isExpire,
|
address: this.formIn.address,
|
company: this.formIn.company,
|
department: this.formIn.department,
|
discount: this.discount,
|
email: this.formIn.email,
|
idCard: this.formIn.idCard,
|
marriage: this.formIn.marriage,
|
name: this.formIn.name,
|
nation: this.formIn.nation,
|
pacId,
|
phoe: this.formIn.cusPhone,
|
reservationTime: this.formIn.reservationTime,
|
sex: this.formIn.sex,
|
timeRegion: this.formIn.timeRegion,
|
tjCategory: this.formIn.tjCategory,
|
// tjFlowingWater: this.tjFlowingWater,
|
tjType: this.formIn.tjType,
|
idType: this.formIn.idType,
|
age: this.formIn.age,
|
ageUnit: this.formIn.ageUnit,
|
career: this.formIn.career,
|
};
|
} else {
|
data = {
|
id: this.formIn.id,
|
isExpire: this.formIn.isExpire,
|
address: this.formIn.address,
|
company: this.formIn.company,
|
department: this.formIn.department,
|
discount: this.discount,
|
email: this.formIn.email,
|
idCard: this.formIn.idCard,
|
marriage: this.formIn.marriage,
|
name: this.formIn.name,
|
nation: this.formIn.nation,
|
pacId,
|
phoe: this.formIn.phoe,
|
reservationTime: this.formIn.reservationTime,
|
sex: this.formIn.sex,
|
timeRegion: this.formIn.timeRegion,
|
tjCategory: this.formIn.tjCategory,
|
// tjFlowingWater: this.tjFlowingWater,
|
tjType: this.formIn.tjType,
|
idType: this.formIn.idType,
|
age: this.formIn.age,
|
ageUnit: this.formIn.ageUnit,
|
career: this.formIn.career,
|
};
|
}
|
tjReappoint(data).then((res) => {
|
if (res.code === 200) {
|
this.$modal.msgSuccess("登记成功");
|
}
|
_this.drawer1 = false;
|
});
|
this.getList();
|
this.$tab.refreshPage();
|
} else {
|
this.$message.warning("请选择您要体检的内容");
|
}
|
},
|
|
// 撤销预约·
|
handleDelete(row) {
|
let token = user.state.token;
|
const id = row.id || this.ids;
|
this.$modal
|
.confirm('是否确认撤销信息编号为"' + id + '"的数据项?')
|
.then(function () {
|
return gettjCancel(id);
|
})
|
.then(() => {
|
this.$modal.msgSuccess("撤销成功");
|
this.getList();
|
})
|
.catch(() => {});
|
},
|
|
//批量撤销
|
batch() {
|
let ids = this.ids;
|
tjCancelTj(ids).then((response) => {
|
if (response.code === 200) {
|
this.$modal.msgSuccess("撤销成功");
|
this.getList();
|
}
|
});
|
},
|
},
|
};
|
</script>
|
<style scoped>
|
.pag {
|
width: 100%;
|
display: flex;
|
justify-content: center;
|
}
|
|
.pag1 {
|
width: 30%;
|
}
|
|
.el-table .el-table__body tr:hover td {
|
background-color: #e5f3ff;
|
}
|
|
.el-table__header-wrapper .el-checkbox {
|
display: none;
|
}
|
|
.avatar-uploader .el-upload {
|
border: 1px dashed #d9d9d9;
|
border-radius: 6px;
|
cursor: pointer;
|
position: relative;
|
overflow: hidden;
|
}
|
|
.avatar-uploader .el-upload:hover {
|
border-color: #409eff;
|
}
|
|
.avatar-uploader-icon {
|
font-size: 28px;
|
color: #8c939d;
|
width: 148px;
|
height: 148px;
|
line-height: 148px;
|
text-align: center;
|
}
|
|
.avatar {
|
width: 178px;
|
height: 178px;
|
display: block;
|
}
|
|
.el-col-8 {
|
width: 330px;
|
}
|
|
.tab4 {
|
width: 100%;
|
display: flex;
|
}
|
|
.tab3 {
|
width: 100%;
|
display: flex;
|
}
|
|
.tab2 {
|
width: 600px;
|
border: 1px solid #d9d9d9;
|
height: 476px;
|
overflow-y: scroll;
|
padding-left: 10px;
|
}
|
|
/* .el-collapse,.el-collapse-item_wrap{
|
border:none;
|
} */
|
.el-table--fit {
|
border: 1px solid #d9d9d9;
|
}
|
|
.el-tooltip__popper {
|
font-size: 14px;
|
max-width: 50%;
|
}
|
|
.tab {
|
display: flex;
|
width: 100%;
|
}
|
|
.tab1 {
|
width: 1000px;
|
display: flex;
|
margin-top: 8px;
|
/* justify-content: space-evenly;
|
align-items: center; */
|
}
|
|
.main {
|
height: 700px;
|
overflow: hidden;
|
}
|
|
#printIframe::-webkit-scrollbar {
|
width: 6px;
|
}
|
|
/* 修改 滚动条的 下面 的 样式 */
|
#printIframe::-webkit-scrollbar-track {
|
background-color: white;
|
-webkit-border-radius: 2em;
|
-moz-border-radius: 2em;
|
border-radius: 2em;
|
}
|
|
/* 修改 滑块 */
|
#printIframe::-webkit-scrollbar-thumb {
|
background-color: #dcdfe6;
|
-webkit-border-radius: 2em;
|
-moz-border-radius: 2em;
|
border-radius: 2em;
|
}
|
|
.img_bg_camera {
|
margin-top: -120px;
|
width: 300px;
|
height: 300px;
|
}
|
|
.tj1 {
|
width: 230px;
|
display: flex;
|
flex-direction: column;
|
}
|
</style>
|