From 57e76b55709e8ea88a83ab6c3f665fd9ee7fd64c Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 03 七月 2024 14:23:48 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before into master --- src/components/do/b1-inspect-order-plan/Inspection.vue | 913 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 738 insertions(+), 175 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index e245b0e..1b84f9a 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -60,6 +60,8 @@ width: 100px; text-align: center; font-size: 14px; + word-wrap: break-word; + white-space: normal; } .content { @@ -133,6 +135,18 @@ .table_caret:active{ opacity: .8; } + >>>input::-webkit-inner-spin-button { + -webkit-appearance: none !important; /* 闅愯棌寰皟鎸夐挳 */ + margin: 0 !important; /* 绉婚櫎寰皟鎸夐挳鐨勮竟璺� */ + } + + >>>input[type=number] { + -moz-appearance: textfield !important; /* 閽堝 Firefox */ + } + >>>.el-form-item__content{ + display: inline-flex; + align-items: center; + } </style> <style> .inspection .el-form-item__label { @@ -155,9 +169,12 @@ } .inspection .el-input-group__append { - padding: 0 10px; + padding: 0 14px; color: #3A7BFA; background-color: #fff; + height: 100%; + display: flex; + align-items: center; } .inspection .center-box .el-input__inner { @@ -191,11 +208,15 @@ <template> <div v-loading="loading" class="inspection"> <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">妫�楠屽崟璇︽儏</el-col> + <el-col :span="12" style="padding-left: 20px;text-align: left;">妫�楠屽崟璇︽儏 + <!-- <span style="color: #3A7BFA;"> 鏍峰搧</span> + <span v-if="currentFiberOpticTape" style="color: #3A7BFA;"> - 鍏夌氦甯�</span> + <span v-if="currentFiberOptic" style="color: #3A7BFA;"> - 鍏夌氦</span> --> + </el-col> <el-col :span="12" style="text-align: right;"> - <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button> + <!-- <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button> <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">鍏夌氦甯﹀垏鎹�</el-button> - <el-button size="small" type="primary" @click="bushingVisible=true" v-if="bushing.length>0">濂楃鍒囨崲</el-button> + <el-button size="small" type="primary" @click="bushingVisible=true" v-if="bushing.length>0">濂楃鍒囨崲</el-button> --> <el-button size="small" type="primary" @click="sampleVisible=true">鏍峰搧鍒囨崲</el-button> <el-button size="small" type="primary" @click="taskVisible=true">浠诲姟鍒囨崲</el-button> <el-button size="small" type="primary" @click="addVerifyDia = true" v-show="state==1" @@ -236,26 +257,51 @@ </el-form> </div> <div class="center"> - <div class="search"> - <el-radio-group v-model="currentTable" size="small"> - <el-radio-button :label="item.templateId" v-for="(item,index) in tableLists" :key="index" - size="small">{{ item.templateName }}</el-radio-button> - </el-radio-group> + <div class="search" style="text-align: left;display: flex;align-items: center;justify-content: space-between;overflow-x: auto;"> + <div style="display: flex;align-items: center;"> + <span v-if="tableList.length>0">妫�楠屾ā鏉匡細</span> + <el-radio-group v-model="currentTable" size="small"> + <el-radio-button :label="item.templateId" v-for="(item,index) in tableLists" :key="index" + size="small">{{ item.templateName }}</el-radio-button> + </el-radio-group> + </div> + <div style="display: flex;align-items: center;"> + <span v-if="fibers.length>0"> 鍏夌氦甯︼細</span> + <el-radio-group v-model="currentTab" size="small" v-if="fibers.length>0" @input="m=>handleChange(m,1)"> + <el-radio-button :label="item.id" v-for="(item,index) in fibers" :key="index" + size="small">{{ item.code }}</el-radio-button> + </el-radio-group> + <span v-if="fiber.length>0"> 鍏夌氦锛�</span> + <el-radio-group v-model="currentTab" size="small" v-if="fiber.length>0" @input="m=>handleChange(m,2)"> + <el-radio-button :label="item.id" v-for="(item,index) in fiber" :key="index" + size="small">{{ item.color }}</el-radio-button> + </el-radio-group> + <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" style="padding-top: 0;padding-left: 10px;"> + <el-form-item label="娓╁害:" style="margin-bottom: 0;"> + <el-input clearable v-model="otherForm.temperature" size="small" placeholder="" style="width: 50px;" @change="m=>subOtherForm(m,'temperature')"></el-input> + <span style="margin-left: 4px;">鈩�</span> + </el-form-item> + <el-form-item label="婀垮害:" style="margin-bottom: 0;"> + <el-input clearable v-model="otherForm.humidity" size="small" placeholder="" style="width: 50px;" @change="m=>subOtherForm(m,'humidity')"></el-input> + <span style="margin-left: 4px;">%</span> + </el-form-item> + </el-form> + </div> </div> - <div class="center-box" id="nav" v-loading="tableLoading"> + <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||tableLists.find(m=>m.templateId==currentTable).templateName!='娓╁害寰幆妫�楠屽師濮嬭褰�'"> <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index"> <tbody> <tr v-for="(m,i) in item.arr" :key="i"> <td :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' v-for="(n,j) in m" :key="j" v-if="n.v.mc==undefined || Object.keys(n.v.mc).length === 4" :colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" - :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> + :style="`background:${n.v.bg?n.v.bg:''};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`"> <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��' && state==1"> <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" - @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)"> + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" type="number" @mousewheel.native.prevent :key="'abc-'+'000'+index+'000'+i+'000'+j"> <el-button slot="append" type="primary" icon="el-icon-edit" size="mini" v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> </el-input> @@ -272,12 +318,12 @@ v-else-if="getInspectionValueType(n.i) == 4">/</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='缁撹'"> - <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" + <!-- <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" class="table_input" v-model="n.v.v" @change="saveInsContext()"> <el-option label="鍚堟牸" :value="1"></el-option> <el-option label="涓嶅悎鏍�" :value="0"></el-option> - </el-select> - <template v-else> + </el-select> --> + <template> <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">鍚堟牸</span> <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">涓嶅悎鏍�</span> <span v-else :style="`font-family:${n.v.ff} !important;`">寰呭畾</span> @@ -301,34 +347,219 @@ :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> - <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> + <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'"> - <div style="display: flex;flex-wrap: nowrap;align-items: center;"> - <i class="el-icon-caret-left table_caret" @click="caretSample(-1)"></i> - <div :style="`font-family:${n.v.ff} !important;`">{{currentSample.sampleCode}}</div> - <i class="el-icon-caret-right table_caret" @click="caretSample(1)"></i> + <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> + <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> </div> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧鍨嬪彿'"> <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.model!==undefined&¤tSample.model!==null">{{currentSample.model}}</div> </template> - <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='濂楃'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <!-- <i class="el-icon-caret-left table_caret" @click="caretBushing(-1)"></i> --> + <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div> + <!-- <i class="el-icon-caret-right table_caret" @click="caretBushing(1)"></i> --> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦甯�'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i class="el-icon-caret-left table_caret" @click="caretTape(-1) + " v-if="currentFiberOpticTape"></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div> + <i class="el-icon-caret-right table_caret" + v-if="currentFiberOpticTape" + @click="caretTape(1)"></i> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i class="el-icon-caret-left table_caret" @click="caretOptic(-1)" + v-if="currentFiberOptic"></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}} + </div> + <i + v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i> + </div> + </template> + <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span> </div> </td> </tr> </tbody> </table> </div> + <div class="center-box" v-loading="tableLoading" v-else> + <el-divider></el-divider> + <h4 style="margin-bottom: 20px;">娓╁害寰幆妫�楠屽師濮嬭褰�</h4> + <el-form :inline="true" :model="wareForm" class="form-inline" label-width="100px" style="justify-content: flex-start;display: flex;align-items: center;width: 100%;"> + <el-form-item label="鍨嬪彿:" style="margin-bottom: 0;"> + <el-input clearable v-model="wareForm0.model" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0;"> + <el-input clearable v-model="wareForm0.methodName" disabled size="small" placeholder=""></el-input> + </el-form-item> + <!-- <el-form-item label="妫�娴嬩緷鎹�:" style="margin-bottom: 0;"> + <el-input clearable v-model="wareForm0.sample" disabled size="small" placeholder=""></el-input> + </el-form-item> --> + <el-form-item label="寰幆娆℃暟:" style="margin-bottom: 0;"> + <el-select v-model="wareForm.inspectionItem" placeholder="璇烽�夋嫨" size="small" @change="m=>wareFormChange(m,'inspectionItem')"> + <el-option + v-for="item in numOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="娓╁害:" style="margin-bottom: 0;"> + <el-select v-model="wareForm.inspectionItemSubclass" placeholder="璇烽�夋嫨" size="small" @change="m=>wareFormChange(m,'inspectionItemSubclass')"> + <el-option + v-for="item in temperatureOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <span style="margin-left: 4px;">鈩�</span> + </el-form-item> + </el-form> + <el-divider></el-divider> + <el-form :inline="true" :model="wareForm0" label-width="100px" style="justify-content: flex-start;display: flex;align-items: center;width: 100%;"> + <el-form-item label="浠櫒鍚嶇О:"> + <el-select v-model="wareForm0.value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in temperatureOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="浠櫒缂栧彿:"> + <el-select v-model="wareForm0.value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in temperatureOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="浠櫒鍚嶇О:" style="margin-left: 80px;"> + <el-select v-model="wareForm0.value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in temperatureOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="浠櫒缂栧彿:"> + <el-select v-model="wareForm0.value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in temperatureOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <el-table + :data="wareTableData" + border + style="width: 100%;margin-bottom: 30px;" align="center"> + <el-table-column + label="搴忓彿" + type="index" + width="65" + align="center" + > + </el-table-column> + <el-table-column + prop="bushColor" + label="绠¤壊鏍�" + width="120" + align="center"> + </el-table-column> + <el-table-column + prop="code" + label="鍏夌氦甯︾紪鍙�" + width="150" + align="center"> + </el-table-column> + <el-table-column + prop="color" + label="鍏夌氦鑹叉爣" + align="center" + width="120"> + </el-table-column> + <el-table-column + prop="inspectionItemClass" + label="鍏夌氦椤圭洰" + align="center" + width="130"> + </el-table-column> + <el-table-column + prop="value0" + label="澶栫" + align="center" + width="130"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.value0" placeholder="" @change="m=>changeItem(m,0)"></el-input> + </template> + </el-table-column> + <el-table-column + prop="value1" + label="鍐呯" + align="center" + width="130"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.value1" placeholder="" @change="m=>changeItem(m,1)"></el-input> + </template> + </el-table-column> + <el-table-column + prop="zip" + align="center" + label="骞冲潎鍊�" + min-width="150"> + </el-table-column> + <el-table-column + prop="lastValue" + label="琛板噺宸�" + align="center" + min-width="150"> + </el-table-column> + <el-table-column + prop="insResult" + label="缁撹" + align="center" + min-width="150"> + <template slot-scope="scope"> + <span v-if="scope.row.insResult===1" style="color: green;">鍚堟牸</span> + <span v-if="scope.row.insResult===0" style="color: red;">涓嶅悎鏍�</span> + <span v-else>寰呭畾</span> + </template> + </el-table-column> + </el-table> + </div> <el-upload :action="action" :data="{ orderId:id }" - v-show="state==1" + v-show="state==1&&fileAdd" :on-success="handleSuccessUp" :show-file-list="false" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload" + style="width: 80px !important;" :on-error="onError" ref='upload'> - <el-button size="small" type="primary" :loading="upLoading">闄勪欢涓婁紶</el-button></el-upload> + <el-button size="small" type="primary">闄勪欢涓婁紶</el-button></el-upload> <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList" :componentData="componentData0" :delUrl="$api.insOrderPlan.delfile" @@ -337,7 +568,7 @@ <el-drawer title="鍏夌氦鍒囨崲" :visible.sync="fiberOpticVisible" :size="500"> <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeOptic" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticVisible"> + :current-row-key="currentKey2" :row-key="record=>record.index" v-if="fiberOpticVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="bushColor" label="绠″鑹叉爣" min-width="100px" show-overflow-tooltip></el-table-column> @@ -350,7 +581,7 @@ <el-drawer title="鍏夌氦甯﹀垏鎹�" :visible.sync="fiberOpticTapeVisible" :size="500"> <el-table class="el-table" ref="fiberOpticTapeTable" :data="fiberOpticTape" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeTape" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticTapeVisible"> + :current-row-key="currentKey1" :row-key="record=>record.index" v-if="fiberOpticTapeVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="code" label="鍏夌氦甯︾紪鍙�" min-width="110px" show-overflow-tooltip></el-table-column> @@ -363,7 +594,7 @@ <el-drawer title="濂楃鍒囨崲" :visible.sync="bushingVisible" :size="500"> <el-table class="el-table" ref="bushingTable" :data="bushing" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeBushing" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="bushingVisible"> + :current-row-key="currentKey0" :row-key="record=>record.index" v-if="bushingVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="color" label="绠¤壊鏍�" min-width="100px" show-overflow-tooltip></el-table-column> @@ -436,6 +667,7 @@ <script> import ValueTable from '../../tool/value-table.vue' import file from '../../../util/file' + import excelFunction from '../../../util/excelFountion' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -443,6 +675,7 @@ }, data() { return { + fileAdd:false, sampleVisible: false, taskVisible: false, submitLoading: false, @@ -484,11 +717,15 @@ isIndex: true, showSelect: false, select: false, - selectMethod: '', sort: false, init:false, do: [ { + id: 'handleDown', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + },{ id: 'delete', font: '鍒犻櫎', type: 'text', @@ -496,12 +733,7 @@ disabFun: (row, index) => { return this.state!=1 } - }, { - id: 'handleDown', - font: '涓嬭浇', - type: 'text', - method: 'handleDown' - }, + } ], isPage: false, linkEvent: {}, @@ -535,6 +767,9 @@ ps: {}, param: {}, currentKey: 1, + currentKey0: 1, + currentKey1: 1, + currentKey2: 1, comparisonList: [], excelMethodList: [], equipOptions: [], @@ -560,7 +795,25 @@ currentFiberOptic:null,//褰撳墠鍏夌氦 currentBushing:null,//褰撳墠濂楃 tableLoading:false, - upLoading:false + upLoading:false, + temptList:null, + fiber:[], + fibers:[], + currentTab:null, + wareForm:{ + inspectionItem:1, + inspectionItemSubclass:20, + }, + wareForm0:{}, + numOptions:[], + temperatureOptions:[], + wareTableData:[ + {} + ], + otherForm:{ + humidity:null, + temperature:null, + }, } }, computed: { @@ -584,6 +837,7 @@ this.getComparisonList() this.getAuthorizedPerson() this.scrollInit() + this.getPower() }, watch: { id(val) { @@ -600,10 +854,23 @@ this.insOrder.typeName = m.label } }) + this.loading = false + if(!res.data.sampleProduct||res.data.sampleProduct.length==0){ + return this.$message.error('璇ヤ换鍔℃病鏈夋牱鍝佷俊鎭�') + } this.sampleProduct = res.data.sampleProduct this.currentSample = this.HaveJson(this.sampleProduct[0]) + let insProduct = this.HaveJson(this.currentSample.insProduct) + if(insProduct&&insProduct.length>0){ + let {temperature,humidity} = insProduct[0]; + this.otherForm = { + temperature:temperature?temperature:null, + humidity:humidity?humidity:null, + } + } let list = await this.getCurrentProduct(this.currentSample.id,0) this.currentSample.insProduct = this.HaveJson(list) + console.log(this.currentSample) this.currentSample.insProduct.forEach(a => { this.param[a.id] = { insValue: [], @@ -614,10 +881,9 @@ insResult: null } }) + this.getReportModel(this.currentSample.id) if (this.currentSample.index == undefined) this.currentSample['index'] = 1 let bushing = this.currentSample.bushing - this.loading = false - // this.handleTableData() this.getTableLists(); this.componentData.currentId = val; this.currentKey = 1; @@ -629,6 +895,7 @@ this.currentFiberOptic = null; this.bushing = [] this.currentBushing = null; + this.currentTab = null; if(bushing&&bushing.length>0){ this.bushing = bushing } @@ -644,9 +911,65 @@ } }) } - } + }, }, methods: { + changeItem(m,index){}, + wareFormChange(m,type){ + if(m&&type){ + this.wareForm[type] = Number(m) + } + let wareForm = {...this.wareForm} + wareForm.inspectionItemSubclass = wareForm.inspectionItemSubclass+'鈩�' + this.$axios.post(this.$api.insOrderPlan.temCycle,{ + sampleId:this.currentSample.id, + ...wareForm + }).then(res => { + if (res.code == 201) return + let {productVos,sampleVo} = res.data + this.wareForm0 = sampleVo + productVos = productVos.map(m=>{ + let obj = {...m,...m.insProduct} + return obj + }) + this.wareTableData = productVos + }) + }, + subOtherForm(m,type){ + let ids = [] + for (let i in this.param) { + ids.push(i) + } + this.$axios.post(this.$api.insOrderPlan.write,{ + [type]:Number(m), + ids + }, { + headers: { + 'Content-Type': 'application/json' + }, + noQs:true + }).then(res => { + if (res.code == 201) return + this.$message.success('淇濆瓨鎴愬姛') + }) + }, + getPower(){ + let power = JSON.parse(sessionStorage.getItem('power')) + let fileDel = false + let fileAdd = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'uploadFile') { + fileAdd = true + } + if (power[i].menuMethod == 'delfile') { + fileDel = true + } + } + if (!fileDel) { + this.componentData0.do.splice(1, 1) + } + this.fileAdd = fileAdd + }, async getCurrentProduct(id,type){ this.tableLoading = true; let res = await this.$axios.post(this.$api.insOrderPlan.getInsProduct+'?id='+id+'&type='+type+'&laboratory='+this.sonLaboratory) @@ -667,6 +990,7 @@ this.fiberOpticTape = row.fibers; } this.bushingVisible = false; + this.currentKey0 = row.index }, async handleChangeOptic(row, column, event){ this.currentFiberOptic = row; @@ -683,7 +1007,7 @@ this.fiberOpticVisible = false; let list = await this.getCurrentProduct(row.id,2) this.getTableLists0(list) - this.currentKey = row.index + this.currentKey2 = row.index }, async handleChangeTape(row, column, event){ this.currentFiberOpticTape = row; @@ -707,7 +1031,7 @@ // 閰嶇疆鍏夌氦 this.fiberOptic = row.fiber; } - this.currentKey = row.index + this.currentKey1 = row.index }, async handleChangeSample(row, column, event) { this.param = {} @@ -732,6 +1056,7 @@ insResult: null } }) + this.getReportModel(row.id) let bushing = this.currentSample.bushing if(bushing&&bushing.length>0){ this.bushing = bushing @@ -739,6 +1064,35 @@ // this.handleTableData() this.getTableLists(); this.currentKey = row.index + this.currentTab = null; + }, + getReportModel(id){ + this.$axios.post(this.$api.insOrderPlan.getReportModel+'?sampleId='+id, {}).then(res => { + this.fibers = res.data['鍏夌氦甯�'] + this.fiber = res.data['鍏夌氦'] + }) + }, + async handleChange(m,type){ + if(m){ + let list = await this.getCurrentProduct(m,type) + if(list.length>0){ + list.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + this.getTableLists0(list) + }else{ + this.tableLists = [] + this.tableList = [] + this.$message.error('妫�楠岄」涓虹┖') + } + } }, handleChangeTask(row) { if (row.length > 0) this.id = row[0].id; @@ -855,6 +1209,33 @@ handleTableData() { this.excelMethodList = [] this.widthList = this.tableList[0].style.columnlen; + // 娓╁害寰幆妫�楠屽師濮嬭褰�--寮�濮� + if(this.tableLists.find(m=>m.templateId==this.currentTable)||this.tableLists.find(m=>m.templateId==this.currentTable).templateName!='娓╁害寰幆妫�楠屽師濮嬭褰�'){ + let ask = this.currentSample.insProduct[0].ask + let askList = ask.split(';') + this.numOptions = [] + for (let i = 1; i <= askList[askList.length-1]; i++) { + this.numOptions.push({ + value:i, + label:i + }) + } + let mySet1 = new Set(); + askList.forEach((m,i) => { + if(i<askList.length-1){ + mySet1.add(m.split(',')[0].replace('鈩�','')) + } + }) + this.temperatureOptions = [] + mySet1.forEach(m => { + this.temperatureOptions.push({ + value:m, + label:m + }) + }) + this.wareFormChange() + } + // 娓╁害寰幆妫�楠屽師濮嬭褰�---缁撴潫 this.tableList.forEach(a => { let mcList = [] a.template.forEach(b => { @@ -883,6 +1264,7 @@ count++ }) }) + // 闂寮�濮� this.tableList.forEach(a => { let dels = new Set() let ids = [] @@ -939,6 +1321,8 @@ } } }) + console.log(5555,a.template) + // return ids.forEach(id => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === id.r) { @@ -973,6 +1357,7 @@ } }) }) + // 闂缁撴潫 this.tableList.forEach(a => { let arrs = [] let set = new Set() @@ -1016,12 +1401,12 @@ } else { this.param[b.i].resValue = b } */ - if (b.i !== undefined) { + if (b.i !== undefined&&!this.param[b.i].resValue) { this.param[b.i].resValue = b } } if (b.v.ps != undefined && b.v.ps.value === '缁撹') { - if (b.i !== undefined) { + if (b.i !== undefined&&!this.param[b.i].insResult) { this.param[b.i].insResult = b conclusionList.forEach((n, i) => { if (n.r == b.r && n.c == b.c) { @@ -1092,6 +1477,7 @@ let id = str[0] let pId = str[3] var list = [] + // console.log(id, 'r', r , 'c',c,this.tableList) for (let a in this.tableList) { if (this.tableList[a].templateId == id) { list = this.tableList[a].arr @@ -1125,33 +1511,48 @@ } }) }) - if (item.methodName == '鑷畾涔夋柟娉�' && item.v.ps != undefined && item.v.ps.value == '缁撹') { - if (this.currentSample.insProduct.find(m => m.id == item.i)) { - let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'); + if (item.v.ps != undefined && item.v.ps.value == '缁撹') { + try { + if (this.currentSample.insProduct.find(m => m.id == item.i)) { + let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null; let res = Object.values(comValue)[0] - let comp = ask.map((m, i) => { - if (m.includes('=')) { - return res == m.split('=')[1] - } else if (m.includes('鈮�')) { - return res >= m.split('鈮�')[1] - }else if (m.includes('鈮�')) { - return res <= m.split('鈮�')[1] - }else if (m.includes('<')) { - return res < m.split('<')[1] - }else if (m.includes('>')) { - return res > m.split('>')[1] - }else if (m.includes('~')) { - let k = m.split('~') - return res >= k[0] && res <= k[1] - }else if(m.includes('-')){ - let k = m.split('-') - return res >= k[0] && res <= k[1] - }else if(m.includes('卤')){ - let k = m.split('卤') - return res >= (k[0] - k[1]) && res <= (k[0] + k[1]) + let comp = [] + if(res==''||res==null||res==undefined||res=='Infinity'){ + item.v.v = '' + }else{ + if(ask){ + comp = ask.map((m, i) => { + if (m.includes('=')) { + let str = m.split('=')[1] + if(typeof res == 'string'&&typeof str == 'string'){ + return res.trim() == str.trim() + }else{ + return eval(res) == eval(str) + } + } else if (m.includes('鈮�')) { + return eval(res) >= eval(m.split('鈮�')[1]) + }else if (m.includes('鈮�')) { + return eval(res) <= eval(m.split('鈮�')[1]) + }else if (m.includes('<')) { + return eval(res) < eval(m.split('<')[1]) + }else if (m.includes('>')) { + return eval(res) > eval(m.split('>')[1]) + }else if (m.includes('~')) { + let k = m.split('~') + return eval(res) >= eval(k[0]) && eval(res) <= eval(k[1]) + }else if(m.includes('-')){ + let k = m.split('-') + return eval(res) >= eval(k[0]) && eval(res) <= eval(k[1]) + }else if(m.includes('卤')){ + let k = m.split('卤') + return eval(res) >= eval((k[0] - k[1])) && eval(res) <= eval((k[0] + k[1])) + }else if(m.includes('锛�')){ + return eval(res) > eval(m.split('锛�')[1]) + }else if(m.includes('锛�')){ + return eval(res) < eval(m.split('锛�')[1]) + } + }) } - }) - if(this.getInspectionValueType(item.i)==1){ if (comp.every(m => m)) { item.v.v = 1 } else { @@ -1160,28 +1561,20 @@ } this.saveInsContext() } + } catch (error) { + + } + } else { - let comResult = 0; - switch (item.methodName) { - case 'AVERAGE': - let num = 0 - for (var a in comValue) { - num += comValue[a] - } - comResult = num / Object.keys(comValue).length - break; - case 'SUM': - let sum = 0 - for (var a in comValue) { - sum += comValue[a] - } - comResult = sum - break; - default: + let comResult = '' + try { + if(this.getInspectionValueType(item.i)==1){ + comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue) + }else{ let valueList = []; item.valueList.forEach(a => { valueList.push({ - name: `${this.comparisonList[a.c].label}${a.r+1}`, + name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, value: 0, }) }) @@ -1192,45 +1585,120 @@ } }) } - let str = item.v.f.replace(/=/g, ' '); + let str = item.v.f.replace(/=/g, ' ') valueList.forEach(b => { str = str.replace(b.name, b.value) }) - if (item.v.f.includes('/')) { - if (Object.getOwnPropertyNames(comValue).length == valueList.length) { - comResult = eval(str) - } else { - comResult = '' - } - } else { - if(this.getInspectionValueType(item.i)==1){ - comResult = eval(str) - }else{ - comResult = str - } - } - break; - } - list.forEach(a => { - if (a[0].r == item.r && comResult != '') { - for (var b in a) { - if (a[b].c == item.c) { - try{ - let val = parseFloat(comResult.toFixed(3)) - a[b].v.v = isNaN(val) ? '' : val - }catch(e){ - a[b].v.v = comResult - } - break - } - } + comResult = str } - }) - this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� + } catch (error) { + + } + // comResult = excelFunction.compute(item.v.f.replace(/=/g, ' '),comValue); + // switch (item.methodName) { + // case 'AVERAGE': + // let num = 0 + // for (var a in comValue) { + // num += comValue[a] + // } + // comResult = num / Object.keys(comValue).length + // break; + // case 'SUM': + // let sum = 0 + // for (var a in comValue) { + // sum += comValue[a] + // } + // comResult = sum + // break; + // case 'MEDIAN': + // let arr = [] + // for (var a in comValue) { + // arr.push(comValue[a]) + // } + // comResult = this.median(arr) + // break; + // case 'APS': + // let arr0 = [] + // for (var a in comValue) { + // arr0.push(comValue[a]) + // } + // comResult = Math.abs(arr0[0]) + // break; + // // case 'MAX': + // // let arr1 = [] + // // for (var a in comValue) { + // // arr1.push(eval(comValue[a])) + // // } + // // comResult = Math.max(...arr1) + // // break; + // // case 'MIN': + // // let arr2 = [] + // // for (var a in comValue) { + // // arr2.push(eval(comValue[a])) + // // } + // // comResult = Math.median(...arr2) + // // break; + // default: + // let valueList = []; + // item.valueList.forEach(a => { + // valueList.push({ + // name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`, + // value: 0, + // }) + // }) + // for (var a in comValue) { + // valueList.forEach(b => { + // if (b.name == a) { + // b.value = comValue[a] + // } + // }) + // } + // let str = item.v.f.replace(/=/g, ' '); + // valueList.forEach(b => { + // str = str.replace(b.name, b.value) + // }) + // str = str.replaceAll('MAX', 'Math.max') + // str = str.replaceAll('MIN', 'Math.min') + // str = str.replaceAll('锛�', ',') + // try { + // if(this.getInspectionValueType(item.i)==1){ + // comResult = eval(str) + // }else{ + // comResult = str + // } + // } catch (error) { + + // } + // break; + // } + try { + list.forEach(a => { + if (a[0].r == item.r && comResult !== '') { + for (var b in a) { + if (a[b].c == item.c) { + try{ + let val = parseFloat(comResult.toFixed(3)) + a[b].v.v = isNaN(val) ? '' : val + }catch(e){ + a[b].v.v = comResult + } + break + } + } + } + }) + this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� + } catch (error) { + + } } } }) - this.getCurrentInsProduct(pId) + try { + this.getCurrentInsProduct(pId) + } catch (error) { + + } }, getCurrentInsProduct(pId) { if (!this.tableList[0].insProductResult) { @@ -1289,10 +1757,10 @@ this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) break; case 'resValue': - this.tableList[0].lastValue = value.v.v + this.tableList[0].lastValue = value?value.v.v:'' break; case 'insResult': - this.tableList[0].insResult = value.v.v + this.tableList[0].insResult = value?value.v.v:'' break; } } @@ -1300,47 +1768,28 @@ handleExcelMethod() { if (this.excelMethodList.length > 0) { this.excelMethodList.map(item => { - item.methodName = item.v.f.split('=').length > 1 && item.v.f.split('=')[1].split('(') && item.v.f.split( - '=')[1].split('(')[0] ? item.v.f.split('=')[1].split('(')[0] : '鑷畾涔夋柟娉�'; - let valueList = []; - if (item.v.f.includes(':')) { - valueList = []; - let r0 = null; - let c0 = null; - let r1 = null; - let c1 = null; - let mode = item.v.f.split('(')[1].split(')')[0]; - let start = mode.split(':')[0] - let end = mode.split(':')[1] - c0 = this.comparisonList.find(j => j.label == start.split('')[0]).value - r0 = start.replace(/[a-zA-Z]/g, "") - 1 - c1 = this.comparisonList.find(j => j.label == end.split('')[0]).value - r1 = end.replace(/[a-zA-Z]/g, "") - 1 - for (let i = Number(r0); i <= Number(r1); i++) { - for (let u = Number(c0); u <= Number(c1); u++) { - valueList.push({ - r: i, - c: u - }) - } - } - } else { - valueList = [] - let regex = /[=\+\-\*\%\(\)\/\s]/g - let mode = item.v.f.replace(regex, ' ').split(' '); - mode.filter(m => m && !Number(m)).forEach(m => { - let r = m.replace(/[a-zA-Z]/g, "") - 1 - let c = this.comparisonList.find(j => j.label == m.split('')[0]).value - valueList.push({ - c, - r - }) - }) - } - item.valueList = valueList; + item.valueList = excelFunction.changeParameter(item.v.f); return item; }) } + }, + median(arr) { + // 瀵规暟缁勮繘琛屾帓搴� + const sortedArr = arr.sort((a, b) => a - b); + // 璁$畻鏁扮粍闀垮害鐨勪竴鍗� + const half = Math.floor(sortedArr.length / 2); + // 濡傛灉鏁扮粍闀垮害涓哄鏁帮紝杩斿洖涓棿鐨勫厓绱狅紱濡傛灉涓哄伓鏁帮紝杩斿洖涓棿涓や釜鍏冪礌鐨勫钩鍧囧�� + if (sortedArr.length % 2) { + // 濂囨暟浣嶇疆鐨勫厓绱� + return sortedArr[half]; + } else { + // 鍋舵暟浣嶇疆鐨勫钩鍧囧�� + return (sortedArr[half - 1] + sortedArr[half]) / 2; + } + }, + getValue(v){ + let str = v.v?v.v:(v.ct&&v.ct.s?v.ct.s.length>0&&v.ct.s[0].v:'').replaceAll('\n','<br/>') + return str }, getInspectionValueType(id) { for (var a in this.currentSample.insProduct) { @@ -1383,20 +1832,34 @@ } }, getSystemValue(n) { + let code = null try { - if (this.param[n.i].equipValue.v.v == null || this.param[n.i].equipValue.v.v == '') { - this.$message.error('璇峰厛閫夋嫨閲囬泦鐨勮澶�') - return - } + this.param[n.i].equipValue.forEach(a=>{ + if(a.r === n.r){ + if (a.v.v == null || a.v.v == '') { + this.$message.error('璇峰厛閫夋嫨閲囬泦鐨勮澶�') + return + }else{ + code = a.v.v + } + } + }) } catch (e) { + console.log(e); this.$message.error('鎵句笉鍒拌澶囧唴瀹�') } - this.$message.error('閲囬泦澶辫触銆愬凡寮�鏀炬墜鍔ㄦ柟寮忋��') + console.log(n, code); + fetch('http://localhost:82/寰俊鍥剧墖_20240518100811.png').then(res=>res.blob()).then(blob=>{ + console.log(blob); + const url = URL.createObjectURL(blob) + console.log(url); + }) + /* this.$message.error('閲囬泦澶辫触銆愬凡寮�鏀炬墜鍔ㄦ柟寮忋��') for (var a in this.currentSample.insProduct) { if (this.currentSample.insProduct[a].id == n.i) { this.currentSample.insProduct[a].inspectionItemType = 0 } - } + } */ }, getEquipOptions(e, id) { if (e) { @@ -1493,7 +1956,6 @@ laboratory: this.sonLaboratory, }).then(res => { if (res.code === 200) { - console.log(res.data) if(!res.data||res.data.length==0){ this.$axios.post(this.$api.insOrderPlan.submitPlan, { orderId: this.orderId, @@ -1517,7 +1979,7 @@ if(lastChar=='-'){ res.data[i] = res.data[i].slice(0, -1); } - newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'銆�'+res.data[i])) + newData.push(h('p', {style: 'font-size: 14px;color: red;'}, (Number(i)+1)+'銆�'+res.data[i])) } newData.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) this.$confirm('鎻愮ず',{ @@ -1551,15 +2013,17 @@ return }, saveInsContext() { - this.$axios.post(this.$api.insOrderPlan.saveInsContext, { - param: JSON.stringify(this.param) - }).then(res => { - if (res.code == 201) { - this.$message.error('淇濆瓨澶辫触') - return - } - this.$message.success('宸蹭繚瀛�') - }) + if(this.param){ + this.$axios.post(this.$api.insOrderPlan.saveInsContext, { + param: JSON.stringify(this.param) + }).then(res => { + if (res.code == 201) { + this.$message.error('淇濆瓨澶辫触') + return + } + this.$message.success('宸蹭繚瀛�') + }) + } }, changeEquip(val, n) { for (let i in this.equipOptions) { @@ -1637,6 +2101,85 @@ }) this.getTableLists() }, + caretBushing(num){ + let index = this.currentKey0 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓绠�') + return + } else if(index > this.bushing.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓绠�') + return + } + this.currentKey0 = index + this.currentBushing = this.HaveJson(this.bushing[index - 1]) + this.fiberOpticTape = [] + this.currentFiberOpticTape = null; + this.fiberOptic = [] + this.currentFiberOptic = null; + if( this.currentBushing.fiber&& this.currentBushing.fiber.length>0){ + // 鐩存帴閰嶇疆鍏夌氦 + this.fiberOptic = this.currentBushing.fiber; + }else if( this.currentBushing.fibers&& this.currentBushing.fibers.length>0){ + // 閰嶇疆鍏夌氦甯﹀悗锛屽啀閰嶇疆鍏夌氦 + this.fiberOpticTape = this.currentBushing.fibers; + } + }, + async caretTape(num){ + let index = this.currentKey1 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾ゅ甫') + return + } else if(index > this.fiberOpticTape.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾ゅ甫') + return + } + this.currentKey1 = index + this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1]) + this.param = {} + this.fiberOptic = [] + this.currentFiberOptic = null; + this.currentFiberOpticTape.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + this.fiberOpticTapeVisible = false; + let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1) + this.getTableLists0(list) + if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){ + // 閰嶇疆鍏夌氦 + this.fiberOptic = this.currentFiberOpticTape.fiber; + } + }, + async caretOptic(num){ + let index = this.currentKey2 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾�') + return + } else if(index > this.fiberOptic.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾�') + return + } + this.currentKey2 = index + this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1]) + this.currentFiberOptic.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + let list = await this.getCurrentProduct(this.currentFiberOptic.id,2) + this.getTableLists0(list) + }, handleSuccessUp(response, ) { this.upLoading = false; if (response.code == 200) { @@ -1665,10 +2208,10 @@ if (res.code === 200) { let url = ''; if(res.data.type==1){ - url = this.javaApi+'/img/'+res.data.url + url = this.javaApi+'/img/'+res.data.fileUrl file.downloadIamge(url,row.fileName) }else{ - url = this.javaApi+'/word/'+res.data.url + url = this.javaApi+'/word/'+res.data.fileUrl const link = document.createElement('a'); link.href = url; link.download = row.fileName; @@ -1678,6 +2221,26 @@ }).catch(error => { }) + }, + /** + * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆� + * + * @param v 瑕佹牸寮忓寲鐨勬暟鍊� + * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄 + * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟 + * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛� + */ + toFixed(v,ct){ + if(v&&ct&&ct.fa&&ct.fa.includes('##')){ + if(ct.fa.includes('.')){ + let num = ct.fa.slice(4).length + return Number(v).toFixed(num) + }else{ + return Number(v).toFixed(0) + } + }else{ + return v + } } } } -- Gitblit v1.9.3