lihong před 1 rokem
rodič
revize
7bc6b56e3f

+ 12 - 0
src/api/medical-advice/excute-item.js

@@ -76,5 +76,17 @@ export function queryExecuteItemDetail(data) {
     })
 }
 
+/**
+ * 查询病人列表
+ * @returns {AxiosPromise}
+ */
+export function queryGenerateYzList(data) {
+    return request({
+        url: '/generateYz/queryGenerateYzList',
+        method: 'post',
+        data
+    })
+}
+
 
 

+ 26 - 0
src/api/medical-advice/medical-common.js

@@ -64,6 +64,32 @@ export function queryItemDetail(data) {
     })
 }
 
+/**
+ * 查询所有科室病房
+ * @returns {AxiosPromise}
+ */
+export function queryZyWard() {
+    return request({
+        url: '/medicalAdvice/medicalCommon/queryZyWard',
+        method: 'get',
+
+    })
+}
+
+/**
+ * 查询科室下的小科室
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function querySmallWard(data) {
+    return request({
+        url: '/medicalAdvice/medicalCommon/querySmallWard',
+        method: 'post',
+        data
+    })
+}
+
+
 
 
 

+ 40 - 0
src/api/medical-advice/patient-info.js

@@ -113,6 +113,46 @@ export function saveBabyInfo(data) {
     })
 }
 
+/**
+ * 查询待转科列表
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function queryZkPatient(data) {
+    return request({
+        url: '/medicalAdvice/zkManage/queryZkPatient',
+        method: 'post',
+        data,
+    })
+}
+
+/**
+ *  查询空闲的床位信息
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function queryZkBedVo(data) {
+    return request({
+        url: '/medicalAdvice/zkManage/queryZkBedVo',
+        method: 'post',
+        data,
+    })
+}
 
+export function checkZk(data) {
+    return request({
+        url: '/medicalAdvice/zkManage/checkZk',
+        method: 'post',
+        data,
+    })
+}
+
+export function saveZkData(data) {
+    return request({
+        url: '/medicalAdvice/zkManage/saveZkData',
+        method: 'post',
+        data,
+    })
+}
 
 

+ 141 - 0
src/api/mz-emr/shareholder-card.js

@@ -0,0 +1,141 @@
+import request from '../../utils/request'
+
+/**
+ * 查询优惠类型
+ * @returns {*}
+ */
+export function queryDiscountClass() {
+    return request({
+        url: '/shareholderCard/queryDiscountClass',
+        method: 'get',
+    })
+}
+
+
+// 查询大类
+export function queryItemList(data) {
+    return request({
+        url: '/shareholderCard/queryItemList',
+        method: 'post',
+        data,
+    })
+}
+
+export function queryAllTemplate() {
+    return request({
+        url: '/shareholderCard/queryAllTemplate',
+        method: 'get',
+    })
+}
+
+export function queryTemplateDetails(data) {
+    return request({
+        url: '/shareholderCard/queryTemplateDetails',
+        method: 'post',
+        data,
+    })
+}
+
+
+
+export function delZdVisitTypeNew(data) {
+    return request({
+        url: '/shareholderCard/delZdVisitTypeNew',
+        method: 'post',
+        data,
+    })
+}
+
+export function updateZdVisitTypeNew(data) {
+    return request({
+        url: '/shareholderCard/updateZdVisitTypeNew',
+        method: 'post',
+        data,
+    })
+}
+
+
+export function queryZdVisitTypeNew(data) {
+    return request({
+        url: '/shareholderCard/queryZdVisitTypeNew',
+        method: 'post',
+        data,
+    })
+}
+
+// 查询号别
+export function queryMzChargeType() {
+    return request({
+        url: '/shareholderCard/queryMzChargeType',
+        method: 'get',
+    })
+}
+
+export function insertZdVisitTypeNew(data) {
+    return request({
+        url: '/shareholderCard/insertZdVisitTypeNew',
+        method: 'post',
+        data,
+    })
+}
+
+export function queryPatientInfo(data) {
+    return request({
+        url: '/shareholderCard/queryPatientInfo',
+        method: 'post',
+        data,
+    })
+}
+
+
+export function saveZdVisitTypeUser(data) {
+    return request({
+        url: '/shareholderCard/saveZdVisitTypeUser',
+        method: 'post',
+        data,
+    })
+}
+
+export function delZdVisitTypeUser(data) {
+    return request({
+        url: '/shareholderCard/delZdVisitTypeUser',
+        method: 'post',
+        data,
+    })
+}
+
+// 查询优惠明细
+export function queryZdDiscountDetail(data) {
+    return request({
+        url: '/shareholderCard/queryZdDiscountDetail',
+        method: 'post',
+        data,
+    })
+}
+// 启用或停用优惠明细
+export function updateZdDiscountDetailDelFlag(data) {
+    return request({
+        url: '/shareholderCard/updateZdDiscountDetailDelFlag',
+        method: 'post',
+        data,
+    })
+}
+
+//保存优惠明细
+export function saveZdDiscountDetail(data) {
+    return request({
+        url: '/shareholderCard/saveZdDiscountDetail',
+        method: 'post',
+        data,
+    })
+}
+
+export function queryItemDetail(data) {
+    return request({
+        url: '/shareholderCard/queryItemDetail',
+        method: 'post',
+        data,
+    })
+}
+
+

+ 14 - 0
src/router/modules/dashboard.js

@@ -19,6 +19,12 @@ const route = [
         hideMenu: true,
         meta: {title: '门诊电子病历', hideTabs: true, passRule: true},
     },
+    {
+        path: '/shareholderCard/:patientInfo?',
+        component: createNameComponent(() => import('@/views/mz-emr/ShareholderCard.vue')),
+        hideMenu: true,
+        meta: {title: '股东卡优惠', hideTabs: true, passRule: true},
+    },
     {
         path: '/scrollSource',
         component: createNameComponent(() => import('@/views/single-page/TodayClinicResource.vue')),
@@ -1077,6 +1083,14 @@ const route = [
                 path: 'patientInfo/addBabyInfo',
                 component: createNameComponent(() => import('@/views/medical-advice/patient-info/AddBabyInfo.vue')),
                 meta: {title: '增加婴儿信息'},
+            },{
+                path: 'patientInfo/dealZk',
+                component: createNameComponent(() => import('@/views/medical-advice/patient-info/DealZk.vue')),
+                meta: {title: '转科处理'},
+            },{
+                path: 'executeItem/generateYz',
+                component: createNameComponent(() => import('@/views/medical-advice/execute-item/GenerateYz.vue')),
+                meta: {title: '医嘱生成'},
             },
         ],
     },

