From aefd598cc1ced37ff2cfed2b529dbf10bea7554c Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期四, 26 十月 2023 11:31:55 +0800
Subject: [PATCH] 模具尺寸检查完成
---
web/src/views/QualityManage/DieDetection.vue | 58 +++++
web/src/views/QualityManage/components/ThreedCheck.vue | 3
web/src/views/QualityManage/components/PatternCheck.vue | 471 +++++++++++++++++++++++++++++++++++++++++++++++
web/src/api/index.js | 4
web/src/api/modules/quality.js | 34 +++
5 files changed, 567 insertions(+), 3 deletions(-)
diff --git a/web/src/api/index.js b/web/src/api/index.js
index d731477..53df892 100644
--- a/web/src/api/index.js
+++ b/web/src/api/index.js
@@ -22,6 +22,7 @@
import Analyse from './modules/analyse'; // 数据分析模块
import Safety from './modules/safety'; // 安全管理模块
import Scan from './modules/scan'; // 扫码跳转到对应页面
+import Quality from './modules/quality'; // 质量管理界面
export default {
System,
@@ -44,5 +45,6 @@
Report,
Analyse,
Safety,
- Scan
+ Scan,
+ Quality
}
diff --git a/web/src/api/modules/quality.js b/web/src/api/modules/quality.js
new file mode 100644
index 0000000..a1a6b20
--- /dev/null
+++ b/web/src/api/modules/quality.js
@@ -0,0 +1,34 @@
+/**
+ * 质量管理
+ */
+ import axios from '../request';
+ export default{
+ /**
+ * 模具质量检测
+ */
+
+ // 获取模具编号
+ getMouldNumberLists: params =>
+ axios.get('/engineering/moldQuality/getMoldNum', {params}),
+ // 获取模具型号
+ getMuuldCodeLists: params =>
+ axios.post('/engineering/moldQuality/getMoldCode', params),
+ //通过项目,模具编号,型号获取尺寸等信息
+ getProjectThroughSizes: params =>
+ axios.post('/engineering/moldQuality/getMoldByProIdAndModNumAndModCode', params),
+ //查询质量尺寸检查列表
+ searchQulityLists: params =>
+ axios.post('/engineering/moldQuality/findAll', params),
+ //添加质量尺寸
+ addQulityInfo: params =>
+ axios.post('/engineering/moldQuality/insert', params),
+ //修改质量尺寸
+ updateQulityInfo: params =>
+ axios.post('/engineering/moldQuality/update', params),
+ //质量尺寸详情
+ detailsQulityInfo: params =>
+ axios.get('/engineering/moldQuality/findOneById', {params}),
+ //删除质量尺寸
+ deleteQulityInfo: params =>
+ axios.get('/engineering/moldQuality/delete', {params}),
+ }
\ No newline at end of file
diff --git a/web/src/views/QualityManage/DieDetection.vue b/web/src/views/QualityManage/DieDetection.vue
index 6738fe3..e5df74b 100644
--- a/web/src/views/QualityManage/DieDetection.vue
+++ b/web/src/views/QualityManage/DieDetection.vue
@@ -1,3 +1,57 @@
<template>
- <div>模具质量检测</div>
-</template>
\ No newline at end of file
+ <div class="main">
+ <div class="main_tabs">
+ <el-tabs v-model="activeName" @tab-click="handleClick">
+ <el-tab-pane label="模具尺寸检查" name="first">
+ <pattern-check ref="pattern"></pattern-check>
+ </el-tab-pane>
+ <el-tab-pane label="三维检查" name="second">
+ <threed-check ref="threed"></threed-check>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+</template>
+<script>
+import PatternCheck from './components/PatternCheck.vue'//模具尺寸检查
+import ThreedCheck from './components/ThreedCheck.vue'//三维检查
+export default {
+ components:{
+ PatternCheck,
+ ThreedCheck,
+ },
+ data(){
+ return{
+ activeName:'first'
+ }
+ },
+ mounted(){
+ this.$refs.pattern.searchButtonInfo(true);
+ this.$refs.pattern.getAllPersons();
+ },
+ methods:{
+ //切换界面
+ handleClick(tab){
+ switch(tab.name){
+ case 'second':
+ this.$refs.threed.searchButtonInfo(true);
+ this.$refs.threed.getAllPersons();
+ break;
+ default:
+ this.$refs.pattern.searchButtonInfo(true);
+ this.$refs.pattern.getAllPersons();
+ }
+ },
+ }
+}
+</script>
+<style scoped lang="scss">
+@import'@/style/layout-main.scss';
+/deep/ .el-tabs__content{
+ position: static;
+}
+
+/deep/.main {
+ background: none;
+}
+</style>
\ No newline at end of file
diff --git a/web/src/views/QualityManage/components/PatternCheck.vue b/web/src/views/QualityManage/components/PatternCheck.vue
new file mode 100644
index 0000000..f8a6fc8
--- /dev/null
+++ b/web/src/views/QualityManage/components/PatternCheck.vue
@@ -0,0 +1,471 @@
+<template>
+ <div class="main tabs_main" style="height:89%">
+ <div class="main_header">
+ <div class="header_item">
+ <span class="header_label">项目名称:</span>
+ <el-select v-model="search.proId" placeholder="请选择项目名称" clearable @change="getNumberList">
+ <el-option
+ v-for="item in optionsProjects"
+ :key="item.proId"
+ :label="item.proName"
+ :value="item.proId">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <span class="header_label">模具编号:</span>
+ <el-select v-model="search.mouldNum" placeholder="请选择模具编号" clearable filterable>
+ <el-option
+ v-for="(item,index) in optionsMoulds"
+ :key="index"
+ :label="item.mouldNum"
+ :value="item.mouldNum">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <span class="header_label">模具型号:</span>
+ <el-select v-model="search.mouldCode" placeholder="请选择模具型号" clearable>
+ <el-option
+ v-for="(item,index) in optionsCodes"
+ :key="index"
+ :label="item.mouldCode"
+ :value="item.mouldCode">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
+ <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="insertProp">新增</el-button>
+ </div>
+ </div>
+ <div class="main_content">
+ <el-table
+ v-loading="loading"
+ :data="dataList"
+ height="100%">
+ <el-table-column align="center" label="序号" width="60">
+ <template #default="scope">
+ <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="proName" label="项目名称" align="center" ></el-table-column>
+ <el-table-column prop="mouldNum" label="模具编号" align="center" ></el-table-column>
+ <el-table-column prop="mouldCode" label="模具型号" align="center" ></el-table-column>
+ <el-table-column prop="blockNum" label="块号" align="center" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="size" label="尺寸" align="center" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="turn" label="转向" align="center"></el-table-column>
+ <el-table-column prop="groutingHole" label="注浆孔" align="center"></el-table-column>
+ <el-table-column prop="content" label="检测内容" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column prop="checkDate" label="检查表日期" align="center"></el-table-column>
+ <el-table-column prop="checkUnit" label="检测单位" align="center"></el-table-column>
+ <el-table-column label="操作" align="center" width="150">
+ <template #default="{ row }">
+ <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button>
+ <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div class="main_footer">
+ <el-pagination
+ background
+ @current-change="changePageNum"
+ @size-change="changePageSize"
+ :current-page="pageNum"
+ :page-sizes="[10, 20, 50, 100]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ <el-dialog
+ class="prop_dialog"
+ :title="asyncTitle === true ? '新增' :'修改'"
+ :close-on-click-modal="false"
+ :visible.sync="asyncVisible"
+ width="45%">
+ <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
+ <el-form-item label="项目名称" prop="proId">
+ <el-select v-model="ruleForm.proId" placeholder="请选择项目名称" @change="getNumberList">
+ <el-option
+ v-for="item in optionsProjects"
+ :key="item.proId"
+ :label="item.proName"
+ :value="item.proId">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="模具编号" prop="mouldNum">
+ <el-select v-model="ruleForm.mouldNum" placeholder="请选择模具编号" clearable @change="getSizeLists(1)">
+ <el-option
+ v-for="(item,index) in optionsMoulds"
+ :key="index"
+ :label="item.mouldNum"
+ :value="item.mouldNum">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="模具型号" prop="mouldCode">
+ <el-select v-model="ruleForm.mouldCode" placeholder="请选择模具型号" clearable @change="getSizeLists(2)">
+ <el-option
+ v-for="(item,index) in optionsCodes"
+ :key="index"
+ :label="item.mouldCode"
+ :value="item.mouldCode">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="块号" prop="blockNum">
+ <el-input v-model="ruleForm.blockNum" :size="size" clearable placeholder="请输入块号" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="尺寸:" prop="size">
+ <el-input v-model="ruleForm.size" :size="size" clearable placeholder="请输入尺寸" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="转向:" prop="turn">
+ <el-input v-model="ruleForm.turn" :size="size" clearable placeholder="请输入转向" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="注浆孔:" prop="groutingHole">
+ <el-input v-model="ruleForm.groutingHole" :size="size" clearable placeholder="请输入注浆孔" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="检测内容:" prop="content">
+ <el-input v-model="ruleForm.content" :size="size" type="textarea" :rows="3" clearable placeholder="请输入检测内容"></el-input>
+ </el-form-item>
+ <el-form-item label="上传检查表:" prop="files">
+ <upload-file :file-list.sync="ruleForm.files">
+ <template #info>
+ <span>点击上传文件,支持xls、xlsx、ppt、doc、docx、pdf格式</span>
+ </template>
+ </upload-file>
+ </el-form-item>
+ <el-form-item label="检查表日期:" prop="checkDate">
+ <el-date-picker
+ v-model="ruleForm.checkDate"
+ type="date"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="请选择日期">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="检测单位:" prop="checkUnit">
+ <el-input v-model="ruleForm.checkUnit" :size="size" clearable placeholder="请输入检测单位"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <el-button @click="asyncVisible = false">取 消</el-button>
+ <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { buttonPinia } from '../../../pinia/index';
+import UploadFile from '../../../components/uploadFile';
+import { throttle, changeSize } from '../../../plugins/public'; // 导入节流、动态切换组件尺寸方法
+ export default {
+ components:{
+ UploadFile
+ },
+ data() {
+ return {
+ size: changeSize(), // 组件尺寸
+ pageNum: 1,
+ pageSize: 10,
+ search:{},//查询条件
+ total: 0,
+ loading: false,
+ dataList: [], //模具尺寸检查信息列表
+ asyncTitle: true, // 对话框title 新增:true 修改:false
+ asyncVisible: false, // 添加 修改对话框
+ ruleForm: {
+ files:[]
+ }, // 按钮表单
+ rules: {
+ files: [{
+ required: true,
+ message: '请选择上传文件',
+ trigger: ['blur','change']
+ }],
+ proId: [{
+ required: true,
+ message: '请选择项目名称',
+ trigger: 'change'
+ }],
+ mouldNum: [{
+ required: true,
+ message: '请选择模具编号',
+ trigger: ['blur','change']
+ }],
+ mouldCode: [{
+ required: true,
+ message: '请选择模具型号',
+ trigger: ['change','blur']
+ }],
+ checkDate: [{
+ required: true,
+ message: '请选择检查表日期',
+ trigger: 'change'
+ }],
+ content: [{
+ required: true,
+ message: '请输入检测内容',
+ trigger: 'blur'
+ }],
+ checkUnit: [{
+ required: true,
+ message: '请输入检测单位',
+ trigger: 'blur'
+ }],
+ },
+ optionsMoulds:[],//模具编号
+ optionsCodes:[],//模具型号
+ optionsProjects:[],//所有项目
+ }
+ },
+ watch: {
+ asyncVisible(bol) {
+ if(!bol) {
+ this.ruleForm = {};
+ this.$refs.ruleForm.resetFields();
+ }else{
+ this.$set(this.ruleForm,'files',[])
+ }
+ }
+ },
+ mounted() {
+ const that = this;
+ // 根据窗口大小动态修改组件尺寸
+ window.onresize = () => {
+ that.size = changeSize();
+ }
+ },
+ methods: {
+ //获得所有项目
+ getAllPersons(){
+ let params = {
+ pageNum: 1,
+ pageSize: 100000000
+ }
+ this.$api.Engineer.searchProjects(params).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.optionsProjects = res.data.list
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ //根据项目获取编号,型号
+ getNumberList(val){
+ if(this.asyncVisible===false&&this.search.proId ===''){
+ this.$set(this.search,'mouldNum','')
+ this.$set(this.search,'mouldCode','')
+ }
+ if(this.asyncTitle){
+ this.$set(this.ruleForm,'mouldNum','')
+ this.$set(this.ruleForm,'mouldCode','')
+ this.$set(this.ruleForm,'blockNum','')
+ this.$set(this.ruleForm,'size','')
+ this.$set(this.ruleForm,'turn','')
+ this.$set(this.ruleForm,'groutingHole','')
+ }
+ this.$api.Quality.getMouldNumberLists({proId:val}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.optionsMoulds = res.data
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ this.$api.Quality.getMuuldCodeLists({proId:val}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.optionsCodes = res.data
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ //获取尺寸等信息
+ getSizeLists(val){
+ let params
+ if(this.asyncTitle){
+ params={
+ proId:this.ruleForm.proId,
+ mouldNum:this.ruleForm.mouldNum,
+ mouldCode:this.ruleForm.mouldCode
+ }
+ }else{
+ params={
+ proId:this.ruleForm.proId,
+ mouldNum:this.ruleForm.mouldNum,
+ mouldCode:this.ruleForm.mouldCode
+ }
+ }
+ if(val===1){
+ this.$set(this.ruleForm,'mouldCode','')
+ let obj = {proId:this.ruleForm.proId,mouldNum:this.ruleForm.mouldNum}
+ this.$api.Quality.getMuuldCodeLists(obj).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.optionsCodes = res.data
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ }else{
+ this.$api.Quality.getProjectThroughSizes(params).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.$set(this.ruleForm,'blockNum',res.data.mouldTypeName)
+ this.$set(this.ruleForm,'size',res.data.mouldSizeName)
+ this.$set(this.ruleForm,'turn',res.data.mouldTurnName)
+ this.$set(this.ruleForm,'groutingHole',res.data.groutingHolesName)
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ }
+ },
+ // 查询按钮列表信息
+ searchButtonInfo(bol) {
+ if(bol) {
+ this.pageNum = 1;
+ }
+ let params = Object.assign({},this.search,{
+ pageNum: this.pageNum,
+ pageSize: this.pageSize
+ })
+ this.loading = true;
+ this.$api.Quality.searchQulityLists(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.total = res.data.total;
+ this.dataList = res.data.list;
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ this.loading = false;
+ })
+ },
+ // 新增按钮信息
+ insertProp() {
+ this.asyncTitle = true;
+ this.asyncVisible = true;
+ },
+ // 修改按钮信息
+ updateProp(row) {
+ this.asyncTitle = false;
+ this.asyncVisible = true;
+ this.getNumberList(row.proId)
+ this.$api.Quality.detailsQulityInfo({id: row.id}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.ruleForm = res.data
+ this.$set(this.ruleForm, 'files', res.data.moldQualityFileEntities.map((item, index) => {
+ const type = item.fileName.split('.');
+ return {
+ id: index + 1,
+ type: type[type.length - 1],
+ name: item.fileName,
+ url: item.fileUrl
+ }
+ }))
+ res.data.tbigPaths.filter(iten=>iten.fileType ===1).map(item=>{
+ this.imageList.push({
+ id: this.imageList.length + 1,
+ url:`https://pipe.thhy-tj.com/${item.filePath}`,
+ name:item.filePathName,
+ nameImg:item.filePathName
+ })
+ })
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ // 删除按钮信息
+ deleteInfo(row) {
+ this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ this.$api.Quality.deleteQulityInfo({id: row.id})
+ .then(res => {
+ if(res.statusMsg === 'ok') {
+ this.searchButtonInfo(true);
+ this.$message.success("删除成功!");
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ })
+ .catch(() => {
+ this.$message.warning("您已取消");
+ })
+ },
+ // 提交添加按钮信息
+ submitInsert: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ params.moldQualityFileEntities = params.files&¶ms.files.map(item => {
+ return {
+ fileName:item.name,
+ fileUrl:item.url
+ }
+ });
+ delete params.files
+ this.$api.Quality.addQulityInfo(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('添加成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 提交修改按钮信息
+ submitUpdate: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ params.moldQualityFileEntities = params.files&¶ms.files.map(item => {
+ return {
+ fileName:item.name,
+ fileUrl:item.url
+ }
+ });
+ delete params.files
+ this.$api.Quality.updateQulityInfo(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('修改成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 判断按钮权限信息
+ showButton(str) {
+ const pinia = buttonPinia();
+ return pinia.$state.buttonInfo.includes(str);
+ },
+ // 切换页数
+ changePageNum(page) {
+ this.pageNum = page;
+ this.searchButtonInfo();
+ },
+ // 切换每页条数
+ changePageSize(size) {
+ this.pageSize = size;
+ this.searchButtonInfo();
+ }
+ }
+ }
+</script>
+
+<style lang="sass" scoped>
+@import '../../../style/layout-main.scss';
+</style>
\ No newline at end of file
diff --git a/web/src/views/QualityManage/components/ThreedCheck.vue b/web/src/views/QualityManage/components/ThreedCheck.vue
new file mode 100644
index 0000000..501e09f
--- /dev/null
+++ b/web/src/views/QualityManage/components/ThreedCheck.vue
@@ -0,0 +1,3 @@
+<template>
+ <div>三维检测</div>
+</template>
\ No newline at end of file
--
Gitblit v1.9.3