|
@@ -0,0 +1,530 @@
|
|
|
+<template>
|
|
|
+ <view class="page-container uni-column">
|
|
|
+ <view class="carrier-info uni-column">
|
|
|
+ <view class="carrier-code uni-row">
|
|
|
+ <text>箱号</text>
|
|
|
+ <text style="margin-left: 24rpx;">{{processInspecion.lot.allCarrierName}}</text>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">图号</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.drawingNumber }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">批次号</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.lotCode }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">工艺版本</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.technologyVersion }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">产品描述</view>
|
|
|
+ <view class="value">{{processInspecion.lot. productDescription }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">当前工序</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.processAlias }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">操作者</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.nickName }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">设备</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.equipmentDetailCode }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="label">检查载具</view>
|
|
|
+ <view class="value">{{ processInspecion.lot.inspectionCarrierCode }}
|
|
|
+ {{ processInspecion.isInspectionCarrierChanged == 1 ? '(已解绑)' : ''}}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="info-row uni-row">
|
|
|
+ <view class="drawing-btn" @click="handleDrawingMenu">图纸信息</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 废品信息 -->
|
|
|
+ <view class="title unfit-title uni-row">
|
|
|
+ <text>检查信息</text>
|
|
|
+ </view>
|
|
|
+ <view class="unfit-container">
|
|
|
+ <view class="unfit-item-container uni-column" v-for="(item, index) in unfitInfos" :key="index">
|
|
|
+ <view class="resu uni-row">
|
|
|
+ <view class="label">检查标准</view>
|
|
|
+ <view class="value" style="margin-left:16rpx;width: 400rpx;">{{ item.checkStandard }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="resu uni-row">
|
|
|
+ <view class="label">检查结果</view>
|
|
|
+ <input v-if="editable()" :disabled="true" v-model="item.checkResult" maxlength="50" />
|
|
|
+ <view v-else class="value">{{ item.checkResult }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="resu uni-row">
|
|
|
+ <view class="label">超差范围</view>
|
|
|
+ <input v-if="editable()" :disabled="true" v-model="item.exceedLimits" maxlength="50" />
|
|
|
+ <view v-else class="value">{{ item.exceedLimits }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="resu uni-row">
|
|
|
+ <view :class="!editable() ? 'label' : ''">检查量</view>
|
|
|
+ <input v-if="editable()" :disabled="true" class="number" type="number"
|
|
|
+ v-model="item.examiningNum" />
|
|
|
+ <view v-else class="number value">{{ item.examiningNum }}</view>
|
|
|
+ <view :class="!editable() ? 'label' : ''">不良品量</view>
|
|
|
+ <input v-if="editable()" :disabled="true" class="number" type="number"
|
|
|
+ v-model="item.disqualificationNum" />
|
|
|
+ <view v-else class="value">{{ item.disqualificationNum }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 咨询部分 -->
|
|
|
+ <view class="title unfit-title uni-row">
|
|
|
+ <text>咨询</text>
|
|
|
+ </view>
|
|
|
+ <view class="consultation-container uni-column">
|
|
|
+ <view class="consultation-item-container" v-for="(item, index) in consultations" :key="index">
|
|
|
+ <view class="question uni-column">
|
|
|
+ <view class="label uni-row">
|
|
|
+ <text>问题描述</text>
|
|
|
+ <text :style="selectType(item)">{{item.consultDepartment == 0?'技术':'品管'}} {{ selectText(item) }}</text>
|
|
|
+ </view>
|
|
|
+ <view class="content">{{ item.content }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 报工部分 -->
|
|
|
+ <view class="daywork-container">
|
|
|
+ <view class="result uni-row">
|
|
|
+ <view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">检查状态</view>
|
|
|
+ <uni-data-checkbox disabled="true" style="margin-top: 20rpx;" v-model="processInspecion.status"
|
|
|
+ :localdata="range"></uni-data-checkbox>
|
|
|
+ </view>
|
|
|
+ <view class="remark uni-row">
|
|
|
+ <view class="label">备注</view>
|
|
|
+ <textarea disabled="true" v-model="processInspecion.remark" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+ import {
|
|
|
+ ref,
|
|
|
+ onMounted,
|
|
|
+ getCurrentInstance
|
|
|
+
|
|
|
+ } from 'vue'
|
|
|
+ import {
|
|
|
+ onLoad,
|
|
|
+ onReady,
|
|
|
+ onUnload,
|
|
|
+ onShow
|
|
|
+ } from '@dcloudio/uni-app'
|
|
|
+ import {
|
|
|
+ store
|
|
|
+ } from '@/store/index.js'
|
|
|
+ import {
|
|
|
+ updateAdoptStatus,
|
|
|
+ selectInspecion
|
|
|
+ } from '@/api/business/processInspection.js'
|
|
|
+ import {
|
|
|
+ getInspectionStandardsList
|
|
|
+ } from '@/api/business/inspectionStandards.js'
|
|
|
+ const lot = ref({})
|
|
|
+ const isEventTriggered = ref(false); // 创建一个标志位
|
|
|
+ const unfitInfos = ref([]) //废品信息
|
|
|
+ const consultations = ref([]) //咨询信息
|
|
|
+ const flag = ref(false)
|
|
|
+ // 创建一个引用来存储最后一次请求的时间戳
|
|
|
+ const lastRequestTimestamp = ref(0);
|
|
|
+ const processInspecion = ref({
|
|
|
+ remark: "",
|
|
|
+ rejectNum: 0,
|
|
|
+ examiningNum: 0,
|
|
|
+ status: 0,
|
|
|
+ })
|
|
|
+ const initStatus = ref(0)
|
|
|
+ const editable = () => {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ const consul = [{
|
|
|
+ value: 0,
|
|
|
+ text: "待确认",
|
|
|
+ type: "color: #fcab53"
|
|
|
+ }, {
|
|
|
+ value: 2,
|
|
|
+ text: "合格",
|
|
|
+ type: "color: #55ff7f"
|
|
|
+ }, {
|
|
|
+ value: 1,
|
|
|
+ text: "不合格",
|
|
|
+ type: "color: #ff0c2c"
|
|
|
+ }]
|
|
|
+
|
|
|
+ const range = [{
|
|
|
+ value: 0,
|
|
|
+ text: "待确认",
|
|
|
+ type: "color: #fcab53"
|
|
|
+ }, {
|
|
|
+ value: 1,
|
|
|
+ text: "合格",
|
|
|
+ type: "color: #55ff7f"
|
|
|
+ }, {
|
|
|
+ value: 2,
|
|
|
+ text: "不合格",
|
|
|
+ type: "color: #ff0c2c"
|
|
|
+ }]
|
|
|
+
|
|
|
+ /***************************** 页面生命周期函数 *****************************/
|
|
|
+
|
|
|
+
|
|
|
+ onShow(() => {
|
|
|
+ console.log(store.processInspection)
|
|
|
+ console.log(flag.value)
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中'
|
|
|
+ });
|
|
|
+ processInspecion.value = store.processInspection
|
|
|
+ selectInspecion(processInspecion.value).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ processInspecion.value = res.data;
|
|
|
+ unfitInfos.value = res.data.processInspectionDetails;
|
|
|
+ initStatus.value = res.data.status
|
|
|
+ consultations.value = res.data.dayworkItemConsults;
|
|
|
+ console.log("res", res);
|
|
|
+ console.log(processInspecion.value)
|
|
|
+ uni.hideLoading();
|
|
|
+ // getInspecion();
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ icon: 'none',
|
|
|
+ title: res.msg,
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ function getOringicalList() {
|
|
|
+ console.log(processInspecion.value)
|
|
|
+ //查询该产品,当前工序,当前检查绑定的检查
|
|
|
+ getInspectionStandardsList({
|
|
|
+ productId:processInspecion.value.lot.productId,
|
|
|
+ processId:processInspecion.value.lot.processId,
|
|
|
+ inspectionCode:"deliveryInspection"
|
|
|
+ }).then(res =>{
|
|
|
+ unfitInfos.value = res.rows.map(item => {
|
|
|
+ // 映射新的数组,包含 inspectionStandardsId 和 checkStandard 属性
|
|
|
+ return {
|
|
|
+ inspectionStandardsId: item.id, // 从 item 中获取 id
|
|
|
+ checkStandard: item.standard // 从 item 中获取 standard
|
|
|
+ };
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /***************************** 定义了一些方法 *****************************/
|
|
|
+ //咨询文本
|
|
|
+ function selectText(item) {
|
|
|
+ for (var i = 0; i < consul.length; i++) {
|
|
|
+ if (item.status == consul[i].value) {
|
|
|
+ return consul[i].text
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function handleDrawingMenu(){
|
|
|
+ // 对 technologicalProcessDetailId 进行URL编码
|
|
|
+ var encodedId = encodeURIComponent(processInspecion.value.lot.productId);
|
|
|
+ var enTechnologicalProcessId = encodeURIComponent(processInspecion.value.lot.technologicalProcessId);
|
|
|
+ var enprocessCode = encodeURIComponent(processInspecion.value.lot.processCode);
|
|
|
+ var encodeCode = encodeURIComponent(processInspecion.value.lot.lotCode);
|
|
|
+ var enProcessAlias = encodeURIComponent(processInspecion.value.lot.processAlias);
|
|
|
+ // 构建查询参数字符串
|
|
|
+ var queryParam = `param1=${encodedId}¶m2=${encodeCode}¶m3=${enprocessCode}¶m4=${enTechnologicalProcessId}¶m5=${enProcessAlias}`;
|
|
|
+
|
|
|
+ // 使用模板字符串构建完整的URL
|
|
|
+ var navigateUrl = `/pages/drawingMenu/index?${queryParam}`;
|
|
|
+
|
|
|
+ // 导航到指定页面
|
|
|
+ uni.navigateTo({
|
|
|
+ url: navigateUrl
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询咨询列表
|
|
|
+ function getInspecion() {
|
|
|
+
|
|
|
+ processInspecion.value = store.processInspection
|
|
|
+ selectInspecion(processInspecion.value).then(res => {
|
|
|
+ console.log("咨询", res);
|
|
|
+ if (res.code == 200) {
|
|
|
+ console.log("res", res);
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ icon: 'none',
|
|
|
+ title: res.msg,
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //咨询样式
|
|
|
+ function selectType(item) {
|
|
|
+ for (var i = 0; i < consul.length; i++) {
|
|
|
+ if (item.status == consul[i].value) {
|
|
|
+ return consul[i].type
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+ .page-container {
|
|
|
+ // height: 100%;
|
|
|
+ background-color: #ececec;
|
|
|
+ font-size: 28rpx;
|
|
|
+
|
|
|
+ >.title {
|
|
|
+ font-weight: 700;
|
|
|
+ margin: 24rpx 16rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .carrier-info {
|
|
|
+ margin: 32rpx 16rpx 0 16rpx;
|
|
|
+ padding: 24rpx;
|
|
|
+ background-color: #ffffff;
|
|
|
+ border-radius: 8rpx;
|
|
|
+
|
|
|
+ .carrier-code {
|
|
|
+ font-size: 32rpx;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+
|
|
|
+ .info-row {
|
|
|
+ margin-top: 16rpx;
|
|
|
+ color: #767676;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ width: 160rpx;
|
|
|
+ }
|
|
|
+ .drawing-btn {
|
|
|
+ padding: 12rpx 32rpx;
|
|
|
+ background-color: #0055ff;
|
|
|
+ color: #ffffff;
|
|
|
+ border-radius: 12rpx;
|
|
|
+ margin-left: auto;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .value {
|
|
|
+ flex: 1;
|
|
|
+
|
|
|
+ textarea {
|
|
|
+ flex: 1;
|
|
|
+ border: 1px solid #888888;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 16rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .unfit-title {
|
|
|
+ margin-bottom: 24rpx;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 28rpx;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+
|
|
|
+ .add-btn {
|
|
|
+ padding: 12rpx 32rpx;
|
|
|
+ background-color: #a4adb3;
|
|
|
+ color: #ffffff;
|
|
|
+ border-radius: 12rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .unfit-container {
|
|
|
+ padding: 24rpx;
|
|
|
+ margin: 0 16rpx;
|
|
|
+ background-color: #ffffff;
|
|
|
+ border-radius: 12rpx;
|
|
|
+
|
|
|
+ .unfit-item-container {
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ >* {
|
|
|
+ margin-bottom: 24rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .title {
|
|
|
+ font-weight: 700;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 40rpx;
|
|
|
+ height: 40rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .standard {}
|
|
|
+
|
|
|
+ .resu {
|
|
|
+ width: 100%;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ input {
|
|
|
+ margin-left: 20rpx;
|
|
|
+ width: 200rpx;
|
|
|
+ height: 56rpx;
|
|
|
+ flex: 1;
|
|
|
+ border: 1px solid #9f9f9f;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .result {
|
|
|
+ align-items: center;
|
|
|
+ border-bottom: 1px solid #9f9f9f;
|
|
|
+ padding-bottom: 32rpx;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ input {
|
|
|
+ width: 280rpx;
|
|
|
+ height: 56rpx;
|
|
|
+ border: 1px solid #9f9f9f;
|
|
|
+ font-size: 28rpx;
|
|
|
+
|
|
|
+ &.number {
|
|
|
+ width: 104rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .unfit-item-container:last-child {
|
|
|
+ .result {
|
|
|
+ border-bottom: none;
|
|
|
+ padding-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .consultation-container {
|
|
|
+ margin: 0 16rpx;
|
|
|
+ padding: 24rpx;
|
|
|
+ background-color: #ffffff;
|
|
|
+ border-radius: 8rpx;
|
|
|
+
|
|
|
+ .consultation-item-container {
|
|
|
+ margin-bottom: 24rpx;
|
|
|
+ border-bottom: 2px solid #888888;
|
|
|
+ padding-bottom: 24rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .consultation-item-container:last-child {
|
|
|
+ margin-bottom: 0;
|
|
|
+ border-bottom: 0;
|
|
|
+ padding-bottom: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .question,
|
|
|
+ .answer {
|
|
|
+ .label {
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 16rpx;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ line-height: 40rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .answer {
|
|
|
+ margin-top: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .daywork-container {
|
|
|
+ margin-top: 24rpx;
|
|
|
+ padding: 24rpx;
|
|
|
+ background-color: #ffffff;
|
|
|
+ border: 1px solid #bcbcbc;
|
|
|
+
|
|
|
+ .result {
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ width: 112rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ input {
|
|
|
+ flex: 1;
|
|
|
+ height: 56rpx;
|
|
|
+ border: 1px solid #9f9f9f;
|
|
|
+ font-size: 28rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .remark {
|
|
|
+ margin-top: 24rpx;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ width: 112rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ textarea {
|
|
|
+ flex: 1;
|
|
|
+ border: 1px solid #9f9f9f;
|
|
|
+ height: 168rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .btns-container {
|
|
|
+ margin-top: 24rpx;
|
|
|
+
|
|
|
+ .finished-btn {
|
|
|
+ display: flex;
|
|
|
+ flex: 1;
|
|
|
+ height: 80rpx;
|
|
|
+ background-color: #fc6565;
|
|
|
+ color: #ffffff;
|
|
|
+ text-align: center;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .question-btn {
|
|
|
+ width: 80rpx;
|
|
|
+ align-items: flex-end;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 48rpx;
|
|
|
+ height: 48rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ text {
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|