Quellcode durchsuchen

Merge branch 'master' of http://39.106.8.246:3003/web/wanda-adm

haojianlong vor 4 Jahren
Ursprung
Commit
bce42f158c

+ 11 - 0
src/api/equipComponent.ts

@@ -19,3 +19,14 @@ export function BeatchQueryParam(param: any) {
     let data = param.data
     return httputils.postJson(url, data)
 }
+
+// 统计项目已有的设备类型
+export function allDevice(param:any) {
+    return httputils.getJson(`${ baseUrl }/dict/project/equip/type`, {})
+
+}
+// 统计项目已有的系统类型
+export function allSystem(param:any) {
+    return httputils.getJson(`${ baseUrl }/dict/project/system/type`, {})
+
+}

+ 3 - 3
src/components/public/adm-multi-table.vue

@@ -18,9 +18,8 @@
             <el-table-column v-for="item in headersStage" :key="item.name" :label="item.name" align="center">
                 <el-table-column
                     v-for="(child, index) in item.data"
-                    :min-width="child.path === 'outline' ? 800 : 110"
                     :key="index"
-                    :label="child.name"
+                    :label="child.unit ? child.name + child.unit : child.name"
                     :prop="child.path"
                     align="center"
                 >
@@ -33,7 +32,7 @@
 
 <script lang="ts">
 import { ElTable } from "element-ui/types/table";
-import { Component, Prop, Vue, Watch, Ref } from "vue-property-decorator";
+import { Component, Prop, Ref, Vue, Watch } from "vue-property-decorator";
 @Component({
     name: "adm-multi-table",
 })
