浏览代码

Merge branch 'master' into 淮海科技

lighter 4 月之前
父节点
当前提交
e8ec73d6ad

+ 7 - 6
src/components/xmlr/components/TableFee.vue

@@ -29,6 +29,7 @@ const feeSourcesOptions = [
   { code: 1, name: "医嘱" },
   { code: 2, name: "全部" },
   { code: 3, name: "医技" },
+  { code: 6, name: "窗口录入" },
 ];
 
 const refundSymbol = [
@@ -131,14 +132,14 @@ function rcvrcalcost() {
         </el-form-item>
         <el-form-item>
           <el-button type="primary" icon="Search" @click="mutation.getFee"
-            >查询</el-button
-          >
+            >查询
+          </el-button>
           <el-button type="warning" icon="RefreshRight" @click="rcvrcalcost"
-            >费用接受重算</el-button
-          >
+            >费用接受重算
+          </el-button>
           <el-button type="danger" icon="Delete" @click="refund"
-            >退费</el-button
-          >
+            >退费
+          </el-button>
           <GenerateMedicineReturnOrder v-if="!medicalTechnology" />
         </el-form-item>
       </el-form>

+ 33 - 26
src/components/xmlr/components/projectInput/FeeInput.vue

@@ -17,7 +17,7 @@ import { useDialog } from "@/components/cy/CyDialog/index";
 import NewDialog from "@/components/xmlr/dialog/NewDialog.vue";
 import { xcMessage } from "@/utils/xiaochan-element-plus";
 import ScanCodeGun from "@/components/xmlr/dialog/ScanCodeGun.vue";
-import { isDev } from "@/utils/public";
+import { needRule, ruleName } from "@/utils/public";
 
 const { saveData, saveProxy, store, muBanRef, medicalTechnology } = inject(
   key
@@ -27,6 +27,7 @@ const wardData = ref([]);
 const xiaoKeShiList = ref([]);
 
 const ssCode = ref("");
+const receiptNo = ref("");
 
 const userStore = useUserStore().userInfo;
 
@@ -47,15 +48,7 @@ function handleSave() {
     BizException(ExceptionEnum.LOGICAL_ERROR, "请先选择上传数据。");
   }
 
-  if (operationRoom() && stringIsBlank(ssCode.value)) {
-    BizException(ExceptionEnum.LOGICAL_ERROR, "请填写手术编码。");
-  }
-
-  if (
-    operationRoom() &&
-    stringNotBlank(ssCode.value) &&
-    !XEUtils.isStringNumber(ssCode.value)
-  ) {
+  if (stringNotBlank(ssCode.value) && !XEUtils.isStringNumber(ssCode.value)) {
     BizException(
       ExceptionEnum.LOGICAL_ERROR,
       "手术编码必须纯数字且中间不得有空格。"
@@ -79,8 +72,14 @@ function handleSave() {
     // 医技科室录入 3 护士录入 0
     orderNo: medicalTechnology ? 3 : 0,
     ledgerSn: store.patInfo.ledgerSn,
+    receiptNo: receiptNo.value,
+    chargeDate: store.chargeDate,
   };
 
+  if (needRule(ruleName.财务)) {
+    shangChuanFeiYong.orderNo = 3;
+  }
+
   ElMessageBox.confirm(
     `住院号:${store.patInfo.inpatientNo}<br />姓名:${store.patInfo.name}<br />共:${saveData.value.length}条费用`,
     "请认真核对",
@@ -133,11 +132,6 @@ function getSummaries(param) {
   return ["", "", "", sum + "元"];
 }
 
-function operationRoom() {
-  let dept = userStore.deptCode;
-  return dept === "1300000";
-}
-
 function handleSaveTemplate() {
   if (saveData.value.length === 0) {
     return;
@@ -186,6 +180,13 @@ function openScanCodeGun() {
   });
 }
 
+function 是否允许修改科室() {
+  if (needRule(ruleName.财务)) {
+    return true;
+  }
+  return medicalTechnology;
+}
+
 onMounted(() => {
   getWard().then(res => {
     wardData.value = res as any[];
@@ -208,7 +209,7 @@ onMounted(() => {
       <el-button icon="Tickets" type="info" @click="openScanCodeGun"
         >扫码枪
       </el-button>
-      <template v-if="medicalTechnology">
+      <template v-if="是否允许修改科室()">
         病区:
         <el-select
           v-model="store.queryWard"
@@ -247,16 +248,22 @@ onMounted(() => {
           >
         </el-select>
       </template>
-      <template v-if="operationRoom()">
-        手术编码:
-        <el-input
-          v-model="ssCode"
-          @blur="ssCode = ssCode.trim()"
-          clearable
-          placeholder="请输入手术编码"
-          style="width: 120px"
-        />
-      </template>
+      手术编码:
+      <el-input
+        v-model="ssCode"
+        @blur="ssCode = ssCode.trim()"
+        clearable
+        placeholder="请输入手术编码"
+        style="width: 120px"
+      />
+      发票号:
+      <el-input v-model="receiptNo" clearable style="width: 120px" />
+      收费日期:
+      <el-date-picker
+        v-model="store.chargeDate"
+        type="datetime"
+        style="width: 165px"
+      />
     </header>
     <div class="layout_main layout_el-table">
       <el-table

+ 19 - 15
src/components/xmlr/components/projectInput/ProjectInput.vue

@@ -2,35 +2,39 @@
 import HuoQuMuBan from "@/components/med-tec-mod/HuoQuMuBan.vue";
 import FeeInput from "@/components/xmlr/components/projectInput/FeeInput.vue";
 import MagicResizer from "@/components/cy/magic-resizer.vue";
-import {key, ProjectInput} from "@/components/xmlr/index";
-import {useUserStore} from "@/pinia/user-store";
+import { key, ProjectInput } from "@/components/xmlr/index";
+import { useUserStore } from "@/pinia/user-store";
 
-const {saveProxy, muBanRef, medicalTechnology, store} = inject(key) as ProjectInput
+const { saveProxy, muBanRef, medicalTechnology, store } = inject(
+  key
+) as ProjectInput;
 const userStore = useUserStore().userInfo;
 
 function xuanZeXiangMuTable(data: any[]) {
   data.forEach(value => {
     value.doctorCode = "";
-    value.deptCode = medicalTechnology ? userStore.deptCode : store.patInfo.zkWard;
-  })
-  saveProxy.push(...data)
+    value.deptCode = medicalTechnology
+      ? userStore.deptCode
+      : store.patInfo.zkWard;
+  });
+  saveProxy.push(...data);
 }
 </script>
 
 <template>
   <div class="layout_container layout-horizontal">
-    <magic-resizer direction="x"
-                   :min="180"
-                   :max="400"
-                   style="border-right: 1px solid var(--el-border-color)">
-      <HuoQuMuBan ref="muBanRef" @selectionFeiYong="xuanZeXiangMuTable"/>
+    <magic-resizer
+      direction="x"
+      :min="180"
+      :max="400"
+      style="border-right: 1px solid var(--el-border-color)"
+    >
+      <HuoQuMuBan ref="muBanRef" @selectionFeiYong="xuanZeXiangMuTable" />
     </magic-resizer>
     <div class="layout_main">
-      <FeeInput/>
+      <FeeInput />
     </div>
   </div>
 </template>
 
-<style lang="scss">
-
-</style>
+<style lang="scss"></style>

+ 17 - 3
src/components/xmlr/index.ts

@@ -5,10 +5,11 @@ import { BizException, ExceptionEnum } from "@/utils/BizException";
 import useCompRef from "@/utils/useCompRef";
 import { ElTable } from "element-plus";
 import { refund } from "@/api/hospitalization-costs/hospitalization-costs-api";
-import { isDev } from "@/utils/public";
+import { isDev, needRule, ruleName } from "@/utils/public";
 import cyRefList from "@/utils/cyRefList";
 import { UseDialogType } from "@/components/cy/CyDialog/index";
 import { useUserStore } from "@/pinia/user-store";
+import { getServerDateApi } from "@/api/public-api";
 
 type PatInfo = {
   name?: string;
@@ -42,7 +43,7 @@ export const useXmlr = (props: XmlrProps, emits: UseDialogType.Emits) => {
 
   const store = reactive({
     // 住院号
-    searchPatNo: "",
+    searchPatNo: isDev ? "005264" : "",
     // 患者信息
     patInfo: {} as PatInfo,
     searchFeeParams: {
@@ -56,7 +57,7 @@ export const useXmlr = (props: XmlrProps, emits: UseDialogType.Emits) => {
       refundSymbol: 3,
       execDept: props.medicalTechnology ? (isDev ? "" : userInfo.deptCode) : "",
     },
-    tabsVal: "费用",
+    tabsVal: isDev ? "项目录入" : "费用",
 
     feeTotal: 0,
     feeData: [],
@@ -65,6 +66,8 @@ export const useXmlr = (props: XmlrProps, emits: UseDialogType.Emits) => {
 
     queryWard: "",
     queryDept: "",
+
+    chargeDate: "",
   });
 
   const [saveData, saveProxy] = cyRefList<ChargeCodeType>(
@@ -88,6 +91,17 @@ export const useXmlr = (props: XmlrProps, emits: UseDialogType.Emits) => {
           mutation.getFee();
           store.queryWard = res?.admissDept;
           store.queryDept = res?.zkWard;
+          if (needRule(ruleName.财务)) {
+            getServerDateApi()
+              .then(res => {
+                //@ts-ignore
+                store.chargeDate = res;
+              })
+              .catch(() => {
+                //@ts-ignore
+                store.chargeDate = new Date();
+              });
+          }
           return res;
         })
         .catch(() => {

+ 4 - 0
src/utils/public.ts

@@ -4,6 +4,10 @@ import XEUtils, { isFunction, isObject } from "xe-utils";
 import { useUserStore } from "@/pinia/user-store";
 import env from "@/utils/setting";
 
+export const ruleName = {
+  财务: 14,
+};
+
 export function needRule(...val: number[]) {
   const userRoles = useUserStore().userInfo.roles;
   if (userRoles.includes(1)) {

+ 301 - 238
src/views/clinic/TransferInOfExpenses.vue

@@ -3,37 +3,53 @@
     <header>
       住院号:
       <el-input
-          v-model="inpatientNo"
-          clearable
-          placeholder="在此输入住院号"
-          prefix-icon="Search"
-          size="small"
-          style="width: 150px"
-          @blur="inpatientNo = $event.target.value.trim()"
-          @keyup.enter="queryClick"
+        v-model="inpatientNo"
+        clearable
+        placeholder="在此输入住院号"
+        prefix-icon="Search"
+        size="small"
+        style="width: 150px"
+        @blur="inpatientNo = $event.target.value.trim()"
+        @keyup.enter="queryClick"
       >
       </el-input>
-      <el-button style="margin-left: 10px" type="primary" @click="queryClick">查询患者信息</el-button>
+      <el-button style="margin-left: 10px" type="primary" @click="queryClick"
+        >查询患者信息
+      </el-button>
       <el-divider direction="vertical"></el-divider>
       机制号:
       <el-input
-          v-model="serialNo"
-          clearable
-          onkeyup="this.value=this.value.replace(/[^\d]/g,'') "
-          placeholder="在此输入机制号"
-          prefix-icon="Search"
-          size="small"
-          style="width: 150px"
-          @blur="serialNo = $event.target.value.trim()"
-          @keyup.enter="querySerialNo"
+        v-model="serialNo"
+        clearable
+        onkeyup="this.value=this.value.replace(/\D/g,'') "
+        placeholder="在此输入机制号"
+        prefix-icon="Search"
+        size="small"
+        style="width: 150px"
+        @blur="serialNo = $event.target.value.trim()"
+        @keyup.enter="querySerialNo"
       >
       </el-input>
-      <el-select v-model="liShiFlag" size="small" style="width: 70px;">
-        <el-option v-for="item in chaKanLiShi" :key="item.code" :label="item.name" :value="item.code"></el-option>
+      <el-select v-model="liShiFlag" size="small" style="width: 70px">
+        <el-option
+          v-for="item in chaKanLiShi"
+          :key="item.code"
+          :label="item.name"
+          :value="item.code"
+        ></el-option>
       </el-select>
-      <el-button style="margin-left: 10px" type="primary" @click="querySerialNo">查询机制号信息</el-button>
-      <el-button style="margin-left: 10px" type="warning" @click="huanZheFeiYongDrawer = true">查看患者费用</el-button>
-      <el-button style="margin-left: 10px" type="success" @click="baoCunClick">保存</el-button>
+      <el-button style="margin-left: 10px" type="primary" @click="querySerialNo"
+        >查询机制号信息
+      </el-button>
+      <el-button
+        style="margin-left: 10px"
+        type="warning"
+        @click="huanZheFeiYongDrawer = true"
+        >查看患者费用
+      </el-button>
+      <el-button style="margin-left: 10px" type="success" @click="baoCunClick"
+        >保存
+      </el-button>
     </header>
     <div>
       <el-descriptions border title="基本信息">
@@ -104,45 +120,58 @@
     </div>
     <div>
       收费日期:
-      <el-date-picker v-model="chargeDate" type="datetime" style="width: 165px"/>
+      <el-date-picker
+        v-model="chargeDate"
+        type="datetime"
+        style="width: 165px"
+      />
       执行科室:
       <SystemDeptSelect
-          clearable
-          style="width: 120px"
-          v-model="huanZheXinXi.execUnit"
+        clearable
+        style="width: 120px"
+        v-model="huanZheXinXi.execUnit"
       />
     </div>
     <div class="layout_main layout_container layout-horizontal">
       <div class="layout_flex_1-x layout_el-table">
-        <el-tag>
-          门诊发票信息: 合计 【{{ mzSum }}】
-        </el-tag>
-        <el-table ref="multipleTable"
-                  :data="mzXinXiList"
-                  highlight-current-row
-                  @selection-change="mzSelectChecked">
+        <el-tag> 门诊发票信息: 合计 【{{ mzSum }}】</el-tag>
+        <el-table
+          ref="multipleTable"
+          :data="mzXinXiList"
+          highlight-current-row
+          @selection-change="mzSelectChecked"
+        >
           <el-table-column :label="`门诊发票信息: 合计 【${mzSum}】`">
             <el-table-column label="项目名称" prop="itemName"></el-table-column>
-            <el-table-column label="收费编码" prop="chargeCodeMx"></el-table-column>
-            <el-table-column label="数量" prop="chargeQuantity"></el-table-column>
+            <el-table-column
+              label="收费编码"
+              prop="chargeCodeMx"
+            ></el-table-column>
+            <el-table-column
+              label="数量"
+              prop="chargeQuantity"
+            ></el-table-column>
             <el-table-column label="单价" prop="unitPrice"></el-table-column>
             <el-table-column label="金额" prop="chargeFee"></el-table-column>
-            <el-table-column label="选择" type="selection" width="60"></el-table-column>
+            <el-table-column
+              label="选择"
+              type="selection"
+              width="60"
+            ></el-table-column>
           </el-table-column>
         </el-table>
       </div>
-      <div style="display: flex;align-items: center; margin: 0 20px">
+      <div style="display: flex; align-items: center; margin: 0 20px">
         <el-button icon="Right" type="primary"></el-button>
       </div>
       <div class="layout_flex_1-x layout_el-table">
-        <el-tag>
-          住院收费项目:合计【{{ zySum }}】
-        </el-tag>
-        <el-table :data="zyXinXiList"
-                  height="100%"
-                  stripe>
+        <el-tag> 住院收费项目:合计【{{ zySum }}】</el-tag>
+        <el-table :data="zyXinXiList" height="100%" stripe>
           <el-table-column label="项目名称" prop="itemName"></el-table-column>
-          <el-table-column label="收费编码" prop="chargeCodeMx"></el-table-column>
+          <el-table-column
+            label="收费编码"
+            prop="chargeCodeMx"
+          ></el-table-column>
           <el-table-column label="数量" prop="chargeQuantity"></el-table-column>
           <el-table-column label="单价" prop="unitPrice"></el-table-column>
           <el-table-column label="金额" prop="chargeFee"></el-table-column>
@@ -151,62 +180,91 @@
     </div>
   </div>
 
-  <el-drawer v-model="huanZheFeiYongDrawer"
-             size="50%"
-             title="查看患者通过急门诊转入的费用">
+  <el-drawer
+    v-model="huanZheFeiYongDrawer"
+    size="50%"
+    title="查看患者通过急门诊转入的费用"
+  >
     <div class="layout_display_flex_y">
       <div>
         <el-input
-            v-model="inpatientNo"
-            clearable
-            placeholder="住院号"
-            style="width: 200px"
-            @blur="inpatientNo = $event.target.value.trim()"
-            @keyup.enter="getZyJiMenZhenZhuangRuFeiYongClick"
+          v-model="inpatientNo"
+          clearable
+          placeholder="住院号"
+          style="width: 200px"
+          @blur="inpatientNo = $event.target.value.trim()"
+          @keyup.enter="getZyJiMenZhenZhuangRuFeiYongClick"
         >
           <template #prepend>住院号</template>
         </el-input>
         <el-divider direction="vertical"></el-divider>
         项目名称:
         <el-select
-            style="width: 120px"
-            v-model="chargeCodeMX"
-            :remote-method="remoteMethodEntryName"
-            clearable filterable
-            placeholder="根据拼音首字母查找"
-            remote>
-          <el-option v-for="item in entryNameList" :key="item.code" :label="item.name" :value="item.code">
+          style="width: 120px"
+          v-model="chargeCodeMX"
+          :remote-method="remoteMethodEntryName"
+          clearable
+          filterable
+          placeholder="根据拼音首字母查找"
+          remote
+        >
+          <el-option
+            v-for="item in entryNameList"
+            :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-divider direction="vertical"></el-divider>
-        <el-button type="primary" @click="getZyJiMenZhenZhuangRuFeiYongClick">查询</el-button>
-        <el-tag style="margin-left: 7px">合计:{{ huanZheFeiYongZongHe }}</el-tag>
+        <el-button type="primary" @click="getZyJiMenZhenZhuangRuFeiYongClick"
+          >查询
+        </el-button>
+        <el-tag style="margin-left: 7px"
+          >合计:{{ huanZheFeiYongZongHe }}
+        </el-tag>
       </div>
       <div class="layout_flex_1-y layout_display_flex_y">
         <div class="layout_flex_1-y">
-          <el-table
-              :data="zyDetailChargeList"
-              height="100%">
-            <el-table-column label="住院号" prop="inpatientNo"></el-table-column>
+          <el-table :data="zyDetailChargeList" height="100%">
+            <el-table-column
+              label="住院号"
+              prop="inpatientNo"
+            ></el-table-column>
             <el-table-column label="流水号" prop="detailSn"></el-table-column>
-            <el-table-column label="收费日期" prop="chargeDate" width="80"></el-table-column>
-            <el-table-column label="收费代码" prop="chargeCode"></el-table-column>
-            <el-table-column label="项目名称" prop="chargeCodeName" show-overflow-tooltip></el-table-column>
-            <el-table-column label="费用录入日期" prop="genTime" width="80"></el-table-column>
+            <el-table-column
+              label="收费日期"
+              prop="chargeDate"
+              width="80"
+            ></el-table-column>
+            <el-table-column
+              label="收费代码"
+              prop="chargeCode"
+            ></el-table-column>
+            <el-table-column
+              label="项目名称"
+              prop="chargeCodeName"
+              show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column
+              label="费用录入日期"
+              prop="genTime"
+              width="80"
+            ></el-table-column>
             <el-table-column label="金额" prop="chargeFee"></el-table-column>
             <el-table-column label="数量" prop="chargeAmount"></el-table-column>
             <el-table-column label="操作">
               <template #default="scope">
                 <el-popconfirm
-                    cancel-button-text="取消"
-                    confirm-button-text="删除"
-                    icon="Info"
-                    iconColor="red"
-                    title="是否删除该费用"
-                    @confirm="shanChuFeiYongClick(scope.$index, scope.row)"
+                  cancel-button-text="取消"
+                  confirm-button-text="删除"
+                  icon="Info"
+                  iconColor="red"
+                  title="是否删除该费用"
+                  @confirm="shanChuFeiYongClick(scope.$index, scope.row)"
                 >
                   <template #reference>
                     <el-button type="danger">删除</el-button>
@@ -218,276 +276,281 @@
         </div>
         <div>
           <el-pagination
-              :page-size="huanZheFeiYongPageSize"
-              :total="huanZheFeiYongTotal"
-              background
-              layout="prev, pager, next, total"
-              @current-change="huanZheFeiYongCurrentChange"
+            :page-size="huanZheFeiYongPageSize"
+            :total="huanZheFeiYongTotal"
+            background
+            layout="prev, pager, next, total"
+            @current-change="huanZheFeiYongCurrentChange"
           ></el-pagination>
         </div>
       </div>
     </div>
   </el-drawer>
-
 </template>
 
 <script setup name="TransferInOfExpenses">
-import {ref} from 'vue'
+import { ref } from "vue";
 import {
   baoCunHuanZheZhuYuanFeiYong,
   getSerialNo,
   getZyJiMenZhenZhuangRuFeiYong,
   queryEntryName,
   queryHuanZhe,
-  shanChuFeiYong
-} from '@/api/inpatient/transfer-in-of-expenses'
-import {cptSex} from '@/utils/computed'
-import {computed} from 'vue'
-import {ElMessage, ElMessageBox} from 'element-plus'
-import {compareDate, formatDatetime} from '@/utils/date'
-import {getServerDateApi, queryDept} from '@/api/public-api'
-import {stringNotBlank} from '@/utils/blank-utils'
+  shanChuFeiYong,
+} from "@/api/inpatient/transfer-in-of-expenses";
+import { cptSex } from "@/utils/computed";
+import { computed } from "vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { compareDate, formatDatetime } from "@/utils/date";
+import { getServerDateApi, queryDept } from "@/api/public-api";
+import { stringNotBlank } from "@/utils/blank-utils";
 import Dig from "@/utils/math";
 import SystemDeptSelect from "@/components/system/dept-select/SystemDeptSelect.vue";
 
 //查询条件
 //住院号
-const inpatientNo = ref('') // 016868
+const inpatientNo = ref(""); // 016868
 //机制号
-const serialNo = ref('') // 11516328
+const serialNo = ref(""); // 11516328
 //是否查看历史记录
-const liShiFlag = ref(0)
+const liShiFlag = ref(0);
 //收费代码
-const chargeCodeMX = ref('')
+const chargeCodeMX = ref("");
 // 住院次数
-const admissTimes = ref('')
+const admissTimes = ref("");
 
 const huanZheXinXi = ref({
-  execUnit: ''
-})
+  execUnit: "",
+});
 
-const mzXinXiList = ref([])
-const zyXinXiList = ref([])
+const mzXinXiList = ref([]);
+const zyXinXiList = ref([]);
 
 //查询患者信息
 const queryClick = async () => {
   if (!inpatientNo.value) {
     ElMessage({
-      type: 'warning',
-      message: '请先输入患者住院号',
+      type: "warning",
+      message: "请先输入患者住院号",
       showClose: true,
       duration: 2500,
-    })
-    return
+    });
+    return;
   }
-  chargeDate.value = await getServerDateApi()
-  deptList.value = [{code: '1070000', name: '急诊科'}]
-  queryHuanZhe(inpatientNo.value).then((res) => {
-    huanZheXinXi.value = res
-    admissTimes.value = res.admissTimes
-    huanZheXinXi.value.execUnit = '1070000'
-
-    chargeDate.value = new Date(huanZheXinXi.value.admissDate ?? '');
+  chargeDate.value = await getServerDateApi();
+  deptList.value = [{ code: "1070000", name: "急诊科" }];
+  queryHuanZhe(inpatientNo.value).then(res => {
+    huanZheXinXi.value = res;
+    admissTimes.value = res.admissTimes;
+    huanZheXinXi.value.execUnit = "1070000";
 
-  })
-}
+    chargeDate.value = new Date(huanZheXinXi.value.admissDate ?? "");
+  });
+};
 
 //查询机制号
 const querySerialNo = () => {
   if (!serialNo.value) {
     ElMessage({
-      type: 'warning',
-      message: '请先输入机制号',
+      type: "warning",
+      message: "请先输入机制号",
       showClose: true,
       duration: 2500,
-    })
-    return
+    });
+    return;
   }
   getSerialNo(serialNo.value, liShiFlag.value)
-      .then((res) => {
-        mzXinXiList.value = res
-      })
-      .catch(() => {
-        mzXinXiList.value = []
-      })
-}
+    .then(res => {
+      mzXinXiList.value = res;
+    })
+    .catch(() => {
+      mzXinXiList.value = [];
+    });
+};
 
 //定义用来删除 多选框的选中状态 以及点击选中多选框
-const multipleTable = ref(null)
+const multipleTable = ref(null);
 //点击多选框,把里面的内容添加进去
 const mzSelectChecked = (selection, row) => {
-  zyXinXiList.value = selection
-}
+  zyXinXiList.value = selection;
+};
 
 //门诊发票信息 金额总和
 let mzSum = computed(() => {
-  let sum = 0
-  mzXinXiList.value.forEach((item) => {
-    sum = Dig.add(sum, Dig.multiply(item.unitPrice, item.chargeQuantity))
-  })
-  return sum.toFixed(2)
-})
+  let sum = 0;
+  mzXinXiList.value.forEach(item => {
+    sum = Dig.add(sum, Dig.multiply(item.unitPrice, item.chargeQuantity));
+  });
+  return sum.toFixed(2);
+});
 //住院收费项目 金额总和
 let zySum = computed(() => {
-  let sum = 0
-  zyXinXiList.value.forEach((item) => {
-    sum = Dig.add(sum, Dig.multiply(item.unitPrice, item.chargeQuantity))
-  })
-  return sum.toFixed(2)
-})
+  let sum = 0;
+  zyXinXiList.value.forEach(item => {
+    sum = Dig.add(sum, Dig.multiply(item.unitPrice, item.chargeQuantity));
+  });
+  return sum.toFixed(2);
+});
 
-const huanZheFeiYongDrawer = ref(false)
+const huanZheFeiYongDrawer = ref(false);
 
-const HuanZheFeiYongCurrentPage = ref(1)
-const huanZheFeiYongPageSize = ref(10)
-const huanZheFeiYongTotal = ref(0)
-const huanZheFeiYongZongHe = ref(0)
+const HuanZheFeiYongCurrentPage = ref(1);
+const huanZheFeiYongPageSize = ref(10);
+const huanZheFeiYongTotal = ref(0);
+const huanZheFeiYongZongHe = ref(0);
 
 //住院患者的费用信息
-const zyDetailChargeList = ref([])
+const zyDetailChargeList = ref([]);
 
-let resInpatientNo = null
-let resChargeCodeMx = null
+let resInpatientNo = null;
+let resChargeCodeMx = null;
 
 //点击查询患者 门急诊转入的费用 在定义两个字段,用来分页的时候就算输入框没值了 也能拿到数据
 const getZyJiMenZhenZhuangRuFeiYongClick = () => {
   if (!admissTimes.value) {
     ElMessage.warning({
-      message: '请先查询出患者信息',
+      message: "请先查询出患者信息",
       showClose: true,
       duration: 2500,
-    })
-    return
+    });
+    return;
   }
   //通过住院号和项目编码 获取住院门诊装入费用
-  getZyJiMenZhenZhuangRuFeiYong(inpatientNo.value, chargeCodeMX.value, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
-    resInpatientNo = inpatientNo.value
-    resChargeCodeMx = chargeCodeMX.value
-    zyDetailChargeList.value = res.data
-    huanZheFeiYongTotal.value = res.total
-    huanZheFeiYongZongHe.value = res.sum
-  })
-}
+  getZyJiMenZhenZhuangRuFeiYong(
+    inpatientNo.value,
+    chargeCodeMX.value,
+    admissTimes.value,
+    HuanZheFeiYongCurrentPage.value,
+    huanZheFeiYongPageSize.value
+  ).then(res => {
+    resInpatientNo = inpatientNo.value;
+    resChargeCodeMx = chargeCodeMX.value;
+    zyDetailChargeList.value = res.data;
+    huanZheFeiYongTotal.value = res.total;
+    huanZheFeiYongZongHe.value = res.sum;
+  });
+};
 
 //点击上下分页触发的事件
-const huanZheFeiYongCurrentChange = (val) => {
-  HuanZheFeiYongCurrentPage.value = val
+const huanZheFeiYongCurrentChange = val => {
+  HuanZheFeiYongCurrentPage.value = val;
   if (zyDetailChargeList.value) {
-    getZyJiMenZhenZhuangRuFeiYong(resInpatientNo, resChargeCodeMx, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
-      zyDetailChargeList.value = res.data
-      huanZheFeiYongTotal.value = res.total
-    })
+    getZyJiMenZhenZhuangRuFeiYong(
+      resInpatientNo,
+      resChargeCodeMx,
+      admissTimes.value,
+      HuanZheFeiYongCurrentPage.value,
+      huanZheFeiYongPageSize.value
+    ).then(res => {
+      zyDetailChargeList.value = res.data;
+      huanZheFeiYongTotal.value = res.total;
+    });
   }
-}
+};
 
 //删除住院收费项目 前端删除 后端也删除 只是不执行一个查找的动作了
 const shanChuFeiYongClick = (index, val) => {
-  shanChuFeiYong(val).then((res) => {
-    zyDetailChargeList.value.splice(index, 1)
-  })
-}
+  shanChuFeiYong(val).then(res => {
+    zyDetailChargeList.value.splice(index, 1);
+  });
+};
 //点击保存触发的事件
 const baoCunClick = () => {
   if (compareDate(huanZheXinXi.value.admissDate, chargeDate.value)) {
-    return ElMessage.error('费用发生时间不能在入院时间之前。')
+    return ElMessage.error("费用发生时间不能在入院时间之前。");
   }
-  if (stringNotBlank(huanZheXinXi.value.disDate) && compareDate(chargeDate.value, huanZheXinXi.value.disDate)) {
-    return ElMessage.error('费用发生时间不能在出院时间之后。')
+  if (
+    stringNotBlank(huanZheXinXi.value.disDate) &&
+    compareDate(chargeDate.value, huanZheXinXi.value.disDate)
+  ) {
+    return ElMessage.error("费用发生时间不能在出院时间之后。");
   }
-  huanZheXinXi.value.chargeDate = formatDatetime(chargeDate.value)
-  if (typeof huanZheXinXi.value.inpatientNo === 'undefined') {
+  huanZheXinXi.value.chargeDate = formatDatetime(chargeDate.value);
+  if (typeof huanZheXinXi.value.inpatientNo === "undefined") {
     ElMessage({
-      type: 'warning',
-      message: '请先选择患者',
+      type: "warning",
+      message: "请先选择患者",
       showClose: true,
       duration: 2500,
-    })
-    return
+    });
+    return;
   }
   if (zyXinXiList.value.length === 0) {
     ElMessage({
-      type: 'warning',
-      message: '请先选择要添加的费用',
+      type: "warning",
+      message: "请先选择要添加的费用",
       showClose: true,
       duration: 2500,
-    })
-    return
+    });
+    return;
   }
