| | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | | <template> |
| | | <div>不合格处理</div> |
| | | <div class="below-standard-main bg-1"> |
| | | <div style="width: 100%; height: 100%"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px; text-align: left" |
| | | >不合格管理</el-col |
| | | > |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">规格型号:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="entity.model" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">样品名称:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="entity.sample" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >查 询</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :tableLoading="tableLoading" |
| | | :parentSpanMethod="spanMethod" |
| | | :height="tableHeight+''" |
| | | :page="page" |
| | | @pagination="pagination" |
| | | ></lims-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default {}; |
| | | </script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | pageInsUnPass |
| | | } from "../../../api/business/unPass"; |
| | | |
| | | <style></style> |
| | | |
| | | |
| | | import { convertToHtml } from "mammoth"; |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | column:[ |
| | | { |
| | | label: '委托编号', |
| | | prop: 'entrustCode' |
| | | }, |
| | | { |
| | | label: '样品名称', |
| | | prop: 'sample' |
| | | }, |
| | | { |
| | | label: '规格型号', |
| | | prop: 'model' |
| | | }, |
| | | { |
| | | label: '检测项', |
| | | prop: 'inspectionItem' |
| | | }, |
| | | { |
| | | label: '检测子项', |
| | | prop: 'inspectionItemSubclass' |
| | | }, |
| | | { |
| | | label: '检测结果', |
| | | prop: 'lastValue' |
| | | }, |
| | | { |
| | | label: '处理意见', |
| | | prop: 'handleSuggestion' |
| | | }, |
| | | { |
| | | label: '检验人', |
| | | prop: 'name' |
| | | } |
| | | ], |
| | | tableLoading: false, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0, |
| | | }, |
| | | entity: { |
| | | sample: null, |
| | | model: null, |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | statusList: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.entity); |
| | | this.refreshTable(); |
| | | }, |
| | | created() { |
| | | this.getTableHeight(); |
| | | }, |
| | | methods: { |
| | | // 表格合并 |
| | | spanMethod({row,column,rowIndex,columnIndex}) { |
| | | // 需要合并的列 |
| | | const needSpan = [1] |
| | | if(needSpan.includes(columnIndex)) { |
| | | // 如果是第一行 或者 当前行的值和上一行的值不一样 就要开始进行计算合并 |
| | | if(rowIndex == 0 || row.entrustCode != this.tableData[rowIndex -1 ].entrustCode) { |
| | | // 向下找到和当前行不一样的行数 |
| | | let rowSpan = 1; |
| | | while(rowIndex + rowSpan < this.tableData.length && row.entrustCode == this.tableData[rowIndex + rowSpan].entrustCode) { |
| | | rowSpan++ |
| | | } |
| | | return [rowSpan,1] |
| | | }else { |
| | | // 如果和上一行的值一样 就隐藏 |
| | | return [0,0] |
| | | } |
| | | }else{ |
| | | return [1,1] |
| | | } |
| | | }, |
| | | getTableHeight() { |
| | | this.tableHeight = window.innerHeight - 50 - 46 - 60 - 80 - 30 - 30 - 32; |
| | | }, |
| | | getData() { |
| | | this.tableLoading = true; |
| | | pageInsUnPass({ |
| | | current: this.page.current, |
| | | size: this.page.size, |
| | | model: this.entity.model, |
| | | sample: this.entity.sample, |
| | | }).then((res) => { |
| | | this.tableLoading = false; |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | }); |
| | | }, |
| | | pagination({page,limit}) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getData(); |
| | | }, |
| | | |
| | | refreshTable() { |
| | | this.getData(); |
| | | }, |
| | | refresh() { |
| | | this.entity = this.HaveJson(this.entityCopy); |
| | | this.upIndex++; |
| | | this.$nextTick(() => { |
| | | this.getData(); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |