CreateDialog.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <el-dialog
  3. :title="titleStr"
  4. :visible.sync="data.bSwitch"
  5. width="30%"
  6. >
  7. <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
  8. <el-form-item label="质控项目" prop="title">
  9. <el-input v-model="ruleForm.title" placeholder="请输入" />
  10. </el-form-item>
  11. <el-form-item label="错误描述" prop="notice">
  12. <el-input v-model="ruleForm.notice" placeholder="请输入" />
  13. </el-form-item>
  14. <el-form-item label="质控分类" prop="category">
  15. <el-select v-model="ruleForm.category" clearable placeholder="请选择" style="width: 100%;">
  16. <el-option v-for="item of categorys" :key="item" :label="item" :value="item" />
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="扣分" prop="score">
  20. <el-input v-model="ruleForm.score" placeholder="请输入" />
  21. </el-form-item>
  22. <el-form-item label="质控类型" prop="type">
  23. <el-select v-model="ruleForm.type" clearable placeholder="请选择" style="width: 100%;">
  24. <el-option v-for="item of types" :key="item" :label="item" :value="item" />
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="科室" prop="department">
  28. <el-input v-model="ruleForm.department" placeholder="请输入" />
  29. </el-form-item>
  30. <el-form-item label="单项否决" prop="one_no">
  31. <el-select v-model="ruleForm.one_no" clearable placeholder="请选择" style="width: 100%;">
  32. <el-option v-for="item of oneNos" :key="item.name" :label="item.name" :value="item.value" />
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="质控节点" prop="node">
  36. <el-input v-model="ruleForm.node" placeholder="请输入" />
  37. </el-form-item>
  38. </el-form>
  39. <span slot="footer" class="dialog-footer">
  40. <el-button @click="data.bSwitch = false">取 消</el-button>
  41. <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
  42. </span>
  43. </el-dialog>
  44. </template>
  45. <script>
  46. import { createCaseRuleList } from '@/api/admin'
  47. export default {
  48. props: {
  49. data: {
  50. type: Object,
  51. default() {
  52. return {
  53. bSwitch: false,
  54. row: {}
  55. }
  56. }
  57. },
  58. categorys: {
  59. type: Array,
  60. default() {
  61. return []
  62. }
  63. },
  64. types: {
  65. type: Array,
  66. default() {
  67. return []
  68. }
  69. }
  70. },
  71. data() {
  72. return {
  73. ruleForm: {
  74. title: '',
  75. notice: '',
  76. category: '',
  77. score: '',
  78. type: '',
  79. department: '',
  80. one_no: '',
  81. node: ''
  82. },
  83. rules: {
  84. title: [
  85. { required: true, message: '请输入', trigger: 'blur' }
  86. ],
  87. notice: [
  88. { required: true, message: '请输入', trigger: 'blur' }
  89. ],
  90. category: [
  91. { required: true, message: '请输入', trigger: 'blur' }
  92. ],
  93. score: [
  94. { required: true, message: '请输入', trigger: 'blur' }
  95. ],
  96. type: [
  97. { required: true, message: '请输入', trigger: 'blur' }
  98. ],
  99. department: [
  100. { required: true, message: '请输入', trigger: 'blur' }
  101. ],
  102. one_no: [
  103. { required: true, message: '请输入', trigger: 'blur' }
  104. ],
  105. node: [
  106. { required: true, message: '请输入', trigger: 'blur' }
  107. ]
  108. },
  109. oneNos: [{ name: '否', value: 0 }, { name: '是', value: 1 }]
  110. }
  111. },
  112. computed: {
  113. titleStr() {
  114. return this.data.row.id ? '编辑' : '新增'
  115. }
  116. },
  117. created() {
  118. if (this.data.row.id) {
  119. const { title, notice, category, id, score, type, department, one_no, node } = this.data.row
  120. this.ruleForm.title = title
  121. this.ruleForm.notice = notice
  122. this.ruleForm.category = category
  123. this.ruleForm.id = id
  124. this.ruleForm.score = score
  125. this.ruleForm.type = type
  126. this.ruleForm.department = department
  127. this.ruleForm.node = node
  128. this.ruleForm.one_no = one_no
  129. }
  130. },
  131. methods: {
  132. submitForm(formName) {
  133. this.$refs[formName].validate(async(valid) => {
  134. if (valid) {
  135. createCaseRuleList(this.ruleForm).then(res => {
  136. this.data.bSwitch = false
  137. this.$emit('refresh')
  138. this.$message.success(res.m || '操作成功')
  139. })
  140. } else {
  141. return false
  142. }
  143. })
  144. }
  145. }
  146. }
  147. </script>
  148. <style lang="scss" scoped>
  149. .demo-ruleForm {
  150. width: 80%;
  151. }
  152. </style>