|
@@ -0,0 +1,460 @@
|
|
|
+<template>
|
|
|
+ <el-container>
|
|
|
+ <el-header style="height: 40px">
|
|
|
+ <el-button icon="el-icon-arrow-left" style="font-size: 14px" type="text" @click="router.go(-1)">返回</el-button>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <el-button type="primary" @click="quMuBan.dialog = true;dianJiaChaXunMuBan(0)">取模板</el-button>
|
|
|
+ <el-button :disabled="mingXi.list.length === 0 " type="success" @click="cunMuBan.dialog = true">存模板</el-button>
|
|
|
+ </el-header>
|
|
|
+ <el-main>
|
|
|
+ <el-form label-width="120px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="处方名:">
|
|
|
+ <el-input v-model="chuFang.orderName" style="width: 120px;"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="剂数:">
|
|
|
+ <el-input-number v-model="chuFang.quantity" :min="0"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="代煎:">
|
|
|
+ <el-input-number v-model="chuFang.quantityDj" :max="chuFang.quantity" :min="0"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="执行科室:">
|
|
|
+ {{ huanZheXinXi.smallDeptName }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="每日剂数:">
|
|
|
+ <el-input-number v-model="chuFang.cyMtjs"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="类型:">
|
|
|
+ <el-select v-model="chuFang.cyJssm" clearable filterable size="mini" style="width: 120px;">
|
|
|
+ <el-option v-for="item in jiaShuiLeiXing" :key="item.code" :label="item.name"
|
|
|
+ :value="item.code"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="加水量(ml):">
|
|
|
+ <el-input-number v-model="chuFang.cyJsl"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="煮取(ml):">
|
|
|
+ <el-input-number v-model="chuFang.cyZql"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="复煎:">
|
|
|
+ <el-input-number v-model="chuFang.cyFj"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="分几次:">
|
|
|
+ <el-input-number v-model="chuFang.cyFfcs"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="服用说明:">
|
|
|
+ <el-select v-model="chuFang.cyFysm" clearable filterable size="mini" style="width: 120px;">
|
|
|
+ <el-option v-for="item in fuYongFangFaShuJu" :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-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="药房:">
|
|
|
+ <el-switch
|
|
|
+ v-model="chuFang.groupNo"
|
|
|
+ active-color="#13ce66"
|
|
|
+ active-text="中药颗粒"
|
|
|
+ active-value="82"
|
|
|
+ inactive-color="#fbbd08"
|
|
|
+ inactive-text="草药"
|
|
|
+ inactive-value="81"
|
|
|
+ @change="mingXi.weiYi =[];mingXi.list= []">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <el-divider></el-divider>
|
|
|
+ <el-form label-width="120px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="药品编码:">
|
|
|
+ <el-input v-model="caoYao.chargeCode" @click="dianJiCaoYaoBianMa"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="药品名称:">
|
|
|
+ <el-input v-model="caoYao.chargeCodeName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="数量:">
|
|
|
+ <el-input-number v-model="caoYao.quantity" :min="1"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="说明:">
|
|
|
+ <el-input v-model="caoYao.instruction" :maxlength="30" clearable show-word-limit
|
|
|
+ type="textarea"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <el-table :data="mingXi.list" :height="windowSize.h / 2.3" highlight-current-row stripe
|
|
|
+ @row-click="dianJiBianJi">
|
|
|
+ <el-table-column label="编码" prop="chargeCode"></el-table-column>
|
|
|
+ <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
|
|
|
+ <el-table-column label="数量" prop="quantity"></el-table-column>
|
|
|
+ <el-table-column label="金额" prop="je"></el-table-column>
|
|
|
+ <el-table-column label="规格" prop="specification"></el-table-column>
|
|
|
+ <el-table-column label="单价" prop="retprice"></el-table-column>
|
|
|
+ <el-table-column label="药房" prop="groupName"></el-table-column>
|
|
|
+ <el-table-column label="说明" prop="instruction"></el-table-column>
|
|
|
+ <el-table-column label="包装大小" prop="serial">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.serial === '01'">小包装</span>
|
|
|
+ <span v-else-if="scope.row.serial === '99'">大包装</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-main>
|
|
|
+ </el-container>
|
|
|
+ <!--搜索草药弹框-->
|
|
|
+ <el-dialog v-model="caoYaoXinXi.dialog" title="搜索草药">
|
|
|
+ <el-input ref="queryName" v-model="caoYaoXinXi.queryName" clearable
|
|
|
+ style="width: 120px;" @keyup.enter="dianJiChaXunCaoYao(0)"></el-input>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <el-button icon="el-icon-search" type="primary" @click="dianJiChaXunCaoYao(0)">查询</el-button>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <el-tag>双击数据选中</el-tag>
|
|
|
+ <el-divider></el-divider>
|
|
|
+ <el-table :data="caoYaoXinXi.data" :height="windowSize.h / 2.1" highlight-current-row stripe
|
|
|
+ @row-dblclick="dianJiXuanZhongCaoYao">
|
|
|
+ <el-table-column label="编码" prop="chargeCode"></el-table-column>
|
|
|
+ <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
|
|
|
+ <el-table-column label="单价" prop="retprice"></el-table-column>
|
|
|
+ <el-table-column label="规格" prop="specification"></el-table-column>
|
|
|
+ <el-table-column label="药房" prop="groupName"></el-table-column>
|
|
|
+ <el-table-column label="包装大小" prop="serial">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.serial === '01'">小包装</span>
|
|
|
+ <span v-else-if="scope.row.serial === '99'">大包装</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ :current-page="caoYaoXinXi.currentPage"
|
|
|
+ :page-size="caoYaoXinXi.pageSize"
|
|
|
+ :total="caoYaoXinXi.total"
|
|
|
+ layout="total, prev, pager, next"
|
|
|
+ @current-change="caoYaoFanYe">
|
|
|
+ </el-pagination>
|
|
|
+ </el-dialog>
|
|
|
+ <!--取模板弹框-->
|
|
|
+ <el-dialog v-model="quMuBan.dialog" title="取模板" width="60%">
|
|
|
+ <el-container>
|
|
|
+ <el-aside style="width: 180px;">
|
|
|
+ <el-input v-model="quMuBan.queryName" placeholder="模板名称" style="width: 120px;"></el-input>
|
|
|
+ <el-button @click="dianJiaChaXunMuBan(0)">查询</el-button>
|
|
|
+ <el-table :data="quMuBan.muBan" :height="windowSize.h / 2.1" @row-click="dianJiChaKanMuBanXiangQing">
|
|
|
+ <el-table-column label="名称" prop="patternName"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-aside>
|
|
|
+ <el-main>
|
|
|
+ <el-button :disabled="quMuBan.xuanZhongShuJu.length ===0" @click="dianJiXuanZhongMuBanShuJu">确定</el-button>
|
|
|
+ <el-table :data="quMuBan.muBanXiangQing" :height="windowSize.h / 2.1"
|
|
|
+ @selection-change="huoQuMuBanXuanZhongShuJu">
|
|
|
+ <el-table-column type="selection"></el-table-column>
|
|
|
+ <el-table-column label="编码" prop="chargeCode"></el-table-column>
|
|
|
+ <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
|
|
|
+ <el-table-column label="规格" prop="specification"></el-table-column>
|
|
|
+ <el-table-column label="数量" prop="quantity"></el-table-column>
|
|
|
+ <el-table-column label="单价" prop="retprice"></el-table-column>
|
|
|
+ <el-table-column label="药房" prop="groupNo"></el-table-column>
|
|
|
+ <el-table-column label="包装大小" prop="serial">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.serial === '01'">小包装</span>
|
|
|
+ <span v-else-if="scope.row.serial === '99'">大包装</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-main>
|
|
|
+ </el-container>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 下面是新增模板 -->
|
|
|
+ <el-dialog v-model="cunMuBan.dialog" center title="存模板">
|
|
|
+ 模板名称:
|
|
|
+ <el-input v-model="cunMuBan.patternName" clearable maxlength="30" show-word-limit
|
|
|
+ @keyup.enter="dianJiCunMuBan"></el-input>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import router from '@/router'
|
|
|
+import {computed, onMounted, ref, watch} from "vue";
|
|
|
+import {huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
|
|
|
+import {
|
|
|
+ chongFuMuBanMing,
|
|
|
+ cunMuBanApi,
|
|
|
+ fuYongFangFa,
|
|
|
+ huoQuCaoYao,
|
|
|
+ huoQuMuBan,
|
|
|
+ muBanXiangQing
|
|
|
+} from "@/api/zhu-yuan-yi-sheng/cao-yao-yi-zhu";
|
|
|
+import store from "@/store";
|
|
|
+import {ElMessage} from "element-plus";
|
|
|
+import {stringIsBlank} from "@/utils/blank-utils";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "XinZhenCaoYao",
|
|
|
+
|
|
|
+ setup() {
|
|
|
+ const windowSize = computed(() => {
|
|
|
+ return store.state.app.windowSize
|
|
|
+ })
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处方信息
|
|
|
+ */
|
|
|
+ const chuFang = ref({
|
|
|
+ orderName: '',
|
|
|
+ quantity: 0,
|
|
|
+ quantityDj: 0,
|
|
|
+ cyMtjs: 0,
|
|
|
+ cyJsl: 0,
|
|
|
+ cyZql: 0,
|
|
|
+ cyFj: 0,
|
|
|
+ cyFfcs: 0,
|
|
|
+ cyJssm: '',
|
|
|
+ groupNo: '81',
|
|
|
+ })
|
|
|
+ /**
|
|
|
+ * 编辑草药
|
|
|
+ * @type {Ref<UnwrapRef<{chargeCodeName: string, quantity: number, retprice: number, instruction: string, je: string, chargeCode: string}>>}
|
|
|
+ */
|
|
|
+ const caoYao = ref({
|
|
|
+ chargeCode: '',
|
|
|
+ chargeCodeName: '',
|
|
|
+ quantity: 0,
|
|
|
+ retprice: 0,
|
|
|
+ instruction: '',
|
|
|
+ je: ''
|
|
|
+ })
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 具体的草药明细
|
|
|
+ * @type {Ref<UnwrapRef<{weiYi: *[], list: *[]}>>}
|
|
|
+ */
|
|
|
+ const mingXi = ref({
|
|
|
+ weiYi: [],
|
|
|
+ list: [],
|
|
|
+ })
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询的草药信息
|
|
|
+ */
|
|
|
+ const caoYaoXinXi = ref({
|
|
|
+ queryName: '',
|
|
|
+ dialog: false,
|
|
|
+ data: [],
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 20,
|
|
|
+ total: 0
|
|
|
+ })
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询草药信息中的 搜索框
|
|
|
+ * @type {null}
|
|
|
+ */
|
|
|
+ const queryName = ref(null)
|
|
|
+ /**
|
|
|
+ * 草药服用方法数据
|
|
|
+ * @type {Ref<UnwrapRef<*[]>>}
|
|
|
+ */
|
|
|
+ const fuYongFangFaShuJu = ref([])
|
|
|
+
|
|
|
+
|
|
|
+ const dianJiCaoYaoBianMa = () => {
|
|
|
+ caoYaoXinXi.value.dialog = true
|
|
|
+ setTimeout(() => {
|
|
|
+ queryName.value.focus()
|
|
|
+ }, 100)
|
|
|
+ }
|
|
|
+
|
|
|
+ const dianJiChaXunCaoYao = (val) => {
|
|
|
+ huoQuCaoYao(caoYaoXinXi.value.queryName, chuFang.value.groupNo, caoYaoXinXi.value.currentPage, caoYaoXinXi.value.pageSize, caoYaoXinXi.value.total).then((res) => {
|
|
|
+ if (val === 0) {
|
|
|
+ caoYaoXinXi.value.total = res.total
|
|
|
+ }
|
|
|
+ caoYaoXinXi.value.data = res.records
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const caoYaoFanYe = (val) => {
|
|
|
+ caoYaoXinXi.value.currentPage = val
|
|
|
+ dianJiChaXunCaoYao(caoYaoXinXi.value.total)
|
|
|
+ }
|
|
|
+
|
|
|
+ const dianJiXuanZhongCaoYao = (row) => {
|
|
|
+ let key = row.chargeCode + row.serial
|
|
|
+ if (mingXi.value.weiYi.indexOf(key) > -1) {
|
|
|
+ return ElMessage.error('请勿重复添加。')
|
|
|
+ } else {
|
|
|
+ ElMessage.success('添加成功。')
|
|
|
+ row.quantity = 1
|
|
|
+ row.je = row.retprice
|
|
|
+ mingXi.value.list.push(row)
|
|
|
+ mingXi.value.weiYi.push(key)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const dianJiBianJi = (row) => {
|
|
|
+ caoYao.value = row
|
|
|
+ }
|
|
|
+
|
|
|
+ watch(() => caoYao.value.quantity, () => {
|
|
|
+ caoYao.value.je = (caoYao.value.quantity * caoYao.value.retprice).toFixed(2)
|
|
|
+ })
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下面是取模板的
|
|
|
+ */
|
|
|
+ const quMuBan = ref({
|
|
|
+ dialog: false,
|
|
|
+ muBan: [],
|
|
|
+ queryName: '',
|
|
|
+ muBanXiangQing: [],
|
|
|
+ xuanZhongShuJu: [],
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 30,
|
|
|
+ total: 0
|
|
|
+ })
|
|
|
+ const dianJiaChaXunMuBan = (val) => {
|
|
|
+ huoQuMuBan(quMuBan.value.queryName, store.state.user.info.deptCode, quMuBan.value.currentPage, quMuBan.value.pageSize, quMuBan.value.total).then((res) => {
|
|
|
+ quMuBan.value.muBan = res.records
|
|
|
+ if (val === 0) {
|
|
|
+ quMuBan.value.total = res.total
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const dianJiChaKanMuBanXiangQing = ({patternName, deptCode}) => {
|
|
|
+ muBanXiangQing(patternName, deptCode).then((res) => {
|
|
|
+ quMuBan.value.muBanXiangQing = res
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const huoQuMuBanXuanZhongShuJu = (val) => {
|
|
|
+ quMuBan.value.xuanZhongShuJu = val
|
|
|
+ }
|
|
|
+
|
|
|
+ const dianJiXuanZhongMuBanShuJu = () => {
|
|
|
+ let flag = false;
|
|
|
+ for (let item of quMuBan.value.xuanZhongShuJu) {
|
|
|
+ if (item.groupNo !== chuFang.value.groupNo) {
|
|
|
+ ElMessage.error("模板药房和当前药房不相同")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ quMuBan.value.xuanZhongShuJu.forEach(item => {
|
|
|
+ let key = item.chargeCode + item.serial
|
|
|
+ if (mingXi.value.weiYi.indexOf(key) > -1) {
|
|
|
+ flag = true
|
|
|
+ } else {
|
|
|
+ item.je = (item.quantity * item.retprice).toFixed(2)
|
|
|
+ item.groupName = item.groupNo === '81' ? '门诊中药房' : '颗粒剂药房'
|
|
|
+ mingXi.value.list.push(item)
|
|
|
+ mingXi.value.weiYi.push(key)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if (flag) {
|
|
|
+ ElMessage.error('请勿重复添加。')
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下面是存模板
|
|
|
+ */
|
|
|
+ const cunMuBan = ref({
|
|
|
+ patternName: '',
|
|
|
+ dialog: false,
|
|
|
+ chongFuBiaoZhi: false,
|
|
|
+ })
|
|
|
+ const dianJiCunMuBan = () => {
|
|
|
+ let val = cunMuBan.value.patternName
|
|
|
+ if (stringIsBlank(val)) return
|
|
|
+ chongFuMuBanMing(val).then((res) => {
|
|
|
+ if (res) {
|
|
|
+ return ElMessage.error("模板名重复。");
|
|
|
+ } else {
|
|
|
+ let data = {
|
|
|
+ patternName: val,
|
|
|
+ deptCode: store.state.user.info.deptCode,
|
|
|
+ list: mingXi.value.list
|
|
|
+ }
|
|
|
+ cunMuBanApi(data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ fuYongFangFa().then(res => {
|
|
|
+ fuYongFangFaShuJu.value = res
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ return {
|
|
|
+ router,
|
|
|
+ chuFang,
|
|
|
+ huanZheXinXi,
|
|
|
+ jiaShuiLeiXing: [
|
|
|
+ {code: "加凉水", name: "加凉水"},
|
|
|
+ {code: "加温水", name: "加温水"},
|
|
|
+ {code: "加开水", name: "加开水"},
|
|
|
+ {code: "加冰水", name: "加冰水"},
|
|
|
+ {code: "加外糖水", name: "加外糖水"},
|
|
|
+ {code: "外敷", name: "外敷"},
|
|
|
+ ],
|
|
|
+ fuYongFangFaShuJu,
|
|
|
+ mingXi,
|
|
|
+ caoYaoXinXi,
|
|
|
+ dianJiChaXunCaoYao,
|
|
|
+ windowSize,
|
|
|
+ dianJiXuanZhongCaoYao,
|
|
|
+ caoYaoFanYe,
|
|
|
+ dianJiBianJi,
|
|
|
+ caoYao,
|
|
|
+ dianJiCaoYaoBianMa,
|
|
|
+ queryName,
|
|
|
+ quMuBan,
|
|
|
+ dianJiaChaXunMuBan,
|
|
|
+ dianJiChaKanMuBanXiangQing,
|
|
|
+ dianJiCunMuBan,
|
|
|
+ cunMuBan,
|
|
|
+ dianJiXuanZhongMuBanShuJu,
|
|
|
+ huoQuMuBanXuanZhongShuJu,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+</style>
|