123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- // 左侧树形分类
- import { steelInterface } from "@/api/modules/thirdBaseApi";
- export default {
- data() {
- return {
- select_node:null,//树形结构选中的节点id
- dynamicNode:null,//树形结构选中的节点
- defaultShowNodes: [], //展开的节点
- };
- },
- directives: {
- drag(el, bindings) {
- el.onmousedown = function (e) {
- var init = e.clientX;
- // console.log(init);
- var box = $('#box')[0];
- // console.log(box.clientWidth)
- let total_wid = box.offsetWidth;
- var left = $('#left')[0];
- var right = $('#right')[0];
- var initWidth = left.offsetWidth;
- document.onmousemove = function (e) {
- var end = e.clientX;
- var newWidth = end - init + initWidth;
- left.style.width = newWidth + 'px';
- right.style.width = newWidth > 320 ? total_wid - newWidth + 'px' : total_wid - 320 + 'px';
- };
- document.onmouseup = function () {
- document.onmousemove = document.onmouseup = null;
- e.releaseCapture && e.releaseCapture();
- };
- e.setCapture && e.setCapture();
- return false;
- };
- }
- },
- methods: {
- /* 根据unicode展开树结构并选中 */
- selectCurrentNode({ code, id, type,selectClassifyNodes }) {
- // let deep_arr = _.cloneDeep(this.classifyList);
- // 查找图表的分类父级id
- // let arr = this.findParentNodeHandle(deep_arr, code).slice(1).reverse(); // 父的父的父-父的父-父
- this.defaultShowNodes = selectClassifyNodes;
- this.select_node = code;
- this.$nextTick(()=>{
- setTimeout(() => {
- this.$refs.treeRef.setCurrentKey(this.select_node);
- }, 300);
- })
-
- // // 重置筛选状态
- this.edb_id = id;
- this.getFrequency();
- },
- // 查找树节点所有父节点
- findParentNodeHandle(arr, id) {
- // 遍历取父级code push数组
- for (let i of arr) {
- if (i.UniqueCode === id) {
- return [i.UniqueCode];
- }
- if (i.Children) {
- let node = this.findParentNodeHandle(i.Children, id);
- if (node) {
- return node.concat(i.UniqueCode);
- }
- }
- }
- },
- /* 拖动时node宽度跟随变化 */
- resetNodeStyle: _.debounce(function(node) {
- console.log(node);
- const tree = $('.target_tree')[0];
- let width = tree.offsetWidth;
- let label_wid =
- width > 500
- ? 'auto'
- : width <= 300
- ? 90
- : 0.7 * width;
- this.$set(node, 'Nodewidth', label_wid + 'px');
- },200),
- /* 拖拽完成 */
- dropOverHandle(b, a, i, e) {
- // console.log(i, a);
- // 被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置
- // 一/二级目录
- if ([1,2].includes(b.level)) this.handleMoveCatalogue(b, a, i, e);
- // 指标层
- if (b.level === 3) this.handleMoveEdb(b, a, i, e);
- },
- // 移动的为一二级目录
- handleMoveCatalogue(b, a, i, e) {
- let list = a.parent.childNodes,
- targetIndex = 0,
- PrevClassifyId = 0,
- NextClassifyId = 0,
- ParentClassifyId=0;
- list.forEach((item, index) => {
- if (item.data.BaseFromMysteelChemicalClassifyId === b.data.BaseFromMysteelChemicalClassifyId) {
- targetIndex = index;
- return;
- }
- });
- if(targetIndex===0){
- PrevClassifyId=0
- NextClassifyId=list[targetIndex+1].data.BaseFromMysteelChemicalClassifyId
- }else if(targetIndex===list.length-1){
- PrevClassifyId=list[targetIndex-1].data.BaseFromMysteelChemicalClassifyId
- NextClassifyId=0
- }else{
- PrevClassifyId=list[targetIndex-1].data.BaseFromMysteelChemicalClassifyId
- NextClassifyId=list[targetIndex+1].data.BaseFromMysteelChemicalClassifyId
- }
- if(b.level===2){
- if(i==='inner'){
- ParentClassifyId=a.data.BaseFromMysteelChemicalClassifyId
- PrevClassifyId=0
- NextClassifyId=a.data.Children.length>1?a.data.Children[1].BaseFromMysteelChemicalClassifyId:0
- }else{
- ParentClassifyId=a.data.ParentId
- }
- }
- steelInterface
- .classifyMove({
- BaseFromMysteelChemicalClassifyId: b.data.BaseFromMysteelChemicalClassifyId,
- PrevBaseFromMysteelChemicalClassifyId: PrevClassifyId,
- NextBaseFromMysteelChemicalClassifyId: NextClassifyId,
- ParentBaseFromMysteelChemicalClassifyId: ParentClassifyId
- })
- .then((res) => {
- if (res.Ret !== 200) return;
- this.$message.success("移动成功!");
- this.getClassify();
- });
- },
- // 移动指标
- handleMoveEdb(b, a, i, e) {
- let PrevEdbId = 0,
- NextEdbId = 0,
- targetIndex = 0,
- list = a.parent.data.Children;
- if (i === "inner") {
- PrevEdbId = 0;
- NextEdbId =
- a.data.Children.length > 1 ? a.data.Children[1].BaseFromMysteelChemicalIndexId : 0;
- } else {
- list.forEach((item, index) => {
- if (item.BaseFromMysteelChemicalIndexId === b.data.BaseFromMysteelChemicalIndexId) {
- targetIndex = index;
- return;
- }
- });
- if (targetIndex === 0) {
- PrevEdbId = 0;
- NextEdbId = list[targetIndex + 1].BaseFromMysteelChemicalIndexId;
- } else if (targetIndex === list.length - 1) {
- PrevEdbId = list[targetIndex - 1].BaseFromMysteelChemicalIndexId;
- NextEdbId = 0;
- } else {
- PrevEdbId = list[targetIndex - 1].BaseFromMysteelChemicalIndexId;
- NextEdbId = list[targetIndex + 1].BaseFromMysteelChemicalIndexId;
- }
- }
- steelInterface
- .edbMove({
- BaseFromMysteelChemicalClassifyId: a.data.BaseFromMysteelChemicalClassifyId,
- BaseFromMysteelChemicalIndexId: b.data.BaseFromMysteelChemicalIndexId,
- PrevBaseFromMysteelChemicalIndexId: PrevEdbId,
- NextBaseFromMysteelChemicalIndexId: NextEdbId,
- })
- .then((res) => {
- if (res.Ret !== 200) return;
- this.$message.success("移动成功!");
- this.getClassify();
- });
- },
- /* 拖拽覆盖添加背景色 */
- dropMouseOver(node1, node2, e) {
- if (
- ((node1.level === 2 && node2.level === 1)||(node1.level===3&&node2.level === 2)) &&
- (e.target.childNodes[0].className.includes("el-tree-node__content") ||
- e.target.className.includes("el-tree-node__content"))
- ) {
- e.target.childNodes[0].className.includes("el-tree-node__content")
- ? (e.target.childNodes[0].style.backgroundColor = "#409eff")
- : (e.target.style.backgroundColor = "#409eff");
- }
- },
- /* 拖拽离开/拖拽完成重置背景色 */
- dropMouseLeave(node1, node2, e) {
- let arrs = $(".el-tree-node__content");
- for (let a of arrs) {
- a.style.backgroundColor = "transparent";
- }
- },
- // 树节点展开
- handleNodeExpand(data) {
- // 保存当前展开的节点
- let flag = this.defaultShowNodes.some((item) => item === data.UniqueCode);
- if (!flag) {
- // 不存在则存到数组里
- this.defaultShowNodes.push(data.UniqueCode);
- }
- },
- // 树节点关闭
- handleNodeCollapse(data) {
- this.defaultShowNodes.some((item, index) => {
- if (item === data.UniqueCode) {
- // 删除关闭节点
- this.defaultShowNodes.length = index;
- }
- });
- },
- /* 判断节点是否能被拖拽 */
- canDragHandle({data}) {
- return data.Button.MoveButton;
- },
- /* 判断节点是否能被拖入 */
- canDropHandle(draggingNode, dropNode, type) {
- let canDrop = false;
- // 移动的是一级目录
- if (draggingNode.level === 1 && dropNode.level === 1 &&type!=='inner') {
- canDrop = true;
- }
- // 二级
- if (draggingNode.level === 2) {
- if (
- (dropNode.level === 1 && type === "inner") ||
- (dropNode.level === 2 && type !== "inner")
- ) {
- canDrop = true;
- }
- }
- //三级指标层
- if(draggingNode.level===3){
- if(
- (dropNode.level===2&&type==='inner')||
- (dropNode.level===3&&type!=='inner')
- ) {
- canDrop=true
- }
- }
- return canDrop;
- },
- },
- };
|