From 121b2ce562afa4fe69de89853f549687f11b7d1f Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期四, 04 七月 2024 16:48:57 +0800
Subject: [PATCH] 发布模型发布管理页面接口对接

---
 src/api/iot/modelServer.js           |   25 ++++
 src/views/iot/modelserver/index.vue  |  303 +++++++++++++++++---------------------------------
 src/views/iot/modelLibrary/index.vue |   10 -
 3 files changed, 131 insertions(+), 207 deletions(-)

diff --git a/src/api/iot/modelServer.js b/src/api/iot/modelServer.js
index db372e3..2b97aa0 100644
--- a/src/api/iot/modelServer.js
+++ b/src/api/iot/modelServer.js
@@ -7,3 +7,28 @@
         params: query,
     });
 }
+export function modelSelectPublishByPage(query) {
+    return request({
+        url: 'model/selectPublishByPage',
+        method: 'get',
+        params: query,
+    });
+}
+
+export function modelPubMetas(data) {
+    return request({
+        url: 'model/pubMetas',
+        method: 'post',
+        data: data,
+    });
+}
+
+
+export function modelDeletePublishes(query) {
+    return request({
+        url: 'model/deletePublishes',
+        method: 'get',
+        params: query,
+    });
+}
+
diff --git a/src/views/iot/modelLibrary/index.vue b/src/views/iot/modelLibrary/index.vue
index a8e4aec..2c7659b 100644
--- a/src/views/iot/modelLibrary/index.vue
+++ b/src/views/iot/modelLibrary/index.vue
@@ -39,15 +39,11 @@
                     <el-table-column label="鎻忚堪" align="center" prop="bak" />
                     <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="240">
                         <template slot-scope="scope">
-                            <!-- <el-button size="small" type="primary" style="padding: 5px" icon="el-icon-edit"
-                                v-hasPermi="['iot:modelLibrary:add']">淇敼</el-button> -->
-                            <!-- <el-button size="small" type="danger" style="padding: 5px" icon="el-icon-delete"
-                                v-hasPermi="['iot:modelLibrary:remove']">鍒犻櫎</el-button> -->
+                             
                             <el-button size="small" @click="setModelLibraryExport(scope.row)" type="warning"
                                 style="padding: 5px" icon="el-icon-download"
                                 v-hasPermi="['iot:modelLibrary:export']">涓嬭浇</el-button>
-                            <!-- <el-button size="small" type="success" style="padding: 5px"
-                                icon="el-icon-monitor">棰勮</el-button> -->
+                        
                         </template>
                     </el-table-column>
                 </el-table>
