质量管理
This commit is contained in:
		
							
								
								
									
										209
									
								
								src/views/quality/base/qualityScrapLog/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								src/views/quality/base/qualityScrapLog/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-06 15:15:30 | ||||
|  * @LastEditTime: 2023-11-07 18:56:20 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
|   <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="auto"> | ||||
|     <el-row :gutter="24"> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="工单号" prop="workOrderId"> | ||||
|           <el-select v-model="dataForm.workOrderId" placeholder="请选择工单号"> | ||||
|             <el-option v-for="dict in workOrderList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="班组" prop="teamId"> | ||||
|           <el-select v-model="dataForm.teamId" placeholder="请选择班组"> | ||||
|             <el-option v-for="dict in teamList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
|         </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> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="产线" prop="lineId"> | ||||
|           <el-select v-model="dataForm.lineId" placeholder="请选择产线"> | ||||
|             <el-option v-for="dict in lineList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="报废原因" prop="detId"> | ||||
|           <el-select v-model="dataForm.detId" placeholder="请选择报废原因"> | ||||
|             <el-option v-for="dict in detList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="报废时间" prop="logTime"> | ||||
|           <el-date-picker v-model="dataForm.logTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" | ||||
|             placeholder="选择日期"> | ||||
|           </el-date-picker> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="来源" prop="source"> | ||||
|           <el-select v-model="dataForm.source" placeholder="请选择来源"> | ||||
|             <el-option v-for="dict in sourceList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="描述" prop="description"> | ||||
|           <el-input v-model="dataForm.description" placeholder="请输入描述" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
|       <el-col :span="8"> | ||||
|         <el-form-item label="备注" prop="remark"> | ||||
|           <el-input v-model="dataForm.remark" placeholder="备注" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|   </el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '../../../core/mixins/basic-add'; | ||||
| import { | ||||
|   createQualityScrapLog, updateQualityScrapLog, getQualityScrapLog, getWorkOrderList, | ||||
|   getTeamList, getDetList,getLineList } from "@/api/base/qualityScrapLog"; | ||||
| import { getList,} from "@/api/base/qualityScrapType"; | ||||
| // import { getMaterialList } from "@/api/base/material"; | ||||
| import moment from 'moment'; | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 			  isGetCode: false, | ||||
|         // codeURL: getCode, | ||||
|         createURL: createQualityScrapLog, | ||||
|         updateURL: updateQualityScrapLog, | ||||
|         infoURL: getQualityScrapLog, | ||||
|       }, | ||||
|       lineList:[], | ||||
|       typeList: [], | ||||
|       workOrderList: [], | ||||
|       detList:[], | ||||
|       teamList: [], | ||||
|       sourceList: [ | ||||
|         { | ||||
|           id: 1, | ||||
|           name: '手动', | ||||
|         }, | ||||
|         { | ||||
|           id: 2, | ||||
|           name: '自动', | ||||
|         } | ||||
|       ], | ||||
| 			dataForm: { | ||||
|         id: undefined, | ||||
|         logTime: undefined, | ||||
|         source:1, | ||||
|         detId: undefined, | ||||
|         workOrderId: null, | ||||
|         teamId: undefined, | ||||
|         num: undefined, | ||||
|         lineId:undefined, | ||||
|         description:undefined, | ||||
|         // description: undefined, | ||||
|         remark: undefined, | ||||
| 			}, | ||||
| 			// materialList: [], | ||||
| 			dataRule: { | ||||
| 				// materialId: [{ required: true, message: "", trigger: "blur" }], | ||||
|         workOrderId: [{ required: true, message: "工单号不能为空", trigger: "change" }], | ||||
|         num: [{ required: true, message: "数量不能为空", trigger: "blur" }], | ||||
|         detId: [{ required: true, message: "报废原因不能为空", trigger: "change" }], | ||||
|  | ||||
|         logTime: [{ required: true, message: "报废时间不能为空", trigger: "change" }], | ||||
|       } | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getDict() | ||||
|     console.log('我看看', this.dataForm) | ||||
|     this.getCurrentTime() | ||||
| 	}, | ||||
|   methods: { | ||||
|     getCurrentTime() { | ||||
|       // new Date().Format("yyyy-MM-dd HH:mm:ss") | ||||
|       this.dataForm.logTime = new Date() | ||||
|       // this.dataForm.logTime = year + "-" + month + "-" + day; | ||||
|       console.log(this.dataForm.logTime); | ||||
|     }, | ||||
| 		async getDict() { | ||||
| 			// 物料列表 | ||||
|       const res = await getList() | ||||
|       this.typeList = res.data | ||||
|       getWorkOrderList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.workOrderList = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|       getLineList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.lineList = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|       getDetList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.workOrderList = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|       getTeamList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.teamList = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
| 		}, | ||||
| 		// setMaterialCode() { | ||||
| 		// 	const chooseM = this.materialList.filter(item => { | ||||
| 		// 		return item.id === this.dataForm.materialId | ||||
| 		// 	}) | ||||
| 		// 	this.dataForm.materialCode = chooseM[0].code | ||||
| 		// } | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										220
									
								
								src/views/quality/base/qualityScrapLog/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								src/views/quality/base/qualityScrapLog/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
| 			@headBtnClick="buttonClick" /> | ||||
| 		<base-table | ||||
| 			v-loading="dataListLoading" | ||||
| 			:table-props="tableProps" | ||||
| 			:page="listQuery.pageNo" | ||||
| 			:limit="listQuery.pageSize" | ||||
| 			:table-data="tableData"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="120" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:limit.sync="listQuery.pageSize" | ||||
| 			:page.sync="listQuery.pageNo" | ||||
| 			:total="listQuery.total" | ||||
| 			@pagination="getDataList" /> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="addOrUpdateVisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="50%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '../../../core/mixins/basic-page'; | ||||
| import { parseTime } from '../../../core/mixins/code-filter'; | ||||
| import { | ||||
|   getQualityScrapLogPage, | ||||
|   deleteQualityScrapLog, | ||||
|   getWorkOrderList, | ||||
|   getTeamList | ||||
| } from '@/api/base/qualityScrapLog'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '添加时间', | ||||
| 		filter: parseTime | ||||
|   }, | ||||
|   { | ||||
|     prop: 'workOrderName', | ||||
|     label: '工单' | ||||
|   }, | ||||
|   { | ||||
|     prop: 'teamId', | ||||
|     label: '班组' | ||||
|   }, | ||||
| 	{ | ||||
|     prop: 'detContent', | ||||
|     label: '报废原因' | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'logTime', | ||||
|     label: '报废时间', | ||||
|     filter: parseTime | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'num', | ||||
| 		label: '数量' | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
|         getDataListURL: getQualityScrapLogPage, | ||||
|         deleteURL: deleteQualityScrapLog, | ||||
| 				// exportURL: exportFactoryExcel, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableBtn: [ | ||||
|         this.$auth.hasPermi(`base:quality-scrap-log:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
|           : undefined, | ||||
|         this.$auth.hasPermi(`base:quality-scrap-log:detail`) | ||||
|           ? { | ||||
|             type: 'detail', | ||||
|             btnName: '详情', | ||||
|           } | ||||
|           : undefined, | ||||
|         this.$auth.hasPermi(`base:quality-scrap-log:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v)=>v), | ||||
| 			tableData: [], | ||||
| 			formConfig: [ | ||||
|         { | ||||
|           type: 'select', | ||||
|           label: '工单', | ||||
|           selectOptions: [], | ||||
|           labelField: 'name', | ||||
|           valueField: 'id', | ||||
|           param: 'workOrderId', | ||||
|         }, | ||||
|         { | ||||
|           type: 'select', | ||||
|           label: '班组', | ||||
|           selectOptions: [], | ||||
|           labelField: 'name', | ||||
|           valueField: 'id', | ||||
|           param: 'teamId', | ||||
|         }, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('base:quality-scrap-det:create') ? 'button' : '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true | ||||
| 				}, | ||||
| 			], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
|   created() { | ||||
|     this.getDict() | ||||
|   }, | ||||
| 	methods: { | ||||
|     // 获取数据列表 | ||||
|     getDict() { | ||||
|       getWorkOrderList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.formConfig[0].selectOptions = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|       getTeamList().then((res) => { | ||||
|         console.log(res); | ||||
|         // console.log(response); | ||||
|         this.formConfig[1].selectOptions = res.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         // console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|     }, | ||||
|     getDataList() { | ||||
|       this.dataListLoading = true; | ||||
|       this.urlOptions.getDataListURL(this.listQuery).then(response => { | ||||
|         this.tableData = response.data.list; | ||||
|         this.listQuery.total = response.data.total; | ||||
|         this.dataListLoading = false; | ||||
|       }); | ||||
|     }, | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.name = val.name ? val.name : undefined; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'reset': | ||||
| 					this.$refs.searchBarForm.resetForm(); | ||||
| 					this.listQuery = { | ||||
| 						pageSize: 10, | ||||
| 						pageNo: 1, | ||||
| 						total: 1, | ||||
| 					}; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrEditTitle = '新增'; | ||||
| 					this.addOrUpdateVisible = true; | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user