From 7f0f5bc0be05b8a9206bcff083442379504db009 Mon Sep 17 00:00:00 2001 From: lixuliang <lixuliang_hd@126.com> Date: 星期二, 30 四月 2024 14:17:06 +0800 Subject: [PATCH] Merge branch 'master' of http://103.135.160.14:9034/r/~shiwenshuai/DTKZZTX --- src/views/datamanage/catalogueManage.vue | 1402 ++------------------------------------------------------- 1 files changed, 71 insertions(+), 1,331 deletions(-) diff --git a/src/views/datamanage/catalogueManage.vue b/src/views/datamanage/catalogueManage.vue index 3d65cd2..89c4baa 100644 --- a/src/views/datamanage/catalogueManage.vue +++ b/src/views/datamanage/catalogueManage.vue @@ -1,1280 +1,89 @@ <template> <div class="subpage_Box"> <My-bread :list="[ - `${$t('dataManage.dataManage')}`, - `${$t('dataManage.projectManagement')}`, + `鏁版嵁璧勬簮绠$悊`, + `閫氱敤妯℃澘绠$悊`, ]"></My-bread> <el-divider /> <div class="mainBox"> - - <div class="cataLogContent leftTree subpage_Div" - style="border: 1px solid #dcdfe6;"> - <div style="min-width: 450px"> - <el-tree ref="tree" - :props="defaultProps" - node-key="id" - :data="dirList" - :highlight-current="true" - :expand-on-click-node="false" - :default-expanded-keys="expandData" - @node-click="handleNodeClick" - @node-contextmenu="openTreeMenu"> - </el-tree> - <div class="right_menu box_divm" - id="menu" - v-show="showRightMenu"> - <ul> - <li @click="setMenuDataCopy">澶嶅埗</li> - <li @click="setMenuDataPaste">绮樿创</li> - </ul> - </div> + <div class="mainContent"> + <div></div> + <div> + <el-button size="small" + type="success" + plain>鏂板妯℃澘</el-button> + <el-button size="small" + plain + type="danger">鍒犻櫎妯℃澘</el-button> </div> </div> - <div class="cataLog_rightContent right subpage_Div"> - <div class="inquire" - style=" - align-items: center; - display: flex; - justify-content: space-between; - "> - <el-breadcrumb separator="/"> - <el-breadcrumb-item :to="{ path: '/' }">{{ - - }}</el-breadcrumb-item> - </el-breadcrumb> - <div style="margin-right: -5px"> - <div class="menuTop"> - <el-form :inline="true" - class="demo-form-inline"> - <el-form-item> - - <el-button v-show="directoryFlag" - icon="el-icon-download" - type="info" - size="small" - @click="setDirectoryDownload">{{ $t("shuJuGuanLi.butten.folderDownload") }}</el-button> - </el-form-item> - <el-form-item> - - <el-button icon="el-icon-download" - type="info" - size="small" - @click="setTemplateDownload">{{ $t("shuJuGuanLi.butten.templateDownload") }}</el-button> - </el-form-item> - <el-form-item> - <el-upload action - accept=".xlsx, .xls" - :auto-upload="false" - :show-file-list="false" - :on-change="handleChange" - :file-list="fileList"> - <el-button type="success" - icon="el-icon-plus" - size="small">{{ $t("shuJuGuanLi.butten.uploads") }}</el-button> - </el-upload> - </el-form-item> - <el-form-item> - <el-button v-if="menuStatus.insert" - :disabled="itemdetail.pid == null ? true : false" - @click="setNewNode(1)" - type="success" - icon="el-icon-plus" - size="small">{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button> - </el-form-item> - <el-form-item> - <el-button v-if="menuStatus.insert" - :disabled="itemdetail.pid == null ? true : false" - @click="setNewNode(2)" - type="success" - icon="el-icon-plus" - size="small">{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button> - </el-form-item> - <el-form-item> - <el-button v-if="menuStatus.delete" - @click="setDelNode()" - :disabled="itemdetail.pid == null ? true : false" - type="danger" - icon="el-icon-delete" - size="small">{{ $t("shuJuGuanLi.butten.Delete") }}</el-button> - </el-form-item> - <el-form-item> - <el-button v-if="menuStatus.update" - :disabled="itemdetail.pid == null ? true : false" - @click="setEditNode(1)" - type="info" - icon="el-icon-top" - size="small">{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button> - </el-form-item> - <el-form-item> - <el-button v-if="menuStatus.update" - :disabled="itemdetail.pid == null ? true : false" - @click="setEditNode(2)" - type="info" - icon="el-icon-bottom" - size="small">{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button> - </el-form-item> - </el-form> - </div> - </div> - - </div> - <div class="dividing-line"></div> - - <el-form :model="itemdetail" - ref="itemdetail" - :rules="rules" - style="position: relative; padding-top: 18px"> - <el-form-item prop="name" - :label="$t('dataManage.dataUpObj.name')" - :label-width="formLabelWidth"> - <el-input v-model="itemdetail.name" - size="small" - style=" max-width: 420px" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueName')" - clearable /> - <!-- style="max-width: 400px"--> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.explain')" - :label-width="formLabelWidth"> - <el-input v-model="itemdetail.descr" - type="textarea" - style=" max-width: 420px" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexplain')" - clearable /> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.inspectionItems')" - :label-width="formLabelWidth"> - <el-select style="width: 420px" - v-model="itemdetail.checks" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')" - multiple> - <el-option v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <!-- <el-input - - type="textarea" - style=" max-width: 420px" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')" - clearable - /> --> - <!-- resize="none"--> - <!-- style="height: 100%; overflow: auto; max-width: 400px"--> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.fileExtension')" - :label-width="formLabelWidth"> - <el-input v-model="itemdetail.exts" - type="textarea" - style=" max-width: 420px" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" - clearable /> - </el-form-item> - <!-- <el-form-item - :label="$t('dataManage.dataUpObj.inspectionItems')" - :label-width="formLabelWidth" - > - <el-input - v-model="itemdetail.checks" - type="textarea" - resize="none" - style="height: 100%; overflow: auto; max-width: 400px" - /> - </el-form-item>--> - <el-form-item :label="$t('dataManage.dataUpObj.code')" - :label-width="formLabelWidth"> - <el-input v-model="itemdetail.code" - disabled - type="textarea" - style=" max-width: 420px" - autosize /> - </el-form-item> - <!-- <el-form-item - :label="$t('dataManage.dataUpObj.catalogRemarks')" - :label-width="formLabelWidth" - > - <el-input - v-model="itemdetail.bak" - type="textarea" - resize="none" - style="max-width: 400px" - /> - </el-form-item>--> - <!-- <div class="btnBox"> - <el-button - v-if="menuStatus.update" - class="primary" - size="small" - @click="updCata('itemdetail')" - >{{ $t("common.preservation") }}</el-button - > - <el-button - v-if="menuStatus.update" - type="info" - size="small" - @click="reset" - >{{ $t("common.cancel") }}</el-button - > - </div>--> - </el-form> - <div slot="footer" - class="dialog-footer" - style="padding-left: 45% ;padding-top: 20px"> - <el-button v-if="menuStatus.update" - type="primary" - size="small" - @click="updCata('itemdetail')">{{ $t("common.preservation") }}</el-button> - <el-button v-if="menuStatus.update" - size="small" - @click="reset">{{ $t("common.cancel") }}</el-button> - </div> + <div class="taleBox"> + <el-table :data="tableData" + style="width: 100%;height:calc(100% - 1px)"> + <el-table-column prop="date" + label="鏃ユ湡" + width="180"> + </el-table-column> + <el-table-column prop="name" + label="濮撳悕" + width="180"> + </el-table-column> + <el-table-column prop="address" + label="鍦板潃"> + </el-table-column> + </el-table> + </div> + <div class="pageBox"> + <el-pagination @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page.sync="currentPage2" + :page-sizes="[100, 200, 300, 400]" + :page-size="100" + layout="sizes, prev, pager, next" + :total="1000"> + </el-pagination> </div> </div> - <!-- <div class="cataSettings_tree"> --> - <!-- <div class="cataTreeBox"> - - </div> --> - <!-- </div> --> - <!-- <div class="itemSettings"> --> - <!-- <div class="title_box"> - <h4>璇︾粏淇℃伅</h4> - </div> --> - <!-- <div class="form_box"> - - </div> --> - <!-- </div> --> - <el-dialog :title="$t('dataManage.dataUpObj.newDirectory')" - :visible.sync="dialogFormVisible" - :before-close="handleClose"> - <el-form :model="ruleForm" - ref="ruleForm" - :rules="rules"> - <el-form-item :label="$t('dataManage.dataUpObj.name')" - prop="name" - :label-width="formLabelWidth"> - <el-input v-model="ruleForm.name" - autocomplete="off" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueName')"></el-input> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.explain')" - :label-width="formLabelWidth"> - <el-input v-model="ruleForm.descr" - autocomplete="off" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexplain')"></el-input> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.fileExtension')" - :label-width="formLabelWidth"> - <el-input v-model="ruleForm.exts" - type="textarea" - resize="none" - style="height: 100%; overflow: auto" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" /> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.inspectionItems')" - :label-width="formLabelWidth"> - <!-- <el-input - - type="textarea" - resize="none" - - /> --> - <el-select v-model="ruleForm.checks" - multiple - style="width:100%;" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')"> - <el-option v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.code')" - :label-width="formLabelWidth"> - <el-input v-model="ruleForm.code" - disabled - type="textarea" - resize="none" - style="height: 100%; overflow: auto" /> - </el-form-item> - <el-form-item :label="$t('dataManage.dataUpObj.Remarks')" - :label-width="formLabelWidth"> - <el-input v-model="ruleForm.bak" - autocomplete="off" - :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueRemarks')"></el-input> - </el-form-item> - </el-form> - <div slot="footer" - class="dialog-footer"> - <el-button @click="resetForm('ruleForm')">{{ - $t("common.cancel") - }}</el-button> - <el-button class="primary" - @click="submitForm('ruleForm')" - v-loading.fullscreen.lock="fullscreenLoading">{{ $t("common.preservation") }}</el-button> - </div> - </el-dialog> - - <iframe id="Iframe1" - src="" - style="display: none; border: 0; padding: 0; height: 0; width: 0"></iframe> - <div class="loadBox" - v-if="loadDialogVisible"> - <div style="widht:100%; margin:20px; color:white"> - <div style="margin-left:99%"> - <!-- <el-link - @click="setloadDialogVisible()" - style="color:white" - > X</el-link> --> - </div> - </div> - <div v-loading="true" - element-loading-background="rgba(0, 0, 0, 0.0) " - element-loading-text="鐩綍涓婁紶涓�,璇风瓑寰�..." - style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); "> - </div> - </div> </div> </template> <script> -import { - queryDirTree, - queryMaxId, - updateDirTree, - updateDirTrees, - insertDir, - deleteDir, - getPerms, -} from "../../api/api"; -import * as XSLX from "xlsx"; + import MyBread from "../../components/MyBread.vue"; -import clone from "@turf/clone"; -import $ from 'jquery' -import { getToken } from '../../utils/auth'; + export default { name: "catalogueManage", components: { MyBread, }, data () { - let validName=(rule,value,callback) => { - if(value===""||value===null||value===undefined) { - return callback(new Error("鐩綍鍚嶇О涓嶈兘涓虹┖")); - } else { - callback(); - } - }; - return { - directoryData: null, - directoryFlag: false, - menuStatus: { - delete: false, - insert: false, - update: false, - }, - defaultProps: { - children: "children", - label: "name", - }, - fullscreenLoading: false, - oriData: [], //鍘熷鏍戞暟鎹� - dirList: [], //el鏍戞暟鎹� - old_dirDat: [], //el鏍戞暟鎹�(鎷栧姩鍓�) - newData: [], //鎷栧姩鍚庡師濮嬫暟鎹� - itemdetail: { - checks: [], - }, - itemaName: null, - backUpData: "", - formLabelWidth: "150px", - delChildID: "", - delChildIDs: [], - dialogFormVisible: false, - ruleForm: { - level: null, - orderNum: null, - pid: null, - name: "", - descr: "", - bak: "", - checks: [] - }, - rules: { - name: [{ required: true,validator: validName,trigger: "blur" }], - }, - newNode: null, - expandData: [], - fileList: [], - file: null, - tableData: [], - options: [ - { - value: 'checkMain', - label: '鎬昏川妫�' - },{ - value: 'checkOsgb', - label: 'OSGB妫�鏌�' - },{ - value: 'checkXls', - label: '琛ㄦ牸鏁版嵁妫�鏌�' - },{ - value: 'checkLaz', - label: '鐐逛簯妫�鏌�' - },{ - value: 'checkDem', - label: '楂樼▼妫�鏌�' - },{ - value: 'checkAttrs', - label: '灞炴�ф鏌�' - },{ - value: 'checkTopology', - label: '鎷撴墤妫�鏌�' - },{ - value: 'checkDecorate', - label: '鍥鹃潰鏁撮グ妫�鏌�' - },{ - value: 'checkOrigin', - label: '鍘熺偣妫�鏌�' - },{ - value: 'checkDom', - label: '鏍呮牸妫�鏌�' - },{ - value: 'checkMath', - label: '鏁板鍩虹妫�鏌�' - },{ - value: 'checkMeta', - label: '鍏冩暟鎹鏌�' - },{ - value: 'checkLogical', - label: '閫昏緫涓�鑷存�ф鏌�' - },{ - value: 'checkSingleIntegrity', - label: '鍗曢」鎴愭灉瀹屾暣鎬ф鏌�' - } - ], - currentData: null, - showRightMenu: false, - checksData: null, - checksCopyData: null, - loadDialogVisible: false + return { + tableData: [{ + date: '2016-05-02', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�' + },{ + date: '2016-05-04', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�' + },{ + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�' + },{ + date: '2016-05-03', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�' + }] }; }, methods: { - // 澶嶅埗 - setMenuDataCopy () { - this.checksCopyData=this.checksData; - }, - //绮樿创 - setMenuDataPaste () { - if(!this.checksCopyData) { - return this.$message('鏈�変腑瑕佸鍒剁殑鑺傜偣'); - } - var val=this.$refs.tree.getNode(this.checksCopyData).data; - var level=this.$refs.tree.getNode(this.checksData).data.level+1; - this.setInsertCopyData([val],this.checksData,level); - }, - setInsertCopyData (val,pid,level) { - for(var i in val) { - var data=val[i]; - var pchildNodes=[]; - - if(this.$refs.tree.getNode(pid)&&this.$refs.tree.getNode(pid).childNodes) { - pchildNodes=this.$refs.tree.getNode(pid).childNodes - } - var orderNum=this.getMaxOrderNum(pchildNodes); - var obj={ - bak: data.bak, - level: level, - orderNum: orderNum+1, - pid: pid, - checks: data.checks, - name: data.name, - descr: data.descr, - exts: data.exts, - } - insertDir(obj).then((res) => { - if(res.code==200) { - this.getDirTree(); - if(data.children&&data.children.length>0) { - - this.setInsertCopyData(data.children,res.result,level+1) - } - } - }) - } - }, - - - - - - handleNodeClick (data,node) { - this.showRightMenu=false; - document.removeEventListener('click',this.closeRightMenu) - this.layerFormInline(data) - - }, - //鍙抽敭鑿滃崟 - openTreeMenu (event,data,node,obj) { - this.showRightMenu=true; - let menu=document.getElementById('menu') - menu.style.left=event.clientX+20+'px' - menu.style.top=event.clientY+'px' - document.addEventListener('click',this.closeRightMenu) - this.checksData=data.id; - console.log(this.checksData) - }, - closeRightMenu () { - this.showRightMenu=false; - document.removeEventListener('click',this.closeRightMenu) - - }, - setTemplateDownload () { - var url=window.location.href; - var testurl=window.location.origin+"/"; - if(url.indexOf("web")!=-1) { - testurl=testurl+"/web/"; - } - testurl+=dirTemplateFile - $("#Iframe1").attr("src",testurl).click() - }, - handleChange (file,fileList) { - this.file=file; - if(fileList.length>0) { - this.fileList=[fileList[fileList.length-1]]; //杩欎竴姝ワ紝鏄� 灞曠ず鏈�鍚庝竴娆¢�夋嫨鏂囦欢; - this.handle(); - } - }, - async handle () { - let file=this.file?.raw; - if(!this.file) { - console.log("鏂囦欢鎵撳紑澶辫触"); - return; - } else { - const reader=new FileReader(); - let that=this; - reader.readAsArrayBuffer(file); - reader.onload=function() { - const buffer=reader.result; - const bytes=new Uint8Array(buffer); - const length=bytes.byteLength; - let binary=""; - for(let i=0;i<length;i++) { - binary+=String.fromCharCode(bytes[i]); - } - const XLSX=require("xlsx"); - const wb=XLSX.read(binary,{ - type: "binary", - }); - const outdata=XLSX.utils.sheet_to_json( - wb.Sheets[wb.SheetNames[0]], - { defval: null } - ); // 榛樿绗竴琛屼笅涓虹┖涔熻兘瑙f瀽鍑虹涓�鍥涜 - var data=[...outdata]; - that.setLeToFc(data); - }; - } - }, - - setLeToFc (res) { - var arr=[]; - for(var i in res) { - var value=this.getNameAndPname(res[i],res,i) - arr.push({ - name: value[0], - pname: value[1], - descr: res[i].explain, - checks: res[i].checks, - bak: res[i].bak, - exts: res[i].exts, - orderNum: null, - pid: null, - tid: parseInt(value[2])+1, - sid: parseInt(value[3])+1 - }) - } - - this.tableData=arr; - - this.setInsertData(this.tableData); - }, - getNameAndPname (res,result,flag) { - var chLevel=null; - var faLevel=null; - - for(var i=1;i<8;i++) { - var lel='L'+i; - if(res[lel]!=null) { - chLevel=i - } - } - if(chLevel==1) { - return [res['L'+chLevel],null,flag,-1] - } else { - faLevel=chLevel-1; - for(var i=flag;i>=0;i--) { - var val=result[i] - if(val['L'+faLevel]) { - return [res['L'+chLevel],val['L'+faLevel],flag,i] - break; - } - } - } - }, - setInsertData (res) { - var list=this.excelData(res); - if(list.length!=0) { - if(list[0].pname!=null) { - return this.$message.error("涓婁紶鏁版嵁閿欒锛岀涓�鏉℃暟鎹笉涓虹┖"); - } - this.getAllNodeId(res); - } - }, - async getAllNodeId (res) { - this.loadDialogVisible=true; - for(let i=0;i<res.length;i++) { - var val=res[i]; - if(val.pname==null) { - val.orderNum=this.dirList[this.dirList.length-1].orderNum+1; - val.pid=0; - } else { - this.tableData.filter((child) => { - if(child.tid==val.sid) { - val.pid=child.id; - val.orderNum=i+1; - } - }); - } - - const data=await insertDir(val); - if(data.code!=200) { - this.$message.error("鐩綍涓婁紶澶辫触"+data.msg); - this.loadDialogVisible=false; - break; - } - - this.tableData.filter((child) => { - - if(child.name==val.name&&child.tid==val.tid) { - child.id=data.result; - } - }); - this.itemaName=data.result; - // this.getDirTree(); - - // if (res[i].children) { - // this.getAllNodeId(res[i].children); - // } - } - this.getDirTree(); - this.loadDialogVisible=false; - - }, - excelData (source) { - let cloneData=JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 - return cloneData.filter((father) => { - // 寰幆鎵�鏈夐」 - let branchArr=cloneData.filter((child) => father.tid==child.sid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 - - branchArr.length>0? (father.children=branchArr):""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� - // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛� - // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋� - return father.sid==0; // 杩斿洖涓�绾ц彍鍗� - }); - }, - readFile (file) { - //鏂囦欢璇诲彇 - return new Promise((resolve) => { - let reader=new FileReader(); - reader.readAsBinaryString(file); //浠ヤ簩杩涘埗鐨勬柟寮忚鍙� - reader.onload=(ev) => { - resolve(ev.target.result); - }; - }); - }, - - // 璇锋眰鐩綍鏍� - async getDirTree () { - //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢� - // queryMaxId().then((res) => { - // this.id = res.data; - // }); - // 鑾峰彇鐩綍鏍戞暟鎹� - const data=await queryDirTree(); - - if(data.code!=200) { - return this.$message.error("椤圭洰鍒楄〃鏌ヨ澶辫触"); - } - this.oriData=data.result; - this.newData=data.result; - this.dirList=this.treeData(data.result); - - - var cdata; - if(this.currentData) { - var rs=JSON.parse(this.currentData); - cdata=this.$refs.tree.getNode(rs.id).data; - } else { - cdata=this.dirList[this.dirList.length-1] - } - this.$nextTick(() => { - this.expandData=[cdata.id]; - this.$refs.tree.setCurrentKey(cdata.id); - this.layerFormInline(cdata) - }); - - - // queryDirTree().then((res) => { - // // console.log(res); - - - // if (res.code == 200) { - - - // // this.$nextTick(() => { - - // // this.expandData=[15] - // // this.$refs.tree.setCurrentKey(15); - - // // }); - - // } else { - // console.log("鎺ュ彛鎶ラ敊"); - // } - // }); - }, - handleClose () { - this.$confirm("鍏抽棴鍚庢棤娉曚繚瀛橈紝鏄惁鍏抽棴?") - .then((_) => { - this.resetForm(); - }) - .catch((_) => { }); - }, - treeData (source) { - let cloneData=JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 - return cloneData.filter((father) => { - // 寰幆鎵�鏈夐」 - let branchArr=cloneData.filter((child) => father.id==child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 - if(branchArr.length>0) { - branchArr.sort(function(a,b) { - return a.orderNum-b.orderNum - }) - } - - branchArr.length>0? (father.children=branchArr):""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� - // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛� - // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋� - return father.pid==0; // 杩斿洖涓�绾ц彍鍗� - }); - }, - //鍚戜笂鍚戜笅绉诲姩 - setEditNode (res) { - let node=this.$refs.tree.getCurrentNode(); - let pchildNodes=this.$refs.tree.getNode(node.id).parent.childNodes; - let currentId={}; - for(let i=0;i<pchildNodes.length;i++) { - if(pchildNodes[i].data.id==node.id) { - currentId=i; - } - } - switch(res) { - case 1: //鍚戜笂绉诲姩 - if(currentId!=0) { - const tempChildrenNodex1=pchildNodes[currentId-1]; - const tempChildrenNodex2=pchildNodes[currentId]; - // tempChildrenNodex2.orderNum = - // pchildNodes[currentId - 1].data.orderNum; - // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; - - const arr=[]; - this.oriData.filter((res) => { - if(res.id==tempChildrenNodex2.data.id) { - // res.orderNum = tempChildrenNodex2.orderNum; - arr.push(res); - } else if(res.id==tempChildrenNodex1.data.id) { - // res.orderNum = tempChildrenNodex1.orderNum; - arr.push(res); - } - }); - - const orderNum=arr[1].orderNum - arr[1].orderNum=arr[0].orderNum - arr[0].orderNum=orderNum - - this.newData=arr; - this.sendChange(); - } else { - this.$message({ - message: "澶勪簬椤剁锛屼笉鑳界户缁笂绉�", - type: "warning", - }); - } - break; - case 2: //鍚戜笅绉诲姩 - if(currentId<pchildNodes.length-1) { - const tempChildrenNodex1=pchildNodes[currentId+1]; - const tempChildrenNodex2=pchildNodes[currentId]; - // tempChildrenNodex2.orderNum = - // pchildNodes[currentId + 1].data.orderNum; - // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum; - - const arr=[]; - this.oriData.filter((res) => { - if(res.id==tempChildrenNodex2.data.id) { - // res.orderNum = tempChildrenNodex2.orderNum; - arr.push(res); - } else if(res.id==tempChildrenNodex1.data.id) { - // res.orderNum = tempChildrenNodex1.orderNum; - arr.push(res); - } - }); - const orderNum=arr[1].orderNum - arr[1].orderNum=arr[0].orderNum - arr[0].orderNum=orderNum - this.newData=arr; - this.sendChange(); - } else { - this.$message({ - message: "澶勪簬搴曠锛屼笉鑳界户缁笅绉�", - type: "warning", - }); - } - break; - } - }, - setDelNode () { - this.$confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ョ洰褰�, 鏄惁缁х画?","鎻愮ず",{ - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(() => { - this.remove(this.newNode,this.itemdetail); - }) - .catch(() => { - this.$message({ - type: "info", - message: "宸插彇娑堝垹闄�", - }); - }); - }, - insertStart () { - this.ruleForm={ - level: null, - orderNum: null, - pid: null, - name: "", - descr: "", - bak: "", - checks: [] - } - }, - setNewNode (res) { - this.insertStart(); - var node=this.$refs.tree.getCurrentNode(); - this.newNode=node; - var id,lever,orderNum; - if(res==1) { - //鏂板鍚岀骇 - id=this.itemdetail.pid; - let pchildNodes=this.$refs.tree.getNode(this.newNode.id).parent.childNodes - orderNum=this.getMaxOrderNum(pchildNodes); - lever=this.itemdetail.level; - } else if(res==2) { - //鏂板瀛愮骇 - id=this.itemdetail.id; - let pchildNodes=this.$refs.tree.getNode(this.newNode.id).childNodes - orderNum=this.getMaxOrderNum(pchildNodes); - lever=this.itemdetail.level+1; - } - - this.ruleForm.pid=id; - this.ruleForm.level=lever; - this.ruleForm.orderNum=orderNum; - this.dialogFormVisible=true; - }, - getMaxOrderNum (res) { - var val=-100; - for(var i in res) { - if(res[i].data.orderNum>val) { - val=res[i].data.orderNum; - } - } - val=val+1; - return val; - }, - append (node,data) { - this.dialogFormVisible=true; - this.ruleForm.pid=data.id; - this.ruleForm.orderNum=node.childNodes.length+1; - this.ruleForm.level=data.level+1; - }, - resetForm (formName) { - this.dialogFormVisible=false; - this.ruleForm={}; - this.$nextTick(() => { - this.ruleForm={}; - // this.$refs[formName].resetFields(); - }); - }, - submitForm (formName) { - this.$nextTick(() => { - this.$refs[formName].validate((valid) => { - if(valid) { - this.fullscreenLoading=true; - var val=this.ruleForm; - if(this.ruleForm.checks) { - val.checks=this.ruleForm.checks.toString() - } else { - val.checks='' - } - // var val = JSON.parse(JSON.stringify(this.ruleForm)) - // this.itemdetail = val - insertDir(val) - .then((res) => { - setTimeout(() => { - this.fullscreenLoading=false; - - if(res.code==200) { - this.$message({ - message: "娣诲姞鎴愬姛", - type: "success", - }); - - // this.itemdetail = {}; - // this.ruleForm = {}; - this.dialogFormVisible=false; - this.$refs[formName].resetFields(); - this.getDirTree(); - } - },500); - }) - .catch((res) => { - this.itemdetail={}; - this.$message.error("娣诲姞澶辫触"); - this.fullscreenLoading=false; - console.log(res); - }); - } else { - // alert("鐩綍鍚嶇О涓嶈兘涓虹┖"); - return false; - } - }); - }); - }, - remove (node,data) { - this.itemaName=node.parent.data.id; - - this.$confirm("姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?","鎻愮ず",{ - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(() => { - //鍏勫紵閲嶆柊鎺掑簭 - const parent=node.parent; - const children=parent.data.children||parent.data; - children.splice(data.orderNum-1,1); - children.forEach((item,index) => { - item.orderNum=index+1; - }); - - this.traverseArr(data); //鑾峰彇鍒犻櫎鐨勫瓙ID - this.delChildIDs.push(data.id); //瑕佸垹闄ょ殑鍏ㄩ儴ID - let delIDs=this.delChildIDs; - Promise.all([ - deleteDir({ ids: delIDs.toString() }), - updateDirTrees(children), - ]) - .then((res) => { - if(res[0].code==200&&res[1].code==200) { - this.$message({ - type: "success", - message: "鍒犻櫎鎴愬姛!", - }); - let pchildNodes=this.$refs.tree.getNode(this.itemdetail.id).parent; - if(pchildNodes.data.id) { - this.currentData=JSON.stringify(pchildNodes.data) - } else { - this.currentData=null - } - this.itemdetail={}; - - this.getDirTree(); - } else if(res[0].code==200) { - this.$message.error("鍒犻櫎鎴愬姛锛屼綅缃皟鏁村け璐�"); - } else if(res[1].code==200) { - this.$message.error("鍒犻櫎澶辫触,浣嶇疆璋冩暣鎴愬姛"); - } else { - this.$message.error("鍒犻櫎澶辫触"); - } - }) - .catch(() => { - // this.$message.error("鍒犻櫎澶辫触"); - // this.itemdetail = {}; - }); - //閲嶇疆瑕佸垹闄ょ殑瀛怚D - this.delChildIDs=[]; - }) - .catch(() => { - this.$message("宸插彇娑堝垹闄�"); - }); - // this.dialogMessage="鏄惁鍒犻櫎" - // this.dialogFlag = 1; - // this.dialogFrom ={ - // node:node, - // val:data - // } - // this.dialogVisible=true;//鐩綍鏍戞洿鏀瑰脊绐� - // const parent = node.parent; - // const children = parent.data.children || parent.data; - // const index = children.findIndex((d) => d.id === data.id); - // let res = children.splice(index, 1); - // // console.log(res); - // // console.log(data); - // console.log(this.flaten(res)); - }, - traverseArr (obj) { - if(obj.children) { - return obj.children.forEach((item) => { - // console.log(item.id + "---" + item.name); - // this.delChildID += "id=" + item.id + "&"; - this.delChildIDs.push(item.id); - this.traverseArr(item); - }); - } - return; - }, - flaten (arr) { - return arr.reduce((p,v,i) => { - for(let i=0;i<p.length;i++) { - if(p[i].children) { - delete p[i].children; - } - } - return p.concat(v.children? this.flaten(v.children).concat(v):v); - },[]); - }, - handleDragStart (node,ev) { - this.old_dirDat=JSON.parse(JSON.stringify(this.dirList)); //灏嗗浠界殑dir閲嶆柊璧嬪�� - }, - handleDrop (draggingNode,dropNode,dropType,ev) { - this.$confirm("姝ゆ搷浣滃皢淇濆瓨鐩綍鏇存敼, 鏄惁缁х画?","鎻愮ず",{ - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(() => { - //鐖惰妭鐐� - let data=dropType!="inner"? dropNode.parent.data:dropNode.data; - // 鐖惰妭鐐逛腑鍏ㄩ儴瀛愯妭鐐� - let nodeData= - dropNode.level==1&&dropType!="inner"? data:data.children; - //鍙樻洿鑺傜偣 - nodeData.forEach((item,i) => { - if(dropType!="inner") { - if(draggingNode.data.pid===dropNode.data.pid) { - item.pid=item.pid; - } else { - item.pid=dropNode.data.pid; - } - } else { - item.pid=data.id; - } - item.orderNum=i+1; - }); - - let arr=[]; - this.oriData.forEach((e) => { - nodeData.forEach((item) => { - if(item.id===e.id) e=item; - }); - arr.push(e); - }); - this.newData=arr; - this.sendChange(); - }) - .catch(() => { - this.$message("宸插彇娑堟洿鏀�"); - this.dirList=this.old_dirDat; //灏嗗浠界殑dir閲嶆柊璧嬪�� - }); - }, - async sendChange () { - const data=await updateDirTrees(this.newData) - - if(data.code!=200) { - return this.$message.error("绉诲姩澶辫触"); - } - this.getDirTree(); - // this.getLayerTree() - // .then((res) => { - // if (res.code == 200) { - // - // return; - // } else { - // this.$message.error("绉诲姩澶辫触锛岃閲嶈瘯锛�"); - // } - // }) - // .catch(() => { - // this.$message.error("绉诲姩澶辫触锛岃閲嶈瘯锛�"); - // }); - }, - - setDirectoryDownload () { - var url=BASE_URL+'/dir/downloadDir?token='+getToken()+'&id='+this.directoryData.id - console.log(url) - $("#Iframe1").attr("src",url).click() - }, - - layerFormInline (data) { - if(data.pid==0) { - this.directoryData=data; - this.directoryFlag=true; - } else { - this.directoryFlag=false; - } - - this.newNode=this.$refs.tree.getNode(data.id); - this.backUpData=JSON.stringify(data); - var val=this.$refs.tree.getNode(data.id).data; - this.itemdetail=val; - this.currentData=JSON.stringify(data) - - var checks=[]; - if(val.checks) { - if(val.checks.indexOf(',')>-1) { - var value=val.checks.split(','); - for(var i in value) { - checks.push(value[i]) - } - } else if(val.checks.indexOf('[]')>-1) { - - } else { - checks.push(val.checks) - } - this.itemdetail.checks=checks; - } else { - this.itemdetail.checks=[] - } - }, - - - async updCata (formName) { - this.fullscreenLoading=true; - var val=JSON.parse(JSON.stringify(this.itemdetail)); - val.orderNum=this.newNode.data.orderNum; - - var value=this.itemdetail.checks.toString() - val.checks=value; - const data=await updateDirTree(val); - this.currentData=JSON.stringify(this.itemdetail) - - if(data.code!=200) { - this.fullscreenLoading=false; - return this.$message.error("淇敼澶辫触"); - } - this.$message({ - message: '淇敼鎴愬姛', - type: 'success' - }); - this.fullscreenLoading=false; - this.getDirTree(); - - // this.$nextTick(() => { - // this.$refs[formName].validate((valid) => { - // if (valid) { - // - - // var val = this.itemdetail - // var value = this.itemdetail.checks.toString() - // val.checks = value; - // - // let res = JSON.parse(JSON.stringify(this.itemdetail)); - // this.itemdetail = res; - // - // updateDirTree(val) - // .then((res) => { - // setTimeout(() => { - // this.fullscreenLoading = false; - // if (res.code == 200) { - // this.getDirTree(); - // // this.itemdetail = {}; - // this.dialogFormVisible = false; - // } - // }, 500); - // }) - // .catch((res) => { - // this.$message.error("淇敼澶辫触锛岃閲嶈瘯锛�"); - // this.fullscreenLoading = false; - // }); - // } else { - // return false; - // } - // }); - // }); - }, - reset (formName) { - this.itemdetail={}; - // this.$refs[formName].resetFields(); - if(this.backUpData!="") { - this.itemdetail=JSON.parse(this.backUpData); - var val=JSON.parse(this.backUpData); - var checks=[]; - if(val.checks) { - if(val.checks.indexOf(',')>-1) { - var value=val.checks.split(','); - for(var i in value) { - checks.push(value[i]) - } - } else { - checks.push(val.checks) - } - this.itemdetail.checks=checks; - } else { - this.itemdetail.checks=[] - } - } - }, - showPermsMenu (res) { - switch(res.tag) { - case "/delete": - this.menuStatus.delete=true; - break; - case "/insert": - this.menuStatus.insert=true; - break; - case "/update": - this.menuStatus.update=true; - break; - } - }, - getPerms () { - var val=this.$store.state.currentPerms; - var permsEntity=this.$store.state.permsEntity; - if(!permsEntity||!permsEntity.length) { - getPerms().then((res) => { - if(res.code==200) { - permsEntity=res.result; - } - }); - } - for(var i=0;i<permsEntity.length;i++) { - if(val===permsEntity[i].perms) { - this.showPermsMenu(permsEntity[i]); - } - } - }, }, mounted () { - this.getDirTree(); - this.getPerms(); + }, }; </script> @@ -1283,100 +92,31 @@ .subpage_Box { //height: 96%; width: calc(98% - 20px); - height: calc(95% - 20px); - padding: 1%; + height: calc(95.5% - 20px); + border-radius: 10px; background: #f4f8ff; margin: 10px; - // .cataLogContent { - // width: 100%; - // height: 100%; - // display: flex; - // // align-items: center; - // justify-content: space-between; - // .cataLog_leftTree { - // width: 30%; - // height: 98%; - // border-radius: 5px; - // padding: 10px; - // overflow-y: auto; - // } - // .cataLog_rightContent { - // width: 66%; - // height: 98%; - // border-radius: 5px; - // padding: 10px; - // .menuTop { - // /deep/ .el-form-item { - // margin-bottom: 0px; - // } - // } - // } - // } } .mainBox { padding-top: 10px; width: 100%; - height: calc(100% - 75px); + height: calc(100% - 40px); display: flex; - justify-content: space-around; - .leftTree { - width: calc(32% - 0px); - height: 100%; - padding: 10px; - border-radius: 5px; - box-sizing: border-box; - overflow-y: auto; + flex-direction: column; + .mainContent { + display: flex; + justify-content: space-between; } - .right { - width: 65%; - height: 100%; - border-radius: 5px; - padding: 10px; - box-sizing: border-box; - border: 1px solid #dcdfe6; - .inquire { - // margin-bottom: 10px; - padding: 8px; - // margin-top: 10px; - border-radius: 5px; - //border: 1px solid #dcdfe6; - //margin-bottom: 20px; - .el-form-item { - margin: 5px; - } - } + .taleBox { + flex: 1; + margin-top: 10px; + margin-bottom: 10px; } - .right_menu { - position: fixed; - display: block; - z-index: 10000; - padding: 10px; - border: 1px solid #ebeef5; - border-radius: 4px; - box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); - ul { - width: 100%; - height: 100%; - list-style: none; - margin: 0; - padding: 0; - border-radius: 2%; - li { - margin: 0 0 1px 0; - color: rgb(77, 77, 73); - text-align: center; - font-size: 14px; - padding: 4%; - width: 100%; - height: 9.7%; - float: left; - } - li:hover { - color: #409eff !important; - } - } + .pageBox { + display: flex; + justify-content: center; } } .loadBox { -- Gitblit v1.9.3