+ 117 - 0
src/views/medical-advice/execute-item/GenerateYz.vue

@@ -0,0 +1,117 @@
+<template>
+  <el-container>
+    <el-header>
+      <el-row :gutter="10" style="width: 100%">
+        <el-col :span="3">
+          <el-select   filterable v-model="queryParam.wardCode"  style="width: 130px;" size="small" @change="queryInfo(true)" >
+            <el-option v-for="item in ward" :key="item.code" :label="item.name" :value="item.code">
+              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+              <el-divider direction="vertical"></el-divider>
+              <span>{{ item.name }}</span>
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          医嘱日期:<el-date-picker v-model="queryParam.yzDate" type="date" disabled style="width: 120px"></el-date-picker>
+        </el-col>
+        <el-col :span="8">
+          <el-button type="success" icon="Search" size="small"  @click="queryInfo(false)" >查询</el-button>
+          <el-button type="primary" icon="Select" size="small"  @click="selectAll" >全选</el-button>
+          <el-button type="warning"  size="small"  @click="clearSelectionData">取消</el-button>
+          <el-button type="primary" icon="Histogram" size="small" >生成药品</el-button>
+          <el-button type="success" icon="Grid"  size="small" >生成诊疗</el-button>
+        </el-col>
+        <el-col :span="4">
+
+        </el-col>
+      </el-row>
+    </el-header>
+    <el-main>
+      <div>
+        <el-table
+            ref="multipleTableRef"
+            :data="tableData"
+            :height="getWindowSize.h-70"
+            @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55" />
+          <el-table-column property="bedNo" label="床位号" width="50" />
+          <el-table-column  label="住院号"  >
+            <template #default="scope">
+                <span v-if="scope.row.balance < 0" style="color: red">{{ scope.row.inpatientNo }}</span>
+                <span v-else>{{ scope.row.inpatientNo }}</span>
+            </template>
+          </el-table-column>>
+          <el-table-column property="admissTimes" label="住院次数"   />
+          <el-table-column property="name" label="姓名"  />
+          <el-table-column property="admissDate" label="入院时间"   />
+          <el-table-column property="totalCharge" label="总费用"    />
+          <el-table-column property="balance" label="余额">
+            <template #default="scope">
+              <span v-if="scope.row.balance < 0" style="color: red">{{ scope.row.balance }}</span>
+              <span v-else>{{ scope.row.balance }}</span>
+            </template>
+          </el-table-column>>
+        </el-table>
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+<script setup lang="ts">
+import {onMounted, ref} from "vue";
+import {getWindowSize} from "@/utils/window-size";
+import {getAllWards} from "@/api/zhu-yuan-yi-sheng/resident-doctor";
+import {queryGenerateYzList} from "@/api/medical-advice/excute-item";
+import {ElMessage,ElMessageBox,ElTable} from "element-plus";
+import {stringIsBlank} from "@/utils/blank-utils"
+import { getFormatDatetime } from "@/utils/date";
+const queryParam=ref({
+  wardCode:'',
+  yzDate:getFormatDatetime(new Date(),'YYYY-MM-DD'),
+ selectionData: []
+})
+
+const ward = ref([])
+const tableData = ref([])
+const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+const multipleSelection = ref([])
+
+// 全选负的不选
+const selectAll=()=>{
+  tableData.value.filter(item=>item.balance < 0 ).forEach((row)=>{
+    multipleTableRef.value!.toggleRowSelection(row,undefined)
+  })
+}
+
+// 多选中
+const handleSelectionChange = (val: any) => {
+  multipleSelection.value = val
+}
+// 取消选中
+const clearSelectionData = ()=>{
+  multipleTableRef.value!.clearSelection()
+}
+
+onMounted( ()=>{
+  getAllWards().then((res:any)=>{
+    ward.value =res
+    queryParam.value.wardCode = res[0].code
+     queryInfo(true)
+  })
+})
+
+
+const queryInfo = (selectAllFlag)=>{
+  queryGenerateYzList({wardCode:queryParam.value.wardCode}).then((res:any)=>{
+    tableData.value = res
+    if(selectAllFlag){
+      multipleTableRef.value!.toggleAllSelection()
+    }
+  })
+}
+
+</script>
+<style scoped lang="scss">
+
+</style>

+ 0 - 2
src/views/medical-advice/patient-info/AddBabyInfo.vue

@@ -1,5 +1,4 @@
 <template>
-  <div class="common-layout">
     <el-container>
       <el-header>
         <el-row :gutter="10">
@@ -66,7 +65,6 @@
          </div>
       </el-main>
     </el-container>
-  </div>
   <el-dialog v-model="editBabyDialog" title="增加婴儿信息" width="400">
     <el-form :model="editBaByInfo">
       <el-form-item label="性别" >

+ 317 - 0
src/views/medical-advice/patient-info/DealZk.vue

