From 7ae73495487e9bebb986d53ca923a9ebac231618 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 16 八月 2024 16:40:54 +0800
Subject: [PATCH] 资产管理动态字段
---
src/views/system/monitor/video/index.vue | 1
src/views/system/data-manage/equipment/index.vue | 35 +++++++++--
src/components/RightToolbar/index.vue | 75 +++++++++++++++++++++++++
src/api/platform/dynamicColumn.js | 35 +++++++++++
4 files changed, 138 insertions(+), 8 deletions(-)
diff --git a/src/api/platform/dynamicColumn.js b/src/api/platform/dynamicColumn.js
new file mode 100644
index 0000000..b5464f3
--- /dev/null
+++ b/src/api/platform/dynamicColumn.js
@@ -0,0 +1,35 @@
+import axios from '@/utils/request';
+
+// 鑾峰彇鍔ㄦ�佸垪鍒楄〃
+export const getDynamicColumnList = () => {
+ return axios({
+ url: "/api/dynamic-column/list",
+ method: "GET"
+ })
+}
+
+// 閫氳繃id鍒犻櫎鍔ㄦ�佸垪
+export const deleteDynamicColumnById = (params) => {
+ return axios({
+ url: "/api/dynamic-column/" + params,
+ method: "DELETE"
+ })
+}
+
+// 淇敼鍔ㄦ�佸垪
+export const editDynamicColumn = (data) => {
+ return axios({
+ url: "/api/dynamic-column",
+ method: "PUT",
+ data: data
+ })
+}
+
+// 娣诲姞鍔ㄦ�佸垪
+export const addDynamicColumn = (params) => {
+ return axios({
+ url: "/api/dynamic-column",
+ method: "POST",
+ data: params
+ })
+}
diff --git a/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue
index 67da293..d125e60 100644
--- a/src/components/RightToolbar/index.vue
+++ b/src/components/RightToolbar/index.vue
@@ -7,6 +7,9 @@
<el-tooltip class="item" effect="dark" content="鍒锋柊" placement="top">
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
</el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鑷畾涔夊垪" placement="top">
+ <el-button size="mini" circle icon="el-icon-refresh" @click="addDynamicColumn()" />
+ </el-tooltip>
<el-tooltip class="item" effect="dark" content="鏄鹃殣鍒�" placement="top" v-if="columns">
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
@@ -29,13 +32,45 @@
@change="dataChange"
></el-transfer>
</el-dialog>
+
+
+ <el-dialog
+ title="娣诲姞鍔ㄦ�佸垪"
+ :visible.sync="showDynamicColumn"
+ width="500px"
+ :before-close="dynamicColumnClose">
+ <div>
+ <div style="margin-bottom: 8px">
+ <el-button style="float: right" type="primary" @click="addColumn" size="small">鏂板涓�鏉�</el-button>
+ </div>
+ <div v-for="(dynamicColumn, index) in dynamicColumnList" :key="index">
+ <el-form :inline="true" size="small">
+ <el-form-item label="鍒楀悕" prop="labelValue">
+ <div style="display: flex; flex-direction: row">
+ <el-input v-model="dynamicColumn.labelValue"></el-input>
+ <el-button style="margin-left: 8px" type="danger" @click="delColumn(dynamicColumn.id, index)">鍒犻櫎</el-button>
+ </div>
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+
+ <span slot="footer" class="dialog-footer">
+ <el-button size="small" @click="dynamicColumnClose">鍙� 娑�</el-button>
+ <el-button type="primary" size="small" :disabled="!dynamicColumnList || dynamicColumnList.length < 1" @click="saveColumns">淇� 瀛�</el-button>
+ </span>
+ </el-dialog>
+
</div>
</template>
<script>
+import { addDynamicColumn, deleteDynamicColumnById, editDynamicColumn, getDynamicColumnList } from '@/api/platform/dynamicColumn'
export default {
name: "RightToolbar",
data() {
return {
+ dynamicColumnList: [],
+ showDynamicColumn: false,
// 鏄鹃殣鏁版嵁
value: [],
// 寮瑰嚭灞傛爣棰�
@@ -80,6 +115,7 @@
}
},
created() {
+ this.getDyColumn()
if (this.showColumnsType == 'transfer') {
// 鏄鹃殣鍒楀垵濮嬮粯璁ら殣钘忓垪
for (let item in this.columns) {
@@ -90,6 +126,45 @@
}
},
methods: {
+ getDyColumn() {
+ if (this.$route.path.concat("equipment")) {
+ // 鏌ヨ鍔ㄦ�佸垪
+ let params = {
+ tableName: 't_monitor'
+ }
+ getDynamicColumnList(params).then(res => {
+ this.dynamicColumnList = res.data
+ })
+ }
+ },
+ addDynamicColumn() {
+ this.showDynamicColumn = true
+ },
+ saveColumns() {
+ editDynamicColumn(this.dynamicColumnList).then(res => {
+ this.$message.success("淇濆瓨鎴愬姛")
+ this.showDynamicColumn = false
+ })
+ },
+ addColumn() {
+ this.dynamicColumnList.push({
+ id: null,
+ labelValue: ''
+ })
+ },
+ delColumn(id, index) {
+ if (! id) {
+ this.dynamicColumnList.splice(index, 1)
+ return
+ }
+ deleteDynamicColumnById(id).then(res => {
+ this.$message.success("鍒犻櫎鎴愬姛")
+ this.getDyColumn();
+ })
+ },
+ dynamicColumnClose() {
+ this.showDynamicColumn = false
+ },
// 鎼滅储
toggleSearch() {
this.$emit("update:showSearch", !this.showSearch);
diff --git a/src/views/system/data-manage/equipment/index.vue b/src/views/system/data-manage/equipment/index.vue
index bb28103..76b4ea0 100644
--- a/src/views/system/data-manage/equipment/index.vue
+++ b/src/views/system/data-manage/equipment/index.vue
@@ -41,9 +41,9 @@
</el-card>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
- <el-form-item label="鍏抽敭瀛�" prop="name">
+ <el-form-item label="鍏抽敭瀛�" prop="keyword">
<el-input
- v-model="queryParams.name"
+ v-model="queryParams.keyword"
placeholder="璇疯緭鍏ュ叧閿瓧"
clearable
@keyup.enter.native="handleQuery"
@@ -107,12 +107,17 @@
<el-table-column label="鏍囩" align="center" prop="publicSecurity" width="180" v-if="columns[0].visible"/>
<el-table-column label="鍖哄煙" align="center" prop="address" width="180" v-if="columns[1].visible"/>
<el-table-column label="璁惧鐘舵��" align="center" prop="onState" v-if="columns[2].visible">
- <template slot-scope="scope">
- <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
- </template>
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
+ </template>
</el-table-column>
<el-table-column label="鏁版嵁鏃堕棿" align="center" prop="installedTime" width="180" v-if="columns[3].visible"/>
<el-table-column label="绠$悊鍗曚綅" align="center" prop="managementUnit" width="180" v-if="columns[4].visible"/>
+ <el-table-column v-for="(column, index) in dynamicColumnList" :key="index" :label="column.labelValue" :prop="column.propName" align="center">
+ <template slot-scope="scope">
+ {{ getDynamicValue(scope.row, column.propName) }}
+ </template>
+ </el-table-column>
<el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<el-button
@@ -167,12 +172,14 @@
<script>
import { videoCount, listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor } from "@/api/platform/monitor";
+import { getDynamicColumnList } from '@/api/platform/dynamicColumn'
import { dataCenter } from "@/api/platform/data-center";
export default {
name: "Monitor",
dicts: ['sys_normal_disable', 'platform_yes_no','camera_state'],
data() {
return {
+ dynamicColumnList: [],
// 鍒椾俊鎭�
columns: [
{ key: 0, label: `鏍囩`, visible: true },
@@ -213,7 +220,7 @@
pageNum: 1,
pageSize: 10,
serialNumber: null,
- name: null,
+ keyword: '鐞冩満',
onState: null,
address: null,
installedTime: null,
@@ -243,12 +250,26 @@
created() {
this.getVideoCount();
this.getList();
- this.getCountyList();
+ this.getDyColumn()
},
methods: {
+ getDyColumn() {
+ // 鏌ヨ鍔ㄦ�佸垪
+ let params = {
+ tableName: 't_monitor'
+ }
+ getDynamicColumnList(params).then(res => {
+ this.dynamicColumnList = res.data
+ })
+ },
+ getDynamicValue(row, propName) {
+ let target = row.dynamicColumnList.filter(item => item.propName === propName)
+ return target && target.length > 0 ? target[0].columnValue : ''
+ },
/** 鏌ヨ璁惧璧勪骇鍒楄〃 */
getList() {
this.loading = true;
+ this.getDyColumn()
dataCenter('assetManagement', this.queryParams).then(response => {
this.monitorList = response.data;
this.total = response.total;
diff --git a/src/views/system/monitor/video/index.vue b/src/views/system/monitor/video/index.vue
index 87296d4..0736845 100644
--- a/src/views/system/monitor/video/index.vue
+++ b/src/views/system/monitor/video/index.vue
@@ -288,7 +288,6 @@
created() {
this.getVideoCount();
this.getList();
- this.getCountyList();
},
methods: {
/** 鏌ヨ璁惧璧勪骇鍒楄〃 */
--
Gitblit v1.8.0