You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1690 lines
53 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="box">
  3. <div style="width: 150%">
  4. <el-card>
  5. <el-row style="margin-top: 20px; margin-left: 15px">
  6. <el-col :span="4">
  7. <el-autocomplete
  8. class="inline-input"
  9. v-model="pages.Filter"
  10. :fetch-suggestions="querySearch"
  11. placeholder="请输入内容"
  12. @select="handleSelect"
  13. >
  14. <template slot-scope="{ item }">
  15. <div
  16. class="name"
  17. @click="selsearch(item.id, item.medicalConclusionTypeId)"
  18. >
  19. {{ item.displayName }}
  20. </div>
  21. </template></el-autocomplete
  22. >
  23. </el-col>
  24. <el-col :span="7" style="margin-left: 5%">
  25. <el-col :span="6" style="margin-top: 10px; margin-left: 10px"
  26. >类别选择</el-col
  27. >
  28. <el-select
  29. filterable
  30. v-model="Selectvalue"
  31. placeholder="请选择"
  32. @change="isselctvalue"
  33. >
  34. <el-option
  35. v-for="item in Selectacategory"
  36. :key="item.id"
  37. :label="item.displayName"
  38. :value="item.id"
  39. >
  40. </el-option>
  41. </el-select>
  42. </el-col>
  43. </el-row>
  44. <div style="display: flex">
  45. <div style="width: 15%; margin-top: 20px">
  46. <el-tree
  47. :data="itemTypeId"
  48. :props="treeprops"
  49. @node-click="treeclick"
  50. ></el-tree>
  51. </div>
  52. <div style="width: 85%">
  53. <el-table
  54. :data="tableData"
  55. style="width: 95%; height: 500px"
  56. row-key="id"
  57. class="el-table__body-wrapper tbody"
  58. highlight-current-row
  59. @row-click="rowick"
  60. ref="tableData"
  61. >
  62. <el-table-column prop="id" label="编号" width="300">
  63. </el-table-column>
  64. <el-table-column prop="displayName" label="名称" width="">
  65. </el-table-column>
  66. <el-table-column prop="creatorName" label="创建者" width="">
  67. </el-table-column>
  68. <el-table-column prop="creationTime" label="创建时间" width="200">
  69. <template slot-scope="scope">
  70. {{ scope.row.creationTime | dateFormat }}
  71. </template>
  72. </el-table-column>
  73. <el-table-column prop="lastModifierName" label="修改者" width="">
  74. </el-table-column>
  75. <el-table-column
  76. prop="lastModificationTime"
  77. label="修改时间"
  78. width="200"
  79. >
  80. <template slot-scope="scope">
  81. {{ scope.row.lastModificationTime | dateFormat }}
  82. </template>
  83. </el-table-column>
  84. <el-table-column
  85. label="结果类别"
  86. prop="resultTemplateTypeFlag"
  87. ></el-table-column>
  88. <el-table-column label="操作">
  89. <template>
  90. <el-tag
  91. class="move"
  92. style="cursor: move; margin-left: 15px"
  93. draggable="true"
  94. >
  95. <i
  96. class="el-icon-d-caret"
  97. style="width: 1rem; height: 1rem"
  98. ></i>
  99. </el-tag>
  100. </template>
  101. </el-table-column>
  102. </el-table>
  103. </div>
  104. </div>
  105. </el-card>
  106. </div>
  107. <el-dialog
  108. :title="title == 1 ? '新增' : '编辑'"
  109. :visible.sync="dialogVisible"
  110. width="70%"
  111. >
  112. <el-form ref="form" :model="form" label-width="110px" :rules="rules">
  113. <el-row>
  114. <el-col :span="8">
  115. <el-form-item label="名称" prop="displayName">
  116. <el-input v-model="form.displayName"></el-input>
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="8">
  120. <el-form-item label="英文缩写" prop="englishShortName">
  121. <el-input v-model="form.englishShortName"></el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="8">
  125. <el-form-item label="项目类别" prop="itemTypeId">
  126. <el-cascader
  127. v-model="form.itemTypeId"
  128. :options="itemTypeId"
  129. :props="props"
  130. :show-all-levels="false"
  131. >
  132. </el-cascader>
  133. <!-- <el-select v-model="form.itemTypeId" placeholder="请选择">
  134. <el-option
  135. v-for="item in itemTypeId"
  136. :key="item.id"
  137. :label="item.displayName"
  138. :value="item.id"
  139. >
  140. </el-option>
  141. </el-select> -->
  142. </el-form-item>
  143. </el-col>
  144. <el-col :span="8">
  145. <el-form-item label="价格" prop="price">
  146. <el-input v-model="form.price"></el-input>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="8">
  150. <el-form-item label="价表项目编码" prop="priceItemId">
  151. <el-select v-model="form.priceItemId" placeholder="请选择">
  152. <el-option
  153. v-for="item in priceItemId"
  154. :key="item.id"
  155. :label="item.displayName"
  156. :value="item.id"
  157. >
  158. </el-option>
  159. </el-select>
  160. </el-form-item>
  161. </el-col>
  162. <el-col :span="8">
  163. <el-form-item label="单位" prop="unitId">
  164. <el-select v-model="form.unitId" placeholder="请选择">
  165. <el-option
  166. v-for="item in unitId"
  167. :key="item.id"
  168. :label="item.displayName"
  169. :value="item.id"
  170. >
  171. </el-option>
  172. </el-select>
  173. </el-form-item>
  174. </el-col>
  175. <el-col :span="8">
  176. <el-form-item label="默认结果" prop="defaultResult">
  177. <el-input v-model="form.defaultResult"></el-input>
  178. </el-form-item>
  179. </el-col>
  180. <el-col :span="8">
  181. <el-form-item label="参考范围类别" prop="referenceRangeTypeFlag">
  182. <el-input v-model="form.referenceRangeTypeFlag"></el-input>
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="8">
  186. <el-form-item label="生成小结" prop="isProduceSummary">
  187. <el-input v-model="form.isProduceSummary"></el-input>
  188. </el-form-item>
  189. </el-col>
  190. <el-col :span="8">
  191. <el-form-item label="名称进入小结" prop="isNameIntoSummary">
  192. <el-select v-model="form.isNameIntoSummary" placeholder="请选择">
  193. <el-option
  194. v-for="item in isNameIntoSummary"
  195. :key="item.value"
  196. :label="item.label"
  197. :value="item.value"
  198. >
  199. </el-option>
  200. </el-select>
  201. </el-form-item>
  202. </el-col>
  203. <el-col :span="8">
  204. <el-form-item label="启用诊断函数" prop="isDiagnosisFunction">
  205. <el-select
  206. v-model="form.isDiagnosisFunction"
  207. placeholder="请选择"
  208. >
  209. <el-option
  210. v-for="item in isDiagnosisFunction"
  211. :key="item.value"
  212. :label="item.label"
  213. :value="item.value"
  214. >
  215. </el-option>
  216. </el-select>
  217. </el-form-item>
  218. </el-col>
  219. <el-col :span="8">
  220. <el-form-item label="诊断函数" prop="diagnosisFunction">
  221. <el-input v-model="form.diagnosisFunction"></el-input>
  222. </el-form-item>
  223. </el-col>
  224. <el-col :span="8">
  225. <el-form-item label="是计算项目" prop="isCalculationItem">
  226. <el-select v-model="form.isCalculationItem" placeholder="请选择">
  227. <el-option
  228. v-for="item in isCalculationItem"
  229. :key="item.value"
  230. :label="item.label"
  231. :value="item.value"
  232. >
  233. </el-option>
  234. </el-select>
  235. </el-form-item>
  236. </el-col>
  237. <el-col :span="8">
  238. <el-form-item label="计算函数" prop="calculationFunction">
  239. <el-input v-model="form.calculationFunction"></el-input>
  240. </el-form-item>
  241. </el-col>
  242. <el-col :span="8">
  243. <el-form-item label="继续处理" prop="isContinueProcess">
  244. <el-select v-model="form.isContinueProcess" placeholder="请选择">
  245. <el-option
  246. v-for="item in isContinueProcess"
  247. :key="item.value"
  248. :label="item.label"
  249. :value="item.value"
  250. >
  251. </el-option>
  252. </el-select>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="8">
  256. <el-form-item label="结果模板" prop="resultTemplateTypeFlag">
  257. <el-input v-model="form.resultTemplateTypeFlag"></el-input>
  258. </el-form-item>
  259. </el-col>
  260. <el-col :span="8">
  261. <el-form-item label="输入结果校验" prop="inputCheck">
  262. <el-input v-model="form.inputCheck"></el-input>
  263. </el-form-item>
  264. </el-col>
  265. <el-col :span="8">
  266. <el-form-item label="启用" prop="isActive">
  267. <el-select v-model="form.isActive" placeholder="请选择">
  268. <el-option
  269. v-for="item in isActive"
  270. :key="item.value"
  271. :label="item.label"
  272. :value="item.value"
  273. >
  274. </el-option>
  275. </el-select>
  276. </el-form-item>
  277. </el-col>
  278. </el-row>
  279. <!-- -->
  280. <el-divider></el-divider>
  281. <el-row>
  282. <el-col :span="5">
  283. <el-form-item label="创建者">
  284. <el-input v-model="form.creatorName" disabled></el-input>
  285. </el-form-item>
  286. </el-col>
  287. <el-col :span="7">
  288. <el-form-item label="创建时间" style="margin-left: -5%">
  289. <el-input
  290. :value="form.creationTime | dateFormat"
  291. disabled
  292. style="width: 90%"
  293. ></el-input>
  294. </el-form-item>
  295. </el-col>
  296. <el-col :span="5">
  297. <el-form-item label="修改者" style="margin-left: -25%">
  298. <el-input v-model="form.creatorName" disabled></el-input>
  299. </el-form-item>
  300. </el-col>
  301. <el-col :span="7">
  302. <el-form-item label="修改时间" style="margin-left: -5%">
  303. <el-input
  304. :value="form.lastModificationTime | dateFormat"
  305. disabled
  306. style="width: 90%"
  307. ></el-input>
  308. </el-form-item>
  309. </el-col>
  310. </el-row>
  311. </el-form>
  312. <span slot="footer" class="dialog-footer">
  313. <el-button @click="dialogVisible = false"> </el-button>
  314. <el-button type="primary" @click="Onsubmit"> </el-button>
  315. </span>
  316. </el-dialog>
  317. <!-- 按钮区域 -->
  318. <div style="margin-left: 10px; margin-top: 5%">
  319. <el-button type="primary" @click="add">新增</el-button>
  320. <el-button
  321. type="primary"
  322. @click="editpopup"
  323. style="margin-left: 0; margin-top: 10px"
  324. >编辑</el-button
  325. >
  326. <div style="margin-top: 10px">
  327. <el-button type="danger" @click="delsrts">删除</el-button>
  328. </div>
  329. <div style="margin-top: 10px">
  330. <el-button type="primary" @click="topping">置顶</el-button>
  331. </div>
  332. <div style="margin-top: 10px">
  333. <el-button type="primary" @click="toppings">置底</el-button>
  334. </div>
  335. <div style="margin-top: 10px">
  336. <el-button type="primary" :disabled="isshow" @click="assertion"
  337. >排序</el-button
  338. >
  339. </div>
  340. <div style="margin-top: 5px">
  341. <el-button type="primary" :disabled="isshow" @click="cancellation"
  342. >取消</el-button
  343. >
  344. </div>
  345. <div style="margin-top: 5px">
  346. <el-button
  347. type="primary"
  348. size="mini"
  349. @click="resulttemplate"
  350. style="width: 70px; height: 50px"
  351. >结果模板</el-button
  352. >
  353. </div>
  354. <div style="margin-top: 5px">
  355. <el-button
  356. type="primary"
  357. size="mini"
  358. @click="referencerange"
  359. style="width: 70px; height: 50px"
  360. >参考范围</el-button
  361. >
  362. </div>
  363. </div>
  364. <!-- 结果模板弹框 -->
  365. <el-dialog title="结果模板" :visible.sync="rurestdialogVisible" width="80%">
  366. <div style="display: flex">
  367. <div style="width: 95%">
  368. <el-table
  369. border=""
  370. :data="reusttableData"
  371. @row-click="reustclick"
  372. highlight-current-row
  373. >
  374. <el-table-column label="编号" prop="id"></el-table-column>
  375. <el-table-column label="项目编号" prop="itemId"></el-table-column>
  376. <el-table-column label="创建时间" width="200">
  377. <template slot-scope="scope">
  378. {{ scope.row.creationTime | dateFormat }}
  379. </template>
  380. </el-table-column>
  381. <el-table-column label="修改时间" width="200">
  382. <template slot-scope="scope">
  383. {{ scope.row.lastModificationTime | dateFormat }}
  384. </template>
  385. </el-table-column>
  386. <el-table-column label="结果" prop="result"></el-table-column>
  387. <el-table-column label="项目结果">
  388. <template slot-scope="scope">
  389. {{ scope.row.id }}
  390. </template>
  391. </el-table-column>
  392. <el-table-column label="诊断">
  393. <template> </template>
  394. </el-table-column>
  395. </el-table>
  396. </div>
  397. <div style="margin-top: 5px; margin-left: 15px">
  398. <el-button type="primary" @click="increase">添加1</el-button>
  399. <div style="margin-top: 5px">
  400. <el-button type="primary" @click="resultediting">编辑</el-button>
  401. </div>
  402. <div style="margin-top: 5px">
  403. <el-button type="primary" @click="delemtdelite">删除</el-button>
  404. </div>
  405. <!-- <div style="margin-top: 5px">
  406. <el-button type="primary" @click="templatecategory"
  407. >模板类别</el-button
  408. >
  409. </div> -->
  410. <div style="margin-top: 5px">
  411. <el-button type="primary" @click="diagnosticmatching"
  412. >诊断匹配</el-button
  413. >
  414. </div>
  415. </div>
  416. </div>
  417. <span slot="footer" class="dialog-footer">
  418. <el-button @click="rurestdialogVisible = false"> </el-button>
  419. <el-button type="primary" @click="rurestdialogVisible = false"
  420. > </el-button
  421. >
  422. </span>
  423. </el-dialog>
  424. <!-- 结果模板添加或者修改弹框 -->
  425. <el-dialog
  426. :title="ruesttiele == 1 ? '新增' : '修改'"
  427. :visible.sync="ruesttieledialogVisible"
  428. width="80%"
  429. >
  430. <el-form :model="rusetform" ref="rusetform" label-width="100px">
  431. <el-row>
  432. <!-- <el-col :span="8">
  433. <el-form-item label="项目">
  434. <el-select v-model="rusetform.itemId" placeholder="请选择">
  435. <el-option
  436. v-for="item in itemId"
  437. :key="item.id"
  438. :label="item.displayName"
  439. :value="item.id"
  440. >
  441. </el-option>
  442. </el-select>
  443. </el-form-item>
  444. </el-col> -->
  445. <el-col :span="8">
  446. <el-form-item label="结果">
  447. <el-input v-model="rusetform.result"></el-input>
  448. </el-form-item>
  449. </el-col>
  450. <el-col :span="8">
  451. <el-form-item label="诊断编号">
  452. <el-select v-model="rusetform.diagnosisId" placeholder="请选择">
  453. <el-option
  454. v-for="item in diagnosisId"
  455. :key="item.id"
  456. :label="item.displayName"
  457. :value="item.id"
  458. >
  459. </el-option>
  460. </el-select>
  461. </el-form-item>
  462. </el-col>
  463. <el-col :span="8">
  464. <el-form-item label="小结名称">
  465. <el-select
  466. v-model="rusetform.isNameIntoSummary"
  467. placeholder="请选择"
  468. >
  469. <el-option
  470. v-for="item in isNameIntoSummary"
  471. :key="item.value"
  472. :label="item.label"
  473. :value="item.value"
  474. >
  475. </el-option>
  476. </el-select>
  477. </el-form-item>
  478. </el-col>
  479. <el-col :span="8">
  480. <el-form-item label="进入小结">
  481. <el-select
  482. v-model="rusetform.isResultIntoSummary"
  483. placeholder="请选择"
  484. >
  485. <el-option
  486. v-for="item in isResultIntoSummary"
  487. :key="item.value"
  488. :label="item.label"
  489. :value="item.value"
  490. >
  491. </el-option>
  492. </el-select>
  493. </el-form-item>
  494. </el-col>
  495. <el-col :span="8">
  496. <el-form-item label="结果状态">
  497. <el-select
  498. v-model="rusetform.resultStatusId"
  499. placeholder="请选择"
  500. >
  501. <el-option
  502. v-for="item in resultStatusId"
  503. :key="item.id"
  504. :label="item.displayName"
  505. :value="item.id"
  506. >
  507. </el-option>
  508. </el-select>
  509. </el-form-item>
  510. </el-col>
  511. </el-row>
  512. </el-form>
  513. <span slot="footer" class="dialog-footer">
  514. <el-button @click="ruesttieledialogVisible = false"> </el-button>
  515. <el-button type="primary" @click="rusteronsubmit"> </el-button>
  516. </span>
  517. </el-dialog>
  518. <!-- 参考范围弹框 -->
  519. <el-dialog
  520. title="参考范围"
  521. :visible.sync="referencerangedialogVisible"
  522. width="80%"
  523. >
  524. <el-row>
  525. <el-col :span="8">
  526. <span>参考范围类型</span>
  527. <el-select
  528. v-model="referencerangevalue"
  529. filterable
  530. placeholder="请选择"
  531. @change="selecttype"
  532. >
  533. <el-option
  534. v-for="item in referencerangedata"
  535. :key="item.value"
  536. :label="item.label"
  537. :value="item.value"
  538. >
  539. </el-option>
  540. </el-select>
  541. </el-col>
  542. </el-row>
  543. <!-- //无参考范围 2223456-->
  544. <el-card
  545. v-if="referencerangevalue == 0"
  546. style="margin-top: 20px"
  547. ></el-card>
  548. <!-- 数字型参考范围 -->
  549. <div style="display: flex" v-if="referencerangevalue == 1">
  550. <div style="width: 95%">
  551. <el-card style="margin-top: 20px">
  552. <el-table :data="referencerangedata">
  553. <el-table-column label="性别" prop="gender">
  554. <template slot-scope="scope">
  555. <el-select
  556. v-model="sexname[scope.row.displayName - 1]"
  557. placeholder="请选择"
  558. >
  559. <el-option
  560. v-for="item in sexid"
  561. :key="item.id"
  562. :label="item.displayName"
  563. :value="item.id"
  564. >
  565. </el-option>
  566. </el-select>
  567. </template>
  568. </el-table-column>
  569. <el-table-column label="年龄范围">
  570. <template slot-scope="item">
  571. <el-input
  572. v-model="item.row.name"
  573. @blur="blurInput(item.row.id, 'name', item.row.name)"
  574. ></el-input>
  575. </template>
  576. </el-table-column>
  577. <el-table-column label="参考范围值">
  578. <template slot-scope="item">
  579. <el-input v-model="item.row.displayName"></el-input>
  580. </template>
  581. </el-table-column>
  582. <!-- <el-table-column label="警告下限"></el-table-column> -->
  583. <el-table-column label="警告范围">
  584. <template slot-scope="item">
  585. <el-input v-model="item.row.aaa"></el-input>
  586. </template>
  587. </el-table-column>
  588. <el-table-column label="诊断范围">
  589. <template slot-scope="scope">
  590. <el-select
  591. v-model="value[scope.row.displayName - 1]"
  592. placeholder="请选择"
  593. >
  594. <el-option
  595. v-for="item in scopediagnostic"
  596. :key="item.id"
  597. :label="item.displayName"
  598. :value="item.id"
  599. >
  600. </el-option>
  601. </el-select>
  602. </template>
  603. </el-table-column>
  604. </el-table>
  605. </el-card>
  606. </div>
  607. <div style="margin-left: 10px; margin-top: 30px">
  608. <el-button type="primary" @click="digitaladdion">添加</el-button>
  609. <div style="margin-top: 5px">
  610. <el-button
  611. type="primary"
  612. size="mini"
  613. @click="diagnosticsettings"
  614. style="width: 70px; height: 50px"
  615. >诊断设置</el-button
  616. >
  617. </div>
  618. </div>
  619. </div>
  620. <!-- 字符型参考范围 -->
  621. <div v-if="referencerangevalue == 2">
  622. <div style="margin: 20px 0; display: flex">
  623. <div style="width: 90%">
  624. <el-input
  625. type="textarea"
  626. placeholder="请输入内容"
  627. v-model="fssubdex"
  628. maxlength="300"
  629. show-word-limit
  630. style="height: 50px"
  631. >
  632. </el-input>
  633. </div>
  634. <div style="width: 10%">
  635. <div style="margin-top: 5px">
  636. <el-button
  637. type="primary"
  638. size="mini"
  639. @click="diagnosticsettings"
  640. style="width: 70px; height: 50px; margin-left: 10px"
  641. >诊断设置</el-button
  642. >
  643. </div>
  644. <!-- <div style="margin-top: 10px; margin-left: 10px">
  645. <el-button type="primary" @click="adddiagnosis"
  646. >增加诊断</el-button
  647. >
  648. </div> -->
  649. </div>
  650. </div>
  651. </div>
  652. <!-- 性激素参考范围 -->
  653. <div v-if="referencerangevalue == 2"></div>
  654. <span slot="footer" class="dialog-footer">
  655. <el-button @click="referencerangedialogVisible = false"
  656. > </el-button
  657. >
  658. <el-button type="primary" @click="determinetype"> </el-button>
  659. </span>
  660. </el-dialog>
  661. <!-- 项目结果模板弹框 -->
  662. <el-dialog
  663. title="结果模板"
  664. :visible.sync="projectdialogVisible"
  665. width="80%"
  666. >
  667. <div style="display: flex">
  668. <div style="width: 95%">
  669. <el-table :data="projectdata">
  670. <el-table-column label="编号" prop="id"> </el-table-column>
  671. <el-table-column label="结果" prop="result"> </el-table-column>
  672. <el-table-column label="修改者" prop="lastModifierName">
  673. </el-table-column>
  674. <el-table-column label="修改时间" prop="lastModificationTime">
  675. <template slot-scope="scope">
  676. {{ scope.row.lastModificationTime | dateFormat }}
  677. </template>
  678. </el-table-column>
  679. </el-table>
  680. </div>
  681. <!-- 结果模板 -->
  682. <div style="margin-left: 10px; margin-top: 5%">
  683. <el-button type="primary" @click="resultaddition">添加</el-button>
  684. </div>
  685. </div>
  686. <span slot="footer" class="dialog-footer">
  687. <el-button @click="projectdialogVisible = false"> </el-button>
  688. <el-button type="primary" @click="projectdialogVisible = false"
  689. > </el-button
  690. >
  691. </span>
  692. </el-dialog>
  693. <!--诊断匹配弹框-->
  694. <el-dialog
  695. title="诊断匹配"
  696. :visible.sync="diagnosdialogVisible"
  697. width="80%"
  698. >
  699. <div style="display: flex">
  700. <div style="width: 95%">
  701. <el-table :data="diagnosticdata">
  702. <el-table-column label="编号" prop="id"></el-table-column>
  703. <el-table-column label="名称" prop="displayName"></el-table-column>
  704. <el-table-column
  705. label="创建者"
  706. prop="creatorName"
  707. ></el-table-column>
  708. <el-table-column label="创建时间" prop="creationTime">
  709. <template slot-scope="scope">
  710. {{ scope.row.creationTime | dateFormat }}
  711. </template>
  712. </el-table-column>
  713. <el-table-column
  714. label="修改者"
  715. prop="lastModifierName"
  716. ></el-table-column>
  717. <el-table-column label="修改时间" prop="lastModificationTime">
  718. <template slot-scope="scope">
  719. {{ scope.row.lastModificationTime | dateFormat }}
  720. </template>
  721. </el-table-column>
  722. </el-table>
  723. </div>
  724. <div style="margin-left: 10px; margin-top: 4%">
  725. <el-button type="primary" @click="adddiagnosis">增加诊断</el-button>
  726. </div>
  727. </div>
  728. <span slot="footer" class="dialog-footer">
  729. <el-button @click="diagnosdialogVisible = false"> </el-button>
  730. <el-button type="primary" @click="diagnosdialogVisible = false"
  731. > </el-button
  732. >
  733. </span>
  734. </el-dialog>
  735. <!-- 增加诊断弹框 -->
  736. <el-dialog title="诊断编辑" :visible.sync="diagnosticediting" width="80%">
  737. <el-form :model="editdigoisceditingform">
  738. <el-row>
  739. <el-col :span="8">
  740. <el-form-item label="名称" label-width="100px">
  741. <el-input v-model="editdigoisceditingform.displayName"></el-input>
  742. </el-form-item>
  743. </el-col>
  744. <el-col :span="7" style="margin-left: 20px">
  745. <el-form-item label="项目类别">
  746. <el-cascader
  747. v-model="editdigoisceditingform.itemTypeId"
  748. :options="itemTypeId"
  749. :show-all-levels="false"
  750. :props="props"
  751. ></el-cascader>
  752. </el-form-item>
  753. </el-col>
  754. <el-col :span="8">
  755. <el-form-item label="建议名称" label-width="100px">
  756. <el-input
  757. v-model="editdigoisceditingform.suggestionName"
  758. ></el-input>
  759. </el-form-item>
  760. </el-col>
  761. <el-col :span="8" style="margin-left: 4%">
  762. <el-form-item label="是疾病">
  763. <el-select
  764. v-model="editdigoisceditingform.isIll"
  765. placeholder="请选择"
  766. >
  767. <el-option
  768. v-for="item in isIll"
  769. :key="item.value"
  770. :label="item.label"
  771. :value="item.value"
  772. >
  773. </el-option>
  774. </el-select>
  775. </el-form-item>
  776. </el-col>
  777. <el-col :span="8">
  778. <el-form-item label="总监模板">
  779. <el-select
  780. v-model="editdigoisceditingform.isSummaryTemplate"
  781. placeholder="请选择"
  782. >
  783. <el-option
  784. v-for="item in isSummaryTemplate"
  785. :key="item.value"
  786. :label="item.label"
  787. :value="item.value"
  788. >
  789. </el-option>
  790. </el-select>
  791. </el-form-item>
  792. </el-col>
  793. <el-col :span="8">
  794. <el-form-item label="适用性别">
  795. <el-select
  796. v-model="editdigoisceditingform.forSexId"
  797. placeholder="请选择"
  798. >
  799. <el-option
  800. v-for="item in forSexId"
  801. :key="item.id"
  802. :label="item.displayName"
  803. :value="item.id"
  804. >
  805. </el-option>
  806. </el-select>
  807. </el-form-item>
  808. </el-col>
  809. <el-col :span="8">
  810. <el-form-item label="诊断级别">
  811. <el-select
  812. v-model="editdigoisceditingform.diagnosisLevelId"
  813. placeholder="请选择"
  814. >
  815. <el-option
  816. v-for="item in diagnosisLevelId"
  817. :key="item.id"
  818. :label="item.displayName"
  819. :value="item.id"
  820. >
  821. </el-option>
  822. </el-select>
  823. </el-form-item>
  824. </el-col>
  825. </el-row>
  826. </el-form>
  827. <span slot="footer" class="dialog-footer">
  828. <el-button @click="diagnosticediting = false"> </el-button>
  829. <el-button type="primary" @click="diagnosticsadd"> </el-button>
  830. </span>
  831. </el-dialog>
  832. <!--诊断设置弹框 -->
  833. <el-dialog title="诊断建议设置" :visible.sync="diagnostisbox" width="80%">
  834. <div style="display: flex">
  835. <div style="width: 95%">
  836. <el-card>
  837. <el-row>
  838. <el-col :span="8">
  839. <el-select v-model="value" placeholder="请选择">
  840. <el-option
  841. v-for="item in itemTypeId"
  842. :key="item.id"
  843. :label="item.displayName"
  844. :value="item.id"
  845. >
  846. </el-option>
  847. </el-select>
  848. </el-col>
  849. <el-col :span="8"> 2122 </el-col>
  850. </el-row>
  851. <!-- table部分 -->
  852. <el-row> </el-row>
  853. </el-card>
  854. </div>
  855. </div>
  856. <span slot="footer" class="dialog-footer">
  857. <el-button @click="diagnostisbox = false"> </el-button>
  858. <el-button type="primary" @click="diagnostisbox = false"
  859. > </el-button
  860. >
  861. </span>
  862. </el-dialog>
  863. <!-- -->
  864. </div>
  865. </template>
  866. <script>
  867. import { yzstr } from "@/utlis/validate";
  868. import {
  869. getporjectlists,
  870. projectlist,
  871. addproject,
  872. priceitemlist,
  873. posjrctid,
  874. projectedit,
  875. projectdeleft,
  876. projttitem,
  877. projectdreog,
  878. } from "@/request/commonapi";
  879. import { unitlist } from "@/request/systemapi";
  880. import Sortable from "sortablejs";
  881. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  882. export default {
  883. data() {
  884. return {
  885. value: "",
  886. diagnostisbox: false, //诊断设置弹框的方法
  887. // tabelform: {
  888. // ageLowerLimit: "input无法输入",
  889. // },
  890. sexname: [],
  891. sexid: [],
  892. treeprops: {
  893. label: "displayName",
  894. value: "id",
  895. children: "treeChildren",
  896. }, //左侧树形结构需要的数据
  897. editdigoisceditingform: {
  898. displayName: "",
  899. itemTypeId: "",
  900. suggestionName: "",
  901. isIll: "",
  902. isSummaryTemplate: "",
  903. forSexId: "",
  904. diagnosisLevelId: "",
  905. }, //诊断编辑需要绑定的对象诊断所需要的编辑
  906. diagnosticediting: false, //诊断编辑
  907. diagnosdialogVisible: false, //匹配诊断
  908. diagnosticdata: [], //匹配诊断
  909. projectdata: [], //结果模板
  910. projectdialogVisible: false,
  911. itemId: [], //项目id
  912. diagnosisId: [], //诊断
  913. rusetform: {
  914. itemId: "",
  915. result: "",
  916. diagnosisId: "",
  917. isNameIntoSummary: "",
  918. isResultIntoSummary: "",
  919. resultStatusId: "",
  920. simpleCode: "",
  921. }, //项目结果模板需要的数据
  922. resultStatusId: [], //结果状态
  923. isNameIntoSummary: [
  924. {
  925. value: "Y",
  926. label: "是",
  927. },
  928. {
  929. value: "N",
  930. label: "否",
  931. },
  932. ], //小结名称
  933. isResultIntoSummary: [
  934. {
  935. value: "Y",
  936. label: "是",
  937. },
  938. {
  939. value: "N",
  940. label: "否",
  941. },
  942. ], //进入小结
  943. ruesttiele: 1,
  944. ruesttieledialogVisible: false,
  945. referencerangedata: [
  946. {
  947. value: "0",
  948. label: "无参考范围",
  949. },
  950. {
  951. value: "1",
  952. label: "数字型参考范围",
  953. },
  954. {
  955. value: "2",
  956. label: "字符型参考范围",
  957. },
  958. {
  959. value: "3",
  960. label: "性激素参考范围",
  961. },
  962. ], //参考范围下拉框
  963. referencerangevalue: "0",
  964. referencerangedialogVisible: false, //参考范围弹框
  965. Selectvalue: "",
  966. Selectacategory: [],
  967. rurestdialogVisible: false,
  968. isshow: true,
  969. reusttableData: [],
  970. tableData: [],
  971. initTableData: [],
  972. pages: {
  973. Filter: "",
  974. Sorting: "",
  975. SkipCount: 0,
  976. MaxResultCount: 100,
  977. },
  978. title: 1,
  979. form: {
  980. displayName: "",
  981. englishShortName: "",
  982. itemTypeId: "",
  983. price: "",
  984. priceItemId: "",
  985. unitId: "",
  986. defaultResult: "",
  987. referenceRangeTypeFlag: "",
  988. isProduceSummary: "",
  989. isNameIntoSummary: "",
  990. isDiagnosisFunction: "",
  991. diagnosisFunction: "",
  992. isCalculationItem: "",
  993. calculationFunction: "",
  994. isContinueProcess: "",
  995. resultTemplateTypeFlag: "",
  996. inputCheck: "",
  997. isActive: "",
  998. },
  999. isProduceSummary: [
  1000. {
  1001. value: "Y",
  1002. label: "是",
  1003. },
  1004. {
  1005. value: "N",
  1006. label: "否",
  1007. },
  1008. ], //生成小结
  1009. isNameIntoSummary: [
  1010. {
  1011. value: "Y",
  1012. label: "是",
  1013. },
  1014. {
  1015. value: "N",
  1016. label: "否",
  1017. },
  1018. ], //名称进入小结
  1019. isDiagnosisFunction: [
  1020. {
  1021. value: "Y",
  1022. label: "是",
  1023. },
  1024. {
  1025. value: "N",
  1026. label: "否",
  1027. },
  1028. ], //启用诊断函数
  1029. isCalculationItem: [
  1030. {
  1031. value: "Y",
  1032. label: "是",
  1033. },
  1034. {
  1035. value: "N",
  1036. label: "否",
  1037. },
  1038. ], //是计算项目
  1039. isContinueProcess: [
  1040. {
  1041. value: "Y",
  1042. label: "是",
  1043. },
  1044. {
  1045. value: "N",
  1046. label: "否",
  1047. },
  1048. ], //是继续处理
  1049. inputCheck: [
  1050. {
  1051. value: "Y",
  1052. label: "是",
  1053. },
  1054. {
  1055. value: "N",
  1056. label: "否",
  1057. },
  1058. ], //输入结果校验公式
  1059. isActive: [
  1060. {
  1061. value: "Y",
  1062. label: "是",
  1063. },
  1064. {
  1065. value: "N",
  1066. label: "否",
  1067. },
  1068. ], //启用
  1069. dialogVisible: false,
  1070. rules: {
  1071. displayName: [
  1072. { required: true, message: "请输入名称", trigger: "blur" },
  1073. ],
  1074. englishShortName: [
  1075. { required: true, message: "请输入英文缩写", trigger: "blur" },
  1076. ],
  1077. itemTypeId: [
  1078. { required: true, message: "请输入项目类别", trigger: "blur" },
  1079. ],
  1080. price: [{ required: true, message: "请输入价格", trigger: "blur" }],
  1081. priceItemId: [
  1082. { required: true, message: "请输入价表项目编码", trigger: "blur" },
  1083. ],
  1084. unitId: [{ required: true, message: "请输入单位", trigger: "blur" }],
  1085. defaultResult: [
  1086. { required: true, message: "请输入默认结果", trigger: "blur" },
  1087. ],
  1088. referenceRangeTypeFlag: [
  1089. { required: true, message: "请输入参考范围类别", trigger: "blur" },
  1090. ],
  1091. isProduceSummary: [
  1092. { required: true, message: "请选择是生成小结", trigger: "blur" },
  1093. ],
  1094. isNameIntoSummary: [
  1095. { required: true, message: "请输择称进入小结", trigger: "blur" },
  1096. ],
  1097. isDiagnosisFunction: [
  1098. { required: true, message: "请选择启用诊断函数", trigger: "blur" },
  1099. ],
  1100. diagnosisFunction: [
  1101. { required: true, message: "请输入诊断函数", trigger: "blur" },
  1102. ],
  1103. isCalculationItem: [
  1104. { required: true, message: "请选择计算项目", trigger: "blur" },
  1105. ],
  1106. calculationFunction: [
  1107. { required: true, message: "请输入计算函数", trigger: "blur" },
  1108. ],
  1109. isContinueProcess: [
  1110. { required: true, message: "请选择继续处理", trigger: "blur" },
  1111. ],
  1112. resultTemplateTypeFlag: [
  1113. {
  1114. required: true,
  1115. message: "请输入结果模板类别标志",
  1116. trigger: "blur",
  1117. },
  1118. ],
  1119. inputCheck: [
  1120. { required: true, message: "请选择结果校验公式", trigger: "blur" },
  1121. ],
  1122. isActive: [{ required: true, message: "请选择启用", trigger: "blur" }],
  1123. },
  1124. unitId: [], //单位Id
  1125. priceItemId: [], //价格id1
  1126. result: [], //结果
  1127. forSexId: [], //性别
  1128. itemTypeId: [], //项目类别
  1129. diagnosisLevelId: [], //诊断级别
  1130. isIll: [
  1131. {
  1132. value: "Y",
  1133. label: "是",
  1134. },
  1135. {
  1136. value: "N",
  1137. label: "否",
  1138. },
  1139. ], //是疾病
  1140. isSummaryTemplate: [
  1141. {
  1142. value: "Y",
  1143. label: "是",
  1144. },
  1145. {
  1146. value: "N",
  1147. label: "否",
  1148. },
  1149. ], //总监模板
  1150. props: {
  1151. label: "displayName",
  1152. value: "id",
  1153. children: "treeChildren",
  1154. }, //左侧树形结构
  1155. newssdate: [
  1156. {
  1157. id: "1",
  1158. name: "",
  1159. },
  1160. {
  1161. id: "2",
  1162. name: "",
  1163. },
  1164. ],
  1165. ssdate: [],
  1166. fssubdex: "",
  1167. resultitemtype: [], //项目类别
  1168. scopediagnostic: [], //诊断范围下拉框
  1169. };
  1170. },
  1171. created() {
  1172. this.getlist();
  1173. this.getmedicalconclusionlist();
  1174. },
  1175. mounted() {
  1176. this.rowDrop();
  1177. this.typeid();
  1178. },
  1179. methods: {
  1180. //参考范围确定类型
  1181. determinetype() {
  1182. if (this.referencerangevalue == 2) {
  1183. console.log(this.form.id);
  1184. let obj = {
  1185. itemId: this.form.id,
  1186. referenceRangeValue: this.fssubdex,
  1187. referenceRangeTypeFlag: this.referencerangevalue,
  1188. };
  1189. postapi("/api/app/reference-range/text", obj).then((res) => {
  1190. this.$message.success("新增成功");
  1191. this.fssubdex = res.data.referenceRangeValue;
  1192. this.diagnosdialogVisible = false;
  1193. });
  1194. }
  1195. },
  1196. async blurInput(id, name, value) {
  1197. var isdate = false; //是否存在
  1198. for (var i = 0; i < this.newssdate.length; i++) {
  1199. if (this.newssdate[i].id == id) {
  1200. isdate = true;
  1201. console.log("888");
  1202. console.log(this.newssdate[i][name]);
  1203. this.newssdate[i][name] = value;
  1204. }
  1205. }
  1206. if (!isdate) {
  1207. for (var j = 0; j < this.ssdate.length; j++) {
  1208. if (this.ssdate[j].id == id) {
  1209. this.newssdate.push(this.ssdate[j]);
  1210. }
  1211. }
  1212. }
  1213. //
  1214. },
  1215. treeclick(data) {
  1216. getapi(`/api/app/item/in-item-type/${data.id}`).then((res) => {
  1217. this.tableData = res.data;
  1218. console.log(res.data, "ress");
  1219. // this.getlist();
  1220. });
  1221. },
  1222. typeid() {
  1223. projectlist().then((res) => {
  1224. this.itemTypeId = res.data;
  1225. });
  1226. },
  1227. //诊断新增获取数据
  1228. diagnosticsadd() {
  1229. postapi("/api/app/diagnosis", this.editdigoisceditingform).then((res) => {
  1230. this.$message.success("添加成功");
  1231. this.diagnosticmatching();
  1232. });
  1233. },
  1234. //增加诊断需要的Id
  1235. diageoisaddId() {
  1236. //项目类别id
  1237. getapi("/api/app/item-type").then((res) => {
  1238. this.itemTypeId = res.data.items;
  1239. });
  1240. //性别
  1241. getapi("/api/app/sex").then((res) => {
  1242. this.forSexId = res.data;
  1243. });
  1244. //诊断级别
  1245. getapi("/api/app/diagnosis-level").then((res) => {
  1246. this.diagnosisLevelId = res.data.items;
  1247. });
  1248. },
  1249. // 增加诊断弹框
  1250. adddiagnosis() {
  1251. console.log(1);
  1252. console.log("诊断的方法");
  1253. this.diagnosticediting = true;
  1254. this.diageoisaddId();
  1255. },
  1256. //诊断匹配弹框获取诊断数据
  1257. //改成直接跳转到诊断页面
  1258. diagnosticmatching() {
  1259. // this.diagnosdialogVisible = true;
  1260. // console.log(this.diagnosdialogVisible);
  1261. // postapi("/api/app/diagnosis/getlistinfilter").then((res) => {
  1262. // this.diagnosticdata = res.data.items;
  1263. // console.log(res);
  1264. // });
  1265. this.$router.push({ path: "/diagnosis" });
  1266. },
  1267. //结果模板添加
  1268. resultaddition() {},
  1269. //模板类别弹框
  1270. // templatecategory() {
  1271. // getapi("/api/app/item-result-template").then((res) => {
  1272. // this.projectdata = res.data.items;
  1273. // console.log(res);
  1274. // });
  1275. // this.projectdialogVisible = true;
  1276. // },
  1277. //项目模板置底
  1278. bottoming() {
  1279. if (this.rusetform.id == undefined) {
  1280. this.$message.warning("请选择操作的数据");
  1281. } else {
  1282. putapi(
  1283. `/api/app/itemresulttemplate/updatemanysort?id=${this.rusetform.id}&SortType=2`
  1284. ).then((res) => {
  1285. this.$message.success("操作成功");
  1286. this.resultlist();
  1287. });
  1288. }
  1289. },
  1290. //项目模板置顶
  1291. toppingqq() {
  1292. console.log(this.rusetform.id);
  1293. if (this.rusetform.id == undefined) {
  1294. this.$message.warning("请选择操作的数据");
  1295. } else {
  1296. putapi(
  1297. `/api/app/itemresulttemplate/updatemanysort?id=${this.rusetform.id}&SortType=1`
  1298. ).then((res) => {
  1299. this.$message.success("操作成功");
  1300. this.resultlist();
  1301. });
  1302. }
  1303. },
  1304. //结果模板删除
  1305. delemtdelite() {
  1306. if (this.rusetform.id == undefined) {
  1307. this.$message.warning("请选择操作的数据");
  1308. } else {
  1309. deletapi(`/api/app/item-result-template/${this.rusetform.id}`).then(
  1310. (res) => {
  1311. this.$message.success("删除成功");
  1312. this.resultlist();
  1313. }
  1314. );
  1315. }
  1316. },
  1317. reustclick(row) {
  1318. // this.rusetform = row;
  1319. getapi(`/api/app/item-result-template/${row.id}`).then((res) => {
  1320. this.rusetform = res.data;
  1321. });
  1322. console.log(row);
  1323. },
  1324. //项目结果模板新增弹框
  1325. resultediting() {
  1326. if (this.rusetform.id == undefined) {
  1327. this.$message.warning("请选择操作的数据");
  1328. } else {
  1329. this.addoredit();
  1330. this.ruesttiele = 2;
  1331. this.ruesttieledialogVisible = true;
  1332. }
  1333. },
  1334. //结果模板新增或者修改
  1335. rusteronsubmit() {
  1336. if (this.ruesttiele == 1) {
  1337. postapi(`/api/app/item-result-template`, this.rusetform).then((res) => {
  1338. this.$message.success("新增成功");
  1339. this.ruesttieledialogVisible = false;
  1340. this.resultlist();
  1341. });
  1342. } else if (this.ruesttiele == 2) {
  1343. putapi(
  1344. `/api/app/item-result-template/${this.rusetform.id}`,
  1345. this.rusetform
  1346. ).then((res) => {
  1347. this.$message.success("修改成功");
  1348. this.ruesttieledialogVisible = false;
  1349. this.resultlist();
  1350. });
  1351. }
  1352. },
  1353. //诊断设置弹框新增
  1354. diagnosticsettings() {
  1355. // this.diagnostisbox = true;
  1356. // console.log("1");
  1357. this.$router.push({ path: "/diagnosis" });
  1358. },
  1359. digitaladdion() {
  1360. // this.referencerangedata.push({
  1361. // gender: "全部",
  1362. // agewise: "200",
  1363. // underage: "下",
  1364. // onreference: "0",
  1365. // underreference: "上",
  1366. // });
  1367. },
  1368. //参考范围下拉选择
  1369. selecttype(v) {
  1370. console.log(v);
  1371. this.referencerangevalue = v;
  1372. if (v == 1) {
  1373. getapi("/api/app/sex").then((res) => {
  1374. console.log(res);
  1375. this.sexid = res.data;
  1376. });
  1377. postapi("/api/app/diagnosis/getlistinfilter").then((res) => {
  1378. this.scopediagnostic = res.data.items;
  1379. console.log(res);
  1380. });
  1381. }
  1382. },
  1383. //参考范围
  1384. referencerange() {
  1385. console.log("我是参考范围");
  1386. if (this.form.id == undefined) {
  1387. this.$message.warning("请选择操作的数据");
  1388. } else {
  1389. this.referencerangedialogVisible = true;
  1390. console.log("11111111");
  1391. }
  1392. },
  1393. //结果模板添加或者修改需要的列
  1394. addoredit() {
  1395. getapi("/api/app/item/in-filter").then((res) => {
  1396. this.itemId = res.data.items;
  1397. });
  1398. getapi("/api/app/result-status").then((res) => {
  1399. // this.result = res.data.items;
  1400. this.resultStatusId = res.data.items;
  1401. });
  1402. postapi("/api/app/diagnosis/getlistinfilter").then((res) => {
  1403. console.log(res);
  1404. this.diagnosisId = res.data.items;
  1405. });
  1406. },
  1407. //结果模板添加
  1408. increase() {
  1409. this.addoredit();
  1410. this.ruesttiele = 1;
  1411. this.rusetform.itemId = this.form.id;
  1412. console.log(this.rusetform.id);
  1413. this.ruesttieledialogVisible = true;
  1414. // this.rusetform = {};
  1415. },
  1416. //获取项目类别列表
  1417. getmedicalconclusionlist() {
  1418. getapi("/api/app/item-type").then((res) => {
  1419. this.Selectacategory = res.data.items;
  1420. console.log(res);
  1421. });
  1422. },
  1423. isselctvalue(v) {
  1424. this.pages.TypeId = v;
  1425. console.log(v);
  1426. console.log(this.pages.TypeId);
  1427. this.getlist();
  1428. },
  1429. handleSelect(item) {
  1430. this.pages.Filter = item.displayName;
  1431. this.item = item;
  1432. this.formid = item.id;
  1433. console.log(this.item);
  1434. //console.log(item);
  1435. // quersmedicalid(item.id).then((res) => {
  1436. // console.log(res);
  1437. // this.form = res.data;
  1438. // });
  1439. },
  1440. getlistM(rowsid) {
  1441. getporjectlists(this.pages).then((res) => {
  1442. console.log("数据", res);
  1443. this.initTableData = [...res.data.items];
  1444. this.tableData = res.data.items;
  1445. if (rowsid != null && rowsid != "") {
  1446. var row = this.tableData.filter((item) => item.id == rowsid);
  1447. this.$refs.tableData.setCurrentRow(row[0]);
  1448. getapi(`/api/app/item/${rowsid}`).then((res) => {
  1449. this.form = res.data;
  1450. });
  1451. }
  1452. });
  1453. },
  1454. selsearch(id, typeid) {
  1455. this.Selectvalue = typeid;
  1456. this.pages.TypeId = typeid;
  1457. this.getlistM(id);
  1458. },
  1459. createFilter(queryString) {
  1460. return (tableData) => {
  1461. return (
  1462. tableData.displayName
  1463. .toLowerCase()
  1464. .indexOf(queryString.toLowerCase()) != -1
  1465. );
  1466. };
  1467. },
  1468. querySearch(queryString, cb) {
  1469. var tableData = this.tableData;
  1470. var tableDatas = queryString
  1471. ? tableData.filter(this.createFilter(queryString))
  1472. : tableData;
  1473. // 调用 callback 返回建议列表的数据
  1474. cb(tableDatas);
  1475. },
  1476. resultlist() {
  1477. getapi("/api/app/item-result-template").then((res) => {
  1478. this.reusttableData = res.data.items;
  1479. console.log(res);
  1480. });
  1481. },
  1482. resulttemplate() {
  1483. if (this.form.id == undefined) {
  1484. this.$message.warning("请选择操作的数据");
  1485. } else {
  1486. this.rurestdialogVisible = true;
  1487. getapi(`/api/app/item-result-template/in-item-id/${this.form.id}`).then(
  1488. (res) => {
  1489. this.reusttableData = res.data;
  1490. console.log("2222222222222222");
  1491. console.log(res);
  1492. }
  1493. );
  1494. //// 获取项目类别
  1495. getapi("/api/app/item-type/by-code-all").then((res) => {
  1496. this.resultitemtype = res.data;
  1497. console.log(res);
  1498. });
  1499. }
  1500. },
  1501. //取消排序
  1502. cancellation() {
  1503. this.$message.info("取消操作");
  1504. this.isshow = true;
  1505. this.getlist();
  1506. },
  1507. //确定拖拽
  1508. assertion() {
  1509. const result = [];
  1510. this.tableData.forEach((item, index) => {
  1511. // index 从0开始的, displayOrder从大到小排
  1512. console.log(item.id);
  1513. // const currentDisplayOrder = this.tableData.length -1
  1514. const currentDisplayOrder = this.initTableData[index].displayOrder;
  1515. if (item.displayOrder != currentDisplayOrder) {
  1516. // 如果它的displayOrder和它当前所在的位置不同代表挪动过位置
  1517. result.push({ id: item.id, displayOrder: currentDisplayOrder });
  1518. }
  1519. });
  1520. projectdreog({ itemList: result }).then((res) => {
  1521. this.$message.success("操作成功");
  1522. this.isshow = true;
  1523. this.getlist();
  1524. });
  1525. },
  1526. //初始化
  1527. rowDrop() {
  1528. this.$nextTick(() => {
  1529. const tbody = document.querySelector(".el-table__body-wrapper tbody");
  1530. const _this = this;
  1531. Sortable.create(tbody, {
  1532. handle: ".move",
  1533. animation: 300,
  1534. onEnd({ newIndex, oldIndex }) {
  1535. _this.isshow = false;
  1536. const currRow = _this.tableData.splice(oldIndex, 1)[0];
  1537. _this.tableData.splice(newIndex, 0, currRow);
  1538. _this.tableData.map((item, index) => {
  1539. if (index == newIndex && index == oldIndex) {
  1540. // console.log(item, "新数据");
  1541. } else if (index == oldIndex) {
  1542. } else if (index == newIndex) {
  1543. }
  1544. });
  1545. console.log(_this.tableData.map((item) => item.displayOrder));
  1546. },
  1547. });
  1548. });
  1549. },
  1550. //置低
  1551. toppings() {
  1552. if (this.form.id == undefined) {
  1553. this.$message.success("请点击选择操作的数据");
  1554. } else {
  1555. projttitem(this.form.id, 2).then((res) => {
  1556. this.$message.success("操作成功");
  1557. this.getlist();
  1558. });
  1559. }
  1560. },
  1561. //置顶
  1562. topping() {
  1563. if (this.form.id == undefined) {
  1564. this.$message.warning("请点击选择操作的数据");
  1565. } else {
  1566. projttitem(this.form.id, 1).then((res) => {
  1567. this.$message.success("操作成功");
  1568. this.getlist();
  1569. });
  1570. }
  1571. },
  1572. //删除
  1573. delsrts() {
  1574. if (this.form.id == undefined) {
  1575. this.$message.warning("请选择删除的数据");
  1576. } else {
  1577. this.$confirm("是否确认删除,是否继续?", "提示", {
  1578. confirmButtonText: "确定",
  1579. cancelButtonText: "取消",
  1580. type: "warning",
  1581. })
  1582. .then(() => {
  1583. projectdeleft(this.form.id).then((res) => {
  1584. this.$message.success("删除成功");
  1585. this.getlist();
  1586. this.form = {};
  1587. });
  1588. })
  1589. .catch(() => {});
  1590. }
  1591. },
  1592. //点击列表通过id查询
  1593. rowick(row) {
  1594. posjrctid(row.id).then((res) => {
  1595. console.log(res);
  1596. this.form = res.data;
  1597. });
  1598. console.log(row);
  1599. },
  1600. //编辑弹框
  1601. editpopup() {
  1602. if (this.form.id == undefined) {
  1603. this.$message.warning("请选择操作的数据");
  1604. } else {
  1605. this.form.price = Number(this.form.price);
  1606. this.addorgropdata();
  1607. this.title = 2;
  1608. this.dialogVisible = true;
  1609. posjrctid(this.form.id).then((res) => {
  1610. console.log(res);
  1611. this.form = res.data;
  1612. });
  1613. }
  1614. },
  1615. //确定新增或者编辑
  1616. Onsubmit() {
  1617. this.$refs.form.validate((v) => {
  1618. if (v) {
  1619. if (this.title == 1) {
  1620. addproject(this.form).then((res) => {
  1621. this.$message.success("新增成功");
  1622. this.getlist();
  1623. this.dialogVisible = false;
  1624. });
  1625. } else if (this.title == 2) {
  1626. projectedit(this.form.id, this.form).then((res) => {
  1627. this.$message.success("修改成功");
  1628. this.getlist();
  1629. this.dialogVisible = false;
  1630. });
  1631. }
  1632. }
  1633. });
  1634. // addproject(this.form)
  1635. },
  1636. //新增弹框
  1637. add() {
  1638. this.form.price = Number(this.form.price);
  1639. this.title = 1;
  1640. this.dialogVisible = true;
  1641. this.form = {};
  1642. this.addorgropdata();
  1643. },
  1644. //新增或者编辑弹框需要的下拉框接口数据
  1645. addorgropdata() {
  1646. //获取项目id
  1647. projectlist().then((res) => {
  1648. this.itemTypeId = res.data;
  1649. this.tcdate(this.itemTypeId);
  1650. });
  1651. //获取单位
  1652. unitlist().then((res) => {
  1653. this.unitId = res.data.items;
  1654. });
  1655. //获取价格Id
  1656. priceitemlist().then((res) => {
  1657. this.priceItemId = res.data.items;
  1658. });
  1659. },
  1660. getlist() {
  1661. this.getlistM();
  1662. // getporjectlists(this.pages).then((res) => {
  1663. // this.initTableData = [...res.data.items];
  1664. // this.tableData = res.data.items;
  1665. // });
  1666. },
  1667. tcdate(date) {
  1668. for (var i = 0; i < date.length; i++) {
  1669. if (date[i].treeChildren.length == 0) {
  1670. date[i].treeChildren = undefined;
  1671. } else {
  1672. this.tcdate(date[i].treeChildren);
  1673. }
  1674. }
  1675. },
  1676. ///
  1677. },
  1678. };
  1679. </script>
  1680. <style scoped>
  1681. .box {
  1682. display: flex;
  1683. }
  1684. </style>