| | |
| | | <template> |
| | | <div> |
| | | <div v-show="!configShow && !equipConfigShow && !cableConfigShow"> |
| | | <el-row class="title"> |
| | | <el-col :span="6" style="padding-left: 20px; text-align: left" |
| | | >委托单信息 总价:<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="openCableConfig" |
| | | v-if=" |
| | | active == 1 && |
| | | PROJECT == '装备电缆' && |
| | | addObj.sampleType != undefined && |
| | | addObj.sampleType.indexOf('电缆') > -1 |
| | | " |
| | | >电缆配置</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="$parent.playOrder(0)"> |
| | | <span style="color: #3a7bfa">返回</span> |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <basic-container> |
| | | <div |
| | | class="search" |
| | | v-show="!configShow && !equipConfigShow && !cableConfigShow" |
| | | > |
| | | <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 |
| | | :readonly="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"> |
| | | <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" 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" |
| | | :readonly="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" |
| | | :readonly="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" |
| | | :readonly="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" |
| | | :readonly="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"> |
| | | <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 |
| | | 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" |
| | | :readonly="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" |
| | | :readonly="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" |
| | | :readonly="active > 1" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | </basic-container> |
| | | <basic-container> |
| | | <div style="height: auto"> |
| | | <div |
| | | class="search" |
| | | v-if="active == 1" |
| | | style="display: flex; background: transparent" |
| | | > |
| | | <div> |
| | | <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> |
| | | <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> |
| | | <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> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapGetters } from "vuex"; |
| | | import fiberOpticConfig from "./fiberoptic-config.vue"; |
| | | import fiberOpticConfigReadOnly from "./fiberoptic-config-readonly.vue"; |
| | | import equipConfig from "./equip-config.vue"; |
| | | import cableConfig from "./cable-config.vue"; |
| | | import getLodop from "@/utils/lodop"; |
| | | import { bigEval } from "@/utils/bigEval"; |
| | | import { getDicts } from "@/api/system/dict/data"; |
| | | export default { |
| | | components: { |
| | | fiberOpticConfig, |
| | | fiberOpticConfigReadOnly, |
| | | equipConfig, |
| | | cableConfig, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["nickName", "company"]), |
| | | }, |
| | | props: { |
| | | examine: { |
| | | type: Number, |
| | | default: () => 0, |
| | | }, |
| | | active: { |
| | | type: Number, |
| | | default: () => 0, |
| | | }, |
| | | currentId: { |
| | | type: Number, |
| | | default: () => 0, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | pickerOptions: { |
| | | disabledDate(time) { |
| | | // 当前时间加上三天的时间戳 |
| | | const threeDaysLater = Date.now() + 24 * 60 * 60 * 1000; |
| | | // 禁用三天后之前的所有日期 |
| | | return time.getTime() < threeDaysLater; |
| | | }, |
| | | }, |
| | | 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, |
| | | cableConfigShow: 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; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | if (this.addObj.custom == "" || this.addObj.custom == null) { |
| | | this.addObj.custom = this.nickName; //设置制单人为当前登录人 |
| | | } |
| | | this.addObj.company = this.company; |
| | | this.selectDictForType(); |
| | | this.selectDictForOrderType(); |
| | | this.selectDictForUnit(); |
| | | this.selectDictForSampleForm(); |
| | | |
| | | if (this.active != 3) { |
| | | this.getUserNow(); |
| | | } |
| | | this.selectStandardTreeList(); |
| | | this.getAuthorizedPerson(); |
| | | this.selectStandardMethods(); |
| | | if (this.active != 1) { |
| | | // 查看/审核流程 |
| | | // 请求接口,回显数据 |
| | | this.$axios |
| | | .post(this.$api.insOrder.getInsOrder, { |
| | | orderId: this.currentId, |
| | | }) |
| | | .then((res) => { |
| | | 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]); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }, |
| | | methods: { |
| | | 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 this.$axios |
| | | .post(this.$api.insOrder.hasSendUrgentOrder, {}) |
| | | .then((res) => { |
| | | flag = res.data; |
| | | return flag; |
| | | // if (!res.data) { |
| | | // this.addObj.type = "1"; |
| | | // this.$message.error("当天紧急额度已用完"); |
| | | // throw "当天紧急额度已用完"; |
| | | // } |
| | | }); |
| | | } |
| | | 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() { |
| | | this.$axios.get(this.$api.user.getLaboratoryPersonList).then((res) => { |
| | | this.personList = res.data; |
| | | }); |
| | | }, |
| | | 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)); |
| | | // console.log("index--》", index); |
| | | if (index > -1) { |
| | | let arr = m.split(code[index]).filter((b) => !!b); |
| | | let calcNum = this.$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 = this.$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) => { |
| | | delete b.bsmRow; |
| | | }); |
| | | }); |
| | | 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; |
| | | this.$axios |
| | | .post(this.$api.insOrder.addInsOrder, { |
| | | str: JSON.stringify({ |
| | | insOrder: this.addObj, |
| | | list: JSON.stringify( |
| | | sampleList.map((a) => { |
| | | if (this.PROJECT === "装备电缆") { |
| | | if (a.modelNum) { |
| | | const index = a.modelNum.indexOf("×"); |
| | | if (index === 0) { |
| | | a.model = a.model + a.modelNum; |
| | | } else if (index === -1) { |
| | | a.model = a.model + "-" + a.modelNum; |
| | | } else { |
| | | a.model = a.modelNum + a.model; |
| | | } |
| | | } else { |
| | | a.model = |
| | | a.model + |
| | | (a.modelNum == null || |
| | | a.modelNum == "" || |
| | | a.modelNum == "null" |
| | | ? "" |
| | | : "-" + a.modelNum); |
| | | } |
| | | } else { |
| | | 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: JSON.stringify(this.bsm2Val2), |
| | | fiberPairing: JSON.stringify(this.fiberPairing), |
| | | }), |
| | | }) |
| | | .then((res) => { |
| | | this.saveLoad = false; |
| | | if (res.code == 201) return; |
| | | this.$message.success("已提交"); |
| | | this.bsm3Dia = false; |
| | | this.$parent.playOrder(0); |
| | | }) |
| | | .catch((e) => { |
| | | this.saveLoad = false; |
| | | }); |
| | | }, |
| | | upInsOrderOfState(state) { |
| | | if (state == 1) { |
| | | //this.saveLoad = true |
| | | this.issuedDialogVisible = true; |
| | | this.$axios |
| | | .post(this.$api.insOrder.selectOrderManDay, { |
| | | id: this.currentId, |
| | | }) |
| | | .then((ress) => { |
| | | this.distributeData.orderId = this.currentId; |
| | | this.distributeData.appointed = ress.data; |
| | | console.log("约定时间", this.distributeData.appointed); |
| | | }); |
| | | setTimeout(() => { |
| | | this.issuedDialogVisible = true; |
| | | }, 1000); |
| | | // this.$axios.post(this.$api.insOrder.upInsOrderOfState, { |
| | | // state, |
| | | // id: this.currentId, |
| | | // companyId:this.addObj.companyId, |
| | | // laboratory:this.addObj.laboratory, |
| | | // company: this.addObj.company |
| | | // }, { |
| | | // headers: { |
| | | // 'Content-Type': 'application/json' |
| | | // } |
| | | // }).then(res => { |
| | | // this.saveLoad = false |
| | | // if (res.code == 201) return |
| | | // this.$message.success('提交成功') |
| | | |
| | | // this.$parent.multipleSelection = [{id: this.currentId}] |
| | | // this.$parent.print() |
| | | // 如果紧急程度为紧急,需要直接下发人员 |
| | | // if (this.addObj.type == 2) { |
| | | // this.issuedDialogVisible = true; |
| | | // this.$axios.post(this.$api.insOrder.selectOrderManDay, { |
| | | // id: this.currentId |
| | | // }).then(ress => { |
| | | // this.distributeData.orderId = this.currentId |
| | | // this.distributeData.appointed = ress.data |
| | | // }) |
| | | // } else { |
| | | // this.$parent.playOrder(0) |
| | | // } |
| | | |
| | | // this.$axios.post(this.$api.insOrder.selectOrderManDay, { |
| | | // id: this.currentId |
| | | // }).then(ress => { |
| | | // this.distributeData.orderId = this.currentId |
| | | // this.distributeData.appointed = ress.data |
| | | // }) |
| | | // setTimeout(() => { |
| | | // this.issuedDialogVisible = true; |
| | | // }, 1000) |
| | | // }) |
| | | } else { |
| | | // 不通过 |
| | | this.noDialogVisible = true; |
| | | } |
| | | }, |
| | | getLabelPrinting(currentId) { |
| | | this.$axios |
| | | .post(this.$api.insOrder.labelPrinting, { |
| | | ids: currentId, |
| | | }) |
| | | .then((res) => { |
| | | //审核通过,默认只打印第一个样品标签 |
| | | let firstSample = res.data[0]; |
| | | let arr1 = []; |
| | | firstSample.insProduct.forEach((b) => { |
| | | arr1.push(b.inspectionItem); |
| | | }); |
| | | firstSample.item = [...new Set(arr1)].join(","); |
| | | // arr.forEach((a) => { |
| | | // let arr1 = []; |
| | | // a.insProduct.forEach((b) => { |
| | | // arr1.push(b.inspectionItem); |
| | | // }); |
| | | // a.item = [...new Set(arr1)].join(","); |
| | | // }); |
| | | this.beginPrint(firstSample); |
| | | }); |
| | | }, |
| | | //开始标签打印 |
| | | 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; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrder.upInsOrderOfState, |
| | | { |
| | | state: 1, |
| | | id: this.currentId, |
| | | companyId: this.addObj.companyId, |
| | | laboratory: this.addObj.laboratory, |
| | | company: this.addObj.company, |
| | | isCreate: this.distributeData.isCreate, |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | // flag = false; |
| | | |
| | | // if (flag) { |
| | | // this.$message.error("委托编号生成失败"); |
| | | // return; |
| | | // } |
| | | this.upLoad = true; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrder.upInsOrder, |
| | | { |
| | | orderId: this.distributeData.orderId, |
| | | appointed: this.distributeData.appointed, |
| | | userIdList: this.distributeData.userId, |
| | | sonLaboratory: this.distributeData.sonLaboratory, |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | if (res.code === 201) { |
| | | this.upLoad = false; |
| | | return; |
| | | } |
| | | this.$message.success("提交成功"); |
| | | this.upLoad = false; |
| | | this.issuedDialogVisible = false; |
| | | this.$parent.playOrder(0); |
| | | //审核通过后,自动打印二维码 |
| | | //TODO: 电力试验室暂时不用标签打印 |
| | | if ( |
| | | this.sonLaboratoryList.filter((f) => f.value === "电力试验室") |
| | | .length === 0 |
| | | ) { |
| | | this.$nextTick(() => { |
| | | this.getLabelPrinting(this.currentId); |
| | | }); |
| | | } |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("提交失败"); |
| | | this.upLoad = false; |
| | | }); |
| | | }); |
| | | }, |
| | | getUserNow() { |
| | | this.$axios.get(this.$api.user.getUserNow).then((res) => { |
| | | let selects = res.data; |
| | | if (selects == null) return; |
| | | this.addObj.userId = selects.id; |
| | | this.addObj.company = selects.company; |
| | | this.addObj.custom = selects.name; |
| | | this.addObj.code = selects.code; |
| | | this.addObj.phone = selects.phone; |
| | | this.addObj.companyId = selects.departId; |
| | | this.addObj.production = "/"; |
| | | this.addObj.productionEn = "/"; |
| | | if (this.active == 1) { |
| | | this.selectInsOrderTemplate(); |
| | | } |
| | | }); |
| | | }, |
| | | getProNum() { |
| | | this.sampleSelectionList.forEach((m, i) => { |
| | | Vue.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() { |
| | | this.$axios |
| | | .get(this.$api.standardTree.selectStandardTreeList2) |
| | | .then((res) => { |
| | | this.list = res.data; |
| | | this.list.forEach((a) => { |
| | | this.expandedKeys.push(a.label); |
| | | }); |
| | | }); |
| | | }, |
| | | 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; |
| | | this.$axios |
| | | .post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | tree: this.selectTree, |
| | | }) |
| | | .then((res) => { |
| | | 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); |
| | | this.$axios |
| | | .post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | tree: selectTree, |
| | | }) |
| | | .then((ress) => { |
| | | this.methods = ress.data.standardMethodList; |
| | | }); |
| | | } else { |
| | | this.methods = res.data.standardMethodList; |
| | | } |
| | | } catch (e) {} |
| | | }); |
| | | }, |
| | | 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); |
| | | }); |
| | | console.log("selectChange", this.sampleList); |
| | | }, |
| | | 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() { |
| | | this.$axios |
| | | .post(this.$api.enums.selectEnumByCategory, { |
| | | category: "光纤项目", |
| | | }) |
| | | .then((res) => { |
| | | this.opticalProject = res.data; |
| | | }); |
| | | }, |
| | | 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() { |
| | | this.$axios |
| | | .get( |
| | | this.$api.insOrder.selectInsOrderTemplate + |
| | | "?company=" + |
| | | this.addObj.company |
| | | ) |
| | | .then((res) => { |
| | | if (res.code == 201) return; |
| | | this.templates = res.data; |
| | | }); |
| | | }, |
| | | // 删除模板--调用接口 |
| | | handleDelete(row) { |
| | | this.$confirm("是否删除当前数据?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | this.$axios |
| | | .post(this.$api.insOrder.delInsOrderTemplate, { |
| | | id: row.id, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 201) { |
| | | return; |
| | | } |
| | | this.$message.success("删除成功"); |
| | | this.selectInsOrderTemplate(); |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("删除失败"); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // 保存模板 |
| | | addTemplateDia() { |
| | | if (this.templateName) { |
| | | this.templateLoading = true; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrder.addInsOrderTemplate, |
| | | { |
| | | name: this.templateName, |
| | | thing: JSON.stringify({ |
| | | addObj: this.addObj, |
| | | sampleList: this.sampleList, |
| | | selectTree: this.selectTree, |
| | | }), |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | if (res.code == 201) return; |
| | | this.templateLoading = false; |
| | | this.templateDia = false; |
| | | this.$message.success("保存成功"); |
| | | this.selectInsOrderTemplate(); |
| | | this.templateName = ""; |
| | | }); |
| | | } else { |
| | | this.$message.error("请填写模板名称"); |
| | | } |
| | | }, |
| | | // 查询模板 |
| | | selectInsOrderTemplateById(e) { |
| | | this.$axios |
| | | .post(this.$api.insOrder.selectInsOrderTemplateById + "?id=" + e) |
| | | .then((res) => { |
| | | if (res.code == 201) return; |
| | | // let obj = JSON.parse(res.data) |
| | | let obj = res.data; |
| | | console.log(obj); |
| | | //制单人设置为当前登录用户 |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | obj.addObj.custom = user.name; |
| | | obj.addObj.userId = user.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]); |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | 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); |
| | | this.$axios |
| | | .post( |
| | | this.$api.standardTree.selectStandardProductList, |
| | | { |
| | | model: |
| | | (this.addObj.model ? this.addObj.model : row.model) + |
| | | "-" + |
| | | row.modelNum, |
| | | standardMethodListId: val, |
| | | factory: selectTreeList.join(" - "), |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | 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; |
| | | } |
| | | }); |
| | | }); |
| | | 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); |
| | | this.$axios |
| | | .post( |
| | | this.$api.standardTree.selectStandardProductList, |
| | | { |
| | | model: |
| | | (this.addObj.model ? this.addObj.model : row.model) + |
| | | "-" + |
| | | row.modelNum, |
| | | standardMethodListId: val, |
| | | factory: selectTreeList.join(" - "), |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | 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; |
| | | } |
| | | }); |
| | | }); |
| | | this.searchProject(); |
| | | this.searchTemList(); |
| | | }, |
| | | searchTemList() { |
| | | this.temperatureList = []; |
| | | this.$axios |
| | | .post(this.$api.enums.selectEnumByCategory, { |
| | | category: "电力温度循环检验", |
| | | }) |
| | | .then((res) => { |
| | | if (res.data.length > 0) { |
| | | this.temperatureEngList = res.data; |
| | | res.data.forEach((item) => { |
| | | this.temperatureList.push(item.label); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | 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() { |
| | | this.$axios |
| | | .get(this.$api.standardTree.selectStandardMethodEnum) |
| | | .then((res) => { |
| | | this.methods = res.data; |
| | | }); |
| | | }, |
| | | 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; |
| | | this.$axios |
| | | .post( |
| | | this.$api.insOrder.upInsOrderOfState, |
| | | { |
| | | state: 2, |
| | | id: this.currentId, |
| | | tell: this.tell, |
| | | }, |
| | | { |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | this.noLoading = false; |
| | | this.tell = ""; |
| | | if (res.code == 201) return; |
| | | this.$message.success("提交成功"); |
| | | this.issuedDialogVisible = false; |
| | | this.$parent.playOrder(0); |
| | | }); |
| | | }, |
| | | selectEnumByCategoryForSonLaboratory() { |
| | | this.$axios |
| | | .post(this.$api.enums.selectEnumByCategory, { |
| | | category: "子实验室", |
| | | }) |
| | | .then((res) => { |
| | | this.factory = []; |
| | | res.data.forEach((a) => { |
| | | this.filters.push({ |
| | | text: a.label, |
| | | value: a.value, |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | 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]; |
| | | this.$axios |
| | | .post(this.$api.insBushing.selectBushingBySampleId, { |
| | | sampleId: this.sampleId, |
| | | }) |
| | | .then((res) => { |
| | | 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; |
| | | }); |
| | | }); |
| | | } |
| | | }, |
| | | 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; |
| | | } |
| | | // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, { |
| | | // sampleId: this.sampleId |
| | | // }).then(res => { |
| | | // 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.configShow = true |
| | | // }) |
| | | } |
| | | }, |
| | | openCableConfig() { |
| | | if (this.active === 1) { |
| | | if (this.sampleIds.length === 0) { |
| | | this.$message.error("未选择样品"); |
| | | return; |
| | | } |
| | | this.cableConfigShow = true; |
| | | } else { |
| | | if (this.sampleId === null) { |
| | | this.$message.error("未选中样品"); |
| | | return; |
| | | } |
| | | // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, { |
| | | // sampleId: this.sampleId |
| | | // }).then(res => { |
| | | // 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.configShow = true |
| | | // }) |
| | | } |
| | | }, |
| | | 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%; |
| | |
| | | } |
| | | |
| | | .search { |
| | | width: calc(100% - 40px); |
| | | height: 100%; |
| | | background-color: #fff; |
| | | padding: 5px 40px 5px 0; |
| | | } |
| | |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | width: calc(100% - 20px); |
| | | } |
| | | |
| | | .node_i { |
| | |
| | | .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: 72%; |
| | | } |
| | | .engineeringEn_input .el-form-item__content, |
| | | .otcCode_input .el-form-item__content, |
| | | .productionEn_input .el-form-item__content { |
| | | width: 65%; |
| | | } |
| | | .processing_input .el-form-item__content { |
| | | width: 60%; |
| | | } |
| | | </style> |
| | | |
| | | <template> |
| | | <div>add</div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default {}; |
| | | </script> |