工单小程序2024-11-20
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.
 
 
 

379 lines
7.7 KiB

<template>
<view class="page">
<navbar :title="title" leftClick @leftClick="$utils.navigateBack" />
<view class="info">
<view class="Work-List">
<view class="label">
部件名
</view>
<view class="text">
<input type="text"
:disabled="!isPermission('修改')"
v-model="StepOne.component"/>
</view>
</view>
<view class="Work-List">
<view class="label">
研发确认:
</view>
<view class="text">
<input type="text"
:disabled="!isPermission('修改')"
v-model="StepOne.comfirmDevelop"/>
</view>
</view>
<view class="Work-List">
<view class="label">
品质确认:
</view>
<view class="text">
<input type="text"
:disabled="!isPermission('修改')"
v-model="StepOne.comfirmQuality"/>
</view>
</view>
<view class="Work-List">
<view class="label">
中试确认:
</view>
<view class="text">
<input type="text"
:disabled="!isPermission('修改')"
v-model="StepOne.comfirmTrial"/>
</view>
</view>
<!-- <view class="Work-List">
<view class="label">
备注:
</view>
<view class="text">
<input type="text" v-model="StepOne.remark"/>
</view>
</view> -->
</view>
<view class="list">
<view class="item-box"
:key="stepIndex"
v-for="(step, stepIndex) in stepList">
<view class="title">
{{ step.name }}
</view>
<view class="list-box"
:key="cIndex"
v-for="(c, cIndex) in step.workorderItemCheckList">
<view class="title">
{{ c.name }}
</view>
<view class="item-input"
:key="wi"
v-for="(w, wi) in c.workorderParamStepfourList"
>
<view class="image-box">
<view class="image"
:key="xi"
v-for="(x, xi) in 10">
<image
v-if="w['param' + (xi + 1)]"
:src="w['param' + (xi + 1)]"
@click="previewImage([w['param' + (xi + 1)]], 0)"
mode="aspectFill"></image>
<view class="add-image"
v-else
@click="upload(w, 'param' + (xi + 1))">
<uv-icon
size="40rpx"
name="plus"
color="#00000022"
></uv-icon>
</view>
<view class="delete"
@click="del(w, 'param' + (xi + 1))"
v-if="w['param' + (xi + 1)]">
x
</view>
</view>
</view>
<view class="Work-List"
>
<view class="label">
作业员:
</view>
<view class="text">
<input type="text"
style="width: 450rpx;"
:disabled="!isPermission('修改')"
v-model="w.operator"/>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="uni-color-btn"
v-if="isPermission('修改')"
@click="submit">
保存
</view>
</view>
</template>
<script>
export default {
data() {
return {
id: 0,
StepOne: {},
stepList : [],
index : 1,
title : '',
}
},
onLoad(arg) {
this.id = arg.id
this.index = arg.index || 2
this.title = arg.name
this.queryStepFour()
this.queryTemplateById()
},
methods: {
queryStepFour() {
this.$api('queryStepFour', {
templateId: this.id
}, res => {
if (res.code == 200) {
this.StepOne = res.result.workorderGeneralStepfour
}
})
},
// 根据id获取工单详情
queryTemplateById(){
this.$api('queryTemplateById', {
templateId : this.id
}, res =>{
if(res.code == 200){
let p = res.result.workorderStepList[this.index]
for(let i = 0;i < p.workorderProcessList.length;i++){
let step = p.workorderProcessList[i]
for(let j = 0;j < step.workorderItemCheckList.length;j++){
let check = step.workorderItemCheckList[j]
if(check.workorderParamStepfourList.length == 0){
check.workorderParamStepfourList.push({
processId : check.id,
templateId : this.id,
})
}
}
}
this.stepList = p.workorderProcessList
}
})
},
//工单信息-修改工序参数-工序卡1(选配)
updateParamStepOne(item){
return new Promise((success, error) => {
let data = JSON.parse(JSON.stringify(item))
delete data.updateBy
delete data.updateTime
delete data.createBy
delete data.createTime
for (let k in data) {
if(!data[k] || data[k] == 'null'){
data[k] = ''
}
}
this.$api('updateParamStepFour', data, res => {
if(res.code == 200){
success(res)
}else{
error(res)
}
})
})
},
async submit(){
console.log(this.stepList);
let StepOne = JSON.parse(JSON.stringify(this.StepOne))
delete StepOne.updateBy
delete StepOne.updateTime
delete StepOne.createBy
delete StepOne.createTime
// 修改常规参数
this.$api('updateGeneralStepFour', StepOne, res => {
})
uni.showLoading({
title: '保存中...',
})
// 任务列表
let tasks = []
for(let i = 0;i < this.stepList.length;i++){
let step = this.stepList[i]
for(let j = 0;j < step.workorderItemCheckList.length;j++){
let check = step.workorderItemCheckList[j]
for(let k = 0;k < check.workorderParamStepfourList.length;k++){
let params = check.workorderParamStepfourList[k]
// 将请求添加到任务
tasks.push(this.updateParamStepOne(params))
}
}
}
// 等待任务所有完成
await Promise.all(tasks)
uni.showToast({
title: '保存成功',
icon: 'none'
})
setTimeout(uni.navigateBack, 1000, -1)
},
upload(w, key){
if(!this.isPermission('修改')){
return
}
this.$Oss.ossUploadImage({
success : url => {
w[key] = url
this.$forceUpdate()
}
})
},
del(w, key){
if(!this.isPermission('修改')){
return
}
w[key] = ''
this.$forceUpdate()
},
// deleteImage(e, w){
// w.fileList.splice(e.index, 1)
// },
// afterRead(e, w){
// let self = this
// e.file.forEach(file => {
// self.$Oss.ossUpload(file.url).then(url => {
// w.fileList.push({
// url
// })
// })
// })
// },
}
}
</script>
<style scoped lang="scss">
.page{
padding-bottom: 200rpx;
.Work-List{
display: flex;
padding: 16rpx 0rpx;
align-items: center;
.label{
width: 200rpx;
flex-shrink: 0;
}
.text{
input{
background-color: #eee;
padding: 10rpx 20rpx;
border-radius: 20rpx;
}
}
}
.info{
padding: 30rpx;
input{
width: 430rpx;
}
}
.list{
padding: 0 30rpx;
.list-box{
padding: 20rpx 0;
padding-left: 40rpx;
.item-input{
padding-left: 40rpx;
.label{
width: 130rpx;
}
.image-box{
display: flex;
width: 100%;
flex-shrink: 0;
flex-wrap: wrap;
.image{
width: 100rpx;
height: 100rpx;
margin: 10rpx;
position: relative;
image{
width: 100%;
height: 100%;
border-radius: 20rpx;
}
.add-image{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
border: 1rpx solid #00000022;
border-radius: 20rpx;
}
.delete{
width: 30rpx;
height: 30rpx;
background-color: #00000066;
color: #fff;
position: absolute;
right: 0;
top: 0;
font-size: 22rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
}
}
}
input{
width: 320rpx;
}
}
}
</style>