catalogdetails.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  1. <template>
  2. <div>
  3. <el-form :model="infoData" ref="planForm" label-width="150px" class="grid-form-class">
  4. <div class="common-card" v-if="reaDiv">
  5. <!-- <h3>审批状态</h3> -->
  6. <!-- <yl-step></yl-step> -->
  7. <div class="form-body">
  8. <div class="flex-css">
  9. <el-form-item label="驳回原因" prop="rejtRea">
  10. <el-input v-model="infoData.rejtRea"></el-input>
  11. </el-form-item>
  12. </div>
  13. </div>
  14. </div>
  15. <div class="common-card">
  16. <h3>商品基本资料</h3>
  17. <!-- <div class="right-type" style="color: #3c64dc; font-weight: 800">
  18. {{ $store.state.user.username }}
  19. </div> -->
  20. <div class="form-body">
  21. <div class="flex-css">
  22. <el-form-item label="耗材名称" prop="prodName">
  23. <div class="content" v-if="isShow">
  24. {{ infoData.prodName }}
  25. </div>
  26. <el-input
  27. v-else
  28. v-model="infoData.prodName"
  29. placeholder="请输入耗材名称"
  30. ></el-input>
  31. </el-form-item>
  32. <el-form-item label="通用名称" prop="genName" :rules="rules.required">
  33. <el-input
  34. v-model="infoData.genName"
  35. placeholder="请输入通用名称"
  36. maxlength="50"
  37. ></el-input>
  38. </el-form-item>
  39. <el-form-item label="英文名称" prop="engName" :rules="rules.InterEng">
  40. <el-input
  41. v-model="infoData.engName"
  42. placeholder="请输入英文名称"
  43. maxlength="50"
  44. ></el-input>
  45. </el-form-item>
  46. </div>
  47. <div class="flex-css">
  48. <el-form-item label="品牌" prop="brad">
  49. <el-input
  50. v-model="infoData.brad"
  51. maxlength="50"
  52. placeholder="请输入品牌"
  53. ></el-input>
  54. </el-form-item>
  55. <el-form-item label="生产来源" prop="prodSouc" :rules="rules.selectRequired">
  56. <el-select
  57. v-model="infoData.prodSouc"
  58. placeholder="请选择生产来源"
  59. clearable
  60. >
  61. <el-option
  62. v-for="item in sourceData"
  63. :key="item.value"
  64. :label="item.name"
  65. :value="item.value"
  66. ></el-option>
  67. </el-select>
  68. </el-form-item>
  69. <el-form-item label="生产企业" prop="prodEntp">
  70. <div class="content" v-if="isShow">
  71. {{ infoData.prodEntp }}
  72. </div>
  73. <el-input
  74. v-else
  75. v-model="infoData.prodEntp"
  76. placeholder="请输入生产企业"
  77. ></el-input>
  78. </el-form-item>
  79. </div>
  80. <div class="flex-css">
  81. <el-form-item label="代理企业" prop="agnt">
  82. <div class="content" v-if="isShow">
  83. {{ infoData.agnt }}
  84. </div>
  85. <el-input
  86. v-else
  87. v-model="infoData.agnt"
  88. placeholder="请输入代理企业"
  89. ></el-input>
  90. </el-form-item>
  91. <el-form-item label="挂网价格" prop="pubonlnPric">
  92. <div class="content" v-if="isShow">
  93. {{ infoData.pubonlnPric }}
  94. </div>
  95. <el-input
  96. v-else
  97. v-model="infoData.pubonlnPric"
  98. placeholder="请输入挂网价格"
  99. ></el-input>
  100. </el-form-item>
  101. <el-form-item label="规格" prop="spec">
  102. <div class="content" v-if="isShow">
  103. {{ infoData.spec }}
  104. </div>
  105. <el-input
  106. v-else
  107. v-model="infoData.spec"
  108. placeholder="请输入规格"
  109. ></el-input>
  110. </el-form-item>
  111. </div>
  112. <div class="flex-css">
  113. <el-form-item label="型号" prop="mol">
  114. <div class="content" v-if="isShow">
  115. {{ infoData.mol }}
  116. </div>
  117. <el-input v-else v-model="infoData.mol" placeholder="请输入型号"></el-input>
  118. </el-form-item>
  119. <el-form-item label="材质" prop="matl">
  120. <div class="content" v-if="isShow">
  121. {{ infoData.matl }}
  122. </div>
  123. <el-input
  124. v-else
  125. v-model="infoData.matl"
  126. placeholder="请输入材质"
  127. ></el-input>
  128. </el-form-item>
  129. <el-form-item label="包装材质" prop="pacmatl">
  130. <div class="content" v-if="isShow">
  131. {{ infoData.pacmatl }}
  132. </div>
  133. <el-input
  134. v-else
  135. v-model="infoData.pacmatl"
  136. placeholder="请输入包装材质"
  137. ></el-input>
  138. </el-form-item>
  139. </div>
  140. <div class="flex-css">
  141. <el-form-item label="注册证号" prop="regcertno">
  142. <div class="content" v-if="isShow">
  143. {{ infoData.regcertno }}
  144. </div>
  145. <el-input
  146. v-else
  147. v-model="infoData.regcertno"
  148. placeholder="请输入注册证号"
  149. ></el-input>
  150. </el-form-item>
  151. <el-form-item label="目录来源" prop="isPub">
  152. <!-- <el-select
  153. v-model="infoData.isPub"
  154. placeholder="请选择目录来源"
  155. clearable
  156. disabled
  157. >
  158. <el-option
  159. v-for="item in isPubData"
  160. :key="item.value"
  161. :label="item.name"
  162. :value="item.value"
  163. ></el-option>
  164. </el-select> -->
  165. <div class="content">
  166. <span v-if="infoData.isPub == '1'">挂网</span>
  167. <span v-if="infoData.isPub == '0'">非挂网</span>
  168. </div>
  169. </el-form-item>
  170. <el-form-item label=" " prop="regcertno">
  171. <div class="content" v-if="isShow">
  172. <!-- {{infoData.regcertno}} -->
  173. </div>
  174. </el-form-item>
  175. </div>
  176. </div>
  177. </div>
  178. <div class="common-card">
  179. <h3>商品属性资料</h3>
  180. <div class="form-body">
  181. <div class="flex-css">
  182. <!-- <el-form-item label="商品大类" prop="prodType" :rules="rules.required">
  183. <el-select v-model="infoData.prodType" placeholder="请选择商品大类" clearable>
  184. <el-option
  185. v-for="item in prodTypeData"
  186. :key="item.value"
  187. :label="item.name"
  188. :value="item.value"
  189. ></el-option>
  190. </el-select>
  191. </el-form-item> -->
  192. <el-form-item label="耗材类别" prop="mcsType" :rules="rules.selectRequired">
  193. <el-select
  194. v-model="infoData.mcsType"
  195. placeholder="请选择耗材类别"
  196. clearable
  197. >
  198. <el-option
  199. v-for="item in mcsTypeData"
  200. :key="item.value"
  201. :label="item.name"
  202. :value="item.value"
  203. ></el-option>
  204. </el-select>
  205. </el-form-item>
  206. <el-form-item label="是否集采" prop="isFas">
  207. <div class="content" v-if="isShow">
  208. <span v-if="infoData.isFas == '1'">是</span>
  209. <span v-if="infoData.isFas == '0'">否</span>
  210. </div>
  211. <el-select
  212. v-else
  213. v-model="infoData.isFas"
  214. placeholder="请选择是否集采"
  215. clearable
  216. @change="clearType"
  217. >
  218. <el-option
  219. v-for="item in iFjcData"
  220. :key="item.value"
  221. :label="item.name"
  222. :value="item.value"
  223. ></el-option>
  224. </el-select>
  225. </el-form-item>
  226. </div>
  227. <div class="flex-css">
  228. <el-form-item label="带量批次" prop="fasBtch" v-if="infoData.isFas == '1'">
  229. <div class="content" v-if="isShow">
  230. {{ infoData.fasBtch }}
  231. </div>
  232. <el-input
  233. v-else
  234. v-model="infoData.fasBtch"
  235. placeholder="请输入带量批次"
  236. ></el-input>
  237. </el-form-item>
  238. <el-form-item label="是否寄售" prop="isCgmt" :rules="rules.selectRequired">
  239. <el-select v-model="infoData.isCgmt" placeholder="请选择是否寄售" clearable>
  240. <el-option
  241. v-for="item in iFjcData"
  242. :key="item.value"
  243. :label="item.name"
  244. :value="item.value"
  245. ></el-option>
  246. </el-select>
  247. </el-form-item>
  248. <!-- <el-form-item label="是否十八项重点耗材" prop="isEm" :rules="rules.selectRequired">
  249. <el-select v-model="infoData.isEm" placeholder="请选择是否十八项重点耗材" clearable>
  250. <el-option
  251. v-for="item in iFjcData"
  252. :key="item.value"
  253. :label="item.name"
  254. :value="item.value"
  255. ></el-option>
  256. </el-select>
  257. </el-form-item> -->
  258. </div>
  259. </div>
  260. </div>
  261. <div class="common-card">
  262. <h3>耗材编码资料</h3>
  263. <div class="form-body">
  264. <div class="flex-css">
  265. <el-form-item label="医保编码" prop="hiCode">
  266. <div class="content" v-if="isShow">
  267. {{ infoData.hiCode }}
  268. </div>
  269. <el-input
  270. v-else
  271. v-model="infoData.hiCode"
  272. placeholder="请输入医保编码"
  273. ></el-input>
  274. </el-form-item>
  275. </div>
  276. </div>
  277. </div>
  278. <div class="common-card">
  279. <h3>商品包装资料</h3>
  280. <div class="form-body">
  281. <div class="flex-css">
  282. <el-form-item label="最小单位" prop="prcUnt" :rules="rules.selectRequired">
  283. <el-select v-model="infoData.prcUnt" placeholder="请选择最小单位" clearable>
  284. <el-option
  285. v-for="item in purcUntData"
  286. :key="item.value"
  287. :label="item.label"
  288. :value="item.label"
  289. ></el-option>
  290. </el-select>
  291. </el-form-item>
  292. <el-form-item label="采购价" prop="purcPric" :rules="rules.numPot4">
  293. <el-input
  294. maxlength="50"
  295. v-model="infoData.purcPric"
  296. placeholder="请输入采购价"
  297. ></el-input>
  298. </el-form-item>
  299. </div>
  300. <div class="flex-css">
  301. <el-form-item label="采购单位" prop="purcUnt" :rules="rules.selectRequired">
  302. <el-select
  303. v-model="infoData.purcUnt"
  304. placeholder="请选择采购单位"
  305. clearable
  306. >
  307. <el-option
  308. v-for="item in prcUntData"
  309. :key="item.value"
  310. :label="item.label"
  311. :value="item.label"
  312. ></el-option>
  313. </el-select>
  314. </el-form-item>
  315. <el-form-item label="包装内数量" prop="convrat" :rules="rules.InterNum">
  316. <template slot-scope="{}" slot="label">
  317. <span>包装内数量</span>
  318. <el-tooltip class="item" effect="dark" placement="top">
  319. <i
  320. class="el-icon-question"
  321. style="font-size: 14px; vertical-align: middle"
  322. ></i>
  323. <div slot="content">包含最小单位的数量</div>
  324. </el-tooltip>
  325. </template>
  326. <template>
  327. <el-input
  328. v-model="infoData.convrat"
  329. placeholder="请输入包装内数量"
  330. maxlength="50"
  331. ></el-input>
  332. </template>
  333. </el-form-item>
  334. </div>
  335. </div>
  336. </div>
  337. <div class="common-card">
  338. <h3>其他资料</h3>
  339. <div class="form-body">
  340. <div class="flex-css">
  341. <el-form-item label="存储方式" prop="stogType" :rules="rules.selectRequired">
  342. <el-select
  343. v-model="infoData.stogType"
  344. placeholder="请选择存储方式"
  345. clearable
  346. >
  347. <el-option
  348. v-for="item in stogTypeData"
  349. :key="item.value"
  350. :label="item.name"
  351. :value="item.name"
  352. ></el-option>
  353. </el-select>
  354. </el-form-item>
  355. <el-form-item label="存储温度" prop="stogTemp" :rules="rules.selectRequired">
  356. <el-select
  357. v-model="infoData.stogTemp"
  358. placeholder="请选择存储温度"
  359. clearable
  360. >
  361. <el-option
  362. v-for="item in stogTempData"
  363. :key="item.value"
  364. :label="item.name"
  365. :value="item.name"
  366. ></el-option>
  367. </el-select>
  368. </el-form-item>
  369. <el-form-item label="是否灭菌" prop="isStlz" :rules="rules.selectRequired">
  370. <el-select v-model="infoData.isStlz" placeholder="请选择是否灭菌" clearable>
  371. <el-option
  372. v-for="item in isStlzdata"
  373. :key="item.value"
  374. :label="item.name"
  375. :value="item.name"
  376. ></el-option>
  377. </el-select>
  378. </el-form-item>
  379. </div>
  380. </div>
  381. </div>
  382. </el-form>
  383. <div class="foot-button">
  384. <el-button v-if="btnShow" type="success" @click="handleSave" :loading="saveLoad"
  385. >保存</el-button
  386. >
  387. <el-button v-if="btnShow" type="primary" @click="handleSubmit" :loading="submitLoad"
  388. >提交</el-button
  389. >
  390. <!-- </div>
  391. <div class="foot-button"> -->
  392. <el-button type="danger" @click="handleBack">返回</el-button>
  393. </div>
  394. </div>
  395. </template>
  396. <script>
  397. import ylStep from "@/components/yl-step";
  398. import ylUpload from "@/components/yl-upload";
  399. import {
  400. selectMcsListById,
  401. selectMcsListIntfById,
  402. insertSplerMcsList,
  403. } from "@/api/consumCataManage-sup/index";
  404. import rules from "@/utils/rules";
  405. export default {
  406. components: { ylUpload, ylStep },
  407. data() {
  408. return {
  409. saveLoad: false,
  410. submitLoad: false,
  411. rules,
  412. infoData: { quaList: [] },
  413. listLoading: false,
  414. planForm: {},
  415. sourceData: [
  416. { value: "1", name: "国产" },
  417. { value: "2", name: "进口" },
  418. ],
  419. iFjcData: [
  420. { value: "1", name: "是" },
  421. { value: "0", name: "否" },
  422. ],
  423. mcsTypeData: [
  424. { value: "0", name: "普通耗材" },
  425. { value: "1", name: "高值耗材" },
  426. { value: "2", name: "试剂" },
  427. ],
  428. prodTypeData: [
  429. { value: "0", name: "医用耗材" },
  430. { value: "1", name: "办公用品" },
  431. ],
  432. stogTypeData: [
  433. { value: "常温", name: "常温" },
  434. { value: "冷藏", name: "冷藏" },
  435. { value: "冷冻", name: "冷冻" },
  436. ],
  437. stogTempData: [
  438. { value: "15℃-25℃", name: "15℃-25℃" },
  439. { value: "2℃-8℃", name: "2℃-8℃" },
  440. { value: "-10℃-2℃", name: "-10℃-2℃" },
  441. ],
  442. isStlzdata: [
  443. { value: "灭菌", name: "灭菌" },
  444. { value: "非灭菌", name: "非灭菌" },
  445. ],
  446. isPubData: [
  447. { value: "1", name: "挂网" },
  448. { value: "0", name: "非挂网" },
  449. ],
  450. purcUntData: [
  451. { value: "箱", label: "箱" },
  452. { value: "包", label: "包" },
  453. { value: "袋", label: "袋" },
  454. { value: "盒", label: "盒" },
  455. { value: "瓶", label: "瓶" },
  456. { value: "根", label: "根" },
  457. { value: "片", label: "片" },
  458. { value: "贴", label: "贴" },
  459. { value: "件", label: "件" },
  460. { value: "条", label: "条" },
  461. { value: "只", label: "只" },
  462. { value: "块", label: "块" },
  463. { value: "枚", label: "枚" },
  464. { value: "捆", label: "捆" },
  465. { value: "束", label: "束" },
  466. { value: "斤", label: "斤" },
  467. { value: "个", label: "个" },
  468. { value: "支", label: "支" },
  469. { value: "台", label: "台" },
  470. { value: "克", label: "克" },
  471. { value: "张", label: "张" },
  472. { value: "辆", label: "辆" },
  473. { value: "具", label: "具" },
  474. { value: "米", label: "米" },
  475. { value: "批", label: "批" },
  476. { value: "盘", label: "盘" },
  477. { value: "把", label: "把" },
  478. { value: "对", label: "对" },
  479. { value: "盆", label: "盆" },
  480. { value: "套", label: "套" },
  481. { value: "轴", label: "轴" },
  482. { value: "板", label: "板" },
  483. { value: "本", label: "本" },
  484. { value: "公斤", label: "公斤" },
  485. { value: "万只", label: "万只" },
  486. { value: "卷", label: "卷" },
  487. { value: "付", label: "付" },
  488. { value: "桶", label: "桶" },
  489. { value: "节", label: "节" },
  490. { value: "打", label: "打" },
  491. ],
  492. prcUntData: [
  493. { value: "箱", label: "箱" },
  494. { value: "包", label: "包" },
  495. { value: "袋", label: "袋" },
  496. { value: "盒", label: "盒" },
  497. { value: "大包", label: "大包" },
  498. { value: "大袋", label: "大袋" },
  499. { value: "大盒", label: "大盒" },
  500. { value: "中包", label: "中包" },
  501. { value: "中袋", label: "中袋" },
  502. { value: "中盒", label: "中盒" },
  503. { value: "小包", label: "小包" },
  504. { value: "小袋", label: "小袋" },
  505. { value: "小盒", label: "小盒" },
  506. { value: "瓶", label: "瓶" },
  507. { value: "个", label: "个" },
  508. { value: "根", label: "根" },
  509. { value: "管", label: "管" },
  510. { value: "件", label: "件" },
  511. { value: "颗", label: "颗" },
  512. { value: "支", label: "支" },
  513. { value: "只", label: "只" },
  514. { value: "把", label: "把" },
  515. { value: "罐", label: "罐" },
  516. { value: "杯", label: "杯" },
  517. { value: "对", label: "对" },
  518. { value: "枚", label: "枚" },
  519. { value: "套", label: "套" },
  520. { value: "条", label: "条" },
  521. { value: "桶", label: "桶" },
  522. { value: "张", label: "张" },
  523. { value: "束", label: "束" },
  524. ],
  525. btnShow: true,
  526. reaDiv: false,
  527. // 禁用
  528. isShow: true,
  529. };
  530. },
  531. created() {
  532. // this.$nextTick(()=>{
  533. // this.$refs['planForm'].resetFields();
  534. // })
  535. if (this.$route.query.status == "B" || this.$route.query.status == "C") {
  536. this.btnShow = false;
  537. } else if (this.$route.query.status == "D") {
  538. this.reaDiv = true;
  539. }
  540. if (this.$route.query.isPub == "0") {
  541. this.isShow = false;
  542. } else {
  543. this.isShow = true;
  544. }
  545. if (this.$route.query.type == "modify") {
  546. this.getData1();
  547. } else {
  548. this.getData();
  549. }
  550. },
  551. methods: {
  552. getUpload(id) {
  553. this.temp.fileId = id;
  554. if (id) {
  555. this.$refs.dataForm.clearValidate("fileId");
  556. } else {
  557. this.$refs.dataForm.validateField("fileId");
  558. }
  559. },
  560. //获取列表数据
  561. getData() {
  562. selectMcsListIntfById({ id: this.$route.query.id })
  563. .then((response) => {
  564. this.infoData = response.data;
  565. this.$refs["planForm"].resetFields();
  566. })
  567. .catch((err) => {
  568. this.$message.error("获取数据失败");
  569. });
  570. },
  571. getData1() {
  572. selectMcsListById({ id: this.$route.query.id })
  573. .then((response) => {
  574. this.infoData = response.data;
  575. this.$refs["planForm"].resetFields();
  576. })
  577. .catch((err) => {
  578. this.$message.error("获取数据失败");
  579. });
  580. },
  581. clearType() {
  582. this.infoData.fasBtch = "";
  583. },
  584. // 信息保存
  585. handleSave() {
  586. // this.$refs["planForm"].validate((valid) => {
  587. // if (valid) {
  588. this.$confirm("确认保存", "提示", {
  589. confirmButtonText: "确定",
  590. cancelButtonText: "取消",
  591. type: "warning",
  592. })
  593. .then(() => {
  594. this.saveLoad = true;
  595. (this.infoData.isPub = this.$route.query.isPub),
  596. (this.infoData.opeType = this.$route.query.opeType),
  597. (this.infoData.status = "A");
  598. // this.infoData.opeType = "修改"
  599. insertSplerMcsList(this.infoData)
  600. .then((response) => {
  601. this.$message({
  602. message: "保存成功",
  603. type: "success",
  604. });
  605. this.saveLoad = false;
  606. })
  607. .catch(() => {
  608. this.saveLoad = false;
  609. });
  610. })
  611. .catch(() => {});
  612. // }
  613. // });
  614. },
  615. // 整体提交
  616. handleSubmit() {
  617. this.$refs["planForm"].validate((valid) => {
  618. if (valid) {
  619. this.$confirm("确认提交", "提示", {
  620. confirmButtonext: "确定",
  621. cancelButtonText: "取消",
  622. type: "warning",
  623. })
  624. .then(() => {
  625. this.submitLoad = true;
  626. (this.infoData.isPub = this.$route.query.isPub),
  627. (this.infoData.status = "B");
  628. // this.infoData.opeType = this.$route.query.opeType;
  629. if (!this.$route.query.opeType) {
  630. this.infoData.opeType = "修改";
  631. } else {
  632. this.infoData.opeType = this.$route.query.opeType;
  633. }
  634. insertSplerMcsList(this.infoData)
  635. .then((response) => {
  636. this.$message({
  637. message: "提交成功",
  638. type: "success",
  639. });
  640. this.submitLoad = false;
  641. this.$router.push({
  642. name: "consumCataManagement-sup",
  643. query: { spdId: this.$route.query.spdId },
  644. });
  645. })
  646. .catch(() => {
  647. this.submitLoad = false;
  648. });
  649. })
  650. .catch(() => {});
  651. }
  652. });
  653. },
  654. // 返回
  655. handleBack() {
  656. if (this.$route.query.page == "2") {
  657. this.$router.push({
  658. name: "consumCataManagement-sup",
  659. query: { current: this.$route.query.current, spdId: this.$route.query.spdId },
  660. });
  661. } else {
  662. this.$router.push({
  663. name: "distributionmanage",
  664. query: { current: this.$route.query.current, spdId: this.$route.query.spdId },
  665. });
  666. }
  667. },
  668. },
  669. };
  670. </script>
  671. <style scoped lang="scss">
  672. // ::v-deep .el-input__inner {
  673. // width: 300px;
  674. // }
  675. </style>