Browse Source

药房现在动态查询了

xiaochan 2 months ago
parent
commit
1ed268bdd6

+ 2 - 0
src/App.vue

@@ -22,6 +22,7 @@ import { useSystemStore } from "@/pinia/system-store";
 import useChangeToken from "@/utils/cy-use/useChangeToken";
 import CyDialogV2 from "@/components/cy/CyDialog/index.vue";
 import BackgroundTask from "@/layout/HeaderV2/BackgroundTask.vue";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const progressBarStore = useProgressBarStore();
 const systemStore = useSystemStore();
@@ -129,6 +130,7 @@ function systemNotification(data) {
 }
 
 onMounted(() => {
+  useYfGroupStore().init();
   setCallback("refreshToken", data => {
     useUserStore().setToken(data.token);
   });

+ 7 - 0
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.ts

@@ -351,3 +351,10 @@ export function getYaoPingJiLiang(code, serial) {
     params: { code, serial },
   });
 }
+
+export function getYpZdGroup() {
+  return requestV2({
+    url: url + "/getYpZdGroup",
+    method: "get",
+  });
+}

+ 0 - 1075
src/components/inpatient/XiangMuLuRu.vue

@@ -1,1075 +0,0 @@
-<template>
-  <div class="layout_display_flex_y">
-    <div>
-      <el-tag effect="dark" size="small">患者姓名: {{ patient.name }}</el-tag>
-      <el-tag effect="dark" size="small"
-        >住院号: {{ patient.inpatientNo }}
-      </el-tag>
-      <el-tag effect="dark" size="small">床号: {{ patient.bedNo }}</el-tag>
-      <el-tag effect="dark" size="small"
-        >住院次数: {{ patient.admissTimes }}
-      </el-tag>
-      <el-tag effect="dark" size="small"
-        >性别: {{ cptSex(patient.sex) }}
-      </el-tag>
-      住院号:
-      <el-input
-        v-model="inpatientNo"
-        clearable
-        placeholder="住院号"
-        style="width: 100px"
-      ></el-input>
-      <el-button icon="Search" type="primary" @click="chaXunHuanZheXinXi"
-        >查询患者信息
-      </el-button>
-      <el-button
-        icon="Close"
-        style="margin-left: 20px"
-        type="danger"
-        @click="guanBiDialog"
-        >关闭
-      </el-button>
-      <el-button
-        style="margin-left: 20px"
-        type="warning"
-        @click="chaoZuoZhiNan = true"
-        >操作指南
-      </el-button>
-    </div>
-    <div class="layout_flex_1-y">
-      <el-tabs v-model="xmlrTabs" type="border-card" class="el-tabs__fill">
-        <el-tab-pane label="已录入项目" name="ylrxm">
-          <div class="layout_display_flex_y">
-            <div>
-              项目名称:
-              <xc-combo-grid
-                v-model="patient"
-                clearable
-                style="width: 220px"
-                code="chargeCode"
-                name="chargeName"
-                :query-data-func="getChargeCode"
-              >
-                <el-table-column
-                  label="规格"
-                  prop="specification"
-                  width="250"
-                  show-overflow-tooltip
-                />
-                <el-table-column
-                  label="厂家"
-                  prop="manufactor"
-                  width="250"
-                  show-overflow-tooltip
-                />
-              </xc-combo-grid>
-              医嘱号:
-              <el-input
-                v-model="patient.actOrderNo"
-                clearable
-                placeholder="医嘱号"
-                style="width: 120px"
-              />
-              录入日期:
-              <el-date-picker
-                v-model="dateRange"
-                :shortcuts="shortcuts"
-                end-placeholder="结束日期"
-                placeholder="选择日期"
-                range-separator="至"
-                start-placeholder="开始日期"
-                style="width: 280px"
-                type="daterange"
-              ></el-date-picker>
-              <el-button
-                :icon="riQiPaiXu === 'DESC' ? 'CaretBottom' : 'CaretTop'"
-                type="success"
-                @click="
-                  riQiPaiXu === 'DESC'
-                    ? (riQiPaiXu = 'ASC')
-                    : (riQiPaiXu = 'DESC')
-                "
-                >{{ riQiPaiXu === "DESC" ? "日期降序" : "日期升序" }}
-              </el-button>
-              <el-select
-                v-model="feiYongLeiXingCode"
-                style="width: 70px"
-                @change="queryFeiYong"
-              >
-                <el-option
-                  v-for="item in feiYongLeiXing"
-                  :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-select v-model="patient.orderNo" style="width: 70px">
-                <el-option
-                  v-for="item in yiZhuTuiFeiLeiXing"
-                  :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-select v-model="patient.tuiFeiFlag" style="width: 70px">
-                <el-option
-                  v-for="item in tuiFeiLeiXin"
-                  :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-button icon="Search" type="primary" @click="queryFeiYong"
-                >查询
-              </el-button>
-              <el-button icon="Delete" type="danger" @click="xiangMuTuiFeiClick"
-                >退费
-              </el-button>
-              <!--     退费的费用详细       -->
-              <refund-for-project-entry
-                @refreshFee="queryFeiYong"
-                :is-drug="feiYongLeiXingCode === 1"
-                v-if="refundConfirmation.dialog"
-                @uncheck="refundUncheck"
-                :patient="patient"
-                v-model="refundConfirmation.dialog"
-                :list="refundConfirmation.data"
-              />
-              <el-button
-                v-if="userInfo.roles.findIndex(i => i === 1 || i === 8) > -1"
-                type="warning"
-                @click="sheZhiWeiYiVBao"
-                >设为医保
-              </el-button>
-            </div>
-            <div class="layout_flex_1-y">
-              <el-table
-                :data="cptTableDataHuanZheFeiYong"
-                height="100%"
-                class="eltable"
-                show-summary
-                :summary-method="getSummaries"
-                highlight-current-row
-                row-key="rowId"
-                ref="elTableRef"
-                stripe
-                @selection-change="handleSelectionChange"
-              >
-                <el-table-column
-                  style="width: 100px"
-                  type="selection"
-                  :reserve-selection="true"
-                ></el-table-column>
-                <el-table-column
-                  label="流水号"
-                  prop="detailSn"
-                  width="70px"
-                ></el-table-column>
-                <el-table-column
-                  label="医嘱号"
-                  prop="orderNo"
-                  width="70px"
-                ></el-table-column>
-                <el-table-column
-                  label="录入日期"
-                  prop="chargeDate"
-                  width="70px"
-                ></el-table-column>
-                <el-table-column
-                  label="项目编码"
-                  prop="chargeCodeMx"
-                ></el-table-column>
-                <el-table-column
-                  label="项目名称"
-                  prop="chargeName"
-                ></el-table-column>
-                <el-table-column
-                  label="规格"
-                  v-if="feiYongLeiXingCode !== 1"
-                  prop="specification"
-                ></el-table-column>
-                <el-table-column
-                  v-if="feiYongLeiXingCode === 1"
-                  label="药品名称"
-                  prop="drugname"
-                ></el-table-column>
-                <el-table-column
-                  label="执行科室"
-                  prop="execDept"
-                ></el-table-column>
-                <el-table-column
-                  label="申请科室"
-                  prop="deptCode"
-                ></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="状态" prop="chargeStatus">
-                  <template #default="scope">
-                    {{ costState(scope.row.chargeStatus) }}
-                  </template>
-                </el-table-column>
-                <el-table-column label="录入人" prop="opName"></el-table-column>
-                <el-table-column
-                  label="账单码"
-                  prop="billItemName"
-                ></el-table-column>
-                <el-table-column label="是否退费" prop="tuiFeiFlag">
-                  <template #default="scope">
-                    <span
-                      v-html="conversionRefundFlag(scope.row.oriDetailSn)"
-                      style="color: red"
-                    ></span>
-                    <br />
-                    <span v-if="scope.row.oriDetailSn > 0">
-                      <span style="color: #e6a23c">退费数据</span> <br />
-                      <span style="color: teal">
-                        原流水号为 <br />
-                        【 {{ scope.row.oriDetailSn }} 】
-                      </span>
-                    </span>
-                  </template>
-                </el-table-column>
-              </el-table>
-            </div>
-            <div>
-              <el-pagination
-                :current-page="patient.currentPage"
-                :page-size="patient.pageSize"
-                :page-sizes="[20, 30, 40, 50]"
-                :total="total"
-                layout="total, sizes, prev, pager, next, jumper"
-                style="margin-top: 5px"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              ></el-pagination>
-            </div>
-          </div>
-        </el-tab-pane>
-        <!-- 项目录入 -->
-        <el-tab-pane
-          v-if="panDuanSFTongGuoBingShiJinRu"
-          label="项目录入"
-          name="xmlr"
-        >
-          <div class="layout_display_flex">
-            <div>
-              <HuoQuMuBan
-                ref="muBanRef"
-                @selectionFeiYong="xuanZeXiangMuTable"
-              />
-            </div>
-            <div
-              class="layout_flex_1-x layout_display_flex_y"
-              style="margin-left: 10px"
-            >
-              <div>
-                <el-button
-                  icon="Document"
-                  type="warning"
-                  @click="baoCunMuBanDialog = true"
-                >
-                  存模板
-                </el-button>
-                <el-button
-                  icon="Upload"
-                  type="primary"
-                  @click="shangChuanXiangMu"
-                  >保存
-                </el-button>
-                <el-button
-                  icon="Plus"
-                  type="success"
-                  @click="xinZhengXiangMuDialog = true"
-                >
-                  新增
-                </el-button>
-                <el-select
-                  v-model="zhiXingKeShi"
-                  filterable
-                  style="width: 180px; margin: 0px 10px 0px 10px"
-                >
-                  <el-option
-                    v-for="item in deptData"
-                    :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-button
-                  icon="Edit"
-                  type="warning"
-                  @click="xieGaiZhiXingKeShi"
-                >
-                  修改执行科室
-                </el-button>
-              </div>
-              <div class="layout_flex_1-y">
-                <el-table
-                  :data="saveData"
-                  height="100%"
-                  class="eltable"
-                  highlight-current-row
-                  stripe
-                >
-                  <el-table-column label="录入信息">
-                    <el-table-column label="录入时间">
-                      <template #default>
-                        {{ getDatetime(new Date()) }}
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                      label="项目编码"
-                      prop="chargeCodeMx"
-                    ></el-table-column>
-                    <el-table-column
-                      label="名称"
-                      prop="chargeName"
-                    ></el-table-column>
-                    <el-table-column label="执行科室" prop="deptCode">
-                      <template #default="scope">
-                        <el-select
-                          v-model="scope.row.deptCode"
-                          filterable
-                          style="width: 90%"
-                        >
-                          <el-option
-                            v-for="item in deptData"
-                            :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>
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                      label="单价"
-                      prop="chargeAmount"
-                    ></el-table-column>
-                    <el-table-column label="数量" prop="amount" width="130">
-                      <template #default="scope">
-                        <el-input-number
-                          v-model="scope.row.amount"
-                          :min="0"
-                          :precision="1"
-                          style="width: 120px"
-                        ></el-input-number>
-                      </template>
-                    </el-table-column>
-                  </el-table-column>
-                  <el-table-column label="金额">
-                    <template #default="scope">
-                      {{
-                        (scope.row.chargeAmount * scope.row.amount).toFixed(2)
-                      }}
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    label="账单码"
-                    prop="billItemName"
-                  ></el-table-column>
-                  <el-table-column
-                    label="规格"
-                    prop="descriptions"
-                  ></el-table-column>
-                  <el-table-column label="操作">
-                    <template #default="scope">
-                      <el-button
-                        type="danger"
-                        @click="shanChuXiangMuClick(scope.$index)"
-                      >
-                        删除
-                      </el-button>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-              <div style="height: max-content">
-                <el-tag> 项目总价:{{ xiangMuZongJia }}</el-tag>
-              </div>
-            </div>
-          </div>
-        </el-tab-pane>
-      </el-tabs>
-    </div>
-  </div>
-  <el-dialog v-model="chaoZuoZhiNan" title="操作指南">
-    <el-collapse v-model="activeName" accordion>
-      <el-collapse-item name="1" title="一、搜索">
-        <div>
-          1、搜索费用:项目名称一栏,可以根据编码、名称
-          、拼音首字母缩写查找(推荐使用编码查询这样会快一些,可选)
-        </div>
-        <div>
-          2、录入日期:项目的录入时间范围(可选),
-          日期排序-降序从大到小排序,升序-从小到大排序
-        </div>
-        <div>
-          3、费用类型:你需要查找的费用是,项目还是药品(请不要选择项目后一直搜索药品,这样是找不到的
-        </div>
-        <div>4、录入类型:该费用是怎么产生,护士录入,医嘱,医技</div>
-        <div>
-          5、费用状态:未退-代表该费用没有被退,已退-代表费用是退费数据,被退-代表那些正的被退了
-          <span style="color: red"
-            >(该条件只对在本系统中有效,如果无效请点击退费匹配
-            (退费匹配就在本页面的关闭旁边),或选择全部)</span
-          ><br />
-        </div>
-        <div>6、点击查询即可查询费用(如提示没有数据,请检查搜索的条件)</div>
-      </el-collapse-item>
-      <el-collapse-item name="2" title=" 二、退费">
-        1、选中表格中的多选按钮(小框框),然后点击退费即可,请仔细检查
-      </el-collapse-item>
-      <el-collapse-item name="3" title=" 三、撤销退费">
-        <div>
-          1、如果退费退错了,可以点击费用后面的撤销按钮,前提是该费用没有被上传到医保,如果已经上传了且你一定要把这一条费用完全删除,那请先要医保科撤销上传。
-        </div>
-        <div>
-          2、如果需要撤销退费的权限,请向信息科,提供工号,该权限只能提供给护士长。
-        </div>
-      </el-collapse-item>
-      <el-collapse-item name="4" title="  四、录入模板">
-        <div>
-          1、模板:进入系统会查询出您所在科室的模板(如果没有看见模板,请在个人中心中查看你的科室,如果不对请人资进行调整)
-        </div>
-        <div>
-          2、取模板:点击模板的名字后,出现一个小表格,然后点击小表格中的多选按钮,你所选择的费用会显示在录入信息的表格中(无法重复添加)
-        </div>
-        <div>
-          3、存模板:请在录入信息中添加你需要存的费用信息,然后点击存模板,会弹出一个对话框,输入名称,点击保存即可
-        </div>
-        <div>
-          4、修改:取一个一模一样名称的模板,即可修改,前提是这个模板是你创建的。
-        </div>
-        <div>5、删除:点击模板名称后面的删除。</div>
-      </el-collapse-item>
-      <el-collapse-item name="5" title="五、录入费用">
-        <div>
-          1、请选择需要录入的费用(如果模板中没有,请点击新增,然后进行搜索,可根据
-          名称、编码、首字母缩写 搜索,然后在下拉框中点击对应的费用)
-        </div>
-        <div>2、确认这些费用后点击保存即可</div>
-        <div>
-          3、修改执行科室,如果有费用需要录入到,别的科室可以点击表格中的执行科室修改,也可以一键修改,就在新增右边,在下拉框(这个可以根据中文来搜索)
-          选择对应的科室后点击修改执行科室。
-        </div>
-      </el-collapse-item>
-    </el-collapse>
-  </el-dialog>
-  <el-dialog v-model="xinZhengXiangMuDialog" :width="1500" title="新增项目">
-    <el-row>
-      <el-col :span="24">
-        搜索:
-        <el-select
-          v-model="chargePyCode"
-          :remote-method="rmChargePyCode"
-          clearable
-          default-first-option
-          style="width: 220px"
-          filterable
-          remote
-          @change="getDanGeXiangMu"
-        >
-          <el-option
-            v-for="item in xiangMuData.slice(
-              (danGeXiangMuCurrentPage - 1) * 20,
-              danGeXiangMuCurrentPage * 20
-            )"
-            :key="item.chargeCode"
-            :label="item.chargeName"
-            :value="item.chargeCode"
-          >
-            <span style="color: #ff0000; font-size: 12px">{{
-              item.chargeCode
-            }}</span>
-            <el-divider direction="vertical"></el-divider>
-            <span>
-              {{ item.chargeName }}
-              <span v-if="item.descriptions"> ({{ item.descriptions }}) </span>
-            </span>
-            <el-divider direction="vertical"></el-divider>
-            <span style="color: red"> {{ item.ybComment }}</span>
-            <el-divider direction="vertical"></el-divider>
-            <span style="color: #2eff00"> {{ item.chargeAmount }} 元</span>
-            <el-divider direction="vertical"></el-divider>
-          </el-option>
-          <el-pagination
-            :current-page="danGeXiangMuCurrentPage"
-            :page-size="20"
-            :pager-count="5"
-            :total="xiangMuData.length"
-            layout=" prev, pager, next,total"
-            small
-            style="margin-top: 5px"
-            @current-change="danGeXiangMuCurrentChange"
-          ></el-pagination>
-        </el-select>
-        <el-button type="success" @click="danGeXiangMuBaoCun">保存</el-button>
-      </el-col>
-      <el-col :span="24">
-        <el-table :data="danGeLuRuXiangMu" class="eltable">
-          <el-table-column
-            label="项目代码"
-            prop="chargeCodeMx"
-          ></el-table-column>
-          <el-table-column label="项目名称" prop="chargeName"></el-table-column>
-          <el-table-column label="单位" prop="spec"></el-table-column>
-          <el-table-column label="执行科室" prop="deptCode" />
-          <el-table-column
-            label="国家编码"
-            prop="nationalCode"
-          ></el-table-column>
-          <el-table-column
-            label="国家名称"
-            prop="nationalName"
-          ></el-table-column>
-          <el-table-column label="单价" prop="chargeAmount"></el-table-column>
-          <el-table-column label="数量" prop="amount" />
-          <el-table-column label="金额">
-            <template #default="scope">
-              {{ (scope.row.chargeAmount * scope.row.amount).toFixed(2) }}
-            </template>
-          </el-table-column>
-          <el-table-column label="账单码" prop="billItemName"></el-table-column>
-          <el-table-column
-            label="规格"
-            show-overflow-tooltip
-            prop="descriptions"
-          ></el-table-column>
-          <el-table-column label="删除">
-            <template #default="scope">
-              <el-button @click="danGeLuRuXiangMu.splice(scope.$index, 1)"
-                >删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-col>
-    </el-row>
-  </el-dialog>
-  <el-dialog v-model="baoCunMuBanDialog" title="保存模板">
-    <el-row>
-      <el-col :span="24">
-        模板名称:
-        <el-input
-          v-model="cunMuBanPojo.name"
-          maxlength="15"
-          show-word-limit
-          @blur="zhuanPinYin"
-        ></el-input>
-      </el-col>
-      <el-col :span="12">
-        拼音码:
-        <el-input
-          v-model="cunMuBanPojo.pyCode"
-          maxlength="8"
-          show-word-limit
-        ></el-input>
-      </el-col>
-      <el-col :span="12">
-        五笔码:
-        <el-input
-          v-model="cunMuBanPojo.dcode"
-          maxlength="8"
-          show-word-limit
-        ></el-input>
-      </el-col>
-      <el-col :span="12">
-        创建科室:
-        <el-input v-model="cunMuBanPojo.dept" disabled></el-input>
-      </el-col>
-      <el-col :span="12">
-        <el-button
-          icon="Upload"
-          style="margin-top: 10px"
-          type="primary"
-          @click="baoCunMuBan"
-          >保存
-        </el-button>
-      </el-col>
-    </el-row>
-  </el-dialog>
-</template>
-
-<script name="xiangMuLuRu" setup>
-import { costState, cptSex, conversionRefundFlag } from "@/utils/computed";
-import { shortcuts } from "@/data/shortcuts";
-import {
-  getChargeCode,
-  getHuanZheFeiYong,
-  getPyCode,
-  queryDanGeXiangMu,
-  shangChuanMuBan,
-  xiangMuFeiYongShangChuan,
-  xiuGaiZiFeiBiaoZhi,
-} from "@/api/inpatient/xiang-mu-lu-ru";
-import { ElMessage, ElMessageBox } from "element-plus";
-import { getDateRangeFormatDate, getDatetime } from "@/utils/date";
-import { clone } from "@/utils/clone";
-import { getPatientInfo } from "@/api/inpatient/patient";
-import { feiYongLeiXing, tuiFeiLeiXin, yiZhuTuiFeiLeiXing } from "@/data";
-import HuoQuMuBan from "@/components/med-tec-mod/HuoQuMuBan.vue";
-import { getDept } from "@/api/public-api";
-import { baseinfo } from "@/data/inpatient";
-import { listIsBlank, stringNotBlank } from "@/utils/blank-utils";
-import Sleep from "@/utils/sleep";
-import RefundForProjectEntry from "@/components/med-tec-mod/RefundForProjectEntry";
-import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
-import { useUserStore } from "@/pinia/user-store";
-import cyRefList from "@/utils/cyRefList";
-import Dig from "@/utils/math";
-import XEUtils from "xe-utils";
-import useCompRef from "@/utils/useCompRef";
-
-const emit = defineEmits(["close-xmlr"]);
-const userInfo = useUserStore().userInfo;
-const muBanRef = useCompRef(HuoQuMuBan);
-const chaoZuoZhiNan = ref(false);
-
-// 默认选中已录入项目
-const xmlrTabs = ref("ylrxm");
-const inpatientNo = ref("");
-const zhiXingKeShi = ref("");
-const dateRange = ref([]);
-// DESC 降 ASC 升
-const riQiPaiXu = ref("DESC");
-const activeName = ref("1");
-const feiYongLeiXingCode = ref(0);
-const chargeFeeTotal = ref(0);
-
-// 获取全部科室
-const deptData = ref([]);
-
-// 患者信息
-const patient = ref({});
-
-/**
- * 判断这个操作员是否可以退费
- */
-const panDuanSFTongGuoBingShiJinRu = ref(false);
-
-// 弹框 输入住院号
-const jinRuPanDuanSFXieDaiHuanZheXinXi = async () => {
-  await Sleep(300);
-  ElMessageBox.prompt("请输入患者住院号", "提示", {
-    confirmButtonText: "确定",
-    cancelButtonText: "取消",
-    inputPattern: /\S/,
-    inputErrorMessage: "患者住院号不能为空 (∩•̀ω•́)⊃-*⋆",
-    type: "warning",
-  })
-    .then(({ value }) => {
-      inpatientNo.value = value;
-      chaXunHuanZheXinXi();
-    })
-    .catch(() => {
-      guanBiDialog();
-    });
-};
-
-/**
- * 这个是 用户没有选择患者 就进来执行的
- */
-const chaXunHuanZheXinXi = () => {
-  getPatientInfo(inpatientNo.value)
-    .then(res => {
-      patient.value = res;
-      setDefault();
-      queryFeiYong();
-      if (patient.value.ward === userInfo.deptCode) {
-        panDuanSFTongGuoBingShiJinRu.value = true;
-      } else {
-        xmlrTabs.value = "ylrxm";
-        panDuanSFTongGuoBingShiJinRu.value = false;
-      }
-    })
-    .catch(() => {
-      patient.value = {};
-      jinRuPanDuanSFXieDaiHuanZheXinXi();
-    });
-};
-
-const total = ref(0);
-const elTableRef = ref();
-/**
- * 查询
- */
-const queryFeiYong = () => {
-  elTableRef.value.clearSelection();
-  let dateR = getDateRangeFormatDate(dateRange.value);
-  patient.value.startTime = dateR.startTime;
-  patient.value.endTime = dateR.endTime;
-  patient.value.riQiPaiXu = riQiPaiXu.value;
-  patient.value.feiYongLeiXingCode = feiYongLeiXingCode.value;
-  patient.value.currentPage = 1;
-  patient.value.total = 0;
-  patient.value.dept = null;
-  getHuanZheFeiYong(patient.value).then(async res => {
-    cptTableDataHuanZheFeiYong.value = res.data;
-    total.value = res.total;
-    chargeFeeTotal.value = res.chargeFeeTotal;
-    if (patient.value.admissWard === userInfo.deptCode) {
-      panDuanSFTongGuoBingShiJinRu.value = true;
-    }
-  });
-};
-
-const handleQueryFeiYong = () => {
-  let dateR = getDateRangeFormatDate(dateRange.value);
-  patient.value.startTime = dateR.startTime;
-  patient.value.endTime = dateR.endTime;
-  patient.value.riQiPaiXu = riQiPaiXu.value;
-  patient.value.feiYongLeiXingCode = feiYongLeiXingCode.value;
-  patient.value.total = total.value;
-  patient.value.dept = null;
-  getHuanZheFeiYong(patient.value).then(async res => {
-    cptTableDataHuanZheFeiYong.value = res.data;
-    if (patient.value.admissWard === userInfo.deptCode) {
-      panDuanSFTongGuoBingShiJinRu.value = true;
-    }
-  });
-};
-
-/**
- * 分页
- */
-const handleSizeChange = val => {
-  patient.value.pageSize = val;
-  handleQueryFeiYong();
-};
-
-const handleCurrentChange = val => {
-  patient.value.currentPage = val;
-  handleQueryFeiYong();
-};
-
-/**
- * 获取多选框的值
- */
-const handleSelectionChange = val => {
-  patient.value.list = val;
-};
-/** */
-const cptTableDataHuanZheFeiYong = ref([]);
-/**
- *  项目退费
- */
-let refundConfirmation = reactive({
-  dialog: false,
-  data: [],
-});
-
-/**
- * 退费取消选中
- * @param val
- */
-const refundUncheck = val => {
-  elTableRef.value.toggleRowSelection(val, false);
-};
-
-const xiangMuTuiFeiClick = () => {
-  refundConfirmation.data = elTableRef.value.getSelectionRows();
-  if (refundConfirmation.data.length === 0) {
-    ElMessage.error("请先选择退费数据");
-  } else {
-    refundConfirmation.dialog = true;
-  }
-};
-
-//////////////////////////////////// 以上全部是 已录入项目 //////////////////////////////////////////////////////////////////////////////
-const [saveData, saveProxy] = cyRefList("chargeCodeMx", item => {
-  return `项目${item.chargeCodeName}请勿重复添加。`;
-});
-
-const xuanZeXiangMuTable = val => {
-  for (let i = 0; i < val.length; i++) {
-    val[i].deptCode = patient.value.zkWard;
-  }
-  saveProxy.push(...val);
-};
-
-/**
- * 删除项目
- */
-const shanChuXiangMuClick = index => {
-  saveProxy.delIndex(index);
-};
-
-/**
- * 获取项目的总价
- */
-const xiangMuZongJia = computed(() => {
-  let sum = 0;
-  for (let i = 0; i < saveData.value.length; i++) {
-    sum += Dig.multiply(
-      saveData.value[i].chargeAmount,
-      saveData.value[i].amount
-    );
-  }
-  return XEUtils.toFixed(sum, 2);
-});
-
-//以下全部是  新增项目 对话框功能
-
-/**
- * 新增项目
- */
-const xinZhengXiangMuDialog = ref(false);
-
-// 项目拼音的code
-const chargePyCode = ref("");
-// 项目数据
-const xiangMuData = ref([]);
-
-/**
- * 远程搜索
- */
-const rmChargePyCode = val => {
-  if (val.length >= 2) {
-    queryDanGeXiangMu(val, 0).then(res => {
-      xiangMuData.value = res;
-    });
-  }
-};
-const danGeXiangMuCurrentPage = ref(1);
-
-const danGeXiangMuCurrentChange = val => {
-  danGeXiangMuCurrentPage.value = val;
-};
-/**
- * 用来获取新增对画框中选择的项目
- */
-const danGeLuRuXiangMu = ref([]);
-
-const getDanGeXiangMu = () => {
-  xiangMuData.value.filter(item => {
-    if (item.chargeCode === chargePyCode.value) {
-      item.deptCode = patient.value.zkWard;
-      danGeLuRuXiangMu.value.push(item);
-    }
-  });
-};
-
-/**
- * 单个项目保存
- */
-const danGeXiangMuBaoCun = () => {
-  if (danGeLuRuXiangMu.value.length === 0) {
-    ElMessage.error("请选择需要添加的项目");
-    return;
-  }
-
-  saveProxy.push(...danGeLuRuXiangMu.value);
-
-  danGeLuRuXiangMu.value = [];
-  chargePyCode.value = "";
-  xinZhengXiangMuDialog.value = false;
-};
-//以上全部是  新增项目 对话框功能
-
-// 下面就是上传 项目
-const shangChuanXiangMu = () => {
-  if (saveData.value.length === 0) {
-    ElMessage.error({
-      message: "请先选择需要上传的费用",
-      showClose: true,
-    });
-    return;
-  }
-  for (let i = 0; i < saveData.value.length; i++) {
-    if (saveData.value[i].deptCode === "") {
-      ElMessage.error({
-        message: "【" + saveData.value[i].chargeName + "】的执行科室为空",
-        showClose: true,
-      });
-      return;
-    }
-  }
-  let shangChuanFeiYong = {
-    inpatientNo: patient.value.inpatientNo,
-    admissTimes: patient.value.admissTimes,
-    ledgerSn: patient.value.ledgerSn,
-    dept: patient.value.admissDept,
-    zySerialNo: patient.value.zySerialNo,
-    ward: patient.value.zkWard,
-    referPhysician: patient.value.referPhysician,
-    list: saveData.value,
-    orderNo: 0,
-  };
-  // 在此处上传
-  ElMessageBox.confirm(
-    "共上传【" + saveData.value.length + "】条",
-    "请认真核对",
-    {
-      cancelButtonText: "取消",
-      confirmButtonText: "确定",
-    }
-  )
-    .then(() => {
-      xiangMuFeiYongShangChuan(shangChuanFeiYong).then(() => {
-        saveData.value = [];
-      });
-    })
-    .catch(() => {});
-};
-
-// 上面就是上传 项目
-
-// 下面就是保存的模板信息
-const cunMuBanPojo = ref({
-  pyCode: "",
-  dcode: "",
-  name: "",
-  paiXu: "",
-  dept: "",
-  deptCode: userInfo.deptCode,
-  list: [],
-});
-
-const baoCunMuBanDialog = ref(false);
-const baoCunMuBan = () => {
-  if (saveData.value.length === 0) {
-    ElMessage.error({
-      message: "请先选择项目",
-      showClose: true,
-    });
-    return;
-  }
-  if (
-    cunMuBanPojo.value.name === "" ||
-    cunMuBanPojo.value.pyCode === "" ||
-    cunMuBanPojo.value.dcode === ""
-  ) {
-    ElMessage.error({
-      message: "模板名称,拼音码,五笔码不能为空",
-      showClose: true,
-    });
-    return;
-  }
-  cunMuBanPojo.value.list = clone(saveData.value);
-  // 开始上传
-  shangChuanMuBan(cunMuBanPojo.value).then(() => {
-    cunMuBanPojo.value = {};
-    muBanRef.value?.reloadData();
-  });
-};
-
-// 获取到保存模板的拼音码和五笔码
-const zhuanPinYin = () => {
-  getPyCode(cunMuBanPojo.value.name).then(res => {
-    cunMuBanPojo.value.pyCode = res.pyCode;
-    cunMuBanPojo.value.dcode = res.wbCode;
-  });
-};
-
-// 上面就是保存的模板信息
-
-/** 关闭 对话框 */
-const guanBiDialog = () => {
-  emit("close-xmlr");
-};
-
-/**
- * 设置患者默认值
- */
-const setDefault = () => {
-  patient.value.currentPage = 1;
-  patient.value.pageSize = 40;
-  patient.value.total = 0;
-  patient.value.tuiFeiFlag = 3;
-  patient.value.orderNo = 2;
-  patient.value.deptCode = userInfo.deptCode;
-  zhiXingKeShi.value = patient.value.zkWard;
-};
-
-onMounted(async () => {
-  const tmpPatient = baseinfo();
-  if (stringNotBlank(tmpPatient?.inpatientNo)) {
-    patient.value = clone(baseinfo());
-    panDuanSFTongGuoBingShiJinRu.value = true;
-    await nextTick();
-    setDefault();
-    queryFeiYong();
-  } else {
-    await jinRuPanDuanSFXieDaiHuanZheXinXi();
-  }
-
-  getDept().then(res => {
-    deptData.value = res;
-  });
-});
-
-const xieGaiZhiXingKeShi = () => {
-  for (let i = 0; i < saveData.value.length; i++) {
-    saveData.value[i].deptCode = zhiXingKeShi.value;
-  }
-};
-
-const sheZhiWeiYiVBao = () => {
-  if (listIsBlank(patient.value.list)) {
-    ElMessage.error("请先选择需要修改的数据");
-    return;
-  }
-  ElMessageBox.confirm("请仔细检查.", "提示", {
-    confirmButtonText: "确认",
-    cancelButtonText: "取消",
-    type: "warning",
-  })
-    .then(() => {
-      xiuGaiZiFeiBiaoZhi(patient.value);
-    })
-    .catch(() => {});
-};
-
-function getSummaries(param) {
-  const { columns } = param;
-  const sums = [];
-  columns.forEach((column, index) => {
-    if (index === 0) {
-      sums[index] = "合计";
-    } else if (index === 9) {
-      sums[index] = `${chargeFeeTotal.value}(元)`;
-    } else {
-      sums[index] = "";
-    }
-  });
-  return sums;
-}
-</script>
-
-<style></style>

