Excel.js 98 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274
  1. Namespace.register("U.MD.O.E");
  2. U.MD.O.E.fileinfo;
  3. U.MD.O.E.userinfo;
  4. U.MD.O.E.web; //互联权限
  5. //US是全局变量和定量的使用,统一用parent层的
  6. US = parent.US;
  7. //#region Excel 初始化
  8. /**
  9. * 打开保存数据的Excel
  10. *
  11. * @param {object} 文件信息
  12. * @param {object} 用户信息
  13. */
  14. U.MD.O.E.load = function (fileinfo, userinfo) {
  15. //加载下拉控件
  16. //U.MD.O.E.createSelection();
  17. //加载群居变量
  18. // U.MD.O.E.fileinfo = fileinfo;
  19. // U.MD.O.E.userinfo = userinfo;
  20. var _fileinfo = fileinfo,
  21. _fileid = fileinfo.UserDirectoryID; //文档id
  22. U.MD.O.E.variable(fileinfo, userinfo); //初始化全局变量
  23. U.MD.O.E.getData(); //取数据并加载excel
  24. //U.MD.O.E.connect(); //互联版本
  25. U.MD.O.E.Panel.loadPlayUser(fileinfo); //加载协助人员窗体
  26. U.MD.O.E.Panel.loadOfficeHistory(fileinfo); //加载历史记录
  27. U.MD.O.E.Panel.loadLink(fileinfo); //加载连接分享模板
  28. U.MD.O.E.TL.toolsbind($(".U_MD_O_H_head_mo")[0]); //加载初始链接模块
  29. top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].onblur = function () {
  30. U.MD.O.E.TitleChange(); //设置标题同步事件
  31. }
  32. }
  33. /*
  34. * excel 其他功能函数
  35. */
  36. U.MD.O.E.otherFun = function () {
  37. U.MD.O.E.createSelection(); //创建下拉元素
  38. U.MD.O.E.TL.borderPicker(); //边框选择器
  39. U.MD.O.E.BC.scrollY(); //上下滚动
  40. U.MD.O.E.KE.Control(); //键盘控制单元格事件
  41. U.MD.O.E.TL.toolsbind($('.U_MD_O_H_head_mo')[0]); //给工具栏绑定onresize事件
  42. $(".U_MD_O_E_headInput")[0].focus(); //默认文本框聚焦
  43. U.MD.O.E.BC.cloneCell(); //聚焦元素右下角克隆
  44. U.MD.O.E.TL.borderPicker(); //边框选择器
  45. }
  46. /*
  47. * 获取后台excel数据的方法
  48. */
  49. U.MD.O.E.getData = function () {
  50. var _fileinfo = U.MD.O.E.fileinfo, //获取前台用户数据组
  51. _fileid = _fileinfo.UserDirectoryID, //获取文件id
  52. _permission = U.MD.O.E.permission(); //获取用户权限json
  53. if (_permission.web) { //如果是群文件 協同
  54. parent.U.A.Request(US.SCOKET, ['getExcel', _fileid, US.pageId, U.MD.O.E.userinfo.UserId], U.MD.O.E.AsynLoad); //获取office内容
  55. }
  56. else if (_fileinfo.UserDirectoryID && _fileinfo.UserId && _fileinfo.UserallDirectoryName) { //已入库 则取数据
  57. // parent.U.A.Request(US.AUTH, ["GetFileContent", _fileid], U.MD.O.E.AsynLoad); //开始获取数据
  58. U.A.Request(US.DISK, ["GetFileContent", fileinfo.UserDirectoryID], function (r) {
  59. //获取word内容
  60. if (r.value && r.value.UsOffice !== undefined && r.value.UsOffice != null) {
  61. U.MD.O.E.AsynLoad(r);
  62. }
  63. //如果内容不存在则去office系统中获取
  64. else {
  65. U.A.Request("http://office.1473.cn/Officetohtml.ashx", ["Open", fileinfo.UserDirectoryExtendType, fileinfo.UserFilesServerName], function (r) {
  66. if (r.value.value != undefined) {
  67. var _table = $$("div");
  68. _taskId = Guid.newGuid();
  69. fileinfo.UsOffice = {}; //定义初始文档对象
  70. fileinfo.UsOffice[_taskId] = {/* 工作表 */
  71. column: { //列板 A-Z
  72. change: {}, //被改变宽度的 列
  73. num: 200 //列的数量
  74. },
  75. row: { //行板 1-200
  76. change: {}, //被改变高度的 行
  77. num: 200 //初始化行的数量 暂时为200
  78. },
  79. cell: {}, //右内容的单元格 和 被合并的单元格
  80. img: [],
  81. taskName: "工作表1",
  82. titie: ""
  83. }
  84. _xlsxData = JSON.parse(r.value.value);
  85. for (var i = 0; i < _xlsxData[0].length; i++) {
  86. for (var j in _xlsxData[0][i]) {
  87. _col = j.replace(/^Column/, '');
  88. _col = parseInt(_col);
  89. if (fileinfo.UsOffice[_taskId].cell[_col]) {
  90. fileinfo.UsOffice[_taskId].cell[_col][i + 1] = _xlsxData[0][i][j];
  91. } else {
  92. fileinfo.UsOffice[_taskId].cell[_col] = {};
  93. fileinfo.UsOffice[_taskId].cell[_col][i + 1] = _xlsxData[0][i][j];
  94. }
  95. }
  96. }
  97. U.MD.O.E.AsynLoad({ "value": fileinfo.UsOffice });
  98. }
  99. else {
  100. U.MD.O.E.AsynLoad(r);
  101. }
  102. });
  103. }
  104. });
  105. }
  106. else { //无入库时
  107. U.MD.O.E.initExcel(); //初始化内容
  108. }
  109. }
  110. /*
  111. 访问数据库后的回调函数
  112. */
  113. U.MD.O.E.AsynLoad = function (r) {
  114. var _data; //定义变量
  115. if (r.value && r.value.UsOffice !== undefined) {//判断返回值是不是office的json数据
  116. _data = r.value.UsOffice; //如果有,json解析它
  117. } else {//如果没有
  118. _data = r.value; //正常加载
  119. }
  120. if (_data) { //如果获取到了数据
  121. typeof (_data) === "string" ? _data = JSON.parse(_data) : ""; //判断是否为其他json数据,如果是,解析它
  122. U.MD.O.E.data = _data; //修改全局变量
  123. U.MD.O.E.printTask(); //打印工作表
  124. U.MD.O.E.rePrintExcel(); //重新打印表格
  125. U.MD.O.E.otherFun(); //创建下拉,滚动等事件
  126. } else {
  127. U.MD.O.E.initExcel(); //初始化内容
  128. }
  129. }
  130. /*
  131. * 编辑器权限函数
  132. * 返回用户权限json
  133. */
  134. U.MD.O.E.permission = function () {
  135. var _iseditor, //是否可编辑
  136. _isgroup, //群用户
  137. _permission = { //权限
  138. "edit": false, //可编辑权限
  139. "web": false //互联权限
  140. };
  141. if (!U.MD.O.E.fileinfo.UserId) { //如果没有登录 则没有编辑权限
  142. _permission.edit = true; //就给其编辑权限
  143. return _permission;
  144. }
  145. if (U.MD.O.E.fileinfo && US.friend.group) {//判断用户是否在群里操作群文件
  146. _isgroup = U.Json.select(US.friend.group, {
  147. "GroupManageID": U.MD.O.E.fileinfo.GroupID
  148. })[0]; //向后台发请求,判断用户是否再操作群文件中
  149. }
  150. 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)) {//判断是否是有编辑权限
  151. _iseditor = true; //如果有,就改变变量的值
  152. }
  153. if (_isgroup) {//是ftp用户就判断是不是群用户
  154. _permission.web = true; //互联办公的权限
  155. _permission.edit = true; //就给其编辑权限
  156. } else if (_iseditor) {
  157. _permission.edit = true; //就给其编辑权限
  158. }
  159. U.MD.O.E.web = _permission.web;
  160. return _permission; //返回用户权限json
  161. }
  162. /**
  163. * 初始化全局变量
  164. * @param {object} 文档信息
  165. * @param {object} 登录用户信息
  166. *
  167. */
  168. U.MD.O.E.variable = function (fileinfo, userinfo) {
  169. U.MD.O.E.fileinfo = fileinfo //文档信息
  170. U.MD.O.E.userinfo = userinfo; //用户信息
  171. U.MD.O.E.taskCopyId = null; //当前无复制的工作表
  172. U.MD.O.E.colBoardWidth = 107; //列板 A-Z 的每一列的默认宽
  173. U.MD.O.E.rowBoardHeight = 22; //行板 1-200 的每一列的默认高
  174. U.MD.O.E.colBoardNum = 26; //列板的初始数量
  175. U.MD.O.E.rowBoardNum = 200; //行板的初始数量
  176. U.MD.O.E.taskNum = 1; //工作表数量
  177. U.MD.O.E.taskId = Guid.newGuid(); //当前工作表id
  178. U.MD.O.E.data = {}; //定义初始文档对象
  179. U.MD.O.E.data[U.MD.O.E.taskId] = {/* 工作表 */
  180. column: { //列板 A-Z
  181. change: {}, //被改变宽度的 列
  182. num: U.MD.O.E.colBoardNum //列的数量
  183. },
  184. row: { //行板 1-200
  185. change: {}, //被改变高度的 行
  186. num: U.MD.O.E.rowBoardNum //初始化行的数量 暂时为200
  187. },
  188. cell: {}, //右内容的单元格 和 被合并的单元格
  189. img: [],
  190. taskName: "工作表1",
  191. titie: ""
  192. }
  193. _Newleft = 0; //最新的top值
  194. _Newtop = 0; //最新的top值
  195. _NewRolltop = 0; //定义初始Rolltop的值
  196. _NewRollleft = 0; //定义初始Rollleft的值
  197. _Percentage = 0; //定义初始Percentage的值
  198. _PageMove = ""; //定义初始PageMove的值
  199. }
  200. /*
  201. * 此处是添加新的工作表
  202. */
  203. U.MD.O.E.addTask = function () {
  204. U.MD.O.E.taskId = Guid.newGuid(); //修改工作表id
  205. U.MD.O.E.taskNum++; //工作表数量加1
  206. var _data;
  207. if (U.MD.O.E.taskCopyId) { //如果存在复制的工作表 则复制该工作表的数据
  208. _data = JSON.stringify(U.MD.O.E.data[U.MD.O.E.taskCopyId]); //克隆json 转成字符串
  209. _data = JSON.parse(_data); //再将字符串 转乘成json
  210. _data.taskName = "工作表" + U.MD.O.E.taskNum;
  211. } else { /* 初始化表格的数据 */
  212. _data = {/* 工作表 */
  213. column: { //列板 A-Z
  214. change: {}, //被改变宽度的 列
  215. num: U.MD.O.E.colBoardNum //列的数量
  216. },
  217. row: { //行板 1-200
  218. change: {}, //被改变高度的 行
  219. num: U.MD.O.E.rowBoardNum //初始化行的数量 暂时为200
  220. },
  221. cell: {}, //右内容的单元格 和 被合并的单元格
  222. img: [],
  223. taskName: "工作表" + U.MD.O.E.taskNum//修改表单名字
  224. }
  225. }
  226. var _dataInfo = {
  227. id: U.MD.O.E.taskId,
  228. data: _data
  229. }//创建json,记录数据
  230. U.MD.O.E.dataChange(U.MD.O.E.excelInfo("addTask", _dataInfo)); //调用修改事件
  231. /*-------------以下函數为添加工作栏并切换----------*/
  232. var _taskBar = $(".U_MD_O_E_taskBar")[0], //工作栏元素
  233. _taskEl = $(".U_MD_O_E_task")[0]; //需要克隆的工作表元素
  234. _newTask = _taskEl.cloneNode(); ////开始克隆节点
  235. _newTask.style.display = "block"; //显示对象
  236. _newTask.id = U.MD.O.E.taskId; //修改id
  237. _newTask.innerText = _data.taskName; //修改内容
  238. $(".U_MD_O_E_taskCheck").removeClass("U_MD_O_E_taskCheck"); //删除对应对象集合
  239. $(_newTask).addClass("U_MD_O_E_taskCheck"); //添加对应对象
  240. _taskBar.appendChild(_newTask); //添加对应对象
  241. U.MD.O.E.rePrintExcel(); //重新打印表格
  242. U.MD.O.E.addTaskClick(_newTask); //工作表添加点击事件
  243. U.MD.O.E.rightClick(_newTask, "taskBar"); //工作表添加右键事件
  244. U.MD.O.E.taskCopyId = null; //清空复制ID
  245. }
  246. /*
  247. * 工作表添加点击事件
  248. * taskEl 工作表元素
  249. */
  250. U.MD.O.E.addTaskClick = function (taskEl) {
  251. $(taskEl).bind('click', function (e) {//给对象添加点击事件
  252. U.UF.EV.stopBubble(e); //阻止冒泡
  253. $(".U_MD_O_E_taskCheck").removeClass("U_MD_O_E_taskCheck"); //移除这个对象集合
  254. $(this).addClass("U_MD_O_E_taskCheck"); //添加一个新的对象名
  255. U.MD.O.E.taskId = this.id; //修改id
  256. U.MD.O.E.rePrintExcel(); //重新打印表格
  257. });
  258. }
  259. /*
  260. * 打印工作表
  261. * @param {Booleans} 是否为站点工作表打印
  262. */
  263. U.MD.O.E.printTask = function (data) {
  264. var _data = U.MD.O.E.data, //获取全局变量
  265. _taskBar = $(".U_MD_O_E_taskBar")[0], //工作栏元素
  266. _taskEl = $(".U_MD_O_E_task")[0], //获取工作表最外层div
  267. _newTask,
  268. _attr,
  269. _num = 0;
  270. U.MD.O.E.taskNum = U.MD.O.E.jsonLen(_data); //获取json的数量,用全局变量来接结果
  271. for (_attr in _data) {//开始循环创建每一个工作表div
  272. _newTask = _taskEl.cloneNode(); //开始克隆节点
  273. _newTask.style.display = "block"; //显示它
  274. _newTask.id = _attr; //设置id
  275. _num++;
  276. _newTask.innerText = _data[_attr].taskName || "工作表" + _num; //设置内容
  277. if (_num === 1) {//判断是否为第一个
  278. $(".U_MD_O_E_taskCheck").removeClass(".U_MD_O_E_taskCheck");
  279. $(_newTask).addClass("U_MD_O_E_taskCheck")
  280. U.MD.O.E.taskId = _attr; //当前选中工作表的id是 _attr;
  281. }
  282. _taskBar.appendChild(_newTask); //将元素添加进去
  283. if (!data) {//判断是否为站点视图
  284. U.MD.O.E.addTaskClick(_newTask); //工作表添加点击事件
  285. U.MD.O.E.rightClick(_newTask, "taskBar"); //工作表添加右键事件
  286. } else {//如果是
  287. _newTask.onclick = function () {//设置点击事件
  288. $(".U_MD_O_E_taskCheck")[0].className = "U_MD_O_E_task"; //修改classname改变颜色
  289. this.className = "U_MD_O_E_task U_MD_O_E_taskCheck "; //修改classname改变颜色
  290. U.MD.O.E.rePrintExcel(U.MD.O.E.data[this.id], true); //打印对应表格
  291. }
  292. }
  293. }
  294. }
  295. /*
  296. *新建文档
  297. */
  298. U.MD.O.E.newExcel = function () {
  299. parent.U.MD.D.I.openApplication("excel", { "userid": US.userInfo.userid, "directoryid": US.FTPFOLDERID }); //打开文档处理
  300. }
  301. /*
  302. * info 所需要修改的内容
  303. * req 为 true 则 不发送后台
  304. */
  305. U.MD.O.E.dataChange = function (info, req) {
  306. var _messageInfo = info.messageInfo || info, //获取内容
  307. _type = _messageInfo.type, //获取种类
  308. _excelData = U.MD.O.E.data, //获取全局文档内容
  309. _content = _messageInfo.content; //获取修改内容
  310. switch (_type) {
  311. case "blur": //判断是否为普通修改内容
  312. U.MD.O.E.dataChange.blur(_content);
  313. break;
  314. case "addLine": //判断是否为添加行内容
  315. U.MD.O.E.dataChange.addLine(_content);
  316. break;
  317. case "delLine": //判断是否为删除行内容
  318. U.MD.O.E.dataChange.delLine(_content);
  319. break;
  320. case "addCol": //判断是否为添加列内容
  321. U.MD.O.E.dataChange.addCol(_content);
  322. break;
  323. case "delCol": //判断是否为删除列改内容
  324. U.MD.O.E.dataChange.delCol(_content);
  325. break;
  326. case "merge": //判断是否为合并单元格修改内容
  327. U.MD.O.E.dataChange.merge(_content);
  328. break;
  329. case "splitCells": //判断是否为拆分单元格修改内容
  330. U.MD.O.E.dataChange.splitCells(_content);
  331. break;
  332. case "rowExpanding": //判断是否为行板拉伸数据保存修改内容
  333. U.MD.O.E.dataChange.rowExpanding(_content);
  334. break;
  335. case "colExpanding": //判断是否为列板拉伸数据保存修改内容
  336. U.MD.O.E.dataChange.colExpanding(_content);
  337. break;
  338. case "img": //判断是否为图片修改内容
  339. U.MD.O.E.dataChange.img(_content);
  340. break;
  341. case "addTask": //判断是否为添加工作表数据保存修改内容
  342. U.MD.O.E.dataChange.addTask(_content);
  343. break;
  344. case "deleteTask": //判断是否为删除工作表数据保存修改内容
  345. U.MD.O.E.dataChange.deleteTask(_content);
  346. break;
  347. case "reNameTask": //判断是否为工作表重命名修改内容
  348. U.MD.O.E.dataChange.reNameTask(_content);
  349. break;
  350. case "setStyle": //判断是否为修改样式修改内容
  351. U.MD.O.E.dataChange.setStyle(_content);
  352. break;
  353. case "setBorder": //判断是否为修改边框样式数据保存内容
  354. U.MD.O.E.dataChange.setBorder(_content);
  355. break;
  356. case "imgChange": //判断是否为图片修改内容
  357. U.MD.O.E.dataChange.imgChange(_content);
  358. break;
  359. case "excelAddHref": //判断是否为插入链接修改内容
  360. U.MD.O.E.dataChange.excelAddHref(_content);
  361. break;
  362. case "clearAContent": //判断是否为删除链接修改内容
  363. U.MD.O.E.dataChange.clearAContent(_content);
  364. break;
  365. case "updateTitle": //判断是否为同步修改文件名内容
  366. U.MD.O.E.data[U.MD.O.E.taskId].title = _content[0];
  367. break;
  368. }
  369. U.MD.O.E.web && !req ? U.MD.O.E.send(info) : ""; //发送后台请求
  370. //console.log(_excelData);
  371. };
  372. /*
  373. * 图片拉伸和拖拽
  374. * content 需要加入或修改的json数据
  375. * taskId 工作表id
  376. */
  377. U.MD.O.E.dataChange.imgChange = function (content, taskId) {
  378. var _content = content,
  379. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  380. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  381. _imgData = _excelData.img; //获取img数据
  382. _imgData[0].left = _content.left; //设置初始left
  383. _imgData[0].top = _content.top; //设置初始top
  384. }
  385. /*
  386. * 插入链接
  387. * content 需要加入或修改的json数据
  388. * taskId 工作表id
  389. */
  390. U.MD.O.E.dataChange.excelAddHref = function (content, taskId) {
  391. var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  392. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  393. _cellData = _excelData.cell, //获取修改内容信息
  394. _content = content;
  395. var _cellColList = _cellData[_content.col], //获取该数据里的所有列
  396. _cell;
  397. if (!_cellColList) { //如果列不存在 则创建一个列
  398. _cellColList = _cellData[_content.col] = {};
  399. }
  400. if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据
  401. _cellColList[_content.row] = {};
  402. _cellColList[_content.row].cssStyle = {}; //css样式
  403. }
  404. _cell = _cellColList[_content.row]; //获取该单元格的数据 (json)
  405. _content.content ? _cell.innerHTML = _content.content : ""; //修改该单元格的innerHTML
  406. }
  407. /*
  408. * 删除链接
  409. * content 需要加入或修改的json数据
  410. * taskId 工作表id
  411. */
  412. U.MD.O.E.dataChange.clearAContent = function (content, taskId) {
  413. var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  414. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  415. _cellData = _excelData.cell, //获取修改内容信息
  416. _content = content;
  417. var _cellColList = _cellData[_content.col], //获取该数据里的所有列
  418. _cell;
  419. if (!_cellColList) { //如果列不存在 则创建一个列
  420. _cellColList = _cellData[_content.col] = {};
  421. }
  422. if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据
  423. _cellColList[_content.row] = {};
  424. _cellColList[_content.row].cssStyle = {}; //css样式
  425. }
  426. _cell = _cellColList[_content.row]; //获取该单元格的数据 (json)
  427. _content.content ? _cell.innerHTML = _content.content : ""; //修改该单元格的innerHTML
  428. }
  429. /*-------------------------------以下是数据保存各个类型的接口-------------------------------------------------------------------------------------*/
  430. ///*
  431. //* 失焦数据保存
  432. //* content 需要加入或修改的json数据
  433. //* taskId 工作表id 可填可不填
  434. //*/
  435. //U.MD.O.E.dataChange.blur = function (content, taskId) {
  436. // var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据
  437. // _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据
  438. // _cellData = _excelData.cell, //获取该数据里的单元格数据
  439. // _content = content, //获取需要保存的json数据
  440. // _text = _content.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据
  441. // _cellColList = _cellData[_content.col], //获取该数据里的所有列
  442. // _cell;
  443. // if (!_cellColList) { //如果列不存在 则创建一个列
  444. // _cellColList = _cellData[_content.col] = {};
  445. // }
  446. // if (!_cellColList[_content.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据
  447. // _cellColList[_content.row] = {};
  448. // }
  449. // _cell = _cellColList[_content.row]; //获取该单元格的数据 (json)
  450. // _cell.innerHTML = _content.content; //修改该单元格的innerHTML
  451. // _cell.cssText = _content.cssText; //修改该单元格的cssText
  452. // if ((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 则删除掉
  453. // delete (_cellColList[_content.row]);
  454. // }
  455. //};
  456. /*
  457. * 添加工作表数据保存
  458. * content 需要加入或修改的json数据
  459. */
  460. U.MD.O.E.dataChange.addTask = function (content) {
  461. var _content = content; //获取信息
  462. U.MD.O.E.data[content.id] = content.data; //设置全局变量内容
  463. }
  464. /*
  465. * 添加工作表数据保存
  466. * content 需要加入或修改的json数据
  467. */
  468. U.MD.O.E.dataChange.deleteTask = function (content) {
  469. var _content = content; //获取信息
  470. delete U.MD.O.E.data[content.id]; //删除json里是该ID的所有数据
  471. }
  472. /*
  473. * 工作表重命名数据保存
  474. * content 需要保存的json数据
  475. */
  476. U.MD.O.E.dataChange.reNameTask = function (content) {
  477. var _content = content; //获取信息
  478. U.MD.O.E.data[_content.id].taskName = _content.name; //设置全局变量内容
  479. }
  480. /*
  481. * 添加行数据保存
  482. * content 需要保存的json数据
  483. * taskId 工作表id 可填可不填
  484. */
  485. U.MD.O.E.dataChange.addLine = function (content, taskId) {
  486. var _taskId = taskId || U.MD.O.E.taskId, //获取全局变量信息
  487. _excelData = U.MD.O.E.data[_taskId], //获取全局变量信息
  488. _content = content, //获取内容
  489. _rowData = _excelData.row, //获取行数
  490. _cellData = _excelData.cell, //获取列数
  491. _start = _content.start, //开始行
  492. _lineNum = _content.lineNum, //添加行的数量
  493. _sizeChange = _content.sizeChange, //添加的行的高度
  494. _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合
  495. _cellCol;
  496. if (_mergeArr.length) { //如果添加了行 导致该行下的合并单元格元素的数据发生了变化 则此处是修改他们合并单元格的数据 加上 添加了_lineNum
  497. _mergeArr.forEach(function (info) {
  498. _cellData[info.col][info.row].endRow = _cellData[info.col][info.row].endRow + _lineNum;
  499. });
  500. }
  501. for (var k in _cellData) {
  502. _cellCol = _cellData[k]; //修改该列下的所有行单元格 的行数据
  503. var temp = {};
  504. for (var row in _cellCol) {//循环对象
  505. if (row > _start) {//判断是否为合并元素
  506. temp[(+row) + _lineNum] = _cellCol[row];
  507. temp[(+row) + _lineNum].endRow ? temp[(+row) + _lineNum].endRow = temp[(+row) + _lineNum].endRow + _lineNum : ""; //如果是合并单元格的元素 则将endRow + _lineNum;
  508. } else {//如果不是
  509. temp[row] = _cellCol[row]; //正常修改内容
  510. }
  511. }
  512. _cellData[k] = temp;
  513. } /* 该处for循环是修改数据中单元格的行数 */
  514. var _rowDataChange = _rowData.change, //获取数据表中 所有被改变高度的 行版信息
  515. _temp = {},
  516. _rowChange;
  517. for (var k in _rowDataChange) {//循环判断
  518. _rowChange = _rowDataChange[k]; //该行板的所有被改动的行数据
  519. if (k > _start) {//判断是否为改变高度
  520. _temp[(+k) + _lineNum] = _rowChange; //如果是,修改对应内容
  521. } else {
  522. _temp[k] = _rowChange; //如果没有,正常修改内容
  523. }
  524. } /* 该处for循环是修改数据中行版的行数 */
  525. _rowData.change = _temp;
  526. if (_sizeChange) { //此处是如果添加的行 高度不是默认的 则将添加的行 对应的行板高度一起修改
  527. for (var i = 1; i <= _lineNum; i++) {//循环开始
  528. _rowData.change[_start + i] = _sizeChange;
  529. }
  530. }
  531. _rowData.num = _rowData.num + _lineNum; //行板数量 = 行板数量 + 添加行的数量
  532. };
  533. /*
  534. * 删除行数据保存
  535. * content 需要保存的json数据
  536. * taskId 工作表id 可填可不填
  537. */
  538. U.MD.O.E.dataChange.delLine = function (content, taskId) {
  539. var _content = content,
  540. _taskId = taskId || U.MD.O.E.taskId,
  541. _excelData = U.MD.O.E.data[_taskId],
  542. _rowData = _excelData.row,
  543. _cellData = _excelData.cell,
  544. _start = _content.start, //被选中的第一行
  545. _end = _content.end, //被选中的最后一行
  546. _lineNum = _content.lineNum, //所删除的行数
  547. _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合
  548. _cellCol;
  549. for (var k in _cellData) {//循环开始
  550. _cellCol = _cellData[k];
  551. var temp = {};
  552. for (var row in _cellCol) {
  553. if (row > _end) {//判断是否为合并数据
  554. temp[(+row) - _lineNum] = _cellCol[row];
  555. temp[(+row) - _lineNum].endRow ? temp[(+row) - _lineNum].endRow = temp[(+row) - _lineNum].endRow - _lineNum : ""; //如果是合并单元格的元素 则将endRow - _lineNum;
  556. } else if (row < _start) {//如果不是
  557. temp[row] = _cellCol[row];
  558. }
  559. }
  560. _cellData[k] = temp;
  561. }
  562. if (_mergeArr.length) {
  563. _mergeArr.forEach(function (info) {
  564. U.MD.O.E.dataChange.merge(info, _taskId);
  565. });
  566. }
  567. var _rowDataChange = _rowData.change, //获取数据表中 所有被改变高度的 行版信息
  568. _temp = {},
  569. _rowChange;
  570. for (var k in _rowDataChange) {
  571. _rowChange = _rowDataChange[k]; //该行板的所有被改动的行数据
  572. if (k < _start) { //如果大于结束行 则将该行下面的所有的数字信息 - 被删除的行
  573. _temp[k] = _rowChange;
  574. } else if (k > _end) {
  575. _temp[(+k) - _lineNum] = _rowChange;
  576. }
  577. } /* 该处for循环是修改数据中行版的行数 */
  578. _rowData.change = _temp;
  579. _rowData.num = _rowData.num - _lineNum; //行板数量 = 行板数量 - 删除行的数量
  580. };
  581. /*
  582. * 添加列数据保存
  583. * content 需要保存的json数据
  584. * taskId 工作表id 可填可不填
  585. */
  586. U.MD.O.E.dataChange.addCol = function (content, taskId) {
  587. var _content = content,
  588. _taskId = taskId || U.MD.O.E.taskId,
  589. _excelData = U.MD.O.E.data[_taskId],
  590. _colData = _excelData.column,
  591. _cellData = _excelData.cell,
  592. _start = _content.start, //被选中的第一列
  593. _sizeChange = _content.sizeChange, //添加的列的宽度
  594. _colNums = _content.colNums, //所添加的列数
  595. _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合
  596. _cellCol,
  597. _temp = {};
  598. if (_mergeArr.length) {
  599. _mergeArr.forEach(function (info) {
  600. _cellData[info.col][info.row].endCol = _cellData[info.col][info.row].endCol + _colNums;
  601. });
  602. }
  603. for (var k in _cellData) {
  604. _cellCol = _cellData[k];
  605. if (k > _start) {
  606. _temp[+(k) + _colNums] = _cellCol;
  607. var _temp2 = _temp[(+k) + _colNums];
  608. for (var i in _temp2) {
  609. _temp2[i].endCol ? _temp2[i].endCol = _temp2[i].endCol + _colNums : ""; //如果是合并单元格的元素 则将endCol + _colNums;
  610. }
  611. } else {
  612. _temp[k] = _cellCol;
  613. }
  614. }
  615. _excelData.cell = _temp;
  616. var _colDataChange = _colData.change, //获取数据表中 所有被改变宽度的 列版信息
  617. _temp = {},
  618. _colChange;
  619. for (var k in _colDataChange) {
  620. _colChange = _colDataChange[k]; //该列板的所有被改动的列数据
  621. if (k > _start) {
  622. _temp[(+k) + _colNums] = _colChange;
  623. } else {
  624. _temp[k] = _colChange;
  625. }
  626. } /* 该处for循环是修改数据中行版的行数 */
  627. _colData.change = _temp;
  628. if (_sizeChange) {
  629. for (var i = 1; i <= _colNums; i++) {
  630. _colData.change[_start + i] = _sizeChange;
  631. }
  632. }
  633. _colData.num = _colData.num + _colNums; //列板数量 = 列板数量 + 添加列的数量
  634. };
  635. /*
  636. * 删除列数据保存
  637. * content 需要保存的json数据
  638. * taskId 工作表id 可填可不填
  639. */
  640. U.MD.O.E.dataChange.delCol = function (content, taskId) {
  641. var _content = content,
  642. _taskId = taskId || U.MD.O.E.taskId,
  643. _excelData = U.MD.O.E.data[_taskId],
  644. _colData = _excelData.column,
  645. _cellData = _excelData.cell,
  646. _start = _content.start, //被选中的第一行
  647. _end = _content.end, //被选中的最后一行
  648. _colNums = _content.colNums, //所删除的列数
  649. _mergeArr = _content.mergeArr, //合并单元格 元素 数组集合
  650. _cellCol,
  651. _temp = {};
  652. for (var k in _cellData) {
  653. _cellCol = _cellData[k];
  654. if (k > _end) {//判断是否为合并数据
  655. _temp[+(k) - _colNums] = _cellCol;
  656. var _temp2 = _temp[(+k) - _colNums];
  657. for (var i in _temp2) {
  658. _temp2[i].endCol ? _temp2[i].endCol = _temp2[i].endCol - _colNums : ""; //如果是合并单元格的元素 则将endCol - _colNums;
  659. }
  660. } else if (k < _start) {
  661. _temp[k] = _cellCol;
  662. }
  663. }
  664. _excelData.cell = _temp;
  665. if (_mergeArr.length) {
  666. _mergeArr.forEach(function (info) { //info为[{单元格1,单元格2},{单元格1,单元格2}]
  667. U.MD.O.E.dataChange.merge(info, _taskId);
  668. });
  669. }
  670. var _colDataChange = _colData.change, //获取数据表中 所有被改变宽度的 列版信息
  671. _temp = {},
  672. _colChange;
  673. for (var k in _colDataChange) {
  674. _colChange = _colDataChange[k]; //该列板的所有被改动的列数据
  675. if (k < _start) { //如果大于结束列 则将该列下面的所有的数字信息 - 被删除的列
  676. _temp[k] = _colChange;
  677. } else if (k > _end) {
  678. _temp[(+k) - _colNums] = _colChange;
  679. }
  680. } /* 该处for循环是修改数据中行版的行数 */
  681. _colData.change = _temp;
  682. _colData.num = _colData.num - _colNums; //列板数量 = 列板数量 - 删除列的数量
  683. };
  684. /*
  685. * 合并单元格数据保存
  686. * content 需要保存的json数据
  687. * taskId 工作表id 可填可不填
  688. */
  689. U.MD.O.E.dataChange.merge = function (content, taskId) {
  690. var _content = content, //获取内容
  691. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  692. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  693. _cellData = _excelData.cell, //获取行列数据
  694. _cellColList = _cellData[_content.col]; //获取修改列数
  695. if (content.row === content.endRow && content.col === content.endCol) {//判断是否为跨行跨列内容
  696. _cellData[_content.col][_content.row].endRow = ""; //修改对应内容
  697. _cellData[_content.col][_content.row].endCol = ""//修改对应内容
  698. return;
  699. }
  700. if (!_cellColList) {//判断是否为跨列
  701. _cellColList = _cellData[_content.col] = {}; //修改对应内容
  702. }
  703. if (!_cellColList[_content.row]) {//判断是否为跨行
  704. _cellColList[_content.row] = {}; //修改对应内容
  705. }
  706. _cellColList[_content.row].innerHTML = _content.content; //修改对应内容
  707. _cellColList[_content.row].cssText = _content.cssText; //修改对应内容
  708. _cellColList[_content.row].endRow = _content.endRow; //修改对应内容
  709. _cellColList[_content.row].endCol = _content.endCol; //修改对应内容
  710. };
  711. /* 拆分单元格
  712. * content 需要保存的json数据
  713. * taskId 工作表id 可填可不填
  714. */
  715. U.MD.O.E.dataChange.splitCells = function (content, taskId) {
  716. var _content = content, //获取内容
  717. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  718. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  719. _cellData = _excelData.cell, //获取行列数据
  720. _cell = _cellData[_content.col][_content.row]; //需要拆分的单元格
  721. _cell.endRow = "";
  722. _cell.endCol = "";
  723. };
  724. /*
  725. * 行板拉伸数据保存
  726. * content 需要保存的json数据
  727. * taskId 工作表id 可填可不填
  728. */
  729. U.MD.O.E.dataChange.rowExpanding = function (content, taskId) {
  730. var _content = content, //获取内容
  731. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  732. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  733. _rowData = _excelData.row; //获取行列数据
  734. _content.forEach(function (data) {
  735. var _rowNum = data.rowName, //拉伸行的位置 (数字)
  736. _rowHeight = data.height; //被拉伸后的宽度
  737. _rowData.change[_rowNum] = _rowHeight;
  738. });
  739. };
  740. /*
  741. * 列板拉伸数据保存
  742. * content 需要保存的json数据
  743. * taskId 工作表id 可填可不填
  744. */
  745. U.MD.O.E.dataChange.colExpanding = function (content, taskId) {
  746. var _content = content, //获取内容
  747. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  748. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  749. _colData = _excelData.column; //获取该工作表的 列的数据
  750. _content.forEach(function (data) {
  751. var _colNum = data.colName, //拉伸行的位置 (数字)
  752. _colWidth = data.width; //被拉伸后的宽度
  753. _colData.change[_colNum] = _colWidth;
  754. });
  755. };
  756. /*
  757. * 图片插入数据保存
  758. * content 需要保存的json数据
  759. * taskId 工作表id 可填可不填
  760. */
  761. U.MD.O.E.dataChange.img = function (content, taskId) {
  762. var _content = content, //获取内容
  763. _taskId = taskId || U.MD.O.E.taskId, //获取全局变量
  764. _excelData = U.MD.O.E.data[_taskId], //获取全局变量
  765. _imgData = _excelData.img;
  766. _imgData.push(content);
  767. };
  768. /*
  769. * 失焦数据保存
  770. * content 需要加入或修改的json数据
  771. * taskId 工作表id 可填可不填
  772. */
  773. U.MD.O.E.dataChange.blur = function (content, taskId) {
  774. var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据
  775. _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据
  776. _cellData = _excelData.cell, //获取该数据里的单元格数据
  777. _content = content; //获取需要保存的json数据
  778. _content.forEach(function (data) {
  779. var _text = data.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据
  780. _cellColList = _cellData[data.col], //获取该数据里的所有列
  781. _cell;
  782. if (!_cellColList) { //如果列不存在 则创建一个列
  783. _cellColList = _cellData[data.col] = {};
  784. }
  785. if (!_cellColList[data.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据
  786. _cellColList[data.row] = {};
  787. _cellColList[data.row].cssStyle = {}; //css样式
  788. }
  789. _cell = _cellColList[data.row]; //获取该单元格的数据 (json)
  790. data.content ? _cell.innerHTML = data.content : ""; //修改该单元格的innerHTML
  791. if (data.attr) { //如果存在样式的话
  792. try {
  793. _cell.cssStyle[data.attr] = data.value;
  794. if (!data.value) {
  795. delete _cell.cssStyle[data.attr]
  796. }
  797. } catch (e) {
  798. console.log(e);
  799. }
  800. }
  801. var cssLen = U.MD.O.E.jsonLen(_cell.cssStyle);
  802. if (data.clearStyle && !cssLen) { //如果需要清除所有样式的话
  803. data.cssStyle = {};
  804. data.clearStyle = false;
  805. }
  806. if (((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) && !(cssLen)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 并且没有样式 则删除掉
  807. delete (_cellColList[data.row]);
  808. }
  809. })
  810. };
  811. /*
  812. *修改边框样式数据保存
  813. * content 需要加入或修改的json数据
  814. * taskId 工作表id 可填可不填
  815. */
  816. U.MD.O.E.dataChange.setBorder = function (content, taskId) {
  817. var _taskId = taskId || U.MD.O.E.taskId, //如果有taskId传过来 则修改 data数据里 taskId里的数据 否则则修改当前工作表id里的数据
  818. _excelData = U.MD.O.E.data[_taskId], //获取taskId工作表的数据
  819. _cellData = _excelData.cell, //获取该数据里的单元格数据
  820. _content = content; //获取需要保存的json数据
  821. _content.forEach(function (data) {
  822. var _text = data.innerText.replace(/\s+/g, ""), //去掉空格 给下面做判断 如果内容为空 则删除该数据
  823. _cellColList = _cellData[data.col], //获取该数据里的所有列
  824. _cell;
  825. if (!_cellColList) { //如果列不存在 则创建一个列
  826. _cellColList = _cellData[data.col] = {};
  827. }
  828. if (!_cellColList[data.row]) { //如果该行_列 不存在单元格数据 则创建个json 给单元格添加数据
  829. _cellColList[data.row] = {};
  830. _cellColList[data.row].cssStyle = {}; //css样式
  831. }
  832. _cell = _cellColList[data.row]; //获取该单元格的数据 (json)
  833. data.content ? _cell.innerHTML = data.content : ""; //修改该单元格的innerHTML
  834. if (data.attr && data.br) { //如果存在样式的话
  835. try {
  836. _cell.cssStyle[data.br] = data.value;
  837. if (!data.value) {
  838. delete _cell.cssStyle[data.attr]
  839. }
  840. } catch (e) {
  841. console.log(e);
  842. }
  843. }
  844. if (data.attr && data.bb) {
  845. try {
  846. _cell.cssStyle[data.bb] = data.value;
  847. if (!data.value) {
  848. delete _cell.cssStyle[data.attr]
  849. }
  850. } catch (e) {
  851. console.log(e);
  852. }
  853. }
  854. var cssLen = U.MD.O.E.jsonLen(_cell.cssStyle);
  855. if (data.clearStyle && !cssLen) { //如果需要清除所有样式的话
  856. data.cssStyle = {};
  857. data.clearStyle = false;
  858. }
  859. if (((!(_text) || _text === ("\u200D")) && !(_cell.endRow)) && !(cssLen)) { //如果innerHTML为空格 或 不存在 并且 不是合并单元格元素 并且没有样式 则删除掉
  860. delete (_cellColList[data.row]);
  861. }
  862. });
  863. }
  864. /*
  865. * excel保存
  866. * diskinfo 1473的桌面信息
  867. */
  868. U.MD.O.E.Save = function (diskinfo) {
  869. debugger;
  870. if (!top.U.MD.U.L.isLogin(function (userinfo) { U.MD.O.E.userinfo = userinfo; })) {
  871. var _isftp,
  872. _isgroupuser,
  873. _uid = U.MD.O.E.userinfo.UserId,
  874. _el = $(".U_MD_O_E_excelBox")[0], //excel编辑区域
  875. _fileinfo = U.MD.O.E.fileinfo, //文件信息
  876. _fileid = _fileinfo.UserDirectoryID, //文件ID
  877. _name = top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].value, //文件名称
  878. _html = _el.innerHTML.escapeQuotes(), //内容
  879. _jsonData = JSON.stringify(U.MD.O.E.data); //需要保存的json数据
  880. // console.log(11);
  881. var _directoryid = _fileinfo.UserDirectoryID; //目录id
  882. if (_fileinfo.UserDirectoryID && _fileinfo.UserId && _fileinfo.UserallDirectoryName) { //如果是已经保存到数据库的文档,那么直接保存内容
  883. top.U.A.Request(US.AUTH, ["SaveFileContent", U.MD.O.E.userinfo.UserId, _fileid, _jsonData, _name], function (r) {
  884. console.log(r);
  885. //U.MD.O.E.fileinfo.UsOffice = _jsonData;
  886. //console.log(U.MD.O.E.fileinfo.UsOffice);
  887. U.Alert("保存成功");
  888. }, (['', _el])); //保存到数据库
  889. } else { /*如果不是数据库的文档(没有存到云盘里)*/
  890. top.U.MD.DK.VW.chosenSaveFile('ue', _directoryid, _name, function (fileinfo) {
  891. top.U.A.Request(US.AUTH, ["SaveFileContent", U.MD.O.E.userinfo.UserId, _fileid, _jsonData, fileinfo.UserallDirectoryName], function (r) {
  892. //U.MD.O.E.fileinfo.UsOffice = _jsonData;
  893. //console.log(U.MD.O.E.fileinfo.UsOffice);
  894. //console.log($(".U_MD_O_E_floatBtn")[0]);
  895. U.Alert("保存成功");
  896. }); //保存到数据库
  897. });
  898. // if (top.U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//此函数:判断是否有添加网盘的权限(新建工作表权限)
  899. // }
  900. // else { U.Alert("无权限访问此工作表"); };
  901. }
  902. }
  903. }
  904. //#endregion
  905. //#region 页面生成
  906. /**
  907. * 加载excel的内容处理
  908. * @param {object} 文档信息
  909. * @param {object} 登录用户信息
  910. *
  911. */
  912. U.MD.O.E.LoadContent = function (fileid, fileinfo) {
  913. U.MD.O.E.initExcel(fileinfo); //查看文件
  914. }
  915. /**
  916. * 初始化Excel打开
  917. * @param {object} 文档信息
  918. *
  919. */
  920. U.MD.O.E.initExcel = function () {
  921. var _content = "";
  922. U.MD.O.E.printExcel(); //打印表格
  923. U.MD.O.E.otherFun(); //加载控件
  924. }
  925. /**
  926. * 打印excel,把excel展示出来
  927. * @param {object} 文档信息
  928. *
  929. */
  930. U.MD.O.E.printExcel = function (excelobj) {
  931. //底部任务栏的处理
  932. var _excel = U.MD.O.E,
  933. _pageobj,
  934. _rowandrank;
  935. _excel.printTask(); //打印工作表
  936. _excel.printColBoard(U.MD.O.E.colBoardNum, {}); //打印上排板
  937. _excel.printRowBoard(U.MD.O.E.rowBoardNum, {}); //打印左排版
  938. _excel.printTable(); //打印所有单元格
  939. _excel.focusInit(); //聚焦元素初始化
  940. }
  941. /*
  942. * 聚焦元素初始化(添加事件)
  943. */
  944. U.MD.O.E.focusInit = function () {
  945. var _editorBox = $("#U_MD_O_E_editorBox")[0], //聚焦元素里的编辑元素
  946. _focusBox = $("#U_MD_O_E_focusBox")[0]; //聚焦元素
  947. U.MD.O.E.BC.modifyFocusSize(1, 1, 1, 1); //默认初始位置
  948. _focusBox.style.background = "";
  949. _focusBox.style.zIndex = "1";
  950. $("#POS_1_1").addClass("U_MD_O_E_cellCheckd");
  951. _editorBox.focusEl = $("#POS_1_1")[0];
  952. /*---------以上默认单元格聚焦第一个---------*/
  953. U.UF.E.picture.stretch($('.U_MD_O_E_excelBox')[0]);
  954. $('.U_MD_O_E_excelBox').bind({//给袁角添加聚焦事件
  955. click: function (e) {
  956. if (e.target.tagName == "IMG") {//判断是否为图片,如果是,显示拉伸框,加入图片编辑
  957. $('.U_MD_O_E_excelBox')[0].imgStretch.img = e.target;
  958. $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.upimg = e;
  959. U.UF.E.picture.stretch.setPosition($('.U_MD_O_E_excelBox')[0].imgStretch, e);
  960. $('.U_MD_O_E_excelBox')[0].focus();
  961. if (e.target == $(".U_MD_O_E_addTask_img")[0] || e.target == $(".U_MD_O_E_floatBtn")[0]) {
  962. $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.style.display = "none"; //影藏拉伸框
  963. }
  964. } else {
  965. $('.U_MD_O_E_excelBox')[0].imgStretch.stretch.style.display = "none"; //影藏拉伸框
  966. }
  967. }
  968. }); //绑定拖拽事件
  969. U.MD.O.E.BC.blur(); // 添加失焦时函数
  970. U.MD.O.E.BC.focusDbClick(); //单元格双击编辑功能
  971. U.MD.O.E.BC.editorKeyEvent(); //编辑器的键盘事件编写
  972. }
  973. /*
  974. * 重新打印数据的单元格
  975. * @param {json} 载入表格的内容
  976. * @param {boolean} 判断是否为站点视图加载
  977. */
  978. U.MD.O.E.rePrintExcel = function (data, datr) {
  979. var _excel = U.MD.O.E, //获取全局变量
  980. _data = data || U.MD.O.E.data[U.MD.O.E.taskId], //获取全局变量
  981. _dataRow = _data.row, //获取行数
  982. _dataCol = _data.column, //获取列数
  983. _dataCell = _data.cell, //获取修改内容
  984. _dataImg = _data.img; //获取图片内容
  985. $(".U_MD_O_E_rowBoard")[0].innerHTML = ""; //初始化对应内容
  986. $(".U_MD_O_E_colBoard")[0].innerHTML = ""; //初始化对应内容
  987. $(".U_MD_O_E_cellBox")[0].innerHTML = ""; //初始化对应内容
  988. if (datr) {//判断是否为站点视图,如果是
  989. _excel.printColBoard(_dataCol.num, _dataCol, datr); //打印上排板
  990. _excel.printRowBoard(_dataRow.num, _dataRow, datr); //打印左排版
  991. _excel.printTable(_dataCell, datr); //打印单元格
  992. _excel.printImg(_dataImg, datr); //打印图片 这个必须放在打印单元格后面
  993. } else {//如果不是
  994. _excel.printColBoard(_dataCol.num, _dataCol); //打印上排板
  995. _excel.printRowBoard(_dataRow.num, _dataRow); //打印左排版
  996. _excel.printTable(_dataCell); //打印单元格
  997. _excel.focusInit(); //聚焦元素初始化
  998. _excel.printImg(_dataImg); //打印图片 这个必须放在打印单元格后面
  999. }
  1000. }
  1001. /**
  1002. * 打印横排
  1003. * @param {colnum} 列板的数量
  1004. * @param {colBoardInfo} 列板需要修改的信息
  1005. * @param {boolean} 判断是否为站点视图加载
  1006. *
  1007. */
  1008. U.MD.O.E.printColBoard = function (colnum, colBoardInfo, data) {
  1009. //_colBoard = $$("div", { className: "rowBox" }, _excelBox),
  1010. var _excel = U.MD.O.E, //获取全局变量
  1011. _excelBox = $(".U_MD_O_E_excelBox")[0], //获取excel元素
  1012. _colBoard = $(".U_MD_O_E_colBoard")[0], //获取横排元素
  1013. _checkAll = $$("div", { className: "U_MD_O_E_checkAll" }, _colBoard), //创建div对象
  1014. _img = $$("img", { "onerror": U.MD.C.imgError, src: "http://coffice.1473.cn/Controls/Office/Excel/img/%E5%85%A8%E9%80%89.png" }, _checkAll), //创建图片对象
  1015. _frag = $$("frag"), //创建一个对象
  1016. i,
  1017. _column,
  1018. _name,
  1019. _allWidth = 45, //横排的总宽度 45是全选按钮的宽度
  1020. _colWidth = 136, //列板的默认宽度暂时是136px
  1021. _newWidth,
  1022. _colBox = $$("div", { className: "U_MD_O_E_colBoardBox", style: { position: "relative", float: "left"} }, _frag), //创建div对象
  1023. _colCheckdEl = $$("div", { className: "U_MD_O_E_colCheckdEl", style: { position: "absolute"} }, _colBox), //创建div对象
  1024. _len = colnum;
  1025. for (i = 1; i <= _len; i++) {//设置循环,开始创建横排的每一排
  1026. _column = $$("div", { className: "U_MD_O_E_column" }, _colBox); //创建元素
  1027. $(_column).eAttr("colname", i); //修改内容
  1028. _name = U.MD.O.E.fromCharCode(i); //修改内容
  1029. _column.innerText = _name; //修改内容
  1030. _newWidth = _colWidth; //修改内容
  1031. if (!data) {//判断是否为站点视图,如果不是
  1032. _colRule = $$("div", { className: "U_MD_O_E_colRule" }, _column);
  1033. _colRule.style.cssText = "margin-left:-3px;position: absolute;top:0px;height: 100%;width: 6px;cursor: e-resize";
  1034. U.MD.O.E.BC.colExpanding(_colRule); //添加拉伸功能
  1035. U.MD.O.E.BC.cBoardChecked(_column); //添加点击 拖拽功能
  1036. _colRule.style.left = (_newWidth - 1) + "px";
  1037. }
  1038. /*------------------以上是默认值 定死的------------------*/
  1039. if (colBoardInfo.change && colBoardInfo.change[i]) {
  1040. _newWidth = colBoardInfo.change[i]
  1041. }
  1042. _column.style.width = _newWidth + "px"; //修改内容
  1043. _allWidth += _newWidth; //修改内容
  1044. }
  1045. _colBoard.style.width = _allWidth + "px"; //修改内容
  1046. _colBoard.appendChild(_frag); //元素添加进去
  1047. if (!data) {
  1048. _excel.rightClick(_colBoard, "colBoard"); //添加右键
  1049. }
  1050. }
  1051. /**
  1052. * 打印竖排
  1053. * @param {number} 行数据
  1054. * @param {object} 行内容
  1055. * @param {boolean} 判断是否为站点视图加载
  1056. *
  1057. */
  1058. U.MD.O.E.printRowBoard = function (columnnum, rowBoardInfo, data) {
  1059. //_rowBoard = $$("div", { className: "colBox" }, _excelBox),
  1060. var _excel = U.MD.O.E, //获取全局变量
  1061. _excelBox = $(".U_MD_O_E_excelBox")[0], //获取excel对象
  1062. _rowBoard = $(".U_MD_O_E_rowBoard")[0], //获取行对象
  1063. _rowCheckdEl,
  1064. _frag = $$("frag"), //创建元素
  1065. i,
  1066. _row,
  1067. _rowHeight = _excel.rowBoardHeight,
  1068. _newHeight,
  1069. _len = columnnum,
  1070. _rowRule;
  1071. if (!data) {//判断是否为站点载入,如果不是
  1072. _rowCheckdEl = $$("div", { className: "U_MD_O_E_rowCheckdEl", style: { position: "absolute"} }, _rowBoard); //创建div
  1073. }
  1074. for (i = 1; i <= _len; i++) {//创建循环,开始循环创建元素
  1075. _row = $$("div", { className: "U_MD_O_E_row" }, _frag); //创建div
  1076. $(_row).eAttr("rowname", i); //修改内容
  1077. _row.innerText = i; //修改内容
  1078. _row.style.lineHeight = "22px"; //修改内容
  1079. _newHeight = _rowHeight; //修改内容
  1080. if (!data) {//判断是否为站点视图,如果不是
  1081. _rowRule = $$("div", { className: "U_MD_O_E_rowRule" }, _row);
  1082. _rowRule.style.cssText = "margin-top:-3px;position: absolute;height: 6px;width: 100%;cursor: n-resize";
  1083. U.MD.O.E.BC.rowExpanding(_rowRule);
  1084. U.MD.O.E.BC.rBoardChecked(_row); //添加点击 拖拽功能
  1085. _rowRule.style.top = _newHeight + "px";
  1086. }
  1087. /*------------------以上是默认值 定死的------------------*/
  1088. if (rowBoardInfo.change && (rowBoardInfo.change[i])) {
  1089. _newHeight = rowBoardInfo.change[i]//修改内容
  1090. }
  1091. _row.style.height = _newHeight + "px"; //修改内容
  1092. }
  1093. _rowBoard.appendChild(_frag); //添加进对象中
  1094. if (!data) {
  1095. _excel.rightClick(_rowBoard, "rowBoard"); //添加右键
  1096. }
  1097. }
  1098. /*
  1099. * 循环打印单元格
  1100. * data 被合并单元格 或者 有文字单元格的json数据
  1101. * @param {boolean} 判断是否为站点视图加载
  1102. */
  1103. U.MD.O.E.printTable = function (data, bonn) {
  1104. //_cellBox = $$("div", { className: "cellBox" }, _excelBox),
  1105. var _focusBoxHTML = " <div id=\"U_MD_O_E_focusBox\" class=\"U_MD_O_E_focusBox\"> \n" + /*聚焦元素*/
  1106. " <div id=\"U_MD_O_E_editorBox\" class=\"U_MD_O_E_editorBox\" contenteditable=\"false\">\n" +
  1107. " </div>\n" +
  1108. " <div contenteditable=\"false\" class=\"U_MD_O_E_borderLeft U_MD_O_E_borderColor U_MD_O_E_borderDefalut\">\n" +
  1109. " </div>\n" +
  1110. " <div contenteditable=\"false\" class=\"U_MD_O_E_borderTop U_MD_O_E_borderColor U_MD_O_E_borderDefalut\">\n" +
  1111. " </div>\n" +
  1112. " <div contenteditable=\"false\" class=\"U_MD_O_E_borderRight U_MD_O_E_borderColor U_MD_O_E_borderDefalut\">\n" +
  1113. " </div>\n" +
  1114. " <div contenteditable=\"false\" class=\"U_MD_O_E_borderBottom U_MD_O_E_borderColor U_MD_O_E_borderDefalut\">\n" +
  1115. " </div>\n" +
  1116. " <div contenteditable=\"false\" class=\"U_MD_O_E_borderCorner\">\n" +
  1117. " </div>\n" +
  1118. " </div>", //初始化聚焦内容
  1119. _excel = U.MD.O.E, //获取全局变量
  1120. _excelBox = $(".U_MD_O_E_excelBox")[0], //获取表格对象
  1121. _cellBox = $(".U_MD_O_E_cellBox")[0], //获取单元格对象
  1122. _columnList = $(".U_MD_O_E_column"), //获取列对象
  1123. _rowList = $(".U_MD_O_E_row"), //获取行对象
  1124. _width,
  1125. _height,
  1126. _colLen = _columnList.length,
  1127. _rowLen = _rowList.length,
  1128. _frag = $$("frag"),
  1129. i,
  1130. j,
  1131. cell,
  1132. _left = 0,
  1133. _top = 0,
  1134. _colName,
  1135. _rowName;
  1136. if (!bonn || !data) {//判断是否为载入站点视图,如果不是
  1137. _cellBox.innerHTML = _focusBoxHTML; //加载聚焦对象
  1138. }
  1139. _excelBox.worksheetid = "e3979682e-cb7a-8db7-a3b3-88233ea32e24"
  1140. for (i = 0; i < _colLen; i++) { //遍历列
  1141. _colName = _columnList[i].colname;
  1142. _width = _columnList[i].offsetWidth; //对应列板的宽
  1143. for (j = 0; j < _rowLen; j++) { //遍历行
  1144. _height = _rowList[j].offsetHeight; //修改内容
  1145. _rowName = _rowList[j].rowname; //修改内容
  1146. _cell = $$("div", { className: "U_MD_O_E_cell" }, _frag); //创建div对象
  1147. _cell.style.width = _width + "px"; //修改内容
  1148. _cell.style.height = _height + "px"; //修改内容
  1149. _cell.style.left = _left + "px"; //修改内容
  1150. _cell.style.top = _top + "px"; //修改内容
  1151. _cell.id = "POS_" + _colName + "_" + _rowName; //修改内容
  1152. $(_cell).eAttr("col", _colName); //修改内容
  1153. $(_cell).eAttr("row", _rowName); //修改内容
  1154. if (!bonn || !data) {//判断是否为载入站点视图,如果不是
  1155. U.MD.O.E.BC.Focus(_cell); //添加单元格聚焦事件
  1156. U.MD.O.E.BC.dragCheckd(_cell); //添加拖拽选中事件
  1157. }
  1158. _top += _rowList[j].offsetHeight; //修改内容
  1159. }
  1160. _left += _columnList[i].offsetWidth; //修改内容
  1161. _top = 0;
  1162. }
  1163. _cellBox.appendChild(_frag); //添加进对象内
  1164. if (!bonn || !data) {//判断是否为载入站点视图,如果不是
  1165. _excel.rightClick(_cellBox, "cellBox"); //添加右键
  1166. }
  1167. var col,
  1168. row,
  1169. _innerHTML,
  1170. _colCell,
  1171. _endCell,
  1172. _cellInfo,
  1173. _cell;
  1174. if (data) {//判断是否为有数据的加载,如果是
  1175. for (var col in data) {
  1176. var _colCell = data[col]; //col列下的所有单元格
  1177. for (var row in _colCell) {
  1178. _cellInfo = _colCell[row]; //获取内容
  1179. _cell = $(_cellBox).find("#POS_" + col + "_" + row)[0] //col列下 第row行单元格
  1180. _cellInfo.innerHTML ? _cell.innerHTML = _cellInfo.innerHTML : '';
  1181. if (_cellInfo.endRow) { //如果存在endRow 则表示此单元格是合并的单元格
  1182. _endCell = $(_cellBox).find("#POS_" + _cellInfo.endCol + "_" + _cellInfo.endRow)[0];
  1183. _excel.RC.mergeCells(_cell, _endCell, true); //修改内容
  1184. }
  1185. if (U.MD.O.E.jsonLen(_cellInfo.cssStyle)) { //如果存在css样式
  1186. U.MD.O.E.TL.jsonSetStyle(_cell, _cellInfo.cssStyle); //修改内容
  1187. }
  1188. _cellInfo.cssText ? _cell.style.cssText = _cellInfo.cssText : ""; //修改内容
  1189. }
  1190. }
  1191. }
  1192. }
  1193. /*
  1194. * 打印图片
  1195. * dataArr 图片的数组json
  1196. * @param {boolean} 判断是否为站点视图加载
  1197. */
  1198. U.MD.O.E.printImg = function (dataArr, datr) {
  1199. var _img;
  1200. dataArr.forEach(function (data) {//循环数据
  1201. _img = U.MD.O.E.createImg(data.src, data); //根据data创建相对应的图片
  1202. if (!datr) {//判断是否为站点加载,如果不是
  1203. U.MD.O.E.BC.pictureControl(_img); //加载拖拽事件
  1204. }
  1205. })
  1206. }
  1207. /**
  1208. * 动态创建字体下拉框
  1209. *
  1210. */
  1211. U.MD.O.E.createSelection = function () {
  1212. //$(".U_MD_O_H_head_navigation_Title")[0].focus();
  1213. var els = $('div[datafont]'), /*获取字体颜色的div*/
  1214. csstext = "font-weight: normal;white-space: pre; min-height: 1.2em; padding:6px 4px; cursor: pointer;background:#fff"; /*下拉框样式*/
  1215. U.MD.UI.editor.Select({ '宋体': '宋体', 'sans-serif': 'sans-serif', '微软雅黑': '微软雅黑', '楷体': '楷体', '黑体': '黑体', '隶书': '隶书', 'andale mono': 'andale mono', 'arial black': 'arial black' },
  1216. { "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 }) },
  1217. els[0]) /*创建下拉框*/
  1218. U.MD.UI.editor.Select({ '12': '12号', '14': '14号', '16': '16号', '18': '18号', '20': '20号', '24': '24号' },
  1219. { "className": "U_MD_O_E_Editor_head_features_ul_s", style: { width: '100%', height: '20px', border: 'none'} },
  1220. function (v) { U.MD.O.E.TL.setStyle({ 'fontSize': v + 'px' }) },
  1221. els[1])/*创建下拉框*/
  1222. }
  1223. /**
  1224. * 插入图片
  1225. * @param input 文件框
  1226. */
  1227. U.MD.O.E.upload = function (input) {
  1228. U.UF.UP.inputUpload([input], 'http://disk.1473.cn/USUpfile.ashx?typename=UseStudioEditor&UserId=FA92AAC5-4134-449F-9659-0DC12F4F68E9', function (r) {
  1229. var _src = 'http://fs.1473.cn/' + r.value[0],
  1230. _img;
  1231. _img = U.MD.O.E.createImg(_src); //创建图片
  1232. _img.onload = function () {
  1233. var _data = {//创建对象储存内容
  1234. src: _src,
  1235. left: _img.offsetLeft,
  1236. top: _img.offsetTop,
  1237. width: _img.offsetWidth,
  1238. height: _img.offsetHeight,
  1239. type: "img"
  1240. };
  1241. console.log(_data); //打印出来
  1242. U.MD.O.E.dataChange(U.MD.O.E.excelInfo("img", _data)); //合并时 保存数据
  1243. U.MD.O.E.BC.pictureControl(_img); //添加拖拽事件
  1244. }
  1245. }); //调用活套交互方法,访问的同时加入图片
  1246. }
  1247. /**
  1248. * 网盘插入图片
  1249. */
  1250. U.MD.O.E.NDimg = function () {
  1251. if (!top.U.MD.U.L.isLogin()) { //判断是否登陆
  1252. top.U.MD.DK.VW.choseFile(function (data) {
  1253. var _src = 'http://fs.1473.cn/' + data.UserallDirectoryName,
  1254. _img;
  1255. _img = U.MD.O.E.createImg(_src); //创建图片
  1256. _img.onload = function () {
  1257. var _data = {
  1258. src: _src,
  1259. left: _img.offsetLeft,
  1260. top: _img.offsetTop,
  1261. width: _img.offsetWidth,
  1262. height: _img.offsetHeight,
  1263. type: "img"
  1264. };
  1265. console.log(_data);
  1266. U.MD.O.E.dataChange(U.MD.O.E.excelInfo("img", _data)); //合并时 保存数据
  1267. U.MD.O.E.BC.pictureControl(_img); //添加拖拽事件
  1268. }
  1269. window.focus();
  1270. }, "jpg");
  1271. }
  1272. }
  1273. /*
  1274. * createImg 新建图片
  1275. * src 图片路径
  1276. * data (json) 如果存在 则通过该数据创建图片
  1277. */
  1278. U.MD.O.E.createImg = function (src, data) {
  1279. var _cellBox = $(".U_MD_O_E_cellBox")[0], //获取单元格div总对象
  1280. _img = $$("img", { "onerror": U.MD.C.imgError, src: src }, _cellBox), //创建img对象
  1281. _focusBox = $("#U_MD_O_E_focusBox")[0]; //获取表格对象
  1282. _img.style.position = "absolute"; //修改内容
  1283. _img.style.maxWidth = "2000px;"//修改内容
  1284. _img.style.maxHeight = "2000px;"//修改内容
  1285. if (data) {//判断是否为有数据加载,如果是
  1286. _img.width = data.width; //修改内容
  1287. _img.height = data.height; //修改内容
  1288. _img.style.left = data.left + "px"; //修改内容
  1289. _img.style.top = data.top + "px"; //修改内容
  1290. } else {//如果不是
  1291. _img.style.left = _focusBox.style.left; //修改内容
  1292. _img.style.top = _focusBox.style.top; //修改内容
  1293. }
  1294. return _img; //返回img对象
  1295. }
  1296. /*
  1297. * changeImg 拖拽拉伸图片
  1298. * data (json) 如果存在 则通过该数据创建图片
  1299. */
  1300. U.MD.O.E.changeImg = function (data) {
  1301. var _Allimg = $(".U_MD_O_E_cellBox")[0].getElementsByTagName("img"); //获取单元格中所有img对象数据
  1302. for (var i = 0; i < _Allimg.length; i++) {//循环
  1303. _Allimg[i].index = i; //修改内容
  1304. if (data) {//判断是否为有数据拉伸,如果是
  1305. _Allimg[i].width = data.width; //修改内容
  1306. _Allimg[i].height = data.height; //修改内容
  1307. _Allimg[i].style.left = data.left + "px"; //修改内容
  1308. _Allimg[i].style.top = data.top + "px"; //修改内容
  1309. }
  1310. }
  1311. return _Allimg[0]; //返回json数据
  1312. }
  1313. /**
  1314. * 添加右键
  1315. * element 需要添加右键的元素
  1316. * type 为添加右键元素的类型
  1317. */
  1318. U.MD.O.E.rightClick = function (element, type) {
  1319. switch (type) {
  1320. case "cellBox": //判断是否为单元格右键
  1321. U.MD.O.E.rightClick.cellBox(element);
  1322. break;
  1323. case "colBoard": //判断是否为行右键
  1324. U.MD.O.E.rightClick.colBoard(element);
  1325. break;
  1326. case "rowBoard": //判断是否为列右键
  1327. U.MD.O.E.rightClick.rowBoard(element);
  1328. break;
  1329. case "taskBar": //判断是否为工作表右键
  1330. U.MD.O.E.rightClick.taskBar(element);
  1331. break;
  1332. }
  1333. $(document).bind('mousedown', function (e) {//设置mousedown事件
  1334. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1335. })
  1336. };
  1337. /*
  1338. * 单元格模块添加右键
  1339. * element 需要添加右键的 元素
  1340. */
  1341. U.MD.O.E.rightClick.cellBox = function (element) {
  1342. var _excel = U.MD.O.E, //获取全局变量
  1343. _cellBox = element; //获取元素
  1344. var _addLine = {//添加行创建
  1345. innerHTML: '添加行<input id="lineNum" value="1" type="num" style="width: 30px;height: 18px;margin-left: 28px;box-sizing: border-box;"> 行',
  1346. onclick: function () {
  1347. var _input = $("#lineNum")[0],
  1348. _line = _input.value,
  1349. _cellarr = _excel.cellCheckd(), //以数组的形式返回首尾选中的单元格
  1350. _cellLast = _cellarr[1]; //结束单元格
  1351. _excel.RC.addLine(_cellLast, +_line);
  1352. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1353. },
  1354. onmousedown: function (e) {
  1355. U.UF.EV.stopBubble(e); //阻止冒泡
  1356. }
  1357. };
  1358. var _addCol = {//添加列创建
  1359. innerHTML: '添加列<input id="colNum" value="1" type="num" style="width: 30px;height: 18px;margin-left: 28px;box-sizing: border-box;"> 列',
  1360. onclick: function () {
  1361. var _input = $("#colNum")[0],
  1362. _col = _input.value,
  1363. _endCell = _excel.cellCheckd()[1];
  1364. _excel.RC.addCol(_endCell, +_col);
  1365. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1366. },
  1367. onmousedown: function (e) {
  1368. U.UF.EV.stopBubble(e); //阻止冒泡
  1369. }
  1370. };
  1371. var _removeLine = {//添加行删除
  1372. innerHTML: '删除行',
  1373. onclick: function () {
  1374. var _startCell = _excel.cellCheckd()[0],
  1375. _endCell = _excel.cellCheckd()[1],
  1376. _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据
  1377. _rmlinenum = _checkeddata.maxy - _checkeddata.miny + 1; //所删除的行数
  1378. _excel.RC.removeLine(_startCell, _endCell);
  1379. var _data = {
  1380. checkeddata: _checkeddata,
  1381. rmlinenum: _rmlinenum,
  1382. type: "removeLine"
  1383. };
  1384. _excel.BC.reSelectCell(_data); //重选单元格
  1385. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1386. },
  1387. onmousedown: function (e) {
  1388. U.UF.EV.stopBubble(e); //阻止冒泡
  1389. }
  1390. };
  1391. var _removeCol = {//添加列删除
  1392. innerHTML: '删除列',
  1393. onclick: function () {
  1394. var _startCell = _excel.cellCheckd()[0],
  1395. _endCell = _excel.cellCheckd()[1],
  1396. _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据
  1397. _rmcolnum = _checkeddata.maxx - _checkeddata.minx + 1; //所删除的列数
  1398. _excel.RC.removeCol(_startCell, _endCell);
  1399. var _data = {
  1400. checkeddata: _checkeddata,
  1401. rmcolnum: _rmcolnum,
  1402. type: "removeCol"
  1403. };
  1404. _excel.BC.reSelectCell(_data); //重选单元格
  1405. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1406. },
  1407. onmousedown: function (e) {
  1408. U.UF.EV.stopBubble(e); //阻止冒泡
  1409. }
  1410. };
  1411. var _copy = {//添加复制
  1412. innerHTML: '复制',
  1413. onclick: function () {
  1414. _excel.RC.cellCopy();
  1415. },
  1416. onmousedown: function (e) {
  1417. U.UF.EV.stopBubble(e); //阻止冒泡
  1418. }
  1419. };
  1420. var _taste = {//添加粘贴
  1421. innerHTML: '粘贴',
  1422. onclick: function () {
  1423. _excel.RC.cellTaste();
  1424. },
  1425. onmousedown: function (e) {
  1426. U.UF.EV.stopBubble(e); //阻止冒泡
  1427. }
  1428. };
  1429. var _cut = {//添加剪切
  1430. innerHTML: '剪切',
  1431. onclick: function () {
  1432. _excel.RC.cellCut();
  1433. },
  1434. onmousedown: function (e) {
  1435. U.UF.EV.stopBubble(e); //阻止冒泡
  1436. }
  1437. };
  1438. var _mergeCells = {//添加合并
  1439. innerHTML: '合并单元格',
  1440. onclick: function () {
  1441. var _startCell = _excel.cellCheckd()[0],
  1442. _endCell = _excel.cellCheckd()[1];
  1443. _excel.RC.mergeCells(_startCell, _endCell);
  1444. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1445. },
  1446. onmousedown: function (e) {
  1447. U.UF.EV.stopBubble(e); //阻止冒泡
  1448. }
  1449. };
  1450. var _splitCells = {//添加拆分
  1451. innerHTML: '拆分单元格',
  1452. onclick: function () {
  1453. var _cell = _excel.cellCheckd()[0];
  1454. _excel.RC.splitCells(_cell);
  1455. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1456. },
  1457. onmousedown: function (e) {
  1458. U.UF.EV.stopBubble(e); //阻止冒泡
  1459. }
  1460. };
  1461. var _clearContent = {//添加清除内容
  1462. innerHTML: '清除内容',
  1463. onclick: function () {
  1464. var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));
  1465. _excel.RC.clearContent(_cellList);
  1466. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1467. },
  1468. onmousedown: function (e) {
  1469. U.UF.EV.stopBubble(e); //阻止冒泡
  1470. }
  1471. };
  1472. var _clearStyle = {//添加清除格式
  1473. innerHTML: '清除格式',
  1474. onclick: function () {
  1475. _excel.TL.clearStyle();
  1476. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1477. },
  1478. onmousedown: function (e) {
  1479. U.UF.EV.stopBubble(e); //阻止冒泡
  1480. }
  1481. };
  1482. var _insertLink = {//添加插入链接
  1483. innerHTML: '插入链接',
  1484. onclick: function () {
  1485. var _cell = _excel.cellCheckd()[0];
  1486. _excel.RC.insertLink(_cell);
  1487. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1488. },
  1489. onmousedown: function (e) {
  1490. U.UF.EV.stopBubble(e); //阻止冒泡
  1491. }
  1492. };
  1493. var _insertImg = {//添加插入图片
  1494. innerHTML: '插入图片',
  1495. onclick: function () {
  1496. return $("#U_MD_O_E_Editor_head_features_ul_img")[0].click();
  1497. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1498. },
  1499. onmousedown: function (e) {
  1500. U.UF.EV.stopBubble(e); //阻止冒泡
  1501. }
  1502. };
  1503. var _arr = [_addLine, _addCol, _removeLine, _removeCol, _copy, _taste, _cut, _mergeCells, _splitCells, _clearContent, _clearStyle, _insertLink, _insertImg, ];
  1504. $(_cellBox).bind('contextmenu', function (e) {
  1505. U.UF.EV.stopBubble(e); //阻止冒泡
  1506. U.UF.EV.stopDefault(e);
  1507. U.UF.EL.rightMenu(_arr, _cellBox);
  1508. $(this).find('input').bind('keypress', function (e) {
  1509. U.UF.EV.stopBubble(e); //阻止冒泡
  1510. });
  1511. $(this).find('input').bind('keydown', function (e) {
  1512. U.UF.EV.stopBubble(e); //阻止冒泡
  1513. });
  1514. $(this).find('input').bind('keyup', function (e) {
  1515. U.UF.EV.stopBubble(e); //阻止冒泡
  1516. });
  1517. $(this).find('input').bind('click', function (e) {
  1518. U.UF.EV.stopBubble(e); //阻止冒泡
  1519. });
  1520. });
  1521. $(_cellBox).bind('mousedown', function (e) {
  1522. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1523. });
  1524. }
  1525. /*
  1526. * 工作表添加右键
  1527. * taskEl 每一格的工作表
  1528. */
  1529. U.MD.O.E.rightClick.taskBar = function (taskEl) {
  1530. var _excel = U.MD.O.E;
  1531. var _delete = {//添加删除
  1532. innerHTML: '删除',
  1533. onclick: function (e) {
  1534. U.UF.EV.stopBubble(e); //阻止冒泡
  1535. _excel.RC.taskDelete(taskEl);
  1536. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1537. },
  1538. onmousedown: function (e) {
  1539. U.UF.EV.stopBubble(e); //阻止冒泡
  1540. }
  1541. };
  1542. var _reName = {//添加重命名
  1543. innerHTML: '重命名',
  1544. onclick: function (e) {
  1545. U.UF.EV.stopBubble(e); //阻止冒泡
  1546. _excel.RC.taskRename(taskEl);
  1547. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1548. },
  1549. onmousedown: function (e) {
  1550. U.UF.EV.stopBubble(e); //阻止冒泡
  1551. }
  1552. };
  1553. var _copy = {//添加复制
  1554. innerHTML: '复制',
  1555. onclick: function (e) {
  1556. U.UF.EV.stopBubble(e); //阻止冒泡
  1557. _excel.RC.taskCopy(taskEl);
  1558. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1559. },
  1560. onmousedown: function (e) {
  1561. U.UF.EV.stopBubble(e); //阻止冒泡
  1562. }
  1563. };
  1564. var _arr = [_delete, _reName, _copy];
  1565. $(taskEl).bind('contextmenu', function (e) {
  1566. U.UF.EV.stopBubble(e); //阻止冒泡
  1567. U.UF.EV.stopDefault();
  1568. U.UF.EL.rightMenu(_arr, taskEl);
  1569. });
  1570. $(taskEl).bind('dblclick', function () {
  1571. U.MD.O.E.RC.taskRename(this);
  1572. })
  1573. $(taskEl).bind('mousedown', function (e) {
  1574. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1575. });
  1576. }
  1577. /*
  1578. * 列板模块添加右键
  1579. * element 需要添加右键的 元素
  1580. */
  1581. U.MD.O.E.rightClick.colBoard = function (element) {
  1582. var _excel = U.MD.O.E,
  1583. _colBoard = element;
  1584. var _addCol = {//添加列增加
  1585. innerHTML: '添加列<input id="colNum" value="1" type="num" style="width: 30px;height: 18px;margin-left: 28px;box-sizing: border-box;"> 列',
  1586. onclick: function () {
  1587. var _input = $("#colNum")[0],
  1588. _col = _input.value,
  1589. _endCell = _excel.cellCheckd()[1];
  1590. _excel.RC.addCol(_endCell, +_col);
  1591. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1592. },
  1593. onmousedown: function (e) {
  1594. U.UF.EV.stopBubble(e); //阻止冒泡
  1595. }
  1596. };
  1597. var _removeCol = {//添加列删除
  1598. innerHTML: '删除列',
  1599. onclick: function () {
  1600. var _startCell = _excel.cellCheckd()[0],
  1601. _endCell = _excel.cellCheckd()[1],
  1602. _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据
  1603. _rmcolnum = _checkeddata.maxx - _checkeddata.minx + 1; //所删除的列数
  1604. _excel.RC.removeCol(_startCell, _endCell);
  1605. var _data = {
  1606. checkeddata: _checkeddata,
  1607. rmcolnum: _rmcolnum,
  1608. type: "removeCol"
  1609. };
  1610. _excel.BC.reSelectCell(_data); //重选单元格
  1611. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1612. },
  1613. onmousedown: function (e) {
  1614. U.UF.EV.stopBubble(e); //阻止冒泡
  1615. }
  1616. };
  1617. var _copy = {//添加复制
  1618. innerHTML: '复制',
  1619. onclick: function () {
  1620. _excel.RC.colBoardCopy();
  1621. },
  1622. onmousedown: function (e) {
  1623. U.UF.EV.stopBubble(e); //阻止冒泡
  1624. }
  1625. };
  1626. var _taste = {//添加粘贴
  1627. innerHTML: '粘贴',
  1628. onclick: function () {
  1629. _excel.RC.colBoardTaste();
  1630. },
  1631. onmousedown: function (e) {
  1632. U.UF.EV.stopBubble(e); //阻止冒泡
  1633. }
  1634. };
  1635. var _cut = {//添加剪切
  1636. innerHTML: '剪切',
  1637. onclick: function () {
  1638. _excel.RC.colBoardCut();
  1639. },
  1640. onmousedown: function (e) {
  1641. U.UF.EV.stopBubble(e); //阻止冒泡
  1642. }
  1643. };
  1644. var _mergeCells = {//添加合并
  1645. innerHTML: '合并单元格',
  1646. onclick: function () {
  1647. var _startCell = _excel.cellCheckd()[0],
  1648. _endCell = _excel.cellCheckd()[1];
  1649. _excel.RC.mergeCells(_startCell, _endCell);
  1650. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1651. },
  1652. onmousedown: function (e) {
  1653. U.UF.EV.stopBubble(e); //阻止冒泡
  1654. }
  1655. };
  1656. var _clearContent = {//添加清除内容
  1657. innerHTML: '清除内容',
  1658. onclick: function () {
  1659. var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));
  1660. _excel.RC.clearContent(_cellList);
  1661. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1662. },
  1663. onmousedown: function (e) {
  1664. U.UF.EV.stopBubble(e); //阻止冒泡
  1665. }
  1666. };
  1667. var _clearStyle = {//添加清除格式
  1668. innerHTML: '清除格式',
  1669. onclick: function () {
  1670. var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));
  1671. _excel.RC.clearStyle(_cellList);
  1672. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1673. },
  1674. onmousedown: function (e) {
  1675. U.UF.EV.stopBubble(e); //阻止冒泡
  1676. }
  1677. };
  1678. var _setWidth = {//添加设置列宽
  1679. innerHTML: '设置列宽<input id="colWidth" value="107" type="num" style="width: 50px;height: 18px;margin-left: 10px;box-sizing: border-box;"> px',
  1680. onclick: function () {
  1681. var _startCol = _excel.cellCheckd()[0].col, //开始的列数
  1682. _endCol = _excel.cellCheckd()[1].col, //结束的列数
  1683. _colWidth = $("#colWidth")[0].value;
  1684. if (_colWidth < 50) {
  1685. U.Alert("列宽不能低于50像素");
  1686. return;
  1687. }
  1688. _excel.RC.cBoardsetWidth(_startCol, _endCol, _colWidth);
  1689. _excel.BC.reSelectCell(); //重新调整聚焦元素的大小
  1690. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1691. },
  1692. onmousedown: function (e) {
  1693. U.UF.EV.stopBubble(e); //阻止冒泡
  1694. }
  1695. };
  1696. var _hide = {//添加列隐藏
  1697. innerHTML: '隐藏列',
  1698. onclick: function () {
  1699. var _startCol = _excel.cellCheckd()[0].col,
  1700. _endCol = _excel.cellCheckd()[1].col;
  1701. _excel.RC.cBoardHide(_startCol, _endCol);
  1702. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1703. },
  1704. onmousedown: function (e) {
  1705. U.UF.EV.stopBubble(e); //阻止冒泡
  1706. }
  1707. };
  1708. var _cancelHide = {//添加列取消隐藏
  1709. innerHTML: '取消隐藏',
  1710. onclick: function () {
  1711. var _startCol = _excel.cellCheckd()[0].col,
  1712. _endCol = _excel.cellCheckd()[1].col;
  1713. _excel.RC.cBoardCancelHide(_startCol, _endCol);
  1714. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1715. },
  1716. onmousedown: function (e) {
  1717. U.UF.EV.stopBubble(e); //阻止冒泡
  1718. }
  1719. };
  1720. var _insertLink = {//添加插入链接
  1721. innerHTML: '插入链接',
  1722. onclick: function () {
  1723. var _cell = _excel.cellCheckd()[0];
  1724. _excel.RC.insertLink(_cell);
  1725. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1726. },
  1727. onmousedown: function (e) {
  1728. U.UF.EV.stopBubble(e); //阻止冒泡
  1729. }
  1730. };
  1731. var _insertImg = {//添加插入图片
  1732. innerHTML: '插入图片',
  1733. onclick: function () {
  1734. var _cell = _excel.cellCheckd()[0];
  1735. _excel.RC.insertImg(_cell);
  1736. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1737. },
  1738. onmousedown: function (e) {
  1739. U.UF.EV.stopBubble(e); //阻止冒泡
  1740. }
  1741. };
  1742. var _arr = [_addCol, _removeCol, _copy, _taste, _cut, _mergeCells, _clearStyle, _clearContent, _setWidth, _hide, _cancelHide, _insertLink, _insertImg];
  1743. $(_colBoard).bind('contextmenu', function (e) {
  1744. U.UF.EV.stopBubble(e); //阻止冒泡
  1745. U.UF.EV.stopDefault();
  1746. U.UF.EL.rightMenu(_arr, _colBoard);
  1747. $(this).find('input').bind('keypress', function (e) {
  1748. U.UF.EV.stopBubble(e); //阻止冒泡
  1749. });
  1750. $(this).find('input').bind('keydown', function (e) {
  1751. U.UF.EV.stopBubble(e); //阻止冒泡
  1752. });
  1753. $(this).find('input').bind('keyup', function (e) {
  1754. U.UF.EV.stopBubble(e); //阻止冒泡
  1755. });
  1756. $(this).find('input').bind('click', function (e) {
  1757. U.UF.EV.stopBubble(e); //阻止冒泡
  1758. });
  1759. });
  1760. $(_colBoard).bind('mousedown', function (e) {
  1761. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1762. });
  1763. }
  1764. /*
  1765. * 行板模块添加右键
  1766. * element 需要添加右键的 元素
  1767. */
  1768. U.MD.O.E.rightClick.rowBoard = function (element) {
  1769. var _excel = U.MD.O.E,
  1770. _rowBoard = element;
  1771. var _addLine = {
  1772. innerHTML: '添加行<input id="lineNum" value="1" type="num" style="width: 30px;height: 18px;margin-left: 28px;box-sizing: border-box;"> 行',
  1773. onclick: function () {//添加行增加
  1774. var _input = $("#lineNum")[0],
  1775. _line = _input.value,
  1776. _cellLast = _excel.cellCheckd()[1];
  1777. _input.bind('keypress', function (e) {
  1778. U.UF.EV.stopBubble(e); //阻止冒泡
  1779. });
  1780. _excel.RC.addLine(_cellLast, +_line);
  1781. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1782. },
  1783. onmousedown: function (e) {
  1784. U.UF.EV.stopBubble(e); //阻止冒泡
  1785. }
  1786. };
  1787. var _removeLine = {//添加行删除
  1788. innerHTML: '删除行',
  1789. onclick: function () {
  1790. var _startCell = _excel.cellCheckd()[0],
  1791. _endCell = _excel.cellCheckd()[1],
  1792. _checkeddata = _excel.BC.selectCellData(_startCell, _endCell), //json形式 返回两单元格的坐标数据
  1793. _rmlinenum = _checkeddata.maxy - _checkeddata.miny + 1; //所删除的行数
  1794. _excel.RC.removeLine(_startCell, _endCell);
  1795. var _data = {
  1796. checkeddata: _checkeddata,
  1797. rmlinenum: _rmlinenum,
  1798. type: "removeLine"
  1799. };
  1800. _excel.BC.reSelectCell(_data); //重选单元格
  1801. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1802. },
  1803. onmousedown: function (e) {
  1804. U.UF.EV.stopBubble(e); //阻止冒泡
  1805. }
  1806. };
  1807. var _copy = {//添加复制
  1808. innerHTML: '复制',
  1809. onclick: function () {
  1810. _excel.RC.rBoardCopy();
  1811. },
  1812. onmousedown: function (e) {
  1813. U.UF.EV.stopBubble(e); //阻止冒泡
  1814. }
  1815. };
  1816. var _taste = {//添加粘贴
  1817. innerHTML: '粘贴',
  1818. onclick: function () {
  1819. _excel.RC.rBoardTaste();
  1820. },
  1821. onmousedown: function (e) {
  1822. U.UF.EV.stopBubble(e); //阻止冒泡
  1823. }
  1824. };
  1825. var _cut = {//添加剪切
  1826. innerHTML: '剪切',
  1827. onclick: function () {
  1828. _excel.RC.rBoardCut();
  1829. },
  1830. onmousedown: function (e) {
  1831. U.UF.EV.stopBubble(e); //阻止冒泡
  1832. }
  1833. };
  1834. var _clearContent = {//添加清除内容
  1835. innerHTML: '清除内容',
  1836. onclick: function () {
  1837. _excel.RC.rBoardClearCt();
  1838. },
  1839. onmousedown: function (e) {
  1840. U.UF.EV.stopBubble(e); //阻止冒泡
  1841. }
  1842. };
  1843. var _clearStyle = {//添加清除格式
  1844. innerHTML: '清除格式',
  1845. onclick: function () {
  1846. var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));
  1847. _excel.RC.clearStyle(_cellList);
  1848. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1849. },
  1850. onmousedown: function (e) {
  1851. U.UF.EV.stopBubble(e); //阻止冒泡
  1852. }
  1853. };
  1854. var _mergeCells = {//添加合并
  1855. innerHTML: '合并单元格',
  1856. onclick: function () {
  1857. var _startCell = _excel.cellCheckd()[0],
  1858. _endCell = _excel.cellCheckd()[1];
  1859. _excel.RC.mergeCells(_startCell, _endCell);
  1860. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1861. },
  1862. onmousedown: function (e) {
  1863. U.UF.EV.stopBubble(e); //阻止冒泡
  1864. }
  1865. };
  1866. var _setHeight = {//添加设置行高
  1867. innerHTML: '设置行高<input id="rowHeight" value="22" type="num" style="width: 50px;height: 18px;margin-left: 10px;box-sizing: border-box;"> px',
  1868. onclick: function () {
  1869. var _startRow = _excel.cellCheckd()[0].row, //开始的行数
  1870. _endRow = _excel.cellCheckd()[1].row, //结束的行数
  1871. _rowHeight = $("#rowHeight")[0].value;
  1872. if (_rowHeight < 20) {
  1873. U.Alert("高度不能低于20像素");
  1874. return;
  1875. }
  1876. _excel.RC.rBoardsetHeight(_startRow, _endRow, _rowHeight);
  1877. _excel.BC.reSelectCell(); //重新调整聚焦元素的大小
  1878. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1879. },
  1880. onmousedown: function (e) {
  1881. U.UF.EV.stopBubble(e); //阻止冒泡
  1882. }
  1883. };
  1884. var _hide = {//添加行隐藏
  1885. innerHTML: '隐藏行',
  1886. onclick: function () {
  1887. var _startRow = _excel.cellCheckd()[0].row, //开始的行数
  1888. _endRow = _excel.cellCheckd()[1].row; //结束的行数
  1889. _excel.RC.rBoardHide(_startRow, _endRow);
  1890. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1891. },
  1892. onmousedown: function (e) {
  1893. U.UF.EV.stopBubble(e); //阻止冒泡
  1894. }
  1895. };
  1896. var _cancelHide = {//添加行显示
  1897. innerHTML: '取消隐藏',
  1898. onclick: function () {
  1899. var _startRow = _excel.cellCheckd()[0].row, //开始的行数
  1900. _endRow = _excel.cellCheckd()[1].row; //结束的行数
  1901. _excel.RC.rBoardCancelHide(_startRow, _endRow);
  1902. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1903. },
  1904. onmousedown: function (e) {
  1905. U.UF.EV.stopBubble(e); //阻止冒泡
  1906. }
  1907. };
  1908. var _insertLink = {//添加插入链接
  1909. innerHTML: '插入链接',
  1910. onclick: function () {
  1911. var _cell = _excel.cellCheckd()[0];
  1912. _excel.RC.insertLink(_cell);
  1913. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1914. },
  1915. onmousedown: function (e) {
  1916. U.UF.EV.stopBubble(e); //阻止冒泡
  1917. }
  1918. };
  1919. var _insertImg = {//添加插入图片
  1920. innerHTML: '插入图片',
  1921. onclick: function () {
  1922. var _cell = _excel.cellCheckd()[0];
  1923. _excel.RC.insertImg(_cell);
  1924. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1925. },
  1926. onmousedown: function (e) {
  1927. U.UF.EV.stopBubble(e); //阻止冒泡
  1928. }
  1929. };
  1930. var _clearStyle = {//添加清除格式
  1931. innerHTML: '清除格式',
  1932. onclick: function () {
  1933. var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));
  1934. _excel.RC.clearStyle(_cellList);
  1935. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1936. },
  1937. onmousedown: function (e) {
  1938. U.UF.EV.stopBubble(e); //阻止冒泡
  1939. }
  1940. };
  1941. var _arr = [_addLine, _removeLine, _copy, _taste, _cut, _mergeCells, _clearContent, _clearStyle, _setHeight, _hide, _cancelHide, _insertLink, _insertImg];
  1942. $(_rowBoard).bind('contextmenu', function (e) {
  1943. U.UF.EV.stopBubble(e); //阻止冒泡
  1944. U.UF.EV.stopDefault();
  1945. U.UF.EL.rightMenu(_arr, _rowBoard);
  1946. $(this).find('input').bind('keypress', function (e) {
  1947. U.UF.EV.stopBubble(e); //阻止冒泡
  1948. });
  1949. $(this).find('input').bind('keydown', function (e) {
  1950. U.UF.EV.stopBubble(e); //阻止冒泡
  1951. });
  1952. $(this).find('input').bind('keyup', function (e) {
  1953. U.UF.EV.stopBubble(e); //阻止冒泡
  1954. });
  1955. $(this).find('input').bind('click', function (e) {
  1956. U.UF.EV.stopBubble(e); //阻止冒泡
  1957. });
  1958. });
  1959. $(_rowBoard).bind('mousedown', function (e) {
  1960. $("#U_UF_EL_rightmenu")[0] && $("#U_UF_EL_rightmenu")[0].remove(); //删除右键元素
  1961. });
  1962. }
  1963. /* 点击 切换悬浮栏
  1964. * button 为 点击的按钮
  1965. */
  1966. U.MD.O.E.switchBar = function (button) {
  1967. var _bar = $("#U_MD_O_E_body_left")[0], //获取浮动元素
  1968. _display = _bar.style.display; //获取浮动框对象显示对象
  1969. if (_display === "block") { //如果是打开 则 改为关闭
  1970. button.src = "http://coffice.1473.cn/Controls/Office/Excel/img/浮动按钮收缩.png"; //修改内容
  1971. _bar.style.display = "none"; //修改内容
  1972. } else {
  1973. button.src = "http://coffice.1473.cn/Controls/Office/Excel/img/浮动按钮展开.png"; //修改内容
  1974. _bar.style.display = "block"; //修改内容
  1975. }
  1976. }
  1977. /*
  1978. *数字转成英文 比如1转A 2转B 26转Z 27转AA
  1979. *num 为 number类型的数字
  1980. */
  1981. U.MD.O.E.fromCharCode = function (num) {
  1982. if (num <= 0) return; //如果小于等于0,不运行
  1983. var _code,
  1984. firstNum = Math.floor(num / 26), //获取为几组数据
  1985. endNum = num % 26; //获取余数
  1986. if (!endNum) endNum = 26; //如果内有,自定校准
  1987. if (firstNum === 0 || (num === 26)) {//判断是否为26以内
  1988. _code = String.fromCharCode((64 + endNum)); //如果是,直接打印
  1989. } else {//如果不是,间接打印
  1990. _code = U.MD.O.E.fromCharCode(firstNum) + String.fromCharCode((64 + endNum));
  1991. }
  1992. return _code;
  1993. }
  1994. /*
  1995. * 传入光标要去的节点对象 聚焦
  1996. * el 为元素
  1997. */
  1998. U.MD.O.E.placeCaretAtEnd = function (el) {
  1999. if (el.collapse) { //如果存在el.collapsed 则是range
  2000. var range = el;
  2001. range.collapse(false);
  2002. var sel = window.getSelection();
  2003. sel.removeAllRanges();
  2004. sel.addRange(range);
  2005. return;
  2006. }
  2007. if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {//判断聚焦的对象是否为空,如果不为空
  2008. var range = document.createRange(); //修改聚焦内容
  2009. range.selectNodeContents(el); //修改聚焦内容
  2010. range.collapse(false); //修改聚焦内容
  2011. var sel = window.getSelection(); //修改聚焦内容
  2012. sel.removeAllRanges(); //修改聚焦内容
  2013. sel.addRange(range); //修改聚焦内容
  2014. } else if (typeof document.body.createTextRange != "undefined") {//判断聚焦的可编辑内容是否为空,如果不为空
  2015. var textRange = document.body.createTextRange(); //修改聚焦内容
  2016. textRange.moveToElementText(el); //修改聚焦内容
  2017. textRange.collapse(false); //修改聚焦内容
  2018. textRange.select(); //修改聚焦内容
  2019. }
  2020. };
  2021. /*在元素后面插入新元素
  2022. * el 为插入的总元素
  2023. * newEl 为要插入的元素
  2024. */
  2025. U.MD.O.E.After = function (el, newEl) {
  2026. var _this = el;
  2027. var parentEl = _this.parentNode; //获取父级
  2028. var child = parentEl.childNodes; //获取子集
  2029. var last = child[child.length - 1] || parentEl.lastChild;
  2030. if (last === _this) {//判断是否可以直接插入,如果可以
  2031. parentEl.appendChild(newEl); //调用方法,插入
  2032. } else {//如果不可以
  2033. parentEl.insertBefore(newEl, _this.nextSibling); //调用方法,插入
  2034. }
  2035. return newEl; //返回插入元素
  2036. };
  2037. //获取被拖拽选中时的 左上角 和右上角的 单元格
  2038. U.MD.O.E.cellCheckd = function () {
  2039. var _arr = [],
  2040. _posA,
  2041. _posB,
  2042. _checkCell = document.querySelectorAll(".U_MD_O_E_cellCheckd"); //所有被选中的单元格
  2043. _checkCell = U.UF.C.toArray(_checkCell); //转成Array类型
  2044. _checkCell.sort(function (a, b) {
  2045. _idA = +(a.id.replace(/[^0-9]/ig, "")); //获取拖拽选中的左上角
  2046. _idB = +(b.id.replace(/[^0-9]/ig, "")); //获取拖拽选中的右上角
  2047. return _idA - _idB;
  2048. });
  2049. _arr.push(_checkCell[0]); //添加进数据中
  2050. _arr.push(_checkCell[_checkCell.length - 1]); //添加进数据中
  2051. return _arr;
  2052. }
  2053. /*
  2054. 获取json的数量
  2055. * json 要计算的json数据
  2056. */
  2057. U.MD.O.E.jsonLen = function (json) {
  2058. var _json = json, //获取数据
  2059. _len = 0; //定义计数变量
  2060. for (var i in json) {
  2061. _len++; //开始循环,修改计数变量
  2062. }
  2063. return _len; //返回计数变量
  2064. }
  2065. /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  2066. /*
  2067. * excel的传入后台的数据结构
  2068. * type 为操作数据时类型
  2069. * content 为主要数据
  2070. */
  2071. U.MD.O.E.excelInfo = function (type, content) {
  2072. return {
  2073. sendId: U.MD.O.E.fileinfo.UserId, //发送人id
  2074. receiveId: U.MD.O.E.fileinfo.UserDirectoryID, //文件id excelId
  2075. type: 'us.excel', //消息类型
  2076. messageInfo: {
  2077. type: type, //"blur",
  2078. worksheetId: U.MD.O.E.taskId, //工作表id
  2079. content: content, //修改内容
  2080. docId: U.MD.O.E.fileinfo.UserDirectoryID, //excelId
  2081. pageId: US.pageId //当前文档id 页面
  2082. }
  2083. };
  2084. };
  2085. /*
  2086. U.MD.O.W.E.connect 链接后台,并发送请求
  2087. */
  2088. U.MD.O.E.connect = function () {
  2089. if (US.userInfo.userid && U.MD.O.E.fileinfo.UserDirectoryID) { //判断用户是否登录
  2090. U.A.Request(US.SCOKET, ["login", JSON.stringify({ //发送登录请求
  2091. pageId: US.pageId, //页面id
  2092. userId: US.userInfo.userid, //用户id 不会改变的
  2093. userName: US.userInfo.UserName, //用户名
  2094. type: US.systemId //判断是PC 还是 移动
  2095. })], U.MD.O.E.pollingAsyn); //回调进 U.MD.O.W.E.pollingAsyn 函数
  2096. }
  2097. U.MD.O.E.addExcel();
  2098. };
  2099. /*
  2100. * 发送send请求到后台
  2101. * message 发送给后台的数据
  2102. */
  2103. U.MD.O.E.send = function (message) {
  2104. U.A.Request(US.SCOKET, ["send", JSON.stringify({
  2105. "us.excel": Array.prototype.concat(message)
  2106. })]); //调用方法,向后台发请求
  2107. }
  2108. /*
  2109. * 发送addExcel请求到后台
  2110. */
  2111. U.MD.O.E.addExcel = function () { //添加文档
  2112. var post = {
  2113. excelId: U.MD.O.E.fileinfo.UserDirectoryID, //excel 的 id
  2114. pageId: US.pageId, //页面id 唯一识别
  2115. userId: US.userInfo.userid //用户id
  2116. };
  2117. U.A.Request(US.SCOKET, ["addExcel", JSON.stringify(post)], function (v) {
  2118. console.log(v.value);
  2119. }); //调用方法,向后台发请求
  2120. };
  2121. /*
  2122. * 文件名修改方法
  2123. */
  2124. U.MD.O.E.TitleChange = function () {
  2125. var _fileinfo = U.MD.O.E.fileinfo, //获取全局变量
  2126. _name = [];
  2127. _name[0] = top.$('#UD_Excel' + _fileinfo.UserDirectoryID + ' .U_MD_O_H_head_navigation_Title')[0].value; //前台修改内容
  2128. U.MD.O.E.dataChange(U.MD.O.E.excelInfo("updateTitle", _name)); //调用修改方法
  2129. }
  2130. /*
  2131. * 文件修改人:15互联网3 周琳恒
  2132. * 最后大改日期:2019 04 08
  2133. */
  2134. //U.MD.O.E.sitePreview = function () {
  2135. // var _excelinfo = U.MD.O.E.fileinfo; //获取文档信息
  2136. // if (_excelinfo.UserDirectoryID && _excelinfo.UserId && _excelinfo.UserallDirectoryName) { //判断文档是否存在
  2137. // var _data = U.A.Request("http://cd.1473.cn/php", ["db.1473.cn", "UseStudio_DNS", 'GetDnsInfoByFileId', _excelinfo.UserDirectoryID]).value; //获取该文档的域名
  2138. // if (_data.length) { //判断域名是否存在
  2139. // window.open('http://' + _data[0].AppId + '.1473.cn/' + _data[0].Domain) //跳转页面
  2140. // } else {
  2141. // var _type = _excelinfo.UserDirectoryExtendType && _excelinfo.UserDirectoryExtendType.toLowerCase(), //获取文档类型
  2142. // _callback = { //设置回调接口2
  2143. // modifyDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) }, //修改命名后的回调
  2144. // addDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) }, //添加域名后的回调
  2145. // deleteDomain: function (res) { $('#U_MD_O_H_body_left_href_pay_a')[0].innerHTML = ""; U.MD.O.E.Panel.loadlink({ UserDirectoryID: res.FileId }) } //删除域名后的回调
  2146. // };
  2147. // switch (_type) { //转文档类型字符串
  2148. // case 'uw': case 'un': _type = 'word'; break;
  2149. // case 'ue': _type = 'execl'; break;
  2150. // default: _type = 'word'; break;
  2151. // }
  2152. // top.U.MD.DS.createDefaultDomainInit(_excelinfo, _type, _callback); //调用域名管理中心的接口
  2153. // }
  2154. // } else {
  2155. // U.MD.O.E.Save();
  2156. // }
  2157. //}
  2158. //U.MD.O.E.initEditor = function (synergy) {
  2159. // var _el = $(".U_MD_O_E_excelBox")[0]; //获取编辑区域的元素
  2160. // if (U.MD.O.E.initExcel) {
  2161. // _el.innerHTML = U.MD.O.E.excelInfo.UsOffice || ""; //编辑器全局区域
  2162. // if (_el.innerHTML == "") {
  2163. // U.UF.E.key.addDelLine(_el);
  2164. // }
  2165. // _el.editor.idarr = U.UF.E.key.getLineIdArr(_el);
  2166. // } else {
  2167. // U.UF.E.initEditor(_el, synergy ? U.MD.O.E.operationNotice : null, U.MD.O.fileinfo.UsOffice); //初始化编辑区域
  2168. // // U.MD.O.W.E.titlestyle();//标题样式
  2169. // U.MD.O.E.initExcel = true;
  2170. // // var _permission = U.MD.O.W.permission; //获取权限
  2171. // // if (!_permission.edit) {//判断其有没有编辑权限
  2172. // // var _el = $("#U_MD_O_H_wordEditor")[0]; //获取编辑区域的元素
  2173. // // _el.contentEditable = false; //如果没有编辑权限,就把编辑区域改为不可编辑
  2174. // // }
  2175. // }
  2176. //}