src/assets/api/controller.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/Technicalindex.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/finishedProductInspectionUp.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/mbom.vue | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/processInspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/processInspectionUpdate.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/rawInsDetail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/sale.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/self-inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/standard.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/technology.vue | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/view/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/api/controller.js
@@ -48,6 +48,7 @@ rawSelectDevice: "/rawInsProduct/selectDevice", //查询设备信息 addRawInspects: "/rawInspect/addRawInspects", // 添加 updateDevByRpId: "/rawInsProduct/updateDevByRpId", // 更改设备 rawInspectChooseIFS: "/rawInspect/chooseIFS",//通过设备编码得到信息 } // 查询成品不合格品管理 @@ -179,6 +180,8 @@ selectSaleDatilById: "sale/selectSaleDatilById", //根据销售单id查看详情, addSale: "sale/addSale", //新增销售单 saleCheck: "sale/check", //审核销售单 exportSale: "sale/exportSale",//导出销售订单 saleDownload: "sale/download",//下载附件 synchronization: "sale/synchronization", //同步 updateSaleById: "sale/updateSaleById", //根据销售单id修改详情信息 delSale: "sale/delSale", //根据销售单id删除 src/components/view/Technicalindex.vue
@@ -7,6 +7,8 @@ <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">新增</el-button> <!-- <el-button icon="el-icon-edit-outline" @click="modify">修改</el-button> --> <el-button icon="el-icon-delete" @click="dels">删除</el-button> <el-button icon="el-icon-download" @click="clickDownload">导出</el-button> <el-button icon="el-icon-upload2">导入</el-button> </el-col> </el-row> </div> @@ -18,7 +20,8 @@ <el-form-item label="类型"> <template> <el-select v-model="value" placeholder="请选择" style="width: 560px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> @@ -72,7 +75,8 @@ <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current> <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i> <span><i :class="`node_i ${data.code != '[2]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> {{data.code}} {{ data.name }}</span> </div> </el-tree> @@ -103,7 +107,8 @@ <template slot-scope="scope" style="text-align: center;"> <div v-if="!scope.row.children"> <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button> <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button> <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button> </div> </template> </el-table-column> @@ -127,9 +132,10 @@ <el-col :span="4" style="font-size: 14px;text-align: right;">工序:</el-col> <el-col :span="16" :offset="1"> <template> <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;" filterable @change="workevent"> <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;" filterable @change="workevent"> <el-option v-for="(item, index) in process" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </template> @@ -139,9 +145,10 @@ <el-col :span="4" style="font-size: 14px;text-align: right;">工艺:</el-col> <el-col :span="16" :offset="1"> <template> <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create filterable> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create filterable> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </template> @@ -189,8 +196,8 @@ <el-form-item label="工序"> <template> <el-select v-model="form.work" placeholder="请选择" @change="workevent"> <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> <el-option v-for="(item, index) in process" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </template> @@ -199,8 +206,10 @@ <el-col :span="11" :offset="2"> <el-form-item label="工艺"> <template> <el-select v-model="form.name" style="width: 95%;" placeholder="请选择" @change="craftrow"> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> <el-select v-model="form.name" style="width: 95%;" placeholder="请选择" @change="craftrow"> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </template> @@ -211,8 +220,10 @@ <el-col :span="11"> <el-form-item label="项目组"> <template> <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd"> <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item"> <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd"> <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item"> </el-option> </el-select> </template> @@ -231,6 +242,20 @@ <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="add">确 定</el-button> </span> </el-dialog> </div> <div> <el-dialog title="导出类型选择" :visible.sync="isDownload" width="30%"> <el-col> 请选择类型: </el-col> <el-select v-model="downloadTypeSelect" style="width: 100%;margin-top: 10px;" placeholder="请选择"> <el-option v-for="(a, ai) in typeTable" :key="ai" :value="a"></el-option> </el-select> <span slot="footer" class="dialog-footer"> <el-button @click="isDownload = false">取 消</el-button> <el-button type="primary" @click="downloadSelect">确 定</el-button> </span> </el-dialog> </div> @@ -265,6 +290,9 @@ children: [], modifyevent: false, dialogVisible: false, isDownload: false,//导出按钮 downloadTypeSelect: null, typeTable: [], tableData: [], crafval: '', typeselect: 0, @@ -287,6 +315,20 @@ this.chooseType() }, methods: { clickDownload() { this.isDownload = true this.typeTable = [] let data=JSON.parse(JSON.stringify(this.bigType)) data.unshift("全部") this.typeTable=data }, downloadSelect() { console.log(this.downloadTypeSelect); }, handleSelectionChange() { }, chooseType() { this.$axios.get(this.$api.url.chooseType).then(res => { this.bigType = res.data @@ -331,7 +373,6 @@ }, //递归子级 toggleSelect(data, flag, type) { // console.log('222'); if (type === "all") { if (data.length > 0) { data.forEach((item) => { @@ -377,7 +418,6 @@ } }).then(res => { this.edit = res.data[0] console.log(this.edit); }) }, childrenClick(val) { @@ -386,7 +426,6 @@ this.upDia = true }, writeTechByIdskill() { // console.log(this.upData.id); this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, { name: this.edit.name, father: this.edit.father, @@ -407,7 +446,6 @@ }, //删除 delTechBy() { console.log(this.$api.url.delTechBy, this.upData.id); this.$axios.post(this.$api.url.delTechBy, { id: this.upData.id }).then(res => { @@ -432,9 +470,7 @@ }) }, dels() { let ee = [] console.log(this.selects); this.selects.forEach(el => { if (el.children) { el.children.forEach(ele => { @@ -444,7 +480,6 @@ }) // cc.splice(0,1) this.delete = ee.join(',') console.log(this.delete); this.delAllTechskill() this.$message.success('删除完成') }, @@ -454,7 +489,6 @@ this.form = {}; }, electadd(value) { console.log(value); this.higherlevel.push({}); this.form.father = value; }, @@ -476,7 +510,6 @@ }, TYpe(val) { this.typeselect = val console.log(this.typeselect); this.selectAllleft() }, edittype(val) { @@ -492,7 +525,6 @@ } }).then(res => { this.list = res.data; console.log(this.list); this.selectDataList() this.$nextTick(() => { this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个 @@ -500,10 +532,8 @@ let one = this.list.filter(item => { return item.children.length > 0 })[0] console.log(one); let name = one.children[0].id this.checkTreeNode.id = name console.log(name); this.selectAllrightStart(name) this.selectDataList(); }); @@ -515,7 +545,6 @@ } }).then(res => { this.tableData = res.data; console.log(this.tableData); }); }, // @@ -531,7 +560,6 @@ } }).then(res => { this.tableData = res.data; console.log(this.tableData); }); }, craftrow(val) { @@ -540,14 +568,12 @@ }, //上级 chooseProFath() { console.log(this.checkTreeNode.id); this.$axios.get(this.$api.url.chooseProFath, { params: { techTemId: this.crafval } }).then(res => { this.higherlevel = res.data; console.log(this.higherlevel); }, { headers: { "Content-Type": "application/json" @@ -562,7 +588,6 @@ } }).then(res => { this.process = res.data; console.log(this.process); }, { headers: { "Content-Type": "application/json" @@ -570,14 +595,12 @@ }) }, workevent(val) { console.log(val); let idx = this.process.findIndex(el => el.name === val) this.craftapi = this.process[idx].children }, handleNodeClick(data) { this.checkTreeNode = data console.log(this.checkTreeNode.id); this.selectAllright() }, event() { src/components/view/finishedProductInspectionUp.vue
@@ -24,14 +24,14 @@ </el-col> <el-col :span="7"> <el-form-item label="客户名称:"> <el-input disabled style="width: 180px;" v-model="processInspectVo.prname" placeholder="请输入客户名称" autocomplete="off" /> <el-input disabled style="width: 180px;" v-model="processInspectVo.prname" placeholder="请输入客户名称" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="工程名称:"> <el-input disabled style="width: 180px;" v-model="processInspectVo.sname" placeholder="请输入工程名称" autocomplete="off" /> <el-input disabled style="width: 180px;" v-model="processInspectVo.sname" placeholder="请输入工程名称" autocomplete="off" /> </el-form-item> </el-col> </el-row> @@ -54,8 +54,8 @@ </el-col> <el-col :span="7"> <el-form-item label="产品编码:"> <el-input disabled style="width: 180px;" v-model="processInspectVo.mcode" placeholder="请输入产品编码" autocomplete="off" /> <el-input disabled style="width: 180px;" v-model="processInspectVo.mcode" placeholder="请输入产品编码" autocomplete="off" /> </el-form-item> </el-col> </el-row> @@ -68,14 +68,14 @@ </el-col> <el-col :span="7"> <el-form-item label="单位:"> <el-input disabled style="width: 180px;" v-model="processInspectVo.unit" placeholder="请输入产品编码" autocomplete="off" /> <el-input disabled style="width: 180px;" v-model="processInspectVo.unit" placeholder="请输入产品编码" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="数量:"> <el-input disabled style="width: 180px;" v-model="processInspectVo.quantity" placeholder="请输入数量" autocomplete="off" /> <el-input disabled style="width: 180px;" v-model="processInspectVo.quantity" placeholder="请输入数量" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="3" style="display: flex;justify-content: end;"> @@ -88,9 +88,11 @@ <div class="inspectionProject"> <el-row> <el-col :span="12" class="inspectionProject_span">检验项目</el-col> <el-col v-if="!isUpBtn" :span="12" class="inspectionProject_span" style="display: flex;justify-content: end;"> <el-col v-if="!isUpBtn" :span="12" class="inspectionProject_span" style="display: flex;justify-content: end;"> <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检验值列</el-button> <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button> <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button> <!-- <el-button size="mini" style="margin-right: 30px;" @@ -164,11 +166,11 @@ <div class="div_device_dialog"> <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 6px;"> </el-input> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <div class="custom-tree-node" slot-scope="{ data }"> <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>{{ data.name }}</span> <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>{{ data.name }}</span> </div> </el-tree> </div> @@ -321,17 +323,21 @@ }); return } let pro = this.inspectionItems.filter(item => { return item.result === 0; }) if (pro.length > 0) { this.$prompt('请输入不合格数量', '不合格数量', { confirmButtonText: '确定', cancelButtonText: '取消', inputPattern: /^\d+$/, inputErrorMessage: '请输入正确数字格式' }).then(({ value }) => { this.$axios.post(this.$api.url.finishedInspectUpdateFinishInspectsById, { id: this.detailId id: this.detailId, number: value }).then(res => { if (res.code == 200) { if (res.message === '项目未检验完!') { this.$message({ message: res.message, type: 'warning' }); return } this.$message({ message: '上报成功', type: 'success' @@ -343,8 +349,39 @@ type: 'warning' }); } }) }) }).catch(() => { this.$message({ type: 'info', message: '取消输入' }); }); } else { this.$axios.post(this.$api.url.finishedInspectUpdateFinishInspectsById, { id: this.detailId }).then(res => { if (res.code == 200) { if (res.message === '项目未检验完!') { this.$message({ message: res.message, type: 'warning' }); return } // this.$message({ // message: '上报成功', // type: 'success' // }); this.$parent.comBackMain(true) } else { this.$message({ message: res.message, type: 'warning' }); } }) } }, changeOptionsSamplename() { let id = this.processInspectVo.material.split("-")[0] src/components/view/mbom.vue
src/components/view/processInspection.vue
@@ -5,8 +5,10 @@ <el-row> <el-col :span="12">过程检验</el-col> <el-col :span="12" style="text-align: right;"> <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; ">新增</el-button> <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; ">新增</el-button> <el-button icon="el-icon-download" size="mini">导出</el-button> <el-button @click="report" icon="el-icon-download" size="mini">生成报告</el-button> </el-col> </el-row> </div> @@ -18,15 +20,18 @@ <el-option :value="0" label="不合格"></el-option> </el-select> <span>产品名称:</span> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.name" placeholder="请输入产品名称"></el-input> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.name" placeholder="请输入产品名称"></el-input> <span>工序:</span> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.techfather" placeholder="请输入工序"></el-input> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.techfather" placeholder="请输入工序"></el-input> <el-button size="mini"><span>重 置</span></el-button> <el-button size="mini" @click="searchPro" type="primary" style="background: #004EA2;"><span>查 询</span></el-button> </div> <div class="content-body"> <div class="inspectionTable"> <el-table ref="inspectionTable" height="calc(100vh - 290px)" :cell-style="{ textAlign: 'center' }" :header-cell-style="{ <el-table ref="inspectionTable" height="calc(100vh - 320px)" :cell-style="{ textAlign: 'center' }" :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', @@ -35,34 +40,37 @@ }" border :data="inspectionTable" style="width: 100%"> <el-table-column type="selection" width="50"> </el-table-column> <el-table-column label="序号" type="index" width="60"></el-table-column> <el-table-column prop="order_number" label="订单编号" min-width="100" /> <el-table-column prop="material" label="产品名称" min-width="100" /> <el-table-column prop="specifications_model" label="规格型号" min-width="100" /> <el-table-column prop="techfather" label="工序" min-width="60" /> <el-table-column prop="techname" label="工艺名称" min-width="100" /> <el-table-column prop="unit" label="单位" min-width="60" /> <el-table-column prop="quantity" label="数量" min-width="60" /> <el-table-column prop="createTime" label="报检日期" min-width="110" /> <el-table-column prop="name" label="报检人" min-width="80" /> <el-table-column prop="updateTime" label="检测日期" min-width="110" /> <el-table-column prop="result" label="合格状态" min-width="100"> <el-table-column prop="order_number" label="订单编号" min-width="90" /> <el-table-column prop="material" label="产品名称" min-width="80" /> <el-table-column prop="specifications_model" label="规格型号" min-width="60" /> <el-table-column prop="techfather" label="工序" min-width="70" /> <el-table-column prop="techname" label="工艺名称" min-width="70" /> <el-table-column prop="unit" label="单位" min-width="50" /> <el-table-column prop="quantity" label="数量" min-width="50" /> <el-table-column prop="createTime" label="报检日期" min-width="60" /> <el-table-column prop="name" label="报检人" min-width="50" /> <el-table-column prop="updateTime" label="检测日期" min-width="60" /> <el-table-column prop="result" label="合格状态" min-width="80"> <template slot-scope="scope"> <span style="color: #34BD66;" v-if="scope.row.result == 1">合格</span> <span style="color: #E84738;" v-else-if="scope.row.result == 0">不合格</span> </template> </el-table-column> <el-table-column label="操作" min-width="150" fixed="right"> <el-table-column label="操作" min-width="80"> <template slot-scope="scope"> <el-button type="text" size="small" @click="handleClick(scope.row)" style="margin-left: 0;">详情</el-button> <el-button type="text" size="small">查看</el-button> <el-button v-if="scope.row.result == null" type="text" size="small" style="margin-left: 0;" @click="updateInsInfo(scope.row)">编辑</el-button> <el-button v-if="scope.row.result == null" type="text" size="small" style="margin-left: 0;" @click="updateInsInfo(scope.row)">编辑</el-button> </template> </el-table-column> </el-table> </div> <!-- 分页器 --> <div class="pagination"> <el-pagination :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectionTableTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> <el-pagination :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectionTableTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </div> </div> @@ -75,20 +83,24 @@ <!-- 点击返回,当前页面值为false --> <!-- <el-button type="primary" size="mini" style="background: #004EA2; " icon="el-icon-circle-plus-outline">新增</el-button> --> <el-button @click="combackIndex" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; ">返回</el-button> <el-button @click="combackIndex" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; ">返回</el-button> </el-col> </el-row> <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right" label-width="120px" size="small"> <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right" label-width="120px" size="small"> <div class="formwrapper"> <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="订单号:"> <el-input @blur="selectInfoByOrderId" style="width: 210px;" size="small" v-model="processInspectVo.orderNumber" placeholder="请输入订单号" /> <el-input @blur="selectInfoByOrderId" style="width: 210px;" size="small" v-model="processInspectVo.orderNumber" placeholder="请输入订单号" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="产品名称:"> <el-select style="width: 210px;" size="small" @change="selectSample" v-model="processInspectVo.material" placeholder="请选择产品"> <el-select style="width: 210px;" size="small" @change="selectSample" v-model="processInspectVo.material" placeholder="请选择产品"> <el-option v-for="item in optionsSamplename" :key="item.value" :label="item.name" :value="item.name"> </el-option> </el-select> @@ -96,20 +108,24 @@ </el-col> <el-col :span="7"> <el-form-item label="产品编码:"> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编码" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编码" /> </el-form-item> </el-col> </el-row> <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="规格型号:"> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel" placeholder="请输入规格型号" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel" placeholder="请输入规格型号" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="工序名称:"> <el-select @change="changeOptionSoptionSprocesses" v-model="processInspectVo.techfather" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionSoptionSprocesses" :key="item.name" :label="item.name" :value="item.name"> <el-select @change="changeOptionSoptionSprocesses" v-model="processInspectVo.techfather" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionSoptionSprocesses" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </el-form-item> @@ -117,7 +133,8 @@ <el-col :span="7"> <el-form-item label="工艺名称:"> <el-select v-model="processInspectVo.techname" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionTechnology" :key="item.id" :label="item.name" :value="item.id + '-' + item.name"> <el-option v-for="item in optionTechnology" :key="item.id" :label="item.name" :value="item.id + '-' + item.name"> </el-option> </el-select> </el-form-item> @@ -126,7 +143,8 @@ <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="单位:"> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.unit" placeholder="请输入单位" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.unit" placeholder="请输入单位" /> </el-form-item> </el-col> <el-col :span="7"> @@ -155,17 +173,21 @@ > --> </el-col> </el-row> <el-table border :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" style="width: 100%"> <el-table border :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" style="width: 100%"> <el-table-column type="index" label="序号" width="60"></el-table-column> <el-table-column label="项目" prop="father"></el-table-column> <el-table-column prop="name" label="指标"></el-table-column> <el-table-column prop="unit" label="单位"></el-table-column> <el-table-column prop="required" label="标准值"></el-table-column> <el-table-column prop="internal" label="内测值"></el-table-column> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="检测值" min-width="100" style="text-align: center;"> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="检测值" min-width="100" style="text-align: center;"> <template slot-scope="scope"> <el-tooltip :disabled="scope.row.dname != null" class="item" effect="dark" content="请先选择设备!" placement="top-start"> <el-input :disabled="scope.row.dname === null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请输入检测值"></el-input> <el-tooltip :disabled="scope.row.dname != null" class="item" effect="dark" content="请先选择设备!" placement="top-start"> <el-input :disabled="scope.row.dname === null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请输入检测值"></el-input> </el-tooltip> </template> </el-table-column> @@ -174,7 +196,8 @@ <el-button v-if="!scope.row.isSelectDevice" type="text" @click="clickTableSelect(scope)">{{ scope.row.dname == null ? "请选择" : scope.row.dname }}</el-button> <el-select v-if="scope.row.isSelectDevice" style="width: 100%;" @change="clickNodeSure(scope.row)" v-model="filterText" placeholder="请选择"> <el-select v-if="scope.row.isSelectDevice" style="width: 100%;" @change="clickNodeSure(scope.row)" v-model="filterText" placeholder="请选择"> <el-option v-for="item in materialOptions" :key="item.id" :label="item.device" :value="item.id"> </el-option> </el-select> @@ -219,22 +242,150 @@ <div class="newPage" v-if="showLook"> <processInspectionLook :rowInfo="rowInfp" /> </div> <!-- <div class="newPage" v-if="reportlook"> <index /> </div> --> <el-dialog title="过程检验报告" :visible.sync="reportlook" width="40%"> <template> <div ref="print"> <div style="margin:0 auto;"> <!-- <div style="text-align:center;margin-top:10px;">过程检验报告</div> --> <table class="table table-striped table-bordered" align="center" border style="width: 100%;height: 700px;" valign="center"> <tr> <td class="column" colspan="2" rowspan="2" > </td> <td class="column" colspan="2" ><p>记录名称:检验记录表</p>Table: Inspection Record</td> <td class="column" colspan="2"><p>保存期限:25年</p> Storage Life: 25 years</td> </tr> <tr> <td class="column" colspan="2" > 记录编号</td> <td class="column" colspan="2" > 归档部门</td> </tr> <tr> <td class="column"><p>零件名称</p> Part Description</td> <td class="value"></td> <td class="column"><p>型号</p> Model</td> <td class="value"></td> <td class="column"><p>加工单号</p> Order No</td> <td class="value"></td> </tr> <tr> <td class="column"><p>检验仪器</p> Inspection instrument</td> <td class="value"></td> <td class="column"><p>检验数量</p> Quantity to check</td> <td class="value"></td> <td class="column"><p>供货单位</p> Supplier</td> <td class="value"></td> </tr> <tr> <td class="column"><p>检验项目</p> Inspection Item</td> <td class="column" colspan="3"><p><p>检验结果(实测值)</p> Test result (Measured value)</p></td> <td class="column" rowspan="2" colspan="2"><p>判定</p> Conclusion</td> </tr> <tr> <td class="column"><p>技术要求</p> Technical Requirement</td> <td class="column"><p>公差</p> TOL</td> <!-- <td class="daughter" >01</td> --> </tr> <tr> <td class="column" rowspan="9" colspan="0.5">尺寸</td> <td class="value" ></td> <td class="column"></td> <td class="value" ></td> </tr> <tr> <td class="column"></td> <td class="value" colspan="3"></td> <td class="column"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="column" colspan="6"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> <td class="value" colspan="2"></td> </tr> <tr> <td class="column">材质</td> <td class="value" colspan="5"></td> </tr> <tr > <td class="column" >外观性能</td> <td class="value" colspan="5" style="text-align:left;"> <br> <br> <br> <br> </td> </tr> <tr> <td class="column">备注</td> <td class="value" colspan="5"> <br> <br> <br> <br> </td> </tr> </table> </div> </div> </template> </el-dialog>` </div> </template> <script> import processInspectionUpdate from "../view/processInspectionUpdate.vue"; import processInspectionLook from "../view/processInspectionLook.vue"; import processInspectionUpdate from '../view/processInspectionUpdate.vue' import processInspectionLook from '../view/processInspectionLook.vue' // import index from '../view/report/index.vue' export default { components: { processInspectionUpdate, processInspectionLook, // index }, data() { return { showUp: false, isAddProject: false, showLook: false, reportlook: false, detailId: 28, rowInfp: {}, search: { @@ -242,7 +393,7 @@ pageSize: 1, result: "", // 检测状态 name: "", // 产品名称 techfather: "", // 工序 techfather: "" // 工序 }, optionsSamplename: [], inspectionTable: [], @@ -267,7 +418,7 @@ techfather: null, techname: null, technologyId: null, unit: null, unit: null }, InspectioniD: null, addInspectionform: [ @@ -283,9 +434,9 @@ quantity: "", group: "", worker: "", machine: "", }, ], machine: "" }] , inspectionItems: [], // 新增检验项目表格 inspectionResultForm: [ { @@ -293,8 +444,8 @@ name: "", inspecter: "", conclusion: "", operation: "", }, operation: "" } ], options: [], value: "", @@ -308,16 +459,16 @@ defaultProps: { // 设备树数据设置 children: "children", label: "name", label: "name" }, nodeData: { id: 0, name: null, name: null }, // node点击保存当前点击数据 clickSelectDevice: { index: null, // 点击选择存储当前行索引 rpId: null, // 点击选择存储当前行项目Id }, rpId: null // 点击选择存储当前行项目Id } }; }, watch: { @@ -330,30 +481,36 @@ // this.getOptions(); }, methods: { report() { this.reportlook = true // this.$nextTick(() => { // this.$print(this.$refs.print); // }) }, handleClick(row) { this.rowInfp = row; this.showLook = true; this.rowInfp = row this.showLook = true }, combackIndex() { this.showAddPage = false; this.defaultInitializationTable(); this.showAddPage = false this.defaultInitializationTable() }, updateInsInfo(row) { this.rowInfp = row; this.showUp = true; this.rowInfp = row this.showUp = true }, combackMain(val) { this.showUp = false; this.showLook = false; this.showUp = false this.showLook = false this.defaultInitializationTable(); // 初始化表格数据 if (val) { this.$parent.removeAllTab(); this.$parent.removeAllTab() } }, searchPro() { this.search.countSize = this.pageSize; this.search.pageSize = this.currentPage; this.defaultInitializationTable(); this.search.countSize = this.pageSize this.search.pageSize = this.currentPage this.defaultInitializationTable() }, // 点击设备树保存点击记录 nodeClick(data) { @@ -366,69 +523,65 @@ }, // 获取设备树内容 getOptions(row) { this.$axios .get(this.$api.url.inspectionItemChooseDev, { this.$axios.get(this.$api.url.inspectionItemChooseDev, { params: { father: row.father, name: row.name, technologyId: this.processInspectVo.technologyId, }, }) .then((res) => { technologyId: this.processInspectVo.technologyId } }).then(res => { this.materialOptions = res.data; if (this.materialOptions.length === 1) { this.$message({ message: "该项目下只有一个试验设备,无需选择!", type: "warning", message: '该项目下只有一个试验设备,无需选择!', type: 'warning' }); return; return } row.isSelectDevice = true; this.filterText = row.did; row.isSelectDevice = true this.filterText = row.did }); }, // 点击表格选择触发 clickTableSelect(scope) { // this.centerDialogVisible = true; if (this.clickSelectDevice.index != null) { this.$set( this.inspectionItems[this.clickSelectDevice.index], "isSelectDevice", false ); this.$set(this.inspectionItems[this.clickSelectDevice.index], 'isSelectDevice', false) } this.clickSelectDevice.index = scope.$index; this.clickSelectDevice.rpId = scope.row.id; this.getOptions(scope.row); this.getOptions(scope.row) }, // 点击树里面的确定 clickNodeSure() { let select = this.materialOptions.filter((item) => { return item.id === this.filterText; })[0]; this.nodeData.id = select.id; this.nodeData.name = select.device; let select = this.materialOptions.filter(item => { return item.id === this.filterText })[0] this.nodeData.id = select.id this.nodeData.name = select.device if (this.detailId == null) { this.inspectionItems[this.clickSelectDevice.index].did = this.nodeData.id; this.inspectionItems[this.clickSelectDevice.index].dname = this.nodeData.name; this.inspectionItems[ this.clickSelectDevice.index ].did = this.nodeData.id; this.inspectionItems[ this.clickSelectDevice.index ].dname = this.nodeData.name; this.centerDialogVisible = false; } else { this.$axios .post(this.$api.url.inspectionItemUpdateDevByInsId, { id: this.clickSelectDevice.rpId, type: 1, devId: this.nodeData.id, devId: this.nodeData.id }) .then((res) => { this.getTableData(); .then(res => { this.getTableData() this.centerDialogVisible = false; }); } }, changeState(row, index) { if (row.did != null && row.did != "") { if (row.did != null && row.did != '') { // let val = row.empiricalValueAddss.filter(item => { // return item != '' && item != null // }) @@ -442,44 +595,34 @@ // }); // return // } let str = ""; row.empiricalValueAddss.forEach((e) => { str += e + ","; }); if ( str.slice(0, -1) === "" || str.slice(0, -1) === null || str.slice(0, -1) === undefined ) { return; let str = "" row.empiricalValueAddss.forEach(e => { str += e + "," }) if (str.slice(0, -1) === '' || str.slice(0, -1) === null || str.slice(0, -1) === undefined) { return } this.$axios .post( this.$api.url.inspectionItemlose_focus_update, { this.$axios.post(this.$api.url.inspectionItemlose_focus_update, { deviceId: row.did, inspectionItemId: row.id, inspectionValue: str.slice(0, -1), }, { headers: { "Content-Type": "application/json" }, } ) .then((res) => { if (res.message === "内控值输入格式有问题!") { inspectionValue: str.slice(0, -1) }, { headers: { "Content-Type": "application/json" } }).then(res => { if (res.message === '内控值输入格式有问题!') { this.$message({ message: res.message, type: "warning", type: 'warning' }); return; return } row.result = res.data.result; row.username = res.data.username; }); row.result = res.data.result row.username = res.data.username }) } else { this.$message({ message: "请选择择设备!", type: "warning", message: '请选择择设备!', type: 'warning' }); } }, @@ -494,32 +637,29 @@ const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; colspan: _col } } if (columnIndex === 1) { const _row = this.spanArr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; colspan: _col } } }, // 合并表格 mergeTable() { this.rowList = []; this.spanArr = []; this.position = 0; this.rowList = [] this.spanArr = [] this.position = 0 this.inspectionItems.forEach((item, index) => { if (index === 0) { this.spanArr.push(1); this.position = 0; } else { if ( this.inspectionItems[index].father === this.inspectionItems[index - 1].father ) { if (this.inspectionItems[index].father === this.inspectionItems[index - 1].father) { this.spanArr[this.position] += 1; this.spanArr.push(0); } else { @@ -527,24 +667,21 @@ this.position = index; } } }); }) }, changeOptionSoptionSprocesses() { this.optionTechnology = []; let working = this.optionSoptionSprocesses.filter((item) => { return item.name === this.processInspectVo.techfather; })[0]; this.optionTechnology = working.children; this.optionTechnology = [] let working = this.optionSoptionSprocesses.filter(item => { return item.name === this.processInspectVo.techfather })[0] this.optionTechnology = working.children }, addTestProjevt() { let val = JSON.parse(JSON.stringify(this.processInspectVo)); val.techname = this.processInspectVo.techname.split("-")[1]; val.technologyId = this.processInspectVo.techname.split("-")[0]; this.processInspectVo.technologyId = val.technologyId; this.$axios .post( this.$api.url.processInspectAddProcess, { let val = JSON.parse(JSON.stringify(this.processInspectVo)) val.techname = this.processInspectVo.techname.split("-")[1] val.technologyId = this.processInspectVo.techname.split("-")[0] this.processInspectVo.technologyId = val.technologyId this.$axios.post(this.$api.url.processInspectAddProcess, { material: val.material, materialCode: val.materialCode, orderNumber: val.orderNumber, @@ -554,73 +691,58 @@ techname: val.techname, techId: Number(val.technologyId), mtId: Number(val.technologyId), unit: val.unit, }, { headers: { "Content-Type": "application/json" }, } ) .then((res) => { unit: val.unit }, { headers: { "Content-Type": "application/json" } }).then(res => { if (res.code === 201) { this.$message({ message: res.message, type: "warning", type: 'warning' }); return; return } this.isAddProject = true; this.detailId = res.data; this.inspectionResultForm[0].id = val.materialCode; this.inspectionResultForm[0].name = val.material; this.getTableData(); }); this.isAddProject = true this.detailId = res.data this.inspectionResultForm[0].id = val.materialCode this.inspectionResultForm[0].name = val.material this.getTableData() }) }, getTableData() { this.$axios .get(this.$api.url.inspectionItemListUser, { this.$axios.get(this.$api.url.inspectionItemListUser, { params: { id: this.detailId, type: 1, }, }) .then((res) => { this.inspectionItems = res.data; let arr = []; let val = JSON.parse(JSON.stringify(this.inspectionItems)); const uName = []; //转成一维数组 val.forEach((l) => { let father = l.father; l.children.forEach((c) => { c.father = father; c.empiricalValueAddss = []; if ( c.inspectionValue != "" && c.inspectionValue != null ) { c.empiricalValueAddss = c.inspectionValue.split(","); } else { c.empiricalValueAddss.push(""); type: 1 } uName.push(c["username"]); c.isSelectDevice = false; arr.push(c); }); }); this.inspectionItems = arr; let arrSort = JSON.parse(JSON.stringify(arr)); }).then(res => { this.inspectionItems = res.data let arr = [] let val = JSON.parse(JSON.stringify(this.inspectionItems)) const uName = [] //转成一维数组 val.forEach(l => { let father = l.father l.children.forEach(c => { c.father = father c.empiricalValueAddss = [] if (c.inspectionValue != '' && c.inspectionValue != null) { c.empiricalValueAddss = c.inspectionValue.split(","); } else { c.empiricalValueAddss.push("") } uName.push(c['username']) c.isSelectDevice = false arr.push(c) }) }) this.inspectionItems = arr let arrSort = JSON.parse(JSON.stringify(arr)) //根据集合对象数组长度排序 arrSort.sort((a, b) => { if ( a.empiricalValueAddss.length < b.empiricalValueAddss.length ) { if (a.empiricalValueAddss.length < b.empiricalValueAddss.length) { return -1; // a排在b前面 } else if ( a.empiricalValueAddss.length > b.empiricalValueAddss.length ) { } else if (a.empiricalValueAddss.length > b.empiricalValueAddss.length) { return 1; // a排在b后面 } else { return 0; // 保持相对顺序不变 @@ -628,49 +750,44 @@ }); // console.log(arrSort); console.log(uName); let name = [...new Set(uName)].filter( (item) => item !== null ); let rname = ""; name.forEach((m) => { rname += m + ","; }); this.inspectionResultForm[0].inspecter = rname.slice(0, -1); this.empiricalValueAdd = arrSort[arrSort.length - 1].empiricalValueAddss.length; this.mergeTable(arr); }); let name = [...new Set(uName)].filter(item => item !== null); let rname = '' name.forEach(m => { rname += m + "," }) this.inspectionResultForm[0].inspecter = rname.slice(0, -1) this.empiricalValueAdd = arrSort[arrSort.length - 1].empiricalValueAddss.length this.mergeTable(arr) }) }, selectSample() { let sample = this.optionsSamplename.filter((item) => { return item.name === this.processInspectVo.material; })[0]; this.processInspectVo.techfather = null; this.processInspectVo.techname = null; this.processInspectVo.materialCode = sample.code; this.processInspectVo.specificationsModel = sample.specifications; this.processInspectVo.unit = sample.unit; this.optionSoptionSprocesses = []; this.optionSoptionSprocesses = sample.children; let sample = this.optionsSamplename.filter(item => { return item.name === this.processInspectVo.material })[0] this.processInspectVo.techfather = null this.processInspectVo.techname = null this.processInspectVo.materialCode = sample.code this.processInspectVo.specificationsModel = sample.specifications this.processInspectVo.unit = sample.unit this.optionSoptionSprocesses = [] this.optionSoptionSprocesses = sample.children }, selectInfoByOrderId() { this.$axios .get(this.$api.url.chooseMaterProcessInspect, { this.$axios.get(this.$api.url.chooseMaterProcessInspect, { params: { orderNumber: this.processInspectVo.orderNumber, }, }) .then((res) => { orderNumber: this.processInspectVo.orderNumber } }).then(res => { if (res.data.length > 0) { console.log(res.data); this.optionsSamplename = res.data; this.optionsSamplename = res.data } else { this.$message({ message: "没有该订单号!", type: "warning", message: '没有该订单号!', type: 'warning' }); } }); }) }, // 当前页改变时触发 跳转其他页 handleCurrentChange(val) { @@ -686,7 +803,7 @@ defaultInitializationTable() { this.$axios .post(this.$api.url.selectProcessInspectsList, this.search) .then((res) => { .then(res => { this.inspectionTableTotal = res.data.total; this.inspectionTable = res.data.row; }); @@ -702,7 +819,7 @@ techfather: "", techname: "", technologyId: 0, unit: "", unit: "" }; this.inspectionItems.push(obj); }, @@ -714,12 +831,9 @@ clickDeleteInspectionColumn() { if (this.empiricalValueAdd - 1 === 0) { } else { if ( this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1 ) { if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { this.empiricalValueAdd = this.empiricalValueAdd - 1; this.inspectionItems.forEach((i) => { this.inspectionItems.forEach(i => { i.testValueList.splice(this.empiricalValueAdd, 1); }); } @@ -728,11 +842,11 @@ // 添加检验值列 clickAddInspectionColumn() { this.empiricalValueAdd = this.empiricalValueAdd + 1; }, } }, created() { this.defaultInitializationTable(); // 初始化表格数据 }, } }; </script> @@ -764,10 +878,6 @@ .content-body .rawPage { background-color: #fff; overflow: hidden; } .rawPage span { white-space: nowrap; } .inspectionTable { @@ -820,4 +930,40 @@ float: right; font-size: 13px !important; } /* .table{ border-collapse: collapse; border-spacing: 0; background-color: transparent; display: table; width: 100%; max-width: 100%; width: 800px; margin:0 auto; } */ /* .table td{ text-align:center; vertical-align:middle; font-size: 14px; font-family: 'Arial Normal', 'Arial'; color: #333333; padding: 8px 12px; } */ /* .table-bordered { border: 1px solid #ddd; } */ .column{ width:auto; height:30px; font-size: 12px; text-align:center /* border:1px solid #333; background: #f1f1f1; */ } .value{ width:70px; height:30px; border:1px solid #333; } </style> src/components/view/processInspectionUpdate.vue
@@ -24,29 +24,31 @@ <el-form-item label="产品名称:"> <el-select style="width: 210px;" size="small" disabled @change="selectSample" v-model="processInspectVo.material" placeholder="请选择产品"> <el-option v-for="item in optionsSamplename" :key="item.value" :label="item.name" :value="item.name"> <el-option v-for="item in optionsSamplename" :key="item.value" :label="item.name" :value="item.name"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="产品编码:"> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编码" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编码" /> </el-form-item> </el-col> </el-row> <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="规格型号:"> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel" placeholder="请输入规格型号" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel" placeholder="请输入规格型号" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="工序名称:"> <el-select @change="changeOptionSoptionSprocesses" disabled v-model="processInspectVo.techfather" placeholder="请选择" style="width: 210px;" size="small"> <el-select @change="changeOptionSoptionSprocesses" disabled v-model="processInspectVo.techfather" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionSoptionSprocesses" :key="item.name" :label="item.name" :value="item.name"> </el-option> @@ -55,8 +57,8 @@ </el-col> <el-col :span="7"> <el-form-item label="工艺名称:"> <el-select v-model="processInspectVo.techname" disabled placeholder="请选择" style="width: 210px;" size="small"> <el-select v-model="processInspectVo.techname" disabled placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionTechnology" :key="item.id" :label="item.name" :value="item.id + '-' + item.name"> </el-option> @@ -89,7 +91,8 @@ <el-col :span="12" class="inspectionProject_span">检验项目</el-col> <el-col v-if="!isUpBtn" :span="12" class="inspectionProject_span"> <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检验值列</el-button> <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button> <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button> <!-- <el-button size="mini" style="margin-right: 30px;" @@ -165,10 +168,11 @@ <div class="div_device_dialog"> <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 6px;"> </el-input> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <div class="custom-tree-node" slot-scope="{ data }"> <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>{{ data.name }}</span> <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>{{ data.name }}</span> </div> </el-tree> </div> @@ -317,6 +321,41 @@ }); return } let pro = this.inspectionItems.filter(item => { return item.result === 0; }) if (pro.length > 0) { this.$prompt('请输入不合格数量', '不合格数量', { confirmButtonText: '确定', cancelButtonText: '取消', inputPattern: /^\d+$/, inputErrorMessage: '请输入正确数字格式' }).then(({ value }) => { this.$axios.post(this.$api.url.processInspectUpdateProcessInspectsById, { id: this.detailId, number: value }).then(res => { if (res.code == 200) { // this.$message({ // message: '上报成功', // type: 'success' // }); this.$parent.combackMain(true) } else { this.$message({ message: res.message, type: 'warning' }); } }) }).catch(() => { this.$message({ type: 'info', message: '取消输入' }); }); } else { this.$axios.post(this.$api.url.processInspectUpdateProcessInspectsById, { id: this.detailId }).then(res => { @@ -341,6 +380,7 @@ } }) } }, handleClick() {}, updateInsInfo(row) { src/components/view/rawInsDetail.vue
@@ -6,8 +6,7 @@ <el-col :span="12" style="text-align: right;"> <el-button icon="el-icon-circle-plus-outline" v-show="detailId === null" @click="addNewRawInspect" style="background-color: #004ea2; color: #ffffff;">提 交</el-button> <el-button icon="el-icon-back" @click=" () => { <el-button icon="el-icon-back" @click="() => { goBack(); } ">返 回</el-button> @@ -19,7 +18,8 @@ <el-row> <el-col :span="7"> <el-form-item label="来料日期:"> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.formTime"></el-input> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.formTime"></el-input> <el-date-picker v-else type="date" value-format="yyyy-MM-dd" v-model="detailInfo.formTime" placeholder="选择日期"> </el-date-picker> @@ -27,12 +27,15 @@ </el-col> <el-col :span="7"> <el-form-item label="原材料名称:"> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.name"></el-input> <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input> </el-form-item></el-col> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.name"></el-input> <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input> </el-form-item></el-col> <el-col :span="7"> <el-form-item label="原材料编码:"> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.code"></el-input> <el-input v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.code"></el-input> <el-input @blur="blurCode" v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input> </el-form-item> </el-col> </el-row> @@ -46,8 +49,10 @@ </el-col> <el-col :span="7"> <el-form-item label="单位:"> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.runit"></el-input> <el-input v-else placeholder="请输入检验单位" :disabled="detailId !== null" v-model="detailInfo.unit"></el-input> <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.runit"></el-input> <el-input v-else placeholder="请输入检验单位" :disabled="detailId !== null" v-model="detailInfo.unit"></el-input> </el-form-item> </el-col> <el-col :span="7"> @@ -82,7 +87,8 @@ <el-col :span="12" style="line-height: 32px;">检验项目</el-col> <el-col :span="12" style="line-height: 32px; padding-top: 6px;"> <el-button style="float: right;" @click="clickDeleteInspectionColumn()">删除检验值列</el-button> <el-button style="float: right;margin-right: 30px;" @click="clickAddInspectionColumn()">添加检验值列</el-button> <el-button style="float: right;margin-right: 30px;" @click="clickAddInspectionColumn()">添加检验值列</el-button> <el-button v-if="detailId == null" style="float: right;margin-right: 30px;" @click="clickAddLine()">添加检验行</el-button> </el-col> @@ -94,7 +100,10 @@ </el-table-column> <el-table-column prop="rpName" label="项目" width="212"> <template slot-scope="scope"> <el-input v-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input> <!-- <el-input v-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input> --> <el-autocomplete v-if="detailId == null" class="inline-input" v-model="scope.row.name" :fetch-suggestions="querySearch" placeholder="请输入项目名称" @select="handleSelect(scope.row)" @blur="handleSelect(scope.row)"></el-autocomplete> <el-input v-else v-model="scope.row.rpName" disabled></el-input> </template> </el-table-column> @@ -159,8 +168,8 @@ <el-table-column prop="name" label="物料名称"> </el-table-column> <el-table-column v-if="detailId != null" prop="uName" label="检验员"> <template slot-scope="scope"> <span v-for="item in scope.row.uName" :key="item && item.uName" :style="{ marginRight: '8px' }">{{ item }}</span> <span v-for="item in scope.row.uName" :key="item && item.uName" :style="{ marginRight: '8px' }">{{ item }}</span> </template> </el-table-column> <el-table-column prop="testState" label="检验结论"> @@ -173,7 +182,7 @@ </el-table-column> <el-table-column v-if="detailId !== null" label="操作" width="120"> <template> <el-button type="text" size="small" @click.once="submitSave">上报</el-button> <el-button type="text" size="small" @click="submitSave">上报</el-button> </template> </el-table-column> </el-table> @@ -182,12 +191,10 @@ <div class="div_device_dialog"> <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 6px;"> </el-input> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree"> <div class="custom-tree-node" slot-scope="{ data }"> <span><i :class=" `node_i ${ data.children ? 'el-icon-folder-opened' : 'el-icon-tickets' <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets' }` "></i> {{ data.name }}</span> @@ -244,6 +251,8 @@ centerDialogVisible: false, // 详情页就是详情信息 detailInfo: {}, //产品信息 ifsInfo: {}, // 表格 projectTable: [], // 新建检验单参数对象 @@ -261,7 +270,8 @@ clickSelectDevice: { index: "", // 点击选择存储当前行索引 rpId: "" // 点击选择存储当前行项目Id } }, restaurants: [] }; }, watch: { @@ -270,6 +280,56 @@ } }, methods: { blurCode() { // this.detailId=10 let data = { code: this.detailInfo.code } console.log(data); this.$axios.post( this.$api.url.rawInspectChooseIFS, { code: this.detailInfo.code } ).then(res => { this.ifsInfo = res.data console.log("ifs", this.ifsInfo); this.$set(this.detailInfo, "formTime", this.ifsInfo.formTime) this.detailInfo.formTime = this.ifsInfo.formTime this.detailInfo.name = this.ifsInfo.name this.detailInfo.supplier = this.ifsInfo.supplier this.detailInfo.unit = this.ifsInfo.unit this.detailInfo.userName = this.ifsInfo.userName this.detailInfo.number = this.ifsInfo.number this.detailInfo.specifications = this.ifsInfo.specifications this.restaurants = JSON.parse(JSON.stringify(this.ifsInfo.rawInsProducts)) this.restaurants.forEach(item => { this.$set(item, "value", item.name) }) console.log("restaurants", this.restaurants); }) }, querySearch(queryString, cb) { var restaurants = this.restaurants; var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; // 调用 callback 返回建议列表的数据 cb(results); }, createFilter(queryString) { return (restaurant) => { return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); }; }, handleSelect(row) { let select = this.restaurants.filter(item => { return item.name === row.name })[0] if (select != undefined) { this.$set(row, "internal", select.internal) this.$set(row, "required", select.required) this.$set(row, "unit", select.unit) //检验值 } }, assertTest(row) { // let fuArr=['>', '<', '='] // if(!fuArr.includes(row.required[0])){ @@ -379,14 +439,39 @@ this.getDetailInfo(); //重新刷新信息数据 } }, async submitSave() { const res = await this.$axios.post( submitSave() { let pro = this.projectTable.filter(item => { return item.testState === 0; }) if (pro.length > 0) { this.$prompt('请输入不合格数量', '不合格数量', { confirmButtonText: '确定', cancelButtonText: '取消', inputPattern: /^\d+$/, inputErrorMessage: '请输入正确数字格式' }).then(({ value }) => { this.$axios.post( this.$api.url.updateRawInspectsById+`${this.detailId}`, {"number": value } ).then(res => { this.$message.success("提交成功"); this.getDetailInfo(); this.goBack() }); }).catch(() => { this.$message({ type: 'info', message: '取消输入' }); }); }else{ this.$axios.post( this.$api.url.updateRawInspectsById + `${this.detailId}` ).then(res => { this.$message.success("提交成功"); this.getDetailInfo(); this.goBack() }); } }, // 获取设备树内容 getOptions() { src/components/view/sale.vue
@@ -119,7 +119,7 @@ :icon="isSync ? 'el-icon-loading' : 'el-icon-refresh'">同步</el-button> <el-button type="primary" icon="el-icon-plus" @click="openAddDia">新增</el-button> <el-button icon="el-icon-delete" @click="delSales">删除</el-button> <el-button icon="el-icon-download">导出</el-button> <el-button icon="el-icon-download" @click="exportSale">导出</el-button> </el-col> </el-row> </div> @@ -160,7 +160,7 @@ <el-tag effect="dark" size="mini" style="font-size: 8px;">{{scope.row.order_type}}</el-tag> </template> </el-table-column> <el-table-column prop="code" label="合同编号" width="220"> <el-table-column prop="code" label="合同编号" > </el-table-column> <el-table-column prop="name" label="工程名称" width="120"> </el-table-column> @@ -174,12 +174,13 @@ <template slot-scope="scope"> <span style="color: #34BD66;" v-if="scope.row.type == 1">通过</span> <span style="color: #E84738;" v-else-if="scope.row.type == 0">不通过</span> <span v-else>{{null}}</span> <span style="color: #ff9900;" v-else>未审核</span> </template> </el-table-column> <el-table-column label="操作" width="220"> <template slot-scope="scope"> <span class="table_do" @click="changeShowDetail(scope.row)"> 查看详情 </span> <span class="table_do" @click="downloadFile(scope.row)"> 下载附件 </span> <span class="table_do" v-if="scope.row.type == 2" @click="saleCheck(scope)"> 审核 </span> <span class="table_do" v-else> </span> <span class="table_do" v-if="scope.row.type == 2" @@ -450,6 +451,56 @@ this.selectRawInspectsList() }, methods: { downloadFile(row) { let baseIp = "http://192.168.18.16:9999" this.axios.post(this.$api.url.saleDownload, { id: row.id }).then(res => { const fileUrls = []; // 文件的urls res.data.forEach(item=>{ let url=baseIp+item fileUrls.push(url) }) const downloadFile = (url, fileName) => { const link = document.createElement('a'); link.href = url; link.download = fileName; // link.style.display = 'none'; document.body.appendChild(link); link.click(); document.body.removeChild(link); }; console.log(fileUrls); fileUrls.forEach((url, index) => { let s=url.split(".") const fileName = row.name+`附件(${index + 1}).`+s[s.length-1]; downloadFile(url, fileName); }); }) }, //销售订单导出 exportSale(){ this.$axios.post(this.$api.url.exportSale,{ delTime: this.search.delTime, name: this.search.name, type: this.search.type, orderNumber: this.search.code },{responseType:'blob',headers:{"Content-Type":"application/json"}}).then((res)=>{ const result = res; var nameList = result.headers['content-disposition']; nameList = decodeURI(nameList); var fileName = nameList.split('=')[1]; const blob = new Blob([result.data,{type: 'application/vnd.ms-excel'}]); const link = document.createElement('a'); link.download = fileName; const URL = window.URL || window.webkitURL; link.href= URL.createObjectURL(blob); document.body.appendChild(link); link.click(); document.body.removeChild(link); }).catch() }, closeDialog() { this.addData = { orderNumber: null, src/components/view/self-inspection.vue
@@ -113,7 +113,6 @@ <el-col :span="12" style="line-height: 32px;">自检项目维护</el-col> <el-col :span="12" style="text-align: right;"> <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="addend">新增</el-button> <!-- <el-button icon="el-icon-edit-outline" @click="modify">修改</el-button> --> <el-button icon="el-icon-delete" @click="dels">删除</el-button> </el-col> </el-row> @@ -121,22 +120,9 @@ <div class="choose"> <span>类型:</span> <el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> <el-option label="分支组件" :value="3"></el-option> <el-option v-for="(a, ai) in bigType" :key="ai" :value="a"> </el-option> </el-select> <!-- <span>工序:</span> --> <!-- <el-select v-model="search.name" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option v-for="(a, ai) in process" key="ai" :label="a.name" :value="a.id"></el-option> </el-select> <span>项目:</span> <el-select v-model="search.name" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option v-for="(a, ai) in product" key="ai" :label="a.name" :value="a.id"></el-option> </el-select> <el-button size="mini" @click="clean()"><span>重 置</span></el-button> <el-button size="mini" type="primary" style="background: #004EA2;"><span>查 询</span></el-button> --> </div> <div class="thing"> <div class="left"> @@ -147,9 +133,6 @@ <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i> {{data.code}} {{ data.name }}</span> <!-- <el-button type="text" size="mini" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> --> </div> </el-tree> </div> @@ -384,6 +367,7 @@ checkTreeNode: { id:'', }, bigType: [], tableData: [], upIndex: 0, selects: [], @@ -402,10 +386,20 @@ } }, mounted() { this.chooseType() this.selectAllleft() this.selectAllSelf() }, methods: { chooseType() { this.$axios.get(this.$api.url.chooseType).then(res => { this.bigType = res.data this.typeselect = res.data[0] this.search.type = res.data[0] this.selectAllTechTem(); this.selectAllTechNam(); }) }, selectDataList() { this.list.forEach(a => { a.code = '[1]' src/components/view/standard.vue
@@ -48,7 +48,7 @@ <el-option :value="0" label="工艺路线"></el-option> <el-option :value="1" label="技术指标"></el-option> <el-option :value="2" label="物料清单"></el-option> <!-- <el-option :value="3" label="生产工艺"></el-option> --> <el-option :value="3" label="生产工艺"></el-option> </el-select> <span>版本:</span> <el-select v-model="versionVal" @change="verevent" size="small" style="width: 13vw;margin-right: 15px;" placeholder="请选择"> src/components/view/technology.vue
src/main.js
@@ -23,9 +23,9 @@ Vue.use(qs); Vue.use(api); // const javaApi = 'http://192.168.14.249:8001' const javaApi = 'http://localhost:8001' const javaApi = 'http://127.0.0.1:8001/' // const javaApi = 'http://127.0.0.1:8001/' @@ -67,6 +67,9 @@ }) axios.interceptors.response.use(res => { if(res.config.responseType === 'blob'){ return res; } return res.data }, async function (err) { if (JSON.stringify(err).indexOf('timeout of') > -1) { src/view/index.vue
@@ -352,6 +352,18 @@ v: "WMS管理", i: "font icon-a-Inventorydumprequest", c: [{ k: 15, v: "原材料库存", i: "font icon-shouye", u: "" }, { k: 16, v: "回单管理", i: "font icon-shouye", u: "" }, { k: 17, v: "半成品库存", i: "font icon-shouye", @@ -388,6 +400,12 @@ u: "rawInsBox" }, { k: 4, v: "原材料不合格品", i: "font icon-shouye", u: "rawUnqualifiedBox" }, { k: 5, v: "过程检验", i: "font icon-shouye", @@ -395,7 +413,7 @@ }, { k: 6, v: "产品检验", v: "成品检验", i: "font icon-shouye", u: "finishedProductInspection" }, @@ -454,6 +472,12 @@ u: "record-content" }, { k: 24, v: "自检项目维护", i: "font icon-shouye", u: "self-inspection" }, { k: 25, v: "技术指标维护", i: "font icon-shouye", @@ -476,6 +500,12 @@ v: "物料清单维护", i: "font icon-shouye", u: "mbom" }, { k: 30, v: "生产工艺维护", i: "font icon-shouye", u: "equipmentmaintain" } ] }