| | |
| | | </div> |
| | | <div v-show="!cableConfigShow&&!auxiliaryShow" style="margin-top: 10px"> |
| | | <div class="search"> |
| | | <el-form ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> |
| | | <el-form ref="newJuOrder" :inline="true" :model="addObj" label-width="108px" label-position="right"> |
| | | <el-row> |
| | | <el-col :span="6"><el-form-item label="产品名称"><el-input v-model="addObj.sample" disabled size="small"><template slot="append"><el-button :disabled="active>1" icon="el-icon-search" @click="selectStandardTree = true" /></template></el-input></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="生产单位"><el-input v-model="addObj.production" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="委托单位"><el-input v-model="addObj.company" disabled size="small"><template slot="append"><el-button :disabled="active>1" icon="el-icon-search" @click="openCompanyList" /></template></el-input></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="检验类别"><el-select v-model="addObj.orderType" :disabled="active>1" size="small"><el-option v-for="item in dict.type.check_type1" :key="item.value" :label="item.label" :value="item.value" /></el-select></el-form-item></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"><el-form-item label="样品数量"><el-input v-model="addObj.testQuantity" :disabled="active>1" placeholder="如:2桶、500mL" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="样品编号"><el-input v-model="sampleCode" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="样品外观"><el-input v-model="addObj.sampleStatus" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="送样人"><el-input v-model="addObj.prepareUser" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"><el-form-item label="生产日期"><el-date-picker v-model="addObj.productionDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="生产批号"><el-input v-model="addObj.productionBatch" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="送样日期"><el-date-picker v-model="addObj.sampleDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | <el-col :span="6"><el-form-item label="联系方式"><el-input v-model="addObj.phone" :disabled="active>1" size="small" /></el-form-item></el-col> |
| | | </el-row> |
| | | <el-row><el-col :span="6"><el-form-item label="环境条件"><el-input v-model="addObj.temperature" :disabled="active>1" placeholder="温度" size="small" /></el-form-item></el-col><el-col :span="6"><el-form-item label="湿度"><el-input v-model="addObj.humidity" :disabled="active>1" size="small" /></el-form-item></el-col><el-col :span="6"><el-form-item label="备注"><el-input v-model="addObj.remark" :disabled="active>1" size="small" /></el-form-item></el-col></el-row> |
| | | </el-form> |
| | | <el-form v-if="false" ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="委托编号:" prop="entrustCode"> |
| | |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <div v-if="false"> |
| | | <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px"> |
| | | <div v-if="active==1"> |
| | | <el-form :inline="true" :model="addObj1" label-width="90px"> |
| | |
| | | <el-col :span="24"> |
| | | <span><i |
| | | :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> |
| | | {{ data.code }} {{ data.label }}</span> |
| | | {{ data.label }}</span> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | import {mapGetters} from "vuex"; |
| | | import { bigEval } from "@/utils/bigEval"; |
| | | import {addQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling"; |
| | | import { |
| | | isLeafPath, |
| | | buildSelectTree, |
| | | dropLastLabel, |
| | | } from "@/utils/standardTree"; |
| | | |
| | | export default { |
| | | name: 'AddOrder', |
| | |
| | | active: '', |
| | | tabIndex: '', |
| | | currentId: '', |
| | | sampleCode: '', |
| | | sampleSelectionList: [],//样品表格选中数据 |
| | | editTable:[], |
| | | template: null, |
| | |
| | | list: [], |
| | | selectStandardTreeLoading: false, |
| | | selectTree: null, |
| | | // 当前选中的树节点(用于按层级推导字段) |
| | | selectTreeNode: null, |
| | | sampleViewEn: null, |
| | | expandedKeys: [], |
| | | sampleList: [], |
| | |
| | | return str.replaceAll(find, value); |
| | | }, |
| | | save() { |
| | | if (this.addObj.standardTreeId) { |
| | | if (!this.addObj.sample || !this.addObj.company || !this.addObj.orderType || !this.addObj.testQuantity) { |
| | | this.$message.error('请填写产品名称、委托单位、检验类别和样品数量'); |
| | | return; |
| | | } |
| | | this.saveData([]); |
| | | return; |
| | | } |
| | | this.$refs['addObj'].validate((valid) => { |
| | | if (valid) { |
| | | this.sampleList.forEach(item => { |
| | |
| | | } |
| | | }, |
| | | saveMethod(sampleList){ |
| | | if (this.addObj.standardTreeId) { |
| | | this.saveData([]); |
| | | return; |
| | | } |
| | | if (this.addObj.quarterItemId) { |
| | | this.addObj.quarterItemId = this.addObj.quarterItemId[1] |
| | | } |
| | |
| | | }) |
| | | }else{ |
| | | // 常规提交 |
| | | addInsOrder({insOrder: {...this.addObj,typeSource:-1}, sampleList: sampleList}).then(res => { |
| | | const payload = this.addObj.standardTreeId |
| | | ? { insOrder: {...this.addObj,typeSource:-1}, standardTreeId: this.addObj.standardTreeId, sampleCode: this.sampleCode } |
| | | : { insOrder: {...this.addObj,typeSource:-1}, sampleList: sampleList } |
| | | addInsOrder(payload).then(res => { |
| | | this.saveLoad = false |
| | | this.$message.success('已提交') |
| | | this.bsm3Dia = false; |
| | |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') |
| | | if (node.data.code === '[3]') { |
| | | if (data.sampleTypeEn !== undefined && data.sampleTypeEn !== null) { |
| | | this.sampleViewEn = data.sampleTypeEn |
| | | } else if (node.data.code === '[4]') { |
| | | } else if (data.sampleEn !== undefined && data.sampleEn !== null) { |
| | | this.sampleViewEn = data.sampleEn |
| | | } |
| | | }, |
| | |
| | | $($(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 |
| | | } |
| | | }) |
| | | |
| | | } |
| | | } |
| | | if (node.data.code === '[3]') { |
| | | this.selectTreeNode = node |
| | | this.models = val.children || [] |
| | | this.selectTree = buildSelectTree(node, '') |
| | | if (val.sampleTypeEn !== undefined && val.sampleTypeEn !== null) { |
| | | this.sampleViewEn = val.sampleTypeEn |
| | | } else if (node.data.code === '[4]') { |
| | | if (node.data.children!==null && node.data.children.length>0) { |
| | | this.sampleViewEn = val.sampleEn |
| | | } |
| | | } |
| | | this.selectTree = this.selectTree.replace(' - ', '') |
| | | if(flag) { |
| | | this.selectTree = ' - - ' + 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) |
| | | } else if (val.sampleEn !== undefined && val.sampleEn !== null) { |
| | | this.sampleViewEn = val.sampleEn |
| | | } |
| | | }, |
| | | selectStandardTreeList() { |
| | |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | activeStandardTree() { |
| | | let trees = this.selectTree.split(" - ") |
| | | if (trees.length < 3) { |
| | | this.$message.error('未选择对象') |
| | | if (!this.selectTreeNode || this.selectTreeNode.data.code !== '[2]') { |
| | | 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.sampleView = this.addObj.sample |
| | | this.addObj.sampleViewEn = this.sampleViewEn |
| | | this.addObj.model = (trees[4] == undefined ? null : trees[4]) |
| | | const productName = this.selectTreeNode.data.label |
| | | this.addObj.sample = productName |
| | | this.addObj.standardTreeId = this.selectTreeNode.data.id |
| | | 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() |
| | | }, |
| | | // 用指定型号替换树路径末段(末段即标准/型号) |
| | | buildFactoryPath(model) { |
| | | const tree = this.selectTree || '' |
| | | if (!tree || !model) return tree |
| | | const tokens = tree.split(' - ') |
| | | tokens[tokens.length - 1] = model |
| | | return tokens.join(' - ') |
| | | }, |
| | | selectsStandardMethodByFLSSMList() { |
| | | this.methodLoad = true |
| | |
| | | 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) |
| | | const list = (res.data && res.data.standardMethodList) || [] |
| | | // 当前是叶子(标准)却查不到标准时,回退到父级再查一次 |
| | | // 用路径判定叶子:模板回填时 selectTreeNode 为空,节点对象判定会失效 |
| | | if (list.length === 0 && isLeafPath(this.selectTree)) { |
| | | const parentTree = dropLastLabel(this.selectTree) |
| | | if (parentTree) { |
| | | selectsStandardMethodByFLSSM({ |
| | | tree: selectTree |
| | | tree: parentTree |
| | | }).then(ress => { |
| | | this.methods = ress.data.standardMethodList |
| | | this.methods = (ress.data && ress.data.standardMethodList) || [] |
| | | }) |
| | | } else { |
| | | this.methods = res.data.standardMethodList |
| | | return |
| | | } |
| | | } catch (e) {} |
| | | } |
| | | this.methods = list |
| | | }) |
| | | }, |
| | | addStandardTree() { |
| | |
| | | } |
| | | } |
| | | this.getProductLoad = true |
| | | let selectTreeList = this.selectTree.split(" - ") |
| | | this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model) |
| | | selectStandardProductList({ |
| | | model: this.addObj.model?this.addObj.model:row.model, |
| | | modelNum: row.modelNum, |
| | | standardMethodListId: val, |
| | | factory: selectTreeList.join(" - "), |
| | | factory: this.buildFactoryPath(this.addObj.model), |
| | | cores: row.cores, |
| | | conductorMaterial: row.conductorMaterial, |
| | | conductorType: row.conductorType, |
| | |
| | | this.isAskOnlyRead = false |
| | | } |
| | | this.getProductLoad = true |
| | | let selectTreeList = this.selectTree.split(" - ") |
| | | this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model) |
| | | selectStandardProductList({ |
| | | model: this.addObj.model?this.addObj.model:row.model, |
| | | modelNum: row.modelNum, |
| | | standardMethodListId: val, |
| | | cores: row.cores, |
| | | factory: selectTreeList.join(" - "), |
| | | factory: this.buildFactoryPath(this.addObj.model), |
| | | }).then(res => { |
| | | res.data.forEach(a => { |
| | | a.state = this.inspectionScope === 'all' ? 1 : 0 |
| | |
| | | }, |
| | | handleChangeModel(e) { |
| | | this.productList = [] |
| | | let num = this.selectTree.split('-').length; |
| | | if (num != 5) { |
| | | this.selectTree = this.selectTree + ' - ' + e |
| | | const tree = this.selectTree || '' |
| | | // 路径末段已是标准(叶子):替换末段;否则追加 |
| | | // 用路径判定:模板回填(obj.selectTree)时没有可用的树节点对象 |
| | | if (isLeafPath(tree)) { |
| | | this.selectTree = this.buildFactoryPath(e) |
| | | } else { |
| | | let arr = this.selectTree.split('-') |
| | | let arr0 = arr.slice(0, arr.length - 1) |
| | | this.selectTree = arr0.join('-') + '- ' + e |
| | | this.selectTree = tree ? tree + ' - ' + e : e |
| | | } |
| | | }, |
| | | // 要求值变化时 |
| | |
| | | const selectedProducts = sample.insProduct || [] |
| | | if (!sample.standardMethodListId) return Promise.resolve(sample) |
| | | const product = selectedProducts[0] || {} |
| | | const factory = [ |
| | | product.factory || this.addObj.factory, |
| | | product.laboratory || this.addObj.laboratory, |
| | | product.sampleType || this.addObj.sampleType, |
| | | product.sample || sample.sample, |
| | | product.model || sample.model |
| | | ].join(' - ') |
| | | const factory = this.buildFactoryPath(product.model || sample.model) |
| | | return selectStandardProductList({ |
| | | model: sample.model, |
| | | modelNum: sample.modelNum, |