血透系统PC前端

ManageForm.vue 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. <template>
  2. <div id="manage-form">
  3. <el-dialog
  4. title="新增设备"
  5. :visible.sync="dialogVisible"
  6. width="52%"
  7. align="center"
  8. >
  9. <el-form ref="form" :model="form" :rules="rules">
  10. <el-row>
  11. <el-col :span="8">
  12. <el-form-item label="序列号:" required prop="serial_number">
  13. <el-input
  14. style="width:135px"
  15. v-model="form.serial_number"
  16. ></el-input>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="8">
  20. <el-form-item label="设备类型:" required prop="device_type">
  21. <el-select
  22. style="width:135px"
  23. v-model="form.device_type"
  24. @change="changeDeviceType"
  25. >
  26. <el-option
  27. v-for="item in this.DeviceType"
  28. :key="item.id"
  29. :label="item.name"
  30. :value="item.id"
  31. ></el-option>
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="8">
  36. <el-form-item
  37. label="机位号:"
  38. required
  39. prop="bed_number"
  40. v-show="bedShow"
  41. >
  42. <el-select style="width:135px" v-model="form.bed_number">
  43. <el-option
  44. v-for="item in this.bedNumber"
  45. :key="item.id"
  46. :label="item.number"
  47. :value="item.id"
  48. ></el-option>
  49. </el-select>
  50. </el-form-item>
  51. </el-col>
  52. </el-row>
  53. <el-row>
  54. <el-col :span="8">
  55. <el-form-item label="设备名称:" required prop="device_name">
  56. <el-input
  57. style="width:135px"
  58. v-model="form.device_name"
  59. ></el-input>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="8">
  63. <el-form-item label="生产厂家:" prop="manufacture_factory">
  64. <el-input
  65. style="width:135px"
  66. v-model="form.manufacture_factory"
  67. ></el-input>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="8">
  71. <el-form-item label="维修厂家:" prop="service_manufacturer">
  72. <el-input
  73. style="width:135px"
  74. v-model="form.service_manufacturer"
  75. ></el-input>
  76. </el-form-item>
  77. </el-col>
  78. </el-row>
  79. <el-row>
  80. <el-col :span="8">
  81. <el-form-item label="设备型号:" required prop="unit_type">
  82. <el-input style="width:135px" v-model="form.unit_type"></el-input>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="8">
  86. <el-form-item label="使用科室:" prop="use_section">
  87. <el-input
  88. style="width:135px"
  89. v-model="form.use_section"
  90. ></el-input>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="8">
  94. <el-form-item label="科室编号:" prop="section_number">
  95. <el-input
  96. style="width:135px"
  97. v-model="form.section_number"
  98. ></el-input>
  99. </el-form-item>
  100. </el-col>
  101. </el-row>
  102. <el-row>
  103. <el-col :span="8">
  104. <el-form-item label="购买日期:" prop="buy_date">
  105. <el-date-picker
  106. v-model="form.buy_date"
  107. prefix-icon="none"
  108. type="date"
  109. placeholder="请选择"
  110. format="yyyy-MM-dd"
  111. value-format="yyyy-MM-dd"
  112. style="width:140px"
  113. ></el-date-picker>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="8">
  117. <el-form-item label="安装日期:" prop="install_date">
  118. <el-date-picker
  119. v-model="form.install_date"
  120. prefix-icon="none"
  121. type="date"
  122. placeholder="请选择"
  123. format="yyyy-MM-dd"
  124. value-format="yyyy-MM-dd"
  125. style="width:140px"
  126. ></el-date-picker>
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="8">
  130. <el-form-item label="启用日期:" prop="start_date">
  131. <el-date-picker
  132. v-model="form.start_date"
  133. prefix-icon="none"
  134. type="date"
  135. placeholder="请选择"
  136. format="yyyy-MM-dd"
  137. value-format="yyyy-MM-dd"
  138. style="width:140px"
  139. ></el-date-picker>
  140. </el-form-item>
  141. </el-col>
  142. </el-row>
  143. <el-row>
  144. <el-col :span="8">
  145. <el-form-item label="维修工程师:" prop="maintenance_engineer">
  146. <el-input
  147. style="width:135px"
  148. v-model="form.maintenance_engineer"
  149. ></el-input>
  150. </el-form-item>
  151. </el-col>
  152. <el-col :span="8">
  153. <el-form-item label="联系电话:" prop="telephone">
  154. <el-input style="width:135px" v-model="form.telephone"></el-input>
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="8">
  158. <el-form-item label="保修期限:" prop="guarantee_date">
  159. <el-input
  160. style="width:135px"
  161. v-model="form.guarantee_date"
  162. ></el-input>
  163. </el-form-item>
  164. </el-col>
  165. </el-row>
  166. <el-row>
  167. <el-col :span="8">
  168. <el-form-item label="机器状态:" prop="machine_Status">
  169. <el-select
  170. style="width:135px"
  171. v-model="form.machine_status"
  172. @change="changeMachineStatus"
  173. >
  174. <el-option
  175. v-for="item in machineStatus"
  176. :key="item.id"
  177. :label="item.name"
  178. :value="item.id"
  179. ></el-option>
  180. </el-select>
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="8">
  184. <el-form-item
  185. label="初次使用次数:"
  186. prop="user_total"
  187. v-show="totalShow"
  188. >
  189. <el-input
  190. v-model="form.user_total"
  191. style="width:135px"
  192. ></el-input>
  193. </el-form-item>
  194. </el-col>
  195. <el-col :span="8" v-show="DisinfectionShow">
  196. <el-form-item label="消毒方式:">
  197. <el-select style="width:135px" v-model="form.Disinfection_mode">
  198. <el-option
  199. v-for="item in this.DisinfectionMode"
  200. :key="item.id"
  201. :label="item.name"
  202. :value="item.id"
  203. ></el-option>
  204. </el-select>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="8">
  208. <el-form-item label="备注:" prop="remarks">
  209. <el-input style="width:135px" v-model="form.remarks"></el-input>
  210. </el-form-item>
  211. </el-col>
  212. </el-row>
  213. <el-row>
  214. <el-col :span="8">
  215. <el-form-item label="报废日期:" prop="rubbish_date">
  216. <el-date-picker
  217. v-model="form.rubbish_date"
  218. :disabled="disa"
  219. prefix-icon="none"
  220. type="date"
  221. placeholder="请选择"
  222. format="yyyy-MM-dd"
  223. value-format="yyyy-MM-dd"
  224. style="width:135px"
  225. ></el-date-picker>
  226. </el-form-item>
  227. </el-col>
  228. <el-col :span="8">
  229. <el-form-item label="报废原因:" prop="rubbish_reason">
  230. <el-select style="width:135px" v-model="form.rubbish_reason">
  231. <el-option
  232. v-for="item in this.DisCardResion"
  233. :key="item.id"
  234. :label="item.name"
  235. :value="item.id"
  236. :disabled="disa"
  237. ></el-option>
  238. </el-select>
  239. </el-form-item>
  240. </el-col>
  241. <el-col :span="8">
  242. <el-form-item label="使用年限(年)" prop="user_year">
  243. <el-input style="width:135px" v-model="form.user_year"></el-input>
  244. </el-form-item>
  245. </el-col>
  246. </el-row>
  247. <el-row>
  248. <el-col :span="8">
  249. <el-form-item label="工作时长(h)" prop="work_time">
  250. <el-input style="width:135px" v-model="form.work_time"></el-input>
  251. </el-form-item>
  252. </el-col>
  253. <el-col :span="8">
  254. <el-form-item label="反渗模式:" v-show="reverseShow">
  255. <el-select style="width:135px" v-model="form.revers_mode">
  256. <el-option
  257. v-for="item in this.reverseMode"
  258. :key="item.id"
  259. :label="item.name"
  260. :value="item.id"
  261. ></el-option>
  262. </el-select>
  263. </el-form-item>
  264. </el-col>
  265. </el-row>
  266. <el-row>
  267. <el-col :span="24">
  268. <el-form-item
  269. label="治疗模式:"
  270. prop="treat_mode"
  271. v-show="treatShow"
  272. >
  273. <el-checkbox-group
  274. v-model="form.treat_mode"
  275. @change="changetreatmentmode"
  276. >
  277. <!-- <el-checkbox
  278. style="min-width:50px"
  279. v-for="item in treatmentmode"
  280. :key="item.id"
  281. :label="item.name"
  282. :value="item.id"
  283. ></el-checkbox> -->
  284. <el-checkbox
  285. style="min-width:50px"
  286. v-for="item in treatmentmode"
  287. :key="item"
  288. :label="item"
  289. :value="item"
  290. ></el-checkbox>
  291. </el-checkbox-group>
  292. </el-form-item>
  293. </el-col>
  294. </el-row>
  295. <el-row>
  296. <el-col :span="4" v-show="allShow">
  297. <el-checkbox
  298. :indeterminate="isIndeterminate"
  299. v-model="checkAll"
  300. @change="handleCheckAllChange"
  301. >全选</el-checkbox
  302. >
  303. </el-col>
  304. </el-row>
  305. </el-form>
  306. <span slot="footer" class="dialog-footer">
  307. <el-button @click="dialogVisible = false">取 消</el-button>
  308. <el-button type="primary" @click="SaveManageInfo('form')"
  309. >保存</el-button
  310. >
  311. </span>
  312. </el-dialog>
  313. </div>
  314. </template>
  315. <script>
  316. import { getAllSubregion, SaveManageInfo } from '@/api/manage'
  317. const treatmentmodes = [
  318. 'HD',
  319. 'HDF',
  320. 'HD+HP',
  321. 'HP',
  322. 'HF',
  323. 'SCUF',
  324. 'IUF',
  325. 'HFHD',
  326. 'HFHD+HP',
  327. 'PHF',
  328. 'HFR',
  329. 'HDF+HP',
  330. 'CRRT',
  331. '腹水回输'
  332. ]
  333. export default {
  334. name: 'ManageForm',
  335. data() {
  336. return {
  337. dialogVisible: false,
  338. checked1: '',
  339. form: {
  340. serial_number: '', // 序列号
  341. device_type: 1, // 设备类型
  342. bed_number: '', // 床位号
  343. device_name: '', // 设备名称
  344. manufacture_factory: '', // 生产厂家
  345. service_manufacturer: '', // 维修厂家
  346. unit_type: '', // 设备型号
  347. use_section: '', // 使用科室
  348. section_number: '', // 科室编号
  349. buy_date: '', // 购买日期
  350. install_date: '', // 安装日期
  351. start_date: '', // 启用日期
  352. maintenance_engineer: '', // 维修工程师
  353. telephone: '', // 联系电话
  354. guarantee_date: '', // 保修日期
  355. machine_status: 1, // 机器状态
  356. user_total: '', // 初次使用次数
  357. Disinfection_mode: '', // 消毒方式
  358. remarks: '', // 备注
  359. rubbish_date: '', // 报废日期
  360. rubbish_reason: '', // 报废原因
  361. user_year: '', // 使用年限
  362. work_time: '', // 工作时长
  363. revers_mode: '', // 反渗模式
  364. treat_mode: [],
  365. treat_type: [] // 治疗模式
  366. },
  367. fucks: [
  368. { id: 1, name: 'zs' },
  369. { id: 2, name: 'ls' },
  370. { id: 3, name: 'ww' }
  371. ],
  372. deviceType: [],
  373. bedNumber: [],
  374. machineStatus: [
  375. { id: 1, name: '使用机' },
  376. { id: 2, name: '备用机' },
  377. { id: 3, name: '急诊机' },
  378. { id: 4, name: '报废机' }
  379. ],
  380. DisinfectionMode: [
  381. { id: 1, name: '化学消毒' },
  382. { id: 2, name: '热消毒' },
  383. { id: 3, name: '化学消毒+热消毒' }
  384. ],
  385. DisCardResion: [
  386. { id: 0, name: '请选择' },
  387. { id: 1, name: '超期限报废' },
  388. { id: 2, name: '故障报废' },
  389. { id: 3, name: '核定报废' }
  390. ],
  391. checkAll: false,
  392. isIndeterminate: true,
  393. treatmentmode: treatmentmodes,
  394. // treatmentmode: [
  395. // { id: 1, name: 'zs' },
  396. // { id: 2, name: 'ls' },
  397. // { id: 3, name: 'ww' }
  398. // ],
  399. DeviceType: [
  400. { id: 1, name: '透析机' },
  401. { id: 2, name: '水处理机' },
  402. { id: 3, name: '其他' }
  403. ],
  404. reverseMode: [
  405. { id: 1, name: '单级反渗' },
  406. { id: 2, name: '双级反渗' }
  407. ],
  408. rules: {
  409. serial_number: [{ required: true, message: '请填写序列号' }],
  410. device_name: [{ required: true, message: '请填写设备名称' }],
  411. device_type: [{ required: true, message: '请填写设备类型' }],
  412. unit_type: [{ required: true, message: '请填写设备型号' }],
  413. bed_number: [{ required: true, message: '请填写机位号' }]
  414. // treat_mode: [{ required: true, message: "请选择至少一种治疗模式" }]
  415. },
  416. DisinfectionShow: false,
  417. reverseShow: false,
  418. treatShow: true,
  419. allShow: true,
  420. totalShow: true,
  421. bedShow: true,
  422. disa: true
  423. }
  424. },
  425. methods: {
  426. open: function() {
  427. this.dialogVisible = true
  428. // this.resetForm("form");
  429. },
  430. changetreatmentmode(val) {
  431. // console.log('val是什么-------------------', val)
  432. const checkedCount = val.length
  433. this.checkAll = checkedCount === 14
  434. this.isIndeterminate = checkedCount > 0 && checkedCount < 14
  435. },
  436. handleCheckAllChange(val) {
  437. console.log('val=================', val)
  438. console.log('是什么', this.form.treat_mode)
  439. console.log('hh', this.treatmentmode)
  440. this.form.treat_mode = val ? this.treatmentmode : []
  441. this.isIndeterminate = false
  442. },
  443. getAllSubregion() {
  444. getAllSubregion().then(response => {
  445. if (response.data.state === 1) {
  446. var zones = response.data.data.zones
  447. this.deviceType = zones
  448. var numbers = response.data.data.numbers
  449. var devicenumber = response.data.data.devicenumber
  450. var device = [{ id: 0, number: '请选择' }]
  451. for (let index = 0; index < devicenumber.length; index++) {
  452. const item = devicenumber[index]
  453. device.push({ id: item.id, number: item.number })
  454. }
  455. this.bedNumber = device
  456. }
  457. })
  458. },
  459. changeDeviceType(val) {
  460. if (val === 1) {
  461. this.bedShow = true
  462. this.totalShow = true
  463. this.treatShow = true
  464. this.allShow = true
  465. }
  466. if (val === 2) {
  467. this.totalShow = false
  468. this.DisinfectionShow = true
  469. this.allShow = false
  470. this.treatShow = false
  471. this.reverseShow = true
  472. this.bedShow = true
  473. }
  474. if (val === 3) {
  475. this.bedShow = false
  476. this.totalShow = false
  477. this.reverseShow = false
  478. this.allShow = false
  479. this.treatShow = false
  480. this.DisinfectionShow = false
  481. }
  482. },
  483. changeMachineStatus(val) {
  484. if (val === 4) {
  485. this.disa = false
  486. } else {
  487. this.disa = true
  488. this.form.rubbish_date = ''
  489. this.form.rubbish_reason = ''
  490. }
  491. },
  492. SaveManageInfo(formName) {
  493. console.log('====', this.form.treat_mode)
  494. const arr1 = []
  495. this.form.treat_mode.map((item, index) => {
  496. const obj = {}
  497. if (item === 'HD') {
  498. obj.id = 1
  499. }
  500. if (item === 'HDF') {
  501. obj.id = 2
  502. }
  503. if (item === 'HD+HP') {
  504. obj.id = 3
  505. }
  506. if (item === 'HP') {
  507. obj.id = 4
  508. }
  509. if (item === 'HF') {
  510. obj.id = 5
  511. }
  512. if (item === 'SCUF') {
  513. obj.id = 6
  514. }
  515. if (item === 'IUF') {
  516. obj.id = 7
  517. }
  518. if (item === 'HFHD') {
  519. obj.id = 8
  520. }
  521. if (item === 'HFHD+HP') {
  522. obj.id = 9
  523. }
  524. if (item === 'PHF') {
  525. obj.id = 10
  526. }
  527. if (item === 'HFR') {
  528. obj.id = 11
  529. }
  530. if (item === 'HDF+HP') {
  531. obj.id = 12
  532. }
  533. if (item === 'CRRT') {
  534. obj.id = 13
  535. }
  536. if (item === '腹水回输') {
  537. obj.id = 14
  538. }
  539. arr1.push(obj.id)
  540. })
  541. // this.form.treat_mode.map((item, index) => {
  542. // const obj = {};
  543. // obj.id = index + 1;
  544. // // obj.name = item
  545. // arr1.push(obj.id);
  546. // });
  547. console.log('arrr1', arr1)
  548. this.form.treat_type = arr1
  549. var device_type = this.form.device_type
  550. var device_types = parseInt(device_type)
  551. this.form.device_type = device_types
  552. console.log('机号是什么东西', this.form.bed_number)
  553. if (this.form.rubbish_reason === '') {
  554. this.form.rubbish_reason = 0
  555. }
  556. var rubbish_reason = this.form.rubbish_reason
  557. var rubbish_reasons = parseInt(rubbish_reason)
  558. this.form.rubbish_reason = rubbish_reasons
  559. var machine_status = this.form.machine_status
  560. var machine_statuss = parseInt(machine_status)
  561. this.form.machine_status = machine_statuss
  562. if (this.form.revers_mode === '') {
  563. this.form.revers_mode = 0
  564. }
  565. var revers_mode = this.form.revers_mode
  566. var revers_modes = parseInt(revers_mode)
  567. this.form.revers_mode = revers_modes
  568. if (this.form.Disinfection_mode === '') {
  569. this.form.Disinfection_mode = 0
  570. }
  571. var disinfecction_modes = this.form.Disinfection_mode
  572. var disinfecction_modess = parseInt(disinfecction_modes)
  573. this.form.Disinfection_mode = disinfecction_modess
  574. if (this.form.bed_number === '') {
  575. this.form.bed_number = 0
  576. }
  577. var bed_numbers = this.form.bed_number
  578. var bed_numberss = parseInt(bed_numbers)
  579. this.form.bed_number = bed_numberss
  580. console.log('购买日期', this.form.buy_date)
  581. this.$refs[formName].validate(valid => {
  582. if (valid) {
  583. SaveManageInfo(this.form).then(response => {
  584. if (response.data.state === 1) {
  585. var addmacher = response.data.data.addmacher
  586. this.dialogVisible = false
  587. this.$message.success('保存成功')
  588. this.getAllSubregion()
  589. this.$emit('getAllMachineInfo')
  590. } else {
  591. this.$message.error('添加失败')
  592. }
  593. })
  594. }
  595. })
  596. }
  597. },
  598. created() {
  599. this.getAllSubregion()
  600. }
  601. }
  602. </script>
  603. <style lang="scss">
  604. .el-form-item__label {
  605. width: 100px;
  606. font-size: 14px;
  607. }
  608. // .el-form-item {
  609. // margin-bottom: 10px;
  610. // }
  611. .el-form-item__error {
  612. margin-left: 110px;
  613. }
  614. .el-checkbox {
  615. line-height: 26px;
  616. height: 26px;
  617. }
  618. </style>