Merge branch 'projects/mes-test' of git.picaiba.com:mt-fe-group/yudao-dev into projects/mes-test
This commit is contained in:
		| @@ -1,3 +1,10 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-10-17 09:26:38 | ||||
|  * @LastEditTime: 2023-11-20 15:50:08 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建质量检测信息基础 | ||||
| @@ -52,3 +59,11 @@ export function exportQualityInspectionDetExcel(query) { | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getQualityInspectionDetList(query) { | ||||
|   return request({ | ||||
|     url: '/base/quality-inspection-det/listAll', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|   | ||||
| @@ -65,6 +65,7 @@ | ||||
| 						v-if="col.subcomponent" | ||||
| 						:key="col.key" | ||||
| 						:disabled="disabled" | ||||
| 						:read-only="disabled" | ||||
| 						:is="col.subcomponent" | ||||
| 						v-model="form[col.prop]" | ||||
| 						:inlineStyle="col.style" | ||||
|   | ||||
| @@ -1,279 +1,293 @@ | ||||
| <template> | ||||
|   <div> | ||||
|     <el-upload | ||||
|       :action="uploadFileUrl" | ||||
|       :before-upload="handleBeforeUpload" | ||||
|       :on-success="handleUploadSuccess" | ||||
|       :on-error="handleUploadError" | ||||
|       name="file" | ||||
|       :show-file-list="false" | ||||
|       :headers="headers" | ||||
|       style="display: none" | ||||
|       ref="upload" | ||||
|       v-if="this.type === 'url'" | ||||
|     > | ||||
|     </el-upload> | ||||
|     <div class="editor" ref="editor" :style="styles"></div> | ||||
|   </div> | ||||
| 	<div :class="[readOnly ? 'editor-wrapper' : '']"> | ||||
| 		<el-upload | ||||
| 			:action="uploadFileUrl" | ||||
| 			:before-upload="handleBeforeUpload" | ||||
| 			:on-success="handleUploadSuccess" | ||||
| 			:on-error="handleUploadError" | ||||
| 			name="file" | ||||
| 			:show-file-list="false" | ||||
| 			:headers="headers" | ||||
| 			style="display: none" | ||||
| 			ref="upload" | ||||
| 			v-if="this.type === 'url'"></el-upload> | ||||
| 		<div class="editor" ref="editor" :style="styles"></div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import Quill from "quill"; | ||||
| import "quill/dist/quill.core.css"; | ||||
| import "quill/dist/quill.snow.css"; | ||||
| import "quill/dist/quill.bubble.css"; | ||||
| import { getAccessToken } from "@/utils/auth"; | ||||
| import Quill from 'quill'; | ||||
| import 'quill/dist/quill.core.css'; | ||||
| import 'quill/dist/quill.snow.css'; | ||||
| import 'quill/dist/quill.bubble.css'; | ||||
| import { getAccessToken } from '@/utils/auth'; | ||||
|  | ||||
| export default { | ||||
|   name: "Editor", | ||||
|   props: { | ||||
|     /* 编辑器的内容 */ | ||||
|     value: { | ||||
|       type: String, | ||||
|       default: "", | ||||
|     }, | ||||
|     /* 高度 */ | ||||
|     height: { | ||||
|       type: Number, | ||||
|       default: null, | ||||
|     }, | ||||
|     /* 最小高度 */ | ||||
|     minHeight: { | ||||
|       type: Number, | ||||
|       default: null, | ||||
|     }, | ||||
|     /* 只读 */ | ||||
|     readOnly: { | ||||
|       type: Boolean, | ||||
|       default: false, | ||||
|     }, | ||||
|     // 上传文件大小限制(MB) | ||||
|     fileSize: { | ||||
|       type: Number, | ||||
|       default: 5, | ||||
|     }, | ||||
|     /* 类型(base64格式、url格式) */ | ||||
|     type: { | ||||
|       type: String, | ||||
|       default: "url", | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       uploadFileUrl: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址 | ||||
|       headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部 | ||||
|       Quill: null, | ||||
|       currentValue: "", | ||||
|       options: { | ||||
|         theme: "snow", | ||||
|         bounds: document.body, | ||||
|         debug: "warn", | ||||
|         modules: { | ||||
|           // 工具栏配置 | ||||
|           toolbar: [ | ||||
|             ["bold", "italic", "underline", "strike"],       // 加粗 斜体 下划线 删除线 | ||||
|             ["blockquote", "code-block"],                    // 引用  代码块 | ||||
|             [{ list: "ordered" }, { list: "bullet" }],       // 有序、无序列表 | ||||
|             [{ indent: "-1" }, { indent: "+1" }],            // 缩进 | ||||
|             [{ size: ["small", false, "large", "huge"] }],   // 字体大小 | ||||
|             [{ header: [1, 2, 3, 4, 5, 6, false] }],         // 标题 | ||||
|             [{ color: [] }, { background: [] }],             // 字体颜色、字体背景颜色 | ||||
|             [{ align: [] }],                                 // 对齐方式 | ||||
|             ["clean"],                                       // 清除文本格式 | ||||
|             ["link", "image", "video"]                       // 链接、图片、视频 | ||||
|           ], | ||||
|         }, | ||||
|         placeholder: "请输入内容", | ||||
|         readOnly: true, | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   computed: { | ||||
|     styles() { | ||||
|       let style = {}; | ||||
|       if (this.minHeight) { | ||||
|         style.minHeight = `${this.minHeight}px`; | ||||
|       } | ||||
|       if (this.height) { | ||||
|         style.height = `${this.height}px`; | ||||
|       } | ||||
|       return style; | ||||
|     }, | ||||
|   }, | ||||
|   watch: { | ||||
|     value: { | ||||
|       handler(val) { | ||||
|         if (val !== this.currentValue) { | ||||
|           this.currentValue = val === null ? "" : val; | ||||
|           if (this.Quill) { | ||||
|             this.Quill.pasteHTML(this.currentValue); | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       immediate: true, | ||||
|     }, | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.init(); | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     this.Quill = null; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|       const editor = this.$refs.editor; | ||||
|       this.Quill = new Quill(editor, this.options); | ||||
|       // 取消自动聚焦 start | ||||
|       this.$nextTick(()=>{ | ||||
|         this.Quill.blur(); | ||||
|         if(!this.readOnly){ | ||||
|           this.Quill.enable(); | ||||
|         } | ||||
|       }); | ||||
|       // 如果设置了上传地址则自定义图片上传事件 | ||||
|       if (this.type === 'url') { | ||||
|         let toolbar = this.Quill.getModule("toolbar"); | ||||
|         toolbar.addHandler("image", (value) => { | ||||
|           this.uploadType = "image"; | ||||
|           if (value) { | ||||
|             this.$refs.upload.$children[0].$refs.input.click(); | ||||
|           } else { | ||||
|             this.quill.format("image", false); | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|       this.Quill.pasteHTML(this.currentValue); | ||||
|       this.Quill.on("text-change", (delta, oldDelta, source) => { | ||||
|         const html = this.$refs.editor.children[0].innerHTML; | ||||
|         const text = this.Quill.getText(); | ||||
|         const quill = this.Quill; | ||||
|         this.currentValue = html; | ||||
|         this.$emit("input", html); | ||||
|         this.$emit("on-change", { html, text, quill }); | ||||
|       }); | ||||
|       this.Quill.on("text-change", (delta, oldDelta, source) => { | ||||
|         this.$emit("on-text-change", delta, oldDelta, source); | ||||
|       }); | ||||
|       this.Quill.on("selection-change", (range, oldRange, source) => { | ||||
|         this.$emit("on-selection-change", range, oldRange, source); | ||||
|       }); | ||||
|       this.Quill.on("editor-change", (eventName, ...args) => { | ||||
|         this.$emit("on-editor-change", eventName, ...args); | ||||
|       }); | ||||
|     }, | ||||
|     // 上传前校检格式和大小 | ||||
|     handleBeforeUpload(file) { | ||||
|       // 校检文件大小 | ||||
|       if (this.fileSize) { | ||||
|         const isLt = file.size / 1024 / 1024 < this.fileSize; | ||||
|         if (!isLt) { | ||||
|           this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); | ||||
|           return false; | ||||
|         } | ||||
|       } | ||||
|       return true; | ||||
|     }, | ||||
|     handleUploadSuccess(res, file) { | ||||
|       // 获取富文本组件实例 | ||||
|       let quill = this.Quill; | ||||
|       // 如果上传成功 | ||||
|       // edit by 芋道源码 | ||||
|       if (res.code === 200 || res.code === 0) { | ||||
|         // 获取光标所在位置 | ||||
|         let length = quill.getSelection().index; | ||||
|         // 插入图片  res.url为服务器返回的图片地址 | ||||
|         // edit by 芋道源码 | ||||
|         quill.insertEmbed(length, "image", res.data); | ||||
|         // 调整光标到最后 | ||||
|         quill.setSelection(length + 1); | ||||
|       } else { | ||||
|         this.$message.error("图片插入失败"); | ||||
|       } | ||||
|     }, | ||||
|     handleUploadError() { | ||||
|       this.$message.error("图片插入失败"); | ||||
|     }, | ||||
|   }, | ||||
| 	name: 'Editor', | ||||
| 	props: { | ||||
| 		/* 编辑器的内容 */ | ||||
| 		value: { | ||||
| 			type: String, | ||||
| 			default: '', | ||||
| 		}, | ||||
| 		/* 高度 */ | ||||
| 		height: { | ||||
| 			type: Number, | ||||
| 			default: null, | ||||
| 		}, | ||||
| 		/* 最小高度 */ | ||||
| 		minHeight: { | ||||
| 			type: Number, | ||||
| 			default: null, | ||||
| 		}, | ||||
| 		/* 只读 */ | ||||
| 		readOnly: { | ||||
| 			type: Boolean, | ||||
| 			default: false, | ||||
| 		}, | ||||
| 		// 上传文件大小限制(MB) | ||||
| 		fileSize: { | ||||
| 			type: Number, | ||||
| 			default: 5, | ||||
| 		}, | ||||
| 		/* 类型(base64格式、url格式) */ | ||||
| 		type: { | ||||
| 			type: String, | ||||
| 			default: 'url', | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			uploadFileUrl: | ||||
| 				process.env.VUE_APP_BASE_API + '/admin-api/infra/file/upload', // 请求地址 | ||||
| 			headers: { Authorization: 'Bearer ' + getAccessToken() }, // 设置上传的请求头部 | ||||
| 			Quill: null, | ||||
| 			currentValue: '', | ||||
| 			options: { | ||||
| 				theme: 'snow', | ||||
| 				bounds: document.body, | ||||
| 				debug: 'warn', | ||||
| 				modules: { | ||||
| 					// 工具栏配置 | ||||
| 					toolbar: [ | ||||
| 						['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线 | ||||
| 						['blockquote', 'code-block'], // 引用  代码块 | ||||
| 						[{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表 | ||||
| 						[{ indent: '-1' }, { indent: '+1' }], // 缩进 | ||||
| 						[{ size: ['small', false, 'large', 'huge'] }], // 字体大小 | ||||
| 						[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题 | ||||
| 						[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色 | ||||
| 						[{ align: [] }], // 对齐方式 | ||||
| 						['clean'], // 清除文本格式 | ||||
| 						['link', 'image', 'video'], // 链接、图片、视频 | ||||
| 					], | ||||
| 				}, | ||||
| 				placeholder: '请输入内容', | ||||
| 				readOnly: true, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		styles() { | ||||
| 			let style = {}; | ||||
| 			if (this.minHeight) { | ||||
| 				style.minHeight = `${this.minHeight}px`; | ||||
| 			} | ||||
| 			if (this.height) { | ||||
| 				style.height = `${this.height}px`; | ||||
| 			} | ||||
| 			return style; | ||||
| 		}, | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		value: { | ||||
| 			handler(val) { | ||||
| 				if (val !== this.currentValue) { | ||||
| 					this.currentValue = val === null ? '' : val; | ||||
| 					if (this.Quill) { | ||||
| 						this.Quill.pasteHTML(this.currentValue); | ||||
| 					} | ||||
| 				} | ||||
| 			}, | ||||
| 			immediate: true, | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.init(); | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
| 		this.Quill = null; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init() { | ||||
| 			const editor = this.$refs.editor; | ||||
| 			this.Quill = new Quill(editor, this.options); | ||||
| 			// 取消自动聚焦 start | ||||
| 			this.$nextTick(() => { | ||||
| 				this.Quill.blur(); | ||||
| 				if (!this.readOnly) { | ||||
| 					this.Quill.enable(); | ||||
| 				} | ||||
| 			}); | ||||
| 			// 如果设置了上传地址则自定义图片上传事件 | ||||
| 			if (this.type === 'url') { | ||||
| 				let toolbar = this.Quill.getModule('toolbar'); | ||||
| 				toolbar.addHandler('image', (value) => { | ||||
| 					this.uploadType = 'image'; | ||||
| 					if (value) { | ||||
| 						this.$refs.upload.$children[0].$refs.input.click(); | ||||
| 					} else { | ||||
| 						this.quill.format('image', false); | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 			this.Quill.pasteHTML(this.currentValue); | ||||
| 			this.Quill.on('text-change', (delta, oldDelta, source) => { | ||||
| 				const html = this.$refs.editor.children[0].innerHTML; | ||||
| 				const text = this.Quill.getText(); | ||||
| 				const quill = this.Quill; | ||||
| 				this.currentValue = html; | ||||
| 				this.$emit('input', html); | ||||
| 				this.$emit('on-change', { html, text, quill }); | ||||
| 			}); | ||||
| 			this.Quill.on('text-change', (delta, oldDelta, source) => { | ||||
| 				this.$emit('on-text-change', delta, oldDelta, source); | ||||
| 			}); | ||||
| 			this.Quill.on('selection-change', (range, oldRange, source) => { | ||||
| 				this.$emit('on-selection-change', range, oldRange, source); | ||||
| 			}); | ||||
| 			this.Quill.on('editor-change', (eventName, ...args) => { | ||||
| 				this.$emit('on-editor-change', eventName, ...args); | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 上传前校检格式和大小 | ||||
| 		handleBeforeUpload(file) { | ||||
| 			// 校检文件大小 | ||||
| 			if (this.fileSize) { | ||||
| 				const isLt = file.size / 1024 / 1024 < this.fileSize; | ||||
| 				if (!isLt) { | ||||
| 					this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); | ||||
| 					return false; | ||||
| 				} | ||||
| 			} | ||||
| 			return true; | ||||
| 		}, | ||||
| 		handleUploadSuccess(res, file) { | ||||
| 			// 获取富文本组件实例 | ||||
| 			let quill = this.Quill; | ||||
| 			// 如果上传成功 | ||||
| 			// edit by 芋道源码 | ||||
| 			if (res.code === 200 || res.code === 0) { | ||||
| 				// 获取光标所在位置 | ||||
| 				let length = quill.getSelection().index; | ||||
| 				// 插入图片  res.url为服务器返回的图片地址 | ||||
| 				// edit by 芋道源码 | ||||
| 				quill.insertEmbed(length, 'image', res.data); | ||||
| 				// 调整光标到最后 | ||||
| 				quill.setSelection(length + 1); | ||||
| 			} else { | ||||
| 				this.$message.error('图片插入失败'); | ||||
| 			} | ||||
| 		}, | ||||
| 		handleUploadError() { | ||||
| 			this.$message.error('图片插入失败'); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style> | ||||
| .editor, .ql-toolbar { | ||||
|   white-space: pre-wrap !important; | ||||
|   line-height: normal !important; | ||||
| .editor-wrapper { | ||||
| 	position: relative; | ||||
|   cursor: not-allowed; | ||||
|  | ||||
| 	&::after { | ||||
| 		content: ''; | ||||
| 		position: absolute; | ||||
| 		top: 0; | ||||
| 		left: 0; | ||||
| 		width: 100%; | ||||
| 		height: 100%; | ||||
| 		background: #f5f7fa77; | ||||
| 	} | ||||
| } | ||||
| .editor, | ||||
| .ql-toolbar { | ||||
| 	white-space: pre-wrap !important; | ||||
| 	line-height: normal !important; | ||||
| } | ||||
| .quill-img { | ||||
|   display: none; | ||||
| 	display: none; | ||||
| } | ||||
| .ql-snow .ql-tooltip[data-mode="link"]::before { | ||||
|   content: "请输入链接地址:"; | ||||
| .ql-snow .ql-tooltip[data-mode='link']::before { | ||||
| 	content: '请输入链接地址:'; | ||||
| } | ||||
| .ql-snow .ql-tooltip.ql-editing a.ql-action::after { | ||||
|   border-right: 0px; | ||||
|   content: "保存"; | ||||
|   padding-right: 0px; | ||||
| 	border-right: 0px; | ||||
| 	content: '保存'; | ||||
| 	padding-right: 0px; | ||||
| } | ||||
|  | ||||
| .ql-snow .ql-tooltip[data-mode="video"]::before { | ||||
|   content: "请输入视频地址:"; | ||||
| .ql-snow .ql-tooltip[data-mode='video']::before { | ||||
| 	content: '请输入视频地址:'; | ||||
| } | ||||
|  | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item::before { | ||||
|   content: "14px"; | ||||
| 	content: '14px'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { | ||||
|   content: "10px"; | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before { | ||||
| 	content: '10px'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { | ||||
|   content: "18px"; | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before { | ||||
| 	content: '18px'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { | ||||
|   content: "32px"; | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before, | ||||
| .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before { | ||||
| 	content: '32px'; | ||||
| } | ||||
|  | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item::before { | ||||
|   content: "文本"; | ||||
| 	content: '文本'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { | ||||
|   content: "标题1"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before { | ||||
| 	content: '标题1'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { | ||||
|   content: "标题2"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before { | ||||
| 	content: '标题2'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { | ||||
|   content: "标题3"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before { | ||||
| 	content: '标题3'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { | ||||
|   content: "标题4"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before { | ||||
| 	content: '标题4'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { | ||||
|   content: "标题5"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before { | ||||
| 	content: '标题5'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { | ||||
|   content: "标题6"; | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before, | ||||
| .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before { | ||||
| 	content: '标题6'; | ||||
| } | ||||
|  | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-label::before, | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-item::before { | ||||
|   content: "标准字体"; | ||||
| 	content: '标准字体'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { | ||||
|   content: "衬线字体"; | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before, | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before { | ||||
| 	content: '衬线字体'; | ||||
| } | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { | ||||
|   content: "等宽字体"; | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before, | ||||
| .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before { | ||||
| 	content: '等宽字体'; | ||||
| } | ||||
| </style> | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-07-19 15:18:30 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2023-11-15 16:04:06 | ||||
|  * @LastEditTime: 2023-11-22 13:58:30 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -14,6 +14,8 @@ | ||||
|     }"> | ||||
|       <img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt=""> | ||||
|       许昌安彩AGV原片周转看板 | ||||
|       <h3 class="unit">单位:河南汇融科技服务有限公司</h3> | ||||
|       <h3 class="time">{{ times }}</h3> | ||||
|       <!-- <el-button | ||||
|         type="text" | ||||
|         class="title-button" | ||||
| @@ -87,11 +89,11 @@ | ||||
|             <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> | ||||
|               <top-radio-group /> | ||||
|             </div> --> | ||||
|             <el-row :gutter="9 * beilv"> | ||||
|               <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> | ||||
|             <!-- <el-row :gutter="9 * beilv"> --> | ||||
|               <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> --> | ||||
|                 <base-table :page="1" :limit="9" :show-index="false" :beilv="1" :table-config="inventoryTableProps" | ||||
|                   :table-data="inventoryList" /> | ||||
|               </el-col> | ||||
|               <!-- </el-col> --> | ||||
|               <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> | ||||
|                 <base-table3 | ||||
|                   :page="2" | ||||
| @@ -101,7 +103,7 @@ | ||||
|                   :table-data="qualityList2" | ||||
|                 /> | ||||
|               </el-col> --> | ||||
|             </el-row> | ||||
|             <!-- </el-row> --> | ||||
|           </base-container> | ||||
|         </el-col> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> | ||||
| @@ -666,7 +668,8 @@ export default { | ||||
|     return { | ||||
|       beilv: 1, | ||||
|       beilv2: 1, | ||||
|       clientWidth:0, | ||||
|       clientWidth: 0, | ||||
|       times:undefined, | ||||
|       value: 100, | ||||
|       qualityYearTableProps, | ||||
|       cxNameList, | ||||
| @@ -748,6 +751,7 @@ export default { | ||||
|     // this.fetchList('order-process') | ||||
|     // this.fetchList('line-chart-data') | ||||
|     this.init() | ||||
|     this.getTimes() | ||||
|     this.windowWidth(document.documentElement.clientWidth) | ||||
|   }, | ||||
|   mounted() { | ||||
| @@ -776,6 +780,30 @@ export default { | ||||
|   //   removeEventListener('resize', resizeFun) | ||||
|   // }, | ||||
|   methods: { | ||||
|     getTimes() { | ||||
|       setInterval(this.getTimesInterval, 1000); | ||||
|     }, | ||||
|     getTimesInterval: function () { | ||||
|       let _this = this; | ||||
|       let year = new Date().getFullYear(); //获取当前时间的年份 | ||||
|       let month = new Date().getMonth() + 1; //获取当前时间的月份 | ||||
|       let day = new Date().getDate(); //获取当前时间的天数 | ||||
|       let hours = new Date().getHours(); //获取当前时间的小时 | ||||
|       let minutes = new Date().getMinutes(); //获取当前时间的分数 | ||||
|       let seconds = new Date().getSeconds(); //获取当前时间的秒数 | ||||
|       //当小于 10 的是时候,在前面加 0 | ||||
|       if (hours < 10) { | ||||
|         hours = "0" + hours; | ||||
|       } | ||||
|       if (minutes < 10) { | ||||
|         minutes = "0" + minutes; | ||||
|       } | ||||
|       if (seconds < 10) { | ||||
|         seconds = "0" + seconds; | ||||
|       } | ||||
|       //拼接格式化当前时间 | ||||
|       this.times = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; | ||||
|     }, | ||||
|     windowWidth(value) { | ||||
|       this.clientWidth = value | ||||
|     }, | ||||
| @@ -846,7 +874,19 @@ export default { | ||||
|     background-size: 100% 100%; | ||||
|     color: #00fff0; | ||||
|     text-align: center; | ||||
|  | ||||
|     position: relative; | ||||
|     .unit{ | ||||
|       position: absolute; | ||||
|       left: 260px; | ||||
|       top:25px; | ||||
|       font-size: 20px; | ||||
|     } | ||||
|     .time{ | ||||
|       position: absolute; | ||||
|       left: 1360px; | ||||
|       top:25px; | ||||
|       font-size: 20px; | ||||
|     } | ||||
|     .title-button { | ||||
|       color: #00fff0; | ||||
|       font-size: 20px; | ||||
|   | ||||
| @@ -162,7 +162,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '属性名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '属性名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
| 		v-loading="formLoading"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="8"> | ||||
| 				<el-form-item label="设备名称" prop="name" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 				<el-form-item label="设备名称" prop="name" :rules="[{ required: true, message: '设备名称不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input v-model="form.name" :disabled="disabled" placeholder="请输入设备名称"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| @@ -33,7 +33,7 @@ | ||||
| 			</el-col> | ||||
| 			<el-col :span="8"> | ||||
| 				<el-form-item label="设备类型" prop="equipmentTypeId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '设备类型不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select v-model="form.equipmentTypeId" :disabled="disabled" filterable placeholder="请选择设备类型"> | ||||
| 						<el-option v-for="eqType in eqTypeList" :key="eqType.id" :label="eqType.name" | ||||
| 							:value="eqType.id"></el-option> | ||||
| @@ -43,7 +43,7 @@ | ||||
|  | ||||
| 			<el-col :span="8"> | ||||
| 				<el-form-item label="预计生产时间(min/天)" prop="workTime" :rules="[ | ||||
| 					{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 					{ required: true, message: '预计生产时间不能为空', trigger: 'blur' }, | ||||
| 					{ | ||||
| 						type: 'number', | ||||
| 						message: '请输入正确的数字值', | ||||
| @@ -71,7 +71,7 @@ | ||||
| 			</el-col> | ||||
| 			<el-col :span="8"> | ||||
| 				<el-form-item label="设备TT值" prop="tvalue" :rules="[ | ||||
| 					{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 					{ required: true, message: '设备TT值不能为空', trigger: 'blur' }, | ||||
| 					{ | ||||
| 						type: 'number', | ||||
| 						message: '请输入正确的数字值', | ||||
| @@ -86,7 +86,7 @@ | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="8"> | ||||
| 				<el-form-item label="产品加工时间(s)" prop="processingTime" :rules="[ | ||||
| 					{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 					{ required: true, message: '产品加工时间不能为空', trigger: 'blur' }, | ||||
| 					{ | ||||
| 						type: 'number', | ||||
| 						message: '请输入正确的数字值', | ||||
|   | ||||
| @@ -196,7 +196,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -211,10 +211,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '英文名称', | ||||
| 						prop: 'enName', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -222,10 +218,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '缩写', | ||||
| 						prop: 'abbr', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| 					}, | ||||
|  | ||||
| 					{ | ||||
| @@ -233,7 +225,7 @@ export default { | ||||
| 						label: '设备类型', | ||||
| 						prop: 'equipmentTypeId', | ||||
| 						url: '/base/core-equipment-type/page?pageNo=1&pageSize=100', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备类型不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -243,7 +235,7 @@ export default { | ||||
| 						label: '预计生产时间(min/天)', | ||||
| 						prop: 'workTime', | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 							{ required: true, message: '预计生产时间不能为空', trigger: 'blur' }, | ||||
| 							{ | ||||
| 								type: 'number', | ||||
| 								message: '请输入正确的数字值', | ||||
| @@ -275,7 +267,7 @@ export default { | ||||
| 						prop: 'tvalue', | ||||
| 						label: '设备TT值', | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 							{ required: true, message: '设备TT值不能为空', trigger: 'blur' }, | ||||
| 							{ | ||||
| 								type: 'number', | ||||
| 								message: '请输入正确的数字值', | ||||
| @@ -291,7 +283,7 @@ export default { | ||||
| 						label: '产品加工时间(s)', | ||||
| 						prop: 'processingTime', | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 							{ required: true, message: '产品加工时间不能为空', trigger: 'blur' }, | ||||
| 							{ | ||||
| 								type: 'number', | ||||
| 								message: '请输入正确的数字值', | ||||
| @@ -304,7 +296,6 @@ export default { | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '制造商', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						prop: 'manufacturer', | ||||
| 					}, | ||||
| 					{ | ||||
| @@ -317,7 +308,6 @@ export default { | ||||
| 					{ | ||||
| 						textarea: true, | ||||
| 						label: '功能描述', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						prop: 'description', | ||||
| 					}, | ||||
| 				], | ||||
|   | ||||
| @@ -149,7 +149,7 @@ export default { | ||||
| 						select: true, | ||||
| 						label: '产线', | ||||
| 						prop: 'productionLineId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '产线名不能为空', trigger: 'blur' }], | ||||
| 						url: '/base/core-production-line/listAll', | ||||
| 						bind: { clearable: true, filterable: true }, | ||||
| 						// watch: 'workshopSectionId' | ||||
| @@ -159,7 +159,7 @@ export default { | ||||
| 						label: '工段', | ||||
| 						prop: 'workshopSectionId', | ||||
| 						depends: 'productionLineId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 						bind: { clearable: true, filterable: true }, | ||||
| 						url: '/base/core-workshop-section/listByParentId', | ||||
| 					}, | ||||
| @@ -169,7 +169,7 @@ export default { | ||||
| 						select: true, | ||||
| 						label: '设备', | ||||
| 						prop: 'equipmentId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名不能为空', trigger: 'blur' }], | ||||
| 						bind: { clearable: true, filterable: true }, | ||||
| 						url: '/base/core-equipment/listAll', | ||||
| 					}, | ||||
|   | ||||
| @@ -135,7 +135,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备类型名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备类型名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="产线" | ||||
| 					prop="productionLineId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '产线不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.productionLineId" | ||||
| 						placeholder="请选择产线" | ||||
| @@ -35,7 +35,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="工段" | ||||
| 					prop="workshopSectionId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '工段不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.workshopSectionId" | ||||
| 						filterable | ||||
| @@ -55,7 +55,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="设备" | ||||
| 					prop="equipmentId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '设备不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.equipmentId" | ||||
| 						filterable | ||||
|   | ||||
| @@ -176,7 +176,7 @@ export default { | ||||
| 						url: '/base/production-line/listAll', | ||||
| 						// prop: '__product_line', // __开头代表不传递给服务器 | ||||
| 						prop: 'productionLineId', // 编辑接口返回的产线id,所以不能使用上面那种形式 | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '产线不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -185,7 +185,7 @@ export default { | ||||
| 						// depends: '__product_line', // 依赖产线获取数据 | ||||
| 						depends: 'productionLineId', | ||||
| 						prop: 'workshopSectionId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -194,7 +194,7 @@ export default { | ||||
| 						label: '设备', | ||||
| 						url: '/base/core-equipment/page?pageNo=1&pageSize=100', | ||||
| 						prop: 'equipmentId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
|   | ||||
| @@ -16,36 +16,20 @@ | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警编码不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.code" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入工段排序" /> | ||||
| 				</el-form-item> | ||||
| 				<!-- 				 | ||||
| 						<el-form-item | ||||
| 						label="报警编码" | ||||
| 						prop="code" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						<el-select | ||||
| 						v-model="dataForm.code" | ||||
| 						placeholder="请选择产线" | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 						v-for="opt in productionLineList" | ||||
| 						:key="opt.value" | ||||
| 						:label="opt.label" | ||||
| 						:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> --> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警类型不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.type" | ||||
| 						:disabled="disabled" | ||||
| @@ -68,7 +52,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警级别不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.grade" | ||||
| @@ -101,7 +85,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '参数列名不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| @@ -113,7 +97,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警内容不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
|   | ||||
| @@ -137,7 +137,7 @@ export default { | ||||
| 						label: '报警编码', // 自动生成 | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group-alarm/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -147,7 +147,7 @@ export default { | ||||
| 							{ label: '布尔型', value: 2 }, | ||||
| 							{ label: '字符型', value: 1 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警类型不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -168,13 +168,13 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', // 在实时数据库的列名 | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警内容', | ||||
| 						prop: 'alarmContent', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警内容不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -177,7 +177,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcTableName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '关联表名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -187,7 +187,7 @@ export default { | ||||
| 						label: '编码', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -195,7 +195,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标识', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '标识不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -166,13 +166,13 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -181,7 +181,6 @@ export default { | ||||
| 						label: '单位', | ||||
| 						prop: 'unit', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						switch: true, | ||||
| @@ -222,7 +221,6 @@ export default { | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -230,13 +228,11 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标准值', | ||||
| 						prop: 'defaultValue', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -244,7 +240,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -236,7 +236,7 @@ export default { | ||||
| 						prop: 'plcId', | ||||
| 						labelKey: `plcTableName`, | ||||
| 						url: '/base/equipment-plc/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '关联表名不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -248,7 +248,7 @@ export default { | ||||
| 						label: '设备', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/core-equipment/page?pageNo=1&pageSize=99', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -274,7 +274,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备名', | ||||
| 						prop: 'equipmentName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -120,13 +120,13 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -135,7 +135,6 @@ export default { | ||||
| 						label: '单位', | ||||
| 						prop: 'unit', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						switch: true, | ||||
| @@ -176,7 +175,6 @@ export default { | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -184,13 +182,11 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标准值', | ||||
| 						prop: 'defaultValue', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -198,7 +194,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -29,7 +29,10 @@ | ||||
| 				<section v-for="(section, index) in sections" :key="section.key"> | ||||
| 					<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> | ||||
|  | ||||
| 					<div class="form-part" v-if="section.key == 'base'"> | ||||
| 					<div | ||||
| 						class="form-part" | ||||
| 						v-if="section.key == 'base'" | ||||
| 						style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px"> | ||||
| 						<el-skeleton v-if="!showForm" animated /> | ||||
| 						<!-- <BaseInfoForm | ||||
| 							key="drawer-dialog-form" | ||||
| @@ -64,9 +67,8 @@ | ||||
| 					<div | ||||
| 						v-if="section.key == 'attrs'" | ||||
| 						style="position: relative; margin-top: 12px"> | ||||
| 						<div | ||||
| 							v-if="!mode.includes('detail')" | ||||
| 							style="position: absolute; top: -40px; right: 0"> | ||||
| 						<!-- v-if="!mode.includes('detail')" --> | ||||
| 						<div style="position: absolute; top: -40px; right: 0"> | ||||
| 							<el-button @click="handleAddAttr" type="text"> | ||||
| 								<i class="el-icon-plus"></i> | ||||
| 								添加报警 | ||||
| @@ -102,9 +104,9 @@ | ||||
|  | ||||
| 			<div class="drawer-body__footer"> | ||||
| 				<el-button style="" @click="handleCancel">取消</el-button> | ||||
| 				<el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 				<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 					编辑 | ||||
| 				</el-button> | ||||
| 				</el-button> --> | ||||
| 				<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
| @@ -123,9 +125,9 @@ | ||||
| 			<DialogForm | ||||
| 				v-if="attrFormVisible" | ||||
| 				ref="attrForm" | ||||
| 				:disabled="mode.includes('detail')" | ||||
| 				v-model="attrForm" | ||||
| 				:rows="attrRows" /> | ||||
| 			<!-- :disabled="mode.includes('detail')" --> | ||||
| 		</base-dialog> | ||||
| 	</el-drawer> | ||||
| </template> | ||||
| @@ -189,8 +191,30 @@ export default { | ||||
| 						label: '报警编码', // 自动生成 | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group-alarm/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '报警级别', // 字典 | ||||
| 						prop: 'grade', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL), | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数列名', // 在实时数据库的列名 | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警内容', | ||||
| 						prop: 'alarmContent', | ||||
| 						rules: [{ required: true, message: '报警内容不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '报警类型', // 固定选项 | ||||
| @@ -199,15 +223,7 @@ export default { | ||||
| 							{ label: '布尔型', value: 2 }, | ||||
| 							{ label: '字符型', value: 1 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '报警级别', // 字典 | ||||
| 						prop: 'grade', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL), | ||||
| 						rules: [{ required: true, message: '报警类型不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -215,20 +231,6 @@ export default { | ||||
| 						prop: 'alarmCode', | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数列名', // 在实时数据库的列名 | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警内容', | ||||
| 						prop: 'alarmContent', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			attrQuery: { | ||||
| 				params: { | ||||
|   | ||||
| @@ -16,46 +16,26 @@ | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警编码不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.code" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入报警编码" /> | ||||
| 				</el-form-item> | ||||
| 				<!-- 				 | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.code" | ||||
| 						placeholder="请选择产线" | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in productionLineList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> --> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '报警级别不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.type" | ||||
| 						placeholder="请选择报警类型" | ||||
| 						@change="handleTypeChange"> | ||||
| 						v-model="dataForm.grade" | ||||
| 						placeholder="请选择报警级别" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '布尔型', value: 2 }, | ||||
| 								{ label: '字符型', value: 1 }, | ||||
| 							]" | ||||
| 							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| @@ -66,16 +46,45 @@ | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '参数列名不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| 						placeholder="请输入参数列名" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '报警内容不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
| 						placeholder="请输入报警内容" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '报警类型不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.grade" | ||||
| 						placeholder="请选择报警级别" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						v-model="dataForm.type" | ||||
| 						placeholder="请选择报警类型" | ||||
| 						@change="handleTypeChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)" | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '布尔型', value: 2 }, | ||||
| 								{ label: '字符型', value: 1 }, | ||||
| 							]" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| @@ -96,32 +105,6 @@ | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| 						placeholder="请输入参数列名" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
| 						placeholder="请输入报警内容" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
|   | ||||
| @@ -183,10 +183,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备分组名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
| 						rules: [{ required: true, message: '设备分组名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -271,7 +268,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '分组名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '分组名称不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -283,7 +280,7 @@ export default { | ||||
| 						label: '分组编码', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '分组编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -291,7 +288,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							placeholder: '请输入备注', | ||||
| 						}, | ||||
|   | ||||
| @@ -29,7 +29,10 @@ | ||||
| 				<section v-for="(section, index) in sections" :key="section.key"> | ||||
| 					<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> | ||||
|  | ||||
| 					<div class="form-part" v-if="section.key == 'base'"> | ||||
| 					<div | ||||
| 						class="form-part" | ||||
| 						v-if="section.key == 'base'" | ||||
| 						style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px"> | ||||
| 						<el-skeleton v-if="!showForm" animated /> | ||||
| 						<!-- <BaseInfoForm | ||||
| 							key="drawer-dialog-form" | ||||
| @@ -64,9 +67,8 @@ | ||||
| 					<div | ||||
| 						v-if="section.key == 'attrs'" | ||||
| 						style="position: relative; margin-top: 12px"> | ||||
| 						<div | ||||
| 							v-if="!mode.includes('detail')" | ||||
| 							style="position: absolute; top: -40px; right: 0"> | ||||
| 						<!-- v-if="!mode.includes('detail')" --> | ||||
| 						<div style="position: absolute; top: -40px; right: 0"> | ||||
| 							<el-button @click="handleAddAttr" type="text"> | ||||
| 								<i class="el-icon-plus"></i> | ||||
| 								添加属性 | ||||
| @@ -102,9 +104,9 @@ | ||||
|  | ||||
| 			<div class="drawer-body__footer"> | ||||
| 				<el-button style="" @click="handleCancel">取消</el-button> | ||||
| 				<el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 				<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 					编辑 | ||||
| 				</el-button> | ||||
| 				</el-button> --> | ||||
| 				<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
| @@ -120,10 +122,10 @@ | ||||
| 			@close="closeAttrForm" | ||||
| 			@cancel="closeAttrForm" | ||||
| 			@confirm="submitAttrForm"> | ||||
| 			<!-- :disabled="mode.includes('detail')" --> | ||||
| 			<DialogForm | ||||
| 				v-if="attrFormVisible" | ||||
| 				ref="attrForm" | ||||
| 				:disabled="mode.includes('detail')" | ||||
| 				v-model="attrForm" | ||||
| 				:rows="attrRows" /> | ||||
| 		</base-dialog> | ||||
| @@ -189,7 +191,7 @@ export default { | ||||
| 						label: '报警编码', // 自动生成 | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group-alarm/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -199,7 +201,7 @@ export default { | ||||
| 							{ label: '布尔型', value: 2 }, | ||||
| 							{ label: '字符型', value: 1 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警类型不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -220,13 +222,13 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', // 在实时数据库的列名 | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警内容', | ||||
| 						prop: 'alarmContent', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警内容不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -16,46 +16,27 @@ | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '报警编码不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.code" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入工段排序" /> | ||||
| 				</el-form-item> | ||||
| 				<!-- 				 | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.code" | ||||
| 						placeholder="请选择产线" | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in productionLineList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> --> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '报警级别不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.type" | ||||
| 						placeholder="请选择报警类型" | ||||
| 						@change="handleTypeChange"> | ||||
| 						v-model="dataForm.grade" | ||||
| 						placeholder="请选择报警级别" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '布尔型', value: 2 }, | ||||
| 								{ label: '字符型', value: 1 }, | ||||
| 							]" | ||||
| 							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| @@ -66,16 +47,45 @@ | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '参数列名不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| 						placeholder="请输入参数列名" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '报警内容不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
| 						placeholder="请输入报警内容" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '报警类型不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.grade" | ||||
| 						placeholder="请选择报警级别" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						v-model="dataForm.type" | ||||
| 						placeholder="请选择报警类型" | ||||
| 						@change="handleTypeChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)" | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '布尔型', value: 2 }, | ||||
| 								{ label: '字符型', value: 1 }, | ||||
| 							]" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| @@ -96,32 +106,6 @@ | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| 						placeholder="请输入参数列名" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
| 						placeholder="请输入报警内容" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
|   | ||||
| @@ -224,7 +224,7 @@ export default { | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -238,7 +238,7 @@ export default { | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '报警分组不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| @@ -269,7 +269,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备分组名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备分组名称不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -224,7 +224,7 @@ export default { | ||||
| 						prop: 'plcId', | ||||
| 						labelKey: `plcTableName`, | ||||
| 						url: '/base/equipment-plc/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '关联表名不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -236,7 +236,7 @@ export default { | ||||
| 						label: '设备', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/core-equipment/page?pageNo=1&pageSize=99', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -262,7 +262,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备名', | ||||
| 						prop: 'equipmentName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -184,7 +184,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcTableName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '关联表名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -194,7 +194,7 @@ export default { | ||||
| 						label: '编码', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -202,7 +202,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标识', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '标识不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
|   | ||||
| @@ -29,7 +29,10 @@ | ||||
| 				<section v-for="(section, index) in sections" :key="section.key"> | ||||
| 					<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> | ||||
|  | ||||
| 					<div class="form-part" v-if="section.key == 'base'"> | ||||
| 					<div | ||||
| 						class="form-part" | ||||
| 						v-if="section.key == 'base'" | ||||
| 						style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px"> | ||||
| 						<el-skeleton v-if="!showForm" animated /> | ||||
| 						<!-- <BaseInfoForm | ||||
| 							key="drawer-dialog-form" | ||||
| @@ -66,9 +69,8 @@ | ||||
| 					<div | ||||
| 						v-if="section.key == 'attrs'" | ||||
| 						style="position: relative; margin-top: 12px"> | ||||
| 						<div | ||||
| 							v-if="!mode.includes('detail')" | ||||
| 							style="position: absolute; top: -40px; right: 0"> | ||||
| 						<!-- v-if="!mode.includes('detail')" --> | ||||
| 						<div style="position: absolute; top: -40px; right: 0"> | ||||
| 							<el-button @click="handleAddAttr" type="text"> | ||||
| 								<i class="el-icon-plus"></i> | ||||
| 								添加属性 | ||||
| @@ -104,9 +106,9 @@ | ||||
|  | ||||
| 			<div class="drawer-body__footer"> | ||||
| 				<el-button style="" @click="handleCancel">取消</el-button> | ||||
| 				<el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 				<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 					编辑 | ||||
| 				</el-button> | ||||
| 				</el-button> --> | ||||
| 				<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
| @@ -122,10 +124,10 @@ | ||||
| 			@close="closeAttrForm" | ||||
| 			@cancel="closeAttrForm" | ||||
| 			@confirm="submitAttrForm"> | ||||
| 			<!-- :disabled="mode.includes('detail')" --> | ||||
| 			<DialogForm | ||||
| 				v-if="attrFormVisible" | ||||
| 				ref="attrForm" | ||||
| 				:disabled="mode.includes('detail')" | ||||
| 				v-model="attrForm" | ||||
| 				:rows="attrRows" /> | ||||
| 		</base-dialog> | ||||
| @@ -192,13 +194,13 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -207,7 +209,6 @@ export default { | ||||
| 						label: '单位', | ||||
| 						prop: 'unit', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						switch: true, | ||||
| @@ -229,7 +230,7 @@ export default { | ||||
| 							{ label: '工艺参数', value: 2 }, | ||||
| 							{ label: '报警参数', value: 3 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备参数类型不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -241,7 +242,7 @@ export default { | ||||
| 							{ label: '破损数量', value: 3 }, | ||||
| 							{ label: '无类型', value: 4 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '生产参数类型不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -273,7 +274,6 @@ export default { | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -281,13 +281,11 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标准值', | ||||
| 						prop: 'defaultValue', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -295,7 +293,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -1,187 +0,0 @@ | ||||
| <!--  | ||||
|     filename: dialogForm.vue | ||||
|     author: liubin | ||||
|     date: 2023-09-11 15:55:13 | ||||
|     description: DialogForm for equipmentBindSection only | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<el-form | ||||
| 		ref="form" | ||||
| 		:model="dataForm" | ||||
| 		label-width="100px" | ||||
| 		v-loading="formLoading"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.code" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入工段排序" /> | ||||
| 				</el-form-item> | ||||
| 				<!-- 				 | ||||
| 						<el-form-item | ||||
| 						label="报警编码" | ||||
| 						prop="code" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						<el-select | ||||
| 						v-model="dataForm.code" | ||||
| 						placeholder="请选择产线" | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 						v-for="opt in productionLineList" | ||||
| 						:key="opt.value" | ||||
| 						:label="opt.label" | ||||
| 						:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> --> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警类型" | ||||
| 					prop="type" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.type" | ||||
| 						:disabled="disabled" | ||||
| 						placeholder="请选择报警类型" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '布尔型', value: 2 }, | ||||
| 								{ label: '字符型', value: 1 }, | ||||
| 							]" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警级别" | ||||
| 					prop="grade" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.grade" | ||||
| 						placeholder="请选择报警级别" | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					v-if="+dataForm.type == 1" | ||||
| 					label="设备报警编码" | ||||
| 					prop="alarmCode"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmCode" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入设备报警编码" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="参数列名" | ||||
| 					prop="plcParamName" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.plcParamName" | ||||
| 						placeholder="请输入参数列名" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="报警内容" | ||||
| 					prop="alarmContent" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-input | ||||
| 						:disabled="disabled" | ||||
| 						v-model="dataForm.alarmContent" | ||||
| 						placeholder="请输入报警内容" | ||||
| 						@change="$emit('update', dataForm)"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
| 	name: 'DialogForm', | ||||
| 	model: { | ||||
| 		prop: 'dataForm', | ||||
| 		event: 'update', | ||||
| 	}, | ||||
| 	emits: ['update'], | ||||
| 	components: {}, | ||||
| 	props: { | ||||
| 		dataForm: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 		disabled: { | ||||
| 			type: Boolean, | ||||
| 			default: false, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formLoading: true, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getCode('/base/equipment-group-alarm/getCode').then((code) => { | ||||
| 			this.formLoading = false; | ||||
| 			this.$emit('update', { | ||||
| 				...this.dataForm, | ||||
| 				code, | ||||
| 			}); | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		/** 模拟透传 ref  */ | ||||
| 		validate(cb) { | ||||
| 			return this.$refs.form.validate(cb); | ||||
| 		}, | ||||
| 		resetFields(args) { | ||||
| 			return this.$refs.form.resetFields(args); | ||||
| 		}, | ||||
| 		async handleProductlineChange(id) { | ||||
| 			await this.getWorksectionList(id); | ||||
| 			this.dataForm.workshopSectionId = null; | ||||
| 			this.$emit('update', this.dataForm); | ||||
| 		}, | ||||
| 		async getCode(url) { | ||||
| 			const response = await this.$axios(url); | ||||
| 			return response.data; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .el-date-editor, | ||||
| .el-select { | ||||
| 	width: 100%; | ||||
| } | ||||
| </style> | ||||
| @@ -1,361 +0,0 @@ | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<SearchBar | ||||
| 			:formConfigs="searchBarFormConfig" | ||||
| 			ref="search-bar" | ||||
| 			@headBtnClick="handleSearchBarBtnClick" /> | ||||
|  | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:table-props="tableProps" | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-data="list" | ||||
| 			@emitFun="handleEmitFun"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				label="操作" | ||||
| 				:width="120" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleTableBtnClick" /> | ||||
| 		</base-table> | ||||
|  | ||||
| 		<!-- 分页组件 --> | ||||
| 		<pagination | ||||
| 			v-show="total > 0" | ||||
| 			:total="total" | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			@pagination="getList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="title" | ||||
| 			:dialogVisible="open" | ||||
| 			width="736px" | ||||
| 			@close="cancel" | ||||
| 			@cancel="cancel" | ||||
| 			@confirm="submitForm"> | ||||
| 			<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { | ||||
| 	createEquipmentGroupAlarm, | ||||
| 	updateEquipmentGroupAlarm, | ||||
| 	deleteEquipmentGroupAlarm, | ||||
| 	getEquipmentGroupAlarm, | ||||
| 	getEquipmentGroupAlarmPage, | ||||
| 	exportEquipmentGroupAlarmExcel, | ||||
| } from '@/api/base/equipmentGroupAlarm'; | ||||
| import basicPageMixin from '@/mixins/lb/basicPageMixin'; | ||||
| import moment from 'moment'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import DialogForm from './dialogForm.vue'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'EquipmentGroupAlarm', | ||||
| 	components: { DialogForm }, | ||||
| 	mixins: [basicPageMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			searchBarKeys: [''], | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('base:equipment-group-alarm:update') | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '修改', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:equipment-group-alarm:delete') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableProps: [ | ||||
| 				{ | ||||
| 					prop: 'createTime', | ||||
| 					label: '添加时间', | ||||
| 					fixed: true, | ||||
| 					width: 180, | ||||
| 					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				}, | ||||
| 				{  width: 240, prop: 'code', label: '报警编码' }, | ||||
| 				{ | ||||
| 					prop: 'type', | ||||
| 					label: '报警类型', | ||||
| 					filter: (val) => | ||||
| 						val != null ? ['-', '字符型', '布尔型', '-'][val] : '-', | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'grade', | ||||
| 					label: '报警级别', | ||||
| 					filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL), | ||||
| 				}, | ||||
| 				{ prop: 'alarmCode', label: '设备报警编码' }, | ||||
| 				{ prop: 'plcParamName', label: '参数列名' }, | ||||
| 				{ prop: 'alarmContent', label: '报警内容' }, | ||||
| 			], | ||||
| 			searchBarFormConfig: [ | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '设备分组编码', | ||||
| 					width: '220', | ||||
| 					placeholder: '/', | ||||
| 					param: 'equipmentGroupCode', | ||||
| 					defaultSelect: null, | ||||
| 					disabled: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '设备分组名称', | ||||
| 					placeholder: '/', | ||||
| 					param: 'equipmentGroupName', | ||||
| 					defaultSelect: null, | ||||
| 					disabled: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:equipment-group-alarm:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					plain: true, | ||||
| 					color: 'success', | ||||
| 				}, | ||||
| 			], | ||||
| 			rows: [ | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警编码', // 自动生成 | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-group-alarm/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '报警类型', // 固定选项 | ||||
| 						prop: 'type', | ||||
| 						options: [ | ||||
| 							{ label: '布尔型', value: 2 }, | ||||
| 							{ label: '字符型', value: 1 }, | ||||
| 						], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '报警级别', // 字典 | ||||
| 						prop: 'grade', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL), | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '设备报警编码', // 对应到设备实际的报警编码 | ||||
| 						prop: 'alarmCode', | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数列名', // 在实时数据库的列名 | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '报警内容', | ||||
| 						prop: 'alarmContent', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			// 是否显示弹出层 | ||||
| 			open: false, | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 10, | ||||
| 				equipmentGroupId: null, | ||||
| 			}, | ||||
| 			// 表单参数 | ||||
| 			form: { | ||||
| 				id: null, | ||||
| 				equipmentGroupId: null, | ||||
| 				code: null, | ||||
| 				type: null, | ||||
| 				grade: null, | ||||
| 				alarmCode: null, | ||||
| 				alarmContent: null, | ||||
| 				plcParamName: null, | ||||
| 			}, | ||||
| 			// // 表单校验 | ||||
| 			// rules: { | ||||
| 			//   equipmentGroupId: [{ required: true, message: "设备分组ID,关联base_equipment_group不能为空", trigger: "blur" }], | ||||
| 			//   type: [{ required: true, message: "报警类型:1.字符型,2.布尔型不能为空", trigger: "change" }], | ||||
| 			//   alarmContent: [{ required: true, message: "报警内容 该条报警具体的解释不能为空", trigger: "blur" }], | ||||
| 			//   plcParamName: [{ required: true, message: "关联编码,对应到plc_param_name的编码,用于链接数采不能为空", trigger: "blur" }], | ||||
| 			// } | ||||
| 		}; | ||||
| 	}, | ||||
| 	// watch: { | ||||
| 	//   $route(value) { | ||||
| 	//     console.log('new route info', value) | ||||
| 	//   } | ||||
| 	// }, | ||||
| 	// created() { | ||||
| 	// 	this.getList(); | ||||
| 	// }, | ||||
| 	activated() { | ||||
| 		// 设置顶部搜索栏信息 | ||||
| 		const { equipmentGroupName, equipmentGroupCode, equipmentGroupId } = | ||||
| 			this.$route.params; | ||||
| 		this.setSearchBarFormValue('equipmentGroupName', equipmentGroupName); | ||||
| 		this.setSearchBarFormValue('equipmentGroupCode', equipmentGroupCode); | ||||
| 		this.queryParams.equipmentGroupId = equipmentGroupId; | ||||
| 		// if (!equipmentGroupId) this.getList(); // 拦截 | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	deactivated() { | ||||
| 		this.setSearchBarFormValue('equipmentGroupName', null); | ||||
| 		this.setSearchBarFormValue('equipmentGroupCode', null); | ||||
| 		this.queryParams.equipmentGroupId = null; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		/** 设置 searchBarForm 的默认值 - 用得比较少 */ | ||||
| 		setSearchBarFormValue(param, value) { | ||||
| 			this.searchBarFormConfig.forEach((config) => { | ||||
| 				if (config.param == param) { | ||||
| 					config.defaultSelect = value; | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 查询列表 */ | ||||
| 		getList() { | ||||
| 			this.loading = true; | ||||
| 			// 执行查询 | ||||
| 			getEquipmentGroupAlarmPage(this.queryParams).then((response) => { | ||||
| 				this.list = response.data.list; | ||||
| 				this.total = response.data.total; | ||||
| 				this.loading = false; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 取消按钮 */ | ||||
| 		cancel() { | ||||
| 			this.open = false; | ||||
| 			this.reset(); | ||||
| 		}, | ||||
| 		/** 表单重置 */ | ||||
| 		reset() { | ||||
| 			this.form = { | ||||
| 				id: null, | ||||
| 				equipmentGroupId: null, | ||||
| 				code: null, | ||||
| 				type: null, | ||||
| 				grade: null, | ||||
| 				alarmCode: null, | ||||
| 				alarmContent: null, | ||||
| 				plcParamName: null, | ||||
| 			}; | ||||
| 			this.resetForm('form'); | ||||
| 		}, | ||||
| 		/** 搜索按钮操作 */ | ||||
| 		handleQuery() { | ||||
| 			this.queryParams.pageNo = 1; | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		/** 重置按钮操作 */ | ||||
| 		resetQuery() { | ||||
| 			this.resetForm('queryForm'); | ||||
| 			this.handleQuery(); | ||||
| 		}, | ||||
| 		/** 新增按钮操作 */ | ||||
| 		handleAdd() { | ||||
| 			if (this.queryParams.equipmentGroupId == null) | ||||
| 				return this.$message.error('没有检测到设备分组信息'); | ||||
| 			this.reset(); | ||||
| 			this.open = true; | ||||
| 			this.title = '添加设备分组报警明细'; | ||||
| 		}, | ||||
| 		/** 修改按钮操作 */ | ||||
| 		handleUpdate(row) { | ||||
| 			this.reset(); | ||||
| 			const id = row.id; | ||||
| 			getEquipmentGroupAlarm(id).then((response) => { | ||||
| 				this.form = response.data; | ||||
| 				this.open = true; | ||||
| 				this.title = '修改设备分组报警明细'; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 提交按钮 */ | ||||
| 		submitForm() { | ||||
| 			this.$refs['form'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return; | ||||
| 				} | ||||
| 				// 修改的提交 | ||||
| 				if (this.form.id != null) { | ||||
| 					updateEquipmentGroupAlarm({ | ||||
| 						...this.form, | ||||
| 						equipmentGroupId: this.queryParams.equipmentGroupId, | ||||
| 					}).then((response) => { | ||||
| 						this.$modal.msgSuccess('修改成功'); | ||||
| 						this.open = false; | ||||
| 						this.getList(); | ||||
| 					}); | ||||
| 					return; | ||||
| 				} | ||||
| 				// 添加的提交 | ||||
| 				createEquipmentGroupAlarm({ | ||||
| 					...this.form, | ||||
| 					equipmentGroupId: this.queryParams.equipmentGroupId, | ||||
| 				}).then((response) => { | ||||
| 					this.$modal.msgSuccess('新增成功'); | ||||
| 					this.open = false; | ||||
| 					this.getList(); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 删除按钮操作 */ | ||||
| 		handleDelete(row) { | ||||
| 			const id = row.id; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除该报警?') | ||||
| 				.then(function () { | ||||
| 					return deleteEquipmentGroupAlarm(id); | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.getList(); | ||||
| 					this.$modal.msgSuccess('删除成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.queryParams }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有设备分组报警明细数据项?') | ||||
| 				.then(() => { | ||||
| 					this.exportLoading = true; | ||||
| 					return exportEquipmentGroupAlarmExcel(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, '设备分组报警明细.xls'); | ||||
| 					this.exportLoading = false; | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -127,7 +127,7 @@ export default { | ||||
| 						label: '巡检内容编号', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-check/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '巡检内容编号不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -135,7 +135,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '巡检项目', | ||||
| 						prop: 'program', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '巡检项目不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -143,7 +143,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '巡检内容', | ||||
| 						prop: 'content', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '巡检内容不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
|   | ||||
| @@ -166,7 +166,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -181,8 +181,7 @@ export default { | ||||
| 							clearable: true, | ||||
| 							multiple: true, | ||||
| 						}, | ||||
| 						options: [{ label: 'test', value: 'test' }], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '维修工不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -195,7 +194,7 @@ export default { | ||||
| 						datetime: true, | ||||
| 						label: '故障发生时间', | ||||
| 						prop: 'faultTime', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '故障发生时间不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 							'value-format': 'timestamp', | ||||
|   | ||||
| @@ -152,14 +152,14 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '配置名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '配置编码', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-check-config/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '配置编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -168,7 +168,7 @@ export default { | ||||
| 						label: '设备名称', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/core-equipment/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
|   | ||||
| @@ -169,14 +169,14 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '计划名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '计划名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '计划编号', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/equipment-maintain-plan/getCode', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '计划编号不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -185,7 +185,7 @@ export default { | ||||
| 						label: '设备名称', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/core-equipment/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
|   | ||||
| @@ -186,7 +186,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '保养设备不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -199,7 +199,7 @@ export default { | ||||
| 							clearable: true, | ||||
| 							multiple: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '保养人员不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -216,7 +216,7 @@ export default { | ||||
| 							'active-value': 1, | ||||
| 							'inactive-value': 2, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '是否计划保养不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{}, | ||||
| 					{ | ||||
| @@ -235,7 +235,7 @@ export default { | ||||
| 						datetime: true, | ||||
| 						label: '开始时间', | ||||
| 						prop: 'startTime', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 							'value-format': 'timestamp', | ||||
| @@ -247,7 +247,7 @@ export default { | ||||
| 						datetime: true, | ||||
| 						label: '结束时间', | ||||
| 						prop: 'endTime', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 							'value-format': 'timestamp', | ||||
| @@ -269,7 +269,6 @@ export default { | ||||
| 						prop: 'files', | ||||
| 					}, | ||||
| 				], | ||||
| 				// TODO: 富文本 | ||||
| 				[ | ||||
| 					{ | ||||
| 						label: '保养描述', | ||||
|   | ||||
| @@ -63,7 +63,7 @@ | ||||
| 					<el-form-item | ||||
| 						label="维修开始时间" | ||||
| 						prop="maintenanceStartTime" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						:rules="[{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]"> | ||||
| 						<el-date-picker | ||||
| 							v-model="dataForm.maintenanceStartTime" | ||||
| 							type="datetime" | ||||
| @@ -77,7 +77,7 @@ | ||||
| 					<el-form-item | ||||
| 						label="维修结束时间" | ||||
| 						prop="maintenanceFinishTime" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						:rules="[{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]"> | ||||
| 						<el-date-picker | ||||
| 							v-model="dataForm.maintenanceFinishTime" | ||||
| 							type="datetime" | ||||
| @@ -91,7 +91,7 @@ | ||||
| 					<el-form-item | ||||
| 						label="维修方式" | ||||
| 						prop="repairMode" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						:rules="[{ required: true, message: '维修方式不能为空', trigger: 'blur' }]"> | ||||
| 						<el-select | ||||
| 							:disabled="disabled" | ||||
| 							v-model="dataForm.repairMode" | ||||
| @@ -127,7 +127,7 @@ | ||||
| 					<el-form-item | ||||
| 						label="故障明细" | ||||
| 						prop="faultDetail" | ||||
| 						:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 						:rules="[{ required: true, message: '故障明细不能为空', trigger: 'blur' }]"> | ||||
| 						<!-- // 富文本 --> | ||||
| 						<editor v-model="dataForm.faultDetail" :read-only="disabled" :min-height="380"/> | ||||
| 					</el-form-item> | ||||
|   | ||||
| @@ -169,7 +169,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '维修单号', | ||||
| 						prop: 'repairOrderNumber', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '维修单号不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -180,7 +180,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -198,7 +198,7 @@ export default { | ||||
| 							// multiple: true, | ||||
| 						}, | ||||
| 						// options: [{ label: 'test', value: 'test' }], | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '维修工不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -211,7 +211,7 @@ export default { | ||||
| 						datetime: true, | ||||
| 						label: '故障发生时间', | ||||
| 						prop: 'faultTime', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '故障发生时间不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 							'value-format': 'timestamp', | ||||
|   | ||||
| @@ -161,7 +161,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '配置名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -174,7 +174,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
|   | ||||
| @@ -153,7 +153,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '供应商不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -196,21 +196,6 @@ export default { | ||||
| 						prop: 'remark', | ||||
| 					}, | ||||
| 				], | ||||
| 				// [ | ||||
| 				// { | ||||
| 				// 	datetime: true, | ||||
| 				// 	label: '故障发生时间', | ||||
| 				// 	prop: 'faultTime', | ||||
| 				// 	rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 				// 	bind: { | ||||
| 				// 		format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 				// 		'value-format': 'timestamp', | ||||
| 				// 		// 'value-format': 'yyyy-MM-dd HH:mm:ss', | ||||
| 				// 		clearable: true, | ||||
| 				// 	}, | ||||
| 				// }, | ||||
|  | ||||
| 				// ], | ||||
| 			], | ||||
| 			// 是否显示弹出层 | ||||
| 			open: false, | ||||
|   | ||||
| @@ -211,7 +211,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '配置名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -224,7 +224,7 @@ export default { | ||||
| 							filterable: true, | ||||
| 							clearable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
|   | ||||
| @@ -180,7 +180,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '工艺名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工艺名称不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -197,6 +197,7 @@ export default { | ||||
| 						select: true, | ||||
| 						label: '产线', | ||||
| 						prop: 'lineId', | ||||
| 						rules: [{ required: true, message: '产线不能为空', trigger: 'blur' }], | ||||
| 						// cache: 'processFlow::lineList', | ||||
| 						url: '/base/core-production-line/listAll', | ||||
| 						bind: { | ||||
| @@ -217,8 +218,9 @@ export default { | ||||
| 				[ | ||||
| 					{ | ||||
| 						textarea: true, | ||||
| 						label: '功能描述', | ||||
| 						label: '工艺描述', | ||||
| 						prop: 'remark', | ||||
| 						rules: [{ required: true, message: '工艺描述不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
|   | ||||
| @@ -102,7 +102,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '工序名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工序名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -111,7 +111,7 @@ export default { | ||||
| 						label: '工段', | ||||
| 						prop: 'sectionId', | ||||
| 						url: '/base/core-workshop-section/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
|   | ||||
| @@ -25,7 +25,7 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			flowId: null, | ||||
| 			currentDet: null | ||||
| 			currentDet: null, | ||||
| 		}; | ||||
| 	}, | ||||
| 	provide() { | ||||
| @@ -36,6 +36,14 @@ export default { | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	beforeRouteEnter(to, from, next) { | ||||
| 		console.log('tot', to, from); | ||||
| 		if (to.params.id) { | ||||
| 			next(); | ||||
| 		} else { | ||||
| 			next({ path: '/extend/process-flow' }); | ||||
| 		} | ||||
| 	}, | ||||
| 	activated() { | ||||
| 		console.log('activated...', this.$route.params); | ||||
| 		this.flowId = this.$route.params.id; | ||||
| @@ -44,10 +52,9 @@ export default { | ||||
| 	methods: { | ||||
| 		handleDetSelected(det) { | ||||
| 			if (det != null) { | ||||
| 				this.currentDet = { ...det } | ||||
| 			} | ||||
| 			else this.currentDet = null; | ||||
| 		} | ||||
| 				this.currentDet = { ...det }; | ||||
| 			} else this.currentDet = null; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|   | ||||
| @@ -68,7 +68,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '工序名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工序名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -77,7 +77,7 @@ export default { | ||||
| 						label: '工段', | ||||
| 						prop: 'sectionId', | ||||
| 						url: '/base/core-workshop-section/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
|   | ||||
| @@ -27,24 +27,26 @@ | ||||
|  | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="按钮盒识别码" prop="buttonId" :rules="[ | ||||
| 						{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 						{ | ||||
| 							type: 'number', | ||||
| 							message: '请输入整数', | ||||
| 							trigger: 'blur', | ||||
| 							transform: (val) => Number.isInteger(Number(val)) && Number(val), | ||||
| 						}, | ||||
| 					]"> | ||||
|         	{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
|         	{ | ||||
|         		type: 'number', | ||||
|         		message: '请输入整数', | ||||
|         		trigger: 'blur', | ||||
|         		transform: (val) => Number.isInteger(Number(val)) && Number(val), | ||||
|         	}, | ||||
|         ]"> | ||||
|           <el-input v-model="dataForm.buttonId" @change="$emit('update', dataForm)" placeholder="请输入整数" /> | ||||
|         </el-form-item> | ||||
|         <!-- | ||||
| 				<el-form-item | ||||
| 					label="报警编码" | ||||
| 					prop="code" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					label="产线" | ||||
| 					prop="productionLineId" | ||||
| 					:rules="[ | ||||
| 						{ required: true, message: '产线不能为空', trigger: 'blur' }, | ||||
| 					]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.code" | ||||
| 						v-model="dataForm.productionLineId" | ||||
| 						placeholder="请选择产线" | ||||
| 						filterable | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in productionLineList" | ||||
| @@ -52,38 +54,78 @@ | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> --> | ||||
|       </el-col> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="工段" | ||||
| 					prop="sectionId" | ||||
| 					:rules="[ | ||||
| 						{ required: true, message: '工段不能为空', trigger: 'blur' }, | ||||
| 					]"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.sectionId" | ||||
| 						placeholder="请选择工段" | ||||
| 						filterable | ||||
| 						@change="$emit('update', dataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in workshopSectionList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|  | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="按钮盒模式" prop="model"> | ||||
|           <el-input v-model="dataForm.model" @change="$emit('update', dataForm)" placeholder="请输入按钮盒模式" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="按钮盒识别码" | ||||
| 					prop="buttonId" | ||||
| 					:rules="[ | ||||
| 						{ | ||||
| 							required: true, | ||||
| 							message: '按钮盒识别码不能为空', | ||||
| 							trigger: 'blur', | ||||
| 						}, | ||||
| 						{ | ||||
| 							type: 'number', | ||||
| 							message: '请输入整数', | ||||
| 							trigger: 'blur', | ||||
| 							transform: (val) => Number.isInteger(Number(val)) && Number(val), | ||||
| 						}, | ||||
| 					]"> | ||||
| 					<el-input | ||||
| 						v-model="dataForm.buttonId" | ||||
| 						@change="$emit('update', dataForm)" | ||||
| 						placeholder="请输入整数" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|  | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="按钮值" prop="keyValue" :rules="[ | ||||
| 						{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
| 						{ | ||||
| 							type: 'number', | ||||
| 							message: '请输入100以内的整数', | ||||
| 							trigger: 'blur', | ||||
| 							transform: (val) => | ||||
| 								Number.isInteger(+val) && | ||||
| 								Number(val) >= 0 && | ||||
| 								Number(val) <= 100 && | ||||
| 								Number(val), | ||||
| 						}, | ||||
| 					]"> | ||||
|         	{ required: true, message: '不能为空', trigger: 'blur' }, | ||||
|         	{ | ||||
|         		type: 'number', | ||||
|         		message: '请输入100以内的整数', | ||||
|         		trigger: 'blur', | ||||
|         		transform: (val) => | ||||
|         			Number.isInteger(+val) && | ||||
|         			Number(val) >= 0 && | ||||
|         			Number(val) <= 100 && | ||||
|         			Number(val), | ||||
|         	}, | ||||
|         ]"> | ||||
|           <el-input v-model="dataForm.keyValue" type="number" min="0" max="100" @change="$emit('update', dataForm)" | ||||
|             placeholder="请输入按钮盒模式" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="检测内容" prop="inspectionDetContent"> | ||||
|           <el-input type="textarea" v-model="dataForm.inspectionDetContent" placeholder="请输入检测内容" | ||||
|             @change="$emit('update', dataForm)"></el-input> | ||||
|         <el-form-item label="检测内容" prop="inspectionDetId"> | ||||
|           <el-select v-model="dataForm.inspectionDetId" placeholder="请选择检测内容" filterable | ||||
|             @change="$emit('update', dataForm)"> | ||||
|             <el-option v-for="opt in inspectionDetList" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
| @@ -108,12 +150,14 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formLoading: true, | ||||
| 			productionLineList: [], | ||||
|       productionLineList: [], | ||||
|       inspectionDetList:[], | ||||
| 			workshopSectionList: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getProductionLineList(); | ||||
|     this.getProductionLineList() | ||||
|     this.getQualityInspectionDetList() | ||||
| 		// this.getWorksectionList(); | ||||
| 		// this.getCode('/base/equipment-group-alarm/getCode').then((code) => { | ||||
| 		// 	this.formLoading = false; | ||||
| @@ -153,7 +197,20 @@ export default { | ||||
| 			} | ||||
| 			this.formLoading = false; | ||||
| 		}, | ||||
|  | ||||
|     async getQualityInspectionDetList() { | ||||
|       this.formLoading = true; | ||||
|       const res = await this.$axios({ | ||||
|         url: '/base/quality-inspection-det/listAll', | ||||
|         method: 'get', | ||||
|       }); | ||||
|       if (res.code == 0) { | ||||
|         this.inspectionDetList = res.data.map((item) => ({ | ||||
|           label: item.content, | ||||
|           value: item.id, | ||||
|         })); | ||||
|       } | ||||
|       this.formLoading = false; | ||||
|     }, | ||||
| 		async getWorksectionList(id) { | ||||
| 			this.formLoading = true; | ||||
| 			const res = await this.$axios({ | ||||
|   | ||||
| @@ -70,7 +70,7 @@ export default { | ||||
| 						label: '产线', | ||||
| 						url: '/base/production-line/listAll', | ||||
| 						prop: 'productionId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '产线不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -80,7 +80,7 @@ export default { | ||||
| 						label: '工段', | ||||
| 						url: '/base/workshop-section/listAll', | ||||
| 						prop: 'sectionId', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -118,13 +118,17 @@ export default { | ||||
| 							}, | ||||
| 						], | ||||
| 						bind: { type: 'number', min: 0, max: 100 }, | ||||
| 					}, | ||||
| 					{ | ||||
| 						textarea: true, | ||||
| 						label: '检测内容', | ||||
| 						prop: 'inspectionDetContent', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
|           }, | ||||
|           { | ||||
|             select: true, | ||||
|             label: '检测内容', | ||||
|             url: '/base/quality-inspection-det/listAll', | ||||
|             prop: 'inspectionDetId', | ||||
|             rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
|             bind: { | ||||
|               filterable: true, | ||||
|             }, | ||||
|           }, | ||||
| 				], | ||||
| 			], | ||||
| 			searchBarFormConfig: [ | ||||
| @@ -218,7 +222,7 @@ export default { | ||||
| 			form: { | ||||
| 				id: null, | ||||
| 				buttonId: null, | ||||
| 				inspectionDetContent: null, | ||||
|         inspectionDetId: null, | ||||
|         productionLineId: null, | ||||
| 				sectionId: null, | ||||
| 				model: null, | ||||
|   | ||||
| @@ -50,7 +50,7 @@ | ||||
| 							label: '检测类型', | ||||
| 							prop: 'typeId', | ||||
| 							url: '/base/quality-inspection-type/listAll', | ||||
| 							rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 							rules: [{ required: true, message: '检测类型不能为空', trigger: 'blur' }], | ||||
| 							bind: { | ||||
| 								filterable: true, | ||||
| 							}, | ||||
| @@ -61,7 +61,7 @@ | ||||
| 							input: true, | ||||
| 							label: '检测内容', | ||||
| 							prop: 'content', | ||||
| 							rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 							rules: [{ required: true, message: '检测内容不能为空', trigger: 'blur' }], | ||||
| 						}, | ||||
| 					], | ||||
| 					[ | ||||
|   | ||||
| @@ -47,7 +47,13 @@ | ||||
| 							input: true, | ||||
| 							label: '检测类型名称', | ||||
| 							prop: 'name', | ||||
| 							rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 							rules: [ | ||||
| 								{ | ||||
| 									required: true, | ||||
| 									message: '检测类型名称不能为空', | ||||
| 									trigger: 'blur', | ||||
| 								}, | ||||
| 							], | ||||
| 							// bind: { | ||||
| 							// 	disabled: true, // some condition, like detail mode... | ||||
| 							// } | ||||
| @@ -174,31 +180,7 @@ export default { | ||||
| 					plain: true, | ||||
| 					color: 'success', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('base:quality-inspection-type:export') | ||||
| 				// 		? 'button' | ||||
| 				// 		: '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| 				// }, | ||||
| 			], | ||||
| 			// 表单配置 | ||||
| 			// formRows: [ | ||||
| 			// 	[ | ||||
| 			// 		{ | ||||
| 			// 			input: true, | ||||
| 			// 			label: '检测类型名称', | ||||
| 			// 			prop: 'name', | ||||
| 			// 			rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 			// 			// bind: { | ||||
| 			// 			// 	disabled: true, // some condition, like detail mode... | ||||
| 			// 			// } | ||||
| 			// 		}, | ||||
| 			// 	], | ||||
| 			// 	[{ input: true, label: '检测类型编码', prop: 'code' }], | ||||
| 			// 	[{ input: true, label: '备注', prop: 'remark' }], | ||||
| 			// ], | ||||
| 			// 是否显示弹出层 | ||||
| 			open: false, | ||||
| 			// 查询参数 | ||||
| @@ -208,11 +190,11 @@ export default { | ||||
| 				name: null, | ||||
| 			}, | ||||
| 			// 表单参数 | ||||
|       form: { | ||||
|         name: null, | ||||
|         code: undefined, | ||||
|         remark:undefined | ||||
|       }, | ||||
| 			form: { | ||||
| 				name: null, | ||||
| 				code: undefined, | ||||
| 				remark: undefined, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	// watch: { | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-06 15:15:30 | ||||
|  * @LastEditTime: 2023-11-06 16:00:24 | ||||
|  * @LastEditTime: 2023-11-20 15:23:59 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -10,18 +10,18 @@ | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="报废原因编码" prop="code"> | ||||
|           <el-input v-model="dataForm.code" placeholder="请输入报废类型编码" /> | ||||
|           <el-input v-model="dataForm.code" placeholder="请输入报废原因编码" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="报废原因" prop="content"> | ||||
|           <el-input v-model="dataForm.content" placeholder="请输入报废类型" /> | ||||
|           <el-input v-model="dataForm.content" placeholder="请输入报废原因" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="报废类型" prop="description"> | ||||
|         <el-form-item label="报废类型" prop="typeId"> | ||||
|           <el-select v-model="dataForm.typeId" placeholder="请选择报废类型"> | ||||
|             <el-option v-for="dict in typeList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
| @@ -68,6 +68,7 @@ export default { | ||||
| 				// materialId: [{ required: true, message: "", trigger: "blur" }], | ||||
|         code: [{ required: true, message: "报废原因编码不能为空", trigger: "blur" }], | ||||
|         content: [{ required: true, message: "报废原因不能为空", trigger: "blur" }], | ||||
|         typeId: [{ required: true, message: "报废类型不能为空", trigger: "change" }], | ||||
|       } | ||||
| 		}; | ||||
| 	}, | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-06 15:15:30 | ||||
|  * @LastEditTime: 2023-11-07 18:56:20 | ||||
|  * @LastEditTime: 2023-11-21 14:11:18 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -23,8 +23,8 @@ | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="数量" prop="sum"> | ||||
|           <el-input v-model="dataForm.sum" placeholder="请输入数量" /> | ||||
|         <el-form-item label="数量" prop="num"> | ||||
|           <el-input v-model="dataForm.num" placeholder="请输入数量" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
| @@ -176,9 +176,9 @@ export default { | ||||
|       getDetList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.workOrderList = res.data.map((item) => { | ||||
|         this.detList = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             name: item.content, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="检测内容" | ||||
| 					prop="inspectionDetId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '检测内容不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.inspectionDetId" | ||||
| 						placeholder="请选择检测内容" | ||||
| @@ -36,7 +36,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="来源" | ||||
| 					prop="source" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '来源不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.source" | ||||
| 						placeholder="请选择来源" | ||||
| @@ -60,7 +60,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="产线" | ||||
| 					prop="productionLineId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '产线不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.productionLineId" | ||||
| 						placeholder="请选择产线" | ||||
| @@ -79,7 +79,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="工段" | ||||
| 					prop="sectionId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '工段不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.sectionId" | ||||
| 						placeholder="请选择工段" | ||||
| @@ -110,7 +110,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="检测时间" | ||||
| 					prop="checkTime" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '检测时间不能为空', trigger: 'blur' }]"> | ||||
| 					<el-date-picker | ||||
| 						v-model="innerDataForm.checkTime" | ||||
| 						type="datetime" | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <!-- 搜索工作栏 --> | ||||
|     <SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" /> | ||||
|  | ||||
|     <!-- 列表 --> | ||||
|     <el-row> | ||||
|       <el-col class="custom-tabs"> | ||||
| @@ -20,6 +18,7 @@ | ||||
|             </div> | ||||
|           </el-tab-pane> | ||||
|           <el-tab-pane :label="'\u3000图形数据\u3000'" name="chart" style="overflow: inherit"> | ||||
|             <SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" /> | ||||
|             <div id="main" style="height: 500px;width: 1000px;"></div> | ||||
|           </el-tab-pane> | ||||
|         </el-tabs> | ||||
| @@ -75,13 +74,13 @@ export default { | ||||
|       }, | ||||
|       activeName: 'table', | ||||
|       searchBarFormConfig: [ | ||||
|         // { | ||||
|         //   type: 'select', | ||||
|         //   label: '工单号', | ||||
|         //   placeholder: '请选择工单号', | ||||
|         //   param: 'workOrderId', | ||||
|         //   selectOptions: [], | ||||
|         // }, | ||||
|         { | ||||
|           type: 'label', | ||||
|           label: '当前检测数据柱状图', | ||||
|           // placeholder: '请选择工单号', | ||||
|           // param: 'workOrderId', | ||||
|           // selectOptions: [], | ||||
|         }, | ||||
| 				// { | ||||
| 				// 	type: 'select', | ||||
| 				// 	label: '产品', | ||||
| @@ -95,40 +94,40 @@ export default { | ||||
| 				// 	placeholder: '请输入检测内容', | ||||
| 				// 	param: 'inspectionDetContent', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间段', | ||||
| 					dateType: 'daterange', // datetimerange | ||||
| 					// format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					format: 'yyyy-MM-dd', | ||||
|           valueFormat: 'timestamp', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始日期', | ||||
| 					endPlaceholder: '结束日期', | ||||
| 					defaultTime: ['00:00:00', '23:59:59'], | ||||
| 					param: 'checkTime', | ||||
| 					// width: 350, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi( | ||||
| 				// 		'base:quality-inspection-record:create' | ||||
| 				// 	) | ||||
| 				// 		? 'button' | ||||
| 				// 		: '', | ||||
| 				// 	btnName: '新增', | ||||
| 				// 	name: 'add', | ||||
| 				// 	plain: true, | ||||
| 				// 	color: 'success', | ||||
| 				// 	type: 'datePicker', | ||||
| 				// 	label: '时间段', | ||||
| 				// 	dateType: 'daterange', // datetimerange | ||||
| 				// 	// format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 				// 	format: 'yyyy-MM-dd', | ||||
|         //   valueFormat: 'timestamp', | ||||
| 				// 	rangeSeparator: '-', | ||||
| 				// 	startPlaceholder: '开始日期', | ||||
| 				// 	endPlaceholder: '结束日期', | ||||
| 				// 	defaultTime: ['00:00:00', '23:59:59'], | ||||
| 				// 	param: 'checkTime', | ||||
| 				// 	// width: 350, | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: 'button', | ||||
| 				// 	btnName: '查询', | ||||
| 				// 	name: 'search', | ||||
| 				// 	color: 'primary', | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: 'separate', | ||||
| 				// }, | ||||
| 				// // { | ||||
| 				// // 	type: this.$auth.hasPermi( | ||||
| 				// // 		'base:quality-inspection-record:create' | ||||
| 				// // 	) | ||||
| 				// // 		? 'button' | ||||
| 				// // 		: '', | ||||
| 				// // 	btnName: '新增', | ||||
| 				// // 	name: 'add', | ||||
| 				// // 	plain: true, | ||||
| 				// // 	color: 'success', | ||||
| 				// // }, | ||||
| 			], | ||||
| 			// tableBtn: [ | ||||
| 			// 	this.$auth.hasPermi('base:quality-inspection-record:update') | ||||
| @@ -316,6 +315,7 @@ export default { | ||||
|               data: arrYAxis, | ||||
|               type: 'bar', | ||||
|               showBackground: true, | ||||
|               barWidth:'20', | ||||
|               backgroundStyle: { | ||||
|                 color: 'rgba(180, 180, 180, 0.2)' | ||||
|               } | ||||
|   | ||||
| @@ -68,7 +68,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '工序名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工序名称不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -77,7 +77,7 @@ export default { | ||||
| 						label: '工段', | ||||
| 						prop: 'sectionId', | ||||
| 						url: '/base/core-workshop-section/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
|   | ||||
| @@ -6,141 +6,81 @@ | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<el-form | ||||
| 		ref="form" | ||||
| 		:model="innerDataForm" | ||||
| 		label-width="100px" | ||||
| 		v-loading="formLoading"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="检测内容" | ||||
| 					prop="inspectionDetId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.inspectionDetId" | ||||
| 						placeholder="请选择检测内容" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						@change="handleInspectionDetChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in inspectionDetList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|   <el-form ref="form" :model="innerDataForm" label-width="100px" v-loading="formLoading"> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="工单号" prop="workOrderId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-select v-model="innerDataForm.workOrderId" placeholder="请选择工单号" filterable clearable> | ||||
|             <el-option v-for="opt in workOrderList" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="检测内容" prop="inspectionDetId" | ||||
|           :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-select v-model="innerDataForm.inspectionDetId" placeholder="请选择检测内容" filterable clearable | ||||
|             @change="handleInspectionDetChange"> | ||||
|             <el-option v-for="opt in inspectionDetList" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="产线" prop="productionLineId" | ||||
|           :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-select v-model="innerDataForm.productionLineId" placeholder="请选择产线" filterable clearable | ||||
|             @change="handleProductlineChange"> | ||||
|             <el-option v-for="opt in productionLineList" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="工段" prop="sectionId" :rules="[{ required: false, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-select v-model="innerDataForm.sectionId" placeholder="请选择工段" clearable filterable | ||||
|             @change="$emit('update', innerDataForm)"> | ||||
|             <el-option v-for="opt in sectionList" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="检测人员" prop="checkPerson"> | ||||
|           <el-input v-model="innerDataForm.checkPerson" clearable @change="$emit('update', innerDataForm)" | ||||
|             placeholder="请输入检测人员" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="来源" | ||||
| 					prop="source" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.source" | ||||
| 						placeholder="请选择来源" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						@change="$emit('update', innerDataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in [ | ||||
| 								{ label: '手动', value: 1 }, | ||||
| 								{ label: '自动', value: 2 }, | ||||
| 							]" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="产线" | ||||
| 					prop="productionLineId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.productionLineId" | ||||
| 						placeholder="请选择产线" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						@change="handleProductlineChange"> | ||||
| 						<el-option | ||||
| 							v-for="opt in productionLineList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="工段" | ||||
| 					prop="sectionId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.sectionId" | ||||
| 						placeholder="请选择工段" | ||||
| 						clearable | ||||
| 						filterable | ||||
| 						@change="$emit('update', innerDataForm)"> | ||||
| 						<el-option | ||||
| 							v-for="opt in sectionList" | ||||
| 							:key="opt.value" | ||||
| 							:label="opt.label" | ||||
| 							:value="opt.value" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="检测人员" prop="checkPerson"> | ||||
| 					<el-input | ||||
| 						v-model="innerDataForm.checkPerson" | ||||
| 						clearable | ||||
| 						@change="$emit('update', innerDataForm)" | ||||
| 						placeholder="请输入检测人员" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item | ||||
| 					label="检测时间" | ||||
| 					prop="checkTime" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					<el-date-picker | ||||
| 						v-model="innerDataForm.checkTime" | ||||
| 						type="datetime" | ||||
| 						placeholder="请选择检测时间" | ||||
| 						value-format="timestamp" | ||||
| 						@change="$emit('update', innerDataForm)"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
|  | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col> | ||||
| 				<el-form-item label="描述" prop="explainText"> | ||||
| 					<el-input | ||||
| 						v-model="innerDataForm.explainText" | ||||
| 						placeholder="请输入描述信息" | ||||
| 						@change="$emit('update', innerDataForm)" | ||||
| 						type="textarea"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input | ||||
| 						v-model="innerDataForm.remark" | ||||
| 						@change="$emit('update', innerDataForm)" | ||||
| 						placeholder="请输入备注"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="检测时间" prop="checkTime" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-date-picker v-model="innerDataForm.checkTime" type="datetime" placeholder="请选择检测时间" | ||||
|             value-format="timestamp" @change="$emit('update', innerDataForm)"></el-date-picker> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="来源" prop="source" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
|           <el-select v-model="innerDataForm.source" placeholder="请选择来源" filterable clearable | ||||
|             @change="$emit('update', innerDataForm)"> | ||||
|             <el-option v-for="opt in [ | ||||
|             	{ label: '手动', value: 1 }, | ||||
|             	{ label: '自动', value: 2 }, | ||||
|             ]" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col> | ||||
|         <el-form-item label="备注" prop="remark"> | ||||
|           <el-input v-model="innerDataForm.remark" @change="$emit('update', innerDataForm)" placeholder="请输入备注"> | ||||
|           </el-input> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|   </el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| @@ -163,13 +103,14 @@ export default { | ||||
| 			formLoading: true, | ||||
| 			inspectionDetList: [], | ||||
| 			productionLineList: [], | ||||
| 			sectionList: [], | ||||
|       sectionList: [], | ||||
|       workOrderList:[], | ||||
| 			innerDataForm: {}, | ||||
| 			cacheInspectionDetList: null, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		Promise.all([this.getProductLineList(), this.getInspectionDetList()]).then( | ||||
|     Promise.all([this.getProductLineList(), this.getInspectionDetList(), this.getWorkOrderList()]).then( | ||||
| 			() => { | ||||
| 				this.formLoading = false; | ||||
| 			} | ||||
| @@ -231,6 +172,14 @@ export default { | ||||
| 			})); | ||||
| 		}, | ||||
|  | ||||
|     async getWorkOrderList() { | ||||
|       const response = await this.$axios('base/core-work-order/listbyfilter'); | ||||
|       this.workOrderList = response.data.map((item) => ({ | ||||
|         label: item.name, | ||||
|         value: item.id, | ||||
|       })); | ||||
|     }, | ||||
|  | ||||
| 		// 获取检测内容列表 | ||||
| 		async getInspectionDetList() { | ||||
| 			const response = await this.$axios( | ||||
|   | ||||
| @@ -74,7 +74,7 @@ export default { | ||||
| 						url: '/base/quality-inspection-det/listAll', | ||||
| 						prop: 'inspectionDetId', | ||||
| 						labelKey: 'content', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '检测内容不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -102,7 +102,7 @@ export default { | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '产线不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| @@ -113,7 +113,7 @@ export default { | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: false, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -126,7 +126,7 @@ export default { | ||||
| 						datetime: true, | ||||
| 						label: '检测时间', | ||||
| 						prop: 'checkTime', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [{ required: true, message: '检测时间不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 							'value-format': 'timestamp', | ||||
| @@ -135,31 +135,25 @@ export default { | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 				// [ | ||||
| 				// 	{ | ||||
| 				// 		textarea: true, | ||||
| 				// 		label: '检测内容', | ||||
| 				// 		prop: 'inspectionDetContent', | ||||
| 				// 		value: '', | ||||
| 				// 		rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 				// 	}, | ||||
| 				// ], | ||||
| 				[{ textarea: true, label: '描述', prop: 'explainText' }], | ||||
| 				[{ input: true, label: '备注', prop: 'remark' }], | ||||
| 			], | ||||
| 			searchBarFormConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '产线', | ||||
| 					placeholder: '请选择产线', | ||||
| 					param: 'productionLineId', | ||||
| 					selectOptions: [], | ||||
| 					label: '工单号', | ||||
|           placeholder: '请选择工单号', | ||||
| 					param: 'workOrderId', | ||||
|           selectOptions: [], | ||||
|           filterable:true | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'input', | ||||
|           type: 'select', | ||||
| 					label: '检测内容', | ||||
| 					placeholder: '请输入检测内容', | ||||
| 					param: 'inspectionDetContent', | ||||
|           placeholder: '请输入检测内容', | ||||
|           selectOptions: [], | ||||
|           param: 'inspectionDetContent', | ||||
|           filterable: true | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| @@ -217,7 +211,12 @@ export default { | ||||
| 					fixed: true, | ||||
| 					width: 180, | ||||
| 					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				}, | ||||
|         }, | ||||
|         { | ||||
|           // width: 128, | ||||
|           prop: 'workOrderName', | ||||
|           label: '工单Id', | ||||
|         }, | ||||
| 				{ | ||||
| 					// width: 128, | ||||
| 					prop: 'inspectionDetContent', | ||||
| @@ -255,7 +254,8 @@ export default { | ||||
| 				inspectionDetContent: undefined, | ||||
| 				productionLineId: undefined, | ||||
| 				sectionId: undefined, | ||||
| 				checkPerson: undefined, | ||||
|         checkPerson: undefined, | ||||
|         workOrderId:undefined, | ||||
| 				checkTime: undefined, | ||||
| 				source: undefined, | ||||
| 				explainText: undefined, | ||||
| @@ -264,16 +264,17 @@ export default { | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 10, | ||||
|         pageSize: 10, | ||||
|         workOrderId:null, | ||||
| 				inspectionDetContent: null, | ||||
| 				checkTime: [], | ||||
| 				productionLineId: null, | ||||
| 				// productionLineId: null, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.getList(); | ||||
| 		// this.getProductLineList(); | ||||
| 		this.getProductLineList() | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		form: { | ||||
| @@ -309,7 +310,7 @@ export default { | ||||
| 	methods: { | ||||
| 		/** 获取搜索栏的产线列表 */ | ||||
| 		getProductLineList() { | ||||
| 			this.$axios('/base/production-line/listAll').then((response) => { | ||||
|       this.$axios('/base/core-work-order/listbyfilter').then((response) => { | ||||
| 				this.searchBarFormConfig[0].selectOptions = response.data.map( | ||||
| 					(item) => { | ||||
| 						return { | ||||
| @@ -318,7 +319,17 @@ export default { | ||||
| 						}; | ||||
| 					} | ||||
| 				); | ||||
| 			}); | ||||
|       }) | ||||
|       this.$axios('/base/quality-inspection-det/listAll').then((response) => { | ||||
|         this.searchBarFormConfig[1].selectOptions = response.data.map( | ||||
|           (item) => { | ||||
|             return { | ||||
|               name: item.content, | ||||
|               id: item.content, | ||||
|             }; | ||||
|           } | ||||
|         ); | ||||
|       }); | ||||
| 		}, | ||||
| 		/** 查询列表 */ | ||||
| 		getList() { | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="检测内容" | ||||
| 					prop="inspectionDetId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '检测内容不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.inspectionDetId" | ||||
| 						placeholder="请选择检测内容" | ||||
| @@ -36,7 +36,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="来源" | ||||
| 					prop="source" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '来源不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.source" | ||||
| 						placeholder="请选择来源" | ||||
| @@ -60,7 +60,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="产线" | ||||
| 					prop="productionLineId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '产线不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.productionLineId" | ||||
| 						placeholder="请选择产线" | ||||
| @@ -79,7 +79,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="工段" | ||||
| 					prop="sectionId" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '工段不能为空', trigger: 'blur' }]"> | ||||
| 					<el-select | ||||
| 						v-model="innerDataForm.sectionId" | ||||
| 						placeholder="请选择工段" | ||||
| @@ -110,7 +110,7 @@ | ||||
| 				<el-form-item | ||||
| 					label="检测时间" | ||||
| 					prop="checkTime" | ||||
| 					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]"> | ||||
| 					:rules="[{ required: true, message: '检测时间不能为空', trigger: 'blur' }]"> | ||||
| 					<el-date-picker | ||||
| 						v-model="innerDataForm.checkTime" | ||||
| 						type="datetime" | ||||
|   | ||||
| @@ -206,6 +206,16 @@ export default { | ||||
|   computed: { | ||||
|     tableProps() { | ||||
|       return [ | ||||
|         { | ||||
|           // width: 128, | ||||
|           prop: 'workOrderId', | ||||
|           label: '工单号', | ||||
|         }, | ||||
|         { | ||||
|           // width: 128, | ||||
|           prop: 'productionName', | ||||
|           label: '产品', | ||||
|         }, | ||||
|         { | ||||
|           // width: 160, | ||||
|           prop: 'inspectionContent', | ||||
| @@ -214,8 +224,8 @@ export default { | ||||
|         ...this.dynamicProps, | ||||
|         { | ||||
|           // width: 128, | ||||
|           prop: 'sumInput', | ||||
|           label: '检测类型总数', | ||||
|           prop: 'sumScrap', | ||||
|           label: '未检测总数', | ||||
|         }, | ||||
|         { | ||||
|           // width: 128, | ||||
| @@ -342,6 +352,8 @@ export default { | ||||
|           inspectionContent: item.inspectionContent, | ||||
|           ...keyValuePairs, | ||||
|           sumInput: item.sumInput, | ||||
|           productionName: item.productionName, | ||||
|           workOrderId: item.workOrderId, | ||||
|           scrapRatio: item.scrapRatio, | ||||
|         }; | ||||
|       }); | ||||
|   | ||||
		Verwijs in nieuw issue
	
	Block a user