Namespace.register("U.MD.O.E"); U.MD.O.E.fileinfo; U.MD.O.E.userInfo; U.MD.O.E.web; //互联权限 //US是全局变量和定量的使用,统一用parent层的 US = parent.US; //#region Excel 初始化 /** * 打开保存数据的Excel * * @param {object} 文件信息 * @param {object} 用户信息 */ U.MD.O.E.load = function (fileinfo, userinfo) { //加载下拉控件 //U.MD.O.E.createSelection(); //加载群居变量 // U.MD.O.E.fileinfo = fileinfo; // U.MD.O.E.userInfo = userinfo; var _fileinfo = fileinfo, _fileid = fileinfo.UserDirectoryID; //文档id U.MD.O.E.variable(fileinfo, userinfo); //初始化全局变量 U.MD.O.E.getData(); //取数据并加载excel //U.MD.O.E.connect(); //互联版本 U.MD.O.E.Panel.loadPlayUser(fileinfo); //加载协助人员窗体 U.MD.O.E.Panel.loadOfficeHistory(fileinfo); //加载历史记录 U.MD.O.E.Panel.loadLink(fileinfo); //加载连接分享模板 U.MD.O.E.TL.toolsbind($(".U_MD_O_H_head_mo")[0]); //加载初始链接模块 top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].onblur = function () { U.MD.O.E.TitleChange(); //设置标题同步事件 } } /* * excel 其他功能函数 */ U.MD.O.E.otherFun = function () { U.MD.O.E.createSelection(); //创建下拉元素 U.MD.O.E.TL.borderPicker(); //边框选择器 U.MD.O.E.BC.scrollY(); //上下滚动 U.MD.O.E.KE.Control(); //键盘控制单元格事件 U.MD.O.E.TL.toolsbind($('.U_MD_O_H_head_mo')[0]); //给工具栏绑定onresize事件 $(".U_MD_O_E_headInput")[0].focus(); //默认文本框聚焦 U.MD.O.E.BC.cloneCell(); //聚焦元素右下角克隆 U.MD.O.E.TL.borderPicker(); //边框选择器 } /* * 获取后台excel数据的方法 */ U.MD.O.E.getData = function () { var _fileinfo = U.MD.O.E.fileinfo, //获取前台用户数据组 _fileid = _fileinfo.UserDirectoryID, //获取文件id _permission = U.MD.O.E.permission(); //获取用户权限json if (_permission.web) { //如果是群文件 協同 parent.U.A.Request(US.SCOKET, ['getExcel', _fileid, US.pageId, U.MD.O.E.userInfo.userid], U.MD.O.E.AsynLoad); //获取office内容 } else if (_fileinfo.UserDirectoryID && _fileinfo.UserId && _fileinfo.UserallDirectoryName) { //已入库 则取数据 // parent.U.A.Request(US.AUTH, ["GetFileContent", _fileid], U.MD.O.E.AsynLoad); //开始获取数据 U.A.Request(US.DISK, ["GetFileContent", fileinfo.UserDirectoryID], function (r) { //获取word内容 if (r.value && r.value.UsOffice !== undefined && r.value.UsOffice != null) { U.MD.O.E.AsynLoad(r); } //如果内容不存在则去office系统中获取 else { U.A.Request("http://office.1473.cn/Officetohtml.ashx", ["Open", fileinfo.UserDirectoryExtendType, fileinfo.UserFilesServerName], function (r) { if (r.value.value != undefined) { var _table = $$("div"); _taskId = Guid.newGuid(); fileinfo.UsOffice = {}; //定义初始文档对象 fileinfo.UsOffice[_taskId] = {/* 工作表 */ column: { //列板 A-Z change: {}, //被改变宽度的 列 num: 200 //列的数量 }, row: { //行板 1-200 change: {}, //被改变高度的 行 num: 200 //初始化行的数量 暂时为200 }, cell: {}, //右内容的单元格 和 被合并的单元格 img: [], taskName: "工作表1", titie: "" } _xlsxData = JSON.parse(r.value.value); for (var i = 0; i < _xlsxData[0].length; i++) { for (var j in _xlsxData[0][i]) { _col = j.replace(/^Column/, ''); _col = parseInt(_col); if (fileinfo.UsOffice[_taskId].cell[_col]) { fileinfo.UsOffice[_taskId].cell[_col][i + 1] = _xlsxData[0][i][j]; } else { fileinfo.UsOffice[_taskId].cell[_col] = {}; fileinfo.UsOffice[_taskId].cell[_col][i + 1] = _xlsxData[0][i][j]; } } } U.MD.O.E.AsynLoad({ "value": fileinfo.UsOffice }); } else { U.MD.O.E.AsynLoad(r); } }); } }); } else { //无入库时 U.MD.O.E.initExcel(); //初始化内容 } } /* 访问数据库后的回调函数 */ U.MD.O.E.AsynLoad = function (r) { var _data; //定义变量 if (r.value && r.value.UsOffice !== undefined) {//判断返回值是不是office的json数据 _data = r.value.UsOffice; //如果有,json解析它 } else {//如果没有 _data = r.value; //正常加载 } if (_data) { //如果获取到了数据 typeof (_data) === "string" ? _data = JSON.parse(_data) : ""; //判断是否为其他json数据,如果是,解析它 U.MD.O.E.data = _data; //修改全局变量 U.MD.O.E.printTask(); //打印工作表 U.MD.O.E.rePrintExcel(); //重新打印表格 U.MD.O.E.otherFun(); //创建下拉,滚动等事件 } else { U.MD.O.E.initExcel(); //初始化内容 } } /* * 编辑器权限函数 * 返回用户权限json */ U.MD.O.E.permission = function () { var _iseditor, //是否可编辑 _isgroup, //群用户 _permission = { //权限 "edit": false, //可编辑权限 "web": false //互联权限 }; if (!U.MD.O.E.fileinfo.UserId) { //如果没有登录 则没有编辑权限 _permission.edit = true; //就给其编辑权限 return _permission; } if (U.MD.O.E.fileinfo && US.friend.group) {//判断用户是否在群里操作群文件 _isgroup = U.Json.select(US.friend.group, { "GroupManageID": U.MD.O.E.fileinfo.GroupID })[0]; //向后台发请求,判断用户是否再操作群文件中 } if (U.MD.O.E.fileinfo && (U.MD.O.E.fileinfo.GroupID == U.MD.O.E.userInfo.userid || U.MD.O.E.fileinfo.UserId == US.userInfo.userid)) {//判断是否是有编辑权限 _iseditor = true; //如果有,就改变变量的值 } if (_isgroup) {//是ftp用户就判断是不是群用户 _permission.web = true; //互联办公的权限 _permission.edit = true; //就给其编辑权限 } else if (_iseditor) { _permission.edit = true; //就给其编辑权限 } U.MD.O.E.web = _permission.web; return _permission; //返回用户权限json } /** * 初始化全局变量 * @param {object} 文档信息 * @param {object} 登录用户信息 * */ U.MD.O.E.variable = function (fileinfo, userinfo) { U.MD.O.E.fileinfo = fileinfo //文档信息 U.MD.O.E.userInfo = userinfo; //用户信息 U.MD.O.E.taskCopyId = null; //当前无复制的工作表 U.MD.O.E.colBoardWidth = 107; //列板 A-Z 的每一列的默认宽 U.MD.O.E.rowBoardHeight = 22; //行板 1-200 的每一列的默认高 U.MD.O.E.colBoardNum = 26; //列板的初始数量 U.MD.O.E.rowBoardNum = 200; //行板的初始数量 U.MD.O.E.taskNum = 1; //工作表数量 U.MD.O.E.taskId = Guid.newGuid(); //当前工作表id U.MD.O.E.data = {}; //定义初始文档对象 U.MD.O.E.data[U.MD.O.E.taskId] = {/* 工作表 */ column: { //列板 A-Z change: {}, //被改变宽度的 列 num: U.MD.O.E.colBoardNum //列的数量 }, row: { //行板 1-200 change: {}, //被改变高度的 行 num: U.MD.O.E.rowBoardNum //初始化行的数量 暂时为200 }, cell: {}, //右内容的单元格 和 被合并的单元格 img: [], taskName: "工作表1", titie: "" } _Newleft = 0; //最新的top值 _Newtop = 0; //最新的top值 _NewRolltop = 0; //定义初始Rolltop的值 _NewRollleft = 0; //定义初始Rollleft的值 _Percentage = 0; //定义初始Percentage的值 _PageMove = ""; //定义初始PageMove的值 } /* * 此处是添加新的工作表 */ U.MD.O.E.addTask = function () { U.MD.O.E.taskId = Guid.newGuid(); //修改工作表id U.MD.O.E.taskNum++; //工作表数量加1 var _data; if (U.MD.O.E.taskCopyId) { //如果存在复制的工作表 则复制该工作表的数据 _data = JSON.stringify(U.MD.O.E.data[U.MD.O.E.taskCopyId]); //克隆json 转成字符串 _data = JSON.parse(_data); //再将字符串 转乘成json _data.taskName = "工作表" + U.MD.O.E.taskNum; } else { /* 初始化表格的数据 */ _data = {/* 工作表 */ column: { //列板 A-Z change: {}, //被改变宽度的 列 num: U.MD.O.E.colBoardNum //列的数量 }, row: { //行板 1-200 change: {}, //被改变高度的 行 num: U.MD.O.E.rowBoardNum //初始化行的数量 暂时为200 }, cell: {}, //右内容的单元格 和 被合并的单元格 img: [], taskName: "工作表" + U.MD.O.E.taskNum//修改表单名字 } } var _dataInfo = { id: U.MD.O.E.taskId, data: _data }//创建json,记录数据 U.MD.O.E.dataChange(U.MD.O.E.excelInfo("addTask", _dataInfo)); //调用修改事件 /*-------------以下函數为添加工作栏并切换----------*/ var _taskBar = $(".U_MD_O_E_taskBar")[0], //工作栏元素 _taskEl = $(".U_MD_O_E_task")[0]; //需要克隆的工作表元素 _newTask = _taskEl.cloneNode(); ////开始克隆节点 _newTask.style.display = "block"; //显示对象 _newTask.id = U.MD.O.E.taskId; //修改id _newTask.innerText = _data.taskName; //修改内容 $(".U_MD_O_E_taskCheck").removeClass("U_MD_O_E_taskCheck"); //删除对应对象集合 $(_newTask).addClass("U_MD_O_E_taskCheck"); //添加对应对象 _taskBar.appendChild(_newTask); //添加对应对象 U.MD.O.E.rePrintExcel(); //重新打印表格 U.MD.O.E.addTaskClick(_newTask); //工作表添加点击事件 U.MD.O.E.rightClick(_newTask, "taskBar"); //工作表添加右键事件 U.MD.O.E.taskCopyId = null; //清空复制ID } /* * 工作表添加点击事件 * taskEl 工作表元素 */ U.MD.O.E.addTaskClick = function (taskEl) { $(taskEl).bind('click', function (e) {//给对象添加点击事件 U.UF.EV.stopBubble(e); //阻止冒泡 $(".U_MD_O_E_taskCheck").removeClass("U_MD_O_E_taskCheck"); //移除这个对象集合 $(this).addClass("U_MD_O_E_taskCheck"); //添加一个新的对象名 U.MD.O.E.taskId = this.id; //修改id U.MD.O.E.rePrintExcel(); //重新打印表格 }); } /* * 打印工作表 * @param {Booleans} 是否为站点工作表打印 */ U.MD.O.E.printTask = function (data) { var _data = U.MD.O.E.data, //获取全局变量 _taskBar = $(".U_MD_O_E_taskBar")[0], //工作栏元素 _taskEl = $(".U_MD_O_E_task")[0], //获取工作表最外层div _newTask, _attr, _num = 0; U.MD.O.E.taskNum = U.MD.O.E.jsonLen(_data); //获取json的数量,用全局变量来接结果 for (_attr in _data) {//开始循环创建每一个工作表div _newTask = _taskEl.cloneNode(); //开始克隆节点 _newTask.style.display = "block"; //显示它 _newTask.id = _attr; //设置id _num++; _newTask.innerText = _data[_attr].taskName || "工作表" + _num; //设置内容 if (_num === 1) {//判断是否为第一个 $(".U_MD_O_E_taskCheck").removeClass(".U_MD_O_E_taskCheck"); $(_newTask).addClass("U_MD_O_E_taskCheck") U.MD.O.E.taskId = _attr; //当前选中工作表的id是 _attr; } _taskBar.appendChild(_newTask); //将元素添加进去 if (!data) {//判断是否为站点视图 U.MD.O.E.addTaskClick(_newTask); //工作表添加点击事件 U.MD.O.E.rightClick(_newTask, "taskBar"); //工作表添加右键事件 } else {//如果是 _newTask.onclick = function () {//设置点击事件 $(".U_MD_O_E_taskCheck")[0].className = "U_MD_O_E_task"; //修改classname改变颜色 this.className = "U_MD_O_E_task U_MD_O_E_taskCheck "; //修改classname改变颜色 U.MD.O.E.rePrintExcel(U.MD.O.E.data[this.id], true); //打印对应表格 } } } } /* *新建文档 */ U.MD.O.E.newExcel = function () { parent.U.MD.D.I.openApplication("excel", { "userid": US.userInfo.userid, "directoryid": US.FTPFOLDERID }); //打开文档处理 } /* * info 所需要修改的内容 * req 为 true 则 不发送后台 */ U.MD.O.E.dataChange = function (info, req) { var _messageInfo = info.messageInfo || info, //获取内容 _type = _messageInfo.type, //获取种类 _excelData = U.MD.O.E.data, //获取全局文档内容 _content = _messageInfo.content; //获取修改内容 switch (_type) { case "blur": //判断是否为普通修改内容 U.MD.O.E.dataChange.blur(_content); break; case "addLine": //判断是否为添加行内容 U.MD.O.E.dataChange.addLine(_content); break; case "delLine": //判断是否为删除行内容 U.MD.O.E.dataChange.delLine(_content); break; case "addCol": //判断是否为添加列内容 U.MD.O.E.dataChange.addCol(_content); break; case "delCol": //判断是否为删除列改内容 U.MD.O.E.dataChange.delCol(_content); break; case "merge": //判断是否为合并单元格修改内容 U.MD.O.E.dataChange.merge(_content); break; case "splitCells": //判断是否为拆分单元格修改内容 U.MD.O.E.dataChange.splitCells(_content); break; case "rowExpanding": //判断是否为行板拉伸数据保存修改内容 U.MD.O.E.dataChange.rowExpanding(_content); break; case "colExpanding": //判断是否为列板拉伸数据保存修改内容 U.MD.O.E.dataChange.colExpanding(_content); break; case "img": //判断是否为图片修改内容 U.MD.O.E.dataChange.img(_content); break; case "addTask": //判断是否为添加工作表数据保存修改内容 U.MD.O.E.dataChange.addTask(_content); break; case "deleteTask": //判断是否为删除工作表数据保存修改内容 U.MD.O.E.dataChange.deleteTask(_content); break; case "reNameTask": //判断是否为工作表重命名修改内容 U.MD.O.E.dataChange.reNameTask(_content); break; case "setStyle": //判断是否为修改样式修改内容 U.MD.O.E.dataChange.setStyle(_content); break; case "setBorder": //判断是否为修改边框样式数据保存内容 U.MD.O.E.dataChange.setBorder(_content); break; case "imgChange": //判断是否为图片修改内容 U.MD.O.E.dataChange.imgChange(_content); break; case "excelAddHref": //判断是否为插入链接修改内容 U.MD.O.E.dataChange.excelAddHref(_content); break; case "clearAContent": //判断是否为删除链接修改内容 U.MD.O.E.dataChange.clearAContent(_content); break; case "updateTitle": //判断是否为同步修改文件名内容 U.MD.O.E.data[U.MD.O.E.taskId].title = _content[0]; break; } U.MD.O.E.web && !req ? U.MD.O.E.send(info) : ""; //发送后台请求 //console.log(_excelData); }; /* * 图片拉伸和拖拽 * content 需要加入或修改的json数据 * taskId 工作表id */ U.MD.O.E.dataChange.imgChange = function (content, taskId) { var _content = content, _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _imgData = _excelData.img; //获取img数据 _imgData[0].left = _content.left; //设置初始left _imgData[0].top = _content.top; //设置初始top } /* * 插入链接 * content 需要加入或修改的json数据 * taskId 工作表id */ U.MD.O.E.dataChange.excelAddHref = function (content, taskId) { var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _cellData = _excelData.cell, //获取修改内容信息 _content = content; var _cellColList = _cellData[_content.col], //获取该数据里的所有列 _cell; if (!_cellColList) { //如果列不存在 则创建一个列 _cellColList = _cellData[_content.col] = {}; } if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据 _cellColList[_content.row] = {}; _cellColList[_content.row].cssStyle = {}; //css样式 } _cell = _cellColList[_content.row]; //获取该单元格的数据 (json) _content.content ? _cell.innerHTML = _content.content : ""; //修改该单元格的innerHTML } /* * 删除链接 * content 需要加入或修改的json数据 * taskId 工作表id */ U.MD.O.E.dataChange.clearAContent = function (content, taskId) { var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _cellData = _excelData.cell, //获取修改内容信息 _content = content; var _cellColList = _cellData[_content.col], //获取该数据里的所有列 _cell; if (!_cellColList) { //如果列不存在 则创建一个列 _cellColList = _cellData[_content.col] = {}; } if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据 _cellColList[_content.row] = {}; _cellColList[_content.row].cssStyle = {}; //css样式 } _cell = _cellColList[_content.row]; //获取该单元格的数据 (json) _content.content ? _cell.innerHTML = _content.content : ""; //修改该单元格的innerHTML } /*-------------------------------以下是数据保存各个类型的接口-------------------------------------------------------------------------------------*/ ///* //* 失焦数据保存 //* content 需要加入或修改的json数据 //* taskId 工作表id 可填可不填 //*/ //U.MD.O.E.dataChange.blur = function (content, taskId) { // var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据 // _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据 // _cellData = _excelData.cell, //获取该数据里的单元格数据 // _content = content, //获取需要保存的json数据 // _text = _content.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据 // _cellColList = _cellData[_content.col], //获取该数据里的所有列 // _cell; // if (!_cellColList) { //如果列不存在 则创建一个列 // _cellColList = _cellData[_content.col] = {}; // } // if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据 // _cellColList[_content.row] = {}; // } // _cell = _cellColList[_content.row]; //获取该单元格的数据 (json) // _cell.innerHTML = _content.content; //修改该单元格的innerHTML // _cell.cssText = _content.cssText; //修改该单元格的cssText // if ((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 则删除掉 // delete (_cellColList[_content.row]); // } //}; /* * 添加工作表数据保存 * content 需要加入或修改的json数据 */ U.MD.O.E.dataChange.addTask = function (content) { var _content = content; //获取信息 U.MD.O.E.data[content.id] = content.data; //设置全局变量内容 } /* * 添加工作表数据保存 * content 需要加入或修改的json数据 */ U.MD.O.E.dataChange.deleteTask = function (content) { var _content = content; //获取信息 delete U.MD.O.E.data[content.id]; //删除json里是该ID的所有数据 } /* * 工作表重命名数据保存 * content 需要保存的json数据 */ U.MD.O.E.dataChange.reNameTask = function (content) { var _content = content; //获取信息 U.MD.O.E.data[_content.id].taskName = _content.name; //设置全局变量内容 } /* * 添加行数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.addLine = function (content, taskId) { var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量信息 _excelData = U.MD.O.E.data[_taskId], //获取全局变量信息 _content = content, //获取内容 _rowData = _excelData.row, //获取行数 _cellData = _excelData.cell, //获取列数 _start = _content.start, //开始行 _lineNum = _content.lineNum, //添加行的数量 _sizeChange = _content.sizeChange, //添加的行的高度 _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合 _cellCol; if (_mergeArr.length) { //如果添加了行 导致该行下的合并单元格元素的数据发生了变化 则此处是修改他们合并单元格的数据 加上 添加了_lineNum _mergeArr.forEach(function (info) { _cellData[info.col][info.row].endRow = _cellData[info.col][info.row].endRow + _lineNum; }); } for (var k in _cellData) { _cellCol = _cellData[k]; //修改该列下的所有行单元格 的行数据 var temp = {}; for (var row in _cellCol) {//循环对象 if (row > _start) {//判断是否为合并元素 temp[(+row) + _lineNum] = _cellCol[row]; temp[(+row) + _lineNum].endRow ? temp[(+row) + _lineNum].endRow = temp[(+row) + _lineNum].endRow + _lineNum : ""; //如果是合并单元格的元素 则将endRow + _lineNum; } else {//如果不是 temp[row] = _cellCol[row]; //正常修改内容 } } _cellData[k] = temp; } /* 该处for循环是修改数据中单元格的行数 */ var _rowDataChange = _rowData.change, //获取数据表中 所有被改变高度的 行版信息 _temp = {}, _rowChange; for (var k in _rowDataChange) {//循环判断 _rowChange = _rowDataChange[k]; //该行板的所有被改动的行数据 if (k > _start) {//判断是否为改变高度 _temp[(+k) + _lineNum] = _rowChange; //如果是,修改对应内容 } else { _temp[k] = _rowChange; //如果没有,正常修改内容 } } /* 该处for循环是修改数据中行版的行数 */ _rowData.change = _temp; if (_sizeChange) { //此处是如果添加的行 高度不是默认的 则将添加的行 对应的行板高度一起修改 for (var i = 1; i <= _lineNum; i++) {//循环开始 _rowData.change[_start + i] = _sizeChange; } } _rowData.num = _rowData.num + _lineNum; //行板数量 = 行板数量 + 添加行的数量 }; /* * 删除行数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.delLine = function (content, taskId) { var _content = content, _taskId = taskId || U.MD.O.E.taskId, _excelData = U.MD.O.E.data[_taskId], _rowData = _excelData.row, _cellData = _excelData.cell, _start = _content.start, //被选中的第一行 _end = _content.end, //被选中的最后一行 _lineNum = _content.lineNum, //所删除的行数 _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合 _cellCol; for (var k in _cellData) {//循环开始 _cellCol = _cellData[k]; var temp = {}; for (var row in _cellCol) { if (row > _end) {//判断是否为合并数据 temp[(+row) - _lineNum] = _cellCol[row]; temp[(+row) - _lineNum].endRow ? temp[(+row) - _lineNum].endRow = temp[(+row) - _lineNum].endRow - _lineNum : ""; //如果是合并单元格的元素 则将endRow - _lineNum; } else if (row < _start) {//如果不是 temp[row] = _cellCol[row]; } } _cellData[k] = temp; } if (_mergeArr.length) { _mergeArr.forEach(function (info) { U.MD.O.E.dataChange.merge(info, _taskId); }); } var _rowDataChange = _rowData.change, //获取数据表中 所有被改变高度的 行版信息 _temp = {}, _rowChange; for (var k in _rowDataChange) { _rowChange = _rowDataChange[k]; //该行板的所有被改动的行数据 if (k < _start) { //如果大于结束行 则将该行下面的所有的数字信息 - 被删除的行 _temp[k] = _rowChange; } else if (k > _end) { _temp[(+k) - _lineNum] = _rowChange; } } /* 该处for循环是修改数据中行版的行数 */ _rowData.change = _temp; _rowData.num = _rowData.num - _lineNum; //行板数量 = 行板数量 - 删除行的数量 }; /* * 添加列数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.addCol = function (content, taskId) { var _content = content, _taskId = taskId || U.MD.O.E.taskId, _excelData = U.MD.O.E.data[_taskId], _colData = _excelData.column, _cellData = _excelData.cell, _start = _content.start, //被选中的第一列 _sizeChange = _content.sizeChange, //添加的列的宽度 _colNums = _content.colNums, //所添加的列数 _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合 _cellCol, _temp = {}; if (_mergeArr.length) { _mergeArr.forEach(function (info) { _cellData[info.col][info.row].endCol = _cellData[info.col][info.row].endCol + _colNums; }); } for (var k in _cellData) { _cellCol = _cellData[k]; if (k > _start) { _temp[+(k) + _colNums] = _cellCol; var _temp2 = _temp[(+k) + _colNums]; for (var i in _temp2) { _temp2[i].endCol ? _temp2[i].endCol = _temp2[i].endCol + _colNums : ""; //如果是合并单元格的元素 则将endCol + _colNums; } } else { _temp[k] = _cellCol; } } _excelData.cell = _temp; var _colDataChange = _colData.change, //获取数据表中 所有被改变宽度的 列版信息 _temp = {}, _colChange; for (var k in _colDataChange) { _colChange = _colDataChange[k]; //该列板的所有被改动的列数据 if (k > _start) { _temp[(+k) + _colNums] = _colChange; } else { _temp[k] = _colChange; } } /* 该处for循环是修改数据中行版的行数 */ _colData.change = _temp; if (_sizeChange) { for (var i = 1; i <= _colNums; i++) { _colData.change[_start + i] = _sizeChange; } } _colData.num = _colData.num + _colNums; //列板数量 = 列板数量 + 添加列的数量 }; /* * 删除列数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.delCol = function (content, taskId) { var _content = content, _taskId = taskId || U.MD.O.E.taskId, _excelData = U.MD.O.E.data[_taskId], _colData = _excelData.column, _cellData = _excelData.cell, _start = _content.start, //被选中的第一行 _end = _content.end, //被选中的最后一行 _colNums = _content.colNums, //所删除的列数 _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合 _cellCol, _temp = {}; for (var k in _cellData) { _cellCol = _cellData[k]; if (k > _end) {//判断是否为合并数据 _temp[+(k) - _colNums] = _cellCol; var _temp2 = _temp[(+k) - _colNums]; for (var i in _temp2) { _temp2[i].endCol ? _temp2[i].endCol = _temp2[i].endCol - _colNums : ""; //如果是合并单元格的元素 则将endCol - _colNums; } } else if (k < _start) { _temp[k] = _cellCol; } } _excelData.cell = _temp; if (_mergeArr.length) { _mergeArr.forEach(function (info) { //info为[{单元格1,单元格2},{单元格1,单元格2}] U.MD.O.E.dataChange.merge(info, _taskId); }); } var _colDataChange = _colData.change, //获取数据表中 所有被改变宽度的 列版信息 _temp = {}, _colChange; for (var k in _colDataChange) { _colChange = _colDataChange[k]; //该列板的所有被改动的列数据 if (k < _start) { //如果大于结束列 则将该列下面的所有的数字信息 - 被删除的列 _temp[k] = _colChange; } else if (k > _end) { _temp[(+k) - _colNums] = _colChange; } } /* 该处for循环是修改数据中行版的行数 */ _colData.change = _temp; _colData.num = _colData.num - _colNums; //列板数量 = 列板数量 - 删除列的数量 }; /* * 合并单元格数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.merge = function (content, taskId) { var _content = content, //获取内容 _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _cellData = _excelData.cell, //获取行列数据 _cellColList = _cellData[_content.col]; //获取修改列数 if (content.row === content.endRow && content.col === content.endCol) {//判断是否为跨行跨列内容 _cellData[_content.col][_content.row].endRow = ""; //修改对应内容 _cellData[_content.col][_content.row].endCol = ""//修改对应内容 return; } if (!_cellColList) {//判断是否为跨列 _cellColList = _cellData[_content.col] = {}; //修改对应内容 } if (!_cellColList[_content.row]) {//判断是否为跨行 _cellColList[_content.row] = {}; //修改对应内容 } _cellColList[_content.row].innerHTML = _content.content; //修改对应内容 _cellColList[_content.row].cssText = _content.cssText; //修改对应内容 _cellColList[_content.row].endRow = _content.endRow; //修改对应内容 _cellColList[_content.row].endCol = _content.endCol; //修改对应内容 }; /* 拆分单元格 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.splitCells = function (content, taskId) { var _content = content, //获取内容 _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _cellData = _excelData.cell, //获取行列数据 _cell = _cellData[_content.col][_content.row]; //需要拆分的单元格 _cell.endRow = ""; _cell.endCol = ""; }; /* * 行板拉伸数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.rowExpanding = function (content, taskId) { var _content = content, //获取内容 _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _rowData = _excelData.row; //获取行列数据 _content.forEach(function (data) { var _rowNum = data.rowName, //拉伸行的位置 (数字) _rowHeight = data.height; //被拉伸后的宽度 _rowData.change[_rowNum] = _rowHeight; }); }; /* * 列板拉伸数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.colExpanding = function (content, taskId) { var _content = content, //获取内容 _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _colData = _excelData.column; //获取该工作表的 列的数据 _content.forEach(function (data) { var _colNum = data.colName, //拉伸行的位置 (数字) _colWidth = data.width; //被拉伸后的宽度 _colData.change[_colNum] = _colWidth; }); }; /* * 图片插入数据保存 * content 需要保存的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.img = function (content, taskId) { var _content = content, //获取内容 _taskId = taskId || U.MD.O.E.taskId, //获取全局变量 _excelData = U.MD.O.E.data[_taskId], //获取全局变量 _imgData = _excelData.img; _imgData.push(content); }; /* * 失焦数据保存 * content 需要加入或修改的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.blur = function (content, taskId) { var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据 _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据 _cellData = _excelData.cell, //获取该数据里的单元格数据 _content = content; //获取需要保存的json数据 _content.forEach(function (data) { var _text = data.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据 _cellColList = _cellData[data.col], //获取该数据里的所有列 _cell; if (!_cellColList) { //如果列不存在 则创建一个列 _cellColList = _cellData[data.col] = {}; } if (!_cellColList[data.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据 _cellColList[data.row] = {}; _cellColList[data.row].cssStyle = {}; //css样式 } _cell = _cellColList[data.row]; //获取该单元格的数据 (json) data.content ? _cell.innerHTML = data.content : ""; //修改该单元格的innerHTML if (data.attr) { //如果存在样式的话 try { _cell.cssStyle[data.attr] = data.value; if (!data.value) { delete _cell.cssStyle[data.attr] } } catch (e) { console.log(e); } } var cssLen = U.MD.O.E.jsonLen(_cell.cssStyle); if (data.clearStyle && !cssLen) { //如果需要清除所有样式的话 data.cssStyle = {}; data.clearStyle = false; } if (((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) && !(cssLen)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 并且没有样式 则删除掉 delete (_cellColList[data.row]); } }) }; /* *修改边框样式数据保存 * content 需要加入或修改的json数据 * taskId 工作表id 可填可不填 */ U.MD.O.E.dataChange.setBorder = function (content, taskId) { var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据 _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据 _cellData = _excelData.cell, //获取该数据里的单元格数据 _content = content; //获取需要保存的json数据 _content.forEach(function (data) { var _text = data.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据 _cellColList = _cellData[data.col], //获取该数据里的所有列 _cell; if (!_cellColList) { //如果列不存在 则创建一个列 _cellColList = _cellData[data.col] = {}; } if (!_cellColList[data.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据 _cellColList[data.row] = {}; _cellColList[data.row].cssStyle = {}; //css样式 } _cell = _cellColList[data.row]; //获取该单元格的数据 (json) data.content ? _cell.innerHTML = data.content : ""; //修改该单元格的innerHTML if (data.attr && data.br) { //如果存在样式的话 try { _cell.cssStyle[data.br] = data.value; if (!data.value) { delete _cell.cssStyle[data.attr] } } catch (e) { console.log(e); } } if (data.attr && data.bb) { try { _cell.cssStyle[data.bb] = data.value; if (!data.value) { delete _cell.cssStyle[data.attr] } } catch (e) { console.log(e); } } var cssLen = U.MD.O.E.jsonLen(_cell.cssStyle); if (data.clearStyle && !cssLen) { //如果需要清除所有样式的话 data.cssStyle = {}; data.clearStyle = false; } if (((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) && !(cssLen)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 并且没有样式 则删除掉 delete (_cellColList[data.row]); } }); } /* * excel保存 * diskinfo 1473的桌面信息 */ U.MD.O.E.Save = function (diskinfo) { if (!top.U.MD.U.L.isLogin(function (userinfo) { U.MD.O.E.userInfo = userinfo; })) { var _isftp, _isgroupuser, _uid = U.MD.O.E.userInfo.userid, _el = $(".U_MD_O_E_excelBox")[0], //excel编辑区域 _fileinfo = U.MD.O.E.fileinfo, //文件信息 _fileid = _fileinfo.UserDirectoryID, //文件ID _name = top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].value, //文件名称 _html = _el.innerHTML.escapeQuotes(), //内容 _jsonData = JSON.stringify(U.MD.O.E.data); //需要保存的json数据 // console.log(11); var _directoryid = _fileinfo.UserDirectoryID; //目录id if (_fileinfo.UserDirectoryID && _fileinfo.UserId && _fileinfo.UserallDirectoryName) { //如果是已经保存到数据库的文档,那么直接保存内容 top.U.A.Request(US.AUTH, ["SaveFileContent", U.MD.O.E.userInfo.userid, _fileid, _jsonData, _name], function (r) { console.log(r); //U.MD.O.E.fileinfo.UsOffice = _jsonData; //console.log(U.MD.O.E.fileinfo.UsOffice); U.Alert("保存成功"); }, (['', _el])); //保存到数据库 } else { /*如果不是数据库的文档(没有存到云盘里)*/ top.U.MD.DK.VW.chosenSaveFile('ue', _directoryid, _name, function (fileinfo) { top.U.A.Request(US.AUTH, ["SaveFileContent", U.MD.O.E.userInfo.userid, _fileid, _jsonData, fileinfo.UserallDirectoryName], function (r) { //U.MD.O.E.fileinfo.UsOffice = _jsonData; //console.log(U.MD.O.E.fileinfo.UsOffice); //console.log($(".U_MD_O_E_floatBtn")[0]); U.Alert("保存成功"); }); //保存到数据库 }); // if (top.U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//此函数:判断是否有添加网盘的权限(新建工作表权限) // } // else { U.Alert("无权限访问此工作表"); }; } } } //#endregion //#region 页面生成 /** * 加载excel的内容处理 * @param {object} 文档信息 * @param {object} 登录用户信息 * */ U.MD.O.E.LoadContent = function (fileid, fileinfo) { U.MD.O.E.initExcel(fileinfo); //查看文件 } /** * 初始化Excel打开 * @param {object} 文档信息 * */ U.MD.O.E.initExcel = function () { var _content = ""; U.MD.O.E.printExcel(); //打印表格 U.MD.O.E.otherFun(); //加载控件 } /** * 打印excel,把excel展示出来 * @param {object} 文档信息 * */ U.MD.O.E.printExcel = function (excelobj) { //底部任务栏的处理 var _excel = U.MD.O.E, _pageobj, _rowandrank; _excel.printTask(); //打印工作表 _excel.printColBoard(U.MD.O.E.colBoardNum, {}); //打印上排板 _excel.printRowBoard(U.MD.O.E.rowBoardNum, {}); //打印左排版 _excel.printTable(); //打印所有单元格 _excel.focusInit(); //聚焦元素初始化 } /* * 聚焦元素初始化(添加事件) */ U.MD.O.E.focusInit = function () { var _editorBox = $("#U_MD_O_E_editorBox")[0], //聚焦元素里的编辑元素 _focusBox = $("#U_MD_O_E_focusBox")[0]; //聚焦元素 U.MD.O.E.BC.modifyFocusSize(1, 1, 1, 1); //默认初始位置 _focusBox.style.background = ""; _focusBox.style.zIndex = "1"; $("#POS_1_1").addClass("U_MD_O_E_cellCheckd"); _editorBox.focusEl = $("#POS_1_1")[0]; /*---------以上默认单元格聚焦第一个---------*/ U.UF.E.picture.stretch($('.U_MD_O_E_excelBox')[0]); $('.U_MD_O_E_excelBox').bind({//给袁角添加聚焦事件 click: function (e) { if (e.target.tagName == "IMG") {//判断是否为图片,如果是,显示拉伸框,加入图片编辑 $('.U_MD_O_E_excelBox')[0].imgStretch.img = e.target; $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.upimg = e; U.UF.E.picture.stretch.setPosition($('.U_MD_O_E_excelBox')[0].imgStretch, e); $('.U_MD_O_E_excelBox')[0].focus(); if (e.target == $(".U_MD_O_E_addTask_img")[0] || e.target == $(".U_MD_O_E_floatBtn")[0]) { $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.style.display = "none"; //影藏拉伸框 } } else { $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.style.display = "none"; //影藏拉伸框 } } }); //绑定拖拽事件 U.MD.O.E.BC.blur(); // 添加失焦时函数 U.MD.O.E.BC.focusDbClick(); //单元格双击编辑功能 U.MD.O.E.BC.editorKeyEvent(); //编辑器的键盘事件编写 } /* * 重新打印数据的单元格 * @param {json} 载入表格的内容 * @param {boolean} 判断是否为站点视图加载 */ U.MD.O.E.rePrintExcel = function (data, datr) { var _excel = U.MD.O.E, //获取全局变量 _data = data || U.MD.O.E.data[U.MD.O.E.taskId], //获取全局变量 _dataRow = _data.row, //获取行数 _dataCol = _data.column, //获取列数 _dataCell = _data.cell, //获取修改内容 _dataImg = _data.img; //获取图片内容 $(".U_MD_O_E_rowBoard")[0].innerHTML = ""; //初始化对应内容 $(".U_MD_O_E_colBoard")[0].innerHTML = ""; //初始化对应内容 $(".U_MD_O_E_cellBox")[0].innerHTML = ""; //初始化对应内容 if (datr) {//判断是否为站点视图,如果是 _excel.printColBoard(_dataCol.num, _dataCol, datr); //打印上排板 _excel.printRowBoard(_dataRow.num, _dataRow, datr); //打印左排版 _excel.printTable(_dataCell, datr); //打印单元格 _excel.printImg(_dataImg, datr); //打印图片 这个必须放在打印单元格后面 } else {//如果不是 _excel.printColBoard(_dataCol.num, _dataCol); //打印上排板 _excel.printRowBoard(_dataRow.num, _dataRow); //打印左排版 _excel.printTable(_dataCell); //打印单元格 _excel.focusInit(); //聚焦元素初始化 _excel.printImg(_dataImg); //打印图片 这个必须放在打印单元格后面 } } /** * 打印横排 * @param {colnum} 列板的数量 * @param {colBoardInfo} 列板需要修改的信息 * @param {boolean} 判断是否为站点视图加载 * */ U.MD.O.E.printColBoard = function (colnum, colBoardInfo, data) { //_colBoard = $$("div", { className: "rowBox" }, _excelBox), var _excel = U.MD.O.E, //获取全局变量 _excelBox = $(".U_MD_O_E_excelBox")[0], //获取excel元素 _colBoard = $(".U_MD_O_E_colBoard")[0], //获取横排元素 _checkAll = $$("div", { className: "U_MD_O_E_checkAll" }, _colBoard), //创建div对象 _img = $$("img", { "onerror": U.MD.C.imgError, src: "http://coffice.1473.cn/Controls/Office/Excel/img/%E5%85%A8%E9%80%89.png" }, _checkAll), //创建图片对象 _frag = $$("frag"), //创建一个对象 i, _column, _name, _allWidth = 45, //横排的总宽度 45是全选按钮的宽度 _colWidth = 136, //列板的默认宽度暂时是136px _newWidth, _colBox = $$("div", { className: "U_MD_O_E_colBoardBox", style: { position: "relative", float: "left" } }, _frag), //创建div对象 _colCheckdEl = $$("div", { className: "U_MD_O_E_colCheckdEl", style: { position: "absolute" } }, _colBox), //创建div对象 _len = colnum; for (i = 1; i <= _len; i++) {//设置循环,开始创建横排的每一排 _column = $$("div", { className: "U_MD_O_E_column" }, _colBox); //创建元素 $(_column).eAttr("colname", i); //修改内容 _name = U.MD.O.E.fromCharCode(i); //修改内容 _column.innerText = _name; //修改内容 _newWidth = _colWidth; //修改内容 if (!data) {//判断是否为站点视图,如果不是 _colRule = $$("div", { className: "U_MD_O_E_colRule" }, _column); _colRule.style.cssText = "margin-left:-3px;position: absolute;top:0px;height: 100%;width: 6px;cursor: e-resize"; U.MD.O.E.BC.colExpanding(_colRule); //添加拉伸功能 U.MD.O.E.BC.cBoardChecked(_column); //添加点击 拖拽功能 _colRule.style.left = (_newWidth - 1) + "px"; } /*------------------以上是默认值 定死的------------------*/ if (colBoardInfo.change && colBoardInfo.change[i]) { _newWidth = colBoardInfo.change[i] } _column.style.width = _newWidth + "px"; //修改内容 _allWidth += _newWidth; //修改内容 } _colBoard.style.width = _allWidth + "px"; //修改内容 _colBoard.appendChild(_frag); //元素添加进去 if (!data) { _excel.rightClick(_colBoard, "colBoard"); //添加右键 } } /** * 打印竖排 * @param {number} 行数据 * @param {object} 行内容 * @param {boolean} 判断是否为站点视图加载 * */ U.MD.O.E.printRowBoard = function (columnnum, rowBoardInfo, data) { //_rowBoard = $$("div", { className: "colBox" }, _excelBox), var _excel = U.MD.O.E, //获取全局变量 _excelBox = $(".U_MD_O_E_excelBox")[0], //获取excel对象 _rowBoard = $(".U_MD_O_E_rowBoard")[0], //获取行对象 _rowCheckdEl, _frag = $$("frag"), //创建元素 i, _row, _rowHeight = _excel.rowBoardHeight, _newHeight, _len = columnnum, _rowRule; if (!data) {//判断是否为站点载入,如果不是 _rowCheckdEl = $$("div", { className: "U_MD_O_E_rowCheckdEl", style: { position: "absolute" } }, _rowBoard); //创建div } for (i = 1; i <= _len; i++) {//创建循环,开始循环创建元素 _row = $$("div", { className: "U_MD_O_E_row" }, _frag); //创建div $(_row).eAttr("rowname", i); //修改内容 _row.innerText = i; //修改内容 _row.style.lineHeight = "22px"; //修改内容 _newHeight = _rowHeight; //修改内容 if (!data) {//判断是否为站点视图,如果不是 _rowRule = $$("div", { className: "U_MD_O_E_rowRule" }, _row); _rowRule.style.cssText = "margin-top:-3px;position: absolute;height: 6px;width: 100%;cursor: n-resize"; U.MD.O.E.BC.rowExpanding(_rowRule); U.MD.O.E.BC.rBoardChecked(_row); //添加点击 拖拽功能 _rowRule.style.top = _newHeight + "px"; } /*------------------以上是默认值 定死的------------------*/ if (rowBoardInfo.change && (rowBoardInfo.change[i])) { _newHeight = rowBoardInfo.change[i]//修改内容 } _row.style.height = _newHeight + "px"; //修改内容 } _rowBoard.appendChild(_frag); //添加进对象中 if (!data) { _excel.rightClick(_rowBoard, "rowBoard"); //添加右键 } } /* * 循环打印单元格 * data 被合并单元格 或者 有文字单元格的json数据 * @param {boolean} 判断是否为站点视图加载 */ U.MD.O.E.printTable = function (data, bonn) { //_cellBox = $$("div", { className: "cellBox" }, _excelBox), var _focusBoxHTML = "
\n" + /*聚焦元素*/ "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
", //初始化聚焦内容 _excel = U.MD.O.E, //获取全局变量 _excelBox = $(".U_MD_O_E_excelBox")[0], //获取表格对象 _cellBox = $(".U_MD_O_E_cellBox")[0], //获取单元格对象 _columnList = $(".U_MD_O_E_column"), //获取列对象 _rowList = $(".U_MD_O_E_row"), //获取行对象 _width, _height, _colLen = _columnList.length, _rowLen = _rowList.length, _frag = $$("frag"), i, j, cell, _left = 0, _top = 0, _colName, _rowName; if (!bonn || !data) {//判断是否为载入站点视图,如果不是 _cellBox.innerHTML = _focusBoxHTML; //加载聚焦对象 } _excelBox.worksheetid = "e3979682e-cb7a-8db7-a3b3-88233ea32e24" for (i = 0; i < _colLen; i++) { //遍历列 _colName = _columnList[i].colname; _width = _columnList[i].offsetWidth; //对应列板的宽 for (j = 0; j < _rowLen; j++) { //遍历行 _height = _rowList[j].offsetHeight; //修改内容 _rowName = _rowList[j].rowname; //修改内容 _cell = $$("div", { className: "U_MD_O_E_cell" }, _frag); //创建div对象 _cell.style.width = _width + "px"; //修改内容 _cell.style.height = _height + "px"; //修改内容 _cell.style.left = _left + "px"; //修改内容 _cell.style.top = _top + "px"; //修改内容 _cell.id = "POS_" + _colName + "_" + _rowName; //修改内容 $(_cell).eAttr("col", _colName); //修改内容 $(_cell).eAttr("row", _rowName); //修改内容 if (!bonn || !data) {//判断是否为载入站点视图,如果不是 U.MD.O.E.BC.Focus(_cell); //添加单元格聚焦事件 U.MD.O.E.BC.dragCheckd(_cell); //添加拖拽选中事件 } _top += _rowList[j].offsetHeight; //修改内容 } _left += _columnList[i].offsetWidth; //修改内容 _top = 0; } _cellBox.appendChild(_frag); //添加进对象内 if (!bonn || !data) {//判断是否为载入站点视图,如果不是 _excel.rightClick(_cellBox, "cellBox"); //添加右键 } var col, row, _innerHTML, _colCell, _endCell, _cellInfo, _cell; if (data) {//判断是否为有数据的加载,如果是 for (var col in data) { var _colCell = data[col]; //col列下的所有单元格 for (var row in _colCell) { _cellInfo = _colCell[row]; //获取内容 _cell = $(_cellBox).find("#POS_" + col + "_" + row)[0] //col列下 第row行单元格 _cellInfo.innerHTML ? _cell.innerHTML = _cellInfo.innerHTML : ''; if (_cellInfo.endRow) { //如果存在endRow 则表示此单元格是合并的单元格 _endCell = $(_cellBox).find("#POS_" + _cellInfo.endCol + "_" + _cellInfo.endRow)[0]; _excel.RC.mergeCells(_cell, _endCell, true); //修改内容 } if (U.MD.O.E.jsonLen(_cellInfo.cssStyle)) { //如果存在css样式 U.MD.O.E.TL.jsonSetStyle(_cell, _cellInfo.cssStyle); //修改内容 } _cellInfo.cssText ? _cell.style.cssText = _cellInfo.cssText : ""; //修改内容 } } } } /* * 打印图片 * dataArr 图片的数组json * @param {boolean} 判断是否为站点视图加载 */ U.MD.O.E.printImg = function (dataArr, datr) { var _img; dataArr.forEach(function (data) {//循环数据 _img = U.MD.O.E.createImg(data.src, data); //根据data创建相对应的图片 if (!datr) {//判断是否为站点加载,如果不是 U.MD.O.E.BC.pictureControl(_img); //加载拖拽事件 } }) } /** * 动态创建字体下拉框 * */ U.MD.O.E.createSelection = function () { //$(".U_MD_O_H_head_navigation_Title")[0].focus(); var els = $('div[datafont]'), /*获取字体颜色的div*/ csstext = "font-weight: normal;white-space: pre; min-height: 1.2em; padding:6px 4px; cursor: pointer;background:#fff"; /*下拉框样式*/ U.MD.UI.editor.Select({ '宋体': '宋体', 'sans-serif': 'sans-serif', '微软雅黑': '微软雅黑', '楷体': '楷体', '黑体': '黑体', '隶书': '隶书', 'andale mono': 'andale mono', 'arial black': 'arial black' }, { "className": "U_MD_O_E_Editor_head_features_ul_s", style: { width: '100%', height: '20px', border: 'none' } }, function (v) { U.MD.O.E.TL.setStyle({ 'fontFamily': v }) }, els[0]) /*创建下拉框*/ U.MD.UI.editor.Select({ '12': '12号', '14': '14号', '16': '16号', '18': '18号', '20': '20号', '24': '24号' }, { "className": "U_MD_O_E_Editor_head_features_ul_s", style: { width: '100%', height: '20px', border: 'none' } }, function (v) { U.MD.O.E.TL.setStyle({ 'fontSize': v + 'px' }) }, els[1])/*创建下拉框*/ } /** * 插入图片 * @param input 文件框 */ U.MD.O.E.upload = function (input) { U.UF.UP.inputUpload([input], 'http://disk.1473.cn/USUpfile.ashx?typename=UseStudioEditor&UserId=FA92AAC5-4134-449F-9659-0DC12F4F68E9', function (r) { var _src = 'http://fs.1473.cn/' + r.value[0], _img; _img = U.MD.O.E.createImg(_src); //创建图片 _img.onload = function () { var _data = {//创建对象储存内容 src: _src, left: _img.offsetLeft, top: _img.offsetTop, width: _img.offsetWidth, height: _img.offsetHeight, type: "img" }; console.log(_data); //打印出来 U.MD.O.E.dataChange(U.MD.O.E.excelInfo("img", _data)); //合并时 保存数据 U.MD.O.E.BC.pictureControl(_img); //添加拖拽事件 } }); //调用活套交互方法,访问的同时加入图片 } /** * 网盘插入图片 */ U.MD.O.E.NDimg = function () { if (!top.U.MD.U.L.isLogin()) { //判断是否登陆 top.U.MD.DK.VW.choseFile(function (data) { var _src = 'http://fs.1473.cn/' + data.UserallDirectoryName, _img; _img = U.MD.O.E.createImg(_src); //创建图片 _img.onload = function () { var _data = { src: _src, left: _img.offsetLeft, top: _img.offsetTop, width: _img.offsetWidth, height: _img.offsetHeight, type: "img" }; console.log(_data); U.MD.O.E.dataChange(U.MD.O.E.excelInfo("img", _data)); //合并时 保存数据 U.MD.O.E.BC.pictureControl(_img); //添加拖拽事件 } window.focus(); }, "jpg"); } } /* * createImg 新建图片 * src 图片路径 * data (json) 如果存在 则通过该数据创建图片 */ U.MD.O.E.createImg = function (src, data) { var _cellBox = $(".U_MD_O_E_cellBox")[0], //获取单元格div总对象 _img = $$("img", { "onerror": U.MD.C.imgError, src: src }, _cellBox), //创建img对象 _focusBox = $("#U_MD_O_E_focusBox")[0]; //获取表格对象 _img.style.position = "absolute"; //修改内容 _img.style.maxWidth = "2000px;"//修改内容 _img.style.maxHeight = "2000px;"//修改内容 if (data) {//判断是否为有数据加载,如果是 _img.width = data.width; //修改内容 _img.height = data.height; //修改内容 _img.style.left = data.left + "px"; //修改内容 _img.style.top = data.top + "px"; //修改内容 } else {//如果不是 _img.style.left = _focusBox.style.left; //修改内容 _img.style.top = _focusBox.style.top; //修改内容 } return _img; //返回img对象 } /* * changeImg 拖拽拉伸图片 * data (json) 如果存在 则通过该数据创建图片 */ U.MD.O.E.changeImg = function (data) { var _Allimg = $(".U_MD_O_E_cellBox")[0].getElementsByTagName("img"); //获取单元格中所有img对象数据 for (var i = 0; i < _Allimg.length; i++) {//循环 _Allimg[i].index = i; //修改内容 if (data) {//判断是否为有数据拉伸,如果是 _Allimg[i].width = data.width; //修改内容 _Allimg[i].height = data.height; //修改内容 _Allimg[i].style.left = data.left + "px"; //修改内容 _Allimg[i].style.top = data.top + "px"; //修改内容 } } return _Allimg[0]; //返回json数据 } /** * 添加右键 * element 需要添加右键的元素 * type 为添加右键元素的类型 */ U.MD.O.E.rightClick = function (element, type) { switch (type) { case "cellBox": //判断是否为单元格右键 U.MD.O.E.rightClick.cellBox(element); break; case "colBoard": //判断是否为行右键 U.MD.O.E.rightClick.colBoard(element); break; case "rowBoard": //判断是否为列右键 U.MD.O.E.rightClick.rowBoard(element); break; case "taskBar": //判断是否为工作表右键 U.MD.O.E.rightClick.taskBar(element); break; } $(document).bind('mousedown', function (e) {//设置mousedown事件 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }) }; /* * 单元格模块添加右键 * element 需要添加右键的 元素 */ U.MD.O.E.rightClick.cellBox = function (element) { var _excel = U.MD.O.E, //获取全局变量 _cellBox = element; //获取元素 var _addLine = {//添加行创建 innerHTML: '添加行 行', onclick: function () { var _input = $("#lineNum")[0], _line = _input.value, _cellarr = _excel.cellCheckd(), //以数组的形式返回首尾选中的单元格 _cellLast = _cellarr[1]; //结束单元格 _excel.RC.addLine(_cellLast, +_line); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _addCol = {//添加列创建 innerHTML: '添加列 列', onclick: function () { var _input = $("#colNum")[0], _col = _input.value, _endCell = _excel.cellCheckd()[1]; _excel.RC.addCol(_endCell, +_col); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _removeLine = {//添加行删除 innerHTML: '删除行', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1], _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据 _rmlinenum = _checkeddata.maxy - _checkeddata.miny + 1; //所删除的行数 _excel.RC.removeLine(_startCell, _endCell); var _data = { checkeddata: _checkeddata, rmlinenum: _rmlinenum, type: "removeLine" }; _excel.BC.reSelectCell(_data); //重选单元格 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _removeCol = {//添加列删除 innerHTML: '删除列', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1], _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据 _rmcolnum = _checkeddata.maxx - _checkeddata.minx + 1; //所删除的列数 _excel.RC.removeCol(_startCell, _endCell); var _data = { checkeddata: _checkeddata, rmcolnum: _rmcolnum, type: "removeCol" }; _excel.BC.reSelectCell(_data); //重选单元格 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _copy = {//添加复制 innerHTML: '复制', onclick: function () { _excel.RC.cellCopy(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _taste = {//添加粘贴 innerHTML: '粘贴', onclick: function () { _excel.RC.cellTaste(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _cut = {//添加剪切 innerHTML: '剪切', onclick: function () { _excel.RC.cellCut(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _mergeCells = {//添加合并 innerHTML: '合并单元格', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1]; _excel.RC.mergeCells(_startCell, _endCell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _splitCells = {//添加拆分 innerHTML: '拆分单元格', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.splitCells(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearContent = {//添加清除内容 innerHTML: '清除内容', onclick: function () { var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); _excel.RC.clearContent(_cellList); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearStyle = {//添加清除格式 innerHTML: '清除格式', onclick: function () { _excel.TL.clearStyle(); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertLink = {//添加插入链接 innerHTML: '插入链接', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.insertLink(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertImg = {//添加插入图片 innerHTML: '插入图片', onclick: function () { return $("#U_MD_O_E_Editor_head_features_ul_img")[0].click(); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _arr = [_addLine, _addCol, _removeLine, _removeCol, _copy, _taste, _cut, _mergeCells, _splitCells, _clearContent, _clearStyle, _insertLink, _insertImg,]; $(_cellBox).bind('contextmenu', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 U.UF.EV.stopDefault(e); U.UF.EL.rightMenu(_arr, _cellBox); $(this).find('input').bind('keypress', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keydown', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keyup', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('click', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); }); $(_cellBox).bind('mousedown', function (e) { $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }); } /* * 工作表添加右键 * taskEl 每一格的工作表 */ U.MD.O.E.rightClick.taskBar = function (taskEl) { var _excel = U.MD.O.E; var _delete = {//添加删除 innerHTML: '删除', onclick: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 _excel.RC.taskDelete(taskEl); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _reName = {//添加重命名 innerHTML: '重命名', onclick: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 _excel.RC.taskRename(taskEl); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _copy = {//添加复制 innerHTML: '复制', onclick: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 _excel.RC.taskCopy(taskEl); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _arr = [_delete, _reName, _copy]; $(taskEl).bind('contextmenu', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 U.UF.EV.stopDefault(); U.UF.EL.rightMenu(_arr, taskEl); }); $(taskEl).bind('dblclick', function () { U.MD.O.E.RC.taskRename(this); }) $(taskEl).bind('mousedown', function (e) { $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }); } /* * 列板模块添加右键 * element 需要添加右键的 元素 */ U.MD.O.E.rightClick.colBoard = function (element) { var _excel = U.MD.O.E, _colBoard = element; var _addCol = {//添加列增加 innerHTML: '添加列 列', onclick: function () { var _input = $("#colNum")[0], _col = _input.value, _endCell = _excel.cellCheckd()[1]; _excel.RC.addCol(_endCell, +_col); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _removeCol = {//添加列删除 innerHTML: '删除列', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1], _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据 _rmcolnum = _checkeddata.maxx - _checkeddata.minx + 1; //所删除的列数 _excel.RC.removeCol(_startCell, _endCell); var _data = { checkeddata: _checkeddata, rmcolnum: _rmcolnum, type: "removeCol" }; _excel.BC.reSelectCell(_data); //重选单元格 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _copy = {//添加复制 innerHTML: '复制', onclick: function () { _excel.RC.colBoardCopy(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _taste = {//添加粘贴 innerHTML: '粘贴', onclick: function () { _excel.RC.colBoardTaste(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _cut = {//添加剪切 innerHTML: '剪切', onclick: function () { _excel.RC.colBoardCut(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _mergeCells = {//添加合并 innerHTML: '合并单元格', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1]; _excel.RC.mergeCells(_startCell, _endCell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearContent = {//添加清除内容 innerHTML: '清除内容', onclick: function () { var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); _excel.RC.clearContent(_cellList); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearStyle = {//添加清除格式 innerHTML: '清除格式', onclick: function () { var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); _excel.RC.clearStyle(_cellList); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _setWidth = {//添加设置列宽 innerHTML: '设置列宽 px', onclick: function () { var _startCol = _excel.cellCheckd()[0].col, //开始的列数 _endCol = _excel.cellCheckd()[1].col, //结束的列数 _colWidth = $("#colWidth")[0].value; if (_colWidth < 50) { U.Alert("列宽不能低于50像素"); return; } _excel.RC.cBoardsetWidth(_startCol, _endCol, _colWidth); _excel.BC.reSelectCell(); //重新调整聚焦元素的大小 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _hide = {//添加列隐藏 innerHTML: '隐藏列', onclick: function () { var _startCol = _excel.cellCheckd()[0].col, _endCol = _excel.cellCheckd()[1].col; _excel.RC.cBoardHide(_startCol, _endCol); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _cancelHide = {//添加列取消隐藏 innerHTML: '取消隐藏', onclick: function () { var _startCol = _excel.cellCheckd()[0].col, _endCol = _excel.cellCheckd()[1].col; _excel.RC.cBoardCancelHide(_startCol, _endCol); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertLink = {//添加插入链接 innerHTML: '插入链接', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.insertLink(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertImg = {//添加插入图片 innerHTML: '插入图片', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.insertImg(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _arr = [_addCol, _removeCol, _copy, _taste, _cut, _mergeCells, _clearStyle, _clearContent, _setWidth, _hide, _cancelHide, _insertLink, _insertImg]; $(_colBoard).bind('contextmenu', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 U.UF.EV.stopDefault(); U.UF.EL.rightMenu(_arr, _colBoard); $(this).find('input').bind('keypress', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keydown', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keyup', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('click', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); }); $(_colBoard).bind('mousedown', function (e) { $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }); } /* * 行板模块添加右键 * element 需要添加右键的 元素 */ U.MD.O.E.rightClick.rowBoard = function (element) { var _excel = U.MD.O.E, _rowBoard = element; var _addLine = { innerHTML: '添加行 行', onclick: function () {//添加行增加 var _input = $("#lineNum")[0], _line = _input.value, _cellLast = _excel.cellCheckd()[1]; _input.bind('keypress', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); _excel.RC.addLine(_cellLast, +_line); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _removeLine = {//添加行删除 innerHTML: '删除行', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1], _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据 _rmlinenum = _checkeddata.maxy - _checkeddata.miny + 1; //所删除的行数 _excel.RC.removeLine(_startCell, _endCell); var _data = { checkeddata: _checkeddata, rmlinenum: _rmlinenum, type: "removeLine" }; _excel.BC.reSelectCell(_data); //重选单元格 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _copy = {//添加复制 innerHTML: '复制', onclick: function () { _excel.RC.rBoardCopy(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _taste = {//添加粘贴 innerHTML: '粘贴', onclick: function () { _excel.RC.rBoardTaste(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _cut = {//添加剪切 innerHTML: '剪切', onclick: function () { _excel.RC.rBoardCut(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearContent = {//添加清除内容 innerHTML: '清除内容', onclick: function () { _excel.RC.rBoardClearCt(); }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearStyle = {//添加清除格式 innerHTML: '清除格式', onclick: function () { var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); _excel.RC.clearStyle(_cellList); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _mergeCells = {//添加合并 innerHTML: '合并单元格', onclick: function () { var _startCell = _excel.cellCheckd()[0], _endCell = _excel.cellCheckd()[1]; _excel.RC.mergeCells(_startCell, _endCell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _setHeight = {//添加设置行高 innerHTML: '设置行高 px', onclick: function () { var _startRow = _excel.cellCheckd()[0].row, //开始的行数 _endRow = _excel.cellCheckd()[1].row, //结束的行数 _rowHeight = $("#rowHeight")[0].value; if (_rowHeight < 20) { U.Alert("高度不能低于20像素"); return; } _excel.RC.rBoardsetHeight(_startRow, _endRow, _rowHeight); _excel.BC.reSelectCell(); //重新调整聚焦元素的大小 $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _hide = {//添加行隐藏 innerHTML: '隐藏行', onclick: function () { var _startRow = _excel.cellCheckd()[0].row, //开始的行数 _endRow = _excel.cellCheckd()[1].row; //结束的行数 _excel.RC.rBoardHide(_startRow, _endRow); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _cancelHide = {//添加行显示 innerHTML: '取消隐藏', onclick: function () { var _startRow = _excel.cellCheckd()[0].row, //开始的行数 _endRow = _excel.cellCheckd()[1].row; //结束的行数 _excel.RC.rBoardCancelHide(_startRow, _endRow); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertLink = {//添加插入链接 innerHTML: '插入链接', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.insertLink(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _insertImg = {//添加插入图片 innerHTML: '插入图片', onclick: function () { var _cell = _excel.cellCheckd()[0]; _excel.RC.insertImg(_cell); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _clearStyle = {//添加清除格式 innerHTML: '清除格式', onclick: function () { var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); _excel.RC.clearStyle(_cellList); $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }, onmousedown: function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 } }; var _arr = [_addLine, _removeLine, _copy, _taste, _cut, _mergeCells, _clearContent, _clearStyle, _setHeight, _hide, _cancelHide, _insertLink, _insertImg]; $(_rowBoard).bind('contextmenu', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 U.UF.EV.stopDefault(); U.UF.EL.rightMenu(_arr, _rowBoard); $(this).find('input').bind('keypress', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keydown', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('keyup', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); $(this).find('input').bind('click', function (e) { U.UF.EV.stopBubble(e); //阻止冒泡 }); }); $(_rowBoard).bind('mousedown', function (e) { $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素 }); } /* 点击 切换悬浮栏 * button 为 点击的按钮 */ U.MD.O.E.switchBar = function (button) { var _bar = $("#U_MD_O_E_body_left")[0], //获取浮动元素 _display = _bar.style.display; //获取浮动框对象显示对象 if (_display === "block") { //如果是打开 则 改为关闭 button.src = "http://coffice.1473.cn/Controls/Office/Excel/img/浮动按钮收缩.png"; //修改内容 _bar.style.display = "none"; //修改内容 } else { button.src = "http://coffice.1473.cn/Controls/Office/Excel/img/浮动按钮展开.png"; //修改内容 _bar.style.display = "block"; //修改内容 } } /* *数字转成英文 比如1转A 2转B 26转Z 27转AA *num 为 number类型的数字 */ U.MD.O.E.fromCharCode = function (num) { if (num <= 0) return; //如果小于等于0,不运行 var _code, firstNum = Math.floor(num / 26), //获取为几组数据 endNum = num % 26; //获取余数 if (!endNum) endNum = 26; //如果内有,自定校准 if (firstNum === 0 || (num === 26)) {//判断是否为26以内 _code = String.fromCharCode((64 + endNum)); //如果是,直接打印 } else {//如果不是,间接打印 _code = U.MD.O.E.fromCharCode(firstNum) + String.fromCharCode((64 + endNum)); } return _code; } /* * 传入光标要去的节点对象 聚焦 * el 为元素 */ U.MD.O.E.placeCaretAtEnd = function (el) { if (el.collapse) { //如果存在el.collapsed 则是range var range = el; range.collapse(false); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); return; } if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {//判断聚焦的对象是否为空,如果不为空 var range = document.createRange(); //修改聚焦内容 range.selectNodeContents(el); //修改聚焦内容 range.collapse(false); //修改聚焦内容 var sel = window.getSelection(); //修改聚焦内容 sel.removeAllRanges(); //修改聚焦内容 sel.addRange(range); //修改聚焦内容 } else if (typeof document.body.createTextRange != "undefined") {//判断聚焦的可编辑内容是否为空,如果不为空 var textRange = document.body.createTextRange(); //修改聚焦内容 textRange.moveToElementText(el); //修改聚焦内容 textRange.collapse(false); //修改聚焦内容 textRange.select(); //修改聚焦内容 } }; /*在元素后面插入新元素 * el 为插入的总元素 * newEl 为要插入的元素 */ U.MD.O.E.After = function (el, newEl) { var _this = el; var parentEl = _this.parentNode; //获取父级 var child = parentEl.childNodes; //获取子集 var last = child[child.length - 1] || parentEl.lastChild; if (last === _this) {//判断是否可以直接插入,如果可以 parentEl.appendChild(newEl); //调用方法,插入 } else {//如果不可以 parentEl.insertBefore(newEl, _this.nextSibling); //调用方法,插入 } return newEl; //返回插入元素 }; //获取被拖拽选中时的 左上角 和右上角的 单元格 U.MD.O.E.cellCheckd = function () { var _arr = [], _posA, _posB, _checkCell = document.querySelectorAll(".U_MD_O_E_cellCheckd"); //所有被选中的单元格 _checkCell = U.UF.C.toArray(_checkCell); //转成Array类型 _checkCell.sort(function (a, b) { _idA = +(a.id.replace(/[^0-9]/ig, "")); //获取拖拽选中的左上角 _idB = +(b.id.replace(/[^0-9]/ig, "")); //获取拖拽选中的右上角 return _idA - _idB; }); _arr.push(_checkCell[0]); //添加进数据中 _arr.push(_checkCell[_checkCell.length - 1]); //添加进数据中 return _arr; } /* 获取json的数量 * json 要计算的json数据 */ U.MD.O.E.jsonLen = function (json) { var _json = json, //获取数据 _len = 0; //定义计数变量 for (var i in json) { _len++; //开始循环,修改计数变量 } return _len; //返回计数变量 } /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ /* * excel的传入后台的数据结构 * type 为操作数据时类型 * content 为主要数据 */ U.MD.O.E.excelInfo = function (type, content) { return { sendId: U.MD.O.E.fileinfo.UserId, //发送人id receiveId: U.MD.O.E.fileinfo.UserDirectoryID, //文件id excelId type: 'us.excel', //消息类型 messageInfo: { type: type, //"blur", worksheetId: U.MD.O.E.taskId, //工作表id content: content, //修改内容 docId: U.MD.O.E.fileinfo.UserDirectoryID, //excelId pageId: US.pageId //当前文档id 页面 } }; }; /* U.MD.O.W.E.connect 链接后台,并发送请求 */ U.MD.O.E.connect = function () { if (US.userInfo.userid && U.MD.O.E.fileinfo.UserDirectoryID) { //判断用户是否登录 U.A.Request(US.SCOKET, ["login", JSON.stringify({ //发送登录请求 pageId: US.pageId, //页面id userId: US.userInfo.userid, //用户id 不会改变的 userName: US.userInfo.username, //用户名 type: US.systemId //判断是PC 还是 移动 })], U.MD.O.E.pollingAsyn); //回调进 U.MD.O.W.E.pollingAsyn 函数 } U.MD.O.E.addExcel(); }; /* * 发送send请求到后台 * message 发送给后台的数据 */ U.MD.O.E.send = function (message) { U.A.Request(US.SCOKET, ["send", JSON.stringify({ "us.excel": Array.prototype.concat(message) })]); //调用方法,向后台发请求 } /* * 发送addExcel请求到后台 */ U.MD.O.E.addExcel = function () { //添加文档 var post = { excelId: U.MD.O.E.fileinfo.UserDirectoryID, //excel 的 id pageId: US.pageId, //页面id 唯一识别 userId: US.userInfo.userid //用户id }; U.A.Request(US.SCOKET, ["addExcel", JSON.stringify(post)], function (v) { console.log(v.value); }); //调用方法,向后台发请求 }; /* * 文件名修改方法 */ U.MD.O.E.TitleChange = function () { var _fileinfo = U.MD.O.E.fileinfo, //获取全局变量 _name = []; _name[0] = top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].value; //前台修改内容 U.MD.O.E.dataChange(U.MD.O.E.excelInfo("updateTitle", _name)); //调用修改方法 } /* * 文件修改人:15互联网3 周琳恒 * 最后大改日期:2019 04 08 */ //U.MD.O.E.sitePreview = function () { // var _excelinfo = U.MD.O.E.fileinfo; //获取文档信息 // if (_excelinfo.UserDirectoryID && _excelinfo.UserId && _excelinfo.UserallDirectoryName) { //判断文档是否存在 // var _data = U.A.Request("http://cd.1473.cn/php", ["db.1473.cn", "UseStudio_DNS", 'GetDnsInfoByFileId', _excelinfo.UserDirectoryID]).value; //获取该文档的域名 // if (_data.length) { //判断域名是否存在 // window.open('http://' + _data[0].AppId + '.1473.cn/' + _data[0].Domain) //跳转页面 // } else { // var _type = _excelinfo.UserDirectoryExtendType && _excelinfo.UserDirectoryExtendType.toLowerCase(), //获取文档类型 // _callback = { //设置回调接口2 // modifyDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) }, //修改命名后的回调 // addDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) }, //添加域名后的回调 // deleteDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) } //删除域名后的回调 // }; // switch (_type) { //转文档类型字符串 // case 'uw': case 'un': _type = 'word'; break; // case 'ue': _type = 'execl'; break; // default: _type = 'word'; break; // } // top.U.MD.DS.createDefaultDomainInit(_excelinfo, _type, _callback); //调用域名管理中心的接口 // } // } else { // U.MD.O.E.Save(); // } //} //U.MD.O.E.initEditor = function (synergy) { // var _el = $(".U_MD_O_E_excelBox")[0]; //获取编辑区域的元素 // if (U.MD.O.E.initExcel) { // _el.innerHTML = U.MD.O.E.excelInfo.UsOffice || ""; //编辑器全局区域 // if (_el.innerHTML == "") { // U.UF.E.key.addDelLine(_el); // } // _el.editor.idarr = U.UF.E.key.getLineIdArr(_el); // } else { // U.UF.E.initEditor(_el, synergy ? U.MD.O.E.operationNotice : null, U.MD.O.fileinfo.UsOffice); //初始化编辑区域 // // U.MD.O.W.E.titlestyle();//标题样式 // U.MD.O.E.initExcel = true; // // var _permission = U.MD.O.W.permission; //获取权限 // // if (!_permission.edit) {//判断其有没有编辑权限 // // var _el = $("#U_MD_O_H_wordEditor")[0]; //获取编辑区域的元素 // // _el.contentEditable = false; //如果没有编辑权限,就把编辑区域改为不可编辑 // // } // } //}