| | |
| | | <view> |
| | | <view> |
| | | <uni-card> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>检验单号:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.TASK_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>机台号:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.MACHINE_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>工序名称:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.PROC_NAME}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>产品名称:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.ITEM_NAME}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>产品编号:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.ITEM_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>检验员:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{name}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>检验类型</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.REMEKE}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <view :class="new Date().getTime()-new Date(item.BEGIN_TIME).getTime()>7200000?'red':''"> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>检验单号:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.TASK_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px" v-if="item.LOT_NO"> |
| | | <u-col span="2"> |
| | | <label>销售单号:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.LOT_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>工单数量:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.DAA008}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>机台 / 产线:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.MACHINE_NO}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px" v-if="item.PROC_NAME"> |
| | | <u-col span="2"> |
| | | <label>工序名称:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.PROC_NAME}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>产品名称:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.ITEM_NO}} | {{item.ITEM_NAME}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>图号颜色:</label> |
| | | </u-col> |
| | | <u-col> |
| | | <label>{{item.ENGINEERING_NO}} / {{item.COLOR_NAME}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>规格材质:</label> |
| | | </u-col> |
| | | <u-col> |
| | | <label>{{item.MODEL}} / {{item.MATERIAL}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-row customStyle="margin-bottom: 10px"> |
| | | <u-col span="2"> |
| | | <label>检验员/检验类型:</label> |
| | | </u-col> |
| | | <u-col span="4"> |
| | | <label>{{item.OPERATE_MAN}} / {{item.FTYPE}}</label> |
| | | </u-col> |
| | | </u-row> |
| | | <u-button text="生成检验资料" type="primary" :plain="true" |
| | | style="width: 200px;height: 100px;position: absolute;top: 30%;right: 10%;" |
| | | @click="generate()"></u-button> |
| | | </view> |
| | | |
| | | <view class="container"> |
| | | <button @click="fetchDrawingNumber">查看图号</button> |
| | | |
| | | |
| | | </view> |
| | | |
| | | </uni-card> |
| | | </view> |
| | | |
| | |
| | | <uni-table border stripe emptyText="暂无更多数据" style="margin-left: 5px;margin-right: 5px;"> |
| | | <!-- 表头行 --> |
| | | <uni-tr> |
| | | <uni-th align="center" width="80">检验项目</uni-th> |
| | | <uni-th align="left" width="100">检验工具</uni-th> |
| | | <uni-th align="left" width="180">备注</uni-th> |
| | | <uni-th align="left" width="30">检验数量</uni-th> |
| | | <uni-th align="left" width="80">上限值</uni-th> |
| | | <uni-th align="left" width="80">下限值</uni-th> |
| | | <uni-th align="left" width="100">检验值</uni-th> |
| | | <uni-th align="left" width="80">检验结果</uni-th> |
| | | <uni-th align="center" width="60">检验项目</uni-th> |
| | | <uni-th align="center" width="60">检验工具</uni-th> |
| | | <uni-th align="center" width="140">规格</uni-th> |
| | | <uni-th align="center" width="80" v-if="item.DEPARTMENT_NO=='HS0202'">组件名称</uni-th> |
| | | <uni-th align="center" width="40">数量</uni-th> |
| | | <uni-th align="center" width="60">上限值</uni-th> |
| | | <uni-th align="center" width="60">下限值</uni-th> |
| | | <uni-th align="center" width="70">检验值</uni-th> |
| | | <uni-th align="center" width="78">结果</uni-th> |
| | | <uni-th align="center" width="80">不良原因</uni-th> |
| | | <uni-th align="center" width="80">备注</uni-th> |
| | | </uni-tr> |
| | | <!-- 表格数据行 --> |
| | | <uni-tr v-for="item in table"> |
| | | <uni-tr v-for="(item,index) in table"> |
| | | <uni-td>{{item.CHECK_ITEM}}</uni-td> |
| | | <uni-td>{{item.CHECK_TOOL}}</uni-td> |
| | | <uni-td>{{item.SPECIFICATION}}</uni-td> |
| | | <uni-td v-if="item.FTEXT_TYPE">{{item.FTEXT_TYPE}}</uni-td> |
| | | <uni-td>{{item.CHECK_NUM}}</uni-td> |
| | | <uni-td>{{item.UP_ALLOW}}</uni-td> |
| | | <uni-td>{{item.DOWN_ALLOW}}</uni-td> |
| | |
| | | </uni-td> |
| | | <uni-td> |
| | | <u-tag |
| | | v-if="item.UP_ALLOW && item.VALUE <= item.UP_ALLOW && item.VALUE >= item.DOWN_ALLOW || !item.UP_ALLOW && item.VALUE == '合格'" |
| | | v-if="item.UP_ALLOW && (parseFloat(item.VALUE) <= parseFloat(item.UP_ALLOW) && parseFloat(item.VALUE) >= parseFloat(item.DOWN_ALLOW)) || (!item.UP_ALLOW && item.VALUE == '合格')" |
| | | text="合格" type="success"></u-tag> |
| | | <u-tag |
| | | v-if="item.UP_ALLOW && (item.VALUE > item.UP_ALLOW || item.VALUE < item.DOWN_ALLOW) || !item.UP_ALLOW && item.VALUE == '不合格'" |
| | | text="不合格" type="error"></u-tag> |
| | | <u-tag v-else text="不合格" type="error"></u-tag> |
| | | </uni-td> |
| | | <uni-td> |
| | | <!-- <view class="content" @click="useOutClickSide"> |
| | | <easy-select ref="easySelect" size="medium" :value="item.BAD_REASON" @selectOne="selectOne($event,index)"></easy-select> |
| | | </view> --> |
| | | <view class="login"> |
| | | <w-select style="margin-left: 20rpx;" v-model='chooseValue' defaultValue="请选择" :list='list' |
| | | valueName='CONTENT' keyName="ID" @change='change(index)'> |
| | | </w-select> |
| | | </view> |
| | | </uni-td> |
| | | <uni-td> |
| | | <u--textarea height="40px" v-model="item.MEMO" placeholder="请输入内容"></u--textarea> |
| | | </uni-td> |
| | | </uni-tr> |
| | | </uni-table> |
| | | </view> |
| | | <u-button text="提交" type="primary" style="position: absolute;bottom:0;" @click="submit()"></u-button> |
| | | <view style="margin-top: 10px;"> |
| | | <u-row style="margin-bottom: 5px;"> |
| | | <u--text type="info" text="备注"></u--text> |
| | | </u-row> |
| | | <u-row> |
| | | <u--textarea v-model="remeke" placeholder="请输入内容"></u--textarea> |
| | | </u-row> |
| | | </view> |
| | | <!-- 弹出窗口 --> |
| | | <view v-if="pdfVisible" class="modal"> |
| | | <view class="modal-content"> |
| | | <view class="modal-header"> |
| | | <text>PDF预览</text> |
| | | <button @click="closeModal">关闭</button> |
| | | </view> |
| | | <!-- <web-view v-if="pdfLink" :src="pdfLink" class="pdf-view"></web-view> --> |
| | | <view class="pdf-view"> |
| | | <!-- 在此处显示 PDF 内容 --> |
| | | <iframe :src="pdfLink" width="100%" height="100%"></iframe> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-button text="提交" type="primary" style="margin-top: 10px;" @click="submit()"></u-button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInspectionInfo, saveInspectionInfo |
| | | getInspectionInfo, |
| | | saveInspectionInfo, |
| | | getBadReason, |
| | | generateInfoc |
| | | } from '../../api/inspection'; |
| | | import { |
| | | baseUrl |
| | | } from '../../config.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | item: {}, |
| | | table: [], |
| | | name:'' |
| | | name: '', |
| | | remeke: '', |
| | | pdfVisible: false, // 在这里声明 pdfVisible |
| | | pdfLink: '', // 也声明 pdfLink,确保它们是响应式的 |
| | | //show: false |
| | | chooseValue: "", |
| | | list: [] |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | |
| | | this.item = item |
| | | this.getInspection(item.CHECK_NO) |
| | | this.name = uni.getStorageSync('userInfo').username |
| | | this.getBadReason() |
| | | }, |
| | | onNavigationBarButtonTap(e) { |
| | | let that = this |
| | | uni.chooseImage({ |
| | | count: 1, |
| | | sizeType: ['original', 'compressed'], |
| | | sourceType: ['camera'], |
| | | success: chooseImage => { |
| | | const tempFilePaths = chooseImage.tempFilePaths; |
| | | uni.uploadFile({ |
| | | url: 'http://183.249.77.50:8008' + '/hkFile/upload?mid=' + that.item.CHECK_NO + |
| | | '&username=' + uni.getStorageSync('userInfo').code, |
| | | filePath: tempFilePaths[0], |
| | | name: 'file', |
| | | success: (uploadFileRes) => { |
| | | console.log(uploadFileRes.data); |
| | | |
| | | }, |
| | | fail: (res) => { |
| | | console.log(res) |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | methods: { |
| | | getInspection(chenkNo) { |
| | | getInspectionInfo(chenkNo).then(res => { |
| | | // this.table = res.data |
| | | for (let item of res.data) { |
| | | for (let i = 0; i < parseInt(item.CHECK_NUM); i++) { |
| | | let insert = JSON.parse(JSON.stringify(item)) |
| | | // for (let i = 0; i < parseInt(item.CHECK_NUM); i++) { |
| | | // let insert = JSON.parse(JSON.stringify(item)) |
| | | |
| | | insert.CHECK_ITEM = insert.CHECK_ITEM + '-' + i |
| | | if (!insert.UP_ALLOW) { |
| | | insert.VALUE = '合格' |
| | | } else { |
| | | insert.VALUE = 0 |
| | | } |
| | | this.table.push(insert) |
| | | // insert.CHECK_ITEM = insert.CHECK_ITEM + '-' + i |
| | | // if (!insert.UP_ALLOW) { |
| | | // insert.VALUE = '合格' |
| | | // } else { |
| | | // insert.VALUE = null |
| | | // } |
| | | // this.table.push(insert) |
| | | // } |
| | | if (!item.UP_ALLOW) { |
| | | item.VALUE = '合格' |
| | | } else { |
| | | item.VALUE = null |
| | | } |
| | | |
| | | this.table.push(item) |
| | | } |
| | | console.log(this.table) |
| | | }) |
| | | }, |
| | | // selectOne(options,index) { |
| | | // this.table[index].BAD_REASON = options.label |
| | | // console.log(options.label); |
| | | // }, |
| | | // useOutClickSide() { |
| | | // this.$refs.easySelect.hideOptions && this.$refs.easySelect.hideOptions() |
| | | // }, |
| | | change(index) { |
| | | this.table[index].BAD_REASON = this.chooseValue; |
| | | }, |
| | | changeSwitch(item) { |
| | | console.log(item) |
| | | if (item.VALUE == '合格') { |
| | | item.VALUE = '不合格' |
| | | } else { |
| | |
| | | } |
| | | }, |
| | | submit() { |
| | | saveInspectionInfo(this.item.CHECK_NO,this.table).then(res => { |
| | | console.log(res) |
| | | if (this.table.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | message: "提交失败,请维护检验项目", |
| | | type: 'error' |
| | | }) |
| | | return |
| | | } else { |
| | | if (this.check()) { |
| | | saveInspectionInfo(this.item.CHECK_NO, this.table, this.remeke).then(res => { |
| | | if (!res.result) { |
| | | this.$refs.uToast.show({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }) |
| | | return |
| | | } else { |
| | | // this.$refs.uToast.show({ |
| | | // message: "提交成功", |
| | | // type: 'success' |
| | | // }) |
| | | let pages = getCurrentPages(); |
| | | let beforePage = pages[pages.length - 2]; |
| | | uni.navigateBack({ |
| | | delta: 1, //返回的页面数,如果为1表示返回上一页 |
| | | success: (event) => { |
| | | console.log('提交成功'); |
| | | beforePage.$vm.reload() |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | return |
| | | } |
| | | this.$refs.uToast.show({ |
| | | message: '有检验项目未录入完整测试结果!', |
| | | type: 'error' |
| | | }) |
| | | return |
| | | } |
| | | }, |
| | | generate() { |
| | | generateInfo(this.item.CHECK_NO).then(res => { |
| | | if (!res.result) { |
| | | this.$refs.uToast.show({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }) |
| | | return |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | message: "更新成功", |
| | | type: 'success' |
| | | }) |
| | | this.table.splice(0, this.table.length) |
| | | this.getInspection(this.item.CHECK_NO) |
| | | } |
| | | }) |
| | | }, |
| | | getBadReason() { |
| | | |
| | | getBadReason().then(res => { |
| | | console.log(res) |
| | | if (!res.result) { |
| | | this.$refs.uToast.show({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }) |
| | | return |
| | | } |
| | | this.list = res.data |
| | | }) |
| | | }, |
| | | check() { |
| | | for (let item of this.table) { |
| | | if (item.VALUE === null) { |
| | | return false |
| | | } |
| | | } |
| | | return true |
| | | |
| | | }, |
| | | fetchDrawingNumber() { |
| | | let lb = 0; |
| | | if (this.item.ITEM_NO.startsWith('A') || this.item.ITEM_NO.startsWith('B')) { |
| | | lb = 1; |
| | | } else if (this.item.ITEM_NO.startsWith('C')) { |
| | | lb = 2; |
| | | } |
| | | const id = this.item.ENGINEERING_NO; |
| | | // lb = 2; |
| | | // const id = 'A3-A010'; |
| | | const url = "http://192.168.0.98:808/deviceMessage.ashx?lb='"+lb+"'&id='"+id+"'"; |
| | | //const url = `/api/deviceMessage.ashx?lb=${lb}&id=${id}`; // 使用代理路径 |
| | | |
| | | // 打印 URL 进行调试 |
| | | console.log("Request URL:", url); |
| | | uni.request({ |
| | | url: url, |
| | | method: 'POST', |
| | | success: (response) => { |
| | | const respData = response.data; |
| | | if (respData != "") { |
| | | this.pdfLink = respData; |
| | | this.pdfVisible = true; |
| | | } else { |
| | | uni.showToast({ |
| | | title: respData.msg, |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }, |
| | | fail: (error) => { |
| | | uni.showToast({ |
| | | title: '请求图号链接失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | closeModal() { |
| | | this.pdfVisible = false; |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | |
| | | .text { |
| | | font-size: x-large; |
| | | } |
| | | |
| | | .red { |
| | | color: red; |
| | | } |
| | | |
| | | |
| | | .modal { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: absolute; |
| | | top: 10%; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | background-color: rgba(0, 0, 0, 0.5); |
| | | z-index: 1000; |
| | | } |
| | | |
| | | .modal-content { |
| | | background-color: white; |
| | | padding: 20px; |
| | | border-radius: 10px; |
| | | width: 80%; |
| | | height: 80%; |
| | | } |
| | | |
| | | .pdf-view { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | button { |
| | | background-color: #4CAF50; |
| | | color: white; |
| | | border: none; |
| | | padding: 10px 20px; |
| | | text-align: center; |
| | | text-decoration: none; |
| | | display: inline-block; |
| | | font-size: 16px; |
| | | margin: 4px 2px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | button:hover { |
| | | background-color: #45a049; |
| | | } |
| | | </style> |