distributionmanage.vue 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016
  1. <template>
  2. <!-- 配送目录管理 -->
  3. <div style="display: flex">
  4. <el-card style="width: 18%; margin-right: 18px; border-radius: 6px">
  5. <el-tabs v-model="activeNametree" type="card" @tab-click="tabClick" stretch>
  6. <!-- <el-tab-pane label="按分类" name="grp"></el-tab-pane> -->
  7. <el-tab-pane label="按机构" name="org"></el-tab-pane>
  8. </el-tabs>
  9. <el-tree
  10. :data="data"
  11. :props="defaultProps"
  12. node-key="spdId"
  13. @node-click="handleNodeClick"
  14. default-expand-all="true"
  15. style="margin-top: 10px"
  16. ></el-tree>
  17. </el-card>
  18. <div class="right-common-box">
  19. <el-form :model="listQuery" ref="listQuery" :inline="true" label-width="90px">
  20. <!-- <el-form-item label="耗材编码" prop="materialId" class="long">
  21. <el-input
  22. v-model="listQuery.materialId"
  23. placeholder="请输入耗材编码"
  24. ></el-input>
  25. </el-form-item> -->
  26. <!-- <el-form-item size="mini" label="医保编码" prop="hiCode" class="long">
  27. <el-input v-model="listQuery.hiCode" placeholder="请输入医保编码"></el-input>
  28. </el-form-item> -->
  29. <el-form-item size="mini" label="耗材信息" prop="prodName" class="long">
  30. <el-input v-model="listQuery.prodName" placeholder="请输入耗材名称/医保编码"></el-input>
  31. </el-form-item>
  32. <el-form-item size="mini" label="规格" prop="spec" class="long">
  33. <el-input v-model="listQuery.spec" placeholder="请输入规格"></el-input>
  34. </el-form-item>
  35. <el-form-item size="mini" label="型号" prop="mol" class="long">
  36. <el-input v-model="listQuery.mol" placeholder="请输入型号"></el-input>
  37. </el-form-item>
  38. <el-form-item size="mini" label="生产企业" prop="prodEntp" class="long">
  39. <el-input v-model="listQuery.prodEntp" placeholder="请输入生产企业"></el-input>
  40. </el-form-item>
  41. <el-form-item size="mini" label="是否集采" prop="isFas" class="long">
  42. <el-select v-model="listQuery.isFas" placeholder="请选择是否集采" clearable>
  43. <el-option
  44. v-for="item in isFasData"
  45. :key="item.value"
  46. :label="item.name"
  47. :value="item.value"
  48. ></el-option>
  49. </el-select>
  50. </el-form-item>
  51. <!-- <el-form-item label="集采批次" prop="fasBtch" class="long">
  52. <el-input v-model="listQuery.fasBtch" placeholder="请输入集采批次"></el-input>
  53. </el-form-item> -->
  54. <el-form-item size="mini" label="耗材类别" prop="mcsType" class="long">
  55. <el-select v-model="listQuery.mcsType" placeholder="请选择耗材类别" clearable>
  56. <el-option
  57. v-for="item in mcsTypeData"
  58. :key="item.value"
  59. :label="item.name"
  60. :value="item.value"
  61. ></el-option>
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item size="mini" label="生产来源" prop="prodSouc" class="long">
  65. <el-select v-model="listQuery.prodSouc" placeholder="请选择生产来源" clearable>
  66. <el-option
  67. v-for="item in SoucData"
  68. :key="item.value"
  69. :label="item.name"
  70. :value="item.value"
  71. ></el-option>
  72. </el-select>
  73. </el-form-item>
  74. <el-form-item size="mini" label="材质" prop="matl" class="long">
  75. <el-input v-model="listQuery.matl" placeholder="请输入材质"></el-input>
  76. </el-form-item>
  77. <el-form-item size="mini" label="注册证号" prop="regcertno" class="long">
  78. <el-input v-model="listQuery.regcertno" placeholder="请输入注册证号"></el-input>
  79. </el-form-item>
  80. <el-form-item size="mini" label="目录来源" prop="isPub" class="long">
  81. <el-select v-model="listQuery.isPub" placeholder="请选择目录来源" clearable>
  82. <el-option
  83. v-for="item in isPubData"
  84. :key="item.value"
  85. :label="item.name"
  86. :value="item.value"
  87. ></el-option>
  88. </el-select>
  89. </el-form-item>
  90. <!-- <el-form-item size="mini" label="当前状态" prop="status" class="long">
  91. <el-select v-model="listQuery.status" placeholder="请选择当前状态" clearable>
  92. <el-option
  93. v-for="item in statusData"
  94. :key="item.value"
  95. :label="item.name"
  96. :value="item.value"
  97. ></el-option>
  98. </el-select>
  99. </el-form-item> -->
  100. <!-- <el-form-item>
  101. <el-button type="primary" @click="getHospConsum('search')">查询</el-button>
  102. <el-button @click="reset('consumableData')">重置</el-button>
  103. </el-form-item> -->
  104. </el-form>
  105. <div class="right-button">
  106. <el-button type="primary" @click="getHospConsum('search')">查询</el-button>
  107. <el-button @click="reset('consumableData')">重置</el-button>
  108. </div>
  109. <div class="right-button" v-if="btnShow">
  110. <el-button type="primary" icon="el-icon-plus" @click="handleUpdate('search')"
  111. >挂网目录新增
  112. </el-button>
  113. <el-button type="primary" icon="el-icon-plus" @click="handleFadd('search')"
  114. >非挂网目录新增
  115. </el-button>
  116. </div>
  117. <el-table
  118. v-loading="listLoading"
  119. element-loading-text="加载中"
  120. :data="list"
  121. fit
  122. height="500"
  123. stripe
  124. border
  125. >
  126. <template slot="empty">
  127. <img src="@/assets/nopage.png" alt />
  128. <p>暂无数据</p>
  129. </template>
  130. <el-table-column fixed type="index" label="序号" width="60" />
  131. <el-table-column label="耗材信息" min-width="340">
  132. <template slot-scope="scope">
  133. <mcs-info :info="scope.row"></mcs-info>
  134. </template>
  135. </el-table-column>
  136. <el-table-column label="医保编码" prop="hiCode" width="80" />
  137. <el-table-column label="规格" prop="spec" width="80" />
  138. <el-table-column label="型号" prop="mol" width="80" />
  139. <el-table-column label="材质" prop="matl" width="80" />
  140. <el-table-column label="是否集采" prop="isFas" width="80">
  141. <template #default="{ row }">
  142. <span v-if="row.isFas == '1'">否</span>
  143. <span v-if="row.isFas == '0'">是</span>
  144. </template>
  145. </el-table-column>
  146. <el-table-column label="采购单位" prop="purcUnt" width="80" />
  147. <el-table-column label="采购价" prop="purcPric" width="80" />
  148. <!-- <el-table-column label="驳回原因" prop="rejtRea" width="80" /> -->
  149. <el-table-column label="目录来源" prop="isPub" width="80" fixed="right">
  150. <template #default="{ row }">
  151. <span v-if="row.isPub == '0'">挂网</span>
  152. <span v-if="row.isPub == '1'">非挂网</span>
  153. </template>
  154. </el-table-column>
  155. <!-- <el-table-column label="当前状态" prop="status" width="80" fixed="right">
  156. <template #default="{ row }">
  157. <span v-if="row.status == 'A'">待提交</span>
  158. <span v-if="row.status == 'B'">已提交</span>
  159. <span v-if="row.status == 'C'">审核通过</span>
  160. <span v-if="row.status == 'R'">驳回 </span>
  161. </template>
  162. </el-table-column> -->
  163. <el-table-column fixed="right" label="操作" width="160">
  164. <template slot-scope="scope">
  165. <div>
  166. <el-button type="text" @click="handleDui(scope.row)">修改</el-button>
  167. <!-- <el-button type="text" v-if="scope.row.stas == '1'" @click="handleCanc(scope.row)">取消对码</el-button> -->
  168. <!-- <el-button type="text" @click="handlePrice(scope.row)">申请调价</el-button> -->
  169. </div>
  170. </template>
  171. </el-table-column>
  172. </el-table>
  173. <!--分页-->
  174. <yl-pagination
  175. v-show="total > 0"
  176. :total="total"
  177. :page.sync="listQuery.current"
  178. :limit.sync="listQuery.size"
  179. @pagination="getHospConsum"
  180. />
  181. </div>
  182. <el-dialog title="调价申请" :visible.sync="dialogPrice" width="55%">
  183. <el-form
  184. ref="dataForm"
  185. :rules="rules"
  186. :model="temp"
  187. label-position="right"
  188. label-width="80px"
  189. >
  190. <el-row>
  191. <el-col :span="8">
  192. <el-form-item label="药品编码" prop="drugListId">
  193. <el-input v-model.trim="temp.drugListId" readonly placeholder="请输入" />
  194. </el-form-item>
  195. </el-col>
  196. <el-col :span="8">
  197. <el-form-item label="药品名称" prop="drugName">
  198. <el-input v-model.trim="temp.drugName" readonly placeholder="请输入" />
  199. </el-form-item>
  200. </el-col>
  201. <el-col :span="8">
  202. <el-form-item label="剂型" prop="dosformName">
  203. <el-input v-model.trim="temp.dosformName" readonly placeholder="请输入" />
  204. </el-form-item>
  205. </el-col>
  206. </el-row>
  207. <el-row>
  208. <el-col :span="8">
  209. <el-form-item label="规格" prop="specName">
  210. <el-input v-model.trim="temp.specName" readonly placeholder="请输入" />
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="8">
  214. <el-form-item label="包装单位" prop="pacUnt">
  215. <el-input v-model.trim="temp.pacUnt" readonly placeholder="请输入" />
  216. </el-form-item>
  217. </el-col>
  218. <el-col :span="8">
  219. <el-form-item label="生产企业" prop="prodEntp">
  220. <el-input v-model.trim="temp.prodEntp" readonly placeholder="请输入" />
  221. </el-form-item>
  222. </el-col>
  223. </el-row>
  224. <el-row>
  225. <el-col :span="8">
  226. <el-form-item label="当前价格" prop="pricInit">
  227. <el-input v-model.trim="temp.pricInit" readonly placeholder="请输入" />
  228. </el-form-item>
  229. </el-col>
  230. <el-col :span="8">
  231. <el-form-item label="调整价格" prop="pricCurr">
  232. <el-input v-model.trim="temp.pricCurr" placeholder="请输入调整后价格" />
  233. </el-form-item>
  234. </el-col>
  235. </el-row>
  236. <el-row>
  237. <el-form-item label="申请原因" prop="appyRea">
  238. <el-input
  239. type="textarea"
  240. v-model.trim="temp.appyRea"
  241. placeholder="请输入调价原因"
  242. />
  243. </el-form-item>
  244. </el-row>
  245. <el-row>
  246. <el-form-item label="上传文件" prop="fileId" :rules="rules.uploadRequired">
  247. <yl-upload :fileId="temp.fileId" @getUpload="getUpload" urlName="acco">
  248. <template v-slot:dec>只能上传pdf文件</template>
  249. </yl-upload>
  250. </el-form-item>
  251. </el-row>
  252. </el-form>
  253. <div slot="footer" class="dialog-footer">
  254. <el-button @click="dialogPrice = false">取消</el-button>
  255. <el-button type="primary" @click="commitData()" :loading="ccLoad">确认</el-button>
  256. </div>
  257. </el-dialog>
  258. <el-dialog title="选择耗材" :visible.sync="dialogAdd" width="70%">
  259. <template>
  260. <el-form
  261. :model="listQueryadd"
  262. ref="listQueryadd"
  263. :inline="true"
  264. label-width="90px"
  265. >
  266. <el-form-item size="mini" label="耗材名称" prop="prodName" class="long">
  267. <el-input
  268. v-model="listQueryadd.prodName"
  269. placeholder="请输入耗材名称"
  270. ></el-input>
  271. </el-form-item>
  272. <el-form-item size="mini" label="规格" prop="spec" class="long">
  273. <el-input v-model="listQueryadd.spec" placeholder="请输入耗材规格"></el-input>
  274. </el-form-item>
  275. <!-- <el-form-item label="耗材编码" prop="materialId" class="long">
  276. <el-input
  277. v-model="listQueryadd.materialId"
  278. placeholder="请输入耗材编码"
  279. ></el-input>
  280. </el-form-item> -->
  281. <el-form-item size="mini" label="医保编码" prop="hiCode" class="long">
  282. <el-input
  283. v-model="listQueryadd.hiCode"
  284. placeholder="请输入医保编码"
  285. ></el-input>
  286. </el-form-item>
  287. <el-form-item size="mini" label="是否集采" prop="isFas" class="long">
  288. <el-select
  289. v-model="listQueryadd.isFas"
  290. placeholder="请选择是否集采"
  291. clearable
  292. >
  293. <el-option
  294. v-for="item in isFasData"
  295. :key="item.value"
  296. :label="item.name"
  297. :value="item.value"
  298. ></el-option>
  299. </el-select>
  300. </el-form-item>
  301. <el-form-item size="mini" label="注册证号" prop="regcertno" class="long">
  302. <el-input
  303. v-model="listQueryadd.regcertno"
  304. placeholder="请输入注册证号"
  305. ></el-input>
  306. </el-form-item>
  307. <el-form-item size="mini" label="生产企业" prop="prodEntp" class="long">
  308. <el-input
  309. v-model="listQueryadd.prodEntp"
  310. placeholder="请输入生产企业"
  311. ></el-input>
  312. </el-form-item>
  313. <el-form-item size="mini" label="型号" prop="mol" class="long">
  314. <el-input v-model="listQueryadd.mol" placeholder="请输入型号"></el-input>
  315. </el-form-item>
  316. <!-- <el-form-item label="对码状态" prop="stas">
  317. <el-select
  318. v-model="listQuery.stas"
  319. placeholder="请选择对码状态"
  320. clearable
  321. >
  322. <el-option
  323. v-for="item in crspFlgOption"
  324. :key="item.value"
  325. :label="item.name"
  326. :value="item.value"
  327. ></el-option>
  328. </el-select>
  329. </el-form-item> -->
  330. <el-form-item>
  331. <el-button type="primary" @click="getdialog('search')">查询</el-button>
  332. <el-button @click="resetdialog('consumableData')">重置</el-button>
  333. </el-form-item>
  334. </el-form>
  335. <el-table
  336. ref="multipleTable"
  337. v-loading="listdialogLoading"
  338. element-loading-text="加载中"
  339. fit
  340. stripe
  341. border
  342. :data="consumableData"
  343. border
  344. style="width: 100%"
  345. row-key="id"
  346. height="500"
  347. @selection-change="handleSelectionChange"
  348. highlight-current-row
  349. >
  350. <el-table-column
  351. type="selection"
  352. :selectable="selected"
  353. :reserve-selection="true"
  354. width="55"
  355. ></el-table-column>
  356. <el-table-column prop="hiCode" label="医保编码"> </el-table-column>
  357. <el-table-column prop="prodName" label="耗材名称" width="180">
  358. </el-table-column>
  359. <el-table-column prop="pubonlnPric" label="挂网价格"> </el-table-column>
  360. <el-table-column prop="isFas" label="是否集采">
  361. <template #default="{ row }">
  362. <span v-if="row.isFas == '1'">否</span>
  363. <span v-if="row.isFas == '0'">是</span>
  364. </template>
  365. </el-table-column>
  366. <el-table-column prop="fasBtch" label="集采批次"> </el-table-column>
  367. <!-- <el-table-column prop="splb" label="商品类别">
  368. </el-table-column>
  369. <el-table-column prop="spfl" label="商品分类">
  370. </el-table-column> -->
  371. <el-table-column prop="spec" label="规格"> </el-table-column>
  372. <el-table-column prop="mol" label="型号"> </el-table-column>
  373. <el-table-column prop="matl" label="材质"> </el-table-column>
  374. <el-table-column prop="pacmatl" label="包装材质"> </el-table-column>
  375. <el-table-column prop="prodSouc" label="生产来源">
  376. <template #default="{ row }">
  377. <span v-if="row.prodSouc == '1'">国产</span>
  378. <span v-if="row.prodSouc == '2'">进口</span>
  379. </template>
  380. </el-table-column>
  381. <el-table-column prop="regcertno" label="注册证号"> </el-table-column>
  382. <el-table-column prop="prodEntp" label="生产企业" width="120">
  383. </el-table-column>
  384. <el-table-column prop="agnt" label="代理企业" width="150"> </el-table-column>
  385. </el-table>
  386. <div slot="footer" class="dialog-footer">
  387. <el-button type="primary" @click="handleConfirm" :loading="addLoading"
  388. >确认</el-button
  389. >
  390. </div>
  391. <!-- <el-form :model="form" ref="form" :rules="rules">
  392. <el-table
  393. :data="form.splerData"
  394. border
  395. style="width: 100%"
  396. v-loading="supLoading"
  397. >
  398. <el-table-column
  399. fixed
  400. prop="splerDrugName"
  401. label="药品名称"
  402. width="150"
  403. >
  404. </el-table-column>
  405. <el-table-column
  406. prop="splerDosformName"
  407. label="剂型名称"
  408. width="120"
  409. >
  410. </el-table-column>
  411. <el-table-column prop="splerProdentpName" label="生产企业">
  412. </el-table-column>
  413. <el-table-column
  414. prop="splerDrugListId"
  415. label="药品编码"
  416. width="120"
  417. >
  418. </el-table-column>
  419. <el-table-column prop="address" label="规格" width="250">
  420. <template slot-scope="scope">
  421. <div class="drug-name">
  422. {{"供应商规格 【" +scope.row.splerSpecName +"*" +scope.row.splerPrepunt +"/" +scope.row.splerPacUnt +"】"}}
  423. </div>
  424. </template>
  425. </el-table-column>
  426. <el-table-column prop="address" label="转换比" width="150">
  427. <template slot-scope="scope">
  428. <el-form-item :prop="'splerData.' + scope.$index + '.convrat'" :rules="{required: true,message: '输入转换比',trigger: 'change'}" >
  429. <el-input v-model="scope.row.convrat" placeholder="请输入转换比"></el-input>
  430. </el-form-item>
  431. </template>
  432. </el-table-column>
  433. <el-table-column fixed="right" label="操作" width="60">
  434. <template slot-scope="scope">
  435. <el-button
  436. @click="handleClick(scope.row, scope.$index)"
  437. type="text"
  438. size="small"
  439. >对码</el-button
  440. >
  441. </template>
  442. </el-table-column>
  443. </el-table>
  444. </el-form> -->
  445. <!--分页-->
  446. <yl-pagination
  447. v-show="totalC > 0"
  448. :total="totalC"
  449. :page.sync="listQueryadd.current"
  450. :limit.sync="listQueryadd.size"
  451. @pagination="getdialog"
  452. />
  453. </template>
  454. </el-dialog>
  455. </div>
  456. </template>
  457. <script>
  458. import ylPagination from "@/components/yl-pagination";
  459. import mcsInfo from "@/views/components/mcs-info.vue";
  460. import {
  461. selectSplerMcsList,
  462. selectMcsList,
  463. saveSplerMcs,
  464. PricChg,
  465. QueryHospList,
  466. QueryHospDrugList,
  467. QuerySplerDrugList,
  468. DrugMatch,
  469. CancMatch,
  470. selectSpdList,
  471. selectSplerMcsListIntf
  472. } from "@/api/consumCataManage-sup/index";
  473. import rulesR from "@/utils/rules";
  474. import ylUpload from "@/components/yl-upload";
  475. export default {
  476. components: {
  477. ylPagination,
  478. ylUpload,
  479. mcsInfo,
  480. },
  481. data() {
  482. return {
  483. activeName: "grp",
  484. rulesR,
  485. spdId: null,
  486. data: [],
  487. defaultProps: {
  488. children: "children",
  489. label: "spdName",
  490. },
  491. listQuery: {
  492. current: 1,
  493. size: 10,
  494. materialId: "",
  495. spec: "",
  496. hiCode: "",
  497. isFas: "",
  498. fasBtch: "",
  499. mol: "",
  500. prodSouc: "",
  501. mcsType: "",
  502. matl: "",
  503. prodEntp: "",
  504. prodName: "",
  505. status: "",
  506. regcertno: "",
  507. isPub: "",
  508. spdId:"",
  509. },
  510. listLoading: false,
  511. list: [],
  512. total: 0,
  513. tableLoading: false,
  514. supLoading: false,
  515. tableData: [],
  516. crspFlgOption: [
  517. { value: "0", name: "未对码" },
  518. { value: "1", name: "已对码" },
  519. ],
  520. isFasData: [
  521. { value: "0", name: "是" },
  522. { value: "1", name: "否" },
  523. ],
  524. mcsTypeData: [
  525. { value: "0", name: "普通耗材" },
  526. { value: "1", name: "高值耗材" },
  527. { value: "2", name: "试剂" },
  528. ],
  529. SoucData: [
  530. { value: "1", name: "国产" },
  531. { value: "2", name: "进口" },
  532. ],
  533. statusData: [
  534. { value: "A", name: "待提交" },
  535. { value: "B", name: "已提交" },
  536. { value: "C", name: "审核通过" },
  537. { value: "R", name: "驳回" },
  538. ],
  539. isPubData: [
  540. { value: "0", name: "挂网" },
  541. { value: "1", name: "非挂网" },
  542. ],
  543. dialogPrice: false,
  544. dialogDui: false,
  545. ccLoad: false,
  546. temp: {
  547. drugListId: "",
  548. drugName: "",
  549. dosformName: "",
  550. specName: "",
  551. pacUnt: "",
  552. prodEntp: "",
  553. pricInit: "",
  554. pricCurr: "",
  555. appyRea: "",
  556. fileId: "",
  557. },
  558. rules: {
  559. pricCurr: [
  560. {
  561. required: true,
  562. message: "调整价格不能为空",
  563. trigger: "blur",
  564. },
  565. {
  566. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  567. message: "请输入数字,最多两位小数",
  568. trigger: "blur",
  569. },
  570. ],
  571. appyRea: [
  572. {
  573. required: true,
  574. message: "申请原因不能为空",
  575. trigger: "blur",
  576. },
  577. ],
  578. num: [
  579. {
  580. required: true,
  581. message: "请输入转换比",
  582. trigger: "change",
  583. },
  584. ],
  585. uploadRequired: [{ required: true, message: "请上传文件", trigger: "change" }],
  586. },
  587. tableData: [
  588. {
  589. date: "2016-05-02",
  590. name: "王小虎",
  591. province: "上海",
  592. city: "普陀区",
  593. address: "上海市普陀区金沙江路 1518 弄",
  594. zip: 200333,
  595. },
  596. {
  597. date: "2016-05-04",
  598. name: "王小虎",
  599. province: "上海",
  600. city: "普陀区",
  601. address: "上海市普陀区金沙江路 1517 弄",
  602. zip: 200333,
  603. },
  604. {
  605. date: "2016-05-01",
  606. name: "王小虎",
  607. province: "上海",
  608. city: "普陀区",
  609. address: "上海市普陀区金沙江路 1519 弄",
  610. zip: 200333,
  611. },
  612. {
  613. date: "2016-05-03",
  614. name: "王小虎",
  615. province: "上海",
  616. city: "普陀区",
  617. address: "上海市普陀区金沙江路 1516 弄",
  618. zip: 200333,
  619. },
  620. ],
  621. consumableData: [],
  622. form: {
  623. splerData: [],
  624. },
  625. // 省平台目录
  626. listdialogLoading: false,
  627. dialogAdd: false,
  628. listQueryadd: {
  629. materialId: "",
  630. materialId: "",
  631. spec: "",
  632. hiCode: "",
  633. isFas: "",
  634. fasBtch: "",
  635. mol: "",
  636. current: 1,
  637. size: 10,
  638. regcertno: "",
  639. prodEntp: "",
  640. mol: "",
  641. },
  642. totalC: false,
  643. addLoading: false,
  644. insertMcsList: [],
  645. // tree
  646. activeNametree: "org",
  647. btnShow: false,
  648. list1:[]
  649. };
  650. },
  651. methods: {
  652. tabClick(tab) {
  653. if (tab.label == "按机构") {
  654. this.defaultProps.label = "spdName";
  655. }
  656. // else if(tab.label == "按分类"){
  657. // // this.getData4();
  658. // // this.defaultProps.label = 'orgGrpName'
  659. // // this.listQuery.type = 'grp';
  660. // }
  661. },
  662. // 上传文件
  663. getUpload(id) {
  664. this.temp.fileId = id;
  665. if (id) {
  666. this.$refs.dataForm.clearValidate("fileId");
  667. } else {
  668. this.$refs.dataForm.validateField("fileId");
  669. }
  670. },
  671. validateField(form, index) {
  672. let result = true;
  673. for (let item of this.$refs[form].fields) {
  674. if (item.prop.split(".")[1] == index) {
  675. this.$refs[form].validateField(item.prop, (error) => {
  676. if (error != "") {
  677. result = false;
  678. }
  679. });
  680. }
  681. if (!result) break;
  682. }
  683. return result;
  684. },
  685. // 搜索获取医院药品列表
  686. getHospConsum(type) {
  687. if (type == "search") {
  688. this.listQuery.current = 1;
  689. }
  690. this.listLoading = true;
  691. this.listQuery.spdId = this.spdId;
  692. selectSplerMcsList(this.listQuery)
  693. .then((res) => {
  694. this.list = res.data.records;
  695. this.total = res.data.total;
  696. this.listLoading = false;
  697. })
  698. .catch((err) => {
  699. this.listLoading = false;
  700. });
  701. },
  702. // 获取新增目录弹框数据
  703. getdialog(type) {
  704. if (type == "search") {
  705. this.listQueryadd.current = 1;
  706. }
  707. this.listdialogLoading = true;
  708. selectMcsList(this.listQueryadd)
  709. .then((res) => {
  710. this.consumableData = res.data.records;
  711. this.totalC = res.data.total;
  712. this.listdialogLoading = false;
  713. })
  714. .catch((err) => {
  715. this.listdialogLoading = false;
  716. });
  717. },
  718. // 点击获取医院药品列表
  719. handleNodeClick(data) {
  720. console.log(data, "data");
  721. this.listLoading = true;
  722. this.spdId = data.spdId;
  723. this.listQuery.spdId = this.spdId;
  724. selectSplerMcsList(this.listQuery)
  725. .then((res) => {
  726. this.list = res.data.records;
  727. this.total = res.data.total;
  728. this.listLoading = false;
  729. console.log(res, "医院目录");
  730. this.btnShow = true;
  731. })
  732. .catch((err) => {
  733. this.listLoading = false;
  734. });
  735. },
  736. // 获取医院列表
  737. getData(type) {
  738. this.data = [];
  739. this.listLoading = true;
  740. selectSpdList()
  741. .then((res) => {
  742. this.listQuery.spdId = res.data[0].spdId;
  743. this.data = res.data;
  744. console.log(this.data, "dadad");
  745. this.listLoading = false;
  746. })
  747. .catch((err) => {
  748. this.listLoading = false;
  749. });
  750. },
  751. reset(type) {
  752. if (type === "consumableData") {
  753. this.$refs.listQuery.resetFields();
  754. this.getHospConsum();
  755. } else {
  756. this.$refs.supQuery.resetFields();
  757. this.searchSup();
  758. }
  759. },
  760. resetdialog(type) {
  761. if (type === "consumableData") {
  762. this.$refs.listQueryadd.resetFields();
  763. this.getdialog();
  764. } else {
  765. this.$refs.supQuery.resetFields();
  766. this.searchSup();
  767. }
  768. },
  769. // 多选
  770. handleSelectionChange(e) {
  771. this.insertMcsList = e;
  772. this.insertMcsList = this.insertMcsList.map((item)=>{
  773. return{
  774. ...item,
  775. spdId: this.spdId,
  776. opeType:"新增",
  777. }
  778. })
  779. },
  780. // 多选后选过的禁用
  781. selected(row, index) {
  782. if (
  783. this.list1.some((el) => {
  784. return el.hiCode === row.hiCode;
  785. })
  786. ) {
  787. return false;
  788. } else {
  789. return true;
  790. }
  791. },
  792. // 新增目录
  793. handleUpdate(type) {
  794. if (type == "search") {
  795. this.listQueryadd.current = 1;
  796. }
  797. this.dialogAdd = true;
  798. selectSplerMcsListIntf(this.listQuery).then((res)=>{
  799. this.list1 = res.data.records;
  800. console.log(this.list1,"23")
  801. })
  802. this.getdialog();
  803. },
  804. // 新增目录确认
  805. handleConfirm() {
  806. if (this.insertMcsList.length == 0) {
  807. this.$message({
  808. message: "请选择要添加的数据",
  809. type: "warning",
  810. });
  811. } else {
  812. this.$confirm("确认提交", "提示", {
  813. confirmButtonText: "确定",
  814. cancelButtonText: "取消",
  815. type: "warning",
  816. }).then(() => {
  817. this.addLoading = true;
  818. saveSplerMcs({ insertMcsList: this.insertMcsList })
  819. .then((res) => {
  820. if (res.success === true) {
  821. this.addLoading = false;
  822. this.getHospConsum();
  823. this.insertMcsList = [];
  824. this.dialogAdd = false;
  825. this.$refs.multipleTable.clearSelection();
  826. this.$router.push({
  827. name:"consumCataManagement-sup",
  828. query:{spdId:this.spdId}
  829. })
  830. } else {
  831. this.addLoading = false;
  832. this.$refs.multipleTable.clearSelection();
  833. // this.$message({
  834. // message: res.message || "操作失败",
  835. // type: "error",
  836. // });
  837. }
  838. })
  839. .catch(() => {
  840. this.addLoading = false;
  841. this.dialogAdd = false;
  842. this.$refs.multipleTable.clearSelection();
  843. });
  844. });
  845. }
  846. // saveSplerMcs
  847. // this.addLoading = false;
  848. // this.dialogAdd = false;
  849. },
  850. // 非挂网目录新增
  851. handleFadd() {
  852. this.$router.push({
  853. name: "catalogdetailsadd",
  854. query: { spdId: this.spdId },
  855. });
  856. },
  857. // 调价申请 确认
  858. commitData() {
  859. this.$refs["dataForm"].validate((valid) => {
  860. if (valid) {
  861. this.ccLoad = true;
  862. let data = {
  863. drugListId: this.temp.drugListId,
  864. pricInit: this.temp.pricInit,
  865. pricCurr: this.temp.pricCurr,
  866. appyRea: this.temp.appyRea,
  867. spdId: this.spdId,
  868. fileId: this.temp.fileId,
  869. };
  870. PricChg(data)
  871. .then((res) => {
  872. if (res.success === true) {
  873. this.$message("调价已申请");
  874. this.ccLoad = false;
  875. this.dialogPrice = false;
  876. this.getHospConsum();
  877. }
  878. })
  879. .catch((err) => {
  880. this.ccLoad = false;
  881. });
  882. }
  883. });
  884. },
  885. // 对码弹窗获取供应商列表
  886. handleDui(row) {
  887. // console.log(row, "编辑");
  888. this.$router.push({
  889. name: "catalogdetails",
  890. query: { id: row.id, status: row.status, spdId: this.spdId, isPub: row.isPub,type:"modify",page:"1" ,current:this.listQuery.current },
  891. });
  892. // this.dialogDui = true;
  893. // this.consumableData = [];
  894. // this.consumableData.push(row);
  895. // this.supLoading = true;
  896. // QuerySplerDrugList({ spdId: row.spdId })
  897. // .then((res) => {
  898. // this.form.splerData = res.data.records;
  899. // this.total = res.data.total;
  900. // this.supLoading = false;
  901. // })
  902. // .catch((err) => {
  903. // this.supLoading = false;
  904. // });
  905. },
  906. // 对码操作
  907. handleClick(item, index) {
  908. let DrugMatchObj = {
  909. spdId: this.spdId,
  910. drugListId: this.consumableData[0].drugListId,
  911. splerDrugListId: item.splerDrugListId,
  912. convrat: item.convrat,
  913. };
  914. if (!this.validateField("form", index)) {
  915. return;
  916. } else {
  917. DrugMatch(DrugMatchObj).then((res) => {
  918. if (res.success === true) {
  919. this.dialogDui = false;
  920. this.getHospConsum();
  921. this.$message({
  922. message: "对码成功",
  923. type: "success",
  924. });
  925. } else {
  926. this.$message.error("对码失败");
  927. }
  928. });
  929. }
  930. },
  931. // 取消对码
  932. handleCanc(row) {
  933. this.$confirm("此操作会取消该药品对码, 是否继续?", "提示", {
  934. confirmButtonText: "确定",
  935. cancelButtonText: "取消",
  936. type: "warning",
  937. })
  938. .then(() => {
  939. CancMatch({ spdId: this.spdId, drugListId: row.drugListId }).then((res) => {
  940. if (res.success) {
  941. this.getHospConsum();
  942. this.$message({
  943. type: "success",
  944. message: "取消对码成功",
  945. });
  946. }
  947. });
  948. })
  949. .catch(() => {});
  950. },
  951. //搜索供应商列表
  952. searchSup() {
  953. this.supLoading = true;
  954. this.supQuery.spdId = this.spdId;
  955. QuerySplerDrugList(this.supQuery)
  956. .then((res) => {
  957. this.form.splerData = res.data.records;
  958. this.total = res.data.total;
  959. this.supLoading = false;
  960. })
  961. .catch((err) => {
  962. this.supLoading = false;
  963. });
  964. },
  965. },
  966. mounted() {
  967. this.getData();
  968. // this.getHospConsum();
  969. if (this.$route.query.spdId) {
  970. this.listQuery.spdId = this.$route.query.spdId;
  971. selectSplerMcsList(this.listQuery)
  972. .then((res) => {
  973. this.list = res.data.records;
  974. this.total = res.data.total;
  975. this.listLoading = false;
  976. console.log(res, "医院目录");
  977. this.btnShow = true;
  978. })
  979. .catch((err) => {
  980. this.listLoading = false;
  981. });
  982. };
  983. },
  984. };
  985. </script>
  986. <style lang="scss" scoped>
  987. ::v-deep .el-card__body {
  988. padding: 12px;
  989. }
  990. ::v-deep .el-tree-node__content {
  991. height: 35px;
  992. }
  993. ::v-deep .el-input__suffix {
  994. display: flex;
  995. align-items: center;
  996. cursor: pointer;
  997. font-size: 15px;
  998. }
  999. ::v-deep .long .el-form-item__content {
  1000. width: 220px;
  1001. }
  1002. ::v-deep .long .el-input__inner {
  1003. width: 199px;
  1004. }
  1005. </style>