+ 0 - 171
src/components/med-tec-mod/RefundForProjectEntry.vue

@@ -1,171 +0,0 @@
-<template>
-  <xc-dialog-v2 title="退费详细"
-                v-model="modelValue"
-                width="100%">
-    <page-layer>
-      <template #header>
-        数量:{{ chargeAmount }} 金额: {{
-          chargeFee.toLocaleString('zh', {
-            style: 'currency',
-            currency: 'cny',
-            currencyDisplay: 'name'
-          })
-        }}
-        <div v-if="isDrug">
-          药房:
-          <el-select v-model="groupNo">
-            <el-option value="71" label="门诊"/>
-            <el-option value="73" label="住院"/>
-          </el-select>
-        </div>
-        <el-button @click="confirmRefund('drugWithdrawal')" icon="Delete" type="danger"
-                   title="项目可直接退费,只有对应的执行科室可以退费,药品会产生药单,在药房确认退药后会产生退费数据,口服药无法退费。如药房拒绝可再次退费。">
-          {{ isDrug ? '退药且退费' : '退费' }}
-        </el-button>
-        <el-button v-if="needRule(1)"
-                   @click="confirmRefund('refundOnly')"
-                   icon="Delete"
-                   type="warning"
-                   title="只会生成退费的费用,不会产生药单到药房。">
-          仅退费不退药
-        </el-button>
-      </template>
-
-      <template #mainMaxContentHeight>
-        <div style="color: red">
-          请注意如果点击了【退费且退药】那么需要提交一次药单。
-        </div>
-        <xc-table :local-data="props.list"
-                  :height="400">
-          <el-table-column fixed="left" label="操作">
-            <template #default="scope">
-              <el-button @click="deleteData(scope.row,scope.row.$index)" icon="Delete" type="danger">
-                删除
-              </el-button>
-            </template>
-          </el-table-column>
-          <el-table-column label="流水号" prop="detailSn" width="70px"></el-table-column>
-          <el-table-column label="医嘱号" prop="orderNo" width="70px"></el-table-column>
-          <el-table-column label="录入日期" prop="chargeDate" width="70px"></el-table-column>
-          <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
-          <el-table-column label="项目名称" prop="chargeName"></el-table-column>
-          <el-table-column label="规格" prop="specification"></el-table-column>
-          <el-table-column label="药品名称" prop="drugname"></el-table-column>
-          <el-table-column label="执行科室" prop="execDept"></el-table-column>
-          <el-table-column label="申请科室" prop="deptCode"></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="状态" prop="chargeStatus">
-            <template #default="scope">
-              {{ costState(scope.row.chargeStatus) }}
-            </template>
-          </el-table-column>
-          <el-table-column label="录入人" prop="opName"></el-table-column>
-          <el-table-column label="账单码" prop="billItemName"></el-table-column>
-          <el-table-column label="是否退费" prop="tuiFeiFlag">
-            <template #default="scope">
-              <span v-html="conversionRefundFlag(scope.row.oriDetailSn)" style="color:red;"></span>
-              <br>
-              <span v-if="scope.row.oriDetailSn > 0">
-                    <span style="color: #e6a23c">退费数据</span> <br/>
-                    <span style="color: teal">
-                      原流水号为 <br/>
-                      【 {{ scope.row.oriDetailSn }} 】
-                    </span>
-                  </span>
-            </template>
-          </el-table-column>
-        </xc-table>
-
-      </template>
-    </page-layer>
-  </xc-dialog-v2>
-</template>
-
-<script setup>
-import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2";
-import XcTable from "@/components/xiao-chan/xc-table/XcTable";
-import {conversionRefundFlag, costState} from "@/utils/computed";
-import {ElMessageBox} from "element-plus";
-import PageLayer from "@/layout/PageLayer";
-import {refund} from "@/api/hospitalization-costs/hospitalization-costs-api";
-import {useVModel} from "@vueuse/core";
-import {needRule} from "@/utils/public";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean
-  },
-  list: {
-    type: Array,
-    default: []
-  },
-  isDrug: {
-    type: Boolean
-  },
-  patient: {
-    type: Object
-  }
-})
-
-const emit = defineEmits(['uncheck', 'update:modelValue', 'refreshFee'])
-
-const modelValue = useVModel(props, 'modelValue', emit)
-
-const chargeAmount = ref(0)
-const chargeFee = ref(0)
-const groupNo = ref('73')
-
-
-const confirmRefund = (flag) => {
-  let pharmacyName = groupNo.value === '71' ? '门诊' : '住院'
-  // 是否是药品退药 true
-  let isDrugWithdrawal = props.isDrug && flag === 'drugWithdrawal'
-  let title = isDrugWithdrawal ? `药品是否要退到 【${pharmacyName}】 药房` : '请确认数据'
-  ElMessageBox.confirm(title, '请您仔细确认', {
-    type: 'warning',
-    confirmButtonText: '我已确认',
-    cancelButtonText: '再看看',
-  }).then(async () => {
-    let data = {
-      inpatientNo: props.patient.inpatientNo,
-      admissTimes: props.patient.admissTimes,
-      groupNo: groupNo.value,
-      refundFlag: flag,
-      list: props.list,
-    }
-    await refund(data)
-    emit('refreshFee')
-    modelValue.value = false
-  }).catch(() => {
-
-  });
-}
-
-const deleteData = async (data, index) => {
-  await emit('uncheck', data)
-  props.list.splice(index, 1)
-  if (props.list.length === 0) {
-    modelValue.value = false
-  }
-  calculatedAmount()
-}
-
-const calculatedAmount = () => {
-  chargeAmount.value = 0
-  chargeFee.value = 0
-  props.list.forEach(item => {
-    chargeAmount.value += item.chargeAmount
-    chargeFee.value += item.chargeFee
-  })
-}
-
-onMounted(() => {
-  calculatedAmount()
-})
-
-</script>
-
-<style scoped lang="scss">
-
-</style>

