index.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="queryForm" :model="queryParams" size="small" :inline="true" class="head-query-form" label-width="68px">
  4. <el-form-item label="字段" prop="auth">
  5. <el-input
  6. v-model="queryParams.auth"
  7. size="small"
  8. placeholder="请输入字段"
  9. clearable
  10. style="width: 220px;"
  11. @keyup.enter.native="handleQuery"
  12. @clear="handleQuery"
  13. />
  14. </el-form-item>
  15. <el-form-item label="字段名称" prop="field">
  16. <el-input
  17. v-model="queryParams.field"
  18. size="small"
  19. placeholder="请输入字段名称"
  20. clearable
  21. style="width: 220px;"
  22. @keyup.enter.native="handleQuery"
  23. @clear="handleQuery"
  24. />
  25. </el-form-item>
  26. <el-form-item label="规则描述" prop="desc">
  27. <el-input
  28. v-model="queryParams.desc"
  29. size="small"
  30. placeholder="请输入规则描述"
  31. clearable
  32. style="width: 220px;"
  33. @keyup.enter.native="handleQuery"
  34. @clear="handleQuery"
  35. />
  36. </el-form-item>
  37. <el-form-item label="错误等级" prop="level">
  38. <el-select
  39. v-model="queryParams.level"
  40. placeholder="错误等级"
  41. clearable
  42. style="width: 220px"
  43. @clear="handleQuery"
  44. >
  45. <el-option
  46. v-for="item in level"
  47. :key="item.id"
  48. :label="item.name"
  49. :value="item.id"
  50. />
  51. </el-select>
  52. </el-form-item>
  53. <el-form-item label="缺陷分类" prop="type">
  54. <el-select
  55. v-model="queryParams.type"
  56. placeholder="缺陷分类"
  57. clearable
  58. style="width: 220px"
  59. @clear="handleQuery"
  60. >
  61. <el-option
  62. v-for="item in type"
  63. :key="item.id"
  64. :label="item.name"
  65. :value="item.id"
  66. />
  67. </el-select>
  68. </el-form-item>
  69. <el-form-item label="缺陷类型" prop="errorType">
  70. <el-select
  71. v-model="queryParams.errorType"
  72. placeholder="缺陷类型"
  73. clearable
  74. style="width: 220px"
  75. @clear="handleQuery"
  76. >
  77. <el-option
  78. v-for="item in errorType"
  79. :key="item.id"
  80. :label="item.name"
  81. :value="item.id"
  82. />
  83. </el-select>
  84. </el-form-item>
  85. <el-form-item label="缺陷类别" prop="category">
  86. <el-select
  87. v-model="queryParams.category"
  88. placeholder="缺陷类别"
  89. clearable
  90. style="width: 220px"
  91. @clear="handleQuery"
  92. >
  93. <el-option
  94. v-for="item in category"
  95. :key="item.id"
  96. :label="item.name"
  97. :value="item.id"
  98. />
  99. </el-select>
  100. </el-form-item>
  101. <el-form-item label="" prop="status">
  102. <el-select
  103. v-model="queryParams.status"
  104. placeholder="规侧状态"
  105. clearable
  106. style="width: 125px"
  107. @clear="handleQuery"
  108. >
  109. <el-option
  110. v-for="item in statusArr"
  111. :key="item.id"
  112. :label="item.name"
  113. :value="item.id"
  114. />
  115. </el-select>
  116. </el-form-item>
  117. <el-form-item>
  118. <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  119. <el-button icon="el-icon-refresh" @click="handleResetQuery">重置</el-button>
  120. </el-form-item>
  121. </el-form>
  122. <el-row :gutter="10" class="mb8">
  123. <el-col :span="9">
  124. <el-col :span="1.5">
  125. <el-tooltip class="item" effect="dark" content="刷新" placement="top">
  126. <el-button size="small" icon="el-icon-refresh" @click="handleRefresh" />
  127. </el-tooltip>
  128. </el-col>
  129. <el-col :span="1.5">
  130. <el-button
  131. v-if="checkPermission(['admin/rule/addErrorRule'])"
  132. type="primary"
  133. plain
  134. icon="el-icon-plus"
  135. size="small"
  136. @click="handleAdd"
  137. >新增</el-button>
  138. </el-col>
  139. </el-col>
  140. </el-row>
  141. <el-table v-loading="listLoading" :data="pageList" max-height="500">
  142. <el-table-column type="index" label="#" width="50" />
  143. <el-table-column label="字段" width="170" header-align="center" align="left">
  144. <template slot-scope="scope">
  145. <el-popover trigger="click" placement="top" width="300">
  146. <div style="max-height: 300px;overflow-y: auto;">{{ scope.row.auth }}</div>
  147. <div slot="reference" class="text-more-box">
  148. <el-tag style="width:150px;">{{ scope.row.auth }}</el-tag>
  149. </div>
  150. </el-popover>
  151. </template>
  152. </el-table-column>
  153. <el-table-column label="字段名称" width="160">
  154. <template slot-scope="scope">
  155. <el-popover trigger="click" placement="top" width="400">
  156. <div style="max-height: 400px;overflow-y: auto;">{{ scope.row.field }}</div>
  157. <div slot="reference" class="text-more-box">
  158. {{ scope.row.field }}
  159. </div>
  160. </el-popover>
  161. </template>
  162. </el-table-column>
  163. <!-- <el-table-column label="规则" width="130">
  164. <template slot-scope="scope">
  165. <el-tag style="width:110px;" type="info">{{ scope.row.rule }}</el-tag>
  166. </template>
  167. </el-table-column>
  168. <el-table-column prop="relation" label="关联字段" width="130" />
  169. <el-table-column label="关联规则" width="240">
  170. <template slot-scope="scope">
  171. <el-popover trigger="click" placement="top" width="400">
  172. <div style="max-height: 400px;overflow-y: auto;">{{ scope.row.relation_rule }}</div>
  173. <div slot="reference" class="text-more-box">
  174. {{ scope.row.relation_rule }}
  175. </div>
  176. </el-popover>
  177. </template>
  178. </el-table-column> -->
  179. <el-table-column prop="level" label="错误等级" width="110">
  180. <template slot-scope="scope">
  181. <span>
  182. <el-tag style="max-width: 90px" :type="scope.row.level === 0 ? 'danger' : info">
  183. {{ scope.row.level | formatSingleInArray(level) }}
  184. </el-tag>
  185. </span>
  186. </template>
  187. </el-table-column>
  188. <el-table-column prop="category" label="缺陷类别" width="80">
  189. <template slot-scope="scope">
  190. <span>{{ scope.row.category | formatSingleInArray(category) }}</span>
  191. </template>
  192. </el-table-column>
  193. <el-table-column label="规则描述" width="280">
  194. <template slot-scope="scope">
  195. <el-popover trigger="click" placement="top" width="400">
  196. <div style="max-height: 400px;overflow-y: auto;">{{ scope.row.desc }}</div>
  197. <div slot="reference" class="text-more-box">
  198. {{ scope.row.desc }}
  199. </div>
  200. </el-popover>
  201. </template>
  202. </el-table-column>
  203. <el-table-column prop="type" label="缺陷分类" width="130">
  204. <template slot-scope="scope">
  205. <span>{{ scope.row.type | formatSingleInArray(type) }}</span>
  206. </template>
  207. </el-table-column>
  208. <el-table-column prop="error_type" label="缺陷类型" width="80">
  209. <template slot-scope="scope">
  210. <span>{{ scope.row.error_type | formatSingleInArray(errorType) }}</span>
  211. </template>
  212. </el-table-column>
  213. <el-table-column key="status" label="状态" width="130">
  214. <template slot-scope="scope">
  215. <el-switch
  216. v-model="scope.row.status"
  217. active-color="#13ce66"
  218. :active-value="0"
  219. :inactive-value="1"
  220. @change="handleStatusChange(scope.row)"
  221. />
  222. </template>
  223. </el-table-column>
  224. <el-table-column prop="type" label="质控对象" width="130">
  225. <template slot-scope="scope">
  226. <span v-if="scope.row.ZKDX == 0">通用</span>
  227. <span v-if="scope.row.ZKDX == 1">临床</span>
  228. <span v-if="scope.row.ZKDX == 2">编码员</span>
  229. </template>
  230. </el-table-column>
  231. <el-table-column prop="type" label="质控分类" width="130">
  232. <template slot-scope="scope">
  233. <span v-if="scope.row.ZKFL == 0">通用</span>
  234. <span v-if="scope.row.ZKFL == 1">国考</span>
  235. <span v-if="scope.row.ZKFL == 2">卫统</span>
  236. <span v-if="scope.row.ZKFL == 3">医保</span>
  237. </template>
  238. </el-table-column>
  239. <el-table-column prop="type" label="运行节点" width="130">
  240. <template slot-scope="scope">
  241. <span>{{ scope.row.node }}</span>
  242. </template>
  243. </el-table-column>
  244. <el-table-column header-align="center" align="center" label="操作" width="80">
  245. <template slot-scope="scope">
  246. <el-button v-if="checkPermission(['admin/admin/editErrorRule'])" @click="handleUpdate(scope.row)">修改</el-button>
  247. <!-- <div>
  248. <el-popover
  249. placement="right"
  250. trigger="hover"
  251. popper-class="opera-popper"
  252. >
  253. <div>
  254. <el-button
  255. v-if="checkPermission(['admin/admin/editErrorRule'])"
  256. type="primary"
  257. icon="el-icon-edit"
  258. size="mini"
  259. circle
  260. @click="handleUpdate(scope.row)"
  261. />
  262. <el-button
  263. v-if="checkPermission(['admin/admin/delErrorRule'])"
  264. type="danger"
  265. icon="el-icon-delete"
  266. size="mini"
  267. circle
  268. @click="handleDelete(scope.row, scope.$index)"
  269. />
  270. </div>
  271. <i slot="reference" class="el-icon-more my-vertical-more" style="display: inline-block" />
  272. </el-popover>
  273. </div> -->
  274. </template>
  275. </el-table-column>
  276. <el-table-column label="备注" width="160">
  277. <template slot-scope="scope">
  278. <el-popover trigger="click" placement="top" width="400">
  279. <div style="max-height: 400px;overflow-y: auto;">{{ scope.row.BZ }}</div>
  280. <div slot="reference" class="text-more-box">
  281. {{ scope.row.BZ }}
  282. </div>
  283. </el-popover>
  284. </template>
  285. </el-table-column>
  286. </el-table>
  287. <pagination
  288. :auto-scroll="false"
  289. :total="listCount"
  290. :page="queryParams.page"
  291. :limit="queryParams.limit"
  292. @pagination="handlePagination"
  293. />
  294. <!-- 添加或修改对话框 -->
  295. <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="60%" top="8vh" append-to-body>
  296. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  297. <el-row>
  298. <el-col :span="12">
  299. <el-form-item label="字段" prop="auth">
  300. <el-input
  301. v-model="form.auth"
  302. type="textarea"
  303. :autosize="{ minRows: 1, maxRows: 3 }"
  304. resize="none"
  305. placeholder="验证字段"
  306. />
  307. </el-form-item>
  308. </el-col>
  309. <el-col :span="12">
  310. <el-form-item label="字段名称" prop="field">
  311. <el-input
  312. v-model="form.field"
  313. type="textarea"
  314. :autosize="{ minRows: 1, maxRows: 3 }"
  315. resize="none"
  316. placeholder="验证字段名称"
  317. />
  318. </el-form-item>
  319. </el-col>
  320. </el-row>
  321. <!-- <el-row>
  322. <el-col :span="12">
  323. <el-form-item label="关联字段" prop="relation">
  324. <el-input
  325. v-model="form.relation"
  326. type="textarea"
  327. :autosize="{ minRows: 1, maxRows: 3 }"
  328. resize="none"
  329. placeholder="关联字段"
  330. />
  331. </el-form-item>
  332. </el-col>
  333. <el-col :span="12">
  334. <el-form-item label="关联规则" prop="relation_rule">
  335. <el-input
  336. v-model="form.relation_rule"
  337. type="textarea"
  338. :autosize="{ minRows: 1, maxRows: 3 }"
  339. resize="none"
  340. placeholder="关联规则"
  341. />
  342. </el-form-item>
  343. </el-col>
  344. </el-row> -->
  345. <el-row>
  346. <!-- <el-col :span="12">
  347. <el-form-item label="验证规则" prop="rule">
  348. <el-input
  349. v-model="form.rule"
  350. type="textarea"
  351. :autosize="{ minRows: 1, maxRows: 3 }"
  352. resize="none"
  353. placeholder="验证规则"
  354. />
  355. </el-form-item>
  356. </el-col> -->
  357. <el-col :span="12">
  358. <el-form-item label="规则描述" prop="desc">
  359. <el-input
  360. v-model="form.desc"
  361. type="textarea"
  362. :autosize="{ minRows: 1, maxRows: 3 }"
  363. resize="none"
  364. placeholder="规则描述"
  365. />
  366. </el-form-item>
  367. </el-col>
  368. </el-row>
  369. <el-row>
  370. <el-col :span="12">
  371. <el-form-item label="错误类型" prop="type">
  372. <el-select v-model="form.category" placeholder="错误类型" style="width: 100%;">
  373. <el-option
  374. v-for="item in category"
  375. :key="item.id"
  376. :label="item.name"
  377. :value="item.id"
  378. />
  379. </el-select>
  380. </el-form-item>
  381. </el-col>
  382. <el-col :span="12">
  383. <el-form-item label="错误等级" prop="level">
  384. <el-select v-model="form.level" placeholder="错误等级" style="width: 100%;">
  385. <el-option
  386. v-for="item in level"
  387. :key="item.id"
  388. :label="item.name"
  389. :value="item.id"
  390. />
  391. </el-select>
  392. </el-form-item>
  393. </el-col>
  394. </el-row>
  395. <el-row>
  396. <el-col :span="12">
  397. <el-form-item label="缺陷类型" prop="type">
  398. <el-select v-model="form.error_type" placeholder="缺陷类型" style="width: 100%;">
  399. <el-option
  400. v-for="item in errorType"
  401. :key="item.id"
  402. :label="item.name"
  403. :value="item.id"
  404. />
  405. </el-select>
  406. </el-form-item>
  407. </el-col>
  408. <el-col :span="12">
  409. <el-form-item label="缺陷分类" prop="type">
  410. <el-select v-model="form.type" placeholder="缺陷分类" style="width: 100%;">
  411. <el-option
  412. v-for="item in type"
  413. :key="item.id"
  414. :label="item.name"
  415. :value="item.id"
  416. />
  417. </el-select>
  418. </el-form-item>
  419. </el-col>
  420. </el-row>
  421. <el-row>
  422. <el-col :span="12">
  423. <el-form-item label="扣分" prop="down">
  424. <el-input v-model="form.down" placeholder="扣分" />
  425. </el-form-item>
  426. </el-col>
  427. <el-col :span="12">
  428. <el-form-item label="状态" prop="status">
  429. <el-radio-group v-model="form.status">
  430. <el-radio
  431. v-for="item in statusArr"
  432. :key="item.id"
  433. :label="item.id"
  434. >{{ item.name }}</el-radio>
  435. </el-radio-group>
  436. </el-form-item>
  437. </el-col>
  438. </el-row>
  439. <el-row>
  440. <el-col :span="12">
  441. <el-form-item label="质控对象" prop="type">
  442. <el-select v-model="form.ZKDX" placeholder="质控对象" style="width: 100%;">
  443. <el-option
  444. v-for="item in zkdxType"
  445. :key="item.id"
  446. :label="item.name"
  447. :value="item.id"
  448. />
  449. </el-select>
  450. </el-form-item>
  451. </el-col>
  452. <el-col :span="12">
  453. <el-form-item label="质控分类" prop="type">
  454. <el-select v-model="form.ZKFL" placeholder="质控分类" style="width: 100%;">
  455. <el-option
  456. v-for="item in zkflType"
  457. :key="item.id"
  458. :label="item.name"
  459. :value="item.id"
  460. />
  461. </el-select>
  462. </el-form-item>
  463. </el-col>
  464. </el-row>
  465. <el-row>
  466. <el-col :span="12">
  467. <el-form-item label="运行节点" prop="node">
  468. <el-input v-model="form.node" placeholder="运行节点" />
  469. </el-form-item>
  470. </el-col>
  471. <el-col :span="12">
  472. <el-form-item label="备注" prop="BZ">
  473. <el-input v-model="form.BZ" placeholder="备注" />
  474. </el-form-item>
  475. </el-col>
  476. </el-row>
  477. </el-form>
  478. <div slot="footer" class="dialog-footer">
  479. <el-button type="primary" @click="submitForm">确 定</el-button>
  480. <el-button @click="cancel">取 消</el-button>
  481. </div>
  482. </el-dialog>
  483. <!--标记-->
  484. <el-dialog
  485. title="提示"
  486. :visible.sync="addVisible"
  487. width="30%"
  488. >
  489. <span>添加规则</span>
  490. <el-form>
  491. <el-row>
  492. <span>验证字段:</span>
  493. <el-input v-model="form.auth" placeholder="验证字段" />
  494. </el-row>
  495. <el-row>
  496. <span>验证字段名称:</span>
  497. <el-input v-model="form.field" placeholder="验证字段名称" />
  498. </el-row>
  499. <!-- <el-row>
  500. <span>验证规则:</span>
  501. <el-input v-model="form.rule" placeholder="验证规则" />
  502. </el-row> -->
  503. <!-- <el-row>
  504. <span>关联字段:</span>
  505. <el-input v-model="form.relation" placeholder="关联字段" />
  506. </el-row>
  507. <el-row>
  508. <span>关联规则:</span>
  509. <el-input v-model="form.relation_rule" placeholder="关联规则" />
  510. </el-row> -->
  511. <el-row>
  512. <span>规则描述:</span>
  513. <el-input v-model="form.desc" placeholder="规则描述" />
  514. </el-row>
  515. <el-row>
  516. <span>扣分:</span>
  517. <el-input v-model="form.down" placeholder="扣分" />
  518. </el-row>
  519. <el-row>
  520. <span>错误等级:</span>
  521. <el-select v-model="form.level">
  522. <el-option :value="0" label="强制" />
  523. <el-option :value="1" label="建议" />
  524. </el-select>
  525. </el-row>
  526. <el-row>
  527. <span>缺陷分类:</span>
  528. <el-select v-model="form.type">
  529. <el-option :value="0" label="患者基本信息" />
  530. <el-option :value="1" label="诊疗信息" />
  531. <el-option :value="2" label="费用信息" />
  532. </el-select>
  533. </el-row>
  534. <el-row>
  535. <span>缺陷类型:</span>
  536. <el-select v-model="form.error_type">
  537. <el-option :value="0" label="逻辑性" />
  538. <el-option :value="1" label="规范性" />
  539. <el-option :value="2" label="编码" />
  540. </el-select>
  541. </el-row>
  542. <el-row>
  543. <span>错误类型:</span>
  544. <el-select v-model="form.category">
  545. <el-option :value="0" label="A类" />
  546. <el-option :value="1" label="B类" />
  547. <el-option :value="2" label="C类" />
  548. <el-option :value="3" label="D类" />
  549. </el-select>
  550. </el-row>
  551. </el-form>
  552. <span slot="footer" class="dialog-footer">
  553. <el-button @click="addVisible=false">取 消</el-button>
  554. <el-button type="primary" @click="addReason">确 定</el-button>
  555. </span>
  556. </el-dialog>
  557. <el-dialog
  558. title="提示"
  559. :visible.sync="saveVisible"
  560. width="30%"
  561. >
  562. <span>修改规则</span>
  563. <el-form>
  564. <el-row>
  565. <span>验证字段:</span>
  566. <el-input v-model="row.auth" placeholder="验证字段" />
  567. </el-row>
  568. <el-row>
  569. <span>验证字段名称:</span>
  570. <el-input v-model="row.field" placeholder="验证字段名称" />
  571. </el-row>
  572. <!-- <el-row>
  573. <span>验证规则:</span>
  574. <el-input v-model="row.rule" placeholder="验证规则" />
  575. </el-row> -->
  576. <!-- <el-row>
  577. <span>关联字段:</span>
  578. <el-input v-model="row.relation" placeholder="关联字段" />
  579. </el-row>
  580. <el-row>
  581. <span>关联规则:</span>
  582. <el-input v-model="row.relation_rule" placeholder="关联规则" />
  583. </el-row> -->
  584. <el-row>
  585. <span>规则描述:</span>
  586. <el-input v-model="row.desc" placeholder="规则描述" />
  587. </el-row>
  588. <el-row>
  589. <span>扣分:</span>
  590. <el-input v-model="row.down" placeholder="扣分" />
  591. </el-row>
  592. <el-row>
  593. <span>错误等级:</span>
  594. <el-select v-model="row.level">
  595. <el-option :value="0" label="强制" />
  596. <el-option :value="1" label="建议" />
  597. </el-select>
  598. </el-row>
  599. <el-row>
  600. <span>缺陷分类:</span>
  601. <el-select v-model="row.type">
  602. <el-option :value="0" label="患者基本信息" />
  603. <el-option :value="1" label="诊疗信息" />
  604. <el-option :value="2" label="费用信息" />
  605. </el-select>
  606. </el-row>
  607. <el-row>
  608. <span>缺陷类型:</span>
  609. <el-select v-model="row.error_type">
  610. <el-option :value="0" label="逻辑性" />
  611. <el-option :value="1" label="规范性" />
  612. <el-option :value="2" label="编码" />
  613. </el-select>
  614. </el-row>
  615. <el-row>
  616. <span>错误类型dfsfsdfdsf:</span>
  617. <el-select v-model="row.category">
  618. <el-option
  619. v-for="item in category"
  620. :key="item.id"
  621. :label="item.label"
  622. :value="item.id"
  623. />
  624. </el-select>
  625. </el-row>
  626. </el-form>
  627. <span slot="footer" class="dialog-footer">
  628. <el-button @click="saveVisible=false">取 消</el-button>
  629. <el-button type="primary" @click="saveReason">确 定</el-button>
  630. </span>
  631. </el-dialog>
  632. </div>
  633. </template>
  634. <script>
  635. import { addConfig, configList, delConfig, saveConfig, updateStatus } from '@/api/config'
  636. import { scrollTo } from '@/utils/scroll-to'
  637. export default {
  638. data() {
  639. return {
  640. listCount: 0,
  641. pageList: [],
  642. listLoading: false,
  643. showSearch: false,
  644. search: true,
  645. queryParams: {
  646. page: 1,
  647. limit: 10,
  648. auth: undefined,
  649. field: undefined,
  650. desc: undefined,
  651. level: undefined,
  652. category: undefined,
  653. type: undefined,
  654. errorType: undefined,
  655. status: undefined,
  656. zkdxType: undefined,
  657. zkflType: undefined,
  658. node: undefined
  659. },
  660. dialogStatus: '',
  661. textMap: {
  662. update: '编辑规则',
  663. create: '创建规则'
  664. },
  665. category: [
  666. { 'id': 0, 'name': 'A类' },
  667. { 'id': 1, 'name': 'B类' },
  668. { 'id': 2, 'name': 'C类' },
  669. { 'id': 3, 'name': 'D类' }
  670. ],
  671. level: [
  672. { 'id': 0, 'name': '强制' },
  673. { 'id': 1, 'name': '建议' }
  674. ],
  675. type: [
  676. { 'id': 0, 'name': '患者基本信息' },
  677. { 'id': 1, 'name': '诊疗信息' },
  678. { 'id': 2, 'name': '费用信息' }
  679. ],
  680. errorType: [
  681. { 'id': 0, 'name': '逻辑性' },
  682. { 'id': 1, 'name': '规范性' },
  683. { 'id': 2, 'name': '编码' }
  684. ],
  685. statusArr: [
  686. { 'id': 0, 'name': '启用' },
  687. { 'id': 1, 'name': '停用' }
  688. ],
  689. zkdxType: [
  690. { 'id': 0, 'name': '通用' },
  691. { 'id': 1, 'name': '临床' },
  692. { 'id': 2, 'name': '编码员' }
  693. ],
  694. zkflType: [
  695. { 'id': 0, 'name': '通用' },
  696. { 'id': 1, 'name': '国考' },
  697. { 'id': 2, 'name': '卫统' },
  698. { 'id': 3, 'name': '医保' }
  699. ],
  700. title: '',
  701. open: false,
  702. form: {},
  703. rules: {
  704. // fee_name: [
  705. // { required: true, message: '项目名称不能为空', trigger: 'blur' }
  706. // ],
  707. // operation_name: [
  708. // { required: true, message: '手术名称不能为空', trigger: 'blur' }
  709. // ],
  710. // code: [
  711. // { required: true, message: '手术代码不能为空', trigger: 'blur' }
  712. // ]
  713. },
  714. // 标记
  715. saveVisible: false,
  716. addVisible: false,
  717. row: {}
  718. }
  719. },
  720. created() {
  721. this.getList()
  722. },
  723. methods: {
  724. // 搜索
  725. toggleSearch() {
  726. this.showSearch = !this.showSearch
  727. },
  728. handleRefresh() {
  729. this.getList()
  730. },
  731. handleResetQuery() {
  732. this.queryParams = {
  733. page: 1,
  734. limit: 10,
  735. auth: undefined,
  736. field: undefined,
  737. desc: undefined,
  738. level: undefined,
  739. category: undefined,
  740. type: undefined,
  741. errorType: undefined,
  742. status: undefined
  743. }
  744. this.getList()
  745. },
  746. handleQuery() {
  747. this.queryParams.page = 1
  748. this.getList()
  749. },
  750. handlePagination(param) {
  751. this.queryParams.page = param.page
  752. this.queryParams.limit = param.limit
  753. this.getList()
  754. },
  755. getList() {
  756. this.listLoading = true
  757. configList(this.queryParams).then(res => {
  758. this.pageList = res.p.list
  759. this.listCount = res.p.count
  760. this.listLoading = false
  761. scrollTo(300)
  762. }).catch(error => {
  763. console.log(error)
  764. })
  765. },
  766. cancel() {
  767. this.open = false
  768. this.reset()
  769. },
  770. reset() {
  771. this.form = {
  772. id: undefined,
  773. auth: undefined,
  774. field: undefined,
  775. // rule: undefined,
  776. category: 0,
  777. error_type: 0,
  778. type: 0,
  779. level: 0,
  780. down: 0,
  781. desc: undefined,
  782. // relation_rule: undefined,
  783. // relation: undefined,
  784. status: 0,
  785. zkdxType: 0,
  786. zkflType: 0,
  787. node: undefined,
  788. BZ: undefined
  789. }
  790. this.resetForm('form')
  791. },
  792. handleAdd() {
  793. this.reset()
  794. this.open = true
  795. this.title = '添加基础规则'
  796. },
  797. handleUpdate(row) {
  798. this.reset()
  799. const temp = Object.assign({}, row)
  800. this.form = temp
  801. this.form.status = parseInt(temp.status)
  802. this.open = true
  803. this.title = '修改基础规则'
  804. },
  805. submitForm: function() {
  806. this.$refs['form'].validate(valid => {
  807. if (valid) {
  808. if (this.form.id !== undefined) {
  809. saveConfig(this.form).then(res => {
  810. this.$message.success(res.m || '操作成功')
  811. this.open = false
  812. this.getList()
  813. })
  814. } else {
  815. addConfig(this.form).then(res => {
  816. this.$message.success(res.m || '操作成功')
  817. this.open = false
  818. this.getList()
  819. })
  820. }
  821. }
  822. })
  823. },
  824. handleStatusChange(row) {
  825. const statusIndex = this.statusArr.findIndex((value) => parseInt(value.id) === parseInt(row.status))
  826. this.$confirm('确认要更改为 <strong>' + this.statusArr[statusIndex].name + '</strong> 状态吗?', '提示', {
  827. dangerouslyUseHTMLString: true,
  828. confirmButtonText: '确定',
  829. cancelButtonText: '取消',
  830. type: 'warning'
  831. }).then(() => {
  832. updateStatus({ id: row.id, status: row.status }).then((res) => {
  833. this.$message.success(res.m || '操作成功')
  834. }).catch(function() {
  835. row.status = row.status === 0 ? 1 : 0
  836. })
  837. }).catch(function() {
  838. row.status = row.status === 0 ? 1 : 0
  839. })
  840. },
  841. handleDelete(row, index) {
  842. const indexNum = index + 1
  843. this.$confirm('是否确认删除第 <strong>' + indexNum + '</strong> 行的数据项?', '提示', {
  844. dangerouslyUseHTMLString: true,
  845. confirmButtonText: '确定',
  846. cancelButtonText: '取消',
  847. type: 'warning'
  848. }).then(() => {
  849. delConfig({ id: row.id }).then((res) => {
  850. this.$message.success(res.m || '操作成功')
  851. this.getList()
  852. })
  853. }).catch(function() {})
  854. },
  855. // 标记
  856. list() {
  857. configList(this.form).then(res => {
  858. this.pageList = res.p.list
  859. })
  860. },
  861. del(id) {
  862. delConfig({ config_id: id }).then(res => {
  863. this.$message.success(res.m || 'ok')
  864. this.list()
  865. })
  866. },
  867. addReason() {
  868. addConfig(this.form).then(res => {
  869. this.$message.success(res.m || 'ok')
  870. this.addVisible = false
  871. this.list()
  872. })
  873. },
  874. saveReason() {
  875. saveConfig(this.row).then(res => {
  876. this.$message.success(res.m || 'ok')
  877. this.saveVisible = false
  878. this.list()
  879. })
  880. }
  881. }
  882. }
  883. </script>
  884. <style lang="scss" scoped>
  885. ::v-deep .head-query-form{
  886. .el-form-item{
  887. .el-form-item__label{
  888. font-weight: 400 !important;
  889. }
  890. }
  891. }
  892. </style>