From e6c3fccc9e412e79964a6dc2dae4c3da0c80095c Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期二, 26 十一月 2024 15:22:28 +0800
Subject: [PATCH] 完成检验下单、检验任务、报告生成变更
---
src/components/do/b1-inspect-order-plan/circuit-parameters1.vue | 36 ++--
src/components/tool/file-preview.vue | 30 +++
src/components/do/b1-ins-order/add.vue | 14
src/components/do/b1-inspect-order-plan/circuit-parameters2.vue | 26 +-
src/main.js | 2
src/components/do/b1-report-preparation/order.vue | 191 ++++++++++++--------
src/components/do/b1-inspect-order-plan/Inspection.vue | 147 +++++++++------
src/components/view/b1-inspect-order-plan.vue | 52 ++++-
src/components/view/b1-inspection-order.vue | 11 +
9 files changed, 318 insertions(+), 191 deletions(-)
diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue
index 57c1b7f..60c0167 100644
--- a/src/components/do/b1-ins-order/add.vue
+++ b/src/components/do/b1-ins-order/add.vue
@@ -134,9 +134,9 @@
<div class="ins_order_add" style=" display: block; ">
<div v-show="!configShow&&!equipConfigShow&&!cableConfigShow">
<el-row class="title">
- <el-col :span="6" style="padding-left: 20px;text-align: left;">濮旀墭鍗曚俊鎭� 鍗曚綅鎴愭湰鎬讳环锛�<span
+ <el-col :span="8" style="padding-left: 20px;text-align: left;">濮旀墭鍗曚俊鎭� 鍗曚綅鎴愭湰鎬讳环锛�<span
style="color: #3A7BFA">锟{total.toFixed(2)}}</span></el-col>
- <el-col :span="18" style="text-align: right;">
+ <el-col :span="16" style="text-align: right;">
<el-select v-model="template" size="medium" placeholder="涓嬪崟妯℃澘" style="margin-right: 10px;" v-show="active==1"
@change="selectInsOrderTemplateById">
<el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name">
@@ -234,7 +234,7 @@
<div class="search_label"><span class="required-span">* </span>鏍峰搧鏁伴噺锛�</div>
<div class="search_input">
<el-input-number size="small" v-model="addObj.sampleNum" :min="1" :max="100" :precision="0"
- style="width: 65%;" @change="addStandardTree" :disabled="active>1"></el-input-number>
+ style="width: 100%;" @change="addStandardTree" :disabled="active>1"></el-input-number>
</div>
</el-col>
<!-- <el-col class="search_thing" :span="6">
@@ -356,7 +356,7 @@
:disabled="active>1"
type="date"
placeholder="閫夋嫨鏃ユ湡"
- size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+ size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
</el-date-picker>
</div>
</el-col>
@@ -368,7 +368,7 @@
:disabled="active>1"
type="date"
placeholder="閫夋嫨鏃ユ湡"
- size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+ size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
</el-date-picker>
</div>
</el-col>
@@ -1415,7 +1415,7 @@
})
})
// 鏂囦欢淇℃伅
- this.componentData0.entity.insOrderId = this.currentId
+ this.componentData0.entity.insOrderId = this.currentId;
this.$refs.fileList.selectList()
}
},
@@ -2847,7 +2847,7 @@
}).then(res => {
this.orderType = res.data
if (res.data.length > 0) {
- this.addObj.orderType = res.data[0].value
+ this.addObj.orderType = 'C'
}
})
},
diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 2130739..32ee71d 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -259,7 +259,7 @@
<el-row class="title">
<el-col :span="12" style="padding-left: 20px;text-align: left;" :class="{noShow:noBack}">妫�楠屽崟璇︽儏
</el-col>
- <el-col :span="12" style="text-align: right;display: flex;align-items: center;justify-content: end">
+ <el-col :span="12" style="text-align: right;display: flex;align-items: center;justify-content: end;margin-top: 16px;">
<el-button size="small" type="primary" @click="versionDialogVisible=true" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')">鐢佃皟/闈炵數璋冩ā鏉垮垏鎹�</el-button>
<el-select v-model="template" size="medium" placeholder="鐢佃矾棰勮妯℃澘" style="margin-right: 10px;margin-left: 10px;" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')"
@change="selectInsProductTemplateById">
@@ -272,7 +272,7 @@
<el-button size="medium" @click="templateDia=true" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')&&addInsProductTemplatePower">
<span style="color: #3A7BFA;">淇濆瓨妯℃澘</span>
</el-button>
- <el-button size="small" type="primary" @click="sampleVisible=true;uploadSample()">鏍峰搧鍒囨崲</el-button>
+ <!-- <el-button size="small" type="primary" @click="sampleVisible=true;uploadSample()">鏍峰搧鍒囨崲</el-button> -->
<el-button size="small" type="primary" @click="taskVisible=true" v-show="!isLook">浠诲姟鍒囨崲</el-button>
<el-button size="small" type="primary" @click="handleSubmit" v-if="state==1"
:loading="submitLoading">鎻愪氦</el-button>
@@ -429,10 +429,10 @@
</template>
<template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'">
<div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode">
- <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i>
+ <!-- <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i> -->
<div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div>
- <i class="el-icon-caret-right table_caret" style="width: 16px;"
- v-if="!currentFiberOpticTape&&!currentFiberOptic" @click="caretSample(1)"></i>
+ <!-- <i class="el-icon-caret-right table_caret" style="width: 16px;"
+ v-if="!currentFiberOpticTape&&!currentFiberOptic" @click="caretSample(1)"></i> -->
</div>
</template>
<template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧鍨嬪彿'">
@@ -750,7 +750,8 @@
</div>
<el-upload :action="action"
:data="{
- orderId:id,
+ orderId:this.orderId0,
+ sampleId:id,
sonLaboratory:sonLaboratory
}"
v-if="state==1&&fileAdd"
@@ -889,28 +890,31 @@
:rows="2"></el-input>
</div>
</div>
- <table border="1" cellpadding="10" class="thermal-table">
- <tr style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;">
- <td>鏍峰搧</td>
- <td>鏍峰搧缂栧彿</td>
- <td>鍨嬪彿</td>
- <td>妫�楠岄」</td>
- <td>妫�楠屽瓙椤�</td>
- <td>宸ユ椂</td>
- </tr>
- <template v-for="(item,index) in sampleProduct">
- <tr>
- <td :rowspan="item.insProduct.length+1">{{ item.sample }}</td>
- <td :rowspan="item.insProduct.length+1">{{ item.sampleCode }}</td>
- <td :rowspan="item.insProduct.length+1">{{ item.model }}</td>
+ <template v-for="(x,y) in newUserInfo">
+ <p style="margin: 10px 0;"><el-tag size="small">{{x.name}}</el-tag> 宸ユ椂濉啓</p>
+ <table border="1" cellpadding="10" class="thermal-table">
+ <tr style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;">
+ <td>鏍峰搧</td>
+ <td>鏍峰搧缂栧彿</td>
+ <td>鍨嬪彿</td>
+ <td>妫�楠岄」</td>
+ <td>妫�楠屽瓙椤�</td>
+ <td>宸ユ椂</td>
</tr>
- <tr v-for="(m,i) in item.insProduct" :key="item.id+i">
- <td>{{ m.inspectionItem }}</td>
- <td>{{ m.inspectionItemSubclass }}</td>
- <td><el-input-number v-model="m.outputWorkTime" :min="0" :max="100" label="宸ユ椂" size="small"></el-input-number></td>
- </tr>
- </template>
- </table>
+ <template v-for="(item,index) in sampleProduct">
+ <tr>
+ <td :rowspan="item.insProduct.length+1">{{ item.sample }}</td>
+ <td :rowspan="item.insProduct.length+1">{{ item.sampleCode }}</td>
+ <td :rowspan="item.insProduct.length+1">{{ item.model }}</td>
+ </tr>
+ <tr v-for="(m,i) in item.insProduct" :key="item.id+i">
+ <td>{{ m.inspectionItem }}</td>
+ <td>{{ m.inspectionItemSubclass }}</td>
+ <td><el-input-number v-model="x.timeArr[i]" :min="0" :max="100" label="宸ユ椂" size="small"></el-input-number></td>
+ </tr>
+ </template>
+ </table>
+ </template>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="experimentDia = false">鍙� 娑�</el-button>
@@ -949,7 +953,7 @@
import PowerCapacity from './power-capacity.vue'
import filePreview from '../../tool/file-preview.vue'
export default {
- props: ['sonLaboratory', 'orderId', 'state','inspectorList','version','orderStateId','isLook','num1','noBack'],
+ props: ['sonLaboratory', 'orderId', 'state','inspectorList','version','orderStateId','isLook','num1','noBack','orderId0','userInfo'],
components: {
ValueTable,
CircuitParameters1,
@@ -1010,8 +1014,9 @@
},
componentData0: {
entity: {
- insOrderId:'',
- sonLaboratory:this.sonLaboratory
+ insSampleId:'',
+ sonLaboratory:this.sonLaboratory,
+ insOrderId:''
},
isIndex: true,
showSelect: false,
@@ -1156,6 +1161,7 @@
templateLoading:false,
templateName:'',
addInsProductTemplatePower:false,//閰嶇疆妯℃澘鏉冮檺
+ newUserInfo:[]
}
},
// 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
@@ -1191,11 +1197,12 @@
id(val) {
this.loading = true
this.$axios.post(this.$api.insOrderPlan.doInsOrder, {
- id: val,
+ sampleId: val,
laboratory: this.sonLaboratory
}).then(async res => {
this.insOrder = res.data.insOrder;
- this.componentData0.entity.insOrderId = val;
+ this.componentData0.entity.insSampleId = val;
+ this.componentData0.entity.insOrderId = this.orderId0;
this.$refs.fileList.selectList()
this.urgentList.forEach(m => {
if (m.value == this.insOrder.type) {
@@ -3218,7 +3225,7 @@
},
// 澶嶆牳
upInsReview(e,type) {
- this.$confirm(`鏄惁${type}?`, "鎻愮ず", {
+ this.$confirm(type=='缁撴潫璇曢獙'?'纭缁撴潫璇曢獙锛熺‘瀹氬悗姝ゅ鎵樺崟鍋滄璇曢獙锛屽苟涓旀棤娉曞啀娆℃楠岋紒':`鏄惁${type}?`, "鎻愮ず", {
confirmButtonText: "纭畾",
cancelButtonText: "鍙栨秷",
type: "warning"
@@ -3227,7 +3234,7 @@
// 缁х画璇曢獙
this.reviewLoading = true;
this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
type: e,
laboratory: this.sonLaboratory,
tell: null
@@ -3251,7 +3258,7 @@
if (this.noReason) {
this.reviewLoading = true;
this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
type: 0,
laboratory: this.sonLaboratory,
tell: this.noReason
@@ -3280,18 +3287,18 @@
return
}
}
- let num =0
- this.sampleProduct.forEach(item=>{
- item.insProduct.forEach(a=>{
- if(!a.outputWorkTime){
- num++
- }
- })
- })
- if(num>0){
- this.$message.error('璇疯緭鍏ュ畬鎴愬伐鏃�')
- return
- }
+ // let num =0
+ // this.newUserInfo.forEach(item=>{
+ // item.timeArr.forEach(a=>{
+ // if(!a){
+ // num++
+ // }
+ // })
+ // })
+ // if(num>0){
+ // this.$message.error('璇疯緭鍏ュ畬鎴愬伐鏃�')
+ // return
+ // }
this.experimentDia = false
this.experimentDia0 = false
if(this.insOrder.orderType=='C'){
@@ -3311,6 +3318,21 @@
return
}
this.experimentDia = true
+ this.newUserInfo = []
+ this.userInfo.name.forEach((item,index)=>{
+ let timeArr = []
+ this.sampleProduct.forEach(m=>{
+ m.insProduct.forEach(a=>{
+ timeArr.push(0)
+ })
+ })
+ let obj = {
+ name:item,
+ id:this.userInfo.ids[index],
+ timeArr:timeArr
+ }
+ this.newUserInfo.push(obj)
+ })
if (this.sonLaboratory === '鐢佃矾璇曢獙') {
this.experimentDia0 = true
}
@@ -3323,27 +3345,30 @@
this.addVerifyDia = false
this.submitLoading = true;
this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
laboratory: this.sonLaboratory,
}).then(res => {
if (res.code === 200) {
let auxiliaryOutputWorkingHoursList = []
this.sampleProduct.forEach(item=>{
- item.insProduct.forEach(a=>{
- let obj = {
- inspectionItem:a.inspectionItem,
- outputWorkTime:a.outputWorkTime,
- inspectionItemSubclass:a.inspectionItemSubclass,
- sample:item.sampleCode,
- insProductId:a.id,
- num:item.num1
- }
- auxiliaryOutputWorkingHoursList.push(obj)
+ item.insProduct.forEach((a,i)=>{
+ this.newUserInfo.forEach(b=>{
+ let obj = {
+ inspectionItem:a.inspectionItem,
+ outputWorkTime:b.timeArr[i],
+ inspectionItemSubclass:a.inspectionItemSubclass,
+ sample:item.sampleCode,
+ insProductId:a.id,
+ num:item.num1,
+ check:b.id
+ }
+ auxiliaryOutputWorkingHoursList.push(obj)
+ })
})
})
if(!res.data||res.data.length==0){
this.$axios.post(this.$api.insOrderPlan.submitPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
laboratory: this.sonLaboratory,
verifyUser: this.verifyUser,
entrustCode: this.insOrder.entrustCode,
@@ -3382,7 +3407,7 @@
type: ""
}).then(() => {
this.$axios.post(this.$api.insOrderPlan.submitPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
laboratory: this.sonLaboratory,
verifyUser: this.verifyUser,
auxiliaryOutputWorkingHoursList:auxiliaryOutputWorkingHoursList,
@@ -3413,7 +3438,7 @@
async handleCType(){
if(this.insOrder.departmentLims=='璐ㄩ噺閮�'){
await this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
- orderId: this.orderId,
+ sampleId: this.orderId,
type: 1,
laboratory: this.sonLaboratory,
tell: null
diff --git a/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue b/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
index 8c83ab2..b58a998 100644
--- a/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
+++ b/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
@@ -86,7 +86,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="16">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -127,7 +127,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="16">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -189,7 +189,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="16">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -235,7 +235,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="17">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -302,7 +302,7 @@
{
name:'鐢靛帇椹绘尝姣�',
unit:'/',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:'',
conclusion:'鍚堟牸',
portList:[],
@@ -312,7 +312,7 @@
{
name:'鍚屾瀬鍖栭殧绂诲害',
unit:'dB',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:'',
conclusion:'鍚堟牸',
portList:[],
@@ -323,7 +323,7 @@
name:'浜掕皟',
band:'2100MHz',
unit:'dB',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:'',
conclusion:'鍚堟牸',
portList:[],
@@ -333,7 +333,7 @@
{
name:'鍋忓樊',
unit:'dB',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:'',
conclusion:'鍚堟牸',
portList:[],
@@ -344,7 +344,7 @@
name:'鏈�澶ц�﹀悎搴�',
unit:'dB',
band:'2100MHz',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:'',
conclusion:'鍚堟牸',
portList:[],
@@ -479,19 +479,19 @@
this.angleList = angleList
this.upTemplateState = false;
}
- let tell = ''
- if(item.tell.includes(',')){
- item.tell.split(',').forEach((m,i)=>{
- tell = tell + m+ (i==item.tell.split(',').length-1?'':'<br/>')
+ let ask = ''
+ if(item.ask.includes(',')){
+ item.ask.split(',').forEach((m,i)=>{
+ ask = ask + m+ (i==item.ask.split(',').length-1?'':'<br/>')
})
}else{
- tell = item.tell
+ ask = item.ask
}
- console.log(tell)
+ console.log(ask)
let obj = {
inspectionItemSubclass: item.inspectionItemSubclass,
unit:item.unit,
- tell:tell,
+ ask:ask,
result:n.result,
id:item.id,
often:n.often,
@@ -773,8 +773,8 @@
this.$delete(this.loading, y)
this.$set( this.loading, y, true)
this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
- orderId:this.orderId,
- sampleId:this.sampleId,
+ // orderId:this.orderId,
+ sampleId:this.orderId,
sonLaboratory:h.projectList[0].sonLaboratory,
frequency:h.band,
insProductResult2s:arr
diff --git a/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue b/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
index ecd3ef7..4e84e59 100644
--- a/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
+++ b/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
@@ -86,7 +86,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="16">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -127,7 +127,7 @@
<div style="text-align: center;">{{ n.unit }}</div>
</el-col>
<el-col :span="2">
- <div style="text-align: center;" v-html="n.tell"></div>
+ <div style="text-align: center;" v-html="n.ask"></div>
</el-col>
<el-col :span="16">
<div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
@@ -213,7 +213,7 @@
{
inspectionItemSubclass:'鐢靛帇椹绘尝姣�',
unit:'/',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:0,
portList:[],
angleList:[],
@@ -222,7 +222,7 @@
{
inspectionItemSubclass:'鍚屾瀬鍖栭殧绂诲害',
unit:'dB',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:0,
portList:[],
angleList:[],
@@ -232,7 +232,7 @@
inspectionItemSubclass:'浜掕皟',
often:'',//浜掕皟鐗规湁瀛楁
unit:'dB',
- tell:'鈮�1.45',
+ ask:'鈮�1.45',
result:0,
portList:[],
angleList:[],
@@ -350,18 +350,18 @@
this.angleList = angleList
this.upTemplateState = false
}
- let tell = ''
- if(item.tell.includes(',')){
- item.tell.split(',').forEach((m,i)=>{
- tell = tell + m+ (i==item.tell.split(',').length-1?'':'<br/>')
+ let ask = ''
+ if(item.ask.includes(',')){
+ item.ask.split(',').forEach((m,i)=>{
+ ask = ask + m+ (i==item.ask.split(',').length-1?'':'<br/>')
})
}else{
- tell = item.tell
+ ask = item.ask
}
let obj = {
inspectionItemSubclass: item.inspectionItemSubclass,
unit:item.unit,
- tell:tell,
+ ask:ask,
result:n.result,
id:item.id,
often:n.often,
@@ -649,8 +649,8 @@
this.$set( this.loading, y, true)
// this.loading[y] = true
this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
- orderId:this.orderId,
- sampleId:this.sampleId,
+ // orderId:this.orderId,
+ sampleId:this.orderId,
sonLaboratory:h.projectList[0].sonLaboratory,
frequency:h.band,
insProductResult2s:arr
diff --git a/src/components/do/b1-report-preparation/order.vue b/src/components/do/b1-report-preparation/order.vue
index 497ec80..68887e7 100644
--- a/src/components/do/b1-report-preparation/order.vue
+++ b/src/components/do/b1-report-preparation/order.vue
@@ -38,55 +38,60 @@
:append-to-body="true"
:modal="!dialogVisible0"
>
- <span>璇烽�夋嫨濮旀墭缂栧彿涓� <span style="color: #3A7BFA">{{currentInfo.entrustCode}}</span> 瑕佺敓鎴愮殑鏁版嵁</span>
+ <span style="font-size: 16px;">璇烽�夋嫨濮旀墭缂栧彿涓� <span style="color: #3A7BFA">{{currentInfo.entrustCode}}</span> 瑕佺敓鎴愮殑鏁版嵁</span>
<div style="max-height: 75vh;overflow-y: auto;">
- <el-card class="box-card" style="margin-top: 16px;" v-for="(item,index) in historyList" :key="index">
- <div slot="header" style="display: flex;justify-content: space-between;">
- <span>{{ item.laboratory }}</span>
- </div>
- <el-table
- :data="item.insOrderUserList"
- border
- style="width: 100%" @selection-change="list=>handleSelectionChange(list,item.insOrderUserList)">
- <el-table-column
- type="selection"
- width="55">
- </el-table-column>
- <el-table-column
- prop="submitTime"
- label="鎻愪氦鏃ユ湡"
- min-width="150">
- </el-table-column>
- <el-table-column
- prop="submitUserName"
- label="鎻愪氦浜�"
- min-width="90">
- </el-table-column>
- <el-table-column
- prop="term"
- label="瀹為獙闃舵"
- min-width="120">
- </el-table-column>
- <el-table-column
- prop="note"
- label="瀹為獙鎿嶄綔"
- min-width="120">
- </el-table-column>
- <el-table-column
- prop="tell"
- label="鍐嶆妫�楠屽師鍥�"
- min-width="120">
- </el-table-column>
- <el-table-column
- fixed="right"
- label="鎿嶄綔"
- min-width="100">
- <template slot-scope="scope">
- <el-button @click="lookDetail(item,scope.row.num)" type="text" size="small">鏌ョ湅</el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-card>
+ <template v-for="(a,b) in sampleList">
+ <el-divider></el-divider>
+ <p style="margin: 10px 0;font-weight: 700;">鏍峰搧锛�<el-tag size="small">{{a.insSample.sample}}</el-tag> 鏍峰搧缂栧彿锛歿{a.insSample.sampleCode}}</p>
+ <el-card class="box-card" style="margin-top: 16px;" v-for="(item,index) in a.historyList" :key="index">
+ <div slot="header" style="display: flex;justify-content: space-between;">
+ <span>{{ item.laboratory }}</span>
+ </div>
+ <el-table
+ :data="item.insOrderUserList"
+ border
+ style="width: 100%" @selection-change="list=>handleSelectionChange(list,item.insOrderUserList)">
+ <el-table-column
+ type="selection"
+ width="55">
+ </el-table-column>
+ <el-table-column
+ prop="submitTime"
+ label="鎻愪氦鏃ユ湡"
+ min-width="150">
+ </el-table-column>
+ <el-table-column
+ prop="submitUserName"
+ label="鎻愪氦浜�"
+ min-width="90">
+ </el-table-column>
+ <el-table-column
+ prop="term"
+ label="瀹為獙闃舵"
+ min-width="120">
+ </el-table-column>
+ <el-table-column
+ prop="note"
+ label="瀹為獙鎿嶄綔"
+ min-width="120">
+ </el-table-column>
+ <el-table-column
+ prop="tell"
+ label="鍐嶆妫�楠屽師鍥�"
+ min-width="120">
+ </el-table-column>
+ <el-table-column
+ fixed="right"
+ label="鎿嶄綔"
+ min-width="100">
+ <template slot-scope="scope">
+ <el-button @click="lookDetail(item,scope.row.num,a.insSample)" type="text" size="small">鏌ョ湅</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-card>
+ <p v-if="a.historyList.length==0" style="text-align: center;">鏆傛棤鍙敓鎴愮殑鏁版嵁</p>
+ </template>
</div>
<span slot="footer" class="dialog-footer">
<el-button :loading="loading0" @click="handleNoCreate">涓嶇敓鎴�</el-button>
@@ -98,7 +103,9 @@
:visible.sync="dialogVisible0"
width="100%" :fullscreen="true" :modal="false" :append-to-body="true">
<Inspection v-if="dialogVisible0"
- :orderId="currentInfo.id"
+ :orderId="sampleId"
+ :orderId0="orderId0"
+ :userInfo="{}"
:inspectorList="currentItem.inspectorList"
:sonLaboratory="currentItem.laboratory"
:state="2"
@@ -129,7 +136,7 @@
sampleModel: null,
sampleCode: null,
outEntrustCode: null,
- state: 1,
+ state: 4,
name:null,
engineering:null,
production:null,
@@ -210,7 +217,10 @@
currentItem:{},
loading0:false,
loading1:false,
- dialogVisible0:false
+ dialogVisible0:false,
+ sampleList:[],
+ sampleId:null,
+ orderId0:null,
}
},
mounted() {
@@ -242,38 +252,65 @@
handleCreateReport(row){
this.currentInfo = row
this.$axios.get(this.$api.insReport.getInsOrderStateCount+'?id='+row.id).then(res => {
- this.historyList = res.data
- this.historyList.forEach(item => {
- item.arr = []
- this.$set(item,'numValue',1)
- // item.checked = false;
- if(item.num>0){
- for(var i=0;i<item.num;i++){
- item.arr.push({
- label:'璁板綍'+(i+1),
- value:i+1
- })
+ this.sampleList = res.data
+ this.sampleList.forEach(a=>{
+ a.historyList = a.insOrderStates
+ a.historyList.forEach(item => {
+ item.arr = []
+ this.$set(item,'numValue',1)
+ if(item.num>0){
+ for(var i=0;i<item.num;i++){
+ item.arr.push({
+ label:'璁板綍'+(i+1),
+ value:i+1
+ })
+ }
}
- }
+ })
})
+ // this.historyList = res.data
+ // this.historyList.forEach(item => {
+ // item.arr = []
+ // this.$set(item,'numValue',1)
+ // // item.checked = false;
+ // if(item.num>0){
+ // for(var i=0;i<item.num;i++){
+ // item.arr.push({
+ // label:'璁板綍'+(i+1),
+ // value:i+1
+ // })
+ // }
+ // }
+ // })
this.dialogVisible = true
})
},
// 鐢熸垚鎶ュ憡
handleCreate(){
- let arr = []
- this.historyList.forEach(item => {
- item.insOrderUserList.forEach(item1 => {
- if(item1.state==1){
- arr.push({
- laboratory:item.laboratory,
- num:item1.num,
- insOrderUsersId:item1.id
- })
- }
+ let insReportDto1s = []
+ let num = 0;
+ this.sampleList.forEach(a => {
+ let insReportDto2s = []
+ a.historyList.forEach(item => {
+ item.insOrderUserList.forEach(item1 => {
+ if(item1.state==1){
+ let obj0 = {
+ laboratory:item.laboratory,
+ num:item1.num,
+ insOrderUsersId:item1.id
+ }
+ insReportDto2s.push(obj0)
+ num++
+ }
+ })
})
+ let obj0 = {
+ sampleId:a.insSample.id,
+ insReportDto2s:insReportDto2s
+ }
+ insReportDto1s.push(obj0)
})
- if(arr.length==0){
+ if(num==0){
this.$message.error("璇峰厛閫夋嫨闇�瑕佺敓鎴愮殑璁板綍锛�")
return
}
@@ -281,7 +318,7 @@
this.$axios.post(this.$api.insReport.isReport, {
id:this.currentInfo.id,
state:1,
- insReportDto1s:arr
+ insReportDto1s:insReportDto1s
},{
headers: {
'Content-Type': 'application/json'
@@ -319,12 +356,14 @@
})
},
// 鏌ョ湅妫�楠岃鎯�
- lookDetail(row,value){
+ lookDetail(row,value,insSample){
this.dialogVisible0 = true
let inspectorList = []
if(row.userName){
inspectorList = row.userName.split(',')
}
+ this.sampleId = insSample.id
+ this.orderId0 = insSample.insOrderId
this.currentItem = {
num1:value,
inspectorList:inspectorList,
diff --git a/src/components/tool/file-preview.vue b/src/components/tool/file-preview.vue
index d3c4fd5..38ea63e 100644
--- a/src/components/tool/file-preview.vue
+++ b/src/components/tool/file-preview.vue
@@ -67,6 +67,7 @@
import VueOfficeExcel from '@vue-office/excel'
//寮曞叆鐩稿叧鏍峰紡
import '@vue-office/excel/lib/index.css'
+import * as XLSX from "xlsx";
export default {
components: {
VueOfficeDocx,
@@ -164,6 +165,11 @@
return obj
})
this.csvList = arr
+ // console.log(333,this.csvList)
+ this.csvList.forEach(m=>{
+ console.log(this.calculateFormulas(m.column,m.tableData))
+ m.tableData = this.calculateFormulas(m.column,m.tableData)
+ })
}).catch( err => {
console.log(err)
})
@@ -205,6 +211,28 @@
}
return result
},
+ /**
+ * 璁$畻琛ㄦ牸鍏紡
+ *
+ * @param tableHeaders 琛ㄥご鏁版嵁
+ * @param tableData 琛ㄦ牸鏁版嵁
+ */
+ calculateFormulas(tableHeaders,tableData){
+ // 鐢熸垚 Excel Sheet 鏍煎紡
+ const sheetData = [tableHeaders.map(m=>m.label), ...tableData.map((row) => Object.values(row))];
+ const worksheet = XLSX.utils.aoa_to_sheet(sheetData);
+ // 璁$畻鍏紡
+ XLSX.utils.sheet_add_aoa(worksheet, [], { origin: -1 });
+ const newSheetData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
+ // 鏇存柊琛ㄥご鍜岃〃鏍兼暟鎹�
+ tableData = newSheetData.slice(1).map((row) =>
+ row.reduce((obj, value, index) => {
+ obj[newSheetData[0][index]] = value;
+ return obj;
+ }, {})
+ );
+ return tableData
+ },
resetStyle(){
const elements = document.querySelectorAll('[style*="pt"]');
for (const element of elements) {
@@ -213,7 +241,7 @@
element.setAttribute('style', style.replace(/pt/g, 'px'));
}
}
- }
+ },
}
}
</script>
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index d544a33..644055e 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -144,6 +144,13 @@
</el-select>
</div>
</div>
+ <div class="search_thing">
+ <div class="search_label">鏍峰搧缂栧彿锛�</div>
+ <div class="search_input">
+ <el-input size="small" placeholder="璇疯緭鍏�" clearable
+ v-model="componentData.entity.sampleCOde" @keyup.enter.native="refreshTable()"></el-input>
+ </div>
+ </div>
<div class="search_thing" style="padding-left: 30px;">
<el-button size="small" @click="refresh()">閲� 缃�</el-button>
<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
@@ -203,12 +210,17 @@
width="100px"
></el-table-column>
<el-table-column
+ prop="sampleCode"
+ label="鏍峰搧缂栧彿"
+ width="170px"
+ ></el-table-column>
+ <el-table-column
prop="type"
label="绱ф�ョ▼搴�"
width="100px"
>
<template slot-scope="scope">
- <el-tag :type="typeList.find(m=>m.value==scope.row.type).type" size="small">{{ typeList.find(m=>m.value==scope.row.type).label }}</el-tag>
+ <el-tag :type="typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).type:''" size="small">{{ typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).label:'' }}</el-tag>
</template>
</el-table-column>
<el-table-column
@@ -320,7 +332,7 @@
<div style="width: 100%;height: 100%;" v-if="activeFace >0">
<Add :active="activeFace" :currentId="currentId" :examine="examine"/>
</div>
- <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state" :orderStateId="orderStateId" :version="version" :isLook="isLook" :num1="num1"/>
+ <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state" :orderStateId="orderStateId" :version="version" :isLook="isLook" :num1="num1" :orderId0="orderId0" :userInfo="userInfo" />
<el-dialog title="鏁版嵁鏌ョ湅" :visible.sync="dataDialogVisible" width="80%">
<div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible">
<ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'" :url="$api.insOrder.selectSampleAndProductByOrderId"
@@ -502,7 +514,8 @@
entity: {
sonLaboratory: null,
insState: null,
- userId: null
+ userId: null,
+ sampleCode:null,
},
sortable:true,
isIndex: true,
@@ -609,7 +622,8 @@
activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0
currentId: null,
entityCopy: {},
- orderId: 0,
+ orderId: null,
+ orderId0:null,
personList:[],
connectVisible:false,
connect:{
@@ -659,7 +673,11 @@
upLoadStorage: false,
exportVisible: false,
upLoadExport: false,
- selectWarehouse:false
+ selectWarehouse:false,
+ userInfo:{
+ name:[],
+ ids:[]
+ }
}
},
created() {
@@ -904,7 +922,7 @@
if (row) {
this.sampleUserForm = {
entrustCode: row.entrustCode,
- insSampleId: row.id,
+ insSampleId: row.sampleId,
sonLaboratory: row.sonLaboratory,
}
this.claimVisible = true
@@ -912,11 +930,13 @@
},
confirmClaim() {
this.loading = true;
+ // this.sampleUserForm.insSampleId = this.orderId
this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, {
headers: {
'Content-Type': 'application/json'
- }
- }).then(res => {
+ },
+ noQs:true
+ },).then(res => {
if (res.code === 200 && res.data) {
this.loading = false;
this.$message.success("璁ら鎴愬姛")
@@ -1054,14 +1074,18 @@
inspectorList.push(user.name)
}
this.inspectorList = inspectorList
- this.orderId = row.id
+ this.orderId = row.sampleId
+ this.orderId0 = row.id
this.version = row.version
this.orderStateId = row.orderStateId
this.state = 1;
+ this.userInfo.name = row.userName.split(',')
+ this.userInfo.ids = row.userNameId.split(',')
this.isLook = false
},
handleConnect(row){
- this.orderId = row.id
+ this.orderId = row.sampleId
+ this.orderId0 = row.id
this.connect = {}
this.connectVisible=true;
// this.$axios.post(this.$api.insOrderPlan.upPlanUser2, {
@@ -1090,7 +1114,7 @@
// }
this.loading = true;
this.$axios.post(this.$api.insOrderPlan.upPlanUser, {
- orderId:this.orderId,
+ sampleId:this.orderId,
userId:this.connect.connectPerson,
sonLaboratory:this.componentData.entity.sonLaboratory,
}).then(res => {
@@ -1107,7 +1131,8 @@
},
handleReview(row){
this.state = 2;
- this.orderId = row.id
+ this.orderId = row.sampleId
+ this.orderId0 = row.id
this.version = row.version
this.orderStateId = row.orderStateId
this.isLook = false
@@ -1136,7 +1161,8 @@
lookHistory(row){
this.isLook = true
this.state = 2;
- this.orderId = this.currentHistory.id
+ this.orderId = this.currentHistory.sampleId
+ this.orderId0 = this.currentHistory.id
this.version = this.currentHistory.version
this.orderStateId = this.currentHistory.orderStateId
this.num1 = row.num
diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue
index c97ecc1..7996d58 100644
--- a/src/components/view/b1-inspection-order.vue
+++ b/src/components/view/b1-inspection-order.vue
@@ -489,6 +489,9 @@
</el-row>
</span>
</el-dialog>
+ <el-dialog title="鎶ュ憡涓嬭浇" :visible.sync="downVisible" width="440px">
+ <p v-for="(item,index) in downList" :key="index" style="text-align: left;">鏍峰搧缂栧彿锛歿{item.codeUrl}} <el-button type="text" icon="el-icon-download" @click="handleDown(item)">鎶ュ憡涓嬭浇</el-button></p>
+ </el-dialog>
</div>
</template>
@@ -571,7 +574,7 @@
type: 'text',
method: 'download',
disabFun: (row, index) => {
- return row.state != 4 || row.reportId == null
+ return !row.reportDtos||row.reportDtos.length==0
}
}, {
id: 'verify',
@@ -810,6 +813,8 @@
currentRole:'',
BZinfo:[],
BZDialogVisible:false,
+ downVisible:false,
+ downList:[]
}
},
watch:{
@@ -1079,6 +1084,10 @@
},
// 涓嬭浇鎶ュ憡
download(row) {
+ this.downList = row.reportDtos
+ this.downVisible = true;
+ },
+ handleDown(row){
let url = row.urlS?row.urlS:row.url;
if(url){
url = url.split('.')[0]+'.pdf'
diff --git a/src/main.js b/src/main.js
index 48c3c28..afa39b8 100644
--- a/src/main.js
+++ b/src/main.js
@@ -21,7 +21,7 @@
//鏈湴
// Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
// const javaApi = 'http://127.0.0.1:8001';
-const javaApi = 'http://192.168.20.249:8001';
+const javaApi = 'http://172.20.10.5:8001';
// //閫氫俊娴嬭瘯搴�
// Vue.prototype.LOCATIONVUE = "http://10.1.13.77:8080";
--
Gitblit v1.9.3