Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/views/scene/tiepoint/components/equipTab/index.vue
shaun-sheep 3 vuotta sitten
vanhempi
commit
9e28ac9b51

+ 21 - 0
src/components/Breadcrumb/index.vue

@@ -37,12 +37,33 @@ export default class extends Vue {
     private getBreadcrumb() {
         let matched = this.$route.matched.filter((item) => item.meta && item.meta.title);
         const first = matched[0];
+        //针对关系模块添加面包屑
+        if(first) {
+        matched = this.relationModel(matched)
+        }
 
         this.breadcrumbs = matched.filter((item) => {
             return item.meta && item.meta.title && item.meta.breadcrumb !== false;
         });
     }
 
+    /**
+     * 关系模块
+     *
+     */
+    relationModel(matched:any = []){
+        if(matched.length >= 2 && matched[1].path == '/maintain/relation'){
+            matched[2] = {
+              path: "/maintain/relationship",
+              meta:{
+                  title:this.$route.query.relationTypeName,
+                  hidden: true,
+              }
+            }
+        }
+        return matched
+    }
+
     // private isDashboard(route: RouteRecord) {
     //     const name = route && route.meta && route.meta.title;
     //     return name === "Dashboard";

+ 45 - 8
src/components/business/baseDataForm.vue

@@ -1,24 +1,29 @@
 <template>
     <el-row :gutter="20" class="data-form">
         <el-form label-position="top" label-width="300px" :model="form" :rules="rules" ref="form">
-            <template v-if="Object.keys(objectHeaders).length > 0">
-                <div v-for="obj in objectHeaders" :key="obj.name">
+            <template v-if="Object.keys(infoHeaders).length > 0">
+                <div v-for="obj in infoHeaders" :key="obj.name">
                     <p class="title"> {{ obj.name }}</p>
                     <el-row :gutter="18">
                         <el-col :span="item.dataType == 'ATTACHMENT'? 24:8"
                                 :key="item.path"
                                 v-for="item in obj.data"
-                                :style="{ 'height':item.dataType == 'ATTACHMENT'? 'auto':'93px' }">
+                                :style="{ 'height': item.dataType == 'ATTACHMENT'? 'auto':'93px' }">
                             <el-form-item :label="item.name" :prop="item.code">
+                                <!-- 动态数据按输入框输入 -->
                                 <el-input
-                                    v-if="item.path == 'classification' || item.path=='buildingSign' || item.path=='floorSign'"
+                                    v-if="item.category !== 'STATIC'"
+                                    v-model="form[item.path]"
+                                    :disabled="!item.editable"
+                                />
+                                <el-input
+                                    v-else-if="item.path == 'classification' || item.path=='buildingSign' || item.path=='floorSign'"
                                     v-model="form[item.path]"
                                     disabled/>
                                 <el-input
                                     :disabled="!item.editable"
                                     v-else-if="item.dataType == 'STRING'"
                                     v-model="form[item.path]"/>
-
                                 <el-input
                                     v-else-if="item.dataType == 'DOUBLE' || item.dataType == 'INTEGER'"
                                     type="number"
@@ -120,8 +125,30 @@ export default class extends Vue {
     }
     header = {}
     form = {}
-    @Prop({ default: Object }) objectHeaders ?: {}
-    @Prop({ default: Object }) currRowContent ?: {}
+    @Prop({ default: Object }) objectHeaders ?: any
+    @Prop({ default: Object }) currRowContent ?: any
+
+    private get infoHeaders(): any {
+        if (this.objectHeaders?.dictStages?.data?.length && this.objectHeaders?.basicInfos) {
+            const base: any[] = [], enclosure: any[] = []; 
+            this.objectHeaders.dictStages.data.forEach((item: any) => {
+                if (item.dataType === 'ATTACHMENT') {
+                    enclosure.push(item);
+                } else {
+                    base.push(item);
+                }
+            })
+            return {
+                basicInfos: this.objectHeaders.basicInfos,
+                dictStages: {
+                    name: this.objectHeaders.dictStages?.name,
+                    data: [...base, ...enclosure]
+                }
+            }
+        } else {
+            return this.objectHeaders;
+        }
+    }
 
     @Watch('currRowContent', { immediate: true, deep: true })
     handleRow() {
@@ -174,5 +201,15 @@ $border: 1px solid #E1E7EA;
         }
     }
 }
