From f9c43ac677055208074879262c670926fbdee44b Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期五, 14 二月 2025 10:03:19 +0800 Subject: [PATCH] 标准库搬迁50% --- src/views/standard/model/index.vue | 0 src/api/standard/standardLibrary.js | 208 ++++ src/views/standard/standardLibrary/index.vue | 2253 +++++++++++++++++++++++++++++++++++++++++++++++++++++ vue.config.js | 2 4 files changed, 2,462 insertions(+), 1 deletions(-) diff --git a/src/api/standard/standardLibrary.js b/src/api/standard/standardLibrary.js new file mode 100644 index 0000000..7768746 --- /dev/null +++ b/src/api/standard/standardLibrary.js @@ -0,0 +1,208 @@ +import request from "@/utils/request"; + +// 鏍囧噯搴撴爲鎺掑簭 +export function updateTreeSort(data) { + return request({ + url: "/standardTree/updateTreeSort", + method: "post", + data: data, + }); +} + +// 鏍囧噯搴撴楠岄」鎺掑簭淇濆瓨鎺ュ彛 +export function resetTreeDragBatch(data) { + return request({ + url: "/standardTree/resetTreeDragBatch", + method: "post", + data: data, + }); +} + +// 鍒犻櫎鏍囧噯鏍戠殑灞傜骇 +export function delStandardTree(data) { + return request({ + url: "/standardTree/delStandardTree", + method: "post", + data: data, + }); +} + +// 鑾峰彇鏍囧噯鏍� +export function selectStandardTreeList(query) { + return request({ + url: "/standardTree/selectStandardTreeList", + method: "get", + params: query, + }); +} + +// 鑾峰彇瀹為獙瀹ゅ悕绉� +export function obtainItemParameterList(query) { + return request({ + url: "/laboratoryScope/obtainItemParameterList", + method: "get", + params: query, + }); +} + +// 鑾峰彇妫�楠屽璞℃灇涓� +export function selectTestObjectByName(query) { + return request({ + url: "/capacityScope/selectTestObjectByName", + method: "get", + params: query, + }); +} + +// 缁欐爣鍑嗘爲娣诲姞妫�楠屾爣鍑� +export function addStandardMethodList(data) { + return request({ + url: "/standardTree/addStandardMethodList", + method: "post", + data: data, + }); +} + +// 娣诲姞鏍囧噯鏍� +export function addStandardTree(data) { + return request({ + url: "/standardTree/addStandardTree", + method: "post", + data: data, + }); +} + +// 淇敼鏍囧噯鏍� +export function updateStandardTree(data) { + return request({ + url: "/standardTree/updateStandardTree", + method: "post", + data: data, + }); +} + +// 鏍规嵁鏍囧噯鏍戣繘琛屾爣鍑嗘煡璇� +export function selectsStandardMethodByFLSSM(data) { + return request({ + url: "/standardTree/selectsStandardMethodByFLSSM", + method: "post", + data: data, + }); +} + +// 淇敼鏍囧噯搴撲腑鐨勮姹傚�� +export function upStandardProductList(data) { + return request({ + url: "/standardTree/upStandardProductList", + method: "post", + data: data, + }); +} + +// 鍒犻櫎鏍囧噯鏍戜笅鐨勬楠屾爣鍑� +export function delStandardMethodByFLSSM(data) { + return request({ + url: "/standardTree/delStandardMethodByFLSSM", + method: "post", + data: data, + }); +} + +// 鍒犻櫎鏍囧噯鏍戜笅鐨勬楠屾爣鍑� +export function delStandardProductByIds(data) { + return request({ + url: "/standardTree/delStandardProductByIds", + method: "post", + data: data, + }); +} + +// 鏂板鏍囧噯鏍戜笅鐨勬楠岄」鐩� +export function addStandardProduct(data) { + return request({ + url: "/standardTree/addStandardProduct", + method: "post", + data: data, + }); +} + +// 閫氳繃妫�楠屾爣鍑嗘煡璇㈡楠岄」鐩� +export function selectStandardProductListByMethodId(data) { + return request({ + url: "/standardTree/selectStandardProductListByMethodId", + method: "post", + data: data, + }); +} + +// 淇敼鏍囧噯搴撲腑鐨勫尯闂磋缃� +export function updateSection(data) { + return request({ + url: "/standardTree/updateSection", + method: "post", + data: data, + }); +} + +// 鑾峰彇浜у搧鏋舵瀯 +export function upStandardProducts(data) { + return request({ + url: "/standardTree/upStandardProducts", + method: "post", + data: data, + }); +} + +// 鏌ヨ鍘熷璁板綍妯℃澘鏋氫妇 +export function getStandardTemplate(query) { + return request({ + url: "/StandardTemplate/getStandardTemplate", + method: "get", + params: query, + }); +} + +// 鑾峰彇鏍囧噯鏂规硶鏋氫妇 +export function selectStandardMethods(query) { + return request({ + url: "/standardMethod/selectStandardMethods", + method: "get", + params: query, + }); +} + +// 鎵归噺缂栬緫鏌ヨ妫�楠岄」鐩� +export function selectStandardProductByMethodId(data) { + return request({ + url: "/standardTree/selectStandardProductByMethodId", + method: "post", + data: data, + }); +} + +// 鎵归噺缂栬緫鏌ヨ鎵�鏈夋楠岄」鐩拰妫�楠屽瓙椤规灇涓� +export function selectStandardProductEnumByMethodId(data) { + return request({ + url: "/standardTree/selectStandardProductEnumByMethodId", + method: "post", + data: data, + }); +} + +// 閲嶇疆鏍囧噯搴撳崟浠� +export function resetTreeOfPrice(data) { + return request({ + url: "/standardTree/resetTreeOfPrice", + method: "post", + data: data, + }); +} + +// 閲嶇疆鏍囧噯搴撳伐鏃剁郴鏁� +export function resetTreeOfHour(data) { + return request({ + url: "/standardTree/resetTreeOfHour", + method: "post", + data: data, + }); +} diff --git a/src/views/standard/model/index.vue b/src/views/standard/model/index.vue new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/views/standard/model/index.vue diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue new file mode 100644 index 0000000..6314cb0 --- /dev/null +++ b/src/views/standard/standardLibrary/index.vue @@ -0,0 +1,2253 @@ +<style scoped> +.standard { + padding: 10px 0; + display: flex; +} + +.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% - 365px); + 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-col> + <el-col + v-if="addPower" + :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> + </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=" + height: calc(100% - 30px); + overflow-y: scroll; + scrollbar-width: none; + " + @node-click="handleNodeClick" + @node-expand="nodeOpen" + @node-collapse="nodeClose" + @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' + }`" + ></i> + {{ data.label }} + </span> + </el-col> + <el-col + v-if=" + checkPermi(['system:standard: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)" + > + <i class="el-icon-edit"></i> + </el-button> + </el-col> + <el-col + v-if=" + checkPermi(['system:standard: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)" + > + <i class="el-icon-delete"></i> + </el-button> + </el-col> + </el-row> + </div> + </el-tree> + </div> + <div class="right"> + <el-row class="title" style="width: 100%"> + <el-col :span="20" style="font-size: 14px; color: #999">{{ + selectTree + }}</el-col> + <el-col :span="4"> + <el-button + v-if="isShowCopy" + size="small" + style="position: absolute; right: 50px; top: 1px" + 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" + > + <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> + </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-column label="瑕佹眰鍊�" min-width="200px" prop="ask"> + <template slot-scope="scope"> + <el-input + v-if="checkPermi(['system:standard: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> + <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(['system:standard: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> + <span v-else>{{ scope.row.ask }}</span> + </template> + </el-table-column> + <el-table-column label="璇曢獙鏂规硶" prop="method" width="200"> + <template slot-scope="scope"> + <el-select + v-if="checkPermi(['system:standard: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 + > + <template slot-scope="scope"> + <el-select + v-if="checkPermi(['system:standard: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> + <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="price" width="120"> + <template slot-scope="scope"> + <el-input + v-if="checkPermi(['system:standard:upStandardProduct'])" + v-model="scope.row.price" + placeholder="鍗曚环(鍏�)" + size="small" + @change=" + (value) => upStandardProductListOfPrice(value, scope.row.id) + " + > + </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(['system:standard:upStandardProduct'])" + v-model="scope.row.manHour" + placeholder="鍗曚环(鍏�)" + size="small" + @change=" + (value) => upStandardProductListOfManHour(value, scope.row.id) + " + > + </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="templateId" width="200"> + <template slot-scope="scope"> + <el-select + v-model="scope.row.templateId" + :disabled="!checkPermi(['system:standard: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> + </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"> + <template slot-scope="scope"> + <el-button type="text" @click="sectionUp(scope.row)" + >鍖洪棿璁剧疆</el-button + > + <el-button + type="text" + @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> + </el-row> + </div> + <el-dialog :visible.sync="addDia" title="鍒嗙被娣诲姞" width="400px"> + <div class="body"> + <el-row style="line-height: 50px"> + <el-col :span="6" style="text-align: right"> + <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-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 + > + </span> + </el-dialog> + <el-dialog :visible.sync="updateDia" title="鍒嗙被淇敼" width="400px"> + <div class="body"> + <el-row style="line-height: 50px"> + <el-col :span="6" style="text-align: right"> + <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-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 + > + </span> + </el-dialog> + <el-dialog + :visible.sync="moreEdit" + class="more-edit" + title="鎵归噺缂栬緫" + width="90%" + > + <div + class="body" + style="display: flex; flex-direction: column; height: 85vh" + > + <div class="search"> + <div class="search-item"> + <el-row style="width: 25%; margin-bottom: 16px"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 瑕佹眰鍊硷細</el-col + > + <el-col :span="16"> + <el-input + v-model="moreInfo.ask" + :disabled="moreSelects.length == 0" + clearable + size="small" + ></el-input> + </el-col> + </el-row> + <el-row style="width: 25%; margin-bottom: 16px"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 瑕佹眰鎻忚堪锛�</el-col + > + <el-col + :span="16" + style="display: flex; align-items: flex-start; height: 100%" + > + <el-input + v-model="moreInfo.tell" + :autosize="{ minRows: 1, maxRows: 3 }" + :disabled="moreSelects.length == 0" + clearable + size="small" + type="textarea" + ></el-input> + </el-col> + </el-row> + <el-row style="width: 25%; margin-bottom: 16px"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 璇曢獙鏂规硶锛�</el-col + > + <el-col :span="16"> + <el-select + v-model="moreInfo.methodS" + :disabled="moreSelects.length == 0" + clearable + filterable + size="small" + style="width: 100%" + > + <el-option + v-for="(a, ai) in methodList" + :key="ai" + :label="a.label" + :value="a.value" + ></el-option> + </el-select> + </el-col> + </el-row> + <el-row style="width: 25%; margin-bottom: 16px"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 鍗曚环(鍏�)锛�</el-col + > + <el-col :span="16"> + <el-input + v-model="moreInfo.price" + :disabled="moreSelects.length == 0" + clearable + size="small" + ></el-input> + </el-col> + </el-row> + <el-row style="width: 25%"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 宸ユ椂绯绘暟锛�</el-col + > + <el-col :span="16"> + <el-input + v-model="moreInfo.manHour" + :disabled="moreSelects.length == 0" + clearable + size="small" + ></el-input> + </el-col> + </el-row> + <el-row style="width: 25%"> + <el-col :span="6" style="text-align: right"> + <!-- <span class="required-span">* </span> --> + 妯℃澘锛�</el-col + > + <el-col :span="16"> + <el-select + v-model="moreInfo.templateId" + :disabled="moreSelects.length == 0" + filterable + placeholder="妯℃澘" + size="small" + style="width: 100%" + > + <el-option + v-for="(a, ai) in templateList" + :key="ai" + :label="a.name" + :value="a.id" + ></el-option> + </el-select> + </el-col> + </el-row> + <el-row style="width: 25%"> + <el-col :span="6" style="text-align: right"> 鏄惁鍚敤锛�</el-col> + <el-col :span="16"> + <el-select + v-model="moreInfo.state" + :disabled="moreSelects.length == 0" + clearable + filterable + placeholder="妯℃澘" + size="small" + style="width: 100%" + > + <el-option :value="1" label="鍚敤"></el-option> + <el-option :value="0" label="涓嶅惎鐢�"></el-option> + </el-select> + </el-col> + </el-row> + <el-row style="width: 100%; margin-top: 8px"> + <el-col + :span="24" + style="display: flex; align-items: center; justify-content: end" + > + <el-button size="small" type="danger" @click="clearProduct(1)" + >閲嶇疆鍗曚环</el-button + > + <el-button size="small" type="danger" @click="clearProduct(2)" + >閲嶇疆宸ユ椂绯绘暟</el-button + > + <el-button + size="small" + type="primary" + @click="sectionUp(moreSelects)" + >璁剧疆鍖洪棿</el-button + > + <el-button size="small" @click="moreEdit = false" + >鍙� 娑�</el-button + > + <el-button + :loading="moreEditLoad" + size="small" + type="primary" + @click="subMoreEdit" + >淇� 瀛�</el-button + > + </el-col> + </el-row> + </div> + </div> + <div v-loading="productTableLoading0" style="flex: 1; overflow-y: auto"> + <el-table + ref="productTable0" + :data="productList0" + :fit="true" + :row-key="(row) => row.id" + border + header-row-class-name="header-class" + height="96%" + highlight-current-row + stripe + style="width: 100%" + tooltip-effect="dark" + @select="handleSelectionChange0" + @select-all="handleSelectAll0" + @filter-change="filterHandler" + > + <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 + :filter-multiple="false" + :filters="filters0" + column-key="inspectionItem" + filter-placement="bottom-start" + label="妫�楠岄」" + min-width="140" + prop="inspectionItem" + show-overflow-tooltip + ></el-table-column> + <el-table-column + :filter-multiple="false" + :filters="filters1" + column-key="inspectionItemSubclass" + filter-placement="bottom-start" + label="妫�楠岄」瀛愰」" + min-width="140" + prop="inspectionItemSubclass" + show-overflow-tooltip + ></el-table-column> + <el-table-column + :filter-multiple="false" + :filters="filters" + column-key="sonLaboratory" + filter-placement="bottom-start" + label="瀛愬疄楠屽" + prop="sonLaboratory" + show-overflow-tooltip + width="130" + ></el-table-column> + <el-table-column + label="瑕佹眰鍊�" + min-width="200px" + prop="ask" + ></el-table-column> + <el-table-column + label="瑕佹眰鎻忚堪" + min-width="220px" + prop="tell" + ></el-table-column> + <el-table-column + label="璇曢獙鏂规硶" + prop="methodS" + width="200" + ></el-table-column> + <el-table-column + label="鏉′欢" + prop="radius" + width="200" + ></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" + ></el-table-column> + <el-table-column + label="宸ユ椂绯绘暟" + prop="manHour" + width="120" + ></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"> + {{ + templateList.find((item) => item.id == scope.row.templateId) + ? templateList.find( + (item) => item.id == scope.row.templateId + ).name + : "" + }} + </template> + </el-table-column> + <el-table-column + label="鍖洪棿" + prop="section" + show-overflow-tooltip + width="120" + ></el-table-column> + </el-table> + <el-pagination + :current-page="currentPage0" + :page-size="100" + :total="total0" + layout="total, prev, pager, next, jumper" + style="position: absolute; right: 16px; bottom: 4px" + @current-change="handleCurrentChange0" + > + </el-pagination> + </div> + </div> + </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-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> + </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> + </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> + </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> + </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> + </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> + </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> + </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> + </span> + </el-dialog> + <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px"> + <div style="margin: 0 auto"> + <el-upload + ref="upload" + :action=" + VUE_APP_BASE_API + '/standardTree/inExcelOfTree/' + isEquipment + " + :auto-upload="false" + :file-list="fileList" + :headers="token" + :limit="1" + :on-change="beforeUpload" + :on-error="onError" + :on-success="onSuccess" + accept=".xlsx" + drag + name="file" + > + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="uploadDia = false">鍙� 娑�</el-button> + <el-button :loading="uploading" type="primary" @click="submitUpload()" + >涓� 浼�</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> --> + </div> +</template> + +<script> +import Sortable from "sortablejs"; +import draggable from "vuedraggable"; +import { + updateTreeSort, + resetTreeDragBatch, + delStandardTree, + selectStandardTreeList, + obtainItemParameterList, + selectTestObjectByName, + selectStandardMethods, + addStandardMethodList, + addStandardTree, + updateStandardTree, + selectsStandardMethodByFLSSM, + upStandardProductList, + delStandardMethodByFLSSM, + delStandardProductByIds, + addStandardProduct, + selectStandardProductListByMethodId, + updateSection, + upStandardProducts, + getStandardTemplate, + selectStandardProductByMethodId, + selectStandardProductEnumByMethodId, + resetTreeOfPrice, + resetTreeOfHour, +} from "@/api/standard/standardLibrary"; +import { checkPermi } from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟 +// import bindSupplierDensityDialogAsk from "../do/a5-capacity-scope/bindSupplierDensityDialogAsk.vue"; +// import BatchCopy from "../do/a5-capacity-scope/BatchCopy.vue"; +export default { + components: { + // BatchCopy, + // bindSupplierDensityDialogAsk, + draggable, + }, + dicts: ["sys_factory", "sys_sub_lab", "sys_samp_type"], + data() { + return { + tableKey: "productList", + search: null, + list: [], + selectTree: "", + factory: [], + addDia: false, + updateDia: false, // 淇敼鏍戝悕瀛楀脊妗� + oldModel: "", + addOb: { + factory: null, + laboratory: null, + sampleType: null, + sample: null, + model: null, + }, + laboratory: [], + addLoad: false, + updateLoad: false, + sampleType: [], + sample: [], + treeLoad: false, + addPower: false, + standardList: [], + standardEnum: [], + addStandardDia: false, + addLoad2: false, + productList: [], + productTableLoading: false, + tableLoad: false, + tableLoad2: false, + selects: [], + addProductDia: false, + productId: null, + addLoad3: false, + productEnum: [], + expandedKeys: [], + filters: [], + sectionUpDia: false, + sectionLoad: false, + sectionRow: null, + sectionList: [], + templateList: [], + total: 0, + currentPage: 1, + standardId: 0, + moreEdit: false, + moreEditLoad: false, + moreSelects: [], + total0: 0, + currentPage0: 1, + productList0: [], + moreInfo: { + ask: "", + tell: "", + methodS: "", + price: "", + manHour: "", + templateId: "", + state: null, + }, + methodList: [], + productTableLoading0: false, + filters0: [], + filters1: [], + pages: 1, + inspectionItem: null, + inspectionItemSubclass: null, + sonLaboratory: null, + uploadDia: false, + token: null, + fileList: [], + uploading: false, + isEquipment: true, + isHaveChildren: {}, + sortTable: null, + currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭� + bindSupplierDensityDialog: false, + isShowCopy: false, + batchCopyDia: false, + VUE_APP_BASE_API: process.env.VUE_APP_BASE_API, + }; + }, + watch: { + moreEdit(val) { + if (!val) { + this.$refs.productTable0.clearSelection(); + this.moreSelects = []; + this.currentPage0 = 1; + this.productList0 = []; + this.moreInfo = { + ask: "", + tell: "", + methodS: "", + price: "", + manHour: "", + templateId: "", + }; + } + }, + }, + mounted() { + this.selectEnumByCategoryForFactory(); + this.selectStandardTreeList(); + this.obtainItemParameterList(); + this.selectTestObjectByName(); + this.selectStandardMethods(); + this.selectEnumByCategoryForSonLaboratory(); + this.getStandardTemplate(); + this.selectStandardMethodsSec(); + this.token = { + token: sessionStorage.getItem("token"), + }; + }, + methods: { + checkPermi, + // 淇敼鏈�瀛愮骇鍚嶅瓧 + editTreeName(info) { + this.updateDia = true; + this.oldModel = info.label; + }, + // 鎷栨嫿鏃跺垽瀹氱洰鏍囪妭鐐硅兘鍚﹁鏀剧疆 + // 'prev'銆�'inner' 鍜� 'next'锛屽墠銆佹彃鍏ャ�佸悗 + allowDrop(draggingNode, dropNode, type) { + if (draggingNode.level !== 3) return; + if (draggingNode.data.level === dropNode.data.level) { + if (draggingNode.data.parentId === dropNode.data.parentId) { + return type === "prev" || type === "next"; + } else { + return false; + } + } else { + // 涓嶅悓绾ц繘琛屽鐞� + return false; + } + }, + // tree鎷栨嫿鎴愬姛瀹屾垚鏃惰Е鍙戠殑浜嬩欢 + handleDrop(draggingNode, dropNode, dropType, ev) { + try { + this.treeLoad = true; + updateTreeSort(this.list).then((res) => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛"); + } + this.treeLoad = false; + }); + } catch (e) { + this.treeLoad = false; + console.log("e----", e); + } + }, + rowDrop(methodId) { + const that = this; + const tbody = document.querySelector( + "#templateParamTable .el-table__body-wrapper tbody" + ); + if (!this.sortTable) { + this.sortTable = Sortable.create(tbody, { + animation: 200, //鍔ㄧ敾鏃堕暱 + handle: ".el-table__row", //鍙嫋鎷藉尯鍩焎lass + //鎷栨嫿涓簨浠� + onMove: ({ dragged, related }) => { + const oldRow = that.productList[dragged.rowIndex]; //鏃т綅缃暟鎹� + const newRow = that.productList[related.rowIndex]; //琚嫋鎷界殑鏂版暟鎹� + }, + //鎷栨嫿缁撴潫浜嬩欢 + onEnd: (evt) => { + const curRow = that.productList.splice(evt.oldIndex, 1)[0]; // 褰撳墠琚嫋鎷界殑淇℃伅 + that.productList.splice(evt.newIndex, 0, curRow); + let arr = []; + this.productList.forEach((item, index) => { + const obj = Object.assign({ + sort: index, + id: item.id, + }); + arr.push(obj); + }); + this.productTableLoading = true; + // 鎷栨嫿瀹屾垚鍚庝紶缁欏悗绔繚瀛樻暟鎹� + resetTreeDragBatch({ params: arr }).then((res) => { + if (res.code === 200) { + this.$message.success("淇濆瓨鎴愬姛"); + } + this.productTableLoading = false; + }); + }, + }); + } + }, + hasChildWithId(nodes, name) { + for (let node of nodes) { + const comName = node.label + node.code; + if (comName == name) { + //鍒ゆ柇閫掑綊缁撴潫鏉′欢 + this.isHaveChildren = node; + return node; + } else if (node.children && node.children.length > 0) { + //鍒ゆ柇children鏄惁鏈夋暟鎹� + this.hasChildWithId(node.children, name); //閫掑綊璋冪敤 + } + } + }, + filterNode(value, data) { + if (!value) return true; + return data.label.indexOf(value) !== -1; + }, + searchFilter() { + this.$refs.tree.filter(this.search); + }, + refresh() { + this.upIndex++; + }, + handleNodeClick(val, node, el) { + //鏍戠殑鍊� + if (node.childNodes.length === 0) { + this.isShowCopy = true; + } else { + this.isShowCopy = false; + } + 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.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; + } + this.getNodeParent(val.parent); + } + }, + remove(node, data) { + this.$confirm("鏄惁鍒犻櫎璇ュ眰绾�", "鎻愮ず", { + type: "error", + }) + .then(() => { + // this.treeLoad = true + 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 = []; + }); + }) + .catch((e) => {}); + }, + deleteStandard(arr, label) { + arr.forEach((item, index) => { + if (item.label == label) { + arr.splice(index, 1); + } else { + 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) => { + this.factory = response.msg; + }); + }, + selectEnumByCategoryForSonLaboratory() { + let arr = []; + this.getConfigKey("sys_sub_lab").then((response) => { + arr = response.msg; + }); + arr.forEach((a) => { + this.filters.push({ + text: a.label, + value: a.value, + }); + }); + }, + selectEnumByCategoryForsampleType() { + this.getConfigKey("sys_samp_type").then((response) => { + this.sampleType = response.msg; + }); + }, + selectStandardTreeList() { + this.treeLoad = true; + selectStandardTreeList().then((res) => { + this.list = res.data; + this.list.forEach((a) => { + this.expandedKeys.push(a.label); + }); + this.treeLoad = false; + }); + }, + obtainItemParameterList() { + obtainItemParameterList().then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.laboratoryName, + value: a.laboratoryName, + }); + }); + this.laboratory = data; + }); + }, + selectTestObjectByName() { + selectTestObjectByName().then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.specimenName, + value: a.specimenName, + }); + }); + this.sampleType = data; + }); + }, + selectStandardMethods() { + selectStandardMethods().then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.name, + value: a.id, + }); + }); + 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(); + }); + }, + // 鎻愪氦鍒嗙被娣诲姞 + addStandardTree() { + if (this.addOb.sampleType == null || this.addOb.sampleType == "") { + this.$message.error("瀵硅薄涓嶅瓨鍦�"); + return; + } + if (this.addOb.model == null || this.addOb.model == "") { + 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; + }); + }, + // 淇敼鍨嬪彿 + updateStandardTree() { + if (this.addOb.sampleType == null || this.addOb.sampleType == "") { + this.$message.error("瀵硅薄涓嶅瓨鍦�"); + return; + } + if (this.addOb.model == null || this.addOb.model == "") { + 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; + }); + }, + selectsStandardMethodByFLSSM() { + this.tableLoad = true; + selectsStandardMethodByFLSSM({ + tree: this.selectTree, + }).then((res) => { + this.tableLoad = false; + this.standardList = res.data.standardMethodList; + if (this.standardList && this.standardList.length > 0) { + this.$refs.standard.setCurrentRow(this.standardList[0]); + this.rowClick(this.standardList[0]); + } else { + this.productList = []; + } + }); + }, + upStandardProductList(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + ask: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + upStandardProductListOfTell(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + tell: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + // 鏍囧噯搴撻�夋嫨瀹為獙鏂规硶鐨勫洖璋� + upStandardProductListOfMethodS(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + methodS: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + // 鏍囧噯搴撻�夋嫨鏉′欢鐨勫洖璋� + upStandardProductListOfRadius(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + radius: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + upStandardProductListOfPrice(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + price: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + upStandardProductListOfManHour(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + manHour: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + upStandardProductListOfTemplate(value, index) { + upStandardProductList({ + str: JSON.stringify({ + id: index, + templateId: value, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + }); + }, + 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 = []; + val.forEach((a) => { + 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( + (item) => item.id == this.standardId + ); + if (index > -1) { + this.rowClick(this.standardList[index]); + } + }, + rowClick(row, column, event) { + 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.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); + }); + }); + }, + toggleSelection(row) { + this.$refs.productTable.toggleRowSelection(row, true); + }, + tableRowClassName({ row, rowIndex }) { + if (row.state === 0) { + return "warning-row"; + } + return ""; + }, + upProductSelect(selection, row) { + row.state = row.state == 1 ? 0 : 1; + upStandardProductList({ + str: JSON.stringify({ + id: row.id, + state: row.state, + }), + }).then((res) => { + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + // this.$message.success('宸蹭繚瀛�') + }); + }, + filterHandler(value) { + for (let column in value) { + if (value[column].length === 0) { + if (column === "inspectionItem") { + this.inspectionItem = null; + } else if (column === "inspectionItemSubclass") { + this.inspectionItemSubclass = null; + } else if (column === "sonLaboratory") { + this.sonLaboratory = null; + } + } else { + if (column === "inspectionItem") { + this.inspectionItem = value[column][0]; + } else if (column === "inspectionItemSubclass") { + this.inspectionItemSubclass = value[column][0]; + } else if (column === "sonLaboratory") { + this.sonLaboratory = value[column][0]; + } + } + this.getList(); + } + }, + handleAll(e) { + if (e.length > 0) { + this.productList.map((m) => { + m.state = 0; + this.upProductSelect(null, m); + return m; + }); + } else { + this.productList.map((m) => { + m.state = 1; + this.upProductSelect(null, m); + return m; + }); + } + }, + // 璁剧疆鍖洪棿 + sectionUp(row) { + if (Array.isArray(row)) { + // 鍊兼槸涓�涓暟缁� + if (row.length === 0) { + return this.$message.error("璇烽�夋嫨妫�楠岄」"); + } + this.sectionRow = {}; + this.sectionUpDia = true; + this.sectionList = []; + } else { + // 鍊兼槸涓�涓璞� + this.sectionRow = row; + this.sectionUpDia = true; + this.sectionList = []; + if (this.sectionRow.section != null && this.sectionRow.section != "") { + JSON.parse(this.sectionRow.section).forEach((a, ai) => { + if (this.sectionRow.cores !== null) { + this.sectionList.push({ + thing: a, + ask: JSON.parse(this.sectionRow.ask)[ai], + tell: JSON.parse(this.sectionRow.tell)[ai], + // price: JSON.parse(this.sectionRow.price)[ai], + // manHour: JSON.parse(this.sectionRow.manHour)[ai], + cores: JSON.parse(this.sectionRow.cores)[ai], + conductorMaterial: + this.sectionRow.conductorMaterial && + JSON.parse(this.sectionRow.conductorMaterial)[ai], + conductorType: + this.sectionRow.conductorType && + JSON.parse(this.sectionRow.conductorType)[ai], + }); + } else { + this.sectionList.push({ + thing: a, + ask: JSON.parse(this.sectionRow.ask)[ai], + tell: JSON.parse(this.sectionRow.tell)[ai], + // price: JSON.parse(this.sectionRow.price)[ai], + // manHour: JSON.parse(this.sectionRow.manHour)[ai], + conductorMaterial: + this.sectionRow.conductorMaterial && + JSON.parse(this.sectionRow.conductorMaterial)[ai], + conductorType: + this.sectionRow.conductorType && + JSON.parse(this.sectionRow.conductorType)[ai], + }); + } + }); + } + } + }, + // 鎻愪氦鍖洪棿鎵�濉殑鏁版嵁 + sectionLoadAdd() { + let sectionList = []; + let askList = []; + let tellList = []; + let priceList = []; + let manHourList = []; + let coresList = []; + let conductorMaterialList = []; + let conductorTypeList = []; + this.sectionList.forEach((a) => { + if (a.thing !== "") { + sectionList.push(a.thing); + askList.push(a.ask); + tellList.push(a.tell); + // priceList.push(a.price) + // manHourList.push(a.manHour) + coresList.push(a.cores); + conductorMaterialList.push(a.conductorMaterial); + conductorTypeList.push(a.conductorType); + } + }); + if (sectionList.length === 0) { + this.sectionRow.section = null; + this.sectionRow.ask = null; + this.sectionRow.tell = null; + // this.sectionRow.price = null + // this.sectionRow.manHour = null + this.sectionRow.cores = null; + this.sectionRow.conductorMaterial = null; + this.sectionRow.conductorType = null; + } else { + this.sectionRow.section = JSON.stringify(sectionList); + this.sectionRow.ask = JSON.stringify(askList); + this.sectionRow.tell = JSON.stringify(tellList); + // this.sectionRow.price = JSON.stringify(priceList) + // this.sectionRow.manHour = JSON.stringify(manHourList) + this.sectionRow.cores = JSON.stringify(coresList); + this.sectionRow.conductorMaterial = JSON.stringify( + conductorMaterialList + ); + this.sectionRow.conductorType = JSON.stringify(conductorTypeList); + } + this.sectionLoad = true; + if (this.moreSelects.length === 0) { + updateSection({ + str: JSON.stringify({ + id: this.sectionRow.id, + section: this.sectionRow.section, + ask: this.sectionRow.ask, + tell: this.sectionRow.tell, + // price: this.sectionRow.price, + // manHour: this.sectionRow.manHour, + cores: this.sectionRow.cores, + conductorMaterial: this.sectionRow.conductorMaterial, + conductorType: this.sectionRow.conductorType, + }), + }).then((res) => { + this.sectionLoad = false; + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + this.sectionUpDia = false; + }); + } else { + upStandardProducts({ + ids: JSON.stringify(this.moreSelects.map((a) => a.id)), + standardProductList: { + section: this.sectionRow.section, + ask: this.sectionRow.ask, + tell: this.sectionRow.tell, + // price: this.sectionRow.price, + // manHour: this.sectionRow.manHour, + cores: this.sectionRow.cores, + conductorMaterial: this.sectionRow.conductorMaterial, + conductorType: this.sectionRow.conductorType, + }, + }).then((res) => { + this.sectionLoad = false; + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + this.sectionUpDia = false; + this.currentPage0 = 1; + this.getList(); + this.rowClick({ + id: this.standardId, + }); + }); + } + }, + bindSupplierDensitySecond(row) { + this.bindSupplierDensity(row); + }, + // 鎵撳紑鍘傚缁戝畾寮规 + bindSupplierDensity(row) { + this.currentSupplierDensityRow = row; + this.bindSupplierDensityDialog = true; + }, + closeBindSupplierDensityDialog() { + this.bindSupplierDensityDialog = false; + }, + getStandardTemplate() { + getStandardTemplate().then((res) => { + this.templateList = res.data; + }); + }, + 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; + }); + }, + openCopyDia() { + this.batchCopyDia = true; + this.$nextTick(() => { + this.$refs.BatchCopy.getList(); + }); + }, + async handleMore() { + if ( + (!this.standardId && this.standardId != 0) || + this.standardList.length == 0 + ) { + return this.$message.error("璇烽�夋嫨瀹為獙瀹ゃ�佹牱鍝�"); + } + await this.getList(); + this.moreEdit = true; + }, + selectStandardMethodsSec() { + selectStandardMethods().then((res) => { + let data = []; + res.data.forEach((a) => { + data.push({ + label: a.code, + value: a.code, + }); + }); + this.methodList = data; + }); + }, + subMoreEdit() { + if (this.moreSelects.length === 0) { + return this.$message.error("璇烽�夋嫨妫�楠岄」"); + } + this.moreEditLoad = true; + for (let a in this.moreInfo) { + if (this.moreInfo[a] == "") { + delete this.moreInfo[a]; + } + } + upStandardProducts({ + ids: JSON.stringify(this.moreSelects.map((a) => a.id)), + standardProductList: this.moreInfo, + }).then((res) => { + this.moreEditLoad = false; + if (res.code == 201) { + this.$message.error("鏈繚瀛�"); + return; + } + this.$message.success("宸蹭繚瀛�"); + this.currentPage0 = 1; + this.getList(); + this.rowClick({ + id: this.standardId, + }); + }); + }, + handleSelectAll0(rows) { + if (rows.length) { + rows.forEach((a) => { + if (!this.moreSelects.find((b) => a.id === b.id)) { + this.moreSelects.push(a); + } + }); + } else { + this.productList0.forEach((a) => { + this.moreSelects = this.moreSelects.filter((b) => b.id != a.id); + }); + } + }, + handleSelectionChange0(val, row) { + if (this.moreSelects.find((a) => a.id === row.id)) { + this.moreSelects = this.moreSelects.filter((a) => a.id != row.id); + } else { + this.moreSelects.push(row); + } + }, + getList() { + this.productTableLoading0 = true; + this.getItemEnum(); + selectStandardProductByMethodId({ + id: this.standardId, + tree: this.selectTree, + page: this.currentPage0, + laboratory: this.sonLaboratory, + items: this.inspectionItemSubclass, + item: this.inspectionItem, + }).then((res) => { + this.productList0 = res.data.records; + this.total0 = res.data.total; + this.productTableLoading0 = false; + this.page = res.data.pages; + this.$nextTick(() => { + this.productList0.forEach((a, i) => { + if (this.moreSelects.find((b) => a.id == b.id)) { + this.$refs.productTable0.toggleRowSelection( + this.productList0[i], + true + ); + } + }); + }); + }); + }, + handleCurrentChange0(e) { + this.currentPage0 = e; + this.getList(); + }, + getItemEnum() { + selectStandardProductEnumByMethodId({ + id: this.standardId, + tree: this.selectTree, + item: this.inspectionItem, + }).then((res) => { + this.filters0 = []; + this.filters1 = []; + res.data.item.forEach((a) => { + this.filters0.push({ + text: a.inspectionItem, + value: a.inspectionItem, + }); + }); + res.data.items.forEach((a) => { + if (a != null) { + this.filters1.push({ + text: a.inspectionItemSubclass, + value: a.inspectionItemSubclass, + }); + } + }); + }); + }, + beforeUpload(file, fileList) { + if ( + file.raw.type != + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + ) { + this.$message.error("涓婁紶鏂囦欢鏍煎紡涓嶆纭�"); + this.$refs.upload.clearFiles(); + return false; + } + }, + submitUpload() { + if (this.$refs.upload.uploadFiles.length == 0) { + this.$message.error("鏈�夋嫨鏂囦欢"); + return; + } + this.uploading = true; + this.$refs.upload.submit(); + }, + onSuccess(response, file, fileList) { + this.$refs.upload.clearFiles(); + this.uploadDia = false; + this.uploading = false; + if (response.code == 201) { + this.$message.error(response.message); + return; + } + this.$message.success("涓婁紶鎴愬姛"); + this.standardList = []; + this.productList = []; + this.selectStandardTreeList(); + }, + onError(err, file, fileList) { + this.$message.error("涓婁紶澶辫触"); + this.$refs.upload.clearFiles(); + this.uploading = false; + }, + clearProduct(type) { + this.$confirm("鏄惁娓呯┖?", "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + if (type === 1) { + resetTreeOfPrice({ + tree: this.selectTree, + standardId: this.standardId, + }).then((res) => { + if (res.code == 201) { + return; + } + this.$message.success("宸叉竻绌�"); + this.currentPage0 = 1; + this.getList(); + this.rowClick({ + id: this.standardId, + }); + }); + } else if (type === 2) { + resetTreeOfHour({ + tree: this.selectTree, + standardId: this.standardId, + }).then((res) => { + if (res.code == 201) { + return; + } + this.$message.success("宸叉竻绌�"); + this.currentPage0 = 1; + this.getList(); + this.rowClick({ + id: this.standardId, + }); + }); + } + }) + .catch(() => {}); + }, + }, +}; +</script> diff --git a/vue.config.js b/vue.config.js index 1b446d0..159f836 100644 --- a/vue.config.js +++ b/vue.config.js @@ -36,7 +36,7 @@ proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://192.168.1.36:8080`, + target: `http://192.168.1.36:8002`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' -- Gitblit v1.9.3