+ 152 - 125
src/components/medical-insurance/medicine-return-order/GenerateMedicineReturnOrder.vue

@@ -3,74 +3,92 @@
   <el-dialog v-model="dialog" title="生成退药单" width="60vw" append-to-body>
     <div class="header">
       药房:
-      <el-select v-model="groupNo"
-                 style="width: 90px"
-                 @change="dateRangeChange">
-        <el-option value="71" label="门诊"/>
-        <el-option value="73" label="住院"/>
+      <el-select
+        v-model="groupNo"
+        style="width: 90px"
+        @change="dateRangeChange"
+      >
+        <el-option
+          v-for="item in useYfGroupStore().xy"
+          :value="item.code"
+          :label="item.name"
+        />
       </el-select>
       <div>
         <el-date-picker
-            style="width: 220px"
-            type="daterange"
-            v-model="dateRange"
-            @change="dateRangeChange"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"/>
+          style="width: 220px"
+          type="daterange"
+          v-model="dateRange"
+          @change="dateRangeChange"
+          format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD"
+        />
       </div>
-      <el-divider direction="vertical"/>
+      <el-divider direction="vertical" />
       <el-button @click="clickToAccess">取数</el-button>
       <el-button @click="generateClick">生成药单</el-button>
       <el-button @click="queryTheMedicineList">查询药单</el-button>
-      <el-button type="primary" icon="Printer" @click="printThePrescription">打印</el-button>
+      <el-button type="primary" icon="Printer" @click="printThePrescription"
+        >打印
+      </el-button>
     </div>
     <div>
       退药理由:
       <el-select v-model="refundReason" style="width: 220px">
-        <el-option v-for="item in refundReasonList"
-                   :key="item.code"
-                   :value="item.code"
-                   :label="item.name"/>
+        <el-option
+          v-for="item in refundReasonList"
+          :key="item.code"
+          :value="item.code"
+          :label="item.name"
+        />
       </el-select>
     </div>
     <div style="display: flex">
       <div style="flex: 1">
-        <div v-for="(value,key) in pageNoList"
-             class="drug_button"
-             :style="medicationListSelectionStyle(value.pageNo)"
-             @click="clickTheMedicineList(value)">
+        <div
+          v-for="(value, key) in pageNoList"
+          class="drug_button"
+          :style="medicationListSelectionStyle(value.pageNo)"
+          @click="clickTheMedicineList(value)"
+        >
           {{ value.pageNo }}
           {{ value.groupName }}
         </div>
       </div>
 
       <div ref="divRef">
-        <div style="height: 500px;width: 560px;">
-          <table border=1 width="100%" style="border:solid 1px black;border-collapse:collapse">
+        <div style="height: 500px; width: 560px">
+          <table
+            border="1"
+            width="100%"
+            style="border: solid 1px black; border-collapse: collapse"
+          >
             <thead style="height: 14pt; text-align: center">
-            <tr>
-              <th colspan="7" style="border: 0">
-                <div style="font-size: 20px">
-                  护士退药单
-                </div>
-                <div>
-                  药单号: {{ data.pageNo === null ? '未生成药单' : data.pageNo }}
-                </div>
-              </th>
-            </tr>
-
-            <tr class="tr-border_th">
-              <th>编码</th>
-              <th>名称</th>
-              <th>规格</th>
-              <th>数量</th>
-              <th>零售价</th>
-              <th>金额</th>
-            </tr>
+              <tr>
+                <th colspan="7" style="border: 0">
+                  <div style="font-size: 20px">护士退药单</div>
+                  <div>
+                    药单号:
+                    {{ data.pageNo === null ? "未生成药单" : data.pageNo }}
+                  </div>
+                </th>
+              </tr>
 
