| | |
| | | >>>.el-table__row{ |
| | | height: 35px !important; |
| | | } |
| | | .search{ |
| | | height: 20%; |
| | | border-bottom: 1px solid #ebeef5; |
| | | margin-bottom: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding-bottom: 10px; |
| | | } |
| | | .search-item{ |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | .search-item .el-row{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search-item .el-col{ |
| | | margin-left: 0; |
| | | } |
| | | .more-edit .dialog-footer{ |
| | | position: absolute; |
| | | top: 15px; |
| | | right: 70px; |
| | | } |
| | | >>>.more-edit .el-dialog__body{ |
| | | height: calc(100vh - 90px); |
| | | } |
| | | >>>.is-disabled .el-textarea__inner{ |
| | | background: rgba(0, 0, 0, 0.05) !important; |
| | | } |
| | | </style> |
| | | <style> |
| | | .standard .el-tree-node__content { |
| | |
| | | </el-tree> |
| | | </div> |
| | | <div class="right"> |
| | | <el-row class="title"> |
| | | <el-row class="title" style="width: 100%;"> |
| | | <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> |
| | | <!-- <el-col :span="4"> |
| | | <el-button size="small" type="primary" @click="handleMore">批量编辑</el-button> |
| | | </el-col> --> |
| | | <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" v-if="upStandardProduct">批量编辑</el-button> |
| | | </el-row> |
| | | <el-row class="standard_table" v-loading="tableLoad"> |
| | | <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark" |
| | |
| | | <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="批量编辑" :visible.sync="moreEdit" width="90%"> |
| | | <div class="body"> |
| | | <!-- <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">工厂:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.factory"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">实验室:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.laboratory"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">样品大类:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.sampleType"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">样品名称:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="addOb.sample" readonly size="small"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <span class="required-span">* </span>型号: |
| | | </el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="addOb.model" placeholder="请输入型号" clearable size="small"></el-input> |
| | | </el-col> |
| | | </el-row> --> |
| | | <el-dialog title="批量编辑" :visible.sync="moreEdit" width="90%" style="height: 100vh;" class="more-edit"> |
| | | <div class="body" style="height: 100%;display: flex;flex-direction: column;"> |
| | | <div class="search"> |
| | | <div class="search-item"> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 要求值:</el-col> |
| | | <el-col :span="16"> |
| | | <el-input size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 要求描述:</el-col> |
| | | <el-col :span="16" style="display: flex;align-items: flex-start;height: 100%;"> |
| | | <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 试验方法:</el-col> |
| | | <el-col :span="16"> |
| | | <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" :disabled="moreSelects.length==0"> |
| | | <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 单价(元):</el-col> |
| | | <el-col :span="16" > |
| | | <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 工时系数:</el-col> |
| | | <el-col :span="16"> |
| | | <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 模板:</el-col> |
| | | <el-col :span="16"> |
| | | <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模板" style="width: 100%;" :disabled="moreSelects.length==0"> |
| | | <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 50%;"> |
| | | <el-col :span="23" style="display: flex;align-items: center;justify-content: end;"> |
| | | <el-button type="primary" size="small" @click="sectionUp(moreSelects)">设置区间</el-button> |
| | | <el-button @click="moreEdit = false" size="small">取 消</el-button> |
| | | <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">保 存</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <div style="flex: 1;overflow-y: auto;" v-loading="productTableLoading0"> |
| | | <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="94%" tooltip-effect="dark" |
| | | stripe |
| | | :fit="true" border |
| | | @select-all="handleSelectAll0" |
| | | @select="handleSelectionChange0" |
| | | header-row-class-name="header-class" |
| | | :row-key="row=>row.id" |
| | | > |
| | | <el-table-column type="selection" width="50" > |
| | | </el-table-column> |
| | | <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip :filters="filters" |
| | | :filter-method="filterHandler"></el-table-column> |
| | | <el-table-column prop="ask" label="要求值" min-width="200px"></el-table-column> |
| | | <el-table-column prop="tell" label="要求描述" min-width="220px"></el-table-column> |
| | | <el-table-column prop="method" label="试验方法" width="200"></el-table-column> |
| | | <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="price" label="单价(元)" width="120"></el-table-column> |
| | | <el-table-column prop="manHour" label="工时系数" width="120"></el-table-column> |
| | | <el-table-column prop="manHourGroup" label="工时分组" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="templateId" label="模板" width="200"> |
| | | <template slot-scope="scope"> |
| | | {{ templateList.find(item => item.id == scope.row.templateId)?templateList.find(item => item.id == scope.row.templateId).name:'' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="section" label="区间" width="120" show-overflow-tooltip></el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | style="position: absolute;right: 16px;bottom: 4px;" |
| | | @current-change="handleCurrentChange0" |
| | | :current-page="currentPage0" |
| | | layout="total, prev, pager, next, jumper" |
| | | :page-size="50" |
| | | :total="total0"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="moreEdit = false">取 消</el-button> |
| | | <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- <el-dialog title="新增标准" :visible.sync="addStandardDia" width="400px"> |
| | | <div class="body"> |
| | |
| | | standardId: 0, |
| | | moreEdit:false, |
| | | moreEditLoad:false, |
| | | moreSelects:[], |
| | | total0:0, |
| | | currentPage0:1, |
| | | productList0: [], |
| | | moreInfo:{ |
| | | ask:'', |
| | | tell:'', |
| | | methodS:'', |
| | | price:'', |
| | | manHour:'', |
| | | templateId:'' |
| | | }, |
| | | methodList:[], |
| | | productTableLoading0:false |
| | | } |
| | | }, |
| | | watch: { |
| | | moreEdit(val) { |
| | | if(!val){ |
| | | this.$refs.productTable0.clearSelection() |
| | | this.moreSelects = [] |
| | | this.currentPage0 = 1; |
| | | this.productList0 = [] |
| | | this.moreInfo = { |
| | | ask:'', |
| | | tell:'', |
| | | methodS:'', |
| | | price:'', |
| | | manHour:'', |
| | | templateId:'' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | } |
| | | }, |
| | | sectionUp(row) { |
| | | this.sectionRow = row |
| | | this.sectionUpDia = true |
| | | this.sectionList = [] |
| | | if (this.sectionRow.section != null && this.sectionRow.section != '') { |
| | | JSON.parse(this.sectionRow.section).forEach((a, ai) => { |
| | | this.sectionList.push({ |
| | | thing: a, |
| | | ask: JSON.parse(this.sectionRow.ask)[ai], |
| | | tell: JSON.parse(this.sectionRow.tell)[ai], |
| | | price: JSON.parse(this.sectionRow.price)[ai], |
| | | manHour: JSON.parse(this.sectionRow.manHour)[ai] |
| | | if (Array.isArray(row)) { |
| | | // 值是一个数组 |
| | | if(row.length === 0){ |
| | | return this.$message.error('请选择检验项') |
| | | } |
| | | this.sectionRow = {} |
| | | this.sectionUpDia = true |
| | | } else { |
| | | // 值是一个对象 |
| | | this.sectionRow = row |
| | | this.sectionUpDia = true |
| | | this.sectionList = [] |
| | | if (this.sectionRow.section != null && this.sectionRow.section != '') { |
| | | JSON.parse(this.sectionRow.section).forEach((a, ai) => { |
| | | this.sectionList.push({ |
| | | thing: a, |
| | | ask: JSON.parse(this.sectionRow.ask)[ai], |
| | | tell: JSON.parse(this.sectionRow.tell)[ai], |
| | | price: JSON.parse(this.sectionRow.price)[ai], |
| | | manHour: JSON.parse(this.sectionRow.manHour)[ai] |
| | | }) |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | sectionLoadAdd() { |
| | |
| | | this.sectionRow.manHour = JSON.stringify(manHourList) |
| | | } |
| | | this.sectionLoad = true |
| | | this.$axios.post(this.$api.standardTree.upStandardProductList, { |
| | | id: this.sectionRow.id, |
| | | section: this.sectionRow.section, |
| | | ask: this.sectionRow.ask, |
| | | tell: this.sectionRow.tell, |
| | | price: this.sectionRow.price, |
| | | manHour: this.sectionRow.manHour |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | if(this.moreSelects.length === 0){ |
| | | this.$axios.post(this.$api.standardTree.upStandardProductList, { |
| | | id: this.sectionRow.id, |
| | | section: this.sectionRow.section, |
| | | ask: this.sectionRow.ask, |
| | | tell: this.sectionRow.tell, |
| | | price: this.sectionRow.price, |
| | | manHour: this.sectionRow.manHour |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.sectionLoad = false |
| | | if (res.code == 201) { |
| | | this.$message.error('未保存') |
| | | return |
| | | } |
| | | this.$message.success('已保存') |
| | | this.sectionUpDia = false |
| | | }) |
| | | }else{ |
| | | this.$axios.post(this.$api.standardTree.upStandardProducts, { |
| | | ids:this.moreSelects.map(a=>a.id), |
| | | standardProductList:{ |
| | | section: this.sectionRow.section, |
| | | ask: this.sectionRow.ask, |
| | | tell: this.sectionRow.tell, |
| | | price: this.sectionRow.price, |
| | | manHour: this.sectionRow.manHour |
| | | } |
| | | }).then(res => { |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.sectionLoad = false |
| | | if (res.code == 201) { |
| | | this.$message.error('未保存') |
| | |
| | | } |
| | | this.$message.success('已保存') |
| | | this.sectionUpDia = false |
| | | this.currentPage0 = 1; |
| | | this.getList() |
| | | }) |
| | | } |
| | | }, |
| | | getStandardTemplate() { |
| | | this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { |
| | |
| | | this.tableLoad2 = false |
| | | }) |
| | | }, |
| | | handleMore(){ |
| | | async handleMore(){ |
| | | if(!this.standardId&&this.standardId!=0){ |
| | | return this.$message.error('请选择实验室、样品') |
| | | } |
| | | await this.getList() |
| | | this.selectStandardMethods() |
| | | this.moreEdit = true |
| | | }, |
| | | subMoreEdit(){} |
| | | selectStandardMethods() { |
| | | this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.code, |
| | | value: a.code |
| | | }) |
| | | }) |
| | | this.methodList = data |
| | | }) |
| | | }, |
| | | subMoreEdit(){ |
| | | if(this.moreSelects.length===0){ |
| | | return this.$message.error('请选择检验项') |
| | | } |
| | | this.moreEditLoad = true |
| | | this.$axios.post(this.$api.standardTree.upStandardProducts, { |
| | | ids:this.moreSelects.map(a=>a.id), |
| | | standardProductList:this.moreInfo |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.moreEditLoad = false |
| | | if (res.code == 201) { |
| | | this.$message.error('未保存') |
| | | return |
| | | } |
| | | this.$message.success('已保存') |
| | | this.currentPage0 = 1; |
| | | this.getList() |
| | | // this.moreInfo = { |
| | | // ask:'', |
| | | // tell:'', |
| | | // methodS:'', |
| | | // price:'', |
| | | // manHour:'', |
| | | // templateId:'' |
| | | // } |
| | | }) |
| | | }, |
| | | handleSelectAll0(rows){ |
| | | if(rows.length){ |
| | | rows.forEach(a=>{ |
| | | if(!this.moreSelects.find(b=>a.id===b.id)){ |
| | | this.moreSelects.push(a) |
| | | } |
| | | }) |
| | | }else{ |
| | | this.productList0.forEach(a=>{ |
| | | this.moreSelects = this.moreSelects.filter(b=>b.id!=a.id ) |
| | | }) |
| | | } |
| | | }, |
| | | handleSelectionChange0(val,row){ |
| | | if(this.moreSelects.find(a=>a.id===row.id)){ |
| | | this.moreSelects = this.moreSelects.filter(a=>a.id!=row.id) |
| | | }else{ |
| | | this.moreSelects.push(row) |
| | | } |
| | | }, |
| | | getList(){ |
| | | this.productTableLoading0 = true |
| | | this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { |
| | | id: this.standardId, |
| | | tree: this.selectTree, |
| | | page: this.currentPage0 |
| | | }).then(res => { |
| | | this.productList0 = res.data.productList |
| | | this.total0 = res.data.total |
| | | this.productTableLoading0 = false |
| | | this.$nextTick(()=>{ |
| | | this.productList0.forEach((a,i) => { |
| | | if(this.moreSelects.find(b=>a.id==b.id)){ |
| | | // console.log(111111111,a) |
| | | this.$refs.productTable0.toggleRowSelection(this.productList0[i],true) |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | }, |
| | | handleCurrentChange0(e){ |
| | | this.currentPage0 = e; |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | | </script> |