@@ -53,6 +52,7 @@ export default class extends Vue {
     @Watch("headersStage", { immediate: true, deep: true })
     onCurrentHeaderChange() {
         this.$nextTick(() => {
+            if (this.tableDom?.doLayout) 
             this.tableDom.doLayout();
         });
     }

+ 30 - 94
src/views/maintain/device/index.vue

@@ -2,23 +2,8 @@
     <div class="adm-device">
         <statistics :statistics-msg="statisticsMsg"/>
         <div class="operation">
-<!--            <el-select-->
-<!--                v-model="deviceType"-->
-<!--                placeholder="请选择"-->
-<!--                @change="handleFilter"-->
-<!--                clearable-->
-<!--                filterable-->
-<!--                class="adm-select"-->
-<!--            >-->
-<!--                <el-option-->
-<!--                    v-for="item in list"-->
-<!--                    :key="item.code"-->
-<!--                    :label="item.name"-->
-<!--                    :value="item.code"-->
-
-<!--                />-->
-<!--            </el-select>-->
-            <el-cascader :options="options" clearable v-model="linshi" @change="changeLinshi"  class="adm-select" ></el-cascader>
+            <el-cascader :options="list" clearable v-model="deviceType" :props="optionProps" @change="changeLinshi"
+                         class="adm-select"></el-cascader>
             <admSearch @SearchValue="SearchValue"/>
             <el-button type="default" @click="addDevice" class="adm-btn">添加设备</el-button>
         </div>
@@ -29,7 +14,7 @@
             </el-tabs>
             <div class="table" v-loading="loading">
 <!--                <template v-if="deviceType">-->
-                <template v-if="linshi.length > 0">
+                <template v-if="deviceType.length > 0">
                     <admMultiTable :currentHeader="currentHeader" :tableData="tableData" :headersStage="headersStage"/>
                     <Pagination v-if="tableData.length > 0" :paginationList="paginationList"
                                 @handleCurrentChange="handleCurrentChange"
@@ -51,7 +36,8 @@
             <template v-if="next">
                 <div class="align" style="height: 400px">
                     <span class="text ">设备类别</span>
-                    <el-cascader :options="options" clearable v-model="deviceVal" @change="changeLinshi"
+                    <el-cascader :options="list" clearable v-model="deviceVal" @change="changeLinshi"
+                                 :props="optionProps"
                                  class="adm-select"></el-cascader>
 
                 </div>
@@ -73,7 +59,7 @@
 <script lang="ts">
 import { Component, Vue } from "vue-property-decorator";
 import { AdmMultiTable, AdmSearch, dataForm, Pagination, Statistics } from '../components/index'
-import { BeatchQueryParam, dictInfo } from "@/api/equipComponent";
+import { allDevice, BeatchQueryParam, dictInfo } from "@/api/equipComponent";
 import { queryCount, queryEquip } from "@/api/datacenter";
 import { UserModule } from "@/store/modules/user";
 import tools from "@/utils/maintain"
@@ -84,42 +70,11 @@ import tools from "@/utils/maintain"
     components: { Statistics, AdmSearch, AdmMultiTable, Pagination, dataForm }
 })
 export default class extends Vue {
-    // 临时假数据
-    linshi=''
-    options= [{
-        value: 'zhinan',
-        label: '空调末端系统',
-        children: [{
-            value: 'ACATAH',
-            label: '空调机组',
-        }, {
-            value: 'ACATFC',
-            label: '风机盘管',
-        },{
-            value: 'ACATFU',
-            label: '新风机组',
-        }, {
-            value: 'ACATIO',
-            label: '空调风口',
-        }]
-    }, {
-        value: 'fangpaiyan',
-        label: '防排烟系统',
-        children: [{
-            value: 'FFSCIO',
-            label: '排烟风机',
-        }]
-    }, {
-        value: 'fangfeng',
-        label: '通风系统',
-        children: [{
-            value: 'ACVTSF',
-            label: '通风风机',
-        }, {
-            value: 'ACVTIO',
-            label: '通风风口',
-        }]
-    }]
+    optionProps = {
+        value: 'code',
+        label: 'name',
+        children: 'children'
+    }
 
     // loading
     loading = false
@@ -174,7 +129,7 @@ export default class extends Vue {
     }
 
     created() {
-        // this.deviceList();
+        this.deviceList();
         this.dataCount()
     }
 
@@ -186,43 +141,24 @@ export default class extends Vue {
     }
 
 // 设备类数据
-//     deviceList() {
-//         let param2 = {
-//             distinct: true,
-//             pageNumber: 1,
-//             pageSize: 1000,
-//             projection: ["classCode"],
-//             projectId: this.projectId
-//         }
-//         let promise = new Promise(resolve => {
-//             dictType({}).then(res => {
-//                 resolve(res)
-//             })
-//         })
-//         let promise2 = new Promise(resolve => {
-//             queryEquip(param2).then(res => {
-//                 resolve(res)
-//             })
-//         })
-//         Promise.all([promise, promise2]).then((res) => {
-//             let allData = res[0].content;
-//             let deviceInformation = res[1].content
-//             allData.filter(item => (deviceInformation.indexOf(item.code) > -1))
-//             this.list = allData
-//         })
-//     }
+    deviceList() {
+        allDevice({}).then(res => {
+            this.list = res.content
+            console.log(res)
+        })
+    }
 
 
     // todo 临时假数据函数
     private changeLinshi(val) {
-        console.log(this.linshi,this.linshi[1])
-        if (this.linshi[1]) {
+        console.log(this.deviceType, this.deviceType[1])
+        if (this.deviceType[1]) {
             this.loading = true
             let param = {
-                category: this.linshi[1]
+                category: this.deviceType[1]
             }
             let param2 = {
-                filters: this.linshi[1] ? `classCode='${ this.linshi[1] }'` : undefined,
+                filters: this.deviceType[1] ? `classCode='${ this.deviceType[1] }'` : undefined,
                 pageNumber: this.paginationList.page,
                 pageSize: this.paginationList.size,
                 orders: "createTime desc, id asc",
@@ -298,11 +234,11 @@ export default class extends Vue {
         if (Object.keys(this.headerInformation).length > 0) {
             this.headerInformation.dictStages.forEach(item => {
                 if (this.currentHeader == item.name) {
-                    // item.infos && item.infos.forEach(val => header.push(val))
-                    item.infos && item.infos.forEach(val => {
-                        val.name = val.unit ? `${ val.name }(${ val.unit })` : val.name
-                        header.push(val)
-                    })
+                    item.infos && item.infos.forEach(val => header.push(val))
+                    // item.infos && item.infos.forEach(val => {
+                    //     val.name = val.unit ? `${ val.name }(${ val.unit })` : val.name
+                    //     header.push(val)
+                    // })
                 }
             })
         }
@@ -408,7 +344,7 @@ export default class extends Vue {
     SearchValue(val: string) {
         this.inputSearch = val
         // this.handleFilter(this.deviceType)
-        this.changeLinshi(this.linshi[1])
+        this.changeLinshi(this.deviceType[1])
     }
 
     // 当前分页
@@ -416,13 +352,13 @@ export default class extends Vue {
         console.log(val)
         this.paginationList.page = val
         // this.handleFilter(this.deviceType)
-        this.changeLinshi(this.linshi[1])
+        this.changeLinshi(this.deviceType[1])
     }
 
     handleSizeChange(val: number) {
         this.paginationList.size = val
         // this.handleFilter(this.deviceType)
-        this.changeLinshi(this.linshi[1])
+        this.changeLinshi(this.deviceType[1])
     }
 
     // 添加设备

+ 2 - 0
src/views/maintain/space/index.vue

@@ -231,6 +231,8 @@ export default class spaceIndex extends Vue {
                 });
             });
             this.options = data;
+            let arr = data.filter(item => item.children)
+            console.log(arr)
         });
 
         const pa = {

+ 24 - 78
src/views/maintain/system/index.vue

@@ -3,32 +3,17 @@
         <statistics :statistics-msg="statisticsMsg" />
         <div class="hr"></div>
         <div class="operation">
-            <!--            <el-select-->
-            <!--                v-model="systemType"-->
-            <!--                class="adm-select"-->
-            <!--                clearable-->
-            <!--                filterable-->
-            <!--                placeholder="请选择系统类别"-->
-            <!--                @change="handleFilter"-->
-            <!--            >-->
-            <!--                <el-option-->
-            <!--                    v-for="item in list"-->
-            <!--                    :key="item.code"-->
-            <!--                    :label="item.name"-->
-            <!--                    :value="{ value: item.code,label: item.name }"-->
-            <!--                />-->
-            <!--            </el-select>-->
-            <el-cascader :options="options" clearable v-model="linshi" ref="floorCascader" @change="changeLinshi" class="adm-select"></el-cascader>
+            <el-cascader :options="list" ref="floorCascader" clearable v-model="systemType" :props="optionProps" @change="changeLinshi"
+                         class="adm-select"></el-cascader>
 
-            <admSearch @SearchValue="SearchValue" />
+            <admSearch @SearchValue="SearchValue"/>
             <el-button class="adm-btn" type="default" @click="addDevice">添加系统</el-button>
         </div>
 
         <div class="content">
             <div v-loading="loading" class="table">
-                <!--                <template v-if="systemType">-->
-                <template v-if="linshi.length > 0">
-                    <admMultiTable :currentHeader="currentHeader" :headersStage="headersStage" :tableData="tableData" />
+                <template v-if="systemType.length > 0">
+                    <admMultiTable :currentHeader="currentHeader" :headersStage="headersStage" :tableData="tableData"/>
                     <Pagination
                         :paginationList="paginationList"
                         @handleCurrentChange="handleCurrentChange"
@@ -48,9 +33,9 @@
             <template v-if="next">
                 <div class="align" style="height: 400px">
                     <span class="text">系统类别</span>
-                    <el-select v-model="systemVal" clearable filterable placeholder="请选择系统类别">
-                        <el-option v-for="item in list" :key="item.value" :label="item.label" :value="item.value" />
-                    </el-select>
+<!--                    <el-select v-model="systemVal" clearable filterable placeholder="请选择系统类别">-->
+<!--                        <el-option v-for="item in list" :key="item.value" :label="item.label" :value="item.value" />-->
+<!--                    </el-select>-->
                 </div>
                 <el-button class="fr" type="primary" @click="handleNext">下一步</el-button>
             </template>
@@ -65,60 +50,22 @@
 <script lang="ts">
 import { Component, Vue } from "vue-property-decorator";
 import { AdmMultiTable, AdmSearch, dataForm, Pagination, Statistics } from "../components/index";
-import { dictCategoryQuery, dictQuery, queryCountSystem, querySystem } from "@/api/datacenter";
+import { dictQuery, queryCountSystem, querySystem } from "@/api/datacenter";
 import tools from "@/utils/maintain";
 import { UserModule } from "@/store/modules/user";
-import { BeatchQueryParam } from "@/api/equipComponent";
+import { allSystem, BeatchQueryParam } from "@/api/equipComponent";
 
 @Component({
     name: "adm-device",
     components: { Statistics, AdmSearch, AdmMultiTable, Pagination, dataForm },
 })
 export default class extends Vue {
-    // 临时假数据
-    linshi = "";
-    options = [
-        {
-            value: "zzzz",
-            label: "土建专业",
-            children: [
-                {
-                    value: "CFPK",
-                    label: "停车场",
-                }
-            ],
-        },
-        {
-            value: "zzzz",
-            label: "弱电系统",
-            children: [
-                {
-                    value: "WEMM",
-                    label: "气象监测系统",
-                },
-            ],
-        },
-        {
-            value: "zzzz",
-            label: "强电专业",
-            children: [
-                {
-                    value: "SEOP",
-                    label: "室外动力系统",
-                },
-            ],
-        },
-        {
-            value: "zzzz",
-            label: "给排水系统",
-            children: [
-                {
-                    value: "WSWS",
-                    label: "水景系统",
-                },
-            ],
-        },
-    ];
+    optionProps = {
+        value: 'code',
+        label: 'name',
+        children: 'children'
+    }
+
     // loading
     loading = false;
     // 下拉数据
@@ -162,7 +109,7 @@ export default class extends Vue {
     }
 
     created() {
-        // this.systemList();
+        this.systemList();
         this.dataCount();
     }
 
@@ -174,10 +121,7 @@ export default class extends Vue {
     }
 
     systemList() {
-        let param = {
-            type: "system",
-        };
-        dictCategoryQuery(param).then((res) => {
+        allSystem({}).then((res) => {
             this.list = res.content;
         });
     }
@@ -236,17 +180,20 @@ export default class extends Vue {
     // 搜索
     SearchValue(val: string) {
         this.inputSearch = val;
+        this.changeLinshi()
         // this.handleFilter(this.systemType)
     }
 
     // 当前分页
     handleCurrentChange(val: number) {
         this.paginationList.page = val;
+        this.changeLinshi()
         // this.handleFilter(this.systemType)
     }
 
     handleSizeChange(val: number) {
         this.paginationList.size = val;
+        this.changeLinshi()
         // this.handleFilter(this.systemType)
     }
 
@@ -269,16 +216,16 @@ export default class extends Vue {
     }
     // todo 临时假数据函数
     private changeLinshi(val) {
-        if (this.linshi[1]) {
+        if (this.systemType[1]) {
             let systemLabel = this.$refs["floorCascader"].getCheckedNodes()[0].pathLabels;
             this.systemLabel = systemLabel[1];
             this.loading = true;
             let param = {
-                type: this.linshi[1],
+                type: this.systemType[1],
                 orders: "sort asc, name desc",
             };
             let param2 = {
-                filters: this.linshi[1] ? `classCode='${this.linshi[1]}'` : undefined,
+                filters: this.systemType[1] ? `classCode='${this.systemType[1]}'` : undefined,
                 pageNumber: this.paginationList.page,
                 pageSize: this.paginationList.size,
                 orders: "createTime desc, id asc",
@@ -309,7 +256,6 @@ export default class extends Vue {
                     if (i.includes(item.path)) {
                         basicInfos.push(item);
                     } else {
-                        item.name = item.unit ? `${ item.name }(${ item.unit })` : item.name
                         dictStages.push(item);
                     }
                 });

+ 11 - 0
src/views/manage/build/components/FloorTable/index.vue

@@ -27,6 +27,12 @@
                     ></i>
                 </template>
             </el-table-column> -->
+            <el-table-column prop="OriginalName" label="模型文件名" width="240" align="center"></el-table-column>
+            <el-table-column label="模型文件大小" align="center">
+                <template slot-scope="scope">
+                    <span>{{ scope.row.Size | sizeFilter }}</span>
+                </template>
+            </el-table-column>
             <el-table-column prop="AcceptTime" label="时间" width="240" align="center"></el-table-column>
             <el-table-column prop="UserName" label="上传人"></el-table-column>
             <el-table-column prop="address" align="center" label="操作" width="240">
@@ -84,6 +90,11 @@ import { UserModule } from "@/store/modules/user";
 import { ElTable } from "element-ui/types/table";
 @Component({
     name: "FloorTable",
+    filters: {
+        sizeFilter: (size: number): string => {
+            return `${(size / 1024 / 1024).toFixed()}M`
+        }
+    },
     components: {},
 })
 export default class extends Vue {

+ 19 - 28
src/views/project/index.vue

@@ -7,35 +7,18 @@
             <el-button style="float: right" @click="addProject">添加项目</el-button>
         </el-row>
         <div class="saga-brand-group">
-            <ul class="saga-brand-list">
-                <li
-                    class="saga-brand-item"
-                    :class="{ 'brand-new': item.new }"
-                    v-for="item in projectList"
-                    :key="item.id"
-                    :title="item.name"
-                    @click="handleClickBrand(item)"
-                >
-                    <div class="saga-brand-name">
-                        <p class="saga-brand-zhName">{{ item.name }}</p>
-                        <p class="saga-brand-enName" :title="item.name">{{ item.name }}</p>
-                    </div>
-                    <div class="saga-brand-logo">
-                        <el-image
-                            style="width: 52px; height: 52px"
-                            :src="`/image-service/common/image_get?systemId=dataPlatform&key=${item.logo}`"
-                            fit="fill"
-                        >
-                            <div slot="error" class="image-slot">
-                                <img src="@/assets/404-images/404.png" alt="" style="width: 100%" />
+            <el-row :gutter="12">
+                <el-col :span="6" v-for="item in projectList" :key="item.id">
+                    <el-card shadow="always" :body-style="{ padding: '0px' }">
+                        <el-image style="width: 100%; height: 187px" src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png"></el-image>
+                        <div style="padding: 14px">
+                            <div class="bottom clearfix">
+                                <time class="time">{{ item.name }}</time>
                             </div>
-                        </el-image>
-                    </div>
-                </li>
-                <li class="pick"></li>
-                <li class="pick"></li>
-                <li class="pick"></li>
-            </ul>
+                        </div>
+                    </el-card>
+                </el-col>
+            </el-row>
         </div>
     </div>
 </template>
@@ -105,8 +88,16 @@ export default class extends Vue {
 
 <style lang="scss" scoped>
 .project-box {
+    height: 100%;
     padding: 0 16px;
     .saga-brand-group {
+        height: calc(100% - 48px);
+        overflow-y: auto;
+        overflow-x: hidden;
+        ::v-deep .el-col {
+            margin-bottom: 12px;
+        }
+
         .saga-brand-list {
             display: flex;
             flex-direction: row;