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.

2199 lines
77 KiB

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