list.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. /*
  2. * @description:
  3. * @Author: CP
  4. * @Date: 2020-12-28 14:41:49
  5. * @FilePath: \cld\global\gridManager\fee\list.js
  6. */
  7. // 表格唯一标识
  8. const gridManagerName = 'test';
  9. // 博文类型
  10. // const TYPE_MAP = {
  11. // '1': 'HTML/CSS',
  12. // '2': 'nodeJS',
  13. // '3': 'javaScript',
  14. // '4': '前端鸡汤',
  15. // '5': 'PM Coffee',
  16. // '6': '前端框架',
  17. // '7': '前端相关'
  18. // };
  19. // 公开方法列表
  20. // const GM_PUBLISH_METHOD_MAP = {
  21. // init: {
  22. // key: 'init',
  23. // relyInit: false,
  24. // title: '初始化',
  25. // code: 'demo1.initGM(document.querySelector("table"));'
  26. // },
  27. // get: {
  28. // key: 'get',
  29. // relyInit: true, // 是否依赖init方法
  30. // title: '获取表格的实时配置信息',
  31. // code: `GridManager.get('${gridManagerName}');`
  32. // },
  33. // version: {
  34. // key: 'version',
  35. // relyInit: false,
  36. // title: '获取当前GridManager的版本号',
  37. // code: 'GridManager.version;'
  38. // },
  39. // getLocalStorage: {
  40. // key: 'getLocalStorage',
  41. // relyInit: true,
  42. // title: '获取表格用户记忆',
  43. // code: `GridManager.getLocalStorage('${gridManagerName}');`
  44. // },
  45. // resetLayout: {
  46. // key: 'resetLayout',
  47. // relyInit: true,
  48. // title: '重置表格布局',
  49. // code: `GridManager.resetLayout('${gridManagerName}', '800px', '500px');`
  50. // },
  51. // clear: {
  52. // key: 'clear',
  53. // relyInit: true,
  54. // title: '清除表格记忆数据',
  55. // code: `GridManager.clear('${gridManagerName}');`
  56. // },
  57. // getTableData: {
  58. // key: 'getTableData',
  59. // relyInit: true,
  60. // title: '获取指定tr所使用的数据',
  61. // code: `GridManager.getTableData('${gridManagerName}');`
  62. // },
  63. // getRowData: {
  64. // key: 'getRowData',
  65. // relyInit: true,
  66. // title: '获取指定tr所使用的数据',
  67. // code: `GridManager.getRowData('${gridManagerName}', document.querySelector("table[grid-manager=${gridManagerName}] tbody tr"));`
  68. // },
  69. // updateRowData: {
  70. // key: 'updateRowData',
  71. // relyInit: true,
  72. // title: '更新指定行所使用的数据',
  73. // code: `GridManager.updateRowData('${gridManagerName}', 'id', {id: 92, title: 'ccc'});`
  74. // },
  75. // updateTreeState: {
  76. // key: 'updateTreeState',
  77. // relyInit: true,
  78. // title: '更新树的展开状态',
  79. // code: `GridManager.updateTreeState('${gridManagerName}', true);`
  80. // },
  81. // setSort: {
  82. // key: 'setSort',
  83. // relyInit: true,
  84. // title: '手动设置排序',
  85. // code: `GridManager.setSort('${gridManagerName}', {createDate: 'ASC'});`
  86. // },
  87. // setConfigVisible: {
  88. // key: 'setConfigVisible',
  89. // relyInit: true,
  90. // title: '设置表头配置区域可视状态',
  91. // code: `GridManager.setConfigVisible('${gridManagerName}', true);`
  92. // },
  93. // showTh: {
  94. // key: 'showTh',
  95. // relyInit: true,
  96. // title: '设置列为可视状态',
  97. // code: `GridManager.showTh('${gridManagerName}', 'pic');`
  98. // },
  99. // hideTh: {
  100. // key: 'hideTh',
  101. // relyInit: true,
  102. // title: '设置列为隐藏状态',
  103. // code: `GridManager.hideTh('${gridManagerName}', 'pic');`
  104. // },
  105. // exportGrid: {
  106. // key: 'exportGrid',
  107. // relyInit: true,
  108. // title: '导出指定表格',
  109. // code: `GridManager.exportGrid('${gridManagerName}', 'demo中使用的导出').then(res=>{console.log('success')}).catch(err=>{console.error('error', err)});`
  110. // },
  111. // setQuery: {
  112. // key: 'setQuery',
  113. // relyInit: true,
  114. // title: '更改在生成组件时所配置的参数query',
  115. // code: `GridManager.setQuery('${gridManagerName}', {'userName':'baukh','sex':'男'});`
  116. // },
  117. // setAjaxData: {
  118. // key: 'setAjaxData',
  119. // relyInit: true,
  120. // title: '用于再次配置ajaxData数据',
  121. // code: `GridManager.setAjaxData('${gridManagerName}', {data: [{title: '通过setAjaxData动态添加的数据,其它项为空'}], totals: 1});`
  122. // },
  123. // refreshGrid: {
  124. // key: 'refreshGrid',
  125. // relyInit: true,
  126. // title: '刷新表格',
  127. // code: `GridManager.refreshGrid('${gridManagerName}');`
  128. // },
  129. // renderGrid: {
  130. // key: 'renderGrid',
  131. // relyInit: true,
  132. // title: '渲染表格',
  133. // code: `GridManager.renderGrid('${gridManagerName}');`
  134. // },
  135. // getCheckedTr: {
  136. // key: 'getCheckedTr',
  137. // relyInit: true,
  138. // title: '获取当前选中的行',
  139. // code: `GridManager.getCheckedTr('${gridManagerName}');`
  140. // },
  141. // getCheckedData: {
  142. // key: 'getCheckedData',
  143. // relyInit: true,
  144. // title: '获取选中行的渲染数据',
  145. // code: `GridManager.getCheckedData('${gridManagerName}');`
  146. // },
  147. // setCheckedData: {
  148. // key: 'setCheckedData',
  149. // relyInit: true,
  150. // title: '设置选中的数据',
  151. // code: `GridManager.setCheckedData('${gridManagerName}', [GridManager.getTableData('${gridManagerName}')[1]]);`
  152. // },
  153. // cleanData: {
  154. // key: 'cleanData',
  155. // relyInit: true,
  156. // title: '清除指定表格数据',
  157. // code: `GridManager.cleanData('${gridManagerName}');`
  158. // },
  159. // print: {
  160. // key: 'print',
  161. // relyInit: true,
  162. // title: '打印当前页',
  163. // code: `GridManager.print('${gridManagerName}');`
  164. // },
  165. // showLoading: {
  166. // key: 'showLoading',
  167. // relyInit: true,
  168. // title: '显示加载中',
  169. // code: `GridManager.showLoading('${gridManagerName}');`
  170. // },
  171. // hideLoading: {
  172. // key: 'hideLoading',
  173. // relyInit: true,
  174. // title: '隐藏加载中',
  175. // code: `GridManager.hideLoading('${gridManagerName}', 300);`
  176. // },
  177. // destroy: {
  178. // key: 'destroy',
  179. // relyInit: true,
  180. // title: '消毁指定的GridManager实例',
  181. // code: `GridManager.destroy('${gridManagerName}');`
  182. // }
  183. // };
  184. const demo1 = {
  185. /**
  186. * 初始化搜索区域
  187. */
  188. initSearch: function () {
  189. // 渲染下拉框
  190. // var typeSelect = document.querySelector('.search-area select[name="type"]');
  191. // for(let key in TYPE_MAP) {
  192. // const option = document.createElement('option');
  193. // option.value = key;
  194. // option.innerText = TYPE_MAP[key];
  195. // typeSelect.appendChild(option);
  196. // }
  197. // 绑定搜索事件
  198. document.querySelector('.search-action').addEventListener('click', function () {
  199. var _query = {
  200. kw: document.querySelector('[name="kw"]').value,
  201. categoryId: document.querySelector('[name="categoryId"]').value,
  202. year: document.querySelector('[name="year"]').value,
  203. month: document.querySelector('[name="month"]').value,
  204. staffId: document.querySelector('[name="staffId"]').value,
  205. feeType: document.querySelector('[name="feeType"]').value,
  206. };
  207. table.GM('setQuery', _query, function () {
  208. console.log('setQuery执行成功');
  209. });
  210. });
  211. // 绑定重置
  212. document.querySelector('.reset-action').addEventListener('click', function () {
  213. var now = new Date();
  214. document.querySelector('[name="kw"]').value = '';
  215. document.querySelector('[name="categoryId"]').value = '';
  216. document.querySelector('[name="year"]').value = now.getFullYear();
  217. document.querySelector('[name="month"]').value = '';
  218. document.querySelector('[name="staffId"]').value = '';
  219. document.querySelector('[name="feeType"]').value = '';
  220. });
  221. },
  222. /**
  223. * 初始化方法区域
  224. */
  225. // initFN: () => {
  226. // const fnSelect = document.querySelector('.fn-select');
  227. // const fnRun = document.querySelector('.fn-run');
  228. // const fnCode = document.querySelector('.fn-code');
  229. // const fnRunInfo = document.querySelector('.fn-run-info');
  230. // // 渲染选择区域, instantiated: 是否已经实例化
  231. // const renderSelect = instantiated => {
  232. // let liStr = '<option value="-1">请选择方法</option>';
  233. // for (let key in GM_PUBLISH_METHOD_MAP) {
  234. // let fn = GM_PUBLISH_METHOD_MAP[key];
  235. // let disabled = !instantiated && fn.relyInit ? 'disabled' : '';
  236. // liStr = `${liStr}<option value="${key}" ${disabled} title="${fn.title}">${key}</option>`;
  237. // }
  238. // fnSelect.innerHTML = liStr;
  239. // };
  240. // renderSelect(true);
  241. // // bind input change event
  242. // fnSelect.addEventListener('change', function () {
  243. // fnCode.value = GM_PUBLISH_METHOD_MAP[this.value].code;
  244. // fnRun.setAttribute('now-fun', this.value);
  245. // });
  246. // // bind run event
  247. // fnRun.addEventListener('click', function () {
  248. // if (!fnCode.value) {
  249. // fnRunInfo.innerHTML = '请通过选择方法生成所需要执行的代码';
  250. // return;
  251. // }
  252. // fnRunInfo.innerHTML = '';
  253. // const log = eval(fnCode.value);
  254. // const nowFn = fnRun.getAttribute('now-fun');
  255. // console.group(nowFn);
  256. // console.log(fnCode.value);
  257. // console.log(log);
  258. // console.groupEnd();
  259. // try {
  260. // if (nowFn === 'init') {
  261. // renderSelect(true);
  262. // }
  263. // if (nowFn === 'destroy') {
  264. // renderSelect(false);
  265. // }
  266. // fnRunInfo.innerHTML = `<span class="success-info">
  267. // <a href="http://gridmanager.lovejavascript.com/api/index.html#${nowFn}" target="_blank">${nowFn}</a>
  268. // 执行成功, 请打开控制台查看具体信息
  269. // </span>`;
  270. // } catch (e) {
  271. // fnRunInfo.innerHTML = `<span class="error-info">
  272. // <a href="http://gridmanager.lovejavascript.com/api/index.html#${nowFn}" target="_blank">${nowFn}</a>
  273. // 执行失败, 请打开控制台查看具体信息
  274. // </span>`;
  275. // console.error('执行错误: ', e);
  276. // }
  277. // });
  278. // },
  279. /**
  280. * 初始化表格
  281. */
  282. initGM: function () {
  283. new window.GridManager(table, {
  284. gridManagerName: 'test',
  285. width: '100%',
  286. height: '100%',
  287. // 初始渲染时是否加载数据
  288. // firstLoading: false,
  289. supportAutoOrder: false,
  290. // 自动序号配置
  291. // autoOrderConfig: {
  292. // // 固定列
  293. // fixed: 'left'
  294. // },
  295. supportCheckbox: false,
  296. // 选择框配置
  297. // checkboxConfig: {
  298. // // 使用单选
  299. // // useRadio: true,
  300. // // 使用行选中
  301. // // useRowCheck: true,
  302. // key: 'id',
  303. // // 复选时最大可选数
  304. // // max: 2,
  305. // // 固定列
  306. // fixed: 'left'
  307. // },
  308. // 是否使用无总条数模式
  309. // useNoTotalsMode: true,
  310. // 是否开启分页
  311. supportAjaxPage: true,
  312. // 排序模式,single(升降序单一触发) overall(升降序整体触发)
  313. sortMode: 'single',
  314. // supportAdjust: false,
  315. // 是否开启配置功能
  316. // supportConfig: false,
  317. // 是否开启导出
  318. // supportExport: false,
  319. // 是否开启打印
  320. // supportPrint: false,
  321. // 右键菜单
  322. supportMenu: true,
  323. // menuHandler: list => {
  324. // list.unshift({
  325. // content: '自定义菜单',
  326. // line: true,
  327. // onClick: _ => {
  328. // alert(_);
  329. // }
  330. // });
  331. // return list;
  332. // },
  333. // 禁用分割线
  334. // disableLine: true,
  335. // 设置表头的icon图标是否跟随文本
  336. // isIconFollowText: true,
  337. // 组合排序
  338. // isCombSorting: true,
  339. // 合并排序
  340. // mergeSort: true,
  341. // 禁用边框线
  342. // disableBorder: true,
  343. // 行移动
  344. // supportMoveRow: true,
  345. // moveRowConfig: {
  346. // key: 'priority',
  347. // useSingleMode: true,
  348. // fixed: 'left',
  349. // handler: (list, tableData) => {
  350. // //console.log(list, tableData);
  351. // }
  352. // },
  353. // 禁用缓存
  354. disableCache: false,
  355. ajaxData: function (settings, params) {
  356. // document.querySelector('[name="categoryId"]').value = params.categoryId || "";
  357. return '/json/fee';
  358. },
  359. // 导出配置
  360. exportConfig: {
  361. fileName: query => {
  362. const date = new Date();
  363. let fileName = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
  364. for (let key in query) {
  365. fileName = `${fileName}-${key}=${query[key]}`;
  366. }
  367. return fileName;
  368. },
  369. suffix: 'xls'
  370. },
  371. ajaxType: 'GET',
  372. // 选择事件执行前事件
  373. checkedBefore: function (checkedList, isChecked, row) {
  374. console.log('checkedBefore==', checkedList, isChecked, row);
  375. if (row && row.id === 90) {
  376. alert('该节点在checkedBefore中配置为不可选');
  377. }
  378. return row && row.id !== 90;
  379. },
  380. // 选择事件执行后事件
  381. checkedAfter: function (checkedList, isChecked, row) {
  382. console.log('checkedAfter==', checkedList, isChecked, row);
  383. },
  384. // 全选事件执行前事件
  385. checkedAllBefore: function (checkedList, isChecked) {
  386. console.log('checkedAllBefore==', checkedList, isChecked);
  387. //
  388. // if (isChecked) {
  389. // alert('不能取消全选');
  390. // }
  391. // return !isChecked;
  392. },
  393. // 全选事件执行后事件
  394. checkedAllAfter: function (checkedList, isChecked) {
  395. console.log('checkedAllAfter==', checkedList, isChecked);
  396. },
  397. // 执行排序前事件
  398. sortingBefore: function (query) {
  399. console.log('sortingBefore', query);
  400. },
  401. // 排行排序后事件
  402. sortingAfter: function (query) {
  403. console.log('sortingAfter', query);
  404. },
  405. // AJAX请求前事件函数
  406. ajaxBeforeSend: function (promise) {
  407. console.log('ajaxBeforeSend');
  408. },
  409. // AJAX成功事件函数
  410. ajaxSuccess: function (response) {
  411. console.log('ajaxSuccess');
  412. },
  413. // AJAX失败事件函数
  414. ajaxError: function (errorInfo) {
  415. console.log('ajaxError');
  416. },
  417. // AJAX结束事件函数
  418. ajaxComplete: function (complete) {
  419. console.log('ajaxComplete');
  420. },
  421. adjustBefore: eve => {
  422. console.log('adjustBefore=>', eve);
  423. },
  424. adjustAfter: eve => {
  425. console.log('adjustAfter=>', eve);
  426. },
  427. // 执行请求后执行程序
  428. // responseHandler: res => {
  429. // res.data.forEach(item => {
  430. // // 用id模拟优先级字段
  431. // item.priority = item.id;
  432. // });
  433. // return res;
  434. // },
  435. // 单行数据渲染时执行程序
  436. // rowRenderHandler: (row, index) => {
  437. // // if (row.id === 90) {
  438. // // row.gm_checkbox = true;
  439. // // }
  440. // // 指定第92行不可选中
  441. // if (row.id === 92) {
  442. // // row.gm_checkbox = true;
  443. // row.gm_checkbox_disabled = true;
  444. // row.gm_row_class_name = 'test-row-class';
  445. // }
  446. // return row;
  447. // },
  448. emptyTemplate: settings => {
  449. return `<div style="text-align: center;">${settings.query.title ? '搜索为空' : '暂无数据'}</div>`;
  450. },
  451. // 单个td的hover事件
  452. // cellClick: (row, rowIndex, colIndex) => {
  453. // // console.log(row, rowIndex, colIndex);
  454. // return {
  455. // text: '这里有个提示',
  456. // position: 'left'
  457. // };
  458. // },
  459. // rowHover: (a, b, c) => {
  460. // return {
  461. // text: '这里有个提示',
  462. // position: 'right'
  463. // };
  464. // },
  465. // useWordBreak: true,
  466. fullColumn: {
  467. useFold: true,
  468. fixed: 'left', // 折叠事件列固定方向
  469. openState: false,
  470. bottomTemplate: function(row, index){
  471. return `
  472. <p>费用说明</p>
  473. <pre>${row.explanation}</pre>`;
  474. }
  475. },
  476. columnData: [
  477. {
  478. key: 'staffName',
  479. width: '60px',
  480. text: '上报人',
  481. disableMoveRow: true,
  482. // 使用函数返回 dom node
  483. // template: function (title, row) {
  484. // var titleNode = document.createElement('a');
  485. // titleNode.setAttribute('href', `/expensesDoc/10`);
  486. // titleNode.setAttribute('title', title);
  487. // titleNode.setAttribute('target', '_blank');
  488. // titleNode.innerText = title;
  489. // titleNode.title = `点击阅读[${row.title}]`;
  490. // titleNode.classList.add('plugin-action');
  491. // return titleNode;
  492. // }
  493. },
  494. {
  495. key: 'Rtype',
  496. // remind: '报销单,借款,对公汇款,培训班',
  497. width: '90px',
  498. text: '费用类型',
  499. disableMoveRow: true
  500. },
  501. {
  502. key: 'sum',
  503. width: '100px',
  504. text: '费用总金额',
  505. disableMoveRow: true
  506. },
  507. {
  508. key: 'categoryValue',
  509. width: '60px',
  510. text: '办事处',
  511. disableMoveRow: true
  512. },
  513. {
  514. key: 'receiptOrder',
  515. width: '140px',
  516. text: '费用单号',
  517. disableMoveRow: true,
  518. template: function (receiptOrder, row) {
  519. var titleNode = document.createElement('a');
  520. titleNode.setAttribute('href', `/expensesDoc/${row.ridOld}`);
  521. titleNode.setAttribute('receiptOrder', receiptOrder);
  522. titleNode.setAttribute('target', '_blank');
  523. titleNode.innerText = receiptOrder;
  524. titleNode.title = `详情[${row.receiptOrder}]`;
  525. return titleNode;
  526. }
  527. },
  528. {
  529. key: 'explanation',
  530. text: '费用说明',
  531. disableMoveRow: true,
  532. // template: function (explanation, row) {
  533. // var titleNode = document.createElement('pre');
  534. // titleNode.innerText = explanation;
  535. // titleNode.title = `点击阅读[${row.explanation}]`;
  536. // return titleNode;
  537. // }
  538. },
  539. {
  540. key: 'date',
  541. width: '90px',
  542. text: '创建时间',
  543. disableMoveRow: true
  544. },
  545. {
  546. key: 'pastDate',
  547. width: '90px',
  548. text: '审批时间',
  549. disableMoveRow: true
  550. },
  551. {
  552. key: 'statusValue',
  553. width: '90px',
  554. text: '状态',
  555. disableMoveRow: true
  556. },
  557. // {
  558. // key: 'type',
  559. // remind: {
  560. // text: '[HTML/CSS, nodeJS, javaScript, 前端鸡汤, PM Coffee, 前端框架, 前端相关]',
  561. // style: {
  562. // width: '300px',
  563. // 'text-align': 'left'
  564. // }
  565. // },
  566. // text: '费用类型',
  567. // align: 'left',
  568. // width: '150px',
  569. // sorting: '',
  570. // disableMoveRow: true,
  571. // // 表头筛选条件, 该值由用户操作后会将选中的值以{key: value}的形式覆盖至query参数内。非必设项
  572. // // filter: {
  573. // // // 筛选条件列表, 数组对象。格式: [{value: '1', text: 'HTML/CSS'}],在使用filter时该参数为必设项。
  574. // // option: [
  575. // // {value: '1', text: 'HTML/CSS'},
  576. // // {value: '2', text: 'nodeJS'},
  577. // // {value: '3', text: 'javaScript'},
  578. // // {value: '4', text: '前端鸡汤'},
  579. // // {value: '5', text: 'PM Coffee'},
  580. // // {value: '6', text: '前端框架'},
  581. // // {value: '7', text: '前端相关'}
  582. // // ],
  583. // // // 筛选选中项,字符串, 未存在选中项时设置为''。 在此设置的选中的过滤条件将会覆盖query
  584. // // selected: '3',
  585. // // // 否为多选, 布尔值, 默认为false。非必设项
  586. // // isMultiple: false
  587. // // },
  588. // // template: function (type, row) {
  589. // // return TYPE_MAP[type];
  590. // // }
  591. // },
  592. // {
  593. // key: 'info',
  594. // remind: 'the info',
  595. // width: '100px',
  596. // text: '费用结算',
  597. // disableMoveRow: true
  598. // },
  599. // {
  600. // key: 'username',
  601. // remind: 'the username',
  602. // align: 'center',
  603. // width: '100px',
  604. // text: '费用所在办事处',
  605. // disableMoveRow: true,
  606. // template: (username, row) => {
  607. // return `<a class="plugin-action" href="https://github.com/baukh789" target="_blank" ${row.id} title="去看看${username}的github">${username}</a>`;
  608. // }
  609. // },
  610. // {
  611. // key: 'createDate',
  612. // width: '130px',
  613. // text: '费用单号',
  614. // sorting: 'DESC',
  615. // align: 'left',
  616. // // 使用函数返回 htmlString
  617. // template: (createDate, row) => {
  618. // return new Date(createDate).toLocaleDateString();
  619. // }
  620. // },
  621. // {
  622. // key: 'lastDate',
  623. // width: '130px',
  624. // text: '最后修改时间',
  625. // merge: 'text',
  626. // sorting: '',
  627. // // 使用函数返回 htmlString
  628. // template: function (lastDate, row) {
  629. // return new Date(lastDate).toLocaleDateString();
  630. // }
  631. // },
  632. // {
  633. // key: 'priority',
  634. // text: '优先级',
  635. // // fixed: 'right',
  636. // align: 'right',
  637. // width: '100px'
  638. // }
  639. ]
  640. }, query => {
  641. // 渲染完成后的回调函数
  642. console.log('渲染完成后的回调函数:', query);
  643. });
  644. },
  645. /**
  646. * 编辑功能
  647. */
  648. editRowData: function (dom) {
  649. window.GridManager.updateRowData('test', 'id', { id: window.parseInt(dom.getAttribute('data-id')), lastDate: new Date().getTime() });
  650. }
  651. };
  652. // GridManager 渲染
  653. const table = document.querySelector('#feeList');
  654. demo1.initSearch(table);
  655. demo1.initGM(table);
  656. //demo1.initFN();