|
@@ -0,0 +1,193 @@
|
|
|
+<script setup lang="ts">
|
|
|
+import {
|
|
|
+ type DiagnoseTemplate,
|
|
|
+ type DiagnoseReqTemplate,
|
|
|
+ getTemplateContentById,
|
|
|
+ saveTemplateContent,
|
|
|
+} from "@/api/dictionary/diagnoseToJyJcReq";
|
|
|
+import {
|
|
|
+ biaoBenApi,
|
|
|
+ diagnosisInOurHospital,
|
|
|
+} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
|
|
|
+import CyComboGrid from "@/components/cy/combo-grid/src/CyComboGrid.vue";
|
|
|
+import { UseDialogType } from "@/components/cy/CyDialog/index";
|
|
|
+import { isDev } from "@/utils/public";
|
|
|
+import JyJcTree from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/jy-jc-tree/JyJcTree.vue";
|
|
|
+import CyTabPane from "@/components/cy/tabs/src/CyTabPane.vue";
|
|
|
+import CyTabs from "@/components/cy/tabs/src/CyTabs";
|
|
|
+import XEUtils from "xe-utils";
|
|
|
+import { stringIsBlank } from "@/utils/blank-utils";
|
|
|
+import SystemDeptSelect from "@/components/system/dept-select/SystemDeptSelect.vue";
|
|
|
+import JcPartSelect from "@/components/system/JcPartSelect.vue";
|
|
|
+import JySampleSelect from "@/components/system/jy-sample/JySampleSelect.vue";
|
|
|
+
|
|
|
+const props = defineProps<{
|
|
|
+ id: string;
|
|
|
+ treeData: {
|
|
|
+ jy: any[];
|
|
|
+ jc: any[];
|
|
|
+ };
|
|
|
+}>();
|
|
|
+
|
|
|
+const store = reactive({
|
|
|
+ code: "",
|
|
|
+ name: "",
|
|
|
+ tabsValue: isDev ? "yjyc" : "诊断",
|
|
|
+
|
|
|
+ yjyc: "jc",
|
|
|
+
|
|
|
+ diagnoseList: [] as DiagnoseTemplate[],
|
|
|
+ reqTemplates: [] as DiagnoseReqTemplate[],
|
|
|
+});
|
|
|
+
|
|
|
+const buWeiShuJu = ref({});
|
|
|
+
|
|
|
+function handleTreeClick(val, type) {
|
|
|
+ console.log(val, type);
|
|
|
+
|
|
|
+ const tmp = {
|
|
|
+ orderCode: val.id,
|
|
|
+ orderName: val.name,
|
|
|
+ reqType: type,
|
|
|
+ execDept: val.execUnit,
|
|
|
+ execName: val.execUnitName,
|
|
|
+ };
|
|
|
+
|
|
|
+ if (type == 2) {
|
|
|
+ tmp.partOrSample = val.inspectStuff;
|
|
|
+ tmp.partOrSampleName = val.inspectStuffName;
|
|
|
+ } else {
|
|
|
+ tmp.partOrSample = val.partCode;
|
|
|
+ tmp.partOrSampleName = val.partName;
|
|
|
+ tmp.classes = val.classes;
|
|
|
+ }
|
|
|
+
|
|
|
+ // @ts-ignore
|
|
|
+ store.reqTemplates.push(tmp);
|
|
|
+ console.log(store.reqTemplates);
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getTemplateContentById(props.id).then(res => {
|
|
|
+ store.diagnoseList = res.diagnoseList;
|
|
|
+ store.reqTemplates = res.reqTemplates;
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+defineExpose<UseDialogType.Expose>({
|
|
|
+ confirm() {
|
|
|
+ return saveTemplateContent({
|
|
|
+ id: props.id,
|
|
|
+ diagnoseList: store.diagnoseList,
|
|
|
+ reqTemplates: store.reqTemplates,
|
|
|
+ });
|
|
|
+ },
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <el-tabs v-model="store.tabsValue" class="el-tabs__fill">
|
|
|
+ <el-tab-pane label="诊断" name="诊断">
|
|
|
+ <div class="layout_container">
|
|
|
+ <header>
|
|
|
+ 临床诊断:
|
|
|
+ <CyComboGrid
|
|
|
+ v-model="store"
|
|
|
+ value="code"
|
|
|
+ @rowClick="
|
|
|
+ ({ row }) => {
|
|
|
+ store.diagnoseList.push({
|
|
|
+ diagnoseCode: row.code,
|
|
|
+ diagnoseName: row.name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ "
|
|
|
+ label="name"
|
|
|
+ :remote-method="diagnosisInOurHospital"
|
|
|
+ />
|
|
|
+ </header>
|
|
|
+ <el-table :data="store.diagnoseList" style="flex: 1">
|
|
|
+ <el-table-column label="编码" prop="diagnoseCode" />
|
|
|
+ <el-table-column label="名称" prop="diagnoseName" />
|
|
|
+ <el-table-column>
|
|
|
+ <template #default="{ row, $index }">
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ @click="
|
|
|
+ () => {
|
|
|
+ store.diagnoseList.splice($index, 1);
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="检验、检查" name="yjyc">
|
|
|
+ <div class="layout_container layout-horizontal">
|
|
|
+ <aside style="width: 220px">
|
|
|
+ <cy-tabs v-model="store.yjyc" tabPosition="left">
|
|
|
+ <cy-tab-pane label="检查" name="jc">
|
|
|
+ <JyJcTree
|
|
|
+ :treeData="props.treeData"
|
|
|
+ yjyc="jc"
|
|
|
+ @node-click="val => handleTreeClick(val, 3)"
|
|
|
+ />
|
|
|
+ </cy-tab-pane>
|
|
|
+ <cy-tab-pane label="检验" name="jy">
|
|
|
+ <JyJcTree
|
|
|
+ :treeData="props.treeData"
|
|
|
+ yjyc="jy"
|
|
|
+ @node-click="val => handleTreeClick(val, 2)"
|
|
|
+ />
|
|
|
+ </cy-tab-pane>
|
|
|
+ </cy-tabs>
|
|
|
+ </aside>
|
|
|
+ <div class="layout_main">
|
|
|
+ <div style="height: 20px">检验的标本需要搜索</div>
|
|
|
+ <el-table :data="store.reqTemplates" height="calc(100% - 20px)">
|
|
|
+ <el-table-column prop="orderCode" label="编码" />
|
|
|
+ <el-table-column prop="orderName" label="名称" />
|
|
|
+ <el-table-column label="执行科室">
|
|
|
+ <template #default="scope">
|
|
|
+ <SystemDeptSelect
|
|
|
+ v-model="scope.row"
|
|
|
+ value="execDept"
|
|
|
+ label="execName"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="部位/标本" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <JcPartSelect
|
|
|
+ v-if="scope.row.reqType === 3"
|
|
|
+ v-model="scope.row"
|
|
|
+ value="partOrSample"
|
|
|
+ label="partOrSampleName"
|
|
|
+ style="width: 100%"
|
|
|
+ :code-type="scope.row.classes"
|
|
|
+ />
|
|
|
+ <JySampleSelect
|
|
|
+ v-else
|
|
|
+ v-model="scope.row"
|
|
|
+ value="partOrSample"
|
|
|
+ label="partOrSampleName"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="类型">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.reqType == "2" ? "检验" : "检查" }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss"></style>
|