SetSheetUpload.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699
  1. <template>
  2. <el-container>
  3. <el-header style="margin-top: 10px">
  4. <el-button icon="el-icon-search" type="primary" @click="queryTermDialog = true">检索条件</el-button>
  5. <el-divider direction="vertical"></el-divider>
  6. <el-button v-if="shenHeQuanXian()" :disabled="queryTerm.list.length === 0" icon="el-icon-upload" type="success"
  7. @click="upldAllList"> 选中上传
  8. </el-button>
  9. <el-button v-if="shenHeQuanXian()" :disabled="queryTerm.list.length === 0" icon="el-icon-upload" type="warning"
  10. @click="upldSelections"> 全部上传
  11. </el-button>
  12. <el-button v-if="shenHeQuanXian()" :disabled="queryTerm.list.length === 0" icon="el-icon-download" type="success"
  13. @click="exportExcel">导出 Execl
  14. </el-button>
  15. <el-button icon="el-icon-refresh-left" type="primary" @click="shuaXin">刷新数据</el-button>
  16. <el-button v-if="shenHeQuanXian()" type="success" @click="xianZhiShiJianClick">设置限制时间</el-button>
  17. <xian-zhi-shi-jian ref="xianZhiShiJian"></xian-zhi-shi-jian>
  18. </el-header>
  19. <el-main>
  20. <el-table ref="tableRef" :data="queryTerm.list" :height="store.state.app.windowSize.h / 1.2" border
  21. highlight-current-row
  22. stripe @selection-change="handleSelectionChange">
  23. <el-table-column fixed type="selection" width="35"></el-table-column>
  24. <el-table-column fixed label="姓名" prop="psnName">
  25. <template #default="scope">
  26. <el-button type="text" @click="jieSuanDanXinXi(scope.row)">
  27. <span v-html="auditName(scope.row)"></span>
  28. </el-button>
  29. </template>
  30. </el-table-column>
  31. <el-table-column label="出院科室" prop="outDeptName">
  32. <template #default="scope">
  33. <el-button
  34. v-if="scope.row.outDept === dept || shenHeQuanXian"
  35. type="text"
  36. @click="huoQuXiuGaiYiShen(scope.row.referPhysician, scope.row.referPhysicianName, scope.row.patNo, scope.row.times)"
  37. >
  38. {{ scope.row.outDeptName }}
  39. </el-button>
  40. <span v-else>{{ scope.row.outDeptName }}</span>
  41. </template>
  42. </el-table-column>
  43. <el-table-column label="住院号/门诊号" prop="patNo"></el-table-column>
  44. <el-table-column label="性别" prop="gendName" width="40"></el-table-column>
  45. <el-table-column label="住院天数" prop="actIptDays"></el-table-column>
  46. <el-table-column label="医疗类别" prop="iptMedType">
  47. <template #default="scope">
  48. <el-button type="text" @click="clickToModifyMedicalCategory(scope.row)">{{
  49. getIptMedName(scope.row.iptMedType)
  50. }}
  51. </el-button>
  52. </template>
  53. </el-table-column>
  54. <el-table-column label="诊断编码" prop="disDiag"></el-table-column>
  55. <el-table-column label="诊断名称" prop="disDiagComment"></el-table-column>
  56. <el-table-column label="治疗方式" prop="operationName"></el-table-column>
  57. <el-table-column label="总费用" prop="medfeeSumamt"></el-table-column>
  58. <el-table-column label="报销金额" prop="fundPaySumamt"></el-table-column>
  59. <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
  60. <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
  61. <el-table-column label="结算时间" prop="setlTime"></el-table-column>
  62. <el-table-column label="医疗类别" prop="medTypeName"></el-table-column>
  63. <el-table-column label="清算机构" prop="clrOptinsName"></el-table-column>
  64. <el-table-column label="管床医生" prop="referPhysicianName"></el-table-column>
  65. <el-table-column label="转科室" prop="zhuanKeName"></el-table-column>
  66. <el-table-column label="申请备注" prop="reqRemark"></el-table-column>
  67. <el-table-column v-if="shenHeQuanXian()" label="结算单">
  68. <template #default="scope">
  69. <el-button @click="jieSuanDanClick(scope.row)">查看结算单</el-button>
  70. </template>
  71. </el-table-column>
  72. </el-table>
  73. <jie-suan-dan-da-ying v-if="daYingJieSuanDanRef.dialog" :data="daYingJieSuanDanRef"
  74. @close="daYingJieSuanDanRef.dialog = false"></jie-suan-dan-da-ying>
  75. <el-pagination
  76. :current-page="queryTerm.currentPage"
  77. :page-size="queryTerm.pageSize"
  78. :page-sizes="[10, 20, 30, 40, 50, 100]"
  79. :total="queryTerm.total"
  80. layout="total, sizes, prev, pager, next, jumper"
  81. @size-change="handleSizeChange"
  82. @current-change="handleCurrentChange"
  83. >
  84. </el-pagination>
  85. </el-main>
  86. <el-dialog v-model="queryTermDialog" title="数据筛选" width="60%">
  87. <el-form ref="queryTermRef" :model="queryTerm" label-width="120px" size="mini">
  88. <el-row>
  89. <el-col :span="24">
  90. <el-form-item label="日期范围" prop="dateRange">
  91. <el-date-picker
  92. v-model="queryTerm.dateRange"
  93. :shortcuts="clockinShortcuts"
  94. end-placeholder="结束日期"
  95. placeholder="选择日期"
  96. range-separator="至"
  97. size="mini"
  98. start-placeholder="开始日期"
  99. style="width: 280px"
  100. type="daterange"
  101. ></el-date-picker>
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="spanWidth">
  105. <el-form-item label="结算类型" prop="clrType">
  106. <el-select v-model="queryTerm.clrType" placeholder="结算类别" style="width: 100px">
  107. <el-option v-for="item in clrTypes" :key="item.code" :label="item.name" :value="item.code">
  108. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  109. <el-divider direction="vertical"></el-divider>
  110. <span>{{ item.name }}</span>
  111. </el-option>
  112. </el-select>
  113. </el-form-item>
  114. </el-col>
  115. <el-col :span="spanWidth">
  116. <el-form-item label="住院号" prop="patNo">
  117. <el-input v-model="queryTerm.patNo" clearable placeholder="住院号"
  118. style="width: 120px" @blur="patNo = $event.target.value.trim()" @keyup.enter="query"></el-input>
  119. </el-form-item>
  120. </el-col>
  121. <el-col :span="spanWidth">
  122. <el-form-item label="出院科室" prop="disDept">
  123. <el-select v-model="queryTerm.outDept" :collapse-tags="true" clearable filterable multiple
  124. placeholder="出院科室">
  125. <el-option v-for="item in disDepts" :key="item.code" :label="item.name" :value="item.code">
  126. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  127. <el-divider direction="vertical"></el-divider>
  128. <span>{{ item.name }}</span>
  129. </el-option>
  130. </el-select>
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="spanWidth">
  134. <el-form-item label="医疗类别" prop="medType">
  135. <el-select v-model="queryTerm.medType" :collapse-tags="true" clearable filterable multiple
  136. placeholder="医疗类别">
  137. <el-option v-for="item in medTypes" :key="item.code" :label="item.name" :value="item.code">
  138. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  139. <el-divider direction="vertical"></el-divider>
  140. <span>{{ item.name }}</span>
  141. </el-option>
  142. </el-select>
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="spanWidth">
  146. <el-form-item label="上传类型" prop="psnType">
  147. <el-select v-model="queryTerm.flag">
  148. <el-option v-for="item in flags" :key="item.code" :label="item.name" :value="item.code">
  149. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  150. <el-divider direction="vertical"></el-divider>
  151. <span>{{ item.name }}</span>
  152. </el-option>
  153. </el-select>
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="spanWidth">
  157. <el-form-item label="管床医生" prop="referPhysician">
  158. <el-select v-model="queryTerm.referPhysician" :remote-method="remoteMethod" clearable filterable
  159. placeholder="管床医生"
  160. remote reserve-keyword>
  161. <el-option v-for="item in referPhysicians" :key="item.code" :label="item.name" :value="item.code">
  162. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  163. <el-divider direction="vertical"></el-divider>
  164. <span>{{ item.name }}</span>
  165. </el-option>
  166. </el-select>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="spanWidth">
  170. <el-form-item label="险种类型" prop="insutype">
  171. <el-select v-model="queryTerm.insutype" :collapse-tags="true" clearable filterable multiple
  172. placeholder="险种类型">
  173. <el-option v-for="item in insutypes" :key="item.code" :label="item.name" :value="item.code">
  174. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  175. <el-divider direction="vertical"></el-divider>
  176. <span>{{ item.name }}</span>
  177. </el-option>
  178. </el-select>
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="spanWidth">
  182. <el-form-item label="人员类别" prop="psnType">
  183. <el-select v-model="queryTerm.psnType" :collapse-tags="true" clearable filterable multiple
  184. placeholder="人员类别">
  185. <el-option v-for="item in getPsnType" :key="item.code" :label="item.name" :value="item.code">
  186. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  187. <el-divider direction="vertical"></el-divider>
  188. <span>{{ item.name }}</span>
  189. </el-option>
  190. </el-select>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="spanWidth">
  194. <el-form-item label="结算机构" prop="clrOptins">
  195. <el-select v-model="queryTerm.clrOptins" :collapse-tags="true" clearable filterable multiple
  196. placeholder="结算机构">
  197. <el-option v-for="item in clrOptins" :key="item.code" :label="item.name" :value="item.code">
  198. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  199. <el-divider direction="vertical"></el-divider>
  200. <span>{{ item.name }}</span>
  201. </el-option>
  202. </el-select>
  203. </el-form-item>
  204. </el-col>
  205. <el-col :span="spanWidth">
  206. <el-form-item label="审核类型" prop="auditFlag">
  207. <el-select v-model="queryTerm.auditFlag">
  208. <el-option v-for="item in auditFlags" :key="item.code" :label="item.name" :value="item.code">
  209. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  210. <el-divider direction="vertical"></el-divider>
  211. <span>{{ item.name }}</span>
  212. </el-option>
  213. </el-select>
  214. </el-form-item>
  215. </el-col>
  216. <el-col :span="spanWidth">
  217. <el-form-item label="申报类型" prop="auditFlag">
  218. <el-select v-model="queryTerm.decTypes" :collapse-tags="true" clearable filterable multiple>
  219. <el-option v-for="item in decTypes" :key="item.code" :label="item.name" :value="item.code">
  220. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  221. <el-divider direction="vertical"></el-divider>
  222. <span>{{ item.name }}</span>
  223. </el-option>
  224. </el-select>
  225. </el-form-item>
  226. </el-col>
  227. <el-col :span="spanWidth">
  228. <el-form-item label="支付类型" prop="hiPaymtd">
  229. <el-select v-model="queryTerm.hiPaymtd" :collapse-tags="true" clearable>
  230. <el-option v-for="item in hiPaymtdData" :key="item.code" :label="item.name" :value="item.code">
  231. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  232. <el-divider direction="vertical"></el-divider>
  233. <span>{{ item.name }}</span>
  234. </el-option>
  235. </el-select>
  236. </el-form-item>
  237. </el-col>
  238. </el-row>
  239. </el-form>
  240. <el-button icon="el-icon-search" size="small" type="primary" @click="query">查询</el-button>
  241. <el-button icon="el-icon-search" size="small" type="primary" @click="zhongKongTiaoJian">总控数据条件</el-button>
  242. <el-button icon="el-icon-refresh-right" size="small" type="warning" @click="chongZhi">重置</el-button>
  243. <el-divider direction="vertical"></el-divider>
  244. </el-dialog>
  245. <el-dialog v-model="xiuGaiYiShen" title="修改管床医生">
  246. <el-select v-model="guanChuangYiShen.yiShenCode" :remote-method="remoteMethod" clearable filterable remote
  247. reserve-keyword>
  248. <el-option v-for="item in referPhysicians" :key="item.code" :label="item.name" :value="item.code">
  249. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  250. <el-divider direction="vertical"></el-divider>
  251. <span>{{ item.name }}</span>
  252. </el-option>
  253. </el-select>
  254. <el-divider direction="vertical"></el-divider>
  255. <el-button @click="xiuGaiGuanChuangYiShenClick">修改</el-button>
  256. </el-dialog>
  257. <jie-suan-dan-xiang-qing v-if="jieSuanDanDataDialog" :data="jieSuanDanData" @close="jieSuanDanDataDialog = false"
  258. @shuaXin="shuaXin"></jie-suan-dan-xiang-qing>
  259. <Progress/>
  260. <el-dialog v-model="medType.dialog" title="修改住院医疗类别">
  261. <el-radio-group v-model="medType.iptMedType">
  262. <el-radio :label="1">住院</el-radio>
  263. <el-radio :label="2">日间手术</el-radio>
  264. </el-radio-group>
  265. <el-divider direction="vertical"></el-divider>
  266. <el-button @click="clickToSaveMedicalCategory">保存</el-button>
  267. </el-dialog>
  268. </el-container>
  269. </template>
  270. <script>
  271. import {clockinShortcuts} from '@/data/shortcuts'
  272. import {onMounted, ref, unref, watch} from 'vue'
  273. import store from '../../../store'
  274. import {getClrTypes, getInsutypes} from '@/api/medical-insurance/si-dict'
  275. import {getDateRangeFormatDate} from '@/utils/date'
  276. import {
  277. getMedType,
  278. huoQuJieSuanRenYuan,
  279. jieSuanDanKeXiuGaiXinXi,
  280. modifyMedicalCategory,
  281. upldSetlList,
  282. upldSetlListTimes,
  283. xiuGaiGuanChuangYiShen
  284. } from '@/api/medical-insurance/si-setl-upload'
  285. import {clrOptinsData, decTypes, getPsnType} from '../../../data'
  286. import {getDept} from '@/api/yibao/xiang-mu-lu-ru'
  287. import JieSuanDanXiangQing from '../../../components/si-sheet-upload/jie-suan-dan-xiu-gai/JieSuanDanXiangQing.vue'
  288. import {ElMessage, ElMessageBox} from 'element-plus'
  289. import Progress from '../../../components/progress/Index.vue'
  290. import {downloadExcel} from '@/utils/excel'
  291. import {getRenYuan} from '@/api/public-api'
  292. import {
  293. auditFlags,
  294. auditName,
  295. huoQuZhongKongChaXunTiaoJian,
  296. shenHeQuanXian
  297. } from '@/components/si-sheet-upload/jieSuanDanXiuGai'
  298. import XianZhiShiJian from '../../../components/si-sheet-upload/XianZhiShiJian.vue'
  299. import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils'
  300. import JieSuanDanDaYing from '../../../components/si-sheet-upload/jieSuanDanDaYing.vue'
  301. export default {
  302. name: 'SetSheetUpload',
  303. components: {JieSuanDanDaYing, XianZhiShiJian, JieSuanDanXiangQing, Progress},
  304. setup: function () {
  305. const queryTerm = ref({
  306. startTime: '',
  307. endTime: '',
  308. patNo: '', // 0406567
  309. referPhysician: shenHeQuanXian() ? '' : store.state.user.info.code,
  310. insutype: [],
  311. dateRange: [clockinShortcuts[0].value[0], clockinShortcuts[0].value[1]],
  312. outDept: [],
  313. clrType: '21',
  314. medType: [],
  315. clrOptins: [],
  316. decTypes: [],
  317. flag: 0,
  318. hiPaymtd: 0,
  319. auditFlag: 4,
  320. psnType: [],
  321. currentPage: 1,
  322. pageSize: 40,
  323. total: 0,
  324. list: [],
  325. })
  326. const dept = store.state.user.info.deptCode
  327. // 表单
  328. const queryTermRef = ref(null)
  329. // 表格的宽度
  330. const spanWidth = ref(8)
  331. // 查询的 对话框
  332. const queryTermDialog = ref(true)
  333. // 结算单信息
  334. const jieSuanDanData = ref({})
  335. // 险种类型
  336. const insutypes = ref([])
  337. // 出院科室
  338. const disDepts = ref([])
  339. // 结算类别
  340. const clrTypes = ref([])
  341. // 医疗类别
  342. const medTypes = ref([])
  343. // 结算机构
  344. const clrOptins = ref([])
  345. // 管床医生
  346. const referPhysicians = ref([])
  347. const selections = ref([])
  348. // 表格 ref
  349. const tableRef = ref(null)
  350. const jieSuanDanDataDialog = ref(false)
  351. const handleSelectionChange = (val) => {
  352. selections.value = val
  353. }
  354. const query = async () => {
  355. let form = unref(queryTermRef)
  356. if (!form) return
  357. try {
  358. await form.validate()
  359. let dates = getDateRangeFormatDate(queryTerm.value.dateRange)
  360. queryTerm.value.startTime = dates.startTime
  361. queryTerm.value.endTime = dates.endTime
  362. queryTerm.value.total = 0
  363. queryTerm.value.currentPage = 1
  364. huoQuJieSuanRenYuan(queryTerm.value).then((res) => {
  365. queryTerm.value.list = res === null ? [] : res.records
  366. queryTerm.value.total = res.total
  367. queryTermDialog.value = false
  368. })
  369. } catch (error) {
  370. }
  371. }
  372. const queryCurrentPage = async () => {
  373. let form = unref(queryTermRef)
  374. if (!form) return
  375. try {
  376. await form.validate()
  377. let dates = getDateRangeFormatDate(queryTerm.value.dateRange)
  378. queryTerm.value.startTime = dates.startTime
  379. queryTerm.value.endTime = dates.endTime
  380. huoQuJieSuanRenYuan(queryTerm.value).then((res) => {
  381. queryTerm.value.list = res.records
  382. })
  383. } catch (error) {
  384. }
  385. }
  386. watch(
  387. () => store.state.app.windowSize.w,
  388. () => {
  389. const w = store.state.app.windowSize.w
  390. if (w >= 1500) {
  391. spanWidth.value = 8
  392. } else if (w >= 1300) {
  393. spanWidth.value = 12
  394. } else {
  395. spanWidth.value = 24
  396. }
  397. }
  398. )
  399. const upldAllList = () => {
  400. if (queryTerm.value.clrType !== '21') {
  401. ElMessage({
  402. message: '结算类别请选择为【住院】!',
  403. type: 'warning',
  404. showClose: true,
  405. })
  406. return
  407. }
  408. upldSetlList(selections.value)
  409. }
  410. const upldSelections = () => {
  411. if (queryTerm.value.clrType !== '21') {
  412. ElMessage({
  413. message: '结算类别请选择为【住院】!',
  414. type: 'warning',
  415. showClose: true,
  416. })
  417. return
  418. }
  419. if (queryTerm.value.list.length === 0) {
  420. ElMessage({
  421. message: '请先查询出数据',
  422. type: 'warning',
  423. showClose: true,
  424. })
  425. return
  426. }
  427. upldSetlListTimes(queryTerm.value)
  428. }
  429. const handleSizeChange = (val) => {
  430. queryTerm.value.pageSize = val
  431. query()
  432. }
  433. const handleCurrentChange = (val) => {
  434. queryTerm.value.currentPage = val
  435. queryCurrentPage()
  436. tableRef.value.$refs.bodyWrapper.scrollTop = 0
  437. }
  438. const chongZhi = () => {
  439. unref(queryTermRef).resetFields()
  440. }
  441. const jieSuanDanXinXi = (val) => {
  442. if (queryTerm.value.clrType !== '21') {
  443. ElMessage({
  444. message: '结算类别请选择为【住院】!',
  445. type: 'warning',
  446. showClose: true,
  447. })
  448. return
  449. }
  450. jieSuanDanKeXiuGaiXinXi(val.patNo, val.times, val.ledgerSn).then((res) => {
  451. jieSuanDanData.value = res
  452. jieSuanDanData.value.medType = val.medType
  453. jieSuanDanData.value.actIptDays = val.actIptDays
  454. jieSuanDanData.value.outDeptName = val.outDeptName
  455. jieSuanDanData.value.medTypeName = val.medTypeName
  456. jieSuanDanData.value.insutypeName = val.insutypeName
  457. jieSuanDanData.value.disDiag = val.disDiag
  458. jieSuanDanData.value.disDiagComment = val.disDiagComment
  459. jieSuanDanData.value.medfeeSumamt = val.medfeeSumamt
  460. jieSuanDanData.value.fundPaySumamt = val.fundPaySumamt
  461. jieSuanDanData.value.decType = val.decType
  462. jieSuanDanData.value.upload = val
  463. jieSuanDanData.value.shenHeXinXi = {
  464. id: val.id,
  465. reqOpId: val.reqOpId,
  466. reqOpName: val.reqOpName,
  467. reqOpDate: val.reqOpDate,
  468. reqRemark: val.reqRemark,
  469. auditStaff: val.auditStaff,
  470. auditName: val.auditName,
  471. auditDate: val.auditDate,
  472. auditRemark: val.auditRemark,
  473. auditFlag: val.auditFlag,
  474. }
  475. jieSuanDanDataDialog.value = true
  476. })
  477. }
  478. const exportExcel = () => {
  479. if (queryTerm.value.total > 0) {
  480. ElMessageBox.prompt('导出文件名字', '提示', {
  481. confirmButtonText: '确定',
  482. cancelButtonText: '取消',
  483. inputPattern: /\S/,
  484. inputErrorMessage: '文件名不能为空 (∩•̀ω•́)⊃-*⋆',
  485. })
  486. .then(({value}) => {
  487. const data = {
  488. param: queryTerm.value,
  489. url: '/setlListUpld/exportExcel',
  490. fileName: `${value}.xlsx`,
  491. jdt: true,
  492. }
  493. setTimeout(() => {
  494. downloadExcel(data)
  495. }, 500)
  496. })
  497. .catch((e) => {
  498. })
  499. } else {
  500. ElMessage.error('请先查询出数据')
  501. }
  502. }
  503. const remoteMethod = (val) => {
  504. if (val.length > 1) {
  505. getRenYuan(val).then((res) => {
  506. referPhysicians.value = res
  507. })
  508. }
  509. }
  510. const shuaXin = () => {
  511. queryCurrentPage()
  512. }
  513. /* 限制时间 */
  514. const xianZhiShiJian = ref(null)
  515. const xianZhiShiJianClick = () => {
  516. xianZhiShiJian.value.xianZhiShiJianDialog = true
  517. }
  518. /* 修改管床医生 */
  519. const guanChuangYiShen = ref({
  520. yiShenCode: '',
  521. patNo: '',
  522. times: 0,
  523. })
  524. const xiuGaiYiShen = ref(false)
  525. const huoQuXiuGaiYiShen = (code, name, patNo, times) => {
  526. if (stringNotBlank(code)) {
  527. referPhysicians.value = [{code: code, name: name}]
  528. guanChuangYiShen.value.yiShenCode = code
  529. }
  530. xiuGaiYiShen.value = true
  531. guanChuangYiShen.value.patNo = patNo
  532. guanChuangYiShen.value.times = times
  533. }
  534. const xiuGaiGuanChuangYiShenClick = () => {
  535. xiuGaiGuanChuangYiShen(guanChuangYiShen.value.patNo, guanChuangYiShen.value.times, guanChuangYiShen.value.yiShenCode).then((res) => {
  536. xiuGaiYiShen.value = false
  537. shuaXin()
  538. })
  539. }
  540. const zhongKongTiaoJian = () => {
  541. if (!shenHeQuanXian()) {
  542. queryTerm.value.outDept = [store.state.user.info.deptCode]
  543. referPhysicians.value = [{code: store.state.user.info.code, name: store.state.user.info.name}]
  544. }
  545. queryTerm.value.medType = ['22', '2101']
  546. queryTerm.value.insutype = huoQuZhongKongChaXunTiaoJian(insutypes.value, ['340', '350', '360', '510', '410'])
  547. queryTerm.value.psnType = huoQuZhongKongChaXunTiaoJian(getPsnType, ['13'])
  548. queryTerm.value.clrOptins = huoQuZhongKongChaXunTiaoJian(clrOptins.value, ['439900', '430121'])
  549. }
  550. const daYingJieSuanDanRef = ref({
  551. dialog: false,
  552. patNo: '',
  553. times: 0,
  554. ledgerSn: 0,
  555. })
  556. const jieSuanDanClick = (val) => {
  557. daYingJieSuanDanRef.value.dialog = true
  558. daYingJieSuanDanRef.value.patNo = val.patNo
  559. daYingJieSuanDanRef.value.times = val.times
  560. daYingJieSuanDanRef.value.ledgerSn = val.ledgerSn
  561. }
  562. let medType = $ref({
  563. dialog: false,
  564. setlId: '',
  565. iptMedType: 1,
  566. })
  567. const clickToModifyMedicalCategory = ({setlId, iptMedType}) => {
  568. if (stringIsBlank(setlId)) {
  569. return ElMessage.error('该患者没有结算ID')
  570. }
  571. medType.dialog = true
  572. medType.setlId = setlId
  573. medType.iptMedType = iptMedType
  574. }
  575. const clickToSaveMedicalCategory = () => {
  576. modifyMedicalCategory(medType.iptMedType, medType.setlId)
  577. query()
  578. }
  579. function getIptMedName(val) {
  580. switch (val) {
  581. case 1:
  582. return "住院"
  583. case 2:
  584. return "日间手术"
  585. default:
  586. return ""
  587. }
  588. }
  589. onMounted(() => {
  590. getInsutypes().then((res) => {
  591. insutypes.value = res
  592. getClrTypes().then((res2) => {
  593. clrTypes.value = res2
  594. })
  595. })
  596. getMedType().then((res) => {
  597. medTypes.value = res
  598. })
  599. getDept().then((res) => {
  600. disDepts.value = res
  601. })
  602. clrOptins.value = clrOptinsData
  603. })
  604. return {
  605. queryTerm,
  606. clockinShortcuts,
  607. handleSizeChange,
  608. handleCurrentChange,
  609. insutypes,
  610. query,
  611. upldAllList,
  612. upldSelections,
  613. disDepts,
  614. clrTypes,
  615. medTypes,
  616. getPsnType,
  617. queryTermDialog,
  618. chongZhi,
  619. queryTermRef,
  620. store,
  621. spanWidth,
  622. jieSuanDanXinXi,
  623. jieSuanDanData,
  624. handleSelectionChange,
  625. exportExcel,
  626. referPhysicians,
  627. clrOptins,
  628. jieSuanDanDataDialog,
  629. remoteMethod,
  630. auditFlags,
  631. shuaXin,
  632. xianZhiShiJian,
  633. xianZhiShiJianClick,
  634. shenHeQuanXian,
  635. guanChuangYiShen,
  636. huoQuXiuGaiYiShen,
  637. xiuGaiGuanChuangYiShenClick,
  638. xiuGaiYiShen,
  639. auditName,
  640. dept,
  641. decTypes,
  642. zhongKongTiaoJian,
  643. daYingJieSuanDanRef,
  644. jieSuanDanClick,
  645. flags: ref([
  646. {code: 0, name: '全部'},
  647. {code: 1, name: '未传'},
  648. {code: 2, name: '已传'},
  649. ]),
  650. hiPaymtdData: [
  651. {code: 1, name: '按项目'},
  652. {code: 2, name: '单病种'},
  653. {code: 3, name: '按病种分值'},
  654. {code: 4, name: '基本诊断相关分组(DRG)'},
  655. {code: 5, name: '按床日'},
  656. {code: 6, name: '按人次'},
  657. {code: 9, name: '其他'},
  658. {code: 0, name: '全部'},
  659. ],
  660. tableRef,
  661. getIptMedName,
  662. medType,
  663. clickToModifyMedicalCategory,
  664. clickToSaveMedicalCategory,
  665. medTypeData: [
  666. {code: 1, name: '住院'},
  667. {code: 1, name: '日间手术'}
  668. ]
  669. }
  670. },
  671. }
  672. </script>