| | |
| | | <template> |
| | | <div> |
| | | <div class="search_form"> |
| | | <div v-if="currentTab=='绝缘'" style="display: flex"> |
| | | <div v-if="currentTab == '绝缘'" style="display: flex"> |
| | | <el-radio-group v-model="currentTab" size="small" style="margin-right: 20px;" @input="changeTab"> |
| | | <el-radio-button label="绝缘">绝 缘</el-radio-button> |
| | | </el-radio-group> |
| | | <el-form :model="insulating" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="芯数" prop="num"> |
| | | <el-select v-model="insulating.num" allow-create |
| | | clearable |
| | | default-first-option |
| | | filterable |
| | | multiple |
| | | size="small"> |
| | | <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
| | | <el-select v-model="insulating.num" allow-create clearable default-first-option filterable multiple |
| | | size="small"> |
| | | <el-option v-for="item in quantityList" :key="item.value" :label="item.label" |
| | | :value="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="检验标准" prop="standardMethodListId"> |
| | | <el-select v-model="insulating.standardMethodListId" disabled placeholder="请选择检验标准" |
| | | size="small" |
| | | @change="(value)=>methodChange(value)"> |
| | | <el-select v-model="insulating.standardMethodListId" disabled placeholder="请选择检验标准" size="small" |
| | | @change="(value) => methodChange(value)" multiple> |
| | | <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <el-table ref="productTable" :data="productList" :row-class-name="tableRowClassName" border |
| | | class="el-table" :height="'calc(100vh - 200px)'" tooltip-effect="dark" @select="upProductSelect" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" |
| | | @selection-change="selectProduct" @select-all="handleAll"> |
| | | <el-table ref="productTable" :data="productList" :row-class-name="tableRowClassName" border class="el-table" |
| | | :height="'calc(100vh - 200px)'" tooltip-effect="dark" @select="upProductSelect" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" @selection-change="selectProduct" |
| | | @select-all="handleAll"> |
| | | <el-table-column :selectable="selectable" type="selection" width="65"></el-table-column> |
| | | <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="检验项" min-width="140" prop="inspectionItem" 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" |
| | | placeholder="请输入" |
| | | size="mini" |
| | | @input="searchFilterList"/> |
| | | <el-input v-if="active == 1" v-model="inspectionItem" placeholder="请输入" size="mini" |
| | | @input="searchFilterList" /> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <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" |
| | | placeholder="请输入" |
| | | size="mini" |
| | | @input="searchFilterList"/> |
| | | <el-input v-if="active == 1" v-model="inspectionItemSubclass" placeholder="请输入" size="mini" |
| | | @input="searchFilterList" /> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="要求描述" min-width="220px" prop="tell"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-if="active==1&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" |
| | | size="small" type="textarea"></el-input> |
| | | <el-input v-if="active == 1 && (isAskOnlyRead || isSpecial)" v-model="scope.row.tell" |
| | | :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" size="small" |
| | | type="textarea"></el-input> |
| | | <span v-else> |
| | | <template >{{ scope.row.tell }}</template> |
| | | </span> |
| | | <template>{{ scope.row.tell }}</template> |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="要求值" min-width="220px" prop="ask"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-if="active==1&&(isAskOnlyRead || isSpecial)" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" |
| | | size="small" type="textarea"></el-input> |
| | | <el-input v-if="active == 1 && (isAskOnlyRead || isSpecial)" v-model="scope.row.ask" |
| | | :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small" |
| | | type="textarea"></el-input> |
| | | <span v-else>{{ scope.row.ask }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <el-input v-if="active==1&&(isAskOnlyRead || isSpecial)&&!scope.row.inspectionItem.includes('高温压力试验')" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" |
| | | size="small" type="textarea"> |
| | | <el-input v-if="active == 1 && (isAskOnlyRead || isSpecial) && !scope.row.inspectionItem.includes('高温压力试验')" |
| | | v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" |
| | | size="small" type="textarea"> |
| | | </el-input> |
| | | <el-select v-if="scope.row.inspectionItem.includes('高温压力试验') && active == 1" v-model="scope.row.radius" clearable |
| | | placeholder="条件" |
| | | size="small"> |
| | | <el-option v-for="(a,i) in JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> |
| | | <el-select v-if="scope.row.inspectionItem.includes('高温压力试验') && active == 1" v-model="scope.row.radius" |
| | | clearable placeholder="条件" size="small"> |
| | | <el-option v-for="(a, i) in JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> |
| | | </el-select> |
| | | <span v-if="active != 1">{{scope.row.radius}}</span> |
| | | <span v-if="active != 1">{{ scope.row.radius }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="试验方法" min-width="120" prop="methodS" 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" |
| | | placeholder="请输入" |
| | | size="mini" |
| | | @input="searchFilterList"/> |
| | | <el-input v-if="active == 1" v-model="methodS" placeholder="请输入" size="mini" @input="searchFilterList" /> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <el-table-column label="单价" prop="price" show-overflow-tooltip width="100"></el-table-column> |
| | | <el-table-column label="区间" min-width="120" prop="section" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="子实验室" min-width="130" prop="sonLaboratory" show-overflow-tooltip></el-table-column> |
| | | <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column v-if="isSpecial" |
| | | fixed="right" |
| | | label="操作" |
| | | width="100"> |
| | | <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" |
| | | prop="sonLaboratory" show-overflow-tooltip></el-table-column> |
| | | <el-table-column v-if="isSpecial" fixed="right" label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" @click="addProductList(productList,scope.row,scope.$index)" v-if="!scope.row.repetitionTag">插入行</el-button> |
| | | <el-button type="text" size="small" v-if="!!scope.row.repetitionTag&&scope.row.delete" @click="deleteProductList(scope.$index,productList)">删除</el-button> |
| | | <el-button type="text" size="small" @click="addProductList(productList, scope.row, scope.$index)" |
| | | v-if="!scope.row.repetitionTag">插入行</el-button> |
| | | <el-button type="text" size="small" v-if="!!scope.row.repetitionTag && scope.row.delete" |
| | | @click="deleteProductList(scope.$index, productList)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {selectsStandardMethodByFLSSM, selectStandardProductList} from "@/api/business/rawMaterialOrder"; |
| | | import { selectsStandardMethodByFLSSM, selectStandardProductList } from "@/api/business/rawMaterialOrder"; |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | }, |
| | | }, |
| | | data(vm) { |
| | | return { |
| | | standardList:[], |
| | | vaule0:'', |
| | | currentTab:'绝缘', |
| | | upIndex:0, |
| | | productList: [], |
| | | productIds: [], |
| | | sample: [], |
| | | tree: '', |
| | | standards: [], |
| | | insulating: { |
| | | standardMethodListId: null, |
| | | insProduct: [], |
| | | num: [] |
| | | }, |
| | | isAskOnlyRead: false, |
| | | inspectionItem:null, |
| | | inspectionItemSubclass:null, |
| | | methodS:null, |
| | | filters: [], |
| | | quantityList: [], |
| | | } |
| | | return { |
| | | standardList: [], |
| | | vaule0: '', |
| | | currentTab: '绝缘', |
| | | upIndex: 0, |
| | | productList: [], |
| | | productIds: [], |
| | | sample: [], |
| | | tree: '', |
| | | standards: [], |
| | | insulating: { |
| | | standardMethodListId: [], |
| | | insProduct: [], |
| | | num: [] |
| | | }, |
| | | isAskOnlyRead: false, |
| | | inspectionItem: null, |
| | | inspectionItemSubclass: null, |
| | | methodS: null, |
| | | filters: [], |
| | | quantityList: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.$parent.sampleIds.forEach(a => { |
| | | for (var i = 0; i < this.$parent.sampleList.length; i++) { |
| | | if (this.$parent.sampleList[i].id == a) { |
| | | this.sample.push(this.$parent.sampleList[i]) |
| | | if(this.$parent.sampleList[i].insulating !== undefined && this.$parent.sampleList[i].insulating !== null){ |
| | | if (this.$parent.sampleList[i].insulating !== undefined && this.$parent.sampleList[i].insulating !== null) { |
| | | this.insulating = this.$parent.sampleList[i].insulating |
| | | } |
| | | break |
| | |
| | | }, |
| | | methods: { |
| | | // 检验项列表筛选 |
| | | searchFilterList () { |
| | | searchFilterList() { |
| | | const vtw = { |
| | | inspectionItem: this.inspectionItem, // 检验项 |
| | | inspectionItemSubclass: this.inspectionItemSubclass, // 检验项子项 |
| | |
| | | return item |
| | | }) |
| | | if (isHaveValue) { |
| | | for(let i in vtw) { |
| | | for (let i in vtw) { |
| | | if (vtw[i]) { |
| | | this.productList = this.productList0.filter((item) => { |
| | | return item[i] && item[i].includes(vtw[i]) |
| | |
| | | this.$refs.productTable.doLayout() |
| | | }) |
| | | }, |
| | | tableRowClassName({row, rowIndex}) { |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (row.state === 0) { |
| | | return ''; |
| | | } |
| | |
| | | } else { |
| | | this.standards = res.data.standardMethodList |
| | | } |
| | | } catch (e) {} |
| | | } catch (e) { } |
| | | }) |
| | | this.insulating.standardMethodListId = this.sampleSelectionList[0].standardMethodListId |
| | | // 查询检测标准下拉框选项 |
| | |
| | | } |
| | | }, |
| | | methodChange(val) { |
| | | if (val === null || val === '') return |
| | | if (!val || val.length < 1) return |
| | | let standard = this.standards.find(a => a.id === val) |
| | | if(standard!=null && standard.code==='技术要求'){ |
| | | if (standard != null && standard.code === '技术要求') { |
| | | this.isAskOnlyRead = true |
| | | }else{ |
| | | } else { |
| | | this.isAskOnlyRead = false |
| | | } |
| | | let selectTreeList = this.$parent.selectTree.split(" - ") |
| | | this.$parent.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.$parent.addObj.model) |
| | | this.$parent.addObj.model && (selectTreeList[selectTreeList.length - 1] = this.$parent.addObj.model) |
| | | const model = this.sampleSelectionList[0].model |
| | | const modelNum = this.sampleSelectionList[0].modelNum |
| | | const cores = this.sampleSelectionList[0].cores |
| | | const conductorMaterial = this.sampleSelectionList[0].conductorMaterial |
| | | const conductorType = this.sampleSelectionList[0].conductorType |
| | | selectStandardProductList({ |
| | | model: this.$parent.addObj.model?this.$parent.addObj.model:model, |
| | | model: this.$parent.addObj.model ? this.$parent.addObj.model : model, |
| | | modelNum: modelNum, |
| | | cores: cores, |
| | | conductorMaterial: conductorMaterial, |
| | | conductorType: conductorType, |
| | | standardMethodListId: val, |
| | | standardMethodListIds: val, |
| | | factory: selectTreeList.join(" - "), |
| | | isCableTag: '1', |
| | | }, { |
| | |
| | | toggleSelection(row) { |
| | | this.$refs.productTable.toggleRowSelection(row, true); |
| | | }, |
| | | save(){ |
| | | save() { |
| | | this.insulating.insProduct = this.HaveJson(this.productList) |
| | | if(this.insulating.insProduct.length !== 0){ |
| | | if(this.insulating.num.length === 0){ |
| | | if (this.insulating.insProduct.length !== 0) { |
| | | if (this.insulating.num.length === 0) { |
| | | this.$message.error('缺少芯数无法保存') |
| | | return |
| | | } |
| | |
| | | this.$emit('goBackAdd') |
| | | this.$message.success('已保存') |
| | | }, |
| | | changeTab(val){ |
| | | if(val==='绝缘'){ |
| | | changeTab(val) { |
| | | if (val === '绝缘') { |
| | | this.productList = this.insulating.insProduct |
| | | } |
| | | setTimeout(() => { |
| | |
| | | const property = column['property']; |
| | | return row[property] === value; |
| | | }, |
| | | addProductList(productList,row,index){ |
| | | let list = productList.filter(m=>{ |
| | | if(m.id==row.id){ |
| | | addProductList(productList, row, index) { |
| | | let list = productList.filter(m => { |
| | | if (m.id == row.id) { |
| | | m.delete = false |
| | | } |
| | | return m.id==row.id |
| | | return m.id == row.id |
| | | }) |
| | | let num = list.length |
| | | let obj = this.HaveJson(row) |
| | | obj.repetitionTag = num |
| | | obj.delete = true |
| | | obj.state = 0 |
| | | productList.splice(index+num,0,obj) |
| | | productList.splice(index + num, 0, obj) |
| | | }, |
| | | deleteProductList(index,list){ |
| | | if(list[index-1]&&list[index-1].repetitionTag){ |
| | | list[index-1].delete=true |
| | | deleteProductList(index, list) { |
| | | if (list[index - 1] && list[index - 1].repetitionTag) { |
| | | list[index - 1].delete = true |
| | | } |
| | | list.splice(index,1) |
| | | list.splice(index, 1) |
| | | }, |
| | | } |
| | | } |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_input { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |