file-add.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <div class="main">
  3. <div class="main-body">
  4. <el-form class="p20" label-width="100px" label-position="left"
  5. ref="elForm" :model="info" :rules="rules" >
  6. <el-form-item label="所属部门" class="mt20" prop="department">
  7. <el-select v-model="info.department"
  8. @change="selectDepartment($event)"
  9. collapse-tags placeholder="请选择" clearable>
  10. <el-option
  11. v-for="item in showDepartments"
  12. :value="item"
  13. :key="item.departmentId">
  14. {{item.department}}
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="所属分类" class="mt20" prop="category">
  19. <el-select v-model="info.category" collapse-tags placeholder="请选择" clearable>
  20. <el-option v-for="(item,index) in categorys"
  21. :value="index" :key="index" :label="item"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="是否公开" class="mt20" prop="category">
  25. <el-switch :active-value="1" :inactive-value="0" v-model="info.isOpen"></el-switch>
  26. </el-form-item>
  27. <el-form-item label="文件标题" class="mt20" prop="title">
  28. <el-input class="ipt-select" v-model="info.title"></el-input>
  29. </el-form-item>
  30. <el-form-item label="文件简介" class="mt20" prop="brief">
  31. <el-input class="ipt-select" type="textarea" v-model="info.brief"></el-input>
  32. </el-form-item>
  33. <el-form-item label="上传文件" prop="filename">
  34. <upload-file placeholder="上传文档" @rmImage="info.filename=''" @onFinish="onUpload"/>
  35. </el-form-item>
  36. <el-form-item label="">
  37. <el-button type="primary" @click="onSubmit" class="btn-md">
  38. 提交文件
  39. </el-button>
  40. </el-form-item>
  41. </el-form>
  42. </div>
  43. </div>
  44. </template>
  45. <script>
  46. import UploadFile from "@/components/Upload/uploadFile.vue";
  47. import data from '../data/data.js'
  48. import {mapGetters } from 'vuex'
  49. import {addArtical} from '@/api/article.js'
  50. export default {
  51. name: 'application',
  52. components:{ UploadFile },
  53. data() {
  54. return {
  55. loading:false,
  56. isLike: 0,
  57. dropDownValue:'',
  58. showDepartments:[],
  59. categorys:data.categorys,
  60. info: {
  61. filename:'',
  62. departmentId:0,
  63. category:'',
  64. department:'',
  65. title:'',
  66. isOpen: 1,
  67. brief:''
  68. },
  69. rules: {
  70. title:[{required:true, message:'请输入标题'}],
  71. brief:[{required:true, message:'请输入简介'}],
  72. category:[{required:true, message:'请输入选择分类'}],
  73. isOpen:[{required:true, message:'请'}],
  74. department:[{required:true, message:'请选择部门'}],
  75. filename:[{required:true, message:'请上传文件'}]
  76. }
  77. }
  78. },
  79. computed: {
  80. ...mapGetters("user", ["userDepartments"])
  81. },
  82. filters:{
  83. leader(val){
  84. return data.owners[ val ]
  85. }
  86. },
  87. beforeMount(){
  88. this.showDepartments = this.userDepartments.filter( item=>{
  89. return item.isLeader == 1
  90. })
  91. if( this.showDepartments.length >0){
  92. let department = this.showDepartments[0];
  93. this.info.departmentId = department.departmentId
  94. this.info.department = department.department;
  95. }
  96. },
  97. methods:{
  98. onUpload(filename){
  99. this.info.filename = filename;
  100. },
  101. selectDepartment(item){
  102. this.info.departmentId = +item.departmentId;
  103. this.info.department = item.department
  104. },
  105. showFinish(){
  106. let that = this
  107. this.$msgbox({
  108. title: "提交成功",
  109. message: "恭喜你-提交成功",
  110. showCancelButton: true,
  111. cancelButtonText:"继续提交文件",
  112. confirmButtonText: "回到我的文件",
  113. beforeClose: (action, instance, done) => {
  114. if (action === 'confirm') {
  115. that.$router.push({path:'/my-file'});
  116. done();
  117. }else{
  118. done();
  119. }
  120. }
  121. }).catch((res) => {
  122. console.log(res)
  123. });
  124. },
  125. onSubmit(){
  126. this.$refs["elForm"].validate((valid) => {
  127. if (!valid) return;
  128. addArtical( this.info ).then(res=>{
  129. if( res.code == 200){
  130. this.showFinish()
  131. }
  132. })
  133. })
  134. }
  135. }
  136. }
  137. </script>
  138. <style>
  139. .ipt-select{
  140. width: 500px;
  141. }
  142. </style>