From 12c8999bab7206bc652fd69ac4f364d84c9e7153 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 12 六月 2026 18:07:46 +0800
Subject: [PATCH] 不合格处理:支持多生产批次提交oa;oa流程查看调整
---
src/views/business/unpass/components/unPassDialog.vue | 251 +++++++++++++++++++++++++++++++-------------------
1 files changed, 155 insertions(+), 96 deletions(-)
diff --git a/src/views/business/unpass/components/unPassDialog.vue b/src/views/business/unpass/components/unPassDialog.vue
index abb940f..b6c79ae 100644
--- a/src/views/business/unpass/components/unPassDialog.vue
+++ b/src/views/business/unpass/components/unPassDialog.vue
@@ -1,73 +1,107 @@
<template>
<div>
- <el-dialog title="鏂板涓嶅悎鏍煎鐞�" :visible.sync="isShow" width="740px" :show-close="false" :close-on-click-modal="false"
- :close-on-press-escape="false">
- <div class="search">
- <el-form :inline="true" :model="unPassForm" :rules="unPassFormRules" ref="unPassForm" class="form-inline"
+ <el-dialog :title="type==='view'?'涓嶅悎鏍煎鐞嗚鎯�':'涓嶅悎鏍煎鐞嗘彁浜�'" :visible.sync="isShow" width="40%" :show-close="false" :close-on-click-modal="false"
+ :close-on-press-escape="false" append-to-body>
+ <div>
+ <el-form :model="unPassForm" :rules="unPassFormRules" ref="unPassForm"
label-width="120px">
- <div>
- <el-form-item class="headLine" label="鏍囬:" style="width: 100%" prop="headline">
- <el-input clearable v-model="unPassForm.headline" size="small" :disabled="type === 'view'" type="textarea"
- placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- </div>
- <el-form-item label="渚涘簲鍟嗗悕绉�:">
- <el-input clearable v-model="unPassForm.supplierName" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- <el-form-item label="鐗╂枡鍚嶇О:">
- <el-tooltip class="item" effect="dark" placement="top" :content="unPassForm.materialName">
- <el-input clearable v-model="unPassForm.materialName" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-tooltip>
- </el-form-item>
- <el-form-item label="鐢熶骇鎵规:">
- <el-input clearable v-model="unPassForm.productionBatch" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- <el-form-item label="鍒拌揣鏁伴噺:">
- <el-input clearable v-model="unPassForm.cargoQuantity" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿:">
- <el-input clearable v-model="unPassForm.specsModels" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- <el-form-item label="鎶ユ鏃堕棿:">
- <el-date-picker v-model="unPassForm.inspectTime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small"
- disabled style="width: 175px" type="date" placeholder="閫夋嫨鏃ユ湡">
- </el-date-picker>
- </el-form-item>
- <el-form-item label="鍙嶉浜�:">
- <el-input clearable v-model="unPassForm.feedbackUser" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
- <el-form-item label="鍙嶉鏃堕棿:" prop="feedbackTime">
- <el-date-picker v-model="unPassForm.feedbackTime" :disabled="type === 'view'" format="yyyy-MM-dd"
- value-format="yyyy-MM-dd HH:mm:ss" size="small" style="width: 175px" type="date" placeholder="閫夋嫨鏃ユ湡">
- </el-date-picker>
- </el-form-item>
- <el-form-item label="鍒嗙被:" prop="classification">
- <el-select v-model="unPassForm.classification" :disabled="type === 'view'" size="small" placeholder="璇烽�夋嫨">
- <el-option v-for="item in classificationOptions" :key="item.value" :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="涓嶅悎鏍煎綊灞�:" prop="offGradeAscription">
- <el-select v-model="unPassForm.offGradeAscription" :disabled="type === 'view'" size="small"
- placeholder="璇烽�夋嫨">
- <el-option v-for="item in offGradeAscriptionOptions" :key="item.value" :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="涓嶅悎鏍兼儏鍐垫弿杩�:" prop="unqualifiedDesc">
- <el-input clearable type="textarea" v-model="unPassForm.unqualifiedDesc" :disabled="type === 'view'"
- style="width: 484px" size="small" placeholder="璇疯緭鍏�"></el-input>
- </el-form-item>
+ <el-row >
+ <el-col :span="24">
+ <el-form-item label="鏍囬" prop="headline">
+ <el-input style="width:100%" clearable v-model="unPassForm.headline" size="small" :disabled="type === 'view'" type="textarea"
+ placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="12">
+ <el-form-item label="渚涘簲鍟嗗悕绉�">
+ <el-input style="width:100%" clearable v-model="unPassForm.supplierName" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐗╂枡鍚嶇О" prop="materialName">
+ <el-input style="width:100%" clearable v-model="unPassForm.materialName" :disabled="type==='view'" size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇鎵规">
+ <el-input style="width:100%" clearable v-model="unPassForm.productionBatch" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍒拌揣鏁伴噺">
+ <el-input style="width:100%" clearable v-model="unPassForm.cargoQuantity" disabled size="small" placeholder="璇疯緭鍏�" >
+ <template slot="append">{{unPassForm.buyUnitMeas}}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="12">
+ <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-input style="width:100%" clearable v-model="unPassForm.specsModels" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶ユ鏃堕棿">
+ <el-date-picker style="width:100%" v-model="unPassForm.inspectTime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small"
+ disabled type="date" placeholder="閫夋嫨鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="12">
+ <el-form-item label="鍙嶉浜�">
+ <el-input style="width:100%" clearable v-model="unPassForm.feedbackUser" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍙嶉鏃堕棿" prop="feedbackTime">
+ <el-date-picker style="width:100%" :picker-options="{ disabledDate: this.disabledDate }" v-model="unPassForm.feedbackTime" :disabled="type === 'view'" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd" size="small" type="date" placeholder="閫夋嫨鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="12">
+ <el-form-item label="鍒嗙被" prop="classification">
+ <el-select style="width:100%" v-model="unPassForm.classification" :disabled="type === 'view' || !unPassForm.id" size="small" placeholder="璇烽�夋嫨">
+ <el-option v-for="item in classificationOptions" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓嶅悎鏍煎綊灞�" prop="offGradeAscription">
+ <el-select style="width:100%" v-model="unPassForm.offGradeAscription" :disabled="type === 'view'" size="small"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="item in offGradeAscriptionOptions" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="24">
+ <el-form-item label="涓嶅悎鏍兼儏鍐垫弿杩�" prop="unqualifiedDesc">
+ <el-input style="width:100%" clearable type="textarea" v-model="unPassForm.unqualifiedDesc" :disabled="type === 'view'"
+ size="small" placeholder="璇疯緭鍏�"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-form>
- <el-upload v-if="type === 'add'" ref="upload" :action="action2" :on-change="beforeUpload" :on-error="onError"
+ <el-upload v-if="type !== 'view'" ref="upload" :action="action2" :on-change="beforeUpload" :on-error="onError"
:on-remove="handleRemoveFile" :on-success="getUnpassUrl" :headers="uploadHeader" :file-list="unPassFilesList">
- <el-button size="small" type="primary" style="text-align: left">闄勪欢涓婁紶</el-button>
+ <el-button icon="el-icon-upload" size="small" type="primary" style="text-align: left">闄勪欢涓婁紶</el-button>
</el-upload>
- <div v-if="type !== 'add'">
- <div style="padding-left: 40px;margin-bottom: 4px">闄勪欢锛�</div>
- <div style="padding-left: 40px;margin-bottom: 4px" v-for="item in unqualifiedHandlerFiles">
+ <div v-if="type!=='add'">
+ <div style="margin:4px 0px;font-weight: bold">闄勪欢锛�</div>
+ <div style="padding-left: 20px;margin-bottom: 4px" v-for="item in unqualifiedHandlerFiles">
<span>{{ item.fileName }}</span><el-link type="primary" style="margin-left: 20px;vertical-align: top"
:underline="false" @click="handleDown(item)">涓嬭浇</el-link>
</div>
@@ -77,13 +111,14 @@
<el-button @click="$emit('resetForm')">鍙� 娑�</el-button>
<el-button type="primary" @click="handlunPass" :loading="handlunPassLoading" v-if="type === 'add'">纭�
瀹�</el-button>
+ <el-button type="primary" @click="reSubmitPushOa" :loading="handlunPassLoading" v-if="type === 'resubmit'">閲嶆柊鎻愪氦</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
-import { getInsOrder, getUnqualifiedHandler, downFile, addUnqualifiedHandler } from '@/api/business/unpass.js'
+import { getInsOrder,getInsOrderList, getUnqualifiedHandler, downFile, addUnqualifiedHandler,reSubmitPushOa } from '@/api/business/unpass.js'
import {mapGetters} from "vuex";
export default {
name: "unPassDialog",
@@ -94,9 +129,11 @@
type: Boolean,
default: () => false
},
- orderId: {
- type: String,
- default: () => null
+ selectOrderIds: {
+ type: Array,
+ default: () => {
+ return []
+ }
},
},
data() {
@@ -126,6 +163,9 @@
],
headline: [
{ required: true, message: '璇峰~鍐欐爣棰�', trigger: 'blur' }
+ ],
+ materialName: [
+ { required: true, message: '璇峰~鍐欑墿鏂欏悕绉�', trigger: 'blur' }
]
},
unPassFilesList: [], // 涓嶅悎鏍煎鐞嗛檮浠舵暟鎹�
@@ -141,30 +181,35 @@
},
// 鏂规硶闆嗗悎
methods: {
+ disabledDate(time){
+ return time < new Date().getTime() - 86400000
+ },
getInsOrder(type, row) {
this.type = type
if (type === 'add') {
// 璧嬪�奸粯璁ゆ暟鎹�
- getInsOrder({
- orderId: this.orderId
+ getInsOrderList({
+ selectOrderIds: this.selectOrderIds
}).then(res => {
if (res.code === 200) {
- this.unPassForm.headline = `No.0005-涓ぉ瑁呭鐢电嚎-澶栬喘鍝佷笉鍚堟牸鍙嶉璇勫鍙婄籂姝i闃叉祦绋�(姝e紡鐗�)-${this.nickName}-${new Date().toISOString().substring(0, 10)}` // 鏍囬
this.unPassForm.feedbackTime = new Date().toISOString().substring(0, 10) // 鎶ユ鏃堕棿
+ this.unPassForm.headline = `No.0020-涓ぉ鑰愪笣-渚涘簲鍟嗚川閲忓紓甯稿弽棣堟祦绋�-${res.data.supplierName}-${this.unPassForm.feedbackTime}` // 鏍囬
this.unPassForm.feedbackUser = this.nickName // 鍙嶉浜�
- this.unPassForm.insOrderId = res.data.insOrder.id // 璁㈠崟id
- this.unPassForm.materialName = res.data.insOrder.sampleType // 鐗╂枡鍚嶇О
- this.unPassForm.specsModels = res.data.insOrder.partDetail // 瑙勬牸鍨嬪彿
- this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // 鍘熸潗鏂檌d
- this.unPassForm.supplierName = res.data.insOrderTemplate.supplierName // 渚涘簲鍟嗗悕绉�
- this.unPassForm.productionBatch = res.data.insOrderTemplate.updateBatchNo // 鐢熶骇鎵规
- this.unPassForm.cargoQuantity = res.data.insOrderTemplate.qtyArrived + res.data.insOrderTemplate.buyUnitMeas // 鍒拌揣鏁伴噺
- this.unPassForm.inspectTime = res.data.insOrderTemplate.sendTime.substring(0, 10) // 鎶ユ鏃堕棿
+ // this.unPassForm.insOrderId = res.data.insOrder.id // 璁㈠崟id
+ this.unPassForm.materialName = res.data.sampleType // 鐗╂枡鍚嶇О
+ this.unPassForm.specsModels = res.data.partDetail // 瑙勬牸鍨嬪彿
+ // this.unPassForm.inventoryQuantityId = res.data.inventoryQuantityId // 鍘熸潗鏂檌d
+ this.unPassForm.supplierName = res.data.supplierName // 渚涘簲鍟嗗悕绉�
+ this.unPassForm.productionBatch = res.data.updateBatchNo // 鐢熶骇鎵规
+ this.unPassForm.cargoQuantity = res.data.qtyArrived // 鍒拌揣鏁伴噺
+ this.unPassForm.buyUnitMeas = res.data.buyUnitMeas // 閲囪喘鍗曚綅
+ this.unPassForm.inspectTime = res.data.sendTime // 鎶ユ鏃堕棿
}
})
} else {
- this.getInfo(row.handlerId)
- this.unPassForm = { ...row }
+ this.getInfo(row.id)
+ console.log(row)
+ this.unPassForm = { ...row,unqualifiedHandlerFiles:[] }
}
},
getInfo(handlerId) {
@@ -180,16 +225,7 @@
downFile({
id: row.id,
}).then(res => {
- if (res.code === 200) {
- let url = '';
- if (res.data.type == 1) {
- url = this.javaApi + '/img/' + res.data.fileUrl
- this.$download.saveAs(url, row.fileName);
- } else {
- url = this.javaApi + '/word/' + res.data.fileUrl
- this.$download.saveAs(url, row.fileName);
- }
- }
+ this.$download.saveAs(res.data.fileUrl, row.fileName);
}).catch(error => {
})
@@ -202,7 +238,33 @@
delete item.orderBy
})
this.handlunPassLoading = true
- addUnqualifiedHandler(this.unPassForm).then(res => {
+ addUnqualifiedHandler({
+ ...this.unPassForm,
+ selectOrderIds: this.selectOrderIds
+ }).then(res => {
+ if (res.code === 200) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.$emit('resetForm')
+ }
+ this.handlunPassLoading = false
+ })
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
+ //閲嶆柊鎻愪氦骞朵笖鎺ㄩ�乷a
+ reSubmitPushOa(){
+ this.$refs['unPassForm'].validate((valid) => {
+ if (valid) {
+ if(this.unPassForm.unqualifiedHandlerFiles){
+ this.unPassForm.unqualifiedHandlerFiles.forEach(item => {
+ delete item.orderBy
+ })
+ }
+ this.handlunPassLoading = true
+ reSubmitPushOa(this.unPassForm).then(res => {
if (res.code === 200) {
this.$message.success('鎻愪氦鎴愬姛')
this.$emit('resetForm')
@@ -260,13 +322,10 @@
...mapGetters(["nickName"]),
action2() {
return this.javaApi + '/unqualifiedHandler/uploadFileByUnqualified'
- }
+ },
},
}
</script>
<style scoped>
-.headLine>>>.el-form-item__content {
- width: 68%;
-}
</style>
--
Gitblit v1.9.3