registrationHistory.vue 38KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. </div>
  6. <div v-if="this.$store.getters.xt_user.org_id == 9504 || this.$store.getters.xt_user.org_id == 10028 || this.$store.getters.xt_user.org_id == 10138"
  7. class="app-container">
  8. <div class="cell clearfix">
  9. <!-- <el-input style="width: 180px;" v-model.trim="search_input" class="filter-item"/> -->
  10. <el-autocomplete
  11. style="margin:16px 5px"
  12. popper-class="my-autocomplete"
  13. v-model.trim="search_input"
  14. :fetch-suggestions="querySearchAsync"
  15. :trigger-on-focus="false"
  16. placeholder="病人名字或者透析号"
  17. @select="handleSelect"
  18. >
  19. <i class="el-icon-search el-input__icon" slot="suffix"> </i>
  20. <template slot-scope="{ item }">
  21. <div class="name">{{ item.name }}</div>
  22. </template>
  23. </el-autocomplete>
  24. <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search"
  25. @click="searchAction">搜索
  26. </el-button>
  27. <!-- <el-date-picker
  28. v-model="value1"
  29. @change="changeTime"
  30. style="margin-right:10px;"
  31. type="daterange"
  32. range-separator="-"
  33. start-placeholder="开始日期"
  34. end-placeholder="结束日期">
  35. </el-date-picker> -->
  36. <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
  37. placeholder="选择时间" v-model="start_time" style="width:200px"
  38. @change="changeStart"
  39. >
  40. </el-date-picker>
  41. -
  42. <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
  43. placeholder="选择时间" v-model="end_time" style="width:200px"
  44. @change="changeEnd"
  45. >
  46. </el-date-picker>
  47. <label class="title"><span class="name">挂号类型</span> : </label>
  48. <el-select v-model="register_type" placeholder="请选择" style="width:150px;" @change="changeRegister">
  49. <el-option
  50. v-for="item in register"
  51. :key="item.value"
  52. :label="item.label"
  53. :value="item.value">
  54. </el-option>
  55. </el-select>
  56. </div>
  57. <el-table :data="tableData" border style="width: 100%;" :row-style="{ color: '#303133' }"
  58. :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
  59. highlight-current-row>
  60. <el-table-column align="center" type="index" label="序号" width="60">
  61. </el-table-column>
  62. <el-table-column align="center" prop="name" label="时间" width="100">
  63. <template slot-scope="scope">{{getTime(scope.row.ctime,'{y}-{m}-{d} {h}:{i}:{s}')}}</template>
  64. </el-table-column>
  65. <el-table-column align="center" prop="dialysis_no" label="姓名" width="80">
  66. <template slot-scope="scope">{{scope.row.name }}</template>
  67. </el-table-column>
  68. <el-table-column align="center" prop="name" label="科室" width="80">
  69. <template slot-scope="scope">{{getDepartMent(scope.row.departments)}}</template>
  70. </el-table-column>
  71. <el-table-column align="center" prop="name" label="挂号类型" width="90">
  72. <template slot-scope="scope">
  73. <span v-if="scope.row.register_type == 1">普通</span>
  74. <span v-if="scope.row.register_type == 2">主治</span>
  75. <span v-if="scope.row.register_type == 3">主任</span>
  76. <span v-if="scope.row.register_type == 4">免收诊金</span>
  77. <span v-if="scope.row.register_type == 5">专家</span>
  78. </template>
  79. </el-table-column>
  80. <el-table-column align="center" prop="name" label="就诊号" width="80">
  81. <template slot-scope="scope">
  82. {{scope.row.number}}
  83. </template>
  84. </el-table-column>
  85. <el-table-column align="center" prop="name" label="证件号" width='180'>
  86. <template slot-scope="scope">{{ scope.row.id_card_no }}</template>
  87. </el-table-column>
  88. <el-table-column align="center" label="社保类型">
  89. <template slot-scope="scope">{{getMedicalTreatment(scope.row.social_type)}}</template>
  90. </el-table-column>
  91. <el-table-column align="center" prop="name" label="医生" width="80">
  92. <template slot-scope="scope">{{getDoctor(scope.row.doctor) }}</template>
  93. </el-table-column>
  94. <el-table-column align="center" prop="name" label="挂号费" width="70">
  95. <template slot-scope="scope">{{ scope.row.register_cost }}</template>
  96. </el-table-column>
  97. <el-table-column align="center" prop="name" label="诊疗费" width="70">
  98. <template slot-scope="scope">{{ scope.row.treatment_cost }}</template>
  99. </el-table-column>
  100. <el-table-column align="center" prop="name" label="工本费" width="70">
  101. <template slot-scope="scope">{{ scope.row.cost_of_production }}</template>
  102. </el-table-column>
  103. <el-table-column align="center" prop="name" label="结算类型" width="70">
  104. <template slot-scope="scope">{{getBanlance(scope.row.balance_accounts_type) }}</template>
  105. </el-table-column>
  106. <el-table-column align="center" prop="name" label="操作人" width="70">
  107. <template slot-scope="scope">{{creator}}</template>
  108. </el-table-column>
  109. <el-table-column align="center" prop="name" label="操作" width="180">
  110. <template slot-scope="scope">
  111. <!--<el-button size="mini" type="primary" v-if=" scope.row.record_date < startUnix" :disabled="true">已过号</el-button>-->
  112. <el-button size="mini" type="primary" v-if="scope.row.status == 1"
  113. @click="toReturnSZPatient(scope.row)">退号
  114. </el-button>
  115. <el-button size="mini" type="primary" :disabled="true" v-if="scope.row.status == 0">已退号
  116. </el-button>
  117. <!--<el-button size="mini" type="primary" v-if="scope.row.record_date == startUnix && scope.row.is_return == 2" :disabled="true">已退号</el-button>-->
  118. <!--<el-button size="mini" type="primary" v-if="scope.row.record_date == startUnix && scope.row.is_return == 3" :disabled="true">已就诊</el-button>-->
  119. <!--<el-button size="mini" type="primary" @click="open(scope.row)">详情</el-button>-->
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. <el-pagination
  124. @size-change="handleSizeChange"
  125. @current-change="handleCurrentChange"
  126. :page-sizes="[10, 50, 100]"
  127. :page-size="10"
  128. background
  129. style="margin-top:20px;float: right"
  130. layout="total, sizes, prev, pager, next, jumper"
  131. :total="total"
  132. >
  133. </el-pagination>
  134. <el-dialog
  135. title="挂号历史详情"
  136. :visible.sync="dialogVisible"
  137. width="1100px"
  138. :before-close="handleClose">
  139. <div>
  140. <div class="formMain">
  141. <el-form class="basicForm" :model="form" ref="form" label-width="130px">
  142. <el-form-item label="患者姓名:" prop="name">
  143. <div>{{ form.name }}</div>
  144. </el-form-item>
  145. <el-form-item label="性别:" prop="gender">
  146. <div v-if="form.gender == 1">男</div>
  147. <div v-if="form.gender == 2">女</div>
  148. </el-form-item>
  149. <el-form-item label="年龄:" prop="age">
  150. <div>{{ form.age }}</div>
  151. </el-form-item>
  152. <el-form-item label="出生日期:" prop="birthday">
  153. <div>{{ getTime(form.birthday,'{y}-{m}-{d}') }}</div>
  154. </el-form-item>
  155. <el-form-item label="手机号码:" prop="phone">
  156. <div>{{ form.phone }}</div>
  157. </el-form-item>
  158. <el-form-item label="医疗类别:">
  159. <div>{{ getDictionaryDataConfig(form.medical_treatment_type) }}</div>
  160. </el-form-item>
  161. <el-form-item label="证件类型:">
  162. <div>{{ getCertificates(form.id_type) }}</div>
  163. </el-form-item>
  164. <el-form-item label="证件号码:" prop="idCard">
  165. {{ form.id_card_no }}
  166. </el-form-item>
  167. <el-form-item label="结算类型:">
  168. {{ getSettlement(form.balance_accounts_type) }}
  169. </el-form-item>
  170. <el-form-item label="社保类型:">
  171. <div>{{ getMedicalCare(form.social_type) }}</div>
  172. </el-form-item>
  173. <el-form-item class="specialFormItem" style="width:66.5%;" label="医保卡号:">
  174. <div>{{ form.medical_insurance_number }}</div>
  175. </el-form-item>
  176. <el-form-item label="挂号类型:" prop="register" :validate-event="is_Name">
  177. <div>{{ getRegister(form.register_type) }}</div>
  178. </el-form-item>
  179. <el-form-item label="医生:" prop="doctor" :validate-event="is_Name">
  180. <div>{{ getDoctor(form.doctor) }}</div>
  181. </el-form-item>
  182. <el-form-item label="科室:" prop="department" :validate-event="is_Name">
  183. <div>{{ getDepartMent(form.departments) }}</div>
  184. </el-form-item>
  185. <!-- <el-form-item label="是否需要工本费:">
  186. <div v-if="form.is_need_cost_of_production == 1">是</div>
  187. <div v-else>否</div>
  188. </el-form-item> -->
  189. <el-form-item label="挂号费:">
  190. <div>{{ form.register_cost }}</div>
  191. </el-form-item>
  192. <el-form-item label="诊疗费:">
  193. <div>{{ form.treatment_cost }}</div>
  194. </el-form-item>
  195. <el-form-item label="工本费:">
  196. <div>{{ form.cost_of_production }}</div>
  197. </el-form-item>
  198. <el-form-item label="合计:">
  199. <div>{{ form.total }}</div>
  200. </el-form-item>
  201. <el-form-item>
  202. <!-- <el-input v-model="form.name"></el-input> -->
  203. </el-form-item>
  204. </el-form>
  205. </div>
  206. </div>
  207. <span slot="footer" class="dialog-footer">
  208. <el-button @click="dialogVisible = false">取 消</el-button>
  209. <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
  210. </span>
  211. </el-dialog>
  212. </div>
  213. <div v-else class="app-container">
  214. <div class="cell clearfix">
  215. <!-- <el-input style="width: 180px;" v-model.trim="search_input" class="filter-item"/> -->
  216. <el-autocomplete
  217. style="margin:16px 5px"
  218. popper-class="my-autocomplete"
  219. v-model.trim="search_input"
  220. :fetch-suggestions="querySearchAsync"
  221. :trigger-on-focus="false"
  222. placeholder="病人名字或者透析号"
  223. @select="handleSelect"
  224. >
  225. <i class="el-icon-search el-input__icon" slot="suffix"> </i>
  226. <template slot-scope="{ item }">
  227. <div class="name">{{ item.name }}</div>
  228. </template>
  229. </el-autocomplete>
  230. <el-button style="margin-right:10px;" class="filter-item" type="primary" icon="el-icon-search"
  231. @click="searchAction">搜索
  232. </el-button>
  233. <!-- <el-date-picker
  234. v-model="value1"
  235. @change="changeTime"
  236. style="margin-right:10px;"
  237. type="daterange"
  238. range-separator="-"
  239. start-placeholder="开始日期"
  240. end-placeholder="结束日期">
  241. </el-date-picker> -->
  242. <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
  243. placeholder="选择时间" v-model="start_time" style="width:200px"
  244. @change="changeStart"
  245. >
  246. </el-date-picker>
  247. -
  248. <el-date-picker type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
  249. placeholder="选择时间" v-model="end_time" style="width:200px"
  250. @change="changeEnd"
  251. >
  252. </el-date-picker>
  253. <label class="title"><span class="name">挂号类型</span> : </label>
  254. <el-select v-model="register_type" placeholder="请选择" style="width:150px;" @change="changeRegister">
  255. <el-option
  256. v-for="item in register"
  257. :key="item.value"
  258. :label="item.label"
  259. :value="item.value">
  260. </el-option>
  261. </el-select>
  262. </div>
  263. <el-table :data="tableData" border style="width: 100%;" :row-style="{ color: '#303133' }"
  264. :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
  265. highlight-current-row>
  266. <el-table-column align="center" type="index" label="序号" width="60">
  267. </el-table-column>
  268. <el-table-column align="center" prop="name" label="时间" width="100">
  269. <template slot-scope="scope">{{getTime(scope.row.ctime,'{y}-{m}-{d} {h}:{i}:{s}')}}</template>
  270. </el-table-column>
  271. <el-table-column align="center" prop="dialysis_no" label="姓名" width="80">
  272. <template slot-scope="scope">{{scope.row.name }}</template>
  273. </el-table-column>
  274. <el-table-column align="center" prop="name" label="科室" width="80">
  275. <template slot-scope="scope">{{getDepartMent(scope.row.departments)}}</template>
  276. </el-table-column>
  277. <el-table-column align="center" prop="name" label="挂号类型" width="90">
  278. <template slot-scope="scope">
  279. <span v-if="scope.row.register_type == 1">普通</span>
  280. <span v-if="scope.row.register_type == 2">主治</span>
  281. <span v-if="scope.row.register_type == 3">主任</span>
  282. <span v-if="scope.row.register_type == 4">免收诊金</span>
  283. <span v-if="scope.row.register_type == 5">专家</span>
  284. </template>
  285. </el-table-column>
  286. <el-table-column align="center" prop="name" label="就诊号" width="80">
  287. <template slot-scope="scope">
  288. {{scope.row.number}}
  289. </template>
  290. </el-table-column>
  291. <el-table-column align="center" prop="name" label="证件号" width='180'>
  292. <template slot-scope="scope">{{ scope.row.id_card_no }}</template>
  293. </el-table-column>
  294. <el-table-column align="center" label="社保类型">
  295. <template slot-scope="scope">{{getMedicalTreatment(scope.row.social_type)}}</template>
  296. </el-table-column>
  297. <el-table-column align="center" prop="name" label="医生" width="80">
  298. <template slot-scope="scope">{{getDoctor(scope.row.doctor) }}</template>
  299. </el-table-column>
  300. <el-table-column align="center" prop="name" label="挂号费" width="70">
  301. <template slot-scope="scope">{{ scope.row.register_cost }}</template>
  302. </el-table-column>
  303. <el-table-column align="center" prop="name" label="诊疗费" width="70">
  304. <template slot-scope="scope">{{ scope.row.treatment_cost }}</template>
  305. </el-table-column>
  306. <el-table-column align="center" prop="name" label="工本费" width="70">
  307. <template slot-scope="scope">{{ scope.row.cost_of_production }}</template>
  308. </el-table-column>
  309. <el-table-column align="center" prop="name" label="结算类型" width="70">
  310. <template slot-scope="scope">{{getBanlance(scope.row.balance_accounts_type) }}</template>
  311. </el-table-column>
  312. <el-table-column align="center" prop="name" label="操作人" width="70">
  313. <template slot-scope="scope">{{creator}}</template>
  314. </el-table-column>
  315. <el-table-column align="center" prop="name" label="操作" width="180">
  316. <template slot-scope="scope">
  317. <!--<el-button size="mini" type="primary" v-if=" scope.row.record_date < startUnix" :disabled="true">已过号</el-button>-->
  318. <el-button size="mini" type="primary" v-if="scope.row.status == 1"
  319. @click="toReturnPatient(scope.row)">退号
  320. </el-button>
  321. <el-button size="mini" type="primary" v-if="scope.row.status == 0" :disabled="true">已退号
  322. </el-button>
  323. <!--<el-button size="mini" type="primary" v-if="scope.row.record_date == startUnix && scope.row.is_return == 2" :disabled="true">已退号</el-button>-->
  324. <!--<el-button size="mini" type="primary" v-if="scope.row.record_date == startUnix && scope.row.is_return == 3" :disabled="true">已就诊</el-button>-->
  325. <el-button size="mini" type="primary" @click="open(scope.row)">详情</el-button>
  326. </template>
  327. </el-table-column>
  328. </el-table>
  329. <el-pagination
  330. @size-change="handleSizeChange"
  331. @current-change="handleCurrentChange"
  332. :page-sizes="[10, 50, 100]"
  333. :page-size="10"
  334. background
  335. style="margin-top:20px;float: right"
  336. layout="total, sizes, prev, pager, next, jumper"
  337. :total="total"
  338. >
  339. </el-pagination>
  340. <el-dialog
  341. title="挂号历史详情"
  342. :visible.sync="dialogVisible"
  343. width="1100px"
  344. :before-close="handleClose">
  345. <div>
  346. <div class="formMain">
  347. <el-form class="basicForm" :model="form" ref="form" label-width="130px">
  348. <el-form-item label="患者姓名:" prop="name">
  349. <div>{{ form.name }}</div>
  350. </el-form-item>
  351. <el-form-item label="性别:" prop="gender">
  352. <div v-if="form.gender == 1">男</div>
  353. <div v-if="form.gender == 2">女</div>
  354. </el-form-item>
  355. <el-form-item label="年龄:" prop="age">
  356. <div>{{ form.age }}</div>
  357. </el-form-item>
  358. <el-form-item label="出生日期:" prop="birthday">
  359. <div>{{ getTime(form.birthday,'{y}-{m}-{d}') }}</div>
  360. </el-form-item>
  361. <el-form-item label="手机号码:" prop="phone">
  362. <div>{{ form.phone }}</div>
  363. </el-form-item>
  364. <el-form-item label="医疗类别:">
  365. <div>{{ getDictionaryDataConfig(form.medical_treatment_type) }}</div>
  366. </el-form-item>
  367. <el-form-item label="证件类型:">
  368. <div>{{ getCertificates(form.id_type) }}</div>
  369. </el-form-item>
  370. <el-form-item label="证件号码:" prop="idCard">
  371. {{ form.id_card_no }}
  372. </el-form-item>
  373. <el-form-item label="结算类型:">
  374. {{ getSettlement(form.balance_accounts_type) }}
  375. </el-form-item>
  376. <el-form-item label="社保类型:">
  377. <div>{{ getMedicalCare(form.social_type) }}</div>
  378. </el-form-item>
  379. <el-form-item class="specialFormItem" style="width:66.5%;" label="医保卡号:">
  380. <div>{{ form.medical_insurance_number }}</div>
  381. </el-form-item>
  382. <el-form-item label="挂号类型:" prop="register" :validate-event="is_Name">
  383. <div>{{ getRegister(form.register_type) }}</div>
  384. </el-form-item>
  385. <el-form-item label="医生:" prop="doctor" :validate-event="is_Name">
  386. <div>{{ getDoctor(form.doctor) }}</div>
  387. </el-form-item>
  388. <el-form-item label="科室:" prop="department" :validate-event="is_Name">
  389. <div>{{ getDepartMent(form.departments) }}</div>
  390. </el-form-item>
  391. <!-- <el-form-item label="是否需要工本费:">
  392. <div v-if="form.is_need_cost_of_production == 1">是</div>
  393. <div v-else>否</div>
  394. </el-form-item> -->
  395. <el-form-item label="挂号费:">
  396. <div>{{ form.register_cost }}</div>
  397. </el-form-item>
  398. <el-form-item label="诊疗费:">
  399. <div>{{ form.treatment_cost }}</div>
  400. </el-form-item>
  401. <el-form-item label="工本费:">
  402. <div>{{ form.cost_of_production }}</div>
  403. </el-form-item>
  404. <el-form-item label="合计:">
  405. <div>{{ form.total }}</div>
  406. </el-form-item>
  407. <el-form-item>
  408. <!-- <el-input v-model="form.name"></el-input> -->
  409. </el-form-item>
  410. </el-form>
  411. </div>
  412. </div>
  413. <span slot="footer" class="dialog-footer">
  414. <el-button @click="dialogVisible = false">取 消</el-button>
  415. <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
  416. </span>
  417. </el-dialog>
  418. </div>
  419. </div>
  420. </template>
  421. <script>
  422. const moment = require('moment')
  423. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  424. import { changePatient, getHisPatient, getHisPatientHistory } from '@/api/project/project'
  425. import { uParseTime } from '@/utils/tools'
  426. import { getDictionaryDataConfig } from '@/utils/data'
  427. import axios from 'axios'
  428. export default {
  429. components: {
  430. BreadCrumb
  431. },
  432. data() {
  433. return {
  434. crumbs: [
  435. { path: false, name: '门诊挂号' },
  436. { path: false, name: '挂号历史' }
  437. ],
  438. register_type: 0,
  439. search_input: '',
  440. value1: '',
  441. tableData: [],
  442. register: [
  443. { value: 0, label: '全部' },
  444. { value: 1, label: '普通' },
  445. { value: 2, label: '主治' },
  446. { value: 3, label: '主任' },
  447. { value: 4, label: '免收诊金' },
  448. { value: 5, label: '专家' }
  449. ],
  450. start_time: moment().format('YYYY-MM-DD'),
  451. end_time: moment().format('YYYY-MM-DD'),
  452. limit: 10,
  453. page: 1,
  454. total: 0,
  455. departMent: [],
  456. doctorList: [],
  457. medicalCare: [{
  458. id: 1,
  459. name: '职工基本医疗保险'
  460. }, {
  461. id: 2,
  462. name: '公务员医疗补助'
  463. }, {
  464. id: 3,
  465. name: '大额医疗费用补助'
  466. }, {
  467. id: 4,
  468. name: '离休人员医疗'
  469. }, {
  470. id: 5,
  471. name: '城乡居民基本医疗保险'
  472. }, {
  473. id: 6,
  474. name: '城乡居民大病医疗保险'
  475. },
  476. {
  477. id: 7,
  478. name: '生育保险'
  479. }],
  480. certificates: [{
  481. value: 1,
  482. label: '内地身份证'
  483. }, {
  484. value: 2,
  485. label: '社保卡'
  486. }, {
  487. value: 3,
  488. label: '护照'
  489. }, {
  490. value: 4,
  491. label: '军官证'
  492. }, {
  493. value: 5,
  494. label: '台胞证'
  495. }, {
  496. value: 6,
  497. label: '港澳地区身份证'
  498. }],
  499. settlement:
  500. [
  501. { value: 1, label: '医保' },
  502. { value: 2, label: '自费' },
  503. { value: 3, label: '公费' },
  504. { value: 4, label: '农保' },
  505. { value: 5, label: '会员' },
  506. { value: 6, label: '职工' },
  507. { value: 7, label: '合同' }
  508. ],
  509. // medicalCare: [{
  510. // value: 1,
  511. // label: '职工基本医疗保险'
  512. // }, {
  513. // value: 2,
  514. // label: "公务员医疗补助"
  515. // },{
  516. // value: 3,
  517. // label: "大额医疗费用补助"
  518. // },{
  519. // value: 4,
  520. // label: "离休人员医疗"
  521. // },{
  522. // value: 5,
  523. // label: "城乡居民基本医疗保险"
  524. // },{
  525. // value: 6,
  526. // label: "城乡居民大病医疗保险"
  527. // },
  528. // {
  529. // value: 7,
  530. // label: "生育保险"
  531. // }],
  532. newRegister: [{
  533. value: 1,
  534. label: '普通'
  535. }, {
  536. value: 2,
  537. label: '主治'
  538. }, {
  539. value: 3,
  540. label: '主任'
  541. }, {
  542. value: 4,
  543. label: '免收诊金'
  544. }, {
  545. value: 5,
  546. label: '专家'
  547. }],
  548. tablePatient: [],
  549. creator: '',
  550. startUnix: '',
  551. dialogVisible: false,
  552. form: {},
  553. is_Name: false
  554. }
  555. },
  556. created() {
  557. // let a = JSON.parse(localStorage.getItem("temp"))
  558. // let arr = []
  559. // a.map(item => {
  560. // if(item.org_id == this.$store.getters.xt_user.org_id){
  561. // item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
  562. // arr.push(item)
  563. // }
  564. // })
  565. // this.tableData = arr
  566. //获取所有挂号号的患者
  567. this.creator = this.$store.getters.xt_user.user.user_name
  568. var today = moment().startOf('day').format('YYYY-MM-DD')
  569. var todayUnix = Date.parse(today) / 1000
  570. this.startUnix = todayUnix - 28800
  571. this.getlist()
  572. this.getDictionaryDataConfig()
  573. },
  574. methods: {
  575. searchAction() {
  576. this.getlist()
  577. },
  578. // changeTime(val){
  579. // let arr = JSON.parse(localStorage.getItem("temp"))
  580. // arr.map(item => {
  581. // item.create_time = moment(item.create_time * 1000).format('YYYY-MM-DD')
  582. // })
  583. // this.tableData = arr
  584. // console.log(new Date(val[0]).getTime() / 1000)
  585. // console.log(new Date(val[1]).getTime() / 1000)
  586. // let arr1 = this.tableData
  587. // let a = []
  588. // arr1.map(item => {
  589. // if(new Date(item.create_time).getTime() / 1000 > new Date(val[0]).getTime() / 1000 && new Date(item.create_time).getTime() / 1000 < new Date(val[1]).getTime() / 1000 && item.org_id == this.$store.getters.xt_user.org_id){
  590. // a.push(item)
  591. // }
  592. // })
  593. // this.tableData = a
  594. // },
  595. changeStart(val) {
  596. this.start_time = val
  597. this.getlist()
  598. },
  599. changeEnd(val) {
  600. this.end_time = val
  601. this.getlist()
  602. },
  603. changeRegister(val) {
  604. this.getlist()
  605. },
  606. handleSizeChange(val) {
  607. this.limit = val
  608. this.getlist()
  609. },
  610. handleCurrentChange(val) {
  611. this.page = val
  612. this.getlist()
  613. },
  614. getlist() {
  615. var params = {
  616. keyword: this.search_input,
  617. start_time: this.start_time,
  618. end_time: this.end_time,
  619. register_type: this.register_type,
  620. limit: this.limit,
  621. page: this.page
  622. }
  623. console.log('params', params)
  624. getHisPatientHistory(params).then(response => {
  625. if (response.data.state == 1) {
  626. var history = response.data.data.history
  627. console.log('history', history)
  628. this.tableData = history
  629. var total = response.data.data.total
  630. console.log('total', total)
  631. this.total = total
  632. var department = response.data.data.department
  633. console.log('department', department)
  634. this.departMent = department
  635. var doctor = response.data.data.doctor
  636. console.log('doctor', doctor)
  637. this.doctorList = doctor
  638. }
  639. })
  640. },
  641. getDepartMent(id) {
  642. var name = ''
  643. for (let i = 0; i < this.departMent.length; i++) {
  644. if (id == this.departMent[i].id) {
  645. name = this.departMent[i].name
  646. }
  647. }
  648. return name
  649. },
  650. getDoctor(id) {
  651. var user_name = ''
  652. for (let i = 0; i < this.doctorList.length; i++) {
  653. if (id == this.doctorList[i].admin_user_id) {
  654. user_name = this.doctorList[i].user_name
  655. }
  656. }
  657. return user_name
  658. },
  659. getMedicalTreatment(id) {
  660. var name = ''
  661. for (let i = 0; i < this.medicalCare.length; i++) {
  662. if (this.medicalCare[i].id == id) {
  663. name = this.medicalCare[i].name
  664. }
  665. }
  666. return name
  667. },
  668. getTime(value, temp) {
  669. if (value != undefined) {
  670. return uParseTime(value, temp)
  671. }
  672. return ''
  673. }, toReturnSZPatient(val) {
  674. var that = this
  675. this.$confirm('是否退号', '退号', {
  676. confirmButtonText: '确 定',
  677. cancelButtonText: '取 消',
  678. type: 'warning'
  679. }).then(() => {
  680. axios.get('http://127.0.0.1:9532/sz/api/refundnumber/get', {
  681. params: {
  682. order_id: 0,
  683. record_time: this.getTime(val.record_date, '{y}-{m}-{d}'),
  684. admin_user_id: this.$store.getters.xt_user.user.id,
  685. patient_id: val.patient_id
  686. }
  687. })
  688. .then(function(response) {
  689. if (response.data.state == 0) {
  690. that.$message.error(response.data.msg)
  691. return false
  692. } else {
  693. if (response.data.data.failed_code == -10) {
  694. that.$confirm(response.data.data.msg, '医保错误信息', {
  695. confirmButtonText: '确 定',
  696. type: 'warning'
  697. }).then(() => {
  698. }).catch(() => {
  699. })
  700. // that.$message.error(response.data.data.msg)
  701. } else {
  702. that.getlist()
  703. that.$message({ message: '退号成功', type: 'success' })
  704. }
  705. }
  706. })
  707. .catch(function(error) {
  708. })
  709. }).catch(() => {
  710. })
  711. },
  712. toReturnPatient(row) {
  713. var that = this
  714. this.$confirm('确认退号吗?', '退号', {
  715. confirmButtonText: '确 定',
  716. cancelButtonText: '取 消',
  717. type: 'warning'
  718. }).then(() => {
  719. //
  720. let params = {
  721. 'id':row.id,
  722. 'patient_id': row.patient_id,
  723. 'record_time': that.getTimes(row.record_date),
  724. 'admin_user_id': this.$store.getters.xt_user.user.id
  725. }
  726. axios.get('http://127.0.0.1:9532/api/refundnumber/post', {
  727. params: params
  728. })
  729. .then(function(response) {
  730. if (response.data.state == 0) {
  731. that.$message.error(response.data.msg)
  732. return false
  733. } else {
  734. if (response.data.data.failed_code == -10) {
  735. // that.$message.error(response.data.data.msg)
  736. that.$confirm(response.data.data.msg, '医保错误信息', {
  737. confirmButtonText: '确 定',
  738. type: 'warning'
  739. }).then(() => {
  740. }).catch(() => {
  741. })
  742. } else {
  743. that.$message({ message: '退号成功', type: 'success', duration: 5000 });
  744. that.getlist()
  745. }
  746. }
  747. })
  748. .catch(function(error) {
  749. })
  750. //
  751. // changePatient(id).then(response => {
  752. // if (response.data.state == 1) {
  753. // var msg = response.data.data.msg
  754. // this.$message.success('退号成功')
  755. // this.getlist()
  756. // } else {
  757. // this.$message.error('患者已就诊,退号失败')
  758. // }
  759. // })
  760. })
  761. .catch(() => {
  762. })
  763. }, getTimes(time) {
  764. return uParseTime(time, '{y}-{m}-{d}')
  765. },
  766. querySearchAsync(keyword, cb) {
  767. let key = '';
  768. if (keyword != undefined) {
  769. key = keyword
  770. }
  771. let searchArray = []
  772. var params = {
  773. keyword: key
  774. }
  775. console.log('params', params)
  776. getHisPatient(params).then(response => {
  777. if (response.data.state == 1) {
  778. searchArray = response.data.data.patient
  779. console.log('searcharrya', searchArray)
  780. cb(searchArray)
  781. }
  782. })
  783. return searchArray
  784. },
  785. handleSelect(val) {
  786. this.search_input = val.name
  787. this.getlist()
  788. },
  789. handleClose(done) {
  790. done()
  791. },
  792. open(obj) {
  793. this.dialogVisible = true
  794. this.form = obj
  795. console.log(obj)
  796. },
  797. getDictionaryDataConfig(type) {
  798. let arr = getDictionaryDataConfig('system', 'social_type')
  799. let str = ''
  800. arr.map(item => {
  801. if (item.id == type) {
  802. str = item.name
  803. }
  804. })
  805. return str
  806. },
  807. getCertificates(type) {
  808. let arr = this.certificates
  809. let str = ''
  810. arr.map(item => {
  811. if (item.value == type) {
  812. str = item.label
  813. }
  814. })
  815. return str
  816. },
  817. getSettlement(type) {
  818. let arr = this.settlement
  819. let str = ''
  820. arr.map(item => {
  821. if (item.value == type) {
  822. str = item.label
  823. }
  824. })
  825. return str
  826. },
  827. getMedicalCare(type) {
  828. let arr = this.medicalCare
  829. let str = ''
  830. arr.map(item => {
  831. if (item.id == type) {
  832. str = item.name
  833. }
  834. })
  835. return str
  836. },
  837. getRegister(type) {
  838. let arr = this.newRegister
  839. let str = ''
  840. arr.map(item => {
  841. if (item.value == type) {
  842. str = item.label
  843. }
  844. })
  845. return str
  846. },
  847. getDepartMent(type) {
  848. let arr = this.departMent
  849. let str = ''
  850. arr.map(item => {
  851. if (item.id == type) {
  852. str = item.name
  853. }
  854. })
  855. return str
  856. },
  857. getBanlance(id) {
  858. var label = ''
  859. for (let i = 0; i < this.settlement.length; i++) {
  860. if (id == this.settlement[i].value) {
  861. label = this.settlement[i].label
  862. }
  863. }
  864. return label
  865. }
  866. }
  867. }
  868. </script>
  869. <style lang="scss" scoped>
  870. .basicForm {
  871. display: flex;
  872. flex-wrap: wrap;
  873. justify-content: space-between;
  874. .el-form-item {
  875. width: 33%;
  876. }
  877. }
  878. </style>