From 5890a81be95fe65622c605083b1808b6997d4417 Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期三, 07 九月 2022 14:30:56 +0800 Subject: [PATCH] Default Changelist --- src/views/specialWorkSystem/workProcess/workCheck/index.vue | 174 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 136 insertions(+), 38 deletions(-) diff --git a/src/views/specialWorkSystem/workProcess/workCheck/index.vue b/src/views/specialWorkSystem/workProcess/workCheck/index.vue index eafbbee..282ed9d 100644 --- a/src/views/specialWorkSystem/workProcess/workCheck/index.vue +++ b/src/views/specialWorkSystem/workProcess/workCheck/index.vue @@ -104,7 +104,11 @@ <el-dialog v-model="dialogAddRecord" title="新增" @close="closeAdd" @open="openAdd"> <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> <el-form-item label="作业证编号" prop="id"> - <el-input v-model="addRecord.id"> </el-input> + <el-input v-model="addRecord.id"> + <template #append> + <el-button :icon="Search" /> + </template> + </el-input> </el-form-item> <el-form-item label="作业类型" prop="workType"> <el-select v-model="addRecord.workType"> @@ -125,6 +129,14 @@ <el-option label="异常" value="1"/> </el-select> </el-form-item> + <el-form-item label="现场照片" prop="photos"> + <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> + <el-icon><Plus /></el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div> + </template> + </el-upload> + </el-form-item> <el-form-item label="描述" prop="desc"> <el-input v-model="addRecord.desc" type="textarea"> </el-input> </el-form-item> @@ -133,6 +145,9 @@ <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> </el-form-item> </el-form> + </el-dialog> + <el-dialog v-model="dialogVisible"> + <img w-full :src="dialogImageUrl" alt="Preview Image" /> </el-dialog> </div> </template> @@ -144,17 +159,21 @@ import { useUserInfo } from '/@/stores/userInfo'; import { Session } from '/@/utils/storage'; import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; + import { ElTable, ElMessage, ElMessageBox } from 'element-plus' + import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; + import {workApplyApi} from "/@/api/specialWorkSystem/workApply"; + import axios from "axios"; // 定义接口来定义对象的类型 interface stateType { tableData: Array<any>; - departmentList: Array<any>; - department:string; - workerList: Array<string>; - casProps: {}; + imgLimit: number; + fileList: Array<file>, + uploadUrl: string, + isOverSize: Boolean, + dialogVisible: Boolean, + dialogImageUrl: string | null, multipleSelection: Array<any>; deleteArr: Array<any>; dialogDetails: boolean; @@ -168,15 +187,13 @@ searchWord: string; searchType: number | null totalSize: number; - addRecord: { - - }; - details: { - - }; + addRecord: {}; + details: {}; workTypeList: Array<any> } - + interface file { + url: string; + } export default { name: 'workCheck', components: {}, @@ -191,6 +208,12 @@ chosenIndex: null, searchWord: '', searchType: null, + isOverSize: false, + fileList: [], + imgLimit: 3, + uploadUrl: '', + dialogVisible: false, + dialogImageUrl: null, tableData: [ { id: 'GTXH-0000001', @@ -220,15 +243,6 @@ updateTime: '2022-08-31 17:05:20' } ], - departmentList: [], - department: '', - workerList: [], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName' - }, multipleSelection: [], dialogDetails: false, dialogAddRecord: false, @@ -260,6 +274,7 @@ workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], checkInfo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], result: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + photos: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], desc: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], updateTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] @@ -268,7 +283,6 @@ // 页面载入时执行方法 onMounted(() => { // getListByPage(); - // getAllDepartment(); }); // 分页获取班组管理列表 @@ -293,32 +307,110 @@ } }; - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { + // 图片上传 + const showTip =()=>{ + ElMessage({ + type: 'warning', + message: '超出文件上传数量' + }); + } + + const handlePreview: UploadProps['onPreview'] = (uploadFile) => { + console.log(uploadFile); + }; + + const handlePictureCardPreview = (uploadFile: { url: string }) => { + state.dialogImageUrl = uploadFile.url!; + state.dialogVisible = true; + }; + + const getUploadUrl = async (rawFile: any) => { + const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' + if(fileSize === '0'){ ElMessage({ type: 'warning', - message: res.data.msg + message: '文件大小不能超过500k。' }); + state.isOverSize = true + return false + }else{ + const res = await workApplyApi().getUploadUrl(rawFile.name); + state.addRecord.photos.push(res.data.data.fileName) + state.uploadUrl = res.data.data.uploadUrl; } }; - const handleChange = async (value) => { - state.addRecord.depId = value; - console.log(state.addRecord.department, 'de'); - let res = await teamManageApi().getAllMember(value); + const upload = async (params: any) => { + let reader = new FileReader(); + reader.readAsArrayBuffer(params.file); + reader.onload = async () => { + axios + .put(state.uploadUrl, reader.result, { + header: { 'Content-Type': 'multipart/form-data' } + }) + .then(() => { + // if (state.fileList.length === 2) { + // state.fileList.splice(0, 1); + // } + // console.log(state.form.workDetail.photos,'photos') + }); + }; + }; + + const beforeRemove = (file: {}, fileList: []) => { + const result = new Promise((resolve, reject) => { + if(!state.isOverSize){ + ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(() => { + // console.log(state.workDetail.photos,'path') + const list = JSON.parse(JSON.stringify(state.addRecord.photos)) + fileList.map((item,index)=>{ + if(item.uid === file.uid){ + fileList.splice(index,1) + state.addRecord.photos.splice(index,1) + // 请求删除接口 + deletePic(false,list[index]) + } + }) + }) + .catch(() => { + reject(false); + }); + }else{ + const list = JSON.parse(JSON.stringify(state.addRecord.photos)) + fileList.map((item,index)=>{ + if(item.uid === file.uid){ + fileList.splice(index,1) + state.addRecord.photos.splice(index,1) + deletePic(true,list[index]) + } + }) + state.isOverSize = false + } + }); + return result; + }; + + // 删除图片接口 + const deletePic = async(isOverSize:boolean,fileName:string)=>{ + const res = await workApplyApi().deleteFile({fileName: fileName}) if (res.data.code === '200') { - state.workerList = res.data.data; + ElMessage({ + type: isOverSize ? 'error' : 'success', + message: isOverSize ? '上传失败':'删除成功!' + }); } else { ElMessage({ type: 'warning', message: res.data.msg }); } - }; + } + // 关键词查询记录 const searchRecord = async () => { @@ -426,7 +518,13 @@ Delete, Refresh, Plus, - handleChange, + Search, + showTip, + handlePreview, + handlePictureCardPreview, + getUploadUrl, + upload, + beforeRemove, searchRecord, clearSearch, viewRecord, -- Gitblit v1.9.2