@@ -237,7 +233,7 @@
         },
         setModelLibraryExport(row) {
             modelDownloadetaReq({ ids: [row.id] }).then((response) => {
-                if (response.code == 200) {
+                if (response.code == 200 && response.msg) {
                     this.setModelDownloadFile(response.msg)
                 } else {
                     this.$message(response.msg);
diff --git a/src/views/iot/modelserver/index.vue b/src/views/iot/modelserver/index.vue
index 05fb740..6bb4cbc 100644
--- a/src/views/iot/modelserver/index.vue
+++ b/src/views/iot/modelserver/index.vue
@@ -8,72 +8,59 @@
                         @keyup.enter.native="setQueryParamsQuery" />
                 </el-form-item>
                 <el-form-item label="鏈嶅姟绫诲埆" prop="type">
-
+                    <el-select v-model="queryParams.type" @change="getList" placeholder="璇烽�夋嫨妯″瀷绫诲埆" clearable
+                        size="small">
+                        <el-option v-for="dict in dict.type.iot_model_library_type" :key="dict.value"
+                            :label="dict.label" :value="dict.value" />
+                    </el-select>
                 </el-form-item>
                 <el-form-item>
                     <el-button type="primary" icon="el-icon-search" size="mini"
                         @click="setQueryParamsQuery">鎼滅储</el-button>
                     <el-button icon="el-icon-refresh" size="mini" @click="setQueryParamsRest">閲嶇疆</el-button>
                 </el-form-item>
+
             </el-form>
         </el-card>
         <el-card class="modelLibiraryContent">
+            <el-tabs v-model="activeName" @tab-click="setQueryParamsRest">
+                <el-tab-pane label="鏈彂甯冩ā鍨嬫暟鎹�" name="first"></el-tab-pane>
+                <el-tab-pane label="宸插彂甯冩ā鍨嬫暟鎹�" name="second"></el-tab-pane>
+            </el-tabs>
             <div class="modelLibiraryTable">
-                <el-table :data="templateList" border @selection-change="handleSelectionChange">
-                    <el-table-column type="selection" width="55" />
-                    <el-table-column label="妯″瀷鍚嶇О" align="center" prop="name" />
-                    <el-table-column label="妯″瀷绫诲瀷" align="center" prop="type" />
-                    <el-table-column label="妯″瀷澶у皬" align="center" prop="sizes" :formatter="formatterSize" />
-                    <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" :formatter="formatterTime" />
-                    <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="240">
-                        <template slot-scope="scope">
 
-                            <el-button v-show="!scope.row.url" size="small" @click="setModelLibraryExport(scope.row)"
-                                type="success" style="padding: 5px" icon="el-icon-position"
-                                v-hasPermi="['iot:modelLibrary:export']">鍙戝竷</el-button>
+                <div class="modelLibiraryTable">
+                    <el-table :data="templateList" border>
+                        <!-- <el-table-column type="selection" width="55" /> -->
+                        <el-table-column label="妯″瀷鍚嶇О" align="center" prop="name" />
+                        <el-table-column label="妯″瀷绫诲瀷" align="center" prop="type" />
+                        <el-table-column label="妯″瀷澶у皬" align="center" prop="sizes" :formatter="formatterSize" />
+                        <el-table-column label="鍙戝竷鐘舵��" align="center">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.url">宸插彂甯�</span>
+                                <span v-else>鏈彂甯�</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="鍙戝竷鍦板潃" align="center" prop="url" />
 
-                        </template>
-                    </el-table-column>
-                </el-table>
+                        <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" :formatter="formatterTime" />
+                        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="240">
+                            <template slot-scope="scope">
+
+                                <el-button v-show="activeName == 'first' && !scope.row.url" type="success" size="small"
+                                    @click="setModelLibraryExport(scope.row)" icon="el-icon-position">鍙戝竷</el-button>
+                                <el-button v-show="activeName == 'second'" size="small"
+                                    @click="setModelLibraryDelete(scope.row)" type="warning"
+                                    icon="el-icon-delete">绉婚櫎</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageIndex"
+                        :limit.sync="queryParams.pageSize" @pagination="getList" />
+                </div>
             </div>
         </el-card>
-        <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
-            <el-form ref="modelFrom" :model="modelFrom" :rules="rules" label-width="80px">
-                <!-- <el-form-item label="妯″瀷鍚嶇О" prop="name">
-                    <el-input v-model="modelFrom.name"></el-input>
-                </el-form-item> -->
-                <!-- <el-form-item label="妯″瀷绫诲埆" prop="type">
-                    <el-select v-model="modelFrom.type" style="width: 100%" placeholder="璇烽�夋嫨妯″瀷绫诲埆" clearable
-                        size="small">
-                        <el-option v-for="dict in dict.type.iot_model_library_type" :key="dict.value"
-                            :label="dict.label" :value="dict.value" />
-                    </el-select>
-                </el-form-item> -->
-                <el-form-item label="妯″瀷鍦板潃" prop="path">
-                    <div style="display: flex">
-                        <div style="flex: 1">
-                            <input style="display: none" @change="setFileChange" id="fileInput" type="file"
-                                accept=".zip"></input>
-                            <el-input disabled v-model="modelFrom.path" />
-                        </div>
-                        <div style="margin-left: 10px">
-                            <el-link style="margin: 0px 10px" title="閫夋嫨" :underline="false" icon="el-icon-plus"
-                                @click="setFileCheck"></el-link>
-                            <el-link style="margin: 0px 10px" title="涓婁紶" :underline="false" icon="el-icon-upload2"
-                                @click="setFileInset"></el-link>
-                        </div>
-                    </div>
-                </el-form-item>
-                <!-- <el-form-item label="鎻忚堪">
-                    <el-input v-model="modelFrom.bak"></el-input>
-                </el-form-item> -->
-            </el-form>
-            <div slot="footer" class="dialog-footer">
-                <!-- <el-button type="primary" v-show="modelFrom.ids">淇� 鏀�</el-button> -->
-                <el-button type="primary" @click="setSsubmitForm('modelFrom')">鏂� 澧�</el-button>
-                <el-button>鍙� 娑�</el-button>
-            </div>
-        </el-dialog>
+
     </div>
 </template>
 
@@ -82,12 +69,15 @@
 import configTools from '../../../assets/js/configTools';
 import { getToken } from "@/utils/auth";
 import {
-    modelSelectMetasByPage
+    modelSelectMetasByPage,
+    modelSelectPublishByPage,
+    modelPubMetas,
+    modelDeletePublishes
 } from '@/api/iot/modelServer';
 
 export default {
     name: 'modelserver',
-
+    dicts: ['iot_model_library_type'],
     data() {
         return {
             loading: false,
@@ -130,18 +120,27 @@
             },
             multipleSelection: [],
             headers: { Authorization: "Bearer " + getToken() },
+            activeName: 'first'
         };
     },
     created() {
         this.init();
     },
     methods: {
+
+        handleClick() {
+            if (this.activeName == 'first') {
+                this.getList()
+            } else {
+                this.getListSource();
+            }
+        },
         init() {
             if (this.$store.state.user.roles.indexOf('tenant') !== -1) {
                 this.isTenant = true;
             }
 
-            this.getList();
+            this.handleClick();
         },
         getSelectPath() {
             modelSelectPath().then((response) => {
@@ -158,7 +157,7 @@
         //鏌ヨ
         setQueryParamsQuery() {
             this.queryParams.pageIndex = 1;
-            this.getList();
+            this.handleClick();
         },
         // 閲嶇疆
         setQueryParamsRest() {
@@ -168,176 +167,72 @@
                 name: null,
                 type: null,
             }
-            this.getList();
+            this.handleClick();
         },
         // 鎼滅储
         getList() {
             modelSelectMetasByPage(this.queryParams).then((response) => {
                 if (response.code == 200) {
 
-                    this.total = response.data.length;
-                    this.templateList = response.data;
+                    if (response.data) {
+                        this.total = response.data.length;
+                        this.templateList = response.data;
+                    } else {
+                        this.total = 0;
+                        this.templateList = [];
+                    }
+
                 } else {
                     this.$message('妯″瀷鏁版嵁鍒楄〃鑾峰彇澶辫触銆�');
                 }
             })
         },
-        setModelLibraryRemove() {
-            if (this.multipleSelection.length <= 0) {
-                return this.$message('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁');
-            }
-            const std = [];
-            this.multipleSelection.filter((response) => {
-                std.push(response.id);
+        getListSource() {
+            modelSelectPublishByPage(this.queryParams).then((response) => {
+                if (response.code == 200) {
+                    if (response.data) {
+                        this.total = response.data.length;
+                        this.templateList = response.data;
+                    } else {
+                        this.total = 0;
+                        this.templateList = [];
+                    }
+                } else {
+                    this.$message('妯″瀷鏁版嵁鍒楄〃鑾峰彇澶辫触銆�');
+                }
             })
-            modelDeleteMetas({ ids: std.toString() }).then((response) => {
+        },
+        setModelLibraryExport(res) {
+            modelPubMetas({
+                ids: [res.id]
+            }).then(response => {
                 if (response.code == 200) {
                     this.$message({
-                        message: '涓夌淮妯″瀷鍒犻櫎鎴愬姛',
+                        message: '妯″瀷鏁版嵁鍙戝竷鎴愬姛銆�',
                         type: 'success'
                     });
-                    this.setQueryParamsQuery();
+                    this.handleClick();
                 } else {
-                    this.$message('涓夌淮妯″瀷鍒犻櫎澶辫触');
+                    this.$message('妯″瀷鏁版嵁鍙戝竷澶辫触銆�');
                 }
-            })
-        },
-        setModelLibraryExport(row) {
-            modelDownloadetaReq({ ids: [row.id] }).then((response) => {
-                if (response.code == 200) {
-                    this.setModelDownloadFile(response.msg)
-                } else {
-                    this.$message(response.msg);
-                }
-            })
-        },
-        setModelDownloadFile(res) {
-            axios.get(process.env.VUE_APP_BASE_API + "model/downloadFile?guid=" + res, {
-                responseType: 'blob',
-                headers: this.headers
-            }).then((response) => {
-                if (response.status === 200) {
-                    var elink = document.createElement('a');
-                    console.log(response.headers['content-disposition']);
-                    debugger
-                    // 浣跨敤鍚庣鎻愪緵鐨勬枃浠跺悕  鍛藉悕
-                    // const fileName = response.headers['content-disposition'].split('=')[1];
-                    // elink.style.display = 'none';
-                    // // 鏂囦欢涓嬭浇鍦板潃璧嬪��
-                    // elink.href = window.URL.createObjectURL(response.data);
-                    // let str = fileName;
-                    // if (fileName.indexOf("UTF-8''") > -1) {
-                    //     str = fileName.replace("UTF-8''", '')
-                    // }
-                    // elink.download = str;
-                    // elink.click();
-                    // this.$message({
-                    //     message: '鏂囦欢瀵煎嚭鎴愬姛',
-                    //     type: 'success'
-                    // });
-                }
-            })
-        },
-        // 娣诲姞涓夌淮妯″瀷
-        setModelLibraryAdd() {
-            this.setFromRest();
-            this.open = true;
-            this.title = '娣诲姞涓夌淮妯″瀷';
-        },
-        setModelLibraryCannel() {
-            this.open = false;
-            this.title = '';
-            this.setFromRest();
-            document.getElementById('fileInput').value = "";
-            this.selectMappers = null;
-        },
-        setSsubmitForm(formName) {
-            if (!this.selectMappers) {
-                this.$message('涓夌淮妯″瀷鏈笂浼犳棤娉曟柊澧�');
-            }
-            this.$refs[formName].validate((valid) => {
-                if (valid) {
-                    this.setModelInsertFiles(this.selectMappers)
-                } else {
-                    console.log('error submit!!');
-                    return false;
-                }
-            });
-        },
-        setModelInsertFiles(res) {
-            modelInsertFiles(JSON.stringify(res)).then((response) => {
-                if (response.code == 200) {
-                    this.$message({
-                        message: '涓夌淮妯″瀷娣诲姞鎴愬姛',
-                        type: 'success'
-                    });
-                    this.setModelLibraryCannel();
-                    this.setQueryParamsQuery();
-                } else {
-                    this.$message('涓夌淮妯″瀷娣诲姞澶辫触');
-                }
-            })
-        },
-        // 鏂囦欢閫夋嫨
-        setFileCheck() {
-            document.getElementById('fileInput').click();
-        },
 
-        setFileChange() {
-            const inputFile = document.getElementById('fileInput').files;
-            if (inputFile.length > 0) {
-                this.modelFrom.path = inputFile[0].name;
-            } else {
-                this.$message('鑾峰彇涓婁紶鏂囦欢淇℃伅澶辫触锛岃閲嶆柊灏濊瘯');
-            }
+            })
         },
-        // 鏂囦欢涓婁紶
-        setFileInset() {
-            if (!this.selectPath) {
-                this.getSelectPath();
-            }
-            var formData = new FormData();
-            const fs = document.getElementById('fileInput').files;
-            for (var i = 0, c = fs.length; i < c; i++) {
-                formData.append(fs[i].name, fs[i]); // fs.files[i].name,file
-            }
-            modelUploadFiles(this.selectPath, formData).then((response) => {
+        setModelLibraryDelete(res) {
+            modelDeletePublishes({
+                ids: [res.id].toString()
+            }).then(response => {
                 if (response.code == 200) {
                     this.$message({
-                        message: '鏁版嵁涓婁紶鎴愬姛',
+                        message: '妯″瀷鏈嶅姟绉婚櫎鎴愬姛銆�',
                         type: 'success'
                     });
-                    this.setModelSelectMappers()
+                    this.handleClick();
                 } else {
-                    this.$message('鏁版嵁涓婁紶澶辫触');
+                    this.$message('妯″瀷鏈嶅姟绉婚櫎澶辫触銆�');
                 }
+
             })
-        },
-        setModelSelectMappers() {
-            if (!this.selectPath) {
-                this.getSelectPath();
-            }
-            this.selectMappers = null;
-            modelSelectMappers({ path: this.selectPath }).then((response) => {
-                if (response.code == 200) {
-                    this.selectMappers = response.data;
-                } else {
-                    this.$message('鏁版嵁鏄犲皠鏌ヨ澶辫触');
-                }
-            })
-        },
-        // 琛ㄥ崟閲嶇疆
-        setFromRest() {
-            this.modelFrom = {
-                name: '',
-                type: '',
-                path: '',
-                bak: '',
-                ids: '',
-            };
-        },
-        formatterSize(row, column, cellValue, index) {
-            return configTools.formatterSize(cellValue);
         },
         formatterTime(row, column, cellValue, index) {
             if (cellValue) {
@@ -346,7 +241,15 @@
                 return null
             }
 
-        }
+        },
+        formatterSize(row, column, cellValue, index) {
+
+            if (cellValue) {
+                return configTools.formatterSize(cellValue);
+            } else {
+                return null
+            }
+        },
     },
 };
 </script>

--
Gitblit v1.9.3