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.

2277 lines
80 KiB

3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
1 week ago
3 months ago
2 years ago
3 months ago
2 years ago
3 months ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
2 years ago
3 months ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
3 years ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
5 months ago
5 months ago
1 week ago
5 months ago
1 week ago
2 years ago
3 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
3 years ago
1 week ago
2 years ago
2 years ago
3 years ago
1 week ago
3 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
5 months ago
2 years ago
1 week ago
2 years ago
3 months ago
2 years ago
1 week ago
2 years ago
3 months ago
2 years ago
1 week ago
2 years ago
3 months ago
1 week ago
3 months ago
5 months ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
5 months ago
4 months ago
4 months ago
1 week ago
4 months ago
4 months ago
4 months ago
1 week ago
4 months ago
4 months ago
4 months ago
1 week ago
4 months ago
4 months ago
3 months ago
4 months ago
1 week ago
4 months ago
3 months ago
1 week ago
3 months ago
4 months ago
1 week ago
2 years ago
4 months ago
4 months ago
5 months ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
5 months ago
1 week ago
2 years ago
5 months ago
2 years ago
1 week ago
2 years ago
5 months ago
1 week ago
5 months ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
5 months ago
5 months ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
1 week ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
1 week ago
2 years ago
3 years ago
1 week ago
3 years ago
1 week ago
3 years ago
1 week ago
3 years ago
1 week ago
3 years ago
2 years ago
1 week ago
2 years ago
3 years ago
1 week ago
1 week ago
2 years ago
1 week ago
3 years ago
3 years ago
1 week ago
3 years ago
1 week ago
3 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
2 years ago
1 week ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
5 months ago
1 week ago
1 week ago
3 years ago
5 months ago
1 week ago
5 months ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 months ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
4 months ago
1 week ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
4 months ago
1 week ago
4 months ago
1 week ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
1 week ago
5 months ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
1 week ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
1 week ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
1 week ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 week ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
1 week ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
1 week ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
4 months ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
4 months ago
1 week ago
4 months ago
3 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
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
5 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 week 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>
  4. <div class="middlebox">
  5. <div class="contenttitle">
  6. 基础资料 /
  7. <span class="contenttitleBold">组合项目</span>
  8. </div>
  9. <div class="seachinput">
  10. <el-select v-model="department" placeholder="请选择组合项目" filterable :filter-method="remoteMethodes"
  11. default-first-option @change="quckDepartments" clearable size="small">
  12. <el-option v-for="item in quckDepartment" :key="item.id" :label="item.displayName" :value="item.id">
  13. </el-option>
  14. </el-select>
  15. </div>
  16. </div>
  17. <div style="display: flex; margin-top: 7px">
  18. <div :style="'width: 208px;overflow: scroll;height:' +
  19. (window.pageHeight < 600 ? 505 : window.pageHeight - 100) +
  20. 'px;background-color: #fff; border-radius: 8px'
  21. ">
  22. <div style="margin-top: 10px">
  23. <el-tree :data="itemTypeId" :props="treeprops" @node-click="treeclick" node-key="id" ref="itemType"
  24. highlight-current auto-expand-parent>
  25. <span class="custom-tree-node" slot-scope="{ node, data }">
  26. <div>
  27. <span class="treeicons">
  28. <!-- <i
  29. class="el-icon-document-remove"
  30. v-if="data.parentId == null"
  31. ></i> -->
  32. <img style="width: 20px; height: 20px; vertical-align: sub" src="@/assets/images/order.png"
  33. v-if="!data.parentId" />
  34. </span>
  35. <span :class="!data.parentId ? 'maxtitle' : 'mintitle'">{{
  36. node.label
  37. }}</span>
  38. </div>
  39. </span>
  40. </el-tree>
  41. </div>
  42. </div>
  43. <div style="display: block">
  44. <div style="margin-left: 15px; display: flex; flex-direction: column">
  45. <div style="display: flex; margin-bottom: 15px">
  46. <div :style="'width:' +
  47. (window.pageWidth - 200 - 110 - 50 - 14) +
  48. 'px;padding: 15px;background-color: #fff;border-radius: 8px;'
  49. ">
  50. <el-table :data="tableData" style="width: 100%" row-key="id" :height="window.pageHeight < 600
  51. ? 190
  52. : Math.floor((window.pageHeight - 260) / 2)
  53. " class="el-table__body-wrapper tbody" @row-click="rowick" @row-dblclick="dblClick"
  54. highlight-current-row :row-style="{ height: '28px' }" ref="tableData" border>
  55. <el-table-column prop="id" label="编号" width="300" align="center">
  56. </el-table-column>
  57. <el-table-column prop="displayName" label="名称" min-width="200">
  58. </el-table-column>
  59. <el-table-column prop="price" label="价格" width="" align="center">
  60. </el-table-column>
  61. <el-table-column prop="forPregnantFlag" label="备怀孕禁检" align="center">
  62. <template slot-scope="scope">
  63. <div style="font-family: 'Microsoft YaHei'">
  64. {{
  65. dddw(
  66. forPregnantFlag,
  67. "id",
  68. scope.row.forPregnantFlag,
  69. "displayName"
  70. )
  71. }}
  72. </div>
  73. </template>
  74. </el-table-column>
  75. <el-table-column prop="maritalStatusId" label="婚姻状况" align="center">
  76. <template slot-scope="scope">
  77. <div style="font-family: 'Microsoft YaHei'">
  78. {{
  79. dddw(
  80. dict.forMaritalStatus,
  81. "id",
  82. scope.row.maritalStatusId,
  83. "displayName"
  84. )
  85. }}
  86. </div>
  87. </template>
  88. </el-table-column>
  89. <el-table-column prop="creatorName" label="创建者" width="" align="center">
  90. </el-table-column>
  91. <el-table-column prop="lastModifierName" label="修改者" width="" align="center">
  92. </el-table-column>
  93. <el-table-column prop="creationTime" label="创建时间" width="160" align="center">
  94. <template slot-scope="scope">
  95. {{ scope.row.creationTime | dateFormat }}
  96. </template>
  97. </el-table-column>
  98. <el-table-column prop="lastModificationTime" label="修改时间" width="160" align="center">
  99. <template slot-scope="scope">
  100. {{ scope.row.lastModificationTime | dateFormat }}
  101. </template>
  102. </el-table-column>
  103. <el-table-column label="操作" align="center">
  104. <template>
  105. <el-tag class="move" style="
  106. cursor: move;
  107. background-color: rgb(245, 245, 245);
  108. border: none;
  109. " draggable="true">
  110. <i class="el-icon-d-caret" style="
  111. width: 1rem;
  112. height: 1rem;
  113. color: rgb(113, 113, 113);
  114. "></i>
  115. </el-tag>
  116. </template>
  117. </el-table-column>
  118. </el-table>
  119. </div>
  120. </div>
  121. <!-- table页 -->
  122. <div style="display: flex">
  123. <div :style="'width:' +
  124. (window.pageWidth - 200 - 110 - 50 - 14) +
  125. 'px;padding: 15px;background-color: #fff;border-radius: 8px;'
  126. ">
  127. <el-tabs v-model="activeName">
  128. <el-tab-pane label="项目明细" name="first">
  129. <div class="mainbox">
  130. <div class="" :style="'width:' +
  131. Math.floor(
  132. (window.pageWidth - 200 - 110 - 50 - 14 - 130) / 2
  133. ) +
  134. 'px;'
  135. ">
  136. <div>
  137. <span style="
  138. padding: 5px;
  139. font-size: 14px;
  140. font-weight: 400;
  141. color: #232748;
  142. font-family: NotoSansSC-Regular;
  143. margin-bottom: 10px;
  144. ">项目类别</span>
  145. <el-cascader v-model="values" :options="itemTypeId" ref="example" popper-class="example"
  146. @change="ischangs" :props="{
  147. value: 'id',
  148. label: 'displayName',
  149. children: 'treeChildren',
  150. checkStrictly: true,
  151. expandTrigger: 'hover',
  152. }" size="small">
  153. </el-cascader>
  154. </div>
  155. <el-table :data="leftdata" :height="window.pageHeight < 600
  156. ? 170
  157. : Math.floor((window.pageHeight - 230) / 2)
  158. " @row-dblclick="dbClickChoosedAsb" @selection-change="handleSelectionChange"
  159. @row-click="chooseAsbItem" highlight-current-row :row-style="{ height: '28px' }">
  160. <el-table-column type="index" align="center" label="序号" />
  161. <el-table-column prop="displayName" label="未选项目" />
  162. </el-table>
  163. </div>
  164. <div class="Selectbutton">
  165. <div style="">
  166. <el-button @click="addAbs" style="width: 100px" class="commonbutton">添加<i
  167. class="el-icon-caret-right"></i>
  168. </el-button>
  169. </div>
  170. <div style="margin-top: 18px">
  171. <el-button @click="addall" class="difference">全添加<i class="el-icon-caret-right"></i><i
  172. class="el-icon-caret-right"></i></el-button>
  173. </div>
  174. <div style="margin-top: 18px">
  175. <el-button @click="delAbs" style="width: 100px" class="commonbutton">移除<i
  176. class="el-icon-caret-left"></i>
  177. </el-button>
  178. </div>
  179. <div style="margin-top: 18px">
  180. <el-button @click="allclear" class="difference">全移除<i class="el-icon-caret-left"></i><i
  181. class="el-icon-caret-left"></i>
  182. </el-button>
  183. </div>
  184. </div>
  185. <div class="" :style="'width:' +
  186. Math.floor(
  187. (window.pageWidth - 200 - 110 - 50 - 14 - 130) / 2
  188. ) +
  189. 'px;'
  190. ">
  191. <div>
  192. <span style="
  193. padding: 5px;
  194. font-size: 14px;
  195. font-weight: 400;
  196. color: #232748;
  197. font-family: NotoSansSC-Regular;
  198. margin-bottom: 10px;
  199. ">搜索选择</span>
  200. <el-select value-key="id" @change="selectitem" filterable v-model="flitvalues"
  201. placeholder="请选择" :filter-method="remoteMethods" default-first-option clearable
  202. ref="quickAsbOCX" size="small">
  203. <el-option v-for="item in filetelists" :key="item.id" :label="item.displayName"
  204. :value="item">
  205. </el-option>
  206. </el-select>
  207. </div>
  208. <el-table :data="rightdata" :height="window.pageHeight < 600
  209. ? 170
  210. : Math.floor((window.pageHeight - 230) / 2)
  211. " width="100%" @row-dblclick="removeAbs" @selection-change="selecteditems"
  212. @row-click="removeAsbItem" highlight-current-row :row-style="{ height: '28px' }"
  213. :summary-method="getSummaries" show-summary ref="table">
  214. <el-table-column type="index" align="center" label="序号" />
  215. <el-table-column label="已选项目" prop="displayName" />
  216. </el-table>
  217. </div>
  218. </div>
  219. </el-tab-pane>
  220. <!-- 指引单信息 -->
  221. <el-tab-pane label="指引信息" name="second">
  222. <div style="display: flex; width: 100%">
  223. <div :style="'width:' +
  224. (window.pageWidth - 200 - 110 - 50 - 10 - 110 - 10) +
  225. 'px;'
  226. ">
  227. <el-form ref="guidanceinformation" :rules="guidelinesRules" :model="formdata">
  228. <el-table :data="formdata.guidanceinformationdata" style="width: 100%" highlight-current-row
  229. @row-click="guiderow" :row-class-name="tableRowClassName" :height="window.pageHeight < 600
  230. ? 215
  231. : Math.floor((window.pageHeight - 174) / 2)
  232. " ref="guidanceinformationdata" class="guidelines" border>
  233. <el-table-column label="体检中心" width="200">
  234. <template slot-scope="scope">
  235. <el-form-item :prop="'guidanceinformationdata.' +
  236. scope.$index +
  237. '.medicalCenterId'
  238. " :rules="guidelinesRules.medicalCenterId">
  239. <el-select v-model="scope.row.medicalCenterId">
  240. <el-option v-for="item in organizationUnitdata" :key="item.id"
  241. :label="item.displayName" :value="item.id" />
  242. </el-select>
  243. </el-form-item>
  244. </template>
  245. </el-table-column>
  246. <el-table-column label="适用性别" width="200">
  247. <template slot-scope="scope">
  248. <el-form-item :prop="'guidanceinformationdata.' +
  249. scope.$index +
  250. '.forSexId'
  251. " :rules="guidelinesRules.forSexId">
  252. <el-select v-model="scope.row.forSexId">
  253. <el-option v-for="item in forsexdata" :key="item.id" :label="item.displayName"
  254. :value="item.id" />
  255. </el-select>
  256. </el-form-item>
  257. </template>
  258. </el-table-column>
  259. <el-table-column label="指引信息">
  260. <template slot-scope="scope">
  261. <el-form-item :prop="'guidanceinformationdata.' +
  262. scope.$index +
  263. '.guide'
  264. " :rules="guidelinesRules.guide">
  265. <el-input v-model="scope.row.guide" required />
  266. </el-form-item>
  267. </template>
  268. </el-table-column>
  269. </el-table>
  270. </el-form>
  271. </div>
  272. <div style="margin-left: 15px">
  273. <el-button type="" @click="createabulletbox" style="margin-top: 50px"
  274. class="commonbutton">新增</el-button>
  275. <div style="margin-top: 10px">
  276. <el-button type="" @click="deleteguidelines" class="deleteButton">删除</el-button>
  277. </div>
  278. <div style="margin-top: 10px">
  279. <el-button type="" @click="saveguidelines" class="commonbutton">保存</el-button>
  280. </div>
  281. </div>
  282. </div>
  283. <!-- 科室改为体检中心 -->
  284. </el-tab-pane>
  285. <!-- 互斥组合项目 -->
  286. <el-tab-pane label="互斥组合项目" name="3">
  287. <HcAsbitem :asbitemId="curRow.id" :HcAsbitemBrush="HcAsbitemBrush" />
  288. </el-tab-pane>
  289. <!-- 前置组合项目 -->
  290. <el-tab-pane label="前置组合项目" name="4">
  291. <PreAsbitem :asbitemId="curRow.id" :PreAsbitemBrush="PreAsbitemBrush" />
  292. </el-tab-pane>
  293. </el-tabs>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. <!-- 按钮区域 -->
  299. <div style="margin-left: 10px">
  300. <el-button type="" @click="addll" class="commonbutton">新增</el-button>
  301. <div style="margin-top: 10px">
  302. <el-button type="" @click="editpopup" class="commonbutton">编辑</el-button>
  303. </div>
  304. <div style="margin-top: 10px">
  305. <el-button type="" @click="deleteid" class="deleteButton">删除</el-button>
  306. </div>
  307. <div style="margin-top: 10px">
  308. <el-button type="" @click="btnAcceptTemplate" class="commonbutton">知情书模板</el-button>
  309. </div>
  310. <div style="margin-top: 10px">
  311. <el-button type="" @click="topping" class="commonbutton">置顶</el-button>
  312. </div>
  313. <div style="margin-top: 10px">
  314. <el-button type="" @click="setlow" class="commonbutton">置底</el-button>
  315. </div>
  316. <div style="margin-top: 10px">
  317. <el-button type="" :disabled="isshow" @click="assertion" class="commonbutton">排序</el-button>
  318. </div>
  319. <div style="margin-top: 10px">
  320. <el-button type="" :disabled="isshow" @click="cancellation" class="commonbutton">取消</el-button>
  321. </div>
  322. <div style="margin-top: 10px">
  323. <el-button type="" :disabled="isdislob" @click="Onsubmit" class="commonbutton">确定项目</el-button>
  324. </div>
  325. <div style="margin-top: 10px">
  326. <el-button type="" :disabled="isdislob" @click="projectCancellation" class="commonbutton">取消项目</el-button>
  327. </div>
  328. </div>
  329. </div>
  330. </div>
  331. <!-- 新增或者编辑弹框 -->
  332. <el-dialog :title="title == 1 ? '新增' : '编辑'" :visible.sync="dialogVisible" width="800px" @close="bindidclose"
  333. :close-on-click-modal="false">
  334. <el-form :model="form" :rules="rules" ref="ruleForm" label-width="70px">
  335. <el-row>
  336. <el-col :span="10">
  337. <el-form-item label="项目编号" prop="">
  338. <el-input v-model="form.id" :disabled="true" size="small"></el-input>
  339. </el-form-item>
  340. </el-col>
  341. <el-col :span="6">
  342. <el-form-item label="项目类别" prop="itemTypeId">
  343. <el-cascader v-model="form.itemTypeId" :options="itemTypeId" popper-class="example" ref="itemTypeIds"
  344. @change="ischangsItemTypeId" :props="{
  345. value: 'id',
  346. label: 'displayName',
  347. children: 'treeChildren',
  348. checkStrictly: true,
  349. expandTrigger: 'hover',
  350. }" size="small">
  351. </el-cascader>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="8">
  355. <el-form-item label="名称" prop="displayName">
  356. <el-input v-model="form.displayName" ref="refinput"
  357. @input="($event) => changeUpdate($event, 'displayName')" size="small"></el-input>
  358. </el-form-item>
  359. </el-col>
  360. </el-row>
  361. <el-row>
  362. <el-col :span="8">
  363. <el-form-item label="简称" prop="">
  364. <el-input v-model="form.shortName" @input="($event) => changeUpdate($event, 'shortName')"
  365. size="small"></el-input>
  366. </el-form-item>
  367. </el-col>
  368. <el-col :span="6">
  369. <el-form-item label="适用性别" prop="">
  370. <el-select v-model="form.forSexId" placeholder="请选择" size="small" @change="quckRusetform">
  371. <el-option v-for="item in forSexId" :key="item.id" :label="item.displayName" :value="item.id">
  372. </el-option>
  373. </el-select>
  374. </el-form-item>
  375. </el-col>
  376. <el-col :span="7">
  377. <el-form-item label="婚姻状况">
  378. <el-select v-model="form.maritalStatusId" placeholder="请选择" style="width: 100%" size="small">
  379. <el-option v-for="item in dict.forMaritalStatus" :key="item.id" :label="item.displayName"
  380. :value="item.id">
  381. </el-option>
  382. </el-select>
  383. </el-form-item>
  384. </el-col>
  385. <el-col :span="3">
  386. <el-form-item label="允许折扣" prop="isDiscount">
  387. <el-checkbox v-model="form.isDiscount" true-label="Y" false-label="N" />
  388. </el-form-item>
  389. </el-col>
  390. </el-row>
  391. <el-row>
  392. <el-col :span="5">
  393. <el-form-item label="价格" prop="">
  394. <el-input v-model="form.price" type="nember" @input="($event) => changeUpdate($event, 'price')"
  395. size="small"></el-input>
  396. </el-form-item>
  397. </el-col>
  398. <el-col :span="6">
  399. <el-form-item label="仪器类别" prop="">
  400. <el-select v-model="form.deviceTypeId" placeholder="请选择" size="small" @change="quckRusetform">
  401. <el-option v-for="item in deviceTypeId" :key="item.id" :label="item.displayName" :value="item.id">
  402. </el-option>
  403. </el-select>
  404. </el-form-item>
  405. </el-col>
  406. <el-col :span="6">
  407. <el-form-item label="汇总项目类别" prop="collectItemTypeId" label-width="100px">
  408. <el-select v-model="form.collectItemTypeId" placeholder="请选择" size="small" @change="quckRusetform">
  409. <el-option v-for="item in collectItemType" :key="item.id" :label="item.displayName" :value="item.id">
  410. </el-option>
  411. </el-select>
  412. </el-form-item>
  413. </el-col>
  414. <el-col :span="4">
  415. <el-form-item label="项目结果合并" prop="" label-width="100px">
  416. <!-- <el-select
  417. v-model="form.isItemResultMerger"
  418. placeholder="请选择"
  419. >
  420. <el-option
  421. v-for="item in isItemResultMerger"
  422. :key="item.value"
  423. :label="item.label"
  424. :value="item.value"
  425. >
  426. </el-option>
  427. </el-select> -->
  428. <el-checkbox v-model="form.isItemResultMerger" true-label="Y" false-label="N" />
  429. </el-form-item>
  430. </el-col>
  431. <el-col :span="3">
  432. <el-form-item label="餐前项目" prop="">
  433. <el-checkbox v-model="form.isBeforeEat" true-label="Y" false-label="N" />
  434. </el-form-item>
  435. </el-col>
  436. </el-row>
  437. <el-row>
  438. <el-col :span="24">
  439. <el-form-item label="推荐理由" prop="">
  440. <el-input v-model="form.suggestReason" type="textarea" :autosize="{ minRows: 2, maxRows: 2 }"
  441. @input="($event) => changeUpdate($event, 'suggestReason')" />
  442. </el-form-item>
  443. </el-col>
  444. </el-row>
  445. <el-row>
  446. <el-col :span="24">
  447. <el-form-item label="临床意义" prop="">
  448. <el-input v-model="form.clinicalMeaning" type="textarea" :autosize="{ minRows: 2, maxRows: 2 }"
  449. @input="($event) => changeUpdate($event, 'clinicalMeaning')" />
  450. </el-form-item>
  451. </el-col>
  452. </el-row>
  453. <el-row>
  454. <el-col :span="24">
  455. <el-form-item label="警告事项" prop="">
  456. <el-input v-model="form.warn" type="textarea" :autosize="{ minRows: 2, maxRows: 2 }"
  457. @input="($event) => changeUpdate($event, 'warn')" />
  458. </el-form-item>
  459. </el-col>
  460. </el-row>
  461. <el-row>
  462. <el-col :span="8">
  463. <el-form-item label="默认结果" prop="" class="my-el-form-item">
  464. <!-- <el-input v-model="form.defaultResult"></el-input> -->
  465. <div style="display: flex; justify-content: center">
  466. <el-input v-model="form.defaultResult" type="textarea" :autosize="{ minRows: 1, maxRows: 1 }"
  467. @input="($event) => changeUpdate($event, 'defaultResult')" />
  468. <el-select v-model="form.defaultResult" style="width: 40px" class="downText" @change="quckRusetform">
  469. <el-option v-for="item in defaultResult" :key="item.value" :label="item.label" :value="item.label">
  470. </el-option>
  471. </el-select>
  472. </div>
  473. </el-form-item>
  474. </el-col>
  475. <el-col :span="8">
  476. <el-form-item label="体检中心" prop="">
  477. <el-select v-model="form.medicalCenterId" placeholder="请选择" size="small" clearable>
  478. <el-option v-for="item in organizationUnitdata" :key="item.id" :label="item.displayName"
  479. :value="item.id">
  480. </el-option>
  481. </el-select>
  482. </el-form-item>
  483. </el-col>
  484. <el-col :span="8">
  485. <el-form-item label="备怀孕期间禁检" prop="" label-width="110px">
  486. <el-select v-model="form.forPregnantFlag" placeholder="请选择" size="small" @change="quckRusetform">
  487. <el-option v-for="item in forPregnantFlag" :key="item.id" :label="item.displayName" :value="item.id">
  488. </el-option>
  489. </el-select>
  490. </el-form-item>
  491. </el-col>
  492. </el-row>
  493. <el-row>
  494. <el-col :span="4">
  495. <el-form-item label="启用诊断" prop="">
  496. <el-checkbox v-model="form.isDiagnosisFunctionBox" @change="changeBox('isDiagnosisFunction')" />
  497. </el-form-item>
  498. </el-col>
  499. <el-col :span="8">
  500. <el-form-item label="诊断函数" prop="">
  501. <el-input v-model="form.diagnosisFunction" :disabled="disableddiagnosisFunction" size="small">
  502. <el-button slot="append" icon="el-icon-more" v-if="form.isDiagnosisFunctionBox" @click="
  503. (diagnosisFunctionBox = true),
  504. (diagnosisFunctionText = form.diagnosisFunction)
  505. " size="small"></el-button>
  506. </el-input>
  507. </el-form-item>
  508. </el-col>
  509. <el-col :span="4">
  510. <el-form-item label="函数后继续" prop="" label-width="100px">
  511. <el-checkbox v-model="form.isContinueProcess" true-label="Y" false-label="N" />
  512. </el-form-item>
  513. </el-col>
  514. <el-col :span="4">
  515. <el-form-item label="候诊时间" prop="">
  516. <el-input v-model="form.queueTime" type="nember" @input="($event) => changeUpdate($event, 'queueTime')"
  517. size="small"></el-input>
  518. </el-form-item>
  519. </el-col>
  520. <el-col :span="4">
  521. <el-form-item label="外检" prop="isOutsend" label-width="100px">
  522. <el-checkbox v-model="form.isOutsend" true-label="Y" false-label="N" />
  523. </el-form-item>
  524. </el-col>
  525. </el-row>
  526. <el-row>
  527. <el-col :span="4">
  528. <el-form-item label="启用危急值" prop="" label-width="85px">
  529. <el-checkbox v-model="form.isCriticalValueFunction" true-label="Y" false-label="N" />
  530. </el-form-item>
  531. </el-col>
  532. <el-col :span="8">
  533. <el-form-item label="危急值函数" prop="" label-width="85px">
  534. <el-input v-model="form.criticalValueFunction" disabled size="small">
  535. <el-button slot="append" icon="el-icon-more" v-if="form.isCriticalValueFunction == 'Y'" @click="
  536. (dialogCriticalValueFunction = true),
  537. (dialogCriticalValueFunctionText =
  538. form.criticalValueFunction)
  539. " size="small"></el-button>
  540. </el-input>
  541. </el-form-item>
  542. </el-col>
  543. <el-col :span="3">
  544. <el-form-item label="体检报告" prop="">
  545. <el-checkbox v-model="form.isPictureRotate" true-label="Y" false-label="N" />
  546. </el-form-item>
  547. </el-col>
  548. <el-col :span="3">
  549. <el-form-item label="网上预约" prop="">
  550. <!-- <el-select v-model="form.isCheck" placeholder="请选择">
  551. <el-option
  552. v-for="item in isCheck"
  553. :key="item.value"
  554. :label="item.label"
  555. :value="item.value"
  556. >
  557. </el-option>
  558. </el-select> -->
  559. <el-checkbox v-model="form.isWebAppoint" true-label="Y" false-label="N" />
  560. </el-form-item>
  561. </el-col>
  562. <el-col :span="6">
  563. <el-form-item label="条码模式" prop="">
  564. <el-select v-model="form.barcodeMode" placeholder="请选择" size="small" @change="quckRusetform">
  565. <el-option v-for="item in barcodeMode" :key="item.id" :label="item.displayName" :value="item.id">
  566. </el-option>
  567. </el-select>
  568. </el-form-item>
  569. </el-col>
  570. </el-row>
  571. <el-row>
  572. <el-col :span="5">
  573. <el-form-item label="疾病筛查类别" prop="" label-width="100px">
  574. <el-select v-model="form.diseaseScreeningTypeId" placeholder="请选择" size="small" @change="quckRusetform">
  575. <el-option v-for="item in diseaseScreeningType" :key="item.id" :label="item.displayName"
  576. :value="item.id">
  577. </el-option>
  578. </el-select>
  579. </el-form-item>
  580. </el-col>
  581. <el-col :span="3">
  582. <el-form-item label="隐私项目" prop="">
  583. <el-checkbox v-model="form.isPrivacy" true-label="Y" false-label="N" />
  584. </el-form-item>
  585. </el-col>
  586. <el-col :span="3">
  587. <el-form-item label="启用随访" prop="">
  588. <el-checkbox v-model="form.isFollowUpFunction" true-label="Y" false-label="N" />
  589. </el-form-item>
  590. </el-col>
  591. <el-col :span="7">
  592. <el-form-item label="随访函数" prop="">
  593. <el-input v-model="form.followUpFunction" disabled size="small">
  594. <el-button slot="append" icon="el-icon-more" v-if="form.isFollowUpFunction == 'Y'" @click="
  595. (dialogFollowUpFunction = true),
  596. (dialogFollowUpFunctionText = form.followUpFunction)
  597. " size="small"></el-button>
  598. </el-input>
  599. </el-form-item>
  600. </el-col>
  601. <el-col :span="3">
  602. <el-form-item label="检查项目" prop="">
  603. <!-- <el-select v-model="form.isCheck" placeholder="请选择">
  604. <el-option
  605. v-for="item in isCheck"
  606. :key="item.value"
  607. :label="item.label"
  608. :value="item.value"
  609. >
  610. </el-option>
  611. </el-select> -->
  612. <el-checkbox v-model="form.isCheck" true-label="Y" false-label="N" />
  613. </el-form-item>
  614. </el-col>
  615. <el-col :span="3">
  616. <el-form-item label="启用" prop="">
  617. <!-- <el-select v-model="form.isActive" placeholder="请选择">
  618. <el-option
  619. v-for="item in isActive"
  620. :key="item.value"
  621. :label="item.label"
  622. :value="item.value"
  623. >
  624. </el-option>
  625. </el-select> -->
  626. <el-checkbox v-model="form.isActive" true-label="Y" false-label="N" />
  627. </el-form-item>
  628. </el-col>
  629. </el-row>
  630. <el-divider></el-divider>
  631. <el-row>
  632. <el-col :span="5">
  633. <el-form-item label="创建者">
  634. <el-input v-model="form.creatorName" disabled size="small"></el-input>
  635. </el-form-item>
  636. </el-col>
  637. <el-col :span="7">
  638. <el-form-item label="创建时间" style="margin-left: -5%">
  639. <el-input :value="form.creationTime | dateFormat" disabled style="width: 90%" size="small"></el-input>
  640. </el-form-item>
  641. </el-col>
  642. <el-col :span="5">
  643. <el-form-item label="修改者" style="margin-left: -25%">
  644. <el-input v-model="form.creatorName" disabled size="small"></el-input>
  645. </el-form-item>
  646. </el-col>
  647. <el-col :span="7">
  648. <el-form-item label="修改时间" style="margin-left: -5%">
  649. <el-input :value="form.lastModificationTime | dateFormat" disabled style="width: 90%"
  650. size="small"></el-input>
  651. </el-form-item>
  652. </el-col>
  653. </el-row>
  654. </el-form>
  655. <span slot="footer" class="dialog-footer">
  656. <el-button @click="editcancellation" class="difference"> </el-button>
  657. <el-button type="primary" @click="addoredit" class="commonbutton"> </el-button>
  658. </span>
  659. </el-dialog>
  660. <!-- 指引信息新增修改弹框 -->
  661. <el-dialog :title="guidetitle == 1 ? '指引信息新增' : '指引信息修改'" :visible.sync="guidetitledialogVisible" width="50%">
  662. <el-row>
  663. <el-form :model="guideform" :rules="guiderules" ref="ruleForms" label-width="100px" class="demo-ruleForm">
  664. <el-col :span="12">
  665. <el-form-item label="体检中心" prop="medicalCenterId">
  666. <el-select v-model="guideform.medicalCenterId" placeholder="请选择">
  667. <el-option v-for="item in organizationUnitdata" :key="item.id" :label="item.displayName"
  668. :value="item.id">
  669. </el-option>
  670. </el-select>
  671. </el-form-item>
  672. </el-col>
  673. <!-- <el-col :span="12">
  674. <el-form-item label="组合项目" prop="asbitemId">
  675. <el-select v-model="guideform.asbitemId" placeholder="请选择">
  676. <el-option
  677. v-for="item in asbitemdata"
  678. :key="item.id"
  679. :label="item.displayName"
  680. :value="item.id"
  681. >
  682. </el-option>
  683. </el-select>
  684. </el-form-item>
  685. </el-col> -->
  686. <el-col :span="12">
  687. <el-form-item label="适用性别" prop="forSexId">
  688. <el-select v-model="guideform.forSexId" placeholder="请选择">
  689. <el-option v-for="item in forsexdata" :key="item.id" :label="item.displayName" :value="item.id">
  690. </el-option>
  691. </el-select>
  692. </el-form-item>
  693. </el-col>
  694. <el-col :span="24">
  695. <el-form-item label="指引内容" prop="guide">
  696. <el-input v-model="guideform.guide" placeholder="请输入内容"></el-input>
  697. </el-form-item>
  698. </el-col>
  699. </el-form>
  700. </el-row>
  701. <span slot="footer" class="dialog-footer">
  702. <el-button @click="guidetitledialogVisible = false"> </el-button>
  703. <el-button type="primary" @click="determineguidelines"> </el-button>
  704. </span>
  705. </el-dialog>
  706. <!-- 诊断函数弹框 -->
  707. <el-dialog title="诊断函数设置" :visible.sync="diagnosisFunctionBox" width="50%" :close-on-click-modal="false" fullscreen>
  708. <el-form label-width="110px">
  709. <el-row>
  710. <el-col :span="24">
  711. <el-form-item label="诊断函数">
  712. <el-input type="textarea" v-model="diagnosisFunctionText"
  713. :autosize="{ minRows: 29, maxRows: 29 }"></el-input>
  714. </el-form-item>
  715. </el-col>
  716. </el-row>
  717. </el-form>
  718. <span slot="footer" class="dialog-footer">
  719. <el-button @click="(diagnosisFunctionBox = false), (diagnosisFunctionText = '')" class="difference">
  720. </el-button>
  721. <el-button type="primary" @click="OnsubmitDiagnosis" class="commonbutton"> </el-button>
  722. </span>
  723. </el-dialog>
  724. <!-- 危急值函数弹框 -->
  725. <el-dialog title="危急值函数设置" :visible.sync="dialogCriticalValueFunction" width="50%" :close-on-click-modal="false"
  726. fullscreen>
  727. <el-form label-width="110px">
  728. <el-row>
  729. <el-col :span="24">
  730. <el-form-item label="危急值函数">
  731. <el-input type="textarea" v-model="dialogCriticalValueFunctionText"
  732. :autosize="{ minRows: 29, maxRows: 29 }"></el-input>
  733. </el-form-item>
  734. </el-col>
  735. </el-row>
  736. </el-form>
  737. <span slot="footer" class="dialog-footer">
  738. <el-button @click="
  739. (dialogCriticalValueFunction = false),
  740. (dialogCriticalValueFunctionText = '')
  741. " class="difference"> </el-button>
  742. <el-button type="primary" @click="OnsubmitDialogCritical" class="commonbutton"> </el-button>
  743. </span>
  744. </el-dialog>
  745. <!-- 随访函数弹框 -->
  746. <el-dialog title="随访函数设置" :visible.sync="dialogFollowUpFunction" width="50%" :close-on-click-modal="false"
  747. fullscreen>
  748. <el-form label-width="110px">
  749. <el-row>
  750. <el-col :span="24">
  751. <el-form-item label="随访函数">
  752. <el-input type="textarea" v-model="dialogFollowUpFunctionText"
  753. :autosize="{ minRows: 29, maxRows: 29 }"></el-input>
  754. </el-form-item>
  755. </el-col>
  756. </el-row>
  757. </el-form>
  758. <span slot="footer" class="dialog-footer">
  759. <el-button @click="
  760. (dialogFollowUpFunction = false), (dialogFollowUpFunctionText = '')
  761. " class="difference"> </el-button>
  762. <el-button type="primary" @click="OnsubmitDialogFollowUpFunction" class="commonbutton"> </el-button>
  763. </span>
  764. </el-dialog>
  765. <!-- 模板设计 -->
  766. <el-dialog title="模板设计" :visible.sync="dialogWin.acceptTemplate2" :append-to-body="true"
  767. :close-on-click-modal="false" fullscreen>
  768. <AcceptTemplate2 :refParams="acceptTemplateParams" />
  769. </el-dialog>
  770. </div>
  771. </template>
  772. <script>
  773. import { mapState } from "vuex";
  774. import Sortable from "sortablejs";
  775. import { getapi, postapi, deletapi } from "@/api/api";
  776. import { examinationgender, instrumentlist } from "@/request/systemapi";
  777. import { deepCopy, objCopy, dddw } from "../../utlis/proFunc";
  778. import {
  779. getporjectlists,
  780. groupsandlist,
  781. projectlist,
  782. invoicetypelist,
  783. newcombination,
  784. asbitemgetid,
  785. updateombination,
  786. samplesetlow,
  787. deletescombinationprojectid,
  788. combination,
  789. } from "@/request/commonapi";
  790. import HcAsbitem from "../../components/common/HcAsbitem.vue";
  791. import PreAsbitem from "../../components/common/PreAsbitem.vue";
  792. import AcceptTemplate2 from "@/components/common/AcceptTemplate.vue";
  793. export default {
  794. components: {
  795. HcAsbitem, PreAsbitem, AcceptTemplate2
  796. },
  797. data() {
  798. return {
  799. guiderules: {
  800. medicalCenterId: [
  801. {
  802. required: true,
  803. message: "请选择体检单位",
  804. trigger: "change",
  805. },
  806. ],
  807. asbitemId: [
  808. {
  809. required: true,
  810. message: "请选择组合项目",
  811. trigger: "change",
  812. },
  813. ],
  814. forSexId: [
  815. {
  816. required: true,
  817. message: "请选择组适用性别",
  818. trigger: "change",
  819. },
  820. ],
  821. guide: [{ required: true, message: "请输入指引内容", trigger: "blur" }],
  822. },
  823. guidetitle: 1,
  824. guideform: {
  825. medicalCenterId: "",
  826. asbitemId: "",
  827. forSexId: "",
  828. guide: "",
  829. }, //指引信息的数据对象
  830. organizationUnitdata: [], //体检中心
  831. guidetitledialogVisible: false,
  832. formdata: {
  833. guidanceinformationdata: [],
  834. },
  835. activeName: "first",
  836. isdislob: true,
  837. filetelists: [],
  838. flitvalues: [],
  839. num: 0,
  840. isshow: true,
  841. values: [],
  842. projectid: [],
  843. initprojectid: [],
  844. rules: {
  845. displayName: [
  846. { required: true, message: "请输入名称", trigger: "blur" },
  847. ],
  848. shortName: [{ required: true, message: "请输入简称", trigger: "blur" }],
  849. forSexId: [
  850. { required: true, message: "请选择适用性别", trigger: "blur" },
  851. ],
  852. itemTypeId: [
  853. { required: true, message: "请选择项目类别", trigger: "blur" },
  854. ],
  855. price: [{ required: true, message: "请输入价格", trigger: "blur" }],
  856. deviceTypeId: [
  857. { required: true, message: "请选择仪器类别", trigger: "blur" },
  858. ],
  859. invoiceItemTypeId: [
  860. { required: true, message: "请选择发票类别", trigger: "blur" },
  861. ],
  862. collectItemTypeId: [
  863. { required: true, message: "请选择汇总项目类别", trigger: "blur" },
  864. ],
  865. isItemResultMerger: [
  866. { required: true, message: "请选择项目结果", trigger: "blur" },
  867. ],
  868. isBeforeEat: [
  869. { required: true, message: "请选择餐前项目", trigger: "change" },
  870. ],
  871. clinicalMeaning: [
  872. { required: true, message: "请输入临床意义", trigger: "blur" },
  873. ],
  874. defaultResult: [
  875. { required: true, message: "请输入默认结果", trigger: "blur" },
  876. ],
  877. queueTime: [
  878. { required: true, message: "请输入候诊时间", trigger: "blur" },
  879. ],
  880. isDiagnosisFunction: [
  881. { required: true, message: "请选择启用诊断函数", trigger: "blur" },
  882. ],
  883. diagnosisFunction: [
  884. { required: true, message: "请输入诊断函数", trigger: "blur" },
  885. ],
  886. isContinueProcess: [
  887. {
  888. required: true,
  889. message: "请选择诊断函数处理完毕后继续处理",
  890. trigger: "blur",
  891. },
  892. ],
  893. isPictureRotate: [
  894. { required: true, message: "请选择体检报告图片旋", trigger: "blur" },
  895. ],
  896. isCheck: [
  897. { required: true, message: "请选择是检查项目", trigger: "blur" },
  898. ],
  899. isActive: [
  900. { required: true, message: "请选择是否启用", trigger: "blur" },
  901. ],
  902. }, //表单校验对象
  903. form: {
  904. displayName: "",
  905. shortName: "",
  906. forSexId: "A",
  907. itemTypeId: "",
  908. price: "0",
  909. deviceTypeId: null,
  910. invoiceItemTypeId: "",
  911. isItemResultMerger: "N",
  912. isBeforeEat: "N",
  913. clinicalMeaning: "",
  914. defaultResult: "未见异常",
  915. queueTime: "0",
  916. isDiagnosisFunction: "N",
  917. diagnosisFunction: "",
  918. isContinueProcess: "N",
  919. isPictureRotate: "N",
  920. isCheck: "Y", // 检查项目比较多
  921. isActive: "Y",
  922. collectItemTypeId: "",
  923. barcodeMode: "0",
  924. isWebAppoint: "Y",
  925. warn: "",
  926. diseaseScreeningTypeId: null,
  927. isDiagnosisFunctionBox: false,
  928. forPregnantFlag: "A",
  929. maritalStatusId: "A",
  930. suggestReason: "",
  931. isCriticalValueFunction: "N",
  932. criticalValueFunction: "",
  933. isFollowUpFunction: "N",
  934. followUpFunction: "",
  935. isPrivacy: "N",
  936. isOutsend: "N",
  937. isDiscount: "Y",
  938. medicalCenterId: null,
  939. },
  940. forSexId: [], //性别
  941. forPregnantFlag: [
  942. {
  943. id: "A",
  944. displayName: "允许",
  945. },
  946. {
  947. id: "1",
  948. displayName: "备孕和怀孕期间禁检",
  949. },
  950. {
  951. id: "2",
  952. displayName: "怀孕期间禁检",
  953. },
  954. ],
  955. itemTypeId: [], //项目类别
  956. deviceTypeId: [], //仪器类别
  957. invoiceItemTypeId: [], //发票类别
  958. isItemResultMerger: [
  959. {
  960. value: "Y",
  961. label: "是",
  962. },
  963. {
  964. value: "N",
  965. label: "否",
  966. },
  967. ], //项目结果合并
  968. isBeforeEat: [
  969. {
  970. value: "Y",
  971. label: "是",
  972. },
  973. {
  974. value: "N",
  975. label: "否",
  976. },
  977. ], //餐前项目
  978. isDiagnosisFunction: [
  979. {
  980. value: "Y",
  981. label: "是",
  982. },
  983. {
  984. value: "N",
  985. label: "否",
  986. },
  987. ], //启用诊断函数
  988. isContinueProcess: [
  989. {
  990. value: "Y",
  991. label: "是",
  992. },
  993. {
  994. value: "N",
  995. label: "否",
  996. },
  997. ], //诊断函数处理完毕
  998. isContinueProcess: [
  999. {
  1000. value: "Y",
  1001. label: "是",
  1002. },
  1003. {
  1004. value: "N",
  1005. label: "否",
  1006. },
  1007. ], //诊断函数处理完毕后继续处理
  1008. isPictureRotate: [
  1009. {
  1010. value: "Y",
  1011. label: "是",
  1012. },
  1013. {
  1014. value: "N",
  1015. label: "否",
  1016. },
  1017. ], //体检报告图片旋转
  1018. isCheck: [
  1019. {
  1020. value: "Y",
  1021. label: "是",
  1022. },
  1023. {
  1024. value: "N",
  1025. label: "否",
  1026. },
  1027. ], //是检查项目
  1028. isActive: [
  1029. {
  1030. value: "Y",
  1031. label: "是",
  1032. },
  1033. {
  1034. value: "N",
  1035. label: "否",
  1036. },
  1037. ], //是否启用
  1038. title: 1,
  1039. dialogVisible: false,
  1040. isshow: true,
  1041. tableHeight: window.innerHeight - 180, //表格动态高度
  1042. screenHeight: window.innerHeight, //内容区域高度
  1043. pages: {
  1044. Filter: "",
  1045. SkipCount: 0,
  1046. MaxResultCount: 100,
  1047. Sorting: "displayOrder desc",
  1048. },
  1049. tableData: [],
  1050. initTableData: [],
  1051. leftdata: [],
  1052. ary2: [],
  1053. ary1: [],
  1054. rightobj: {},
  1055. rightdata: [],
  1056. rightobj: {},
  1057. nums: 0,
  1058. itemid: "", //项目id
  1059. curRow: {},
  1060. asbitemdata: [], //组合项目
  1061. forsexdata: [], //适用性别
  1062. department: "",
  1063. quckDepartment: [],
  1064. treeprops: {
  1065. label: "displayName",
  1066. value: "id",
  1067. children: "treeChildren",
  1068. },
  1069. defaultResult: [
  1070. {
  1071. value: "1",
  1072. label: "未见异常",
  1073. },
  1074. {
  1075. value: "2",
  1076. label: "正常",
  1077. },
  1078. {
  1079. value: "3",
  1080. label: "阴性",
  1081. },
  1082. {
  1083. value: "4",
  1084. label: "无",
  1085. },
  1086. {
  1087. value: "5",
  1088. label: "(—)",
  1089. },
  1090. {
  1091. value: "6",
  1092. label: "­-",
  1093. },
  1094. ],
  1095. diagnosisFunctionBox: false,
  1096. diagnosisFunctionText: "",
  1097. dialogCriticalValueFunction: false,
  1098. dialogCriticalValueFunctionText: "",
  1099. dialogFollowUpFunction: false,
  1100. dialogFollowUpFunctionText: "",
  1101. disableddiagnosisFunction: true,
  1102. initfiletelists: [],
  1103. initItemTypeId: "",
  1104. guidelinesRules: {
  1105. medicalCenterId: [
  1106. { required: true, message: "请选择体检中心", trigger: "change" },
  1107. ],
  1108. forSexId: [
  1109. { required: true, message: "请选择性别", trigger: "change" },
  1110. ],
  1111. guide: [{ required: true, message: "请输入指引信息", trigger: "blur" }],
  1112. },
  1113. collectItemType: [],
  1114. diseaseScreeningType: [],
  1115. barcodeMode: [
  1116. {
  1117. id: "0",
  1118. displayName: "使用项目类别设置",
  1119. },
  1120. {
  1121. id: "1",
  1122. displayName: "打印人员登记号",
  1123. },
  1124. {
  1125. id: "2",
  1126. displayName: "不打印",
  1127. },
  1128. ],
  1129. HcAsbitemBrush: 0, // 互斥项目刷新
  1130. PreAsbitemBrush: 0, // 前置项目刷新
  1131. clickTime1: 0,
  1132. clickTime2: 0,
  1133. // 知情同意书参数
  1134. acceptTemplateParams: {
  1135. id: '', // 模板ID
  1136. brushTimes: 0, //控制刷新
  1137. }
  1138. };
  1139. },
  1140. created() {
  1141. // this.getlist();
  1142. this.gitprojectcategory();
  1143. },
  1144. mounted() {
  1145. this.rowDrop();
  1146. this.gitfleslist();
  1147. this.typeid();
  1148. },
  1149. updated() {
  1150. this.$nextTick(() => {
  1151. this.$refs.table.doLayout();
  1152. });
  1153. },
  1154. computed: {
  1155. ...mapState(["window", "dict", "dialogWin"]),
  1156. // tableHeight(){
  1157. // return this.window.pageHeight < 600
  1158. // ? 190
  1159. // : Math.floor((this.window.pageHeight - 260) / 2)
  1160. // },
  1161. },
  1162. methods: {
  1163. dddw,
  1164. changeBox(type) {
  1165. //赋值
  1166. if (this.form[type + "Box"]) {
  1167. this.$delete(this.form, type);
  1168. this.$set(this.form, type, "Y");
  1169. } else {
  1170. this.$delete(this.form, type);
  1171. this.$set(this.form, type, "N");
  1172. }
  1173. },
  1174. removeAsbItem(row) {
  1175. this.ary2 = [row];
  1176. },
  1177. chooseAsbItem(row) {
  1178. this.ary1 = [row];
  1179. },
  1180. changeUpdate(e, k) {
  1181. this.$delete(this.form, k);
  1182. this.$set(this.form, k, e);
  1183. },
  1184. projectCancellation() {
  1185. if (this.form.id == undefined || this.form.id == "") {
  1186. this.$message.warning("请选择组合项目");
  1187. this.isdislob = true;
  1188. } else {
  1189. this.rowick(this.form);
  1190. this.isdislob = true;
  1191. }
  1192. },
  1193. remoteMethods(keyWords) {
  1194. if (keyWords) {
  1195. this.filetelists = [];
  1196. this.initfiletelists.forEach((item) => {
  1197. if (
  1198. item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) >
  1199. -1 ||
  1200. item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > -1
  1201. // || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
  1202. ) {
  1203. this.filetelists.push(item);
  1204. }
  1205. });
  1206. } else {
  1207. this.filetelists = deepCopy(this.initfiletelists);
  1208. }
  1209. },
  1210. remoteMethod(keyWords) {
  1211. if (keyWords) {
  1212. this.projectid = [];
  1213. this.initprojectid.forEach((item) => {
  1214. if (
  1215. item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) >
  1216. -1 ||
  1217. item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > -1
  1218. // || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
  1219. ) {
  1220. this.projectid.push(item);
  1221. }
  1222. });
  1223. } else {
  1224. this.projectid = deepCopy(this.initprojectid);
  1225. }
  1226. },
  1227. OnsubmitDiagnosis() {
  1228. this.form.diagnosisFunction = this.diagnosisFunctionText;
  1229. this.diagnosisFunctionText = "";
  1230. this.diagnosisFunctionBox = false;
  1231. //this.$message.success("设置诊断函数成功");
  1232. },
  1233. OnsubmitDialogCritical() {
  1234. this.form.criticalValueFunction = this.dialogCriticalValueFunctionText;
  1235. this.dialogCriticalValueFunctionText = "";
  1236. this.dialogCriticalValueFunction = false;
  1237. //this.$message.success("设置诊断函数成功");
  1238. },
  1239. OnsubmitDialogFollowUpFunction() {
  1240. this.form.followUpFunction = this.dialogFollowUpFunctionText;
  1241. this.dialogFollowUpFunctionText = "";
  1242. this.dialogFollowUpFunction = false;
  1243. //this.$message.success("设置诊断函数成功");
  1244. },
  1245. quckRusetform(e) {
  1246. this.$forceUpdate();
  1247. },
  1248. typeid() {
  1249. projectlist().then((res) => {
  1250. if (res.code != -1) {
  1251. this.itemTypeId = res.data;
  1252. this.itemTypeId = this.formatData(this.itemTypeId);
  1253. }
  1254. });
  1255. },
  1256. formatData(dataList) {
  1257. for (let i = 0; i < dataList.length; i++) {
  1258. if (dataList[i].treeChildren.length < 1) {
  1259. dataList[i].treeChildren = undefined;
  1260. } else {
  1261. this.formatData(dataList[i].treeChildren);
  1262. }
  1263. }
  1264. return dataList;
  1265. },
  1266. treeclick(data) {
  1267. this.initItemTypeId = data.id;
  1268. postapi("/api/app/asbitem/getasbitemlist", { itemTypeId: data.id }).then(
  1269. (res) => {
  1270. if (res.code != -1) {
  1271. this.tableData = res.data;
  1272. // this.initTableData = [...res.data];
  1273. }
  1274. }
  1275. );
  1276. this.curRow = this.$options.data().curRow;
  1277. this.leftdata = this.$options.data().leftdata;
  1278. this.rightdata = this.$options.data().rightdata;
  1279. this.formdata = this.$options.data().formdata;
  1280. this.values = this.$options.data().values;
  1281. this.flitvalues = this.$options.data().flitvalues;
  1282. },
  1283. remoteMethodes(keyWords) {
  1284. if (keyWords) {
  1285. this.quckDepartment = [];
  1286. this.initTableData.forEach((item) => {
  1287. if (
  1288. item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) >
  1289. -1 ||
  1290. item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > -1
  1291. // || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
  1292. ) {
  1293. this.quckDepartment.push(item);
  1294. }
  1295. });
  1296. } else {
  1297. this.quckDepartment = deepCopy(this.initTableData);
  1298. }
  1299. },
  1300. quckDepartments(e) {
  1301. if (e) {
  1302. let currentKey = "";
  1303. this.quckDepartment.forEach((item) => {
  1304. if (e == item.id) {
  1305. currentKey = item.itemTypeId;
  1306. this.initItemTypeId = item.itemTypeId;
  1307. }
  1308. });
  1309. this.$refs["itemType"].setCurrentKey(currentKey);
  1310. let selected = this.$refs["itemType"].getCurrentNode();
  1311. if (
  1312. this.$refs["itemType"].getNode(selected) &&
  1313. this.$refs["itemType"].getNode(selected).parent
  1314. ) {
  1315. this.expandParents(this.$refs["itemType"].getNode(selected).parent);
  1316. }
  1317. // getapi(`/api/app/asbitem/in-item-type/${currentKey}`)
  1318. postapi("/api/app/asbitem/getasbitemlist", {
  1319. itemTypeId: currentKey,
  1320. }).then((res) => {
  1321. if (res.code != -1) {
  1322. this.tableData = res.data;
  1323. this.tableData.forEach((item, index) => {
  1324. if (e == item.id) {
  1325. this.$refs["tableData"].setCurrentRow(item);
  1326. this.rowick(item);
  1327. this.tableScrollToRow(this.$refs.tableData, index);
  1328. this.searchup(item, index);
  1329. }
  1330. });
  1331. }
  1332. });
  1333. } else {
  1334. this.remoteMethodes();
  1335. }
  1336. },
  1337. searchup(data, index) {
  1338. this.$nextTick(() => {
  1339. if (index == 0) {
  1340. index = 1;
  1341. }
  1342. const targetTop = this.$refs["tableData"].$el
  1343. .querySelectorAll(".el-table__body tr")
  1344. [index - 1].getBoundingClientRect().top;
  1345. const containerTop = this.$refs["tableData"].$el
  1346. .querySelector(".el-table__body")
  1347. .getBoundingClientRect().top;
  1348. const scrollParent = this.$refs["tableData"].$el.querySelector(
  1349. ".el-table__body-wrapper"
  1350. );
  1351. scrollParent.scrollTop = targetTop - containerTop;
  1352. });
  1353. },
  1354. expandParents(node) {
  1355. node.expanded = true;
  1356. if (node.parent) {
  1357. this.expandParents(node.parent);
  1358. }
  1359. },
  1360. tableScrollToRow(tableElement, rowIndex) {
  1361. let theTableRows = tableElement.bodyWrapper.querySelectorAll(
  1362. ".el-table__body tbody .el-table__row"
  1363. );
  1364. let scrollTop = 0;
  1365. for (let i = 0; i < theTableRows.length; i++) {
  1366. if (i === rowIndex) {
  1367. break;
  1368. }
  1369. scrollTop += theTableRows[i].offsetHeight;
  1370. }
  1371. tableElement.bodyWrapper.scrollTop = scrollTop;
  1372. },
  1373. guiderow(row) {
  1374. this.guideform = row;
  1375. },
  1376. tableRowClassName({ row, rowIndex }) {
  1377. row.index = rowIndex;
  1378. },
  1379. //指引信息删除
  1380. deleteguidelines() {
  1381. if (this.curRow.id == undefined || this.curRow.id == "") {
  1382. this.$message.warning("请先选择组合项目");
  1383. } else {
  1384. if (
  1385. this.guideform.asbitemId == "" ||
  1386. this.guideform.asbitemId == undefined
  1387. ) {
  1388. this.$message.warning("请选择删除的数据");
  1389. } else {
  1390. this.$confirm("此操作确定后将永久删除该记录, 是否继续?", "提示", {
  1391. confirmButtonText: "是",
  1392. cancelButtonText: "否",
  1393. type: "warning",
  1394. cancelButtonClass: "difference",
  1395. confirmButtonClass: "commonbutton",
  1396. })
  1397. .then(() => {
  1398. this.formdata.guidanceinformationdata.splice(
  1399. this.guideform.index,
  1400. 1
  1401. );
  1402. })
  1403. .catch((err) => {
  1404. if (err == "cancel") {
  1405. this.$message.info("已取消删除");
  1406. }
  1407. });
  1408. }
  1409. }
  1410. },
  1411. //确定新增或者修改指引ruleForm
  1412. determineguidelines() {
  1413. this.$refs.ruleForms.validate((v) => {
  1414. if (v) {
  1415. postapi("/api/app/asbitem-guide", this.guideform).then((res) => {
  1416. if (res.code != -1) {
  1417. this.guidetitledialogVisible = false;
  1418. this.getobtainguidance();
  1419. //this.$message.success("创建成功");
  1420. }
  1421. });
  1422. }
  1423. });
  1424. },
  1425. //新增或者编辑需要的api中的id
  1426. publicapi() {
  1427. //获取体检中心
  1428. getapi("/api/app/organization-units/by-code-all").then((res) => {
  1429. if (res.code != -1) {
  1430. this.organizationUnitdata = res.data;
  1431. }
  1432. });
  1433. //获取组合项目
  1434. // getapi("/api/app/asbitem/in-filter").then((res) => {
  1435. // this.asbitemdata = res.data.items;
  1436. // });
  1437. postapi("/api/app/asbitem/getasbitemlist").then((res) => {
  1438. if (res.code != -1) {
  1439. this.asbitemdata = res.data;
  1440. }
  1441. });
  1442. //获取适用性别
  1443. getapi("/api/app/for-sex").then((res) => {
  1444. if (res.code != -1) {
  1445. this.forsexdata = res.data;
  1446. }
  1447. });
  1448. },
  1449. //创建弹框
  1450. createabulletbox() {
  1451. // this.guidetitledialogVisible = true;
  1452. // this.guideform = {};
  1453. // this.guidetitle = 1;
  1454. // this.publicapi();
  1455. if (this.curRow.id == undefined || this.curRow.id == "") {
  1456. this.$message.warning("请先选择组合项目");
  1457. } else {
  1458. let peisid = "";
  1459. if (
  1460. window.sessionStorage.getItem("peisid") === "null" ||
  1461. window.sessionStorage.getItem("peisid") === undefined ||
  1462. window.sessionStorage.getItem("peisid") === null
  1463. ) {
  1464. peisid = "";
  1465. } else {
  1466. peisid = window.sessionStorage.getItem("peisid");
  1467. }
  1468. this.formdata.guidanceinformationdata.push({
  1469. medicalCenterId: peisid,
  1470. asbitemId: this.curRow.id,
  1471. forSexId: "A",
  1472. guide: "",
  1473. });
  1474. }
  1475. },
  1476. saveguidelines() {
  1477. this.$refs["guidanceinformation"].validate((valid, fields) => {
  1478. if (!valid) {
  1479. this.$message.warning(fields[Object.keys(fields)[0]][0].message);
  1480. return false;
  1481. }
  1482. if (this.curRow.id == undefined || this.curRow.id == "") {
  1483. this.$message.warning("请先选择组合项目");
  1484. } else {
  1485. let sampleGroupId = this.curRow.id;
  1486. let sdate = [];
  1487. this.formdata.guidanceinformationdata.forEach((element) => {
  1488. sdate.push({
  1489. medicalCenterId: element.medicalCenterId,
  1490. forSexId: element.forSexId,
  1491. guide: element.guide,
  1492. });
  1493. });
  1494. postapi("/api/app/asbitemguide/createasbitemguidemany", {
  1495. asbitemId: sampleGroupId,
  1496. deatils: sdate,
  1497. }).then((res) => {
  1498. if (res.code != -1) {
  1499. //this.$message.success("保存成功");
  1500. }
  1501. });
  1502. }
  1503. });
  1504. },
  1505. //获取指引信息guidanceinformationdata
  1506. getobtainguidance(e) {
  1507. if (e != undefined || e != "") {
  1508. getapi(`/api/app/asbitemguide/getlistinasbitemid?AsbitemId=${e}`).then(
  1509. (res) => {
  1510. if (res.data != -1) {
  1511. this.formdata.guidanceinformationdata = [...res.data];
  1512. }
  1513. }
  1514. );
  1515. } else {
  1516. this.$message.warning("请先选择组合项目");
  1517. }
  1518. },
  1519. //获取项目
  1520. gitfleslist() {
  1521. getporjectlists().then((res) => {
  1522. if (res.code != -1) {
  1523. this.filetelists = res.data;
  1524. this.initfiletelists = [...res.data];
  1525. }
  1526. });
  1527. },
  1528. //搜索选择
  1529. selectitem(v) {
  1530. if (v) {
  1531. if (this.curRow.id == undefined || this.curRow.id == "") {
  1532. this.$message.warning("请先选择组合项目");
  1533. } else {
  1534. this.itemid = v.id;
  1535. if (this.rightdata.length < 1) {
  1536. this.rightdata.push({ displayName: v.displayName, id: v.id });
  1537. this.isdislob = false;
  1538. } else {
  1539. for (let i = 0; i < this.rightdata.length; i++) {
  1540. if (v.id === this.rightdata[i].id) {
  1541. return this.$message.warning("已有该项目");
  1542. }
  1543. }
  1544. this.rightdata.push({ displayName: v.displayName, id: v.id });
  1545. this.isdislob = false;
  1546. }
  1547. this.$nextTick(() => {
  1548. this.$refs["quickAsbOCX"].blur(); //total asbItemId
  1549. this.flitvalues = "";
  1550. this.filetelists = deepCopy(this.initfiletelists);
  1551. this.$refs["quickAsbOCX"].focus(); //total asbItemId
  1552. });
  1553. }
  1554. } else {
  1555. this.remoteMethods();
  1556. }
  1557. },
  1558. Onsubmit() {
  1559. let sampleGroupId = this.form.id;
  1560. let sdate = [];
  1561. // let sss = { itemId: this.itemid, asbitemId: sampleGroupId };
  1562. // sdate.push(sss);
  1563. this.rightdata.forEach((element) => {
  1564. sdate.push({ asbitemId: sampleGroupId, itemId: element.id });
  1565. });
  1566. // this.leftdata.forEach((element) => {
  1567. // sdate.push({ asbitemId: sampleGroupId, itemId: element.id });
  1568. // });
  1569. // this.leftdata.forEach((element) => {
  1570. // let sss = { sampleGroupId: sampleGroupId, asbitemId: element.id };
  1571. // sdate.push(sss);
  1572. // });
  1573. // sdate.push(sss);
  1574. if (sampleGroupId == undefined || sampleGroupId == "") {
  1575. this.$message.warning("请选择组合项目");
  1576. this.isdislob = true;
  1577. } else {
  1578. postapi("/api/app/asbitemdetail/createasbitemdetailmany", {
  1579. asbitemId: sampleGroupId,
  1580. details: sdate,
  1581. }).then((res) => {
  1582. if (res.code != -1) {
  1583. this.isdislob = true;
  1584. //this.$message.success("确定成功!");
  1585. }
  1586. });
  1587. }
  1588. // console.log(sdate);
  1589. // if (sampleGroupId == undefined) {
  1590. // this.$message.warning("请选择列表");
  1591. // } else if (this.itemid == "") {
  1592. // this.$message.warning("请选择项目");
  1593. // } else {
  1594. // postapi("/api/app/asbitem-detail/many", sdate).then((res) => {
  1595. // console.log("操作成功");
  1596. // this.isdislob = true;
  1597. // });
  1598. // }
  1599. },
  1600. dbClickChoosedAsb(row, column, event) {
  1601. let index = this.leftdata.findIndex((arr) => arr.id == row.id);
  1602. this.leftdata.splice(index, 1);
  1603. this.rightdata.push(row);
  1604. this.isdislob = false;
  1605. this.ary1 = [];
  1606. },
  1607. handleSelectionChange(val) {
  1608. this.ary1 = val;
  1609. },
  1610. addAbs() {
  1611. if (this.curRow.id == undefined || this.curRow.id == "") {
  1612. this.$message.warning("请先选择组合项目");
  1613. } else {
  1614. if (this.ary1.length < 1) {
  1615. this.$message.warning("请选择要添加的项目");
  1616. } else {
  1617. let temporaryLeft = [];
  1618. temporaryLeft = this.leftdata.filter(
  1619. (item) => !this.ary1.some((ele) => ele.id === item.id)
  1620. );
  1621. this.leftdata = [...temporaryLeft];
  1622. this.ary1.forEach((item) => {
  1623. this.rightdata.push(item);
  1624. });
  1625. this.isdislob = false;
  1626. this.ary1 = [];
  1627. }
  1628. }
  1629. },
  1630. removeAbs(row) {
  1631. let index = this.rightdata.findIndex((arr) => arr.id == row.id);
  1632. this.rightdata.splice(index, 1);
  1633. this.leftdata.push(row);
  1634. this.isdislob = false;
  1635. this.ary2 = [];
  1636. },
  1637. selecteditems(val) {
  1638. this.ary2 = val;
  1639. },
  1640. delAbs() {
  1641. if (this.curRow.id == undefined || this.curRow.id == "") {
  1642. this.$message.warning("请先选择组合项目");
  1643. } else {
  1644. if (this.ary2.length < 1) {
  1645. this.$message.warning("请选择要移除的项目");
  1646. } else {
  1647. let temporaryRight = [];
  1648. temporaryRight = this.rightdata.filter(
  1649. (item) => !this.ary2.some((ele) => ele.id === item.id)
  1650. );
  1651. this.rightdata = [...temporaryRight];
  1652. this.ary2.forEach((item) => {
  1653. this.leftdata.push(item);
  1654. });
  1655. this.isdislob = false;
  1656. this.ary2 = [];
  1657. }
  1658. }
  1659. },
  1660. //右侧双击移动删除
  1661. rightdelite(item, index) {
  1662. this.isdislob = false;
  1663. this.rightdata.splice(index, 1);
  1664. this.leftdata.push(item);
  1665. // this.updatedate();
  1666. },
  1667. //右侧点击选中
  1668. rightindex(item, index) {
  1669. this.nums = index;
  1670. this.leftobj = item;
  1671. // console.log(this.leftobj);
  1672. },
  1673. //左侧添加按钮
  1674. addobj() {
  1675. if (this.leftdata.length > 0) {
  1676. this.leftdata.splice(this.num, 1);
  1677. this.rightdata.push(this.rightobj);
  1678. this.isdislob = false;
  1679. }
  1680. },
  1681. //右移动
  1682. removeright() {
  1683. if (this.rightdata.length > 0) {
  1684. this.rightdata.splice(this.num, 1);
  1685. this.leftdata.push(this.leftobj);
  1686. this.isdislob = false;
  1687. // this.isdislob=false
  1688. this.updatedate();
  1689. }
  1690. },
  1691. //q全移去
  1692. allclear() {
  1693. if (this.curRow.id == undefined || this.curRow.id == "") {
  1694. this.$message.warning("请先选择组合项目");
  1695. } else {
  1696. if (this.rightdata.length > 0) {
  1697. this.rightdata.forEach((item) => {
  1698. this.leftdata.push(item);
  1699. });
  1700. this.rightdata = [];
  1701. this.isdislob = false;
  1702. } else {
  1703. this.$message.warning("没有可移除的项目");
  1704. }
  1705. }
  1706. },
  1707. //全添加
  1708. addall() {
  1709. if (this.curRow.id == undefined || this.curRow.id == "") {
  1710. this.$message.warning("请先选择组合项目");
  1711. } else {
  1712. if (this.leftdata.length > 0) {
  1713. this.leftdata.forEach((item) => {
  1714. this.rightdata.push(item);
  1715. });
  1716. this.leftdata = [];
  1717. this.isdislob = false;
  1718. } else {
  1719. this.$message.warning("没有可添加的项目");
  1720. }
  1721. }
  1722. },
  1723. //左侧双击事件
  1724. shuanji(item, index) {
  1725. this.leftdata.splice(index, 1);
  1726. this.rightdata.push(item);
  1727. this.isdislob = false;
  1728. },
  1729. clickPaixu(item, index) {
  1730. this.rightobj = item;
  1731. this.num = index;
  1732. },
  1733. //获取项目类别 3a0b0b10-719f-5824-6956-8cb70f204013 /api/app/item-type/by-code-all
  1734. gitprojectcategory() {
  1735. getapi("/api/app/item-type/by-code-all").then((res) => {
  1736. if (res.code != -1) {
  1737. this.projectid = res.data;
  1738. this.initprojectid = [...res.data];
  1739. }
  1740. });
  1741. postapi("/api/app/asbitem/getasbitemlist").then((res) => {
  1742. if (res.code != -1) {
  1743. this.initTableData = res.data;
  1744. this.quckDepartment = [...res.data];
  1745. }
  1746. });
  1747. postapi("/api/app/DiseaseScreeningType/GetList").then((res) => {
  1748. if (res.code != -1) {
  1749. this.diseaseScreeningType = [...res.data];
  1750. }
  1751. });
  1752. // groupsandlist(this.pages).then((res) => {
  1753. // if(res.code!=-1){
  1754. // this.initTableData = [...res.data.items];
  1755. // this.quckDepartment=res.data.items;
  1756. // initTableData
  1757. // }
  1758. // });
  1759. },
  1760. //ary1 需要追加的数据 ary2目标数组
  1761. updatedate() {
  1762. this.ary1.forEach((item) => {
  1763. let iscz = false;
  1764. this.ary2.forEach((item2) => {
  1765. if (item2.id == item.id) {
  1766. iscz = true;
  1767. }
  1768. });
  1769. if (!iscz) {
  1770. this.ary2.push(item);
  1771. // this.allid.push({ id: item.id });
  1772. }
  1773. });
  1774. },
  1775. ischangsItemTypeId(v) {
  1776. if (v.length > 1) {
  1777. this.form.itemTypeId = this.form.itemTypeId.slice(-1)[0];
  1778. } else {
  1779. this.form.itemTypeId = this.form.itemTypeId[0];
  1780. }
  1781. this.$refs.itemTypeIds.toggleDropDownVisible();
  1782. },
  1783. //项目类别选择
  1784. ischangs(v) {
  1785. if (v) {
  1786. if (this.curRow.id == undefined || this.curRow.id == "") {
  1787. this.$message.warning("请先选择组合项目");
  1788. } else {
  1789. this.$refs.example.toggleDropDownVisible();
  1790. let last = v.slice(-1)[0];
  1791. getapi(`/api/app/item/in-item-type/${last}`).then((res) => {
  1792. if (res.code != -1) {
  1793. let bq = [];
  1794. bq = res.data.filter(
  1795. (item) => !this.rightdata.some((ele) => ele.id === item.id)
  1796. );
  1797. this.leftdata = [...bq];
  1798. }
  1799. });
  1800. }
  1801. } else {
  1802. this.remoteMethod();
  1803. }
  1804. },
  1805. bindidclose() {
  1806. this.form = this.$options.data().form;
  1807. },
  1808. rowDrop() {
  1809. this.$nextTick(() => {
  1810. const tbody = document.querySelector(".el-table__body-wrapper tbody");
  1811. const _this = this;
  1812. Sortable.create(tbody, {
  1813. handle: ".move",
  1814. animation: 300,
  1815. onChoose({ oldIndex }) {
  1816. _this.$refs["tableData"].setCurrentRow(_this.tableData[oldIndex]);
  1817. },
  1818. onEnd({ newIndex, oldIndex }) {
  1819. _this.isshow = false;
  1820. const currRow = _this.tableData.splice(oldIndex, 1)[0];
  1821. _this.tableData.splice(newIndex, 0, currRow);
  1822. _this.rowick(_this.tableData[newIndex]);
  1823. _this.tableData.map((item, index) => {
  1824. if (index == newIndex && index == oldIndex) {
  1825. } else if (index == oldIndex) {
  1826. } else if (index == newIndex) {
  1827. }
  1828. });
  1829. },
  1830. });
  1831. });
  1832. },
  1833. //取消按钮
  1834. cancellation() {
  1835. postapi("/api/app/asbitem/getasbitemlist", {
  1836. itemTypeId: this.initItemTypeId,
  1837. }).then((res) => {
  1838. if (res.code != -1) {
  1839. this.tableData = res.data;
  1840. this.$message.info("操作取消");
  1841. this.isshow = true;
  1842. }
  1843. });
  1844. },
  1845. //确定排序
  1846. assertion() {
  1847. const result = [];
  1848. this.tableData.forEach((item, index) => {
  1849. // const currentDisplayOrder = this.initTableData[index].displayOrder;
  1850. // if (item.displayOrder != currentDisplayOrder) {
  1851. result.push({ id: item.id, displayOrder: index + 1 });
  1852. // }
  1853. });
  1854. combination({ itemList: result }).then((res) => {
  1855. if (res.code != -1) {
  1856. //this.$message.success("操作成功");
  1857. this.isshow = true;
  1858. }
  1859. // this.getlist();
  1860. });
  1861. },
  1862. //置底
  1863. setlow() {
  1864. this.form = { ...this.curRow };
  1865. if (this.form.id == undefined) {
  1866. this.$message.warning("请选择操作的数据");
  1867. } else {
  1868. samplesetlow(this.form.id, 2).then((res) => {
  1869. if (res.code != -1) {
  1870. this.getItemIdList();
  1871. //this.$message.success("操作成功");
  1872. }
  1873. });
  1874. }
  1875. },
  1876. //置顶
  1877. topping() {
  1878. this.form = { ...this.curRow };
  1879. if (this.form.id == undefined) {
  1880. this.$message.warning("请选择操作的数据");
  1881. } else {
  1882. samplesetlow(this.form.id, 1).then((res) => {
  1883. if (res.code != -1) {
  1884. this.getItemIdList();
  1885. //this.$message.success("操作成功");
  1886. }
  1887. });
  1888. }
  1889. },
  1890. //删除
  1891. deleteid() {
  1892. this.form = { ...this.curRow };
  1893. if (this.form.id == undefined) {
  1894. this.$message.warning("请选择操作的数据");
  1895. } else {
  1896. this.$confirm("是否确认删除, 是否继续?", "提示", {
  1897. confirmButtonText: "确定",
  1898. cancelButtonText: "取消",
  1899. type: "warning",
  1900. cancelButtonClass: "difference",
  1901. confirmButtonClass: "commonbutton",
  1902. }).then(() => {
  1903. deletescombinationprojectid(this.form.id).then((res) => {
  1904. if (res.code != -1) {
  1905. this.getItemIdList();
  1906. this.curRow = this.$options.data().curRow;
  1907. //this.$message.success("删除成功");
  1908. }
  1909. });
  1910. });
  1911. // deletescombinationprojectid(this.form.id).then((res) => {
  1912. // console.log("删除成功");
  1913. // this.getlist();
  1914. // });
  1915. }
  1916. },
  1917. // 知情同意书模板
  1918. btnAcceptTemplate() {
  1919. this.dialogWin.acceptTemplate2 = true
  1920. this.acceptTemplateParams.id = this.curRow.id
  1921. this.acceptTemplateParams.brushTimes++
  1922. },
  1923. //编辑弹框
  1924. editpopup() {
  1925. this.form = { ...this.curRow };
  1926. if (this.form.id == undefined) {
  1927. this.$message.warning("请点击选择操作的数据");
  1928. } else {
  1929. this.form.price = Number(this.form.price);
  1930. this.title = 2;
  1931. this.dialogVisible = true;
  1932. if (this.$refs.ruleForm !== undefined) {
  1933. this.$refs.ruleForm.resetFields();
  1934. }
  1935. asbitemgetid(this.form.id).then((res) => {
  1936. if (res.code != -1) {
  1937. this.form = { ...res.data };
  1938. if (res.data.isDiagnosisFunction == "Y") {
  1939. this.form.isDiagnosisFunctionBox = true;
  1940. } else {
  1941. this.form.isDiagnosisFunctionBox = false;
  1942. }
  1943. }
  1944. });
  1945. //性别
  1946. // examinationgender().then((res) => {
  1947. // this.forSexId = res.data;
  1948. // });
  1949. //适用性别
  1950. getapi("/api/app/for-sex").then((res) => {
  1951. if (res.code != -1) {
  1952. this.forSexId = res.data;
  1953. }
  1954. });
  1955. //项目类别
  1956. // projectlist().then((res) => {
  1957. // this.itemTypeId = res.data;
  1958. // });
  1959. //仪器类别
  1960. instrumentlist().then((res) => {
  1961. if (res.code != -1) {
  1962. this.deviceTypeId = res.data;
  1963. }
  1964. });
  1965. // //发票项目类别
  1966. // invoicetypelist().then((res) => {
  1967. // if (res.code != -1) {
  1968. // this.invoiceItemTypeId = res.data;
  1969. // }
  1970. // });
  1971. postapi("/api/app/CollectItemType/GetList").then((res) => {
  1972. if (res.code != -1) {
  1973. this.collectItemType = [...res.data];
  1974. }
  1975. });
  1976. }
  1977. },
  1978. editcancellation() {
  1979. this.dialogVisible = false;
  1980. // this.$refs.itemTypeIds.toggleDropDownVisible();
  1981. },
  1982. //确定新增或者编辑
  1983. addoredit() {
  1984. this.$refs.ruleForm.validate((v) => {
  1985. if (v) {
  1986. let obj = Object.assign({}, this.form, {
  1987. price: Number(this.form.price),
  1988. });
  1989. if (!obj.medicalCenterId) delete obj.medicalCenterId
  1990. if (this.title == 1) {
  1991. newcombination(obj).then((res) => {
  1992. if (res.code != -1) {
  1993. this.getItemIdList();
  1994. this.dialogVisible = false;
  1995. this.$nextTick(() => {
  1996. this.$refs["tableData"].setCurrentRow(res.data);
  1997. this.rowick(res.data);
  1998. });
  1999. //this.$message.success("新增成功");
  2000. // this.$refs.itemTypeIds.toggleDropDownVisible();
  2001. }
  2002. });
  2003. } else if (this.title == 2) {
  2004. updateombination(this.form.id, obj).then((res) => {
  2005. if (res.code != -1) {
  2006. this.tableData.forEach((item, index) => {
  2007. if (res.data.id == item.id) {
  2008. this.$set(this.tableData, index, res.data);
  2009. }
  2010. });
  2011. this.dialogVisible = false;
  2012. this.$nextTick(() => {
  2013. this.rowick(res.data);
  2014. });
  2015. //this.$message.success("修改成功");
  2016. // this.$refs.itemTypeIds.toggleDropDownVisible();
  2017. }
  2018. });
  2019. }
  2020. }
  2021. });
  2022. },
  2023. getItemIdList() {
  2024. postapi("/api/app/asbitem/getasbitemlist", {
  2025. itemTypeId: this.initItemTypeId,
  2026. }).then((res) => {
  2027. if (res.code != -1) {
  2028. this.tableData = res.data;
  2029. }
  2030. });
  2031. },
  2032. //新增弹框
  2033. addll() {
  2034. if (this.initItemTypeId == undefined || this.initItemTypeId == "") {
  2035. this.$message.warning("请选择项目类别");
  2036. } else {
  2037. this.dialogVisible = true;
  2038. this.title = 1;
  2039. if (this.$refs.ruleForm !== undefined) {
  2040. this.$refs.ruleForm.resetFields();
  2041. }
  2042. this.form = this.$options.data().form;
  2043. this.form.itemTypeId = this.initItemTypeId;
  2044. this.$nextTick(() => {
  2045. this.$refs.refinput.focus();
  2046. });
  2047. //性别
  2048. // examinationgender().then((res) => {
  2049. // if (res.code != -1) {
  2050. // this.forSexId = res.data;
  2051. // }
  2052. // });
  2053. getapi("/api/app/for-sex").then((res) => {
  2054. if (res.code != -1) {
  2055. this.forSexId = res.data;
  2056. }
  2057. });
  2058. // //项目类别
  2059. // projectlist().then((res) => {
  2060. // this.itemTypeId = res.data;
  2061. // });
  2062. //仪器类别
  2063. instrumentlist().then((res) => {
  2064. if (res.code != -1) {
  2065. this.deviceTypeId = res.data;
  2066. }
  2067. });
  2068. // //发票项目类别
  2069. // invoicetypelist().then((res) => {
  2070. // if (res.code != -1) {
  2071. // this.invoiceItemTypeId = res.data;
  2072. // }
  2073. // });
  2074. postapi("/api/app/CollectItemType/GetList").then((res) => {
  2075. if (res.code != -1) {
  2076. this.collectItemType = [...res.data];
  2077. }
  2078. });
  2079. }
  2080. },
  2081. refresh(row) {
  2082. getapi(
  2083. `/api/app/asbitem-detail/asbitem-detail-in-item?AsbitemId=${row.id}`
  2084. ).then((res) => {
  2085. if (res.code != -1) {
  2086. this.rightdata = [...res.data];
  2087. getapi(`/api/app/item/in-item-type/${this.values}`).then((res) => {
  2088. // this.leftdata = [...res.data];
  2089. if (res.code != -1) {
  2090. let bq = [];
  2091. bq = res.data.filter(
  2092. (item) => !this.rightdata.some((ele) => ele.id === item.id)
  2093. );
  2094. this.leftdata = [...bq];
  2095. }
  2096. });
  2097. }
  2098. });
  2099. this.getobtainguidance(this.curRow.id);
  2100. this.publicapi();
  2101. this.HcAsbitemBrush++;
  2102. this.PreAsbitemBrush++;
  2103. },
  2104. rowick(row) {
  2105. this.clickTime1 = new Date().getTime();
  2106. setTimeout(() => {
  2107. if (this.clickTime1 > this.clickTime2) {
  2108. this.curRow = row;
  2109. this.form = { ...row };
  2110. this.values = row.itemTypeId;
  2111. this.refresh(row);
  2112. }
  2113. }, 400);
  2114. },
  2115. async dblClick(row) {
  2116. this.clickTime2 = new Date().getTime();
  2117. this.curRow = row;
  2118. this.form = { ...row };
  2119. this.values = row.itemTypeId;
  2120. await this.refresh(row);
  2121. this.editpopup();
  2122. },
  2123. getSummaries(param) {
  2124. const { columns, data } = param;
  2125. const sums = [];
  2126. columns.forEach((column, index) => {
  2127. if (index === 0) {
  2128. sums[index] = "合计";
  2129. return;
  2130. }
  2131. if (index === 1) {
  2132. sums[index] = data.length + "个";
  2133. return;
  2134. }
  2135. });
  2136. return sums;
  2137. },
  2138. getlist() {
  2139. groupsandlist().then((res) => {
  2140. if (res.code != -1) {
  2141. this.initTableData = [...res.data];
  2142. this.tableData = [...res.data];
  2143. this.quckDepartment = [...res.data];
  2144. }
  2145. });
  2146. },
  2147. },
  2148. };
  2149. </script>
  2150. <style scoped>
  2151. @import "../../assets/css/global_button.css";
  2152. @import "../../assets/css/global_dialog.css";
  2153. @import "../../assets/css/global_table.css";
  2154. @import "../../assets/css/global_form.css";
  2155. @import "../../assets/css/global_input.css";
  2156. @import "../../assets/css/global.css";
  2157. .mainleftbox {
  2158. flex: 1;
  2159. }
  2160. .Selectbutton {
  2161. margin: 0 20px;
  2162. display: flex;
  2163. flex-direction: column;
  2164. justify-content: center;
  2165. align-items: center;
  2166. }
  2167. .mainbox {
  2168. display: flex;
  2169. justify-content: center;
  2170. margin-top: 5px;
  2171. }
  2172. .box {
  2173. display: flex;
  2174. flex-direction: column;
  2175. }
  2176. /* form表单每一项的下边距 */
  2177. :deep .el-form-item {
  2178. margin-bottom: 14px;
  2179. }
  2180. /* 去掉input textarea的手动扩张样式 */
  2181. :deep(.el-textarea__inner) {
  2182. resize: none;
  2183. }
  2184. /* el-dialog的头部样式 */
  2185. :deep .el-dialog__header {
  2186. padding: 11px 20px 11px;
  2187. }
  2188. /* el-dialog的主体样式 */
  2189. :deep .el-dialog__body {
  2190. padding: 0px 20px 0px;
  2191. }
  2192. /* el-divider样式 */
  2193. :deep .el-divider--horizontal {
  2194. margin: 0px 0 12px;
  2195. }
  2196. /* el-dialog的底部样式 */
  2197. :deep .el-dialog__footer {
  2198. padding: 0px 20px 14px;
  2199. }
  2200. /* 默认结果后面下拉框样式 */
  2201. :deep .downText .el-input--suffix .el-input__inner {
  2202. width: 0;
  2203. height: 100%;
  2204. padding: 0 19px;
  2205. }
  2206. /* 默认结果后面下拉框图标样式 */
  2207. :deep .downText .el-input--suffix .el-input__suffix {
  2208. right: 12px;
  2209. }
  2210. /* 默认结果后面下拉框 */
  2211. :deep .downText {
  2212. display: flex !important;
  2213. }
  2214. /* 诊断函数后面按钮样式 */
  2215. :deep .el-input-group__append {
  2216. padding: 0 11px;
  2217. }
  2218. /* 默认结果整体样式 */
  2219. .my-el-form-item :deep .el-form-item__content {
  2220. line-height: 0 !important;
  2221. }
  2222. .my-el-form-item :deep .el-input__icon {
  2223. line-height: 0 !important;
  2224. }
  2225. /* 指引信息 */
  2226. .guidelines :deep .el-form-item {
  2227. margin-bottom: 0;
  2228. }
  2229. .seachinput {
  2230. width: 350px;
  2231. margin-right: 110px;
  2232. }
  2233. :deep .seachinput .el-select {
  2234. width: 100%;
  2235. }
  2236. .layeredleftright {
  2237. width: 95%;
  2238. display: flex;
  2239. flex-direction: column;
  2240. }
  2241. :deep .el-tree-node>.el-tree-node__children {
  2242. overflow: visible;
  2243. }
  2244. :deep .el-form-item {
  2245. margin-bottom: 8px;
  2246. }
  2247. </style>