edit.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div class="edit-dialog" v-loading="loading">
  3. <el-form :inline="true" :model="formInline" label-width="100px" :disabled="disabled" class="edit-dialog-formInline">
  4. <el-form-item label="设备名称:" required>
  5. <el-input v-model="formInline.deviceName" placeholder="请输入设备名称"></el-input>
  6. </el-form-item>
  7. <el-form-item label="设备类型:" required>
  8. <el-select v-model="formInline.deviceType" placeholder="请选择">
  9. <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in typeOptions" :key="item.dictCode"></el-option>
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="设备编号:" required>
  13. <el-input v-model="formInline.deviceCode" placeholder="设备编号"></el-input>
  14. </el-form-item>
  15. <el-form-item label="机组编号:">
  16. <el-input v-model="formInline.groupCode" placeholder="机组编号"></el-input>
  17. </el-form-item>
  18. <el-form-item label="设备地址:">
  19. <el-input v-model="formInline.deviceIp" placeholder="设备地址"></el-input>
  20. </el-form-item>
  21. <el-form-item label="关联煎药区" prop="decoctionAreaCode">
  22. <el-select v-model="formInline.decoctionAreaCode" placeholder="请选择备用煎药区" filterable>
  23. <el-option v-for="item in stationOptions" :key="item.id"
  24. :label="item.areaName" :value="item.areaCode" :disabled="item.state !== 0"
  25. />
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="启用状态:" required>
  29. <el-radio-group v-model="formInline.status">
  30. <el-radio :label="0">开启</el-radio>
  31. <el-radio :label="1">关闭</el-radio>
  32. </el-radio-group>
  33. </el-form-item>
  34. </el-form>
  35. </div>
  36. </template>
  37. <script>
  38. import { getDeviceDetail, addDevice, updateDevice } from "@/api/decoct/device";
  39. import { getDecoctStationOptions } from '@/api/decoct';
  40. export default {
  41. props: {
  42. disabled: {
  43. type: Boolean,
  44. default: false
  45. },
  46. id: [Number, String]
  47. },
  48. data() {
  49. return {
  50. formInline: {
  51. decoctionAreaCode: void 0,
  52. deviceName: '',
  53. deviceType: '',
  54. deviceCode: '',
  55. groupCode: '',
  56. deviceIp: '',
  57. status: 0,
  58. },
  59. loading: false,
  60. // 煎药区
  61. stationOptions: [],
  62. typeOptions: []
  63. }
  64. },
  65. mounted() {
  66. this.getDicts("device_type").then((response) => {
  67. this.typeOptions = response.data;
  68. });
  69. getDecoctStationOptions().then((response) => {this.stationOptions = response.data;}, () => []);
  70. },
  71. methods: {
  72. openDialog() {
  73. this.formInline = {
  74. deviceName: '',
  75. deviceType: '',
  76. deviceCode: '',
  77. groupCode: '',
  78. deviceIp: '',
  79. status: 0,
  80. }
  81. },
  82. // 详情
  83. getDetail() {
  84. this.loading = true;
  85. getDeviceDetail(this.id).then((response) => {
  86. this.formInline = response.data
  87. this.loading = false;
  88. });
  89. },
  90. // 修改
  91. toUpdate() {
  92. this.loading = true;
  93. this.formInline.decoctionAreaName = this.formInline.decoctionAreaCode == null ? '' : (this.stationOptions.find(option => option.areaCode === this.formInline.decoctionAreaCode) || {}).areaName || '';
  94. updateDevice(this.formInline).then((response) => {
  95. this.msgSuccess('修改成功')
  96. this.$emit('success')
  97. }).finally(res => {
  98. this.loading = false;
  99. })
  100. },
  101. // 新增
  102. toAdd() {
  103. this.loading = true;
  104. this.formInline.decoctionAreaName = this.formInline.decoctionAreaCode == null ? '' : (this.stationOptions.find(option => option.areaCode === this.formInline.decoctionAreaCode) || {}).areaName || '';
  105. addDevice(this.formInline).then((response) => {
  106. this.msgSuccess('新增成功')
  107. this.$emit('success')
  108. }).finally(res => {
  109. this.loading = false;
  110. })
  111. }
  112. },
  113. }
  114. </script>
  115. <style lang="scss" scoped>
  116. .edit-dialog {
  117. overflow: auto;
  118. &-formInline{
  119. width: 330px;
  120. margin: auto;
  121. }
  122. ::v-deep .el-form-item{
  123. display: flex;
  124. &__content{
  125. flex: 1;
  126. }
  127. .el-select{
  128. width: 100%;
  129. }
  130. }
  131. }
  132. </style>