From 00e99028a381a8d15e0b24e6a778fd16a74ce4aa Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 05 十二月 2024 16:16:05 +0800
Subject: [PATCH] 地图
---
src/views/system/work-order/threshold/index.vue | 370 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 334 insertions(+), 36 deletions(-)
diff --git a/src/views/system/work-order/threshold/index.vue b/src/views/system/work-order/threshold/index.vue
index 4287d0f..1139da9 100644
--- a/src/views/system/work-order/threshold/index.vue
+++ b/src/views/system/work-order/threshold/index.vue
@@ -14,7 +14,7 @@
<!-- </el-col>-->
<!-- </el-row>-->
<el-row>
- <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+ <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
<el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
<div style="display: flex; justify-content: space-between">
<div class="header鈥攖ext">瑙嗛</div>
@@ -103,7 +103,7 @@
</div>
</el-card>
</el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+ <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
<el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
<div style="display: flex; justify-content: space-between">
<div class="header鈥攖ext">浜鸿劯</div>
@@ -193,7 +193,7 @@
</div>
</el-card></el-col
>
- <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+ <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
<el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
<div style="display: flex; justify-content: space-between">
<div class="header鈥攖ext">杞﹁締</div>
@@ -283,7 +283,127 @@
</el-card></el-col
>
</el-row>
+
+ <el-row class="content-warp">
+ <div class="header鈥攖ext" style="margin-bottom: 5px">宸ュ崟鐧藉悕鍗�</div>
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
+ <el-form-item label="鍏抽敭瀛�" prop="keyword">
+ <el-input
+ v-model="queryParams.keyword"
+ placeholder="璁惧缂栫爜/鐐逛綅鍚�"
+ clearable
+ @keyup.enter.native="getWhiteList"
+ @clear="getWhiteList"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="small" @click="getWhiteList">鎼滅储</el-button>
+ </el-form-item>
+ </el-form>
+ </el-row>
+ <el-row class="content-warp">
+ <el-button size="small" type="success" @click="whiteOpen" plain>鏂板</el-button>
+ <el-button size="small" type="danger" @click="bathDelete" plain>鍒犻櫎</el-button>
+ <el-button type="primary" plain icon="el-icon-top" v-loading="download" size="mini" @click="handleExport"
+ >瀵煎嚭鐧藉悕鍗�</el-button>
+ <el-popover style="margin-left: 10px" placement="bottom" trigger="hover" content="瀵煎叆鐧藉悕鍗�">
+ <div class="bottom_">
+ <el-upload
+ ref="upload"
+ class="upload-demo"
+ drag
+ :action="importUrl"
+ :file-list="fileList"
+ :before-upload="beforeUpload"
+ >
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <div class="el-upload__tip" slot="tip">鍙兘涓婁紶xls/xlsx鏂囦欢</div>
+ </el-upload>
+ </div>
+ <div>
+ <el-button class="bottom_" type="primary" size="small" v-loading="upload" @click="handleImport"
+ >瀵煎叆</el-button>
+ </div>
+ <el-button type="primary" size="small" plain icon="el-icon-bottom" slot="reference" >瀵煎叆鐧藉悕鍗�</el-button>
+ </el-popover>
+ </el-row>
+ <el-row class="content-warp">
+ <el-col :span="24">
+ <el-table v-loading="loading" :data="workOrderWhiteList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" prop="id"/>
+ <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber"/>
+ <el-table-column label="鐐逛綅鍚嶇О" align="center" prop="pointName"/>
+ <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType"/>
+ <el-table-column label="澶囨敞" align="center" prop="remark"/>
+ <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button size="mini" type="text" icon="el-icon-edit" @click="handleWhiteUpdate(scope.row)"
+ >淇敼</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :auto-scroll="false"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getWhiteList"
+ />
+ </el-col>
+ </el-row>
+
+<!-- 鏂板鐧藉悕鍗�-->
+ <el-dialog
+ :title="title"
+ :visible.sync="whiteShow"
+ width="500px"
+ :close-on-click-modal="false"
+ :before-close="whiteClose">
+ <div>
+ <el-form :model="whiteForm" label-position="top" :rules="whiteFormRules" ref="whiteForm" size="small" class="add-form">
+ <el-form-item label="鐐逛綅" prop="serialNumber" >
+ <el-select
+ v-model="whiteForm.pointName"
+ filterable
+ remote
+ reserve-keyword
+ :disabled = "whiteForm.id"
+ placeholder="鍥芥爣鐮�/鐐逛綅鍚嶇О鎼滅储"
+ :remote-method="remoteGetPoints"
+ @change="setPointId"
+ :loading="selectLoading"
+ style="width: 460px">
+ <el-option
+ v-for="item in pointList"
+ :key="item.id"
+ :label="item.value"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏁呴殰绫诲瀷" prop="errorTypeList">
+ <el-select v-model="whiteForm.errorTypeList" multiple>
+ <el-option v-for="dict in dict.type.error_type"
+ :value="dict.value"
+ :key="dict.value"
+ :label="dict.label"/>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="澶囨敞淇℃伅" prop="remark">
+ <el-input v-model="whiteForm.remark"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="whiteClose">鍙� 娑�</el-button>
+ <el-button type="primary" @click="whiteSubmit">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</div>
+
</template>
<script>
@@ -291,23 +411,35 @@
listThreshold,
getThreshold,
updateThreshold,
-} from "@/api/platform/threshold";
-import {
+ importData,
editCar,
editFace,
getCar,
getFace,
getVideo,
-} from "../../../../api/platform/threshold";
+ getWhiteList,
+ getWhite,
+ addWhiteList,
+ bathDelete,
+ updateWhite,
+ whiteExport
+} from "@/api/platform/threshold";
+import { pointSelectData } from "@/api/platform/point";
export default {
- dicts: ["image_qualify", "video_qualify"],
+ dicts: ["image_qualify", "video_qualify", "error_type"],
name: "Threshold",
data() {
return {
+ download: false,
+ scrollPosition: 0, // 鐢ㄤ簬淇濆瓨婊氬姩浣嶇疆
+ // 涓嬫媺鍔犺浇
+ selectLoading: false,
ifEditVideo: false,
ifEditFace: false,
ifEditCar: false,
+ // 鐐逛綅list
+ pointList: [],
indicators: [],
// 閬僵灞�
loading: true,
@@ -337,6 +469,8 @@
pageNum: 1,
pageSize: 10,
monitorType: null,
+ serialNumber: null,
+ pointName: null,
},
// 琛ㄥ崟鍙傛暟
videoForm: {},
@@ -345,48 +479,48 @@
// 琛ㄥ崟鏍¢獙
faceRules: {
monitorType: [
- { required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change" },
+ {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"},
],
captureNum: [
- { required: true, message: "璇峰~鍐欐姄鎷嶉噺", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐姄鎷嶉噺", trigger: "blur"},
],
timelyRate: [
- { required: true, message: "璇峰~鍐欏強鏃剁巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欏強鏃剁巼", trigger: "blur"},
],
delayAmount: [
- { required: true, message: "璇峰~鍐欏欢杩熼噺", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欏欢杩熼噺", trigger: "blur"},
],
deviceActiveRate: [
- { required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"},
],
timeAccuracy: [
- { required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur"},
],
timelyCapture: [
- { required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"},
],
},
carRules: {
monitorType: [
- { required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change" },
+ {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"},
],
passCarNum: [
- { required: true, message: "璇峰~鍐欒繃杞︽暟鎹噺", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欒繃杞︽暟鎹噺", trigger: "blur"},
],
passCarMissRate: [
- { required: true, message: "璇峰~鍐欒繃杞︾己澶辩巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欒繃杞︾己澶辩巼", trigger: "blur"},
],
passCarEffectiveNum: [
- { required: true, message: "璇峰~鍐欐湁鏁堣繃杞︽暟鎹噺", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐湁鏁堣繃杞︽暟鎹噺", trigger: "blur"},
],
timelyCapture: [
- { required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"},
],
deviceActiveRate: [
- { required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"},
],
timeAccuracy: [
- { required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur"},
],
},
rules: {
@@ -398,21 +532,81 @@
},
],
videoQuality: [
- { required: true, message: "璇烽�夋嫨瑙嗛璐ㄩ噺闃堝��", trigger: "change" },
+ {required: true, message: "璇烽�夋嫨瑙嗛璐ㄩ噺闃堝��", trigger: "change"},
],
imageQuality: [
- { required: true, message: "璇烽�夋嫨鍥惧儚璐ㄩ噺闃堝��", trigger: "change" },
+ {required: true, message: "璇烽�夋嫨鍥惧儚璐ㄩ噺闃堝��", trigger: "change"},
],
annotationAccuracy: [
- { required: true, message: "璇峰~鍐欐爣娉ㄥ噯纭巼闃堝��", trigger: "blur" },
+ {required: true, message: "璇峰~鍐欐爣娉ㄥ噯纭巼闃堝��", trigger: "blur"},
],
},
+ // 鐧藉悕鍗曞垪琛�
+ workOrderWhiteList: [],
+ // 鏂板妗�
+ whiteShow: false,
+ whiteForm: {
+ serialNumber: "",
+ remark: "",
+ },
+ // 鏂板妗嗘牎楠�
+ whiteFormRules: {
+ serialNumber: [
+ {required: true, message: "璁惧涓嶈兘涓虹┖", trigger: "blur"},
+ ],
+ errorTypeList: [
+ { required: true, message: "璇烽�夋嫨鏁呴殰绫诲瀷", trigger: "blur" }
+ ],
+ },
+ // 瀵煎叆鏂囦欢璺緞
+ importUrl: '',
+ fileList: [],
+ importFile: null,
+ upload: false,
};
},
created() {
this.getList();
+ this.getWhiteList();
},
methods: {
+ setPointId(selectedValue) {
+ const selectedItem = this.pointList.find(item => item.value === selectedValue);
+ this.whiteForm.serialNumber = selectedItem.id
+ },
+ // 杩滅▼鎼滅储鐐逛綅
+ remoteGetPoints(query) {
+ if (query !== '') {
+ this.selectLoading = true;
+ let data = {
+ "keyword": query
+ }
+ pointSelectData(data).then(res => {
+ this.pointList = res.data;
+ this.selectLoading = false;
+ })
+ } else {
+ this.pointList = [];
+ }
+ },
+ handleExport() {
+ this.download = true
+ whiteExport().then(res => {
+ // 灏嗕簩杩涘埗鏁版嵁杞崲涓� Blob 瀵硅薄
+ let blob = new Blob([res], { type: 'application/octet-stream' });
+
+ // 鍒涘缓涓嬭浇閾炬帴
+ let downloadLink = document.createElement('a');
+ downloadLink.href = URL.createObjectURL(blob);
+ downloadLink.setAttribute('download', "宸ュ崟鐧藉悕鍗曟竻鍗�.xlsx"); // 璁剧疆涓嬭浇鏂囦欢鐨勬枃浠跺悕
+ downloadLink.style.display = 'none';
+ // 娣诲姞鍒伴〉闈㈠苟瑙﹀彂涓嬭浇
+ document.body.appendChild(downloadLink);
+ downloadLink.click();
+ document.body.removeChild(downloadLink);
+ this.download = false
+ })
+ },
showEdit(value) {
if (value == "video") {
this.videoList = JSON.parse(JSON.stringify(this.thresholdList.video));
@@ -503,6 +697,15 @@
this.videoList = JSON.parse(JSON.stringify(this.thresholdList.video));
this.faceList = JSON.parse(JSON.stringify(this.thresholdList.face));
this.carList = JSON.parse(JSON.stringify(this.thresholdList.car));
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ getWhiteList() {
+ // 淇濆瓨褰撳墠婊氬姩浣嶇疆
+ this.loading = true;
+ getWhiteList(this.queryParams).then((response) => {
+ this.workOrderWhiteList = response.data;
this.total = response.total;
this.loading = false;
});
@@ -614,16 +817,16 @@
});
}
},
- handleUpdate(row) {
- this.reset();
- const id = row.id || this.ids;
- getThreshold(id).then((response) => {
- this.form = response.data;
- this.indicators = JSON.parse(this.form.indicator);
- this.videoOpen = true;
- this.title = "淇敼杩愮淮闃堝��";
- });
- },
+ // handleUpdate(row) {
+ // this.reset();
+ // const id = row.id || this.ids;
+ // getThreshold(id).then((response) => {
+ // this.form = response.data;
+ // this.indicators = JSON.parse(this.form.indicator);
+ // this.videoOpen = true;
+ // this.title = "淇敼杩愮淮闃堝��";
+ // });
+ // },
/** 鎻愪氦鎸夐挳 */
submitForm() {
this.$refs["form"].validate((valid) => {
@@ -658,7 +861,8 @@
this.getList();
this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
})
- .catch(() => {});
+ .catch(() => {
+ });
},
/** 鍒囨崲涓嶅悓鎸囨爣 */
handleModeNameChange() {
@@ -749,10 +953,96 @@
];
}
},
- },
+ // 鎵撳紑鏂板妗�
+ whiteOpen() {
+ this.title = "鏂板鐧藉悕鍗�"
+ this.whiteShow = true;
+ },
+ // 鍏抽棴鏂板妗�
+ whiteClose() {
+ this.whiteShow = false;
+ this.whiteReset();
+ },
+ // 鐧藉悕鍗曟鎻愪氦
+ whiteSubmit() {
+ this.$refs["whiteForm"].validate((valid) => {
+ if (valid) {
+ if (this.whiteForm.id != null) {
+ updateWhite(this.whiteForm).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.whiteShow = false;
+ this.getWhiteList();
+ this.whiteReset();
+ });
+ } else {
+ addWhiteList(this.whiteForm).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.whiteShow = false;
+ this.getWhiteList();
+ this.whiteReset();
+ });
+ }
+ }
+ });
+ },
+ // 鏂板妗嗛噸缃�
+ whiteReset() {
+ this.whiteForm = {
+ serialNumber: "",
+ remark: "",
+ };
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleWhiteUpdate(row) {
+ this.whiteReset();
+ const id = row.id
+ getWhite(id).then(response => {
+ this.whiteForm = response.data;
+ this.title = "淇敼鐧藉悕鍗�";
+ this.whiteShow = true;
+ });
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length !== 1
+ this.multiple = !selection.length
+ },
+ // 鎵归噺鍒犻櫎
+ bathDelete() {
+ bathDelete(this.ids).then(() => {
+ this.getWhiteList();
+ this.$modal.msgSuccess("鎵归噺鍒犻櫎鎴愬姛");
+ this.ids = [];
+ })
+ },
+ beforeUpload(file) {
+ this.importFile = file
+ this.fileList = [file]
+ return false
+ },
+ // 瀵煎叆鐧藉悕鍗�
+ handleImport() {
+ this.upload = true;
+ let formData = new FormData()
+ formData.append("file", this.importFile)
+ importData(formData).then(res => {
+ this.$message.success("瀵煎叆鎴愬姛")
+ this.upload = false
+ this.fileList = []
+ this.getWhiteList()
+ }).catch(()=>{
+ this.upload = false
+ })
+ }
+ }
};
</script>
<style scoped>
+.add-form /deep/ .el-form-item {
+ margin-bottom: 20px;
+}
+
::v-deep .el-input-half-width {
width: calc(50% - 6px); /* 鍑忓幓涓�浜涢棿闅� */
}
@@ -786,4 +1076,12 @@
margin-left: 5px;
display: inline-block;
}
+.content-warp {
+ margin-top: 10px;
+}
+.bottom_ {
+ width: 100%;
+ margin-bottom: 8px;
+}
+
</style>
--
Gitblit v1.8.0