From 6140eb0f56b7adae1d4e41dbd4a1ac582dd17d9b Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 12 三月 2025 11:23:29 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev
---
src/components/Table/lims-table.vue | 290 ++
src/api/cnas/resourceDemand/device.js | 45
src/api/system/user.js | 10
src/views/CNAS/resourceDemand/device/index.vue | 6
src/store/modules/user.js | 11
src/views/CNAS/resourceDemand/device/component/files.vue | 5
src/views/CNAS/resourceDemand/device/component/management.vue | 2022 +++++++++++++++----------
src/layout/components/Navbar.vue | 3
src/assets/styles/element-ui.scss | 46
src/layout/components/TagsView/index.vue | 245 +-
src/router/index.js | 9
src/api/standard/standardLibrary.js | 25
src/views/CNAS/resourceDemand/device/component/operationInstruction.vue | 19
src/views/CNAS/resourceDemand/device/component/device-overview.vue | 27
src/views/business/inspectionOrder/add.vue | 1770 +++++++++++++++-------
src/api/business/insBushing.js | 10
src/store/getters.js | 2
src/views/business/inspectionOrder/index.vue | 114
src/views/CNAS/resourceDemand/device/component/resource-reservation.vue | 48
19 files changed, 2,991 insertions(+), 1,716 deletions(-)
diff --git a/src/api/business/insBushing.js b/src/api/business/insBushing.js
new file mode 100644
index 0000000..73c0ab0
--- /dev/null
+++ b/src/api/business/insBushing.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 鏌ョ湅鎵�灞炲崟浣嶆楠屽崟
+export function selectBushingBySampleId(query) {
+ return request({
+ url: '/insBushing/selectBushingBySampleId',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/src/api/cnas/resourceDemand/device.js b/src/api/cnas/resourceDemand/device.js
index 8f66b90..08b9d6d 100644
--- a/src/api/cnas/resourceDemand/device.js
+++ b/src/api/cnas/resourceDemand/device.js
@@ -660,7 +660,7 @@
//鏂板璁惧妗f
export function addDocument(data) {
return request({
- url: "/deviceDocuments/addDocument",
+ url: "/documents/add",
method: "post",
data: data,
});
@@ -669,7 +669,7 @@
// 鑾峰彇鐩稿叧鏂囨。鏁版嵁鐨刟pi-鏇存柊
export function updateDocument(data) {
return request({
- url: "/deviceDocuments/updateDocument",
+ url: "/documents/updateDocument",
method: "post",
data: data,
});
@@ -678,7 +678,7 @@
//鍒犻櫎璁惧妗f
export function deleteDocumentById(query) {
return request({
- url: "/deviceDocuments/deleteDocumentById",
+ url: "/documents/delete",
method: "delete",
params: query,
});
@@ -814,9 +814,9 @@
}
//鏌ヨ璁惧妗f鍒楄〃
-export function getAllDocuments(query) {
+export function getListByDId(query) {
return request({
- url: `/deviceDocuments/getAllDocuments`,
+ url: '/documents/getListByDId',
method: "get",
params: query,
});
@@ -1198,11 +1198,18 @@
data: data,
});
}
-
+//浣滀笟鎸囧涔︽煡璇�
+export function pageByPageQueryOfHomeworkInstructions(query) {
+ return request({
+ url: "/instruction/pageByPageQueryOfHomeworkInstructions",
+ method: "get",
+ params: query,
+ });
+}
//浣滀笟鎸囧涔� 瀹℃壒
export function approvalOfHomeworkInstructionManual(data) {
return request({
- url: "/deviceInstruction/approvalOfHomeworkInstructionManual",
+ url: "/instruction/approvalOfHomeworkInstructionManual",
method: "post",
data: data,
});
@@ -1211,7 +1218,7 @@
//浣滀笟鎸囧涔� 鍒犻櫎
export function homeworkGuidebook(query) {
return request({
- url: "/deviceInstruction/homeworkGuidebook",
+ url: "/instruction/homeworkGuidebook",
method: "delete",
params: query,
});
@@ -1220,7 +1227,7 @@
//浣滀笟鎸囧涔� 缂栬緫鏌ヨ
export function homeworkGuidebookEditor(query) {
return request({
- url: "/deviceInstruction/homeworkGuidebookEditor",
+ url: "/instruction/homeworkGuidebookEditor",
method: "get",
params: query,
});
@@ -1229,7 +1236,7 @@
//浣滀笟鎸囧涔︽柊澧�
export function newHomeworkGuidebookAdded(data) {
return request({
- url: "/deviceInstruction/newHomeworkGuidebookAdded",
+ url: "/instruction/newHomeworkGuidebookAdded",
method: "post",
data: data,
});
@@ -1238,20 +1245,12 @@
//浣滀笟鎸囧涔﹀彈鎺ф枃浠跺垹闄�
export function deleteHomeworkGuidebook(query) {
return request({
- url: "/deviceInstruction/deleteHomeworkGuidebook",
+ url: "/instruction/deleteHomeworkGuidebook",
method: "delete",
params: query,
});
}
-//浣滀笟鎸囧涔� 鏌ヨ
-export function pageByPageQueryOfHomeworkInstructions(query) {
- return request({
- url: "/deviceInstruction/pageByPageQueryOfHomeworkInstructions",
- method: "get",
- params: query,
- });
-}
//璁惧棰勭害鎺ュ彛
export function reservationSelectDevice(query) {
return request({
@@ -1260,7 +1259,7 @@
params: query,
});
}
-//璁惧棰勭害鎺ュ彛
+//璁惧棰勭害鎺ュ彛 鍒犻櫎
export function reservationDelete(query) {
return request({
url: "/reservation/delete",
@@ -1268,7 +1267,7 @@
params: query,
});
}
-//璁惧棰勭害鎺ュ彛
+//璁惧棰勭害鎺ュ彛 淇濆瓨
export function reservationSave(query) {
return request({
url: "/reservation/save",
@@ -1284,10 +1283,10 @@
params: query,
});
}
-//璁惧棰勭害鎺ュ彛
+// 璁惧杩愯鎬昏-鏍规嵁id鑾峰彇璁惧鏁呴殰鏁版嵁
export function device(query) {
return request({
- url: "/api/device-faults/device",
+ url: "/deviceFaults/device",
method: "get",
params: query,
});
diff --git a/src/api/standard/standardLibrary.js b/src/api/standard/standardLibrary.js
index 7817c92..63752ea 100644
--- a/src/api/standard/standardLibrary.js
+++ b/src/api/standard/standardLibrary.js
@@ -99,6 +99,15 @@
});
}
+// 閫氳繃鏍囧噯鏍戞煡璇㈠搴旂殑妫�楠岄」鐩�
+export function selectStandardProductList(query) {
+ return request({
+ url: "/standardTree/selectStandardProductList",
+ method: "get",
+ params: query,
+ });
+}
+
// 鏌ヨ鍘熷璁板綍妯℃澘鏋氫妇
export function getStandardTemplate(query) {
return request({
@@ -134,3 +143,19 @@
params: query,
});
}
+
+// 鑾峰彇鏍囧噯鏍戜笅鏍囧噯鏂规硶鏋氫妇
+export function selectStandardMethodEnum() {
+ return request({
+ url: "/standardTree/selectStandardMethodEnum",
+ method: "get",
+ });
+}
+
+// 鑾峰彇鏍囧噯鏍�(妫�楠屼笅鍗�)
+export function selectStandardTreeList2() {
+ return request({
+ url: "/standardTree/selectStandardTreeList2",
+ method: "get",
+ });
+}
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 7579fd2..cb4750c 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -185,9 +185,17 @@
}
// 鑾峰彇褰撳墠鐧诲綍浜哄憳閮ㄩ棬
-export function selectUserDepartmentLimsName(query) {
+export function selectUserDepartmentLimsName() {
return request({
url: "/system/newUser/selectUserDepartmentLimsName",
method: "get",
});
}
+
+// 鑾峰彇瀹為獙瀹や笅鐨勬楠屽憳鍒楄〃
+export function getLaboratoryPersonList() {
+ return request({
+ url: "/system/newUser/getLaboratoryPersonList",
+ method: "get",
+ });
+}
diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss
index 363092a..c0bd317 100644
--- a/src/assets/styles/element-ui.scss
+++ b/src/assets/styles/element-ui.scss
@@ -89,4 +89,48 @@
> .el-submenu__title
.el-submenu__icon-arrow {
display: none;
-}
\ No newline at end of file
+}
+
+/* 鍏ㄥ眬琛ㄦ牸鏍峰紡 */
+.el-table th.el-table__cell,
+.has-gutter .el-table__cell {
+ background-color: #f0f1f5 !important;
+ color: #333;
+}
+
+/* 琛ㄦ牸琛岄�変腑鑳屾櫙鑹� */
+.el-table__body tr.current-row>td.el-table__cell,
+.el-table__body tr.selection-row>td.el-table__cell {
+ background-color: #c1ddf1;
+}
+
+.el-table__header .has-gutter .el-table__cell .cell {
+ font-size: 14px !important;
+ font-weight: 500;
+}
+
+.cell {
+ color: #333;
+ padding: 0 15px !important;
+ font-size: 12px;
+}
+
+.cell span {
+ font-size: 12px;
+ font-weight: 400;
+}
+
+.el-table .el-table__cell {
+ padding: 0 0;
+}
+
+.el-table .el-table__row {
+ height: 41px;
+}
+
+.el-table th.el-table__cell>.cell {
+ font-size: 14px;
+ font-weight: 400;
+ color: #333;
+ padding: 6px 15px !important;
+}
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index ad93b9e..2d5fce6 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -1,29 +1,85 @@
<template>
<div>
<!-- 琛ㄦ牸 -->
- <el-table ref="multipleTable" v-loading="tableLoading" :border="border" :data="tableData"
- :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" :height="height"
- :highlight-current-row="highlightCurrentRow" :row-class-name="rowClassName" :row-style="rowStyle"
- :row-key="rowKey" :span-method="spanMethod" stripe style="width: 100%" tooltip-effect="dark" @row-click="rowClick"
- @current-change="currentChange" @selection-change="handleSelectionChange" class="lims-table">
- <el-table-column align="center" type="selection" width="55" v-if="isSelection" />
- <el-table-column align="center" label="搴忓彿" type="index" width="60" :index="indexMethod" />
+ <el-table
+ ref="multipleTable"
+ v-loading="tableLoading"
+ :border="border"
+ :data="tableData"
+ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }"
+ :height="height"
+ :highlight-current-row="highlightCurrentRow"
+ :row-class-name="rowClassName"
+ :row-style="rowStyle"
+ :row-key="rowKey"
+ :span-method="spanMethod"
+ :stripe="stripe"
+ style="width: 100%"
+ tooltip-effect="dark"
+ @row-click="rowClick"
+ @current-change="currentChange"
+ @selection-change="handleSelectionChange"
+ class="lims-table"
+ >
+ <el-table-column
+ align="center"
+ type="selection"
+ width="55"
+ v-if="isSelection"
+ />
+ <el-table-column
+ align="center"
+ label="搴忓彿"
+ type="index"
+ width="60"
+ :index="indexMethod"
+ />
- <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey"
- :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
- :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop"
- :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true
- " :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType === 'action' ? getWidth(item.operation) : item.width
- " align="center">
+ <el-table-column
+ v-for="(item, index) in column"
+ :key="index"
+ :column-key="item.columnKey"
+ :filter-method="item.filterHandler"
+ :filter-multiple="item.filterMultiple"
+ :filtered-value="item.filteredValue"
+ :filters="item.filters"
+ :fixed="item.fixed"
+ :label="item.label"
+ :min-width="item.minWidth"
+ :prop="item.prop"
+ :show-overflow-tooltip="
+ item.dataType === 'action' || item.dataType === 'slot' ? false : true
+ "
+ :sortable="item.sortable ? true : false"
+ :type="item.type"
+ :width="
+ item.dataType === 'action' ? getWidth(item.operation) : item.width
+ "
+ align="center"
+ >
<!-- <div class="123" v-if="item.type == ''"> -->
- <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope">
- <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" />
+ <template
+ v-if="item.hasOwnProperty('colunmTemplate')"
+ :slot="item.colunmTemplate"
+ slot-scope="scope"
+ >
+ <slot
+ v-if="item.theadSlot"
+ :index="index"
+ :name="item.theadSlot"
+ :row="scope.row"
+ />
</template>
<template slot-scope="scope">
<!-- 鎻掓Ы -->
<div v-if="item.dataType == 'slot'">
- <slot v-if="item.slot" :index="scope.$index" :name="item.slot" :row="scope.row" />
+ <slot
+ v-if="item.slot"
+ :index="scope.$index"
+ :name="item.slot"
+ :row="scope.row"
+ />
</div>
<!-- 杩涘害鏉� -->
<div v-else-if="item.dataType == 'progress'">
@@ -31,77 +87,143 @@
</div>
<!-- 鍥剧墖 -->
<div v-else-if="item.dataType == 'image'">
- <img :src="javaApi + '/img/' + scope.row[item.prop]" alt=""
- style="width: 40px; height: 40px; margin-top: 10px" />
+ <img
+ :src="javaApi + '/img/' + scope.row[item.prop]"
+ alt=""
+ style="width: 40px; height: 40px; margin-top: 10px"
+ />
</div>
<!-- tag -->
<div v-else-if="item.dataType == 'tag'">
- <el-tag v-if="
- typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
- 'string'
- " :title="scope.row[item.prop] | formatters(item.formatData)"
- :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] |
- formatters(item.formatData) }}</el-tag>
- <el-tag v-for="(tag, index) in dataTypeFn(
- scope.row[item.prop],
- item.formatData
- )" v-else-if="
- typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
- 'object'
- " :key="index" :title="scope.row[item.prop] | formatters(item.formatData)"
- :type="formatType(tag, item.formatType)">{{
+ <el-tag
+ v-if="
+ typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
+ 'string'
+ "
+ :title="scope.row[item.prop] | formatters(item.formatData)"
+ :type="formatType(scope.row[item.prop], item.formatType)"
+ >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag
+ >
+ <el-tag
+ v-for="(tag, index) in dataTypeFn(
+ scope.row[item.prop],
+ item.formatData
+ )"
+ v-else-if="
+ typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
+ 'object'
+ "
+ :key="index"
+ :title="scope.row[item.prop] | formatters(item.formatData)"
+ :type="formatType(tag, item.formatType)"
+ >{{
item.tagGroup
? tag[item.tagGroup.label]
? tag[item.tagGroup.label]
: tag
: tag
- }}</el-tag>
- <el-tag v-else :title="scope.row[item.prop] | formatters(item.formatData)"
- :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] |
- formatters(item.formatData) }}</el-tag>
+ }}</el-tag
+ >
+ <el-tag
+ v-else
+ :title="scope.row[item.prop] | formatters(item.formatData)"
+ :type="formatType(scope.row[item.prop], item.formatType)"
+ >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag
+ >
</div>
<!-- 鎸夐挳 -->
<div v-else-if="item.dataType == 'action'">
<template v-for="(o, key) in item.operation">
- <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true"
- :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain"
- :style="{ color: o.name === '鍒犻櫎' ? '#f56c6c' : o.color }" :type="o.type | typeFn(scope.row)"
- @click="o.clickFun(scope.row)" :key="key">
+ <el-button
+ v-show="o.type != 'upload'"
+ size="mini"
+ v-if="o.showHide ? o.showHide(scope.row) : true"
+ :disabled="o.disabled ? o.disabled(scope.row) : false"
+ :icon="iconFn(o)"
+ :plain="o.plain"
+ :style="{ color: o.name === '鍒犻櫎' ? '#f56c6c' : o.color }"
+ :type="o.type | typeFn(scope.row)"
+ @click="o.clickFun(scope.row)"
+ :key="key"
+ >
{{ o.name }}
</el-button>
- <el-upload :action="javaApi +
- o.url +
- '?id=' +
- (o.uploadIdFun ? o.uploadIdFun(scope.row) : scope.row.id)
- " size="mini" ref="upload" :multiple="o.multiple ? o.multiple : false" :limit="1"
- :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept
- ? o.accept
- : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
- " v-if="o.type == 'upload' && o.url" style="display: inline-block; width: 50px"
- v-show="o.showHide ? o.showHide(scope.row) : true" :headers="uploadHeader" :on-error="onError"
- :on-exceed="onExceed" :on-success="handleSuccessUp" :show-file-list="false" :key="key">
- <el-button :size="o.size ? o.size : 'small'" type="text"
- :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button>
+ <el-upload
+ :action="
+ javaApi +
+ o.url +
+ '?id=' +
+ (o.uploadIdFun ? o.uploadIdFun(scope.row) : scope.row.id)
+ "
+ size="mini"
+ ref="upload"
+ :multiple="o.multiple ? o.multiple : false"
+ :limit="1"
+ :disabled="o.disabled ? o.disabled(scope.row) : false"
+ :accept="
+ o.accept
+ ? o.accept
+ : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
+ "
+ v-if="o.type == 'upload' && o.url"
+ style="display: inline-block; width: 50px"
+ v-show="o.showHide ? o.showHide(scope.row) : true"
+ :headers="uploadHeader"
+ :on-error="onError"
+ :on-exceed="onExceed"
+ :on-success="handleSuccessUp"
+ :show-file-list="false"
+ :key="key"
+ >
+ <el-button
+ :size="o.size ? o.size : 'small'"
+ type="text"
+ :disabled="o.disabled ? o.disabled(scope.row) : false"
+ >{{ o.name }}</el-button
+ >
</el-upload>
- <el-upload action="#" :on-change="(file, fileList) => o.clickFun(scope.row, file, fileList)
- " :multiple="o.multiple ? o.multiple : false" :limit="o.limit ? o.limit : 1"
- :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept
- ? o.accept
- : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
- " v-if="o.type == 'upload' && !o.url" style="display: inline-block; width: 50px"
- v-show="o.showHide ? o.showHide(scope.row) : true" :auto-upload="false" :on-exceed="onExceed"
- :show-file-list="false" :key="key">
- <el-button :size="o.size ? o.size : 'small'" type="text"
- :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button>
+ <el-upload
+ action="#"
+ :on-change="
+ (file, fileList) => o.clickFun(scope.row, file, fileList)
+ "
+ :multiple="o.multiple ? o.multiple : false"
+ :limit="o.limit ? o.limit : 1"
+ :disabled="o.disabled ? o.disabled(scope.row) : false"
+ :accept="
+ o.accept
+ ? o.accept
+ : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
+ "
+ v-if="o.type == 'upload' && !o.url"
+ style="display: inline-block; width: 50px"
+ v-show="o.showHide ? o.showHide(scope.row) : true"
+ :auto-upload="false"
+ :on-exceed="onExceed"
+ :show-file-list="false"
+ :key="key"
+ >
+ <el-button
+ :size="o.size ? o.size : 'small'"
+ type="text"
+ :disabled="o.disabled ? o.disabled(scope.row) : false"
+ >{{ o.name }}</el-button
+ >
</el-upload>
</template>
</div>
<!-- 鍙偣鍑荤殑鏂囧瓧 -->
- <div v-else-if="item.dataType == 'link'" class="cell link" style="width: 100%"
- @click="goLink(scope.row, item.linkMethod)">
- <span v-if="!item.formatData">{{ scope.row[item.prop] }}</span>
+ <div
+ v-else-if="item.dataType == 'link'"
+ class="cell"
+ style="width: 100%"
+ @click="goLink(scope.row, item.linkEvent)"
+ >
+ <span class="link" v-if="!item.formatData">
+ {{ scope.row[item.prop] }}
+ </span>
</div>
<!-- 榛樿绾睍绀烘暟鎹� -->
<div v-else class="cell" style="width: 100%">
@@ -113,8 +235,16 @@
</template>
</el-table-column>
</el-table>
- <pagination v-if="page" v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current"
- :limit.sync="page.size" @pagination="pagination" style="background-color: #fff" />
+ <pagination
+ v-if="page"
+ v-show="page.total > 0"
+ :total="page.total"
+ :layout="page.layout"
+ :page.sync="page.current"
+ :limit.sync="page.size"
+ @pagination="pagination"
+ style="background-color: #fff"
+ />
</div>
</template>
@@ -203,19 +333,19 @@
handleSelectionChange: {
type: Function,
default: () => {
- return () => { };
+ return () => {};
},
},
rowClick: {
type: Function,
default: () => {
- return () => { };
+ return () => {};
},
},
currentChange: {
type: Function,
default: () => {
- return () => { };
+ return () => {};
},
},
border: {
@@ -223,6 +353,10 @@
default: true,
},
highlightCurrentRow: {
+ type: Boolean,
+ default: false,
+ },
+ stripe: {
type: Boolean,
default: false,
},
@@ -240,7 +374,7 @@
},
rowClassName: {
type: Function,
- default: () => { },
+ default: () => {},
},
rowStyle: {
type: Function,
@@ -342,11 +476,11 @@
return (this.page.current - 1) * this.page.size + index + 1;
},
// 鐐瑰嚮鍗曞厓鏍糽ink浜嬩欢
- goLink(row, linkMethod) {
- if (!linkMethod) {
+ goLink(row, linkEvent) {
+ if (!linkEvent) {
return this.$message.warning("璇烽厤缃甽ingk浜嬩欢");
}
- this.$parent[linkMethod](row);
+ linkEvent.vueComponent[linkEvent.method](row);
},
// 鍚堝苟鍗曞厓鏍�
calculateSpanInfo() {
@@ -435,11 +569,11 @@
</script>
<style scoped>
-.el-table>>>.el-table__empty-text {
+.el-table >>> .el-table__empty-text {
text-align: center;
}
->>>.cell {
+>>> .cell {
padding: 0 !important;
}
@@ -456,7 +590,7 @@
cursor: pointer;
}
->>>.el-table__body-wrapper::-webkit-scrollbar {
+>>> .el-table__body-wrapper::-webkit-scrollbar {
height: 14px;
/* 璁剧疆婊氬姩鏉″搴� */
}
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index da89cf9..79b01c4 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -10,7 +10,8 @@
</div>
<div class="right-menu">
<div class="avatar-wrapper">
- <img :src="avatar" class="user-avatar" />
+ <!-- <img :src="avatar" class="user-avatar" /> -->
+ <el-avatar :size="28">{{ nickName.substring(0, 1) }}</el-avatar>
<span class="userName">{{ nickName }}</span>
<img
class="logoout"
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index 73d03a4..714163b 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -1,245 +1,278 @@
<template>
<div id="tags-view-container" class="tags-view-container">
- <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
- <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
+ <scroll-pane
+ ref="scrollPane"
+ class="tags-view-wrapper"
+ @scroll="handleScroll"
+ >
+ <hamburger
+ id="hamburger-container"
+ :is-active="sidebar.opened"
+ class="hamburger-container"
+ @toggleClick="toggleSideBar"
+ />
<router-link
v-for="tag in visitedViews"
ref="tag"
:key="tag.path"
- :class="isActive(tag)?'active':''"
+ :class="isActive(tag) ? 'active' : ''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
class="tags-view-item"
:style="activeStyle(tag)"
- @click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
- @contextmenu.prevent.native="openMenu(tag,$event)"
+ @click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''"
+ @contextmenu.prevent.native="openMenu(tag, $event)"
>
{{ tag.title }}
- <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
+ <span
+ v-if="!isAffix(tag)"
+ class="el-icon-close"
+ @click.prevent.stop="closeSelectedTag(tag)"
+ />
</router-link>
</scroll-pane>
- <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
- <li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 鍒锋柊椤甸潰</li>
- <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 鍏抽棴褰撳墠</li>
- <li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 鍏抽棴鍏朵粬</li>
- <li v-if="!isFirstView()" @click="closeLeftTags"><i class="el-icon-back"></i> 鍏抽棴宸︿晶</li>
- <li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 鍏抽棴鍙充晶</li>
- <li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 鍏ㄩ儴鍏抽棴</li>
+ <ul
+ v-show="visible"
+ :style="{ left: left + 'px', top: top + 'px' }"
+ class="contextmenu"
+ >
+ <li @click="refreshSelectedTag(selectedTag)">
+ <i class="el-icon-refresh-right"></i> 鍒锋柊椤甸潰
+ </li>
+ <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">
+ <i class="el-icon-close"></i> 鍏抽棴褰撳墠
+ </li>
+ <li @click="closeOthersTags">
+ <i class="el-icon-circle-close"></i> 鍏抽棴鍏朵粬
+ </li>
+ <li v-if="!isFirstView()" @click="closeLeftTags">
+ <i class="el-icon-back"></i> 鍏抽棴宸︿晶
+ </li>
+ <li v-if="!isLastView()" @click="closeRightTags">
+ <i class="el-icon-right"></i> 鍏抽棴鍙充晶
+ </li>
+ <li @click="closeAllTags(selectedTag)">
+ <i class="el-icon-circle-close"></i> 鍏ㄩ儴鍏抽棴
+ </li>
</ul>
</div>
</template>
<script>
-import ScrollPane from './ScrollPane'
-import path from 'path'
+import ScrollPane from "./ScrollPane";
+import path from "path";
import Hamburger from "@/components/Hamburger/index.vue";
-import {mapGetters} from "vuex";
+import { mapGetters } from "vuex";
export default {
- components: {Hamburger, ScrollPane },
+ components: { Hamburger, ScrollPane },
data() {
return {
visible: false,
top: 0,
left: 0,
selectedTag: {},
- affixTags: []
- }
+ affixTags: [],
+ };
},
computed: {
- ...mapGetters([
- 'sidebar',
- ]),
+ ...mapGetters(["sidebar"]),
visitedViews() {
- return this.$store.state.tagsView.visitedViews
+ return this.$store.state.tagsView.visitedViews;
},
routes() {
- return this.$store.state.permission.routes
+ return this.$store.state.permission.routes;
},
theme() {
return this.$store.state.settings.theme;
- }
+ },
},
watch: {
$route() {
- this.addTags()
- this.moveToCurrentTag()
+ this.addTags();
+ this.moveToCurrentTag();
},
visible(value) {
if (value) {
- document.body.addEventListener('click', this.closeMenu)
+ document.body.addEventListener("click", this.closeMenu);
} else {
- document.body.removeEventListener('click', this.closeMenu)
+ document.body.removeEventListener("click", this.closeMenu);
}
- }
+ },
},
mounted() {
- this.initTags()
- this.addTags()
+ this.initTags();
+ this.addTags();
},
methods: {
toggleSideBar() {
- this.$store.dispatch('app/toggleSideBar')
+ this.$store.dispatch("app/toggleSideBar");
},
isActive(route) {
- return route.path === this.$route.path
+ return route.path === this.$route.path;
},
activeStyle(tag) {
if (!this.isActive(tag)) return {};
return {
"background-color": this.theme,
- "border-color": this.theme
+ "border-color": this.theme,
};
},
isAffix(tag) {
- return tag.meta && tag.meta.affix
+ return tag.meta && tag.meta.affix;
},
isFirstView() {
try {
- return this.selectedTag.fullPath === '/index' || this.selectedTag.fullPath === this.visitedViews[1].fullPath
+ return (
+ this.selectedTag.fullPath === "/index" ||
+ this.selectedTag.fullPath === this.visitedViews[1].fullPath
+ );
} catch (err) {
- return false
+ return false;
}
},
isLastView() {
try {
- return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath
+ return (
+ this.selectedTag.fullPath ===
+ this.visitedViews[this.visitedViews.length - 1].fullPath
+ );
} catch (err) {
- return false
+ return false;
}
},
- filterAffixTags(routes, basePath = '/') {
- let tags = []
- routes.forEach(route => {
+ filterAffixTags(routes, basePath = "/") {
+ let tags = [];
+ routes.forEach((route) => {
if (route.meta && route.meta.affix) {
- const tagPath = path.resolve(basePath, route.path)
+ const tagPath = path.resolve(basePath, route.path);
tags.push({
fullPath: tagPath,
path: tagPath,
name: route.name,
- meta: { ...route.meta }
- })
+ meta: { ...route.meta },
+ });
}
if (route.children) {
- const tempTags = this.filterAffixTags(route.children, route.path)
+ const tempTags = this.filterAffixTags(route.children, route.path);
if (tempTags.length >= 1) {
- tags = [...tags, ...tempTags]
+ tags = [...tags, ...tempTags];
}
}
- })
- return tags
+ });
+ return tags;
},
initTags() {
- const affixTags = this.affixTags = this.filterAffixTags(this.routes)
+ const affixTags = (this.affixTags = this.filterAffixTags(this.routes));
for (const tag of affixTags) {
// Must have tag name
if (tag.name) {
- this.$store.dispatch('tagsView/addVisitedView', tag)
+ this.$store.dispatch("tagsView/addVisitedView", tag);
}
}
},
addTags() {
- const { name } = this.$route
+ const { name } = this.$route;
if (name) {
- this.$store.dispatch('tagsView/addView', this.$route)
+ this.$store.dispatch("tagsView/addView", this.$route);
}
},
moveToCurrentTag() {
- const tags = this.$refs.tag
+ const tags = this.$refs.tag;
this.$nextTick(() => {
for (const tag of tags) {
if (tag.to.path === this.$route.path) {
- this.$refs.scrollPane.moveToTarget(tag)
+ this.$refs.scrollPane.moveToTarget(tag);
// when query is different then update
if (tag.to.fullPath !== this.$route.fullPath) {
- this.$store.dispatch('tagsView/updateVisitedView', this.$route)
+ this.$store.dispatch("tagsView/updateVisitedView", this.$route);
}
- break
+ break;
}
}
- })
+ });
},
refreshSelectedTag(view) {
this.$tab.refreshPage(view);
if (this.$route.meta.link) {
- this.$store.dispatch('tagsView/delIframeView', this.$route)
+ this.$store.dispatch("tagsView/delIframeView", this.$route);
}
},
closeSelectedTag(view) {
this.$tab.closePage(view).then(({ visitedViews }) => {
if (this.isActive(view)) {
- this.toLastView(visitedViews, view)
+ this.toLastView(visitedViews, view);
}
- })
+ });
},
closeRightTags() {
- this.$tab.closeRightPage(this.selectedTag).then(visitedViews => {
- if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
- this.toLastView(visitedViews)
+ this.$tab.closeRightPage(this.selectedTag).then((visitedViews) => {
+ if (!visitedViews.find((i) => i.fullPath === this.$route.fullPath)) {
+ this.toLastView(visitedViews);
}
- })
+ });
},
closeLeftTags() {
- this.$tab.closeLeftPage(this.selectedTag).then(visitedViews => {
- if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
- this.toLastView(visitedViews)
+ this.$tab.closeLeftPage(this.selectedTag).then((visitedViews) => {
+ if (!visitedViews.find((i) => i.fullPath === this.$route.fullPath)) {
+ this.toLastView(visitedViews);
}
- })
+ });
},
closeOthersTags() {
- this.$router.push(this.selectedTag.fullPath).catch(()=>{});
+ this.$router.push(this.selectedTag.fullPath).catch(() => {});
this.$tab.closeOtherPage(this.selectedTag).then(() => {
- this.moveToCurrentTag()
- })
+ this.moveToCurrentTag();
+ });
},
closeAllTags(view) {
this.$tab.closeAllPage().then(({ visitedViews }) => {
- if (this.affixTags.some(tag => tag.path === this.$route.path)) {
- return
+ if (this.affixTags.some((tag) => tag.path === this.$route.path)) {
+ return;
}
- this.toLastView(visitedViews, view)
- })
+ this.toLastView(visitedViews, view);
+ });
},
toLastView(visitedViews, view) {
- const latestView = visitedViews.slice(-1)[0]
+ const latestView = visitedViews.slice(-1)[0];
if (latestView) {
- this.$router.push(latestView.fullPath)
+ this.$router.push(latestView.fullPath);
} else {
// now the default is to redirect to the home page if there is no tags-view,
// you can adjust it according to your needs.
- if (view.name === 'Dashboard') {
+ if (view.name === "Dashboard") {
// to reload home page
- this.$router.replace({ path: '/redirect' + view.fullPath })
+ this.$router.replace({ path: "/redirect" + view.fullPath });
} else {
- this.$router.push('/')
+ this.$router.push("/");
}
}
},
openMenu(tag, e) {
- const menuMinWidth = 105
- const offsetLeft = this.$el.getBoundingClientRect().left // container margin left
- const offsetWidth = this.$el.offsetWidth // container width
- const maxLeft = offsetWidth - menuMinWidth // left boundary
- const left = e.clientX - offsetLeft + 15 // 15: margin right
+ const menuMinWidth = 105;
+ const offsetLeft = this.$el.getBoundingClientRect().left; // container margin left
+ const offsetWidth = this.$el.offsetWidth; // container width
+ const maxLeft = offsetWidth - menuMinWidth; // left boundary
+ const left = e.clientX - offsetLeft + 15; // 15: margin right
if (left > maxLeft) {
- this.left = maxLeft
+ this.left = maxLeft;
} else {
- this.left = left
+ this.left = left;
}
- this.top = e.clientY
- this.visible = true
- this.selectedTag = tag
+ this.top = e.clientY;
+ this.visible = true;
+ this.selectedTag = tag;
},
closeMenu() {
- this.visible = false
+ this.visible = false;
},
handleScroll() {
- this.closeMenu()
- }
- }
-}
+ this.closeMenu();
+ },
+ },
+};
</script>
<style lang="scss" scoped>
@@ -251,19 +284,19 @@
z-index: 1000; /* 纭繚澶撮儴鍦ㄥ叾浠栧唴瀹逛箣涓� */
background: #fff;
border-bottom: 1px solid #d8dce5;
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 3px 0 rgba(0, 0, 0, 0.04);
.tags-view-wrapper {
.hamburger-container {
display: inline-block;
line-height: 46px;
height: 100%;
cursor: pointer;
- transition: background .3s;
- -webkit-tap-highlight-color:transparent;
+ transition: background 0.3s;
+ -webkit-tap-highlight-color: transparent;
padding: 0 10px !important;
&:hover {
- background: rgba(0, 0, 0, .025)
+ background: rgba(0, 0, 0, 0.025);
}
}
.tags-view-item {
@@ -290,7 +323,7 @@
color: #fff;
border-color: #42b983;
&::before {
- content: '';
+ content: "";
background: #fff;
display: inline-block;
width: 8px;
@@ -303,7 +336,7 @@
}
}
.contextmenu {
- margin: 0;
+ margin: -20px;
background: #fff;
z-index: 3000;
position: absolute;
@@ -313,7 +346,7 @@
font-size: 12px;
font-weight: 400;
color: #333;
- box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
+ box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
li {
margin: 0;
padding: 7px 16px;
@@ -336,10 +369,10 @@
vertical-align: 2px;
border-radius: 50%;
text-align: center;
- transition: all .3s cubic-bezier(.645, .045, .355, 1);
+ transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transform-origin: 100% 50%;
&:before {
- transform: scale(.6);
+ transform: scale(0.6);
display: inline-block;
vertical-align: -3px;
}
diff --git a/src/router/index.js b/src/router/index.js
index 912bf88..b9675e1 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -100,11 +100,18 @@
permissions: ['business:order'],
children: [
{
- // 閾滄潗鏂欎笅鍗�
+ // 鏂板濮旀墭鍗曢〉闈�
path: 'addOrder',
component: () => import('@/views/business/inspectionOrder/add'),
name: 'addOrder',
meta: { title: '鏂板濮旀墭鍗�', activeMenu: '/business/inspectionOrder' }
+ },
+ {
+ // 鏌ョ湅濮旀墭鍗曡鎯呴〉闈�
+ path: 'showDetails',
+ component: () => import('@/views/business/inspectionOrder/add'),
+ name: 'showDetails',
+ meta: { title: '濮旀墭鍗曡鎯�', activeMenu: '/business/inspectionOrder' }
}
]
},
diff --git a/src/store/getters.js b/src/store/getters.js
index 0d93723..099391b 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -9,6 +9,8 @@
avatar: (state) => state.user.avatar,
name: (state) => state.user.name,
nickName: (state) => state.user.nickName,
+ companyName: (state) => state.user.companyName,
+ loginUserInfo: (state) => state.user.loginUserInfo,
userId: (state) => state.user.id,
introduction: (state) => state.user.introduction,
roles: (state) => state.user.roles,
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 8626ba0..8c7bda4 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -11,6 +11,8 @@
name: "",
avatar: "",
nickName: "",
+ companyName: "",
+ loginUserInfo: {},
roles: [],
permissions: [],
},
@@ -30,6 +32,12 @@
},
SET_NICKNAME: (state, nickName) => {
state.nickName = nickName;
+ },
+ SET_COMPANYNAME: (state, companyName) => {
+ state.companyName = companyName;
+ },
+ SET_LOGINUSERINFO: (state, loginUserInfo) => {
+ state.loginUserInfo = loginUserInfo;
},
SET_ROLES: (state, roles) => {
state.roles = roles;
@@ -67,7 +75,6 @@
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
- console.log("store-->",res);
const user = res.user;
let avatar = user.avatar || "";
if (!isHttp(avatar)) {
@@ -82,10 +89,12 @@
} else {
commit("SET_ROLES", ["ROLE_DEFAULT"]);
}
+ commit("SET_LOGINUSERINFO", user);
commit("SET_ID", user.userId);
commit("SET_NAME", user.userName);
commit("SET_AVATAR", avatar);
commit("SET_NICKNAME", user.nickName);
+ commit("SET_COMPANYNAME", user.companyName);
resolve(res);
})
.catch((error) => {
diff --git a/src/views/CNAS/resourceDemand/device/component/device-overview.vue b/src/views/CNAS/resourceDemand/device/component/device-overview.vue
index ae3e069..2efabd0 100644
--- a/src/views/CNAS/resourceDemand/device/component/device-overview.vue
+++ b/src/views/CNAS/resourceDemand/device/component/device-overview.vue
@@ -145,8 +145,8 @@
<template>
<div class="role_manage">
- <div>
- <el-form :model="entity" inline label-position="right" label-width="80px">
+ <div style="margin-top: 10px">
+ <el-form :model="entity" inline label-position="right">
<el-form-item label="鐘舵��:">
<el-select v-model="entity.deviceStatus" placeholder="鍏ㄩ儴" size="small" clearable>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
@@ -164,24 +164,6 @@
@click="currentPage = 1, keyMap = {}, list = [], finishLoding = false, refreshTable()">鏌� 璇�</el-button>
</el-form-item>
</el-form>
- <!-- <div class="search_thing">
- <div class="search_label">鐘舵�侊細</div>
- <el-select v-model="entity.deviceStatus" placeholder="鍏ㄩ儴" size="small" clearable>
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="search_thing">
- <div class="search_label">璁惧鍚嶇О锛�</div>
- <div class="search_input">
- <el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="entity.deviceName"></el-input>
- </div>
- </div> -->
-
-
- <!-- <div class="search_thing" style="padding-left: 30px;">
- </div> -->
</div>
<div class="table" v-loading="loading">
<scroll-pagination @load="refreshTable()" :finishLoding="finishLoding" :list="list"
@@ -255,7 +237,6 @@
entity: {
deviceStatus: null,
deviceName: null,
- orderBy: { field: "id", order: "asc" }
},
options: [],
list: [],
@@ -298,8 +279,8 @@
...this.entity
}).then(res => {
if (res.code == 200) {
- this.total = res.data.body.total
- let list = res.data.body.records.map(m => {
+ this.total = res.data.total
+ let list = res.data.records.map(m => {
switch (m.deviceStatus) {
case 0:
// 姝e父
diff --git a/src/views/CNAS/resourceDemand/device/component/files.vue b/src/views/CNAS/resourceDemand/device/component/files.vue
index feabc51..1850918 100644
--- a/src/views/CNAS/resourceDemand/device/component/files.vue
+++ b/src/views/CNAS/resourceDemand/device/component/files.vue
@@ -470,11 +470,10 @@
updateDocument,
addDocument,
deleteDocumentById,
- getAllDocuments,
selectDeviceByCode,
upDeviceParameter,
exportDeviceFile,
- getInsProduction,
+ getInsProduction, getListByDId,
} from '@/api/cnas/resourceDemand/device.js'
import { selectUserCondition } from "@/api/system/user";
import {
@@ -719,7 +718,7 @@
},
// 鑾峰彇鐩稿叧鏂囨。鏁版嵁鐨刟pi
getPage() {
- getAllDocuments({ deviceId: this.clickNodeVal.value }).then(res => {
+ getListByDId({ id: this.clickNodeVal.value }).then(res => {
if (res.code == 200)
this.tableDataA = res.data
})
diff --git a/src/views/CNAS/resourceDemand/device/component/management.vue b/src/views/CNAS/resourceDemand/device/component/management.vue
index e2e7602..bfc3c45 100644
--- a/src/views/CNAS/resourceDemand/device/component/management.vue
+++ b/src/views/CNAS/resourceDemand/device/component/management.vue
@@ -1,178 +1,378 @@
<!-- 璁惧宸ュ叿鏄庣粏 -->
<template>
- <div class="role_manage">
- <div class="search" v-show="!showData">
- <div class="search_thing">
- <div class="search_label">鐘舵�侊細</div>
- <el-select v-model="queryParams.deviceStatus" placeholder="鍏ㄩ儴" size="small">
- <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="search_thing">
- <div class="search_label">璁惧鍚嶇О锛�</div>
- <div class="search_input">
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.deviceName"
- @keyup.enter.native="refreshTable()">
- </el-input>
- </div>
- </div>
- <div class="search_thing">
- <div class="search_label">瑙勬牸鍨嬪彿锛�</div>
- <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="queryParams.specificationModel" @keyup.enter.native="refreshTable()"></el-input>
- </div>
- </div>
- <div style="padding-left: 30px;">
- <el-button size="small" @click="refresh()">閲� 缃�</el-button>
- <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
- <el-button size="small" type="primary" @click="dialogVisible2 = true">鏂� 澧�</el-button>
- <el-button size="small" type="primary" @click="handleDownOne">瀵� 鍑�</el-button>
- </div>
- </div>
- <div class="table" v-show="!showData">
- <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 320px)'"
- :page="page" @pagination="pagination"></lims-table>
- </div>
- <el-dialog :title="isUp ? '璁惧璇︽儏' : '妗f淇'" :visible.sync="dialogVisible" width="70%"
- top="5vh"
- :before-close="handleClose">
- <el-row style="display:flex;justify-content: space-around;">
+ <div class="role_manage">
+ <div class="search" v-show="!showData">
+ <div class="search_thing">
+ <div class="search_label">鐘舵�侊細</div>
+ <el-select
+ v-model="queryParams.deviceStatus"
+ placeholder="鍏ㄩ儴"
+ size="small"
+ >
+ <el-option
+ v-for="item in deviceStatusList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="search_thing">
+ <div class="search_label">璁惧鍚嶇О锛�</div>
+ <div class="search_input">
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="queryParams.deviceName"
+ @keyup.enter.native="refreshTable()"
+ >
+ </el-input>
+ </div>
+ </div>
+ <div class="search_thing">
+ <div class="search_label">瑙勬牸鍨嬪彿锛�</div>
+ <div class="search_input">
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="queryParams.specificationModel"
+ @keyup.enter.native="refreshTable()"
+ ></el-input>
+ </div>
+ </div>
+ <div style="padding-left: 30px">
+ <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="refreshTable()"
+ >鏌� 璇�</el-button
+ >
+ <el-button size="small" type="primary" @click="dialogVisible2 = true"
+ >鏂� 澧�</el-button
+ >
+ <el-button size="small" type="primary" @click="handleDownOne"
+ >瀵� 鍑�</el-button
+ >
+ </div>
+ </div>
+ <div class="table" v-show="!showData">
+ <lims-table
+ :tableData="tableData"
+ :column="column"
+ :tableLoading="tableLoading"
+ :height="'calc(100vh - 320px)'"
+ :page="page"
+ @pagination="pagination"
+ ></lims-table>
+ </div>
+ <el-dialog
+ :title="isUp ? '璁惧璇︽儏' : '妗f淇'"
+ :visible.sync="dialogVisible"
+ width="70%"
+ top="5vh"
+ :before-close="handleClose"
+ >
+ <el-row style="display: flex; justify-content: space-around">
<!-- 宸﹁竟甯冨眬 -->
<el-col :span="7">
<el-col>
<!-- 鍥剧墖 -->
- <el-image class="img" style="width:100%;height: 320px;marginBottom:16px"
- :src="javaApi + '/img/' + formData.imageUpload">
- <div slot="error" class="image-error" style="width: calc(100% -2px);
- height: 318px;
- border-radius: 16px;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 1px solid #EEEEEE;">
- <i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i>
+ <el-image
+ class="img"
+ style="width: 100%; height: 320px; marginbottom: 16px"
+ :src="javaApi + '/img/' + formData.imageUpload"
+ >
+ <div
+ slot="error"
+ class="image-error"
+ style="
+ width: calc(100% -2px);
+ height: 318px;
+ border-radius: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid #eeeeee;
+ "
+ >
+ <i
+ class="el-icon-picture-outline"
+ style="font-size: 60px; color: #666666"
+ ></i>
</div>
</el-image>
<!-- 琛ㄥ崟 -->
- <el-form :label-position="labelPosition" :model="formData" label-width="120px">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData"
+ label-width="120px"
+ >
<el-form-item label="浠櫒鍚嶇О:" required>
- <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.deviceName"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="浠櫒鍚嶇ОEN:" required>
- <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.enDeviceName"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="瑙勬牸鍨嬪彿:" required>
- <el-input :disabled="isUp" v-model="formData.specificationModel"
- size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.specificationModel"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鐢熶骇鍘傚:">
- <el-input :disabled="isUp" v-model="formData.manufacturer" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.manufacturer"
+ size="small"
+ ></el-input>
</el-form-item>
</el-form>
</el-col>
</el-col>
<!-- 涓棿甯冨眬 -->
<el-col :span="7">
- <el-form :label-position="labelPosition" :model="formData" label-width="116px">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData"
+ label-width="116px"
+ >
<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
- <el-input disabled v-model="formData.calibrationServices" size="small"></el-input>
+ <el-input
+ disabled
+ v-model="formData.calibrationServices"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鍑哄巶缂栧彿:">
- <el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.factoryNo"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="绠$悊缂栧彿:" required>
- <el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.managementNumber"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="璐疆鏃ユ湡:">
- <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.acquisitionDate"
- type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small"
- placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ :disabled="isUp"
+ style="width: 100%"
+ v-model="formData.acquisitionDate"
+ type="date"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="鍚敤鏃ユ湡:" required>
- <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate"
- type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small"
- placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ :disabled="isUp"
+ style="width: 100%"
+ v-model="formData.activationDate"
+ type="date"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="绠$悊浜�:">
- <el-select v-model="formData.equipmentManager" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option :disabled="isUp" v-for="item in responsiblePersonList" :key="item.value"
- :label="item.label" :value="item.value">
+ <el-select
+ v-model="formData.equipmentManager"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ :disabled="isUp"
+ v-for="item in responsiblePersonList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="瀛樻斁鐐�:">
- <el-input :disabled="isUp" v-model="formData.storagePoint" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.storagePoint"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鎶�鏈寚鏍�:">
- <el-input :disabled="isUp" v-model="formData.technicalIndicators" :rows="7" type="textarea"
- size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.technicalIndicators"
+ :rows="7"
+ type="textarea"
+ size="small"
+ ></el-input>
</el-form-item>
</el-form>
</el-col>
<!-- 鍙宠竟甯冨眬 -->
<el-col :span="7">
- <el-form :label-position="labelPosition" :model="formData" label-width="140px" ref="ruleForm">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData"
+ label-width="140px"
+ ref="ruleForm"
+ >
<!-- 瀹為獙瀹ゅ垪琛� -->
<el-form-item label="鎵�灞為儴闂�:">
- <el-select :disabled="isUp" v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨"
- size="small" style="width:100%">
- <el-option v-for="item in subordinateDepartmentsList" :key="item.value"
- :label="item.label" :value="item.value">
+ <el-select
+ :disabled="isUp"
+ v-model="formData.subordinateDepartmentsId"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in subordinateDepartmentsList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="妫�娴嬮」鐩�:">
- <el-cascader :disabled="isUp" v-model="formData.insProductIds" :options="options"
- :show-all-levels="false" :props="props" placeholder="璇烽�夋嫨" size="small"
- style="width:100%;" :collapse-tags="!isUp" separator="," filterable
- clearable></el-cascader>
+ <el-cascader
+ :disabled="isUp"
+ v-model="formData.insProductIds"
+ :options="options"
+ :show-all-levels="false"
+ :props="props"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ :collapse-tags="!isUp"
+ separator=","
+ filterable
+ clearable
+ ></el-cascader>
</el-form-item>
<el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:" v-if="isUp">
- <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.latestTraceability"
- format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small"
- placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ :disabled="isUp"
+ style="width: 100%"
+ v-model="formData.latestTraceability"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
+ type="date"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="涓嬫鏍″噯鏃ユ湡:" v-if="isUp">
- <el-date-picker :disabled="isUp" style="width:100%" v-model="formData.latestTraceability"
- format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" size="small"
- placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ :disabled="isUp"
+ style="width: 100%"
+ v-model="formData.latestTraceability"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
+ type="date"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="璁惧绫诲瀷:">
- <el-select :disabled="isUp" v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in equipmentList" :key="item.value" :label="item.label"
- :value="item.value">
+ <el-select
+ :disabled="isUp"
+ v-model="formData.largeCategory"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in equipmentList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鍗曚环(涓囧厓):">
- <el-input :disabled="isUp" v-model="formData.unitPrice" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.unitPrice"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="褰撳墠鐘舵��:" required>
- <el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label"
- :value="item.value">
+ <el-select
+ :disabled="isUp"
+ v-model="formData.deviceStatus"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in deviceStatusList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
- <el-input :disabled="isUp" v-model="formData.calibrationDate" size="small"></el-input>
+ <el-input
+ :disabled="isUp"
+ v-model="formData.calibrationDate"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鍥剧墖:">
<div
- style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;">
- <div v-show="formData.imageName" class="picName">{{ formData.imageName }}</div>
- <el-upload :disabled="isUp" :action="action" :on-success="handleSuccessUpImg2"
- :show-file-list="false" accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader"
- :on-change="beforeUpload" :on-error="onError" ref='upload'>
- <el-button type="text" style="height:30px;padding-top:8px">涓婁紶</el-button>
+ style="
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ height: 32px;
+ lineheight: 32px;
+ display: flex;
+ justify-content: space-around;
+ font-size: 13px;
+ "
+ >
+ <div v-show="formData.imageName" class="picName">
+ {{ formData.imageName }}
+ </div>
+ <el-upload
+ :disabled="isUp"
+ :action="action"
+ :on-success="handleSuccessUpImg2"
+ :show-file-list="false"
+ accept="image/jpg,image/jpeg,image/png"
+ :headers="uploadHeader"
+ :on-change="beforeUpload"
+ :on-error="onError"
+ ref="upload"
+ >
+ <el-button type="text" style="height: 30px; padding-top: 8px"
+ >涓婁紶</el-button
+ >
</el-upload>
</div>
</el-form-item>
@@ -180,112 +380,218 @@
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
- <el-row v-if="!isUp">
- <el-button @click="handleClose">鍙� 娑�</el-button>
- <el-button type="primary" @click="submitForm" :loading="upLoad">纭� 瀹�</el-button>
- </el-row>
- </span>
+ <el-row v-if="!isUp">
+ <el-button @click="handleClose">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm" :loading="upLoad"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
</el-dialog>
<!-- 鏂板-->
- <el-dialog title="鏂板璁惧" top="5vh" :visible.sync="dialogVisible2" width="70%" :before-close="handleClose2">
- <el-row style="display:flex;justify-content: space-around;">
+ <el-dialog
+ title="鏂板璁惧"
+ top="5vh"
+ :visible.sync="dialogVisible2"
+ width="70%"
+ :before-close="handleClose2"
+ >
+ <el-row style="display: flex; justify-content: space-around">
<!-- 宸﹁竟甯冨眬 -->
<el-col :span="7">
<el-col>
<!-- 鍥剧墖 -->
- <el-image class="img" style="width:100%;height: 320px;margin-bottom:16px"
- :src="javaApi + '/img/' + formData2.imageUpload">
- <div slot="error" class="image-error" style="width: calc(100% -2px);
- height: 318px;
- border-radius: 16px;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 1px solid #EEEEEE;">
- <i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i>
+ <el-image
+ class="img"
+ style="width: 100%; height: 320px; margin-bottom: 16px"
+ :src="javaApi + '/img/' + formData2.imageUpload"
+ >
+ <div
+ slot="error"
+ class="image-error"
+ style="
+ width: calc(100% -2px);
+ height: 318px;
+ border-radius: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid #eeeeee;
+ "
+ >
+ <i
+ class="el-icon-picture-outline"
+ style="font-size: 60px; color: #666666"
+ ></i>
</div>
</el-image>
<!-- 琛ㄥ崟 -->
- <el-form :label-position="labelPosition" :model="formData2" label-width="120px">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData2"
+ label-width="120px"
+ >
<el-form-item label="浠櫒鍚嶇О:" required>
- <el-input v-model="formData2.deviceName" size="small"></el-input>
+ <el-input
+ v-model="formData2.deviceName"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="浠櫒鍚嶇ОEN:" required>
- <el-input v-model="formData2.enDeviceName" size="small"></el-input>
+ <el-input
+ v-model="formData2.enDeviceName"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="瑙勬牸鍨嬪彿:" required>
- <el-input v-model="formData2.specificationModel" size="small"></el-input>
+ <el-input
+ v-model="formData2.specificationModel"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鐢熶骇鍘傚:">
- <el-input v-model="formData2.manufacturer" size="small"></el-input>
+ <el-input
+ v-model="formData2.manufacturer"
+ size="small"
+ ></el-input>
</el-form-item>
</el-form>
</el-col>
</el-col>
<!-- 涓棿甯冨眬 -->
<el-col :span="7">
- <el-form :label-position="labelPosition" :model="formData2" label-width="110px">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData2"
+ label-width="110px"
+ >
<!-- <el-form-item label="鐢熶骇鍘傚EN:">
<el-input v-model="formData2.factoryNo" size="small"></el-input>
</el-form-item> -->
<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
- <el-input v-model="formData2.calibrationServices" size="small"></el-input>
+ <el-input
+ v-model="formData2.calibrationServices"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鍑哄巶缂栧彿:">
<el-input v-model="formData2.factoryNo" size="small"></el-input>
</el-form-item>
<el-form-item label="绠$悊缂栧彿:" required>
- <el-input v-model="formData2.managementNumber" size="small"></el-input>
+ <el-input
+ v-model="formData2.managementNumber"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="璐疆鏃ユ湡:">
- <el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="date"
- format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ style="width: 100%"
+ v-model="formData2.acquisitionDate"
+ type="date"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="鍚敤鏃ユ湡:" required>
- <el-date-picker style="width:100%" v-model="formData2.activationDate" type="date"
- format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+ <el-date-picker
+ style="width: 100%"
+ v-model="formData2.activationDate"
+ type="date"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
</el-date-picker>
</el-form-item>
<el-form-item label="绠$悊浜�:">
- <el-select v-model="formData2.equipmentManager" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
- :value="item.value">
+ <el-select
+ v-model="formData2.equipmentManager"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in responsiblePersonList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="瀛樻斁鐐�:">
- <el-input v-model="formData2.storagePoint" size="small"></el-input>
+ <el-input
+ v-model="formData2.storagePoint"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鎶�鏈寚鏍�:">
- <el-input v-model="formData2.technicalIndicators" :rows="7" type="textarea"
- size="small"></el-input>
+ <el-input
+ v-model="formData2.technicalIndicators"
+ :rows="7"
+ type="textarea"
+ size="small"
+ ></el-input>
</el-form-item>
</el-form>
</el-col>
<!-- 鍙宠竟甯冨眬 -->
<el-col :span="7">
- <el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm">
+ <el-form
+ :label-position="labelPosition"
+ :model="formData2"
+ label-width="120px"
+ ref="ruleForm"
+ >
<!-- 瀹為獙瀹ゅ垪琛� -->
<el-form-item label="鎵�灞為儴闂�:">
- <el-select v-model="formData2.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in subordinateDepartmentsList" :key="item.value"
- :label="item.label" :value="item.value">
+ <el-select
+ v-model="formData2.subordinateDepartmentsId"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in subordinateDepartmentsList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="妫�娴嬮」鐩�:">
- <el-cascader v-model="formData2.insProductIds" :options="options" :show-all-levels="false"
- :props="props" placeholder="璇烽�夋嫨" size="small" style="width:100%" collapse-tags
- separator="," filterable clearable></el-cascader>
+ <el-cascader
+ v-model="formData2.insProductIds"
+ :options="options"
+ :show-all-levels="false"
+ :props="props"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ collapse-tags
+ separator=","
+ filterable
+ clearable
+ ></el-cascader>
</el-form-item>
<el-form-item label="璁惧绫诲瀷:">
- <el-select v-model="formData2.largeCategory" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in equipmentList" :key="item.value" :label="item.label"
- :value="item.value">
+ <el-select
+ v-model="formData2.largeCategory"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in equipmentList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
@@ -293,24 +599,55 @@
<el-input v-model="formData2.unitPrice" size="small"></el-input>
</el-form-item>
<el-form-item label="褰撳墠鐘舵��:" required>
- <el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small"
- style="width:100%">
- <el-option v-for="item in deviceStatusList" :key="item.id" :label="item.label"
- :value="item.value">
+ <el-select
+ v-model="formData2.deviceStatus"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in deviceStatusList"
+ :key="item.id"
+ :label="item.label"
+ :value="item.value"
+ >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
- <el-input v-model="formData2.calibrationDate" size="small"></el-input>
+ <el-input
+ v-model="formData2.calibrationDate"
+ size="small"
+ ></el-input>
</el-form-item>
<el-form-item label="鍥剧墖:">
<div
- style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;line-height:32px;display:flex;justify-content: space-around;font-size: 13px;">
- <div v-show="formData2.imageName" class="picName">{{ formData2.imageName }}</div>
- <el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
- accept='image/jpg,image/jpeg,image/png' :headers="uploadHeader" :on-change="beforeUpload"
- :on-error="onError" ref='upload'>
- <el-button type="text" style="height:30px;padding-top:8px">涓婁紶</el-button>
+ style="
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ height: 32px;
+ line-height: 32px;
+ display: flex;
+ justify-content: space-around;
+ font-size: 13px;
+ "
+ >
+ <div v-show="formData2.imageName" class="picName">
+ {{ formData2.imageName }}
+ </div>
+ <el-upload
+ :action="action"
+ :on-success="handleSuccessUpImg2"
+ :show-file-list="false"
+ accept="image/jpg,image/jpeg,image/png"
+ :headers="uploadHeader"
+ :on-change="beforeUpload"
+ :on-error="onError"
+ ref="upload"
+ >
+ <el-button type="text" style="height: 30px; padding-top: 8px"
+ >涓婁紶</el-button
+ >
</el-upload>
</div>
</el-form-item>
@@ -318,695 +655,776 @@
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
- <el-row>
- <el-button @click="handleClose2">鍙� 娑�</el-button>
- <el-button type="primary" @click="submitForm2" :loading="upLoad2">纭� 瀹�</el-button>
- </el-row>
- </span>
+ <el-row>
+ <el-button @click="handleClose2">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm2" :loading="upLoad2"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
</el-dialog>
<el-dialog title="鏁伴噰閰嶇疆" :visible.sync="dialogVisible3" width="400px">
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>IP锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.ip"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>IP锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.ip"
+ ></el-input>
</div>
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>閲囬泦鍦板潃锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.collectUrl"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>閲囬泦鍦板潃锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.collectUrl"
+ ></el-input>
</div>
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鍌ㄥ瓨鍦板潃锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.storageUrl"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>鍌ㄥ瓨鍦板潃锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.storageUrl"
+ ></el-input>
</div>
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鍙傜収锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.refer"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>鍙傜収锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.refer"
+ ></el-input>
</div>
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>X锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.x"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>X锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.x"
+ ></el-input>
</div>
- <div class="search_thing" style="margin-bottom: 14px;">
- <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>Y锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.y"></el-input>
+ <div class="search_thing" style="margin-bottom: 14px">
+ <div class="search_label">
+ <span style="color: red; margin-right: 4px">*</span>Y锛�
+ </div>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.y"
+ ></el-input>
</div>
<div class="search_thing">
<div class="search_label">鍏紡锛�</div>
- <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.formula"></el-input>
+ <el-input
+ size="small"
+ placeholder="璇疯緭鍏�"
+ clearable
+ v-model="configForm.formula"
+ ></el-input>
</div>
<span slot="footer" class="dialog-footer">
- <el-row>
- <el-button @click="dialogVisible3 = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="submitForm3" :loading="upLoad3">纭� 瀹�</el-button>
- </el-row>
- </span>
+ <el-row>
+ <el-button @click="dialogVisible3 = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm3" :loading="upLoad3"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
</el-dialog>
- <dataAcquisitionConfig v-if="showData" :deviceId="deviceId" />
- </div>
+ <dataAcquisitionConfig v-if="showData" :deviceId="deviceId" />
+ </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
-import dataAcquisitionConfig from './acquisitionConfig.vue'
+import dataAcquisitionConfig from "./acquisitionConfig.vue";
import {
- obtainItemParameterList,
- exportEquipmentDetails,
- getInsProduction,
- upDeviceParameter,
- addDeviceParameter,
- numberCollect,
- getDeviceParameter,
- delDeviceParameter,
-} from '@/api/cnas/resourceDemand/device.js'
+ obtainItemParameterList,
+ exportEquipmentDetails,
+ getInsProduction,
+ upDeviceParameter,
+ addDeviceParameter,
+ numberCollect,
+ getDeviceParameter,
+ delDeviceParameter,
+} from "@/api/cnas/resourceDemand/device.js";
import { selectUserCondition } from "@/api/system/user";
export default {
- props: {
- clickNodeVal: {
- type: Object,
- default: () => {
- return {};
- }
- }
- },
- components: {
- limsTable,
- dataAcquisitionConfig,
- },
- data() {
- return {
- dateFormat: 'yyyy-MM-dd',
- deviceId: '',
- fileTypeOptions: [
- { label: 'csv', value: '.csv' },
- { label: 'db', value: '.db' },
- { label: 'mdb', value: '.mdb' },
- { label: 'word', value: '.docx' },
- { label: 'excel', value: '.xlsx' },
- { label: 'txt', value: '.txt' },
- { label: 'png', value: '.png' },
- ],
- //鏄惁鏄。妗堜慨璁� true涓嶆槸 false鏄�
- isUp: true,
- formData: {
- authorizedPerson: []
- },
- formData2: {
- imageUpload: '',
- imageName: '',
- deviceStatus: '',
- authorizedPerson: []
- },
- value: '',
- props: { multiple: true, emitPath: false, value: 'id', label: 'name' },
- options: [],
- labelPosition: 'right',
- dialogVisible: false,
- dialogVisible2: false,
- addPower: false,
- showData: false, // 鏁伴噰閰嶇疆椤甸潰
- tableList: [],
- addDia: true,
- addPower: true,
- //璁惧绫诲瀷鍒楄〃
- equipmentList: [],
- // 璐熻矗浜哄垪琛�
- responsiblePersonList: [],
- // 鎺堟潈浜哄垪琛�
- authorizerList: [],
- // 褰撳墠鐘舵�佸垪琛�
- deviceStatusList: [],
- // 鎵�灞為儴闂�
- subordinateDepartmentsList: [],
- upLoad: false,
- upLoad2: false,
- dialogVisible3: false,
- upLoad3: false,
- configForm: {},
- laboratoryNameIsNull: false,
- queryParams: {},
- tableData: [],
- column: [
- { label: "璁惧鍚嶇О", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' },
- { label: "璁惧鍚嶇ОEN", prop: "enDeviceName" },
- {
- label: "瑙勬牸鍨嬪彿",
- prop: "specificationModel",
- },
- { label: "鐢熶骇鍘傚", prop: "manufacturer" },
- { label: "鍑哄巶缂栧彿", prop: "factoryNo" },
- { label: "绠$悊缂栧彿", prop: "managementNumber" },
- { label: "鎶�鏈寚鏍�", prop: "technicalIndicators" },
- { label: "璐疆鏃ユ湡", prop: "acquisitionDate" },
- { label: "鍚敤鏃ユ湡", prop: "activationDate" },
- { label: "绠$悊浜�", prop: "equipmentManagerUser" },
- { label: "瀛樻斁鐐�", prop: "storagePoint" },
- { label: "鎵�灞為儴闂�", prop: "laboratoryName" },
- { label: "妫�楠岄」鐩�", prop: "insProductItem" },
- { label: "鏍″噯鏈嶅姟鏈烘瀯", prop: "calibrationServices" },
- { label: "鏈�杩戞牎鍑嗘棩鏈�", prop: "lastCalibrationDateTwo" },
- { label: "鏈�杩戞牳鏌ユ棩鏈�", prop: "lastCalibrationDate" },
- { label: "涓嬫鏍″噯鏃ユ湡", prop: "nextCalibrationDateTwo" },
- { label: "涓嬫鏍告煡鏃ユ湡", prop: "nextCalibrationDate" },
- {
- label: "璁惧鍒嗙被", prop: "largeCategory", dataType: "tag",
- formatData: (params) => {
- return this.equipmentList.find(m => m.value == params).label
- },
- formatType: (params) => {
- return this.equipmentList.find(m => m.value == params).type
- }
- },
- { label: "鍗曚环", prop: "unitPrice" },
- {
- label: "璁惧鐘舵��", prop: "deviceStatus", dataType: "tag",
- formatData: (params) => {
- return this.deviceStatusList.find(m => m.value == params).label
- },
- formatType: (params) => {
- return this.deviceStatusList.find(m => m.value == params).type
- }
- },
- { label: "鏍″噯鍛ㄦ湡(鏈�)", prop: "calibrationDate" },
- {
- dataType: "action",
- fixed: "right",
- label: "鎿嶄綔",
- operation: [
- {
- name: "妗f淇",
- type: "text",
- clickFun: (row) => {
- this.isUpdate(row);
- },
- },
- {
- name: "鏁伴噰閰嶇疆",
- type: "text",
- clickFun: (row) => {
- this.handleConfig(row);
- },
- disabled: (row) => {
- return row.insProductItem == null || row.insProductItem === ''
- }
- },
- {
- name: "鍒犻櫎",
- type: "text",
- clickFun: (row) => {
- this.handleDelete(row);
- },
- },
- ],
- },
- ],
- page: {
- total: 0,
- size: 10,
- current: 0,
- },
- tableLoading: false,
- }
- },
- computed: {
- action() {
- return this.javaApi + '/deviceScope/uploadFile'
- }
- },
- mounted() {
- this.selectEnumByCategory()
- this.selectDevicePrincipal()
- this.obtainItemParameterList()
- this.getInsProductIds()
- // 鍒濆鍖�
- this.clickSidebar(this.clickNodeVal)
- },
- methods: {
- //鍒嗙被
- handleNotification(cate) {
- this.queryParams.largeCategory = cate
- },
- obtainItemParameterList() {
- obtainItemParameterList().then(res => {
- let data = []
- res.data.forEach(a => {
- data.push({
- label: a.laboratoryName,
- value: a.id
- })
- })
- this.subordinateDepartmentsList = data
- })
- },
- getList() {
- this.tableLoading = true;
- let param = { laboratoryNameIsNull: this.laboratoryNameIsNull, ...this.queryParams, ...this.page };
- delete param.total;
- getDeviceParameter({ ...param })
- .then((res) => {
- this.tableLoading = false;
- if (res.code === 200) {
- this.tableData = res.data.records;
- this.page.total = res.data.total;
- }
- })
- .catch((err) => {
- this.tableLoading = false;
- });
- },
- pagination({ page, limit }) {
- this.page.current = page;
- this.page.size = limit;
- this.getList();
- },
- refresh() {
- this.queryParams = {};
- this.page.current = 1;
- this.getList();
- },
- refreshTable() {
- this.page.current = 1;
- this.getList();
- },
- // 瀵煎嚭
- handleDownOne() {
- this.outLoading = true
- exportEquipmentDetails().then(res => {
- this.outLoading = false
- const blob = new Blob([res], { type: 'application/octet-stream' });
- this.$download.saveAs(blob, '璁惧浠櫒涓�瑙堣〃.doc')
- })
- },
- // 鑾峰彇瀛楀吀
- selectEnumByCategory() {
- // 璁惧鐘舵��
- this.getDicts("device_status").then((response) => {
- this.deviceStatusList = this.dictToValue(response.data);
- });
- // 璁惧鍒嗙被
- this.getDicts("device_type").then((response) => {
- this.equipmentList = this.dictToValue(response.data);
- });
- },
- // 鑾峰彇璐熻矗浜哄垪琛�
- selectDevicePrincipal() {
- selectUserCondition().then(res => {
- let data = [];
- res.data.forEach((a) => {
- data.push({
- label: a.name,
- value: a.id,
- });
- });
- this.responsiblePersonList = data
- this.authorizerList = data
- })
- },
- getInsProductIds() {
- getInsProduction().then(res => {
- this.options = res.data.map((m, i) => {
- m.id = m.name;
- let children = m.children.map(n => {
- n.label = n.name;
- n.value = n.id;
- return n
- })
- return m
- })
- this.options.forEach(item => {
- if (item.children.length == 0) {
- item.children = null;
- } else {
- item.children.forEach(m => {
- if (m.children.length == 0) {
- m.children = null;
- } else {
- m.children.forEach(n => {
- if (n.children && n.children.length == 0) {
- n.children = null;
- }
- })
- }
- })
- }
- })
- })
- },
- handleClose() {
- this.formData = {
- authorizedPerson: []
- }
- this.formData2 = {
- imageUpload: '',
- imageName: '',
- authorizedPerson: []
- }
- this.dialogVisible = false;
- this.upLoad = false;
- },
- handleClose2() {
- this.formData = {
- authorizedPerson: []
- }
- this.formData2 = {
- imageUpload: '',
- imageName: '',
- authorizedPerson: []
- }
- this.dialogVisible2 = false;
- this.upLoad = false;
- },
- selectAllByOne(row) {
- this.isUp = true
- //鎵撳紑寮规
- this.dialogVisible = true;
- //row = 鐐瑰嚮瀵瑰簲琛屽��
- //澶嶅埗缁檉ormData
- this.formData = this.HaveJson(row);
- console.log(row.insProductIds + 'valll');
- this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
- },
- isUpdate(row) {
- //淇敼 isUp 涓烘。妗堜慨鏀�
- this.isUp = false
- //鎵撳紑寮规
- this.dialogVisible = true;
- //row = 鐐瑰嚮瀵瑰簲琛屽�间竴琛屽��
- //澶嶅埗缁檉ormData
- this.formData = this.HaveJson(row);
- if (typeof (row.insProductIds) === 'number') {
- row.insProductIds = row.insProductIds + ''
- }
- this.formData.deviceStatus = this.formData.deviceStatus + ''
- this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
- // 灏嗘椂闂存牸寮忎负yyyy-MM-dd 杩涜杞崲
- const dateRegex = /^\d{4}-\d{2}-\d{2}$/
- Object.keys(this.formData).forEach(key => {
- if (dateRegex.test(this.formData[key])) {
- this.formData[key] = `${this.formData[key]} 00:00:00`
- }
- })
- },
- beforeUpload(file) {
- if (file.size > 1024 * 1024 * 10) {
- this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
- this.$refs.upload.clearFiles()
- return false;
- } else {
- return true;
- }
- },
- onError(err, file, fileList) {
- this.$message.error('涓婁紶澶辫触')
- this.$refs.upload.clearFiles()
- },
- // 涓婁紶鍥剧墖鎴愬姛
- handleSuccessUpImg(response,) {
- if (response.code == 200) {
- this.formData.imageUpload = response.data.url;
- this.formData.imageName = response.data.name;
- }
- },
- handleSuccessUpImg2(response) {
- if (response.code == 200) {
- this.$nextTick(() => {
- this.formData.imageUpload = response.data.url;
- this.formData.imageName = response.data.name;
- this.formData2.imageUpload = response.data.url;
- this.formData2.imageName = response.data.name;
- })
- }
- },
- submitForm() {
- if (!this.formData.deviceName) {
- this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
- return
- }
- if (!this.formData.enDeviceName) {
- this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
- return
- }
- if (!this.formData.specificationModel) {
- this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
- return
- }
- if (!this.formData.managementNumber) {
- this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
- return
- }
- if (!this.formData.activationDate) {
- this.$message.error('鏈緭鍏ユ牎鍑嗘湁鏁堟湡')
- return
- }
- if (!this.formData.subordinateDepartmentsId) {
- this.$message.error('鏈�夋嫨鎵�灞為儴闂�')
- return
- }
- if (this.formData.deviceStatus === '' || this.formData.deviceStatus === null) {
- this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
- return
- }
- if (!this.formData.calibrationDate) {
- this.$message.error('鏈緭鍏ユ牎鍑嗗懆鏈燂紙鏈堬級')
- return
- }
- delete this.formData.createTime
- delete this.formData.updateTime
- delete this.formData.createUser
- delete this.formData.updateUser
- const formData = this.HaveJson(this.formData)
- formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
- if (formData.authorizedPerson.length === 0) {
- formData.authorizedPerson = ''
- } else {
- formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
- }
- this.upLoad = true;
- upDeviceParameter(formData).then(res => {
- this.$message.success('淇敼鎴愬姛')
- this.upLoad = false
- this.refreshTable('page')
- this.dialogVisible = false
- }).catch(e => {
- this.$message.error('淇敼澶辫触')
- this.dialogVisible = false
- this.upLoad = false
- })
- },
- // 鎻愪氦妗f淇--鏂板
- submitForm2() {
- if (!this.formData2.deviceName) {
- this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
- return
- }
- if (!this.formData2.enDeviceName) {
- this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
- return
- }
- if (!this.formData2.specificationModel) {
- this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
- return
- }
- if (!this.formData2.managementNumber) {
- this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
- return
- }
- if (!this.formData2.activationDate) {
- this.$message.error('鏈緭鍏ユ牎鍑嗘湁鏁堟湡')
- return
- }
- if (!this.formData2.deviceStatus) {
- this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
- return
- }
- if (!this.formData2.calibrationDate) {
- this.$message.error('杈撳叆鏍″噯鍛ㄦ湡锛堟湀锛�')
- return
- }
- const formData = this.HaveJson(this.formData2)
- formData.insProductIds = formData.insProductIds ? formData.insProductIds.join() : ''
- if (formData.authorizedPerson.length === 0) {
- formData.authorizedPerson = ''
- } else {
- formData.authorizedPerson = JSON.stringify(formData.authorizedPerson)
- }
- this.upLoad2 = true;
- addDeviceParameter(formData).then(res => {
- this.$message.success('鎻愪氦鎴愬姛')
- this.upLoad2 = false
- this.refreshTable('page')
- this.dialogVisible2 = false
- this.formData2 = {
- imageUpload: '',
- imageName: '',
- authorizedPerson: []
- }
- }).catch(e => {
- this.$message.error('鎻愪氦澶辫触')
- this.dialogVisible2 = false
- this.upLoad2 = false
- })
- },
- handleConfig(row) {
- let list = []
- if (row.insProductItem) {
- list = row.insProductItem.split(';')
- }
- let list2 = []
- list.map((item) => {
- const obj = Object.assign({
- deviceId: row.id,
- insProductItem: item,
- })
- list2.push(obj)
- })
- this.tableList = list2
- this.deviceId = row.id
- this.$nextTick(() => {
- this.showData = true
- })
- },
- closeDataVue() {
- this.clickSidebar(this.clickNodeVal)
- this.showData = false
- },
- submitForm3() {
- if (!this.configForm.ip) {
- this.$message.error('璇峰~鍐橧P');
- return
- }
- if (!this.configForm.collectUrl) {
- this.$message.error('璇峰~鍐欓噰闆嗗湴鍧�');
- return
- }
- if (!this.configForm.storageUrl) {
- this.$message.error('璇峰~鍐欏偍瀛樺湴鍧�');
- return
- }
- if (!this.configForm.refer) {
- this.$message.error('璇峰~鍐欏弬鐓�');
- return
- }
- if (!this.configForm.x) {
- this.$message.error('璇峰~鍐橷');
- return
- }
- if (!this.configForm.y) {
- this.$message.error('璇峰~鍐橸');
- return
- }
+ props: {
+ clickNodeVal: {
+ type: Object,
+ default: () => {
+ return {};
+ },
+ },
+ },
+ components: {
+ limsTable,
+ dataAcquisitionConfig,
+ },
+ data() {
+ return {
+ dateFormat: "yyyy-MM-dd",
+ deviceId: "",
+ fileTypeOptions: [
+ { label: "csv", value: ".csv" },
+ { label: "db", value: ".db" },
+ { label: "mdb", value: ".mdb" },
+ { label: "word", value: ".docx" },
+ { label: "excel", value: ".xlsx" },
+ { label: "txt", value: ".txt" },
+ { label: "png", value: ".png" },
+ ],
+ //鏄惁鏄。妗堜慨璁� true涓嶆槸 false鏄�
+ isUp: true,
+ formData: {
+ authorizedPerson: [],
+ },
+ formData2: {
+ imageUpload: "",
+ imageName: "",
+ deviceStatus: "",
+ authorizedPerson: [],
+ },
+ value: "",
+ props: { multiple: true, emitPath: false, value: "id", label: "name" },
+ options: [],
+ labelPosition: "right",
+ dialogVisible: false,
+ dialogVisible2: false,
+ addPower: false,
+ showData: false, // 鏁伴噰閰嶇疆椤甸潰
+ tableList: [],
+ addDia: true,
+ addPower: true,
+ //璁惧绫诲瀷鍒楄〃
+ equipmentList: [],
+ // 璐熻矗浜哄垪琛�
+ responsiblePersonList: [],
+ // 鎺堟潈浜哄垪琛�
+ authorizerList: [],
+ // 褰撳墠鐘舵�佸垪琛�
+ deviceStatusList: [],
+ // 鎵�灞為儴闂�
+ subordinateDepartmentsList: [],
+ upLoad: false,
+ upLoad2: false,
+ dialogVisible3: false,
+ upLoad3: false,
+ configForm: {},
+ laboratoryNameIsNull: false,
+ queryParams: {},
+ tableData: [],
+ column: [
+ {
+ label: "璁惧鍚嶇О",
+ prop: "deviceName",
+ dataType: "link",
+ linkEvent: { method: "selectAllByOne", vueComponent: this },
+ },
+ { label: "璁惧鍚嶇ОEN", prop: "enDeviceName" },
+ {
+ label: "瑙勬牸鍨嬪彿",
+ prop: "specificationModel",
+ },
+ { label: "鐢熶骇鍘傚", prop: "manufacturer" },
+ { label: "鍑哄巶缂栧彿", prop: "factoryNo" },
+ { label: "绠$悊缂栧彿", prop: "managementNumber" },
+ { label: "鎶�鏈寚鏍�", prop: "technicalIndicators" },
+ { label: "璐疆鏃ユ湡", prop: "acquisitionDate" },
+ { label: "鍚敤鏃ユ湡", prop: "activationDate" },
+ { label: "绠$悊浜�", prop: "equipmentManagerUser" },
+ { label: "瀛樻斁鐐�", prop: "storagePoint" },
+ { label: "鎵�灞為儴闂�", prop: "laboratoryName" },
+ { label: "妫�楠岄」鐩�", prop: "insProductItem" },
+ { label: "鏍″噯鏈嶅姟鏈烘瀯", prop: "calibrationServices" },
+ { label: "鏈�杩戞牎鍑嗘棩鏈�", prop: "lastCalibrationDateTwo" },
+ { label: "鏈�杩戞牳鏌ユ棩鏈�", prop: "lastCalibrationDate" },
+ { label: "涓嬫鏍″噯鏃ユ湡", prop: "nextCalibrationDateTwo" },
+ { label: "涓嬫鏍告煡鏃ユ湡", prop: "nextCalibrationDate" },
+ {
+ label: "璁惧鍒嗙被",
+ prop: "largeCategory",
+ dataType: "tag",
+ formatData: (params) => {
+ return this.equipmentList.find((m) => m.value == params).label;
+ },
+ formatType: (params) => {
+ return this.equipmentList.find((m) => m.value == params).type;
+ },
+ },
+ { label: "鍗曚环", prop: "unitPrice" },
+ {
+ label: "璁惧鐘舵��",
+ prop: "deviceStatus",
+ dataType: "tag",
+ formatData: (params) => {
+ return this.deviceStatusList.find((m) => m.value == params).label;
+ },
+ formatType: (params) => {
+ return this.deviceStatusList.find((m) => m.value == params).type;
+ },
+ },
+ { label: "鏍″噯鍛ㄦ湡(鏈�)", prop: "calibrationDate" },
+ {
+ dataType: "action",
+ fixed: "right",
+ label: "鎿嶄綔",
+ operation: [
+ {
+ name: "妗f淇",
+ type: "text",
+ clickFun: (row) => {
+ this.isUpdate(row);
+ },
+ },
+ {
+ name: "鏁伴噰閰嶇疆",
+ type: "text",
+ clickFun: (row) => {
+ this.handleConfig(row);
+ },
+ disabled: (row) => {
+ return row.insProductItem == null || row.insProductItem === "";
+ },
+ },
+ {
+ name: "鍒犻櫎",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDelete(row);
+ },
+ },
+ ],
+ },
+ ],
+ page: {
+ total: 0,
+ size: 10,
+ current: 0,
+ },
+ tableLoading: false,
+ };
+ },
+ computed: {
+ action() {
+ return this.javaApi + "/deviceScope/uploadFile";
+ },
+ },
+ mounted() {
+ this.selectEnumByCategory();
+ this.selectDevicePrincipal();
+ this.obtainItemParameterList();
+ this.getInsProductIds();
+ // 鍒濆鍖�
+ this.clickSidebar(this.clickNodeVal);
+ },
+ methods: {
+ //鍒嗙被
+ handleNotification(cate) {
+ this.queryParams.largeCategory = cate;
+ },
+ obtainItemParameterList() {
+ obtainItemParameterList().then((res) => {
+ let data = [];
+ res.data.forEach((a) => {
+ data.push({
+ label: a.laboratoryName,
+ value: a.id,
+ });
+ });
+ this.subordinateDepartmentsList = data;
+ });
+ },
+ getList() {
+ this.tableLoading = true;
+ let param = {
+ laboratoryNameIsNull: this.laboratoryNameIsNull,
+ ...this.queryParams,
+ ...this.page,
+ };
+ delete param.total;
+ getDeviceParameter({ ...param })
+ .then((res) => {
+ this.tableLoading = false;
+ if (res.code === 200) {
+ this.tableData = res.data.records;
+ this.page.total = res.data.total;
+ }
+ })
+ .catch((err) => {
+ this.tableLoading = false;
+ });
+ },
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
+ this.getList();
+ },
+ refresh() {
+ this.queryParams = {};
+ this.page.current = 1;
+ this.getList();
+ },
+ refreshTable() {
+ this.page.current = 1;
+ this.getList();
+ },
+ // 瀵煎嚭
+ handleDownOne() {
+ this.outLoading = true;
+ exportEquipmentDetails().then((res) => {
+ this.outLoading = false;
+ const blob = new Blob([res], { type: "application/octet-stream" });
+ this.$download.saveAs(blob, "璁惧浠櫒涓�瑙堣〃.doc");
+ });
+ },
+ // 鑾峰彇瀛楀吀
+ selectEnumByCategory() {
+ // 璁惧鐘舵��
+ this.getDicts("device_status").then((response) => {
+ this.deviceStatusList = this.dictToValue(response.data);
+ });
+ // 璁惧鍒嗙被
+ this.getDicts("device_type").then((response) => {
+ this.equipmentList = this.dictToValue(response.data);
+ });
+ },
+ // 鑾峰彇璐熻矗浜哄垪琛�
+ selectDevicePrincipal() {
+ selectUserCondition().then((res) => {
+ let data = [];
+ res.data.forEach((a) => {
+ data.push({
+ label: a.name,
+ value: a.id,
+ });
+ });
+ this.responsiblePersonList = data;
+ this.authorizerList = data;
+ });
+ },
+ getInsProductIds() {
+ getInsProduction().then((res) => {
+ this.options = res.data.map((m, i) => {
+ m.id = m.name;
+ let children = m.children.map((n) => {
+ n.label = n.name;
+ n.value = n.id;
+ return n;
+ });
+ return m;
+ });
+ this.options.forEach((item) => {
+ if (item.children.length == 0) {
+ item.children = null;
+ } else {
+ item.children.forEach((m) => {
+ if (m.children.length == 0) {
+ m.children = null;
+ } else {
+ m.children.forEach((n) => {
+ if (n.children && n.children.length == 0) {
+ n.children = null;
+ }
+ });
+ }
+ });
+ }
+ });
+ });
+ },
+ handleClose() {
+ this.formData = {
+ authorizedPerson: [],
+ };
+ this.formData2 = {
+ imageUpload: "",
+ imageName: "",
+ authorizedPerson: [],
+ };
+ this.dialogVisible = false;
+ this.upLoad = false;
+ },
+ handleClose2() {
+ this.formData = {
+ authorizedPerson: [],
+ };
+ this.formData2 = {
+ imageUpload: "",
+ imageName: "",
+ authorizedPerson: [],
+ };
+ this.dialogVisible2 = false;
+ this.upLoad = false;
+ },
+ selectAllByOne(row) {
+ this.isUp = true;
+ //鎵撳紑寮规
+ this.dialogVisible = true;
+ //row = 鐐瑰嚮瀵瑰簲琛屽��
+ //澶嶅埗缁檉ormData
+ this.formData = this.HaveJson(row);
+ console.log(row.insProductIds + "valll");
+ this.formData.insProductIds = row.insProductIds
+ ? row.insProductIds.split(",")
+ : [];
+ },
+ isUpdate(row) {
+ //淇敼 isUp 涓烘。妗堜慨鏀�
+ this.isUp = false;
+ //鎵撳紑寮规
+ this.dialogVisible = true;
+ //row = 鐐瑰嚮瀵瑰簲琛屽�间竴琛屽��
+ //澶嶅埗缁檉ormData
+ this.formData = this.HaveJson(row);
+ if (typeof row.insProductIds === "number") {
+ row.insProductIds = row.insProductIds + "";
+ }
+ this.formData.deviceStatus = this.formData.deviceStatus + "";
+ this.formData.insProductIds = row.insProductIds
+ ? row.insProductIds.split(",")
+ : [];
+ // 灏嗘椂闂存牸寮忎负yyyy-MM-dd 杩涜杞崲
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
+ Object.keys(this.formData).forEach((key) => {
+ if (dateRegex.test(this.formData[key])) {
+ this.formData[key] = `${this.formData[key]} 00:00:00`;
+ }
+ });
+ },
+ beforeUpload(file) {
+ if (file.size > 1024 * 1024 * 10) {
+ this.$message.error("涓婁紶鏂囦欢涓嶈秴杩�10M");
+ this.$refs.upload.clearFiles();
+ return false;
+ } else {
+ return true;
+ }
+ },
+ onError(err, file, fileList) {
+ this.$message.error("涓婁紶澶辫触");
+ this.$refs.upload.clearFiles();
+ },
+ // 涓婁紶鍥剧墖鎴愬姛
+ handleSuccessUpImg(response) {
+ if (response.code == 200) {
+ this.formData.imageUpload = response.data.url;
+ this.formData.imageName = response.data.name;
+ }
+ },
+ handleSuccessUpImg2(response) {
+ if (response.code == 200) {
+ this.$nextTick(() => {
+ this.formData.imageUpload = response.data.url;
+ this.formData.imageName = response.data.name;
+ this.formData2.imageUpload = response.data.url;
+ this.formData2.imageName = response.data.name;
+ });
+ }
+ },
+ submitForm() {
+ if (!this.formData.deviceName) {
+ this.$message.error("鏈緭鍏ヤ华鍣ㄥ悕绉�");
+ return;
+ }
+ if (!this.formData.enDeviceName) {
+ this.$message.error("鏈緭鍏ヤ华鍣ㄥ悕绉癊N");
+ return;
+ }
+ if (!this.formData.specificationModel) {
+ this.$message.error("鏈緭鍏ヨ鏍煎瀷鍙�");
+ return;
+ }
+ if (!this.formData.managementNumber) {
+ this.$message.error("鏈緭鍏ョ鐞嗙紪鍙�");
+ return;
+ }
+ if (!this.formData.activationDate) {
+ this.$message.error("鏈緭鍏ユ牎鍑嗘湁鏁堟湡");
+ return;
+ }
+ if (!this.formData.subordinateDepartmentsId) {
+ this.$message.error("鏈�夋嫨鎵�灞為儴闂�");
+ return;
+ }
+ if (
+ this.formData.deviceStatus === "" ||
+ this.formData.deviceStatus === null
+ ) {
+ this.$message.error("鏈�夋嫨褰撳墠鐘舵��");
+ return;
+ }
+ if (!this.formData.calibrationDate) {
+ this.$message.error("鏈緭鍏ユ牎鍑嗗懆鏈燂紙鏈堬級");
+ return;
+ }
+ delete this.formData.createTime;
+ delete this.formData.updateTime;
+ delete this.formData.createUser;
+ delete this.formData.updateUser;
+ const formData = this.HaveJson(this.formData);
+ formData.insProductIds = formData.insProductIds
+ ? formData.insProductIds.join()
+ : "";
+ if (formData.authorizedPerson.length === 0) {
+ formData.authorizedPerson = "";
+ } else {
+ formData.authorizedPerson = JSON.stringify(formData.authorizedPerson);
+ }
+ this.upLoad = true;
+ upDeviceParameter(formData)
+ .then((res) => {
+ this.$message.success("淇敼鎴愬姛");
+ this.upLoad = false;
+ this.refreshTable("page");
+ this.dialogVisible = false;
+ })
+ .catch((e) => {
+ this.$message.error("淇敼澶辫触");
+ this.dialogVisible = false;
+ this.upLoad = false;
+ });
+ },
+ // 鎻愪氦妗f淇--鏂板
+ submitForm2() {
+ if (!this.formData2.deviceName) {
+ this.$message.error("鏈緭鍏ヤ华鍣ㄥ悕绉�");
+ return;
+ }
+ if (!this.formData2.enDeviceName) {
+ this.$message.error("鏈緭鍏ヤ华鍣ㄥ悕绉癊N");
+ return;
+ }
+ if (!this.formData2.specificationModel) {
+ this.$message.error("鏈緭鍏ヨ鏍煎瀷鍙�");
+ return;
+ }
+ if (!this.formData2.managementNumber) {
+ this.$message.error("鏈緭鍏ョ鐞嗙紪鍙�");
+ return;
+ }
+ if (!this.formData2.activationDate) {
+ this.$message.error("鏈緭鍏ユ牎鍑嗘湁鏁堟湡");
+ return;
+ }
+ if (!this.formData2.deviceStatus) {
+ this.$message.error("鏈�夋嫨褰撳墠鐘舵��");
+ return;
+ }
+ if (!this.formData2.calibrationDate) {
+ this.$message.error("杈撳叆鏍″噯鍛ㄦ湡锛堟湀锛�");
+ return;
+ }
+ const formData = this.HaveJson(this.formData2);
+ formData.insProductIds = formData.insProductIds
+ ? formData.insProductIds.join()
+ : "";
+ if (formData.authorizedPerson.length === 0) {
+ formData.authorizedPerson = "";
+ } else {
+ formData.authorizedPerson = JSON.stringify(formData.authorizedPerson);
+ }
+ this.upLoad2 = true;
+ addDeviceParameter(formData)
+ .then((res) => {
+ this.$message.success("鎻愪氦鎴愬姛");
+ this.upLoad2 = false;
+ this.refreshTable("page");
+ this.dialogVisible2 = false;
+ this.formData2 = {
+ imageUpload: "",
+ imageName: "",
+ authorizedPerson: [],
+ };
+ })
+ .catch((e) => {
+ this.$message.error("鎻愪氦澶辫触");
+ this.dialogVisible2 = false;
+ this.upLoad2 = false;
+ });
+ },
+ handleConfig(row) {
+ let list = [];
+ if (row.insProductItem) {
+ list = row.insProductItem.split(";");
+ }
+ let list2 = [];
+ list.map((item) => {
+ const obj = Object.assign({
+ deviceId: row.id,
+ insProductItem: item,
+ });
+ list2.push(obj);
+ });
+ this.tableList = list2;
+ this.deviceId = row.id;
+ this.$nextTick(() => {
+ this.showData = true;
+ });
+ },
+ closeDataVue() {
+ this.clickSidebar(this.clickNodeVal);
+ this.showData = false;
+ },
+ submitForm3() {
+ if (!this.configForm.ip) {
+ this.$message.error("璇峰~鍐橧P");
+ return;
+ }
+ if (!this.configForm.collectUrl) {
+ this.$message.error("璇峰~鍐欓噰闆嗗湴鍧�");
+ return;
+ }
+ if (!this.configForm.storageUrl) {
+ this.$message.error("璇峰~鍐欏偍瀛樺湴鍧�");
+ return;
+ }
+ if (!this.configForm.refer) {
+ this.$message.error("璇峰~鍐欏弬鐓�");
+ return;
+ }
+ if (!this.configForm.x) {
+ this.$message.error("璇峰~鍐橷");
+ return;
+ }
+ if (!this.configForm.y) {
+ this.$message.error("璇峰~鍐橸");
+ return;
+ }
- this.upLoad3 = true
- numberCollect(this.configForm).then(res => {
- this.upLoad3 = false
- this.$message.success('鎿嶄綔鎴愬姛')
- this.refreshTable('page')
- this.dialogVisible3 = false
- }).catch(e => {
- this.$message.error('鎿嶄綔澶辫触')
- this.dialogVisible3 = false
- this.upLoad3 = false
- })
- },
- // 鐐瑰嚮渚ц竟鏍忓埛鏂�
- clickSidebar(clickNodeVal) {
- this.laboratoryNameIsNull = false
- // 鏄惁瀛樺湪value锛屽瓨鍦╲alue浠h〃涓轰笁绾�
- if (!clickNodeVal.value) {
- this.list = [];
- this.queryParams.laboratoryName = null
- this.queryParams.storagePoint = null
- // 绛変簬1浠h〃涓烘爲鐨勪竴绾э紝label涓洪儴闂�
- if (clickNodeVal.label == '鍏朵粬') {
- this.laboratoryNameIsNull = true
- this.refreshTable('page')
- return
- }
- if (clickNodeVal.level == 1) {
- this.queryParams.laboratoryName = clickNodeVal.label
- // 绛変簬浜岀骇銆俵abel涓哄瓨鍌ㄥ湴鐐�
- } else if (clickNodeVal.level == 2) {
- // 鍏朵粬琛ㄧず娌℃湁閰嶇疆瀹為獙瀹わ紝鍙厤缃簡鍦扮偣
- if (clickNodeVal.parent.label == '鍏朵粬') {
- this.laboratoryNameIsNull = true
- } else {
- this.queryParams.laboratoryName = clickNodeVal.parent.label
- }
- this.queryParams.storagePoint = clickNodeVal.label
- }
- this.refreshTable('page')
- }
- },
- handleDelete(row) {
- this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
- .then(() => {
- delDeviceParameter({ id: row.id }).then((res) => {
- this.$message.success("鍒犻櫎鎴愬姛");
- this.refresh();
- });
- })
- .catch(() => { });
- },
- },
- watch: {
- // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
- clickNodeVal(newVal) {
- this.clickSidebar(newVal)
- }
- }
-}
+ this.upLoad3 = true;
+ numberCollect(this.configForm)
+ .then((res) => {
+ this.upLoad3 = false;
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.refreshTable("page");
+ this.dialogVisible3 = false;
+ })
+ .catch((e) => {
+ this.$message.error("鎿嶄綔澶辫触");
+ this.dialogVisible3 = false;
+ this.upLoad3 = false;
+ });
+ },
+ // 鐐瑰嚮渚ц竟鏍忓埛鏂�
+ clickSidebar(clickNodeVal) {
+ this.laboratoryNameIsNull = false;
+ // 鏄惁瀛樺湪value锛屽瓨鍦╲alue浠h〃涓轰笁绾�
+ if (!clickNodeVal.value) {
+ this.list = [];
+ this.queryParams.laboratoryName = null;
+ this.queryParams.storagePoint = null;
+ // 绛変簬1浠h〃涓烘爲鐨勪竴绾э紝label涓洪儴闂�
+ if (clickNodeVal.label == "鍏朵粬") {
+ this.laboratoryNameIsNull = true;
+ this.refreshTable("page");
+ return;
+ }
+ if (clickNodeVal.level == 1) {
+ this.queryParams.laboratoryName = clickNodeVal.label;
+ // 绛変簬浜岀骇銆俵abel涓哄瓨鍌ㄥ湴鐐�
+ } else if (clickNodeVal.level == 2) {
+ // 鍏朵粬琛ㄧず娌℃湁閰嶇疆瀹為獙瀹わ紝鍙厤缃簡鍦扮偣
+ if (clickNodeVal.parent.label == "鍏朵粬") {
+ this.laboratoryNameIsNull = true;
+ } else {
+ this.queryParams.laboratoryName = clickNodeVal.parent.label;
+ }
+ this.queryParams.storagePoint = clickNodeVal.label;
+ }
+ this.refreshTable("page");
+ }
+ },
+ handleDelete(row) {
+ this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ delDeviceParameter({ id: row.id }).then((res) => {
+ this.$message.success("鍒犻櫎鎴愬姛");
+ this.refresh();
+ });
+ })
+ .catch(() => {});
+ },
+ },
+ watch: {
+ // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+ clickNodeVal(newVal) {
+ this.clickSidebar(newVal);
+ },
+ },
+};
</script>
<style scoped>
.role_manage {
- width: 100%;
- height: 100%;
+ width: 100%;
+ height: 100%;
}
.title {
- line-height: 15px;
+ line-height: 15px;
}
.search {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-top: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 10px;
}
.search_thing {
- width: 14em;
- display: flex;
- align-items: center;
+ width: 14em;
+ display: flex;
+ align-items: center;
}
.search_label {
- width: 80px;
- font-size: 14px;
- text-align: right;
+ width: 80px;
+ font-size: 14px;
+ text-align: right;
}
.search_input {
- width: calc(100% - 80px);
+ width: calc(100% - 80px);
}
.table {
- margin-top: 12px;
- background-color: #fff;
- height: calc(100vh - 17em);
+ margin-top: 12px;
+ background-color: #fff;
+ height: calc(100vh - 17em);
}
.el-form-item {
- margin-bottom: 16px;
+ margin-bottom: 16px;
}
.picName {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- word-break: break-all;
- width: 120px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ word-break: break-all;
+ width: 120px;
}
</style>
diff --git a/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue b/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
index 436b01f..ab82ea4 100644
--- a/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
+++ b/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
@@ -31,9 +31,9 @@
<template v-slot="scope">
<el-button type="text" size="small" @click="downloadFile(scope.row.fileSystemName)">涓嬭浇</el-button>
<el-button type="text" size="small" style="color: red;"
- @click="deleteHomeworkGuidebook(scope.row)">鍒犻櫎</el-button>
- <el-button type="text" size="small" @click="instructionEditFun(scope.row)">缂栬緫</el-button>
- <el-button type="text" size="small" @click="approval(scope.row)">瀹℃壒</el-button>
+ @click="deleteHomeworkGuidebook(scope.row)" :disabled="scope.row.status === true">鍒犻櫎</el-button>
+ <el-button type="text" size="small" @click="instructionEditFun(scope.row)" :disabled="scope.row.status === true">缂栬緫</el-button>
+ <el-button type="text" size="small" @click="approval(scope.row)" :disabled="scope.row.status === true">瀹℃壒</el-button>
</template>
</el-table-column>
</el-table>
@@ -309,18 +309,7 @@
});
},
downloadFile(fileName) {
- let state = /\.(jpg|jpeg|png|gif)$/i.test(fileName)
- if (state) {
- let url = this.javaApi + '/img/' + fileName;
- fileDownload.downloadIamge(url, fileName)
- } else {
- const url = this.javaApi + '/word/' + fileName
- const link = document.createElement('a');
- link.href = url;
- link.download = fileName;
- link.click();
- this.$message.success('涓嬭浇鎴愬姛')
- }
+ this.$download.saveAs(fileName, fileName)
},
instructionEditFun(row) {
this.dialogVisible = true
diff --git a/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue b/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
index b23611b..7f3806b 100644
--- a/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
+++ b/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
@@ -2,8 +2,7 @@
<template>
<div class="role_manage">
<el-row class="title">
- <el-col :span="8" style="text-align: left;">棰勫畾鎬昏</el-col>
- <el-col :span="16" style="text-align: right;padding-bottom:10px">
+ <el-col :span="24" style="text-align: right;padding:10px 0">
<el-date-picker
v-model="startTime"
format="yyyy-MM-dd"
@@ -19,7 +18,7 @@
size="mini"
type="date"
value-format="yyyy-MM-dd"/>
- <el-button size="mini" type="primary" @click="ValidateAndQuery">鏌� 璇�</el-button>
+ <el-button size="mini" type="primary" @click="ValidateAndQuery" style="margin-left: 10px">鏌� 璇�</el-button>
</el-col>
</el-row>
<div class="table-container">
@@ -134,7 +133,6 @@
}
},
data() {
-
return {
timeSlots: ['09:00-12:00', '13:00-18:00', '18:00-22:00'],
dates: [],
@@ -154,7 +152,6 @@
startTime: '',
endTime: '',
entity: {
- deviceName: null,
laboratoryName: '',
storagePoint: '',
},
@@ -169,15 +166,6 @@
reservationSpecification: ''
},
total: '',
- componentData: {
- entity: {
- largeCategory: null,
- orderBy: {
- field: 'id',
- order: 'asc'
- }
- },
- },
yuyue: null,
yuyuetime: '',
rules: {
@@ -202,14 +190,12 @@
this.clickSidebar(newVal)
}
},
-
created() {
this.clickSidebar(this.clickNodeVal)
this.initDate();
},
mounted() {
- this.getStartTimeAndEndTime();
-
+ // this.getStartTimeAndEndTime();
},
methods: {
isBeforeDate() {
@@ -218,7 +204,7 @@
const appointment = this.appointment && this.appointment.split('-')
let appointment0 = ''
let appointment1 = ''
- if (appointment !== '') {
+ if (appointment) {
appointment0 = appointment[0].slice(0, 2)
appointment1 = appointment[1].slice(0, 2)
}
@@ -238,7 +224,7 @@
if (!row || row.dateList === null || row.dateList === undefined || row.dateList === "") {
return '棰勭害';
}
- var dateLst = row.dateList
+ const dateLst = row.dateList
for (const dateLstElement of dateLst) {
if (dateLstElement.date === date) {
if (dateLstElement.value === 0) {
@@ -312,12 +298,16 @@
getStartTimeAndEndTime() {
//鏌ヨ閫昏緫
this.tableLoading = true;
- reservationSelectDevice({
- current: this.currentPage,
- size: this.pageSize,
- ...this.entity,
- laboratoryNameIsNull: this.laboratoryNameIsNull
- }).then(res => {
+ const params = {
+ current: this.currentPage,
+ size: this.pageSize,
+ starttime: this.startTime,
+ endtime: this.endTime,
+ laboratoryNameIsNull: this.laboratoryNameIsNull,
+ laboratoryName: this.entity.laboratoryName,
+ storagePoint: this.entity.storagePoint,
+ }
+ reservationSelectDevice(params).then(res => {
this.tableLoading = false;
if (res.code === 200) {
this.tableData = res.data;
@@ -326,17 +316,20 @@
this.tableLoading = false;
})
},
+ // 鎵撳紑棰勭害寮规
openModal(date, row) {
+ console.log('date', date);
+ console.log('row', row);
this.yuyue = row;
this.yuyuetime = date;
this.appointment = row.time
this.showModal = true;
this.getList();
},
+ // 鎵撳紑鏂板缓棰勫畾寮规
openAdd() {
this.addVisiable = true;
this.addReservation.deviceId = this.yuyue.id;
- // this.addReservation.deviceNumber = this.yuyue.deviceNumber;
this.addReservation.deviceName = this.yuyue.deviceName;
this.addReservation.reservationTime = this.yuyuetime + " " + this.yuyue.time;
this.addReservation.specificTime = this.yuyue.time;
@@ -393,9 +386,10 @@
}
});
},
+ // 棰勫畾淇℃伅鏌ヨ
getList() {
const params = {
- selectReservationParameterPage: this.yuyue.id,
+ deviceId: this.yuyue.id,
reservationTime: this.yuyuetime,
specificTime: this.yuyue.time,
}
diff --git a/src/views/CNAS/resourceDemand/device/index.vue b/src/views/CNAS/resourceDemand/device/index.vue
index 8206ced..a12de51 100644
--- a/src/views/CNAS/resourceDemand/device/index.vue
+++ b/src/views/CNAS/resourceDemand/device/index.vue
@@ -47,7 +47,7 @@
<div v-if="!isShowAll" style="height: 100%;">
<el-tabs v-model="tabListActiveName" class="main_right" type="border-card" @tab-click="handleClick">
<el-tab-pane label="璁惧杩愯鎬昏" name="璁惧杩愯鎬昏">
- <operationOverview v-if="tabListActiveName == '璁惧杩愯鎬昏'" :clickNodeVal="clickNodeVal"/>
+ <operationOverview view v-if="tabListActiveName == '璁惧杩愯鎬昏'" :clickNodeVal="clickNodeVal"/>
</el-tab-pane>
<el-tab-pane label="璁惧妗f" name="璁惧妗f">
<files v-if="tabListActiveName == '璁惧妗f'" :clickNodeVal="clickNodeVal" />
@@ -123,7 +123,7 @@
isShowAll: true,
deviceName: "", // 渚ц竟鏍忔悳绱�
loading: false,
- tabListActiveName: '璁惧妗f',
+ tabListActiveName: '璁惧杩愯鎬昏',
menuListActiveName: '璁惧鎬昏',
list: [],
clickNodeVal: {}
@@ -200,7 +200,7 @@
.device-right {
background: #fff;
width: calc(100% - 250px);
- height: calc(100vh - 100px);
+ height: calc(100vh - 40px);
border-radius: 16px;
box-sizing: border-box;
padding: 10px;
diff --git a/src/views/business/inspectionOrder/add.vue b/src/views/business/inspectionOrder/add.vue
index b726824..ade64a8 100644
--- a/src/views/business/inspectionOrder/add.vue
+++ b/src/views/business/inspectionOrder/add.vue
@@ -80,7 +80,7 @@
v-show="active == 3 && addObj.companyId"
>閫氳繃</el-button
>
- <el-button size="medium" @click="$parent.playOrder(0)">
+ <el-button size="medium" @click="$router.go(-1)">
<span style="color: #3a7bfa">杩斿洖</span>
</el-button>
</el-col>
@@ -172,7 +172,7 @@
placeholder="璇疯緭鍏�"
class="search_input"
clearable
- :readonly="active > 1"
+ :disabled="active > 1"
v-model="addObj.phone"
></el-input>
</el-form-item>
@@ -248,7 +248,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="鎶ュ憡鍙戦�佹柟寮忥細" prop="send">
- <el-radio-group v-model="addObj.send">
+ <el-radio-group v-model="addObj.send" :disabled="active > 1">
<el-radio :label="1">鑷彇</el-radio>
<el-radio :label="0">鍏朵粬</el-radio>
</el-radio-group>
@@ -260,7 +260,11 @@
prop="processing"
class="processing_input"
>
- <el-radio-group v-model="addObj.processing" size="mini">
+ <el-radio-group
+ v-model="addObj.processing"
+ :disabled="active > 1"
+ size="mini"
+ >
<el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio>
<el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio>
</el-radio-group>
@@ -274,7 +278,7 @@
:placeholder="active > 1 ? '' : '璇疯緭鍏�'"
clearable
v-model="addObj.engineering"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -291,7 +295,7 @@
:placeholder="active > 1 ? '' : '璇疯緭鍏�'"
clearable
v-model="addObj.engineeringEn"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -303,7 +307,7 @@
placeholder="璇疯緭鍏�"
clearable
v-model="addObj.production"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -319,13 +323,13 @@
placeholder="璇疯緭鍏�"
clearable
v-model="addObj.productionEn"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鏄惁鐣欐牱锛�" prop="isLeave">
- <el-radio-group v-model="addObj.isLeave">
+ <el-radio-group v-model="addObj.isLeave" :disabled="active > 1">
<el-radio :label="0">涓嶇暀鏍�</el-radio>
<el-radio :label="1">鐣欐牱</el-radio>
</el-radio-group>
@@ -336,6 +340,7 @@
<el-col :span="6">
<el-form-item label="鏄惁娑夊強閰嶅鏍峰搧锛�" prop="mating">
<el-radio-group
+ :disabled="active > 1"
v-model="addObj.mating"
@change="$refs.sampleTable.doLayout()"
>
@@ -355,7 +360,7 @@
:placeholder="active > 1 ? '' : '璇疯緭鍏�'"
clearable
v-model="addObj.otcCode"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -367,7 +372,7 @@
:placeholder="active > 1 ? '' : '璇疯緭鍏�'"
clearable
v-model="addObj.prepareUser"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -380,7 +385,7 @@
clearable
:placeholder="active > 1 ? '' : '璇疯緭鍏�'"
v-model="addObj.remark"
- :readonly="active > 1"
+ :disabled="active > 1"
></el-input>
</el-form-item>
</el-col>
@@ -388,58 +393,58 @@
</el-form>
</div>
</basic-container>
+ <div
+ class="search"
+ v-if="active == 1"
+ style="display: flex; background: transparent"
+ >
+ <div style="display: flex; align-items: center">
+ <div class="search_label">鏍峰搧鍨嬪彿锛�</div>
+ <div class="search_input">
+ <el-select
+ v-model="model"
+ :placeholder="active > 1 ? '' : '璇疯緭鍏�'"
+ filterable
+ allow-create
+ default-first-option
+ size="small"
+ @change="changeModel"
+ >
+ <el-option
+ v-for="item in models"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ <div style="display: flex; align-items: center">
+ <div class="search_label">妫�楠屾爣鍑嗭細</div>
+ <div class="search_input">
+ <el-select
+ filterable
+ v-model="standardMethodListId"
+ :placeholder="active > 1 ? '' : '璇疯緭鍏�'"
+ size="small"
+ @focus="methodFocus"
+ :loading="methodLoad"
+ @change="changeStandardMethodListId"
+ >
+ <el-option
+ v-for="item in methods"
+ :key="item.id"
+ :label="item.code"
+ :value="item.id"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ </div>
<basic-container>
<div style="height: auto">
- <div
- class="search"
- v-if="active == 1"
- style="display: flex; background: transparent"
- >
- <div>
- <div class="search_label">鏍峰搧鍨嬪彿锛�</div>
- <div class="search_input">
- <el-select
- v-model="model"
- :placeholder="active > 1 ? '' : '璇疯緭鍏�'"
- filterable
- allow-create
- default-first-option
- size="small"
- @change="changeModel"
- >
- <el-option
- v-for="item in models"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </div>
- </div>
- <div>
- <div class="search_label">妫�楠屾爣鍑嗭細</div>
- <div class="search_input">
- <el-select
- filterable
- v-model="standardMethodListId"
- :placeholder="active > 1 ? '' : '璇疯緭鍏�'"
- size="small"
- @focus="methodFocus"
- :loading="methodLoad"
- @change="changeStandardMethodListId"
- >
- <el-option
- v-for="item in methods"
- :key="item.id"
- :label="item.code"
- :value="item.id"
- >
- </el-option>
- </el-select>
- </div>
- </div>
- </div>
<el-table
class="el-table sampleTable"
ref="sampleTable"
@@ -802,10 +807,767 @@
</el-table>
</div>
</basic-container>
+ <el-dialog
+ title="閫夋嫨鏍峰搧"
+ :visible.sync="selectStandardTree"
+ width="500px"
+ >
+ <div
+ class="body"
+ style="height: 60vh; overflow-y: auto; user-select: none"
+ v-if="selectStandardTree"
+ >
+ <el-row>
+ <el-col :span="24">
+ <el-input
+ placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�"
+ suffix-icon="el-icon-search"
+ v-model="search"
+ size="small"
+ style="margin-bottom: 5px"
+ clearable
+ @blur="searchFilter"
+ @clear="searchFilter"
+ @keyup.enter.native="searchFilter"
+ ></el-input>
+ </el-col>
+ </el-row>
+ <el-tree
+ :data="list"
+ ref="tree"
+ :props="{ children: 'children', label: 'label' }"
+ node-key="label"
+ :filter-node-method="filterNode"
+ @node-click="handleNodeClick"
+ highlight-current
+ @node-expand="nodeOpen"
+ @node-collapse="nodeClose"
+ :default-expanded-keys="expandedKeys"
+ @dblclick.native="activeStandardTree"
+ >
+ <div class="custom-tree-node" slot-scope="{ node, data }">
+ <el-row>
+ <el-col :span="24">
+ <span
+ ><i
+ :class="`node_i ${
+ data.children != undefined
+ ? data.code === '[1]'
+ ? 'el-icon-folder-opened'
+ : 'el-icon-folder'
+ : 'el-icon-tickets'
+ }`"
+ ></i>
+ {{ data.code }} {{ data.label }}</span
+ >
+ </el-col>
+ </el-row>
+ </div>
+ </el-tree>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="selectStandardTree = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="activeStandardTree">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog title="閫夋嫨鍗曚綅" :visible.sync="selectUserDia" width="70%">
+ <div class="body" style="height: 60vh" v-if="selectUserDia">
+ <ValueTable
+ ref="ValueTable2"
+ :url="$api.user.selectCustomPageList"
+ :componentData="componentData2"
+ />
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="selectUserDia = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="selectUser">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog title="淇濆瓨妯℃澘" :visible.sync="templateDia" width="400px">
+ <div
+ class="body"
+ style="display: flex; align-items: center"
+ v-if="templateDia"
+ >
+ <div class="search_label" style="width: 90px">
+ <span class="required-span">* </span>妯℃澘鍚嶇О锛�
+ </div>
+ <div class="search_input">
+ <el-input size="small" clearable v-model="templateName"></el-input>
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="templateDia = false">鍙� 娑�</el-button>
+ <el-button
+ type="primary"
+ @click="addTemplateDia"
+ :loading="templateLoading"
+ >纭� 瀹�</el-button
+ >
+ </span>
+ </el-dialog>
+ <el-dialog
+ title="妫�楠屼笅鍙�"
+ :visible.sync="issuedDialogVisible"
+ width="400px"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :show-close="false"
+ >
+ <div class="body" style="max-height: 60vh">
+ <el-row>
+ <el-col class="search_thing" :span="22">
+ <div class="search_label">
+ <span class="required-span">* </span>绾﹀畾鏃堕棿锛�
+ </div>
+ <div class="search_input">
+ <el-date-picker
+ size="small"
+ v-model="distributeData.appointed"
+ :picker-options="pickerOptions"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ value-format="yyyy-MM-dd"
+ style="width: 100%"
+ format="yyyy-MM-dd"
+ >
+ </el-date-picker>
+ </div>
+ </el-col>
+ <el-col class="search_thing" :span="22">
+ <div class="search_label">
+ <span class="required-span" v-if="addObj.type == 2">* </span
+ >鎸囨淳浜哄憳锛�
+ </div>
+ <div class="search_input">
+ <el-select
+ multiple
+ v-model="distributeData.userId"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ filterable
+ style="width: 100%"
+ @change="changeUser"
+ >
+ <el-option-group
+ v-for="(item, index) in Object.keys(personList)"
+ :key="index"
+ :label="item"
+ >
+ <el-option
+ v-for="op in personList[item]"
+ :key="op.id"
+ :label="op.name"
+ :value="op.id"
+ >
+ </el-option>
+ </el-option-group>
+ </el-select>
+ </div>
+ </el-col>
+ <el-col
+ class="search_thing"
+ :span="22"
+ v-if="distributeData.userId.length > 0"
+ >
+ <div class="search_label">
+ <span class="required-span">* </span>璇曢獙瀹わ細
+ </div>
+ <div class="search_input">
+ <el-select
+ v-model="distributeData.sonLaboratory"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ filterable
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in sonLaboratoryList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-col>
+ <el-col class="search_thing" :span="22">
+ <div class="search_label">
+ <span class="required-span">* </span>鍒涘缓濮旀墭鍗曪細
+ </div>
+ <div class="search_input">
+ <el-select
+ v-model="distributeData.isCreate"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ filterable
+ style="width: 100%"
+ >
+ <el-option label="鏄�" :value="true"></el-option>
+ <el-option label="鍚�" :value="false"></el-option>
+ </el-select>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button @click="issuedDialogVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm2" :loading="upLoad"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
+ </el-dialog>
+ <el-dialog title="涓嶉�氳繃鍘熷洜" :visible.sync="noDialogVisible" width="400px">
+ <div class="body" style="max-height: 60vh">
+ <el-row>
+ <el-col class="search_thing" :span="22">
+ <div class="search_label">
+ <span class="required-span">* </span>涓嶉�氳繃鍘熷洜锛�
+ </div>
+ <div class="search_input">
+ <el-input
+ v-model="tell"
+ size="small"
+ placeholder="璇疯緭鍏ヤ笉閫氳繃鍘熷洜"
+ ></el-input>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button @click="(noDialogVisible = false), (tell = '')"
+ >鍙� 娑�</el-button
+ >
+ <el-button type="primary" @click="submitTell" :loading="noLoading"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
+ </el-dialog>
+ <fiberOpticConfig
+ :fiberPairing="fiberPairing"
+ :currentId="currentId"
+ @saveFiberopticConfig="saveFiberConfigEvent($event)"
+ v-if="configShow && examine == 0"
+ :active="active"
+ :inspectionItemST="inspectionItemST"
+ />
+ <fiberOpticConfigTwo
+ :currentId="currentId"
+ v-if="configShow && examine == 1"
+ :active="active"
+ />
+ <equipConfig
+ :currentId="currentId"
+ v-if="equipConfigShow"
+ :active="active"
+ />
+ <cableConfig v-if="cableConfigShow" :active="active" />
+ <!-- 鍗曢�夌壒娈婂�煎鐞嗘-->
+ <el-dialog
+ title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨"
+ :visible.sync="bsm1Dia"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ min-width="400px"
+ :show-close="false"
+ :before-close="beforeClose"
+ >
+ <div class="body" style="max-height: 60vh">
+ <el-row v-if="bsm1">
+ <el-col
+ class="search_thing"
+ :span="24"
+ style="height: initial; margin: 5px 0"
+ >
+ <div class="search_label" style="width: 80px">
+ <span class="required-span">* </span>閫夐」锛�
+ </div>
+ <div class="search_input">
+ <el-radio-group v-model="bsm1Val" @input="upBsm1">
+ <el-radio
+ v-for="(a, ai) in JSON.parse(bsmRow.section)"
+ :key="ai"
+ :label="a"
+ style="margin-bottom: 2px; margin-top: 2px"
+ ></el-radio>
+ </el-radio-group>
+ </div>
+ </el-col>
+ <el-col
+ class="search_thing"
+ :span="24"
+ style="height: initial; margin: 5px 0"
+ >
+ <div class="search_label" style="width: 80px">瑕佹眰鍊硷細</div>
+ <div
+ class="search_input"
+ v-show="bsm1Val !== null && bsm1Val !== ''"
+ >
+ <el-radio-group v-model="bsm1Val" @input="upBsm1">
+ <el-radio
+ v-for="(a, ai) in JSON.parse(bsmRow.section)"
+ :key="ai"
+ :label="a"
+ >{{ JSON.parse(bsmRow.ask)[ai] }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row v-if="bsm2">
+ <el-col class="search_thing" :span="22">
+ <div class="search_label" style="width: 220px">
+ <span class="required-span">* </span>鏍峰搧鐔旀帴閰嶅鏁伴噺锛�
+ </div>
+ <div class="search_input">
+ <el-input-number
+ size="medium"
+ v-model="bsm2Val"
+ :min="1"
+ :max="bsm2Val3.length"
+ :precision="0"
+ style="width: 70%"
+ :controls="false"
+ @change="bsm2Up"
+ ></el-input-number>
+ <span>MAX锛歿{ bsm2Val3.length }}</span>
+ </div>
+ </el-col>
+ <el-col style="margin-top: 6px">
+ <el-col v-for="(a, ai) in bsm2Val2" :key="ai">
+ <el-col :span="10">
+ <el-select
+ v-model="a[0]"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="(item, index) in sampleList"
+ :key="index"
+ :label="index + 1"
+ :value="index + 1"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ <el-col
+ :span="4"
+ class="pairing"
+ style="border: 0; color: rgba(0, 0, 0, 0.2)"
+ >鈥斺��</el-col
+ >
+ <el-col :span="10">
+ <el-select
+ v-model="a[1]"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="(item, index) in sampleList"
+ :key="index"
+ :label="index + 1"
+ :value="index + 1"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-col>
+ </el-col>
+ </el-row>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button type="primary" @click="save2" :loading="saveLoad"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
+ </el-dialog>
+ <!-- 鍏ㄩ�夌壒娈婂�煎鐞嗘-->
+ <el-dialog
+ title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨"
+ :visible.sync="bsm1DiaAll"
+ min-width="400px"
+ :show-close="false"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ :before-close="beforeClose"
+ >
+ <div
+ class="body"
+ style="max-height: 60vh"
+ v-for="(item, index) in bsm1DiaList"
+ :key="index"
+ >
+ <el-row v-if="item.bsm1">
+ <el-col
+ class="search_thing"
+ :span="24"
+ style="height: initial; margin: 5px 0"
+ >
+ <div class="search_label" style="width: 80px">
+ <span class="required-span">* </span>閫夐」锛�
+ </div>
+ <div class="search_input">
+ <el-radio-group v-model="item.bsm1Val" @input="upBsmAll(item)">
+ <el-radio
+ v-for="(a, ai) in JSON.parse(item.bsmRow.section)"
+ :key="ai"
+ :label="a"
+ style="margin-bottom: 2px; margin-top: 2px"
+ ></el-radio>
+ </el-radio-group>
+ </div>
+ </el-col>
+ <el-col
+ class="search_thing"
+ :span="24"
+ style="height: initial; margin: 5px 0"
+ >
+ <div class="search_label" style="width: 80px">瑕佹眰鍊硷細</div>
+ <div
+ class="search_input"
+ v-show="item.bsm1Val !== null && item.bsm1Val !== ''"
+ >
+ <el-radio-group v-model="item.bsm1Val" @input="upBsmAll(item)">
+ <el-radio
+ v-for="(a, ai) in JSON.parse(item.bsmRow.section)"
+ :key="ai"
+ :label="a"
+ >{{ JSON.parse(item.bsmRow.ask)[ai] }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row v-if="item.bsm2">
+ <el-col class="search_thing" :span="22">
+ <div class="search_label" style="width: 220px">
+ <span class="required-span">* </span>鏍峰搧鐔旀帴閰嶅鏁伴噺锛�
+ </div>
+ <div class="search_input">
+ <el-input-number
+ size="medium"
+ v-model="item.bsm2Val"
+ :min="1"
+ :max="item.bsm2Val3.length"
+ :precision="0"
+ style="width: 70%"
+ :controls="false"
+ @change="bsm2Up"
+ ></el-input-number>
+ <span>MAX锛歿{ item.bsm2Val3.length }}</span>
+ </div>
+ </el-col>
+ <el-col style="margin-top: 6px">
+ <el-col v-for="(a, ai) in item.bsm2Val2" :key="ai">
+ <el-col :span="10">
+ <el-select
+ v-model="a[0]"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="(item, index) in item.sampleList"
+ :key="index"
+ :label="index + 1"
+ :value="index + 1"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ <el-col
+ :span="4"
+ class="pairing"
+ style="border: 0; color: rgba(0, 0, 0, 0.2)"
+ >鈥斺��</el-col
+ >
+ <el-col :span="10">
+ <el-select
+ v-model="a[1]"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="(item, index) in item.sampleList"
+ :key="index"
+ :label="index + 1"
+ :value="index + 1"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-col>
+ </el-col>
+ </el-row>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button type="primary" @click="save1" :loading="saveLoad"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
+ </el-dialog>
+ <el-dialog
+ title="鐗规畩鍊煎~鍐�"
+ :visible.sync="bsm3Dia"
+ top="5vh"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ width="800px"
+ :show-close="false"
+ >
+ <el-table :data="editTable" style="width: 100%" height="500px">
+ <!-- inspectionItemList -->
+ <el-table-column prop="inspectionItemList" label="妫�楠岄」" width="180">
+ </el-table-column>
+ <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿" width="180">
+ </el-table-column>
+ <el-table-column prop="model" label="鏍峰搧鍨嬪彿" width="180">
+ </el-table-column>
+ <el-table-column prop="symbolItem" label="璇嗗埆绗﹀彿"> </el-table-column>
+ <el-table-column prop="value" label="璇嗗埆绗﹀��">
+ <template slot-scope="scope">
+ <el-input
+ v-model="scope.row.value"
+ placeholder="璇疯緭鍏�"
+ @input="inputValueHandler(scope.row, scope.$index)"
+ size="small"
+ type="number"
+ ></el-input>
+ </template>
+ </el-table-column>
+ </el-table>
+ <span slot="footer" class="dialog-footer">
+ <el-row>
+ <el-button @click="bsm3Dia = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="save0" :loading="saveLoad"
+ >纭� 瀹�</el-button
+ >
+ </el-row>
+ </span>
+ </el-dialog>
+ <el-dialog
+ title="娓╁害寰幆瑕佹眰濉啓"
+ :visible.sync="circulateShow"
+ width="900px"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :before-close="beforeCirculateShowClose"
+ :show-close="false"
+ >
+ <div class="search" style="display: flex; background: transparent">
+ <div class="search_thing">
+ <div class="search_label">淇濇俯鏃堕棿锛�</div>
+ <div class="search_input">
+ <el-input
+ v-model="circulateForm.entrustTime"
+ size="small"
+ placeholder=""
+ type="number"
+ ></el-input>
+ </div>
+ </div>
+ <div class="search_thing">
+ <div class="search_label">寰幆娆℃暟锛�</div>
+ <div class="search_input">
+ <el-input
+ v-model="circulateForm.entrustNum"
+ size="small"
+ placeholder=""
+ type="number"
+ ></el-input>
+ </div>
+ </div>
+ <div class="search_thing">
+ <div class="search_label">娓╁害鐐癸細</div>
+ <div class="search_input">
+ <el-input
+ @focus="() => (isFocus = true)"
+ @blur="changeTemperatureData"
+ v-model="circulateForm.entrustPoint"
+ size="small"
+ placeholder=""
+ type="number"
+ ></el-input>
+ </div>
+ </div>
+ </div>
+ <div class="circulateTable">
+ <div class="opticalProject">
+ <div style="line-height: 30px">鍏夌氦椤圭洰</div>
+ <el-divider></el-divider>
+ <div>
+ <el-table
+ ref="multipleTable"
+ border
+ :header-cell-style="{ 'text-align': 'center' }"
+ :cell-style="{ 'text-align': 'center' }"
+ :data="opticalProject"
+ tooltip-effect="dark"
+ style="width: 100%"
+ @row-click="rowClickOptical"
+ @select="selectOpticalProject"
+ @select-all="selectAllOptical"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55"> </el-table-column>
+ <el-table-column
+ prop="value"
+ label="鍏夌氦椤圭洰"
+ show-overflow-tooltip
+ ></el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <div class="temperatureList">
+ <div class="temperatureListTitle">
+ <span>娓╁害鐐归泦鍚�</span>
+ <span>
+ <el-button
+ type="primary"
+ size="mini"
+ :disabled="isFocus"
+ @click="addTemperatureData"
+ >鏂板</el-button
+ >
+ <el-button size="mini" @click="deleteTemperatureData"
+ >鍒犻櫎</el-button
+ >
+ </span>
+ </div>
+ <el-divider></el-divider>
+ <el-table
+ :data="temperatureData"
+ border
+ :header-cell-style="{ 'text-align': 'center' }"
+ :cell-style="{ 'text-align': 'center' }"
+ style="width: 100%"
+ >
+ <el-table-column prop="date" label="娓╁害鐐�(鈩�)" width="120px">
+ <template slot-scope="scope">
+ <el-input
+ size="small"
+ v-model="scope.row.temperaturePoint"
+ clearable
+ placeholder="璇疯緭鍏�"
+ @change="changeTemperature"
+ ></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="瑕佹眰(dB/Km)">
+ <template slot-scope="scope">
+ <span>x</span>
+ <el-select
+ v-model="scope.row.askSymbol"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 120px"
+ @change="changeTemperature"
+ >
+ <el-option
+ v-for="item in temperatureDataList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <el-input
+ size="small"
+ v-model="scope.row.askNum"
+ clearable
+ placeholder="璇疯緭鍏�"
+ style="width: 120px"
+ @change="changeTemperature"
+ ></el-input>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="cleanSpliceData">鍙栨秷</el-button>
+ <el-button type="primary" @click="spliceData">淇濆瓨</el-button>
+ </span>
+ </el-dialog>
+ <!-- 鐢靛姏璇曢獙瀹�---娓╁崌璇曢獙/鐑惊鐜� -->
+ <el-dialog
+ :title="temperatureTitle"
+ :visible.sync="temperatureShow"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ width="260px"
+ :before-close="temperatureShowClose"
+ :show-close="false"
+ >
+ <div>
+ <div v-if="isShowInput" style="margin-bottom: 6px">
+ <span>寰幆娆℃暟:</span>
+ <!-- <el-input size="small" type="number" v-model="temperatureTestNum" style="width: 120px"></el-input> -->
+ <el-input-number
+ v-model="temperatureTestNum"
+ :min="2"
+ :max="1000000"
+ size="small"
+ label=""
+ ></el-input-number>
+ </div>
+ <el-checkbox-group
+ v-model="temperatureTest"
+ @change="handleTemperatureTestChange"
+ style="display: flex; flex-direction: column"
+ >
+ <el-checkbox
+ v-for="item in temperatureList"
+ :label="item"
+ :key="item"
+ style="margin-bottom: 6px"
+ >{{ item }}</el-checkbox
+ >
+ </el-checkbox-group>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="cleanTemperatureTest">鍙栨秷</el-button>
+ <el-button type="primary" @click="spliceTemperatureTest"
+ >淇濆瓨</el-button
+ >
+ </span>
+ </el-dialog>
</div>
</template>
<script>
+import {
+ selectInsOrderTemplate,
+ hasSendUrgentOrder,
+ addInsOrder,
+ selectOrderManDay,
+ selectInsOrderTemplateById,
+ upInsOrderOfState,
+ upInsOrder,
+ getInsOrder,
+ addInsOrderTemplate,
+ delInsOrderTemplate,
+ labelPrinting,
+} from "@/api/business/inspectionOrder";
+import {
+ selectStandardTreeList2,
+ selectStandardMethodEnum,
+ selectsStandardMethodByFLSSM,
+ selectStandardProductList,
+} from "@/api/standard/standardLibrary";
+import { selectBushingBySampleId } from "@/api/business/insBushing";
+import { getLaboratoryPersonList } from "@/api/system/user";
import { mapGetters } from "vuex";
import fiberOpticConfig from "./fiberoptic-config.vue";
import fiberOpticConfigReadOnly from "./fiberoptic-config-readonly.vue";
@@ -822,24 +1584,15 @@
cableConfig,
},
computed: {
- ...mapGetters(["nickName", "company"]),
+ ...mapGetters(["nickName", "loginUserInfo"]),
},
- props: {
- examine: {
- type: Number,
- default: () => 0,
- },
- active: {
- type: Number,
- default: () => 0,
- },
- currentId: {
- type: Number,
- default: () => 0,
- },
- },
+ props: {},
data() {
return {
+ isReview: false, //鏄惁鏄煡鐪嬭鎯�
+ examine: 0,
+ active: 0,
+ currentId: 0,
pickerOptions: {
disabledDate(time) {
// 褰撳墠鏃堕棿鍔犱笂涓夊ぉ鐨勬椂闂存埑
@@ -1133,18 +1886,20 @@
this.standardMethodListId = null;
},
},
+ created() {
+ this.active = this.$route.query.active;
+ this.currentId = this.$route.query.currentId;
+ this.examine = this.$route.query.examine;
+ this.isReview = this.$route.query.isReview;
+ },
mounted() {
- if (this.addObj.custom == "" || this.addObj.custom == null) {
- this.addObj.custom = this.nickName; //璁剧疆鍒跺崟浜轰负褰撳墠鐧诲綍浜�
- }
- this.addObj.company = this.company;
+ //鏌ヨ瀛楀吀
this.selectDictForType();
this.selectDictForOrderType();
this.selectDictForUnit();
this.selectDictForSampleForm();
-
if (this.active != 3) {
- this.getUserNow();
+ this.init();
}
this.selectStandardTreeList();
this.getAuthorizedPerson();
@@ -1152,25 +1907,29 @@
if (this.active != 1) {
// 鏌ョ湅/瀹℃牳娴佺▼
// 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹�
- this.$axios
- .post(this.$api.insOrder.getInsOrder, {
- orderId: this.currentId,
- })
+ getInsOrder({
+ orderId: this.currentId,
+ })
.then((res) => {
- this.addObj = {
- ...res.data.insOrder,
- };
- this.addObj.type = String(this.addObj.type);
- this.sampleList = this.HaveJson(res.data.sampleProduct);
- this.getProNum();
- this.addObj.sampleNum = this.sampleList.length;
- this.$nextTick(() => {
- this.$refs.sampleTable.doLayout();
- if (this.addObj.sampleNum > 0) {
- this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true);
- this.rowClick(this.sampleList[0]);
- }
- });
+ if (res.code === 200) {
+ this.addObj = {
+ ...res.data.insOrder,
+ };
+ this.addObj.type = String(this.addObj.type);
+ this.sampleList = this.HaveJson(res.data.sampleProduct);
+ this.getProNum();
+ this.addObj.sampleNum = this.sampleList.length;
+ this.$nextTick(() => {
+ this.$refs.sampleTable.doLayout();
+ if (this.addObj.sampleNum > 0) {
+ this.$refs.sampleTable.setCurrentRow(this.sampleList[0], true);
+ this.rowClick(this.sampleList[0]);
+ }
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
}
},
@@ -1194,16 +1953,13 @@
let flag = true;
//濡傛灉鏄被鍨嬫槸绱ф�ワ紝鍒ゆ柇褰撳墠瀹㈡埛褰撳ぉ鐨勭揣鎬ラ搴︽槸鍚︾敤瀹�
if (type == 2) {
- await this.$axios
- .post(this.$api.insOrder.hasSendUrgentOrder, {})
+ await hasSendUrgentOrder()
.then((res) => {
flag = res.data;
return flag;
- // if (!res.data) {
- // this.addObj.type = "1";
- // this.$message.error("褰撳ぉ绱ф�ラ搴﹀凡鐢ㄥ畬");
- // throw "褰撳ぉ绱ф�ラ搴﹀凡鐢ㄥ畬";
- // }
+ })
+ .catch((error) => {
+ console.error(error);
});
}
return flag;
@@ -1613,9 +2369,15 @@
}
},
getAuthorizedPerson() {
- this.$axios.get(this.$api.user.getLaboratoryPersonList).then((res) => {
- this.personList = res.data;
- });
+ getLaboratoryPersonList()
+ .then((res) => {
+ if (res.code === 200) {
+ this.personList = res.data;
+ }
+ })
+ .catch((error) => {
+ console.error(error);
+ });
},
selectDictForType() {
getDicts("urgency_level")
@@ -2559,6 +3321,7 @@
let sampleList = this.HaveJson(sampleList0);
sampleList.forEach((a) => {
a.insProduct.forEach((b) => {
+ b.id = null;
delete b.bsmRow;
});
});
@@ -2577,141 +3340,76 @@
console.log(this.sampleList);
console.log(this.fiberPairing);
this.saveLoad = true;
- this.$axios
- .post(this.$api.insOrder.addInsOrder, {
- str: JSON.stringify({
- insOrder: this.addObj,
- list: JSON.stringify(
- sampleList.map((a) => {
- if (this.PROJECT === "瑁呭鐢电紗") {
- if (a.modelNum) {
- const index = a.modelNum.indexOf("脳");
- if (index === 0) {
- a.model = a.model + a.modelNum;
- } else if (index === -1) {
- a.model = a.model + "-" + a.modelNum;
- } else {
- a.model = a.modelNum + a.model;
- }
- } else {
- a.model =
- a.model +
- (a.modelNum == null ||
- a.modelNum == "" ||
- a.modelNum == "null"
- ? ""
- : "-" + a.modelNum);
- }
- } else {
- a.model =
- a.model +
- (a.modelNum == null ||
- a.modelNum == "" ||
- a.modelNum == "null"
- ? ""
- : "-" + a.modelNum);
- }
- a.insProduct = a.insProduct.filter((b) => b.state === 1);
- return a;
- })
- ),
- pairing: JSON.stringify(this.bsm2Val2),
- fiberPairing: JSON.stringify(this.fiberPairing),
- }),
- })
+ addInsOrder({
+ insOrder: this.addObj,
+ list: sampleList.map((a) => {
+ a.model =
+ a.model +
+ (a.modelNum == null || a.modelNum == "" || a.modelNum == "null"
+ ? ""
+ : "-" + a.modelNum);
+ a.insProduct = a.insProduct.filter((b) => b.state === 1);
+ return a;
+ }),
+ pairing: this.bsm2Val2,
+ fiberPairing: this.fiberPairing,
+ })
.then((res) => {
+ if (res.code === 200) {
+ this.$message.success("宸叉彁浜�");
+ this.bsm3Dia = false;
+ this.$router.go(-1);
+ }
this.saveLoad = false;
- if (res.code == 201) return;
- this.$message.success("宸叉彁浜�");
- this.bsm3Dia = false;
- this.$parent.playOrder(0);
})
- .catch((e) => {
+ .catch((error) => {
this.saveLoad = false;
+ console.error(error);
});
},
upInsOrderOfState(state) {
if (state == 1) {
//this.saveLoad = true
this.issuedDialogVisible = true;
- this.$axios
- .post(this.$api.insOrder.selectOrderManDay, {
- id: this.currentId,
+ selectOrderManDay({
+ id: this.currentId,
+ })
+ .then((res) => {
+ if (res.code === 200) {
+ this.distributeData.orderId = this.currentId;
+ this.distributeData.appointed = res.data;
+ console.log("绾﹀畾鏃堕棿", this.distributeData.appointed);
+ }
})
- .then((ress) => {
- this.distributeData.orderId = this.currentId;
- this.distributeData.appointed = ress.data;
- console.log("绾﹀畾鏃堕棿", this.distributeData.appointed);
+ .catch((error) => {
+ console.error(error);
});
setTimeout(() => {
this.issuedDialogVisible = true;
}, 1000);
- // this.$axios.post(this.$api.insOrder.upInsOrderOfState, {
- // state,
- // id: this.currentId,
- // companyId:this.addObj.companyId,
- // laboratory:this.addObj.laboratory,
- // company: this.addObj.company
- // }, {
- // headers: {
- // 'Content-Type': 'application/json'
- // }
- // }).then(res => {
- // this.saveLoad = false
- // if (res.code == 201) return
- // this.$message.success('鎻愪氦鎴愬姛')
-
- // this.$parent.multipleSelection = [{id: this.currentId}]
- // this.$parent.print()
- // 濡傛灉绱ф�ョ▼搴︿负绱ф�ワ紝闇�瑕佺洿鎺ヤ笅鍙戜汉鍛�
- // if (this.addObj.type == 2) {
- // this.issuedDialogVisible = true;
- // this.$axios.post(this.$api.insOrder.selectOrderManDay, {
- // id: this.currentId
- // }).then(ress => {
- // this.distributeData.orderId = this.currentId
- // this.distributeData.appointed = ress.data
- // })
- // } else {
- // this.$parent.playOrder(0)
- // }
-
- // this.$axios.post(this.$api.insOrder.selectOrderManDay, {
- // id: this.currentId
- // }).then(ress => {
- // this.distributeData.orderId = this.currentId
- // this.distributeData.appointed = ress.data
- // })
- // setTimeout(() => {
- // this.issuedDialogVisible = true;
- // }, 1000)
- // })
} else {
// 涓嶉�氳繃
this.noDialogVisible = true;
}
},
getLabelPrinting(currentId) {
- this.$axios
- .post(this.$api.insOrder.labelPrinting, {
- ids: currentId,
- })
+ labelPrinting({
+ ids: currentId,
+ })
.then((res) => {
- //瀹℃牳閫氳繃锛岄粯璁ゅ彧鎵撳嵃绗竴涓牱鍝佹爣绛�
- let firstSample = res.data[0];
- let arr1 = [];
- firstSample.insProduct.forEach((b) => {
- arr1.push(b.inspectionItem);
- });
- firstSample.item = [...new Set(arr1)].join(",");
- // arr.forEach((a) => {
- // let arr1 = [];
- // a.insProduct.forEach((b) => {
- // arr1.push(b.inspectionItem);
- // });
- // a.item = [...new Set(arr1)].join(",");
- // });
- this.beginPrint(firstSample);
+ if (res.code === 200) {
+ //瀹℃牳閫氳繃锛岄粯璁ゅ彧鎵撳嵃绗竴涓牱鍝佹爣绛�
+ let firstSample = res.data[0];
+ let arr1 = [];
+ firstSample.insProduct.forEach((b) => {
+ arr1.push(b.inspectionItem);
+ });
+ firstSample.item = [...new Set(arr1)].join(",");
+ this.beginPrint(firstSample);
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
//寮�濮嬫爣绛炬墦鍗�
@@ -2807,92 +3505,74 @@
return;
}
// let flag = true;
- this.$axios
- .post(
- this.$api.insOrder.upInsOrderOfState,
- {
- state: 1,
- id: this.currentId,
- companyId: this.addObj.companyId,
- laboratory: this.addObj.laboratory,
- company: this.addObj.company,
- isCreate: this.distributeData.isCreate,
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
+ upInsOrderOfState({
+ state: 1,
+ id: this.currentId,
+ companyId: this.addObj.companyId,
+ laboratory: this.addObj.laboratory,
+ company: this.addObj.company,
+ isCreate: this.distributeData.isCreate,
+ })
.then((res) => {
- // flag = false;
-
- // if (flag) {
- // this.$message.error("濮旀墭缂栧彿鐢熸垚澶辫触");
- // return;
- // }
- this.upLoad = true;
- this.$axios
- .post(
- this.$api.insOrder.upInsOrder,
- {
- orderId: this.distributeData.orderId,
- appointed: this.distributeData.appointed,
- userIdList: this.distributeData.userId,
- sonLaboratory: this.distributeData.sonLaboratory,
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
- .then((res) => {
- if (res.code === 201) {
- this.upLoad = false;
- return;
- }
- this.$message.success("鎻愪氦鎴愬姛");
- this.upLoad = false;
- this.issuedDialogVisible = false;
- this.$parent.playOrder(0);
- //瀹℃牳閫氳繃鍚庯紝鑷姩鎵撳嵃浜岀淮鐮�
- //TODO: 鐢靛姏璇曢獙瀹ゆ殏鏃朵笉鐢ㄦ爣绛炬墦鍗�
- if (
- this.sonLaboratoryList.filter((f) => f.value === "鐢靛姏璇曢獙瀹�")
- .length === 0
- ) {
- this.$nextTick(() => {
- this.getLabelPrinting(this.currentId);
- });
- }
+ if (res.code === 200) {
+ this.upLoad = true;
+ upInsOrder({
+ orderId: this.distributeData.orderId,
+ appointed: this.distributeData.appointed,
+ userIdList: this.distributeData.userId,
+ sonLaboratory: this.distributeData.sonLaboratory,
})
- .catch((e) => {
- this.$message.error("鎻愪氦澶辫触");
- this.upLoad = false;
- });
+ .then((res) => {
+ if (res.code === 201) {
+ this.upLoad = false;
+ return;
+ }
+ this.$message.success("鎻愪氦鎴愬姛");
+ this.issuedDialogVisible = false;
+ this.upLoad = false;
+ this.$router.go(-1);
+ //瀹℃牳閫氳繃鍚庯紝鑷姩鎵撳嵃浜岀淮鐮�
+ //TODO: 鐢靛姏璇曢獙瀹ゆ殏鏃朵笉鐢ㄦ爣绛炬墦鍗�
+ if (
+ this.sonLaboratoryList.filter((f) => f.value === "鐢靛姏璇曢獙瀹�")
+ .length === 0
+ ) {
+ this.$nextTick(() => {
+ this.getLabelPrinting(this.currentId);
+ });
+ }
+ })
+ .catch((error) => {
+ this.$message.error("鎻愪氦澶辫触");
+ this.upLoad = false;
+ console.error(error);
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
- getUserNow() {
- this.$axios.get(this.$api.user.getUserNow).then((res) => {
- let selects = res.data;
- if (selects == null) return;
- this.addObj.userId = selects.id;
- this.addObj.company = selects.company;
- this.addObj.custom = selects.name;
- this.addObj.code = selects.code;
- this.addObj.phone = selects.phone;
- this.addObj.companyId = selects.departId;
- this.addObj.production = "/";
- this.addObj.productionEn = "/";
- if (this.active == 1) {
- this.selectInsOrderTemplate();
- }
- });
+ init() {
+ if (this.addObj.custom == "" || this.addObj.custom == null) {
+ this.addObj.custom = this.loginUserInfo.nickName; //璁剧疆鍒跺崟浜轰负褰撳墠鐧诲綍浜�
+ } else {
+ this.addObj.custom = this.loginUserInfo.nickName;
+ }
+ this.addObj.company = this.loginUserInfo.companyName;
+ this.addObj.companyId = this.loginUserInfo.company;
+ this.addObj.userId = this.loginUserInfo.userId;
+ // this.addObj.code = this.loginUserInfo.code;
+ this.addObj.phone = this.loginUserInfo.phoneNumber;
+ this.addObj.production = "/";
+ this.addObj.productionEn = "/";
+ if (this.active == 1) {
+ this.selectInsOrderTemplate();
+ }
},
getProNum() {
this.sampleSelectionList.forEach((m, i) => {
- Vue.set(
+ this.$set(
this.sampleSelectionList[i],
"proNum",
m.insProduct.filter((a) => a.state == 1).length
@@ -2950,13 +3630,17 @@
}
},
selectStandardTreeList() {
- this.$axios
- .get(this.$api.standardTree.selectStandardTreeList2)
+ selectStandardTreeList2()
.then((res) => {
- this.list = res.data;
- this.list.forEach((a) => {
- this.expandedKeys.push(a.label);
- });
+ if (res.code === 200) {
+ this.list = res.data;
+ this.list.forEach((a) => {
+ this.expandedKeys.push(a.label);
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
filterNode(value, data) {
@@ -3001,33 +3685,50 @@
},
selectsStandardMethodByFLSSM() {
this.methodLoad = true;
- this.$axios
- .post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
- tree: this.selectTree,
- })
+ selectsStandardMethodByFLSSM({
+ tree: this.selectTree,
+ })
.then((res) => {
- this.methodLoad = false;
- try {
- if (
- res.data.standardMethodList.length == 0 &&
- this.selectTree.split("-").length == 5
- ) {
- let arr = this.selectTree.split("-");
- let arr0 = arr.slice(0, arr.length - 1);
- let selectTree = arr0
- .join("-")
- .substring(0, arr0.join("-").length - 1);
- this.$axios
- .post(this.$api.standardTree.selectsStandardMethodByFLSSM, {
+ if (res.code === 200) {
+ this.methodLoad = false;
+ try {
+ if (
+ res.data.standardMethodList.length == 0 &&
+ this.selectTree.split("-").length == 5
+ ) {
+ let arr = this.selectTree.split("-");
+ let arr0 = arr.slice(0, arr.length - 1);
+ let selectTree = arr0
+ .join("-")
+ .substring(0, arr0.join("-").length - 1);
+ template()
+ .then((res) => {
+ if (res.status === 200) {
+ console.log(res);
+ }
+ })
+ .catch((error) => {
+ console.error(error);
+ });
+ selectsStandardMethodByFLSSM({
tree: selectTree,
})
- .then((ress) => {
- this.methods = ress.data.standardMethodList;
- });
- } else {
- this.methods = res.data.standardMethodList;
- }
- } catch (e) {}
+ .then((res) => {
+ if (res.code === 200) {
+ this.methods = ress.data.standardMethodList;
+ }
+ })
+ .catch((error) => {
+ console.error(error);
+ });
+ } else {
+ this.methods = res.data.standardMethodList;
+ }
+ } catch (e) {}
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
addStandardTree(currentValue, oldValue) {
@@ -3339,12 +4040,14 @@
console.log("upProductSelect", this.sampleList);
},
searchProject() {
- this.$axios
- .post(this.$api.enums.selectEnumByCategory, {
- category: "鍏夌氦椤圭洰",
- })
+ getDicts("fiber_type")
.then((res) => {
- this.opticalProject = res.data;
+ if (res.code === 200) {
+ this.opticalProject = res.data;
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
permute(nums) {
@@ -3381,15 +4084,14 @@
return "warning-row";
},
selectInsOrderTemplate() {
- this.$axios
- .get(
- this.$api.insOrder.selectInsOrderTemplate +
- "?company=" +
- this.addObj.company
- )
+ selectInsOrderTemplate({ company: this.addObj.company })
.then((res) => {
- if (res.code == 201) return;
- this.templates = res.data;
+ if (res.code === 200) {
+ this.templates = res.data;
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
// 鍒犻櫎妯℃澘--璋冪敤鎺ュ彛
@@ -3400,19 +4102,18 @@
type: "warning",
})
.then(() => {
- this.$axios
- .post(this.$api.insOrder.delInsOrderTemplate, {
- id: row.id,
- })
+ delInsOrderTemplate({
+ id: row.id,
+ })
.then((res) => {
- if (res.code === 201) {
- return;
+ if (res.code === 200) {
+ this.$message.success("鍒犻櫎鎴愬姛");
+ this.selectInsOrderTemplate();
}
- this.$message.success("鍒犻櫎鎴愬姛");
- this.selectInsOrderTemplate();
})
- .catch((e) => {
+ .catch((error) => {
this.$message.error("鍒犻櫎澶辫触");
+ console.error(error);
});
})
.catch(() => {});
@@ -3421,30 +4122,25 @@
addTemplateDia() {
if (this.templateName) {
this.templateLoading = true;
- this.$axios
- .post(
- this.$api.insOrder.addInsOrderTemplate,
- {
- name: this.templateName,
- thing: JSON.stringify({
- addObj: this.addObj,
- sampleList: this.sampleList,
- selectTree: this.selectTree,
- }),
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
+ addInsOrderTemplate({
+ name: this.templateName,
+ thing: JSON.stringify({
+ addObj: this.addObj,
+ sampleList: this.sampleList,
+ selectTree: this.selectTree,
+ }),
+ })
.then((res) => {
- if (res.code == 201) return;
- this.templateLoading = false;
- this.templateDia = false;
- this.$message.success("淇濆瓨鎴愬姛");
- this.selectInsOrderTemplate();
- this.templateName = "";
+ if (res.code === 200) {
+ this.templateLoading = false;
+ this.templateDia = false;
+ this.$message.success("淇濆瓨鎴愬姛");
+ this.selectInsOrderTemplate();
+ this.templateName = "";
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
} else {
this.$message.error("璇峰~鍐欐ā鏉垮悕绉�");
@@ -3452,26 +4148,27 @@
},
// 鏌ヨ妯℃澘
selectInsOrderTemplateById(e) {
- this.$axios
- .post(this.$api.insOrder.selectInsOrderTemplateById + "?id=" + e)
+ selectInsOrderTemplateById({ id: e })
.then((res) => {
- if (res.code == 201) return;
- // let obj = JSON.parse(res.data)
- let obj = res.data;
- console.log(obj);
- //鍒跺崟浜鸿缃负褰撳墠鐧诲綍鐢ㄦ埛
- let user = JSON.parse(localStorage.getItem("user"));
- obj.addObj.custom = user.name;
- obj.addObj.userId = user.userId;
- this.addObj = obj.addObj;
- this.sampleList = obj.sampleList;
- this.selectTree = obj.selectTree;
- //榛樿閫変腑绗竴涓牱鍝�
- this.$nextTick(() => {
- if (this.sampleList.length > 0) {
- this.rowClick(this.sampleList[0]);
- }
- });
+ if (res.code === 200) {
+ let obj = res.data;
+ console.log(obj);
+ //鍒跺崟浜鸿缃负褰撳墠鐧诲綍鐢ㄦ埛
+ obj.addObj.custom = this.loginUserInfo.nickName;
+ obj.addObj.userId = this.loginUserInfo.userId;
+ this.addObj = obj.addObj;
+ this.sampleList = obj.sampleList;
+ this.selectTree = obj.selectTree;
+ //榛樿閫変腑绗竴涓牱鍝�
+ this.$nextTick(() => {
+ if (this.sampleList.length > 0) {
+ this.rowClick(this.sampleList[0]);
+ }
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
delSampleAndProduct() {
@@ -3533,43 +4230,39 @@
let selectTreeList = this.selectTree.split(" - ");
this.addObj.model &&
(selectTreeList[selectTreeList.length - 1] = this.addObj.model);
- this.$axios
- .post(
- this.$api.standardTree.selectStandardProductList,
- {
- model:
- (this.addObj.model ? this.addObj.model : row.model) +
- "-" +
- row.modelNum,
- standardMethodListId: val,
- factory: selectTreeList.join(" - "),
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
+ selectStandardProductList({
+ model:
+ (this.addObj.model ? this.addObj.model : row.model) +
+ "-" +
+ row.modelNum,
+ standardMethodListId: val,
+ factory: selectTreeList.join(" - "),
+ })
.then((res) => {
- res.data.forEach((a) => {
- a.state = 0;
- });
- row.insProduct = this.HaveJson(res.data);
- this.productList = row.insProduct;
- this.productList0 = JSON.parse(JSON.stringify(this.productList));
- // this.$refs.sampleTable.setCurrentRow(row)
- // setTimeout(() => {
- // this.productList.forEach(a => {
- // if (a.state == 1) this.toggleSelection(a)
- // })
- // }, 200)
- this.$nextTick(() => {
- this.methodCount++;
- this.getProductLoad = false;
- if (this.sampleSelectionList.length == this.methodCount) {
- this.standardLoading = false;
- }
- });
+ if (res.code === 200) {
+ res.data.forEach((a) => {
+ a.state = 0;
+ });
+ row.insProduct = this.HaveJson(res.data);
+ this.productList = row.insProduct;
+ this.productList0 = JSON.parse(JSON.stringify(this.productList));
+ // this.$refs.sampleTable.setCurrentRow(row)
+ // setTimeout(() => {
+ // this.productList.forEach(a => {
+ // if (a.state == 1) this.toggleSelection(a)
+ // })
+ // }, 200)
+ this.$nextTick(() => {
+ this.methodCount++;
+ this.getProductLoad = false;
+ if (this.sampleSelectionList.length == this.methodCount) {
+ this.standardLoading = false;
+ }
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
this.searchProject();
this.searchTemList();
@@ -3590,60 +4283,56 @@
let selectTreeList = this.selectTree.split(" - ");
this.addObj.model &&
(selectTreeList[selectTreeList.length - 1] = this.addObj.model);
- this.$axios
- .post(
- this.$api.standardTree.selectStandardProductList,
- {
- model:
- (this.addObj.model ? this.addObj.model : row.model) +
- "-" +
- row.modelNum,
- standardMethodListId: val,
- factory: selectTreeList.join(" - "),
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
+ selectStandardProductList({
+ model:
+ (this.addObj.model ? this.addObj.model : row.model) +
+ "-" +
+ row.modelNum,
+ standardMethodListId: val,
+ factory: selectTreeList.join(" - "),
+ })
.then((res) => {
- res.data.forEach((a) => {
- a.state = 0;
- });
- row.insProduct = this.HaveJson(res.data);
- this.productList = row.insProduct;
- this.productList0 = JSON.parse(JSON.stringify(this.productList));
- // this.$refs.sampleTable.setCurrentRow(row)
- // setTimeout(() => {
- // this.productList.forEach(a => {
- // if (a.state == 1) this.toggleSelection(a)
- // })
- // }, 200)
- this.$nextTick(() => {
- this.methodCount++;
- this.getProductLoad = false;
- if (this.sampleSelectionList.length == this.methodCount) {
- this.standardLoading = false;
- }
- });
+ if (res.code === 200) {
+ res.data.forEach((a) => {
+ a.state = 0;
+ });
+ row.insProduct = this.HaveJson(res.data);
+ this.productList = row.insProduct;
+ this.productList0 = JSON.parse(JSON.stringify(this.productList));
+ // this.$refs.sampleTable.setCurrentRow(row)
+ // setTimeout(() => {
+ // this.productList.forEach(a => {
+ // if (a.state == 1) this.toggleSelection(a)
+ // })
+ // }, 200)
+ this.$nextTick(() => {
+ this.methodCount++;
+ this.getProductLoad = false;
+ if (this.sampleSelectionList.length == this.methodCount) {
+ this.standardLoading = false;
+ }
+ });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
this.searchProject();
this.searchTemList();
},
searchTemList() {
this.temperatureList = [];
- this.$axios
- .post(this.$api.enums.selectEnumByCategory, {
- category: "鐢靛姏娓╁害寰幆妫�楠�",
- })
+ getDicts("temperature_cycling_type")
.then((res) => {
- if (res.data.length > 0) {
+ if (res.code === 200) {
this.temperatureEngList = res.data;
res.data.forEach((item) => {
- this.temperatureList.push(item.label);
+ this.temperatureList.push(item.dictLabel);
});
}
+ })
+ .catch((error) => {
+ console.error(error);
});
},
changeModel() {
@@ -3733,10 +4422,14 @@
// })
},
selectStandardMethods() {
- this.$axios
- .get(this.$api.standardTree.selectStandardMethodEnum)
+ selectStandardMethodEnum()
.then((res) => {
- this.methods = res.data;
+ if (res.code === 200) {
+ this.methods = res.data;
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
selectable() {
@@ -3918,42 +4611,39 @@
return;
}
this.noLoading = true;
- this.$axios
- .post(
- this.$api.insOrder.upInsOrderOfState,
- {
- state: 2,
- id: this.currentId,
- tell: this.tell,
- },
- {
- headers: {
- "Content-Type": "application/json",
- },
- }
- )
+ upInsOrderOfState({
+ state: 2,
+ id: this.currentId,
+ tell: this.tell,
+ })
.then((res) => {
- this.noLoading = false;
- this.tell = "";
- if (res.code == 201) return;
- this.$message.success("鎻愪氦鎴愬姛");
- this.issuedDialogVisible = false;
- this.$parent.playOrder(0);
+ if (res.code === 200) {
+ this.noLoading = false;
+ this.tell = "";
+ this.$message.success("鎻愪氦鎴愬姛");
+ this.issuedDialogVisible = false;
+ this.$router.go(-1);
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
selectEnumByCategoryForSonLaboratory() {
- this.$axios
- .post(this.$api.enums.selectEnumByCategory, {
- category: "瀛愬疄楠屽",
- })
+ getDicts("sys_sub_lab")
.then((res) => {
- this.factory = [];
- res.data.forEach((a) => {
- this.filters.push({
- text: a.label,
- value: a.value,
+ if (res.code === 200) {
+ this.factory = [];
+ res.data.forEach((a) => {
+ this.filters.push({
+ text: a.dictLabel,
+ value: a.dictValue,
+ });
});
- });
+ }
+ })
+ .catch((error) => {
+ console.error(error);
});
},
filterHandler(value, row, column) {
@@ -3973,24 +4663,28 @@
return;
}
this.sampleIds = [this.sampleId];
- this.$axios
- .post(this.$api.insBushing.selectBushingBySampleId, {
- sampleId: this.sampleId,
- })
+ selectBushingBySampleId({
+ sampleId: this.sampleId,
+ })
.then((res) => {
- if (res.data.length === 0) {
- this.$message.error("璇ユ牱鍝佹病鏈夐厤缃厜绾�");
- return;
- }
- for (var i in this.sampleList) {
- if ((this.sampleList[i].id = this.sampleId)) {
- this.sampleList[i].bushing = res.data;
- break;
+ if (res.code === 200) {
+ if (res.data.length === 0) {
+ this.$message.error("璇ユ牱鍝佹病鏈夐厤缃厜绾�");
+ return;
}
+ for (var i in this.sampleList) {
+ if ((this.sampleList[i].id = this.sampleId)) {
+ this.sampleList[i].bushing = res.data;
+ break;
+ }
+ }
+ this.$nextTick(() => {
+ this.configShow = true;
+ });
}
- this.$nextTick(() => {
- this.configShow = true;
- });
+ })
+ .catch((error) => {
+ console.error(error);
});
}
},
@@ -4006,21 +4700,6 @@
this.$message.error("鏈�変腑鏍峰搧");
return;
}
- // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, {
- // sampleId: this.sampleId
- // }).then(res => {
- // if (res.data.length === 0) {
- // this.$message.error('璇ユ牱鍝佹病鏈夐厤缃厜绾�')
- // return
- // }
- // for (var i in this.sampleList) {
- // if (this.sampleList[i].id = this.sampleId) {
- // this.sampleList[i].bushing = res.data
- // break
- // }
- // }
- // this.configShow = true
- // })
}
},
openCableConfig() {
@@ -4035,21 +4714,6 @@
this.$message.error("鏈�変腑鏍峰搧");
return;
}
- // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, {
- // sampleId: this.sampleId
- // }).then(res => {
- // if (res.data.length === 0) {
- // this.$message.error('璇ユ牱鍝佹病鏈夐厤缃厜绾�')
- // return
- // }
- // for (var i in this.sampleList) {
- // if (this.sampleList[i].id = this.sampleId) {
- // this.sampleList[i].bushing = res.data
- // break
- // }
- // }
- // this.configShow = true
- // })
}
},
upBsm1(val) {
diff --git a/src/views/business/inspectionOrder/index.vue b/src/views/business/inspectionOrder/index.vue
index bc6d5ce..01efcc4 100644
--- a/src/views/business/inspectionOrder/index.vue
+++ b/src/views/business/inspectionOrder/index.vue
@@ -177,6 +177,7 @@
</li>
</ul>
<lims-table
+ highlightCurrentRow
isSelection
:tableData="tableData"
:height="tableHeight + ''"
@@ -374,6 +375,7 @@
fullscreen
>
<lims-table
+ highlightCurrentRow
:heigt="'80vh'"
:tableData="dataLooktableData"
:column="dataLookcolumn"
@@ -835,7 +837,7 @@
import getLodop from "@/utils/lodop";
import Add from "./add.vue";
import { mapGetters } from "vuex";
-import LimsTable from "../../../components/Table/lims-table.vue";
+import LimsTable from "@/components/Table/lims-table.vue";
export default {
components: {
limsTable,
@@ -890,6 +892,11 @@
prop: "sampleName",
minWidth: "160px",
width: "160px",
+ dataType: "link",
+ linkEvent: {
+ method: "showDetails",
+ vueComponent: this,
+ },
},
{
label: "鏍峰搧缂栧彿",
@@ -1803,31 +1810,6 @@
this.beginPrint(this.qrData);
});
this.printDialogVisible = false;
-
- // PrintJS({
- // printable: "printMOrder", //椤甸潰
- // type: "html", //鏂囨。绫诲瀷
- // maxWidth: 360,
- // style: `@page {
- // margin:0;
- // size: 400px 75px collapse;
- // margin-top:3px;
- // &:first-of-type{
- // margin-top:0 !important;
- // }
- // }
- // html{
- // zoom:100%;
- // }
- // @media print{
- // width: 400px;
- // height: 75px;
- // margin:0;
- // }`,
- // onPrintDialogClose: (this.erexcel = false),
- // targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕�
- // font_size: "0.15cm",
- // });
},
print() {
if (this.multipleSelection.length == 0) {
@@ -1866,44 +1848,18 @@
}
},
refresh() {
- this.componentData.entity = this.HaveJson(this.entityCopy);
- this.upIndex++;
+ this.queryParams = {
+ entrustCode: "",
+ outEntrustCode: "",
+ sampleName: "",
+ sampleModel: "",
+ sampleCode: "",
+ startAndEndTime: [],
+ name: "",
+ engineering: "",
+ production: "",
+ };
this.refreshTable();
- },
- // 鏉冮檺鍒嗛厤
- getPower(radio) {
- let power = JSON.parse(sessionStorage.getItem("power"));
- let up = false;
- let del = false;
- let revoke = false;
- let check = false;
- let checkUpdate = false;
- for (var i = 0; i < power.length; i++) {
- if (power[i].menuMethod == "upInsOrder") {
- up = true;
- }
- if (power[i].menuMethod == "updateStatus") {
- revoke = true;
- }
- if (power[i].menuMethod == "upInsOrderOfState") {
- check = true;
- }
- if (power[i].menuMethod == "checkUpdate") {
- checkUpdate = true;
- }
- }
- if (!up) {
- this.componentData.do.splice(5, 1);
- }
- if (!checkUpdate) {
- this.componentData.do.splice(4, 1);
- }
- if (!revoke) {
- this.componentData.do.splice(3, 1);
- }
- if (!check) {
- this.componentData.do.splice(2, 1);
- }
},
handleClose() {
this.verifyDialogVisible = false;
@@ -1926,17 +1882,17 @@
this.exportCheckedDate = [];
this.dialogVisible1 = false;
},
- // 璇︽儏
- selectAllByOne(row) {
- this.active = 2;
- // console.log(row);
- // //鎵撳紑寮规
- // this.dialogVisible = true;
- // //row = 鐐瑰嚮瀵瑰簲琛屽��
- // //澶嶅埗缁檉ormData
- // this.formData = this.HaveJson(row);
- this.currentId = row.id;
- this.examine = 1;
+ // 鏌ョ湅璇︽儏
+ showDetails(row) {
+ this.$router.push({
+ name: "showDetails",
+ query: {
+ active: 2,
+ currentId: row.id,
+ examine: 1,
+ isReview: true,
+ },
+ });
},
// 鏁版嵁鏌ョ湅
handleDataLook(row) {
@@ -2646,13 +2602,15 @@
},
// 涓嬪崟
playOrder(num) {
+ // this.active = num;
+ // this.examine = 0;
this.$router.push({
name: "addOrder",
- params: {},
+ query: {
+ active: num,
+ examine: 0,
+ },
});
- this.active = num;
- this.examine = 0;
- // this.refreshTable();
},
handleTab(m, i) {
this.tabIndex = i;
--
Gitblit v1.9.3