New file |
| | |
| | | <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" label-width="100px"> |
| | | <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="educationLevel" label-width="106px"> |
| | | <el-input :disabled="isDisabled" v-model="form.educationLevel" placeholder="请输入文化程度" /> |
| | | </el-form-item> |
| | | <el-form-item label="查体分类" prop="examCategory" label-width="99px"> |
| | | <el-input :disabled="isDisabled" v-model="form.examCategory" placeholder="请输入查体分类" /> |
| | | </el-form-item> |
| | | <el-form-item label="接害工龄年" prop="hazardYears" label-width="104px"> |
| | | <el-input :disabled="isDisabled" v-model="form.hazardYears" placeholder="请输入接害工龄年" type="number" /> |
| | | </el-form-item> |
| | | <el-form-item label="接害工龄月" prop="hazardMonths" label-width="106px"> |
| | | <el-input :disabled="isDisabled" v-model="form.hazardMonths" placeholder="请输入接害工龄月" type="number" /> |
| | | </el-form-item> |
| | | <el-form-item label="开始接害日期" prop="hazardStartDate" label-width="100px"> |
| | | <el-date-picker :disabled="isDisabled" clearable v-model="form.hazardStartDate" type="date" |
| | | value-format="yyyy-MM-dd" placeholder="请选择开始接害日期" style="width: 93%" /> |
| | | </el-form-item> |
| | | <el-form-item label="工号" label-width="103px"> |
| | | <el-input :disabled="isDisabled" v-model="form.wenHua" placeholder="请输入工号" /> |
| | | </el-form-item> |
| | | <el-form-item label="车间" label-width="106px"> |
| | | <el-input :disabled="isDisabled" v-model="form.wenHua" placeholder="请输入车间" /> |
| | | </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" |
| | | @submit.native.prevent="handle"> |
| | | <el-form-item label="套餐名称" prop="pacName"> |
| | | <el-input v-model="queryParam.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handle" /> |
| | | </el-form-item> |
| | | <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="实收金额"> |
| | | </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", |
| | | ], |
| | | 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: { |
| | | educationLevel: "", // 文化程度 |
| | | examCategory: "", // 查体分类 |
| | | hazardYears: "", // 接害工龄年 |
| | | hazardMonths: "", // 接害工龄月 |
| | | hazardStartDate: "", // 开始接害日期 |
| | | 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" }], |
| | | cusIdcard: [{ required: true, message: "", trigger: "change" }], |
| | | }, |
| | | rules1: { |
| | | cnName: [{ required: true, trigger: "blur" }], |
| | | contactPerson: [{ required: true, trigger: "blur" }], |
| | | contactPhone: [ |
| | | { |
| | | required: true, |
| | | 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) { |
| | | // console.log(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)).toNumber(); |
| | | this.discount = |
| | | (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * |
| | | 10; |
| | | }); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | handleManualChange(row) { |
| | | console.log("这是主动出发的"); |
| | | 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)).toNumber(); |
| | | |
| | | this.discount = |
| | | (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; |
| | | }, |
| | | updateProPrice1(row) { |
| | | console.log("进入了1", 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; |
| | | let values = value.toLowerCase(); |
| | | if (data.proEngName.indexOf(values) !== -1) return true; |
| | | // 匹配小写 |
| | | let arr = data.proName.spell('low', 'array'); |
| | | let spell = arr.join(''); |
| | | let lengths = [0]; |
| | | for (var i = 0; i < arr.length - 1; i++) { |
| | | lengths.push(lengths[i] + arr[i].length); |
| | | }; |
| | | //判断label完整拼音 中 输入值的 index 是不是等于某个汉字第一个拼音字母的index值 |
| | | if (lengths.indexOf(spell.indexOf(value)) !== -1) return true |
| | | // 大写 |
| | | let arrUp = data.proName.spell('up', 'array'); |
| | | let spellUp = arrUp.join(''); |
| | | let lengthsUp = [0]; |
| | | for (var i = 0; i < arrUp.length - 1; i++) { |
| | | lengthsUp.push(lengthsUp[i] + arrUp[i].length); |
| | | }; |
| | | return lengthsUp.indexOf(spellUp.indexOf(value)) !== -1; |
| | | }, |
| | | filterpackage(value, data) { |
| | | if (!value) return true; |
| | | if (data.zhmc.indexOf(value) !== -1) { |
| | | return data.zhmc.indexOf(value) !== -1; |
| | | } else { |
| | | let values = value.toLowerCase(); |
| | | return data.pym.indexOf(values) !== -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) => { |
| | | 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)).toNumber(); |
| | | }); |
| | | }) |
| | | .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.dict.type.dict_team.forEach((item) => { |
| | | if (item.label == "团队") { |
| | | this.form.tjType = item.value; |
| | | } |
| | | }) |
| | | // 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) { |
| | | let name = this.name.toLowerCase() |
| | | getPackageListName(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) { |
| | | console.log(11222) |
| | | getTransitionList1(cusId).then((response) => { |
| | | this.tableData1 = response.data; |
| | | let Price = 0; |
| | | if (this.tableData1) { |
| | | this.tableData1.forEach((item) => { |
| | | if (typeof item.nowPrice === 'number') { |
| | | item.nowPrice = Number(item.nowPrice.toFixed(3)); |
| | | } |
| | | 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; // 累加应收金额 |
| | | // this.TotalPrice += item.nowPrice || 0; |
| | | Price += item.nowPrice || 0; // 累加实收金额 |
| | | this.TotalPrice = Price.toFixed(2); |
| | | }); |
| | | console.log(this.TotalPrice1, this.TotalPrice) |
| | | // 计算折扣 |
| | | 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) { |
| | | getOrder(data).then((res) => { |
| | | 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> |