You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

359 lines
7.4 KiB

<template>
<!-- 详情 -->
<view class="detail-container">
<view class="info">
<view class="title">
<view>当前工序{{formData.processCode}}</view>
</view>
<!-- 主数据 -->
<view class="dec">
<view class="dec-item">
<view>完工人员</view>
<view><u-input v-model="formData.workerName" type="select" @click="showWorker = true" placeholder="请选择人员"/></view>
</view>
<view class="dec-item">
<view>是否质检:</view>
<view><u-input v-model="formData.checkFlagName" type="select" @click="showType = true" placeholder="请选择是否质检"/></view>
</view>
<view class="dec-item">
<view>完工工时:</view>
<view><u-input v-model="formData.workTerm" type="number" placeholder="请输入工时" /></view>
</view>
<view class="dec-item">
<view>完工数量:</view>
<view><u-input v-model="formData.planCount" type="number" @update:modelValue="calculatePass()" placeholder="请输入数量" /></view>
</view>
<view class="dec-item">
<view>合格数量:</view>
<view><u-input :disabled="checkFlag" v-model="formData.reportCount" type="number" placeholder="请输入合格数量" @update:modelValue="calculatePass()" /></view>
</view>
<view class="dec-item">
<view>不合格数量:</view>
<view><u-input v-model="formData.unCount" type="number" disabled="true"/></view>
</view>
</view>
</view>
<view class="footer">
<view class="btns">
<button class="sure" @click="handleSubmit" :loading='loading' :disabled='loading'>提交处理</button>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
</view>
<u-popup v-model="showWorker" mode="bottom" border-radius="14" length="30%">
<view>
<u-select v-model="showWorker" mode="mutil-column-auto" :list="workerList" @confirm="confirmSelectWorker"></u-select>
</view>
</u-popup>
<u-popup v-model="showType" mode="bottom" border-radius="14" length="30%">
<view>
<u-select v-model="showType" :list="typeList" @confirm="confirmSelectType"></u-select>
</view>
</u-popup>
</template>
<script setup lang="ts">
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
import {
ref,
getCurrentInstance
} from 'vue'
import * as workSchedulingListApi from '@/api/mes/workScheduling/index.ts'
const { proxy } = getCurrentInstance()
const params = ref({
pageNo: 1,
pageSize: 10,
})
const paramData = ref()
const checkFlag = ref(false)
const showWorker = ref(false)
const showType = ref(false)
const workerList = ref([])
const typeList = ref([{label:'',value: '1'},{label:'',value: '2'}])
const nodeInfo = ref({
planDayCode:'PO20240430-0011',
processCode:'QD_CY_01'
})
const formData = ref({
id:'',
processCode:'',
workerCode:'',
workerName:'',
checkFlag:'',
checkFlagName:'',
workTerm:'',
reportCount:'',
planCount:'',
unCount:'',
batchCode:'',
workstationCode:'',
force:'true'
})
function calculatePass(){
if(!checkFlag.value){
formData.value.unCount = formData.value.planCount - formData.value.reportCount
}
}
//提交接口
function submitData(){
proxy.$modal.loading('加载中')
workSchedulingListApi.completeHandle(formData.value).then((res) => {
proxy.$modal.closeLoading()
if (res.data) {
proxy.$modal.showToast('成功')
setTimeout(() => {
proxy.$tab.navigateBack()
}, 1500)
} else {
proxy.$modal.showToast('失败')
}
}).catch(() => {
proxy.$modal.closeLoading()
})
}
// 选择人员回调函数
function confirmSelectWorker(val){
formData.value.workerCode = val[0].value
formData.value.workerName = val[0].label
}
function confirmSelectType(val){
console.log(val[0].value == '1')
formData.value.checkFlag = val[0].value
formData.value.checkFlagName = val[0].label
if(val[0].value == '1'){
checkFlag.value = false
formData.value.reportCount = ''
formData.value.unCount = ''
}
else{
checkFlag.value=true
}
}
// 提交处理请求函数
function handleSubmit(){
proxy.$modal.confirm('确定提交处理吗').then(() => {
submitData()
})
}
onLoad((option) => {
if (option.obj) {
paramData.value = JSON.parse(decodeURIComponent(option.obj)); // 将字符串转换为对象并存入paramData
nodeInfo.value.planDayCode = paramData.value.planMasterCode
nodeInfo.value.processCode = paramData.value.workingNode
formData.value.processCode = paramData.value.workingNode
formData.value.id = paramData.value.id
formData.value.workstationCode = paramData.value.currentWorkstation
formData.value.batchCode = paramData.value.batchCode
}
})
onShow(() => {
getPageChildren()
})
// 获取选择人员函数
function getPageChildren(){
workSchedulingListApi.getCurrentWorkerList(nodeInfo.value).then((res) => {
if (res.data) {
workerList.value = transList(res.data)
} else {
}
}).catch(() => {
})
}
//数据转换
function transList(data) {
console.log(data)
const list = data.map(item => {
return {
"label": item.workerName,
"value": item.workerCode
};
});
return list;
}
</script>
<style lang="scss" scoped>
.detail-container {
min-height: 100vh;
background: white;
}
.line {
background: #f5f5f5;
height: 20rpx;
}
.info {
background: white;
}
.tab {
border-bottom: 1px solid #e4e4e4;
}
.title {
display: flex;
align-items: center;
padding: 20rpx 30rpx;
border-bottom: 1px solid #e4e4e4;
view {
&:nth-child(1) {
flex: 1;
border-left: 10rpx solid #409eff;
padding-left: 20rpx;
font-weight: bold;
}
}
}
.dec {
padding: 30rpx;
.dec-item {
padding-bottom: 30rpx;
display: flex;
view {
&:nth-child(1) {
width: 180rpx;
}
&:nth-child(2) {
color: #888888;
flex: 1;
width: 0px;
word-wrap: break-word;
}
}
}
}
.dec2 {
padding: 10rpx 30rpx;
display: flex;
view {
&:nth-child(1) {
width: 180rpx;
}
&:nth-child(2) {
color: #888888;
flex: 1;
width: 0px;
word-wrap: break-word;
}
}
}
.items {
border-radius: 12rpx;
background: #F5F5F5;
padding-bottom: 20rpx;
.items-name {
padding: 20rpx;
border-bottom: 1px solid #dedede;
}
.items-dec {
padding: 0px 20rpx;
margin-top: 20rpx;
}
}
.list {
padding: 20rpx;
.item {
display: flex;
margin-bottom: 20rpx;
.item-box {
border-radius: 12rpx;
border: 1px solid #dedede;
border-radius: 12rpx;
flex: 1;
width: 0rpx;
}
.spare-title {
padding: 20rpx 30rpx;
border-bottom: 1px solid #e4e4e4;
display: flex;
.title-txt {
color: #409eff;
font-size: 30rpx;
font-weight: bold;
flex: 1;
}
}
.dec {
color: #9c9c9c;
padding: 0rpx 30rpx 20rpx;
}
}
}
.add-btn {
display: flex;
justify-content: flex-start;
align-items: center;
}
.footer {
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
z-index: 22;
}
.btns {
display: flex;
button {
flex: 1;
}
.sure {
background: #409eff;
color: white;
border-radius: 0px;
&::after {
border: 1px solid #409eff;
border-radius: 0px;
}
}
.reset {
background: #ff7a45;
border-radius: 0px;
&::after {
border-radius: 0px;
}
}
}
</style>