@@ -0,0 +1,317 @@
+<template>
+  <el-container>
+    <el-header>
+      <el-row :gutter="3" style="width: 100%">
+        <el-col :span="5">
+          <el-select   filterable v-model="queryParam.wardCode"  style="width: 130px;" size="small" @change="wardChange">
+            <el-option v-for="item in ward" :key="item.code" :label="item.name" :value="item.code">
+              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+              <el-divider direction="vertical"></el-divider>
+              <span>{{ item.name }}</span>
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="5">
+          输入码:<el-input  v-model="queryParam.keyWard" style="width: 150px" clearable placeholder="支持住院号或姓名" >
+          <template  #append>
+            <el-button icon="Search" @click="queryInfo" title="查询" />
+          </template>
+        </el-input>
+        </el-col>
+        <el-col :span="5">
+          转科病房:<el-popover :visible="visible" width="400" placement="right-end" trigger="click">
+          <template #reference>
+            <el-input v-model="queryParam.zkWardCode"    @click="visible = true" style="width: 100px" clearable />
+          </template>
+          <div style="width: 380px;">
+            <div style="text-align: right">
+              <el-button title="关闭" icon="CloseBold" @click="visible = false"></el-button>
+            </div>
+            <el-table :data="zkWard"  @row-click="fetchZkWard"  height="400">
+              <el-table-column  property="dept_name" label="科室名称" />
+              <el-table-column  property="name" label="病房名称" />
+            </el-table>
+          </div>
+        </el-popover>
+        </el-col>
+        <el-col :span="5">
+          小科室:<el-select   filterable v-model="queryParam.smallWardCode" clearable style="width: 130px;" size="small" >
+          <el-option v-for="item in smallWard" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-button type="success"  @click="saveData"> 保存</el-button>
+        </el-col>
+      </el-row>
+    </el-header>
+    <el-main>
+      <div :style="divStyle">
+        <div style="width: 55%;border: 1px #6b778c solid">
+          <div style="margin-left: 20px">
+            <el-tag>在院病人列表</el-tag>
+          </div>
+          <div>
+            <el-table :data="zyPatientList"  highlight-current-row style="width: 100%" @row-click="selectZkPatient"  :height="getWindowSize.h-95">
+              <el-table-column  property="inpatientNo" label="住院号" />
+              <el-table-column  property="bedNo" label="床号" />
+              <el-table-column  property="name" label="姓名" />
+              <el-table-column  property="fileStatus" label="状态" />
+              <el-table-column  property="wardName" label="病房" />
+              <el-table-column  property="zkWardName" show-overflow-tooltip label="待转病房" />
+              <el-table-column   label="入院日期" width="110" >
+                <template #default="scope">
+                  {{getFormatDatetime(scope.row.admissDate,'YYYY-MM-DD')}}
+                </template>
+              </el-table-column>
+              <el-table-column  property="admissTimes" label="住院次数" />
+            </el-table>
+          </div>
+        </div>
+        <div :style="centerDive" class="centerClass">
+          <div >
+            <el-button  size="large" icon="DArrowRight"   @click="addRight"/>
+          </div>
+          <div style="margin-top: 10px">
+            <el-button  size="large" icon="DArrowLeft"  @click="addLeft"/>
+          </div>
+        </div>
+        <div style="width: 37% ;border: 1px #6b778c solid">
+          <div style="margin-left: 20px">
+            <el-tag>待转科病人列表</el-tag>
+          </div>
+          <div>
+            <el-table :data="dZkPatientList" highlight-current-row style="width: 100%" @row-click="cancelZkPatient"  :height="getWindowSize.h-95">
+              <el-table-column  property="bedNo" label="床号" />
+              <el-table-column  property="inpatientNo" label="住院号" />
+              <el-table-column  property="name" label="姓名" />
+              <el-table-column  property="admissTimes" label="次数" />
+              <el-table-column  property="wardName" label="病房" />
+            </el-table>
+          </div>
+        </div>
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup lang="ts">
+import {onMounted, ref} from "vue";
+import {getWindowSize} from "@/utils/window-size";
+import {getAllWards} from "@/api/zhu-yuan-yi-sheng/resident-doctor";
+import {querySmallWard,queryZyWard} from "@/api/medical-advice/medical-common";
+import {queryZkPatient,queryZkBedVo,checkZk,saveZkData} from "@/api/medical-advice/patient-info";
+import {ElMessage,ElMessageBox} from "element-plus";
+import {stringIsBlank} from "@/utils/blank-utils"
+import { getFormatDatetime } from "@/utils/date";
+
+interface QueryType{
+  wardCode:string,
+  keyWard:string,
+  zkWardCode:string,
+  smallWardCode:string,
+}
+const queryParam  = ref<QueryType>({
+  wardCode:'',
+  keyWard:'',
+  zkWardCode:'',
+  smallWardCode:'',
+
+})
+
+
+//病室
+const ward = ref<any>([])
+// 转科病房
+const zkWard = ref([])
+// 小科室
+const smallWard = ref([])
+const visible = ref<boolean>(false)
+// 左边在院病人列表
+const zyPatientList=ref([])
+//右边待转科病人列表
+const dZkPatientList = ref([])
+
+onMounted(()=>{
+  getAllWards().then((res:any)=>{
+    ward.value =res
+    queryParam.value.wardCode = res[0].code
+    queryInfo()
+  })
+
+  queryZyWard().then((res:any)=>{
+    zkWard.value = res
+  })
+
+})
+
+
+const selectionLeftData = ref({})
+// 选择在院列表数据
+const  selectZkPatient = (row,index)=>{
+  selectionLeftData.value = row
+}
+
+const selectionRightData = ref({})
+// 取消需要转科的人
+const cancelZkPatient =(row)=>{
+  selectionRightData.value = row
+}
+
+const wardChange = ()=>{
+  if(dZkPatientList.value.length > 0){
+    queryZkBedVo({wardCode:selectionZkWard.value.code}).then((res:any)=>{
+      dZkPatientList.value = res
+    })
+  }
+  tempSelectionLeftData.value = []
+  queryInfo()
+}
+
+const queryInfo =()=>{
+  queryZkPatient(queryParam.value).then((res:any)=>{
+    zyPatientList.value = res
+  })
+}
+
+const saveData = () => {
+  let param = dZkPatientList.value.filter(item => !stringIsBlank(item.inpatientNo))
+  saveZkData(param).then((res: any) => {
+    wardChange()
+  })
+}
+
+const selectionZkWard = ref({})
+const fetchZkWard = (row)=>{
+  selectionZkWard.value= row
+  queryParam.value.zkWardCode = row.name
+  visible.value = false
+  queryParam.value.smallWardCode = ''
+    querySmallWard({code:row.dept_code}).then((res:any)=>{
+       smallWard.value = res
+    })
+  queryZkBedVo({wardCode:row.code}).then((res:any)=>{
+    dZkPatientList.value = res
+  })
+}
+
+const addRight = ()=>{
+  if(stringIsBlank(queryParam.value.wardCode)){
+    ElMessage.error('请选择病室')
+    return
+  }
+
+  if(stringIsBlank(queryParam.value.zkWardCode)){
+    ElMessage.error('请选择转科病房')
+    return
+  }
+
+  if(stringIsBlank(queryParam.value.smallWardCode)){
+    ElMessage.error('请选择小科室')
+    return
+  }
+  if(queryParam.value.smallWardCode == selectionLeftData.value.zkWard){
+    ElMessage.error('原科室不能与转科室相同')
+    return
+  }
+
+  ElMessageBox.confirm(
+      `确定将病人:${selectionLeftData.value.name}值为转科状态吗?`,
+      '',
+      {
+        distinguishCancelAndClose: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      }
+  )
+      .then(() => {
+        let param = {
+          inpatientNo : selectionLeftData.value.inpatientNo,
+          admissTimes : selectionLeftData.value.admissTimes,
+          wardCode : selectionLeftData.value.ward,
+          zkDept : queryParam.value.smallWardCode,
+          deptCode: selectionZkWard.value.code,
+        }
+        checkZk(param).then((res:any)=>{
+          // 没有就添加
+          if(tempSelectionLeftData.value.findIndex(item=>item.inpatientNo==selectionLeftData.value.inpatientNo)==-1){
+            tempSelectionLeftData.value.push(selectionLeftData.value)
+          }
+          let index = dZkPatientList.value.findIndex(item=>stringIsBlank(item.inpatientNo))
+          zyPatientList.value.splice(zyPatientList.value.findIndex(item=>item.inpatientNo==selectionLeftData.value.inpatientNo),1)
+          dZkPatientList.value[index].inpatientNo= selectionLeftData.value.inpatientNo
+          dZkPatientList.value[index].name= selectionLeftData.value.name
+          dZkPatientList.value[index].admissTimes= selectionLeftData.value.admissTimes
+          dZkPatientList.value[index].origDept= selectionLeftData.value.ward
+          dZkPatientList.value[index].origWard= selectionLeftData.value.zkWard
+          dZkPatientList.value[index].origBed= selectionLeftData.value.bedNo
+          dZkPatientList.value[index].consultPhysician= selectionLeftData.value.consultPhysician
+          dZkPatientList.value[index].deptDirector= selectionLeftData.value.deptDirector
+          dZkPatientList.value[index].referPhysician= selectionLeftData.value.referPhysician
+          dZkPatientList.value[index].zkDept= queryParam.value.smallWardCode
+        })
+      })
+}
+
+// 左边选择的数据用于取消转科的数据
+const tempSelectionLeftData = ref([])
+
+const addLeft=()=>{
+  if(stringIsBlank(selectionRightData.value.inpatientNo)){
+    ElMessage.error('选择的数据不能为空')
+    return
+  }
+ let temp = tempSelectionLeftData.value[tempSelectionLeftData.value.findIndex(item=>item.inpatientNo==selectionRightData.value.inpatientNo)]
+  clearDZkPatientList(dZkPatientList.value.findIndex(item=>item.inpatientNo==selectionRightData.value.inpatientNo))
+ zyPatientList.value.splice(0,0,temp)
+  zyPatientList.value.sort(function (a, b) {
+    let aBedNo = Number(a.bedNo) ? Number(a.bedNo) :100000
+    let bBedNo = Number(b.bedNo) ? Number(b.bedNo) :100000
+    if(aBedNo >= bBedNo){
+      return 1
+    }
+    return -1
+  })
+}
+// 取消清空左边的数据
+function clearDZkPatientList(index){
+  dZkPatientList.value[index].inpatientNo= ''
+  dZkPatientList.value[index].name= ''
+  dZkPatientList.value[index].admissTimes= null
+  dZkPatientList.value[index].origDept= ''
+  dZkPatientList.value[index].origWard= ''
+  dZkPatientList.value[index].origBed= ''
+  dZkPatientList.value[index].consultPhysician= ''
+  dZkPatientList.value[index].deptDirector= ''
+  dZkPatientList.value[index].referPhysician= ''
+  dZkPatientList.value[index].zkDept= ''
+}
+
+const divStyle = ref<any>({
+  width:'100%',
+  height:(getWindowSize.value.h-70)+'px',
+  display: 'flex'
+})
+
+const centerDive = ref<any>({
+  width:'8%',
+  padding:`${getWindowSize.value.h/2-70}px 0`
+})
+
+</script>
+
+<style  scoped lang="scss">
+.dsd{
+  border: 1px red solid;
+  display: flex;
+  text-align: center;
+}
+.centerClass{
+  text-align: center;
+}
+
+</style>

