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