| | |
| | | |
| | | <uni-forms ref="form" :modelValue="formData" validate-trigger="bind" err-show-type="undertext"> |
| | | <uni-group top="1"> |
| | | |
| | | <uni-forms-item :label-width="100" required name="num" label="设备编号:"> |
| | | <uni-easyinput v-model="formData.equipmentCode" :disabled="true" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item :label-width="100" name="remark" label="设备名称:"> |
| | | <uni-easyinput v-model="formData.equipmentName" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <!-- <uni-forms-item :label-width="100" name="outNum" label="关键设备标识:"> |
| | | |
| | | <uni-forms-item :label-width="100" required name="num" label="设备编号:"> |
| | | <uni-easyinput v-model="formData.equipmentCode" :disabled="true" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item :label-width="100" name="remark" label="设备名称:"> |
| | | <uni-easyinput v-model="formData.equipmentName" :disabled="true" /> |
| | | </uni-forms-item> |
| | | <!-- <uni-forms-item :label-width="100" name="outNum" label="关键设备标识:"> |
| | | <uni-easyinput v-model="formData.equipmentImportance" :disabled="true" /> |
| | | </uni-forms-item> --> |
| | | <view class="text-gray margin-bottom-lg">—————————— 基本信息 ——————————</view> |
| | | <uni-forms-item :label-width="100" name="taskCode" label="维修状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.repairStatus_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="保养状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.maintenanceStatus_dictText" /> |
| | | |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="使用车间:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.orgId_dictText" /> |
| | | |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item :label-width="100" name="endLocation" label="安装位置:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.installationPosition" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="技术状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.technologyStatus_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="设备管理员:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.equipmentManager_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="出厂日期:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.leaveFactoryDate" /> |
| | | </uni-forms-item> |
| | | <view class="text-gray margin-bottom-lg">—————————— 基本信息 ——————————</view> |
| | | <uni-forms-item :label-width="100" name="taskCode" label="维修状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.repairStatus_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="保养状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.maintenanceStatus_dictText" /> |
| | | |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="使用车间:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.orgId_dictText" /> |
| | | |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item :label-width="100" name="endLocation" label="安装位置:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.installationPosition" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="技术状态:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.technologyStatus_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="设备管理员:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.equipmentManager_dictText" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label-width="100" name="endLocation" label="出厂日期:"> |
| | | <uni-easyinput :disabled="true" v-model="formData.leaveFactoryDate" /> |
| | | </uni-forms-item> |
| | | </uni-group> |
| | | </uni-forms> |
| | | <view class="file-list margin-sm"> |
| | | <view class="file-item" v-for="(file, index) in this.selectedFiles" :key="index"> |
| | | <view class="file-icon"> |
| | | <!-- 文件图标 --> |
| | | <image src="/static/icon_file.png" style="height: 25px; width: 25px; margin-right: 10px;" |
| | | mode='aspectFit' class="zai-logo "></image> |
| | | |
| | | </view> |
| | | <view class="file-name"> |
| | | <!-- 文件名 --> |
| | | {{file.fileName}} |
| | | </view> |
| | | <view class="file-actions"> |
| | | <!-- 下载按钮 --> |
| | | <image v-show="showBtn" src="/static/icon_down.png" @click="downloadFile(file)" |
| | | style="height: 25px; width: 25px; margin-right: 10px;"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="flex margin-bottom-xs"> |
| | | <button class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | <button v-if="authIncludes('eam:reportRepair:add')" class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goReportRepair()">报修</button> |
| | | <button class="flex-sub cu-btn bg-blue margin-sm lg" hover-class="is-hover" |
| | | @click="goCheck()">点检</button> |
| | |
| | | stringify |
| | | } from "querystring"; |
| | | import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"; |
| | | import { |
| | | saveAs |
| | | } from 'file-saver'; // 引入 file-saver 库 |
| | | export default { |
| | | mixins: [MescrollMixin], // 使用mixin |
| | | data() { |
| | | return { |
| | | |
| | | formData: {}, |
| | | formData: { |
| | | fileLists: [] |
| | | }, |
| | | fileLists: [], |
| | | NavBarColor: this.NavBarColor, |
| | | url: { |
| | | stallList: "/eam/equipment/queryById" |
| | | stallList: "/eam/equipment/queryById", |
| | | add: 'eam/equipmentAttachment/add', |
| | | upload: "/eam/sysFiles/batch_upload", |
| | | downloadFile: 'eam/equipmentAttachment/downloadFile' |
| | | }, |
| | | id: '', |
| | | upOption: { |
| | |
| | | msg1Title: "" |
| | | } |
| | | }, |
| | | |
| | | computed: { |
| | | authList() { |
| | | return this.$store.getters.getAuth || [] |
| | | }, |
| | | top() { |
| | | return this.CustomBar * 2 + 160 |
| | | }, |
| | |
| | | onLoad(options) { |
| | | const decodedEquipmentId = decodeURIComponent(options.equipmentId); |
| | | this.id = decodedEquipmentId; |
| | | // const data = options.query; |
| | | // this.id = JSON.parse(data).equipmentId; |
| | | // console.log(data) |
| | | // this.id = options.equipmentId; |
| | | // console.log(options) |
| | | console.log(this.id) |
| | | if (!this.id) { |
| | | uni.showModal({ |
| | |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | authIncludes(code) { |
| | | return this.authList.some(auth => auth.action === code) |
| | | }, |
| | | downloadFile(item) { |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '确认要下载吗', |
| | | cancelText: '取消', |
| | | confirmText: '确认', |
| | | success: res => { |
| | | if (res.confirm) { |
| | | this.downFile(item) |
| | | } |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | |
| | | |
| | | downFile(item) { |
| | | this.$http.download(this.url.downloadFile, { |
| | | params: { |
| | | id: item.id |
| | | }, |
| | | responseType: 'blob' // 确保响应类型为 blob |
| | | }).then(response => { |
| | | console.log('Response:', response); // 查看完整响应结构 |
| | | |
| | | // 获取 tempFilePath(Blob URL) |
| | | const tempFilePath = response.tempFilePath; |
| | | |
| | | if (!tempFilePath) { |
| | | uni.showToast({ |
| | | title: '文件下载失败', |
| | | icon: 'none' |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | let fileName = item.fileName; |
| | | |
| | | // 创建 <a> 标签并触发下载 |
| | | const link = document.createElement('a'); |
| | | link.href = tempFilePath; |
| | | link.setAttribute('download', fileName); |
| | | link.style.display = 'none'; |
| | | |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | |
| | | // 清理资源 |
| | | document.body.removeChild(link); |
| | | |
| | | }).catch(err => { |
| | | console.error('Download error:', err); |
| | | uni.showToast({ |
| | | title: '文件下载失败', |
| | | icon: 'none' |
| | | }); |
| | | }); |
| | | }, |
| | | getFileList() { |
| | | this.$http.get(this.url.fileList, { |
| | | params: { |
| | | equipmentId: this.id, |
| | | pageNo: 1, |
| | | pageSize: 999, |
| | | column: 'createTime', |
| | | order: 'desc' |
| | | }, |
| | | }).then(res => { |
| | | if (res.data.success) { |
| | | this.selectedFiles = res.data.result.records || []; |
| | | |
| | | } |
| | | }).catch(() => { |
| | | uni.showToast({ |
| | | title: '获取文件列表失败', |
| | | icon: 'none' |
| | | }); |
| | | }); |
| | | }, |
| | | uploadFail(e) { |
| | | console.log('上传失败:', e) |
| | | }, |
| | | |
| | | |
| | | |
| | | onFileSelect(e) { |
| | | const tempFilePaths = e.tempFilePaths; |
| | | |
| | | uni.showLoading({ |
| | | title: '上传中...' |
| | | }); |
| | | |
| | | const uploadPromises = tempFilePaths.map((filePath, index) => { |
| | | return new Promise((resolve, reject) => { |
| | | this.$http.upload(this.url.upload, { |
| | | filePath: filePath, |
| | | name: 'file' |
| | | }) |
| | | .then(uploadRes => { |
| | | const serverFile = uploadRes.data.result[0]; |
| | | console.log(serverFile); |
| | | // 提取fileSuffix并拼接 |
| | | if (serverFile.fileSuffix && serverFile.fileName && !serverFile |
| | | .fileName.includes('.')) { |
| | | serverFile.fileName += '.' + serverFile.fileSuffix; |
| | | } |
| | | this.fileLists = []; |
| | | // 防止重复添加(根据 id 或 fileName 判断) |
| | | if (!this.fileLists.some(file => file.id === serverFile.id)) { |
| | | this.fileLists.push(serverFile); |
| | | } |
| | | resolve(); |
| | | }) |
| | | .catch(err => { |
| | | console.error(`文件 ${index + 1} 上传失败`, err); |
| | | uni.showToast({ |
| | | title: `第 ${index + 1} 个文件上传失败`, |
| | | icon: 'none' |
| | | }); |
| | | reject(err); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | Promise.all(uploadPromises) |
| | | .then(() => { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | title: '全部上传成功,正在提交...' |
| | | }); |
| | | this.submitFileList(); // 自动提交所有文件 |
| | | }) |
| | | .catch(() => { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | title: '部分上传失败', |
| | | icon: 'none' |
| | | }); |
| | | }); |
| | | }, |
| | | // 文件删除回调 |
| | | onFileDelete(e) { |
| | | console.log('删除文件:', e.index); |
| | | }, |
| | | |
| | | // 删除单个文件 |
| | | deleteFile(index) { |
| | | this.fileLists.splice(index, 1); |
| | | }, |
| | | |
| | | |
| | | submitFileList() { |
| | | if (!this.fileLists.length) { |
| | | uni.showToast({ |
| | | title: '没有可提交的文件', |
| | | icon: 'none' |
| | | }); |
| | | return; |
| | | } |
| | | console.log(this.fileLists) |
| | | this.$http.post(this.url.add, { |
| | | equipmentId: this.id, |
| | | fileList: this.fileLists |
| | | }).then(res => { |
| | | if (res.data.success) { |
| | | uni.showToast({ |
| | | title: '提交成功' |
| | | }); |
| | | this.getFileList(); |
| | | } else { |
| | | uni.showToast({ |
| | | title: '提交失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }).catch(err => { |
| | | uni.showToast({ |
| | | title: '提交异常', |
| | | icon: 'none' |
| | | }); |
| | | console.error('提交失败:', err); |
| | | }); |
| | | }, |
| | | goHome() { |
| | | uni.reLaunch({ |
| | | url: '/pages/index/index' |
| | |
| | | * 报修 |
| | | */ |
| | | goReportRepair() { |
| | | console.log('getSera 方法被调用'); |
| | | uni.redirectTo({ |
| | | url: `/pages/reportRepair/reportRepair?equipmentId=${encodeURIComponent(this.id)}` |
| | | }); |