From ba3f4338070b930bc2b5b50bcd483aba1a37d7b9 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期一, 21 十一月 2022 20:37:07 +0800 Subject: [PATCH] 数据管理,界面修改,接口对接,功能开发 --- src/views/datamanage/dataLoader.vue | 555 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 470 insertions(+), 85 deletions(-) diff --git a/src/views/datamanage/dataLoader.vue b/src/views/datamanage/dataLoader.vue index 7bbaadf..026ee29 100644 --- a/src/views/datamanage/dataLoader.vue +++ b/src/views/datamanage/dataLoader.vue @@ -14,7 +14,7 @@ <el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-form-item :label="$t('dataManage.dataUpObj.catalogue')"> <el-cascader - v-model="formInline.catalog" + v-model="formInline.dirid" :options="catalogOption" @change="catalogChange" :props="cascader" @@ -22,15 +22,25 @@ </el-form-item> <el-form-item :label="$t('dataManage.dataUpObj.company')"> <el-cascader - v-model="formInline.company" + v-model="formInline.depid" :options="companyOption" @change="companyChange" :props="cascader" ></el-cascader> </el-form-item> + <el-form-item :label="$t('dataManage.dataUpObj.versionNo')"> + <el-select v-model="formInline.verid" :placeholder="$t('common.choose')"> + <el-option + v-for="item in verOption" + :key="item.id" + :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> <el-form-item :label="$t('dataManage.dataUpObj.entryTime')"> <el-date-picker - v-model.trim="formInline.monitorTime" + v-model.trim="formInline.gather" :picker-options="pickerOptions" type="datetime" placeholder="璇烽�夋嫨" @@ -38,7 +48,7 @@ /> </el-form-item> <el-form-item> - <input id="uploadfile" @change= "handleFileChange" type="file" name="file" multiple="multiple" style="display: none"></input> + <input id="uploadfile" @change= "handleFileChange" type="file" name="file" multiple="multiple" accept=".xls,.xlsx,.mdb,.shp.zip,.gdb.zip" style="display: none"></input> <el-button icon="el-icon-document-add" @click="fileSelect" class="primary">{{ $t('common.file') }}</el-button> @@ -47,17 +57,16 @@ <el-form-item :label="$t('dataManage.dataUpObj.describe')"> <el-input type="textarea" - v-model="formInline.desc" + v-model="formInline.descr" maxlength="50" class="nm-skin-pretty" show-word-limit -:rows="2" resize='none' + :rows="2" resize='none' style="width: 460px" ></el-input> </el-form-item> <el-form-item> <el-button icon="el-icon-upload" @click="setFileUpload" - type="success">{{ $t('common.upload') }}</el-button> @@ -85,7 +94,7 @@ :data="tableData" border style="width: 100%" - height="92%" + height="99%" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" /> <el-table-column @@ -95,15 +104,15 @@ width="70px" fixed /> - - <el-table-column + <el-table-column align="center" prop="name" - :label="$t('userManage.userInfoObj.uname')" + :label="$t('common.name')" fixed /> + </el-table> - <div style="margin-top: 10px" class="pagination_box"> + <!-- <div style="margin-top: 10px" class="pagination_box"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" @@ -114,17 +123,67 @@ :total="count" > </el-pagination> - </div> + </div> --> </div> </div> + <!-- --> + <el-dialog + :title="$t('dataManage.datawarehousing')" + :visible.sync="dialogWarehousing" + width="50%" + :before-close="handleWareClose" + > + <div class="dialogBox"> + <div class="transFarBox"> + <ul> + <li @click="singleElection(item)" v-for="(item, i) in tableWareOne" :class="{ active: activeName == item.tab }">{{item.tab}} ({{item.type}})</li> + </ul> + </div> + <div class="tarnsbtton"> + <div><div style="padding:2%"> <el-link><i class="el-icon-plus"></i></el-link></div></div> + + + </div> + <div class="transFarBox"> + <ul> + <li @click="singleElection2(item)" v-for="(item, i) in tableWareTwo" :class="{ active: activeName2 == item.entity }">{{item.tabDesc}} ( {{item.tab}})</li> + </ul> + </div> + <div class="tarnsbtton"> + <div><div style="padding:2%"> <el-link @click="setWareTableChangeLeft" ><i class="el-icon-d-arrow-left"></i></el-link></div><br/> <div style="padding:2%"> + <el-link><i class="el-icon-d-arrow-right" @click="setWareTableChangeRight"></i></el-link></div></div> + </div> + <div class="transFarBox"> + <ul> + <li @click="singleElection3(i)" v-for="(item, i) in tableWareThree" :class="{ active: activeName3 ==( item.tab+i)}">{{item.tab}} ( {{item.tabDesc}}:{{item.entity}} )</li> + </ul> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button class="primary" @click="autoMatchWare">鑷姩鍖归厤</el-button> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button class="primary" @click="setInsrtWareTable">纭� 瀹�</el-button> + </span> +</el-dialog> </div> </template> <script> import $ from 'jquery'; import MyBread from '../../components/MyBread.vue'; -import { selectdirTab, queryDepTree } from '../../api/api'; +import { getToken } from '@/utils/auth'; +import { + dataLoader_selectDirAll, + dataLoader_selectDepAll, + dataLoader_selectPath, + dataLoader_selectVerByDirid, + dataLoader_selectFiles, + dataUploadDeleteFiles, + dataUploadInsertFiles, + dataLoader_selectMappers, + dataLoader_SelectTabs +} from '../../api/api'; export default { name: 'dataUpdata', components: { @@ -132,15 +191,21 @@ }, data() { return { + wareStatus: false, + dialogWarehousing: false, btnStatus: 0, count: 0, formInline: { - monitorTime: '', + verid: '', + gather: '', }, + tableWareOne: [], + tableWareTwo: [], catalogOption: [], companyOption: [], tableData: [], - listTable: [], + listTableWare: [], + tableWareThree: [], multipleSelection: [], fullscreenLoading: false, listData: { @@ -153,6 +218,7 @@ }, selectableRange: '00:00:00 - 23:59:59', }, + verOption: [], cascader: { label: 'name', value: 'id', @@ -160,6 +226,13 @@ checkStrictly: true, emitPath: false, }, + wareSelectOne: null, + wareSelectTwo: null, + listWare: [], + activeName: '', + activeName2: '', + activeName3: '', + wareTableFlag: null, }; }, @@ -168,9 +241,10 @@ this.getQueryDepTree(); this.timeDefault(); this.getFilePath(); + }, watch: { - 'detailData.monitorTime': { + 'detailData.gather': { handler(newValue, oldValue) { if (newValue) { let date = new Date(); @@ -184,7 +258,7 @@ ) { let hh1 = moment(newValue).format('HH:mm:ss'); if (hh1 > nowDate) { - this.detailData.monitorTime = new Date(); + this.detailData.gather = new Date(); } st = nowDate; } else { @@ -200,58 +274,183 @@ }, methods: { - //鏂囦欢涓婁紶 - setFileUpload() { - this.handlerLoading(true); - setTimeout(() => { - this.handlerLoading(false); - }, 2000); + async setInsrtWareTable(){ + var obj = { + metaEntity: this.formInline, + fileEntities: this.tableWareThree + }; + debugger + const res = await dataUploadInsertFiles(JSON.stringify(obj)); + if (res.code != 200) { + this.$message.error('鏁版嵁鍏ュ簱澶辫触'); + return; + }else{ + debugger + this.$message({ + message: '鏁版嵁鍏ュ簱鎴愬姛', + type: 'success' + }); + this.dialogWarehousing = false; + this.getFileLength(); + this.setClearAttartch(); + } - this.getFileLength(); + }, + setClearAttartch(){ + this.activeName = ''; + this.activeName2 = ''; + this.activeName3 = ''; + this.tableWareThree =[]; + this.tableWareTwo=[]; + this.tableWareOne=[]; + }, + autoMatchWare() { + var val1 = this.tableWareOne; + var val2 = this.tableWareTwo; + var std = []; + for (var i = 0; i < val1.length; i++) { + + const stdTab = this.setSplitWare(val1[i].tab) + for (var j = 0; j < val2.length; j++) { + if (val2[j].tab == stdTab) { + std.push(val1[i].tab) + val1[i].entity = val2[j].entity; + val1[i].tabDesc= val2[j].tabDesc; + this.tableWareThree.push(val1[i]); + } + } + } + std.forEach(item => { + this.tableWareOne = this.tableWareOne.filter(items => items.tab!== item); + }); + + }, + setSplitWare(res) { + if (res.indexOf(".shp") != -1) { + return res.split(".shp").join(""); + }else if (res.indexOf(".mdb") != -1){ + return res.split(".mdb").join(""); + }else if (res.indexOf(".gdb") != -1){ + return res.split(".gdb").join(""); + }else{ + return res; + } + }, + handleWareClose(done) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + done(); + this.setClearAttartch(); + }) + .catch(_ => { }); + }, + setWareTableChangeLeft() { + var res = this.wareTableFlag; + var value1 = this.tableWareThree[res]; + value1.entity = null; + value1.tabDesc= null; + this.tableWareOne.push(value1); + this.tableWareThree.splice(res, 1) + this.activeName = ''; + this.activeName2 = ''; + this.activeName3 = ''; + }, + setWareTableChangeRight() { + + this.wareSelectOne.entity = this.wareSelectTwo.entity; + this.wareSelectOne.tabDesc = this.wareSelectTwo.tabDesc; + + this.tableWareThree.push(this.wareSelectOne) + + this.tableWareOne.forEach((value, index, array) => { + if (value.tab == this.wareSelectOne.tab) { + this.tableWareOne.splice(index, 1) + } + + }) + this.activeName = ''; + this.activeName2 = ''; + this.activeName3 = ''; + }, + singleElection(row) { + this.wareSelectOne = row; + this.activeName = row.tab + + }, + singleElection2(row) { + this.wareSelectTwo = row; + this.activeName2 = row.entity + + }, + singleElection3(res) { + + this.wareTableFlag = res; + this.activeName3 = this.tableWareThree[res].tab + res; + + }, + + //鏌ヨ鎵�鏈夌殑琛� + async getDataLoaderSelectTabs() { + const res = await dataLoader_SelectTabs(); + if (res.code != 200) { + this.$message.error('鏁版嵁璇锋眰澶辫触'); + return; + } + this.tableWareTwo = res.result; + }, + //鏌ヨ鏄犲皠 + async getDataLoaderSelectMappers(res) { + const data = await dataLoader_selectMappers(res); + + if (data.code != 200) { + this.$message.error('鏁版嵁璇锋眰澶辫触'); + return; + } + debugger + this.tableWareOne = data.result; }, //鏁版嵁鍒犻櫎 - setFileDelete() { + async setFileDelete() { this.handlerLoading(true); - - - - this.multipleSelection.forEach(item => { - this.listTable = this.listTable.filter((items) => { - - if (items.name != item.name && item.id != items.id) { - return items; - } - - }); - }); - this.listData.pageIndex= 1; - this.listData.pageSize = 10; - this.count = this.listTable.length; - this.setViewTable(); + var data = JSON.stringify(this.multipleSelection); + const res = await dataUploadDeleteFiles(data); + if (res.code != 200) { + this.$message.error('鍒犻櫎澶辫触'); + return; + } this.getFileLength(); + + + this.handlerLoading(false); }, //鏁版嵁鍏ュ簱 - setFileWare() { - this.handlerLoading(true); - setTimeout(() => { - this.handlerLoading(false); - }, 2000); - this.getFilePath(); + async setFileWare() { + this.tableWareThree = []; + this.listTableWare = []; + this.getDataLoaderSelectTabs(); + this.getDataLoaderSelectMappers(this.formInline.path); + this.dialogWarehousing = true; + // if(this.multipleSelection.length==0){ + // this.$message.error('璇烽�夋嫨瑕佸叆搴撶殑鏁版嵁'); + // return + // } + // var obj = { + // metaEntity: this.formInline, + // fileEntities: this.multipleSelection + // }; + + // const res = await dataUploadInsertFiles(JSON.stringify(obj)); + + // if (res.code != 200) { + // this.$message.error('鏂囦欢鍏ュ簱澶辫触'); + // return; + // } + + // + }, - //鑾峰彇鏂囦欢涓婁紶璺緞 - getFilePath() { - for (var i = 0; i < 20; i++) { - this.listTable.push({ - id: i, - name: 'value' + i - }) - } - this.count = this.listTable.length; - this.listData.pageIndex = 1; - this.listData.pageSize = 10; - this.setViewTable(); - }, + //鏄剧ず琛ㄦ牸鏁版嵁 setViewTable() { var index = this.listData.pageIndex - 1; @@ -262,20 +461,71 @@ if (this.listTable[i] != null) { std.push(this.listTable[i]) } - } - this.tableData = std; }, - //鑾峰彇鏂囦欢涓婁紶鏁版嵁 - getFileLength() { + //鏂囦欢涓婁紶 + setFileUpload() { + this.handlerLoading(true); + var token = getToken(); + var formData = new FormData(); + + var fs = document.getElementById("uploadfile"); + for (var i = 0, c = fs.files.length; i < c; i++) { + formData.append(fs.files[i].name, fs.files[i]); // fs.files[i].name,file + } + + + $.ajax(BASE_URL + "/dataLoader/uploadFiles?token=" + token + "&path=" + this.formInline.path, { + type: "post", + data: formData, + async: true, + cache: false, + processData: false, + contentType: false, + success: (rs) => { + + this.getFileLength(); + + alert("code = " + rs.code + ", msg = " + rs.msg + ", result = " + rs.result); + + }, + error: (rs) => { + alert("涓婁紶鏂囦欢澶辫触锛�"); + } + }); + + this.handlerLoading(false); + }, + //鑾峰彇鏂囦欢涓婁紶鏁版嵁 + async getFileLength() { + const res = await dataLoader_selectFiles(this.formInline.path); + if (res.code != 200) { + this.$message.error('鏂囦欢涓婁紶鏁版嵁鑾峰彇澶辫触'); + return; + } + + if (res.result == null) { + this.count = 0; + this.setClearTableData(); + } else { + this.count = res.result.length; + this.tableData = res.result; + } + + + // this.listData.pageIndex = 1; + // this.listData.pageSize = 10; + // this.setViewTable(); }, //娓呴櫎琛ㄦ牸淇℃伅 setClearTableData() { this.tableData = []; this.listTable = []; }, + + //鍒嗛〉鎺у埗 handleSizeChange(res) { this.listData.pageIndex = 1; @@ -295,13 +545,8 @@ $("#uploadfile").click(); }, handleFileChange() { - var val = document.getElementById("uploadfile").files; - if (!val || !val.length) return; - var formData = new FormData(); - for (var i = 0; i < val.length; i++) { - formData.append(val[i].name, val[i]); - } - console.log(formData) + var fs = document.getElementById("uploadfile"); + }, //褰撳墠鏃堕棿鑾峰彇 timeDefault() { @@ -322,7 +567,7 @@ minutes + sign2 + seconds; - this.formInline.monitorTime = s1; + this.formInline.gather = s1; }, //Loading鏄鹃殣 @@ -331,32 +576,57 @@ }, //鐩綍鍒囨崲 catalogChange(value) { - this.formInline.catalog = value; + this.formInline.dirid = value; + this.getselectVerByDirid(); }, //鍗曚綅鍒囨崲 companyChange(value) { - this.formInline.company = value; + this.formInline.depid = value; }, - - //鍗曚綅鍒楄〃鑾峰彇 - async getQueryDepTree() { - const res = await queryDepTree(); + //鑾峰彇鏂囦欢涓婁紶璺緞 + async getFilePath() { + const res = await dataLoader_selectPath(); if (res.code != 200) { this.$message.error('鍗曚綅鍒楄〃鑾峰彇澶辫触'); return; } - this.formInline.company = 1; + this.formInline.path = res.result; + }, + //鍗曚綅鍒楄〃鑾峰彇 + async getQueryDepTree() { + const res = await dataLoader_selectDepAll(); + if (res.code != 200) { + this.$message.error('鍗曚綅鍒楄〃鑾峰彇澶辫触'); + return; + } + this.formInline.depid = 1; this.companyOption = this.treeData(res.result); }, + //鐗堟湰鍙疯幏鍙� + async getselectVerByDirid() { + this.verOption = []; + this.formInline.verid = ""; + const res = await dataLoader_selectVerByDirid(this.formInline.dirid); + + if (res.code != 200) { + this.$message.error('鐗堟湰鍒楄〃鑾峰彇澶辫触'); + return; + } + this.verOption = res.result; + this.formInline.verid = res.result[0].id; + }, + + //鐩綍鍒楄〃鑾峰彇 async getSelectdirTab() { - const res = await selectdirTab(); + const res = await dataLoader_selectDirAll(); if (res.code != 200) { this.$message.error('鐩綍鍒楄〃鑾峰彇澶辫触'); return; } - this.formInline.catalog = 1; + this.formInline.dirid = 1; this.catalogOption = this.treeData(res.result); + this.getselectVerByDirid() }, //鏍戝垪琛ㄧ敓鎴� treeData(source) { @@ -485,11 +755,11 @@ /deep/.btn-next { background: transparent; } - /deep/.btn-next i { - color:white; + /deep/.btn-next i { + color: white; } /deep/.btn-prev i { - color:white; + color: white; } } } @@ -530,5 +800,120 @@ /deep/.el-loading-spinner i { color: #1890ff !important; } + /deep/ .el-dialog { + background: #303030; + } + /deep/.el-range-editor.is-active, + .el-range-editor.is-active:hover, + .el-select .el-input.is-focus .el-input__inner { + border: 1px solid; + } + /deep/.el-dialog__title { + color: white; + } + .dialogBox { + width: 100%; + height: 500px; + display: flex; + justify-content: space-between; + .transFarBox { + width: 30%; + height: 100%; + border: 1px solid white; + border-radius: 5px; + max-height: 500px; + overflow-y: auto; + li { + color: white; + border-bottom: 1px solid white; + line-height: 30px; + text-align: center; + } + li:hover { + background: rgba(255, 255, 255, 0.3); + } + .active { + color: #409eff; + } + } + .tarnsbtton { + width: 6%; + height: 100%; + + /*flex 甯冨眬*/ + display: flex; + /*瀹炵幇鍨傜洿灞呬腑*/ + align-items: center; + /*瀹炵幇姘村钩灞呬腑*/ + justify-content: center; + } + } + .el-icon-d-arrow-right { + color: white; + } + .el-icon-d-arrow-left { + color: #fff; + } + .el-icon-plus { + color: white; + } + /*淇敼table 琛ㄤ綋鐨勮儗鏅鑹插拰鏂囧瓧棰滆壊*/ + /deep/ .el-table { + background-color: transparent; + + th, + td { + background-color: transparent; + } + .el-table__expanded-cell { + background-color: transparent !important; + } + + // 琛ㄥご鑳屾櫙鑹� + th.el-table__cell { + background-color: #303030 !important; + color: #fff; + } + tr > td { + background-color: #303030 !important; + color: #fff; + } + + // hover鏁堟灉 + tr:hover > td { + background-color: rgba(255, 255, 255, 0.3) !important; + } + + tbody tr:hover { + background-color: rgba(255, 255, 255, 0.3) !important; + // text-align: center; + } + + // 婊氬姩鏉″楂� + .el-table__body-wrapper::-webkit-scrollbar { + width: 5px; + height: 5px; + } + + .el-table__body-wrapper::-webkit-scrollbar { + width: 5px; + /*婊氬姩鏉″搴�*/ + height: 5px; + /*婊氬姩鏉¢珮搴�*/ + } + /*瀹氫箟婊氬姩鏉¤建閬� 鍐呴槾褰�+鍦嗚*/ + .el-table__body-wrapper::-webkit-scrollbar-track { + box-shadow: 0px 1px 3px #216fe6 inset; + /*婊氬姩鏉$殑鑳屾櫙鍖哄煙鐨勫唴闃村奖*/ + border-radius: 10px; + } + + /*瀹氫箟婊戝潡 鍐呴槾褰�+鍦嗚*/ + .el-table__body-wrapper::-webkit-scrollbar-thumb { + box-shadow: 0px 1px 3px #216fe6 inset; + border-radius: 6px; + background-color: #216fe6; + } + } } </style> -- Gitblit v1.9.3