<template>
|
<div class="bg-1">
|
<div style="margin: 5px 15px" v-show="!configShow && !equipConfigShow">
|
<el-row class="title">
|
<el-col :span="6"
|
>委托单信息 总价:<span style="color: #3a7bfa"
|
>¥{{ total }}</span
|
></el-col
|
>
|
<el-col :span="18" style="text-align: right">
|
<el-select
|
v-model="template"
|
size="medium"
|
filterable
|
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"
|
>
|
<span style="float: left">{{ a.name }}</span>
|
<i
|
class="el-icon-delete"
|
style="float: right; color: #66b1ff; font-size: 16px"
|
@click.stop="handleDelete(a)"
|
></i>
|
</el-option>
|
</el-select>
|
<el-button
|
size="medium"
|
@click="templateDia = true"
|
v-show="active == 1"
|
>
|
<span style="color: #3a7bfa">保存模板</span>
|
</el-button>
|
<el-button
|
size="medium"
|
type="primary"
|
@click="openEquipConfig"
|
v-if="active == 1"
|
>子样品配置</el-button
|
>
|
<el-button
|
size="medium"
|
type="primary"
|
@click="openConfig"
|
v-if="addObj.sampleType === '光缆'"
|
>光纤配置</el-button
|
>
|
<el-button
|
size="medium"
|
type="primary"
|
@click="save"
|
:loading="saveLoad"
|
v-show="active == 1"
|
>提交</el-button
|
>
|
<!-- 审核 -->
|
<el-button
|
size="medium"
|
@click="upInsOrderOfState(2)"
|
:loading="saveLoad"
|
v-show="active == 3 && addObj.companyId"
|
:disabled="saveLoad"
|
>不通过</el-button
|
>
|
<el-button
|
size="medium"
|
type="primary"
|
@click="upInsOrderOfState(1)"
|
:loading="saveLoad"
|
v-show="active == 3 && addObj.companyId"
|
>通过</el-button
|
>
|
<el-button size="medium" @click="goBack">
|
<span style="color: #3a7bfa">返回</span>
|
</el-button>
|
</el-col>
|
</el-row>
|
</div>
|
<basic-container v-show="!configShow && !equipConfigShow">
|
<div class="search">
|
<el-form
|
:model="addObj"
|
:rules="formRule"
|
label-position="right"
|
inline
|
>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="委托编号:" prop="entrustCode">
|
<el-input
|
v-model="addObj.entrustCode"
|
size="small"
|
class="search_input"
|
placeholder="系统生成"
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="检验类别:" prop="orderType">
|
<el-select
|
size="small"
|
class="search_input"
|
clearable
|
v-model="addObj.orderType"
|
:disabled="active > 1"
|
>
|
<el-option
|
v-for="(a, ai) in orderType"
|
:key="ai"
|
:value="a.dictValue"
|
:label="a.dictLabel"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="制单人:" prop="custom">
|
<el-input
|
size="small"
|
class="search_input"
|
clearable
|
disabled
|
v-model="addObj.custom"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item
|
label="委托单位:"
|
prop="company"
|
class="company_input"
|
>
|
<el-input
|
readonly
|
size="small"
|
v-model="addObj.company"
|
placeholder="选择委托单位"
|
>
|
<template slot="append"
|
><el-button
|
slot="append"
|
icon="el-icon-search"
|
@click="selectUserDia = true"
|
:disabled="
|
active > 1 || addObj.company != '中天科技检测中心'
|
"
|
></el-button
|
></template>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="联系方式:" prop="phone">
|
<el-input
|
size="small"
|
placeholder="请输入"
|
class="search_input"
|
clearable
|
:disabled="active > 1"
|
v-model="addObj.phone"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="紧急程度:" prop="type">
|
<el-select
|
@change="changeType"
|
size="small"
|
class="search_input"
|
clearable
|
v-model="addObj.type"
|
:disabled="active > 1"
|
>
|
<el-option
|
v-for="(a, ai) in type"
|
:key="ai"
|
:value="a.dictValue"
|
:label="a.dictLabel"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item
|
label="样品名称:"
|
prop="sample"
|
class="sample_input"
|
>
|
<el-input readonly size="small" v-model="addObj.sample">
|
<template slot="append"
|
><el-button
|
slot="append"
|
icon="el-icon-search"
|
@click="selectStandardTree = true"
|
:disabled="active > 1"
|
></el-button
|
></template>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="样品数量:" prop="sampleNum">
|
<el-input-number
|
size="small"
|
v-model="addObj.sampleNum"
|
:min="1"
|
:max="100"
|
:precision="0"
|
@change="addStandardTree"
|
:disabled="active > 1"
|
></el-input-number>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="来样方式:" prop="formType">
|
<el-select
|
v-model="addObj.formType"
|
size="small"
|
class="search_input"
|
:disabled="active > 1"
|
>
|
<el-option
|
v-for="(a, ai) in formType"
|
:key="ai"
|
:label="a.dictLabel"
|
:value="a.dictValue"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="报告发送方式:" prop="send">
|
<el-radio-group v-model="addObj.send" :disabled="active > 1">
|
<el-radio :label="1">自取</el-radio>
|
<el-radio :label="0">其他</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item
|
label="样品处理方式:"
|
prop="processing"
|
class="processing_input"
|
>
|
<el-radio-group
|
v-model="addObj.processing"
|
:disabled="active > 1"
|
size="mini"
|
>
|
<el-radio :label="0">委托单位取回</el-radio>
|
<el-radio :label="1">实验室处理</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="工程名称:" prop="engineering">
|
<el-input
|
size="small"
|
class="search_input"
|
:placeholder="active > 1 ? '' : '请输入'"
|
clearable
|
v-model="addObj.engineering"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item
|
label="工程名称EN:"
|
prop="engineeringEn"
|
class="engineeringEn_input"
|
>
|
<el-input
|
size="small"
|
:placeholder="active > 1 ? '' : '请输入'"
|
clearable
|
v-model="addObj.engineeringEn"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="生产单位:" prop="production">
|
<el-input
|
size="small"
|
class="search_input"
|
placeholder="请输入"
|
clearable
|
v-model="addObj.production"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item
|
label="生产单位EN:"
|
prop="productionEn"
|
class="productionEn_input"
|
>
|
<el-input
|
size="small"
|
class="search_input"
|
placeholder="请输入"
|
clearable
|
v-model="addObj.productionEn"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="是否留样:" prop="isLeave">
|
<el-radio-group v-model="addObj.isLeave" :disabled="active > 1">
|
<el-radio :label="0">不留样</el-radio>
|
<el-radio :label="1">留样</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="是否涉及配套样品:" prop="mating">
|
<el-radio-group
|
:disabled="active > 1"
|
v-model="addObj.mating"
|
@change="$refs.sampleTable.doLayout()"
|
>
|
<el-radio :label="1">是</el-radio>
|
<el-radio :label="0">否</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item
|
label="OTC订单号:"
|
prop="otcCode"
|
class="otcCode_input"
|
>
|
<el-input
|
size="small"
|
:placeholder="active > 1 ? '' : '请输入'"
|
clearable
|
v-model="addObj.otcCode"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="委托人:" prop="prepareUser">
|
<el-input
|
size="small"
|
class="search_input"
|
:placeholder="active > 1 ? '' : '请输入'"
|
clearable
|
v-model="addObj.prepareUser"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="备注:" prop="remark">
|
<el-input
|
type="textarea"
|
:autosize="{ minRows: 2, maxRows: 2 }"
|
size="small"
|
clearable
|
:placeholder="active > 1 ? '' : '请输入'"
|
v-model="addObj.remark"
|
:disabled="active > 1"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
</basic-container>
|
<div
|
class="search"
|
v-if="active == 1 && !configShow && !equipConfigShow"
|
style="display: flex; background: transparent"
|
>
|
<div style="display: flex; align-items: center">
|
<div class="search_label">样品型号:</div>
|
<div class="search_input">
|
<el-select
|
v-model="model"
|
:placeholder="active > 1 ? '' : '请输入'"
|
filterable
|
allow-create
|
default-first-option
|
size="small"
|
@change="changeModel"
|
>
|
<el-option
|
v-for="item in models"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
<div style="display: flex; align-items: center">
|
<div class="search_label">检验标准:</div>
|
<div class="search_input">
|
<el-select
|
filterable
|
v-model="standardMethodListId"
|
:placeholder="active > 1 ? '' : '请输入'"
|
size="small"
|
@focus="methodFocus"
|
:loading="methodLoad"
|
@change="changeStandardMethodListId"
|
>
|
<el-option
|
v-for="item in methods"
|
:key="item.id"
|
:label="item.code"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
</div>
|
<basic-container v-show="!configShow && !equipConfigShow">
|
<div style="height: auto">
|
<el-table
|
class="el-table sampleTable"
|
ref="sampleTable"
|
:data="sampleList"
|
max-height="400px"
|
tooltip-effect="dark"
|
border
|
@selection-change="selectSample"
|
highlight-current-row
|
@row-click="rowClick"
|
style="margin-top: 10px"
|
>
|
<el-table-column
|
type="selection"
|
width="60"
|
:selectable="selectable"
|
v-if="active == 1"
|
></el-table-column>
|
<el-table-column
|
type="index"
|
label="序号"
|
width="65"
|
align="center"
|
></el-table-column>
|
<el-table-column
|
prop="sample"
|
label="样品名称"
|
align="center"
|
min-width="100"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
v-model="scope.row.sample"
|
clearable
|
:readonly="active > 1"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="sampleCode"
|
label="样品编号"
|
min-width="140"
|
align="center"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
v-model="scope.row.sampleCode"
|
clearable
|
placeholder="不填写则系统自动生成"
|
:readonly="active > 1"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="model"
|
label="样品型号"
|
align="center"
|
min-width="100"
|
>
|
<template slot-scope="scope">
|
<el-select
|
v-model="scope.row.model"
|
filterable
|
allow-create
|
default-first-option
|
placeholder="样品型号"
|
size="small"
|
@change="handleChangeModel"
|
:disabled="active > 1"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in models"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="modelNum"
|
label="型号参数"
|
width="130"
|
align="center"
|
v-if="!(active > 1)"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
v-model="scope.row.modelNum"
|
clearable
|
placeholder="非必填"
|
@keyup.enter.native="
|
methodChange(scope.row.standardMethodListId, scope.row)
|
"
|
@clear="methodChange(scope.row.standardMethodListId, scope.row)"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="standardMethodListId"
|
label="检验标准"
|
align="center"
|
min-width="100"
|
>
|
<template slot-scope="scope">
|
<el-select
|
v-model="scope.row.standardMethodListId"
|
:disabled="scope.row.model == null || active > 1"
|
placeholder="检验标准"
|
filterable
|
size="small"
|
:loading="methodLoad"
|
@change="(value) => methodChange(value, scope.row)"
|
@focus="methodFocus"
|
:readonly="active > 1"
|
style="width: 100%"
|
clearable
|
@clear="productList = []"
|
>
|
<el-option
|
v-for="item in methods"
|
:key="item.id"
|
:label="item.code"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="joinName"
|
label="配套样品名称"
|
width="140"
|
align="center"
|
v-if="addObj.mating == 1"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
type="textarea"
|
:autosize="{ minRows: 1, maxRows: 1 }"
|
v-model="scope.row.joinName"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="joinModel"
|
label="配套样品型号"
|
width="140"
|
align="center"
|
v-if="addObj.mating == 1"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
type="textarea"
|
:autosize="{ minRows: 1, maxRows: 1 }"
|
v-model="scope.row.joinModel"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="joinNum"
|
label="配套样品数量"
|
width="140"
|
align="center"
|
v-if="addObj.mating == 1"
|
>
|
<template slot-scope="scope">
|
<el-input-number
|
size="small"
|
v-model="scope.row.joinNum"
|
:min="1"
|
:max="100"
|
:precision="0"
|
:controls="false"
|
style="width: 80%"
|
></el-input-number>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="proNum"
|
label="待检项数量"
|
width="105"
|
align="center"
|
></el-table-column>
|
</el-table>
|
<el-table
|
class="el-table"
|
ref="productTable"
|
:data="productList"
|
max-height="400px"
|
tooltip-effect="dark"
|
border
|
@selection-change="selectProduct"
|
style="margin-bottom: 10px"
|
@select="upProductSelect"
|
:row-class-name="tableRowClassName"
|
v-loading="standardLoading || getProductLoad"
|
@select-all="handleAll"
|
>
|
<el-table-column
|
type="selection"
|
width="65"
|
:selectable="selectable"
|
v-if="active == 1"
|
></el-table-column>
|
<el-table-column
|
prop="inspectionItem"
|
label="检验项"
|
min-width="140"
|
show-overflow-tooltip
|
>
|
<template slot="header" slot-scope="scope">
|
<div
|
style="
|
display: flex;
|
align-items: center;
|
flex-direction: column;
|
font-size: 14px;
|
"
|
>
|
<span>检验项</span>
|
<el-input
|
v-if="active == 1"
|
v-model="inspectionItem"
|
@input="searchFilterList"
|
size="mini"
|
placeholder="请输入"
|
/>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="inspectionItemSubclass"
|
label="检验项子项"
|
min-width="140"
|
show-overflow-tooltip
|
>
|
<template slot="header" slot-scope="scope">
|
<div
|
style="
|
display: flex;
|
align-items: center;
|
flex-direction: column;
|
font-size: 14px;
|
"
|
>
|
<span>检验项子项</span>
|
<el-input
|
v-if="active == 1"
|
v-model="inspectionItemSubclass"
|
@input="searchFilterList"
|
size="mini"
|
placeholder="请输入"
|
/>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column prop="tell" label="要求描述" min-width="220px">
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
placeholder="要求描述"
|
v-model="scope.row.tell"
|
clearable
|
type="textarea"
|
:autosize="{ minRows: 1, maxRows: 3 }"
|
@change="(e) => requestChange(e, scope.row, 'tell')"
|
v-if="active == 1 && isAskOnlyRead"
|
></el-input>
|
<span v-else>
|
<template>{{ scope.row.tell }}</template>
|
</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="ask"
|
label="要求值"
|
min-width="220px"
|
v-if="isAskOnlyRead"
|
>
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
placeholder="要求值"
|
v-model="scope.row.ask"
|
clearable
|
type="textarea"
|
:autosize="{ minRows: 1, maxRows: 3 }"
|
@change="(e) => requestChange(e, scope.row, 'ask')"
|
v-if="
|
active == 1 &&
|
isAskOnlyRead &&
|
scope.row.inspectionValueType != '5'
|
"
|
></el-input>
|
<span v-else>
|
<template>{{ scope.row.ask }}</template>
|
</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="methodS"
|
label="试验方法"
|
min-width="120"
|
show-overflow-tooltip
|
>
|
<template slot="header" slot-scope="scope">
|
<div
|
style="
|
display: flex;
|
align-items: center;
|
flex-direction: column;
|
font-size: 14px;
|
"
|
>
|
<span>试验方法</span>
|
<el-input
|
v-if="active == 1"
|
v-model="methodS"
|
@input="searchFilterList"
|
size="mini"
|
placeholder="请输入"
|
/>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="unit"
|
label="计量单位"
|
width="100"
|
show-overflow-tooltip
|
></el-table-column>
|
<el-table-column
|
prop="price"
|
label="单价"
|
width="100"
|
show-overflow-tooltip
|
></el-table-column>
|
<el-table-column
|
prop="section"
|
label="区间"
|
min-width="120"
|
show-overflow-tooltip
|
></el-table-column>
|
<el-table-column
|
prop="sonLaboratory"
|
label="子实验室"
|
min-width="130"
|
show-overflow-tooltip
|
:filters="filters"
|
:filter-method="filterHandler"
|
></el-table-column>
|
</el-table>
|
</div>
|
</basic-container>
|
<el-dialog
|
title="选择样品"
|
:visible.sync="selectStandardTree"
|
width="500px"
|
>
|
<div
|
class="body"
|
style="height: 60vh; overflow-y: auto; user-select: none"
|
v-if="selectStandardTree"
|
>
|
<el-row>
|
<el-col :span="24">
|
<el-input
|
placeholder="输入关键字进行搜索"
|
suffix-icon="el-icon-search"
|
v-model="search"
|
size="small"
|
style="margin-bottom: 5px"
|
clearable
|
@blur="searchFilter"
|
@clear="searchFilter"
|
@keyup.enter.native="searchFilter"
|
></el-input>
|
</el-col>
|
</el-row>
|
<el-tree
|
:data="list"
|
ref="tree"
|
:props="{ children: 'children', label: 'label' }"
|
node-key="label"
|
:filter-node-method="filterNode"
|
@node-click="handleNodeClick"
|
highlight-current
|
@node-expand="nodeOpen"
|
@node-collapse="nodeClose"
|
:default-expanded-keys="expandedKeys"
|
@dblclick.native="activeStandardTree"
|
>
|
<div class="custom-tree-node" slot-scope="{ node, data }">
|
<el-row>
|
<el-col :span="24">
|
<span
|
><i
|
:class="`node_i ${
|
data.children != undefined
|
? data.code === '[1]'
|
? 'el-icon-folder-opened'
|
: 'el-icon-folder'
|
: 'el-icon-tickets'
|
}`"
|
></i>
|
{{ data.code }} {{ data.label }}</span
|
>
|
</el-col>
|
</el-row>
|
</div>
|
</el-tree>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="selectStandardTree = false">取 消</el-button>
|
<el-button type="primary" @click="activeStandardTree">确 定</el-button>
|
</span>
|
</el-dialog>
|
<el-dialog title="选择单位" :visible.sync="selectUserDia" width="70%">
|
<div class="body" style="height: 60vh" v-if="selectUserDia">
|
<ValueTable
|
ref="ValueTable2"
|
:url="$api.user.selectCustomPageList"
|
:componentData="componentData2"
|
/>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="selectUserDia = false">取 消</el-button>
|
<el-button type="primary" @click="selectUser">确 定</el-button>
|
</span>
|
</el-dialog>
|
<el-dialog title="保存模板" :visible.sync="templateDia" width="400px">
|
<div
|
class="body"
|
style="display: flex; align-items: center"
|
v-if="templateDia"
|
>
|
<div class="search_label" style="width: 90px">
|
<span class="required-span">* </span>模板名称:
|
</div>
|
<div class="search_input">
|
<el-input size="small" clearable v-model="templateName"></el-input>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="templateDia = false">取 消</el-button>
|
<el-button
|
type="primary"
|
@click="addTemplateDia"
|
:loading="templateLoading"
|
>确 定</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="检验下发"
|
:visible.sync="issuedDialogVisible"
|
width="450px"
|
:close-on-click-modal="false"
|
:close-on-press-escape="false"
|
:show-close="false"
|
>
|
<div class="body" style="max-height: 60vh">
|
<el-row style="margin-bottom: 20px">
|
<el-col :span="8" style="text-align: right">
|
<div><span class="required-span">* </span>约定时间:</div>
|
</el-col>
|
<el-col :span="16">
|
<el-date-picker
|
size="small"
|
v-model="distributeData.appointed"
|
:picker-options="{ disabledDate: this.disabledDate }"
|
type="date"
|
placeholder="选择日期"
|
value-format="yyyy-MM-dd"
|
style="width: 100%"
|
format="yyyy-MM-dd"
|
>
|
</el-date-picker>
|
</el-col>
|
</el-row>
|
<el-row style="margin-bottom: 20px">
|
<el-col :span="8" style="text-align: right">
|
<div>
|
<span class="required-span" v-if="addObj.type == 2">* </span
|
>指派人员:
|
</div>
|
</el-col>
|
<el-col :span="16">
|
<el-select
|
multiple
|
v-model="distributeData.userId"
|
placeholder="请选择"
|
size="small"
|
filterable
|
style="width: 100%"
|
@change="changeUser"
|
>
|
<el-option-group
|
v-for="(item, index) in Object.keys(personList)"
|
:key="index"
|
:label="item"
|
>
|
<el-option
|
v-for="op in personList[item]"
|
:key="op.id"
|
:label="op.name"
|
:value="op.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-col>
|
</el-row>
|
<el-row
|
v-if="distributeData.userId.length > 0"
|
style="margin-bottom: 20px"
|
>
|
<el-col :span="8" style="text-align: right">
|
<div><span class="required-span">* </span>试验室:</div>
|
</el-col>
|
<el-col :span="16">
|
<el-select
|
v-model="distributeData.sonLaboratory"
|
placeholder="请选择"
|
size="small"
|
filterable
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in sonLaboratoryList"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
</el-row>
|
<el-row style="margin-bottom: 20px">
|
<el-col :span="8" style="text-align: right">
|
<div><span class="required-span">* </span>创建委托单:</div>
|
</el-col>
|
<el-col :span="16">
|
<el-select
|
v-model="distributeData.isCreate"
|
placeholder="请选择"
|
size="small"
|
filterable
|
style="width: 100%"
|
>
|
<el-option label="是" :value="true"></el-option>
|
<el-option label="否" :value="false"></el-option>
|
</el-select>
|
</el-col>
|
</el-row>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="issuedDialogVisible = false">取 消</el-button>
|
<el-button type="primary" @click="submitForm2" :loading="upLoad"
|
>确 定</el-button
|
>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog title="不通过原因" :visible.sync="noDialogVisible" width="400px">
|
<div class="body" style="max-height: 60vh">
|
<el-row>
|
<el-col :span="8" style="text-align: right">
|
<div><span class="required-span">* </span>不通过原因:</div>
|
</el-col>
|
<el-col :span="16">
|
<el-input
|
v-model="tell"
|
size="small"
|
placeholder="请输入不通过原因"
|
></el-input>
|
</el-col>
|
</el-row>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="(noDialogVisible = false), (tell = '')"
|
>取 消</el-button
|
>
|
<el-button type="primary" @click="submitTell" :loading="noLoading"
|
>确 定</el-button
|
>
|
</el-row>
|
</span>
|
</el-dialog>
|
<fiberOpticConfig
|
:fiberPairing="fiberPairing"
|
:currentId="currentId"
|
@saveFiberopticConfig="saveFiberConfigEvent($event)"
|
v-if="configShow && examine == 0"
|
:active="active"
|
:inspectionItemST="inspectionItemST"
|
/>
|
<fiberOpticConfigReadOnly
|
:currentId="currentId"
|
v-if="configShow && examine == 1"
|
:active="active"
|
/>
|
<equipConfig
|
:currentId="currentId"
|
v-if="equipConfigShow"
|
:active="active"
|
/>
|
<!-- 单选特殊值处理框-->
|
<el-dialog
|
title="检测到特殊项,请作出以下选择"
|
:visible.sync="bsm1Dia"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
min-width="400px"
|
:show-close="false"
|
:before-close="beforeClose"
|
>
|
<div class="body" style="max-height: 60vh">
|
<el-row v-if="bsm1">
|
<el-col
|
class="search_thing"
|
:span="24"
|
style="height: initial; margin: 5px 0"
|
>
|
<div class="search_label" style="width: 80px">
|
<span class="required-span">* </span>选项:
|
</div>
|
<div class="search_input">
|
<el-radio-group v-model="bsm1Val" @input="upBsm1">
|
<el-radio
|
v-for="(a, ai) in JSON.parse(bsmRow.section)"
|
:key="ai"
|
:label="a"
|
style="margin-bottom: 2px; margin-top: 2px"
|
></el-radio>
|
</el-radio-group>
|
</div>
|
</el-col>
|
<el-col
|
class="search_thing"
|
:span="24"
|
style="height: initial; margin: 5px 0"
|
>
|
<div class="search_label" style="width: 80px">要求值:</div>
|
<div
|
class="search_input"
|
v-show="bsm1Val !== null && bsm1Val !== ''"
|
>
|
<el-radio-group v-model="bsm1Val" @input="upBsm1">
|
<el-radio
|
v-for="(a, ai) in JSON.parse(bsmRow.section)"
|
:key="ai"
|
:label="a"
|
>{{ JSON.parse(bsmRow.ask)[ai] }}</el-radio
|
>
|
</el-radio-group>
|
</div>
|
</el-col>
|
</el-row>
|
<el-row v-if="bsm2">
|
<el-col class="search_thing" :span="22">
|
<div class="search_label" style="width: 220px">
|
<span class="required-span">* </span>样品熔接配对数量:
|
</div>
|
<div class="search_input">
|
<el-input-number
|
size="medium"
|
v-model="bsm2Val"
|
:min="1"
|
:max="bsm2Val3.length"
|
:precision="0"
|
style="width: 70%"
|
:controls="false"
|
@change="bsm2Up"
|
></el-input-number>
|
<span>MAX:{{ bsm2Val3.length }}</span>
|
</div>
|
</el-col>
|
<el-col style="margin-top: 6px">
|
<el-col v-for="(a, ai) in bsm2Val2" :key="ai">
|
<el-col :span="10">
|
<el-select
|
v-model="a[0]"
|
placeholder="请选择"
|
size="small"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="(item, index) in sampleList"
|
:key="index"
|
:label="index + 1"
|
:value="index + 1"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
<el-col
|
:span="4"
|
class="pairing"
|
style="border: 0; color: rgba(0, 0, 0, 0.2)"
|
>——</el-col
|
>
|
<el-col :span="10">
|
<el-select
|
v-model="a[1]"
|
placeholder="请选择"
|
size="small"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="(item, index) in sampleList"
|
:key="index"
|
:label="index + 1"
|
:value="index + 1"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
</el-col>
|
</el-col>
|
</el-row>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button type="primary" @click="save2" :loading="saveLoad"
|
>确 定</el-button
|
>
|
</el-row>
|
</span>
|
</el-dialog>
|
<!-- 全选特殊值处理框-->
|
<el-dialog
|
title="检测到特殊项,请作出以下选择"
|
:visible.sync="bsm1DiaAll"
|
min-width="400px"
|
:show-close="false"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
:before-close="beforeClose"
|
>
|
<div
|
class="body"
|
style="max-height: 60vh"
|
v-for="(item, index) in bsm1DiaList"
|
:key="index"
|
>
|
<el-row v-if="item.bsm1">
|
<el-col
|
class="search_thing"
|
:span="24"
|
style="height: initial; margin: 5px 0"
|
>
|
<div class="search_label" style="width: 80px">
|
<span class="required-span">* </span>选项:
|
</div>
|
<div class="search_input">
|
<el-radio-group v-model="item.bsm1Val" @input="upBsmAll(item)">
|
<el-radio
|
v-for="(a, ai) in JSON.parse(item.bsmRow.section)"
|
:key="ai"
|
:label="a"
|
style="margin-bottom: 2px; margin-top: 2px"
|
></el-radio>
|
</el-radio-group>
|
</div>
|
</el-col>
|
<el-col
|
class="search_thing"
|
:span="24"
|
style="height: initial; margin: 5px 0"
|
>
|
<div class="search_label" style="width: 80px">要求值:</div>
|
<div
|
class="search_input"
|
v-show="item.bsm1Val !== null && item.bsm1Val !== ''"
|
>
|
<el-radio-group v-model="item.bsm1Val" @input="upBsmAll(item)">
|
<el-radio
|
v-for="(a, ai) in JSON.parse(item.bsmRow.section)"
|
:key="ai"
|
:label="a"
|
>{{ JSON.parse(item.bsmRow.ask)[ai] }}</el-radio
|
>
|
</el-radio-group>
|
</div>
|
</el-col>
|
</el-row>
|
<el-row v-if="item.bsm2">
|
<el-col class="search_thing" :span="22">
|
<div class="search_label" style="width: 220px">
|
<span class="required-span">* </span>样品熔接配对数量:
|
</div>
|
<div class="search_input">
|
<el-input-number
|
size="medium"
|
v-model="item.bsm2Val"
|
:min="1"
|
:max="item.bsm2Val3.length"
|
:precision="0"
|
style="width: 70%"
|
:controls="false"
|
@change="bsm2Up"
|
></el-input-number>
|
<span>MAX:{{ item.bsm2Val3.length }}</span>
|
</div>
|
</el-col>
|
<el-col style="margin-top: 6px">
|
<el-col v-for="(a, ai) in item.bsm2Val2" :key="ai">
|
<el-col :span="10">
|
<el-select
|
v-model="a[0]"
|
placeholder="请选择"
|
size="small"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="(item, index) in item.sampleList"
|
:key="index"
|
:label="index + 1"
|
:value="index + 1"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
<el-col
|
:span="4"
|
class="pairing"
|
style="border: 0; color: rgba(0, 0, 0, 0.2)"
|
>——</el-col
|
>
|
<el-col :span="10">
|
<el-select
|
v-model="a[1]"
|
placeholder="请选择"
|
size="small"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="(item, index) in item.sampleList"
|
:key="index"
|
:label="index + 1"
|
:value="index + 1"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
</el-col>
|
</el-col>
|
</el-row>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button type="primary" @click="save1" :loading="saveLoad"
|
>确 定</el-button
|
>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="特殊值填写"
|
:visible.sync="bsm3Dia"
|
top="5vh"
|
:close-on-click-modal="false"
|
:close-on-press-escape="false"
|
width="800px"
|
:show-close="false"
|
>
|
<el-table :data="editTable" style="width: 100%" height="500px">
|
<!-- inspectionItemList -->
|
<el-table-column prop="inspectionItemList" label="检验项" width="180">
|
</el-table-column>
|
<el-table-column prop="sampleCode" label="样品编号" width="180">
|
</el-table-column>
|
<el-table-column prop="model" label="样品型号" width="180">
|
</el-table-column>
|
<el-table-column prop="symbolItem" label="识别符号"> </el-table-column>
|
<el-table-column prop="value" label="识别符值">
|
<template slot-scope="scope">
|
<el-input
|
v-model="scope.row.value"
|
placeholder="请输入"
|
@input="inputValueHandler(scope.row, scope.$index)"
|
size="small"
|
type="number"
|
></el-input>
|
</template>
|
</el-table-column>
|
</el-table>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="bsm3Dia = false">取 消</el-button>
|
<el-button type="primary" @click="save0" :loading="saveLoad"
|
>确 定</el-button
|
>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="温度循环要求填写"
|
:visible.sync="circulateShow"
|
width="900px"
|
:close-on-click-modal="false"
|
:close-on-press-escape="false"
|
:before-close="beforeCirculateShowClose"
|
:show-close="false"
|
>
|
<div class="search" style="display: flex; background: transparent">
|
<div class="search_thing">
|
<div class="search_label">保温时间:</div>
|
<div class="search_input">
|
<el-input
|
v-model="circulateForm.entrustTime"
|
size="small"
|
placeholder=""
|
type="number"
|
></el-input>
|
</div>
|
</div>
|
<div class="search_thing">
|
<div class="search_label">循环次数:</div>
|
<div class="search_input">
|
<el-input
|
v-model="circulateForm.entrustNum"
|
size="small"
|
placeholder=""
|
type="number"
|
></el-input>
|
</div>
|
</div>
|
<div class="search_thing">
|
<div class="search_label">温度点:</div>
|
<div class="search_input">
|
<el-input
|
@focus="() => (isFocus = true)"
|
@blur="changeTemperatureData"
|
v-model="circulateForm.entrustPoint"
|
size="small"
|
placeholder=""
|
type="number"
|
></el-input>
|
</div>
|
</div>
|
</div>
|
<div class="circulateTable">
|
<div class="opticalProject">
|
<div style="line-height: 30px">光纤项目</div>
|
<el-divider></el-divider>
|
<div>
|
<el-table
|
ref="multipleTable"
|
border
|
:header-cell-style="{ 'text-align': 'center' }"
|
:cell-style="{ 'text-align': 'center' }"
|
:data="opticalProject"
|
tooltip-effect="dark"
|
style="width: 100%"
|
@row-click="rowClickOptical"
|
@select="selectOpticalProject"
|
@select-all="selectAllOptical"
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column type="selection" width="55"> </el-table-column>
|
<el-table-column
|
prop="value"
|
label="光纤项目"
|
show-overflow-tooltip
|
></el-table-column>
|
</el-table>
|
</div>
|
</div>
|
<div class="temperatureList">
|
<div class="temperatureListTitle">
|
<span>温度点集合</span>
|
<span>
|
<el-button
|
type="primary"
|
size="mini"
|
:disabled="isFocus"
|
@click="addTemperatureData"
|
>新增</el-button
|
>
|
<el-button size="mini" @click="deleteTemperatureData"
|
>删除</el-button
|
>
|
</span>
|
</div>
|
<el-divider></el-divider>
|
<el-table
|
:data="temperatureData"
|
border
|
:header-cell-style="{ 'text-align': 'center' }"
|
:cell-style="{ 'text-align': 'center' }"
|
style="width: 100%"
|
>
|
<el-table-column prop="date" label="温度点(℃)" width="120px">
|
<template slot-scope="scope">
|
<el-input
|
size="small"
|
v-model="scope.row.temperaturePoint"
|
clearable
|
placeholder="请输入"
|
@change="changeTemperature"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="name" label="要求(dB/Km)">
|
<template slot-scope="scope">
|
<span>x</span>
|
<el-select
|
v-model="scope.row.askSymbol"
|
placeholder="请选择"
|
size="small"
|
style="width: 120px"
|
@change="changeTemperature"
|
>
|
<el-option
|
v-for="item in temperatureDataList"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
<el-input
|
size="small"
|
v-model="scope.row.askNum"
|
clearable
|
placeholder="请输入"
|
style="width: 120px"
|
@change="changeTemperature"
|
></el-input>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="cleanSpliceData">取消</el-button>
|
<el-button type="primary" @click="spliceData">保存</el-button>
|
</span>
|
</el-dialog>
|
<!-- 电力试验室---温升试验/热循环 -->
|
<el-dialog
|
:title="temperatureTitle"
|
:visible.sync="temperatureShow"
|
:close-on-click-modal="false"
|
:close-on-press-escape="false"
|
width="260px"
|
:before-close="temperatureShowClose"
|
:show-close="false"
|
>
|
<div>
|
<div v-if="isShowInput" style="margin-bottom: 6px">
|
<span>循环次数:</span>
|
<!-- <el-input size="small" type="number" v-model="temperatureTestNum" style="width: 120px"></el-input> -->
|
<el-input-number
|
v-model="temperatureTestNum"
|
:min="2"
|
:max="1000000"
|
size="small"
|
label=""
|
></el-input-number>
|
</div>
|
<el-checkbox-group
|
v-model="temperatureTest"
|
@change="handleTemperatureTestChange"
|
style="display: flex; flex-direction: column"
|
>
|
<el-checkbox
|
v-for="item in temperatureList"
|
:label="item"
|
:key="item"
|
style="margin-bottom: 6px"
|
>{{ item }}</el-checkbox
|
>
|
</el-checkbox-group>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="cleanTemperatureTest">取消</el-button>
|
<el-button type="primary" @click="spliceTemperatureTest"
|
>保存</el-button
|
>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
selectInsOrderTemplate,
|
hasSendUrgentOrder,
|
addInsOrder,
|
selectOrderManDay,
|
selectInsOrderTemplateById,
|
upInsOrderOfState,
|
upInsOrder,
|
getInsOrder,
|
addInsOrderTemplate,
|
delInsOrderTemplate,
|
labelPrinting,
|
} from "@/api/business/inspectionOrder";
|
import {
|
selectStandardTreeList2,
|
selectStandardMethodEnum,
|
selectsStandardMethodByFLSSM,
|
selectStandardProductList,
|
} from "@/api/standard/standardLibrary";
|
import { selectBushingBySampleId } from "@/api/business/insBushing";
|
import { getLaboratoryPersonList } from "@/api/system/user";
|
import { mapGetters } from "vuex";
|
import fiberOpticConfig from "./fiberoptic-config.vue";
|
import fiberOpticConfigReadOnly from "./fiberoptic-config-readonly.vue";
|
import equipConfig from "./equip-config.vue";
|
import getLodop from "@/utils/lodop";
|
import { bigEval } from "@/utils/bigEval";
|
import { getDicts } from "@/api/system/dict/data";
|
import Big from "big.js";
|
export default {
|
components: {
|
fiberOpticConfig,
|
fiberOpticConfigReadOnly,
|
equipConfig,
|
},
|
computed: {
|
...mapGetters(["nickName", "loginUserInfo"]),
|
},
|
props: {},
|
data() {
|
return {
|
isReview: false, //是否是查看详情
|
examine: 0,
|
active: 0,
|
currentId: 0,
|
fiberLoss: [],
|
qrDataList: [],
|
isFocus: false,
|
methodCount: 0,
|
standardLoading: false,
|
errorInspectionItemList: [],
|
errorInspectionItem: false,
|
inspectionItemST: null,
|
sampleSelectionList: [], //样品表格选中数据
|
editTable: [],
|
template: null,
|
templates: [],
|
addObj: {
|
entrustCode: null,
|
custom: null,
|
company: null,
|
userId: null,
|
type: "0",
|
code: null,
|
appointed: null,
|
remark: null,
|
otcCode: null,
|
mating: 0,
|
sample: null,
|
factory: null,
|
laboratory: null,
|
sampleType: null,
|
sampleNum: 1,
|
unit: null,
|
model: null,
|
method: null,
|
phone: null,
|
processing: 1,
|
isLeave: 0,
|
orderType: null,
|
send: 1,
|
formType: "送检",
|
engineering: null,
|
engineeringEn: null,
|
production: null,
|
productionEn: null,
|
companyId: null,
|
prepareUser: null,
|
},
|
formRule: {
|
orderType: {
|
required: true,
|
message: "请选择检验类别",
|
trigger: "change",
|
},
|
custom: { required: true, message: "", trigger: "blur" },
|
company: { required: true, message: "请选择委托单位", trigger: "blur" },
|
phone: { required: true, message: "请输入联系方式", trigger: "blur" },
|
type: { required: true, message: "请选择紧急程度", trigger: "change" },
|
sample: { required: true, message: "请选择样品名称", trigger: "blur" },
|
sampleNum: {
|
required: true,
|
message: "请输入样品数量",
|
trigger: "blur",
|
},
|
formType: {
|
required: true,
|
message: "请选择来样方式",
|
trigger: "change",
|
},
|
production: {
|
required: true,
|
message: "请输入生产单位",
|
trigger: "blur",
|
},
|
productionEn: {
|
required: true,
|
message: "请输入生产单位EN",
|
trigger: "blur",
|
},
|
},
|
sample: {
|
sampleCode: null,
|
laboratory: null,
|
factory: null,
|
sampleType: null,
|
sample: null,
|
model: null,
|
modelNum: null,
|
sampleNum: 1,
|
isLeave: 0,
|
unit: null,
|
},
|
type: [],
|
selectUserDia: false,
|
componentData2: {
|
entity: {
|
orderBy: {
|
field: "id",
|
order: "desc",
|
},
|
},
|
isIndex: true,
|
showSelect: true,
|
select: false,
|
do: [],
|
tagField: {
|
state: {
|
select: [
|
{
|
value: 1,
|
type: "success",
|
label: "启用",
|
},
|
{
|
value: 0,
|
type: "danger",
|
label: "停用",
|
},
|
],
|
},
|
},
|
selectField: {},
|
},
|
selectStandardTree: false,
|
search: null,
|
list: [],
|
selectTree: null,
|
expandedKeys: [],
|
sampleList: [],
|
sampleIds: [],
|
methodList: [],
|
addSampleDia: false,
|
count: 1,
|
productList: [],
|
productList0: [],
|
bsm1DiaList: [],
|
productIds: [],
|
productListSelected: [],
|
getProductLoad: false,
|
saveLoad: false,
|
templateDia: false,
|
templateLoading: false,
|
templateName: "",
|
issuedDialogVisible: false,
|
distributeData: {
|
appointed: "",
|
userId: [],
|
sonLaboratory: "",
|
isCreate: false,
|
},
|
personList: [],
|
upLoad: false,
|
units: [],
|
models: [],
|
methods: [],
|
methodLoad: false,
|
noDialogVisible: false,
|
tell: "",
|
noLoading: false,
|
orderType: [],
|
filters: [],
|
formType: [],
|
configShow: false,
|
currentMethod: null,
|
isAskOnlyRead: false,
|
sampleId: null,
|
bsmRow: null,
|
bsm1: false,
|
bsm1Val: null,
|
bsm1Dia: false,
|
bsm1DiaAll: false,
|
equipConfigShow: false,
|
bsm2: false,
|
bsm2Val: null,
|
bsm2Dia: false,
|
bsm2Val2: [],
|
bsm2Val3: [],
|
bsmRow3: null,
|
bsm3Val: null,
|
bsm3Dia: false,
|
total: 0,
|
RTS: "",
|
totalArr: [],
|
model: null,
|
standardMethodListId: null,
|
symbolList: [
|
"RTS",
|
"A",
|
"B",
|
"C",
|
"D",
|
"E",
|
"F",
|
"G",
|
"H",
|
"I",
|
"J",
|
"K",
|
"L",
|
"M",
|
"N",
|
"O",
|
"P",
|
"Q",
|
"R",
|
"S",
|
"T",
|
"U",
|
"V",
|
"W",
|
"X",
|
"Y",
|
"Z",
|
],
|
inspectionItem: null,
|
inspectionItemSubclass: null,
|
methodS: null,
|
circulateShow: false,
|
circulateForm: {
|
entrustTime: "",
|
entrustNum: "",
|
entrustPoint: "",
|
},
|
singleVerticalCombustionShow: false, //单根垂直燃烧检验项弹框
|
singleVerticalCombustionNum: 0, //单根垂直燃烧检验项计数
|
isBsm2Val2: false,
|
opticalProject: [], // 温度循环弹框光纤项目列表
|
opticalProjectList: [], // 温度循环弹框光纤项目选中的数组
|
temperatureData: [], // 温度循环弹框温度点集合列表
|
temperatureDataList: [
|
{ label: "<", value: "<" },
|
{ label: "≤", value: "≤" },
|
{ label: "=", value: "=" },
|
{ label: "≥", value: "≥" },
|
{ label: ">", value: ">" },
|
],
|
temperatureShow: false, // 温升试验检验项弹框
|
temperatureTest: [],
|
temperatureList: [],
|
temperatureEngList: [],
|
temperatureTitle: "",
|
temperatureTestNum: "",
|
isShowInput: false,
|
temId: "",
|
sonLaboratoryList: [],
|
selectiveEcho: [], // 检验下单的时候勾选检验项目,如果使用筛选提交显示检验项目为空 回显列表
|
fiberPairing: [], //光纤配置里的熔接配对
|
};
|
},
|
watch: {
|
productList: {
|
deep: true,
|
handler(val) {
|
if (val && val.length > 0) {
|
let arr = [];
|
val.forEach((item) => {
|
if (
|
item.sonLaboratory &&
|
!arr.find((a) => a.value == item.sonLaboratory)
|
) {
|
arr.push({
|
text: item.sonLaboratory,
|
value: item.sonLaboratory,
|
});
|
}
|
});
|
this.filters = arr;
|
}
|
},
|
},
|
sampleList: {
|
deep: true,
|
handler(val) {
|
console.log(val);
|
if (val.length > 0) {
|
this.getTotal(val[0].bushing, false);
|
}
|
},
|
},
|
"addObj.sample"(val) {
|
this.model = null;
|
this.standardMethodListId = null;
|
},
|
"addObj.sampleNum"(val) {
|
this.model = null;
|
this.standardMethodListId = null;
|
},
|
},
|
created() {
|
this.active = Number(this.$route.query.active);
|
this.currentId = this.$route.query.currentId;
|
this.examine = this.$route.query.examine;
|
this.isReview = this.$route.query.isReview;
|
},
|
mounted() {
|
//查询字典
|
this.selectDictForType();
|
this.selectDictForOrderType();
|
this.selectDictForUnit();
|
this.selectDictForSampleForm();
|
if (this.active != 3) {
|
this.init();
|
}
|
this.selectStandardTreeList();
|
this.getAuthorizedPerson();
|
this.selectStandardMethods();
|
if (this.active != 1) {
|
// 查看/审核流程
|
// 请求接口,回显数据
|
getInsOrder({
|
orderId: this.currentId,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.addObj = {
|
...res.data.insOrder,
|
};
|
this.addObj.type = String(this.addObj.type);
|
this.sampleList = this.HaveJson(res.data.sampleProduct);
|
this.getProNum();
|
this.addObj.sampleNum = this.sampleList.length;
|
this.$nextTick(() => {
|
this.$refs.sampleTable.doLayout();
|
if (this.addObj.sampleNum > 0) {
|
this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true);
|
this.rowClick(this.sampleList[0]);
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
}
|
},
|
methods: {
|
goBack() {
|
let path = this.$route.query.isPlan
|
? "/business/inspectionTask"
|
: "/business/inspectionOrder";
|
this.$router.push(path);
|
},
|
//下次核查日期:禁用在核查日期前的日期
|
disabledDate(time) {
|
if (time) {
|
let now = new Date();
|
now.setHours(0, 0, 0, 0);
|
return time < now.getTime();
|
}
|
return false;
|
},
|
changeType(type) {
|
this.hasSendUrgentOrder(type)
|
.then((res) => {
|
console.log(res);
|
if (!res) {
|
this.addObj.type = "1";
|
this.$message.error("当天加急额度已用完");
|
throw "当天加急额度已用完";
|
}
|
})
|
.catch((err) => {
|
console.log(err);
|
});
|
},
|
//判断当天是否可下发紧急订单
|
async hasSendUrgentOrder(type) {
|
let flag = true;
|
//如果是类型是紧急,判断当前客户当天的紧急额度是否用完
|
if (type == 2) {
|
await hasSendUrgentOrder()
|
.then((res) => {
|
flag = res.data;
|
return flag;
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
}
|
return flag;
|
},
|
//光纤配置保存回调
|
saveFiberConfigEvent(event) {
|
console.log(event);
|
this.$nextTick(() => {
|
this.getTotal(event.bushing);
|
this.fiberPairing = event.fiberPairing;
|
});
|
},
|
//保存单根垂直燃烧特殊值
|
saveSingleVerticalCombustionData() {},
|
openSingleVerticalCombustionDialog() {
|
this.$prompt("单根垂直燃烧次数", "特殊检测项目", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
inputValidator: this.customDecimalValidate,
|
closeOnClickModal: false,
|
})
|
.then(({ value }) => {
|
this.sampleList.forEach((item) => {
|
this.singleVerticalData(item.insProduct, value);
|
});
|
this.singleVerticalData(this.productList, value);
|
this.singleVerticalData(this.productList0, value);
|
this.changeProductList0();
|
this.currentMethod.insProduct = this.productList0;
|
this.getProNum();
|
})
|
.catch(() => {});
|
},
|
singleVerticalData(arr, value) {
|
arr.forEach((ins) => {
|
if (ins.inspectionItem == "单根垂直燃烧" && ins.state == 1) {
|
let tell = "";
|
if (ins.tell.includes(",")) {
|
tell = ins.tell.split(",")[0];
|
} else {
|
tell = ins.tell;
|
}
|
ins.tell = tell + "," + value + "根";
|
}
|
});
|
},
|
customDecimalValidate(value) {
|
console.log(value);
|
if (value == 0) {
|
return "不能为0,请输入数字";
|
} else if (!/^[0-9]*[1-9][0-9]*$/.test(value)) {
|
return "请输入正整数";
|
}
|
},
|
//特殊值填写处理
|
inputValueHandler(row, index) {
|
if (row) {
|
const nextIndex = index + 1;
|
// console.log(nextIndex, this.editTable)
|
for (let i = nextIndex; i < this.editTable.length; i++) {
|
const element = this.editTable[i];
|
if (
|
element.model == row.model &&
|
row.symbolItem == element.symbolItem
|
) {
|
this.editTable[i].value = row.value;
|
}
|
}
|
}
|
},
|
spliceData() {
|
if (
|
!this.circulateForm.entrustNum ||
|
!this.circulateForm.entrustTime ||
|
!this.circulateForm.entrustPoint ||
|
this.opticalProjectList.length === 0 ||
|
this.temperatureData.length === 0
|
) {
|
this.$message.error("请填写完整数据");
|
return;
|
}
|
// 拼接要求值ask
|
const opticalProjectList = JSON.parse(
|
JSON.stringify(this.opticalProjectList)
|
);
|
opticalProjectList.forEach((o) => {
|
o.temperatureData.forEach((t) => {
|
if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
|
throw this.$message.error("请填写完整数据");
|
}
|
});
|
if (!o.temperatureData.some((item) => item.temperaturePoint == "20")) {
|
throw this.$message.error(`${o.value + "波长没有配置20℃温度点"}`);
|
}
|
});
|
let entrustTime = this.circulateForm.entrustTime;
|
let entrustNum = this.circulateForm.entrustNum;
|
let opticalProjectList2 = JSON.parse(
|
JSON.stringify(this.opticalProjectList)
|
);
|
let askArr = [];
|
let opticalProjectArr = [];
|
opticalProjectList.forEach((o) => {
|
opticalProjectArr.push(o.value);
|
o.temperatureData.unshift({ temperaturePoint: 20 });
|
o.temperatureData.forEach((t) => {
|
if (!t.askSymbol) {
|
const askObj =
|
t.temperaturePoint + "℃(常温)" + "," + o.value + "," + null;
|
askArr.push(askObj);
|
} else {
|
const askObj =
|
t.temperaturePoint +
|
"℃" +
|
"," +
|
o.value +
|
"," +
|
t.askSymbol +
|
t.askNum;
|
askArr.push(askObj);
|
}
|
});
|
});
|
askArr.push(this.circulateForm.entrustNum);
|
const ask = askArr.join(";");
|
// 拼接要求描述tell
|
let askNum = [];
|
let temperaturePointList = [];
|
let temperaturePointList2 = [];
|
entrustTime = entrustTime + "h";
|
entrustNum = entrustNum + "次";
|
opticalProjectList2.forEach((o) => {
|
o.temperatureData.forEach((t) => {
|
t.temperaturePoint = t.temperaturePoint + "℃";
|
temperaturePointList2.push(t.temperaturePoint);
|
temperaturePointList.push(t.temperaturePoint);
|
askNum.push(t.askSymbol + t.askNum + "dB/Km");
|
});
|
});
|
temperaturePointList = Array.from(new Set(temperaturePointList));
|
temperaturePointList2 = Array.from(new Set(temperaturePointList2));
|
temperaturePointList2.unshift(20 + "℃(常温)");
|
let additionArr = [];
|
askNum.forEach((a) => {
|
additionArr.push(temperaturePointList.join(",") + a);
|
});
|
additionArr = Array.from(new Set(additionArr));
|
const tell =
|
"温度范围:" +
|
temperaturePointList2.join(",") +
|
";" +
|
"保温时间:" +
|
entrustTime +
|
";" +
|
"循环次数:" +
|
entrustNum +
|
";" +
|
"光纤(" +
|
opticalProjectArr.join(",") +
|
")" +
|
"附加衰减绝对值:" +
|
additionArr.join(";");
|
this.productList.forEach((item) => {
|
if (item.inspectionItem === "温度循环") {
|
item.ask = ask;
|
item.tell = tell;
|
}
|
});
|
this.circulateShow = false;
|
this.changeProductList0();
|
this.currentMethod.insProduct = this.productList0;
|
this.sampleList.forEach((ele) => {
|
ele.insProduct = this.productList0;
|
});
|
this.getProNum();
|
},
|
//温升/热循环特殊项目生成
|
//调整:无需用户选择,默认生成四个子项,循环一次
|
spliceTemperatureTest() {
|
// console.log(this.temperatureList)
|
// if (this.temperatureTest.length === 0) {
|
// this.$message.error("请选择");
|
// return;
|
// }
|
let askStr = "";
|
let askArr1 = [];
|
let askArr2 = "";
|
let ask = "";
|
let index = "";
|
// this.temperatureTest.map((val) => {
|
// index = this.temperatureEngList.findIndex((item) => item.label === val);
|
// if (index > -1) {
|
// askStr = val + "," + this.temperatureEngList[index].value;
|
// }
|
// askArr1.push(askStr);
|
// });
|
this.temperatureEngList.forEach((item, i) => {
|
index = i;
|
if (index > -1) {
|
askStr = item.label + "," + this.temperatureEngList[index].value;
|
}
|
askArr1.push(askStr);
|
});
|
askArr2 = askArr1.join(";");
|
ask = askArr2 + ";1";
|
// if (this.temperatureTitle === "温升试验要求填写") {
|
// askArr2 = askArr1.join(";");
|
// ask = askArr2 + ";1";
|
// } else {
|
// if (!this.temperatureTestNum) {
|
// this.$message.error("请填写循环次数");
|
// return;
|
// }
|
// askArr2 = askArr1.join(";");
|
// ask = askArr2 + ";" + this.temperatureTestNum;
|
// }
|
this.productList.forEach((item) => {
|
if (item.id === this.temId) {
|
item.ask = ask;
|
item.tell = ask;
|
}
|
});
|
//将温升试验/热循环的要求值和要求描述,赋给sampleList
|
this.sampleList.forEach((ele) => {
|
if (ele.id == this.currentMethod.id) {
|
ele.insProduct.forEach((item) => {
|
if (item.id === this.temId) {
|
item.ask = ask;
|
item.tell = ask;
|
item.state = 1;
|
}
|
});
|
}
|
});
|
// this.temperatureShow = false;
|
},
|
temperatureShowClose() {
|
if (
|
this.temperatureTitle === "热循环要求填写" &&
|
!this.temperatureTestNum
|
) {
|
this.$message.error("请填写循环次数");
|
return;
|
}
|
if (this.temperatureTest.length === 0) {
|
this.$message.error("请选择");
|
return;
|
}
|
this.spliceTemperatureTest();
|
},
|
cleanTemperatureTest() {
|
this.temperatureTest = [];
|
this.temperatureTestNum = "";
|
this.temperatureShow = false;
|
},
|
cleanSpliceData() {
|
this.circulateForm.entrustNum = null;
|
this.circulateForm.entrustTime = null;
|
this.circulateForm.entrustPoint = null;
|
this.opticalProjectList = [];
|
this.$refs.multipleTable.clearSelection();
|
this.temperatureData = [];
|
this.circulateShow = false;
|
},
|
beforeCirculateShowClose() {
|
if (
|
!this.circulateForm.entrustNum ||
|
!this.circulateForm.entrustTime ||
|
!this.circulateForm.entrustPoint ||
|
this.opticalProjectList.length === 0 ||
|
this.temperatureData.length === 0
|
) {
|
this.$message.error("请填写完整数据");
|
return;
|
}
|
// 拼接要求值ask
|
const opticalProjectList = JSON.parse(
|
JSON.stringify(this.opticalProjectList)
|
);
|
opticalProjectList.forEach((o) => {
|
o.temperatureData.forEach((t) => {
|
if (!t.temperaturePoint || !t.askSymbol || !t.askNum) {
|
throw this.$message.error("请填写完整数据");
|
}
|
});
|
if (!o.temperatureData.some((item) => item.temperaturePoint == "20")) {
|
throw this.$message.error(`${o.value + "波长没有配置20℃温度点"}`);
|
}
|
});
|
this.spliceData();
|
},
|
|
handleTemperatureTestChange(value) {
|
// console.log('value---', value)
|
},
|
handleSelectionChange(val) {
|
this.opticalProjectList = val;
|
},
|
selectAllOptical(val) {
|
if (val.length > 0) {
|
if (val[val.length - 1].temperatureData) {
|
this.temperatureData = this.HaveJson(val.temperatureData);
|
} else {
|
this.temperatureData = [];
|
}
|
} else {
|
this.temperatureData = [];
|
}
|
this.circulateForm.entrustPoint = this.temperatureData.length;
|
},
|
selectOpticalProject(val) {
|
if (val.temperatureData) {
|
this.temperatureData = this.HaveJson(val.temperatureData);
|
} else {
|
this.temperatureData = [];
|
}
|
this.circulateForm.entrustPoint = this.temperatureData.length;
|
},
|
rowClickOptical(val) {
|
const index = this.opticalProjectList.findIndex(
|
(item) => item.value === val.value
|
);
|
if (index > -1 && val.temperatureData) {
|
this.temperatureData = this.HaveJson(val.temperatureData);
|
}
|
this.circulateForm.entrustPoint = this.temperatureData.length;
|
},
|
changeTemperature() {
|
this.opticalProjectList.forEach((item) => {
|
item.temperatureData = this.HaveJson(this.temperatureData);
|
});
|
},
|
addTemperatureData() {
|
const obj = {};
|
this.temperatureData.push(obj);
|
this.circulateForm.entrustPoint = this.temperatureData.length;
|
},
|
deleteTemperatureData() {
|
if (this.temperatureData.length > 0) {
|
this.temperatureData = this.temperatureData.slice(0, -1);
|
}
|
this.circulateForm.entrustPoint = this.temperatureData.length;
|
},
|
changeTemperatureData() {
|
const length = this.temperatureData.length;
|
const entrustPoint = Number(this.circulateForm.entrustPoint);
|
if (entrustPoint > length) {
|
for (let i = 0; i < entrustPoint - length; i++) {
|
const obj = {};
|
this.temperatureData.push(obj);
|
}
|
} else if (entrustPoint < length) {
|
const deleteNum = length - entrustPoint;
|
this.temperatureData = this.temperatureData.slice(0, -deleteNum);
|
}
|
setTimeout(() => {
|
this.isFocus = false;
|
}, 300);
|
},
|
changeProductList0() {
|
this.productList0.forEach((a) => {
|
let obj = this.productList.find((m) => m.id == a.id);
|
if (obj) {
|
a.state = obj.state;
|
a.section = obj.section;
|
a.ask = obj.ask;
|
a.manHour = obj.manHour;
|
a.price = obj.price;
|
a.tell = obj.tell;
|
}
|
if (a.state == 0 && a.bsmRow) {
|
a = this.HaveJson(a.bsmRow);
|
}
|
});
|
},
|
searchFilterList() {
|
const vtw = {
|
inspectionItem: this.inspectionItem, // 检验项
|
inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项
|
methodS: this.methodS, // 试验方法
|
};
|
const isHaveValue = Object.values(vtw).some((item) => {
|
return item;
|
});
|
this.changeProductList0();
|
if (isHaveValue) {
|
for (let i in vtw) {
|
if (vtw[i]) {
|
this.productList = this.productList0.filter((item) => {
|
return item[i] && item[i].includes(vtw[i]);
|
});
|
}
|
}
|
this.$nextTick(() => {
|
this.productList.forEach((a) => {
|
if (a.state == 1) this.toggleSelection(a);
|
});
|
});
|
} else {
|
// 没有查询条件时渲染所有数据
|
this.productList = this.productList0;
|
this.$nextTick(() => {
|
this.productList.forEach((a) => {
|
if (a.state == 1) this.toggleSelection(a);
|
});
|
});
|
}
|
},
|
getAuthorizedPerson() {
|
getLaboratoryPersonList()
|
.then((res) => {
|
if (res.code === 200) {
|
this.personList = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
selectDictForType() {
|
getDicts("urgency_level")
|
.then((res) => {
|
if (res.code === 200) {
|
this.type = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
selectUser() {
|
let selects = this.$refs.ValueTable2.multipleSelection;
|
if (selects.length == 0) {
|
this.$message.error("未选择数据");
|
return;
|
}
|
this.addObj.company = selects.company;
|
this.addObj.code = selects.code;
|
this.addObj.companyId = selects.id;
|
this.selectUserDia = false;
|
if (this.active == 1) {
|
// TODO
|
this.selectInsOrderTemplate();
|
}
|
},
|
containsValue(str) {
|
if (str) {
|
let symbolItem = "";
|
this.symbolList.some((value) => {
|
if (str.includes(value)) {
|
symbolItem = value;
|
return true;
|
}
|
});
|
return symbolItem;
|
}
|
},
|
/**
|
* 获取小数的最大位数
|
* @param number 型号参数
|
* @param ask 要求值
|
* @param calcNum 计算值
|
*/
|
getDecimalPlaces(number, ask, calcNum) {
|
console.log("计算小数点-->", number, ask, calcNum);
|
let count1 = 0;
|
let count2 = 0;
|
const reg = /(\d+\.)(\d+)/g;
|
let matches = [];
|
if (ask) {
|
matches = ask.match(reg);
|
}
|
if (
|
matches &&
|
matches.length > 0 &&
|
matches[0].toString().indexOf(".") > -1
|
) {
|
count1 = matches[0].toString().split(".")[1].length;
|
}
|
if (number.toString().indexOf(".") > -1) {
|
count2 = number.toString().split(".")[1].length;
|
}
|
if (calcNum.toString().indexOf(".") > -1) {
|
const pointLength2 = calcNum.toString().split(".")[1].length;
|
count2 = count2 > pointLength2 ? count2 : pointLength2;
|
}
|
return count1 > count2 ? count1 : count2;
|
},
|
handleAsk(ask, symbolItem, value) {
|
console.log("处理要求值--》", ask, symbolItem, value);
|
try {
|
let code = [">", "<", "=", ">", "<", "≥", "≤", "±"];
|
if (ask.includes("&")) {
|
// 多个条件
|
let arr0 = ask.split("&");
|
let arr1 = [];
|
arr0.forEach((m) => {
|
let index = code.findIndex((b) => m.includes(b));
|
if (index > -1) {
|
let arr = m.split(code[index]).filter((b) => !!b);
|
let calcNum = new Big(
|
bigEval(this.replaceAll(arr[0], symbolItem, value))
|
);
|
let num = calcNum.toFixed(
|
this.getDecimalPlaces(value, ask, calcNum)
|
);
|
m = code[index] + "" + num;
|
arr1.push(m);
|
}
|
});
|
// console.log("处理多个条件要求值--》", arr1.join("&"));
|
return arr1.join("&");
|
} else {
|
// 单个条件
|
let index = code.findIndex((b) => ask.includes(b));
|
// console.log("index--》", index);
|
if (index > -1) {
|
let arr = ask.split(code[index]).filter((b) => !!b);
|
console.log("特殊值替换--》", arr);
|
let calcNum = new Big(
|
bigEval(this.replaceAll(arr[0], symbolItem, value))
|
);
|
let num = calcNum.toFixed(
|
this.getDecimalPlaces(value, ask, calcNum)
|
);
|
console.log("处理单个条件要求值--》", code[index] + "" + num);
|
return code[index] + "" + num;
|
}
|
}
|
} catch (e) {
|
console.error("处理要求值异常-->", e);
|
}
|
},
|
handleTell(tell, symbolItem, value) {
|
try {
|
let num = this.replaceAll(tell, symbolItem, value);
|
return num;
|
} catch (e) {}
|
},
|
replaceAll(str, find, value) {
|
if (str === undefined) {
|
return str;
|
}
|
return str.split(find).join(value);
|
},
|
save() {
|
if (!this.addObj.companyId) {
|
this.$message.error("未选择客户单位");
|
return;
|
}
|
if (!this.addObj.type) {
|
this.$message.error("未选择紧急程度");
|
} else if (!this.addObj.formType) {
|
this.$message.error("请输入来样方式");
|
} else if (!this.addObj.orderType) {
|
this.$message.error("请选择检验类别");
|
} else if (!this.addObj.production) {
|
this.$message.error("请输入生产单位");
|
} else if (!this.addObj.productionEn) {
|
this.$message.error("请输入生产单位EN");
|
} else if (this.sampleList.length < 1) {
|
this.$message.error("请添加一个样品");
|
} else if (!this.sampleList.every((m) => m.sample)) {
|
this.$message.error("请输入样品名称");
|
} else if (!this.sampleList.every((m) => m.model)) {
|
this.$message.error("请输入样品型号");
|
} else if (!this.sampleList.every((m) => m.standardMethodListId)) {
|
this.$message.error("请选择检验标准");
|
} else {
|
const select = this.selectTree.split(" - ");
|
const productListSelected = this.productListSelected.some(
|
(item) => item.inspectionItem === "温度循环"
|
);
|
let isHaveBushing = "";
|
this.sampleList.forEach((item) => {
|
if (!item.bushing || item.bushing.length === 0) {
|
isHaveBushing = false;
|
}
|
});
|
//判断紧急额度是否用完
|
this.hasSendUrgentOrder(this.addObj.type).then((res) => {
|
if (!res) {
|
this.addObj.type = "1";
|
this.$message.error("当天紧急额度已用完");
|
} else {
|
let sampleCodes = new Set();
|
let flag = false;
|
for (let i = 0; i < this.sampleList.length; i++) {
|
if (
|
this.sampleList[i].sampleCode &&
|
this.sampleList[i].sampleCode.trim() !== "" &&
|
this.sampleList[i].sampleCode != null
|
) {
|
if (sampleCodes.has(this.sampleList[i].sampleCode)) {
|
flag = true;
|
break;
|
}
|
sampleCodes.add(this.sampleList[i].sampleCode);
|
}
|
}
|
if (flag) {
|
this.$message.error("样品编号不能重复");
|
return;
|
}
|
//过滤检测项:去除特殊项
|
let filterProductList = this.productListSelected
|
.filter((ele) => ele.bsm == 0)
|
.filter((ele) => {
|
if (
|
select[1].indexOf("通信") >= 0 &&
|
["光缆", "光纤"].includes(select[2])
|
) {
|
return !["温度循环", "光纤接头损耗"].includes(
|
ele.inspectionItem
|
);
|
}
|
return true;
|
})
|
.filter((ele) => {
|
if (select[1].indexOf("电力") >= 0) {
|
return !["温升试验", "热循环"].includes(ele.inspectionItem);
|
}
|
return true;
|
});
|
//校验检验项的要求值和要求描述,仅委托要求
|
const isTrue = this.checkRequiredValueAndRemark(
|
filterProductList,
|
this.isAskOnlyRead
|
);
|
if (!isTrue) {
|
this.errorInspectionItem = true;
|
this.errorInspectionItemList = [
|
...new Set(this.errorInspectionItemList),
|
];
|
let newData = [];
|
const h = this.$createElement;
|
for (let i in this.errorInspectionItemList) {
|
const lastChar = this.errorInspectionItemList[i].slice(-1);
|
if (lastChar == "-") {
|
this.errorInspectionItemList[i] =
|
this.errorInspectionItemList[i].slice(0, -1);
|
}
|
newData.push(
|
h(
|
"p",
|
{ style: "font-size: 14px;color: red;" },
|
Number(i) + 1 + "、" + this.errorInspectionItemList[i]
|
)
|
);
|
}
|
newData.push(
|
h(
|
"p",
|
{
|
style:
|
"font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
|
},
|
"以上项目要求描述与要求值不匹配,确定提交?"
|
)
|
);
|
this.$confirm("提示", {
|
title: "提示",
|
message: h("div", null, newData),
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "",
|
})
|
.then(() => {
|
console.log("确定");
|
// console.log('isHaveBushing===', this.totalArr)
|
let spcialItem = this.totalArr.filter(
|
(a) =>
|
a.state == 1 &&
|
(a.inspectionItem.includes("松套管") ||
|
(a.inspectionItemSubclass &&
|
a.inspectionItemSubclass.includes("松套管")))
|
);
|
if (
|
productListSelected &&
|
select[2] === "光缆" &&
|
isHaveBushing === false &&
|
spcialItem.length == 0
|
) {
|
this.$message.error("光缆温度循环项目必须进行光纤配置");
|
this.$refs.sampleTable.setCurrentRow(
|
this.currentMethod,
|
true
|
);
|
this.rowClick(this.currentMethod);
|
this.sampleIds = [this.currentMethod.id];
|
this.openConfig();
|
return;
|
} else if (spcialItem.length > 0 && isHaveBushing === false) {
|
this.$message.error("松套管项目必须进行光纤配置");
|
this.$refs.sampleTable.setCurrentRow(
|
this.currentMethod,
|
true
|
);
|
this.rowClick(this.currentMethod);
|
this.sampleIds = [this.currentMethod.id];
|
// spcialItem.forEach(item=>{
|
// this.sampleIds.push(item.id)
|
// })
|
this.openConfig();
|
return;
|
}
|
let sampleList = this.HaveJson(this.sampleList);
|
let projectNum = this.totalArr.filter(
|
(a) => a.state == 1
|
).length;
|
if (projectNum == 0) {
|
this.$confirm("检验项目为空,是否确认提交?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
this.saveMethod(sampleList);
|
})
|
.catch(() => {});
|
} else {
|
let isRTS = this.totalArr.find(
|
(a) =>
|
a.ask != null &&
|
this.symbolList.find((b) => a.ask.includes(b)) &&
|
a.state == 1
|
);
|
if (isRTS && this.PROJECT == "检测中心") {
|
this.editTable = this.handleData(
|
sampleList,
|
this.containsValue,
|
0
|
);
|
if (this.editTable.length === 0) {
|
this.$message.error("要求值为空,需要去标准库维护!");
|
return;
|
}
|
// console.log('editTable1===', this.editTable);
|
this.editTable.forEach((item) => {
|
item.value = item.modelNum;
|
});
|
this.bsm3Dia = true;
|
return;
|
}
|
this.saveMethod(sampleList);
|
}
|
this.errorInspectionItemList = [];
|
})
|
.catch(() => {
|
this.errorInspectionItemList = [];
|
this.errorInspectionItem = false;
|
return;
|
});
|
//this.$message.error('检验项'+this.errorInspectionItemList+'的要求值与要求描述不匹配, 请检查')
|
//return
|
}
|
if (this.errorInspectionItem) {
|
return;
|
}
|
// console.log('isHaveBushing===', this.totalArr)
|
let spcialItem = this.totalArr.filter(
|
(a) =>
|
a.state == 1 &&
|
(a.inspectionItem.includes("松套管") ||
|
(a.inspectionItemSubclass &&
|
a.inspectionItemSubclass.includes("松套管")))
|
);
|
if (
|
productListSelected &&
|
select[2] === "光缆" &&
|
isHaveBushing === false &&
|
spcialItem.length == 0
|
) {
|
this.$message.error("光缆温度循环项目必须进行光纤配置");
|
this.$refs.sampleTable.setCurrentRow(this.currentMethod, true);
|
this.rowClick(this.currentMethod);
|
this.sampleIds = [this.currentMethod.id];
|
this.openConfig();
|
return;
|
} else if (spcialItem.length > 0 && isHaveBushing === false) {
|
this.$message.error("松套管项目必须进行光纤配置");
|
this.$refs.sampleTable.setCurrentRow(this.currentMethod, true);
|
this.rowClick(this.currentMethod);
|
this.sampleIds = [this.currentMethod.id];
|
// spcialItem.forEach(item=>{
|
// this.sampleIds.push(item.id)
|
// })
|
this.openConfig();
|
return;
|
}
|
let sampleList = this.HaveJson(this.sampleList);
|
let projectNum = this.totalArr.filter((a) => a.state == 1).length;
|
if (projectNum == 0) {
|
this.$confirm("检验项目为空,是否确认提交?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
this.saveMethod(sampleList);
|
})
|
.catch(() => {});
|
} else {
|
let isRTS = this.totalArr.find(
|
(a) =>
|
a.ask != null &&
|
this.symbolList.find((b) => a.ask.includes(b)) &&
|
a.state == 1
|
);
|
if (isRTS && this.PROJECT == "检测中心") {
|
this.editTable = this.handleData(
|
sampleList,
|
this.containsValue,
|
0
|
);
|
if (this.editTable.length === 0) {
|
this.$message.error("要求值为空,需要去标准库维护!");
|
return;
|
}
|
// console.log('editTable1===', this.editTable);
|
this.editTable.forEach((item) => {
|
item.value = item.modelNum;
|
});
|
this.bsm3Dia = true;
|
return;
|
}
|
this.saveMethod(sampleList);
|
}
|
}
|
});
|
}
|
},
|
errorSet() {},
|
/**
|
* 校验委托要求的检验项的要求描述和要求值
|
*
|
*/
|
checkRequiredValueAndRemark(data, isAskOnlyRead) {
|
let isTrue = true;
|
//过滤要求值或要求描述为空的检验项
|
let emptyList = data.filter(
|
(ele) =>
|
ele.ask == undefined ||
|
ele.ask == "" ||
|
ele.ask == null ||
|
ele.tell == undefined ||
|
ele.tell == "" ||
|
ele.tell == null
|
);
|
if (emptyList.length > 0) {
|
emptyList.forEach((ele) => {
|
console.log("ask or tell is null");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
});
|
isTrue = false;
|
}
|
//委托要求才走下面的校验
|
if (isAskOnlyRead) {
|
try {
|
data.forEach((ele) => {
|
//要求值和要求描述不能为空
|
// if(!ele.ask || !ele.tell){
|
// console.log(111111);
|
// this.errorInspectionItemList.push(ele.inspectionItem + ' ' + (ele.inspectionItemSubclass == null ? '' : ele.inspectionItemSubclass))
|
// //this.errorInspectionItemList.push(h('p', {style: 'font-size: 14px;color: red;'},ele.inspectionItem + ' ' + ele.inspectionItemSubclass))
|
// //this.errorInspectionItemList.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh' },'以上项目不合格,确定提交?'))
|
// isTrue = false
|
// }else{
|
// }
|
if (/[0-9]/.test(ele.ask)) {
|
//判断(≤,≥,>,<,=)这几种情况
|
//判断要求值中的数字是否包含在要求描述中
|
//.match(/\d+(\.\d+)?/g) 此正则截取字符中的整数和小数
|
if (["≤", "≥", ">", "<", "="].includes(ele.ask[0])) {
|
const askVal = ele.ask.match(/\d+(\.\d+)?/g);
|
// 判断要求值是否包含在要求描述中
|
if (ele.tell.includes(ele.ask[0])) {
|
const regex = /([≤≥<>!=]=?|[<>=])[+-]?\d*(\.\d+)?/g;
|
const matches = ele.tell.match(regex);
|
if (
|
ele.ask != ele.tell &&
|
matches.filter((item) => item == ele.ask).length == 0
|
) {
|
console.log(
|
"要求值和要求描述不相等,并且要求描述中不包含要求值"
|
);
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
}
|
if (isNaN(askVal[0])) {
|
console.log("要求值中没有数字");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
if (
|
ele.tell.includes("直径公差之半") &&
|
ele.ask.indexOf("0.5") < 0
|
) {
|
console.log("直径公差之半与0.5不匹配");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
// if(ele.tell.indexOf(askVal[0])<0 && ele.tell.indexOf('半')<0){
|
// console.log(askVal);
|
// console.log(2222233);
|
// isTrue = false
|
// }else if(askVal==0.5&&ele.tell.indexOf('半')<0){
|
// console.log(22222);
|
// isTrue = false
|
// }
|
}
|
}
|
//判断范围(10-25),要求值必须是-
|
if (
|
ele.ask.indexOf("-") > 0 &&
|
ele.ask.length > 1 &&
|
ele.ask.indexOf("&") < 0
|
) {
|
//要求描述的~和要求值的-,等效
|
let tell = ele.tell;
|
if (
|
ele.tell.indexOf("~") > 0 ||
|
ele.tell.indexOf("(") ||
|
ele.tell.indexOf(")")
|
) {
|
tell = tell.replace("~", "-");
|
tell = tell.replace("(", "(");
|
tell = tell.replace(")", ")");
|
}
|
const splits = ele.ask.split("-");
|
//满足格式要求,并且两个都是数字
|
if (
|
splits.length == 2 &&
|
!isNaN(splits[0]) &&
|
!isNaN(splits[1])
|
) {
|
/**
|
* 判断情况
|
* 1.要求描述与要求描述相同
|
* 2.要求描述包含要求值
|
* 3.要求描述为3N-10N这种情况
|
* 4.要求描述为10±5这种情况
|
* 5.要求描述为(10-15)±5这种情况
|
*/
|
let min = Math.min(...splits);
|
let max = Math.max(...splits);
|
if (min == max) {
|
console.log("最大值和最小值相等");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
//要求描述中不包含±以及区间的数字,则返回false
|
if (tell.indexOf("±") < 0 && tell.indexOf("-") < 0) {
|
console.log("要求描述中不包含±以及区间的数字");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
} else if (ele.tell.indexOf("-") == 0) {
|
console.log("要求值的区间格式错误");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
} else if (tell.indexOf("-") > 0 || tell.indexOf("±") > 0) {
|
if (tell.indexOf("±") > 0 && tell.indexOf("-") > 0) {
|
const num = tell.split("±")[1];
|
const startIndex = tell.indexOf("(");
|
const endIndex = tell.indexOf(")");
|
////校验要求描述为(10-15)±5这种写法的情况
|
if (startIndex > -1 && endIndex > 0) {
|
const str = tell.substring(startIndex, endIndex);
|
if (str && str.indexOf("-") > 0) {
|
let strList = str.split("-");
|
const minNum = Number(strList[0] - num);
|
const maxNum = Number(strList[1] + num);
|
if (minNum > min || maxNum < max) {
|
console.log("错误的区间设置");
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
}
|
}
|
} else if (tell.indexOf("±") > 0 && tell.indexOf("-") < 0) {
|
//校验要求描述为10±5这种写法的情况
|
let splitNums = tell.split("±");
|
if (splitNums.length < 2) {
|
console.log(777777);
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
} else {
|
let leftNum = splitNums[0].match(/\d+(\.\d+)?/g);
|
let rightNum = splitNums[1].match(/\d+(\.\d+)?/g);
|
console.log(leftNum, rightNum);
|
let minTell = Number(
|
Number(leftNum) - Number(rightNum)
|
).toFixed(6);
|
let maxTell = Number(
|
Number(leftNum) + Number(rightNum)
|
).toFixed(6);
|
if (minTell != min || maxTell != max) {
|
console.log(888888);
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
}
|
} else {
|
const splitTells = tell.split("-");
|
if (
|
splitTells[0].indexOf(min) < 0 ||
|
splitTells[1].indexOf(max) < 0
|
) {
|
console.log(99999);
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
}
|
}
|
} else {
|
console.log(1010101001);
|
this.errorInspectionItemList.push(
|
ele.inspectionItem +
|
" " +
|
(ele.inspectionItemSubclass == null
|
? ""
|
: ele.inspectionItemSubclass)
|
);
|
isTrue = false;
|
}
|
}
|
// else if(ele.ask.indexOf('&')>0 && ele.ask.length>1){
|
// //判断
|
// }
|
}
|
});
|
} catch (error) {
|
console.log(error);
|
isTrue = false;
|
}
|
}
|
return isTrue;
|
},
|
save0() {
|
console.log("editTable2===", this.editTable);
|
if (this.editTable.every((m) => m.value)) {
|
let sampleList = this.handleData(
|
this.HaveJson(this.sampleList),
|
this.handleAsk,
|
1
|
);
|
if (sampleList.length === 0) {
|
this.$message.error("要求值为空,需要去标准库维护!");
|
return;
|
}
|
this.saveMethod(sampleList);
|
} else {
|
this.$message.error("请填写识别符值");
|
}
|
},
|
handleData(sampleList, calBack, type) {
|
let editTable = [];
|
let isTrue = true;
|
sampleList.forEach((item) => {
|
let obj = {
|
sampleCode: item.sampleCode,
|
model: item.model,
|
symbolList: [],
|
sampleId: item.id,
|
modelNum: item.modelNum,
|
};
|
if (item.insProduct && item.insProduct.length > 0) {
|
item.insProduct.forEach((a) => {
|
if (a.state == 1) {
|
if (type == 0) {
|
let str = calBack(a.ask);
|
str &&
|
obj.symbolList.push({
|
symbolItem: str,
|
inspectionItem: a.inspectionItem,
|
});
|
} else if (type == 1) {
|
let arr = this.HaveJson(
|
this.editTable.filter((b) => b.sampleId == item.id)
|
);
|
for (var i = 0; i < arr.length; i++) {
|
if (a.ask) {
|
if (a.ask.includes(arr[i].symbolItem)) {
|
let ask = calBack(a.ask, arr[i].symbolItem, arr[i].value);
|
if (ask) {
|
a.ask = ask;
|
}
|
let tell = this.handleTell(
|
a.tell,
|
arr[i].symbolItem,
|
arr[i].value
|
);
|
if (tell) {
|
a.tell = tell;
|
}
|
}
|
} else {
|
isTrue = false;
|
}
|
}
|
// arr.forEach(f => {
|
// if(a.ask){
|
// if(a.ask.includes(f.symbolItem)){
|
// let ask = calBack(a.ask, f.symbolItem,f.value)
|
// if (ask) {
|
// a.ask = ask
|
// }
|
// let tell = this.handleTell(a.tell, f.symbolItem,f.value)
|
// if (tell) {
|
// a.tell = tell
|
// }
|
// }
|
// }else{}
|
// })
|
}
|
}
|
});
|
}
|
// 光纤带项目
|
if (item.bushing && item.bushing.length > 0) {
|
item.bushing.forEach((a) => {
|
if (a.fiber && a.fiber.length > 0) {
|
a.fiber.forEach((b) => {
|
if (b.productList && b.productList.length > 0) {
|
b.productList.forEach((c) => {
|
if (c.state == 1) {
|
if (type == 0) {
|
let str = calBack(c.ask);
|
str &&
|
obj.symbolList.push({
|
symbolItem: str,
|
inspectionItem: c.inspectionItem,
|
});
|
} else if (type == 1) {
|
let arr = this.editTable.filter(
|
(b) => b.sampleId == item.id
|
);
|
arr.forEach((f) => {
|
if (c.ask.includes(f.symbolItem)) {
|
let ask = calBack(c.ask, f.symbolItem, f.value);
|
if (ask) {
|
c.ask = ask;
|
}
|
let tell = this.handleTell(
|
c.tell,
|
f.symbolItem,
|
f.value
|
);
|
if (tell) {
|
c.tell = tell;
|
}
|
}
|
});
|
}
|
}
|
});
|
}
|
});
|
}
|
if (a.fibers && a.fibers.length > 0) {
|
a.fibers.forEach((b) => {
|
if (b.productList && b.productList.length > 0) {
|
b.productList.forEach((c) => {
|
if (c.state == 1) {
|
if (type == 0) {
|
let str = calBack(c.ask);
|
str &&
|
obj.symbolList.push({
|
symbolItem: str,
|
inspectionItem: c.inspectionItem,
|
});
|
} else if (type == 1) {
|
// let ask = calBack(c.ask, c.rts)
|
// if (ask && c.state == 1) {
|
// c.ask = csk
|
// }
|
let arr = this.editTable.filter(
|
(b) => b.sampleId == item.id
|
);
|
arr.forEach((f) => {
|
if (c.ask.includes(f.symbolItem)) {
|
let ask = calBack(c.ask, f.symbolItem, f.value);
|
if (ask) {
|
c.ask = ask;
|
}
|
let tell = this.handleTell(
|
c.tell,
|
f.symbolItem,
|
f.value
|
);
|
if (tell) {
|
c.tell = tell;
|
}
|
}
|
});
|
}
|
}
|
});
|
}
|
if (b.fiber && b.fiber.length > 0) {
|
b.fiber.forEach((c) => {
|
if (c.productList && c.productList.length > 0) {
|
c.productList.forEach((d) => {
|
if (d.state == 1) {
|
if (type == 0) {
|
let str = calBack(d.ask);
|
str &&
|
obj.symbolList.push({
|
symbolItem: str,
|
inspectionItem: d.inspectionItem,
|
});
|
} else if (type == 1) {
|
// let ask = calBack(d.ask, d.rts)
|
// if (ask && d.state == 1) {
|
// d.ask = ask
|
// }
|
let arr = this.editTable.filter(
|
(b) => b.sampleId == item.id
|
);
|
arr.forEach((f) => {
|
if (d.ask.includes(f.symbolItem)) {
|
let ask = calBack(d.ask, f.symbolItem, f.value);
|
if (ask) {
|
d.ask = ask;
|
}
|
let tell = this.handleTell(
|
d.tell,
|
f.symbolItem,
|
f.value
|
);
|
if (tell) {
|
d.tell = tell;
|
}
|
}
|
});
|
}
|
}
|
});
|
}
|
});
|
}
|
});
|
}
|
});
|
}
|
if (type == 0) {
|
editTable.push(obj);
|
}
|
});
|
if (type == 0) {
|
editTable.forEach((a) => {
|
a.symbolList.forEach((b) => {
|
let arr = a.symbolList.filter((c) => c.symbolItem == b.symbolItem);
|
b.inspectionItemList = arr.map((c) => c.inspectionItem).join(",");
|
});
|
});
|
editTable.forEach((a) => {
|
let mySet = new Set();
|
a.symbolList = a.symbolList.filter((b) => {
|
let num0 = mySet.size;
|
mySet.add(b.symbolItem);
|
let num1 = mySet.size;
|
if (num0 != num1) {
|
return true;
|
} else {
|
return false;
|
}
|
});
|
});
|
let editTableNew = [];
|
editTable.forEach((a) => {
|
a.symbolList.forEach((b) => {
|
let obj = {
|
sampleCode: a.sampleCode,
|
model: a.model,
|
symbolItem: b.symbolItem,
|
sampleId: a.sampleId,
|
sampleIdTwo: a.sampleId,
|
value: null,
|
inspectionItemList: b.inspectionItemList,
|
modelNum: a.modelNum,
|
};
|
editTableNew.push(obj);
|
});
|
});
|
return isTrue ? editTableNew : [];
|
} else {
|
return isTrue ? sampleList : [];
|
}
|
},
|
saveMethod(sampleList0) {
|
let sampleList = this.HaveJson(sampleList0);
|
sampleList.forEach((a) => {
|
a.insProduct.forEach((b) => {
|
b.id = null;
|
delete b.bsmRow;
|
});
|
if (a.bushing && a.bushing.length > 0) {
|
a.bushing.forEach((b) => {
|
b.fiber.forEach((c) => {
|
c.productList.forEach((d) => {
|
d.id = null;
|
});
|
});
|
b.fibers.forEach((c) => {
|
c.productList.forEach((d) => {
|
d.id = null;
|
});
|
});
|
});
|
}
|
});
|
this.editTable.forEach((item) => {
|
sampleList.forEach((a) => {
|
if (item.sampleIdTwo == a.id) {
|
a.insProduct.forEach((b) => {
|
if (item.inspectionItemList == b.inspectionItem) {
|
b.ask = b.ask.replace(item.symbolItem, item.value);
|
this.$set(b, "specialValue", item.value);
|
}
|
});
|
}
|
});
|
});
|
console.log(this.sampleList);
|
console.log(this.fiberPairing);
|
this.saveLoad = true;
|
addInsOrder({
|
insOrder: this.addObj,
|
list: sampleList.map((a) => {
|
a.model =
|
a.model +
|
(a.modelNum == null || a.modelNum == "" || a.modelNum == "null"
|
? ""
|
: "-" + a.modelNum);
|
a.insProduct = a.insProduct.filter((b) => b.state === 1);
|
return a;
|
}),
|
pairing: this.bsm2Val2,
|
fiberPairing: this.fiberPairing,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.$message.success("已提交");
|
this.bsm3Dia = false;
|
this.goBack();
|
}
|
this.saveLoad = false;
|
})
|
.catch((error) => {
|
this.saveLoad = false;
|
console.error(error);
|
});
|
},
|
upInsOrderOfState(state) {
|
if (state == 1) {
|
this.issuedDialogVisible = true;
|
selectOrderManDay({
|
id: this.currentId,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.distributeData.orderId = this.currentId;
|
this.distributeData.appointed = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
setTimeout(() => {
|
this.issuedDialogVisible = true;
|
}, 1000);
|
} else {
|
// 不通过
|
this.noDialogVisible = true;
|
}
|
},
|
getLabelPrinting(currentId) {
|
labelPrinting({
|
ids: currentId,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
//审核通过,默认只打印第一个样品标签
|
let firstSample = res.data[0];
|
let arr1 = [];
|
firstSample.insProduct.forEach((b) => {
|
arr1.push(b.inspectionItem);
|
});
|
firstSample.item = [...new Set(arr1)].join(",");
|
this.beginPrint(firstSample);
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
//开始标签打印
|
beginPrint(qrData) {
|
console.log("qrData", qrData);
|
if (qrData == null || qrData.code == null || qrData.code == "") {
|
return;
|
}
|
this.LODOP = getLodop();
|
this.LODOP.SET_LICENSES(
|
"南通市鑫阳软件开发有限公司",
|
"60F8E5078AE17DEB340C94BC7E83CAFF",
|
"",
|
""
|
);
|
this.LODOP.PRINT_INITA();
|
let qrStr =
|
"https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=" +
|
qrData.id +
|
"&type=sample";
|
// this.LODOP.NEWPAGE()
|
// this.LODOP.SET_PRINT_PAGESIZE(0, 100, 360, '')
|
this.LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", 1);
|
this.LODOP.ADD_PRINT_BARCODE(2, 5, 80, 80, "QRCode", qrStr);
|
this.LODOP.ADD_PRINT_TEXT(5, 85, 60, 18, "样品编号:");
|
this.LODOP.SET_PRINT_STYLEA(2, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(5, 117, 280, 18, qrData.sampleCode);
|
this.LODOP.SET_PRINT_STYLEA(3, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(15, 85, 60, 18, "委托单号:");
|
this.LODOP.SET_PRINT_STYLEA(4, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(15, 117, 280, 18, qrData.code);
|
this.LODOP.SET_PRINT_STYLEA(5, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(25, 85, 60, 18, "规格型号:");
|
this.LODOP.SET_PRINT_STYLEA(6, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(25, 117, 280, 18, qrData.model);
|
this.LODOP.SET_PRINT_STYLEA(7, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(35, 85, 60, 18, "样品名称:");
|
this.LODOP.SET_PRINT_STYLEA(8, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(35, 117, 280, 18, qrData.sample);
|
this.LODOP.SET_PRINT_STYLEA(9, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(45, 85, 60, 20, "检测项目:");
|
this.LODOP.SET_PRINT_STYLEA(10, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(
|
45,
|
117,
|
150,
|
20,
|
qrData.item.length > 42
|
? qrData.item.substring(0, 39) + "..."
|
: qrData.item
|
);
|
this.LODOP.SET_PRINT_STYLEA(11, "FontSize", 5);
|
this.LODOP.ADD_PRINT_TEXT(67, 85, 60, 18, "样品状态:");
|
this.LODOP.SET_PRINT_STYLEA(12, "FontSize", 5);
|
let stateStr = "▢待检 ▢在检 ▢已检";
|
let leaveStr =
|
qrData.isLeave && qrData.isLeave === 1 ? " ▣留样" : " ▢留样";
|
if (qrData.insState == 0) {
|
stateStr = "▣待检 ▢在检 ▢已检";
|
} else if (qrData.insState == 1) {
|
stateStr = "▢待检 ▣在检 ▢已检";
|
} else if (qrData.insState == 2) {
|
stateStr = "▢待检 ▢在检 ▣已检";
|
}
|
this.LODOP.ADD_PRINT_TEXT(67, 117, 280, 18, stateStr + leaveStr);
|
this.LODOP.SET_PRINT_STYLEA(13, "FontSize", 5);
|
this.LODOP.PRINT();
|
// this.LODOP.PREVIEW()
|
},
|
// 下发
|
submitForm2() {
|
if (
|
this.distributeData.appointed == null ||
|
this.distributeData.appointed == ""
|
) {
|
this.$message.error("约定时间未填写");
|
return;
|
}
|
if (
|
this.addObj.type == 2 &&
|
(this.distributeData.userId == null ||
|
this.distributeData.userId.length == 0)
|
) {
|
this.$message.error("指派人员未填写");
|
return;
|
}
|
if (
|
this.distributeData.userId.length > 0 &&
|
(this.distributeData.sonLaboratory == null ||
|
this.distributeData.sonLaboratory == "")
|
) {
|
this.$message.error("试验室未填写");
|
return;
|
}
|
// let flag = true;
|
upInsOrderOfState({
|
state: 1,
|
id: this.currentId,
|
companyId: this.addObj.companyId,
|
laboratory: this.addObj.laboratory,
|
company: this.addObj.company,
|
isCreate: this.distributeData.isCreate,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.upLoad = true;
|
upInsOrder({
|
orderId: this.distributeData.orderId,
|
appointed: this.distributeData.appointed,
|
userIdList: this.distributeData.userId,
|
sonLaboratory: this.distributeData.sonLaboratory,
|
})
|
.then((res) => {
|
if (res.code === 201) {
|
this.upLoad = false;
|
return;
|
}
|
this.$message.success("提交成功");
|
this.issuedDialogVisible = false;
|
this.upLoad = false;
|
this.goBack();
|
//审核通过后,自动打印二维码
|
//TODO: 电力试验室暂时不用标签打印
|
if (
|
this.sonLaboratoryList.filter((f) => f.value === "电力试验室")
|
.length === 0
|
) {
|
this.$nextTick(() => {
|
this.getLabelPrinting(this.currentId);
|
});
|
}
|
})
|
.catch((error) => {
|
this.$message.error("提交失败");
|
this.upLoad = false;
|
console.error(error);
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
init() {
|
if (this.addObj.custom == "" || this.addObj.custom == null) {
|
this.addObj.custom = this.loginUserInfo.nickName; //设置制单人为当前登录人
|
} else {
|
this.addObj.custom = this.loginUserInfo.nickName;
|
}
|
this.addObj.company = this.loginUserInfo.companyName;
|
this.addObj.companyId = this.loginUserInfo.company;
|
this.addObj.userId = this.loginUserInfo.userId;
|
// this.addObj.code = this.loginUserInfo.code;
|
this.addObj.phone = this.loginUserInfo.phoneNumber;
|
this.addObj.production = "/";
|
this.addObj.productionEn = "/";
|
if (this.active == 1) {
|
this.selectInsOrderTemplate();
|
}
|
},
|
getProNum() {
|
this.sampleSelectionList.forEach((m, i) => {
|
this.$set(
|
this.sampleSelectionList[i],
|
"proNum",
|
m.insProduct.filter((a) => a.state == 1).length
|
);
|
});
|
this.$refs.sampleTable.doLayout();
|
},
|
searchFilter() {
|
this.$refs.tree.filter(this.search);
|
},
|
nodeOpen(data, node, el) {
|
$($(el.$el).find(".node_i")[0]).attr(
|
"class",
|
"node_i el-icon-folder-opened"
|
);
|
},
|
nodeClose(data, node, el) {
|
$($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder");
|
},
|
handleNodeClick(val, node, el) {
|
this.selectTree = "";
|
this.models = val.children;
|
this.getNodeParent(node);
|
let flag = false;
|
if (node.level == 3) {
|
if (node.data.children.length > 0) {
|
node.data.children.forEach((a) => {
|
let key = Object.keys(a);
|
if (!key.includes("level")) {
|
flag = true;
|
}
|
});
|
}
|
}
|
this.selectTree = this.selectTree.replace(" - ", "");
|
if (flag) {
|
this.selectTree = " - - " + this.selectTree;
|
}
|
console.log("00000", this.selectTree);
|
let data = this.selectTree.split(" - ");
|
let data2 = "";
|
for (let index = data.length - 1; index >= 0; index--) {
|
data2 += " - " + data[index];
|
}
|
this.selectTree = data2.replace(" - ", "");
|
},
|
getNodeParent(val) {
|
if (val.parent != null) {
|
if (val.data.children === null) {
|
this.selectTree += " - " + val.label + " - " + "";
|
} else {
|
this.selectTree += " - " + val.label;
|
}
|
this.getNodeParent(val.parent);
|
}
|
},
|
selectStandardTreeList() {
|
selectStandardTreeList2()
|
.then((res) => {
|
if (res.code === 200) {
|
this.list = res.data;
|
this.list.forEach((a) => {
|
this.expandedKeys.push(a.label);
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
filterNode(value, data) {
|
if (!value) return true;
|
return data.label.indexOf(value) !== -1;
|
},
|
activeStandardTree() {
|
let trees = this.selectTree.split(" - ");
|
if (trees.length < 3) {
|
this.$message.error("未选择对象");
|
return;
|
}
|
this.addObj.factory = trees[0];
|
this.addObj.laboratory = trees[1];
|
this.addObj.sampleType = trees[2];
|
if (trees[3] === undefined || trees[3] === "" || trees[3] === "- ") {
|
this.addObj.sample = trees[2];
|
} else {
|
this.addObj.sample = trees[3];
|
}
|
this.addObj.model = trees[4] == undefined ? null : trees[4];
|
this.selectStandardTree = false;
|
this.sampleList = [];
|
for (var i = 0; i < this.addObj.sampleNum; i++) {
|
this.sample.joinName = null;
|
this.sample.joinModel = null;
|
this.sample.joinNum = 1;
|
this.sample.sample = this.addObj.sample;
|
this.sample.model = this.addObj.model;
|
this.sample.unit = this.addObj.unit;
|
this.sample.standardMethodListId = null;
|
this.sample.insProduct = [];
|
this.sample.id = this.count;
|
this.sample.childSampleList = [];
|
this.sample.insulating = null;
|
this.sample.sheath = null;
|
this.sampleList.push(this.HaveJson(this.sample));
|
this.count++;
|
}
|
this.$refs.sampleTable.doLayout();
|
// this.selectsStandardMethodByFLSSM()
|
},
|
selectsStandardMethodByFLSSM() {
|
this.methodLoad = true;
|
selectsStandardMethodByFLSSM({
|
tree: this.selectTree,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.methodLoad = false;
|
try {
|
if (
|
res.data.standardMethodList.length == 0 &&
|
this.selectTree.split("-").length == 5
|
) {
|
let arr = this.selectTree.split("-");
|
let arr0 = arr.slice(0, arr.length - 1);
|
let selectTree = arr0
|
.join("-")
|
.substring(0, arr0.join("-").length - 1);
|
template()
|
.then((res) => {
|
if (res.status === 200) {
|
console.log(res);
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
selectsStandardMethodByFLSSM({
|
tree: selectTree,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.methods = ress.data.standardMethodList;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
} else {
|
this.methods = res.data.standardMethodList;
|
}
|
} catch (e) {}
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
addStandardTree(currentValue, oldValue) {
|
if (this.selectTree == null) return;
|
//减一个样品
|
const absNum = Math.abs(currentValue - oldValue);
|
if (absNum == 1) {
|
if (currentValue < oldValue) {
|
this.sampleList.splice(currentValue, 1);
|
} else if (currentValue > oldValue) {
|
//加一个样品
|
//复制第一个样品信息
|
let copySample = this.HaveJson(this.sampleList[0]);
|
copySample.id = parseInt(currentValue);
|
this.sampleList.push(copySample);
|
}
|
} else {
|
//直接输的数量,循环生成
|
if (currentValue > oldValue) {
|
const num = currentValue - oldValue;
|
for (let i = 1; i <= num; i++) {
|
//复制第一个样品信息
|
let copySample = this.HaveJson(this.sampleList[0]);
|
copySample.id = parseInt(oldValue + i);
|
this.sampleList.push(copySample);
|
}
|
} else if (oldValue > currentValue) {
|
const num = oldValue - currentValue;
|
this.sampleList.splice(currentValue, num);
|
}
|
}
|
// this.sampleList = []
|
// this.productList = []
|
// for (var i = 0; i < this.addObj.sampleNum; i++) {
|
// this.sample.joinName = null
|
// this.sample.joinModel = null
|
// this.sample.joinNum = 1
|
// this.sample.sample = this.addObj.sample
|
// this.sample.model = this.addObj.model
|
// this.sample.unit = this.addObj.unit
|
// this.sample.standardMethodListId = null
|
// this.sample.insProduct = []
|
// this.sample.id = parseInt(i+1)
|
// this.sample.childSampleList = []
|
// this.sample.insulating = null
|
// this.sample.sheath = null
|
// this.sampleList.push(this.HaveJson(this.sample))
|
// this.count++
|
// }
|
this.computationalPairing(this.sampleList.length);
|
this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
|
},
|
selectSample(val) {
|
this.sampleIds = [];
|
val.forEach((a) => {
|
this.sampleIds.push(a.id);
|
});
|
this.sampleSelectionList = val;
|
console.log("selectSample", this.sampleList);
|
console.log("val", val);
|
},
|
delSample() {
|
this.sampleIds.forEach((a) => {
|
for (var i = 0; i < this.sampleList.length; i++) {
|
if (this.sampleList[i].id == a) {
|
this.sampleList.splice(i, 1);
|
i -= 1;
|
break;
|
}
|
}
|
});
|
this.$refs.sampleTable.doLayout();
|
},
|
selectProduct(val) {
|
this.productListSelected = val;
|
this.productIds = [];
|
val.forEach((a) => {
|
this.productIds.push(a.id);
|
});
|
},
|
rowClick(row, column, event) {
|
this.currentMethod = row;
|
let obj = this.methods.find(
|
(a) => a.id == this.currentMethod.standardMethodListId
|
);
|
if (obj && obj.code == "委托要求") {
|
this.isAskOnlyRead = true;
|
} else {
|
this.isAskOnlyRead = false;
|
}
|
this.sampleId = row.id;
|
if (this.active !== 1) {
|
this.sampleIds = [];
|
this.sampleSelectionList.forEach((ele) => {
|
if (ele.id == row.id) {
|
this.sampleIds.push(row.id);
|
}
|
});
|
}
|
this.productList = row.insProduct;
|
this.productList0 = JSON.parse(JSON.stringify(this.productList));
|
setTimeout(() => {
|
this.productList.forEach((a) => {
|
if (a.state == 1) {
|
this.toggleSelection(a);
|
} else {
|
this.$refs.productTable.toggleRowSelection(a, false);
|
}
|
});
|
}, 200);
|
},
|
toggleSelection(row) {
|
this.$refs.productTable.toggleRowSelection(row, true);
|
},
|
upProductSelect(selection, row) {
|
let list = this.productListSelected.filter(
|
(item) => item.inspectionItem == "光纤接头损耗"
|
);
|
if (list.length > 0) {
|
this.fiberLoss = list.map(
|
(item) => item.inspectionItem + "" + item.inspectionItemSubclass
|
);
|
}
|
if (row.inspectionItem == "光纤接头损耗") {
|
this.fiberLoss.push(
|
row.inspectionItem + "" + row.inspectionItemSubclass
|
);
|
}
|
let arr1 = [...new Set(this.fiberLoss)];
|
this.bsm1DiaList = [];
|
row.state = row.state == 1 ? 0 : 1;
|
if (row.section === null) {
|
row.section = "";
|
}
|
let arr = this.productList.filter(
|
(m) =>
|
m.state == 1 &&
|
row.section.includes(m.section) &&
|
m.ask &&
|
m.section.indexOf("[") == -1
|
);
|
if (
|
row.bsm === "1" &&
|
row.section !== "" &&
|
row.section !== null &&
|
row.state === 1 &&
|
arr.length == 0
|
) {
|
if (row.section.indexOf("[") > -1) {
|
row.bsmRow = this.HaveJson(row);
|
}
|
row.bsm1 = true;
|
this.bsm1DiaList.push(row);
|
this.bsm1DiaAll = true;
|
} else if (
|
row.bsm === "1" &&
|
row.section !== "" &&
|
row.section !== null &&
|
row.state === 0 &&
|
arr.length == 0
|
) {
|
row.bsm1 = false;
|
} else if (arr.length > 0) {
|
try {
|
row.bsmRow = this.HaveJson(row);
|
if (row.section.indexOf("[") > -1) {
|
row.section = arr[0].section;
|
row.bsm1Val = arr[0].section;
|
this.bsm1DiaList.push(row);
|
this.upBsmAll(row);
|
} else {
|
let section = arr[0].section;
|
let arr0 = JSON.parse(row.section);
|
let arr1 = JSON.parse(row.ask);
|
let arr2 = JSON.parse(row.manHour);
|
let arr3 = JSON.parse(row.price);
|
let arr4 = JSON.parse(row.tell);
|
let index = arr0.indexOf(section);
|
row.section = section;
|
row.ask = arr1[index];
|
row.manHour = arr2[index];
|
row.price = arr3[index];
|
row.tell = arr4[index];
|
}
|
// let section = arr[0].section;
|
// let arr0 = JSON.parse(row.section);
|
// let arr1 = JSON.parse(row.ask);
|
// let arr2 = JSON.parse(row.manHour);
|
// let arr3 = JSON.parse(row.price);
|
// let arr4 = JSON.parse(row.tell);
|
// let index = arr0.indexOf(section);
|
// row.section = section;
|
// row.ask = arr1[index];
|
// row.manHour = arr2[index];
|
// row.price = arr3[index];
|
// row.tell = arr4[index];
|
} catch (e) {}
|
}
|
if (
|
row.bsm === "1" &&
|
row.inspectionItem === "光纤接头损耗" &&
|
this.sampleList.length > 1 &&
|
row.state === 1 &&
|
!this.isBsm2Val2
|
) {
|
this.bsm1Dia = arr1.length == 3 ? true : false;
|
this.bsm2 = this.bsm1Dia ? true : false;
|
//this.bsm2 = true;
|
// this.bsm1Dia = true;
|
if (this.bsm2Val2.length === 0) {
|
this.bsm2Val =
|
((this.sampleList.length - 1) * this.sampleList.length) / 2;
|
this.computationalPairing(this.sampleList.length);
|
this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
|
}
|
} else if (
|
row.bsm === "1" &&
|
row.inspectionItem === "光纤接头损耗" &&
|
row.state === 1 &&
|
this.sampleList.length > 1
|
) {
|
this.bsm2 = false;
|
} else if (
|
row.bsm === "1" &&
|
row.inspectionItem === "光纤接头损耗" &&
|
this.sampleList.length < 2
|
) {
|
this.$message.error("样品数量不足够进行配对操作");
|
row.state = row.state == 1 ? 0 : 1;
|
this.$refs.productTable.toggleRowSelection(row, false);
|
return;
|
}
|
/* if (row.ask.includes('D')&&row.state === 1) {
|
this.bsmRow3 = null;
|
row.rts = ''
|
this.bsm3Val = ''
|
this.bsm3Dia = true
|
this.bsmRow3 = row
|
}else{
|
this.bsm3Dia = false
|
} */
|
this.sampleList.map((item) => {
|
if (this.sampleIds.indexOf(item.id) > -1) {
|
item.insProduct.map((m) => {
|
if (m.id == row.id) {
|
m.state = row.state;
|
}
|
return m;
|
});
|
}
|
return item;
|
});
|
const select = this.selectTree.split(" - ");
|
if (
|
row.inspectionItem === "温度循环" &&
|
select[2] === "光缆" &&
|
row.state === 1 &&
|
this.isAskOnlyRead
|
) {
|
this.circulateShow = true;
|
return;
|
} else if (
|
row.inspectionItem === "温度循环" &&
|
select[2] === "光缆" &&
|
row.state === 0
|
) {
|
this.circulateShow = false;
|
}
|
if (
|
(row.inspectionItem === "温升试验" ||
|
row.inspectionItem === "热循环") &&
|
row.state === 1
|
) {
|
// console.log('row---', row)
|
this.temperatureTitle = `${row.inspectionItem}要求填写`;
|
this.isShowInput = row.inspectionItem === "热循环";
|
this.temId = row.id;
|
// this.temperatureShow = true;
|
this.spliceTemperatureTest();
|
return;
|
} else if (
|
(row.inspectionItem === "温升试验" ||
|
row.inspectionItem === "热循环") &&
|
row.state === 0
|
) {
|
this.temperatureShow = false;
|
}
|
if (
|
row.inspectionItem === "单根垂直燃烧" &&
|
select[2] === "光缆" &&
|
row.state === 1
|
) {
|
this.singleVerticalCombustionNum++;
|
if (this.singleVerticalCombustionNum > 1) {
|
this.openSingleVerticalCombustionDialog();
|
return;
|
}
|
} else if (
|
row.inspectionItem === "单根垂直燃烧" &&
|
select[2] === "光缆" &&
|
row.state === 0
|
) {
|
this.singleVerticalCombustionNum--;
|
}
|
this.changeProductList0();
|
this.currentMethod.insProduct = this.productList0;
|
this.getProNum();
|
console.log("upProductSelect", this.sampleList);
|
},
|
searchProject() {
|
getDicts("fiber_type")
|
.then((res) => {
|
if (res.code === 200) {
|
this.opticalProject = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
permute(nums) {
|
const result = [];
|
|
function backtrack(temp, nums) {
|
if (temp.length === 2) {
|
result.push([...temp]);
|
return;
|
}
|
for (let i = 0; i < nums.length; i++) {
|
if (temp.includes(nums[i])) continue;
|
// 避免重复数字
|
if (temp.length > 0 && nums[i] < temp[temp.length - 1]) continue; // 规定顺序,避免重复组合
|
temp.push(nums[i]);
|
backtrack(temp, nums);
|
temp.pop();
|
}
|
}
|
backtrack([], nums);
|
return result;
|
},
|
computationalPairing(n) {
|
const nums = [];
|
for (let i = 1; i <= n; i++) {
|
nums.push(i);
|
}
|
this.bsm2Val3 = this.HaveJson(this.permute(nums));
|
},
|
tableRowClassName({ row, rowIndex }) {
|
if (row.state === 0) {
|
return "";
|
}
|
return "warning-row";
|
},
|
selectInsOrderTemplate() {
|
selectInsOrderTemplate({ company: this.addObj.company })
|
.then((res) => {
|
if (res.code === 200) {
|
this.templates = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
// 删除模板--调用接口
|
handleDelete(row) {
|
this.$confirm("是否删除当前数据?", "警告", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
delInsOrderTemplate({
|
id: row.id,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.$message.success("删除成功");
|
this.selectInsOrderTemplate();
|
}
|
})
|
.catch((error) => {
|
this.$message.error("删除失败");
|
console.error(error);
|
});
|
})
|
.catch(() => {});
|
},
|
// 保存模板
|
addTemplateDia() {
|
if (this.templateName) {
|
this.templateLoading = true;
|
addInsOrderTemplate({
|
name: this.templateName,
|
thing: JSON.stringify({
|
addObj: this.addObj,
|
sampleList: this.sampleList,
|
selectTree: this.selectTree,
|
}),
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.templateLoading = false;
|
this.templateDia = false;
|
this.$message.success("保存成功");
|
this.selectInsOrderTemplate();
|
this.templateName = "";
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
} else {
|
this.$message.error("请填写模板名称");
|
}
|
},
|
// 查询模板
|
selectInsOrderTemplateById(e) {
|
selectInsOrderTemplateById({ id: e })
|
.then((res) => {
|
if (res.code === 200) {
|
let obj = res.data;
|
console.log(obj);
|
//制单人设置为当前登录用户
|
obj.addObj.custom = this.loginUserInfo.nickName;
|
obj.addObj.userId = this.loginUserInfo.userId;
|
this.addObj = obj.addObj;
|
this.sampleList = obj.sampleList;
|
this.selectTree = obj.selectTree;
|
//默认选中第一个样品
|
this.$nextTick(() => {
|
if (this.sampleList.length > 0) {
|
this.rowClick(this.sampleList[0]);
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
delSampleAndProduct() {
|
this.sampleList.splice(scope.$index, 1);
|
this.productList = [];
|
},
|
selectDictForUnit() {
|
getDicts("sys_unit")
|
.then((res) => {
|
if (res.code === 200) {
|
this.units = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
//查询
|
selectDictForOrderType() {
|
getDicts("check_type1")
|
.then((res) => {
|
if (res.code === 200) {
|
this.orderType = res.data;
|
if (res.data.length > 0) {
|
this.addObj.orderType = res.data[0].dictValue;
|
}
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
selectDictForSampleForm() {
|
getDicts("form_type")
|
.then((res) => {
|
if (res.code === 200) {
|
this.formType = res.data;
|
if (this.formType.length > 0) {
|
this.addObj.formType = this.formType[0].dictValue;
|
}
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
methodChange(val, row) {
|
if (val === null || val === "") return;
|
this.currentMethod = row;
|
let obj = this.methods.find(
|
(a) => a.id == this.currentMethod.standardMethodListId
|
);
|
if (obj && obj.code == "委托要求") {
|
this.isAskOnlyRead = true;
|
} else {
|
this.isAskOnlyRead = false;
|
}
|
this.getProductLoad = true;
|
let selectTreeList = this.selectTree.split(" - ");
|
this.addObj.model &&
|
(selectTreeList[selectTreeList.length - 1] = this.addObj.model);
|
selectStandardProductList({
|
model:
|
(this.addObj.model ? this.addObj.model : row.model) +
|
"-" +
|
row.modelNum,
|
standardMethodListId: val,
|
factory: selectTreeList.join(" - "),
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
res.data.forEach((a) => {
|
a.state = 0;
|
});
|
row.insProduct = this.HaveJson(res.data);
|
this.productList = row.insProduct;
|
this.productList0 = JSON.parse(JSON.stringify(this.productList));
|
// this.$refs.sampleTable.setCurrentRow(row)
|
// setTimeout(() => {
|
// this.productList.forEach(a => {
|
// if (a.state == 1) this.toggleSelection(a)
|
// })
|
// }, 200)
|
this.$nextTick(() => {
|
this.methodCount++;
|
this.getProductLoad = false;
|
if (this.sampleSelectionList.length == this.methodCount) {
|
this.standardLoading = false;
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
this.searchProject();
|
this.searchTemList();
|
},
|
//批量修改标准方法
|
batchMethodChange(val, row) {
|
if (val === null || val === "") return;
|
this.currentMethod = row;
|
let obj = this.methods.find(
|
(a) => a.id == this.currentMethod.standardMethodListId
|
);
|
if (obj && obj.code == "委托要求") {
|
this.isAskOnlyRead = true;
|
} else {
|
this.isAskOnlyRead = false;
|
}
|
this.getProductLoad = true;
|
let selectTreeList = this.selectTree.split(" - ");
|
this.addObj.model &&
|
(selectTreeList[selectTreeList.length - 1] = this.addObj.model);
|
selectStandardProductList({
|
model:
|
(this.addObj.model ? this.addObj.model : row.model) +
|
"-" +
|
row.modelNum,
|
standardMethodListId: val,
|
factory: selectTreeList.join(" - "),
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
res.data.forEach((a) => {
|
a.state = 0;
|
});
|
row.insProduct = this.HaveJson(res.data);
|
this.productList = row.insProduct;
|
this.productList0 = JSON.parse(JSON.stringify(this.productList));
|
// this.$refs.sampleTable.setCurrentRow(row)
|
// setTimeout(() => {
|
// this.productList.forEach(a => {
|
// if (a.state == 1) this.toggleSelection(a)
|
// })
|
// }, 200)
|
this.$nextTick(() => {
|
this.methodCount++;
|
this.getProductLoad = false;
|
if (this.sampleSelectionList.length == this.methodCount) {
|
this.standardLoading = false;
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
this.searchProject();
|
this.searchTemList();
|
},
|
searchTemList() {
|
this.temperatureList = [];
|
getDicts("temperature_cycling_type")
|
.then((res) => {
|
if (res.code === 200) {
|
this.temperatureEngList = res.data;
|
res.data.forEach((item) => {
|
this.temperatureList.push(item.dictLabel);
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
changeModel() {
|
this.sampleList.forEach((a) => {
|
let obj = this.sampleIds.find((b) => b == a.id);
|
if (obj) {
|
a.model = this.model;
|
}
|
});
|
},
|
changeStandardMethodListId() {
|
this.methodCount = 0;
|
this.standardLoading = true;
|
for (let i = 0; i < this.sampleSelectionList.length; i++) {
|
let a = this.sampleSelectionList[i];
|
let obj = this.sampleIds.find((b) => b == a.id);
|
if (obj) {
|
a.standardMethodListId = this.standardMethodListId;
|
this.methodChange(this.standardMethodListId, a);
|
}
|
}
|
},
|
methodFocus() {
|
this.selectsStandardMethodByFLSSM();
|
},
|
handleChangeModel(e) {
|
this.productList = [];
|
let num = this.selectTree.split("-").length;
|
if (num != 5) {
|
this.selectTree = this.selectTree + " - " + e;
|
} else {
|
let arr = this.selectTree.split("-");
|
let arr0 = arr.slice(0, arr.length - 1);
|
this.selectTree = arr0.join("-") + "- " + e;
|
}
|
},
|
// 要求值变化时
|
requestChange(e, row, type) {
|
//this.currentMethod 当前样品id
|
this.sampleList.forEach((item) => {
|
if (item.id == this.currentMethod.id) {
|
item.insProduct.forEach((i) => {
|
if (i.id == row.id) {
|
i[type] = e;
|
}
|
});
|
}
|
});
|
let flag =
|
this.sampleSelectionList.filter((a) => a.id == this.currentMethod.id)
|
.length > 0
|
? true
|
: false;
|
if (!flag) {
|
return;
|
}
|
|
// this.sampleSelectionList 勾选的样品
|
this.sampleSelectionList.forEach((item) => {
|
// 在this.sampleList获取勾选的样品
|
this.sampleList.forEach((s) => {
|
if (s.id == item.id) {
|
// 遍历勾选的样品
|
if (s.insProduct.length > 0) {
|
s.insProduct.forEach((a) => {
|
if (a.id == row.id && a.state == 1) {
|
a[type] = e;
|
}
|
// if(a.id == row.id && a.state == 1) {
|
// a[type] = e
|
// }
|
});
|
}
|
}
|
});
|
});
|
// this.sampleList.map(item => {
|
// if (this.sampleIds.indexOf(item.id) > -1) {
|
// item.insProduct.map(m => {
|
// if (m.id == row.id) {
|
// m[type] = e;
|
// }
|
// return m;
|
// })
|
// }
|
// return item
|
// })
|
},
|
selectStandardMethods() {
|
selectStandardMethodEnum()
|
.then((res) => {
|
if (res.code === 200) {
|
this.methods = res.data;
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
selectable() {
|
if (this.active > 1) {
|
return false;
|
} else {
|
return true;
|
}
|
},
|
handleAll(e) {
|
console.log("e", e);
|
if (e.length > 0) {
|
this.productList.map((m) => {
|
if (e.find((a) => a.id == m.id)) {
|
m.state = 1;
|
}
|
return m;
|
});
|
} else {
|
this.productList.map((m) => {
|
m.state = 0;
|
return m;
|
});
|
}
|
this.bsmRow3 = [];
|
this.bsm1DiaList = [];
|
this.productList.forEach((p) => {
|
if (
|
p.bsm === "1" &&
|
p.section !== "" &&
|
p.section !== null &&
|
p.state === 1
|
) {
|
if (p.section.indexOf("[") > -1) {
|
p.bsmRow = this.HaveJson(p);
|
}
|
p.bsm1 = true;
|
this.bsm1DiaList.push(p);
|
this.bsm1DiaAll = true;
|
} else if (
|
p.bsm === "1" &&
|
p.section !== "" &&
|
p.section !== null &&
|
p.state === 0
|
) {
|
p.bsm1 = false;
|
}
|
if (
|
p.bsm === "1" &&
|
p.inspectionItem === "光纤接头损耗" &&
|
this.sampleList.length > 1 &&
|
p.state === 1 &&
|
!this.isBsm2Val2
|
) {
|
this.bsm2 = true;
|
this.bsm1Dia = true;
|
if (this.bsm2Val2.length === 0) {
|
this.bsm2Val =
|
((this.sampleList.length - 1) * this.sampleList.length) / 2;
|
this.computationalPairing(this.sampleList.length);
|
this.bsm2Val2 = this.HaveJson(this.bsm2Val3);
|
}
|
} else if (
|
p.bsm === "1" &&
|
p.inspectionItem === "光纤接头损耗" &&
|
p.state === 1 &&
|
this.sampleList.length > 1
|
) {
|
this.bsm2 = false;
|
} else if (
|
p.bsm === "1" &&
|
p.inspectionItem === "光纤接头损耗" &&
|
this.sampleList.length < 2
|
) {
|
this.$message.error("样品数量不足够进行配对操作");
|
this.$refs.productTable.clearSelection();
|
return;
|
}
|
const select = this.selectTree.split(" - ");
|
if (
|
p.inspectionItem === "温度循环" &&
|
select[2] === "光缆" &&
|
p.state === 1 &&
|
this.isAskOnlyRead
|
) {
|
this.circulateShow = true;
|
return;
|
} else if (
|
p.inspectionItem === "温度循环" &&
|
select[2] === "光缆" &&
|
p.state === 0
|
) {
|
this.circulateShow = false;
|
}
|
if (
|
(p.inspectionItem === "温升试验" || p.inspectionItem === "热循环") &&
|
p.state === 1
|
) {
|
// console.log('p---', p)
|
this.temperatureTitle = `${p.inspectionItem}要求填写`;
|
this.isShowInput = p.inspectionItem === "热循环";
|
this.temId = p.id;
|
this.spliceTemperatureTest();
|
// this.temperatureShow = true;
|
return;
|
} else if (
|
(p.inspectionItem === "温升试验" || p.inspectionItem === "热循环") &&
|
p.state === 0
|
) {
|
this.temperatureShow = false;
|
}
|
if (
|
p.inspectionItem === "单根垂直燃烧" &&
|
select[2] === "光缆" &&
|
p.state === 1
|
) {
|
this.singleVerticalCombustionNum++;
|
if (this.singleVerticalCombustionNum > 1) {
|
this.openSingleVerticalCombustionDialog();
|
return;
|
}
|
} else if (
|
p.inspectionItem === "单根垂直燃烧" &&
|
select[2] === "光缆" &&
|
p.state === 0
|
) {
|
this.singleVerticalCombustionNum--;
|
}
|
/* if (p.ask.includes('RTS')&&p.state === 1) {
|
p.rts = ''
|
this.bsm3Val = ''
|
this.bsm3 = true
|
this.bsm3Dia = true
|
this.bsmRow3.push(p)
|
} */
|
});
|
if (e.length > 0) {
|
// this.sampleList.map(item => {
|
// if (item.id === this.currentMethod.id) {
|
// item.insProduct.map(m => {
|
// m.state = 1
|
// return m;
|
// })
|
// }
|
// })
|
console.log("aaa-----", this.sampleList);
|
this.sampleList.map((item) => {
|
console.log("this.sampleSelectionList-->", this.sampleSelectionList);
|
this.sampleSelectionList.forEach((ele) => {
|
if (ele.id == item.id) {
|
item.insProduct.map((m) => {
|
m.state = 1;
|
return m;
|
});
|
}
|
});
|
});
|
} else {
|
this.sampleList.map((item) => {
|
if (this.sampleIds.indexOf(item.id) > -1) {
|
item.insProduct.map((m) => {
|
m.state = 0;
|
return m;
|
});
|
}
|
return item;
|
});
|
}
|
this.changeProductList0();
|
this.currentMethod.insProduct = this.productList0;
|
this.getProNum();
|
this.$nextTick(() => {
|
this.$refs.productTable.doLayout();
|
});
|
},
|
submitTell() {
|
if (!this.tell) {
|
this.$message.error("请输入不通过原因");
|
return;
|
}
|
this.noLoading = true;
|
upInsOrderOfState({
|
state: 2,
|
id: this.currentId,
|
tell: this.tell,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
this.noLoading = false;
|
this.tell = "";
|
this.$message.success("提交成功");
|
this.issuedDialogVisible = false;
|
this.goBack();
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
selectEnumByCategoryForSonLaboratory() {
|
getDicts("sys_sub_lab")
|
.then((res) => {
|
if (res.code === 200) {
|
this.factory = [];
|
res.data.forEach((a) => {
|
this.filters.push({
|
text: a.dictLabel,
|
value: a.dictValue,
|
});
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
},
|
filterHandler(value, row, column) {
|
const property = column["property"];
|
return row[property] === value;
|
},
|
openConfig() {
|
if (this.active === 1) {
|
if (this.sampleIds.length === 0) {
|
this.$message.error("未选择样品");
|
return;
|
}
|
this.configShow = true;
|
} else {
|
if (this.sampleId === null) {
|
this.$message.error("未选中样品");
|
return;
|
}
|
this.sampleIds = [this.sampleId];
|
selectBushingBySampleId({
|
sampleId: this.sampleId,
|
})
|
.then((res) => {
|
if (res.code === 200) {
|
if (res.data.length === 0) {
|
this.$message.error("该样品没有配置光纤");
|
return;
|
}
|
for (var i in this.sampleList) {
|
if ((this.sampleList[i].id = this.sampleId)) {
|
this.sampleList[i].bushing = res.data;
|
break;
|
}
|
}
|
this.$nextTick(() => {
|
this.configShow = true;
|
});
|
}
|
})
|
.catch((error) => {
|
console.error(error);
|
});
|
}
|
},
|
openEquipConfig() {
|
if (this.active === 1) {
|
if (this.sampleIds.length === 0) {
|
this.$message.error("未选择样品");
|
return;
|
}
|
this.equipConfigShow = true;
|
} else {
|
if (this.sampleId === null) {
|
this.$message.error("未选中样品");
|
return;
|
}
|
}
|
},
|
upBsm1(val) {
|
let sections = JSON.parse(this.bsmRow.section);
|
let asks = JSON.parse(this.bsmRow.ask);
|
let tells = JSON.parse(this.bsmRow.tell);
|
let manHours = JSON.parse(this.bsmRow.manHour);
|
let prices = JSON.parse(this.bsmRow.price);
|
for (var a in sections) {
|
if (val === sections[a]) {
|
this.productList.forEach((p) => {
|
if (p.id === this.bsmRow.id) {
|
p.section = sections[a];
|
p.ask = asks[a];
|
p.tell = tells[a];
|
p.manHour = manHours[a];
|
p.price = prices[a];
|
}
|
});
|
break;
|
}
|
}
|
},
|
upBsmAll(item) {
|
// console.log(1111,item,this.bsm1DiaList)
|
for (let i = 0; i < this.bsm1DiaList.length; i++) {
|
this.bsm1DiaList[i].bsm1Val = item.bsm1Val;
|
let sections = JSON.parse(this.bsm1DiaList[i].bsmRow.section);
|
let asks = JSON.parse(this.bsm1DiaList[i].bsmRow.ask);
|
let tells = JSON.parse(this.bsm1DiaList[i].bsmRow.tell);
|
let manHours = JSON.parse(this.bsm1DiaList[i].bsmRow.manHour);
|
let prices = JSON.parse(this.bsm1DiaList[i].bsmRow.price);
|
for (var a in sections) {
|
console.log(
|
this.bsm1DiaList[i].bsm1Val === sections[a],
|
"====",
|
this.bsm1DiaList[i],
|
"===="
|
);
|
if (this.bsm1DiaList[i].bsm1Val === sections[a]) {
|
this.productList.forEach((p) => {
|
if (p.id === this.bsm1DiaList[i].bsmRow.id) {
|
p.section = sections[a];
|
p.ask = asks[a];
|
p.tell = tells[a];
|
p.manHour = manHours[a];
|
p.price = prices[a];
|
}
|
});
|
this.sampleSelectionList.forEach((item) => {
|
item.insProduct.forEach((p) => {
|
if (p.id === this.bsm1DiaList[i].bsmRow.id) {
|
p.section = sections[a];
|
p.ask = asks[a];
|
p.tell = tells[a];
|
p.manHour = manHours[a];
|
p.price = prices[a];
|
}
|
});
|
});
|
break;
|
}
|
}
|
}
|
console.log("tthis.sampleSelectionList", this.sampleSelectionList);
|
console.log("this.sampleList", this.sampleList);
|
console.log("this.productList", this.productList);
|
this.changeProductList0();
|
this.currentMethod.insProduct = this.productList0;
|
},
|
save1() {
|
if (this.bsm1DiaList.length > 0) {
|
this.bsm1DiaList.forEach((item) => {
|
if (!item.bsm1Val) {
|
throw this.$message.error("特殊项目必须处理");
|
}
|
});
|
}
|
if (this.bsm2) {
|
if (this.bsm2Val2.length === 0) {
|
this.$message.error("特殊项目必须处理");
|
return;
|
}
|
console.log("this.bsm2Val2", this.bsm2Val2);
|
let set = new Set();
|
for (let i = 0; i < this.bsm2Val2.length; i++) {
|
let num0 = set.size;
|
set.add(JSON.stringify(this.bsm2Val2[i]));
|
let num1 = set.size;
|
if (num1 == num0) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
|
let num2 = set.size;
|
if (num1 == num2) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
}
|
this.isBsm2Val2 = true;
|
}
|
this.bsm1DiaAll = false;
|
},
|
save2() {
|
if (this.bsm1DiaList.length > 0) {
|
this.bsm1DiaList.forEach((item) => {
|
if (!item.bsm1Val) {
|
throw this.$message.error("特殊项目必须处理");
|
}
|
});
|
}
|
if (this.bsm2) {
|
if (this.bsm2Val2.length === 0) {
|
this.$message.error("特殊项目必须处理");
|
return;
|
}
|
let set = new Set();
|
for (let i = 0; i < this.bsm2Val2.length; i++) {
|
let num0 = set.size;
|
set.add(JSON.stringify(this.bsm2Val2[i]));
|
let num1 = set.size;
|
if (num1 == num0) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
|
let num2 = set.size;
|
if (num1 == num2) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
}
|
this.isBsm2Val2 = true;
|
}
|
this.bsm1Dia = false;
|
},
|
beforeClose(done) {
|
// if (this.bsm1) {
|
// if (this.bsm1Val === null || this.bsm1Val === '') {
|
// this.$message.error('特殊项目必须处理')
|
// return
|
// }
|
// }
|
if (this.bsm1DiaList.length > 0) {
|
this.bsm1DiaList.forEach((item) => {
|
if (!item.bsm1Val) {
|
throw this.$message.error("特殊项目必须处理");
|
}
|
});
|
}
|
if (this.bsm2) {
|
if (this.bsm2Val2.length === 0) {
|
this.$message.error("特殊项目必须处理");
|
return;
|
}
|
let set = new Set();
|
for (let i = 0; i < this.bsm2Val2.length; i++) {
|
let num0 = set.size;
|
set.add(JSON.stringify(this.bsm2Val2[i]));
|
let num1 = set.size;
|
if (num1 == num0) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
set.add(JSON.stringify(this.bsm2Val2[i].reverse()));
|
let num2 = set.size;
|
if (num1 == num2) {
|
this.$message.error("关联项目不能重复");
|
return;
|
}
|
}
|
this.isBsm2Val2 = true;
|
}
|
// if(this.bsm3){
|
// if(!this.bsm3Val){
|
// this.$message.error('RST必须填写')
|
// return
|
// }else{
|
// if(Array.isArray(this.bsmRow3)){
|
// this.bsmRow3.forEach(item=>{
|
// item.rts = this.bsm3Val
|
// })
|
// }else{
|
// this.bsmRow3.rts = this.bsm3Val
|
// }
|
// }
|
// }
|
done();
|
},
|
beforeClose0(done) {
|
if (!this.bsm3Val) {
|
this.$message.error("RST必须填写");
|
return;
|
} else {
|
if (Array.isArray(this.bsmRow3)) {
|
this.bsmRow3.forEach((item) => {
|
item.rts = this.bsm3Val;
|
});
|
} else {
|
this.bsmRow3.rts = this.bsm3Val;
|
}
|
}
|
done();
|
},
|
getTotal(bushing, flag = true) {
|
this.totalArr = [];
|
this.total = 0;
|
// 将选中的样品添加bushing 没有勾选就是全部 表格监听调用不进行光线配置的赋值
|
if (flag) {
|
if (this.sampleSelectionList.length > 0) {
|
+this.sampleSelectionList.forEach((item) => {
|
this.sampleList.forEach((a) => {
|
if (a.id == item.id) {
|
a.bushing = bushing;
|
}
|
});
|
});
|
} else {
|
this.sampleList.forEach((a) => {
|
a.bushing = bushing;
|
});
|
}
|
}
|
console.log("sampleSelectionList", this.sampleSelectionList);
|
console.log("this.sampleList", this.sampleList);
|
this.sampleList.forEach((item) => {
|
if (item.insProduct && item.insProduct.length > 0) {
|
item.insProduct.forEach((a) => {
|
this.totalArr.push(a);
|
});
|
}
|
if (item.bushing && item.bushing.length > 0) {
|
item.bushing.forEach((a) => {
|
if (a.fiber && a.fiber.length > 0) {
|
a.fiber.forEach((b) => {
|
if (b.productList && b.productList.length > 0) {
|
b.productList.forEach((c) => {
|
this.totalArr.push(c);
|
});
|
}
|
});
|
}
|
if (a.fibers && a.fibers.length > 0) {
|
a.fibers.forEach((b) => {
|
if (b.productList && b.productList.length > 0) {
|
b.productList.forEach((c) => {
|
this.totalArr.push(c);
|
});
|
}
|
if (b.fiber && b.fiber.length > 0) {
|
b.fiber.forEach((c) => {
|
if (c.productList && c.productList.length > 0) {
|
c.productList.forEach((d) => {
|
this.totalArr.push(d);
|
});
|
}
|
});
|
}
|
});
|
}
|
});
|
}
|
});
|
let mySet = new Set();
|
let arr0 = this.totalArr.filter((item) => {
|
if (item.state == 1) {
|
let num1 = mySet.size;
|
if (item.manHourGroup === "" || !item.manHourGroup) {
|
return true;
|
} else {
|
mySet.add(item.manHourGroup);
|
let num2 = mySet.size;
|
if (num2 > num1) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
}
|
});
|
arr0.forEach((item) => {
|
this.total += Number(item.price);
|
});
|
let arr1 = this.totalArr.filter((item) => item.state == 1);
|
let mySet0 = new Set();
|
this.sonLaboratoryList = [];
|
arr1.forEach((item) => {
|
let num1 = mySet0.size;
|
mySet0.add(item.sonLaboratory);
|
let num2 = mySet0.size;
|
if (num2 > num1) {
|
this.sonLaboratoryList.push({
|
label: item.sonLaboratory,
|
value: item.sonLaboratory,
|
});
|
}
|
});
|
},
|
bsm2Up(val) {
|
let list = [];
|
for (let a = 1; a < this.bsm2Val3.length + 1; a++) {
|
list.push(a);
|
}
|
let set = new Set();
|
let size1 = set.length;
|
while (set.size < val) {
|
set.add(Math.ceil(Math.random() * this.bsm2Val3.length));
|
}
|
this.bsm2Val2 = [];
|
for (let a of set) {
|
this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a - 1]));
|
}
|
},
|
changeUser() {
|
if (this.sonLaboratoryList.length > 0) {
|
this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value;
|
}
|
},
|
},
|
};
|
</script>
|
|
<style scoped>
|
.ins_order_add {
|
width: 100%;
|
height: 100%;
|
overflow-y: auto;
|
overflow-x: hidden;
|
}
|
|
.ins_order_add::-webkit-scrollbar {
|
width: 0;
|
}
|
|
.title {
|
height: 60px;
|
line-height: 60px;
|
}
|
|
.search {
|
height: 100%;
|
background-color: #fff;
|
padding: 5px 40px 5px 0;
|
}
|
|
.search_thing {
|
display: flex;
|
align-items: center;
|
height: 50px;
|
}
|
|
.search_label {
|
width: 120px;
|
font-size: 14px;
|
text-align: right;
|
}
|
|
.search_input {
|
width: calc(100% - 20px);
|
}
|
|
.node_i {
|
color: orange;
|
font-size: 18px;
|
}
|
|
.el-select-dropdown__item {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
}
|
|
.pairing {
|
text-align: center;
|
line-height: 36px;
|
margin: 3px 0;
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
border-radius: 4px;
|
}
|
|
.askRts {
|
width: 100px;
|
font-size: 12px;
|
border-top: 0;
|
border-left: 0;
|
border-right: 0;
|
border-bottom: 2px solid rgba(0, 0, 0, 0.3);
|
text-align: center;
|
background-color: rgba(0, 0, 0, 0.1);
|
outline: none;
|
border-radius: 2px;
|
line-height: 24px;
|
margin-top: 5px;
|
}
|
|
.circulateTable {
|
display: flex;
|
flex-direction: row;
|
justify-content: space-between;
|
}
|
|
.opticalProject {
|
width: 38%;
|
}
|
|
.temperatureList {
|
width: 60%;
|
}
|
|
.temperatureListTitle {
|
display: flex;
|
flex-direction: row;
|
justify-content: space-between;
|
line-height: 30px;
|
}
|
</style>
|
<style>
|
.ins_order_add .el-input-group__append,
|
.el-input-group__prepend {
|
padding: 0 10px;
|
}
|
|
.ins_order_add .el-tree-node__content {
|
height: 32px;
|
font-size: 14px;
|
border-radius: 2px;
|
}
|
|
.ins_order_add
|
.el-tree--highlight-current
|
.el-tree-node.is-current
|
> .el-tree-node__content {
|
color: #3a7bfa;
|
}
|
|
.ins_order_add .has-gutter .el-table__cell .cell {
|
line-height: 30px;
|
background-color: #fafafa;
|
}
|
|
.ins_order_add .has-gutter .el-table__cell {
|
background-color: #fafafa !important;
|
}
|
|
.ins_order_add .el-table__row .cell {
|
font-size: 12px;
|
}
|
|
.ins_order_add .el-table .warning-row .cell {
|
color: #3a7bfa;
|
}
|
|
.ins_order_add .el-select .is-disabled {
|
background: transparent !important;
|
}
|
|
.ins_order_add .el-select .is-disabled .el-input__inner {
|
background: transparent !important;
|
}
|
|
.company_input .el-form-item__content,
|
.sample_input .el-form-item__content {
|
width: 70%;
|
}
|
|
.engineeringEn_input .el-form-item__content,
|
.otcCode_input .el-form-item__content,
|
.productionEn_input .el-form-item__content {
|
width: 63%;
|
}
|
|
.processing_input .el-form-item__content {
|
width: 60%;
|
}
|
</style>
|