From 5dbf3ac4647bc2ab26dc3cccee3e853ffe1491e3 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 10 四月 2025 10:49:28 +0800
Subject: [PATCH] 原辅材和成品下单修正
---
src/views/standard/standardLibrary/index.vue | 997 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 535 insertions(+), 462 deletions(-)
diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
index 4ead05c..d6ea973 100644
--- a/src/views/standard/standardLibrary/index.vue
+++ b/src/views/standard/standardLibrary/index.vue
@@ -1,192 +1,3 @@
-<style scoped>
-.standard {
- padding-top: 10px;
- display: flex;
- height: calc(100vh - 90px);
-}
-
-.left {
- width: 330px;
- height: calc(100% - 40px - 10px);
- background-color: white;
- padding: 15px;
-}
-
-.custom-tree-node {
- width: 100%;
- line-height: 32px;
-}
-
-.custom-tree-node .el-icon-delete {
- color: #3a7bfa;
- opacity: 0;
- font-size: 18px;
-}
-
-.custom-tree-node:hover .el-icon-delete {
- opacity: 1;
-}
-
-.custom-tree-node .el-icon-edit {
- color: #3a7bfa;
- opacity: 0;
- font-size: 18px;
-}
-
-.custom-tree-node:hover .el-icon-edit {
- opacity: 1;
-}
-
-.node_i {
- color: orange;
- font-size: 18px;
-}
-
-.right {
- margin-left: 5px;
- width: calc(100% - 350px);
- height: calc(100% - 40px);
-}
-
-.right .title {
- height: 34px;
- line-height: 34px;
- padding: 0 10px;
- background-color: white;
-}
-
-.standard_table {
- border-top: 1px solid #ebeef5;
- background-color: white;
-}
-
-.product_table {
- border-top: 1px solid #ebeef5;
- height: calc(100% - 235px);
- margin-top: 5px;
- background-color: white;
- user-select: none;
-}
-
-.product_table .el-table {
- height: calc(100% - 35px) !important;
-}
-
-.sort {
- width: 80% !important;
- overflow: hidden;
-}
-
->>>.el-table__body-wrapper {
- height: calc(100% - 46px) !important;
-}
-
->>>.header-class {
- height: 40px !important;
-}
-
->>>.header-class th.el-table__cell>.cell {
- line-height: 20px !important;
- padding-top: 0 !important;
- padding-bottom: 0 !important;
-}
-
->>>.el-table__row {
- height: 35px !important;
-}
-
-.search {
- 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;
-}
-
->>>.is-disabled .el-textarea__inner {
- background: rgba(0, 0, 0, 0.05) !important;
-}
-
->>>.el-table__body-wrapper::-webkit-scrollbar {
- height: 14px;
- /* 璁剧疆婊氬姩鏉″搴� */
-}
-</style>
-<style>
-.standard .el-tree-node__content {
- height: 32px;
- font-size: 14px;
- border-radius: 2px;
-}
-
-.standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
- color: #3a7bfa;
-}
-
-.standard .has-gutter .el-table__cell .cell {
- line-height: 34px;
- background-color: #f8f8f8;
-}
-
-.standard .has-gutter .el-table__cell {
- background-color: #fafafa !important;
-}
-
-.standard .standard_table .el-table__row .cell {
- font-size: 14px;
-}
-
-.standard .el-table .warning-row .cell {
- color: #bababa;
-}
-
-.standard .el-table-filter__list {
- max-height: 400px;
- overflow-y: auto;
-}
-
-.standard .el-upload {
- width: 100%;
-}
-
-.standard .el-upload-dragger {
- width: 100%;
-}
-
-.standard .handleBtn.is-disabled .el-upload:focus {
- color: #c0c4cc !important;
-}
-
-.standard .avatar-uploader .el-upload {
- height: 80px;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-</style>
-
<template>
<div class="standard">
<div class="left">
@@ -197,7 +8,8 @@
</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="addDia = true"></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"
@@ -206,35 +18,33 @@
height: calc(100% - 30px);
overflow-y: scroll;
scrollbar-width: none;
- " @node-click="handleNodeClick" @node-expand="nodeOpen" @node-collapse="nodeClose" @node-drop="handleDrop">
+ " @node-click="handleNodeClick" @node-drop="handleDrop">
<div slot-scope="{ node, data }" class="custom-tree-node">
<el-row style="width: 100%">
<el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
<span>
<i :class="`node_i ${data.children != undefined
- ? data.code === '[1]'
- ? 'el-icon-folder-opened'
- : 'el-icon-folder'
- : 'el-icon-tickets'
+ ? data.code === '[1]'
+ ? 'el-icon-folder-opened'
+ : 'el-icon-folder'
+ : 'el-icon-tickets'
}`"></i>
{{ data.label }}
</span>
</el-col>
<el-col v-if="
checkPermi(['standard:standardLibrary:delStandardTree']) &&
- (node.data.children === null ||
- node.data.children === undefined)
+ data.level == 7
" :span="2" style="text-align: right">
- <el-button size="mini" type="text" @click="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>
<el-col v-if="
checkPermi(['standard:standardLibrary:delStandardTree']) &&
- (node.data.children === null ||
- node.data.children === undefined)
+ data.level == 7
" :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>
@@ -244,18 +54,18 @@
</div>
<div class="right">
<el-row class="title" style="width: 100%">
- <el-col :span="20" style="font-size: 14px; color: #999">{{
+ <el-col :span="19" style="font-size: 14px; color: #999"><span>{{
selectTree
- }}</el-col>
- <el-col :span="4">
- <el-button v-if="isShowCopy" size="small" style="position: absolute; right: 20px; top: 1px" type="primary"
- @click="openCopyDia">鎵归噺澶嶅埗</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>
<el-row v-loading="tableLoad" class="standard_table">
<el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220"
- highlight-current-row style="width: 100%; height: 220px !important" tooltip-effect="dark"
- @row-click="rowClick">
+ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border highlight-current-row
+ style="width: 100%; height: 220px !important" tooltip-effect="dark" @row-click="rowClick">
<el-table-column label="鏍囧噯缂栧彿" prop="code" show-overflow-tooltip width="200">
<template slot-scope="scope">
<span style="color: red; font-size: 14px">{{
@@ -269,11 +79,11 @@
</el-row>
<el-row v-loading="tableLoad2" class="product_table">
<el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList"
- :fit="true" :row-class-name="tableRowClassName" border 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>
+ :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" :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"
@@ -281,13 +91,22 @@
<el-table-column label="妫�楠岄」" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column>
<el-table-column label="妫�楠岄」瀛愰」" min-width="140" prop="inspectionItemSubclass"
show-overflow-tooltip></el-table-column>
- <el-table-column label="瀛愬疄楠屽" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column>
+ <!-- checkStatusList -->
+ <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) && 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-table-column label="瑕佹眰鍊�" min-width="200px" prop="ask">
<template slot-scope="scope">
<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>
+ " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="瑕佹眰鍊�" size="small"
+ 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>
@@ -297,28 +116,29 @@
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="method" width="200">
+ <el-table-column label="瀛愬疄楠屽" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column>
+ <!-- <el-table-column label="璇曢獙鏂规硶" prop="method" width="200">
<template slot-scope="scope">
<el-select v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
" v-model="scope.row.methodS" clearable placeholder="璇曢獙鏂规硶" size="small" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
- ">
+ ">
<el-option v-for="(a, i) in scope.row.method &&
JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option>
</el-select>
<span v-else>{{ scope.row.methodS }}</span>
</template>
- </el-table-column>
- <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip>
+ </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)
- ">
+ " v-model="scope.row.radius" clearable placeholder="璇曢獙鏉′欢" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id)
+ " :disabled="!!auditId || standardCkeck" allow-create filterable>
<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>
@@ -331,7 +151,7 @@
<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>
@@ -341,7 +161,7 @@
<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>
@@ -349,16 +169,16 @@
<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)
+ upStandardProductListOfTemplate(value, scope.row.id)
">
<el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
</el-select>
</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>
@@ -367,10 +187,7 @@
</template>
</el-table-column>
</el-table>
- <el-pagination :current-page="currentPage" :page-size="300" :total="total"
- layout="total, prev, pager, next, jumper" style="position: absolute; right: 16px; bottom: 1px"
- @current-change="handleCurrentChange">
- </el-pagination>
+ <p style="text-align: right;margin-right: 20px;color: #333;">鍏眥{ total }}鏉�</p>
</el-row>
</div>
@@ -381,8 +198,7 @@
<span class="required-span">* </span>鍨嬪彿锛�
</el-col>
<el-col :offset="1" :span="16">
- <el-input v-model="addOb.model" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small"
- @keyup.enter.native="addStandardTree"></el-input>
+ <el-input v-model="addOb.modelName" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small"></el-input>
</el-col>
</el-row>
</div>
@@ -398,8 +214,7 @@
<span class="required-span">* </span>鍨嬪彿锛�
</el-col>
<el-col :offset="1" :span="16">
- <el-input v-model="addOb.model" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small"
- @keyup.enter.native="updateStandardTree"></el-input>
+ <el-input v-model="addOb.modelName" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small"></el-input>
</el-col>
</el-row>
</div>
@@ -410,7 +225,8 @@
</el-dialog>
<el-dialog :close-on-click-modal="false" :visible.sync="sectionUpDia" title="鍖洪棿璁剧疆" width="80%">
<div class="body" style="padding: 5px 0">
- <el-table :data="sectionList" border height="350px" style="width: 100%">
+ <el-table :data="sectionList" border height="350px" style="width: 100%"
+ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
<el-table-column align="center" label="搴忓彿" type="index" width="70">
</el-table-column>
<el-table-column align="center" label="鍖洪棿">
@@ -444,16 +260,6 @@
<el-input v-model="scope.row.conductorType" clearable placeholder="瀵间綋绫诲瀷" size="small"></el-input>
</template>
</el-table-column>
- <!-- <el-table-column align="center" label="鍗曚环" width="120">-->
- <!-- <template slot-scope="scope">-->
- <!-- <el-input v-model="scope.row.price" clearable placeholder="鍗曚环" size="small"></el-input>-->
- <!-- </template>-->
- <!-- </el-table-column>-->
- <!-- <el-table-column align="center" label="宸ユ椂绯绘暟" width="120">-->
- <!-- <template slot-scope="scope">-->
- <!-- <el-input v-model="scope.row.manHour" clearable placeholder="宸ユ椂绯绘暟" size="small"></el-input>-->
- <!-- </template>-->
- <!-- </el-table-column>-->
<el-table-column align="center" label="鎿嶄綔" width="70">
<template slot-scope="scope">
<el-button circle icon="el-icon-minus" size="mini" type="danger"
@@ -470,7 +276,7 @@
</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>
@@ -498,11 +304,14 @@
getStandardTemplate,
selectStandardProductByMethodId,
selectStandardProductEnumByMethodId,
+ productListSubmit,
+ standardProductListRecordRelPage,
+ existCheckingRecord,
} from "@/api/standard/standardLibrary";
import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue";
import BatchCopy from "./components/BatchCopy.vue";
export default {
- name: 'StandardLibrary',
+ // name: 'StandardLibrary',
components: {
BatchCopy,
bindSupplierDensityDialogAsk,
@@ -518,13 +327,11 @@
factory: [],
addDia: false,
updateDia: false, // 淇敼鏍戝悕瀛楀脊妗�
- oldModel: "",
addOb: {
- factory: null,
- laboratory: null,
- sampleType: null,
- sample: null,
- model: null,
+ id: '',
+ modelName: null,
+ parentLevel: '',
+ parentId: '',
},
laboratory: [],
addLoad: false,
@@ -567,7 +374,6 @@
inspectionItem: null,
inspectionItemSubclass: null,
sonLaboratory: null,
- token: null,
fileList: [],
uploading: false,
isEquipment: true,
@@ -579,9 +385,30 @@
batchCopyDia: false,
VUE_APP_BASE_API: process.env.VUE_APP_BASE_API,
moreSelects: [],
+ checkStatusList: [
+ {
+ value: 0,
+ label: '鏈彁浜�',
+ type: 'danger'
+ },
+ {
+ value: 1,
+ label: '瀹℃牳涓�',
+ type: 'warning'
+ },
+ {
+ value: 2,
+ label: '宸叉洿鏂�',
+ type: 'success'
+ },
+ ],
+ submitReviewLoad: false,
+ auditId: null,//鏍囧噯鍙樻洿璁板綍ID
+ standardCkeck: false,//褰撳墠鏄惁鏈夋鍦ㄥ鏍哥殑鍙樻洿
};
},
mounted() {
+ this.existCheckingRecord()
this.selectEnumByCategoryForFactory();
this.selectStandardTreeList();
this.obtainItemParameterList();
@@ -591,15 +418,26 @@
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: {
- // 淇敼鏈�瀛愮骇鍚嶅瓧
- editTreeName(info) {
- this.updateDia = true;
- this.oldModel = info.label;
+ // 鏍囧噯搴撳彉鏇存椂绂佺敤鍏ㄩ��
+ 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'锛屽墠銆佹彃鍏ャ�佸悗
@@ -682,10 +520,42 @@
}
}
},
- filterNode(value, data) {
- if (!value) return true;
- return data.label.indexOf(value) !== -1;
+ // 璋冪敤tree杩囨护鏂规硶 涓枃鑻辫繃婊�
+ filterNode(value, data, node) {
+ if (!value) {銆�銆�銆�銆�//濡傛灉鏁版嵁涓虹┖锛屽垯杩斿洖true,鏄剧ず鎵�鏈夌殑鏁版嵁椤�
+ return true
+ }
+ // 鏌ヨ鍒楄〃鏄惁鏈夊尮閰嶆暟鎹紝灏嗗�煎皬鍐欙紝鍖归厤鑻辨枃鏁版嵁
+ let val = value.toLowerCase()
+ return this.chooseNode(val, data, node) // 璋冪敤杩囨护浜屽眰鏂规硶
},
+ // 杩囨护鐖惰妭鐐� / 瀛愯妭鐐� (濡傛灉杈撳叆鐨勫弬鏁版槸鐖惰妭鐐逛笖鑳藉尮閰嶏紝鍒欒繑鍥炶鑺傜偣浠ュ強鍏朵笅鐨勬墍鏈夊瓙鑺傜偣锛涘鏋滃弬鏁版槸瀛愯妭鐐癸紝鍒欒繑鍥炶鑺傜偣鐨勭埗鑺傜偣銆俷ame鏄腑鏂囧瓧绗︼紝enName鏄嫳鏂囧瓧绗�.
+ chooseNode(value, data, node) {
+ if (data.label.indexOf(value) !== -1) {
+ return true
+ }
+ const level = node.level
+ // 濡傛灉浼犲叆鐨勮妭鐐规湰韬氨鏄竴绾ц妭鐐瑰氨涓嶇敤鏍¢獙浜�
+ if (level === 1) {
+ return false
+ }
+ // 鍏堝彇褰撳墠鑺傜偣鐨勭埗鑺傜偣
+ let parentData = node.parent
+ // 閬嶅巻褰撳墠鑺傜偣鐨勭埗鑺傜偣
+ let index = 0
+ while (index < level - 1) {
+ // 濡傛灉鍖归厤鍒扮洿鎺ヨ繑鍥烇紝姝ゅname鍊兼槸涓枃瀛楃锛宔nName鏄嫳鏂囧瓧绗︺�傚垽鏂尮閰嶄腑鑻辨枃杩囨护
+ if (parentData.data.label.indexOf(value) !== -1) {
+ return true
+ }
+ // 鍚﹀垯鐨勮瘽鍐嶅線涓婁竴灞傚仛鍖归厤
+ parentData = parentData.parent
+ index++
+ }
+ // 娌″尮閰嶅埌杩斿洖false
+ return false
+ },
+
searchFilter() {
this.$refs.tree.filter(this.search);
},
@@ -693,68 +563,70 @@
this.upIndex++;
},
handleNodeClick(val, node, el) {
- //鏍戠殑鍊�
- if (node.childNodes.length === 0) {
- this.isShowCopy = true;
- } else {
- this.isShowCopy = false;
- }
+ // 鍒ゆ柇鏄惁涓哄彾瀛愯妭鐐�
+ this.isShowCopy = node.childNodes.length === 0;
+
+ // 鏇存柊鐖惰妭鐐逛俊鎭�
+ this.addOb.parentLevel = node.data.level;
+ this.addOb.parentId = node.data.value;
+ this.addOb.id = node.data.value;
+
+ // 鍒濆鍖栧垎椤电浉鍏冲彉閲�
this.total = 0;
this.currentPage = 1;
- this.selectTree = "";
- this.getNodeParent(node);
- this.selectTree = this.selectTree.replace(" - ", "");
- let data = this.selectTree.split(" - ");
- let data2 = "";
- for (let index = data.length - 1; index >= 0; index--) {
- data2 += " - " + data[index];
- }
- this.selectTree = data2.replace(" - ", "");
- if (node.childNodes.length === 0) {
+
+ // 鎷兼帴鏍戣矾寰�
+ this.selectTree = this.getReversedTreePath(node);
+
+ // 濡傛灉鏄彾瀛愯妭鐐癸紝璋冪敤鐗瑰畾鏂规硶
+ if (this.isShowCopy) {
this.selectsStandardMethodByFLSSM();
}
- let trees = this.selectTree.split(" - ");
- this.addOb.factory = trees[0];
- this.addOb.laboratory = trees[1];
- this.addOb.sampleType = trees[2];
- this.addOb.sample = trees[3];
},
- getNodeParent(val) {
- if (val.parent != null) {
- if (val.data.children === null) {
- this.selectTree += " - " + val.label + " - " + "null";
- } else {
- this.selectTree += " - " + val.label;
+
+ /**
+ * 鑾峰彇鍙嶅悜鎷兼帴鐨勬爲璺緞瀛楃涓�
+ * @param {Object} node - 褰撳墠鑺傜偣
+ * @returns {string} - 鍙嶅悜鎷兼帴鐨勬爲璺緞
+ */
+ getReversedTreePath(node) {
+ const pathParts = [];
+
+ // 閫掑綊鑾峰彇鐖惰妭鐐硅矾寰�
+ const collectParentLabels = (currentNode) => {
+ if (currentNode && currentNode.label) {
+ pathParts.unshift(currentNode.label); // 灏嗗綋鍓嶈妭鐐规爣绛炬彃鍏ュ埌鏁扮粍寮�澶�
}
- this.getNodeParent(val.parent);
- }
+ if (currentNode.parent) {
+ collectParentLabels(currentNode.parent); // 閫掑綊澶勭悊鐖惰妭鐐�
+ }
+ };
+
+ collectParentLabels(node);
+
+ // 鎷兼帴璺緞骞惰繑鍥�
+ return pathParts.join(" - ");
},
remove(node, data) {
this.$confirm("鏄惁鍒犻櫎璇ュ眰绾�", "鎻愮ず", {
type: "error",
- })
- .then(() => {
- // this.treeLoad = true
+ }).then(() => {
+ this.selectTree = "";
+ // 鎷兼帴鏍戣矾寰�
+ this.selectTree = this.getReversedTreePath(node);
+ delStandardTree({
+ tree: this.selectTree,
+ level: data.level,
+ id: data.value
+ }).then((res) => {
+ this.$message.success("宸插垹闄�");
+ let arr = this.selectTree.split(" - ");
+ this.deleteStandard(this.list, arr[arr.length - 1]);
this.selectTree = "";
- this.getNodeParent(node);
- this.selectTree = this.selectTree.replace(" - ", "");
- let data = this.selectTree.split(" - ");
- let data2 = "";
- for (let index = data.length - 1; index >= 0; index--) {
- data2 += " - " + data[index];
- }
- this.selectTree = data2.replace(" - ", "");
- delStandardTree({ tree: this.selectTree }).then((res) => {
- if (res.code == 201) return;
- this.$message.success("宸插垹闄�");
- let arr = this.selectTree.split(" - ");
- this.deleteStandard(this.list, arr[arr.length - 1]);
- this.selectTree = "";
- this.standardList = [];
- this.productList = [];
- });
+ this.standardList = [];
+ this.productList = [];
})
- .catch((e) => { });
+ }).catch((e) => { });
},
deleteStandard(arr, label) {
arr.forEach((item, index) => {
@@ -764,15 +636,6 @@
item.children && this.deleteStandard(item.children, label);
}
});
- },
- nodeOpen(data, node, el) {
- $($(el.$el).find(".node_i")[0]).attr(
- "class",
- "node_i el-icon-folder-opened"
- );
- },
- nodeClose(data, node, el) {
- $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder");
},
selectEnumByCategoryForFactory() {
this.getConfigKey("sys_factory").then((response) => {
@@ -842,69 +705,52 @@
this.standardEnum = data;
});
},
+ // 鎵撳紑鏂板寮规
+ openAddDia() {
+ this.addDia = true
+ this.addOb.modelName = ''
+ },
// 鎻愪氦鍒嗙被娣诲姞
addStandardTree() {
- if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
- this.$message.error("瀵硅薄涓嶅瓨鍦�");
- return;
- }
- if (this.addOb.model == null || this.addOb.model == "") {
+ if (this.addOb.modelName == null || this.addOb.modelName == "") {
this.$message.error("璇峰~鍐欏瀷鍙�");
return;
}
this.addLoad = true;
- addStandardTree(this.addOb)
- .then((res) => {
- if (res.code === 201) {
- this.addLoad = false;
- return;
- }
- this.$message.success("娣诲姞鎴愬姛");
- this.addDia = false;
- this.list
- .find((a) => a.label == this.addOb.factory)
- .children.find((a) => a.label == this.addOb.laboratory)
- .children.find((a) => a.label == this.addOb.sampleType)
- .children.find((a) => a.label == this.addOb.sample)
- .children.push({
- code: "[5]",
- label: this.addOb.model,
- value: this.addOb.model,
- });
- this.addLoad = false;
- })
- .catch((e) => {
- this.addDia = false;
- this.addLoad = false;
- });
+ delete this.addOb.id;
+ addStandardTree(this.addOb).then((res) => {
+ this.$message.success("娣诲姞鎴愬姛");
+ this.addOb.modelName = "";
+ this.addDia = false;
+ this.selectStandardTreeList();
+ this.addLoad = false;
+ }).catch((e) => {
+ this.addLoad = false;
+ });
},
- // 淇敼鍨嬪彿
+ // 鎵撳紑淇敼鍚嶅瓧寮规
+ editTreeName(info) {
+ this.updateDia = true;
+ this.addOb.modelName = info.label;
+ },
+ // 鎻愪氦淇敼鍨嬪彿
updateStandardTree() {
- if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
- this.$message.error("瀵硅薄涓嶅瓨鍦�");
- return;
- }
- if (this.addOb.model == null || this.addOb.model == "") {
+ if (this.addOb.modelName == null || this.addOb.modelName == "") {
this.$message.error("璇峰~鍐欏瀷鍙�");
return;
}
- this.addOb.oldModel = this.oldModel;
this.updateLoad = true;
- updateStandardTree(this.addOb)
- .then((res) => {
- if (res.code === 201) {
- this.updateLoad = false;
- return;
- }
- this.$message.success("娣诲姞鎴愬姛");
- this.selectStandardTreeList();
- this.updateDia = false;
- this.updateLoad = false;
- })
- .catch((e) => {
- this.updateDia = false;
- this.updateLoad = false;
- });
+ delete this.addOb.parentLevel;
+ delete this.addOb.parentId;
+ updateStandardTree(this.addOb).then((res) => {
+ this.$message.success("娣诲姞鎴愬姛");
+ this.selectStandardTreeList();
+ this.addOb.modelName = "";
+ this.updateDia = false;
+ this.updateLoad = false;
+ }).catch((e) => {
+ this.updateLoad = false;
+ });
},
selectsStandardMethodByFLSSM() {
this.tableLoad = true;
@@ -928,11 +774,8 @@
ask: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
upStandardProductListOfTell(value, index) {
@@ -942,11 +785,8 @@
tell: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
// 鏍囧噯搴撻�夋嫨瀹為獙鏂规硶鐨勫洖璋�
@@ -957,11 +797,8 @@
methodS: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
// 鏍囧噯搴撻�夋嫨鏉′欢鐨勫洖璋�
@@ -972,11 +809,8 @@
radius: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
upStandardProductListOfPrice(value, index) {
@@ -986,11 +820,8 @@
price: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
upStandardProductListOfManHour(value, index) {
@@ -1000,11 +831,8 @@
manHour: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
upStandardProductListOfTemplate(value, index) {
@@ -1014,11 +842,8 @@
templateId: value,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
+ this.refreshList()
});
},
handleSelectionChange(val) {
@@ -1041,45 +866,65 @@
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 {
+ // 姝e父鎯呭喌涓嬬殑鏍囧噯鏌ヨ
+ 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);
@@ -1098,11 +943,8 @@
state: row.state,
}),
}).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
- // this.$message.success('宸蹭繚瀛�')
+ this.$message.success('宸蹭繚瀛�')
+ this.refreshList()
});
},
filterHandler(value) {
@@ -1252,12 +1094,9 @@
}),
}).then((res) => {
this.sectionLoad = false;
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
this.sectionUpDia = false;
+ this.refreshList()
});
} else {
upStandardProducts({
@@ -1274,10 +1113,6 @@
},
}).then((res) => {
this.sectionLoad = false;
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
this.$message.success("宸蹭繚瀛�");
this.sectionUpDia = false;
this.currentPage0 = 1;
@@ -1307,19 +1142,36 @@
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;
@@ -1414,6 +1266,227 @@
});
});
},
+ // 鎻愪氦鍙樻洿鐢宠
+ submitReview() {
+ this.$prompt('璇疯緭鍏ュ彉鏇村師鍥�', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ inputValidator: (value) => {
+ if (!value || value.trim() === '') {
+ return '璇疯緭鍏ュ彉鏇村師鍥�';
+ }
+ 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
+ })
+ }).catch(() => {
+ });
+ },
+ // 鑾峰彇褰撳墠鏈夋病鏈夋鍦ㄥ鏍哥殑鍙樻洿
+ existCheckingRecord() {
+ existCheckingRecord().then(res => {
+ this.standardCkeck = res.data
+ })
+ }
},
};
</script>
+<style scoped>
+.standard {
+ padding-top: 10px;
+ display: flex;
+ height: calc(100vh - 90px);
+}
+
+.left {
+ width: 330px;
+ height: calc(100% - 40px - 10px);
+ background-color: white;
+ padding: 15px;
+}
+
+.custom-tree-node {
+ width: 100%;
+ line-height: 32px;
+}
+
+.custom-tree-node .el-icon-delete {
+ color: #3a7bfa;
+ opacity: 0;
+ font-size: 18px;
+}
+
+.custom-tree-node:hover .el-icon-delete {
+ opacity: 1;
+}
+
+.custom-tree-node .el-icon-edit {
+ color: #3a7bfa;
+ opacity: 0;
+ font-size: 18px;
+}
+
+.custom-tree-node:hover .el-icon-edit {
+ opacity: 1;
+}
+
+.node_i {
+ color: orange;
+ font-size: 18px;
+}
+
+.right {
+ margin-left: 5px;
+ width: calc(100% - 350px);
+ height: calc(100% - 40px);
+}
+
+.right .title {
+ height: 34px;
+ line-height: 34px;
+ padding: 0 10px;
+ background-color: white;
+}
+
+.standard_table {
+ border-top: 1px solid #ebeef5;
+ background-color: white;
+}
+
+.product_table {
+ border-top: 1px solid #ebeef5;
+ height: calc(100% - 235px);
+ margin-top: 5px;
+ background-color: white;
+ user-select: none;
+}
+
+.product_table .el-table {
+ height: calc(100% - 35px) !important;
+}
+
+.sort {
+ width: 80% !important;
+ overflow: hidden;
+}
+
+>>>.el-table__body-wrapper {
+ height: calc(100% - 46px) !important;
+}
+
+>>>.header-class {
+ height: 40px !important;
+}
+
+>>>.header-class th.el-table__cell>.cell {
+ line-height: 20px !important;
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+
+>>>.el-table__row {
+ height: 35px !important;
+}
+
+.search {
+ 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;
+}
+
+>>>.is-disabled .el-textarea__inner {
+ background: rgba(0, 0, 0, 0.05) !important;
+}
+</style>
+<style scoped>
+.standard .el-tree-node__content {
+ height: 32px;
+ font-size: 14px;
+ border-radius: 2px;
+}
+
+.standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+ color: #3a7bfa;
+}
+
+.standard .has-gutter .el-table__cell .cell {
+ line-height: 34px;
+ background-color: #f8f8f8;
+}
+
+.standard .has-gutter .el-table__cell {
+ background-color: #fafafa !important;
+}
+
+.standard .standard_table .el-table__row .cell {
+ font-size: 14px;
+}
+
+.standard .el-table .warning-row .cell {
+ color: #bababa;
+}
+
+.standard .el-table-filter__list {
+ max-height: 400px;
+ overflow-y: auto;
+}
+
+.standard .el-upload {
+ width: 100%;
+}
+
+.standard .el-upload-dragger {
+ width: 100%;
+}
+
+.standard .handleBtn.is-disabled .el-upload:focus {
+ color: #c0c4cc !important;
+}
+
+.standard .avatar-uploader .el-upload {
+ height: 80px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+/* 闅愯棌鍏ㄩ�夊閫夋 */
+>>>.disable-select-all .el-checkbox {
+ display: none !important;
+}
+</style>
--
Gitblit v1.9.3