<template>
|
<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"
|
>
|
<el-form-item label="单位名称" prop="cnName">
|
<el-input v-model="form1.cnName" placeholder="请输入中文名称" />
|
</el-form-item>
|
<el-form-item label="联系人" prop="contactPerson">
|
<el-input v-model="form1.contactPerson" placeholder="请输入联系人" />
|
</el-form-item>
|
<el-form-item label="联系电话" prop="contactPhone">
|
<el-input v-model="form1.contactPhone" placeholder="请输入联系电话" />
|
</el-form-item>
|
<el-form-item label="税号" prop="taxNumber">
|
<el-input v-model="form1.taxNumber" placeholder="请输入税号" />
|
</el-form-item>
|
<el-form-item label="法人" prop="legalPerson">
|
<el-input v-model="form1.legalPerson" placeholder="请输入法人" />
|
</el-form-item>
|
<el-form-item label="注册地址" prop="registerAddress">
|
<el-input
|
v-model="form1.registerAddress"
|
placeholder="请输入注册地址"
|
/>
|
</el-form-item>
|
<el-form-item label="通讯地址" prop="mailingAddress">
|
<el-input
|
v-model="form1.mailingAddress"
|
placeholder="请输入通讯地址"
|
/>
|
</el-form-item>
|
<el-form-item label="开户银行" prop="bankAccount">
|
<el-input v-model="form1.bankAccount" placeholder="请输入开户银行" />
|
</el-form-item>
|
<el-form-item label="银行账户" prop="countNum">
|
<el-input v-model="form1.countNum" placeholder="请输入银行账户" />
|
</el-form-item>
|
<el-form-item label="邮箱" prop="email">
|
<el-input v-model="form1.email" placeholder="请输入邮箱" />
|
</el-form-item>
|
<el-form-item label="负责人" prop="principal">
|
<el-input v-model="form1.principal" placeholder="请输入负责人" />
|
</el-form-item>
|
<el-form-item label="网址" prop="url">
|
<el-input v-model="form1.url" placeholder="请输入网址" />
|
</el-form-item>
|
<el-form-item label="传真" prop="faxNumber">
|
<el-input v-model="form1.faxNumber" placeholder="请输入传真" />
|
</el-form-item>
|
<el-form-item label="行政区划名称" prop="areaName">
|
<el-input v-model="form1.areaName" placeholder="请输入行政区划名称" />
|
</el-form-item>
|
<el-form-item label="排序" prop="orderNum">
|
<el-input v-model="form1.orderNum" placeholder="请输入排序" />
|
</el-form-item>
|
<el-form-item label="有效时间" prop="validTime">
|
<el-date-picker
|
clearable
|
v-model="form1.validTime"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="请选择有效时间"
|
>
|
</el-date-picker> </el-form-item
|
><br />
|
<el-form-item label="备注" prop="remark">
|
<el-input
|
v-model="form1.remark"
|
type="textarea"
|
placeholder="请输入内容"
|
:rows="2"
|
label-width="400px"
|
style="width: 830px"
|
resize="none"
|
></el-input>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer2">
|
<el-button type="primary" @click="submitFormS">确 定</el-button>
|
<el-button @click="cancel1">取 消</el-button>
|
</div>
|
</el-dialog>
|
<el-row :gutter="20">
|
<el-col :span="17">
|
<div class="grid-content bg-purple">
|
<el-form
|
:inline="true"
|
ref="form"
|
:model="form"
|
:rules="rules"
|
:label-position="labelPosition"
|
label-width="106px"
|
v-show="top"
|
>
|
<el-form-item label="匿名" prop="isNow">
|
<el-select
|
v-model="isNow"
|
placeholder="是否匿名"
|
@change="freezing(isNow)"
|
>
|
<el-option
|
v-for="dict in dictType"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item
|
label="姓名"
|
prop="cusName"
|
:rules="[
|
{
|
required: true,
|
validator: (rule, value, callback) => {
|
if (!form.cusName) {
|
callback('');
|
} else if (form.cusName) {
|
callback();
|
}
|
},
|
trigger: 'blur',
|
},
|
]"
|
>
|
<span
|
slot="label"
|
style="display: inline-block; border-bottom: 2px solid blue"
|
@click="openname"
|
>
|
姓名
|
</span>
|
<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">
|
<el-select
|
:disabled="isDisabled"
|
v-model="form.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="cusNational">
|
<el-select
|
filterable
|
:disabled="isDisabled"
|
v-model="form.cusNational"
|
placeholder="请选择民族"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_national"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item
|
label="性别"
|
prop="cusSex"
|
:rules="[
|
{
|
required: true,
|
validator: (rule, value, callback) => {
|
if (!form.cusSex && showHidden.has_sex === 'Y') {
|
callback('');
|
} else if (showHidden.has_sex === 'N') {
|
callback();
|
} else if (form.cusSex && showHidden.has_sex === 'Y') {
|
callback();
|
}
|
},
|
trigger: 'blur',
|
},
|
]"
|
>
|
<el-select
|
:disabled="isDisabled"
|
v-model="form.cusSex"
|
placeholder="性别"
|
>
|
<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="cusIdcard"
|
:rules="[
|
{
|
required: true,
|
validator: (rule, value, callback) => {
|
if (!form.cusIdcard && showHidden.has_idcard === 'Y') {
|
callback('');
|
} else if (showHidden.has_idcard === 'N') {
|
callback();
|
} else if (
|
form.cusIdcard &&
|
showHidden.has_idcard === 'Y'
|
) {
|
callback();
|
}
|
},
|
trigger: 'blur',
|
},
|
]"
|
>
|
<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="handleIdCardInput"
|
/>
|
<!-- <i style="
|
font-size: 1rem;
|
position: absolute;
|
right: -20px;
|
top: 10px;
|
cursor: pointer;
|
" class="el-icon-search" @click="handleQuery"></i> -->
|
</el-form-item>
|
|
<el-form-item label="婚姻" prop="cusMarryStatus">
|
<el-select
|
:disabled="isDisabled"
|
v-model="form.cusMarryStatus"
|
placeholder="婚姻状况"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_user_marry"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item
|
label="电话"
|
prop="cusPhone"
|
:rules="[
|
{
|
required: true,
|
validator: (rule, value, callback) => {
|
if (!form.cusPhone && showHidden.is_phone === 'Y') {
|
callback('');
|
} else if (showHidden.is_phone === 'N') {
|
callback();
|
} else if (form.cusPhone && showHidden.is_phone === 'Y') {
|
callback();
|
}
|
},
|
trigger: 'blur',
|
},
|
]"
|
>
|
<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">
|
<el-date-picker
|
:disabled="isDisabled"
|
clearable
|
v-model="form.cusBrithday"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="请选择出生日期"
|
style="width: 93%"
|
>
|
</el-date-picker>
|
</el-form-item>
|
|
<el-form-item label="职业" prop="career">
|
<el-select
|
filterable
|
:disabled="isDisabled"
|
v-model="form.career"
|
placeholder="请输入职业"
|
>
|
<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="cusEmail">
|
<el-input
|
v-model="form.cusEmail"
|
placeholder="请输入邮箱"
|
:disabled="isDisabled"
|
/>
|
</el-form-item>
|
|
<el-form-item label="年龄" prop="age">
|
<el-input
|
v-model="form.age"
|
:disabled="isDisabled"
|
style="width: 30%"
|
/>
|
<el-select
|
:disabled="isDisabled"
|
v-model="form.ageUnit"
|
style="width: 20%"
|
>
|
<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>
|
<el-form
|
:inline="true"
|
ref="form"
|
:model="form"
|
:rules="rules"
|
:label-position="labelPosition"
|
label-width="106px"
|
v-show="top"
|
>
|
<el-form-item label="介绍人" prop="cusIntroduce">
|
<el-input
|
:disabled="isDisabled"
|
v-model="form.cusIntroduce"
|
placeholder="请输入介绍人"
|
/>
|
</el-form-item>
|
|
<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"
|
v-show="top"
|
>
|
<el-row :gutter="21">
|
<el-col :span="19">
|
<el-form-item label="户口地址" prop="addr">
|
<el-input
|
v-model="form.addr"
|
placeholder="请输入户口地址"
|
:disabled="isDisabled"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
|
<el-form
|
ref="form"
|
:model="form"
|
:rules="rules"
|
:label-position="labelPosition"
|
label-width="106px"
|
v-show="top"
|
>
|
<el-row :gutter="21">
|
<el-col :span="19">
|
<el-form-item label="现住地址" prop="cusAddr">
|
<el-input
|
v-model="form.cusAddr"
|
placeholder="请输入现居住地址"
|
:disabled="isDisabled"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
|
<el-row v-show="top">
|
<el-col :span="19">
|
<div style="float: right; margin-bottom: 10px">
|
<el-button
|
v-show="lishi"
|
type="primary"
|
@click="cope"
|
size="mini"
|
>一键复制</el-button
|
>
|
<el-button
|
type="primary"
|
@click="inputChanges"
|
v-show="lishi"
|
size="mini"
|
:disabled="confirm"
|
>历史体检记录</el-button
|
>
|
<el-button
|
:disabled="isDisabled"
|
type="primary"
|
size="mini"
|
@click="submitForm"
|
>登记</el-button
|
>
|
<el-button
|
icon="el-icon-refresh"
|
size="mini"
|
@click="resetQuery"
|
@queryTable="getList"
|
>重置</el-button
|
>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
</el-col>
|
<el-col :span="7" v-show="top">
|
<div class="content" v-show="showHidden.mall_hasPhoto == 'Y'">
|
<div
|
v-show="hide"
|
style="border: 1px dashed #dcdfe6; width: 180px; height: 180px"
|
>
|
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
</div>
|
<div v-if="imgSrc" class="img_bg_camera">
|
<img
|
style="
|
width: 200px;
|
height: 200px;
|
margin-left: -20px;
|
margin-top: 90px;
|
padding-top: 1px;
|
"
|
:src="imgSrc"
|
alt=""
|
class="tx_img"
|
/>
|
</div>
|
<video
|
v-show="hides"
|
id="videoCamera"
|
:width="videoWidth"
|
:height="videoHeight"
|
autoplay
|
style="margin-top: 1px"
|
></video>
|
<canvas
|
style="display: none"
|
id="canvasCamera"
|
:width="videoWidth"
|
:height="videoHeight"
|
></canvas>
|
<div class="camera_outer" style="margin-top: 10px">
|
<el-button type="primary" plain size="mini" @click="getCompetence()"
|
>打开摄像头</el-button
|
>
|
<el-button type="primary" plain size="mini" @click="setImage()"
|
>拍照</el-button
|
>
|
<br />
|
</div>
|
</div>
|
</el-col>
|
</el-row>
|
|
<el-dialog
|
title="选择套餐"
|
:visible.sync="taocan"
|
width="70%"
|
height="700px"
|
:close-on-click-modal="false"
|
>
|
<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-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: 98%"
|
>
|
<el-table
|
v-loading="loading"
|
element-loading-text="正在加载中..."
|
element-loading-spinner="el-icon-loading"
|
border
|
:data="newpacName"
|
@selection-change="handleSelectionChange"
|
height="450px"
|
ref="tb"
|
>
|
<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>
|
</el-tab-pane>
|
<el-tab-pane label="组合" name="third">
|
<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="filterage">
|
</el-input>
|
<div class="tab3">
|
<el-tree
|
class="filter-tree"
|
v-loading="loading"
|
:data="packageList"
|
:props="defaultProp"
|
show-checkbox
|
node-key="id"
|
@check="handlepackage"
|
:default-checked-keys="checkedkeys"
|
:filter-node-method="filterpackage"
|
ref="treas"
|
:render-content="renderContents"
|
>
|
</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="packagedataList"
|
node-key="proId"
|
:props="defaultpackProps"
|
:filter-node-method="filterpackage"
|
@check-change="handlePackageChecked"
|
:default-checked-keys="checkedListkey1"
|
: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="DataLists"
|
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="handleDel(scope.row)"
|
title="删除"
|
></el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<h3 style="font-weight: 600">合计:{{ marryalls }}元</h3>
|
</div>
|
</el-col>
|
</el-row>
|
</el-tab-pane>
|
<el-tab-pane label="单项" name="second">
|
<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>
|
<el-button type="primary" @click="submit">确 定</el-button>
|
</span>
|
</el-dialog>
|
<!-- -->
|
<el-row v-if="tcShow">
|
<el-col :span="15">
|
<div class="grid-content bg-purple">
|
<template>
|
<el-form
|
:model="form"
|
:inline="true"
|
label-width="75px"
|
style="margin-left: 20px; width: 900px"
|
>
|
<el-form-item label="姓名" prop="cusName">
|
<span slot="label"> 姓名 </span>
|
<el-input
|
v-model="form.cusName"
|
placeholder="请输入姓名"
|
:disabled="isDisabled"
|
/>
|
</el-form-item>
|
<el-form-item label="性别" prop="cusSex">
|
<el-select
|
:disabled="isDisabled"
|
v-model="form.cusSex"
|
placeholder="性别"
|
style="width: 150px"
|
>
|
<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="cusIdcard">
|
<span slot="label"> 证件号码 </span>
|
<el-input
|
:disabled="isDisabled"
|
v-model="form.cusIdcard"
|
placeholder="请输入身份证号"
|
@input="inputChange"
|
/>
|
</el-form-item>
|
<el-form-item label="单位名称" prop="firmName">
|
<el-select
|
v-model="form.firmName"
|
remote
|
default-first-option
|
allow-create
|
filterable
|
style="width: 200px"
|
placeholder="请选择单位名称"
|
clearable
|
@change="idFn1"
|
@clear="clear"
|
>
|
<el-option
|
v-for="dict in CompanyList"
|
:key="dict.cnName"
|
:label="dict.cnName"
|
:value="dict.cnName"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="单位部门" prop="firmDeptName">
|
<el-input
|
v-model="form.firmDeptName"
|
style="width: 150px"
|
placeholder="请输入单位部门"
|
@input="inputChange"
|
/>
|
</el-form-item>
|
<el-form-item label="体检类型">
|
<el-select v-model="form.tjType" placeholder="请选择体检类型">
|
<el-option
|
v-for="dict in dict.type.dict_team"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="体检类别">
|
<el-select
|
style="width: 200px"
|
v-model="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-input v-model="form.category" placeholder="请输入体检类别" /> -->
|
</el-form-item>
|
|
<el-form-item label="应收金额">
|
<el-input
|
placeholder="应收金额"
|
v-model="TotalPrice1"
|
disabled
|
style="width: 150px"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="折扣">
|
<!-- {{ discount }} -->
|
<el-input-number
|
ref="inputNumber"
|
style="width: 150px"
|
v-model="discount"
|
:precision="1"
|
:step="0.1"
|
:max="10"
|
:min="0"
|
@change="debounceNumberChange"
|
:disabled="isfalse"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="实收金额">
|
<el-input
|
placeholder="实收金额"
|
v-model="TotalPrice"
|
style="width: 206px"
|
@input="changeXianjia"
|
@blur="numberChangeXianPrice(discount, discount)"
|
/>
|
</el-form-item>
|
<br />
|
|
<el-form-item style="margin-left: 149px">
|
<el-button
|
type="primary"
|
@click="Package"
|
size="mini"
|
style="margin-right: 20px"
|
>选择套餐</el-button
|
>
|
<el-button
|
type="primary"
|
@click="resetpackage"
|
size="mini"
|
style="margin-right: 20px"
|
>重置套餐</el-button
|
>
|
<el-button
|
type="primary"
|
@click="submitPrice"
|
:loading="loadingSubmit"
|
:disabled="loadingSubmit"
|
v-if="showHidden.has_charge == 'N'"
|
size="mini"
|
>签到登记</el-button
|
>
|
<el-button
|
type="primary"
|
@click="submitCheckinfee"
|
:disabled="confirm"
|
v-if="showHidden.has_charge == 'Y'"
|
size="mini"
|
>登记收费</el-button
|
>
|
</el-form-item>
|
<!-- </el-form> -->
|
<!-- </div> -->
|
</el-form>
|
</template>
|
|
<el-dialog
|
title="邮寄"
|
:visible.sync="malldisble"
|
:close-on-click-modal="false"
|
>
|
<el-form
|
:model="addAddress"
|
:rules="rules"
|
label-width="78px"
|
style="margin-left: 7px"
|
>
|
<el-form-item label="姓名">
|
<el-input
|
placeholder="姓名"
|
v-model="addAddress.getUser"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="电话">
|
<el-input
|
placeholder="电话"
|
v-model="addAddress.phone"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="地址">
|
<el-input
|
placeholder="地址"
|
v-model="addAddress.address"
|
></el-input>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button type="primary" @click="cancell">确 定</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
</div>
|
</el-dialog>
|
|
<div
|
style="
|
display: flex;
|
align-items: center;
|
justify-content: flex-start;
|
width: 100%;
|
"
|
>
|
<div
|
style="
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
margin-left: 46px;
|
font-size: 16px;
|
margin-right: 20px;
|
"
|
>
|
<span v-if="this.tableData1[0]">{{
|
this.tableData1[0].pacName || ""
|
}}</span>
|
已选项目条数:<span
|
style="font-weight: 700; color: red; margin-right: 5px"
|
>{{ this.tableData1.length || 0 }}</span
|
>条
|
</div>
|
已选项目列表
|
</div>
|
<div
|
style="
|
padding: 0px 6px;
|
border: 1px solid #e6ebf5;
|
max-height: 650%;
|
overflow: auto;
|
width: 916px;
|
margin-left: 35px;
|
"
|
>
|
<el-table :data="tableData1" border style="width: 100%">
|
<el-table-column prop="proName" label="项目" width="180">
|
</el-table-column>
|
<el-table-column prop="proType" label="性别" width="50">
|
<template slot-scope="scope">
|
<template v-if="isAll(scope.row.proType)"> 全部 </template>
|
<template v-else>
|
<dict-tag
|
:options="dict.type.sys_user_sex"
|
:value="scope.row.proType"
|
/>
|
</template>
|
</template>
|
</el-table-column>
|
|
<el-table-column prop="ordPrice" label="应收金额">
|
</el-table-column>
|
<el-table-column label="折扣">
|
<template slot-scope="scope">
|
<!-- 只输入纯数字折扣 -->
|
<el-input-number
|
v-model.number="scope.row.discount"
|
@input="validateDiscount(scope.row)"
|
@change="handleManualChange(scope.row)"
|
placeholder="输入折扣"
|
size="small"
|
type="number"
|
:precision="1"
|
:step="0.1"
|
:max="10"
|
:min="0"
|
>
|
</el-input-number>
|
</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">
|
<dict-tag
|
:options="dict.type.sys_yes_no"
|
:value="scope.row.proCheckMethod"
|
/>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column prop="proCheckMethod" label="公费">
|
<template #default="scope">
|
<el-checkbox v-model="scope.row.free" :disabled="true">
|
{{ scope.row.free ? "免费" : "收费" }}
|
</el-checkbox>
|
</template>
|
</el-table-column> -->
|
<el-table-column label="操作" align="center" width="80px">
|
<template slot-scope="scope">
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-delete"
|
@click="handleDelete1(scope.row)"
|
title="删除"
|
>
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</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>
|
|
<el-dialog title="收费" :visible.sync="charge" width="59%" height="700px">
|
<div>
|
<el-table
|
id="sig"
|
v-loading="loading"
|
:data="feeitems"
|
@selection-change="handleSelect"
|
tooltip-effect="dark"
|
ref="multipleTable"
|
border
|
>
|
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column
|
label="姓名"
|
align="center"
|
prop="tjName"
|
width="100px"
|
/>
|
<el-table-column label="性别" align="center" prop="sex" width="90px">
|
<template slot-scope="scope">
|
<dict-tag
|
:options="dict.type.sys_user_sex"
|
:value="scope.row.sex"
|
/>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="身份证"
|
align="center"
|
prop="idCard"
|
width="150px"
|
:show-overflow-tooltip="true"
|
></el-table-column>
|
<el-table-column
|
label="手机号"
|
align="center"
|
prop="tjPhone"
|
width="120px"
|
:show-overflow-tooltip="true"
|
></el-table-column>
|
<el-table-column
|
label="体检号"
|
align="center"
|
prop="tjNumber"
|
width="160px"
|
/>
|
<el-table-column
|
label="登记时间"
|
align="center"
|
prop="tjFlowingWater.createTime"
|
:show-overflow-tooltip="true"
|
></el-table-column>
|
<el-table-column
|
label="单位名称"
|
align="center"
|
prop="tjComp"
|
></el-table-column>
|
<el-table-column
|
label="体检类型"
|
align="center"
|
prop="tjType"
|
width="80px"
|
>
|
<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="tjFlowingWater.waterId"
|
width="200px"
|
/>
|
<el-table-column
|
label="收费员"
|
align="center"
|
prop="tjFlowingWater.updateBy"
|
width="100px"
|
/>
|
</el-table>
|
|
<el-row :gutter="10" class="mb8">
|
<el-col :span="20">
|
<el-form
|
:inline="true"
|
:model="formInline"
|
class="demo-form-inline"
|
style="margin: 12px 6px"
|
>
|
<el-form-item label="应收金额">
|
<el-input
|
style="width: 86px"
|
:value="formInline.price + '.00'"
|
placeholder="金额"
|
:disabled="true"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="优惠">
|
<el-input-number
|
style="width: 140px"
|
v-model="discount"
|
:precision="1"
|
:step="0.1"
|
:max="10"
|
:min="0"
|
@change="debounceNumberChange"
|
:disabled="isfalse"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="实收金额">
|
<el-input
|
v-model="formInline.paidIn"
|
placeholder="实付"
|
style="width: 94px"
|
>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="付款类型" prop="payType">
|
<el-select
|
style="width: 120px"
|
v-model="formInline.payType"
|
placeholder="请选择付款类型"
|
>
|
<el-option
|
v-for="dict in dict.type.dict_pay_type"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
style="margin-left: 15px"
|
type="primary"
|
size="mini"
|
@click="SubmitEvent"
|
>收费</el-button
|
>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
|
<el-table v-loading="loading" :data="Chargesubitem" border height="240">
|
<el-table-column type="index" width="50"> </el-table-column>
|
<el-table-column label="项目名称" align="center" prop="proName" />
|
<el-table-column label="应收金额" align="center" prop="proOrdPrice" />
|
<el-table-column label="实收金额" align="center" prop="proPrice" />
|
</el-table>
|
</div>
|
</el-dialog>
|
<el-dialog
|
title="提示"
|
:visible.sync="cardreader"
|
width="30%"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
>
|
<template>
|
<el-radio-group v-model="cardreaderradio" @input="changeradio">
|
<el-radio :label="3">身份证</el-radio>
|
<el-radio :label="6">健康码</el-radio>
|
</el-radio-group>
|
<div style="margin-top: 10px" v-show="cardreaderradio == 6">
|
<el-input
|
v-model="inputSSS"
|
ref="tableHeadFilterInp"
|
placeholder="请输入内容"
|
></el-input>
|
</div>
|
</template>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="cardreader = false">取 消</el-button>
|
<el-button type="primary" @click="cardreadercopes">确 定</el-button>
|
</span>
|
</el-dialog>
|
<div style="position: absolute; bottom: 100px; width: 360px; display: none">
|
<div
|
id="printBill"
|
style="width: 280px; font-size: 1px"
|
ref="printContent"
|
>
|
<div style="font-size: 1px">
|
<div style="text-align: center">
|
<h3>{{ hospName }}小票</h3>
|
</div>
|
|
<div style="margin-top: 4px">
|
<div>姓名:{{ formIn.name }}</div>
|
<div>电话:{{ formIn.phone }}</div>
|
<div>体检项目:{{ formIn.tjPro }}</div>
|
<div>实收金额:{{ formInline.paidIn }}元</div>
|
<div>收费时间:{{ currentDate + " " + currentTime }}</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- <el-dialog
|
title="拍照"
|
:visible.sync="beat"
|
width="40%"
|
:before-close="handleClose"
|
> -->
|
|
<!-- <span slot="footer" class="dialog-footer">
|
<el-button @click="beat = false">取 消</el-button>
|
<el-button type="primary" @click="beat = false">确 定</el-button>
|
</span> -->
|
<!-- </el-dialog> -->
|
<historyTj :cusIdCard="form.cusIdcard" ref="historyTj"></historyTj>
|
<el-dialog title="提示" :visible.sync="dialogVisiblese" width="30%">
|
<span>是否复制最近一次的体检项目?</span>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisiblese = false">取 消</el-button>
|
<el-button type="primary" @click="copes">确 定</el-button>
|
</span>
|
</el-dialog>
|
<Packages ref="aaa" @add="handleChanges" />
|
<selectName ref="bbb" @add="handleChangesName" />
|
</div>
|
</template>
|
|
<script>
|
import Big from "big.js";
|
import selectName from "@/components/selectName";
|
import { dataURLtoFile, random } from "./file";
|
import { getInfo } from "@/api/login";
|
import {
|
addCustomer,
|
getwater,
|
getfindTj,
|
getByTjNum,
|
} from "@/api/hosp/customer";
|
import { getPrintSetUp } from "@/api/system/examcharge";
|
import cnchar from "cnchar";
|
import {
|
tuantiSelect,
|
deptTreeSelect,
|
projectGetList,
|
getOrder,
|
getProParentIdDxList,
|
getProSonDxList,
|
getCusIdcard,
|
getPackageListName,
|
getaddtTransition,
|
tuantiqueren,
|
getTransitionList1,
|
delTbBycusCardIdAndProId,
|
getLoadFile,
|
getIsRequired,
|
getconfigKey,
|
getHistryTjOrderProByCusIdCard,
|
gaibianzhekou,
|
} from "@/api/system/tijian";
|
import { addComp } from "@/api/system/comp";
|
import { getCompany, queryCompany } from "@/api/team/tuanti";
|
import Packages from "@/components/Packages";
|
import { MessageBox } from "element-ui";
|
import VTreeTransfer from "./TreeTransfer.vue";
|
import { getZhList, getlistByZhId } from "@/api/system/package";
|
import historyTj from "@/components/historyTj/index";
|
export default {
|
dicts: [
|
"dict_tjtype",
|
"report_get_type",
|
"dict_user_national",
|
"dict_user_marry",
|
"sys_yes_no",
|
"sys_user_sex",
|
"dict_pay_type",
|
"dict_team",
|
"dict_job",
|
"dict_user_cardtype",
|
"dict_ageunit",
|
"gz",
|
],
|
name: "Tijian",
|
components: {
|
VTreeTransfer,
|
historyTj,
|
Packages,
|
selectName,
|
},
|
data() {
|
return {
|
isSubmitting: false,
|
open1: false,
|
filterage: "",
|
checkedkeys: [],
|
DataLists: [],
|
marryalls: 0,
|
packagedataList: [],
|
packageList: [],
|
zhxqList: [],
|
zhList: [],
|
pname: "",
|
filterText: "",
|
proIdList: [],
|
tableDatas: [],
|
dialogVisiblese: false,
|
cardreaderradio: 3,
|
lishi: false,
|
table: false,
|
HistoryList: {},
|
index: [],
|
names: "",
|
inputSSS: "",
|
dictType: [
|
{
|
value: 0,
|
label: "是",
|
},
|
{
|
value: 1,
|
label: "否",
|
},
|
],
|
isNow: 1,
|
marryall: 0,
|
treeId: [],
|
treeList: [],
|
defaultKeys: [],
|
adviceList: [],
|
feeitems: [],
|
refundPros: [],
|
Chargesubitem: [],
|
standard: {},
|
formInline: {
|
price: "0",
|
payType: "0",
|
paidIn: "0.00",
|
},
|
getType: "",
|
hospName: "",
|
currentDate: "",
|
currentTime: "",
|
tjCategory: "12",
|
formIn: {
|
tjPro: "体检费",
|
},
|
selectionList: [],
|
OrderId: "",
|
customer: {},
|
// index:['0'],
|
taocan: false,
|
top: true,
|
value: "2",
|
srcUrl: "",
|
hides: false,
|
hide: true,
|
beat: false,
|
dialogVisibles: false,
|
loadingSubmit: false,
|
charge: false,
|
src: "",
|
url: "",
|
datekey: Date.now(),
|
dialogVisible: false,
|
/** 照相机弹窗模块-start */
|
videoWidth: 200,
|
videoHeight: 200,
|
// canvasWidth:300,
|
// canvasHeight:300,
|
imgSrc: "",
|
thisCancas: null,
|
thisContext: null,
|
thisVideo: null,
|
list2: false,
|
list3: false,
|
list1: true,
|
list: [],
|
activeName: "1",
|
// 遮罩层
|
loading: false,
|
labelPosition: "right",
|
imageUrl: "",
|
isDisabled: false,
|
size: "",
|
tcShow: false,
|
// 套餐提交按钮
|
confirm: false,
|
TotalPrice: 0,
|
TotalPrice1: 0,
|
discount: 10,
|
newpacName: [],
|
// 所有体检项目·
|
allpackageList: [],
|
tjProjectList: [],
|
customerList: [],
|
// 表格
|
tableData: [],
|
tableData1: [],
|
tableDataList: [],
|
file: [],
|
activeName: "1",
|
DataList: [],
|
fData: [],
|
addAddress: {},
|
tjOrderList: [], //单个项目集合
|
tjFlowingWater: {},
|
// 搜索套餐名字
|
name: "",
|
isfalse: false,
|
malldisble: false,
|
responseList: {},
|
showHidden: {},
|
tjNumbers: "",
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
cardreader: false,
|
// 非多个禁用
|
multiple: true,
|
nodeobj: {},
|
// 是否显示弹出层
|
Seachopen: false,
|
pacId: "",
|
// 结果
|
result: "",
|
proIds: [],
|
// 显示搜索条件
|
showSearch: true,
|
activeNames: "first",
|
// 树状形状
|
Treedata: [],
|
TreedataList: [],
|
TreedataLists: [],
|
treedataList: [],
|
checkedkey: [],
|
checkedListkey: [],
|
checkedListkey1: [],
|
defaultProps: {
|
children: [],
|
label: "proName",
|
},
|
defaultProp: {
|
children: [],
|
label: "zhmc",
|
},
|
defaultpackProps: {
|
children: [],
|
label: "proName",
|
},
|
formPacId: "",
|
dXData: [],
|
filecontent: "",
|
// 查询参数
|
queryParam: {
|
pageNum: 1,
|
pageSize: 10,
|
pacName: null,
|
pacRemark: null,
|
},
|
// valueUrl: "ws://127.0.0.1:18890",
|
// valueUrl: "ws://192.168.1.3:6789/websocket",
|
valueUrl: "ws://127.0.0.1:6789/websocket",
|
valueUrls: "ws://127.0.0.1:6789/websocket",
|
// valueUrls: "ws://"+getIp() +":6789/websocket",
|
webSocket: null,
|
// 身份证需要
|
// socket: null,
|
// value: 1,
|
// sendFlag: 0,
|
// sector: 0,
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
cusName: null,
|
cusSex: null,
|
cusBrithday: null,
|
cusAddr: null,
|
addr: null,
|
cusPhone: null,
|
cusPostcode: null,
|
cusEmail: null,
|
indexCard: null,
|
cusNational: null,
|
cusMarryStatus: null,
|
cusIdcard: null,
|
cusIntroduce: null,
|
cusNumber: null,
|
cusIsvip: null,
|
},
|
// 添加
|
lastXianPrice: 0,
|
// 表单参数
|
// 表单参数
|
obj: {},
|
CompanyList: [],
|
form: {
|
cusIdcard: "",
|
tjType: "",
|
cusSex: 1,
|
cusNational: "1",
|
cusMarryStatus: "5",
|
idType: "1",
|
ageUnit: "0",
|
firmId: "",
|
firmDeptName: "",
|
},
|
form1: {
|
cnName: "",
|
contactPerson: "",
|
contactPhone: "",
|
taxNumber: "",
|
legalPerson: "",
|
registerAddress: "",
|
mailingAddress: "",
|
bankAccount: "",
|
mailingAddress: "",
|
countNum: "",
|
bankAccount: "",
|
email: "",
|
principal: "",
|
url: "",
|
faxNumber: "",
|
areaName: "",
|
orderNum: "",
|
remark: "",
|
validTime: "",
|
},
|
title: "",
|
// 表单校验
|
rules: {
|
cusName: [{ required: true, message: "", trigger: "blur" }],
|
cusSex: [{ required: true, message: "", trigger: "change" }],
|
address: [{ required: true, message: "", trigger: "blur" }],
|
phone: [{ required: true, message: "", trigger: "blur" }],
|
cusPhone: [{ required: true, message: "", trigger: "change" }],
|
cusBrithday: [{ required: true, message: "", trigger: "change" }],
|
// cusNational: [
|
// { required: true, message: "民族不能为空", trigger: "change" },
|
// ],
|
cusIdcard: [{ required: true, message: "", trigger: "change" }],
|
},
|
rules1: {
|
cnName: [{ required: true, trigger: "blur" }],
|
contactPerson: [{ required: true, trigger: "blur" }],
|
contactPhone: [
|
{
|
required: true,
|
message: "",
|
trigger: "blur",
|
},
|
{
|
pattern: /^1[3-9]\d{9}$/,
|
trigger: "blur",
|
},
|
],
|
},
|
};
|
},
|
watch: {
|
filterText(val) {
|
this.$refs.tree.filter(val);
|
},
|
filterage(val) {
|
this.$refs.treas.filter(val);
|
},
|
},
|
created() {
|
this.getCompanyList();
|
|
this.getCurrentDateTime();
|
this.startTimer();
|
this.getList1();
|
|
// this.getData();
|
},
|
mounted() {
|
this.TreedataList = [];
|
this.DataList = [];
|
this.marryall = 0;
|
},
|
methods: {
|
handleIdCardInput(value) {
|
this.form.cusIdcard = value.replace(/\s/g, "");
|
this.inputChange(); // 保留原有的身份证输入处理逻辑
|
},
|
debounceNumberChange(currentValue, oldValue) {
|
clearTimeout(this.debounceTimer);
|
this.debounceTimer = setTimeout(() => {
|
this.numberChange(currentValue, oldValue);
|
}, 300);
|
},
|
changeXianjia() {
|
// 原始折扣率计算
|
if (this.TotalPrice1 !== 0) {
|
this.discount =
|
(Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10;
|
}
|
},
|
clear() {
|
this.form.firmId = "";
|
},
|
/** 删除按钮操作 */
|
handleDelete1(row) {
|
let data = {
|
cusCardId: row.cusId,
|
proId: row.parentProId,
|
};
|
this.$modal
|
.confirm("是否确认删除?")
|
.then(() => {
|
return delTbBycusCardIdAndProId(data);
|
})
|
.then(() => {
|
this.TotalPrice1 = 0;
|
getTransitionList1(row.cusId).then((response) => {
|
this.tableData1 = response.data;
|
|
this.tableData1.forEach((item) => {
|
this.TotalPrice1 += item.ordPrice;
|
this.TotalPrice += item.nowPrice;
|
});
|
this.TotalPrice = this.tableData1.reduce((sum, item) => {
|
return sum.plus(new Big(item.nowPrice || "0"));
|
}, new Big(0));
|
this.discount =
|
(Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) *
|
10;
|
});
|
this.$modal.msgSuccess("删除成功");
|
})
|
.catch(() => {});
|
},
|
handleManualChange(row) {
|
this.updateProPrice(row);
|
},
|
validateDiscount(row) {
|
if (
|
this.TotalPrice !== undefined &&
|
!isNaN(this.TotalPrice) &&
|
this.TotalPrice !== this.lastXianPrice
|
) {
|
this.updateProPrice1(row);
|
this.lastXianPrice = this.TotalPrice;
|
}
|
},
|
|
isAll(value) {
|
return value === "" || value === null;
|
},
|
updateProPrice(row) {
|
const ordPrice = new Big(row.ordPrice);
|
|
const discount = new Big(row.discount);
|
const result = ordPrice.times(discount.div(10)); // ordPrice * (discount / 10)
|
row.nowPrice = result.toNumber();
|
this.TotalPrice = this.tableData1.reduce((sum, item) => {
|
return sum.plus(new Big(item.nowPrice || "0"));
|
}, new Big(0));
|
|
this.discount =
|
(Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10;
|
},
|
updateProPrice1(row) {
|
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"));
|
}, new Big(0));
|
const totalYsPriceNum = totalYsPrice.toNumber();
|
if (this.TotalPrice !== undefined && !isNaN(this.TotalPrice)) {
|
const xianPrice = new Big(this.TotalPrice);
|
const diff = xianPrice.minus(totalYsPriceNum);
|
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
|
);
|
}
|
}
|
|
// Update youhui calculation
|
if (this.TotalPrice1 !== 0 && this.TotalPrice !== 0) {
|
this.discount =
|
(Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10;
|
} else {
|
this.discount = 0;
|
}
|
},
|
openname() {
|
this.$refs.bbb.open = true;
|
this.$refs.bbb.title = "搜索姓名";
|
this.$refs.bbb.getList();
|
},
|
getCompanyList() {
|
this.loading = true;
|
getconfigKey("team_reservation_default_day").then((res) => {
|
this.queryParams.yxts = res.msg;
|
});
|
getCompany(this.queryParam).then((response) => {
|
this.CompanyList = response.data;
|
this.total = response.total;
|
this.loading = false;
|
});
|
},
|
cancel1() {
|
this.open1 = false;
|
this.reset1();
|
},
|
submitFormS() {
|
this.$refs["form1"].validate((valid) => {
|
if (valid) {
|
addComp(this.form1).then((response) => {
|
this.$modal.msgSuccess("新增成功");
|
this.open1 = false;
|
this.getCompanyList();
|
});
|
}
|
});
|
},
|
reset1() {
|
this.form1 = {
|
company: "",
|
payType: "",
|
name: "",
|
phoe: "",
|
signingPic: "",
|
discount: "",
|
};
|
},
|
handleAdd1() {
|
this.reset1();
|
this.open1 = true;
|
this.title = "添加体检单位信息维护";
|
},
|
idFn1() {
|
if (this.form.firmName) {
|
const originalCompId = this.form.firmId;
|
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.firmName) {
|
this.form.tjType = this.dict.type.dict_team[1].value;
|
} else {
|
this.form.tjType = this.dict.type.dict_team[0].value;
|
}
|
},
|
getCurrentDateTime() {
|
const currentDate = new Date();
|
|
// 格式化日期:YYYY-MM-DD
|
|
const year = currentDate.getFullYear();
|
|
const month = String(currentDate.getMonth() + 1).padStart(2, "0");
|
|
const day = String(currentDate.getDate()).padStart(2, "0");
|
|
this.currentDate = `${year}-${month}-${day}`;
|
|
// 格式化时间:HH:mm:ss
|
|
const hours = String(currentDate.getHours()).padStart(2, "0");
|
|
const minutes = String(currentDate.getMinutes()).padStart(2, "0");
|
|
const seconds = String(currentDate.getSeconds()).padStart(2, "0");
|
|
this.currentTime = `${hours}:${minutes}:${seconds}`;
|
},
|
|
startTimer() {
|
this.timer = setInterval(() => {
|
this.getCurrentDateTime();
|
}, 1000); //每秒钟更新一次
|
},
|
filterNode(value, data) {
|
// 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 (!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;
|
if (data.zhmc.indexOf(value) !== -1) {
|
return data.zhmc.indexOf(value) !== -1;
|
} else {
|
return data.pym.indexOf(value) !== -1;
|
}
|
},
|
beforeDestroy() {
|
clearInterval(this.timer);
|
}, //清除定时器,以避免内存泄露。
|
freezing(val) {
|
if (val == 0) {
|
this.form.cusName = random(2);
|
} else {
|
this.form.cusName = "";
|
}
|
},
|
getList1() {
|
getInfo().then((response) => {
|
this.hospName = response.hospName;
|
});
|
getIsRequired().then((response) => {
|
this.showHidden = response.data;
|
});
|
},
|
inputChange() {
|
const reg =
|
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
|
if (reg.test(this.form.cusIdcard)) {
|
if (this.form.idType === "1") {
|
var org_birthday = this.form.cusIdcard.substring(6, 14);
|
var org_gender = this.form.cusIdcard.substring(16, 17);
|
var sex = org_gender % 2 == 1 ? 0 : 1;
|
var birthday =
|
org_birthday.substring(0, 4) +
|
"-" +
|
org_birthday.substring(4, 6) +
|
"-" +
|
org_birthday.substring(6, 8);
|
var birthdays = new Date(birthday.replace(/-/g, "-"));
|
let d = new Date();
|
let age =
|
d.getFullYear() -
|
birthdays.getFullYear() -
|
(d.getMonth() < birthdays.getMonth() ||
|
(d.getMonth() == birthdays.getMonth() &&
|
d.getDate() < birthdays.getDate())
|
? 1
|
: 0);
|
this.form.cusSex = sex;
|
this.form.cusBrithday = birthday;
|
this.form.age = age;
|
}
|
// let cusIdCard = this.form.cusIdcard;
|
// getHistryTjOrderByCusIdCard(cusIdCard).then((res) => {
|
// if (res.code == 200) {
|
this.table = true;
|
this.lishi = true;
|
// this.HistoryList = res.data;
|
// }
|
// });
|
} else {
|
return false;
|
}
|
},
|
inputChanges() {
|
this.$refs.historyTj.getlist();
|
},
|
|
cope() {
|
this.tcShow = true;
|
let cusIdCard = this.form.cusIdcard;
|
getHistryTjOrderProByCusIdCard(cusIdCard).then((res) => {
|
this.copeList = res.data;
|
if (res.msg != "暂无历史记录") {
|
this.dialogVisiblese = true;
|
} else {
|
this.$message.warning("暂无历史体检记录!");
|
}
|
});
|
},
|
copes() {
|
let cusIdCard = this.form.cusIdcard;
|
getHistryTjOrderProByCusIdCard(cusIdCard).then((res) => {
|
this.tableDatas = res.data;
|
if (this.form.cusIdcard) {
|
var cusId = this.form.cusIdcard;
|
} else {
|
this.$message.warning("请先填写信息,再选体检内容");
|
}
|
|
let _this = this;
|
if (this.tableDatas.length != 0) {
|
this.tableDatas.forEach((item) => {
|
if (item.pacId != null) {
|
_this.pacId = item.pacId;
|
} else {
|
item.list.forEach((items) => {
|
_this.proIdList.push(items.proId);
|
});
|
}
|
});
|
} else {
|
_this.pacId = "";
|
}
|
let data = {
|
cusId,
|
pacId: _this.pacId,
|
proIds: _this.proIdList,
|
};
|
getaddtTransition(data).then((response) => {
|
if (response.code === 200) {
|
let cusId = this.form.cusIdcard;
|
this.proIds = [];
|
getTransitionList1(cusId).then((response) => {
|
this.tableData1 = 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) {
|
item.pacName = "单项";
|
}
|
if (item.pacName == "单项") {
|
item.list.forEach((item9) => {
|
this.treeList.push(item9.proId);
|
});
|
}
|
this.pacName = item.pacName;
|
});
|
|
this.list1 = false;
|
this.list3 = true;
|
} else {
|
this.list1 = true;
|
|
this.TotalPrice = 0;
|
}
|
});
|
}
|
});
|
this.taocan = false;
|
this.defaultKeys = [];
|
});
|
this.dialogVisiblese = false;
|
},
|
getCompetence() {
|
var _this = this;
|
_this.hide = false;
|
_this.hides = true;
|
this.thisCancas = document.getElementById("canvasCamera");
|
this.thisContext = this.thisCancas.getContext("2d");
|
this.thisVideo = document.getElementById("videoCamera");
|
// 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象
|
if (navigator.mediaDevices === undefined) {
|
navigator.mediaDevices = {};
|
}
|
// 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象
|
// 使用getUserMedia,因为它会覆盖现有的属性。
|
// 这里,如果缺少getUserMedia属性,就添加它。
|
if (navigator.mediaDevices.getUserMedia === undefined) {
|
navigator.mediaDevices.getUserMedia = function (constraints) {
|
// 首先获取现存的getUserMedia(如果存在)
|
var getUserMedia =
|
navigator.webkitGetUserMedia ||
|
navigator.mozGetUserMedia ||
|
navigator.getUserMedia;
|
// 有些浏览器不支持,会返回错误信息
|
// 保持接口一致
|
if (!getUserMedia) {
|
return Promise.reject(
|
new Error("getUserMedia is not implemented in this browser")
|
);
|
}
|
// 否则,使用Promise将调用包装到旧的navigator.getUserMedia
|
return new Promise(function (resolve, reject) {
|
getUserMedia.call(navigator, constraints, resolve, reject);
|
});
|
};
|
}
|
var constraints = {
|
audio: false,
|
video: {
|
width: this.videoWidth,
|
height: this.videoHeight,
|
transform: "scaleX(-1)",
|
},
|
};
|
navigator.mediaDevices
|
.getUserMedia(constraints)
|
.then(function (stream) {
|
// 旧的浏览器可能没有srcObject
|
if ("srcObject" in _this.thisVideo) {
|
_this.thisVideo.srcObject = stream;
|
} else {
|
// 避免在新的浏览器中使用它,因为它正在被弃用。
|
_this.thisVideo.src = window.URL.createObjectURL(stream);
|
}
|
_this.thisVideo.onloadedmetadata = function (e) {
|
_this.thisVideo.play();
|
};
|
})
|
.catch((err) => {});
|
},
|
// 绘制图片(拍照功能)
|
|
setImage() {
|
var _this = this;
|
_this.hide = false;
|
_this.hides = false;
|
// 点击,canvas画图
|
_this.thisContext.drawImage(
|
_this.thisVideo,
|
50,
|
50,
|
_this.videoWidth,
|
_this.videoHeight
|
);
|
// 获取图片base64链接
|
var image = this.thisCancas.toDataURL("image/png");
|
_this.imgSrc = image;
|
this.$emit("refreshDataList", this.imgSrc);
|
|
// this.file.push(dataURLtoFile(this.imgSrc, "file"));
|
let file = dataURLtoFile(this.imgSrc, "file");
|
let formData = new FormData();
|
formData.append("file", file);
|
getLoadFile(formData).then((response) => {
|
this.srcUrl = response.url;
|
});
|
},
|
|
handleClose(done) {
|
this.$confirm("确认关闭?")
|
.then((_) => {
|
done();
|
})
|
.catch((_) => {});
|
},
|
|
/** 查询信息列表 */
|
getList() {
|
getInfo().then((response) => {});
|
let cusSex = this.form.cusSex;
|
//全部套餐
|
if (cusSex) {
|
this.loading = true;
|
deptTreeSelect(cusSex).then((response) => {
|
this.newpacName = response.rows;
|
this.loading = false;
|
});
|
}
|
},
|
getData() {
|
/** 查询部门下拉树结构 */
|
projectGetList().then((response) => {
|
this.treedataList = response.data.list;
|
this.dXData = response.data.list;
|
return;
|
});
|
},
|
// 表单重置
|
reset() {
|
this.form = {
|
cusId: null,
|
cusName: null,
|
cusSex: null,
|
cusBrithday: null,
|
cusAddr: null,
|
addr: null,
|
cusPhone: null,
|
cusPassword: null,
|
cusPostcode: null,
|
cusEmail: null,
|
indexCard: null,
|
cusNational: null,
|
cusMarryStatus: null,
|
cusIdcard: null,
|
cusIntroduce: null,
|
cusNumber: null,
|
cusIsvip: null,
|
createBy: null,
|
createTime: null,
|
updateBy: null,
|
updateTime: null,
|
deleted: null,
|
firmid: "",
|
firmDeptName: "",
|
};
|
this.resetForm("form");
|
},
|
/** 重置按钮操作 */
|
resetQuery() {
|
if (this.confirm === true) {
|
this.$tab.refreshPage();
|
} else {
|
if (this.TotalPrice1 != 0) {
|
MessageBox.confirm("您有未提交的选项,确定重置吗", "系统提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
}).then(() => {
|
let cusId = this.form.cusId;
|
let data = {
|
cusId,
|
pacId: "",
|
proIds: [],
|
};
|
getaddtTransition(data).then((response) => {});
|
this.$tab.refreshPage();
|
});
|
} else {
|
this.$tab.refreshPage();
|
}
|
}
|
},
|
|
// 折扣
|
numberChange(currentValue, oldValue) {
|
this.$confirm("确定修改所有子项的折扣吗?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
this.discount = currentValue;
|
|
this.tableData1.forEach((item) => {
|
item.discount = this.discount;
|
const ordPrice = new Big(item.ordPrice);
|
const discount = new Big(item.discount);
|
const result = ordPrice.times(discount.div(10));
|
item.nowPrice = result.toNumber();
|
this.TotalPrice = this.tableData1.reduce((sum, item) => {
|
return sum.plus(new Big(item.nowPrice || "0"));
|
}, new Big(0));
|
});
|
})
|
.catch(() => {
|
this.discount = oldValue;
|
});
|
},
|
numberChangeXianPrice(currentValue, oldValue) {
|
// 如果现价没有变化,直接返回
|
if (this.TotalPrice === this.lastXianPrice || !this.TotalPrice) {
|
return;
|
}
|
this.$confirm("确定修改所有子项的折扣吗?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
this.discount = currentValue;
|
if (this.discount < this.getInfodis) {
|
this.discount = this.getInfodis;
|
}
|
let totalYsprice = new Big(0);
|
this.tableData1.forEach((item) => {
|
item.discount = this.discount;
|
const ordPrice = new Big(item.ordPrice);
|
const discount = new Big(item.discount);
|
const result = ordPrice.times(discount.div(10));
|
item.nowPrice = result.toNumber();
|
totalYsprice = totalYsprice.plus(new Big(item.nowPrice));
|
});
|
if (!totalYsprice.eq(this.TotalPrice)) {
|
const diff = new Big(this.TotalPrice).minus(totalYsprice);
|
if (this.tableData1.length > 0) {
|
const lastItem = this.tableData1[this.tableData1.length - 1];
|
const newYsPrice = new Big(lastItem.nowPrice)
|
.plus(diff)
|
.toNumber();
|
// console.log(
|
// "hhh",
|
// this.tableData1[this.tableData1.length - 1].nowPrice,
|
// newYsPrice
|
// );
|
this.$set(
|
this.tableData1[this.tableData1.length - 1],
|
"nowPrice",
|
newYsPrice
|
);
|
}
|
}
|
this.lastXianPrice = this.TotalPrice;
|
})
|
.catch(() => {
|
this.discount = oldValue;
|
});
|
},
|
/** 登记提交按钮 */
|
/** 登记提交按钮 */
|
submitForm() {
|
let _this = this;
|
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, "")
|
: "";
|
|
// 处理性别值
|
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;
|
}
|
|
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;
|
});
|
}
|
});
|
}
|
|
},
|
|
getmailType() {
|
if (this.getType == "2") {
|
this.addAddress.getUser = this.form.cusName;
|
this.addAddress.phone = this.form.cusPhone;
|
this.addAddress.address = this.form.cusAddr;
|
this.malldisble = true;
|
}
|
},
|
|
// 根据身份证查询
|
handleQuery() {
|
this.loading = true;
|
let _this = this;
|
let cusIdcard = this.form.cusIdcard;
|
if (cusIdcard) {
|
getCusIdcard(cusIdcard).then((response) => {
|
_this.top = false;
|
if (response.data) {
|
this.form = response.data;
|
if (this.form.discount === null) {
|
this.discount = 10;
|
} else {
|
this.discount = this.form.discount;
|
}
|
if (this.form.tjType === null) {
|
this.form.tjType = this.dict.type.dict_team[0].value;
|
}
|
if (this.form.cusMarryStatus === "null") {
|
this.form.cusMarryStatus = "5";
|
}
|
if (this.form.cusNational === "null") {
|
this.form.cusNational = "1";
|
}
|
if (this.form.reservationId != null) {
|
if (this.form.groupingId) {
|
this.form.firmName = this.form.compName;
|
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;
|
}
|
});
|
_this.tcShow = true;
|
|
getTransitionList1(this.form.cusIdcard).then((res) => {
|
this.tableData1 = res.data;
|
if (this.tableData1) {
|
this.tableData1.forEach((item) => {
|
this.TotalPrice1 += item.ordPrice;
|
this.TotalPrice += item.nowPrice;
|
if (item.pacName === null) {
|
item.pacName = "单项";
|
}
|
});
|
this.list1 = false;
|
this.list2 = true;
|
this.list3 = false;
|
_this.top = false;
|
} else {
|
this.list1 = true;
|
this.TotalPrice = 0;
|
_this.top = false;
|
}
|
});
|
} else {
|
if (this.form) {
|
_this.tcShow = true;
|
_this.formPacId = this.form.pacId;
|
let cusId = this.form.cusIdcard;
|
getTransitionList1(cusId).then((response) => {
|
this.tableData1 = response.data;
|
if (this.tableData1) {
|
this.TotalPrice1 = 0;
|
this.tableData1.forEach((item) => {
|
this.TotalPrice1 += item.ordPrice;
|
this.TotalPrice += item.nowPrice;
|
if (item.pacName === null) {
|
item.pacName = "单项";
|
}
|
if (item.pacName == "单项") {
|
item.list.forEach((item9) => {
|
this.treeList.push(item9.proId);
|
});
|
}
|
});
|
this.list1 = false;
|
this.list3 = true;
|
} else {
|
this.list1 = true;
|
}
|
});
|
} else {
|
this.getList();
|
_this.tcShow = false;
|
}
|
}
|
} else {
|
_this.tcShow = true;
|
this.$message.warning("暂无预约信息");
|
_this.resetpackage();
|
}
|
this.top = false;
|
_this.isDisabled = true;
|
} else {
|
this.$message.warning("未查到用户信息");
|
}
|
});
|
} else {
|
let configKey = "getInfoFromSqlData";
|
getconfigKey(configKey).then((res) => {
|
if (res.code == 200) {
|
if (res.msg == "N") {
|
var websocket = null;
|
var url = this.valueUrl;
|
if ("WebSocket" in window) {
|
websocket = new WebSocket(url);
|
} else if ("MozWebSocket" in window) {
|
websocket = new MozWebSocket(url);
|
} else {
|
}
|
|
if (websocket == null) {
|
alert("创建WebSocket对象失败");
|
}
|
|
//连接发生错误的回调方法
|
websocket.onerror = function () {
|
alert("请检查读卡器连接是否正常");
|
};
|
|
//连接成功建立的回调方法
|
websocket.onopen = function () {
|
this.websocket = websocket;
|
// 连接设备
|
var jsonObj = {
|
// name: "connect",
|
type: "1",
|
};
|
var jStr = JSON.stringify(jsonObj);
|
this.websocket.send(jStr);
|
// alert("请放身份证再点确认");
|
var jsonObj = {
|
// name: "readCert",
|
};
|
|
this.dialogVisible = false;
|
};
|
|
//接收到消息的回调方法
|
websocket.onmessage = (event) => {
|
var resultObj = eval("(" + event.data + ")");
|
this.readCardWebSocket(resultObj);
|
};
|
} 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;
|
_this.inputSSS = "";
|
}
|
}
|
});
|
}
|
},
|
|
// 最新使用webSocket通信
|
readCardWebSocket(resultObj) {
|
let _this = this;
|
|
if (resultObj.code === 200 && resultObj.data.name != null) {
|
//回显相关数据
|
_this.form.cusName = resultObj.data.name;
|
_this.form.cusSex = resultObj.data.sex == "0" ? "女" : "男";
|
_this.form.cusNational = resultObj.data.mz;
|
_this.form.cusBrithday = resultObj.data.csrq;
|
if (_this.form.cusBrithday) {
|
_this.form.cusBrithday = _this.form.cusBrithday.replace(
|
/^(\d{4})(\d{2})(\d{2})$/,
|
"$1-$2-$3"
|
);
|
} else if (_this.form.cusIdcard) {
|
// 从身份证号码提取出生日期
|
var org_birthday = _this.form.cusIdcard.substring(6, 14);
|
_this.form.cusBrithday =
|
org_birthday.substring(0, 4) +
|
"-" +
|
org_birthday.substring(4, 6) +
|
"-" +
|
org_birthday.substring(6, 8);
|
}
|
// 如果出生日期存在,计算年龄
|
if (_this.form.cusBrithday) {
|
var birthdays = new Date(_this.form.cusBrithday);
|
let d = new Date();
|
let age =
|
d.getFullYear() -
|
birthdays.getFullYear() -
|
(d.getMonth() < birthdays.getMonth() ||
|
(d.getMonth() == birthdays.getMonth() &&
|
d.getDate() < birthdays.getDate())
|
? 1
|
: 0);
|
_this.form.age = age; // 赋值计算的年龄
|
}
|
_this.form.cusAddr = resultObj.data.addres;
|
_this.form.cusIdcard = resultObj.data.card;
|
_this.imageUrl = "data:image/jpeg;base64," + resultObj.data.img;
|
if (resultObj.name == "readCert" || resultObj.name == "PushWithImg") {
|
this.imageUrl = "data:image/jpeg;base64," + resultObj.data.img;
|
}
|
} else {
|
this.$message.warning("请放置身份证后再点击读取");
|
}
|
},
|
// TODO 以下代码可能是泾川使用的
|
jingChuanHandlerWebSocketResult(resultObj) {
|
let _this = this;
|
if (
|
resultObj.name == "readCard" ||
|
resultObj.name == "readCert" ||
|
resultObj.name == "PushWithImg" ||
|
resultObj.name == "PushWithOutImg"
|
) {
|
if (resultObj.resultFlag == "0") {
|
//回显相关数据
|
_this.form.cusName = resultObj.resultContent.partyName;
|
_this.form.cusSex =
|
resultObj.resultContent.gender == "0" ? "女" : "男";
|
_this.form.cusNational = resultObj.resultContent.nation;
|
_this.form.cusBrithday = resultObj.resultContent.bornDay;
|
if (_this.form.cusBrithday) {
|
_this.form.cusBrithday = _this.form.cusBrithday.replace(
|
/^(\d{4})(\d{2})(\d{2})$/,
|
"$1-$2-$3"
|
);
|
}
|
_this.form.cusAddr = resultObj.resultContent.certAddress;
|
_this.form.cusIdcard = resultObj.resultContent.certNumber;
|
_this.imageUrl =
|
"data:image/jpeg;base64," + resultObj.resultContent.identityPic;
|
if (resultObj.name == "readCert" || resultObj.name == "PushWithImg") {
|
this.imageUrl =
|
"data:image/jpeg;base64," +
|
resultObj.resultContent.identityPrintPic;
|
}
|
} else if (resultObj.resultFlag == "-1") {
|
if (resultObj.errorMsg == "端口打开失败") {
|
//alert("读卡器未连接");
|
} else {
|
//alert(resultObj.errorMsg);
|
}
|
} else if (resultObj.resultFlag == "-2") {
|
//alert(resultObj.errorMsg);
|
}
|
} else if (resultObj.name == "getStatus") {
|
if (resultObj.resultFlag == "0") {
|
if (resultObj.status == "0") {
|
} else {
|
alert("设备连接已断开,请检查读卡器连接");
|
}
|
}
|
}
|
},
|
changeradio() {
|
if (this.cardreaderradio != 3) {
|
this.$nextTick(() => {
|
this.$refs.tableHeadFilterInp.focus();
|
});
|
}
|
},
|
cardreadercopes() {
|
let _this = this;
|
|
if (this.cardreaderradio == 3) {
|
var websocket = null;
|
var url = this.valueUrls;
|
// var url = 'ws://'+ getIp() +':6789/websocket'
|
if ("WebSocket" in window) {
|
websocket = new WebSocket(url);
|
} else if ("MozWebSocket" in window) {
|
websocket = new MozWebSocket(url);
|
} else {
|
}
|
if (websocket == null) {
|
alert("11111");
|
}
|
websocket.onopen = function () {
|
try {
|
// 连接设备
|
var jsonObjs = {
|
type: 1,
|
data: {},
|
};
|
var jStrs = JSON.stringify(jsonObjs);
|
websocket.send(jStrs);
|
} catch (err) {
|
var tryTime = 0;
|
// 重试10次,每次之间间隔3秒
|
if (tryTime < 1) {
|
var t1 = setTimeout(function () {
|
tryTime++;
|
var jsonObjs = {
|
type: 1,
|
data: {},
|
};
|
var jStrs = JSON.stringify(jsonObjs);
|
websocket.send(jStrs);
|
}, 1 * 1000);
|
} else {
|
console.error("重连失败.");
|
}
|
}
|
};
|
websocket.onclose = function () {
|
alert("读卡器连接关闭");
|
};
|
websocket.onmessage = function (event) {
|
var resultObj = JSON.parse(event.data);
|
_this.form.cusName = resultObj.data.name;
|
_this.form.cusSex = resultObj.data.sex;
|
_this.form.cusNational = resultObj.data.mz;
|
_this.form.cusBrithday = resultObj.data.csrq;
|
if (_this.form.cusBrithday) {
|
_this.form.cusBrithday = _this.form.cusBrithday.replace(
|
/^(\d{4})(\d{2})(\d{2})$/,
|
"$1-$2-$3"
|
);
|
}
|
_this.form.cusIdcard = resultObj.data.card;
|
if (_this.form.cusIdcard) {
|
const reg =
|
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
|
if (reg.test(_this.form.cusIdcard)) {
|
var org_birthday = _this.form.cusIdcard.substring(6, 14);
|
var birthday =
|
org_birthday.substring(0, 4) +
|
"-" +
|
org_birthday.substring(4, 6) +
|
"-" +
|
org_birthday.substring(6, 8);
|
var birthdays = new Date(birthday.replace(/-/g, "-"));
|
let d = new Date();
|
let age =
|
d.getFullYear() -
|
birthdays.getFullYear() -
|
(d.getMonth() < birthdays.getMonth() ||
|
(d.getMonth() == birthdays.getMonth() &&
|
d.getDate() < birthdays.getDate())
|
? 1
|
: 0);
|
|
_this.form.age = age;
|
}
|
}
|
_this.form.cusAddr = resultObj.data.addres;
|
|
_this.cardreader = false;
|
};
|
|
//连接发生错误的回调方法
|
websocket.onerror = function () {
|
alert("请检查读卡器连接是否正常");
|
};
|
} else {
|
_this.inputSSS = _this.inputSSS.replace(":1", "");
|
var websocket = null;
|
var url = this.valueUrls;
|
if ("WebSocket" in window) {
|
websocket = new WebSocket(url);
|
} else if ("MozWebSocket" in window) {
|
websocket = new MozWebSocket(url);
|
} else {
|
}
|
if (websocket == null) {
|
alert("11111");
|
}
|
websocket.onopen = function () {
|
try {
|
// 连接设备
|
var jsonObjs = {
|
type: 2,
|
data: {
|
qrcode: _this.inputSSS,
|
},
|
};
|
var jStrs = JSON.stringify(jsonObjs);
|
websocket.send(jStrs);
|
} catch (err) {
|
var tryTime = 0;
|
// 重试10次,每次之间间隔3秒
|
if (tryTime < 1) {
|
var t1 = setTimeout(function () {
|
tryTime++;
|
var jsonObjs = {
|
type: 2,
|
data: {
|
qrcode: _this.inputSSS,
|
},
|
};
|
var jStrs = JSON.stringify(jsonObjs);
|
websocket.send(jStrs);
|
}, 1 * 1000);
|
} else {
|
console.error("重连失败.");
|
}
|
}
|
};
|
websocket.onclose = function () {
|
alert("读卡器连接关闭");
|
};
|
websocket.onmessage = function (event) {
|
var resultObj = JSON.parse(event.data);
|
_this.form.cusName = resultObj.data.name;
|
|
if (resultObj.data.nation == "汉族") {
|
_this.form.cusNational = "1";
|
}
|
if (resultObj.data.gender == "男") {
|
_this.form.cusSex = 0;
|
} else {
|
_this.form.cusSex = 1;
|
}
|
_this.form.cusBrithday = resultObj.data.birthday;
|
if (_this.form.cusBrithday) {
|
_this.form.cusBrithday = _this.form.cusBrithday.replace(
|
/^(\d{4})(\d{2})(\d{2})$/,
|
"$1-$2-$3"
|
);
|
}
|
_this.form.cusPhone = resultObj.data.phone;
|
_this.form.cusIdcard = resultObj.data.idenno;
|
if (_this.form.cusIdcard) {
|
const reg =
|
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
|
if (reg.test(_this.form.cusIdcard)) {
|
var org_birthday = _this.form.cusIdcard.substring(6, 14);
|
var birthday =
|
org_birthday.substring(0, 4) +
|
"-" +
|
org_birthday.substring(4, 6) +
|
"-" +
|
org_birthday.substring(6, 8);
|
var birthdays = new Date(birthday.replace(/-/g, "-"));
|
let d = new Date();
|
let age =
|
d.getFullYear() -
|
birthdays.getFullYear() -
|
(d.getMonth() < birthdays.getMonth() ||
|
(d.getMonth() == birthdays.getMonth() &&
|
d.getDate() < birthdays.getDate())
|
? 1
|
: 0);
|
|
_this.form.age = age;
|
}
|
}
|
_this.cardreader = false;
|
};
|
|
//连接发生错误的回调方法
|
websocket.onerror = function () {
|
alert("请检查读卡器连接是否正常");
|
};
|
}
|
},
|
|
handleChanges(param1) {
|
if (this.form.pacCode == "不详") {
|
this.form.cusIdcard = param1[0].xh;
|
} else {
|
this.form.cusIdcard = param1[0].pacCode;
|
}
|
},
|
handleChangesName(params) {
|
this.form.cusIdcard = params[0].sfzh;
|
this.handleQuery();
|
},
|
|
// 上传头像
|
handleAvatarSuccess(res, file) {
|
this.imageUrl = URL.createObjectURL(file.raw);
|
},
|
beforeAvatarUpload(file) {
|
const isJPG = file.type === "image/jpeg";
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
if (!isJPG) {
|
this.$message.error("上传头像图片只能是 JPG 格式!");
|
}
|
if (!isLt2M) {
|
this.$message.error("上传头像图片大小不能超过 2MB!");
|
}
|
return isJPG && isLt2M;
|
},
|
|
// 取消按钮
|
cancel() {
|
this.TreedataList = [];
|
this.DataList = [];
|
this.marryall = 0; // 重置合计
|
this.Seachopen = false;
|
this.taocan = false;
|
this.malldisble = false;
|
this.defaultKeys = [];
|
this.DataLists = [];
|
},
|
|
cancell() {
|
if (this.addAddress.address) {
|
this.malldisble = false;
|
} else {
|
this.$message.error("请填写地址");
|
}
|
},
|
|
/** 搜索操作 */
|
handle() {
|
this.loading = true;
|
this.name = this.queryParam.pacName;
|
let param = {
|
sex: this.form.cusSex,
|
dwId: this.form.firmId,
|
};
|
if (this.name) {
|
getPackageListName(this.name).then((response) => {
|
this.newpacName = response.data;
|
this.loading = false;
|
});
|
} else {
|
if (this.form.tjType == 1) {
|
tuantiSelect(param).then((response) => {
|
this.newpacName = response.data;
|
this.loading = false;
|
});
|
} else {
|
deptTreeSelect().then((response) => {
|
this.newpacName = response.rows;
|
this.loading = false;
|
});
|
}
|
}
|
},
|
|
resetpackage() {
|
this.discount = 10;
|
if (this.form.cusIdcard) {
|
var cusId = this.form.cusIdcard;
|
} else {
|
this.$message.warning("请先填写信息,再选体检内容");
|
}
|
let _this = this;
|
_this.pacId = "";
|
this.proIds = [];
|
this.tjCategory = "12";
|
|
this.DataList = []; // 清空已选项目列表
|
this.checkedkey = []; // 清空树的选中状态
|
this.checkedListkey = [];
|
this.TreedataList = [];
|
|
let data = {
|
cusId,
|
pacId: _this.pacId,
|
proIds: this.proIds,
|
};
|
getaddtTransition(data).then((response) => {
|
if (response.code === 200) {
|
let cusId = this.form.cusIdcard;
|
this.proIds = [];
|
getTransitionList1(cusId).then((response) => {
|
this.tableData1 = response.data;
|
this.TotalPrice1 = 0;
|
if (this.tableData1.length >= 1) {
|
this.list1 = false;
|
this.list3 = true;
|
} else {
|
this.list1 = true;
|
|
this.TotalPrice = 0;
|
}
|
});
|
}
|
});
|
},
|
|
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();
|
//全部套餐
|
|
let param = {
|
sex: cusSex,
|
dwId: this.form.firmId || "",
|
};
|
if (this.form.tjType == 1) {
|
if (!this.form.firmId && !this.form.firmName) {
|
this.$message({
|
type: "warning",
|
message: "请先维护单位!",
|
});
|
} else if (!this.form.firmId && this.form.firmName) {
|
this.taocan = true;
|
this.loading = true;
|
deptTreeSelect(cusSex).then((response) => {
|
this.newpacName = response.rows;
|
try {
|
if (this.tableData1.length >= 1) {
|
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();
|
}
|
});
|
});
|
});
|
}
|
} catch (error) {}
|
this.loading = false;
|
});
|
} else {
|
this.taocan = true;
|
this.loading = true;
|
tuantiSelect(param).then((res) => {
|
this.newpacName = res.data;
|
try {
|
if (this.tableData1.length >= 1) {
|
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();
|
}
|
});
|
});
|
});
|
}
|
} catch (error) {}
|
this.loading = false;
|
});
|
}
|
} else {
|
this.taocan = true;
|
this.loading = true;
|
deptTreeSelect(cusSex).then((response) => {
|
this.newpacName = response.rows;
|
try {
|
if (this.tableData1.length >= 1) {
|
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();
|
}
|
});
|
});
|
});
|
}
|
} catch (error) {}
|
this.loading = false;
|
});
|
}
|
},
|
|
// 点击多选框获取选中数据
|
handleSelectionChange(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 (this.tableData1.length != 0) {
|
this.tableData.forEach((item) => {
|
this.tableData1.forEach((item1) => {
|
item.tjProjectList.forEach((item2) => {
|
if (item2.proId == item1.proPrantId && item1.pacName == "单项") {
|
this.$confirm(
|
"该套餐包含了已选单项,是否确认选择该套餐?",
|
"确认信息",
|
{
|
distinguishCancelAndClose: true,
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
}
|
)
|
.then(() => {
|
this.$message({
|
type: "success",
|
message: "请注意查看价格",
|
});
|
})
|
.catch((action) => {
|
if (action === "cancel") {
|
let del_row = selection.shift();
|
this.$refs.tb.toggleRowSelection(del_row, false);
|
this.$message({
|
type: "warning",
|
message: "已取消",
|
});
|
}
|
});
|
// this.$message.warning("该套餐包含了已选单项,若选择该套餐,请先删除单项");
|
}
|
});
|
});
|
});
|
}
|
if (selection[0]) {
|
// this.DataList = [];
|
// this.data = JSON.parse(JSON.stringify(this.dXData));
|
// selection[0].tjProjectList.forEach((selectionitem) => {
|
// this.Treedata.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 = [];
|
// }
|
// });
|
// }
|
// });
|
// }
|
// });
|
// this.TreedataList.forEach((item3) => {
|
// if (item3.proParentId == selectionitem.proId) {
|
// item.disabled = true;
|
// }
|
// });
|
// });
|
} else {
|
this.treedataList = JSON.parse(JSON.stringify(this.dXData));
|
return;
|
}
|
},
|
handleClick(tab, event) {
|
if (this.activeNames == "second") {
|
this.DataList = [];
|
this.checkedkey = [];
|
this.TreedataList = [];
|
this.marryall = 0; // 重置合计
|
this.getDataList();
|
} else if (this.activeNames == "third") {
|
this.DataLists = [];
|
this.checkedkeys = [];
|
this.TreedataList = [];
|
this.marryall = 0; // 重置合计
|
getZhList().then((response) => {
|
if (response.data) {
|
this.packageList = response.data;
|
}
|
this.loading = false;
|
});
|
}
|
},
|
// gaibian(val){
|
// let pname = val;
|
// getProParentIdDxList(pname).then(response=>{
|
// this.Treedata = response.data.list;
|
// })
|
// },
|
getDataList() {
|
this.loading = true;
|
getProParentIdDxList().then((response) => {
|
this.Treedata = response.data.list;
|
|
// 回显 TreedataList 到 DataList
|
if (this.TreedataList && this.TreedataList.length > 0) {
|
this.DataList = this.TreedataList;
|
this.marryall = this.DataList.reduce(
|
(sum, item) => sum + (item.proPrice || 0) * (item.sl || 1),
|
0
|
);
|
this.checkedListkey = this.DataList.map((item) => item.proId);
|
this.$nextTick(() => {
|
this.$refs.tree.setCheckedKeys(this.checkedListkey);
|
});
|
}
|
|
if (this.tableData[0]) {
|
this.tableData[0].tjProjectList.forEach((selectionitem) => {
|
this.Treedata.forEach((item) => {
|
if (selectionitem.proId == item.proId) {
|
item.disabled = true;
|
}
|
});
|
});
|
}
|
|
// 回显 packageList 的选中态
|
this.handlePackageSelection();
|
|
this.loading = false;
|
});
|
},
|
|
handlePackageSelection() {
|
// 假设你有之前保存的选中状态或从某个地方获取这些数据
|
let selectedPackageIds = this.getPreviouslySelectedPackages(); // 这是一个假设的函数,实际使用时替换为实际的逻辑
|
|
// 设置 packageList 的选中状态
|
this.$nextTick(() => {
|
if (this.$refs.treas) {
|
// 确保 treas 引用已经存在
|
this.$refs.treas.setCheckedKeys(selectedPackageIds, true);
|
}
|
// 更新 checkedkeys 以反映当前选中的包
|
this.checkedkeys = selectedPackageIds;
|
});
|
|
// 根据选中状态更新 DataLists 或其他需要更新的内容
|
this.updateDataListsBasedOnSelection(selectedPackageIds);
|
},
|
|
getPreviouslySelectedPackages() {
|
// 返回之前保存的选中包ID数组
|
// 例如,从 localStorage 或者 Vuex store 获取
|
return []; // 这里是示例,替换为实际获取数据的逻辑
|
},
|
|
updateDataListsBasedOnSelection(selectedPackageIds) {
|
// 根据选中的包ID更新 DataLists
|
this.DataLists = [];
|
selectedPackageIds.forEach((id) => {
|
let packageItem = this.packageList.find((item) => item.id === id);
|
if (packageItem) {
|
// 这里假设每个包项目都有一个 proId 数组或者类似的结构,用来获取包中的项目
|
if (packageItem.proIds) {
|
// 假设 packageItem 包含一个 proId 数组
|
packageItem.proIds.forEach((proId) => {
|
let project = this.findProjectById(proId); // 假设有一个函数来找到项目
|
if (project) {
|
this.DataLists.push(project);
|
}
|
});
|
}
|
}
|
});
|
|
// 计算合计
|
this.marryalls = this.DataLists.reduce(
|
(sum, item) => sum + item.proPrice,
|
0
|
);
|
},
|
|
findProjectById(proId) {
|
// 此函数假设你有一个全局的项目列表或者可以从某个API获取
|
// 这里只是一个示例,实际应用中应该根据你的数据结构来实现
|
return this.allpackageList.find((item) => item.proId === proId) || null;
|
},
|
|
handlepackage(data, checked, checkedNodes) {
|
this.dataObj = data;
|
if (checked.checkedNodes.length != 0) {
|
this.$refs.treas.setCheckedKeys([data.id]);
|
let datas = {
|
zhId: data.id,
|
};
|
getlistByZhId(datas).then((res) => {
|
this.packagedataList = res.data.tjProjectList;
|
|
this.DataLists = [];
|
this.checkedListkey1 = [];
|
for (var i = 0; i < this.packagedataList.length; i++) {
|
let proId = this.packagedataList[i].proId;
|
this.checkedListkey1.push(proId);
|
// this.DataLists.push(this.packagedataList[i]);
|
getProSonDxList(proId).then((res) => {
|
this.TreedataList = res.data.list;
|
|
this.TreedataList.forEach((item) => {
|
// this.checkedListkey1.push(item.proId);
|
|
this.DataLists.push(item);
|
|
if (this.DataLists.length >= 1) {
|
this.marryalls = 0;
|
this.DataLists.forEach((item1) => {
|
this.marryalls += item1.proPrice * item1.sl;
|
|
this.packagedataList.forEach((item3) => {
|
if (item1.proParentId == item3.proId) {
|
item1.propinName = item3.proName;
|
}
|
});
|
});
|
}
|
});
|
});
|
}
|
});
|
} else if (checked.checkedNodes.length == 0) {
|
this.DataLists = [];
|
this.marryalls = 0; // 清零总价
|
this.checkedListkey1 = [];
|
}
|
},
|
objectspanmethod({ row, column, rowIndex, columnIndex }) {
|
let fields = ["propinName"];
|
let cellValue = row[column.property];
|
if (cellValue && fields.includes(column.property)) {
|
let prevRow = this.DataLists[rowIndex - 1];
|
let nextRow = this.DataLists[rowIndex + 1];
|
if (prevRow && prevRow[column.property] === cellValue) {
|
return { rowspan: 0, colspan: 0 };
|
} else {
|
let countRowspan = 1;
|
while (nextRow && nextRow[column.property] === cellValue) {
|
nextRow = this.DataLists[++countRowspan + rowIndex];
|
}
|
|
if (countRowspan > 1) {
|
return { rowspan: countRowspan, colspan: 1 };
|
}
|
}
|
}
|
},
|
handlePackageChecked(data, checked, checkedNodes) {
|
if (checked == false) {
|
this.DataLists.forEach((item, index) => {
|
if (item.proId == data.proId) {
|
this.DataLists.splice(index, 1);
|
this.marryalls = 0; // 重置合计金额
|
this.DataLists.forEach((item1) => {
|
this.marryalls += item1.proPrice; // 重新计算合计金额
|
});
|
}
|
});
|
} else if (checked == true) {
|
this.DataLists.push(data); // 添加数据到已选列表
|
this.DataLists.forEach((item1) => {
|
if (item1.proParentId == this.dataObj.proId) {
|
item1.propinName = this.dataObj.proName; // 设置父级名称
|
}
|
});
|
// this.spliceData();
|
this.marryalls = 0; // 重置合计金额
|
this.DataLists.forEach((item1) => {
|
this.marryalls += item1.proPrice; // 重新计算合计金额
|
});
|
}
|
},
|
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);
|
this.checkedListkey = [];
|
this.DataList = [];
|
|
this.TreedataList.forEach((item) => {
|
this.checkedListkey.push(item.proId);
|
this.DataList.push(item);
|
});
|
|
this.spliceData(); // 假设这个方法是你定义的其他地方处理数据的
|
|
// 更新名称和计算总价
|
this.DataList.forEach((item1) => {
|
const parent = checked.checkedNodes.find(
|
(node) => node.proId === item1.proParentId
|
);
|
if (parent) {
|
item1.propinName = parent.proName;
|
}
|
});
|
|
this.TotalPrice1 = 0;
|
this.marryall = 0;
|
if (this.DataList.length != 0) {
|
this.list1 = false;
|
this.DataList.forEach((item) => {
|
this.marryall += Number(item.proPrice) * Number(item.sl);
|
});
|
}
|
});
|
} else if (checked.checkedNodes.length == 0) {
|
let proId = data.proId;
|
getProSonDxList(proId).then((res) => {
|
this.TreedataList = res.data.list;
|
this.checkedListkey = [];
|
});
|
}
|
},
|
|
spliceData() {
|
for (var i = 0; i < this.DataList.length; i++) {
|
for (var j = i + 1; j < this.DataList.length; j++) {
|
if (this.DataList[i].proId == this.DataList[j].proId) {
|
//如果第一个等于第二个,splice方法删除第二个
|
this.DataList.splice(j, 1);
|
j--;
|
}
|
}
|
}
|
return this.DataList;
|
},
|
|
renderContent(h, { node, data, store }) {
|
return (
|
<span class="custom-tree-node">
|
<span>{node.label}</span>
|
<span>({data.proPrice}元)</span>
|
</span>
|
);
|
},
|
renderContents(h, { node, data, store }) {
|
return (
|
<span class="custom-tree-node">
|
<span>{node.label}</span>
|
<span>({data.price}元)</span>
|
</span>
|
);
|
},
|
// 点击获取每个树节点
|
handleCurrentChecked1(data, checked, checkedNodes) {
|
if (checked == false) {
|
this.DataList.forEach((item, index) => {
|
if (item.proId == data.proId) {
|
this.DataList.splice(index, 1);
|
this.marryall = 0;
|
this.DataList.forEach((item1) => {
|
this.marryall += item1.proPrice;
|
});
|
}
|
});
|
} else if (checked == true) {
|
this.DataList.push(data);
|
this.DataList.forEach((item1) => {
|
if (item1.proParentId == this.dataObj.proId) {
|
item1.propinName = this.dataObj.proName;
|
}
|
});
|
this.spliceData();
|
this.marryall = 0;
|
this.DataList.forEach((item1) => {
|
this.marryall += item1.proPrice;
|
});
|
}
|
},
|
|
/** 删除按钮操作 */
|
handleDelete(row) {
|
this.DataList.forEach((item, index) => {
|
if (item.proId == row.proId) {
|
this.DataList.splice(index, 1);
|
this.marryall = 0;
|
this.DataList.forEach((item1) => {
|
this.marryall += item1.proPrice;
|
});
|
}
|
});
|
},
|
handleDel(row) {
|
this.DataLists.forEach((item, index) => {
|
if (item.proId == row.proId) {
|
this.DataLists.splice(index, 1);
|
this.marryalls = 0;
|
this.DataLists.forEach((item1) => {
|
this.marryalls += item1.proPrice;
|
});
|
}
|
});
|
},
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
let fields = ["propinName"];
|
let cellValue = row[column.property];
|
if (cellValue && fields.includes(column.property)) {
|
let prevRow = this.DataList[rowIndex - 1];
|
let nextRow = this.DataList[rowIndex + 1];
|
if (prevRow && prevRow[column.property] === cellValue) {
|
return { rowspan: 0, colspan: 0 };
|
} else {
|
let countRowspan = 1;
|
while (nextRow && nextRow[column.property] === cellValue) {
|
nextRow = this.DataList[++countRowspan + rowIndex];
|
}
|
if (countRowspan > 1) {
|
return { rowspan: countRowspan, colspan: 1 };
|
}
|
}
|
}
|
},
|
|
// 项目提交
|
submit() {
|
if (this.form.cusIdcard) {
|
var cusId = this.form.cusIdcard;
|
} else {
|
this.$message.warning("请先填写信息,再选体检内容");
|
return; // 如果没有身份证号码,停止执行
|
}
|
|
let _this = this;
|
|
// 初始化变量
|
this.isSubmitting = true; // 开始提交时设置标志
|
this.TotalPrice1 = 0; // 初始化应收金额
|
this.TotalPrice = 0; // 初始化实收金额
|
this.discount = 10; // 初始化折扣为10(100%)
|
|
// 判断是否有选中的套餐
|
if (this.tableData.length != 0) {
|
_this.pacId = this.tableData[0].pacId;
|
} else {
|
_this.pacId = "";
|
}
|
|
this.proIds = [];
|
|
// 处理选中的项目
|
const newItemsToAdd = [];
|
const allItems = [...this.DataList, ...this.DataLists]; // 合并所有项目
|
|
allItems.forEach((item) => {
|
if (!this.proIds.includes(item.proId)) {
|
newItemsToAdd.push(item);
|
this.proIds.push(item.proId);
|
}
|
});
|
|
// 准备数据
|
let data = {
|
cusId,
|
pacId: _this.pacId,
|
proIds: this.proIds,
|
};
|
// 根据体检类型选择不同的处理方法
|
if (this.form.firmId) {
|
tuantiqueren(data)
|
.then((response) => {
|
if (response.code == 200) {
|
this.processOrderItems(cusId);
|
}
|
this.isSubmitting = false; // 提交完成后重置标志
|
})
|
.catch(() => {
|
this.isSubmitting = false; // 确保在错误情况下也重置标志
|
});
|
} else {
|
getaddtTransition(data)
|
.then((response) => {
|
if (response.code == 200) {
|
this.processOrderItems(cusId);
|
}
|
this.isSubmitting = false; // 提交完成后重置标志
|
})
|
.catch(() => {
|
this.isSubmitting = false; // 确保在错误情况下也重置标志
|
});
|
}
|
|
this.taocan = false;
|
this.defaultKeys = [];
|
this.DataLists = [];
|
},
|
|
// 处理订单项目
|
processOrderItems(cusId) {
|
getTransitionList1(cusId).then((response) => {
|
this.tableData1 = response.data;
|
let Price = 0;
|
if (this.tableData1) {
|
this.tableData1.forEach((item) => {
|
if (item.tjCategory != null) {
|
this.tjCategory = item.tjCategory;
|
}
|
if (item.pacName == "单项") {
|
item.list.forEach((item9) => {
|
this.treeList.push(item9.proId);
|
});
|
}
|
this.TotalPrice1 += item.ordPrice || 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.list1 = false;
|
this.list3 = true;
|
this.list2 = false;
|
} else {
|
this.list1 = true;
|
this.TotalPrice = 0;
|
}
|
});
|
},
|
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;
|
}
|
|
// 去空格处理
|
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.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) {
|
this.selectionList = this.$refs.multipleTable.selection;
|
this.selectionList.forEach((item) => {
|
this.formIn.name = item.tjName;
|
this.formIn.phone = item.tjPhone;
|
this.OrderId = item.tjOrderId;
|
if (item.tjFlowingWater != null) {
|
this.waterId = item.tjFlowingWater.waterId;
|
this.tollCollectorName = item.tjFlowingWater.updateBy;
|
this.tjSerialNumber = item.tjFlowingWater.tjSerialNumber;
|
}
|
this.customer = {
|
cusIdcard: item.idCard,
|
cusName: item.tjName,
|
cusPhone: item.tjPhone,
|
cusSex: item.sex === "男" ? "0" : "1",
|
};
|
if (item.tjComp != null) {
|
this.standard = {
|
company: item.tjComp,
|
tjType: item.tjType === "团队" ? "1" : "2",
|
};
|
} else {
|
this.standard = {
|
tjType: item.tjType === "团队" ? "1" : "2",
|
};
|
}
|
});
|
if (selection.length > 1) {
|
let del_row = selection.shift();
|
this.$refs.multipleTable.toggleRowSelection(del_row, false);
|
}
|
let data = {
|
type: "0",
|
OrderId: this.OrderId,
|
};
|
getByTjNum(data).then((response) => {
|
if (response.data) {
|
this.Chargesubitem = response.data;
|
this.formInline.price = 0;
|
this.adviceList = [];
|
if (this.Chargesubitem.length != 0) {
|
this.Chargesubitem.forEach((item) => {
|
this.adviceList.push({
|
proId: item.proId,
|
proName: item.proName,
|
});
|
if (this.formInline.price) {
|
this.formInline.price += item.proOrdPrice;
|
this.formInline.paidIn += item.proPrice;
|
} else {
|
this.formInline.price = item.proOrdPrice;
|
this.formInline.paidIn = item.proPrice;
|
}
|
});
|
const r = /^\+?[0-9][0-9]*$/; //正整数(可以以打头)
|
//const r=/^\+?[1-9][0-9]*$/;//正整数
|
if (r.test(this.formInline.paidIn)) {
|
this.formInline.paidIn = this.formInline.paidIn + ".00";
|
}
|
this.discount =
|
(this.formInline.paidIn / this.formInline.price) * 10;
|
} else {
|
this.discount = 10;
|
this.formInline.paidIn = "0.00";
|
}
|
|
this.total = response.data.total;
|
} else {
|
this.tableList = [];
|
}
|
});
|
},
|
// 收费
|
SubmitEvent() {
|
if (this.feeitems.length != 0) {
|
this.refundPros.push(
|
{ standard: this.standard },
|
{ adviceList: this.adviceList }
|
);
|
let data = {
|
paidIn: this.formInline.paidIn,
|
discount: this.discount,
|
copeWith: this.formInline.price,
|
waterId: this.waterId,
|
tollCollectorName: this.tollCollectorName,
|
tjSerialNumber: this.tjSerialNumber,
|
payType: this.formInline.payType,
|
customer: this.customer,
|
refundPros: this.refundPros,
|
orderId: this.OrderId,
|
};
|
getwater(data).then((res) => {
|
if (res.msg != "该订单已付款 无须再付") {
|
this.mobanId = res.data.mobanId;
|
this.waterId = res.data.waterId;
|
this.$modal.msgSuccess("操作成功");
|
this.charge = false;
|
this.isDisabled = false;
|
this.top = true;
|
this.reset();
|
getPrintSetUp().then((res) => {
|
if (res.msg == "0") {
|
this.$nextTick(() => {
|
const style =
|
"@media print { @page{margin:0 10mm,size:4mm 6mm;}};"; //打印时去掉眉页眉尾
|
printJS({
|
printable: "printBill", // 标签元素id
|
noPrint: ".noPrint",
|
type: "html",
|
header: "",
|
targetStyles: ["*"],
|
maxWidth: "800",
|
scanStyles: true, //打印必须加上,不然页面上的css样式无效
|
style,
|
});
|
});
|
} else {
|
const tjnumber = this.tjNumbers;
|
const viewNum = "809623418249637888";
|
const params = { viewNum, tjnumber };
|
this.$tab.openPage("个人发票", "/report/charge", params);
|
}
|
});
|
} else {
|
this.$message({
|
type: "warning ",
|
message: "查询到您已退款,请您重新预约!",
|
});
|
}
|
});
|
} else {
|
this.$message({
|
type: "warning ",
|
message: "请先查询客户信息!",
|
});
|
}
|
},
|
|
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;
|
const viewNum = "792931586196398080";
|
const params = { viewNum, tjNumber };
|
this.$tab.openPage("导诊单", "/report/breDailyReport", params);
|
this.confirm = true;
|
});
|
this.$tab.refreshPage();
|
},
|
|
// 最后提交按钮
|
submitPrice() {
|
let _this = this;
|
this.loadingSubmit = true;
|
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;
|
}
|
|
//tjOrderList//这个是处理完的每一项套餐信息
|
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 };
|
const newArray = this.tableData1
|
.filter((item) => item.discount < 10) // 过滤出 discount < 10 的项
|
.map((item) => ({
|
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) {
|
data = {
|
photo: this.srcUrl,
|
pacId,
|
tjOrderList: this.tjOrderList,
|
tjFlowingWater: this.tjFlowingWater,
|
userId,
|
tjType,
|
tjCategory: this.tjCategory,
|
firmId: this.form.firmId,
|
firmName: this.form.firmName,
|
firmDeptName: this.form.firmDeptName,
|
};
|
|
this.listgetOrder(data);
|
} else if (pacId || this.tjOrderList.length > 0) {
|
data = {
|
photo: this.srcUrl,
|
tjOrderList: this.tjOrderList,
|
tjFlowingWater: this.tjFlowingWater,
|
userId,
|
tjType,
|
tjCategory: this.tjCategory,
|
firmId: this.form.firmId,
|
firmName: this.form.firmName,
|
firmDeptName: this.form.firmDeptName,
|
};
|
this.listgetOrder(data);
|
} else {
|
this.loadingSubmit = false;
|
this.$message({
|
type: "warning ",
|
message: "请选择套餐!",
|
});
|
}
|
} else {
|
this.loadingSubmit = false;
|
this.$modal.msgError("改变折扣错误");
|
}
|
});
|
} else {
|
this.loadingSubmit = false;
|
this.$modal.msgError("请选择体检类别");
|
}
|
},
|
},
|
};
|
</script>
|
|
<style>
|
.el-form-item__error {
|
display: none;
|
}
|
|
.el-col-19 {
|
width: 80.166667%;
|
}
|
|
.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;
|
}
|
|
.tab4 {
|
width: 100%;
|
display: flex;
|
}
|
|
.tab3 {
|
border: 1px solid #dcdfe6;
|
}
|
|
.filter-tree {
|
overflow-y: auto;
|
/* 保留纵向滚动条 */
|
overflow-x: hidden;
|
/* 隐藏横向滚动条 */
|
height: 350px;
|
}
|
|
.tab2 {
|
width: 750px;
|
border: 1px solid #d9d9d9;
|
height: 490px;
|
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 {
|
margin-left: 35px;
|
width: 980px;
|
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;
|
}
|
|
.dialog-footer2 {
|
width: 960px;
|
height: 36px;
|
display: flex;
|
justify-content: center;
|
}
|
|
.el-input--suffix .el-input__inner {
|
padding-right: 15px;
|
}
|
|
.el-date-editor.el-input,
|
.el-date-editor.el-input__inner {
|
width: 95.9%;
|
}
|
|
/* .el-dialog {
|
width: 1000px;
|
min-height: 500px;
|
}
|
.el-dialog__header {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
.el-dialog__body {
|
padding: 0;
|
} */
|
.container {
|
display: flex;
|
align-items: center;
|
justify-content: flex-start;
|
}
|
|
.content {
|
margin-bottom: 25px;
|
}
|
|
.tab8 {
|
width: 100%;
|
display: flex;
|
}
|
|
/* .tab3 {
|
overflow-y: auto;
|
}
|
|
.tab3::-webkit-scrollbar {
|
width: 0px;
|
background: transparent;
|
}
|
|
.tab3::-webkit-scrollbar-thumb {
|
background: transparent;
|
} */
|
</style>
|