You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2508 lines
81 KiB
2508 lines
81 KiB
<template>
|
|
<div>
|
|
<!--组件主体-->
|
|
<div style="display: flex">
|
|
<div
|
|
:style="'width:' + (window.pageWidth - 200 - 145) + 'px;'"
|
|
@contextmenu.prevent="onContextmenu"
|
|
>
|
|
<div>
|
|
<u-table
|
|
:data="tableData"
|
|
border
|
|
:height="
|
|
window.pageHeight < 600
|
|
? 248
|
|
: Math.floor(((window.pageHeight - 250) * 2) / 3)
|
|
"
|
|
highlight-current-row
|
|
@row-click="rowClick"
|
|
size="small"
|
|
row-key="id"
|
|
@selection-change="handleSelectionChange"
|
|
@row-contextmenu="onCellRightClick"
|
|
ref="info"
|
|
id="info"
|
|
:row-class-name="handleRowClassName"
|
|
use-virtual
|
|
:row-height="30"
|
|
@table-body-scroll="scrollFull"
|
|
big-data-checkbox
|
|
:data-changes-scroll-top="false"
|
|
>
|
|
<u-table-column
|
|
type="selection"
|
|
width="40"
|
|
align="center"
|
|
></u-table-column>
|
|
<u-table-column
|
|
v-for="(item, index) in dragCol"
|
|
:key="index"
|
|
:type="dragCol[index].type"
|
|
:min-width="dragCol[index].minWidth"
|
|
:align="dragCol[index].align"
|
|
:label="item.label"
|
|
:prop="dragCol[index].prop"
|
|
:sortable="
|
|
dragCol[index].type || dragCol[index].prop == 'sn'
|
|
? false
|
|
: true
|
|
"
|
|
>
|
|
<template slot-scope="scope" v-if="!dragCol[index].type">
|
|
<div v-if="!dragCol[index].type">
|
|
<div v-if="dragCol[index].prop == 'sn'">
|
|
{{ scope.$index + 1 }}
|
|
</div>
|
|
<div
|
|
v-else-if="dragCol[index].prop == 'completeFlag'"
|
|
:style="`color: ${setPrStatusColor(
|
|
scope.row.isAudit,
|
|
scope.row.completeFlag
|
|
)}`"
|
|
>
|
|
{{
|
|
scope.row.isAudit == "Y"
|
|
? "已审核"
|
|
: dddw(
|
|
dict.completeFlag,
|
|
"id",
|
|
scope.row.completeFlag,
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'qztlType'">
|
|
{{
|
|
dddw(
|
|
dict.qztlType,
|
|
"id",
|
|
scope.row.qztlType,
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'guidePrintTimes'">
|
|
<i
|
|
class="el-icon-printer"
|
|
v-if="scope.row.guidePrintTimes > 0"
|
|
style="font-size: 20px; color: green"
|
|
/>
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'isLock'">
|
|
<i
|
|
class="el-icon-lock"
|
|
v-if="scope.row.isLock == 'Y'"
|
|
style="font-size: 20px; color: red"
|
|
/>
|
|
</div>
|
|
<div
|
|
v-else-if="
|
|
dragCol[index].prop == 'isVip' ||
|
|
dragCol[index].prop == 'isUpload' ||
|
|
dragCol[index].prop == 'qztlIsMain' ||
|
|
dragCol[index].prop == 'qztlIsCy' ||
|
|
dragCol[index].prop == 'qztlIsCw' ||
|
|
dragCol[index].prop == 'qztlIsGt' ||
|
|
dragCol[index].prop == 'qztlIsWh' ||
|
|
dragCol[index].prop == 'qztlIsFj'
|
|
"
|
|
>
|
|
{{ scope.row[dragCol[index].prop] == "Y" ? "是" : "否" }}
|
|
</div>
|
|
|
|
<div
|
|
v-else-if="dragCol[index].prop == 'customerOrgParentName'"
|
|
>
|
|
{{
|
|
scope.row.customerOrgParentName
|
|
? scope.row.customerOrgParentName
|
|
: scope.row.customerOrgName
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'sexId'">
|
|
{{
|
|
dddw(
|
|
dict.sex,
|
|
"id",
|
|
scope.row[dragCol[index].prop],
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'groupPack'">
|
|
<div
|
|
v-if="
|
|
scope.row.medicalPackageId !== dict.personOrgId &&
|
|
scope.row.customerOrgId === dict.personOrgId
|
|
"
|
|
>
|
|
{{
|
|
dddw(
|
|
dict.medicalPackage,
|
|
"id",
|
|
scope.row.medicalPackageId,
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div
|
|
v-if="
|
|
scope.row.medicalPackageId !== dict.personOrgId &&
|
|
scope.row.customerOrgId !== dict.personOrgId
|
|
"
|
|
>
|
|
{{
|
|
dddw(
|
|
dict.customerOrgGroupAll,
|
|
"id",
|
|
scope.row.customerOrgGroupId,
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'nationId'">
|
|
{{
|
|
dddw(
|
|
dict.nation,
|
|
"id",
|
|
scope.row[dragCol[index].prop],
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'birthDate'">
|
|
{{
|
|
scope.row[dragCol[index].prop]
|
|
? moment(scope.row[dragCol[index].prop]).format(
|
|
"yyyy-MM-DD"
|
|
)
|
|
: ""
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'maritalStatusId'">
|
|
{{
|
|
dddw(
|
|
dict.maritalStatus,
|
|
"id",
|
|
scope.row[dragCol[index].prop],
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'medicalTypeId'">
|
|
{{
|
|
dddw(
|
|
dict.medicalType,
|
|
"id",
|
|
scope.row[dragCol[index].prop],
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'personnelTypeId'">
|
|
{{
|
|
dddw(
|
|
dict.personnelType,
|
|
"id",
|
|
scope.row[dragCol[index].prop],
|
|
"displayName"
|
|
)
|
|
}}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'idNo'">
|
|
{{ scope.row[dragCol[index].prop] }}
|
|
</div>
|
|
<div v-else-if="dragCol[index].prop == 'customerOrgName'">
|
|
{{
|
|
scope.row[dragCol[index].prop] ==
|
|
scope.row["customerOrgParentName"]
|
|
? ""
|
|
: scope.row[dragCol[index].prop]
|
|
}}
|
|
</div>
|
|
<div v-else>
|
|
{{ scope.row[dragCol[index].prop] }}
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</u-table-column>
|
|
|
|
<!--
|
|
"sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
|
|
"interposeMeasure": null,
|
|
"medicalConclusionId": "00000000-0000-0000-0000-000000000000",
|
|
"reportPrintTimes": 0,
|
|
"isMedicalStart": "N",
|
|
"medicalStartDate": "6/28/2023",
|
|
"isRecoverGuide": "N",
|
|
"summaryDate": "",
|
|
"summaryDoctor": null,
|
|
"isAudit": "N",
|
|
"auditDoctor": null,
|
|
"auditDate": "",
|
|
"isNameHide": "N",
|
|
"isPhoneFollow": "N",
|
|
"thirdInfo": null,
|
|
"guidePrintTimes": null,
|
|
"remark": null,
|
|
"medicalCenterId": "00000000-0000-0000-0000-000000000000",
|
|
"customerOrgRegisterId": "00000000-0000-0000-0000-000000000000",
|
|
"lastModifierName": "",
|
|
"lastModificationTime": null,
|
|
"lastModifierId": null,
|
|
"creatorId": null,
|
|
"id": "3a0c196d-a6d0-37fe-5c32-4806bdc4530f"
|
|
-->
|
|
</u-table>
|
|
<div style="display: flex; justify-content: space-between">
|
|
<div></div>
|
|
<div>
|
|
<span style="font-size: 12px"
|
|
>共:{{ loadOpts.totalCount }} 条记录,当前显示:{{
|
|
tableData.length
|
|
}}
|
|
条。</span
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 组合项目 基本信息 -->
|
|
<el-tabs v-model="tabChoosed" style="margin-top: -22px">
|
|
<!-- 组合项目 -->
|
|
<el-tab-pane label="已选组合项目" name="1">
|
|
<PatientRegisterAsbItem />
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</div>
|
|
<div style="margin-left: 10px">
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '导入青藏数据')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type="success"
|
|
class="commonbutton"
|
|
@click="btnImportOrgData"
|
|
>导入青藏数据</el-button
|
|
>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '人员登记')" class="listBtn">
|
|
<el-button type="success" class="commonbutton" @click="btnAdd"
|
|
>人员登记</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '批量正式登记')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type="success"
|
|
class="commonbutton"
|
|
@click="btnAddBatch('1')"
|
|
>批量正式登记</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '批量转预登记')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type="success"
|
|
class="commonbutton"
|
|
@click="btnAddBatch('0')"
|
|
>批量转预登记</el-button
|
|
>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '编辑')" class="listBtn">
|
|
<el-button type="primary" class="commonbutton" @click="btnEdit"
|
|
>编辑</el-button
|
|
>
|
|
</div>
|
|
<div v-show="checkPagePriv(pagePriv.privs, '删除')" class="listBtn">
|
|
<el-button type="danger" class="deleteButton" @click="btnDel"
|
|
>删除</el-button
|
|
>
|
|
</div>
|
|
<!--
|
|
<div class="listBtn">
|
|
<el-button
|
|
type=""
|
|
class="btnClass"
|
|
@click="openCamera"
|
|
icon="el-icon-camera"
|
|
>拍照</el-button
|
|
>
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="" class="btnClass commonbutton">健康档案</el-button>
|
|
</div>
|
|
-->
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '批量调整分组')"
|
|
class="listBtn"
|
|
>
|
|
<el-button type="" class="commonbutton" @click="btnGroupBatch"
|
|
>批量调整分组</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '批量调整项目')"
|
|
class="listBtn"
|
|
>
|
|
<el-button type="" class="commonbutton" @click="btnAsbBatch"
|
|
>批量调整项目</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '指引单打印')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type=""
|
|
class="commonbutton"
|
|
@click="guidePrint('0001', false)"
|
|
>指引单打印</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '指引单预览')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type=""
|
|
class="commonbutton"
|
|
@click="guidePrint('0001', true)"
|
|
>指引单预览</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '人员检验检查条码')"
|
|
class="listBtn"
|
|
>
|
|
<el-button
|
|
type=""
|
|
class="commonbutton"
|
|
@click="printPromise()"
|
|
style="font-size: 12px"
|
|
>人员检验检查条码</el-button
|
|
>
|
|
</div>
|
|
<div
|
|
v-show="checkPagePriv(pagePriv.privs, '人员信息导出')"
|
|
class="listBtn"
|
|
>
|
|
<download-excel
|
|
:fields="jsonFields"
|
|
:fetch="btnExport"
|
|
type="xls"
|
|
:name="tableName"
|
|
>
|
|
<el-button type="" style="width:100%">人员信息导出</el-button>
|
|
</download-excel>
|
|
<!-- <el-button type="" class="commonbutton" @click="btnExport('info')">人员信息导出</el-button> -->
|
|
</div>
|
|
<div class="listBtn">
|
|
<el-button type="" class="commonbutton" @click="btnDragColDesign"
|
|
>设计列排序</el-button
|
|
>
|
|
</div>
|
|
<!-- elProgress.display dialogWin.LocalConfig
|
|
<div class="listBtn">
|
|
<el-button type="" class="commonbutton" @click="dialogWin.LocalConfig = true">本地设置</el-button>
|
|
</div>
|
|
-->
|
|
<!--
|
|
<div class="listBtn">
|
|
<el-button type="" class="btnClass commonbutton" @click="rowSelected(tableData)">选中</el-button>
|
|
</div>
|
|
--></div>
|
|
</div>
|
|
<!--组件弹窗-->
|
|
<div>
|
|
<!-- 体检人员登记 :title="patientRegister.patientRegisterRd.id ? '体检人员--编辑' : '体检人员--新增'" -->
|
|
<el-dialog
|
|
:title="
|
|
dataTransOpts.tableS.patient_register.id
|
|
? '体检人员--编辑'
|
|
: '体检人员--新增'
|
|
"
|
|
:visible.sync="dialogWin.PatientRegisterEdit"
|
|
:close-on-click-modal="false"
|
|
fullscreen
|
|
@close="close_dialogWin_PatientRegisterEdit"
|
|
>
|
|
<!-- :formInitData="patientRegister.patientRegisterRd" -->
|
|
<PatientRegisterEdit
|
|
:isDoctor="'1'"
|
|
:patientRegisterId="patientRegister.patientRegisterRd.id"
|
|
:editTimes="editTimes"
|
|
:refFuncSetData="refFuncSetData"
|
|
/>
|
|
</el-dialog>
|
|
|
|
<!-- 修改信息 -->
|
|
<el-dialog
|
|
:title="`修改信息--${upBaseInfo.label}`"
|
|
:visible.sync="upBaseInfo.visble"
|
|
width="400"
|
|
:show-close="false"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<div>
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
<span style="padding: 5px 0 0 10px; width: 100px">{{
|
|
upBaseInfo.label
|
|
}}</span>
|
|
<el-input v-model="upBaseInfo.value" size="small"></el-input>
|
|
</div>
|
|
<div style="display: flex; justify-content: space-between">
|
|
<div></div>
|
|
<div>
|
|
<el-button class="commonbutton" @click="btnUpBaseInfo"
|
|
>提交</el-button
|
|
>
|
|
<el-button
|
|
class="commonbutton"
|
|
@click="close_dialogWin_upBaseInfo"
|
|
>关闭</el-button
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<el-dialog
|
|
title="修改信息--体检日期"
|
|
:visible.sync="dialogEditMedicalStartDate"
|
|
width="400"
|
|
:show-close="false"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<div>
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
<span style="padding: 5px 0 0 10px; width: 100px">体检日期</span>
|
|
<el-date-picker
|
|
v-model="upBaseInfo.medicalStartDate"
|
|
type="date"
|
|
placeholder="体检日期"
|
|
size="small"
|
|
value-format="yyyy-MM-dd"
|
|
:picker-options="pickerOptions"
|
|
/>
|
|
</div>
|
|
<div style="display: flex; justify-content: space-between">
|
|
<div></div>
|
|
<div>
|
|
<el-button class="commonbutton" @click="btnEditMedicalStartDate"
|
|
>提交</el-button
|
|
>
|
|
<el-button
|
|
class="commonbutton"
|
|
@click="dialogEditMedicalStartDate = false"
|
|
>关闭</el-button
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- 分诊排队 -->
|
|
<el-dialog
|
|
title="分诊排队"
|
|
:visible.sync="dialogWin.queue"
|
|
width="800px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<Queue :refParams="queueParams" />
|
|
</el-dialog>
|
|
|
|
<!-- 拍照 -->
|
|
<el-dialog
|
|
title="拍照"
|
|
:visible.sync="patientRegister.cameraVisble"
|
|
width="400"
|
|
height="800"
|
|
:show-close="false"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<Camera :id="patientRegister.patientRegisterId" />
|
|
</el-dialog>
|
|
|
|
<!-- 导入企业数据 -->
|
|
<el-dialog
|
|
title="导入企业数据"
|
|
:visible.sync="dialogWin.ImportOrgData"
|
|
width="800px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<ImportOrgData />
|
|
</el-dialog>
|
|
|
|
<!-- 列排序 -->
|
|
<el-dialog
|
|
title="列排序"
|
|
:visible.sync="dialogColSort"
|
|
width="300px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<el-table
|
|
id="elTable_dragCol"
|
|
:data="dragColDesign"
|
|
row-key="prop"
|
|
border
|
|
height="600"
|
|
>
|
|
<el-table-column type="index" label="序号" width="40" align="center">
|
|
</el-table-column>
|
|
<el-table-column
|
|
label="列名"
|
|
prop="label"
|
|
min-width="120"
|
|
align="center"
|
|
></el-table-column>
|
|
</el-table>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button class="commonbutton" @click="dialogColSort = false"
|
|
>取消</el-button
|
|
>
|
|
<el-button class="commonbutton" @click="btnDragColDesignOk"
|
|
>确定</el-button
|
|
>
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<!-- 批量调整分组 -->
|
|
<el-dialog
|
|
title="批量调整分组"
|
|
:visible.sync="dialogWin.PatientRegisterEditGroupBatch"
|
|
width="600px"
|
|
height="800px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<PatientRegisterEditGroupBatch :multipleSelection="multipleSelection" />
|
|
</el-dialog>
|
|
|
|
<!-- 批量调整项目 -->
|
|
<el-dialog
|
|
title="批量调整项目"
|
|
:visible.sync="dialogWin.PatientRegisterEditItemBatch"
|
|
width="610px"
|
|
height="800px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<PatientRegisterEditItemBatch :multipleSelection="multipleSelection" />
|
|
</el-dialog>
|
|
|
|
<!-- 批量调整检查项目医生 -->
|
|
<el-dialog
|
|
title="批量调整检查项目医生"
|
|
:visible.sync="dialogWin.PatientRegisterEditDoctorBatch"
|
|
width="610px"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
>
|
|
<PatientRegisterEditDoctorBatch
|
|
:multipleSelection="multipleSelection"
|
|
/>
|
|
</el-dialog>
|
|
|
|
<!-- 通用进度条 -->
|
|
<el-dialog
|
|
title="数据处理中……"
|
|
:visible.sync="elProgress.display"
|
|
width="600px"
|
|
height="400"
|
|
:show-close="false"
|
|
:close-on-click-modal="false"
|
|
:append-to-body="true"
|
|
>
|
|
<ElProgressOCX />
|
|
</el-dialog>
|
|
|
|
<!--通用本地参数设置-->
|
|
<el-dialog
|
|
title="本地参数设置"
|
|
:visible.sync="dialogWin.LocalConfig"
|
|
:close-on-click-modal="false"
|
|
:append-to-body="true"
|
|
width="800px"
|
|
height="600px"
|
|
>
|
|
<LocalConfig />
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import moment from "moment";
|
|
import { mapState, mapActions } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import Sortable from "sortablejs";
|
|
import FileSaver from "file-saver";
|
|
import html2canvas from "html2canvas";
|
|
import JsonExcel from "vue-json-excel";
|
|
|
|
import {
|
|
getPagePriv,
|
|
checkPagePriv,
|
|
dddw,
|
|
objCopy,
|
|
arrayReduce,
|
|
arrayExistObj,
|
|
deepCopy,
|
|
setPrStatusColor,
|
|
} from "../../utlis/proFunc";
|
|
import { savePeoplePhoto } from "../../utlis/proApi";
|
|
|
|
import PatientRegisterEdit from "../../components/patientRegister/PatientRegisterEdit.vue";
|
|
import Camera from "../../components/patientRegister/Camera.vue";
|
|
import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
|
|
|
|
import ElProgressOCX from "../../components/report/ElProgressOCX.vue";
|
|
import PatientRegisterEditGroupBatch from "./PatientRegisterEditGroupBatch.vue";
|
|
import PatientRegisterEditItemBatch from "./PatientRegisterEditItemBatch.vue";
|
|
import PatientRegisterEditDoctorBatch from "./PatientRegisterEditDoctorBatch.vue";
|
|
import ImportOrgData from "./ImportOrgData.vue";
|
|
import LocalConfig from "../../components/common/LocalConfig.vue";
|
|
import Queue from "../../components/queue/Queue.vue";
|
|
import { UTable, UTableColumn } from 'umy-ui';
|
|
export default {
|
|
components: {
|
|
PatientRegisterEdit,
|
|
Camera,
|
|
PatientRegisterAsbItem,
|
|
PatientRegisterEditGroupBatch, // 批量调整分组
|
|
PatientRegisterEditItemBatch, // 批量调整项目
|
|
PatientRegisterEditDoctorBatch, // 批量调整检查项目医生
|
|
ElProgressOCX,
|
|
LocalConfig,
|
|
ImportOrgData,
|
|
Queue,
|
|
DownloadExcel: JsonExcel,
|
|
UTable,
|
|
UTableColumn
|
|
},
|
|
data() {
|
|
return {
|
|
pagePriv: {
|
|
routeUrlorPageName: "patientRegister", //当前页面归属路由或归属页面权限名称
|
|
privs: [], // 页面权限
|
|
},
|
|
peisid: null,
|
|
startPoint: -1, // 多选起点 -1 表示选择
|
|
endPoint: -1, // 多选终点 -1 表示未选择
|
|
|
|
tableData: [], //表格数据
|
|
tableDataCurrentRow: {}, // 当前被选中的行
|
|
|
|
multipleSelection: [], //选中的数据列表
|
|
|
|
dialogCamera: false,
|
|
tabChoosed: "1",
|
|
formInitData: {}, //体检登记初始表单数据
|
|
editTimes: 0,
|
|
|
|
rClickRow: null, //右击的行
|
|
rClickColumn: null, //右击的列(预留)
|
|
|
|
dragColDesign: [], // 待调整的排序的序
|
|
//拖动列
|
|
dragCol: [
|
|
{ label: "序号", prop: "sn", minWidth: 40, align: "center" },
|
|
{
|
|
label: "体检进度",
|
|
prop: "completeFlag",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "打印",
|
|
prop: "guidePrintTimes",
|
|
minWidth: 55,
|
|
align: "center",
|
|
},
|
|
{ label: "锁住", prop: "isLock", minWidth: 55, align: "center" },
|
|
{
|
|
label: "单位",
|
|
prop: "customerOrgParentName",
|
|
minWidth: 180,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "部门",
|
|
prop: "customerOrgName",
|
|
minWidth: 120,
|
|
align: "center",
|
|
},
|
|
{ label: "姓名", prop: "patientName", minWidth: 80, align: "center" },
|
|
{ label: "性别", prop: "sexId", minWidth: 55, align: "center" },
|
|
{ label: "年龄", prop: "age", minWidth: 55, align: "center" },
|
|
{
|
|
label: "条码号",
|
|
prop: "patientRegisterNo",
|
|
minWidth: 150,
|
|
align: "center",
|
|
},
|
|
{ label: "档案号", prop: "patientNo", minWidth: 100, align: "center" },
|
|
{
|
|
label: "体检次数",
|
|
prop: "medicalTimes",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "分组/套餐",
|
|
prop: "groupPack",
|
|
minWidth: 150,
|
|
align: "center",
|
|
},
|
|
{ label: "民族", prop: "nationId", minWidth: 55, align: "center" },
|
|
{ label: "身份证", prop: "idNo", minWidth: 160, align: "center" },
|
|
{ label: "出生日期", prop: "birthDate", minWidth: 80, align: "center" },
|
|
{ label: "邮箱", prop: "email", minWidth: 150, align: "center" },
|
|
{
|
|
label: "手机",
|
|
prop: "mobileTelephone",
|
|
minWidth: 130,
|
|
align: "center",
|
|
},
|
|
{ label: "电话", prop: "telephone", minWidth: 130, align: "center" },
|
|
{ label: "地址", prop: "address", minWidth: 400, align: "" },
|
|
{
|
|
label: "体检卡号",
|
|
prop: "medicalCardNo",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{ label: "工卡号", prop: "jobCardNo", minWidth: 80, align: "center" },
|
|
{
|
|
label: "婚姻状况",
|
|
prop: "maritalStatusId",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "体检类别",
|
|
prop: "medicalTypeId",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "人员类别",
|
|
prop: "personnelTypeId",
|
|
minWidth: 80,
|
|
align: "center",
|
|
},
|
|
{ label: "职务", prop: "jobPost", minWidth: 200, align: "center" },
|
|
{ label: "职称", prop: "jobTitle", minWidth: 80, align: "center" },
|
|
{ label: "介绍人", prop: "salesman", minWidth: 80, align: "center" },
|
|
{ label: "是否VIP", prop: "isVip", minWidth: 80, align: "center" },
|
|
{ label: "登记人", prop: "creatorName", minWidth: 80, align: "center" },
|
|
{
|
|
label: "登记日期",
|
|
prop: "creationTime",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{
|
|
label: "体检日期",
|
|
prop: "medicalStartDate",
|
|
minWidth: 140,
|
|
align: "center",
|
|
},
|
|
{ label: "是否上传", prop: "isUpload", minWidth: 80, align: "center" },
|
|
{ label: "高原/健康", prop: "qztlType", minWidth: 90, align: "center" },
|
|
{ label: "行车", prop: "qztlIsMain", minWidth: 50, align: "center" },
|
|
{ label: "从业", prop: "qztlIsCy", minWidth: 50, align: "center" },
|
|
{ label: "普速", prop: "qztlIsCw", minWidth: 50, align: "center" },
|
|
{ label: "高铁", prop: "qztlIsGt", minWidth: 50, align: "center" },
|
|
{ label: "职害", prop: "qztlIsWh", minWidth: 50, align: "center" },
|
|
{ label: "复检", prop: "qztlIsFj", minWidth: 50, align: "center" },
|
|
],
|
|
dialogColSort: false,
|
|
jsonFields: {},
|
|
dom: null, //用于滚动加载数据
|
|
// lazyLoading: false, //是否懒加载中
|
|
loadOpts: {
|
|
totalCount: 0,
|
|
skipCount: 0,
|
|
maxResultCount: 100,
|
|
},
|
|
loadOptsInit: {},
|
|
|
|
upBaseInfo: {
|
|
visble: false,
|
|
label: "姓名",
|
|
value: "",
|
|
colName: "patientName",
|
|
patientRegisterId: "",
|
|
medicalStartDate: "", // 体检日期
|
|
},
|
|
dialogEditMedicalStartDate: false, // 修改体检日期
|
|
queueParams: {}, // 分诊排队参数
|
|
LocalConfig: {
|
|
normal: {
|
|
maxResultCount: 100, //分页时单页记录数
|
|
},
|
|
},
|
|
LocalConfigInit: {},
|
|
tableName:""//导出人员列表表名
|
|
};
|
|
},
|
|
|
|
created() {
|
|
//获取用户当前页面的权限
|
|
let userPriv = window.sessionStorage.getItem("userPriv");
|
|
if (userPriv)
|
|
this.pagePriv.privs = deepCopy(
|
|
getPagePriv(this.pagePriv.routeUrlorPageName)
|
|
);
|
|
|
|
this.LocalConfigInit = deepCopy(this.LocalConfig);
|
|
let LocalConfig = window.localStorage.getItem("LocalConfig") || null;
|
|
// console.log('LocalConfig',LocalConfig)
|
|
try {
|
|
this.LocalConfig = Object.assign(
|
|
{},
|
|
deepCopy(this.LocalConfigInit),
|
|
JSON.parse(LocalConfig) || {}
|
|
);
|
|
} catch (error) {
|
|
console.log('window.localStorage.getItem("LocalConfig")', error);
|
|
}
|
|
// console.log('this.LocalConfig',this.LocalConfig)
|
|
this.loadOpts.maxResultCount = Number(
|
|
this.LocalConfig.normal.maxResultCount || 100
|
|
);
|
|
|
|
this.loadOptsInit = Object.assign({}, this.loadOpts);
|
|
},
|
|
|
|
//挂载完成
|
|
mounted() {
|
|
this.quickAsb = this.dict.asbItemAll;
|
|
|
|
this.peisid = window.sessionStorage.getItem("peisid");
|
|
// if(this.$refs.info){
|
|
// this.$nextTick(() => {
|
|
// this.scrollFull()
|
|
// })
|
|
// }
|
|
},
|
|
computed: {
|
|
...mapState([
|
|
"pickerOptions",
|
|
"window",
|
|
"dataTransOpts",
|
|
"dialogWin",
|
|
"dict",
|
|
"elProgress",
|
|
"patientRegister",
|
|
"customerOrg",
|
|
]),
|
|
},
|
|
methods: {
|
|
...mapActions(["getCustomerOrgGroup", "getPatientRegisterAbs"]),
|
|
moment,
|
|
dddw,
|
|
deepCopy,
|
|
checkPagePriv,
|
|
setPrStatusColor,
|
|
|
|
// 扩展定义表格行样式
|
|
handleRowClassName({ row, rowIndex }) {
|
|
// highLightBg 为 'selected'的高亮
|
|
//// console.log(rowIndex, row)
|
|
//return row.highLightBg == 'selected' ? 'high-light-bg' : '';
|
|
if (row.choosed) {
|
|
return "current-row";
|
|
} else {
|
|
return "";
|
|
}
|
|
},
|
|
|
|
// 行选择
|
|
rowSelected(rows) {
|
|
rows.forEach((e) => {
|
|
this.$refs["info"].toggleRowSelection(e, true);
|
|
});
|
|
},
|
|
|
|
refFuncSetData(item, v) {
|
|
setData(this, item, v);
|
|
},
|
|
|
|
// 打印指引单(isPreview)
|
|
async guidePrint(ReportCode, isPreview) {
|
|
if (!this.$peisAPI) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "此功能,需要在壳客户端才可运行!",
|
|
});
|
|
return;
|
|
}
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "N",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "hisLog", Value: "pic/hisLog.jpg" },
|
|
{ Name: "pageFooter", Value: "pic/peisQrCode.jpg" },
|
|
],
|
|
};
|
|
let lfind = -1;
|
|
|
|
//选中(取消勾选)start -------------------------
|
|
// this.multipleSelection = []
|
|
// this.tableData.forEach(e => {
|
|
// if (e.choosed) {
|
|
// this.multipleSelection.push(deepCopy(e))
|
|
// }
|
|
// })
|
|
//选中(取消勾选) end -------------------------
|
|
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "请勾选要打印指引单的人员记录!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (isPreview) {
|
|
/*
|
|
//this.multipleSelection.forEach((item,index) =>{
|
|
postapi(
|
|
`/api/app/printreport/getpatientregisterguidereport?PatientRegisterId=${this.multipleSelection[0].id}`
|
|
)
|
|
.then((res) => {
|
|
if (res.code != -1) {
|
|
toOutShell.ReportTable = res.data;
|
|
// console.log(
|
|
"JSON.stringify(toOutShell)",
|
|
JSON.stringify(toOutShell)
|
|
);
|
|
return this.$peisAPI.printPre(JSON.stringify(toOutShell));
|
|
}
|
|
})
|
|
.then(res => {
|
|
// console.log('this.$peisAPI.printPre', res)
|
|
if (JSON.parse(res).code < 0) {
|
|
this.$message.warning(JSON.parse(res).message);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
// console.log('打印指引单', err)
|
|
this.$message.warning({ showClose: true, message: err });
|
|
});
|
|
*/
|
|
toOutShell.BusinessCode = this.multipleSelection[0].id;
|
|
if (this.multipleSelection[0].completeFlag == "0") {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "预登记人员,不可执行此操作!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
this.$peisAPI
|
|
.printPre(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
if (JSON.parse(res).code < 0) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: JSON.parse(res).message,
|
|
});
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
// console.log('打印指引单', err)
|
|
this.$message.warning({ showClose: true, message: `${err}` });
|
|
});
|
|
} else {
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
for (let i = 0; i < this.multipleSelection.length; i++) {
|
|
try {
|
|
let patientregisterId = this.multipleSelection[i].id;
|
|
if (this.multipleSelection[i].completeFlag == "0") {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: `${this.multipleSelection[i].patientName} 为预登记人员,不可打印指引单`,
|
|
});
|
|
continue;
|
|
}
|
|
toOutShell.BusinessCode = patientregisterId;
|
|
let resPeisAPI = await this.$peisAPI.print(
|
|
JSON.stringify(toOutShell)
|
|
);
|
|
if (JSON.parse(resPeisAPI).code < 0) continue;
|
|
let resPrintTimes = await postapi(
|
|
"/api/app/patientregister/updatepatientregisterguideprinttimesmany",
|
|
[patientregisterId]
|
|
);
|
|
if (resPrintTimes.code == -1) continue;
|
|
lfind = arrayExistObj(this.tableData, "id", patientregisterId);
|
|
if (lfind > -1) {
|
|
if (this.tableData[lfind].guidePrintTimes) {
|
|
this.tableData[lfind].guidePrintTimes =
|
|
Number(this.tableData[lfind].guidePrintTimes) + 1;
|
|
} else {
|
|
this.tableData[lfind].guidePrintTimes = 1;
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// console.log('打印指引单', error)
|
|
this.$message.warning({ showClose: true, message: `${error}` });
|
|
}
|
|
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.multipleSelection.length
|
|
);
|
|
}
|
|
this.elProgress.display = false;
|
|
}
|
|
},
|
|
|
|
// 指引单新打印方式,promise
|
|
guidePrintPromise(ReportCode, isPreview, row) {
|
|
return new Promise((resolve, reject) => {
|
|
if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "N",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "hisLog", Value: "pic/hisLog.jpg" },
|
|
{ Name: "pageFooter", Value: "pic/peisQrCode.jpg" },
|
|
],
|
|
};
|
|
|
|
if (!row.completeFlag || row.completeFlag == "0")
|
|
reject("预登记人员,不可执行此操作!");
|
|
toOutShell.BusinessCode = row.id;
|
|
console.log(JSON.stringify(toOutShell));
|
|
if (isPreview) {
|
|
this.$peisAPI
|
|
.printPre(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1) {
|
|
resolve(lres);
|
|
} else {
|
|
reject(lres.message);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
} else {
|
|
this.$peisAPI
|
|
.print(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1) {
|
|
return postapi(
|
|
"/api/app/patientregister/updatepatientregisterguideprinttimesmany",
|
|
[row.id]
|
|
);
|
|
} else {
|
|
reject(lres.message);
|
|
}
|
|
})
|
|
.then((res) => {
|
|
if (res && res.code > -1) {
|
|
let lfind = arrayExistObj(this.tableData, "id", row.id);
|
|
if (lfind > -1) {
|
|
if (this.tableData[lfind].guidePrintTimes) {
|
|
this.tableData[lfind].guidePrintTimes =
|
|
Number(this.tableData[lfind].guidePrintTimes) + 1;
|
|
} else {
|
|
this.tableData[lfind].guidePrintTimes = 1;
|
|
}
|
|
}
|
|
}
|
|
resolve(res);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
printGuideLisPacs(row) {
|
|
return new Promise((resolve, reject) => {
|
|
this.guidePrintPromise("0008", false, row)
|
|
.then((res) => {
|
|
return this.lisPrint(row, "0002", false);
|
|
})
|
|
.then((res) => {
|
|
return this.pacsPrint(row, "0004", false);
|
|
})
|
|
.then((res) => {
|
|
resolve(res);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
},
|
|
|
|
async printPromise() {
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "请勾选要打印人员检验检查条码的记录!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
for (let i = 0; i < this.multipleSelection.length; i++) {
|
|
let row = this.multipleSelection[i];
|
|
try {
|
|
await this.printGuideLisPacs(row);
|
|
} catch (error) {
|
|
console.log("printPromise", error);
|
|
}
|
|
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.multipleSelection.length
|
|
);
|
|
}
|
|
this.elProgress.display = false;
|
|
},
|
|
|
|
handleSelectionChange(rows) {
|
|
//this.multipleSelection = rows;
|
|
//// console.log('this.multipleSelection',this.multipleSelection)
|
|
// rows.forEach((item) => {
|
|
// item.highLightBg = "selected";
|
|
// });
|
|
// // 取消全选
|
|
// if (!rows.length) {
|
|
// this.tableData.forEach((item) => {
|
|
// item.highLightBg = "";
|
|
// });
|
|
// }
|
|
this.multipleSelection = rows;
|
|
},
|
|
|
|
//设置新增/编辑的form数据
|
|
setForm(formData) {
|
|
this.patientRegister.patientRegisterRd = deepCopy(formData);
|
|
if (!this.patientRegister.patientRegisterRd.id) {
|
|
this.patientRegister.patientRegisterRd.customerOrgId =
|
|
this.patientRegister.query.customerOrgId;
|
|
}
|
|
},
|
|
|
|
//点击体检次数行
|
|
rowClick(row) {
|
|
// 按住了shift键
|
|
// if (this.window.shift) {
|
|
// //清除所有选择
|
|
// this.tableData.forEach((e, index) => {
|
|
// e.choosed = false;
|
|
// e.index = index;
|
|
// });
|
|
|
|
// if (this.startPoint == -1) {
|
|
// this.tableData[row.index].choosed = true;
|
|
// this.startPoint = row.index;
|
|
// } else {
|
|
// if (this.startPoint > row.index) {
|
|
// for (let i = row.index; i <= this.startPoint; i++) {
|
|
// this.tableData[i].choosed = true;
|
|
// }
|
|
// } else if (this.startPoint <= row.index) {
|
|
// for (let i = this.startPoint; i <= row.index; i++) {
|
|
// this.tableData[i].choosed = true;
|
|
// }
|
|
// }
|
|
// }
|
|
// } else if (this.window.ctrl) { // 按住了ctrl 键
|
|
// this.tableData[row.index].choosed = true;
|
|
// if (this.startPoint == -1) {
|
|
// this.startPoint = row.index;
|
|
// }
|
|
// } else {
|
|
// // 未按住了ctrl 、shift 键
|
|
// //清除所有选择
|
|
// // console.log("清除所有选择");
|
|
// this.tableData.forEach((e, index) => {
|
|
// e.choosed = false;
|
|
// e.index = index;
|
|
// });
|
|
// // console.log(this.tableData, row.index);
|
|
// // console.log(this.tableData[row.index].choosed);
|
|
|
|
// this.tableData[row.index].choosed = true;
|
|
// this.startPoint = row.index;
|
|
// }
|
|
|
|
//选中了多个点编辑时,排序最前的作为当前选中的
|
|
// console.log('row.index <= this.startPoint', row.index, this.startPoint)
|
|
// let lfind = -1
|
|
// for (let i = 0; i < this.tableData.length; i++) {
|
|
// if (this.tableData[i].choosed) {
|
|
// lfind = i
|
|
// break
|
|
// }
|
|
// }
|
|
|
|
// if (lfind > -1) {
|
|
// 弹出编辑框,只有在编辑框显示时,才去触发获取数据
|
|
this.dataTransOpts.tableS.patient_register = deepCopy(row);
|
|
this.tableDataCurrentRow = deepCopy(row);
|
|
this.dataTransOpts.refresh.register_check_asbitem.M++; //触发所选组合项目刷新
|
|
// }
|
|
},
|
|
|
|
// 导入企业(青藏公司)数据
|
|
btnImportOrgData() {
|
|
//
|
|
this.dataTransOpts.plus.ImportOrgData++;
|
|
this.dialogWin.ImportOrgData = true;
|
|
},
|
|
|
|
//体检次数 相关操作
|
|
btnAdd() {
|
|
if (!this.peisid || this.peisid == "null") {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "该用户未选归属体检中心,不能执行此操作!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
let customerOrgId = this.patientRegister.query.customerOrgId;
|
|
if (!customerOrgId) {
|
|
this.$message.warning({ showClose: true, message: "请选择单位或个人" });
|
|
return;
|
|
}
|
|
|
|
// this.patientRegister.patientRegisterRdInit.customerOrgId = customerOrgId
|
|
// this.setForm(this.patientRegister.patientRegisterRdInit)
|
|
// this.patientRegister.patientRegisterAbs = [];
|
|
// this.patientRegister.patientRegisterRd.id = ''
|
|
// this.dialogWin.PatientRegisterEdit = true;
|
|
// this.editTimes++; //触发表单窗口,数据更新
|
|
// this.getPatientRegisterAbs();
|
|
|
|
this.dataTransOpts.tableS.patient_register.id = "";
|
|
this.dialogWin.PatientRegisterEdit = true;
|
|
this.dataTransOpts.plus.clearPatientRegisterQuery++; //触发清空人员登记界面的查询条件
|
|
setTimeout(() => {
|
|
this.dataTransOpts.refresh.patient_register.S++; //触发人员信息刷新
|
|
}, 10);
|
|
},
|
|
|
|
//批量正式登记
|
|
btnAddBatch(completeFlag) {
|
|
let patientRegisterIds = [];
|
|
//取消勾选,换成选择的方式 start
|
|
// this.multipleSelection = [];
|
|
// this.tableData.forEach((e) => {
|
|
// if (e.choosed && e.completeFlag == '0') {
|
|
// this.multipleSelection.push(e);
|
|
// patientRegisterIds.push(e.id)
|
|
// }
|
|
// });
|
|
//取消勾选,换成选择的方式 end
|
|
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "请勾选要操作的记录!",
|
|
});
|
|
return;
|
|
}
|
|
this.multipleSelection.forEach((e) => {
|
|
switch (completeFlag) {
|
|
case "0":
|
|
if (e.completeFlag == "1") patientRegisterIds.push(e.id);
|
|
break;
|
|
case "1":
|
|
if (e.completeFlag == "0") patientRegisterIds.push(e.id);
|
|
break;
|
|
}
|
|
});
|
|
|
|
if (patientRegisterIds.length == 0) {
|
|
this.$message.info({ showClose: true, message: "没有可操作的数据!" });
|
|
return;
|
|
}
|
|
let body = { completeFlag, patientRegisterIds };
|
|
postapi(
|
|
"/api/app/patientregister/updatepatientregistercompleteflagormedicalstartdate",
|
|
body
|
|
)
|
|
.then((res) => {
|
|
if (res.code != -1) {
|
|
// console.log('操作成功!')
|
|
patientRegisterIds.forEach((e) => {
|
|
let lfind = arrayExistObj(this.tableData, "id", e);
|
|
if (lfind > -1) this.tableData[lfind].completeFlag = completeFlag;
|
|
});
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error({ showClose: true, message: `操作失败 ${err}` });
|
|
});
|
|
},
|
|
|
|
// 单个编辑
|
|
btnEdit() {
|
|
// if (!this.patientRegister.patientRegisterRd.id) {
|
|
if (!this.dataTransOpts.tableS.patient_register.id) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请选择要操作的记录",
|
|
});
|
|
return;
|
|
}
|
|
//// console.log(this.patientRegister.patientRegisterRd,this.tableData)
|
|
|
|
// 触发数据刷新
|
|
this.dataTransOpts.refresh.patient_register.S++; //触发人员信息刷新(会同时刷新组合项目)
|
|
this.dataTransOpts.plus.clearPatientRegisterQuery++; //触发清空人员登记界面的查询条件
|
|
|
|
this.dialogWin.PatientRegisterEdit = true;
|
|
},
|
|
|
|
//新增或编辑后选中记录
|
|
async close_dialogWin_PatientRegisterEdit() {
|
|
// 如果 dataTransOpts.tableS.patient_register.id 为空(未增加),则不做处理
|
|
let id = this.dataTransOpts.tableS.patient_register.id;
|
|
if (!id) {
|
|
id = this.tableDataCurrentRow.id;
|
|
}
|
|
if (!id) return;
|
|
this.dataTransOpts.tableS.patient_register.id = id;
|
|
|
|
let res = await postapi("/api/app/patientregister/getlistinfilter", {
|
|
patientRegisterNo:
|
|
this.dataTransOpts.tableS.patient_register.patientRegisterNo,
|
|
});
|
|
if (res.code != 1) return;
|
|
let currentRow = res.data.items[0];
|
|
|
|
// this.tableData.forEach(e => {
|
|
// e.choosed = false
|
|
// });
|
|
let lfind = arrayExistObj(
|
|
this.tableData,
|
|
"id",
|
|
this.dataTransOpts.tableS.patient_register.id
|
|
);
|
|
if (lfind > -1) {
|
|
objCopy(currentRow, this.tableData[lfind]);
|
|
} else {
|
|
lfind = this.tableData.length;
|
|
currentRow.index = lfind;
|
|
currentRow.choosed = true;
|
|
this.tableData.push(currentRow);
|
|
}
|
|
|
|
// 刷新 register_check_asbitem 表记录
|
|
if (lfind > -1) {
|
|
this.dataTransOpts.refresh.register_check_asbitem.M++;
|
|
}
|
|
},
|
|
|
|
//拍照
|
|
openCamera() {
|
|
if (!this.patientRegister.patientRegisterId) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请选择要操作的记录",
|
|
});
|
|
return;
|
|
}
|
|
this.patientRegister.cameraVisble = true;
|
|
},
|
|
|
|
//删除(可批量删除)
|
|
// /api/app/patient-register/many?PatientRegisterIds=3a0c2cac-f44c-f407-9504-c1fc5e80a159&PatientRegisterIds=3a0c2cb3-d10c-ed70-db6a-b835e75ce641
|
|
btnDel() {
|
|
//选中(取消勾选)start -------------------------
|
|
// this.multipleSelection = []
|
|
// this.tableData.forEach(e => {
|
|
// if (e.choosed) {
|
|
// this.multipleSelection.push(deepCopy(e))
|
|
// }
|
|
// })
|
|
//选中(取消勾选) end -------------------------
|
|
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请先勾选要操作的记录",
|
|
});
|
|
return;
|
|
}
|
|
|
|
let patientRegisterIds = [];
|
|
for (let i = 0; i < this.multipleSelection.length; i++) {
|
|
patientRegisterIds.push(this.multipleSelection[i]["id"]);
|
|
}
|
|
|
|
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
|
|
confirmButtonText: "是",
|
|
cancelButtonText: "否",
|
|
type: "warning",
|
|
})
|
|
.then(() => {
|
|
//// console.log('{patientRegisterIds}',{patientRegisterIds})
|
|
return postapi("/api/app/patient-register/delete-many", {
|
|
patientRegisterIds,
|
|
});
|
|
})
|
|
.then((res) => {
|
|
if (res.code != -1) {
|
|
// console.log("操作成功");
|
|
this.dataTransOpts.tableS.patient_register.id = "";
|
|
setTimeout(() => {
|
|
this.dataTransOpts.refresh.register_check_asbitem.M++;
|
|
}, 10);
|
|
arrayReduce(this.tableData, this.multipleSelection, "id=id"); //清除列表记录
|
|
// this.setForm(this.patientRegister.patientRegisterRdInit)
|
|
// this.getPatientRegisterAbs();
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
if (err == "cancel") {
|
|
this.$message.info({ showClose: true, message: "已取消操作" });
|
|
}
|
|
});
|
|
},
|
|
|
|
//查询
|
|
async Query() {
|
|
// 查询时,清掉明细数据 (滚动时不清)
|
|
this.dataTransOpts.tableS.patient_register.id = "";
|
|
this.tableDataCurrentRow = {}; // 清除选择
|
|
if (
|
|
!(
|
|
this.patientRegister.query.isSeries == "Y" &&
|
|
this.patientRegister.query.patientRegisterNo
|
|
)
|
|
) {
|
|
this.tableData = [];
|
|
}
|
|
|
|
setTimeout(() => {
|
|
this.dataTransOpts.refresh.register_check_asbitem.M++; //触发所选组合项目刷新
|
|
}, 10);
|
|
|
|
this.loadOpts = Object.assign(this.loadOpts, this.loadOptsInit);
|
|
await this.getPrList();
|
|
},
|
|
|
|
//数据量多时,滚动加载
|
|
async load() {
|
|
this.loadOpts.skipCount++;
|
|
await this.getPrList();
|
|
},
|
|
|
|
// 获取列表数据
|
|
async getPrList() {
|
|
if (
|
|
this.loadOpts.skipCount != 0 &&
|
|
this.loadOpts.skipCount * this.loadOpts.maxResultCount >=
|
|
this.loadOpts.totalCount
|
|
)
|
|
return;
|
|
// console.log('getPrList', this.loadOpts)
|
|
|
|
let body = {
|
|
skipCount: this.loadOpts.skipCount,
|
|
maxResultCount: this.loadOpts.maxResultCount,
|
|
};
|
|
|
|
// console.log(`this.patientRegister.query`, this.patientRegister.query);
|
|
if (this.patientRegister.query.customerOrgFlag) {
|
|
// if (this.patientRegister.query.CustomerOrgParentId) {
|
|
// body.customerOrgId = this.patientRegister.query.CustomerOrgParentId;
|
|
// } else {
|
|
// if (this.patientRegister.query.customerOrgId)
|
|
// body.customerOrgId = this.patientRegister.query.customerOrgId;
|
|
// }
|
|
if (this.patientRegister.query.customerOrgId)
|
|
body.customerOrgId = this.patientRegister.query.customerOrgId;
|
|
if (
|
|
this.patientRegister.query.customerOrgId &&
|
|
this.patientRegister.query.customerOrgId != this.dict.personOrgId &&
|
|
this.patientRegister.query.customerOrgRegister.id
|
|
) {
|
|
body.customerOrgRegisterId =
|
|
this.patientRegister.query.customerOrgRegister.id;
|
|
body.customerOrgGroupIds =
|
|
this.patientRegister.query.customerOrgGroupIds;
|
|
}
|
|
}
|
|
|
|
if (this.patientRegister.query.sex)
|
|
body.sexId = this.patientRegister.query.sex;
|
|
|
|
if (this.patientRegister.query.patientName)
|
|
body.patientName = this.patientRegister.query.patientName;
|
|
|
|
if (
|
|
this.patientRegister.query.medicalTypeIds &&
|
|
this.patientRegister.query.medicalTypeIds.length > 0
|
|
)
|
|
body.medicalTypeIds = this.patientRegister.query.medicalTypeIds;
|
|
|
|
if (
|
|
this.patientRegister.query.completeFlags &&
|
|
this.patientRegister.query.completeFlags.length > 0
|
|
)
|
|
body.completeFlags = this.patientRegister.query.completeFlags;
|
|
|
|
//StartDate EndDate
|
|
if (
|
|
this.patientRegister.query.startDate &&
|
|
this.patientRegister.query.endDate
|
|
) {
|
|
body.dateType = this.patientRegister.query.dateType;
|
|
body.startDate = moment(this.patientRegister.query.startDate).format(
|
|
"yyyy-MM-DD"
|
|
);
|
|
body.endDate = moment(this.patientRegister.query.endDate).format(
|
|
"yyyy-MM-DD"
|
|
);
|
|
if (body.startDate > body.endDate) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "起始日期不能大于截止日期,数据校验不通过!",
|
|
});
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (this.patientRegister.query.phone)
|
|
body.phone = this.patientRegister.query.phone;
|
|
|
|
if (this.patientRegister.query.idCardNo) {
|
|
body.idNo = this.patientRegister.query.idCardNo;
|
|
|
|
try {
|
|
let sysParmId = "patient_register_query_idno";
|
|
let sysParam = await postapi(
|
|
"/api/app/SysParmValue/GetSysParmValueBySysParmId",
|
|
{ sysParmId }
|
|
);
|
|
// console.log('sysParam', sysParam)
|
|
if (sysParam.data != "N") {
|
|
body = {
|
|
idNo: this.patientRegister.query.idCardNo,
|
|
skipCount: this.loadOpts.skipCount,
|
|
maxResultCount: this.loadOpts.maxResultCount,
|
|
};
|
|
}
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
}
|
|
|
|
if (this.patientRegister.query.patientNo)
|
|
body = {
|
|
patientNo: this.patientRegister.query.patientNo,
|
|
skipCount: this.loadOpts.skipCount,
|
|
maxResultCount: this.loadOpts.maxResultCount,
|
|
};
|
|
|
|
if (this.patientRegister.query.patientRegisterNo)
|
|
body = {
|
|
patientRegisterNo: this.patientRegister.query.patientRegisterNo,
|
|
skipCount: this.loadOpts.skipCount,
|
|
maxResultCount: this.loadOpts.maxResultCount,
|
|
};
|
|
|
|
// console.log("/api/app/patientregister/getlistinfilter", body);
|
|
let upPhoto = "patient_register_read_idno_upPhoto"; // 是否读身份证查询更新照片
|
|
let upPhotoParam = await postapi(
|
|
"/api/app/SysParmValue/GetSysParmValueBySysParmId",
|
|
{ sysParmId: upPhoto }
|
|
);
|
|
let photo = this.patientRegister.photo;
|
|
this.patientRegister.photo = "";
|
|
|
|
postapi("/api/app/patientregister/getlistinfilter", body).then(
|
|
async (res) => {
|
|
if (res.code > -1) {
|
|
// 刷新最大记录数
|
|
this.loadOpts.totalCount = res.data.totalCount;
|
|
let curLoad = res.data.items;
|
|
|
|
// let oldCount = 0
|
|
// 处理:
|
|
// 1、分组/套餐 排序混乱的问题
|
|
// 2、扫身份证查询时,无照片自动更新照片(参数控制)
|
|
curLoad.forEach((e) => {
|
|
// 1、分组/套餐 排序混乱的问题
|
|
if (e.customerOrgId == this.dict.personOrgId) {
|
|
e.groupPack = e.medicalPackageId;
|
|
} else {
|
|
e.groupPack = e.customerOrgGroupId;
|
|
}
|
|
|
|
// 2、扫身份证查询时,无照片自动更新照片(参数控制)
|
|
if (upPhotoParam != "N" && photo) {
|
|
if (!e.photo) {
|
|
savePeoplePhoto(e.id, photo);
|
|
}
|
|
}
|
|
});
|
|
|
|
// 不是连续扫码时,需要判断是否分页查询(连续扫码不清原来的数据)
|
|
console.log(
|
|
"this.patientRegister.query",
|
|
this.patientRegister.query.isSeries,
|
|
this.patientRegister.query.patientRegisterNo
|
|
);
|
|
if (
|
|
!(
|
|
this.patientRegister.query.isSeries == "Y" &&
|
|
this.patientRegister.query.patientRegisterNo
|
|
)
|
|
) {
|
|
if (body.skipCount == 0) {
|
|
//查询
|
|
this.tableData = [];
|
|
}
|
|
}
|
|
|
|
this.tableData = this.tableData.concat(curLoad);
|
|
// else {
|
|
// // 懒加载 ,原数据集不用清空
|
|
// oldCount = this.tableData.length
|
|
// }
|
|
// curLoad.forEach((e, index) => {
|
|
// this.tableData.push(Object.assign({ index: Number(oldCount) + Number(index), choosed: false }, e))
|
|
// })
|
|
|
|
//如果 有选中 记录,则刷新其对应的组合项目
|
|
if (this.dataTransOpts.tableS.patient_register.id) {
|
|
this.dataTransOpts.refresh.register_check_asbitem.M++;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
//滚动加载数据
|
|
async scrollFull(scroll, event) {
|
|
if (scroll.judgeFlse) {
|
|
if (
|
|
(Number(this.loadOpts.skipCount) + 1) *
|
|
Number(this.loadOpts.maxResultCount) >=
|
|
Number(this.loadOpts.totalCount)
|
|
) {
|
|
return;
|
|
} else {
|
|
await this.load();
|
|
}
|
|
}
|
|
// this.dom = this.$refs.info.bodyWrapper
|
|
// console.log('this.dom', this.dom)
|
|
|
|
// this.dom.addEventListener('scroll', async () => {
|
|
// // // console.log('scrollTop',this.dom.scrollTop,'clientHeight',this.dom.clientHeight,'scrollHeight',this.dom.scrollHeight);
|
|
// if (this.dom.scrollTop + this.dom.clientHeight + 20 > this.dom.scrollHeight && !this.lazyLoading) {
|
|
// // 获取到的不是全部数据 当滚动到底部
|
|
// // console.log('scrollTop', this.dom.scrollTop, 'clientHeight', this.dom.clientHeight, 'scrollHeight', this.dom.scrollHeight);
|
|
// if ((Number(this.loadOpts.skipCount) + 1) * Number(this.loadOpts.maxResultCount) >= Number(this.loadOpts.totalCount)) {
|
|
// this.lazyLoading = false
|
|
// } else {
|
|
// this.lazyLoading = true
|
|
// await this.load()
|
|
// this.lazyLoading = false
|
|
// // this.dom.scrollTop = this.dom.scrollTop - 100
|
|
// }
|
|
// }
|
|
// })
|
|
},
|
|
|
|
close_dialogWin_upBaseInfo() {
|
|
this.upBaseInfo.visble = false;
|
|
this.close_dialogWin_PatientRegisterEdit();
|
|
},
|
|
btnUpBaseInfo() {
|
|
let body = {
|
|
patientRegisterId: this.upBaseInfo.patientRegisterId,
|
|
// "patientName": "string",
|
|
// "mobileTelephone": "string",
|
|
// "idNo": "string"
|
|
};
|
|
body[this.upBaseInfo.colName] = this.upBaseInfo.value;
|
|
|
|
postapi(
|
|
"/api/app/PatientRegister/UpdatePatientRegisterBaseInfoByPatientRegisterId",
|
|
body
|
|
).then((res) => {
|
|
if (res.code > -1) {
|
|
this.close_dialogWin_upBaseInfo();
|
|
}
|
|
});
|
|
},
|
|
// 修改基本信息
|
|
fnUpBaseInfo(row, baseInfoType) {
|
|
this.dataTransOpts.tableS.patient_register.id = row.id;
|
|
this.upBaseInfo.visble = true;
|
|
this.upBaseInfo.patientRegisterId = row.id;
|
|
this.upBaseInfo.colName = baseInfoType;
|
|
switch (baseInfoType) {
|
|
case "idNo":
|
|
this.upBaseInfo.label = "新身份证号";
|
|
break;
|
|
case "mobileTelephone":
|
|
this.upBaseInfo.label = "新手机号";
|
|
break;
|
|
default:
|
|
this.upBaseInfo.label = "新姓名";
|
|
break;
|
|
}
|
|
this.upBaseInfo.value = row[baseInfoType];
|
|
},
|
|
|
|
editMedicalStartDate() {
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请勾选要操作的人员记录!",
|
|
});
|
|
return;
|
|
}
|
|
this.upBaseInfo.medicalStartDate = moment(
|
|
this.multipleSelection[0].medicalStartDate
|
|
).format("yyyy-MM-DD");
|
|
this.dialogEditMedicalStartDate = true;
|
|
},
|
|
|
|
// 批量修改体检日期
|
|
btnEditMedicalStartDate() {
|
|
let body = {
|
|
//"completeFlag": "string",
|
|
medicalStartDate: this.upBaseInfo.medicalStartDate,
|
|
patientRegisterIds: [],
|
|
};
|
|
this.multipleSelection.forEach((e) => {
|
|
body.patientRegisterIds.push(e.id);
|
|
});
|
|
postapi(
|
|
"/api/app/PatientRegister/UpdatePatientRegisterMedicalStartDate",
|
|
body
|
|
).then((res) => {
|
|
if (res.code > -1) {
|
|
let lfind = 0;
|
|
this.multipleSelection.forEach((e) => {
|
|
e.medicalStartDate = body.medicalStartDate;
|
|
lfind = arrayExistObj(this.tableData, "id", e.id);
|
|
if (lfind > -1)
|
|
this.tableData.medicalStartDate = body.medicalStartDate;
|
|
});
|
|
this.dialogEditMedicalStartDate = false;
|
|
}
|
|
});
|
|
},
|
|
|
|
// 分诊排队
|
|
fnQueue(row) {
|
|
this.queueParams = {
|
|
patientRegisterId: row.id,
|
|
};
|
|
this.dialogWin.queue = true;
|
|
this.dataTransOpts.plus.queue++;
|
|
},
|
|
|
|
//右击菜单
|
|
onCellRightClick(row, column) {
|
|
// console.log(row)
|
|
this.rClickRow = { ...row }; //右击的行记录
|
|
this.rClickColumn = { ...column }; //右击的列(预留)
|
|
// console.log(row, column.property);
|
|
// this.onContextmenu()
|
|
},
|
|
onContextmenu(event) {
|
|
// console.log('onContextmenu',event);
|
|
if (!this.rClickRow) return false;
|
|
let row = { ...this.rClickRow };
|
|
let items = []; //菜单项
|
|
|
|
// items.push({
|
|
// label: "一级菜单",
|
|
// children: [
|
|
// { label: "修改姓名", onClick: () => { this.fnUpBaseInfo(row, 'patientName'); } }
|
|
// ]
|
|
// })
|
|
let subMenumedical = [];
|
|
if (checkPagePriv(this.pagePriv.privs, "修改体检日期"))
|
|
subMenumedical.push({
|
|
label: "修改体检日期",
|
|
onClick: () => {
|
|
this.editMedicalStartDate();
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "修改姓名") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenumedical.push({
|
|
label: "修改姓名",
|
|
onClick: () => {
|
|
this.fnUpBaseInfo(row, "patientName");
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "修改手机号") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenumedical.push({
|
|
label: "修改手机号",
|
|
onClick: () => {
|
|
this.fnUpBaseInfo(row, "mobileTelephone");
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "修改身份证号") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenumedical.push({
|
|
label: "修改身份证号",
|
|
onClick: () => {
|
|
this.fnUpBaseInfo(row, "idNo");
|
|
},
|
|
});
|
|
|
|
if (subMenumedical.length > 0)
|
|
items.push({ label: "修改体检信息", children: subMenumedical });
|
|
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "分诊排队") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
items.push({
|
|
label: "分诊排队",
|
|
onClick: () => {
|
|
this.fnQueue(row);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "发送检验申请") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
items.push({
|
|
label: "发送检验申请",
|
|
onClick: () => {
|
|
this.lisRequest(row);
|
|
},
|
|
});
|
|
// 预览条码
|
|
let subMenuPre = [];
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "预览人员条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPre.push({
|
|
label: "预览人员条码",
|
|
onClick: () => {
|
|
this.guidePrintPromise("0008", true, row);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "预览检验条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPre.push({
|
|
label: "预览检验条码",
|
|
onClick: () => {
|
|
this.lisPrint(row, "0002", true);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "预览Pacs条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPre.push({
|
|
label: "预览Pacs条码",
|
|
onClick: () => {
|
|
// console.log('预览Pacs条码 row',row)
|
|
this.pacsPrint(row, "0004", true);
|
|
},
|
|
});
|
|
if (subMenuPre.length > 0)
|
|
items.push({ label: "预览条码", children: subMenuPre });
|
|
|
|
let subMenuPrint = [];
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "打印人员条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPrint.push({
|
|
label: "打印人员条码",
|
|
onClick: () => {
|
|
this.guidePrintPromise("0008", false, row);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "打印检验条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPrint.push({
|
|
label: "打印检验条码",
|
|
onClick: () => {
|
|
this.lisPrint(row, "0002", false);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "打印Pacs条码") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuPrint.push({
|
|
label: "打印Pacs条码",
|
|
onClick: () => {
|
|
this.pacsPrint(row, "0004", false);
|
|
},
|
|
});
|
|
if (subMenuPrint.length > 0)
|
|
items.push({ label: "打印条码", children: subMenuPrint });
|
|
|
|
let subMenuImp = [];
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "导入检查结果") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuImp.push({
|
|
label: "导入检查结果",
|
|
onClick: () => {
|
|
this.importResult("pacs", row);
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "导入检验结果") &&
|
|
row.completeFlag != "0"
|
|
)
|
|
subMenuImp.push({
|
|
label: "导入检验结果",
|
|
onClick: () => {
|
|
this.importResult("lis", row);
|
|
},
|
|
});
|
|
if (subMenuImp.length > 0)
|
|
items.push({ label: "导入结果", children: subMenuImp });
|
|
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "批量更新组合项目明细") &&
|
|
this.multipleSelection.length > 0
|
|
)
|
|
items.push({
|
|
label: "批量更新组合项目明细",
|
|
onClick: () => {
|
|
this.btnItemBatch();
|
|
},
|
|
});
|
|
if (
|
|
checkPagePriv(this.pagePriv.privs, "调整检查项目医生") &&
|
|
this.multipleSelection.length > 0
|
|
)
|
|
items.push({
|
|
label: "调整检查项目医生",
|
|
onClick: () => {
|
|
this.dataTransOpts.plus.PatientRegisterEditDoctorBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
|
|
this.dialogWin.PatientRegisterEditDoctorBatch = true;
|
|
},
|
|
});
|
|
items.push({ label: "----------------" });
|
|
this.$contextmenu({
|
|
items,
|
|
event,
|
|
x: event.clientX,
|
|
y: event.clientY,
|
|
customClass: "custom-class",
|
|
zIndex: 3,
|
|
minWidth: 80,
|
|
});
|
|
|
|
this.rClickRow = null;
|
|
return false;
|
|
},
|
|
|
|
//批量更新分组按钮
|
|
btnGroupBatch() {
|
|
let customerOrgId = this.patientRegister.query.customerOrgId;
|
|
if (!customerOrgId) {
|
|
this.$message.warning({ showClose: true, message: "请选择单位" });
|
|
return;
|
|
}
|
|
//取消勾选,换成选择的方式 start
|
|
// this.multipleSelection = [];
|
|
// this.tableData.forEach((e) => {
|
|
// if (e.choosed) this.multipleSelection.push(e);
|
|
// });
|
|
//取消勾选,换成选择的方式 end
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "请选择要操作的记录!",
|
|
});
|
|
return;
|
|
}
|
|
this.dataTransOpts.plus.PatientRegisterEditGroupBatch++;
|
|
this.dialogWin.PatientRegisterEditGroupBatch = true;
|
|
},
|
|
|
|
//批量更新组合项目
|
|
btnAsbBatch() {
|
|
let customerOrgId = this.patientRegister.query.customerOrgId;
|
|
if (!customerOrgId) {
|
|
this.$message.warning({ showClose: true, message: "请选择单位" });
|
|
return;
|
|
}
|
|
//取消勾选,换成选择的方式 start
|
|
// this.multipleSelection = [];
|
|
// this.tableData.forEach((e) => {
|
|
// if (e.choosed) this.multipleSelection.push(e);
|
|
// });
|
|
//取消勾选,换成选择的方式 end
|
|
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请选择要操作的记录",
|
|
});
|
|
return;
|
|
}
|
|
|
|
this.dataTransOpts.plus.PatientRegisterEditItemBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
|
|
this.dialogWin.PatientRegisterEditItemBatch = true;
|
|
},
|
|
|
|
//批量更新组合项目
|
|
async btnItemBatch() {
|
|
if (this.multipleSelection.length < 1) {
|
|
this.$message.warning({
|
|
showClose: true,
|
|
message: "请选择要操作的记录",
|
|
});
|
|
return;
|
|
}
|
|
|
|
this.elProgress.display = true;
|
|
this.elProgress.percentage = 0;
|
|
|
|
for (let i = 0; i < this.multipleSelection.length; i++) {
|
|
let patientRegisterId = this.multipleSelection[i].id;
|
|
try {
|
|
await postapi("/api/app/RegisterCheckItem/SyncRegisterCheckItem", {
|
|
patientRegisterId,
|
|
});
|
|
} catch (error) {
|
|
console.log("printPromise", error);
|
|
}
|
|
|
|
this.elProgress.percentage = Math.floor(
|
|
((i + 1) * 100) / this.multipleSelection.length
|
|
);
|
|
}
|
|
this.elProgress.display = false;
|
|
},
|
|
|
|
//检验申请
|
|
async lisRequest(row) {
|
|
let isPrintLisRequest = false;
|
|
let res = null;
|
|
if (row.completeFlag == "0") {
|
|
this.$message.info({
|
|
showClose: true,
|
|
message: "预登记人员,不可执行此操作!",
|
|
});
|
|
return;
|
|
}
|
|
|
|
try {
|
|
res = await postapi(
|
|
`/api/app/lisrequest/setlisrequest?PatientRegisterId=${row.id}`
|
|
);
|
|
// console.log(`/ api / app / lisrequest / setlisrequest ? PatientRegisterId = ${ prId }`,res);
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
if (res.code > -1) {
|
|
isPrintLisRequest = true;
|
|
}
|
|
|
|
//重复申请,重打
|
|
if (res.code == -1 && res.message.indexOf("已申请") > -1) {
|
|
isPrintLisRequest = true;
|
|
}
|
|
|
|
if (!isPrintLisRequest) return;
|
|
|
|
try {
|
|
await this.$confirm("是否打印检验申请单?", "提示", {
|
|
confirmButtonText: "是",
|
|
cancelButtonText: "否",
|
|
type: "info",
|
|
showClose: false,
|
|
closeOnClickModal: false,
|
|
closeOnPressEscape: false,
|
|
});
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
//打印检验申请单
|
|
this.lisPrint(row, "0003", false);
|
|
},
|
|
|
|
//检验条码打印 改造成 promise
|
|
lisPrint(row, ReportCode, isPreview) {
|
|
return new Promise((resolve, reject) => {
|
|
if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
|
|
if (!row.completeFlag || row.completeFlag == "0")
|
|
reject("预登记人员,不可执行此操作!");
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
IsMoreLabel: "Y",
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "N",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "hisLog", Value: "pic/hisLog.jpg" },
|
|
],
|
|
BusinessCode: row.id,
|
|
};
|
|
console.log("this.$peisAPI.toOutShell", toOutShell);
|
|
if (isPreview) {
|
|
this.$peisAPI
|
|
.printPre(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
console.log("this.$peisAPI.printPre", res);
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1) {
|
|
resolve(lres);
|
|
} else {
|
|
reject(lres.message);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
} else {
|
|
this.$peisAPI
|
|
.print(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
console.log("this.$peisAPI.print", res);
|
|
let lres = JSON.parse(res);
|
|
if (lres.code < 0) {
|
|
reject(lres.message);
|
|
} else {
|
|
return postapi("/api/app/lisrequest/updatelisrequestisprint", {
|
|
operateType: 1,
|
|
patientRegisterId: row.id,
|
|
});
|
|
}
|
|
})
|
|
.then((res) => {
|
|
if (res && res.code < 0) {
|
|
reject(res.message);
|
|
} else {
|
|
resolve(res);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
//pacs条码打印
|
|
pacsPrint(row, ReportCode, isPreview) {
|
|
return new Promise((resolve, reject) => {
|
|
if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
|
|
if (!row.completeFlag || row.completeFlag == "0")
|
|
reject("预登记人员,不可执行此操作!");
|
|
|
|
let token = window.sessionStorage.getItem("token");
|
|
let user = window.sessionStorage.getItem("user");
|
|
let toOutShell = {
|
|
ReportCode,
|
|
token,
|
|
IsMoreLabel: "Y",
|
|
isBuildImage: "N",
|
|
IsUploadPdf: "N",
|
|
preViewCanPrint: "N",
|
|
Parameters: [
|
|
{ Name: "printer", Value: user },
|
|
{ Name: "hisLog", Value: "pic/hisLog.jpg" },
|
|
],
|
|
BusinessCode: row.id,
|
|
};
|
|
console.log("this.$peisAPI.print", toOutShell);
|
|
if (isPreview) {
|
|
this.$peisAPI
|
|
.printPre(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
console.log("this.$peisAPI.printPre", res);
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1) {
|
|
resolve(lres);
|
|
} else {
|
|
reject(lres.message);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
} else {
|
|
this.$peisAPI
|
|
.print(JSON.stringify(toOutShell))
|
|
.then((res) => {
|
|
console.log("this.$peisAPI.print", res);
|
|
let lres = JSON.parse(res);
|
|
if (lres.code > -1) {
|
|
resolve(lres);
|
|
} else {
|
|
reject(lres.message);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
// 导入检查检验结果
|
|
importResult(checkType, row) {
|
|
let url = "/api/app/ImportLisResult/ImportResultByPatientRegisterId";
|
|
switch (checkType) {
|
|
case "pacs":
|
|
url = "/api/app/ImportPacsResult/ImportResultByPatientRegisterId";
|
|
postapi(url, { patientRegisterId: row.id })
|
|
.then((res) => {
|
|
if (res.code > -1) {
|
|
return postapi(
|
|
"/api/app/ImportElectrocardiogramResult/ImportElectrocardiogramResultByPatientRegisterId",
|
|
{ patientRegisterId: row.id }
|
|
);
|
|
}
|
|
})
|
|
.then((res) => {
|
|
if (res && res.code > -1) {
|
|
this.$message.success({
|
|
showClose: true,
|
|
message: "导入成功!",
|
|
});
|
|
this.rowClick(row);
|
|
}
|
|
});
|
|
break;
|
|
default:
|
|
postapi(url, { patientRegisterId: row.id }).then((res) => {
|
|
if (res.code > -1) {
|
|
this.$message.success({ showClose: true, message: "导入成功!" });
|
|
this.rowClick(row);
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
},
|
|
|
|
//通用导出
|
|
btnExport(elId) {
|
|
this.dragCol.forEach((e) => {
|
|
this.jsonFields[e.label] = e.prop;
|
|
});
|
|
let tableDatas=deepCopy(this.tableData)
|
|
tableDatas.forEach((e,index)=>{
|
|
if(index)e.sn=index+1
|
|
if(e.completeFlag)e.completeFlag=e.isAudit == "Y"? "已审核": dddw(this.dict.completeFlag,"id",e.completeFlag,"displayName")
|
|
if(e.guidePrintTimes)e.guidePrintTimes=e.guidePrintTimes > 0?'打印':''
|
|
if(e.isLock)e.isLock=e.isLock=='Y'?'锁住':''
|
|
if(e.sexId)e.sexId=dddw(this.dict.sex,"id",e.sexId,"displayName")
|
|
if(e.medicalPackageId !== this.dict.personOrgId &&e.customerOrgId === this.dict.personOrgId){
|
|
e.groupPack=dddw(this.dict.medicalPackage,"id",e.medicalPackageId,"displayName")
|
|
}else if(e.medicalPackageId !== this.dict.personOrgId &&e.customerOrgId !== this.dict.personOrgId){
|
|
e.groupPack=dddw(this.dict.customerOrgGroupAll,"id",e.customerOrgGroupId,"displayName")
|
|
}
|
|
if(e.nationId)e.nationId=dddw(this.dict.nation,"id",e.nationId,"displayName")
|
|
if(e.idNo)e.idNo=e.idNo+'&'
|
|
if(e.birthDate)e.birthDate=moment(e.birthDate).format("yyyy-MM-DD")
|
|
if(e.maritalStatusId)e.maritalStatusId=dddw(this.dict.maritalStatus,"id",e.maritalStatusId,"displayName")
|
|
if(e.medicalTypeId)e.medicalTypeId=dddw(this.dict.medicalType,"id",e.medicalTypeId,"displayName")
|
|
if(e.personnelTypeId)e.personnelTypeId=dddw(this.dict.personnelType,"id",e.personnelTypeId,"displayName")
|
|
if(e.isVip)e.isVip=e.isVip == "Y" ? "是" : "否"
|
|
if(e.isUpload)e.isUpload=e.isUpload == "Y" ? "是" : "否"
|
|
if(e.qztlType)e.qztlType=dddw(this.dict.qztlType,"id",e.qztlType,"displayName")
|
|
if(e.qztlIsMain)e.qztlIsMain=e.qztlIsMain == "Y" ? "是" : "否"
|
|
if(e.qztlIsCy)e.qztlIsCy=e.qztlIsCy == "Y" ? "是" : "否"
|
|
if(e.qztlIsCw)e.qztlIsCw=e.qztlIsCw == "Y" ? "是" : "否"
|
|
if(e.qztlIsGt)e.qztlIsGt=e.qztlIsGt == "Y" ? "是" : "否"
|
|
if(e.qztlIsWh)e.qztlIsWh=e.qztlIsWh == "Y" ? "是" : "否"
|
|
if(e.qztlIsFj)e.qztlIsFj=e.qztlIsFj == "Y" ? "是" : "否"
|
|
})
|
|
this.tableName='人员登记列表'+moment(new Date()).format('yyyyMMDDHHmmss')+'.xls'
|
|
return tableDatas;
|
|
// const columns = this.$refs.info.getColumns(); // 获取列信息
|
|
// const data = this.$refs.info.getData(); // 获取数据
|
|
// console.log(columns)
|
|
// console.log(columns)
|
|
// const exportConf = { columns, data }; // 构建导出配置对象
|
|
// const filename = 'my_data.xlsx'; // 设置文件名
|
|
// const blob = exportTable(exportConf); // 导出数据为 Blob 对象
|
|
// saveAs(blob, filename); // 使用 file-saver 保存文件
|
|
// // 获取HTML元素(表格)
|
|
// // let table = document.getElementById(elId); //.cloneNode(true)
|
|
// this.$nextTick(() => {
|
|
// // let refsTable = this.$refs[elId] //.cloneNode(true) true
|
|
// let table = document.getElementById(elId)
|
|
// // console.log('table,refsTable', table, refsTable)
|
|
|
|
// let tableData = table.innerHTML
|
|
// let fileName = moment(new Date()).format('yyyyMMDDHHmmss')
|
|
|
|
// let blob = new Blob([tableData], { type: "text/plain;charset=utf-8" });
|
|
|
|
// FileSaver.saveAs(blob, fileName + '.xls');
|
|
|
|
// // 导出图片
|
|
// // 使用html2canvas将HTML元素转换为画布
|
|
// // let cloneTable = table.cloneNode(true) //[elId]
|
|
// /*
|
|
// html2canvas(table).then(canvas => {
|
|
|
|
// // 创建一个a元素用于下载
|
|
// const link = document.createElement('a');
|
|
// link.href = canvas.toDataURL('image/jpeg');
|
|
// link.download = fileName + '.jpg';
|
|
// document.body.appendChild(link);
|
|
// link.click();
|
|
// //document.body.removeChild(link);
|
|
|
|
// // // 创建一个PDF对象
|
|
// // var pdf = new jsPDF();
|
|
// // // 设置PDF的尺寸
|
|
// // pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, canvas.width, canvas.height);
|
|
// // // 导出PDF
|
|
// // pdf.save('员工信息表.pdf');
|
|
|
|
// });
|
|
// */
|
|
// })
|
|
},
|
|
|
|
btnDragColDesign() {
|
|
this.dragColDesign = deepCopy(this.dragCol);
|
|
this.dialogColSort = true;
|
|
this.rowDrag();
|
|
},
|
|
|
|
btnDragColDesignOk() {
|
|
this.dragCol = deepCopy(this.dragColDesign);
|
|
this.dialogColSort = false;
|
|
},
|
|
//拖拽
|
|
rowDrag() {
|
|
this.$nextTick(() => {
|
|
const el = document.querySelector("#elTable_dragCol tbody");
|
|
// console.log('el0', el)
|
|
const that = this;
|
|
Sortable.create(el, {
|
|
animation: 150, // ms, number 单位:ms,定义排序动画的时间
|
|
//拖拽结束
|
|
onEnd({ newIndex, oldIndex }) {
|
|
that.isshow = false;
|
|
const currRow = that.dragColDesign.splice(oldIndex, 1)[0];
|
|
that.dragColDesign.splice(newIndex, 0, currRow);
|
|
// console.log('el', el)
|
|
},
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
//监听事件
|
|
watch: {
|
|
"patientRegister.query.customerOrgId": {
|
|
// immediate: true, // 立即执行
|
|
// deep: true, // 深度监听复杂类型内变化
|
|
handler(newVal, oldVal) {
|
|
//// console.log('watch:patientRegister.query.customerOrgId:',newVal,oldVal)
|
|
// 单位变化时,清除当前列表信息
|
|
if (newVal && newVal != oldVal) {
|
|
this.tableData = [];
|
|
this.dataTransOpts.tableM.register_check_asbitem = [];
|
|
}
|
|
},
|
|
},
|
|
|
|
//触发查询事件
|
|
"patientRegister.query.times"(newVal, oldVal) {
|
|
if (newVal != oldVal) {
|
|
//alert('触发查询事件')
|
|
this.Query();
|
|
}
|
|
},
|
|
|
|
//新增后,触发赋值
|
|
// "patientRegister.patientRegisterRd.id"(newVal, oldVal) {
|
|
// if (newVal != oldVal) {
|
|
// //// console.log('patientRegister.patientRegisterRd.customerOrgId',this.patientRegister.patientRegisterRd.customerOrgId)
|
|
// objCopy(this.patientRegister.patientRegisterRd, this.form);
|
|
// }
|
|
// },
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
@import "../../assets/css/global_input.css";
|
|
@import "../../assets/css/global_table.css";
|
|
@import "../../assets/css/global.css";
|
|
|
|
.box {
|
|
display: flex;
|
|
}
|
|
|
|
.listBtn {
|
|
margin-top: 5px;
|
|
text-align: center;
|
|
}
|
|
|
|
.btnClass {
|
|
width: 100px;
|
|
}
|
|
</style>
|