-  huanZheXinXi.value.list = zyXinXiList.value
-  if (huanZheXinXi.value.chargeDate === '') {
+  huanZheXinXi.value.list = zyXinXiList.value;
+  if (huanZheXinXi.value.chargeDate === "") {
     return ElMessage.error({
-      message: '请选择日期',
-    })
+      message: "请选择日期",
+    });
   }
   for (let i = 0; mzXinXiList.value.length; i++) {
-    if (huanZheXinXi.value.name !== mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
-      return ElMessageBox.confirm('', '提示', {
-        cancelButtonText: '取消',
-        confirmButtonText: '确定',
+    if (
+      huanZheXinXi.value.name !== mzXinXiList.value[i].patientName &&
+      typeof mzXinXiList.value[i].patientName !== "undefined"
+    ) {
+      return ElMessageBox.confirm("", "提示", {
+        cancelButtonText: "取消",
+        confirmButtonText: "确定",
         dangerouslyUseHTMLString: true,
-        type: 'warning',
+        type: "warning",
         message: `门诊病人姓名【'${mzXinXiList.value[i].patientName}  '】住院病人姓名【'  ${huanZheXinXi.value.name}  '】不一致,是否继续?<br>收费日期:${huanZheXinXi.value.chargeDate}`,
       })
-          .then(() => {
-            baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
-              zyXinXiList.value = []
-              mzXinXiList.value = []
-            })
-          })
-          .catch(() => {
-          })
-    } else if (huanZheXinXi.value.name === mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
-      return ElMessageBox.confirm('', '提示', {
-        cancelButtonText: '取消',
-        confirmButtonText: '确定',
+        .then(() => {
+          baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then(res => {
+            zyXinXiList.value = [];
+            mzXinXiList.value = [];
+          });
+        })
+        .catch(() => {});
+    } else if (
+      huanZheXinXi.value.name === mzXinXiList.value[i].patientName &&
+      typeof mzXinXiList.value[i].patientName !== "undefined"
+    ) {
+      return ElMessageBox.confirm("", "提示", {
+        cancelButtonText: "取消",
+        confirmButtonText: "确定",
         dangerouslyUseHTMLString: true,
-        type: 'warning',
+        type: "warning",
         message: `收费日期:${huanZheXinXi.value.chargeDate}`,
       })
-          .then(() => {
-            baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
-              zyXinXiList.value = []
-              mzXinXiList.value = []
-            })
-          })
-          .catch(() => {
-          })
+        .then(() => {
+          baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then(res => {
+            zyXinXiList.value = [];
+            mzXinXiList.value = [];
+          });
+        })
+        .catch(() => {});
     }
   }
-}
+};
 //项目名称 数组
