questionInfo.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <el-form
  3. ref="form"
  4. :model="form"
  5. :rules="rules"
  6. label-width="100px"
  7. class="create-form"
  8. >
  9. <el-row :gutter="15">
  10. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  11. <el-form-item label="名称:" prop="name">
  12. <el-input v-model="form.name" :disabled="disabled" />
  13. </el-form-item>
  14. </el-col>
  15. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  16. <el-form-item label="编码:" prop="code">
  17. <el-input v-model="form.code" disabled />
  18. </el-form-item>
  19. </el-col>
  20. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  21. <el-form-item label="问题描述:">
  22. <el-input
  23. v-model="form.problemDescription"
  24. type="textarea"
  25. :rows="2"
  26. :disabled="disabled"
  27. />
  28. </el-form-item>
  29. </el-col>
  30. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  31. <el-form-item label="类别:" prop="category">
  32. <DictSelection
  33. multiple
  34. dictName="问题类型"
  35. v-model="form.category"
  36. :disabled="disabled"
  37. ></DictSelection>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="24">
  41. <el-form-item
  42. label="接收人"
  43. prop="recipientId"
  44. style="margin-bottom: 20px"
  45. >
  46. <el-select
  47. v-model="form.recipientId"
  48. clearable
  49. style="width: 100%"
  50. :filterable="true"
  51. :disabled="disabled"
  52. >
  53. <el-option
  54. v-for="item in userOptions"
  55. :key="item.id"
  56. :label="item.name"
  57. :value="item.id"
  58. @click.native="userChange(item)"
  59. />
  60. </el-select>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="24">
  64. <el-form-item prop="accessory" label="相关文档">
  65. <fileUpload
  66. v-model="form.accessory"
  67. module="main"
  68. :limit="5"
  69. :disabled="disabled"
  70. :showLib="false"
  71. />
  72. </el-form-item>
  73. </el-col>
  74. </el-row>
  75. </el-form>
  76. </template>
  77. <script>
  78. import fileUpload from '@/components/upload/fileUpload';
  79. import { listAllUserBind } from '@/api/system/organization';
  80. import { infoForm } from './data.js';
  81. export default {
  82. components: { fileUpload },
  83. data() {
  84. return {
  85. visible: false,
  86. loading: false,
  87. userOptions: [],
  88. form: { ...infoForm() },
  89. // 表单验证规则
  90. rules: {
  91. type: [{ required: true, message: '请选择', trigger: 'change' }],
  92. name: [{ required: true, message: '请选择', trigger: 'change' }],
  93. relationType: [{ required: true, message: '请选择', trigger: 'change' }]
  94. },
  95. type: '',
  96. title: '创建',
  97. };
  98. },
  99. props: {
  100. disabled: {
  101. type: Boolean,
  102. default: false
  103. }
  104. },
  105. computed: {
  106. // 是否开启响应式布局
  107. styleResponsive() {
  108. return this.$store.state.theme.styleResponsive;
  109. }
  110. },
  111. created() {
  112. this.userOptions = [];
  113. listAllUserBind().then((data) => {
  114. this.userOptions.push(...data);
  115. });
  116. },
  117. methods: {
  118. cancel() {
  119. this.form = { ...infoForm() };
  120. },
  121. open(row) {
  122. if (row) {
  123. this.form = row;
  124. }
  125. },
  126. userChange(item) {
  127. this.form.recipientName = item.name;
  128. },
  129. setValue(data){
  130. this.form=JSON.parse(JSON.stringify(data))
  131. },
  132. /* 保存编辑 */
  133. async getValue() {
  134. const valid = await this.validateFn()
  135. this.form.objType='1'
  136. return valid?JSON.parse(JSON.stringify(this.form)):''
  137. },
  138. validateFn() {
  139. return new Promise((resolve, reject) => {
  140. this.$refs.form.validate(valid=>{
  141. resolve(valid)
  142. });
  143. })
  144. }
  145. }
  146. };
  147. </script>