| | |
| | | </el-col> |
| | | <el-col v-if="checkPermi(['standard:standardLibrary:add'])" :span="4" |
| | | style="text-align: center; line-height: 30px"> |
| | | <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="openAddDia"></el-button> |
| | | <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="openAddDia" |
| | | v-if="!auditId"></el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list" |
| | |
| | | (node.data.children === null || |
| | | node.data.children === undefined) |
| | | " :span="2" style="text-align: right"> |
| | | <el-button size="mini" type="text" @click.stop="editTreeName(node.data)"> |
| | | <el-button size="mini" type="text" @click.stop="editTreeName(node.data)" v-if="!auditId"> |
| | | <i class="el-icon-edit"></i> |
| | | </el-button> |
| | | </el-col> |
| | |
| | | (node.data.children === null || |
| | | node.data.children === undefined) |
| | | " :span="2" style="text-align: right"> |
| | | <el-button size="mini" type="text" @click.stop="remove(node, data)"> |
| | | <el-button size="mini" type="text" @click.stop="remove(node, data)" v-if="!auditId"> |
| | | <i class="el-icon-delete"></i> |
| | | </el-button> |
| | | </el-col> |
| | |
| | | <el-row class="title" style="width: 100%"> |
| | | <el-col :span="19" style="font-size: 14px; color: #999"><span>{{ |
| | | selectTree |
| | | }} </span></el-col> |
| | | <el-col :span="5" style="position: absolute;top: -3px;right: -25px;"> |
| | | <el-button size="small" type="primary" @click="submitReview">提交变更</el-button> |
| | | }} </span></el-col> |
| | | <el-col :span="5" style="position: absolute;top: -3px;right: -25px;" v-if="!auditId && !standardCkeck"> |
| | | <el-button size="small" type="primary" @click="submitReview" :loading="submitReviewLoad">提交变更</el-button> |
| | | <el-button v-if="isShowCopy" size="small" type="primary" @click="openCopyDia">批量复制</el-button> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true" |
| | | :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%" |
| | | row-key="id" stripe style="width: 100%" tooltip-effect="dark" @select="upProductSelect" |
| | | @selection-change="handleSelectionChange" @select-all="handleAll"> |
| | | <el-table-column type="selection" width="50"> </el-table-column> |
| | | @selection-change="handleSelectionChange" @select-all="handleAll" :header-cell-class-name="headerCellStyle"> |
| | | <el-table-column type="selection" width="50" :selectable="selectable"> </el-table-column> |
| | | <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" |
| | |
| | | <el-table-column label="审核状态" min-width="140" prop="checkStatus"> |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="checkStatusList.find(m => m.value == scope.row.checkStatus).type" |
| | | v-if="checkStatusList.find(m => m.value == scope.row.checkStatus)" size="small">{{ |
| | | v-if="checkStatusList.find(m => m.value == scope.row.checkStatus) && scope.row.checkStatus !== '' && scope.row.checkStatus !== null" |
| | | size="small">{{ |
| | | checkStatusList.find(m => m.value == scope.row.checkStatus).label }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <el-input v-if=" |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small" |
| | | type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input> |
| | | type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)" |
| | | :disabled="!!auditId || standardCkeck"></el-input> |
| | | <span v-else>{{ scope.row.ask }}</span> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | " v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" |
| | | size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id) |
| | | "></el-input> |
| | | " :disabled="!!auditId || standardCkeck"></el-input> |
| | | <span v-else>{{ scope.row.ask }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column> |
| | | <el-table-column label="试验方法" prop="method" width="200"> |
| | | <!-- <el-table-column label="试验方法" prop="method" width="200"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-if=" |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | |
| | | </el-select> |
| | | <span v-else>{{ scope.row.methodS }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <el-select v-if=" |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | " v-model="scope.row.radius" clearable placeholder="条件" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id) |
| | | "> |
| | | " :disabled="!!auditId || standardCkeck"> |
| | | <el-option v-for="(a, i) in scope.row.radiusList && |
| | | JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> |
| | | </el-select> |
| | |
| | | <el-input v-if=" |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | " v-model="scope.row.price" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id) |
| | | "> |
| | | " :disabled="!!auditId || standardCkeck"> |
| | | </el-input> |
| | | <span v-else>{{ scope.row.price }}</span> |
| | | </template> |
| | |
| | | <el-input v-if=" |
| | | checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | " v-model="scope.row.manHour" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id) |
| | | "> |
| | | " :disabled="!!auditId || standardCkeck"> |
| | | </el-input> |
| | | <span v-else>{{ scope.row.manHour }}</span> |
| | | </template> |
| | |
| | | <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column> |
| | | <el-table-column label="模板" prop="templateId" width="200"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) || !!auditId || standardCkeck |
| | | " filterable size="small" @change="(value) => |
| | | upStandardProductListOfTemplate(value, scope.row.id) |
| | | "> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column> |
| | | <el-table-column label="操作" prop="section" width="160"> |
| | | <el-table-column label="操作" prop="section" width="160" v-if="!auditId && !standardCkeck"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) |
| | | ">区间设置</el-button> |
| | |
| | | </el-dialog> |
| | | <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog" |
| | | :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow" |
| | | @closeBindPartDialog="closeBindSupplierDensityDialog"> |
| | | @closeBindPartDialog="closeBindSupplierDensityDialog" @refreshList="refreshList"> |
| | | </bindSupplierDensityDialogAsk> |
| | | <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId" |
| | | @refreshList="refreshList"></BatchCopy> |
| | |
| | | selectStandardProductByMethodId, |
| | | selectStandardProductEnumByMethodId, |
| | | productListSubmit, |
| | | standardProductListRecordRelPage, |
| | | existCheckingRecord, |
| | | } from "@/api/standard/standardLibrary"; |
| | | import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue"; |
| | | import BatchCopy from "./components/BatchCopy.vue"; |
| | |
| | | inspectionItem: null, |
| | | inspectionItemSubclass: null, |
| | | sonLaboratory: null, |
| | | token: null, |
| | | fileList: [], |
| | | uploading: false, |
| | | isEquipment: true, |
| | |
| | | label: '已更新', |
| | | type: 'success' |
| | | }, |
| | | ] |
| | | ], |
| | | submitReviewLoad: false, |
| | | auditId: null,//标准变更记录ID |
| | | standardCkeck: false,//当前是否有正在审核的变更 |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.existCheckingRecord() |
| | | this.selectEnumByCategoryForFactory(); |
| | | this.selectStandardTreeList(); |
| | | this.obtainItemParameterList(); |
| | |
| | | this.selectEnumByCategoryForsampleType(); |
| | | this.getStandardTemplate(); |
| | | this.selectStandardMethodsSec(); |
| | | this.token = { |
| | | token: sessionStorage.getItem("token"), |
| | | }; |
| | | if (this.$route.query && this.$route.query.auditId) { |
| | | let { |
| | | auditId |
| | | } = this.$route.query |
| | | this.auditId = auditId |
| | | } else { |
| | | this.auditId = null |
| | | } |
| | | }, |
| | | methods: { |
| | | // 标准库变更时禁用全选 |
| | | headerCellStyle({ columnIndex }) { |
| | | if (columnIndex === 0 && (this.auditId || this.standardCkeck)) { |
| | | return 'disable-select-all'; |
| | | } |
| | | return ''; |
| | | }, |
| | | // 标准库变更时禁用多选 |
| | | selectable(row, index) { |
| | | return !this.auditId && !this.standardCkeck; |
| | | }, |
| | | // 拖拽时判定目标节点能否被放置 |
| | | // 'prev'、'inner' 和 'next',前、插入、后 |
| | | allowDrop(draggingNode, dropNode, type) { |
| | |
| | | this.currentPage = 1; |
| | | this.tableLoad2 = true; |
| | | this.standardId = row.id; |
| | | selectStandardProductListByMethodId({ |
| | | id: row.id, |
| | | tree: this.selectTree, |
| | | page: this.currentPage, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | this.total = res.data.total; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 300); |
| | | this.tableLoad2 = false; |
| | | const tree = this.selectTree.split(" - "); |
| | | // 选择最后一层树才可以拖拽排序 |
| | | if (tree.length === 4) { |
| | | const name = tree[3] + "[4]"; |
| | | this.hasChildWithId(this.list, name); |
| | | if ( |
| | | this.isHaveChildren.children && |
| | | this.isHaveChildren.children.length > 0 |
| | | ) { |
| | | if (this.auditId) { |
| | | // 标准库变更的检验项查询 |
| | | standardProductListRecordRelPage({ |
| | | standardMethodListId: row.id, |
| | | tree: this.selectTree, |
| | | standardProductListUpdateRecordId: this.auditId, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | this.total = res.data.total; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 300); |
| | | this.tableLoad2 = false; |
| | | }); |
| | | } else { |
| | | // 正常情况下的标准查询 |
| | | selectStandardProductListByMethodId({ |
| | | id: row.id, |
| | | tree: this.selectTree, |
| | | page: this.currentPage, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | this.total = res.data.total; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 300); |
| | | this.tableLoad2 = false; |
| | | const tree = this.selectTree.split(" - "); |
| | | // 选择最后一层树才可以拖拽排序 |
| | | if (tree.length === 4) { |
| | | const name = tree[3] + "[4]"; |
| | | this.hasChildWithId(this.list, name); |
| | | if ( |
| | | this.isHaveChildren.children && |
| | | this.isHaveChildren.children.length > 0 |
| | | ) { |
| | | if (this.sortTable) { |
| | | this.sortTable.destroy(); |
| | | this.sortTable = null; |
| | | } |
| | | return; |
| | | } |
| | | } else if (tree.length < 4) { |
| | | if (this.sortTable) { |
| | | this.sortTable.destroy(); |
| | | this.sortTable = null; |
| | | } |
| | | return; |
| | | } |
| | | } else if (tree.length < 4) { |
| | | if (this.sortTable) { |
| | | this.sortTable.destroy(); |
| | | this.sortTable = null; |
| | | } |
| | | return; |
| | | } |
| | | this.$nextTick(() => { |
| | | this.rowDrop(row.id); |
| | | this.$nextTick(() => { |
| | | this.rowDrop(row.id); |
| | | }); |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | toggleSelection(row) { |
| | | this.$refs.productTable.toggleRowSelection(row, true); |
| | |
| | | this.sectionLoad = false; |
| | | this.$message.success("已保存"); |
| | | this.sectionUpDia = false; |
| | | this.refreshList() |
| | | }); |
| | | } else { |
| | | upStandardProducts({ |
| | |
| | | handleCurrentChange(val) { |
| | | this.currentPage = val; |
| | | this.tableLoad2 = true; |
| | | selectStandardProductListByMethodId({ |
| | | id: this.standardId, |
| | | tree: this.selectTree, |
| | | page: val, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 200); |
| | | this.tableLoad2 = false; |
| | | }); |
| | | if (this.auditId) { |
| | | // 标准库变更查询\ |
| | | standardProductListRecordRelPage({ |
| | | standardMethodListId: this.standardId, |
| | | tree: this.selectTree, |
| | | standardProductListUpdateRecordId: this.auditId, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 200); |
| | | this.tableLoad2 = false; |
| | | }); |
| | | } else { |
| | | selectStandardProductListByMethodId({ |
| | | id: this.standardId, |
| | | tree: this.selectTree, |
| | | page: val, |
| | | }).then((res) => { |
| | | this.productList = res.data.productList; |
| | | setTimeout(() => { |
| | | this.productList.forEach((a) => { |
| | | if (a.state == 1) this.toggleSelection(a); |
| | | }); |
| | | }, 200); |
| | | this.tableLoad2 = false; |
| | | }); |
| | | } |
| | | }, |
| | | openCopyDia() { |
| | | this.batchCopyDia = true; |
| | |
| | | return true; |
| | | } |
| | | }).then(({ value }) => { |
| | | this.submitReviewLoad = true |
| | | productListSubmit({ |
| | | remark: value |
| | | }).then(res => { |
| | | this.submitReviewLoad = false |
| | | this.selectsStandardMethodByFLSSM(); |
| | | this.existCheckingRecord() |
| | | this.refreshList() |
| | | this.$refs.productTable.doLayout() |
| | | }).catch(err => { |
| | | this.submitReviewLoad = false |
| | | }) |
| | | // this.$message({ |
| | | // type: 'success', |
| | | // message: '你的邮箱是: ' + value |
| | | // }); |
| | | }).catch(() => { |
| | | // this.$message({ |
| | | // type: 'info', |
| | | // message: '取消输入' |
| | | // }); |
| | | }); |
| | | }, |
| | | // 获取当前有没有正在审核的变更 |
| | | existCheckingRecord() { |
| | | existCheckingRecord().then(res => { |
| | | this.standardCkeck = res.data |
| | | }) |
| | | } |
| | | }, |
| | | }; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | /* 隐藏全选复选框 */ |
| | | >>>.disable-select-all .el-checkbox { |
| | | display: none !important; |
| | | } |
| | | </style> |