+              <tr class="tr-border_th">
+                <th>编码</th>
+                <th>名称</th>
+                <th>规格</th>
+                <th>数量</th>
+                <th>零售价</th>
+                <th>金额</th>
+              </tr>
             </thead>
 
-            <tr v-for="(drugs,di) in data.pageNo ===null ? data.notGenerated : data.toGenerate">
+            <tr
+              v-for="(drugs, di) in data.pageNo === null
+                ? data.notGenerated
+                : data.toGenerate"
+            >
               <td>
                 {{ drugs.chargeCode }}
               </td>
@@ -91,16 +109,16 @@
               </td>
             </tr>
             <tfoot>
-            <tr>
-              <td>总金额</td>
-              <td colspan="5">{{ data.totalFee }}</td>
-            </tr>
-            <tr>
-              <td>退费理由</td>
-              <td colspan="5">
-                {{ reasonToStr(data.refundReason) }}
-              </td>
-            </tr>
+              <tr>
+                <td>总金额</td>
+                <td colspan="5">{{ data.totalFee }}</td>
+              </tr>
+              <tr>
+                <td>退费理由</td>
+                <td colspan="5">
+                  {{ reasonToStr(data.refundReason) }}
+                </td>
+              </tr>
             </tfoot>
           </table>
         </div>
@@ -110,125 +128,134 @@
 </template>
 
 <script setup>
-import {getServerDateApi} from "@/api/public-api";
-import {getDateRangeFormatDate, getFormatDatetime} from "@/utils/date";
+import { getServerDateApi } from "@/api/public-api";
+import { getDateRangeFormatDate, getFormatDatetime } from "@/utils/date";
 import {
-  generateMedicationList, getAPrescriptionByPageNo,
+  generateMedicationList,
+  getAPrescriptionByPageNo,
   getNoMedicineReturnOrderGenerated,
-  getPrescription
+  getPrescription,
 } from "@/api/inpatient/xiang-mu-lu-ru";
-import {BizException, ExceptionEnum} from "@/utils/BizException";
-import {listIsBlank, stringIsBlank} from "@/utils/blank-utils";
-import {getLodop, initLodop} from "@/utils/c-lodop";
-import {refundReasonList} from "@/data";
+import { BizException, ExceptionEnum } from "@/utils/BizException";
+import { listIsBlank, stringIsBlank } from "@/utils/blank-utils";
+import { getLodop, initLodop } from "@/utils/c-lodop";
+import { refundReasonList } from "@/data";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 defineOptions({
-  name: "GenerateMedicineReturnOrder"
-})
+  name: "GenerateMedicineReturnOrder",
+});
 
-const dialog = ref(false)
-const dateRange = ref([])
+const dialog = ref(false);
+const dateRange = ref([]);
 
 const data = reactive({
   notGenerated: [],
   toGenerate: [],
   pageNo: null,
   totalFee: 0,
-  refundReason: 1
+  refundReason: 1,
 });
-const groupNo = ref('73')
-const refundReason = ref(1)
+const groupNo = ref(useYfGroupStore().getDefaultXyCode);
+const refundReason = ref(1);
 
 // 获取未生成的药单
 const clickToAccess = () => {
-  const {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
+  const { startTime, endTime } = getDateRangeFormatDate(dateRange.value);
   if (stringIsBlank(startTime)) {
-    BizException(ExceptionEnum.MESSAGE_ERROR, "时间不能为空。")
+    BizException(ExceptionEnum.MESSAGE_ERROR, "时间不能为空。");
   }
-  getNoMedicineReturnOrderGenerated(startTime, endTime, groupNo.value).then((res) => {
-    data.notGenerated = res
-    data.pageNo = null
-  });
-}
+  getNoMedicineReturnOrderGenerated(startTime, endTime, groupNo.value).then(
+    res => {
+      data.notGenerated = res;
+      data.pageNo = null;
+    }
+  );
+};
 
 const dateRangeChange = () => {
-  data.notGenerated = []
-}
+  data.notGenerated = [];
+};
 
 const generateClick = async () => {
   if (listIsBlank(data.notGenerated)) {
-    BizException(ExceptionEnum.MESSAGE_ERROR, "请先取数")
+    BizException(ExceptionEnum.MESSAGE_ERROR, "请先取数");
   }
-  let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
+  let { startTime, endTime } = getDateRangeFormatDate(dateRange.value);
   try {
-    let res = await generateMedicationList(startTime, endTime, groupNo.value, refundReason.value)
-    fillTheMedicineList(res)
+    let res = await generateMedicationList(
+      startTime,
+      endTime,
+      groupNo.value,
+      refundReason.value
+    );
+    fillTheMedicineList(res);
   } catch (e) {
-    data.notGenerated = []
+    data.notGenerated = [];
   }
+};
 
-}
-
-const pageNoList = ref([])
+const pageNoList = ref([]);
 const queryTheMedicineList = () => {
-  let dateS = getDateRangeFormatDate(dateRange.value)
-  getPrescription(dateS.startTime, dateS.endTime).then((res) => {
-    pageNoList.value = res
-  })
-}
+  let dateS = getDateRangeFormatDate(dateRange.value);
+  getPrescription(dateS.startTime, dateS.endTime).then(res => {
+    pageNoList.value = res;
+  });
+};
 
 // 根据要单号获取药品
-const clickTheMedicineList = ({pageNo}) => {
+const clickTheMedicineList = ({ pageNo }) => {
   getAPrescriptionByPageNo(pageNo).then(res => {
-    fillTheMedicineList(res)
-  })
-}
+    fillTheMedicineList(res);
+  });
+};
 
-const fillTheMedicineList = (res) => {
-  data.pageNo = res.pageNo
-  data.toGenerate = res.data
-  data.totalFee = res.totalFee
-  data.refundReason = res.refundReason
-}
+const fillTheMedicineList = res => {
+  data.pageNo = res.pageNo;
+  data.toGenerate = res.data;
+  data.totalFee = res.totalFee;
+  data.refundReason = res.refundReason;
+};
 
-const divRef = ref(null)
+const divRef = ref(null);
 const printThePrescription = () => {
-  let LODOP = getLodop()
-  LODOP.PRINT_INIT('护士退药单') // 初始化打印机 名字
-  LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A5')// 设置纸张大小  A4
-  LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
-  let style = '<style>' + 'table,tr,td{border-collapse:collapse;border:1px solid #000}' + '</style>'
-  let body = '<body>' + divRef.value?.innerHTML + '</body>'
-  LODOP.ADD_PRINT_TABLE('2mm', '5mm', '100%', '100%', style + body) //要打印的内容
-  LODOP.PREVIEW() // 关闭
-}
+  let LODOP = getLodop();
+  LODOP.PRINT_INIT("护士退药单"); // 初始化打印机 名字
+  LODOP.SET_PRINT_PAGESIZE(1, 0, 0, "A5"); // 设置纸张大小  A4
+  LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW", true); // 整宽不变形
+  let style =
+    "<style>" +
+    "table,tr,td{border-collapse:collapse;border:1px solid #000}" +
+    "</style>";
+  let body = "<body>" + divRef.value?.innerHTML + "</body>";
+  LODOP.ADD_PRINT_TABLE("2mm", "5mm", "100%", "100%", style + body); //要打印的内容
+  LODOP.PREVIEW(); // 关闭
+};
 
-const reasonToStr = (val) => {
+const reasonToStr = val => {
   for (let i = 0; i < refundReasonList.length; i++) {
-    let item = refundReasonList[i]
+    let item = refundReasonList[i];
     if (item.code === val) {
-      return item.name
+      return item.name;
     }
   }
   return "";
-}
-
+};
 
-const medicationListSelectionStyle = (pageNo) => {
+const medicationListSelectionStyle = pageNo => {
   if (pageNo === data.pageNo) {
     return {
-      "backgroundColor": 'red',
-    }
+      backgroundColor: "red",
+    };
   }
-}
+};
 
 onMounted(async () => {
-  let temp = await getServerDateApi()
-  temp = getFormatDatetime(temp, "YYYY-MM-DD")
-  dateRange.value = [temp, temp]
-  initLodop()
-})
-
+  let temp = await getServerDateApi();
+  temp = getFormatDatetime(temp, "YYYY-MM-DD");
+  dateRange.value = [temp, temp];
+  initLodop();
+});
 </script>
 
 <style scoped lang="scss">

+ 30 - 24
src/components/xmlr/dialog/RefundDialog.vue

@@ -1,32 +1,32 @@
 <script setup lang="ts">
 import FeeTableColumn from "@/components/xmlr/components/FeeTableColumn.vue";
-import {ProjectInput} from "@/components/xmlr/index";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const props = defineProps<{
   feeTableRef: any;
-  medicalTechnology: boolean
+  medicalTechnology: boolean;
 }>();
 
-const tmpData = ref([])
-const hasYaoPing = ref(false)
-const groupNo = ref('73')
-const feeTotal = ref(0)
-const feeQuantity = ref(0)
+const tmpData = ref([]);
+const hasYaoPing = ref(false);
+const groupNo = ref(useYfGroupStore().getDefaultXyCode);
+const feeTotal = ref(0);
+const feeQuantity = ref(0);
 
 function delClick(row, index) {
-  tmpData.value.splice(index, 1)
-  unref(props.feeTableRef).toggleRowSelection(row, false)
+  tmpData.value.splice(index, 1);
+  unref(props.feeTableRef).toggleRowSelection(row, false);
 }
 
 onMounted(() => {
   tmpData.value = unref(props.feeTableRef).getSelectionRows();
   for (let i = 0; i < tmpData.value.length; i++) {
     const item = tmpData.value[i];
-    if (item.serial != '00') {
+    if (item.serial != "00") {
       hasYaoPing.value = true;
     }
-    feeTotal.value += item.chargeFee
-    feeQuantity.value += item.chargeAmount
+    feeTotal.value += item.chargeFee;
+    feeQuantity.value += item.chargeAmount;
   }
 });
 
@@ -35,14 +35,17 @@ const showGroupNo = computed(() => {
   if (props.medicalTechnology) {
     return false;
   }
-  return hasYaoPing.value
+  return hasYaoPing.value;
 });
 
 defineExpose({
   confirm: () => {
-    return {groupNo: showGroupNo.value ? groupNo.value : null, data: tmpData.value}
-  }
-})
+    return {
+      groupNo: showGroupNo.value ? groupNo.value : null,
+      data: tmpData.value,
+    };
+  },
+});
 </script>
 
 <template>
