catalogdetailsadd.vue 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060
  1. <template>
  2. <!-- 非挂网目录新增 -->
  3. <div>
  4. <el-tabs v-model="activeName" @tab-click="handleClick">
  5. <el-tab-pane label="基础信息" name="first">
  6. <el-form
  7. :model="infoData"
  8. ref="planForm"
  9. label-width="150px"
  10. class="grid-form-class"
  11. >
  12. <div class="common-card">
  13. <h3>耗材基本资料</h3>
  14. <!-- <div class="right-type" style="color: #3c64dc; font-weight: 800">
  15. {{ $store.state.user.username }}
  16. </div> -->
  17. <div class="form-body">
  18. <div class="flex-css">
  19. <el-form-item
  20. label="耗材名称"
  21. prop="prodName"
  22. :rules="rules.required"
  23. >
  24. <el-input
  25. v-model="infoData.prodName"
  26. placeholder="请输入耗材名称"
  27. maxlength="50"
  28. ></el-input>
  29. </el-form-item>
  30. <el-form-item
  31. label="通用名称"
  32. prop="genName"
  33. :rules="rules.required"
  34. >
  35. <el-input
  36. v-model="infoData.genName"
  37. placeholder="请输入通用名称"
  38. maxlength="50"
  39. ></el-input>
  40. </el-form-item>
  41. <el-form-item
  42. label="英文名称"
  43. prop="engName"
  44. :rules="rules.InterEng"
  45. >
  46. <el-input
  47. v-model="infoData.engName"
  48. placeholder="请输入英文名称"
  49. maxlength="50"
  50. ></el-input>
  51. </el-form-item>
  52. </div>
  53. <div class="flex-css">
  54. <el-form-item label="品牌" prop="brad">
  55. <el-input
  56. v-model="infoData.brad"
  57. maxlength="50"
  58. placeholder="请输入品牌"
  59. ></el-input>
  60. </el-form-item>
  61. <el-form-item
  62. label="生产来源"
  63. prop="prodSouc"
  64. :rules="rules.selectRequired"
  65. >
  66. <el-select
  67. v-model="infoData.prodSouc"
  68. placeholder="请选择生产来源"
  69. clearable
  70. >
  71. <el-option
  72. v-for="item in sourceData"
  73. :key="item.value"
  74. :label="item.name"
  75. :value="item.value"
  76. ></el-option>
  77. </el-select>
  78. </el-form-item>
  79. <el-form-item
  80. label="生产企业"
  81. prop="prodEntp"
  82. :rules="rules.required"
  83. >
  84. <el-input
  85. v-model="infoData.prodEntp"
  86. maxlength="50"
  87. placeholder="请输入生产企业"
  88. ></el-input>
  89. </el-form-item>
  90. </div>
  91. <div class="flex-css">
  92. <el-form-item
  93. label="代理企业"
  94. prop="agnt"
  95. :rules="rules.required"
  96. >
  97. <el-input
  98. v-model="infoData.agnt"
  99. placeholder="请输入代理企业"
  100. maxlength="50"
  101. ></el-input>
  102. </el-form-item>
  103. <!-- -->
  104. <el-form-item label="规格" prop="spec" :rules="rules.required">
  105. <el-input
  106. v-model="infoData.spec"
  107. placeholder="请输入规格"
  108. maxlength="50"
  109. ></el-input>
  110. </el-form-item>
  111. <el-form-item label="型号" prop="mol" :rules="rules.required">
  112. <el-input
  113. v-model="infoData.mol"
  114. placeholder="请输入型号"
  115. maxlength="50"
  116. ></el-input>
  117. </el-form-item>
  118. </div>
  119. <div class="flex-css">
  120. <el-form-item label="材质" prop="matl" :rules="rules.required">
  121. <el-input
  122. v-model="infoData.matl"
  123. placeholder="请输入材质"
  124. maxlength="50"
  125. ></el-input>
  126. </el-form-item>
  127. <el-form-item
  128. label="包装材质"
  129. prop="pacmatl"
  130. :rules="rules.required"
  131. >
  132. <el-input
  133. v-model="infoData.pacmatl"
  134. placeholder="请输入包装材质"
  135. maxlength="50"
  136. ></el-input>
  137. </el-form-item>
  138. <el-form-item
  139. label="注册证号"
  140. prop="regcertno"
  141. :rules="rules.required"
  142. >
  143. <el-input
  144. v-model="infoData.regcertno"
  145. placeholder="请输入注册证号"
  146. maxlength="50"
  147. ></el-input>
  148. </el-form-item>
  149. </div>
  150. <!-- <div class="flex-css">
  151. <el-form-item label="挂网价格" prop="pubonlnPric" :rules="rules.numPotNo">
  152. <el-input
  153. v-model="infoData.pubonlnPric"
  154. placeholder="请输入挂网价格"
  155. maxlength="50"
  156. ></el-input>
  157. </el-form-item>
  158. </div> -->
  159. </div>
  160. </div>
  161. <div class="common-card">
  162. <h3>耗材属性资料</h3>
  163. <div class="form-body">
  164. <div class="flex-css">
  165. <!-- <el-form-item label="耗材大类" prop="prodType" :rules="rules.required">
  166. <el-select v-model="infoData.prodType" placeholder="请选择耗材大类" clearable>
  167. <el-option
  168. v-for="item in prodTypeData"
  169. :key="item.value"
  170. :label="item.name"
  171. :value="item.value"
  172. ></el-option>
  173. </el-select>
  174. </el-form-item> -->
  175. <el-form-item
  176. label="耗材类别"
  177. prop="mcsType"
  178. :rules="rules.selectRequired"
  179. >
  180. <el-select
  181. v-model="infoData.mcsType"
  182. placeholder="请选择耗材类别"
  183. clearable
  184. >
  185. <el-option
  186. v-for="item in mcsTypeData"
  187. :key="item.value"
  188. :label="item.name"
  189. :value="item.value"
  190. ></el-option>
  191. </el-select>
  192. </el-form-item>
  193. <el-form-item
  194. label="是否集采"
  195. prop="isFas"
  196. :rules="rules.selectRequired"
  197. >
  198. <el-select
  199. v-model="infoData.isFas"
  200. placeholder="请选择是否集采"
  201. clearable
  202. disabled="true"
  203. @change="clearType"
  204. >
  205. <el-option
  206. v-for="item in iFjcData"
  207. :key="item.value"
  208. :label="item.name"
  209. :value="item.value"
  210. ></el-option>
  211. </el-select>
  212. </el-form-item>
  213. </div>
  214. <div class="flex-css">
  215. <el-form-item
  216. label="集采批次"
  217. prop="fasBtch"
  218. v-if="infoData.isFas == '1'"
  219. :rules="rules.required"
  220. >
  221. <el-input
  222. v-model="infoData.fasBtch"
  223. placeholder="请输入集采批次"
  224. maxlength="50"
  225. ></el-input>
  226. </el-form-item>
  227. <el-form-item
  228. label="是否寄售"
  229. prop="isCgmt"
  230. :rules="rules.selectRequired"
  231. >
  232. <el-select
  233. v-model="infoData.isCgmt"
  234. placeholder="请选择是否寄售"
  235. clearable
  236. >
  237. <el-option
  238. v-for="item in iFjcData"
  239. :key="item.value"
  240. :label="item.name"
  241. :value="item.value"
  242. ></el-option>
  243. </el-select>
  244. </el-form-item>
  245. <!-- <el-form-item label="是否十八项重点耗材" prop="isEm" :rules="rules.selectRequired">
  246. <el-select v-model="infoData.isEm" placeholder="请选择是否十八项重点耗材" clearable>
  247. <el-option
  248. v-for="item in iFjcData"
  249. :key="item.value"
  250. :label="item.name"
  251. :value="item.value"
  252. ></el-option>
  253. </el-select>
  254. </el-form-item> -->
  255. </div>
  256. </div>
  257. </div>
  258. <div class="common-card">
  259. <h3>耗材编码资料</h3>
  260. <div class="form-body">
  261. <div class="flex-css">
  262. <el-form-item
  263. label="医保编码"
  264. prop="hiCode"
  265. :rules="rules.proCodeRule"
  266. >
  267. <el-input
  268. v-model="infoData.hiCode"
  269. placeholder="请输入医保编码"
  270. maxlength="50"
  271. ></el-input>
  272. </el-form-item>
  273. </div>
  274. </div>
  275. </div>
  276. <div class="common-card">
  277. <h3>耗材包装规则</h3>
  278. <div class="form-body">
  279. <div class="flex-css">
  280. <el-form-item
  281. label="最小单位"
  282. prop="prcUnt"
  283. :rules="rules.selectRequired"
  284. >
  285. <el-select
  286. v-model="infoData.prcUnt"
  287. placeholder="请选择最小单位"
  288. clearable
  289. >
  290. <el-option
  291. v-for="item in purcUntData"
  292. :key="item.value"
  293. :label="item.label"
  294. :value="item.label"
  295. ></el-option>
  296. </el-select>
  297. </el-form-item>
  298. <el-form-item
  299. label="采购价"
  300. prop="purcPric"
  301. :rules="rules.numPot4"
  302. >
  303. <template slot-scope="{}" slot="label">
  304. <span>采购价</span>
  305. <el-tooltip class="item" effect="dark" placement="top">
  306. <i
  307. class="el-icon-question"
  308. style="font-size: 14px; vertical-align: middle"
  309. ></i>
  310. <div slot="content">最小单位采购价</div>
  311. </el-tooltip>
  312. </template>
  313. <el-input
  314. v-model="infoData.purcPric"
  315. maxlength="50"
  316. placeholder="请输入采购价"
  317. ></el-input>
  318. </el-form-item>
  319. </div>
  320. <div class="flex-css">
  321. <el-form-item
  322. label="采购单位"
  323. prop="purcUnt"
  324. :rules="rules.selectRequired"
  325. >
  326. <el-select
  327. v-model="infoData.purcUnt"
  328. placeholder="请选择采购单位"
  329. clearable
  330. >
  331. <el-option
  332. v-for="item in prcUntData"
  333. :key="item.value"
  334. :label="item.label"
  335. :value="item.label"
  336. ></el-option>
  337. </el-select>
  338. </el-form-item>
  339. <el-form-item
  340. label="包装内数量"
  341. prop="convrat"
  342. :rules="rules.InterNum"
  343. >
  344. <template slot-scope="{}" slot="label">
  345. <span>包装内数量</span>
  346. <el-tooltip class="item" effect="dark" placement="top">
  347. <i
  348. class="el-icon-question"
  349. style="font-size: 14px; vertical-align: middle"
  350. ></i>
  351. <div slot="content">包含最小单位的数量</div>
  352. </el-tooltip>
  353. </template>
  354. <template>
  355. <el-input
  356. v-model="infoData.convrat"
  357. placeholder="请输入包装内数量"
  358. maxlength="50"
  359. ></el-input>
  360. </template>
  361. </el-form-item>
  362. </div>
  363. </div>
  364. </div>
  365. <div class="common-card">
  366. <h3>其他资料</h3>
  367. <div class="form-body">
  368. <div class="flex-css">
  369. <el-form-item
  370. label="存储方式"
  371. prop="stogType"
  372. :rules="rules.selectRequired"
  373. >
  374. <el-select
  375. v-model="infoData.stogType"
  376. placeholder="请选择存储方式"
  377. clearable
  378. >
  379. <el-option
  380. v-for="item in stogTypeData"
  381. :key="item.value"
  382. :label="item.name"
  383. :value="item.name"
  384. ></el-option>
  385. </el-select>
  386. </el-form-item>
  387. <el-form-item
  388. label="存储温度"
  389. prop="stogTemp"
  390. :rules="rules.selectRequired"
  391. >
  392. <el-select
  393. v-model="infoData.stogTemp"
  394. placeholder="请选择存储温度"
  395. clearable
  396. >
  397. <el-option
  398. v-for="item in stogTempData"
  399. :key="item.value"
  400. :label="item.name"
  401. :value="item.name"
  402. ></el-option>
  403. </el-select>
  404. </el-form-item>
  405. <el-form-item
  406. label="是否灭菌"
  407. prop="isStlz"
  408. :rules="rules.selectRequired"
  409. >
  410. <el-select
  411. v-model="infoData.isStlz"
  412. placeholder="请选择是否灭菌"
  413. clearable
  414. >
  415. <el-option
  416. v-for="item in isStlzdata"
  417. :key="item.value"
  418. :label="item.name"
  419. :value="item.name"
  420. ></el-option>
  421. </el-select>
  422. </el-form-item>
  423. </div>
  424. </div>
  425. </div>
  426. </el-form>
  427. <div class="foot-button" v-if="btnShow">
  428. <el-button type="success" @click="handleSave" :loading="saveLoad"
  429. >保存</el-button
  430. >
  431. <el-button type="primary" @click="handleSubmit" :loading="submitLoad"
  432. >提交</el-button
  433. >
  434. <el-button type="info" @click="handleBack">返回</el-button>
  435. </div>
  436. </el-tab-pane>
  437. <el-tab-pane label="资质信息" name="second">
  438. <div class="common-card">
  439. <div>
  440. <h3>耗材资质</h3>
  441. <!-- <div class="right-type">
  442. <el-button
  443. style="margin-bottom: 10px"
  444. type="primary"
  445. @click="handleAdd('one')"
  446. >添加资质</el-button
  447. >
  448. </div> -->
  449. </div>
  450. <el-table
  451. v-loading="listLoading"
  452. element-loading-text="加载中"
  453. :data="list"
  454. fit
  455. stripe
  456. border
  457. :cell-class-name="tableColClassName"
  458. >
  459. <template slot="empty">
  460. <img src="@/assets/nopage.png" alt />
  461. <p>暂无数据</p>
  462. </template>
  463. <el-table-column fixed type="index" label="序号" width="60" />
  464. <el-table-column label="资质证书信息" prop="quaName">
  465. </el-table-column>
  466. <el-table-column label="资质证书编号" prop="quaCode" />
  467. <el-table-column label="发证日期" prop="issuDate" />
  468. <el-table-column label="截止日期" prop="endDate" />
  469. <el-table-column label="资质证件" prop="fileId">
  470. <template slot-scope="scope">
  471. <yl-upload
  472. :fileId="scope.row.fileId"
  473. readonly
  474. v-if="scope.row.fileId"
  475. >
  476. </yl-upload>
  477. </template>
  478. </el-table-column>
  479. <el-table-column label="备注" prop="memo" />
  480. </el-table>
  481. </div>
  482. <div class="common-card">
  483. <div>
  484. <h3>生产厂商资质</h3>
  485. <!-- <div class="right-type">
  486. <el-button
  487. style="margin-bottom: 10px"
  488. type="primary"
  489. @click="handleAdd1('two')"
  490. >添加资质</el-button
  491. >
  492. </div> -->
  493. </div>
  494. <el-table
  495. v-loading="listLoading"
  496. element-loading-text="加载中"
  497. :data="listC"
  498. fit
  499. stripe
  500. border
  501. :cell-class-name="tableColClassName"
  502. >
  503. <template slot="empty">
  504. <img src="@/assets/nopage.png" alt />
  505. <p>暂无数据</p>
  506. </template>
  507. <el-table-column fixed type="index" label="序号" width="60" />
  508. <el-table-column label="资质证书信息" prop="quaName">
  509. </el-table-column>
  510. <el-table-column label="资质证书编号" prop="quaCode" />
  511. <el-table-column label="发证日期" prop="issuDate" />
  512. <el-table-column label="截止日期" prop="endDate" />
  513. <el-table-column label="资质证件" prop="fileId">
  514. <template slot-scope="scope">
  515. <yl-upload
  516. :fileId="scope.row.fileId"
  517. readonly
  518. v-if="scope.row.fileId"
  519. >
  520. </yl-upload>
  521. </template>
  522. </el-table-column>
  523. <el-table-column label="备注" prop="memo" />
  524. </el-table>
  525. </div>
  526. </el-tab-pane>
  527. </el-tabs>
  528. <el-dialog
  529. class="addclass"
  530. width="30%"
  531. :title="textMap[dialogStatus]"
  532. :close-on-click-modal="false"
  533. :visible.sync="dialogFormVisible"
  534. v-if="dialogFormVisible"
  535. >
  536. <el-form label-width="120px" :model="addform" ref="addForm">
  537. <el-form-item
  538. label="资质证书信息"
  539. prop="quaName"
  540. :rules="rules.selectRequired"
  541. >
  542. <el-select
  543. v-model.trim="addform.quaName"
  544. placeholder="请选择资质证书信息"
  545. >
  546. <el-option
  547. v-for="item in qualData"
  548. :key="item.id"
  549. :label="item.dicVal"
  550. :value="item.dicVal"
  551. clearable
  552. ></el-option>
  553. </el-select>
  554. </el-form-item>
  555. <el-form-item
  556. label="资质证书编号"
  557. prop="quaCode"
  558. :rules="rules.required"
  559. >
  560. <el-input
  561. v-model="addform.quaCode"
  562. placeholder="请输入资质证书编号"
  563. maxlength="50"
  564. ></el-input>
  565. </el-form-item>
  566. <el-form-item
  567. label="发证时间"
  568. prop="issuDate"
  569. :rules="rules.dateRequired"
  570. >
  571. <el-date-picker
  572. v-model.trim="addform.issuDate"
  573. type="date"
  574. :picker-options="TimeOption1"
  575. placeholder="选择日期"
  576. value-format="yyyy-MM-dd"
  577. ></el-date-picker>
  578. </el-form-item>
  579. <el-form-item
  580. label="截止时间"
  581. prop="endDate"
  582. :rules="rules.dateRequired"
  583. >
  584. <el-date-picker
  585. v-model.trim="addform.endDate"
  586. type="date"
  587. :picker-options="TimeOption"
  588. placeholder="选择日期"
  589. value-format="yyyy-MM-dd"
  590. ></el-date-picker>
  591. </el-form-item>
  592. <el-form-item
  593. label="资质证件"
  594. prop="fileId"
  595. :rules="rules.uploadRequired"
  596. >
  597. <yl-upload
  598. :fileId="addform.fileId"
  599. @getUpload="getUpload"
  600. urlName="acco"
  601. >
  602. <template v-slot:dec
  603. >只能上传pdf文件</template
  604. >
  605. </yl-upload>
  606. <!-- <yl-upload
  607. v-else
  608. :fileId="addform.fileId"
  609. readonly
  610. >
  611. </yl-upload> -->
  612. </el-form-item>
  613. <el-form-item label="备注" prop="memo">
  614. <el-input
  615. v-model="addform.memo"
  616. placeholder="请输入备注"
  617. maxlength="50"
  618. ></el-input>
  619. </el-form-item>
  620. </el-form>
  621. <div slot="footer">
  622. <el-button @click="dialogFormVisible = false">取 消</el-button>
  623. <el-button
  624. type="primary"
  625. v-preventReClick
  626. v-loading="loading1"
  627. @click="handledialog()"
  628. >确 定</el-button
  629. >
  630. </div>
  631. </el-dialog>
  632. </div>
  633. </template>
  634. <script>
  635. import ylStep from "@/components/yl-step";
  636. import ylUpload from "@/components/yl-upload";
  637. import { getThreeMonthAgoDate } from "@/utils/utils";
  638. import {
  639. selectMcsListById,
  640. insertSplerMcsList,
  641. insertMcsQua,
  642. insertFacQua
  643. } from "@/api/consumCataManage-sup/index";
  644. import rules from "@/utils/rules";
  645. export default {
  646. components: { ylUpload, ylStep },
  647. data() {
  648. return {
  649. activeName: "first",
  650. saveLoad: false,
  651. submitLoad: false,
  652. rules,
  653. infoData: {
  654. spdId: "",
  655. materialId: "",
  656. prodName: "",
  657. hiCode: "",
  658. isFas: "0",
  659. fasBtch: "",
  660. spec: "",
  661. mol: "",
  662. matl: "",
  663. pacmatl: "",
  664. prodSouc: "",
  665. regcertno: "",
  666. prodentpCode: null,
  667. prodEntp: "",
  668. purcPric: null,
  669. status: "",
  670. isPub: "0",
  671. id: ""
  672. },
  673. listLoading: false,
  674. planForm: {},
  675. sourceData: [{ value: "1", name: "国产" }, { value: "2", name: "进口" }],
  676. iFjcData: [{ value: "1", name: "是" }, { value: "0", name: "否" }],
  677. mcsTypeData: [
  678. { value: "0", name: "普通耗材" },
  679. { value: "1", name: "高值耗材" },
  680. { value: "2", name: "试剂" },
  681. { value: "3", name: "总务耗材" }
  682. ],
  683. prodTypeData: [
  684. { value: "0", name: "医用耗材" },
  685. { value: "1", name: "办公用品" }
  686. ],
  687. stogTypeData: [
  688. { value: "常温", name: "常温" },
  689. { value: "冷藏", name: "冷藏" },
  690. { value: "冷冻", name: "冷冻" }
  691. ],
  692. stogTempData: [
  693. { value: "15℃-25℃", name: "15℃-25℃" },
  694. { value: "2℃-8℃", name: "2℃-8℃" },
  695. { value: "-10℃-2℃", name: "-10℃-2℃" }
  696. ],
  697. isStlzdata: [
  698. { value: "灭菌", name: "灭菌" },
  699. { value: "非灭菌", name: "非灭菌" }
  700. ],
  701. purcUntData: [
  702. // 最小单位
  703. { value: "箱", label: "箱" },
  704. { value: "包", label: "包" },
  705. { value: "袋", label: "袋" },
  706. { value: "盒", label: "盒" },
  707. { value: "瓶", label: "瓶" },
  708. { value: "根", label: "根" },
  709. { value: "片", label: "片" },
  710. { value: "贴", label: "贴" },
  711. { value: "件", label: "件" },
  712. { value: "条", label: "条" },
  713. { value: "只", label: "只" },
  714. { value: "块", label: "块" },
  715. { value: "枚", label: "枚" },
  716. { value: "捆", label: "捆" },
  717. { value: "束", label: "束" },
  718. { value: "斤", label: "斤" },
  719. { value: "个", label: "个" },
  720. { value: "支", label: "支" },
  721. { value: "台", label: "台" },
  722. { value: "克", label: "克" },
  723. { value: "张", label: "张" },
  724. { value: "辆", label: "辆" },
  725. { value: "具", label: "具" },
  726. { value: "米", label: "米" },
  727. { value: "批", label: "批" },
  728. { value: "盘", label: "盘" },
  729. { value: "把", label: "把" },
  730. { value: "对", label: "对" },
  731. { value: "盆", label: "盆" },
  732. { value: "套", label: "套" },
  733. { value: "轴", label: "轴" },
  734. { value: "板", label: "板" },
  735. { value: "本", label: "本" },
  736. { value: "公斤", label: "公斤" },
  737. { value: "万只", label: "万只" },
  738. { value: "卷", label: "卷" },
  739. { value: "付", label: "付" },
  740. { value: "桶", label: "桶" },
  741. { value: "节", label: "节" },
  742. { value: "打", label: "打" }
  743. ],
  744. prcUntData: [
  745. { value: "箱", label: "箱" },
  746. { value: "包", label: "包" },
  747. { value: "袋", label: "袋" },
  748. { value: "盒", label: "盒" },
  749. { value: "大包", label: "大包" },
  750. { value: "大袋", label: "大袋" },
  751. { value: "大盒", label: "大盒" },
  752. { value: "中包", label: "中包" },
  753. { value: "中袋", label: "中袋" },
  754. { value: "中盒", label: "中盒" },
  755. { value: "小包", label: "小包" },
  756. { value: "小袋", label: "小袋" },
  757. { value: "小盒", label: "小盒" },
  758. { value: "瓶", label: "瓶" },
  759. { value: "个", label: "个" },
  760. { value: "根", label: "根" },
  761. { value: "管", label: "管" },
  762. { value: "件", label: "件" },
  763. { value: "颗", label: "颗" },
  764. { value: "支", label: "支" },
  765. { value: "只", label: "只" },
  766. { value: "把", label: "把" },
  767. { value: "罐", label: "罐" },
  768. { value: "杯", label: "杯" },
  769. { value: "对", label: "对" },
  770. { value: "枚", label: "枚" },
  771. { value: "套", label: "套" },
  772. { value: "条", label: "条" },
  773. { value: "桶", label: "桶" },
  774. { value: "张", label: "张" },
  775. { value: "束", label: "束" }
  776. ],
  777. btnShow: true,
  778. dialogFormVisible: false,
  779. loading1: false,
  780. addform: {
  781. splerId: "",
  782. hiCode: "",
  783. quaName: "",
  784. quaCode: "",
  785. issuDate: "",
  786. endDate: "",
  787. fileId: "",
  788. memo: ""
  789. },
  790. textMap: {
  791. one: "耗材资质",
  792. two: "生产厂商资质"
  793. },
  794. dialogStatus: "",
  795. list: [],
  796. listC: [],
  797. editCode: true,
  798. qualData: [
  799. { id: "1", dicVal: "耗材授权书" },
  800. { id: "2", dicVal: "耗材注册证" }
  801. ],
  802. TimeOption: {
  803. disabledDate(time) {
  804. return time.getTime() < Date.now();
  805. }
  806. },
  807. TimeOption1: {
  808. disabledDate(time) {
  809. return time.getTime() > Date.now();
  810. }
  811. }
  812. };
  813. },
  814. created() {
  815. // if (this.$route.query.status == "B") {
  816. // this.btnShow = false;
  817. // }else if(this.$route.query.status=="D"){
  818. // this.reaDiv = true
  819. // }
  820. // this.getData()
  821. },
  822. methods: {
  823. isWithinLastThreeMonths(deadline) {
  824. // 创建截止日期对象
  825. const deadlineDate = new Date(deadline);
  826. // 创建截止日期前三个月的日期对象
  827. const threeMonthsAgo = new Date(getThreeMonthAgoDate(deadline));
  828. // 获取当前日期
  829. const now = new Date();
  830. // 判断当前日期是否在截止日期前三个月之内
  831. return now >= threeMonthsAgo && now <= deadlineDate;
  832. },
  833. tableColClassName({ row, column, rowIndex, columnIndex }) {
  834. if (
  835. this.isWithinLastThreeMonths(new Date(row.endDate)) &&
  836. columnIndex === 4
  837. ) {
  838. return "warning-row";
  839. }
  840. return "";
  841. },
  842. getUpload(id) {
  843. this.temp.fileId = id;
  844. if (id) {
  845. this.$refs.dataForm.clearValidate("fileId");
  846. } else {
  847. this.$refs.dataForm.validateField("fileId");
  848. }
  849. },
  850. // 信息保存
  851. handleSave() {
  852. // this.$refs["planForm"].validate((valid) => {
  853. // if (valid) {
  854. this.$confirm("确认保存", "提示", {
  855. confirmButtonText: "确定",
  856. cancelButtonText: "取消",
  857. type: "warning"
  858. })
  859. .then(() => {
  860. this.saveLoad = true;
  861. this.infoData.spdId = this.$route.query.spdId;
  862. this.infoData.status = "A";
  863. this.infoData.opeType = "新增";
  864. insertSplerMcsList(this.infoData)
  865. .then(response => {
  866. this.$message({
  867. message: "保存成功",
  868. type: "success"
  869. });
  870. this.infoData.id = response.data.id;
  871. this.saveLoad = false;
  872. })
  873. .catch(() => {
  874. this.saveLoad = false;
  875. });
  876. })
  877. .catch(() => {});
  878. // }
  879. // });
  880. },
  881. // 整体提交
  882. handleSubmit() {
  883. this.$refs["planForm"].validate(valid => {
  884. if (valid) {
  885. this.$confirm("确认提交", "提示", {
  886. confirmButtonText: "确定",
  887. cancelButtonText: "取消",
  888. type: "warning"
  889. })
  890. .then(() => {
  891. this.submitLoad = true;
  892. this.infoData.status = "B";
  893. this.infoData.opeType = "新增";
  894. insertSplerMcsList(this.infoData)
  895. .then(response => {
  896. this.$message({
  897. message: "提交成功",
  898. type: "success"
  899. });
  900. this.submitLoad = false;
  901. this.$router.push({
  902. name: "consumCataManagement-sup",
  903. query: { spdId: this.$route.query.spdId }
  904. });
  905. })
  906. .catch(() => {
  907. this.submitLoad = false;
  908. });
  909. })
  910. .catch(() => {});
  911. } else {
  912. this.$nextTick(() => {
  913. this.$scrollToError();
  914. });
  915. }
  916. });
  917. },
  918. // 集采类型
  919. clearType() {
  920. this.infoData.fasBtch = "";
  921. },
  922. // 新增资质
  923. handleAdd(type) {
  924. (this.addform = {
  925. splerId: "",
  926. hiCode: "",
  927. quaName: "",
  928. quaCode: "",
  929. issuDate: "",
  930. endDate: "",
  931. fileId: "",
  932. memo: ""
  933. }),
  934. (this.dialogFormVisible = true);
  935. this.dialogStatus = type;
  936. this.$nextTick(() => {
  937. this.$refs.addForm.resetFields();
  938. });
  939. },
  940. handleAdd1(type) {
  941. (this.addform = {
  942. splerId: "",
  943. quaName: "",
  944. quaCode: "",
  945. issuDate: "",
  946. endDate: "",
  947. fileId: "",
  948. memo: "",
  949. prodEntp: ""
  950. }),
  951. (this.dialogFormVisible = true);
  952. this.dialogStatus = type;
  953. this.$nextTick(() => {
  954. this.$refs.addForm.resetFields();
  955. });
  956. },
  957. getUpload(id) {
  958. this.addform.fileId = id;
  959. if (id) {
  960. this.$refs.addForm.clearValidate("fileId");
  961. } else {
  962. this.$refs.addForm.validateField("fileId");
  963. }
  964. },
  965. // 确认
  966. handledialog() {
  967. this.$refs["addForm"].validate(valid => {
  968. if (valid) {
  969. this.$confirm("确认提交", "提示", {
  970. confirmButtonText: "确定",
  971. cancelButtonText: "取消",
  972. type: "warning"
  973. })
  974. .then(() => {
  975. this.loading1 = true;
  976. if (this.dialogStatus == "one") {
  977. this.addform.splerId = this.$store.state.user.orgId;
  978. this.addform.hiCode = this.infoData.hiCode;
  979. insertMcsQua(this.addform)
  980. .then(response => {
  981. this.$message({
  982. message: "提交成功",
  983. type: "success"
  984. });
  985. this.loading1 = false;
  986. this.dialogFormVisible = false;
  987. this.activeName = "second";
  988. if (this.$route.query.type == "modify") {
  989. this.getData1();
  990. } else {
  991. this.getData();
  992. }
  993. })
  994. .catch(() => {
  995. this.loading1 = false;
  996. this.$message({
  997. message: "提交失败",
  998. type: "error"
  999. });
  1000. });
  1001. } else if (this.dialogStatus == "two") {
  1002. this.addform.splerId = this.$store.state.user.orgId;
  1003. this.addform.prodEntp = this.infoData.prodEntp;
  1004. insertFacQua(this.addform)
  1005. .then(response => {
  1006. this.$message({
  1007. message: "提交成功",
  1008. type: "success"
  1009. });
  1010. this.loading1 = false;
  1011. this.dialogFormVisible = false;
  1012. this.loading1 = false;
  1013. this.dialogFormVisible = false;
  1014. this.activeName = "second";
  1015. if (this.$route.query.type == "modify") {
  1016. this.getData1();
  1017. } else {
  1018. this.getData();
  1019. }
  1020. })
  1021. .catch(() => {
  1022. this.loading1 = false;
  1023. this.$message({
  1024. message: "提交失败",
  1025. type: "error"
  1026. });
  1027. });
  1028. }
  1029. })
  1030. .catch(() => {});
  1031. } else {
  1032. }
  1033. });
  1034. },
  1035. handleBack() {
  1036. this.$router.push({
  1037. name: "distributionmanage",
  1038. query: { spdId: this.$route.query.spdId }
  1039. });
  1040. }
  1041. }
  1042. };
  1043. </script>
  1044. <style scoped lang="scss">
  1045. // ::v-deep .el-input__inner {
  1046. // width: 300px;
  1047. // }
  1048. .addclass ::v-deep .el-input__inner {
  1049. width: 260px;
  1050. }
  1051. ::v-deep .warning-row {
  1052. background: #f8e7e9 !important;
  1053. }
  1054. </style>