From 7c515e10fcdffcff295a04533b5789a373aee59d Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期三, 02 八月 2023 17:50:26 +0800 Subject: [PATCH] 1 --- src/views/datamanage/catalogueManage.vue | 1379 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 1,032 insertions(+), 347 deletions(-) diff --git a/src/views/datamanage/catalogueManage.vue b/src/views/datamanage/catalogueManage.vue index bb638c6..8d67230 100644 --- a/src/views/datamanage/catalogueManage.vue +++ b/src/views/datamanage/catalogueManage.vue @@ -1,13 +1,17 @@ <template> - <div class="cataLogBox"> + <div class="subpage_Box"> <My-bread :list="[ - `${$t('dataManage.dataManage')}`, - `${$t('dataManage.catalogueManage')}`, - ]"></My-bread> + `${$t('dataManage.dataManage')}`, + `${$t('dataManage.projectManagement')}`, + ]"></My-bread> <el-divider /> - <div class="cataLogContent"> - <div class="cataLog_leftTree"> - <div style="min-width:450px"> + <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" @@ -15,83 +19,231 @@ :data="dirList" :highlight-current="true" :expand-on-click-node="false" - :default-expand-all="true" + :default-expanded-keys="expandData" @node-click="handleNodeClick" + @node-contextmenu="openTreeMenu" > - </el-tree> - </div> - </div> - <div class="cataLog_rightContent"> - <div style="display:flex;justify-content:space-between"> - <el-breadcrumb separator="/"> - <el-breadcrumb-item :to="{ path: '/' }">{{ - $t('dataManage.dictionaryManageObj.particulars') - }}</el-breadcrumb-item> - </el-breadcrumb> - <div> - <el-button - :disabled="itemdetail.pid == null ? true : false" - @click="setEditNode(1)" - type="info" - icon="el-icon-top" - size="mini" - >鍚戜笂绉诲姩</el-button> - <el-button - :disabled="itemdetail.pid == null ? true : false" - @click="setEditNode(2)" - type="info" - icon="el-icon-bottom" - size="mini" - >鍚戜笅绉诲姩</el-button> - <el-button - :disabled="itemdetail.pid == null ? true : false" - @click="setNewNode(1)" - type="success" - icon="el-icon-plus" - size="mini" - >鏂板鍚岀骇</el-button> - <el-button - :disabled="itemdetail.pid == null ? true : false" - @click="setNewNode(2)" - type="success" - icon="el-icon-plus" - size="mini" - >鏂板瀛愮骇</el-button> - <el-button - @click="setDelNode()" - :disabled="itemdetail.pid == null ? true : false" - type="danger" - icon="el-icon-delete" - size="mini" - >鍒犻櫎</el-button> + <div + class="right_menu box_divm" + id="menu" + v-show="showRightMenu" + > + <ul> + <li @click="setMenuDataCopy">澶嶅埗</li> + <li @click="setMenuDataPaste">绮樿创</li> + </ul> </div> </div> - <el-divider /> + </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.directoryName')" + :label="$t('dataManage.dataUpObj.name')" :label-width="formLabelWidth" > - <el-input v-model="itemdetail.name" /> + <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.catalogDescription')" + :label="$t('dataManage.dataUpObj.explain')" :label-width="formLabelWidth" > <el-input v-model="itemdetail.descr" type="textarea" - resize="none" - style="height: 100%; overflow: auto" + 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" > @@ -99,23 +251,43 @@ v-model="itemdetail.bak" type="textarea" resize="none" + style="max-width: 400px" /> - </el-form-item> - <div class="btnBox"> + </el-form-item>--> + <!-- <div class="btnBox"> <el-button + v-if="menuStatus.update" class="primary" + size="small" @click="updCata('itemdetail')" - >{{ - $t('common.preservation') - }}</el-button> + >{{ $t("common.preservation") }}</el-button + > <el-button + v-if="menuStatus.update" type="info" + size="small" @click="reset" - >{{ - $t('common.cancel') - }}</el-button> - </div> + >{{ $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> </div> <!-- <div class="cataSettings_tree"> --> @@ -143,31 +315,84 @@ :rules="rules" > <el-form-item - :label="$t('dataManage.dataUpObj.directoryName')" + :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.catalogDescription')" + :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.catalogRemarks')" + :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> @@ -176,15 +401,21 @@ class="dialog-footer" > <el-button @click="resetForm('ruleForm')">{{ - $t('common.cancel') + $t("common.cancel") }}</el-button> <el-button class="primary" @click="submitForm('ruleForm')" v-loading.fullscreen.lock="fullscreenLoading" - >{{ $t('common.preservation') }}</el-button> + >{{ $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> </template> @@ -196,80 +427,400 @@ updateDirTrees, insertDir, deleteDir, -} from '../../api/api'; -import MyBread from '../../components/MyBread.vue'; + 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', + name: "catalogueManage", components: { MyBread, }, data() { let validName = (rule, value, callback) => { - if (value === '' || value === null || value === undefined) { - return callback(new Error('鐩綍鍚嶇О涓嶈兘涓虹┖')); + 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', + children: "children", + label: "name", }, fullscreenLoading: false, oriData: [], //鍘熷鏍戞暟鎹� dirList: [], //el鏍戞暟鎹� old_dirDat: [], //el鏍戞暟鎹�(鎷栧姩鍓�) newData: [], //鎷栧姩鍚庡師濮嬫暟鎹� - itemdetail: {}, - backUpData: '', - formLabelWidth: '150px', - delChildID: '', + itemdetail: { + checks: [], + }, + itemaName: null, + backUpData: "", + formLabelWidth: "150px", + delChildID: "", delChildIDs: [], dialogFormVisible: false, ruleForm: { level: null, orderNum: null, pid: null, - name: '', - descr: '', - bak: '', + name: "", + descr: "", + bak: "", + checks: [] }, rules: { - name: [{ required: true, validator: validName, trigger: 'blur' }], + 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, }; }, 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) { + 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.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); + // } + } + }, + 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); + }; + }); + }, + // 璇锋眰鐩綍鏍� - getDirTree() { + async getDirTree() { //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢� // queryMaxId().then((res) => { // this.id = res.data; // }); // 鑾峰彇鐩綍鏍戞暟鎹� - queryDirTree().then((res) => { - // console.log(res); - if (res.code == 200) { - this.oriData = res.result; - this.newData = res.result; - this.dirList = this.treeData(res.result); + const data = await queryDirTree(); - if (this.itemdetail.id != null) { - this.$nextTick(() => { - this.$refs.tree.setCurrentKey(this.itemdetail.id); - }); - } + if (data.code != 200) { + return this.$message.error("椤圭洰鍒楄〃鏌ヨ澶辫触"); + } + this.oriData = data.result; + this.newData = data.result; + this.dirList = this.treeData(data.result); - } else { - console.log('鎺ュ彛鎶ラ敊'); - } + 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('纭鍏抽棴锛�') + this.$confirm("鍏抽棴鍚庢棤娉曚繚瀛橈紝鏄惁鍏抽棴?") .then((_) => { this.resetForm(); }) @@ -280,12 +831,19 @@ return cloneData.filter((father) => { // 寰幆鎵�鏈夐」 let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 - branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� + 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; @@ -296,96 +854,131 @@ } } switch (res) { - case 1://鍚戜笂绉诲姩 + 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 - var 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) - } + // 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' + message: "澶勪簬椤剁锛屼笉鑳界户缁笂绉�", + type: "warning", }); } break; - case 2://鍚戜笅绉诲姩 - if (currentId < (pchildNodes.length - 1)) { + 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; - var arr = []; - this.oriData.filter(res => { + // 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) + // res.orderNum = tempChildrenNodex2.orderNum; + arr.push(res); } else if (res.id == tempChildrenNodex1.data.id) { - res.orderNum = tempChildrenNodex1.orderNum; - arr.push(res) + // 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' + message: "澶勪簬搴曠锛屼笉鑳界户缁笅绉�", + type: "warning", }); - } break; - } }, setDelNode() { - this.remove(this.newNode, this.itemdetail) + 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) {//鏂板鍚岀骇 + if (res == 1) { + //鏂板鍚岀骇 id = this.itemdetail.pid; - orderNum = this.getMaxOrderNum(this.newNode.parent.childNodes) - + let pchildNodes = this.$refs.tree.getNode(this.newNode.id).parent.childNodes + orderNum = this.getMaxOrderNum(pchildNodes); lever = this.itemdetail.level; - } else if (res == 2) {//鏂板瀛愮骇 + } else if (res == 2) { + //鏂板瀛愮骇 id = this.itemdetail.id; - orderNum = this.getMaxOrderNum(this.newNode.childNodes) - + 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.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 = res[i].data.orderNum; } } val = val + 1; return val; }, - - - append(node, data) { this.dialogFormVisible = true; this.ruleForm.pid = data.id; @@ -397,7 +990,7 @@ this.ruleForm = {}; this.$nextTick(() => { this.ruleForm = {}; - this.$refs[formName].resetFields(); + // this.$refs[formName].resetFields(); }); }, submitForm(formName) { @@ -405,17 +998,27 @@ this.$refs[formName].validate((valid) => { if (valid) { this.fullscreenLoading = true; - insertDir(this.ruleForm) + 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', + message: "娣诲姞鎴愬姛", + type: "success", }); - this.itemdetail = {}; - this.ruleForm = {}; + + // this.itemdetail = {}; + // this.ruleForm = {}; this.dialogFormVisible = false; this.$refs[formName].resetFields(); this.getDirTree(); @@ -424,7 +1027,7 @@ }) .catch((res) => { this.itemdetail = {}; - this.$message.error('娣诲姞澶辫触'); + this.$message.error("娣诲姞澶辫触"); this.fullscreenLoading = false; console.log(res); }); @@ -436,10 +1039,12 @@ }); }, remove(node, data) { - this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning', + this.itemaName = node.parent.data.id; + + this.$confirm("姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", }) .then(() => { //鍏勫紵閲嶆柊鎺掑簭 @@ -460,29 +1065,35 @@ .then((res) => { if (res[0].code == 200 && res[1].code == 200) { this.$message({ - type: 'success', - 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('鍒犻櫎鎴愬姛锛屼綅缃皟鏁村け璐�'); + this.$message.error("鍒犻櫎鎴愬姛锛屼綅缃皟鏁村け璐�"); } else if (res[1].code == 200) { - this.$message.error('鍒犻櫎澶辫触,浣嶇疆璋冩暣鎴愬姛'); + this.$message.error("鍒犻櫎澶辫触,浣嶇疆璋冩暣鎴愬姛"); } else { - this.$message.error('鍒犻櫎澶辫触'); + this.$message.error("鍒犻櫎澶辫触"); } }) .catch(() => { - this.$message.error('鍒犻櫎澶辫触'); - this.itemdetail = {}; + // this.$message.error("鍒犻櫎澶辫触"); + // this.itemdetail = {}; }); - //閲嶇疆瑕佸垹闄ょ殑瀛怚D this.delChildIDs = []; }) .catch(() => { - this.$message('宸插彇娑堝垹闄�'); + this.$message("宸插彇娑堝垹闄�"); }); // this.dialogMessage="鏄惁鍒犻櫎" // this.dialogFlag = 1; @@ -524,20 +1135,20 @@ this.old_dirDat = JSON.parse(JSON.stringify(this.dirList)); //灏嗗浠界殑dir閲嶆柊璧嬪�� }, handleDrop(draggingNode, dropNode, dropType, ev) { - this.$confirm('姝ゆ搷浣滃皢淇濆瓨鐩綍鏇存敼, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning', + this.$confirm("姝ゆ搷浣滃皢淇濆瓨鐩綍鏇存敼, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", }) .then(() => { //鐖惰妭鐐� - let data = dropType != 'inner' ? dropNode.parent.data : dropNode.data; + let data = dropType != "inner" ? dropNode.parent.data : dropNode.data; // 鐖惰妭鐐逛腑鍏ㄩ儴瀛愯妭鐐� let nodeData = - dropNode.level == 1 && dropType != 'inner' ? data : data.children; + dropNode.level == 1 && dropType != "inner" ? data : data.children; //鍙樻洿鑺傜偣 nodeData.forEach((item, i) => { - if (dropType != 'inner') { + if (dropType != "inner") { if (draggingNode.data.pid === dropNode.data.pid) { item.pid = item.pid; } else { @@ -548,8 +1159,7 @@ } item.orderNum = i + 1; }); - // console.log(nodeData); - //鏇存柊鍘熷鏁翠綋鏁版嵁 + let arr = []; this.oriData.forEach((e) => { nodeData.forEach((item) => { @@ -561,208 +1171,283 @@ this.sendChange(); }) .catch(() => { - this.$message('宸插彇娑堟洿鏀�'); + this.$message("宸插彇娑堟洿鏀�"); this.dirList = this.old_dirDat; //灏嗗浠界殑dir閲嶆柊璧嬪�� }); }, - sendChange() { - updateDirTrees(this.newData) - .then((res) => { - if (res.code == 200) { - this.getDirTree(); - return; - } else { - alert('璋冩暣澶辫触锛岃閲嶈瘯锛�'); - } - }) - .catch(() => { - alert('淇敼澶辫触锛岃閲嶈瘯锛�'); - }); + 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("绉诲姩澶辫触锛岃閲嶈瘯锛�"); + // }); }, - handleNodeClick(data, node) { - // console.log(data); - this.newNode = node; + + 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); - this.itemdetail = JSON.parse(JSON.stringify(data)); - }, - updCata(formName) { - this.$nextTick(() => { - this.$refs[formName].validate((valid) => { - if (valid) { - this.fullscreenLoading = true; - updateDirTree(this.itemdetail) - .then((res) => { - setTimeout(() => { - this.fullscreenLoading = false; - if (res.code == 200) { - this.getDirTree(); - this.itemdetail = {}; - this.dialogFormVisible = false; - } - }, 500); - }) - .catch((res) => { - alert('淇敼澶辫触锛岃閲嶈瘯锛�'); - this.fullscreenLoading = false; - }); - } else { - return false; + 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 != '') { + 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> <style lang="less" scoped> -.cataLogBox { - height: 98%; +.subpage_Box { + //height: 96%; width: 98%; padding: 1%; - .cataLogContent { - width: 100%; - height: 92%; - display: flex; - justify-content: space-between; - .cataLog_leftTree { - width: 15%; - height: 91%; - border: 1px solid white; - border-radius: 5px; - padding: 1%; - overflow-y: auto; - } - .cataLog_rightContent { - width: 80%; - height: 91%; - border: 1px solid white; - border-radius: 5px; - padding: 1%; - } - } - // .cataSettings_tree { - // position: relative; - // width: 344px; + border-radius: 10px; + // .cataLogContent { + // width: 100%; // height: 100%; - // background: rgb(240, 242, 245); - // padding: 20px; - // border-radius: 10px; - // box-sizing: border-box; - // overflow: auto; - // .saveBtn { - // position: absolute; - // left: 250px; - // top: 23px; - // } - // .cataTreeBox { - // height: 88%; - // width: 100%; - // overflow: auto; - // .el-tree { - // background: transparent; - // font-size: 15px; - // font-family: Microsoft YaHei; - // font-weight: 400; - // color: #000000; - // /deep/ .el-tree-node { - // padding-top: 10px; - // // padding-bottom: 10px; - // } - // /deep/ .el-tree-node:focus > .el-tree-node__content { - // background-color: #b9b9b9; - // } - // /deep/ .el-tree-node__content:hover { - // background-color: rgb(153, 153, 153); - // } - // .btnBox { - // margin: 0 10px 0 5px; - // .el-button + .el-button { - // margin-left: 5px; - // } - // } - // } - // } - // } - // .itemSettings { - // width: calc(100% - 344px); - // border-radius: 10px; - // background: rgb(240, 242, 245); - // margin-left: 10px; - // height: 100%; - // padding: 10px; - // box-sizing: border-box; - // .title_box { - // background: #fff; + // display: flex; + // // align-items: center; + // justify-content: space-between; + // .cataLog_leftTree { + // width: 30%; + // height: 98%; + // border-radius: 5px; // padding: 10px; - // margin-bottom: 24px; - // display: flex; - // border-radius: 10px; - // border: 1px solid rgb(202, 201, 204); - // box-sizing: border-box; + // overflow-y: auto; // } - // .form_box { - // border: 1px solid rgb(202, 201, 204); - // border-radius: 10px; - // background: #fff; - // padding-top: 30px; - // box-sizing: border-box; - // width: 100%; - // .el-input, - // /deep/ .el-textarea { - // width: 400px; - // } - // .btnBox { - // margin: 0 270px 20px; - // width: 200px; - // display: flex; - // justify-content: space-between; + // .cataLog_rightContent { + // width: 66%; + // height: 98%; + // border-radius: 5px; + // padding: 10px; + // .menuTop { + // /deep/ .el-form-item { + // margin-bottom: 0px; + // } // } // } // } - // /deep/ .el-dialog__body { - // padding: 0 30px 0 0; - // } - .el-icon-delete-solid { - color: gray; +} + +.mainBox { + padding-top: 10px; + width: 100%; + height: calc(100% - 75px); + 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; } - .el-icon-circle-plus { - color: gray; + .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; + } + } } - /deep/.el-form-item__label { - color: white; + .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; + } + } } - // 璁剧疆杈撳叆妗嗙殑鑳屾櫙鑹层�佸瓧浣撻鑹层�佽竟妗嗗睘鎬ц缃紱 - /deep/.el-input__inner { - background-color: transparent !important ; - color: #fff; - border: 1px solid; - } - /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; - } - .primary { - background: #409eff; - border: #409eff; - color: white; - } +} +.btnBox { + position: absolute; + bottom: 0; + right: 0; } </style> -- Gitblit v1.9.3