You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
5.7 KiB

11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
  1. <template>
  2. <div class="customer-css">
  3. <el-dialog :title="titleCon" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog" @close="deleteFile">
  4. <el-form :inline="true" label-position="top" label-width="80px">
  5. <el-row>
  6. <el-form-item label="BU">
  7. <el-select v-model="pageData.buNo" placeholder="请选择" style="width: 120px">
  8. <el-option
  9. v-for = "i in buList"
  10. :key = "i.buNo"
  11. :label = "i.buDesc"
  12. :value = "i.buNo">
  13. </el-option>
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item label=" ">
  17. <el-button type="primary" @click="downloadFile()">下载文件模板</el-button>
  18. </el-form-item>
  19. </el-row>
  20. <el-row>
  21. <el-col :span="24">
  22. <el-upload class="customer-upload" drag action="javascript:void(0);" ref="uploadFile" :limit="1" accept=".xlsx,.xls"
  23. :before-upload="beforeUploadHandle" :on-change="onChange" :auto-upload="false" style="text-align: left;">
  24. <i class="el-icon-upload"></i>
  25. <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
  26. </el-upload>
  27. </el-col>
  28. </el-row>
  29. </el-form>
  30. <span slot="footer" class="dialog-footer">
  31. <el-button type="primary" @click="saveUploadFile">保存</el-button>
  32. <el-button type="primary" @click="closeDialog">关闭</el-button>
  33. </span>
  34. </el-dialog>
  35. </div>
  36. </template>
  37. <script>
  38. import {queryFileId} from "@/api/qc/qc.js"
  39. import {saveEcssCoDelNotifyByExcel} from '@/api/ecss/ecss.js'
  40. import {downLoadObjectFile} from '@/api/eam/eam_object_list.js'
  41. import {getBuList}from '@/api/factory/site.js'
  42. export default {
  43. name: 'bomComponentUpload',
  44. data() {
  45. return {
  46. buList: [],
  47. titleCon: '文件导入',
  48. visible: false,
  49. fileList: [],
  50. pageData: {
  51. site: '',
  52. buNo: '',
  53. createBy: this.$store.state.user.name,
  54. },
  55. }
  56. },
  57. methods: {
  58. // 初始化组件的参数
  59. init () {
  60. this.fileList = []
  61. let tempData = {
  62. username: this.$store.state.user.name,
  63. }
  64. getBuList(tempData).then(({data}) => {
  65. if (data.code === 0) {
  66. this.buList = data.row2
  67. if(data.row2.length===1){
  68. this.pageData.buNo=data.row2[0].buNo
  69. }
  70. }
  71. })
  72. // 打开页面
  73. this.visible = true
  74. },
  75. // 上传之前
  76. beforeUploadHandle (file) {
  77. let extName = file[0].name.substring(file[0].name.lastIndexOf('.')).toLowerCase()
  78. if (!(extName === '.xlsx' || extName === '.xls')) {
  79. this.$message.error('数据导入失败,请选择正确的xlsx模板文件')
  80. return false
  81. }
  82. },
  83. // 选择上传文件时
  84. onChange (file) {
  85. this.fileList.push(file)
  86. },
  87. // 关闭modal
  88. closeDialog () {
  89. this.deleteFile()
  90. // 关闭当前的页面
  91. this.visible = false
  92. },
  93. deleteFile(){
  94. this.fileList = []
  95. // 清空文件上传记录
  96. this.$refs.uploadFile.clearFiles()
  97. // 刷新报工的页面
  98. this.$emit('refreshTable')
  99. },
  100. // 保修当前的数据
  101. saveUploadFile () {
  102. if (null == this.pageData.buNo || this.pageData.buNo=='') {
  103. this.$message.error("请先选择BU!")
  104. return false
  105. }
  106. // 判断文件是否上传
  107. if (null == this.fileList || 0 === this.fileList.length) {
  108. this.$message.error("请先上传文件!")
  109. return false
  110. }
  111. const formData = new FormData()
  112. formData.append("buNo",this.pageData.buNo)
  113. formData.append("username",this.$store.state.user.name)
  114. formData.append("file", this.fileList[0].raw)
  115. // formData.append("createBy", this.pageData.createBy)
  116. saveEcssCoDelNotifyByExcel(formData).then(({data}) => {
  117. if (data.code === 0) {
  118. this.$message.success(data.msg)
  119. // 关闭窗口并刷新页面
  120. this.closeDialog()
  121. } else {
  122. this.$message.error(data.msg)
  123. }
  124. })
  125. },
  126. // 下载
  127. async downloadFile () {
  128. let file = {
  129. id: 0,
  130. fileName: ''
  131. }
  132. let tempData = {
  133. orderRef1: 'ecss',
  134. orderRef2: 'upLoadDel'
  135. }
  136. await queryFileId(tempData).then(({data}) => {
  137. if (data && data.code === 0) {
  138. file.id = data.data.id
  139. file.fileName = data.data.fileName
  140. } else {
  141. this.$alert(data.msg, '错误', {
  142. confirmButtonText: '确定'
  143. })
  144. }
  145. })
  146. await downLoadObjectFile(file).then(({data}) => {
  147. // 不限制文件下载类型
  148. const blob = new Blob([data], {type: "application/octet-stream"})
  149. // 下载文件名称
  150. const fileName = file.fileName
  151. // a标签下载
  152. const linkNode = document.createElement('a')
  153. // a标签的download属性规定下载文件的名称
  154. linkNode.download = fileName
  155. linkNode.style.display = 'none'
  156. // 生成一个Blob URL
  157. linkNode.href = URL.createObjectURL(blob)
  158. document.body.appendChild(linkNode)
  159. // 模拟在按钮上的一次鼠标单击
  160. linkNode.click()
  161. // 释放URL 对象
  162. URL.revokeObjectURL(linkNode.href)
  163. document.body.removeChild(linkNode)
  164. })
  165. },
  166. }
  167. }
  168. </script>