-const entryNameList = ref([])
+const entryNameList = ref([]);
 
 //远程搜索项目名称
-const remoteMethodEntryName = (val) => {
+const remoteMethodEntryName = val => {
   if (val.length >= 2) {
-    queryEntryName(val).then((res) => {
-      entryNameList.value = res
-    })
+    queryEntryName(val).then(res => {
+      entryNameList.value = res;
+    });
   }
-}
+};
 
-const chargeDate = ref(new Date())
+const chargeDate = ref(new Date());
 
 // 科室
-const deptList = ref([])
-//远程搜索会诊科室
-const remoteMethodHuiZhenKeShi = (val) => {
-  if (val !== '' && val.length > 1) {
-    queryDept(val)
-        .then((res) => {
-          deptList.value = res
-        })
-        .catch(() => {
-          deptList.value = []
-        })
-  }
-}
+const deptList = ref([]);
 
 const chaKanLiShi = [
-  {code: 0, name: '当前'},
-  {code: 1, name: '历史'},
-]
+  { code: 0, name: "当前" },
+  { code: 1, name: "历史" },
+];
 </script>
 
 <style></style>

+ 7 - 0
src/views/clinic/outside-hospital-expenses/index.vue

@@ -0,0 +1,7 @@
+<script setup lang="ts">
+import XmlrV2 from "@/components/xmlr/index.vue";
+</script>
+
+<template>
+  <xmlr-v2 />
+</template>

+ 3 - 1
src/views/surgical-management/SurgeryArrangement.vue

@@ -569,7 +569,9 @@
       >
         <div style="width: 170px">{{ item.opDatetime }}</div>
         <div style="width: 90px">{{ item.roomName }}</div>
-        <div style="width: 160px">{{ item.deptName }} - {{ item.bedNo }}床</div>
+        <div style="width: 160px">
+          {{ item.deptName }} - {{ item.bedNo }}床
+        </div>
         <div style="width: 80px">{{ item.inpatientNo }}</div>
         <div style="width: 160px">
           {{ item.age }} - {{ item.sex }} - {{ item.patientName }}

+ 1 - 1
src/views/system/login.vue

@@ -108,7 +108,7 @@ const submit = () => {
     localStorage.clear();
     userStore.setUserInfo(res);
     systemConfig.setConfig(res.userConfigJson);
-    if (!checkPasswordStrength(params.password)) {
+    if (!checkPasswordStrength(params.password) && !isDev) {
       changePassword(false).then(newPassword => {
         form.password = newPassword;
         submit();