upLoad.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <template>
  2. <div>
  3. <div
  4. class="dialogTableTitle flex a-center jlr"
  5. style="
  6. display: flex;
  7. justify-content: space-between;
  8. align-items: center;
  9. margin: 10px 0;
  10. "
  11. >
  12. <div>
  13. <el-button
  14. size="small"
  15. type="primary"
  16. :disabled="browseStatus"
  17. @click.prevent="addRelevt()"
  18. >新行
  19. </el-button>
  20. </div>
  21. </div>
  22. <el-table
  23. :data="relevantAttachments"
  24. ref="table"
  25. tooltip-effect="dark"
  26. border
  27. stripe
  28. style="width: 100%"
  29. height="150"
  30. >
  31. <el-table-column label="序号" type="index" width="80"> </el-table-column>
  32. <el-table-column
  33. prop="fName"
  34. header-align="center"
  35. align="center"
  36. width="250px"
  37. label="附件名称"
  38. >
  39. <template slot-scope="scope">
  40. <el-input
  41. v-model="scope.row.fName"
  42. :disabled="browseStatus"
  43. placeholder="附件名称"
  44. show-word-limit
  45. />
  46. </template>
  47. </el-table-column>
  48. <el-table-column
  49. prop="createBy"
  50. header-align="center"
  51. align="center"
  52. width="250px"
  53. label="上传人"
  54. >
  55. <template slot-scope="scope">
  56. <el-input
  57. v-model="scope.row.createBy"
  58. disabled
  59. placeholder="上传人"
  60. show-word-limit
  61. />
  62. </template>
  63. </el-table-column>
  64. <el-table-column
  65. prop="createTime"
  66. header-align="center"
  67. align="center"
  68. label="上传时间"
  69. >
  70. <template slot-scope="scope">
  71. <el-date-picker
  72. v-model="scope.row.createTime"
  73. type="date"
  74. disabled
  75. placeholder="上传时间"
  76. format="yyyy-MM-dd HH:mm"
  77. value-format="timestamp"
  78. ></el-date-picker>
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. prop="fUrl"
  83. header-align="center"
  84. align="center"
  85. width="300px"
  86. label="上传附件"
  87. >
  88. <template slot-scope="scope">
  89. <div style="display: flex; justify-content: center">
  90. <el-upload
  91. class="upload-demo"
  92. :action="uploadImgUrl"
  93. :on-success="
  94. (res, file) => {
  95. handleSucces(scope, res, file);
  96. }
  97. "
  98. :headers="headers"
  99. :disabled="browseStatus"
  100. :show-file-list="false"
  101. :limit="1"
  102. >
  103. <el-button size="small" type="text" :disabled="browseStatus"
  104. >点击上传</el-button
  105. >
  106. </el-upload>
  107. <el-button size="small" type="text" @click="checkFile(scope)"
  108. >查看</el-button
  109. >
  110. </div>
  111. </template>
  112. </el-table-column>
  113. <el-table-column
  114. header-align="center"
  115. align="center"
  116. label="操作"
  117. width="130PX"
  118. >
  119. <template slot-scope="scope">
  120. <el-button
  121. @click.native.prevent="deleteRow(scope.$index, relevantAttachments)"
  122. :disabled="browseStatus"
  123. size="small"
  124. type="text"
  125. >删除
  126. </el-button>
  127. </template>
  128. </el-table-column>
  129. </el-table>
  130. </div>
  131. </template>
  132. <script>
  133. import { getToken } from "@/utils/auth";
  134. export default {
  135. props: {
  136. relevantAttachments: {
  137. type: Array,
  138. default: [],
  139. },
  140. createBy: {
  141. type: String,
  142. default: null,
  143. },
  144. },
  145. data() {
  146. return {
  147. headers: {
  148. Authorization: "Bearer " + getToken(),
  149. },
  150. uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
  151. browseStatus: false,
  152. };
  153. },
  154. methods: {
  155. // 新增附件上传
  156. addRelevt() {
  157. this.relevantAttachments.push({
  158. fUrl: null,
  159. fName: null,
  160. createBy: this.createBy,
  161. createTime: Date.parse(new Date()),
  162. });
  163. },
  164. deleteRow(index, rows) {
  165. rows.splice(index, 1);
  166. },
  167. //附件上传
  168. handleSucces(scope, res, file) {
  169. this.relevantAttachments[scope.$index].fName = res.fileName;
  170. this.relevantAttachments[scope.$index].fUrl = res.url;
  171. if (!this.relevantAttachments[scope.$index].fUrl) {
  172. this.$message.error("上传失败");
  173. } else {
  174. this.$message.success("上传成功");
  175. }
  176. },
  177. //附件查看
  178. checkFile(scope) {
  179. if (this.relevantAttachments[scope.$index].fUrl) {
  180. window.open(this.relevantAttachments[scope.$index].fUrl);
  181. } else {
  182. this.$message.error("请上传附件");
  183. }
  184. },
  185. },
  186. watch: {
  187. relevantAttachments(val) {
  188. console.log(val);
  189. this.relevantAttachments = val;
  190. },
  191. createBy(val){
  192. this.createBy=val
  193. }
  194. },
  195. };
  196. </script>
  197. <style scoped lang="scss">
  198. </style>