From 10903aca3b8fd5dd7cd8573fa5c99ccf19cb8f29 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期四, 10 四月 2025 13:06:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/radio-frequency-cable' into radio-frequency-cable --- src/views/standard/standardLibrary/index.vue | 1546 +++++++++++++++++++++++----------------------------------- 1 files changed, 614 insertions(+), 932 deletions(-) diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue index 60997c2..d6ea973 100644 --- a/src/views/standard/standardLibrary/index.vue +++ b/src/views/standard/standardLibrary/index.vue @@ -1,296 +1,50 @@ -<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"> <el-row> <el-col :span="20"> - <el-input - v-model="search" - clearable - placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" - size="small" - style="margin-bottom: 5px" - suffix-icon="el-icon-search" - @blur="searchFilter" - @clear="searchFilter" - ></el-input> + <el-input v-model="search" clearable placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" size="small" style="margin-bottom: 5px" + suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter"></el-input> </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-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" + v-if="!auditId"></el-button> </el-col> </el-row> - <el-tree - ref="tree" - v-loading="treeLoad" - :allow-drop="allowDrop" - :data="list" - :default-expanded-keys="expandedKeys" - :draggable="true" - :filter-node-method="filterNode" - :props="{ children: 'children', label: 'label' }" - highlight-current - node-key="label" - style=" + <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list" + :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode" + :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" style=" 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" - > + <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' - }`" - ></i> + <i :class="`node_i ${data.children != undefined + ? 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) - " - :span="2" - style="text-align: right" - > - <el-button - size="mini" - type="text" - @click="editTreeName(node.data)" - > + <el-col v-if=" + checkPermi(['standard:standardLibrary:delStandardTree']) && + data.level == 7 + " :span="2" style="text-align: right"> + <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) - " - :span="2" - style="text-align: right" - > - <el-button - size="mini" - type="text" - @click.stop="remove(node, data)" - > + <el-col v-if=" + checkPermi(['standard:standardLibrary:delStandardTree']) && + data.level == 7 + " :span="2" style="text-align: right"> + <el-button size="mini" type="text" @click.stop="remove(node, data)" v-if="!auditId"> <i class="el-icon-delete"></i> </el-button> </el-col> @@ -300,309 +54,140 @@ </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" - > - <el-table-column - label="鏍囧噯缂栧彿" - prop="code" - show-overflow-tooltip - width="200" - > + <el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220" + :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">{{ scope.row["code"] }}</span> </template> </el-table-column> - <el-table-column - label="鏍囧噯鍚嶇О" - prop="name" - show-overflow-tooltip - ></el-table-column> - <el-table-column - label="澶囨敞" - prop="remark" - show-overflow-tooltip - ></el-table-column> + <el-table-column label="鏍囧噯鍚嶇О" prop="name" show-overflow-tooltip></el-table-column> + <el-table-column label="澶囨敞" prop="remark" show-overflow-tooltip></el-table-column> </el-table> </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> - <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" - show-overflow-tooltip - ></el-table-column> - <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> + <el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList" + :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" + show-overflow-tooltip></el-table-column> + <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> + <!-- 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> + <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)" + :disabled="!!auditId || standardCkeck"></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="瑕佹眰鎻忚堪" min-width="220px" prop="tell"> <template slot-scope="scope"> - <el-input - v-if=" - 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> + <el-input v-if=" + 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) + " :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 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) - " - > - <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 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" 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> <span v-else>{{ scope.row.radius }}</span> </template> </el-table-column> - <el-table-column - label="璁¢噺鍗曚綅" - prop="unit" - show-overflow-tooltip - width="100" - ></el-table-column> + <el-table-column label="璁¢噺鍗曚綅" prop="unit" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="鍗曚环(鍏�)" prop="price" width="120"> <template slot-scope="scope"> - <el-input - v-if=" - checkPermi(['standard:standardLibrary:upStandardProduct']) - " - v-model="scope.row.price" - placeholder="鍗曚环(鍏�)" - size="small" - @change=" - (value) => upStandardProductListOfPrice(value, scope.row.id) - " - > + <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-table-column> <el-table-column label="宸ユ椂绯绘暟" prop="manHour" width="120"> <template slot-scope="scope"> - <el-input - v-if=" - checkPermi(['standard:standardLibrary:upStandardProduct']) - " - v-model="scope.row.manHour" - placeholder="鍗曚环(鍏�)" - size="small" - @change=" - (value) => upStandardProductListOfManHour(value, scope.row.id) - " - > + <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> - <el-table-column - label="宸ユ椂鍒嗙粍" - prop="manHourGroup" - show-overflow-tooltip - width="100" - ></el-table-column> + <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']) - " - filterable - size="small" - @change=" - (value) => - 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 v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) || !!auditId || standardCkeck + " filterable size="small" @change="(value) => + 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" show-overflow-tooltip width="120"></el-table-column> + <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-button - type="text" - :disabled=" - !checkPermi(['standard:standardLibrary:upStandardProduct']) - " - @click="bindSupplierDensitySecond(scope.row)" - >缁戝畾鍘傚</el-button - > + <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) + ">鍖洪棿璁剧疆</el-button> + <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) + " @click="bindSupplierDensitySecond(scope.row)">缁戝畾鍘傚</el-button> </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> @@ -613,21 +198,13 @@ <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> <span slot="footer" class="dialog-footer"> <el-button @click="addDia = false">鍙� 娑�</el-button> - <el-button :loading="addLoad" type="primary" @click="addStandardTree" - >纭� 瀹�</el-button - > + <el-button :loading="addLoad" type="primary" @click="addStandardTree">纭� 瀹�</el-button> </span> </el-dialog> <el-dialog :visible.sync="updateDia" title="鍒嗙被淇敼" width="400px"> @@ -637,146 +214,72 @@ <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> <span slot="footer" class="dialog-footer"> <el-button @click="updateDia = false">鍙� 娑�</el-button> - <el-button - :loading="updateLoad" - type="primary" - @click="updateStandardTree" - >纭� 瀹�</el-button - > + <el-button :loading="updateLoad" type="primary" @click="updateStandardTree">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog - :close-on-click-modal="false" - :visible.sync="sectionUpDia" - title="鍖洪棿璁剧疆" - width="80%" - > + <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="鍖洪棿"> <template slot-scope="scope"> - <el-input - v-model="scope.row.thing" - clearable - placeholder="鍖洪棿" - size="small" - ></el-input> + <el-input v-model="scope.row.thing" clearable placeholder="鍖洪棿" size="small"></el-input> </template> </el-table-column> <el-table-column align="center" label="鑺暟"> <template slot-scope="scope"> - <el-input - v-model="scope.row.cores" - clearable - placeholder="鑺暟" - size="small" - ></el-input> + <el-input v-model="scope.row.cores" clearable placeholder="鑺暟" size="small"></el-input> </template> </el-table-column> <el-table-column align="center" label="瑕佹眰鍊�"> <template slot-scope="scope"> - <el-input - v-model="scope.row.ask" - clearable - placeholder="瑕佹眰鍊�" - size="small" - ></el-input> + <el-input v-model="scope.row.ask" clearable placeholder="瑕佹眰鍊�" size="small"></el-input> </template> </el-table-column> <el-table-column align="center" label="瑕佹眰鎻忚堪"> <template slot-scope="scope"> - <el-input - v-model="scope.row.tell" - :autosize="{ minRows: 1, maxRows: 2 }" - clearable - placeholder="瑕佹眰鎻忚堪" - size="small" - type="textarea" - ></el-input> + <el-input v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 2 }" clearable placeholder="瑕佹眰鎻忚堪" + size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column align="center" label="瀵间綋鏉愯川"> <template slot-scope="scope"> - <el-input - v-model="scope.row.conductorMaterial" - clearable - placeholder="瀵间綋鏉愯川" - size="small" - ></el-input> + <el-input v-model="scope.row.conductorMaterial" clearable placeholder="瀵间綋鏉愯川" size="small"></el-input> </template> </el-table-column> <el-table-column align="center" label="瀵间綋绫诲瀷"> <template slot-scope="scope"> - <el-input - v-model="scope.row.conductorType" - clearable - placeholder="瀵间綋绫诲瀷" - size="small" - ></el-input> + <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" - @click="sectionList.splice(scope.$index, 1)" - ></el-button> + <el-button circle icon="el-icon-minus" size="mini" type="danger" + @click="sectionList.splice(scope.$index, 1)"></el-button> </template> </el-table-column> </el-table> </div> <span slot="footer" class="dialog-footer"> <el-button @click="sectionUpDia = false">鍙� 娑�</el-button> - <el-button :loading="sectionLoad" type="primary" @click="sectionLoadAdd" - >淇� 瀛�</el-button - > - <el-button - icon="el-icon-plus" - type="primary" - @click="sectionList.push({ thing: '' })" - ></el-button> + <el-button :loading="sectionLoad" type="primary" @click="sectionLoadAdd">淇� 瀛�</el-button> + <el-button icon="el-icon-plus" type="primary" @click="sectionList.push({ thing: '' })"></el-button> </span> </el-dialog> - <bindSupplierDensityDialogAsk - v-if="bindSupplierDensityDialog" - :bindSupplierDensityDialog="bindSupplierDensityDialog" - :currentRow="currentSupplierDensityRow" - @closeBindPartDialog="closeBindSupplierDensityDialog" - ></bindSupplierDensityDialogAsk> - <BatchCopy - v-if="batchCopyDia" - ref="BatchCopy" - :selectTree1="selectTree" - :standardId="standardId" - @refreshList="refreshList" - ></BatchCopy> + <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog" + :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow" + @closeBindPartDialog="closeBindSupplierDensityDialog" @refreshList="refreshList"> + </bindSupplierDensityDialogAsk> + <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId" + @refreshList="refreshList"></BatchCopy> </div> </template> @@ -791,25 +294,24 @@ obtainItemParameterList, selectTestObjectByName, selectStandardMethods, - addStandardMethodList, addStandardTree, updateStandardTree, selectsStandardMethodByFLSSM, upStandardProductList, - delStandardMethodByFLSSM, - delStandardProductByIds, - addStandardProduct, selectStandardProductListByMethodId, updateSection, upStandardProducts, getStandardTemplate, selectStandardProductByMethodId, selectStandardProductEnumByMethodId, + productListSubmit, + standardProductListRecordRelPage, + existCheckingRecord, } from "@/api/standard/standardLibrary"; -import { checkPermi } from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟 import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue"; import BatchCopy from "./components/BatchCopy.vue"; export default { + // name: 'StandardLibrary', components: { BatchCopy, bindSupplierDensityDialogAsk, @@ -825,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, @@ -874,7 +374,6 @@ inspectionItem: null, inspectionItemSubclass: null, sonLaboratory: null, - token: null, fileList: [], uploading: false, isEquipment: true, @@ -886,27 +385,59 @@ 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(); this.selectTestObjectByName(); this.selectStandardMethods(); this.selectEnumByCategoryForSonLaboratory(); + 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: { - checkPermi, - // 淇敼鏈�瀛愮骇鍚嶅瓧 - 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'锛屽墠銆佹彃鍏ャ�佸悗 @@ -989,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); }, @@ -1000,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) => { @@ -1071,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) => { @@ -1149,85 +705,52 @@ this.standardEnum = data; }); }, - addStandardMethodList() { - if (this.standardId == null || this.standardId == "") { - this.$message.error("鏍囧噯鏂规硶鏈�夋嫨"); - return; - } - this.addLoad2 = true; - addStandardMethodList({ - standardId: this.standardId, - tree: this.selectTree, - }).then((res) => { - this.addLoad2 = false; - this.addStandardDia = false; - this.$message.success("娣诲姞鎴愬姛"); - this.selectsStandardMethodByFLSSM(); - }); + // 鎵撳紑鏂板寮规 + 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; @@ -1251,11 +774,8 @@ ask: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, upStandardProductListOfTell(value, index) { @@ -1265,11 +785,8 @@ tell: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, // 鏍囧噯搴撻�夋嫨瀹為獙鏂规硶鐨勫洖璋� @@ -1280,11 +797,8 @@ methodS: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, // 鏍囧噯搴撻�夋嫨鏉′欢鐨勫洖璋� @@ -1295,11 +809,8 @@ radius: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, upStandardProductListOfPrice(value, index) { @@ -1309,11 +820,8 @@ price: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, upStandardProductListOfManHour(value, index) { @@ -1323,11 +831,8 @@ manHour: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); }, upStandardProductListOfTemplate(value, index) { @@ -1337,30 +842,9 @@ templateId: value, }), }).then((res) => { - if (res.code == 201) { - this.$message.error("鏈繚瀛�"); - return; - } this.$message.success("宸蹭繚瀛�"); + this.refreshList() }); - }, - delStandardMethodByFLSSM(id) { - this.$confirm("鏄惁鍒犻櫎褰撳墠鏁版嵁?", "璀﹀憡", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(() => { - this.tableLoad = true; - delStandardMethodByFLSSM({ id: id }).then((res) => { - if (res.code == 201) { - return; - } - this.$message.success("宸插垹闄�"); - this.selectsStandardMethodByFLSSM(); - }); - }) - .catch(() => {}); }, handleSelectionChange(val) { this.selects = []; @@ -1368,57 +852,7 @@ this.selects.push(a.id); }); }, - delStandardProductByIds() { - if (this.selects.length == 0) { - this.$message.error("鏈�変腑鏁版嵁"); - return; - } - this.$confirm( - "鏄惁鍒犻櫎褰撳墠閫変腑 " + this.selects.length + " 鏉℃暟鎹�?", - "璀﹀憡", - { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - } - ) - .then(() => { - this.tableLoad = true; - delStandardProductByIds({ - ids: JSON.stringify(this.selects), - }).then((res) => { - if (res.code == 201) { - return; - } - this.$message.success("宸插垹闄�"); - this.selectsStandardMethodByFLSSM(); - }); - }) - .catch(() => {}); - }, - addStandardProductDo() { - let selects = this.$refs.ValueTable.multipleSelection; - if (selects.length == 0) { - this.$message.error("鏈�夋嫨鏁版嵁"); - return; - } - let select = []; - selects.forEach((a) => { - select.push(a.id); - }); - this.tableLoad = true; - addStandardProduct({ - ids: JSON.stringify(select), - tree: this.selectTree, - }).then((res) => { - if (res.code == 201) { - return; - } - this.$message.success("娣诲姞鎴愬姛"); - this.selectsStandardMethodByFLSSM(); - }); - this.addProductDia = false; - }, + refreshList() { this.batchCopyDia = false; const index = this.standardList.findIndex( @@ -1432,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); @@ -1489,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) { @@ -1643,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({ @@ -1665,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; @@ -1698,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; @@ -1805,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