+ 764 - 0
src/views/mz-emr/ShareholderCard.vue

@@ -0,0 +1,764 @@
+<template>
+  <el-tabs
+      v-model="activeName"
+      type="card"
+      @tab-change="tabsChange"
+  >
+    <el-tab-pane label="身份维护" name="one">
+      <el-container>
+        <el-header>
+          <el-button type="primary" icon="RefreshRight" @click="queryVisitType">刷新</el-button>
+         <el-button type="success" icon="DocumentAdd" @click="addVisitType">新增</el-button>
+        </el-header>
+        <el-main>
+          <el-table :data="visitTypeTableData" :height="getWindowSize.h-80">
+            <el-table-column prop="name" label="名称" width="120" />
+            <el-table-column prop="startDate" label="有效开始时间" width="150" />
+            <el-table-column prop="endDate" label="有效结束时间" width="150" />
+            <el-table-column  label="操作" width="120">
+              <template #default="scope">
+                <el-button  type="primary" size="small" @click="editVisitType(scope.row)">修改</el-button>
+                <el-button v-if="scope.row.delFlag == 1"  type="success" size="small" @click="useVisitType(0,scope.row.id)">启用</el-button>
+                <el-button v-else  type="danger" size="small" @click="useVisitType(1,scope.row.id)">停用</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-main>
+      </el-container>
+    </el-tab-pane>
+    <el-tab-pane label="身份关系维护" name="two">
+      <el-container>
+        <el-header>
+          <el-input v-model="visitUserParam.keyWard" placeholder="支持门诊号/姓名/身份证" style="width: 200px" />
+          &nbsp;&nbsp;病人身份:<el-select v-model="visitUserParam.id" style="width: 120px">
+            <el-option v-for="item in visitUserParam.patientTypeParams" :key="item.id" :value="item.id" :label="item.name"> </el-option>
+          </el-select>
+          <el-button type="primary" icon="Search" @click="queryPatient">查询</el-button>
+        </el-header>
+        <el-main>
+          <el-table :data="visitUserData" stripe highlight-current-row :height="getWindowSize.h-100">
+            <el-table-column prop="patientId" label="门诊号" width="80"></el-table-column>
+            <el-table-column prop="name" label="姓名" width="120"></el-table-column>
+            <el-table-column prop="sex" label="性别" width="80"></el-table-column>
+            <el-table-column prop="socialNo" label="身份证号"  width="150" ></el-table-column>
+            <el-table-column prop="visitName" label="身份类别" width="120" ></el-table-column>
+            <el-table-column  label="操作" width="230">
+              <template #default="scope">
+                <el-button  type="primary" size="small" @click="updatePatientVisitType(scope.row)">编辑身份</el-button>
+                <el-button v-if="scope.row.visitId"  type="danger" size="small" @click="delPatientVisitType(scope.row)">删除身份</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="visitUserParam.currentPage"
+              :page-sizes="[30, 45, 70, 100]"
+              :page-size="visitUserParam.pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="visitUserParam.total"
+              style="margin-top: 5px"
+          ></el-pagination>
+        </el-main>
+      </el-container>
+    </el-tab-pane>
+    <el-tab-pane label="优惠明细维护" name="three">
+      <el-container>
+        <el-header>
+          病人身份:<el-select v-model="discountDetailParam.visitType" style="width: 120px">
+          <el-option v-for="item in visitUserParam.patientTypeParams" :key="item.id" :value="item.id" :label="item.name"> </el-option>
+        </el-select>
+          &nbsp;&nbsp;类别 <el-select v-model="discountDetailParam.discountClass" style="width: 150px">
+            <el-option v-for="item in discountClassQueryList" :key="item.code" :value="item.code" :label="item.name"> </el-option>
+          </el-select>
+          <el-button type="primary" icon="Search" @click="queryDiscountDetail">查询</el-button>
+          <el-button  icon="DocumentAdd" type="success"  @click="openDiscountDetailEdit(null)">新增</el-button>
+        </el-header>
+        <el-main>
+          <el-table :data="discountDetailData" stripe highlight-current-row :height="getWindowSize.h-100">
+            <el-table-column prop="visitName" label="身份名称" width="120"></el-table-column>
+            <el-table-column  label="状态" width="100">
+              <template #default="scope">
+                <el-tag v-if="scope.row.delFlag == 0"  type="success">启用</el-tag>
+                <el-tag v-else  type="danger">停用</el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column  label="优惠类型" width="120" show-overflow-tooltip >
+              <template #default="scope">
+                <span >{{getDiscountClassName(scope.row.discountClass)}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="chargeItem" label="项目编码" width="100"></el-table-column>
+            <el-table-column prop="chargeName" label="项目名称" width="150" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="discountType" label="折扣方式"  width="100" >
+              <template #default="scope">
+                <span >{{getDiscountTypeName(scope.row.discountType)}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="discount" label="折扣" width="100" ></el-table-column>
+            <el-table-column prop="startDate" label="有效开始时间" width="150" ></el-table-column>
+            <el-table-column prop="endDate" label="有效结束时间" width="150" ></el-table-column>
+            <el-table-column  label="操作" width="230">
+              <template #default="scope">
+                <el-button  type="primary" size="small" @click="openDiscountDetailEdit(scope.row)">修改</el-button>
+                <el-button v-if="scope.row.delFlag == 1"  type="danger" size="small" @click="updateDiscountDelFlag(scope.row,0)">启用</el-button>
+                <el-button v-else  type="danger" size="small" @click="updateDiscountDelFlag(scope.row,1)">停用</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination
+              @size-change="handleDiscountDetailSizeChange"
+              @current-change="handleDiscountDetailCurrentChange"
+              :current-page="discountDetailParam.currentPage"
+              :page-sizes="[30, 45, 70, 100]"
+              :page-size="discountDetailParam.pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="discountDetailParam.total"
+              style="margin-top: 5px"
+          ></el-pagination>
+        </el-main>
+      </el-container>
+    </el-tab-pane>
+  </el-tabs>
+  <el-dialog v-model="visitTypeDialog" title="身份编辑" width="500">
+    <el-form ref="formVisitTypeRef" :model="formVisitType" label-width="120px">
+      <el-form-item label="身份名称">
+        <el-input v-model="formVisitType.name" />
+      </el-form-item>
+      <el-form-item label="有效时间">
+        <el-col :span="11">
+          <el-date-picker
+              v-model="formVisitType.startDate"
+              type="datetime"
+              placeholder="有效开始时间"
+              style="width:  150px"
+              value-format="YYYY-MM-DD HH:mm:ss"
+          />
+        </el-col>
+        <el-col :span="2">
+          至
+        </el-col>
+        <el-col :span="11">
+          <el-date-picker
+              v-model="formVisitType.endDate"
+              type="datetime"
+              placeholder="有效截止时间"
+              style="width: 150px"
+              value-format="YYYY-MM-DD HH:mm:ss"
+          />
+        </el-col>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="visitTypeDialog = false">关闭</el-button>
+        <el-button type="success" @click="saveVisitType">
+          保存
+        </el-button>
+      </span>
+    </template>
+  </el-dialog>
+
+  <el-dialog
+      v-model="patientTypeDialog"
+      title="病人身份编辑"
+      width="300"
+  >
+    <el-select v-model="patientTypeParam.code" style="width: 120px">
+      <el-option v-for="item in patientTypeParam.patientTypeList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
+    </el-select>
+    <template #footer>
+      <span >
+        <el-button @click="patientTypeDialog = false">关闭</el-button>
+        <el-button type="primary" @click="savePatientTypeData">
+          保存
+        </el-button>
+      </span>
+    </template>
+  </el-dialog>
+
+  <el-dialog v-model="discountDialog"  title="优惠明细编辑" width="600" @close="clearFormDiscountDataAndRefush" >
+    <el-form  :model="formDiscount" label-width="120px">
+      <el-form-item label="身份名称">
+        <el-select v-model="formDiscount.visitType" style="width: 120px">
+          <el-option v-for="item in patientTypeParam.patientTypeList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="类型">
+        <el-select v-model="formDiscount.discountClass" style="width: 200px" @change="discountTypeChange">
+          <el-option v-for="item in discountClassList" :key="item.code" :value="item.code" :label="item.name"> </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item v-if="formDiscount.discountClass =='template_id'" label="项目编码">
+        <el-select v-model="formDiscount.chargeItem" style="width: 120px" @change="ChargeCodeChange(1)">
+          <el-option v-for="item in templateList" :key="item.code" :value="item.code" :label="item.code+' '+item.name" > </el-option>
+        </el-select>
+        <el-popover :visible="templateVisible" width="400" placement="right-end" trigger="click" >
+          <template #reference>
+            <el-button @click="queryTemplateDeatil">明细</el-button>
+          </template>
+          <div style="width: 380px;">
+            <div style="text-align: right">
+              <el-button title="关闭" icon="CloseBold" @click="templateVisible = false"></el-button>
+            </div>
+            <el-table :data="templateDetailList"   height="300">
+              <el-table-column  property="code" label="收费项目编码" />
+              <el-table-column  property="name" label="名称" width="150" show-overflow-tooltip />
+            </el-table>
+          </div>
+        </el-popover>
+      </el-form-item>
+      <el-form-item v-else-if=" formDiscount.discountClass =='gh' "  label="项目编码">
+        <el-select v-model="formDiscount.chargeItem" style="width: 120px" @change="ChargeCodeChange(2)">
+          <el-option v-for="item in ghList" :key="item.code" :value="item.code" :label="item.code+' '+item.name" > </el-option>
+        </el-select>
+        <el-popover :visible="ghVisible" width="600" placement="right-end" trigger="click" >
+          <template #reference>
+            <el-button @click="queryGhDeatil">明细</el-button>
+          </template>
+          <div style="width: 580px;">
+            <div style="text-align: right">
+              <el-button title="关闭" icon="CloseBold" @click="ghVisible = false"></el-button>
+            </div>
+            <el-table :data="ghTableList"   height="300">
+              <el-table-column  property="code" label="收费项目编码" />
+              <el-table-column  property="name" label="名称" width="150" show-overflow-tooltip />
+              <el-table-column  property="reqFee" label="挂号费" width="100" show-overflow-tooltip />
+              <el-table-column  property="clinicFee" label="诊疗费" width="100" show-overflow-tooltip />
+              <el-table-column  property="othFee" label="其他费" width="100" show-overflow-tooltip />
+            </el-table>
+          </div>
+        </el-popover>
+      </el-form-item>
+
+      <el-form-item v-else label="项目编码">
+        <el-popover :visible="visible" width="400" placement="right-end" trigger="click" @show="initChargeItemList">
+          <template #reference>
+            <el-input v-model="formDiscount.chargeItem"  @click="visible = true" style="width: 250px"  clearable />
+          </template>
+          <div style="width: 380px;">
+            <div style="text-align: right">
+              <el-button title="关闭" icon="CloseBold" @click="visible = false"></el-button>
+            </div>
+            <div style="height: 50px">
+              <el-input v-model="chargeItemKeyWard" placeholder="支持编码/名称"  style="width: 150px" clearable />
+              <el-button type="primary" icon="Search" @click="queryChargeItemList">查询</el-button>
+            </div>
+            <el-table :data="chargeItemList"  @row-click="fetchChargeCode"  height="400">
+              <el-table-column  property="code" label="收费项目编码" />
+              <el-table-column  property="name" label="名称" width="150" show-overflow-tooltip />
+              <el-table-column  property="chargeAmount" label="金额" />
+            </el-table>
+          </div>
+        </el-popover>
+        <el-popover v-if="formDiscount.discountClass !='charge_code'" :visible="innerVisible" width="400" placement="right-end" trigger="click" >
+          <template #reference>
+            <el-button  size="small" @click="queryItemDetailData">明细</el-button>
+          </template>
+          <div style="width: 380px;">
+            <div style="text-align: right">
+              <el-button title="关闭" icon="CloseBold" @click="innerVisible = false"></el-button>
+            </div>
+            <el-table :data="itemDetailList"    height="400">
+              <el-table-column  property="code" label="收费项目编码" />
+              <el-table-column  property="name" label="名称" width="150" show-overflow-tooltip />
+              <el-table-column  property="chargeAmount" label="金额" />
+            </el-table>
+          </div>
+        </el-popover>
+      </el-form-item>
+      <el-form-item label="项目名称">
+        <el-input disabled v-model="formDiscount.chargeName" ></el-input>
+      </el-form-item>
+      <el-form-item label="折扣方式">
+        <el-select v-model="formDiscount.discountType" >
+          <el-option v-for="item in discountTypeList" :key="item.code" :value="item.code" :label="item.name"> </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="折扣">
+        <el-input v-model="formDiscount.discount" ></el-input>
+      </el-form-item>
+      <el-form-item label="有效时间">
+        <el-col :span="11">
+          <el-date-picker
+              v-model="formDiscount.startDate"
+              type="datetime"
+              placeholder="有效开始时间"
+              style="width:  150px"
+              value-format="YYYY-MM-DD HH:mm:ss"
+          />
+        </el-col>
+        <el-col :span="2">
+          至
+        </el-col>
+        <el-col :span="11">
+          <el-date-picker
+              v-model="formDiscount.endDate"
+              type="datetime"
+              placeholder="有效截止时间"
+              style="width: 150px"
+              value-format="YYYY-MM-DD HH:mm:ss"
+          />
+        </el-col>
+      </el-form-item>
+      <el-form-item label="状态">
+        <el-select  v-model="formDiscount.delFlag" >
+          <el-option v-for="item in delFlagList" :key="item.code" :value="item.code" :label="item.name"> </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item v-if="formDiscount.discountClass =='jy_jc_code'" label="检验检查类型">
+        <el-select disabled  v-model="formDiscount.jyjcType" >
+          <el-option v-for="item in jyjcTypeList" :key="item.code" :value="item.code" :label="item.name"> </el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="discountDialog = false">关闭</el-button>
+        <el-button type="success" @click="saveDiscountData">
+          保存
+        </el-button>
+      </span>
+    </template>
+  </el-dialog>
+
+
+</template>
+
+<script setup lang="ts">
+import router from '@/router'
+import {onMounted, ref} from "vue";
+import {ElMessageBox, ElTree,ElMessage} from 'element-plus'
+import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
+import {
+  queryDiscountClass,
+  queryZdDiscountDetail,
+  saveZdDiscountDetail,
+  updateZdDiscountDetailDelFlag,
+  queryItemList,
+  queryAllTemplate,
+  queryTemplateDetails,
+  queryZdVisitTypeNew,
+  delZdVisitTypeNew,
+  updateZdVisitTypeNew,
+  queryPatientInfo,
+  saveZdVisitTypeUser,
+  delZdVisitTypeUser,
+  queryMzChargeType,
+  queryItemDetail,
+  insertZdVisitTypeNew
+} from "@/api/mz-emr/shareholder-card";
+import {getWindowSize} from "@/utils/window-size";
+import type { FormInstance } from 'element-plus'
+const activeName = ref('one')
+
+const tabsChange = ()=>{
+  if(activeName.value ==='two'){
+    queryPatient()
+  }else if(activeName.value ==='three'){
+    queryDiscountDetail()
+  }else {
+    queryVisitType()
+  }
+}
+
+const visible = ref(false)
+
+// 优惠明细参数
+const discountDetailParam = ref({
+  discountClass : 'all',
+  pageSize : 30,
+  currentPage : 1,
+  total : 0,
+  visitType : 0
+})
+// 优惠类型
+export interface SelectType {
+  code:string,name:string
+}
+
+const discountClassList = ref<SelectType[]>()
+// 优惠类型 查询条件
+const discountClassQueryList = ref<any>([])
+const userIdCode = ref<string>('')
+onMounted(()=>{
+  let patInfo = JSON.parse(window.atob(router.currentRoute.value.params.patientInfo))
+  userIdCode.value = patInfo.userIdCode
+  queryVisitType()
+  refushZdVisitTypeNew()
+  queryDiscountClass().then((res:SelectType[])=>{
+    discountClassList.value =res
+    discountClassQueryList.value.push({code:'all',name:'全部'})
+    res.forEach(item=>{
+      discountClassQueryList.value.push(item)
+    })
+  })
+})
+
+const refushZdVisitTypeNew = ()=>{
+  queryZdVisitTypeNew({delFlag:0}).then((res:any)=>{
+    visitUserParam.value.patientTypeParams = []
+    patientTypeParam.value.patientTypeList = res
+    visitUserParam.value.patientTypeParams.push({id:0,name:'全部'})
+    if(res){
+      res.forEach(item=>{
+        visitUserParam.value.patientTypeParams.push(item)
+      })
+    }
+  })
+}
+
+
+// 获取这个名称
+const getDiscountTypeName = (code)=>{
+  return discountTypeTable.find(item=>item.code == code).name
+}
+
+// 折扣率改变
+const discountTypeChange = ()=>{
+  formDiscount.value.chargeItem = ''
+  formDiscount.value.chargeName = ''
+  initDiscountType()
+}
+
+
+const initDiscountType = ()=>{
+  if(formDiscount.value.discountClass ==='charge_code' || formDiscount.value.discountClass==='gh'){
+    discountTypeList.value = [ {code:'1',name:'折扣率'},
+      {code:'2',name:'直接收费'},]
+  }else {
+    discountTypeList.value =  [
+      {code:'1',name:'折扣率'},
+    ]
+    formDiscount.value.discountType = '1'
+  }
+  if(formDiscount.value.discountClass ==='template_id'){
+    queryAllTemplate().then((res:any)=>{
+      templateList.value = res
+    })
+  }
+
+  if(formDiscount.value.discountClass ==='gh'){
+    queryMzChargeType().then((res:any)=>{
+      ghList.value = res
+    })
+  }
+}
+
+const chargeItemList = ref([])
+// 选择项目编码
+const fetchChargeCode = (row)=>{
+    formDiscount.value.chargeItem = row.code
+    formDiscount.value.chargeName = row.name
+    formDiscount.value.jyjcType = row.type
+    visible.value = false
+}
+// 查询 大类  套餐明细 tc
+const queryItemDetailData=()=>{
+  let param = {
+    discountClass : formDiscount.value.discountClass,
+    chargeItem : formDiscount.value.chargeItem,
+    jyjcType :formDiscount.value.jyjcType
+  }
+  queryItemDetail(param).then((res:any)=>{
+   itemDetailList.value = res
+    innerVisible.value = true
+  })
+}
+
+const ChargeCodeChange = (flag)=>{
+  if(!stringIsBlank(formDiscount.value.chargeItem)){
+    if(flag === 1){
+      formDiscount.value.chargeName = templateList.value.find(item=>item.code == formDiscount.value.chargeItem).name
+    }else {
+      formDiscount.value.chargeName = ghList.value.find(item=>item.code == formDiscount.value.chargeItem).name
+    }
+  }
+}
+
+const templateDetailList = ref([])
+const queryTemplateDeatil = ()=>{
+  if(stringIsBlank(formDiscount.value.chargeItem)){
+    return ElMessage.error('请选择组合套餐项目编码')
+  }
+  templateVisible.value = true
+  let param = {code:formDiscount.value.chargeItem}
+  queryTemplateDetails(param).then((res:any)=>{
+    templateDetailList.value = res
+  })
+}
+// 查询号别明细
+const queryGhDeatil = ()=>{
+  ghTableList.value = []
+  ghTableList.value.push(ghList.value.find(item=>item.code == formDiscount.value.chargeItem))
+  ghVisible.value = true
+}
+
+const ghList = ref([])
+const ghTableList = ref([])
+
+const queryChargeItemList= ()=>{
+  let param  = {
+    discountClass:formDiscount.value.discountClass,
+    keyWard:chargeItemKeyWard.value
+  }
+  queryItemList(param).then((res:any)=>{
+    chargeItemList.value = res
+  })
+}
+
+const templateVisible = ref(false)
+const ghVisible = ref(false)
+const templateList = ref([])
+
+const chargeItemKeyWard = ref('')
+const initChargeItemList = ()=>{
+  if(stringIsBlank(formDiscount.value.discountClass)){
+    return ElMessage.error('请选择类别')
+  }
+  queryChargeItemList()
+}
+
+// 折扣率
+const discountTypeList = ref([
+    {code:'1',name:'折扣率'},
+])
+
+const discountTypeTable = [
+  {code:'1',name:'折扣率'},
+  {code:'2',name:'直接收费'},
+]
+
+// 状态
+const delFlagList = [
+  {code:0,name:'启用'},
+  {code:1,name:'停用'},
+]
+
+
+const jyjcTypeList = [
+  {code:'1',name:'检验'},
+  {code:'2',name:'检查'},
+]
+
+const getDiscountClassName = (code)=>{
+  return  discountClassList.value.find(item=>item.code==code).name
+}
+
+const clearFormDiscountDataAndRefush = ()=>{
+  chargeItemKeyWard.value = ''
+  clearFormDiscountData()
+  queryDiscountDetail()
+}
+
+const clearFormDiscountData = ()=>{
+  formDiscount.value = {
+    id:null,
+    visitType:null,
+    discountClass:'',
+    chargeItem:'',
+    chargeName:'',
+    discountType:'',
+    discount:'',
+    startDate:'',
+    endDate:'',
+    delFlag:0,
+    visitName:'',
+    jyjcType: '',
+    opId:userIdCode.value,
+  }
+}
+
+// 打开优惠明细编辑窗口
+const openDiscountDetailEdit = (row)=>{
+  if(row){
+   formDiscount.value = row
+    initDiscountType()
+  }
+  discountDialog.value = true
+}
+
+//保存优惠明细
+const saveDiscountData = ()=>{
+  if(formDiscount.value.visitType){
+    formDiscount.value.visitName = patientTypeParam.value.patientTypeList.find(item=>item.id==formDiscount.value.visitType).name
+  }
+  formDiscount.value.opId = userIdCode.value
+  saveZdDiscountDetail(formDiscount.value).then(res=>{
+    clearFormDiscountData()
+    discountDialog.value = false
+    queryDiscountDetail()
+  })
+}
+
+const discountDialog = ref(false)
+const innerVisible = ref(false)
+
+const itemDetailList = ref([])
+
+const formDiscount = ref({
+  id:null,
+  visitType:null,
+  discountClass:'',
+  chargeItem:'',
+  chargeName:'',
+  discountType:'',
+  discount:'',
+  startDate:'',
+  endDate:'',
+  delFlag:0,
+  visitName:'',
+  jyjcType:'',
+  opId:userIdCode.value,
+})
+
+const updateDiscountDelFlag = (row,delFlag)=>{
+  updateZdDiscountDetailDelFlag({id:row.id,delFlag:delFlag}).then(res=>{
+    queryDiscountDetail()
+  })
+}
+
+const discountDetailData = ref([])
+
+// 查询优惠明细
+const queryDiscountDetail = ()=>{
+   queryZdDiscountDetail(discountDetailParam.value).then((res:any)=>{
+     discountDetailData.value = res.records
+     discountDetailParam.value.total = res.total
+   })
+}
+
+const queryVisitType = ()=>{
+  queryZdVisitTypeNew({}).then((res:any)=>{
+    visitTypeTableData.value = res
+  })
+}
+
+const formVisitType = ref({
+  name:'',
+  id:null,
+  startDate:'',
+  endDate:'',
+  delFlag:null,
+})
+
+const visitTypeDialog = ref(false)
+
+const visitTypeTableData = ref([])
+//修改身份类型
+const editVisitType=(row)=>{
+  console.log('row',row)
+  formVisitType.value = row
+  visitTypeDialog.value = true
+}
+
+const  visitUserParam = ref({
+  pageSize:30,
+  currentPage:1,
+  keyWard:'',
+  id:null,
+  total:0,
+  patientTypeParams:[]
+})
+
+// 修改病人身份
+const updatePatientVisitType = (row)=>{
+  patientTypeParam.value.code = row.visitId
+  patientTypeParam.value.patientId = row.patientId
+  patientTypeDialog.value = true
+}
+// 删除身份
+const delPatientVisitType =(row)=>{
+  delZdVisitTypeUser({patientId:row.patientId}).then(res=>{
+    queryPatient()
+  })
+}
+
+const visitUserData = ref([])
+const patientTypeDialog = ref(false)
+const patientTypeParam = ref({
+  code :null,
+  patientId:'',
+  patientTypeList:[]
+})
+
+// 保存病人身份信息
+const savePatientTypeData = ()=>{
+  saveZdVisitTypeUser({patientId:patientTypeParam.value.patientId,id:patientTypeParam.value.code,opId:userIdCode.value}).then(res=>{
+    queryPatient()
+    patientTypeDialog.value = false
+  })
+}
+
+const handleDiscountDetailSizeChange = (val) => {
+  discountDetailParam.value.pageSize = val
+  queryDiscountDetail()
+}
+
+const handleDiscountDetailCurrentChange = (val) => {
+  discountDetailParam.value.currentPage = val
+  queryDiscountDetail()
+}
+
+const handleSizeChange = (val) => {
+  visitUserParam.value.pageSize = val
+  queryPatient()
+}
+const handleCurrentChange = (val) => {
+  visitUserParam.value.currentPage = val
+  queryPatient()
+}
+// 查询病人信息
+const queryPatient = ()=>{
+  queryPatientInfo(visitUserParam.value).then(res=>{
+      visitUserData.value = res.records
+      visitUserParam.value.total = res.total
+  })
+}
+
+const clearVisitTypeData =()=>{
+  formVisitType.value.id= null
+  formVisitType.value.name= ''
+  formVisitType.value.startDate= ''
+  formVisitType.value.endDate= ''
+  formVisitType.value.delFlag= null
+}
+
+const formVisitTypeRef =ref<FormInstance>()
+const saveVisitType = ()=>{
+    if(formVisitType.value.id){
+      updateZdVisitTypeNew(formVisitType.value).then(res=>{
+        clearVisitTypeData()
+        visitTypeDialog.value = false
+        queryVisitType()
+        refushZdVisitTypeNew()
+      })
+    }else {
+      insertZdVisitTypeNew(formVisitType.value).then((res)=>{
+        clearVisitTypeData()
+        visitTypeDialog.value = false
+        queryVisitType()
+        refushZdVisitTypeNew()
+      })
+    }
+}
+
+const useVisitType = (delFlag,id)=>{
+   let param = {delFlag:delFlag,id:id}
+  delZdVisitTypeNew(param).then(res=>{
+    queryVisitType()
+    refushZdVisitTypeNew()
+  })
+}
+
+// 新增身份信息
+const addVisitType =() =>{
+    clearVisitTypeData()
+    visitTypeDialog.value = true
+}
+
+
+</script>
+<style scoped lang="scss">
+
+</style>