-
 </style>
+<style lang="scss">
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+    -webkit-appearance: none !important;
+    margin: 0; 
+}
+
+input[type="number"] {
+    -moz-appearance: textfield;
+}
+</style>

+ 9 - 9
src/views/maintain/relationship/components/tableHeader.ts

@@ -1,12 +1,12 @@
 const tableHeader = {
-    '设备所在建筑': [['建筑', 'objectInfo'], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
-    '设备所在楼层': [['建筑', 'objectInfo'], ['楼层','floorName'], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
-    '设备所在功能空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo'], ['楼层','floorName'], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
-    '设备服务功能空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo'], ['楼层','floorName'], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
-    '设备所在供电空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo'], ['楼层','floorName'], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
-    '空间所在建筑': [['建筑', 'objectInfo'], ['空间本地名称', "localName"], ['空间本地编码', "localId"], ['楼层','floorName']],
-    '空间所在楼层': [['建筑', 'objectInfo'], ['楼层','floorName'], ['空间本地名称', "localName"], ['空间本地编码', "localId"]],
-    '空间服务空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo'], ['楼层','floorName'], ['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo'], ['楼层','floorName']],
-    '系统下的设备': [['系统分类','systemCategory'], ['分类名称',''], ['系统编码',''], ['BIM构件名称', 'localName'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '设备所在建筑': [['建筑', 'objectInfo-name'], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '设备所在楼层': [['建筑', 'objectInfo-name'], ['楼层','floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '设备所在功能空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo-name'], ['楼层','floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '设备服务功能空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo-name'], ['楼层','floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '设备所在供电空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo-name'], ['楼层','floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
+    '空间所在建筑': [['建筑', 'objectInfo-name'], ['空间本地名称', "localName"], ['空间本地编码', "localId"], ['楼层','floorName']],
+    '空间所在楼层': [['建筑', 'objectInfo-name'], ['楼层','floorName'], ['空间本地名称', "localName"], ['空间本地编码', "localId"]],
+    '空间服务空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'objectInfo-name'], ['楼层','floorName'], ['空间本地名称', "localName"], ['空间本地编码', "localId"], ['楼层','floorName']],
+    '系统下的设备': [['系统分类','systemCategory'], ['系统名称',''], ['系统编码',''], ['BIM构件名称', 'bimTypeId'], ['系统分类','systemCategory'], ['设备类型名称','codeName'], ['设备本地编码', "localId"]],
 }
 export default tableHeader

+ 1 - 1
src/views/maintain/relationship/relation/components/table.vue

@@ -20,7 +20,7 @@
       align="left"
     >
       <template slot-scope="scope">
-        {{ item[1] == 'objectInfo' ? scope.row.objectInfo[0].name :scope.row[item[1]] }}
+        {{ (item[1].includes('objectInfo') && scope.row.objectInfo ? scope.row.objectInfo[0][item[1].split('-')[1]] :scope.row[item[1]]) || '--' }}
       </template>
     </el-table-column>
     <el-table-column label="操作" align="left">

+ 4 - 7
src/views/maintain/space/index.vue

@@ -540,12 +540,9 @@ export default class spaceIndex extends Vue {
 
     // 编辑当前行
     handleCurrentEdit(val: object) {
-        this.currRowContent = val
-        let pic = this.headersStage.dictStages.data.filter(i => i.dataType == 'ATTACHMENT')
-        let base = this.headersStage.dictStages.data.filter(i => i.dataType != 'ATTACHMENT')
-        this.headersStage.dictStages.data = pic.length > 0 ? [...base, ...pic] : [...base]
-        this.spaceHeaders = this.headersStage
-        this.dialogVisible = true
+        this.currRowContent = val;
+        this.spaceHeaders = this.headersStage;
+        this.dialogVisible = true;
     }
 
     // tab页切换
@@ -644,7 +641,7 @@ export default class spaceIndex extends Vue {
     .el-dialog {
         .el-dialog__body {
             padding: 20px;
-            max-height: 643px !important;
+            max-height: 550px !important;
             min-height: 100px;
             overflow-y: auto;
             overflow-x: hidden;

+ 8 - 14
src/views/maintain/system/index.vue

@@ -227,17 +227,11 @@ export default class extends Vue {
                 orders: "sort asc, name desc",
             };
 
-            await dictQuery(param).then(res => {
-                let { basicInfos, dictStages } = this.informationArrangement(res.content)
+            await dictQuery(param).then((res: any) => {
+                const { basicInfos, dictStages } = this.informationArrangement(res.content);
                 // 添加系统分类
-                let pic = [], base = []
-                dictStages.map((item) => {
+                dictStages.map((item: any) => {
                     item = { ...item, classification: this.systemLabel };
-                    if (item.dataType == 'ATTACHMENT') {
-                        pic.push(item)
-                    } else {
-                        base.push(item)
-                    }
                     return item;
                 });
                 this.systemHeaders = {
@@ -247,7 +241,7 @@ export default class extends Vue {
                     },
                     dictStages: {
                         name: "运维阶段",
-                        data: pic.length > 0 ? [...base, ...pic] : [...base],
+                        data: dictStages,
                     },
                 };
             })
@@ -267,16 +261,16 @@ export default class extends Vue {
     }
 
     // 编辑当前行
-    handleCurrentEdit(val) {
+    handleCurrentEdit(val: any) {
         this.next = false
         this.systemMsg = '编辑系统'
         this.currRowContent = val
-        this.handleNext()
+        this.systemHeaders = this.headersStage;
         this.dialogVisible = true
     }
 
     //信息点重组
-    informationArrangement(arr: []): object {
+    informationArrangement(arr: []): any {
         let basicInfos = [{ path: "classification", name: "系统分类"}],
             dictStages: any[] = [];
         this.all = arr;
@@ -489,7 +483,7 @@ $border: 1px solid #e1e7ea;
     .el-dialog {
         .el-dialog__body {
             padding: 20px;
-            max-height: 643px !important;
+            max-height: 550px !important;
             min-height: 100px;
             overflow-y: auto;
             overflow-x: hidden;

+ 108 - 18
src/views/scene/tiepoint/components/equipTab/index.vue

@@ -9,11 +9,21 @@
                 @change="handleChangeDevice"
                 class="item"
             ></el-cascader>
-            <admSearch @SearchValue="searchValue" class="item"/>
+            <admSearch @SearchValue="searchValue" class="item" />
+            <el-upload
+                style="float: right"
+                action="https://jsonplaceholder.typicode.com/posts/"
+                :show-file-list="false"
+                multiple
+            >
+                <el-button>上传Excle</el-button>
+            </el-upload>
+            <el-button style="float: right; margin-right: 12px" @click="handleClickDownload">下载模板</el-button>
         </div>
         <div v-loading="loading" style="height: calc(100% - 100px); padding: 0 12px; position: relative">
             <template style="height: 100%" v-if="tableData.length">
                 <admMultiTable
+                    ref="table"
                     @handleCurrentEdit="handleCurrentEdit"
                     :isDynamicMap="false"
                     :currentHeader="currentHeader"
@@ -28,19 +38,30 @@
                 />
             </template>
             <div v-else class="void align">
-                <svg-icon name="void" :width="String(120)" :height="String(123)"/>
+                <svg-icon name="void" :width="String(120)" :height="String(123)" />
                 <p class="void-title">暂无内容</p>
                 <p class="void-tips">可点击左上角筛选</p>
             </div>
         </div>
+        <!--编辑 设备-->
+        <el-dialog title="编辑设备" :visible.sync="dialogVisible">
+            <template>
+                <baseDataForm :objectHeaders="headersStage" :currRowContent="currRowContent" ref="baseDataForm" />
+                <span slot="footer" class="dialog-footer">
+                    <el-button @click="dialogVisible = false">取消</el-button>
+                    <el-button type="primary" @click="handleDataForm">完成</el-button>
+                </span>
+            </template>
+        </el-dialog>
     </div>
 </template>
 <script lang="ts">
-import { Vue, Component } from "vue-property-decorator";
+import { Vue, Component, Ref } from "vue-property-decorator";
 import { allDevice, dictInfo } from "@/api/equipComponent";
 import { queryEquip, updateEquip } from "@/api/datacenter";
-import { AdmMultiTable, AdmSearch, Pagination } from "@/views/maintain/components/index";
+import { AdmMultiTable, AdmSearch, Pagination, baseDataForm } from "@/views/maintain/components/index";
 import { UserModule } from "@/store/modules/user";
+import tools from "@/utils/maintain";
 
 @Component({
     name: "EquipTab",
@@ -48,9 +69,12 @@ import { UserModule } from "@/store/modules/user";
         AdmMultiTable,
         AdmSearch,
         Pagination,
+        baseDataForm
     },
 })
 export default class EquipTab extends Vue {
+    // 信息点输入组组件
+    @Ref("baseDataForm") readonly baseDataForm!: baseDataForm;
     // 项目id
     private get projectId(): string {
         return UserModule.projectId;
@@ -93,6 +117,10 @@ export default class EquipTab extends Vue {
         sizes: [10, 30, 50, 100, 150, 200],
         total: 0,
     };
+    // 当前编辑行的数据
+    private currRowContent: any = {};
+    // 弹窗开关
+    private dialogVisible = false;
 
     // created钩子
     created() {
@@ -119,14 +147,14 @@ export default class EquipTab extends Vue {
                 category: this.deviceType,
             };
             let param2 = {
-                filters: `classCode='${ this.deviceType }'`,
+                filters: `classCode='${this.deviceType}'`,
                 pageNumber: this.paginationList.page,
                 pageSize: this.paginationList.size,
                 orders: "createTime desc, id asc",
                 projectId: this.projectId,
             };
             if (this.keyWord != "") {
-                param2.filters += `;codeName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
+                param2.filters += `;codeName contain '${this.keyWord}' or systemCategory contain '${this.keyWord}' or bimTypeId contain '${this.keyWord}' or localId contain '${this.keyWord}'`;
             }
             let promise = new Promise((resolve) => {
                 dictInfo(param).then((res: any) => {
@@ -160,21 +188,22 @@ export default class EquipTab extends Vue {
         if (this.deviceType) {
             this.loading = true;
             let params = {
-                filters: `classCode='${ this.deviceType }'`,
+                filters: `classCode='${this.deviceType}'`,
                 pageNumber: this.paginationList.page,
                 pageSize: this.paginationList.size,
                 orders: "createTime desc, id asc",
                 projectId: this.projectId,
             };
             if (this.keyWord != "") {
-                params.filters += `;codeName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
+                params.filters += `;codeName contain '${this.keyWord}' or systemCategory contain '${this.keyWord}' or bimTypeId contain '${this.keyWord}' or localId contain '${this.keyWord}'`;
             }
             const res = await queryEquip(params);
             if (res.result === "success") {
-                this.tableData = res?.content ? res.content : []; // 主体数据
-                this.paginationList.total = res?.total ? res.total : 0;
-
-                this.loading = false;
+                setTimeout(() => {
+                    this.tableData = res?.content ? res.content : []; // 主体数据
+                    this.paginationList.total = res?.total ? res.total : 0;
+                    this.loading = false;
+                });
             }
         } else {
             this.tableData = [];
@@ -228,6 +257,8 @@ export default class EquipTab extends Vue {
      * 切换设备类型
      */
     private handleChangeDevice() {
+        this.paginationList.page = 1;
+        this.paginationList.size = 50;
         this.getEquipData();
     }
 
@@ -240,6 +271,17 @@ export default class EquipTab extends Vue {
     }
 
     /**
+     * 下载模板
+     */
+    private handleClickDownload() {
+        console.log("下载模板");
+    }
+
+    /**
+     * 上传Excle
+     */
+
+    /**
      * 切换页码
      */
     private handleCurrentChange(val: number) {
@@ -254,6 +296,39 @@ export default class EquipTab extends Vue {
         this.paginationList.size = val;
         this.getExampleData();
     }
+
+    /**
+     * 编辑当前行
+     */
+    handleCurrentEdit(val: any) {
+        this.currRowContent = val;
+        this.dialogVisible = true;
+    }
+
+    /**
+     * 添加/编辑 事件处理
+     */
+    private handleDataForm() {
+        this.baseDataForm.submitForm(this.handleDataFormSave);
+    }
+
+    /**
+     * 更新设备数据
+     */
+    private async handleDataFormSave() {
+        let from = tools.formatData(this.baseDataForm.form);
+        if (from?.id) {
+            const param = {
+                content: [from],
+            };
+            const res = await updateEquip(param);
+            if (res.result === "success") {
+                this.$message.success("更新成功");
+                this.dialogVisible = false;
+                this.getExampleData();
+            }
+        }
+    }
 }
 </script>
 <style lang="scss" scoped>
@@ -265,23 +340,38 @@ export default class EquipTab extends Vue {
 
     .search {
         padding: 12px;
-
         & > .item {
             margin-right: 12px;
         }
     }
 }
-
 // 数据暂未
-.void {
-    margin-top: 200px;
-}
-
 .align {
+    height: 100%;
     display: flex;
     align-items: center;
     justify-content: center;
     flex-direction: column;
     flex-wrap: wrap;
 }
+
+::v-deep .el-dialog {
+    .el-dialog__body {
+        padding: 20px;
+        max-height: 550px !important;
+        min-height: 100px;
+        overflow-y: auto;
+        overflow-x: hidden;
+    }
+}
+
+::v-deep .el-select,
+.el-date-editor.el-input,
+.el-date-editor.el-input__inner {
+    width: 100%;
+}
+
+::v-deep .el-dialog__header {
+    border-bottom: 1px solid #d8d8d8;
+}
 </style>

+ 90 - 7
src/views/scene/tiepoint/components/systemTab/index.vue

@@ -11,8 +11,12 @@
                 class="item"
             ></el-cascader>
             <admSearch @SearchValue="searchValue" class="item" />
+            <el-upload style="float: right" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false" multiple>
+                <el-button>上传Excle</el-button>
+            </el-upload>
+            <el-button style="float: right; margin-right: 12px" @click="handleClickDownload">下载模板</el-button>
         </div>
-        <div v-loading="loading" style="height: calc(100% - 100px); padding: 0 12px; position: relative;">
+        <div v-loading="loading" style="height: calc(100% - 100px); padding: 0 12px; position: relative">
             <template style="height: 100%" v-if="tableData.length">
                 <admMultiTable
                     @handleCurrentEdit="handleCurrentEdit"
@@ -34,15 +38,26 @@
                 <p class="void-tips">可点击左上角筛选</p>
             </div>
         </div>
+        <!--编辑 系统-->
+        <el-dialog title="编辑系统" :visible.sync="dialogVisible">
+            <template>
+                <baseDataForm :objectHeaders="headersStage" :currRowContent="currRowContent" ref="baseDataForm" />
+                <span slot="footer" class="dialog-footer">
+                    <el-button @click="dialogVisible = false">取消</el-button>
+                    <el-button type="primary" @click="handleDataForm">完成</el-button>
+                </span>
+            </template>
+        </el-dialog>
     </div>
 </template>
 <script lang="ts">
 import { Vue, Component, Ref } from "vue-property-decorator";
 import { allSystem } from "@/api/equipComponent";
-import { dictQuery, querySystem } from "@/api/datacenter";
-import { AdmMultiTable, AdmSearch, Pagination } from "@/views/maintain/components/index";
+import { dictQuery, querySystem, updateSystem } from "@/api/datacenter";
+import { AdmMultiTable, AdmSearch, Pagination, baseDataForm } from "@/views/maintain/components/index";
 import { UserModule } from "@/store/modules/user";
 import { ElCascader } from "element-ui/types/cascader";
+import tools from "@/utils/maintain";
 
 @Component({
     name: "SystemTab",
@@ -50,11 +65,14 @@ import { ElCascader } from "element-ui/types/cascader";
         AdmMultiTable,
         AdmSearch,
         Pagination,
+        baseDataForm,
     },
 })
 export default class SystemTab extends Vue {
     // 系统类筛选框
     @Ref("systemCascader") readonly systemCascader!: ElCascader;
+    // 信息点输入组组件
+    @Ref("baseDataForm") readonly baseDataForm!: baseDataForm;
 
     // 项目id
     private get projectId(): string {
@@ -93,7 +111,6 @@ export default class SystemTab extends Vue {
     private all: any = [];
     // 输入类型选项
     private codeToDataSource: any = {};
-
     // 分页
     private paginationList = {
         page: 1,
@@ -101,6 +118,10 @@ export default class SystemTab extends Vue {
         sizes: [10, 30, 50, 100, 150, 200],
         total: 0,
     };
+    // 当前编辑行的数据
+    private currRowContent: any = {};
+    // 弹窗开关
+    private dialogVisible = false;
 
     // created钩子
     created() {
@@ -251,6 +272,8 @@ export default class SystemTab extends Vue {
      * 切换系统类型
      */
     private handleChangeSystem() {
+        this.paginationList.page = 1;
+        this.paginationList.size = 50;
         this.getSystemData();
     }
 
@@ -263,6 +286,17 @@ export default class SystemTab extends Vue {
     }
 
     /**
+     * 下载模板
+     */
+    private handleClickDownload() {
+        console.log("下载模板");
+    }
+
+    /**
+     * 上传Excle
+     */
+
+    /**
      * 切换页码
      */
     private handleCurrentChange(val: number) {
@@ -277,6 +311,37 @@ export default class SystemTab extends Vue {
         this.paginationList.size = val;
         this.getExampleData();
     }
+
+    /**
+     * 编辑当前行
+     */
+    handleCurrentEdit(val: any) {
+        this.currRowContent = val;
+        this.dialogVisible = true;
+    }
+
+    // 添加/编辑 事件处理
+    private handleDataForm() {
+        this.baseDataForm.submitForm(this.handleDataFormSave);
+    }
+
+    /**
+     * 更新系统数据
+     */
+    private async handleDataFormSave() {
+        let from = tools.formatData(this.baseDataForm.form);
+        if (from?.id) {
+            const param = {
+                content: [from],
+            };
+            const res = await updateSystem(param);
+            if (res.result === "success") {
+                this.$message.success("更新成功");
+                this.dialogVisible = false;
+                this.getExampleData();
+            }
+        }
+    }
 }
 </script>
 <style lang="scss" scoped>
@@ -294,14 +359,32 @@ export default class SystemTab extends Vue {
     }
 }
 // 数据暂未
-.void {
-    margin-top: 200px;
-}
 .align {
+    height: 100%;
     display: flex;
     align-items: center;
     justify-content: center;
     flex-direction: column;
     flex-wrap: wrap;
 }
+
+::v-deep .el-dialog {
+    .el-dialog__body {
+        padding: 20px;
+        max-height: 550px !important;
+        min-height: 100px;
+        overflow-y: auto;
+        overflow-x: hidden;
+    }
+}
+
+::v-deep .el-select,
+.el-date-editor.el-input,
+.el-date-editor.el-input__inner {
+    width: 100%;
+}
+
+::v-deep .el-dialog__header {
+    border-bottom: 1px solid #d8d8d8;
+}
 </style>