Browse Source

pacsTemplate

master
pengjun 1 year ago
parent
commit
66ae39b68b
  1. 20
      src/components/doctorCheck/CheckItemList.vue
  2. 228
      src/components/doctorCheck/PacsTemplate.vue
  3. 1
      src/store/index.js

20
src/components/doctorCheck/CheckItemList.vue

@ -11,9 +11,12 @@
:fetch-suggestions="querySearch" :data-lineModeFlag="scope.row.lineModeFlag"
@input="madeTooltips(scope.$index); computeFun(scope.$index)" v-bind:class="scope.row.class">
</el-autocomplete>
<el-button type="danger" style="min-width:23px;padding:2px;" icon="el-icon-caret-bottom"
<el-button style="min-width:23px;padding: 2px;" icon="el-icon-caret-bottom"
@click="btnMoreResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
size="small"></el-button>
<el-button style="min-width:23px;padding:2px;margin-left: 2px;"
@click="btnPacsResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
size="small">P</el-button>
</div>
</template>
</el-table-column>
@ -79,6 +82,11 @@
<el-button @click="dialogWinMoreResult = false"> </el-button>
</span>
</el-dialog>
<!--Pacs结果录入模版-->
<el-dialog title="Pacs结果录入模版" :visible.sync="dialogWin.PacsTemplate" width="800px" :close-on-click-modal="false">
<PacsTemplate />
</el-dialog>
</div>
</div>
</template>
@ -87,9 +95,12 @@
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj, dddw, deepCopy } from '../../utlis/proFunc'
import PacsTemplate from "./PacsTemplate.vue";
export default {
components: {},
components: {
PacsTemplate
},
props: ["isCheckPicture", "registerCheckId", "doctor_check_check_charge"],
data() {
return {
@ -398,6 +409,11 @@ export default {
},
// pacs
btnPacsResult(row, index){
this.dialogWin.PacsTemplate = true
},
//
dblclickResult(item) {
this.moreResult.result = ''

228
src/components/doctorCheck/PacsTemplate.vue

@ -0,0 +1,228 @@
<template>
<div style="display: flex;">
<div style="width: 258px;height:520px;border: 1px solid #EEE;">
<div style="margin:2px 2px 2px 2px;">
<el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" />
</div>
<div>
<el-tree style="overflow: scroll;width: 200px;height:480px;" :data="pacsTemplateTree" :props="treeprops"
@node-click="handleNode" :filter-node-method="filterNode" ref="ref_tree">
<span class="custom-tree-node" slot-scope="{ node, data }">
<div>
<span class="treeicons">
<img style="width:20px;height:20px;vertical-align: sub;" src="@/assets/images/order.png"
v-if="!data.parentId" />
</span>
<span :class="!data.parentId ? 'maxtitle' : 'mintitle'">{{ node.label }}
</span>
</div>
</span>
</el-tree>
</div>
</div>
<div :style="`display: block;width:580px; margin-left: 5px;`">
<el-table :data="description" border height="470" highlight-current-row @row-dblclick="rowClick" size="small">
<el-table-column prop="description" label="描述" min-width="450" />
<el-table-column prop="conclusion" label="结论" min-width="130">
<template slot-scope="scope">
<el-autocomplete style="width: 100%;" type="textarea" v-model="scope.row.result" placeholder="请输入结论"
:autosize="{ minRows: 1, maxRows: 1 }" :trigger-on-focus="false" :fetch-suggestions="querySearch">
</el-autocomplete>
</template>
</el-table-column>
</el-table>
<div style="display: flex;margin-top: 8px;margin-left: 15px;">
<div></div>
<div style="margin-left: 150px;margin-top: 5px;">
<el-button type="primary" @click="btnOk" class="commonbutton">确定</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj, deepCopy, reMadeOrgTree } from "../../utlis/proFunc";
import { getTreePids, getTreeAllChildIdsById, madeTree } from "../../utlis/tree";
export default {
components: {},
props: ["useCustomerOrg", "initDateType", "isUnit"],
data() {
return {
filterText: '',
preNodeId: '', //
curNodeId: '', //
dateType: 'medicalStartDate',
useCusOrg: false, //使
isUnitOption: false,//
//
dataCusOrgOCX: [{
id: '', //ID
customerOrgId: '', //
customerOrgName: '', //
customerOrgRegister: {}, //
customerOrgRegisterList: [], //
dateType: 'medicalStartDate', // creationTimemedicalStartDatesummaryDate
startDate: '',
endDate: '',
customerOrgGroupIds: [], //
customerOrgGroupList: [], //
}],
description: [], //
conclusion: [], //
pacsTemplateTree: [], // +
treeprops: {
label: "displayName", // label/displayName
value: "id",
id: "id",
children: "children",
}, //
curDescription: {} //
};
},
//<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
computed: {
...mapState(["dict", "customerOrg", "patientRegister", "report", "diagnosis", "project"]),
},
//
created() {
this.dataCusOrgOCX = [];
if (this.useCustomerOrg) {
this.useCusOrg = true
}
if (this.initDateType) {
this.dateType = this.initDateType
}
if (this.isUnit) {
this.isUnitOption = true
}
this.changeUseOrg(this.useCusOrg)
},
//
mounted() {
//
this.getPacsTemplateTree();
},
methods: {
//
filterNode(value, data) {
//console.log(value,data)
if (!value) return true;
return data['displayName'].indexOf(value) > -1;
},
//
getPacsTemplateTree() {
let resultType = [], resultTemplate = [], treeData = []
postapi('/api/app/BigtextResultType/GetList')
.then(res => {
if (res.code > -1) {
resultType = res.data
return postapi('/api/app/BigtextResultTemplate/GetList', {})
}
})
.then(res => {
if (res && res.code > -1) {
res.data.forEach(e => {
resultTemplate.push(Object.assign({}, e, { parentId: e.bigtextResultTypeId }))
});
treeData = resultType.concat(resultTemplate)
// console.log('treeData',treeData,resultType,)
this.pacsTemplateTree = madeTree(treeData, "children", "parentId", "id", null)
}
})
},
//ID api/app/customer-org/parent/[CustomerOrgld
getCustomerOrgParentId(customerOrgld) {
if (customerOrgld == this.dict.personOrgId) {
this.patientRegister.query.CustomerOrgParentId = this.dict.personOrgId;
return;
}
getapi(`/api/app/customer-org/parent/${customerOrgld}`).then((res) => {
console.log("res.data", res.data);
if (res.code == 1) {
this.patientRegister.query.CustomerOrgParentId = res.data;
}
});
},
//
handleNode(data, node, prop) {
let ids = getTreeAllChildIdsById(this.pacsTemplateTree, "children", "id", data.id)
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
.then(res => {
if (res.code > -1) {
this.description = res.data.descriptionDetail
this.conclusion = res.data.conclusionDetail
this.description.forEach(e => {
let conclusion = this.conclusion.filter(c => {
return c.bigtextResultTemplateId = e.bigtextResultTemplateId
})
e["conclusion"] = ""
e["conclusionList"] = []
conclusion.forEach(c => {
e["conclusionList"].push({ value: c.conclusion })
});
if (conclusion.length == 1) e["conclusion"] = conclusion[0].conclusion
});
}
})
},
querySearch(queryString, cb) {
var restaurants = deepCopy(this.restaurants); // [{ value: '' },{ value: '' }]
restaurants.forEach((item) => {
return (item.value = item.result);
});
// console.log("restaurants", restaurants);
var results = queryString
? restaurants.filter(this.createFilter(queryString))
: restaurants;
// callback
cb(results);
},
//
rowClick(row) {
this.curDescription = row;
this.restaurants = row.conclusionList;
},
btnOk() {
this.dialogWin.PacsTemplate = false
},
},
watch: {
"filterText"(newVal, oldVal) {
if(newVal != oldVal) this.$refs['ref_tree'].filter(newVal);
}
},
};
</script>
<style lang="scss" scoped>
@import "../../assets/css/global_dialog.css";
@import "../../assets/css/global_table.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global.css";
@import "../../assets/css/global_tree.css";
:deep .el-tree-node>.el-tree-node__children {
overflow: visible;
}
</style>

1
src/store/index.js

@ -470,6 +470,7 @@ export default new Vuex.Store({
FollowCriticalCheck:false, // 危急值
CommonTableTypeEdit:false, //公共表类别
CommonTableEdit:false, //公共表
PacsTemplate:false, // pacs结果模版
}
},

Loading…
Cancel
Save