exportExcel.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <!DOCTYPE html>
  2. <html>
  3. <head lang='zh'>
  4. <meta charset='utf-8'>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="renderer" content="webkit" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0" />
  8. <title>Luckysheet</title>
  9. <link rel='stylesheet' href='/static/js/luckysheet/plugins/css/pluginsCss.css' />
  10. <link rel='stylesheet' href='/static/js/luckysheet/plugins/plugins.css' />
  11. <link rel='stylesheet' href='/static/js/luckysheet/css/luckysheet.css' />
  12. <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
  13. <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
  14. <script>
  15. var _PageHeight = document.documentElement.clientHeight,
  16. _PageWidth = document.documentElement.clientWidth;
  17. var _LoadingTop = _PageHeight > 61 ? (_PageHeight - 61) / 2 : 0,
  18. _LoadingLeft = _PageWidth > 215 ? (_PageWidth - 215) / 2 : 0;
  19. var _LoadingHtml = '<div id="loadingDiv" style="position:absolute;left:0;width:100%;height:' + _PageHeight + 'px;top:0;background:#f3f8ff;opacity:1;filter:alpha(opacity=80);z-index:10000;"><div style="position: absolute; cursor1: wait; left: ' + _LoadingLeft + 'px; top:' + _LoadingTop + 'px; width: auto; height: 57px; line-height: 57px; padding-left: 50px; padding-right: 5px; color: #696969; font-family:\'Microsoft YaHei\';"><img style="width:200px;height:200px" src="../images/loading.gif"></div></div>';
  20. document.write(_LoadingHtml);
  21. document.onreadystatechange = completeLoading;
  22. function completeLoading() {
  23. if (document.readyState == "complete") {
  24. var loadingMask = document.getElementById('loadingDiv');
  25. loadingMask.parentNode.removeChild(loadingMask);
  26. }
  27. }
  28. </script>
  29. <script src="/static/js/layui.js?v=1.0.0"></script>
  30. <script src="/static/js/exceljs.js"></script>
  31. <script src="/static/js/fileSave.js"></script>
  32. <script src="/static/js/luckysheet/luckSheetExcel.js"></script>
  33. <script src="/static/js/luckysheet/plugins/js/plugin.js"></script>
  34. <script src="/static/js/luckysheet/luckysheet.umd.js"></script>
  35. <script src="/static/js/api.config.js"></script>
  36. <script src="/static/js/util.js?v=1.0.0"></script>
  37. <script src="/static/js/url.js?v=1.0.0"></script>
  38. </head>
  39. <style>
  40. * {
  41. padding: 0;
  42. margin: 0;
  43. }
  44. html,
  45. body {
  46. height: 100%;
  47. }
  48. .select-box {
  49. width: 300px;
  50. padding: 10px;
  51. height: 5%;
  52. }
  53. </style>
  54. <body>
  55. <div style="height:97%;width: 100%;">
  56. <div class="layui-inline">
  57. <label class="layui-form-label">年月选择器</label>
  58. <div class="layui-input-inline">
  59. <input type="text" class="layui-input" id="year" placeholder="yyyy">
  60. </div>
  61. </div>
  62. <div id="luckysheet" style="width:100%;height:95%">
  63. </div>
  64. </div>
  65. <script>
  66. var lockFlag;
  67. var roterId = ''
  68. var id = '';
  69. var opations = []
  70. $(function () {
  71. lockFlag = getQueryString('status').replace(/'/g, '')
  72. roterId = getQueryString('id')
  73. if (typeof (JSON.parse(decodeURIComponent(roterId))) == 'number') {
  74. id = JSON.parse(decodeURIComponent(roterId))
  75. } else {
  76. id = JSON.parse(decodeURIComponent(roterId))[0].taskId
  77. }
  78. opations = JSON.parse(decodeURIComponent(roterId))
  79. getData(id)
  80. })
  81. layui.use(['laydate', 'form'], function () {
  82. var laydate = layui.laydate;
  83. var form = layui.form;
  84. var htmlStr = ''
  85. laydate.render({
  86. elem: '#year'
  87. , type: 'year', done: function (value, date, endDate) {
  88. console.log(value)
  89. }
  90. });
  91. })
  92. function getQueryString(name) {
  93. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  94. var r = window.top.location.href.split('?')[1].match(reg);
  95. if (r != null) return decodeURI(r[2]); return null;
  96. }
  97. var excelId = ""
  98. var excelData;
  99. var flag = false
  100. function getData(id) {
  101. window.luckysheet.destroy();
  102. util.ajaxJson("", ctx + '/market/preTask/load', {
  103. "id": id,
  104. "opMonth": "",
  105. "sts": '0'
  106. }, function (res) {
  107. if (res.result == 0) {
  108. if (res.body[0].config.authority) {
  109. res.body[0].config.authority.sheet = 0
  110. }
  111. excelData = res.body
  112. initExcel(res.body)
  113. if (excelId == "") {
  114. excelId = res.body[0].id
  115. }
  116. }
  117. });
  118. }
  119. function initExcel(data) {
  120. if (lockFlag == 'add' || lockFlag == 'update') { // 新增模板过来直接编辑
  121. flag = true
  122. }
  123. try {
  124. luckysheet.create({
  125. container: 'luckysheet',
  126. data: data,
  127. showsheetbar: false, // 底部sheet显示/隐藏
  128. showstatisticBar: false, // 底部计数
  129. myFolderUrl: false,
  130. showinfobar: true,
  131. allowUpdate: false,
  132. allowEdit: flag, // 是否允许前台编辑
  133. column: 12,
  134. title: data[0].fileName,
  135. row: 10,
  136. lang: 'zh',
  137. showstatisticBar: false, // 底部计数
  138. myFolderUrl: false,
  139. showstatisticBarConfig: {
  140. count: false, // 计数栏
  141. view: false, // 打印视图
  142. zoom: false, // 缩放
  143. },
  144. showinfobar: true,
  145. functionButton: '<button id="updates" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">开启编辑</button> <button id="saves" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">回复</button><button id="save" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">保存</button><button id="goBack" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">返回</button>',
  146. cellRightClickConfig: {
  147. copy: true, // 复制
  148. copyAs: false, // 复制为
  149. paste: true, // 粘贴
  150. insertRow: true, // 插入行
  151. insertColumn: true, // 插入列
  152. deleteRow: true, // 删除选中行
  153. deleteColumn: true, // 删除选中列
  154. deleteCell: false, // 删除单元格
  155. hideRow: false, // 隐藏选中行和显示选中行
  156. hideColumn: false, // 隐藏选中列和显示选中列
  157. rowHeight: false, // 行高
  158. columnWidth: false, // 列宽
  159. clear: false, // 清除内容
  160. matrix: false, // 矩阵操作选区
  161. sort: false, // 排序选区
  162. filter: false, // 筛选选区
  163. chart: false, // 图表生成
  164. image: false, // 插入图片
  165. link: false, // 插入链接
  166. data: false, // 数据验证
  167. cellFormat: false, // 设置单元格格式
  168. mComplete: false,
  169. mCetup: false,
  170. mRevoke: false
  171. },
  172. hook: {
  173. cellMousedown: function (a, b, c) {
  174. if (lockFlag == 'see') {
  175. // window.top.$vm.$message({
  176. // message: '只能查看',
  177. // type: 'info'
  178. // })
  179. } else {
  180. if (flag == false) {
  181. window.top.$vm.$message({
  182. message: '请先点击开启编辑按钮',
  183. type: 'info'
  184. })
  185. } else {
  186. if (b.c == 0 && luckysheet.getSheet().powerFlag == '0') {
  187. window.top.$vm.$message({
  188. message: '当前列为模板预留列不可填写',
  189. type: 'info'
  190. })
  191. return false
  192. }
  193. }
  194. }
  195. },//绑定鼠标事件
  196. cellUpdateBefore: function (r, c) {
  197. if (c == 0 && luckysheet.getSheet().powerFlag == '0') {
  198. return false
  199. }
  200. if (luckysheet.getSheet().readOnly != '') {
  201. var updateList = luckysheet.getSheet().readOnly.split(',')
  202. if (updateList.indexOf(luckysheet.getSheet().data[r][0].v) == -1) {
  203. window.top.$vm.$message({
  204. message: '您无权修改当前行',
  205. type: 'info'
  206. })
  207. return false
  208. }
  209. } else {
  210. if (luckysheet.getSheet().data[r][0] != null) {
  211. window.top.$vm.$message({
  212. message: '您无权修改当前行',
  213. type: 'info'
  214. })
  215. return false
  216. }
  217. }
  218. },
  219. },
  220. })
  221. } catch (err) {
  222. console.log(err)
  223. }
  224. if (lockFlag == 'see') {
  225. $('#saves').hide()
  226. $('#save').hide()
  227. $('#updates').hide()
  228. } else {
  229. if (flag) {
  230. $('#saves').show()
  231. $('#save').show()
  232. $('#updates').hide()
  233. } else {
  234. $('#saves').hide()
  235. $('#save').hide()
  236. $('#updates').show()
  237. }
  238. }
  239. initHandel()
  240. }
  241. function initHandel() {
  242. $('#goBack').off("click").click(function () {
  243. window.top.$vm.$router.push('/leader')
  244. })
  245. $('#updates').off("click").click(function () {
  246. util.ajaxJson("", ctx + '/market/preTask/lock', {
  247. taskId: id
  248. }, function (data) {
  249. if (data.result == 1) {
  250. window.top.$vm.$message({
  251. message: data.desc,
  252. type: 'info'
  253. })
  254. } else {
  255. $('#saves').show()
  256. $('#save').show()
  257. $('#updates').hide()
  258. flag = true
  259. getData(id)
  260. }
  261. });
  262. })
  263. $('#save').off('click').click(function () {
  264. var sheetName = luckysheet.getSheet().name
  265. var data = luckysheet.getSheet(sheetName)
  266. data.fileName = luckysheet.getWorkbookName()
  267. $('#saves').hide()
  268. $('#updates').show()
  269. data.id = id
  270. util.ajaxJson("正在加载中", ctx + '/market/preTask/saveInfo', {
  271. data: data
  272. }, function (data) {
  273. flag = false
  274. getData(id)
  275. });
  276. })
  277. // 保存
  278. $('#saves').off("click").click(function () {
  279. // 当前工作表名
  280. var sheetName = luckysheet.getSheet().name
  281. var data = luckysheet.getSheet(sheetName)
  282. data.fileName = luckysheet.getWorkbookName()
  283. $('#saves').hide()
  284. $('#updates').show()
  285. data.id = id
  286. util.ajaxJson("正在加载中", ctx + '/market/preTask/save', {
  287. data: data
  288. }, function (data) {
  289. flag = false
  290. window.top.$vm.$router.push('/leader')
  291. });
  292. })
  293. }
  294. </script>
  295. </body>
  296. </html>