下料抽查

This commit is contained in:
2026-07-06 18:23:35 +08:00
parent 52ac32ff95
commit 6ed757e75f
3 changed files with 142 additions and 24 deletions
+24
View File
@@ -1902,4 +1902,28 @@ $shadow-md: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
color: #b0bec5;
}
}
}
// ===== 不合格区域切换动画 =====
.fail-section {
max-height: 0;
overflow: hidden;
opacity: 0;
transform: translateY(-20rpx);
transition: max-height 0.35s ease, opacity 0.25s ease, transform 0.25s ease;
&.is-visible {
max-height: 600rpx;
}
&.is-enter {
opacity: 1;
transform: translateY(0);
}
&.is-leave {
max-height: 0;
opacity: 0;
transform: translateY(-20rpx);
}
}
-23
View File
@@ -482,27 +482,4 @@ $shadow-md: 0 2rpx 12rpx rgba(0, 0, 0, 0.04), 0 8rpx 24rpx rgba(0, 0, 0, 0.06);
}
// ===== 不合格区域切换动画 =====
.fail-section {
max-height: 0;
overflow: hidden;
opacity: 0;
transform: translateY(-20rpx);
transition: max-height 0.35s ease, opacity 0.25s ease, transform 0.25s ease;
&.is-visible {
max-height: 600rpx;
}
&.is-enter {
opacity: 1;
transform: translateY(0);
}
&.is-leave {
max-height: 0;
opacity: 0;
transform: translateY(-20rpx);
}
}
</style>
+118 -1
View File
@@ -15,6 +15,95 @@
</view>
</view>
<!-- 下料填报 -->
<view class="section">
<view class="section__header">
<view class="section__bar"></view>
<text class="section__title">下料填报</text>
</view>
<view class="card">
<!-- 下料长度 -->
<view class="card__row" @click="showPaintCodePicker = true">
<text class="card__label required">下料长度</text>
<view class="card__value-wrap">
<input class="card__input" v-model="layingOffForm.CuttingLength" type="digit"
placeholder="请输入下料长度" />
</view>
</view>
<!-- 坡口形式 -->
<view class="card__row">
<text class="card__label required">坡口形式</text>
<view class="card__value-wrap">
<input class="card__input" v-model="layingOffForm.GrooveForm" type="text"
placeholder="请输入坡口形式" />
</view>
</view>
<!-- 坡口角度 -->
<view class="card__row required">
<text class="card__label">坡口角度</text>
<view class="card__value-wrap">
<input class="card__input" v-model="layingOffForm.GrooveAngle" type="digit"
placeholder="请输入坡口角度" />
</view>
</view>
</view>
</view>
<!-- 检查信息 -->
<view class="section">
<view class="section__header">
<view class="section__bar"></view>
<text class="section__title">检查信息</text>
</view>
<view class="card">
<!-- 检查结果 -->
<view class="card__row">
<text class="card__label">检查结果</text>
<view class="card__value-wrap card__value-wrap--clickable">
<nbd-check-btn v-model="layingOffForm.CheckResult" passKey="合格" failKey="不合格" passText="合格"
failText="不合格" />
</view>
</view>
<view class="fail-section"
:class="{ 'is-visible': failVisible, 'is-enter': failAnimating, 'is-leave': failLeaving }">
<!-- 不合格原因 -->
<view class="card__row card__row--stack">
<text class="card__label">不合格原因</text>
<view class="card__value-wrap">
<textarea class="remark-input" v-model="layingOffForm.UnqualifiedReason" placeholder="请输入"
:maxlength="200" auto-height />
</view>
</view>
<!-- 整改要求 -->
<view class="card__row card__row--stack">
<text class="card__label">整改要求</text>
<view class="card__value-wrap">
<textarea class="remark-input" v-model="layingOffForm.RectifyRequirement" placeholder="请输入"
:maxlength="200" auto-height />
</view>
</view>
</view>
<!-- 备注 -->
<view class="card__row card__row--stack">
<text class="card__label">备注</text>
<view class="card__value-wrap">
<textarea class="remark-input" v-model="layingOffForm.Remark" placeholder="请输入备注信息(选填)"
:maxlength="200" auto-height />
</view>
</view>
<!-- 照片 -->
<view class="card__row card__row--stack">
<text class="card__label">照片</text>
<view class="card__value-wrap">
<nbd-photo-upload ref="photoRef" v-model:attachUrl="files" typeName="AntiRust" />
</view>
</view>
</view>
</view>
<block v-for="(item, index) in info.preWeldMaterialItems" :key="item.MaterialCode || index">
<!-- 材料信息 -->
<view class="section">
@@ -92,7 +181,7 @@
</template>
<script setup>
import { ref } from 'vue'
import { ref, watch, nextTick } from 'vue'
import { onLoad, onShow } from '@dcloudio/uni-app'
import { storeToRefs } from 'pinia'
import { useUserStore } from '@/store'
@@ -107,6 +196,16 @@ const info = ref({})
const remark = ref('')
const formAttachUrl = ref('')
const id = ref('')
const layingOffForm = ref({
CuttingLength: '',
GrooveForm: '',
GrooveAngle: '',
CheckResult: '合格',
UnqualifiedReason: '',
RectifyRequirement: '',
Remark: ''
})
const check = ref({
CodeBatch: true,
@@ -116,7 +215,25 @@ const check = ref({
// 照片组件引用
const photoRef = ref(null)
const failVisible = ref(layingOffForm.value.CheckResult === '不合格')
const failAnimating = ref(false)
const failLeaving = ref(false)
watch(() => layingOffForm.value.CheckResult, async (val) => {
if (val === '不合格') {
failVisible.value = true
await nextTick()
failAnimating.value = true
failLeaving.value = false
} else {
failLeaving.value = true
failAnimating.value = false
setTimeout(() => {
failVisible.value = false
failLeaving.value = false
}, 250)
}
})
const handleSubmit = () => {
uni.showModal({