From b0f1b188a9c5a56df39bb957e8c9373ee126e07a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 06 三月 2025 15:05:32 +0800
Subject: [PATCH] 标准库重新搬迁
---
src/views/standard/standardLibrary/index.vue | 1432 +++++++++++++++++++++++++++++++++++------------------------
1 files changed, 844 insertions(+), 588 deletions(-)
diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
index ce73f83..2f66f8a 100644
--- a/src/views/standard/standardLibrary/index.vue
+++ b/src/views/standard/standardLibrary/index.vue
@@ -27,16 +27,6 @@
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;
@@ -129,6 +119,10 @@
background: rgba(0, 0, 0, 0.05) !important;
}
+>>>.is-disabled .el-textarea__inner {
+ background: rgba(0, 0, 0, 0.05) !important;
+}
+
>>>.el-table__body-wrapper::-webkit-scrollbar {
height: 14px;
/* 璁剧疆婊氬姩鏉″搴� */
@@ -192,24 +186,23 @@
<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 placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" suffix-icon="el-icon-search" v-model="search" size="small"
+ style="margin-bottom: 5px" clearable @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 :span="4" style="text-align: center; line-height: 30px" v-if="addPower">
+ <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button>
</el-col>
</el-row>
- <el-tree ref="tree" v-loading="treeLoad" :data="list" :default-expanded-keys="expandedKeys"
- :filter-node-method="filterNode" :props="{ children: 'children', label: 'label' }" highlight-current
- node-key="label" style="
+ <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label"
+ :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current v-loading="treeLoad"
+ :expand-on-click-node="false" :default-expanded-keys="expandedKeys" style="
height: calc(100% - 30px);
overflow-y: scroll;
scrollbar-width: none;
- " @node-click="handleNodeClick">
- <div slot-scope="{ node, data }" class="custom-tree-node">
+ ">
+ <div class="custom-tree-node" slot-scope="{ node, data }">
<el-row style="width: 100%">
- <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
+ <el-col :span="21" :class="{ sort: node.level > 3 }" :title="data.label" style="text-align: left">
<span>
<i :class="`node_i ${data.children != undefined
? data.code === '[1]'
@@ -220,21 +213,11 @@
{{ data.label }}
</span>
</el-col>
- <el-col v-if="
- checkPermi(['standard:standardLibrary:delStandardTree']) &&
+ <el-col :span="2" style="text-align: right" v-if="
(node.data.children === null ||
node.data.children === undefined)
- " :span="2" style="text-align: right">
- <el-button size="mini" type="text" @click.stop="editTreeName(node.data)">
- <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-button type="text" size="mini" @click.stop="remove(node, data)">
<i class="el-icon-delete"></i>
</el-button>
</el-col>
@@ -244,213 +227,315 @@
</div>
<div class="right">
<el-row class="title" style="width: 100%">
- <el-col :span="24" style="font-size: 14px; color: #999">{{
+ <el-col :span="20" style="font-size: 14px; color: #999">{{
selectTree
}}</el-col>
+ <el-button size="small" type="primary" style="position: absolute; right: 100px; top: 1px"
+ @click="uploadDia = true" v-if="inExcelOfTreePower">瀵煎叆</el-button>
+ <el-button size="small" type="primary" @click="handleMore" style="position: absolute; right: 5px; top: 1px"
+ v-if="upStandardProduct">鎵归噺缂栬緫</el-button>
</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-row class="standard_table" v-loading="tableLoad">
+ <el-table class="el-table" :data="standardList" style="width: 100%; height: 220px !important" height="220"
+ tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard"
+ header-row-class-name="header-class">
+ <el-table-column prop="code" label="鏍囧噯缂栧彿" 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 prop="name" label="鏍囧噯鍚嶇О" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="remark" label="澶囨敞" 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-row class="product_table" v-loading="tableLoad2">
+ <el-table :data="productList" ref="productTable" style="width: 100%" height="100%" tooltip-effect="dark" stripe
+ :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
+ @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class">
<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"
+ <el-table-column prop="sample" label="浜у搧" min-width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column>
+ <!-- <el-table-column prop="inspectionItemClassify" label="妫�楠岄」绫诲瀷" width="120" show-overflow-tooltip></el-table-column> -->
+ <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140"
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">
+ <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px">
<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 size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable
+ @change="(value) => upStandardProductList(value, scope.row.id)" v-if="upStandardProduct" type="textarea"
+ :autosize="{ minRows: 1, maxRows: 3 }"></el-input>
<span v-else>{{ scope.row.ask }}</span>
</template>
</el-table-column>
- <el-table-column label="瑕佹眰鎻忚堪" min-width="220px" prop="tell">
+ <el-table-column prop="tell" label="瑕佹眰鎻忚堪" min-width="220px">
<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 size="small" placeholder="瑕佹眰鎻忚堪" v-model="scope.row.tell" clearable @change="(value) => upStandardProductListOfTell(value, scope.row.id)
+ " v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"></el-input>
<span v-else>{{ scope.row.ask }}</span>
</template>
</el-table-column>
- <el-table-column label="璇曢獙鏂规硶" prop="method" width="200">
+ <el-table-column prop="method" label="璇曢獙鏂规硶" 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-model="scope.row.methodS" size="small" placeholder="璇曢獙鏂规硶" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
+ " v-if="upStandardProduct">
+ <el-option v-for="(a, i) in 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 prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="price" label="鍗曚环(鍏�)" width="120">
<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>
- <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(['standard:standardLibrary:upStandardProduct'])
- " v-model="scope.row.price" placeholder="鍗曚环(鍏�)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
- ">
+ <el-input v-model="scope.row.price" size="small" placeholder="鍗曚环(鍏�)" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
+ " v-if="upStandardProduct">
</el-input>
<span v-else>{{ scope.row.price }}</span>
</template>
</el-table-column>
- <el-table-column label="宸ユ椂绯绘暟" prop="manHour" width="120">
+ <el-table-column prop="manHour" label="宸ユ椂绯绘暟" 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-model="scope.row.manHour" size="small" placeholder="宸ユ椂绯绘暟" @change="(value) => upStandardProductListOfManHour(value, scope.row.id)
+ " v-if="upStandardProduct">
</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">
+ <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="templateId" label="妯℃澘" 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-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" @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="160"></el-table-column>
- <el-table-column label="鎿嶄綔" prop="section" width="120">
+ <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="section" label="鎿嶄綔" width="120">
<template slot-scope="scope">
- <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
- ">鍖洪棿璁剧疆</el-button>
+ <el-button type="text" @click="sectionUp(scope.row)">鍖洪棿璁剧疆</el-button>
</template>
</el-table-column>
</el-table>
- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total"
- style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange">
+ <el-pagination style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange"
+ :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total">
</el-pagination>
- <!-- <p style="text-align: right;margin-right: 20px;color: #333;">鍏眥{ total }}鏉�</p> -->
</el-row>
</div>
-
- <el-dialog :visible.sync="addDia" title="鍒嗙被娣诲姞" width="400px">
+ <el-dialog title="鍒嗙被娣诲姞" :visible.sync="addDia" width="400px">
<div class="body">
+ <!-- <el-row style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;">宸ュ巶锛�</el-col>
+ <el-col :span="16" :offset="1">
+ <el-input size="small" readonly v-model="addOb.factory"></el-input>
+ </el-col>
+ </el-row>
+ <el-row style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;">瀹為獙瀹わ細</el-col>
+ <el-col :span="16" :offset="1">
+ <el-input size="small" readonly v-model="addOb.laboratory"></el-input>
+ </el-col>
+ </el-row>
+ <el-row style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;">鏍峰搧澶х被锛�</el-col>
+ <el-col :span="16" :offset="1">
+ <el-input size="small" readonly v-model="addOb.sampleType"></el-input>
+ </el-col>
+ </el-row>
+ <el-row style="line-height: 50px;">
+ <el-col :span="6" style="text-align: right;">鏍峰搧鍚嶇О锛�</el-col>
+ <el-col :span="16" :offset="1">
+ <el-input v-model="addOb.sample" readonly size="small"></el-input>
+ </el-col>
+ </el-row> -->
<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"
+ <el-col :span="16" :offset="1">
+ <el-input v-model="addOb.model" placeholder="璇疯緭鍏ュ瀷鍙�" clearable 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>
+ <el-button type="primary" @click="addStandardTree" :loading="addLoad">纭� 瀹�</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>
+ <el-dialog title="鎵归噺缂栬緫" top="5vh" :visible.sync="moreEdit" width="90%" class="more-edit">
+ <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 size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length == 0"></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 size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"
+ v-model="moreInfo.tell" :disabled="moreSelects.length == 0"></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" size="small" filterable style="width: 100%"
+ :disabled="moreSelects.length == 0" clearable>
+ <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 size="small" v-model="moreInfo.price" clearable
+ :disabled="moreSelects.length == 0"></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 size="small" v-model="moreInfo.manHour" clearable
+ :disabled="moreSelects.length == 0"></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" size="small" filterable placeholder="妯℃澘" style="width: 100%"
+ :disabled="moreSelects.length == 0">
+ <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" size="small" filterable placeholder="鏄惁鍚敤" style="width: 100%"
+ :disabled="moreSelects.length == 0" clearable>
+ <el-option label="鍚敤" :value="1"></el-option>
+ <el-option label="涓嶅惎鐢�" :value="0"></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 @click="clearProduct(1)" size="small" type="danger">閲嶇疆鍗曚环</el-button>
+ <el-button @click="clearProduct(2)" size="small" type="danger">閲嶇疆宸ユ椂绯绘暟</el-button>
+ <el-button type="primary" size="small" @click="sectionUp(moreSelects)">璁剧疆鍖洪棿</el-button>
+ <el-button @click="moreEdit = false" size="small">鍙� 娑�</el-button>
+ <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">淇� 瀛�</el-button>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ <div style="flex: 1; overflow-y: auto" v-loading="productTableLoading0">
+ <el-table :data="productList0" ref="productTable0" style="width: 100%" height="96%" tooltip-effect="dark"
+ stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0"
+ header-row-class-name="header-class" :row-key="(row) => row.id" @filter-change="filterHandler"
+ highlight-current-row>
+ <el-table-column type="selection" width="50"> </el-table-column>
+ <el-table-column prop="sample" label="浜у搧" min-width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip :filters="filters0"
+ :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column>
+ <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip
+ :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass"
+ filter-placement="bottom-start"></el-table-column>
+ <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip
+ :filters="dict.type.sys_sub_lab" :filter-multiple="false" column-key="sonLaboratory"
+ filter-placement="bottom-start"></el-table-column>
+ <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px"></el-table-column>
+ <el-table-column prop="tell" label="瑕佹眰鎻忚堪" min-width="220px"></el-table-column>
+ <el-table-column prop="methodS" label="璇曢獙鏂规硶" width="200"></el-table-column>
+ <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="price" label="鍗曚环(鍏�)" width="120"></el-table-column>
+ <el-table-column prop="manHour" label="宸ユ椂绯绘暟" width="120"></el-table-column>
+ <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="templateId" label="妯℃澘" 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 prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column>
+ </el-table>
+ <el-pagination style="position: absolute; right: 16px; bottom: 4px" @current-change="handleCurrentChange0"
+ :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0">
+ </el-pagination>
+ </div>
</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 :close-on-click-modal="false" :visible.sync="sectionUpDia" title="鍖洪棿璁剧疆" width="80%">
+ <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false">
+ <div style="width: 100%; text-align: left">
+ <el-button id="copyBtn" v-if="sectionList.length > 0" :data-clipboard-text="JSON.stringify(sectionList)"
+ type="primary" size="mini" @click="copySectionConfig">澶嶅埗鍖洪棿璁剧疆</el-button>
+ <el-button type="primary" size="mini" @click="openImportSectionsConfig">瀵煎叆鍖洪棿璁剧疆</el-button>
+ <el-dialog :visible.sync="importSectionsConfigDia" width="30%" title="瀵煎叆鍖洪棿閰嶇疆">
+ <el-input type="textarea" :rows="3" v-model="sectionsConfigText"></el-input>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="importSectionsConfigDia = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="confirmImportConfig">纭</el-button>
+ </span>
+ </el-dialog>
+ </div>
<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 :data="sectionList" border style="width: 100%" height="350px">
+ <el-table-column type="index" label="搴忓彿" width="70" align="center">
</el-table-column>
- <el-table-column align="center" label="鍖洪棿">
+ <el-table-column label="鍖洪棿" align="center">
<template slot-scope="scope">
- <el-input v-model="scope.row.thing" clearable placeholder="鍖洪棿" size="small"></el-input>
+ <el-input size="small" v-model="scope.row.thing" clearable placeholder="鍖洪棿"></el-input>
</template>
</el-table-column>
- <el-table-column align="center" label="鑺暟">
+ <el-table-column label="瑕佹眰鍊�" align="center">
<template slot-scope="scope">
- <el-input v-model="scope.row.cores" clearable placeholder="鑺暟" size="small"></el-input>
+ <el-input size="small" v-model="scope.row.ask" clearable placeholder="瑕佹眰鍊�"></el-input>
</template>
</el-table-column>
- <el-table-column align="center" label="瑕佹眰鍊�">
+ <el-table-column label="瑕佹眰鎻忚堪" align="center">
<template slot-scope="scope">
- <el-input v-model="scope.row.ask" clearable placeholder="瑕佹眰鍊�" size="small"></el-input>
+ <el-input size="small" placeholder="瑕佹眰鎻忚堪" v-model="scope.row.tell" clearable type="textarea"
+ :autosize="{ minRows: 1, maxRows: 2 }"></el-input>
</template>
</el-table-column>
- <el-table-column align="center" label="瑕佹眰鎻忚堪">
+ <el-table-column label="鍗曚环" align="center" width="120">
<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 size="small" v-model="scope.row.price" clearable placeholder="鍗曚环"></el-input>
</template>
</el-table-column>
- <!-- <el-table-column align="center" label="瀵间綋鏉愯川">
+ <el-table-column label="宸ユ椂绯绘暟" align="center" width="120">
<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>
+ <el-input size="small" v-model="scope.row.manHour" clearable placeholder="宸ユ椂绯绘暟"></el-input>
</template>
</el-table-column>
- <el-table-column align="center" label="宸ユ椂绯绘暟" width="120">
+ <el-table-column label="鎿嶄綔" width="70" align="center">
<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"
+ <el-button size="mini" type="danger" icon="el-icon-minus" circle
@click="sectionList.splice(scope.$index, 1)"></el-button>
</template>
</el-table-column>
@@ -458,51 +543,64 @@
</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 type="primary" @click="sectionLoadAdd" :loading="sectionLoad">淇� 瀛�</el-button>
+ <el-button type="primary" @click="
+ sectionList.push({
+ thing: '',
+ price: sectionRow.price,
+ manHour: sectionRow.manHour,
+ })
+ " icon="el-icon-plus"></el-button>
+ </span>
+ </el-dialog>
+ <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px">
+ <div style="margin: 0 auto">
+ <el-upload ref="upload" drag :action="javaApi + '/standardTree/inExcelOfTree' + '/' + 'false'
+ " :headers="uploadHeader" :file-list="fileList" name="file" :auto-upload="false" accept=".xlsx" :limit="1"
+ :on-change="beforeUpload" :on-success="onSuccess" :on-error="onError">
+ <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 type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
-import Sortable from "sortablejs";
-import draggable from "vuedraggable";
+import Clipboard from "../../../../public/js/clipboard.min.js";
import {
- updateTreeSort,
- resetTreeDragBatch,
delStandardTree,
selectStandardTreeList,
obtainItemParameterList,
selectTestObjectByName,
selectStandardMethods,
+ addStandardMethodList,
addStandardTree,
- updateStandardTree,
- selectsStandardMethodByFLSSM,
upStandardProductList,
+ delStandardMethodByFLSSM,
+ delStandardProductByIds,
selectStandardProductListByMethodId,
- updateSection,
- upStandardProducts,
getStandardTemplate,
- selectStandardProductByMethodId,
- selectStandardProductEnumByMethodId,
-} from "@/api/standard/standardLibrary";
+ resetTreeOfPrice,
+ resetTreeOfHour,
+ selectsStandardMethodByFLSSM,
+} from '@/api/standard/standardLibrary.js'
+
export default {
- name: 'StandardLibrary',
- components: {
- draggable,
- },
- dicts: ["sys_factory", "sys_sub_lab", "sys_samp_type"],
+ dicts: ['sys_sub_lab'],
data() {
return {
- tableKey: "productList",
+ importSectionsConfigDia: false,
+ sectionsConfigText: "", //瀵煎叆鐨勫尯闂撮厤缃枃鏈�
search: null,
list: [],
selectTree: "",
- factory: [],
+ // factory: [],
addDia: false,
- updateDia: false, // 淇敼鏍戝悕瀛楀脊妗�
- oldModel: "",
addOb: {
factory: null,
laboratory: null,
@@ -512,26 +610,30 @@
},
laboratory: [],
addLoad: false,
- updateLoad: false,
- sampleType: [],
+ // sampleType: [],
sample: [],
treeLoad: false,
- addPower: false,
+ addPower: true,
standardList: [],
standardEnum: [],
addStandardDia: false,
+ standardId: null,
+ addStandardMethod: true,
addLoad2: false,
productList: [],
- productTableLoading: false,
tableLoad: false,
tableLoad2: false,
+ upStandardProduct: false,
+ delStandardMethod: false,
selects: [],
+ delStandardProduct: false,
addProductDia: false,
productId: null,
+ addStandardProduct: false,
addLoad3: false,
productEnum: [],
expandedKeys: [],
- filters: [],
+ // filters: [],
sectionUpDia: false,
sectionLoad: false,
sectionRow: null,
@@ -540,9 +642,21 @@
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: [],
@@ -551,154 +665,104 @@
inspectionItem: null,
inspectionItemSubclass: null,
sonLaboratory: null,
- token: null,
+ uploadDia: false,
fileList: [],
+ inExcelOfTreePower: true,
uploading: false,
- isEquipment: true,
- isHaveChildren: {},
- sortTable: null,
- isShowCopy: false,
- VUE_APP_BASE_API: process.env.VUE_APP_BASE_API,
- moreSelects: [],
+ isEquipment: false,
};
+ },
+ 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.getPower();
+ // this.selectEnumByCategoryForFactory();
this.selectStandardTreeList();
this.obtainItemParameterList();
+ // this.selectEnumByCategoryForsampleType()
this.selectTestObjectByName();
this.selectStandardMethods();
- this.selectEnumByCategoryForSonLaboratory();
- this.selectEnumByCategoryForsampleType();
+ // this.selectEnumByCategoryForDevice();
+ // this.selectEnumByCategory();
+ // this.selectEnumByCategoryForValue();
+ // this.selectEnumByCategoryForSpecial();
+ // this.selectEnumByCategoryForInspectionValueType();
+ // this.selectEnumByCategoryForSonLaboratory();
this.getStandardTemplate();
- this.selectStandardMethodsSec();
- this.token = {
- token: sessionStorage.getItem("token"),
- };
+ this.selectStandardMethods();
},
methods: {
- // 淇敼鏈�瀛愮骇鍚嶅瓧
- 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("鎿嶄綔鎴愬姛");
+ confirmImportConfig() { },
+ openImportSectionsConfig() {
+ // this.importSectionsConfigDia = true
+ this.$confirm("纭瀵煎叆澶嶅埗鐨勫尯闂撮厤缃�?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ if (
+ this.sectionsConfigText == null ||
+ this.sectionsConfigText == "" ||
+ this.sectionsConfigText == undefined
+ ) {
+ this.$message.error("鏈瘑鍒埌鍓垏鏉跨殑鏈夋晥鏂囨湰");
+ return;
+ } else {
+ let parseConfig = JSON.parse(this.sectionsConfigText);
+ if (!Array.isArray(parseConfig)) {
+ this.$message.error("閿欒鐨勬暟鎹牸寮�");
+ return;
+ }
+ parseConfig.forEach((ele) => {
+ this.sectionList.push(ele);
+ });
+ this.$message.success("瀵煎叆鎴愬姛");
}
- this.treeLoad = false;
- });
- } catch (e) {
- this.treeLoad = false;
- console.log("e----", e);
- }
+ })
+ .catch(() => { });
},
- 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;
- });
- },
- });
- }
+ //澶嶅埗鍖洪棿閰嶇疆
+ copySectionConfig() {
+ // 鍒涘缓 clipboard 瀹炰緥,鑾峰彇鎸夐挳鍏冪礌
+ let clipboard = new Clipboard("#copyBtn");
+ /* 娉ㄦ剰姝や簨浠剁洃鍚槸寮傛鐨� */
+ clipboard.on("success", (e) => {
+ this.sectionsConfigText = e.text;
+ e.clearSelection();
+ // 閲婃斁鍐呭瓨
+ clipboard.destroy();
+ // 澶嶅埗鎴愬姛鎻愮ず
+ this.$message.success("宸插鍒跺埌鍓创鏉�");
+ });
+ // 澶嶅埗澶辫触
+ clipboard.on("error", (e) => {
+ // 閲婃斁鍐呭瓨
+ clipboard.destroy();
+ // 澶嶅埗澶辫触鎻愮ず
+ this.$message.error("澶嶅埗澶辫触");
+ });
},
- 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;
},
- // 璋冪敤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);
},
@@ -707,11 +771,6 @@
},
handleNodeClick(val, node, el) {
//鏍戠殑鍊�
- if (node.childNodes.length === 0) {
- this.isShowCopy = true;
- } else {
- this.isShowCopy = false;
- }
this.total = 0;
this.currentPage = 1;
this.selectTree = "";
@@ -723,9 +782,7 @@
data2 += " - " + data[index];
}
this.selectTree = data2.replace(" - ", "");
- if (node.childNodes.length === 0) {
- this.selectsStandardMethodByFLSSM();
- }
+ this.selectsStandardMethodByFLSSM();
let trees = this.selectTree.split(" - ");
this.addOb.factory = trees[0];
this.addOb.laboratory = trees[1];
@@ -757,10 +814,12 @@
data2 += " - " + data[index];
}
this.selectTree = data2.replace(" - ", "");
- delStandardTree({ tree: this.selectTree }).then((res) => {
+ delStandardTree({ tree: this.selectTre }).then((res) => {
+ if (res.code == 201) return;
this.$message.success("宸插垹闄�");
let arr = this.selectTree.split(" - ");
this.deleteStandard(this.list, arr[arr.length - 1]);
+ // this.selectStandardTreeList()
this.selectTree = "";
this.standardList = [];
this.productList = [];
@@ -777,28 +836,85 @@
}
});
},
- 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;
- });
- },
+ // selectEnumByCategoryForFactory() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "宸ュ巶",
+ // })
+ // .then((res) => {
+ // this.factory = res.data;
+ // });
+ // },
+ // selectEnumByCategoryForSonLaboratory() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "瀛愬疄楠屽",
+ // })
+ // .then((res) => {
+ // this.factory = [];
+ // res.data.forEach((a) => {
+ // this.filters.push({
+ // text: a.label,
+ // value: a.value,
+ // });
+ // });
+ // });
+ // },
+ // selectEnumByCategoryForsampleType() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "鏍峰搧澶х被",
+ // })
+ // .then((res) => {
+ // this.sampleType = res.data;
+ // });
+ // },
+ // selectEnumByCategoryForDevice() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "璁惧鍒嗙被",
+ // })
+ // .then((res) => {
+ // this.componentData.tagField.deviceGroup.select = res.data;
+ // });
+ // },
+ // selectEnumByCategory() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "妫�楠岄」绫诲瀷",
+ // })
+ // .then((res) => {
+ // res.data[1].type = "info";
+ // this.componentData.tagField.inspectionItemType.select = res.data;
+ // });
+ // },
+ // selectEnumByCategoryForValue() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "鍙栧�肩被鍨�",
+ // })
+ // .then((res) => {
+ // this.componentData.tagField.valueType.select = res.data;
+ // });
+ // },
+ // selectEnumByCategoryForSpecial() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "鏄惁",
+ // })
+ // .then((res) => {
+ // this.componentData.tagField.bsm.select = res.data;
+ // });
+ // },
+ // selectEnumByCategoryForInspectionValueType() {
+ // this.$axios
+ // .post(this.$api.enums.selectEnumByCategory, {
+ // category: "妫�楠屽�肩被鍨�",
+ // })
+ // .then((res) => {
+ // this.componentData.tagField.inspectionValueType.select = res.data;
+ // });
+ // },
selectStandardTreeList() {
this.treeLoad = true;
selectStandardTreeList().then((res) => {
@@ -845,7 +961,22 @@
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("瀵硅薄涓嶅瓨鍦�");
@@ -856,74 +987,92 @@
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,
- });
+ 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;
+ this.$tab.refreshPage();
+
+ })
.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.$tab.refreshPage();
- // 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 = [];
+ })
+ .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 = [];
+ }
+ });
+ },
+ getPower() {
+ let power = JSON.parse(sessionStorage.getItem("power"));
+ let add = false;
+ let addStandardMethod = false;
+ let upStandardProduct = false;
+ let delStandardMethod = false;
+ let delStandardProduct = false;
+ let addStandardProduct = false;
+ let delStandardTree = false;
+ let inExcelOfTreePower = false;
+ for (var i = 0; i < power.length; i++) {
+ if (power[i].menuMethod == "addStandardTree") {
+ add = true;
}
- });
+ if (power[i].menuMethod == "addStandardMethodList") {
+ addStandardMethod = true;
+ }
+ if (power[i].menuMethod == "upStandardProductList") {
+ upStandardProduct = true;
+ }
+ if (power[i].menuMethod == "delStandardMethodByFLSSM") {
+ delStandardMethod = true;
+ }
+ if (power[i].menuMethod == "delStandardProductByIds") {
+ delStandardProduct = true;
+ }
+ if (power[i].menuMethod == "addStandardProduct") {
+ addStandardProduct = true;
+ }
+ if (power[i].menuMethod == "delStandardTree") {
+ delStandardTree = true;
+ }
+ if (power[i].menuMethod == "inExcelOfTree") {
+ inExcelOfTreePower = true;
+ }
+ }
+ this.addPower = add;
+ this.addStandardMethod = addStandardMethod;
+ this.upStandardProduct = upStandardProduct;
+ this.delStandardMethod = delStandardMethod;
+ this.delStandardProduct = delStandardProduct;
+ this.addStandardProduct = addStandardProduct;
+ this.delStandardTree = delStandardTree;
+ this.inExcelOfTreePower = inExcelOfTreePower;
},
upStandardProductList(value, index) {
upStandardProductList({
@@ -945,43 +1094,29 @@
id: index,
tell: value,
}),
- }).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
- this.$message.success("宸蹭繚瀛�");
- });
+ })
+ .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("宸蹭繚瀛�");
- });
+ })
+ .then((res) => {
+ if (res.code == 201) {
+ this.$message.error("鏈繚瀛�");
+ return;
+ }
+ // this.$message.success('宸蹭繚瀛�')
+ });
},
upStandardProductListOfPrice(value, index) {
upStandardProductList({
@@ -989,13 +1124,14 @@
id: index,
price: value,
}),
- }).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
- this.$message.success("宸蹭繚瀛�");
- });
+ })
+ .then((res) => {
+ if (res.code == 201) {
+ this.$message.error("鏈繚瀛�");
+ return;
+ }
+ // this.$message.success('宸蹭繚瀛�')
+ });
},
upStandardProductListOfManHour(value, index) {
upStandardProductList({
@@ -1003,13 +1139,14 @@
id: index,
manHour: value,
}),
- }).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
- this.$message.success("宸蹭繚瀛�");
- });
+ })
+ .then((res) => {
+ if (res.code == 201) {
+ this.$message.error("鏈繚瀛�");
+ return;
+ }
+ // this.$message.success('宸蹭繚瀛�')
+ });
},
upStandardProductListOfTemplate(value, index) {
upStandardProductList({
@@ -1017,13 +1154,32 @@
id: index,
templateId: value,
}),
- }).then((res) => {
- if (res.code == 201) {
- this.$message.error("鏈繚瀛�");
- return;
- }
- this.$message.success("宸蹭繚瀛�");
- });
+ })
+ .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 = [];
@@ -1031,15 +1187,59 @@
this.selects.push(a.id);
});
},
-
- refreshList() {
- const index = this.standardList.findIndex(
- (item) => item.id == this.standardId
- );
- if (index > -1) {
- this.rowClick(this.standardList[index]);
+ 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;
+ // this.$axios
+ // .post(this.$api.standardTree.addStandardProduct, {
+ // ids: JSON.stringify(select),
+ // tree: this.selectTree,
+ // })
+ // .then((res) => {
+ // if (res.code == 201) {
+ // return;
+ // }
+ // this.$message.success("娣诲姞鎴愬姛");
+ // this.selectsStandardMethodByFLSSM();
+ // });
+ // this.addProductDia = false;
+ // },
rowClick(row, column, event) {
this.currentPage = 1;
this.tableLoad2 = true;
@@ -1057,31 +1257,6 @@
});
}, 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) {
@@ -1145,7 +1320,6 @@
});
}
},
- // 璁剧疆鍖洪棿
sectionUp(row) {
if (Array.isArray(row)) {
// 鍊兼槸涓�涓暟缁�
@@ -1162,86 +1336,48 @@
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],
- });
- }
+ 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],
+ });
});
}
}
},
- // 鎻愪氦鍖洪棿鎵�濉殑鏁版嵁
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);
+ priceList.push(a.price);
+ manHourList.push(a.manHour);
}
});
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;
+ this.sectionRow.price = null;
+ this.sectionRow.manHour = 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.sectionRow.price = JSON.stringify(priceList);
+ this.sectionRow.manHour = JSON.stringify(manHourList);
}
this.sectionLoad = true;
if (this.moreSelects.length === 0) {
- updateSection({
+ upStandardProductList({
str: JSON.stringify({
id: this.sectionRow.id,
section: this.sectionRow.section,
@@ -1249,19 +1385,17 @@
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;
- });
+ })
+ .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)),
@@ -1271,9 +1405,6 @@
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;
@@ -1313,7 +1444,17 @@
this.tableLoad2 = false;
});
},
- selectStandardMethodsSec() {
+ async handleMore() {
+ if (
+ (!this.standardId && this.standardId != 0) ||
+ this.standardList.length == 0
+ ) {
+ return this.$message.error("璇烽�夋嫨瀹為獙瀹ゃ�佹牱鍝�");
+ }
+ await this.getList();
+ this.moreEdit = true;
+ },
+ selectStandardMethods() {
selectStandardMethods().then((res) => {
let data = [];
res.data.forEach((a) => {
@@ -1323,6 +1464,41 @@
});
});
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,
+ });
+ // this.moreInfo = {
+ // ask:'',
+ // tell:'',
+ // methodS:'',
+ // price:'',
+ // manHour:'',
+ // templateId:''
+ // }
});
},
handleSelectAll0(rows) {
@@ -1355,22 +1531,23 @@
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
- );
- }
+ })
+ .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;
@@ -1381,24 +1558,103 @@
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,
+ })
+ .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,
+ });
+ }
});
});
- 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(() => { });
},
},
};
--
Gitblit v1.9.3