| | |
| | | <template> |
| | | <div class="subpage_Box"> |
| | | <My-bread |
| | | :list="[ |
| | | <My-bread :list="[ |
| | | `${$t('dataManage.dataManage')}`, |
| | | `${$t('dataManage.catalogueManage')}`, |
| | | ]" |
| | | ></My-bread> |
| | | <el-divider /> |
| | | `${$t('dataManage.projectManagement')}`, |
| | | ]"></My-bread> |
| | | <el-divider /> |
| | | <div class="mainBox"> |
| | | |
| | | <div class="cataLogContent leftTree subpage_Div"> |
| | | <div |
| | | class="cataLogContent leftTree subpage_Div" |
| | | style="border: 1px solid #dcdfe6;" |
| | | > |
| | | <div style="min-width: 450px"> |
| | | <el-tree |
| | | ref="tree" |
| | |
| | | :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> |
| | | </div> |
| | | <div class="cataLog_rightContent right subpage_Div"> |
| | | <div |
| | | class="inquire" |
| | | class="inquire" |
| | | style=" |
| | | align-items: center; |
| | | display: flex; |
| | |
| | | > |
| | | <el-breadcrumb separator="/"> |
| | | <el-breadcrumb-item :to="{ path: '/' }">{{ |
| | | $t("dataManage.dictionaryManageObj.particulars") |
| | | |
| | | }}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | <div style="margin-right: -5px"> |
| | | <div class="menuTop"> |
| | | <el-form :inline="true" class="demo-form-inline"> |
| | | <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 |
| | |
| | | :on-change="handleChange" |
| | | :file-list="fileList" |
| | | > |
| | | <el-button type="success" icon="el-icon-plus" size="small" |
| | | >上传文件</el-button |
| | | > |
| | | <el-button |
| | | type="success" |
| | | icon="el-icon-plus" |
| | | size="small" |
| | | >{{ $t("shuJuGuanLi.butten.uploads") }}</el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | type="success" |
| | | icon="el-icon-plus" |
| | | size="small" |
| | | >新增同级</el-button |
| | | > |
| | | >{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | |
| | | type="success" |
| | | icon="el-icon-plus" |
| | | size="small" |
| | | >新增子级</el-button |
| | | > |
| | | >{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | |
| | | type="danger" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | >删除</el-button |
| | | > |
| | | >{{ $t("shuJuGuanLi.butten.Delete") }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | |
| | | type="info" |
| | | icon="el-icon-top" |
| | | size="small" |
| | | >向上移动</el-button |
| | | > |
| | | >{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | |
| | | type="info" |
| | | icon="el-icon-bottom" |
| | | size="small" |
| | | >向下移动</el-button |
| | | > |
| | | >{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <el-form :model="itemdetail" ref="itemdetail" :rules="rules" style="position: relative;"> |
| | | <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" style="max-width: 400px" /> |
| | | <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; max-width: 400px" |
| | | 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')" |
| | |
| | | <el-input |
| | | v-model="itemdetail.exts" |
| | | type="textarea" |
| | | resize="none" |
| | | style="height: 100%; overflow: auto; max-width: 400px" |
| | | style=" max-width: 420px" |
| | | :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item |
| | | <!-- <el-form-item |
| | | :label="$t('dataManage.dataUpObj.inspectionItems')" |
| | | :label-width="formLabelWidth" |
| | | > |
| | |
| | | resize="none" |
| | | style="height: 100%; overflow: auto; max-width: 400px" |
| | | /> |
| | | </el-form-item> |
| | | </el-form-item>--> |
| | | <el-form-item |
| | | :label="$t('dataManage.dataUpObj.code')" |
| | | :label-width="formLabelWidth" |
| | |
| | | v-model="itemdetail.code" |
| | | disabled |
| | | type="textarea" |
| | | resize="none" |
| | | style="height: 100%; overflow: auto; max-width: 400px" |
| | | style=" max-width: 420px" |
| | | autosize |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item |
| | | <!-- <el-form-item |
| | | :label="$t('dataManage.dataUpObj.catalogRemarks')" |
| | | :label-width="formLabelWidth" |
| | | > |
| | |
| | | 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" |
| | |
| | | @click="reset" |
| | | >{{ $t("common.cancel") }}</el-button |
| | | > |
| | | </div> |
| | | </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"> --> |
| | |
| | | :visible.sync="dialogFormVisible" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form :model="ruleForm" ref="ruleForm" :rules="rules"> |
| | | <el-form |
| | | :model="ruleForm" |
| | | ref="ruleForm" |
| | | :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"></el-input> |
| | | <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"></el-input> |
| | | <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')" |
| | |
| | | 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 |
| | | v-model="ruleForm.checks" |
| | | <!-- <el-input |
| | | |
| | | type="textarea" |
| | | resize="none" |
| | | style="height: 100%; overflow: auto" |
| | | /> |
| | | |
| | | /> --> |
| | | <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')" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item |
| | | :label="$t('dataManage.dataUpObj.catalogRemarks')" |
| | | :label="$t('dataManage.dataUpObj.Remarks')" |
| | | :label-width="formLabelWidth" |
| | | > |
| | | <el-input v-model="ruleForm.bak" autocomplete="off"></el-input> |
| | | <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"> |
| | | <div |
| | | slot="footer" |
| | | class="dialog-footer" |
| | | > |
| | | <el-button @click="resetForm('ruleForm')">{{ |
| | | $t("common.cancel") |
| | | }}</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> |
| | | |
| | |
| | | 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: { |
| | |
| | | } |
| | | }; |
| | | return { |
| | | directoryData: null, |
| | | directoryFlag: false, |
| | | menuStatus: { |
| | | delete: false, |
| | | insert: false, |
| | |
| | | dirList: [], //el树数据 |
| | | old_dirDat: [], //el树数据(拖动前) |
| | | newData: [], //拖动后原始数据 |
| | | itemdetail: {}, |
| | | itemdetail: { |
| | | checks: [], |
| | | }, |
| | | itemaName: null, |
| | | backUpData: "", |
| | | formLabelWidth: "150px", |
| | |
| | | name: "", |
| | | descr: "", |
| | | bak: "", |
| | | checks: [] |
| | | }, |
| | | rules: { |
| | | name: [{ required: true, validator: validName, trigger: "blur" }], |
| | |
| | | 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) { |
| | |
| | | { defval: null } |
| | | ); // 默认第一行下为空也能解析出第一四行 |
| | | var data = [...outdata]; |
| | | const arr = []; |
| | | data.map((v) => { |
| | | const obj = {}; |
| | | obj.name = v.name; |
| | | obj.pname = v.pname; |
| | | obj.descr = v.explain; |
| | | obj.bak = v.bak; |
| | | obj.orderNum = null; |
| | | obj.pid = null; |
| | | arr.push(obj); |
| | | }); |
| | | that.tableData = arr; |
| | | that.setInsertData(that.tableData); |
| | | 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(list); |
| | | 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.name == val.pname) { |
| | | 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.pname == val.pname) { |
| | | |
| | | 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); |
| | | } |
| | | // 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.name == child.pname); // 对比ID,分别上下级菜单,并返回数据 |
| | | let branchArr = cloneData.filter((child) => father.tid == child.sid); // 对比ID,分别上下级菜单,并返回数据 |
| | | |
| | | branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值 |
| | | // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; |
| | | // 由此循环多次后,就能形成相应的树形数据结构 |
| | | return father.pname == null; // 返回一级菜单 |
| | | return father.sid == 0; // 返回一级菜单 |
| | | }); |
| | | }, |
| | | readFile(file) { |
| | |
| | | }, |
| | | |
| | | // 请求目录树 |
| | | getDirTree() { |
| | | async getDirTree() { |
| | | //获取目录树最大ID,新建节点使用 |
| | | // 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); |
| | | // this.$nextTick(() => { |
| | | const data = await queryDirTree(); |
| | | |
| | | // this.expandData=[15] |
| | | // this.$refs.tree.setCurrentKey(15); |
| | | if (data.code != 200) { |
| | | return this.$message.error("项目列表查询失败"); |
| | | } |
| | | this.oriData = data.result; |
| | | this.newData = data.result; |
| | | this.dirList = this.treeData(data.result); |
| | | |
| | | // }); |
| | | if (this.itemaName != null) { |
| | | this.$nextTick(() => { |
| | | this.expandData = [this.itemaName]; |
| | | this.$refs.tree.setCurrentKey(this.itemaName); |
| | | }); |
| | | } |
| | | } 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(); |
| | | }) |
| | | .catch((_) => {}); |
| | | .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) : ""; // 给父级添加一个children属性,并赋值 |
| | | // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 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; |
| | |
| | | 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 = []; |
| | | // 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; |
| | | // res.orderNum = tempChildrenNodex2.orderNum; |
| | | arr.push(res); |
| | | } else if (res.id == tempChildrenNodex1.data.id) { |
| | | res.orderNum = tempChildrenNodex1.orderNum; |
| | | // 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 { |
| | |
| | | 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 = []; |
| | | // 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; |
| | | // res.orderNum = tempChildrenNodex2.orderNum; |
| | | arr.push(res); |
| | | } else if (res.id == tempChildrenNodex1.data.id) { |
| | | res.orderNum = tempChildrenNodex1.orderNum; |
| | | // 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 { |
| | |
| | | }); |
| | | }); |
| | | }, |
| | | 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; |
| | | 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) { |
| | | //新增子级 |
| | | 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; |
| | | } |
| | | |
| | |
| | | val = val + 1; |
| | | return val; |
| | | }, |
| | | |
| | | append(node, data) { |
| | | this.dialogFormVisible = true; |
| | | this.ruleForm.pid = data.id; |
| | |
| | | this.ruleForm = {}; |
| | | this.$nextTick(() => { |
| | | this.ruleForm = {}; |
| | | this.$refs[formName].resetFields(); |
| | | // this.$refs[formName].resetFields(); |
| | | }); |
| | | }, |
| | | submitForm(formName) { |
| | |
| | | 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; |
| | |
| | | message: "添加成功", |
| | | type: "success", |
| | | }); |
| | | this.itemaName = res.result; |
| | | this.itemdetail = {}; |
| | | this.ruleForm = {}; |
| | | |
| | | // this.itemdetail = {}; |
| | | // this.ruleForm = {}; |
| | | this.dialogFormVisible = false; |
| | | this.$refs[formName].resetFields(); |
| | | this.getDirTree(); |
| | |
| | | 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(); |
| | |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.$message.error("删除失败"); |
| | | this.itemdetail = {}; |
| | | // this.$message.error("删除失败"); |
| | | // this.itemdetail = {}; |
| | | }); |
| | | //重置要删除的子ID |
| | | this.delChildIDs = []; |
| | |
| | | } |
| | | item.orderNum = i + 1; |
| | | }); |
| | | // console.log(nodeData); |
| | | //更新原始整体数据 |
| | | |
| | | let arr = []; |
| | | this.oriData.forEach((e) => { |
| | | nodeData.forEach((item) => { |
| | |
| | | this.dirList = this.old_dirDat; //将备份的dir重新赋值 |
| | | }); |
| | | }, |
| | | sendChange() { |
| | | updateDirTrees(this.newData) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | this.getDirTree(); |
| | | return; |
| | | } else { |
| | | this.$message.error("修改失败,请重试!"); |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.$message.error("修改失败,请重试!"); |
| | | }); |
| | | }, |
| | | handleNodeClick(data, node) { |
| | | // console.log(data); |
| | | async sendChange() { |
| | | const data = await updateDirTrees(this.newData) |
| | | |
| | | this.newNode = node; |
| | | this.backUpData = JSON.stringify(data); |
| | | this.itemdetail = JSON.parse(JSON.stringify(data)); |
| | | 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("移动失败,请重试!"); |
| | | // }); |
| | | }, |
| | | 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) => { |
| | | this.$message.error("修改失败,请重试!"); |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | } else { |
| | | return false; |
| | | |
| | | 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) { |
| | |
| | | |
| | | <style lang="less" scoped> |
| | | .subpage_Box { |
| | | height: 96%; |
| | | //height: 96%; |
| | | width: 98%; |
| | | padding: 1%; |
| | | border-radius: 10px; |
| | |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | .mainBox { |
| | | padding-top: 10px; |
| | | width: 100%; |
| | | height: calc(100% - 75px); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | justify-content: space-around; |
| | | .leftTree { |
| | | width: calc(32% - 0px); |
| | | height: 100%; |
| | |
| | | padding: 8px; |
| | | // margin-top: 10px; |
| | | border-radius: 5px; |
| | | border: 1px solid #dcdfe6; |
| | | margin-bottom: 20px; |
| | | //border: 1px solid #dcdfe6; |
| | | //margin-bottom: 20px; |
| | | .el-form-item { |
| | | margin: 5px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .btnBox { |
| | | position: absolute; |
| | | bottom:0; |
| | | bottom: 0; |
| | | right: 0; |
| | | } |
| | | </style> |