@@ -50,8 +53,11 @@ defineExpose({
     <el-form inline>
       <el-form-item label="退药药房:" v-if="showGroupNo">
         <el-select style="width: 90px" v-model="groupNo">
-          <el-option value="71" label="门诊"/>
-          <el-option value="73" label="住院"/>
+          <el-option
+            v-for="item in useYfGroupStore().xy"
+            :value="item.code"
+            :label="item.name"
+          />
         </el-select>
         请注意如果点击了【退费且退药】那么需要提交一次药单。
       </el-form-item>
@@ -64,16 +70,16 @@ defineExpose({
     </el-form>
     <!--  包含药品的话就要选择药房 -->
     <el-table height="60vh" :data="tmpData" row-key="detailSn">
-      <FeeTableColumn/>
+      <FeeTableColumn />
       <el-table-column fixed="right">
-        <template #default="{row, $index}">
-          <el-button type="danger" @click="() => delClick(row,$index)">删除</el-button>
+        <template #default="{ row, $index }">
+          <el-button type="danger" @click="() => delClick(row, $index)"
+            >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
   </div>
 </template>
 
-<style lang="scss">
-
-</style>
+<style lang="scss"></style>

+ 4 - 2
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-header/YzQueryCondition.vue

@@ -37,8 +37,9 @@
           v-model="queryParam.groupNo"
           v-title="'在新增医嘱的时候,去指定的药房查询药品。'"
         >
-          <option value="73">住院</option>
-          <option value="71">门诊</option>
+          <option v-for="item in useYfGroupStore().xy" :value="item.code">
+            {{ item.name }}
+          </option>
         </select>
       </label>
       <label>
@@ -360,6 +361,7 @@ import { useUserStore } from "@/pinia/user-store";
 import CyDateRange from "@/components/cy/date-range/CyDateRange.vue";
 import { useDialog } from "@/components/cy/CyDialog/index";
 import XEUtils from "xe-utils";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const props = defineProps({
   patientInfo: {

+ 63 - 0
src/pinia/use-yf-group.ts

@@ -0,0 +1,63 @@
+import { defineStore } from "pinia";
+import { getYpZdGroup } from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+
+type CodeName = {
+  code: string;
+  name: string;
+  isDefault: true;
+};
+
+export const useYfGroupStore = defineStore("groupStore", {
+  state: () => ({
+    // 西药
+    xy: null as CodeName[],
+    // 草药
+    cy: null as CodeName[],
+  }),
+  getters: {
+    getXyCodeList(state) {
+      return state.xy.map(item => item.code);
+    },
+    getXyCodeName(state) {
+      return (code: string) =>
+        state.xy.find(item => item.code === code)?.name || "";
+    },
+    getCyCodeList(state) {
+      return state.cy.map(item => item.code);
+    },
+    getCyCodeName(state) {
+      return (code: string) =>
+        state.cy.find(item => item.code === code)?.name || "";
+    },
+    getDefaultCode(state) {
+      return (code: keyof typeof state) => {
+        const tmp = state[code];
+        if (state[code]?.length > 0) {
+          return tmp?.find(item => item.isDefault)?.code || tmp[0].code;
+        }
+        return "";
+      };
+    },
+    getDefaultXyCode() {
+      return this.getDefaultCode("xy");
+    },
+    getDefaultCyCode() {
+      return this.getDefaultCode("cy");
+    },
+  },
+  actions: {
+    async init() {
+      const tmp = await getYpZdGroup().catch(() => {
+        return {
+          // 西药
+          xy: [],
+          // 草药
+          cy: [],
+        };
+      });
+
+      this.xy = tmp.xy;
+      this.cy = tmp.cy;
+    },
+  },
+});

+ 3 - 3
src/views/dictionary/clinical-pathway/compoents/YzTable.vue

@@ -1,7 +1,6 @@
 <script setup lang="ts">
 import {
   geiYaoFangShiData,
-  groupNos,
   RefFillingValue,
   tableHeaderV2,
   yaoPinPingLvData,
@@ -30,6 +29,7 @@ import {
 import { BizException, ExceptionEnum } from "@/utils/BizException";
 import FloatingFrame from "@/components/cy/floating-frame/FloatingFrame.vue";
 import { jyZdSample, orderType } from "@/views/dictionary/clinical-pathway";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const props = defineProps<{
   wordId: string;
@@ -40,7 +40,7 @@ const props = defineProps<{
 const drugCache = {};
 
 const yzInfo = reactive({
-  groupNo: groupNos[0].code,
+  groupNo: useYfGroupStore().getDefaultXyCode,
   jiLiangValue: 1,
   tableData: [],
   showFrame: false,
@@ -337,7 +337,7 @@ defineExpose<UseDialogType.Expose>({
 
       药房:
       <select v-model="yzInfo.groupNo">
-        <option v-for="item in groupNos" :value="item.code">
+        <option v-for="item in useYfGroupStore().xy" :value="item.code">
           {{ item.name }}
         </option>
       </select>

+ 17 - 20
src/views/hospitalization/zhu-yuan-yi-sheng/cao-yao-yi-zhu/XinZhengCaoYao.vue

@@ -38,7 +38,7 @@
                 ></el-input-number>
               </el-form-item>
             </el-col>
-            <el-col :span="6" v-if="show">
+            <el-col :span="6">
               <el-form-item class="bi_tian" label="代煎:">
                 <el-input-number
                   v-model="chuFang.quantityDj"
@@ -80,12 +80,12 @@
                 <el-input-number v-model="chuFang.cyJsl" />
               </el-form-item>
             </el-col>
-            <el-col :span="6" v-if="show">
+            <el-col :span="6">
               <el-form-item label="煮取(ml):">
                 <el-input-number v-model="chuFang.cyZql" />
               </el-form-item>
             </el-col>
-            <el-col :span="6" v-if="show">
+            <el-col :span="6">
               <el-form-item label="复煎:">
                 <el-input-number v-model="chuFang.cyFj" />
               </el-form-item>
@@ -121,17 +121,16 @@
             </el-col>
             <el-col :span="6">
               <el-form-item class="bi_tian" label="药房:">
-                <el-switch
+                <el-select
                   v-model="chuFang.groupNo"
-                  active-color="#13ce66"
-                  active-text="中药颗粒"
-                  active-value="83"
-                  inactive-color="#fbbd08"
-                  inactive-text="草药"
-                  inactive-value="81"
                   @change="clearHerbalInformation"
                 >
-                </el-switch>
+                  <el-option
+                    v-for="item in useYfGroupStore().cy"
+                    :value="item.code"
+                    :label="item.name"
+                  />
+                </el-select>
               </el-form-item>
             </el-col>
           </el-row>
@@ -248,6 +247,7 @@ import { useUserStore } from "@/pinia/user-store";
 import SystemDeptSelect from "@/components/system/dept-select/SystemDeptSelect.vue";
 import XEUtils from "xe-utils";
 import { useDialog } from "@/components/cy/CyDialog/index";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const props = defineProps({
   saveSuccess: Function,
@@ -266,14 +266,10 @@ const chuFang = ref({
   cyFj: 0,
   cyFfcs: 0,
   cyJssm: "",
-  groupNo: "81",
+  groupNo: useYfGroupStore().getDefaultCyCode,
   execDept: "",
 });
 
-const show = computed(() => {
-  return chuFang.value.groupNo !== "83";
-});
-
 /**
  * 编辑草药
  * @type {Ref<UnwrapRef<{chargeCodeName: string, quantity: number, retprice: number, instruction: string, je: string, chargeCode: string}>>}
@@ -309,7 +305,7 @@ const wipeData = () => {
     cyFj: 0,
     cyFfcs: 0,
     cyJssm: "",
-    groupNo: "81",
+    groupNo: useYfGroupStore().getDefaultCyCode,
     execDept: huanZheXinXi.value.smallDept,
   };
 };
@@ -404,7 +400,7 @@ const dianJiXuanZhongMuBanShuJu = data => {
       flag = true;
     } else {
       item.je = Dig.multiply(item.quantity, item.retprice).toFixed(2);
-      item.groupName = item.groupNo === "81" ? "门诊中药房" : "颗粒剂药房";
+      item.groupName = useYfGroupStore().getCyCodeName(chuFang.value.groupNo);
       mingXi.value.list.push(item);
       mingXi.value.weiYi.push(key);
     }
@@ -534,8 +530,9 @@ const clearHerbalInformation = () => {
   chuFang.value.cyZql = 0;
   chuFang.value.quantityDj = 0;
   chuFang.value.cyFj = 0;
-  chuFang.value.orderName =
-    chuFang.value.groupNo === "81" ? "草药" : "中药颗粒";
+  chuFang.value.orderName = useYfGroupStore().getCyCodeName(
+    chuFang.value.groupNo
+  );
 };
 
 function openCaoYaoTemplate() {

+ 4 - 12
src/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng.ts

@@ -38,6 +38,7 @@ import ItemInstructions from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/ItemIn
 import { useDialog } from "@/components/cy/CyDialog/index";
 import { getSendDockerPrompt } from "@/api/zhu-yuan-yi-sheng/sendDockerPrompt";
 import SendPromptDialog from "@/views/hospitalization/zhu-yuan-yi-sheng/comp/SendPromptDialog.vue";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 export interface PatInfo {
   inpatientNo?: string | null;
@@ -505,24 +506,13 @@ getServerDate().then(res => {
   }
 });
 
-export const groupNos = [
-  {
-    code: "73",
-    name: "住院",
-  },
-  {
-    code: "71",
-    name: "门诊",
-  },
-];
-
 // 医嘱查询条件
 export const queryParam = ref({
   displayRange: 2,
   frequCode: isDev ? frequCodeEnum.all : frequCodeEnum.longTerm,
   sort: userConfig.yz_orderBySort,
   zhuangTai: 0,
-  groupNo: "73",
+  groupNo: useYfGroupStore().getDefaultXyCode,
   patNo: "",
   times: 0,
   startTime: "",
@@ -1228,8 +1218,10 @@ export const openPatientImage = (
   }
 };
 
+// 医嘱的一些提示
 export const yzInfoPrompt: Ref<string[]> = ref([]);
 
+// 一些特殊的医嘱标志
 export const yzZdOrderItemConfirm = ref({});
 
 getYzZdOrderItemConfirm().then(res => {

+ 0 - 91
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/OrderTemplateMaintain.vue

@@ -1,91 +0,0 @@
-<template>
-  <page-layer>
-    <template #header>
-      <xc-combo-grid
-          style="width: 240px"
-          ref="searchRef"
-          :table-header="tableHeader"
-          :query-data-func="searchOrders"
-          @rowClick="orderFunc.add">
-      </xc-combo-grid>
-      <el-select v-model="groupNo" style="width: 90px">
-        <el-option value="73" label="住院"/>
-        <el-option value="71" label="门诊"/>
-      </el-select>
-    </template>
-    <template #main>
-      <xc-table :local-data="orderData" :height="200">
-        <el-table-column label="操作" fixed='left'>
-          <template #default="{row,$index}">
-            <el-button @click="orderFunc.delete($index)" type="danger" icon="Delete"/>
-          </template>
-        </el-table-column>
-
-        <el-table-column label="编码" prop="orderCode">
-        </el-table-column>
-
-      </xc-table>
-    </template>
-  </page-layer>
-
-</template>
-
-<script setup name='OrderTemplateMaintain'>
-import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
-import {
-  tableHeader
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
-import {huoQuXiangMu} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
-import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
-import PageLayer from "@/layout/PageLayer.vue";
-
-const orderData = ref([])
-const groupNo = ref('73')
-
-const orderFunc = ref({
-  add: (val) => {
-    orderData.value.push(val)
-  },
-  delete: (index) => {
-    orderData.value.splice(index, 1)
-  }
-})
-
-const searchOrders = (val) => {
-  return huoQuXiangMu(val, groupNo.value)
-}
-
-const order = {
-  actOrderNo: null,
-  orderCode: '',
-  frequCode: '',
-  drugFlag: '',
-  supplyCode: '',
-  drugQuan: '',
-  instruction: '',
-  drugSpecification: '',
-  miniUnit: '',
-  drugWeight: '',
-  drugWeightUnit: '',
-  parentNo: '',
-  drugVolume: '',
-  drugVolUnit: '',
-  dose: 0,
-  doseUnit: '',
-  drugOcc: '',
-  excluActOrderNo: '',
-  orderName: '',
-  discription: '',
-  patternCode: '',
-  orderType: '',
-  serial: '',
-  groupNo: '',
-  selfBuy: '',
-  execUnit: ''
-}
-
-</script>
-
-<style scoped lang="scss">
-
-</style>

+ 20 - 44
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/TemplateMaintenance.vue

@@ -15,17 +15,17 @@
         text
         type="primary"
         @click="cloneWindow"
-        >返回</el-button
-      >
+        >返回
+      </el-button>
       <el-button type="primary" @click="muBanDuiHuaKuang = true">
-        获取模板</el-button
-      >
+        获取模板
+      </el-button>
       <el-button
         :disabled="yiZhuList.length === 0"
         type="primary"
         @click="baoCunMuBanClick"
-        >保存模板</el-button
-      >
+        >保存模板
+      </el-button>
       {{ count }}
       <el-divider direction="vertical" />
       <el-button
@@ -38,8 +38,11 @@
       </el-button>
       <el-divider direction="vertical"></el-divider>
       <el-select v-model="groupNo" style="width: 90px">
-        <el-option value="73" label="住院" />
-        <el-option value="71" label="门诊" />
+        <el-option
+          v-for="item in useYfGroupStore().xy"
+          :value="item.code"
+          :label="item.name"
+        />
       </el-select>
     </header>
     <div class="layout_main layout_container">
@@ -287,27 +290,11 @@
                 </el-switch>
               </el-form-item>
             </el-col>
-            <el-col v-if="yiZhuData.orderCode === zkCode" :span="span">
-              <el-form-item label="转科:" class="bi_tian">
-                <el-select v-model="yiZhuData.zkObj" filterable id="yz_zkObj">
-                  <el-option
-                    v-for="(item, index) in zkList"
-                    :key="item.value"
-                    :label="item.wardName + '|' + item.smallName"
-                    :value="item.value"
-                  >
-                    <span>{{ item.wardName }}</span>
-                    <el-divider direction="vertical"></el-divider>
-                    <span>{{ item.smallName }}</span>
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
           </el-row>
         </el-form>
         <el-button icon="Plus" type="primary" @click="tianJiaYiZhu"
-          >添加</el-button
-        >
+          >添加
+        </el-button>
         <el-button @click="dianJiXiuGaiZhiXingKeShi">修改执行科室</el-button>
       </header>
       <div class="layout_main layout_el-table">
@@ -365,13 +352,13 @@
           <el-table-column label="频率" prop="frequCode"></el-table-column>
           <el-table-column label="一次剂量" prop="dose">
             <template #default="scope">
-              {{ scope.row.dose }} {{ scope.row.doseUnitName }}</template
-            >
+              {{ scope.row.dose }} {{ scope.row.doseUnitName }}
+            </template>
           </el-table-column>
           <el-table-column label="领量" prop="drugQuan">
             <template #default="scope">
-              {{ scope.row.drugQuan }} {{ scope.row.miniUnitName }}</template
-            >
+              {{ scope.row.drugQuan }} {{ scope.row.miniUnitName }}
+            </template>
           </el-table-column>
           <el-table-column
             label="给药方式"
@@ -449,7 +436,7 @@
   />
 </template>
 
-<script name="TianJiaYiZhu" setup="props, context">
+<script setup>
 import {
   huoQuFeiYongXinXi,
   huoQuZhiXinKeShi,
@@ -489,6 +476,7 @@ import SelectV4 from "@/components/xiao-chan/select-v4/SelectV4.vue";
 import { shortcutTrigger, xcEvent } from "@/utils/xckeydown";
 import CyComboGrid from "@/components/cy/combo-grid/src/CyComboGrid.vue";
 import { useUserStore } from "@/pinia/user-store";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const props = defineProps({
   patientInfo: {
@@ -500,14 +488,12 @@ const userInfo = useUserStore().userInfo;
 
 // 倒计时提示
 const count = ref("");
-// 转科医嘱 编码
-const zkCode = "06286";
 // 当前的下标
 const dataIndex = ref(-1);
 // 表格的 ref
 const elTableRef = ref(null);
 
-const groupNo = ref("73");
+const groupNo = ref(useYfGroupStore().getDefaultXyCode);
 
 const searchOrders = val => {
   return huoQuXiangMu(val, groupNo.value);
@@ -728,16 +714,6 @@ const tianJiaYiZhu = () => {
     yiZhuData.value.supplyCode = "044";
     yiZhuData.value.supplyCodeName = "副药";
   }
-  if (yiZhuData.value.orderCode === zkCode) {
-    if (yiZhuData.value.zkObj) {
-      let zk = JSON.parse(yiZhuData.value.zkObj);
-      yiZhuData.value.zkWardCode = zk.wardCode;
-      yiZhuData.value.zkDeptCode = zk.smallCode;
-      yiZhuData.value.orderName = `转科医嘱转至${zk.wardName}(小科室:${zk.smallName})`;
-    } else {
-      return ElMessage.error("请选择转科科室.");
-    }
-  }
   let data = {
     list: [yiZhuData.value],
   };

+ 2 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -78,6 +78,7 @@ import doctorStore, {
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/useDoctorStore";
 import { isDev, windowBtoaAndAtob } from "@/utils/public";
 import useCompRef from "@/utils/useCompRef";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
 
 const allergen = ref({
   dialog: false,
@@ -236,7 +237,7 @@ const clickOnTheOrderTemplate = () => {
  * @param val
  */
 const muBanShuJu = val => {
-  let tempGroupNo = ["71", "73"];
+  const tempGroupNo = useYfGroupStore().getXyCodeList;
   if (queryParam.value.frequCode === "takeMedicine") {
     val = val.filter(item => {
       item.selfBuy = "4";

File diff suppressed because it is too large
+ 591 - 337
src/views/medical-advice/drug-manage/DrugSubmit.vue


File diff suppressed because it is too large
+ 558 - 373
src/views/medical-advice/drug-manage/FyInfo.vue


+ 614 - 480
src/views/medical-advice/drug-manage/TcInfo.vue

@@ -1,104 +1,165 @@
 <template>
-
   <div class="layout_container">
     <header>
       病房
-      <el-select v-model="headerParam.wardCode" @change="selectWard" style="width: 80px">
-        <el-option v-for="item in allWards" :key="item.code" :value="item.code" :label="item.name"></el-option>
+      <el-select
+        v-model="headerParam.wardCode"
+        @change="selectWard"
+        style="width: 80px"
+      >
+        <el-option
+          v-for="item in allWards"
+          :key="item.code"
+          :value="item.code"
+          :label="item.name"
+        ></el-option>
       </el-select>
       <el-date-picker
-          v-model="headerParam.startDate"
-          type="date"
-          size="small"
-          :clearable="false"
-          format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 120px"/>
+        v-model="headerParam.startDate"
+        type="date"
+        size="small"
+        :clearable="false"
+        format="YYYY-MM-DD"
+        value-format="YYYY-MM-DD"
+        style="width: 120px"
+      />
       <el-date-picker
-          v-model="headerParam.endDate"
-          type="date"
-          size="small"
-          :clearable="false"
-          format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 120px"/>
+        v-model="headerParam.endDate"
+        type="date"
+        size="small"
+        :clearable="false"
+        format="YYYY-MM-DD"
+        value-format="YYYY-MM-DD"
+        style="width: 120px"
+      />
       退药单号
       <el-popover :visible="visible" :width="700" trigger="click">
         <template #reference>
-          <el-input v-model="headerParam.pageNo"    @click="visible = true" style="width: 100px" clearable />
+          <el-input
+            v-model="headerParam.pageNo"
+            @click="visible = true"
+            style="width: 100px"
+            clearable
+          />
         </template>
-        <div style="width: 670px;">
-          单号<el-input v-model="pageNoParam.pageNo" placeholder="单号" clearable style="width: 100px"></el-input>
-          提交时间范围<el-date-picker
+        <div style="width: 670px">
+          单号
+          <el-input
+            v-model="pageNoParam.pageNo"
+            placeholder="单号"
+            clearable
+            style="width: 100px"
+          ></el-input>
+          提交时间范围
+          <el-date-picker
             v-model="pageNoParam.tjStartDate"
             type="date"
             size="small"
-            format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 110px"/>
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            style="width: 110px"
+          />
           <el-date-picker
-              v-model="pageNoParam.tjEndDate"
-              type="date"
-              size="small"
-              format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 110px"/>
-          <el-button icon="Search" type="primary" @click="selectPageNo">查询</el-button>
+            v-model="pageNoParam.tjEndDate"
+            type="date"
+            size="small"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            style="width: 110px"
+          />
+          <el-button icon="Search" type="primary" @click="selectPageNo"
+            >查询</el-button
+          >
         </div>
-        <div style="width: 670px;">
-          <el-table :data="pageNoList" style="width: 100%" @row-click="fetchPageNo"  height="400">
+        <div style="width: 670px">
+          <el-table
+            :data="pageNoList"
+            style="width: 100%"
+            @row-click="fetchPageNo"
+            height="400"
+          >
             <el-table-column width="120" property="pageNo" label="单号" />
             <el-table-column width="100" property="pageName" label="类别" />
-            <el-table-column width="150" property="submitTime" label="提交时间" />
-            <el-table-column width="150" property="cancelSubmitTime" label="取消时间" />
-            <el-table-column width="80" property="submitFlag" label="状态" >
+            <el-table-column
+              width="150"
+              property="submitTime"
+              label="提交时间"
+            />
+            <el-table-column
+              width="150"
+              property="cancelSubmitTime"
+              label="取消时间"
+            />
+            <el-table-column width="80" property="submitFlag" label="状态">
               <template v-slot="scope">
-                {{getSubmitFlag(scope.row.submitFlag)}}
+                {{ getSubmitFlag(scope.row.submitFlag) }}
               </template>
             </el-table-column>
           </el-table>
           <el-pagination
-              @size-change="handleSizeChange"
-              @current-change="handleCurrentChange"
-              :current-page="pageNoParam.currentPage"
-              small="small"
-              :page-sizes="[15, 30, 45]"
-              :page-size="pageNoParam.pageSize"
-              layout="total, sizes, prev, pager, next, jumper"
-              :total="totalSize"
-              style="margin-top: 5px;"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="pageNoParam.currentPage"
+            small="small"
+            :page-sizes="[15, 30, 45]"
+            :page-size="pageNoParam.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="totalSize"
+            style="margin-top: 5px"
           ></el-pagination>
         </div>
         <div style="text-align: center">
-          <el-button size="small" type="danger" @click="visible = false">关闭</el-button>
+          <el-button size="small" type="danger" @click="visible = false"
+            >关闭</el-button
+          >
         </div>
       </el-popover>
-      药房<el-select v-model="headerParam.groupNo"  style="width: 100px">
-      <el-option v-for="item in groupNoList" :key="item.code" :value="item.code" :label="item.name">
-        <span >{{ item.code }}</span>
-        <el-divider direction="vertical"></el-divider>
-        <span>{{ item.name }}</span>
-      </el-option>
-    </el-select>
-      床位范围<el-select v-model="headerParam.startBedNo"
-                         :clearable="true"
-                         style="width: 70px"
-    >
-      <el-option v-for="item in patintList"
-                 :key="item.bedNo"
-                 :label="item.bedNo"
-                 :value="item.bedNo">
-        <span>{{ item.bedNo }}</span>
-        <el-divider direction="vertical"></el-divider>
-        <span>{{ item.inpatientNo }}</span>
-        <el-divider direction="vertical"></el-divider>
-        <span>{{ item.name }}</span>
-      </el-option>
-
-    </el-select>
+      药房
+      <el-select v-model="headerParam.groupNo" style="width: 100px">
+        <el-option
+          v-for="item in groupNoList"
+          :key="item.code"
+          :value="item.code"
+          :label="item.name"
+        >
+          <span>{{ item.code }}</span>
+          <el-divider direction="vertical"></el-divider>
+          <span>{{ item.name }}</span>
+        </el-option>
+      </el-select>
+      床位范围
+      <el-select
+        v-model="headerParam.startBedNo"
+        :clearable="true"
+        style="width: 70px"
+      >
+        <el-option
+          v-for="item in patintList"
+          :key="item.bedNo"
+          :label="item.bedNo"
+          :value="item.bedNo"
+        >
+          <span>{{ item.bedNo }}</span>
+          <el-divider direction="vertical"></el-divider>
+          <span>{{ item.inpatientNo }}</span>
+          <el-divider direction="vertical"></el-divider>
+          <span>{{ item.name }}</span>
+        </el-option>
+      </el-select>
-      <el-select v-model="headerParam.endBedNo"
-                 style="width: 70px"
-                 :clearable="true"
+      <el-select
+        v-model="headerParam.endBedNo"
+        style="width: 70px"
+        :clearable="true"
       >
-        <el-option v-for="item in reverPatintList"
-                   :key="item.bedNo"
-                   :label="item.bedNo"
-                   :value="item.bedNo">
+        <el-option
+          v-for="item in reverPatintList"
+          :key="item.bedNo"
+          :label="item.bedNo"
+          :value="item.bedNo"
+        >
           <span>{{ item.bedNo }}</span>
           <el-divider direction="vertical"></el-divider>
           <span>{{ item.inpatientNo }}</span>
@@ -106,373 +167,439 @@
           <span>{{ item.name }}</span>
         </el-option>
       </el-select>
-      <el-button icon="Search" type="primary" @click="queryInfo">查询</el-button>
-      <el-button icon="Printer" type="primary" @click="printInfo">打印</el-button>
+      <el-button icon="Search" type="primary" @click="queryInfo"
+        >查询</el-button
+      >
+      <el-button icon="Printer" type="primary" @click="printInfo"
+        >打印</el-button
+      >
       <el-button size="small" type="success" @click="saveData">保存</el-button>
-      <el-button  type="danger" @click="delInfo">删除</el-button>
+      <el-button type="danger" @click="delInfo">删除</el-button>
     </header>
     <div class="layout_main layout_el-table">
-      <el-tabs
-          v-model="activeName"
-          type="card"
-          class="demo-tabs"
-      >
+      <el-tabs v-model="activeName" type="card" class="demo-tabs">
         <el-tab-pane label="汇总信息" name="first">
-          <el-scrollbar  class="scrollbar" :max-height="(windowHeight/1.2-100)+'px'" :noresize="true">
+          <el-scrollbar
+            class="scrollbar"
+            :max-height="windowHeight / 1.2 - 100 + 'px'"
+            :noresize="true"
+          >
             <div id="mzhzlyd">
               <table class="pageTable">
                 <thead>
-                <tr>
-                  <td colspan="6" style="width: 100%;border: none;text-align: center;font-size: 25px;font-weight:bold">
-                    {{tableHeaderdParam.headerTotalTitle}}
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="6" style="width: 753px;border: none;">
-                    <div style="float: left;width: 63%;">
-                      日期范围:{{tableHeaderdParam.startDateTime}} 至 {{tableHeaderdParam.endDateTime}}
-                    </div>
-                    <div style="float:right;width:35%">
-                      打印日期:{{getFormatDatetime(new Date(), 'YYYY-MM-DD')}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="6" style="width: 100%;border: none">
-                    <div style="float: left;width: 33%">
-                      单号:{{tableHeaderdParam.pageNo}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      药单类别:{{tableHeaderdParam.pageClassName}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      请领科室:{{tableHeaderdParam.wardName}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <th style="width: 10%;height: 27px">药品编码</th>
-                  <th style="width: 30%">药品名称</th>
-                  <th style="width: 24%">规格</th>
-                  <th style="width: 12%">数量</th>
-                  <th style="width: 12%">零售价</th>
-                  <th style="width: 12%">金额</th>
-                </tr>
+                  <tr>
+                    <td
+                      colspan="6"
+                      style="
+                        width: 100%;
+                        border: none;
+                        text-align: center;
+                        font-size: 25px;
+                        font-weight: bold;
+                      "
+                    >
+                      {{ tableHeaderdParam.headerTotalTitle }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="6" style="width: 753px; border: none">
+                      <div style="float: left; width: 63%">
+                        日期范围:{{ tableHeaderdParam.startDateTime }} 至
+                        {{ tableHeaderdParam.endDateTime }}
+                      </div>
+                      <div style="float: right; width: 35%">
+                        打印日期:{{
+                          getFormatDatetime(new Date(), "YYYY-MM-DD")
+                        }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="6" style="width: 100%; border: none">
+                      <div style="float: left; width: 33%">
+                        单号:{{ tableHeaderdParam.pageNo }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        药单类别:{{ tableHeaderdParam.pageClassName }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        请领科室:{{ tableHeaderdParam.wardName }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th style="width: 10%; height: 27px">药品编码</th>
+                    <th style="width: 30%">药品名称</th>
+                    <th style="width: 24%">规格</th>
+                    <th style="width: 12%">数量</th>
+                    <th style="width: 12%">零售价</th>
+                    <th style="width: 12%">金额</th>
+                  </tr>
                 </thead>
                 <tbody>
-                <tr v-for="(item,index) in drugTotalVos">
-                  <td >{{item.chargeCode}}</td>
-                  <td >{{item.drugName}}</td>
-                  <td >{{item.spec}}</td>
-                  <td >{{item.amount}}</td>
-                  <td >{{item.retprice}}</td>
-                  <td >{{item.fee}}</td>
-                </tr>
-                <tr>
-                  <td colspan="6" style="border: none;text-align:right;padding-right: 30px">
-                    合计金额:{{totalSumFee}}
-                  </td>
-                </tr>
+                  <tr v-for="(item, index) in drugTotalVos">
+                    <td>{{ item.chargeCode }}</td>
+                    <td>{{ item.drugName }}</td>
+                    <td>{{ item.spec }}</td>
+                    <td>{{ item.amount }}</td>
+                    <td>{{ item.retprice }}</td>
+                    <td>{{ item.fee }}</td>
+                  </tr>
+                  <tr>
+                    <td
+                      colspan="6"
+                      style="
+                        border: none;
+                        text-align: right;
+                        padding-right: 30px;
+                      "
+                    >
+                      合计金额:{{ totalSumFee }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </div>
           </el-scrollbar>
         </el-tab-pane>
         <el-tab-pane label="明细信息(按时间)" name="second">
-          <el-scrollbar  class="scrollbar" :max-height="(windowHeight/1.2-100)+'px'" :noresize="true">
+          <el-scrollbar
+            class="scrollbar"
+            :max-height="windowHeight / 1.2 - 100 + 'px'"
+            :noresize="true"
+          >
             <div id="mzmxlyd">
               <table class="pageTable">
                 <thead>
-                <tr>
-                  <td colspan="12" style="width: 100%;border: none;text-align: center;font-size: 25px;font-weight:bold">
-                    {{tableHeaderdParam.headerTimeTitle}}
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="12" style="width: 1110px;border: none;">
-                    <div style="float: left;width: 63%;">
-                      日期范围:{{tableHeaderdParam.startDateTime}} 至 {{tableHeaderdParam.endDateTime}}
-                    </div>
-                    <div style="float:right;width:35%">
-                      打印日期:{{getFormatDatetime(new Date(), 'YYYY-MM-DD')}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="12" style="width: 100%;border: none">
-                    <div style="float: left;width: 33%">
-                      单号:{{tableHeaderdParam.pageNo}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      药单类别:{{tableHeaderdParam.pageClassName}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      请领科室:{{tableHeaderdParam.wardName}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <th style="width: 7%;height: 27px">住院号</th>
-                  <th style="width: 5%">床号</th>
-                  <th style="width: 5%">次数</th>
-                  <th style="width: 7%">姓名</th>
-                  <th style="width: 7%">药品编码</th>
-                  <th style="width: 16%">药品名称</th>
-                  <th style="width: 10%">规格</th>
-                  <th style="width: 12%">执行时间</th>
-                  <th style="width: 7%">数量</th>
-                  <th style="width: 7%">零售价</th>
-                  <th style="width: 7%">金额</th>
-                  <th style="width: 7%">医嘱号</th>
-                </tr>
+                  <tr>
+                    <td
+                      colspan="12"
+                      style="
+                        width: 100%;
+                        border: none;
+                        text-align: center;
+                        font-size: 25px;
+                        font-weight: bold;
+                      "
+                    >
+                      {{ tableHeaderdParam.headerTimeTitle }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="12" style="width: 1110px; border: none">
+                      <div style="float: left; width: 63%">
+                        日期范围:{{ tableHeaderdParam.startDateTime }} 至
+                        {{ tableHeaderdParam.endDateTime }}
+                      </div>
+                      <div style="float: right; width: 35%">
+                        打印日期:{{
+                          getFormatDatetime(new Date(), "YYYY-MM-DD")
+                        }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="12" style="width: 100%; border: none">
+                      <div style="float: left; width: 33%">
+                        单号:{{ tableHeaderdParam.pageNo }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        药单类别:{{ tableHeaderdParam.pageClassName }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        请领科室:{{ tableHeaderdParam.wardName }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th style="width: 7%; height: 27px">住院号</th>
+                    <th style="width: 5%">床号</th>
+                    <th style="width: 5%">次数</th>
+                    <th style="width: 7%">姓名</th>
+                    <th style="width: 7%">药品编码</th>
+                    <th style="width: 16%">药品名称</th>
+                    <th style="width: 10%">规格</th>
+                    <th style="width: 12%">执行时间</th>
+                    <th style="width: 7%">数量</th>
+                    <th style="width: 7%">零售价</th>
+                    <th style="width: 7%">金额</th>
+                    <th style="width: 7%">医嘱号</th>
+                  </tr>
                 </thead>
                 <tbody>
-                <tr v-for="(item,index) in drugDetailTimeVos">
-                  <td >{{item.inpatientNo}}</td>
-                  <td >{{item.bedNo}}</td>
-                  <td >{{item.admissTimes}}</td>
-                  <td >{{item.name}}</td>
-                  <td >{{item.chargeCode}}</td>
-                  <td >{{item.drugName}}</td>
-                  <td >{{item.spec}}</td>
-                  <td >{{item.occTime}}</td>
-                  <td >{{item.amount}}</td>
-                  <td >{{item.retprice}}</td>
-                  <td >{{item.fee}}</td>
-                  <td >{{item.actOrderNo}}</td>
-                </tr>
-                <tr>
-                  <td  colspan="12"  style="border: none;text-align:right;padding-right: 30px">
-                    合计金额:{{detailSumFee}}
-                  </td>
-                </tr>
+                  <tr v-for="(item, index) in drugDetailTimeVos">
+                    <td>{{ item.inpatientNo }}</td>
+                    <td>{{ item.bedNo }}</td>
+                    <td>{{ item.admissTimes }}</td>
+                    <td>{{ item.name }}</td>
+                    <td>{{ item.chargeCode }}</td>
+                    <td>{{ item.drugName }}</td>
+                    <td>{{ item.spec }}</td>
+                    <td>{{ item.occTime }}</td>
+                    <td>{{ item.amount }}</td>
+                    <td>{{ item.retprice }}</td>
+                    <td>{{ item.fee }}</td>
+                    <td>{{ item.actOrderNo }}</td>
+                  </tr>
+                  <tr>
+                    <td
+                      colspan="12"
+                      style="
+                        border: none;
+                        text-align: right;
+                        padding-right: 30px;
+                      "
+                    >
+                      合计金额:{{ detailSumFee }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </div>
           </el-scrollbar>
         </el-tab-pane>
         <el-tab-pane label="明细信息" name="three">
-          <el-scrollbar  class="scrollbar" :max-height="(windowHeight/1.2-100)+'px'" :noresize="true">
+          <el-scrollbar
+            class="scrollbar"
+            :max-height="windowHeight / 1.2 - 100 + 'px'"
+            :noresize="true"
+          >
             <div id="mzlyd">
               <table class="pageTable">
                 <thead>
-                <tr>
-                  <td colspan="9" style="width: 100%;border: none;text-align: center;font-size: 25px;font-weight:bold">
-                    {{tableHeaderdParam.headerDetailTitle}}
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="9" style="width: 753px;border: none;">
-                    <div style="float: left;width: 63%;">
-                      日期范围:{{tableHeaderdParam.startDateTime}} 至 {{tableHeaderdParam.endDateTime}}
-                    </div>
-                    <div style="float:right;width:35%">
-                      打印日期:{{getFormatDatetime(new Date(), 'YYYY-MM-DD')}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="9" style="width: 100%;border: none">
-                    <div style="float: left;width: 33%">
-                      单号:{{tableHeaderdParam.pageNo}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      药单类别:{{tableHeaderdParam.pageClassName}}
-                    </div>
-                    <div style="float: left;width: 33%">
-                      请领科室:{{tableHeaderdParam.wardName}}
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <th style="width: 12%;height: 27px">住院号</th>
-                  <th style="width: 12%">床号</th>
-                  <th style="width: 12%">姓名</th>
-                  <th style="width: 30%">药品名称</th>
-                  <th style="width: 24%">规格</th>
-                  <th style="width: 10%">退药数量</th>
-                </tr>
+                  <tr>
+                    <td
+                      colspan="9"
+                      style="
+                        width: 100%;
+                        border: none;
+                        text-align: center;
+                        font-size: 25px;
+                        font-weight: bold;
+                      "
+                    >
+                      {{ tableHeaderdParam.headerDetailTitle }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="9" style="width: 753px; border: none">
+                      <div style="float: left; width: 63%">
+                        日期范围:{{ tableHeaderdParam.startDateTime }} 至
+                        {{ tableHeaderdParam.endDateTime }}
+                      </div>
+                      <div style="float: right; width: 35%">
+                        打印日期:{{
+                          getFormatDatetime(new Date(), "YYYY-MM-DD")
+                        }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td colspan="9" style="width: 100%; border: none">
+                      <div style="float: left; width: 33%">
+                        单号:{{ tableHeaderdParam.pageNo }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        药单类别:{{ tableHeaderdParam.pageClassName }}
+                      </div>
+                      <div style="float: left; width: 33%">
+                        请领科室:{{ tableHeaderdParam.wardName }}
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th style="width: 12%; height: 27px">住院号</th>
+                    <th style="width: 12%">床号</th>
+                    <th style="width: 12%">姓名</th>
+                    <th style="width: 30%">药品名称</th>
+                    <th style="width: 24%">规格</th>
+                    <th style="width: 10%">退药数量</th>
+                  </tr>
                 </thead>
                 <tbody>
-                <tr v-for="(item,index) in drugDetailVos">
-                  <td v-if="item.inpatientNo==''" style="border: none;">{{item.inpatientNo}}</td>
-                  <td v-else>{{item.inpatientNo}}</td>
-                  <td v-if="item.bedNo==''"  style="border: none;" >{{item.bedNo}}</td>
-                  <td v-else>{{item.bedNo}}</td>
-                  <td v-if="item.name==''"  style="border: none;">{{item.name}}</td>
-                  <td v-else >{{item.name}}</td>
-                  <td >{{item.drugName}}</td>
-                  <td >{{item.spec}}</td>
-                  <td >{{item.amount}}</td>
-                </tr>
+                  <tr v-for="(item, index) in drugDetailVos">
+                    <td v-if="item.inpatientNo == ''" style="border: none">
+                      {{ item.inpatientNo }}
+                    </td>
+                    <td v-else>{{ item.inpatientNo }}</td>
+                    <td v-if="item.bedNo == ''" style="border: none">
+                      {{ item.bedNo }}
+                    </td>
+                    <td v-else>{{ item.bedNo }}</td>
+                    <td v-if="item.name == ''" style="border: none">
+                      {{ item.name }}
+                    </td>
+                    <td v-else>{{ item.name }}</td>
+                    <td>{{ item.drugName }}</td>
+                    <td>{{ item.spec }}</td>
+                    <td>{{ item.amount }}</td>
+                  </tr>
                 </tbody>
               </table>
-
             </div>
           </el-scrollbar>
         </el-tab-pane>
       </el-tabs>
     </div>
   </div>
-
 </template>
 
-<script setup name='TcInfo'>
-import { computed, onMounted, ref } from 'vue'
-import { getFormatDatetime } from "@/utils/date"
-import { ElMessage, ElMessageBox } from 'element-plus'
-import {getAllWards} from "@/api/zhu-yuan-yi-sheng/resident-doctor";
-import {queryYpZdGroupName,queryYzYpPageNo} from "@/api/medical-advice/medical-common";
-import {queryPatientInfo} from "@/api/medical-advice/medical-advice-management";
-import {queryTcInfo,saveTcData,delTcData,queryQsTime} from "@/api/medical-advice/drug-manage";
-import {getLodop, initLodop} from '@/utils/c-lodop'
-
-const windowHeight = window.innerHeight
+<script setup name="TcInfo">
+import { computed, onMounted, ref } from "vue";
+import { getFormatDatetime } from "@/utils/date";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { getAllWards } from "@/api/zhu-yuan-yi-sheng/resident-doctor";
+import {
+  queryYpZdGroupName,
+  queryYzYpPageNo,
+} from "@/api/medical-advice/medical-common";
+import { queryPatientInfo } from "@/api/medical-advice/medical-advice-management";
+import {
+  queryTcInfo,
+  saveTcData,
+  delTcData,
+  queryQsTime,
+} from "@/api/medical-advice/drug-manage";
+import { getLodop, initLodop } from "@/utils/c-lodop";
+import { useYfGroupStore } from "@/pinia/use-yf-group";
+
+const windowHeight = window.innerHeight;
 
 const headerParam = ref({
-    wardCode:'',
-    startDate:getFormatDatetime(new Date(),'YYYY-MM-DD'),
-    endDate:getFormatDatetime(new Date(),'YYYY-MM-DD'),
-    pageNo:0,
-    startBedNo:'',
-    endBedNo:'',
-    groupNo:'73',
-    alwaysFlag:'',
-    jsyFlag:'',
-})
+  wardCode: "",
+  startDate: getFormatDatetime(new Date(), "YYYY-MM-DD"),
+  endDate: getFormatDatetime(new Date(), "YYYY-MM-DD"),
+  pageNo: 0,
+  startBedNo: "",
+  endBedNo: "",
+  groupNo: useYfGroupStore().getDefaultXyCode,
+  alwaysFlag: "",
+  jsyFlag: "",
+});
 
 //表头数据
 const tableHeaderdParam = ref({
-    startDateTime:'',
-    endDateTime:'',
-    pageNo:'',
-    pageClassName:'退药单',
-    wardName:'',
-    headerTotalTitle:'门诊汇总退药单',
-    headerTimeTitle:'门诊明细退药单',
-    headerDetailTitle:'门诊退药单',
-})
+  startDateTime: "",
+  endDateTime: "",
+  pageNo: "",
+  pageClassName: "退药单",
+  wardName: "",
+  headerTotalTitle: "门诊汇总退药单",
+  headerTimeTitle: "门诊明细退药单",
+  headerDetailTitle: "门诊退药单",
+});
 
 //初始化表头数据
-const initTableHeaderdParam= ()=>{
-    queryQsTime(headerParam.value).then((res)=>{
-        tableHeaderdParam.value.startDateTime =res.startDayTime
-        tableHeaderdParam.value.endDateTime = res.endDayTime
-    })
-
-    tableHeaderdParam.value.pageNo = headerParam.value.pageNo==0 ? '' : headerParam.value.pageNo
-    tableHeaderdParam.value.wardName = getWardName(headerParam.value.wardCode)
-}
-
-
+const initTableHeaderdParam = () => {
+  queryQsTime(headerParam.value).then(res => {
+    tableHeaderdParam.value.startDateTime = res.startDayTime;
+    tableHeaderdParam.value.endDateTime = res.endDayTime;
+  });
 
+  tableHeaderdParam.value.pageNo =
+    headerParam.value.pageNo == 0 ? "" : headerParam.value.pageNo;
+  tableHeaderdParam.value.wardName = getWardName(headerParam.value.wardCode);
+};
 
 const pageNoParam = ref({
-    wardCode:'',
-    pageNo:null,
-    pageClass:'T',
-    tjStartDate:'',
-    tjEndDate:'',
-    currentPage:1,
-    pageSize:15,
-})
-
-const pageNoList= ref([])
-const totalSize = ref(0)
-const activeName = ref('first')
-const allWards= ref([])
-const groupNoList = ref([])
-
-const  getWardName = (code)=>{
-    for (let i = 0; i < allWards.value.length; i++) {
-        if(code === allWards.value[i].code ){
-            return allWards.value[i].name
-        }
+  wardCode: "",
+  pageNo: null,
+  pageClass: "T",
+  tjStartDate: "",
+  tjEndDate: "",
+  currentPage: 1,
+  pageSize: 15,
+});
+
+const pageNoList = ref([]);
+const totalSize = ref(0);
+const activeName = ref("first");
+const allWards = ref([]);
+const groupNoList = ref([]);
+
+const getWardName = code => {
+  for (let i = 0; i < allWards.value.length; i++) {
+    if (code === allWards.value[i].code) {
+      return allWards.value[i].name;
     }
-}
-
-onMounted(()=>{
-    initLodop()
-    getAllWards().then((res) => {
-        if (res.length > 0) {
-            allWards.value = res
-            headerParam.value.wardCode= res[0].code
-            selectWard()
-        }
-    })
-
-    queryYpZdGroupName().then((res)=>{
-        groupNoList.value = res
-    })
-
-})
-
-
-const getSubmitFlag=(code)=>{
-    if(code == 0){
-        return '未提交'
-    }else if(code == 1){
-        return '提交'
-    }else if(code == 2){
-        return '取消'
-    }else {
-        return  code
+  }
+};
+
+onMounted(() => {
+  initLodop();
+  getAllWards().then(res => {
+    if (res.length > 0) {
+      allWards.value = res;
+      headerParam.value.wardCode = res[0].code;
+      selectWard();
     }
-}
-
-const selectWard = ()=>{
-    selectPageNo()
-    initPatintBedNo()
-}
+  });
+
+  queryYpZdGroupName().then(res => {
+    groupNoList.value = res;
+  });
+});
+
+const getSubmitFlag = code => {
+  if (code == 0) {
+    return "未提交";
+  } else if (code == 1) {
+    return "提交";
+  } else if (code == 2) {
+    return "取消";
+  } else {
+    return code;
+  }
+};
+
+const selectWard = () => {
+  selectPageNo();
+  initPatintBedNo();
+};
 //查询药单号
-const selectPageNo = () =>{
-    pageNoParam.value.wardCode = headerParam.value.wardCode
-    queryYzYpPageNo(pageNoParam.value).then((res) => {
-        pageNoList.value = res.records
-        totalSize.value = res.total
-    })
-}
-
-const visible = ref(false)
+const selectPageNo = () => {
+  pageNoParam.value.wardCode = headerParam.value.wardCode;
+  queryYzYpPageNo(pageNoParam.value).then(res => {
+    pageNoList.value = res.records;
+    totalSize.value = res.total;
+  });
+};
+
+const visible = ref(false);
 //选中药单号
-const fetchPageNo = (row)=>{
-    headerParam.value.pageNo = row.pageNo
-    visible.value = false
-}
+const fetchPageNo = row => {
+  headerParam.value.pageNo = row.pageNo;
+  visible.value = false;
+};
 
+const patintList = ref([]);
+const reverPatintList = computed(() => reverseArray(patintList.value));
 
-const patintList = ref([])
-const reverPatintList = computed(() => reverseArray(patintList.value))
-
-const initPatintBedNo=()=>{
-    queryPatientInfo('',headerParam.value.wardCode,'').then((res)=>{
-        patintList.value = res
-    })
-}
+const initPatintBedNo = () => {
+  queryPatientInfo("", headerParam.value.wardCode, "").then(res => {
+    patintList.value = res;
+  });
+};
 
 function reverseArray(arr) {
-    let newArr = [];
-    arr.forEach(element => {
-        // unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
-        newArr.unshift(element);
-    });
-    return newArr;
-}
-
-const handleSizeChange = (val) => {
-    pageNoParam.value.pageSize = val
-    selectPageNo()
-}
-const handleCurrentChange = (val) => {
-    pageNoParam.value.currentPage = val
-    selectPageNo()
+  let newArr = [];
+  arr.forEach(element => {
+    // unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
+    newArr.unshift(element);
+  });
+  return newArr;
 }
 
+const handleSizeChange = val => {
+  pageNoParam.value.pageSize = val;
+  selectPageNo();
+};
+const handleCurrentChange = val => {
+  pageNoParam.value.currentPage = val;
+  selectPageNo();
+};
 
-
-
-
-const printCss=`
+const printCss = `
 .pageTable tr td, .pageTable tr th {
     border: 1px solid black;
     text-align: center;
@@ -508,144 +635,151 @@ const printCss=`
     padding: 0 0px;
 }
 
-`
+`;
 
 //打印
 const printInfo = () => {
-    let LODOP = getLodop()
-    let printId = ''
-        if(activeName.value == 'first'){
-            printId = 'mzhzlyd'
-        }else if(activeName.value == 'second'){
-            printId = 'mzmxlyd'
-        }else {
-            printId = 'mzlyd'
-        }
-    if(activeName.value == 'second'){
-        LODOP.PRINT_INIT('提药单明细') // 初始化打印机 名字
-        LODOP.SET_PRINT_PAGESIZE(2, '0', '0', 'A4')
-        LODOP.SET_PRINT_MODE('RESELECT_PRINTER', true)
-        LODOP.SET_PRINT_MODE('PRINT_PAGE_PERCENT', 'Full-Width')
-        LODOP.ADD_PRINT_TABLE('2mm', '2mm', '290mm', '180mm', '<style>' + printCss + '</style>' + '<body>' + document.getElementById(printId).innerHTML + '</body>')
-        LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED", 1)
-    }else {
-        LODOP.PRINT_INIT('医嘱提药单') // 初始化打印机 名字
-        LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '') // 设置纸张大小  A4
-        LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
-        LODOP.ADD_PRINT_TABLE('2mm', '5mm', '205mm', '220mm', '<style>' + printCss + '</style>' + '<body>' + document.getElementById(printId).innerHTML + '</body>') //要打印的内容
-    }
-    LODOP.PREVIEW() // 关闭
-}
+  let LODOP = getLodop();
+  let printId = "";
+  if (activeName.value == "first") {
+    printId = "mzhzlyd";
+  } else if (activeName.value == "second") {
+    printId = "mzmxlyd";
+  } else {
+    printId = "mzlyd";
+  }
+  if (activeName.value == "second") {
+    LODOP.PRINT_INIT("提药单明细"); // 初始化打印机 名字
+    LODOP.SET_PRINT_PAGESIZE(2, "0", "0", "A4");
+    LODOP.SET_PRINT_MODE("RESELECT_PRINTER", true);
+    LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Full-Width");
+    LODOP.ADD_PRINT_TABLE(
+      "2mm",
+      "2mm",
+      "290mm",
+      "180mm",
+      "<style>" +
+        printCss +
+        "</style>" +
+        "<body>" +
+        document.getElementById(printId).innerHTML +
+        "</body>"
+    );
+    LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED", 1);
+  } else {
+    LODOP.PRINT_INIT("医嘱提药单"); // 初始化打印机 名字
+    LODOP.SET_PRINT_PAGESIZE(1, "210mm", "297mm", ""); // 设置纸张大小  A4
+    LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW", true); // 整宽不变形
+    LODOP.ADD_PRINT_TABLE(
+      "2mm",
+      "5mm",
+      "205mm",
+      "220mm",
+      "<style>" +
+        printCss +
+        "</style>" +
+        "<body>" +
+        document.getElementById(printId).innerHTML +
+        "</body>"
+    ); //要打印的内容
+  }
+  LODOP.PREVIEW(); // 关闭
+};
 
 //删除
 const delInfo = () => {
-    ElMessageBox.confirm('请确认是否删除', {
-        cancelButtonText: '取消',
-        confirmButtonText: '确定',
+  ElMessageBox.confirm("请确认是否删除", {
+    cancelButtonText: "取消",
+    confirmButtonText: "确定",
+  })
+    .then(() => {
+      delTcData(headerParam.value).then(res => {});
     })
-        .then(() => {
-            delTcData(headerParam.value).then((res)=>{
-
-            })
-        })
-        .catch(() => {
-        })
-
-
-
-}
+    .catch(() => {});
+};
 
 //汇总信息
-const drugTotalVos = ref([])
+const drugTotalVos = ref([]);
 //明细按时间
-const drugDetailTimeVos = ref([])
+const drugDetailTimeVos = ref([]);
 //明细
-const drugDetailVos = ref([])
+const drugDetailVos = ref([]);
 //汇总合计金额
-const  totalSumFee = ref(null)
+const totalSumFee = ref(null);
 //明细合计金额
-const  detailSumFee = ref(null)
-
-
-
+const detailSumFee = ref(null);
 
 //查询
-const queryInfo = () =>{
-    initTableHeaderdParam()
-    clearData()
-    queryTcInfo(headerParam.value).then((res)=>{
-            drugTotalVos.value = res.drugTotalVos
-            drugDetailTimeVos.value = res.drugDetailTimeVos
-            drugDetailVos.value = res.drugDetailVos
-            totalSumFee.value = res.detailSumFee
-            detailSumFee.value = res.detailSumFee
-
-    })
-}
-
-
-const clearData = ()=>{
-        drugTotalVos.value = []
-        drugDetailTimeVos.value = []
-        drugDetailVos.value = []
-        totalSumFee.value =null
-        detailSumFee.value =null
-}
+const queryInfo = () => {
+  initTableHeaderdParam();
+  clearData();
+  queryTcInfo(headerParam.value).then(res => {
+    drugTotalVos.value = res.drugTotalVos;
+    drugDetailTimeVos.value = res.drugDetailTimeVos;
+    drugDetailVos.value = res.drugDetailVos;
+    totalSumFee.value = res.detailSumFee;
+    detailSumFee.value = res.detailSumFee;
+  });
+};
+
+const clearData = () => {
+  drugTotalVos.value = [];
+  drugDetailTimeVos.value = [];
+  drugDetailVos.value = [];
+  totalSumFee.value = null;
+  detailSumFee.value = null;
+};
 
 //保存
-const saveData = () =>{
-    ElMessageBox.confirm('请确认是否提交退药单', {
-        cancelButtonText: '取消',
-        confirmButtonText: '确定',
+const saveData = () => {
+  ElMessageBox.confirm("请确认是否提交退药单", {
+    cancelButtonText: "取消",
+    confirmButtonText: "确定",
+  })
+    .then(() => {
+      saveTcData(headerParam.value).then(res => {
+        tableHeaderdParam.value.pageNo = res.newPageNo;
+        ElMessage.success("提交成功");
+      });
     })
-        .then(() => {
-            saveTcData(headerParam.value).then((res)=>{
-                tableHeaderdParam.value.pageNo = res.newPageNo
-                ElMessage.success("提交成功")
-            })
-        })
-        .catch(() => {
-        })
-}
-
-
-
+    .catch(() => {});
+};
 </script>
 
 <style scoped>
-.pageTable tr td, .pageTable tr th {
-    border: 1px solid black;
-    text-align: center;
-    font-size: 12px;
-    padding: 0 0;
-
+.pageTable tr td,
+.pageTable tr th {
+  border: 1px solid black;
+  text-align: center;
+  font-size: 12px;
+  padding: 0 0;
 }
-.pageTable tr td{
-    height: 27px;
+
+.pageTable tr td {
+  height: 27px;
 }
 
 .pageTable {
-    border-collapse: collapse;
+  border-collapse: collapse;
 }
 
 #mzhzlyd {
-    width: 753px;
-    padding: 0 0px;
+  width: 753px;
+  padding: 0 0px;
 }
 
-#mzmxlyd{
-    width: 1110px;
-    padding: 0 0px;
+#mzmxlyd {
+  width: 1110px;
+  padding: 0 0px;
 }
 
-#mzlyd{
-    width: 753px;
-    padding: 0 0px;
+#mzlyd {
+  width: 753px;
+  padding: 0 0px;
 }
 
-#cyzycf{
-    width: 753px;
-    padding: 0 0px;
+#cyzycf {
+  width: 753px;
+  padding: 0 0px;
 }
-
-</style>
+</style>

+ 20 - 32
src/views/medical-insurance/inpatient/AdmRegistration.vue

@@ -2,34 +2,34 @@
   <div class="layout_display_flex_y">
     <div>
       <el-button icon="Location" type="primary" @click="beforeFetchAssigninfo"
-        >定点信息</el-button
-      >
+        >定点信息
+      </el-button>
       <el-button icon="Check" type="primary" @click="submitPatientInfo">
-        保存</el-button
-      >
+        保存
+      </el-button>
       <ReadCard
         :pat-no="patient.inpatientNo"
         biztype="01103"
         @success="afterReadCard"
       />
       <el-button icon="Top" type="success" @click="checkRegisterDatetime"
-        >医保入院登记</el-button
-      >
+        >医保入院登记
+      </el-button>
       <el-button icon="Bottom" type="danger" @click="beforeCancelRegister"
-        >撤销入院登记</el-button
-      >
+        >撤销入院登记
+      </el-button>
       <el-button icon="Coin" type="success" @click="xiangMuLuRuRouter"
-        >项目录入</el-button
-      >
+        >项目录入
+      </el-button>
       <generate-medicine-return-order />
       <el-button type="danger" @click="chronicDiseaseRegister"
-        >慢病登记</el-button
-      >
+        >慢病登记
+      </el-button>
     </div>
     <div style="margin-bottom: 8px">
       <el-divider content-position="left" class="el-divider_shorter"
-        >患者基本信息</el-divider
-      >
+        >患者基本信息
+      </el-divider>
       <el-descriptions :column="3" border>
         <el-descriptions-item>
           <template #label> 住院号</template>
@@ -431,15 +431,6 @@
     @close="showAssigninfo = false"
   />
 
-  <el-dialog
-    v-model="openXmlr"
-    :fullscreen="true"
-    class="el-dialog-fullscreen-fill"
-    destroy-on-close
-    title="项目录入"
-  >
-    <Xmlr @closeXmlr="openXmlr = false" />
-  </el-dialog>
   <el-dialog
     v-model="showSearchSpecialDiag"
     :close-on-click-modal="false"
@@ -485,8 +476,8 @@
       <el-table-column>
         <template #default="scope">
           <el-button type="primary" @click="addDiseInfo(scope.row)"
-            >选择此病种</el-button
-          >
+            >选择此病种
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -520,11 +511,11 @@
     ></el-input>
     <div style="width: 450px; text-align: right; margin-top: 30px">
       <el-button icon="Close" type="info" @click="cancelAdmissApply"
-        >取消</el-button
-      >
+        >取消
+      </el-button>
       <el-button icon="Check" type="success" @click="confirmAdmissApply"
-        >提交</el-button
-      >
+        >提交
+      </el-button>
     </div>
   </el-dialog>
   <el-dialog v-model="showPsnInsuinfo" title="人员信息" width="65%">
@@ -661,7 +652,6 @@ import {
   submitAdmissApply,
 } from "@/api/medical-insurance/si-admiss-apply";
 import { baseinfo } from "@/data/inpatient";
-import Xmlr from "@/components/inpatient/XiangMuLuRu.vue";
 import XmlrV2 from "@/components/xmlr/index.vue";
 import Assignmentinfo from "@/components/medical-insurance/assigninfo/Index.vue";
 import Search from "@/components/search/Index.vue";
@@ -1230,8 +1220,6 @@ function chronicDiseaseRegister() {
   );
 }
 
-// 项目录入
-const openXmlr = ref(false);
 const xiangMuLuRuRouter = () => {
   if (nullPatient()) {
     return;

File diff suppressed because it is too large
+ 814 - 172
src/views/ypCodg/YpCodgUpload.vue


Some files were not shown because too many files changed in this diff