noticeInfo.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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="类型:" prop="type">
  22. <DictSelection
  23. dictName="变更类型"
  24. v-model="form.type"
  25. :disabled="disabled"
  26. ></DictSelection>
  27. </el-form-item>
  28. </el-col>
  29. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  30. <el-form-item label="类别:" prop="category">
  31. <DictSelection
  32. multiple
  33. dictName="问题类型"
  34. v-model="form.category"
  35. :disabled="disabled"
  36. ></DictSelection>
  37. </el-form-item>
  38. </el-col>
  39. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  40. <el-form-item label="变更原因:">
  41. <el-input
  42. v-model="form.changeReason"
  43. type="textarea"
  44. :rows="2"
  45. :disabled="disabled"
  46. />
  47. </el-form-item>
  48. </el-col>
  49. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  50. <el-form-item label="变更内容:">
  51. <el-input
  52. v-model="form.changeContent"
  53. type="textarea"
  54. :rows="2"
  55. :disabled="disabled"
  56. />
  57. </el-form-item>
  58. </el-col>
  59. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  60. <el-form-item label="描述:">
  61. <el-input
  62. v-model="form.problemDescription"
  63. type="textarea"
  64. :rows="2"
  65. :disabled="disabled"
  66. />
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="24">
  70. <el-form-item
  71. label="通知人员"
  72. prop="recipientId"
  73. style="margin-bottom: 20px"
  74. >
  75. <el-select
  76. v-model="form.recipientId"
  77. clearable
  78. style="width: 100%"
  79. :filterable="true"
  80. :disabled="disabled"
  81. >
  82. <el-option
  83. v-for="item in userOptions"
  84. :key="item.id"
  85. :label="item.name"
  86. :value="item.id"
  87. @click.native="userChange(item)"
  88. />
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="24">
  93. <el-form-item prop="accessory" label="相关文档">
  94. <fileUpload
  95. v-model="form.accessory"
  96. module="main"
  97. :limit="5"
  98. :disabled="disabled"
  99. :showLib="false"
  100. />
  101. </el-form-item>
  102. </el-col>
  103. </el-row>
  104. </el-form>
  105. </template>
  106. <script>
  107. import fileUpload from '@/components/upload/fileUpload';
  108. import { listAllUserBind } from '@/api/system/organization';
  109. import { infoForm } from './data.js';
  110. export default {
  111. components: { fileUpload },
  112. data() {
  113. return {
  114. visible: false,
  115. loading: false,
  116. userOptions: [],
  117. form: { ...infoForm() },
  118. // 表单验证规则
  119. rules: {
  120. type: [{ required: true, message: '请选择', trigger: 'change' }],
  121. name: [{ required: true, message: '请选择', trigger: 'change' }],
  122. relationType: [{ required: true, message: '请选择', trigger: 'change' }]
  123. },
  124. type: '',
  125. title: '创建'
  126. };
  127. },
  128. props: {
  129. disabled: {
  130. type: Boolean,
  131. default: false
  132. }
  133. },
  134. computed: {
  135. // 是否开启响应式布局
  136. styleResponsive() {
  137. return this.$store.state.theme.styleResponsive;
  138. }
  139. },
  140. created() {
  141. this.userOptions = [];
  142. listAllUserBind().then((data) => {
  143. this.userOptions.push(...data);
  144. });
  145. },
  146. methods: {
  147. cancel() {
  148. this.form = { ...infoForm() };
  149. },
  150. setValue(data) {
  151. this.form = JSON.parse(JSON.stringify(data));
  152. },
  153. open(row) {
  154. if (row) {
  155. this.form = row;
  156. }
  157. },
  158. userChange(item) {
  159. this.form.recipientName = item.name;
  160. },
  161. /* 保存编辑 */
  162. async getValue() {
  163. const valid = await this.validateFn();
  164. this.form.objType = '3';
  165. return valid ? JSON.parse(JSON.stringify(this.form)) : '';
  166. },
  167. validateFn() {
  168. return new Promise((resolve, reject) => {
  169. this.$refs.form.validate((valid) => {
  170. resolve(valid);
  171. });
  172. });
  173. }
  174. }
  175. };
  176. </script>
  177. <style lang="scss" scoped>
  178. </style>