gm-printer 10.28.1 → 10.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintcache CHANGED
@@ -1 +1 @@
1
- [{"/Users/joke/Desktop/gm-printer/src/printer/printer.js":"1","/Users/joke/Desktop/gm-printer/src/config.js":"2","/Users/joke/Desktop/gm-printer/src/common/editor_edit_field.js":"3","/Users/joke/Desktop/gm-printer/src/common/common_context_menu.js":"4","/Users/joke/Desktop/gm-printer/src/printer/page.js":"5","/Users/joke/Desktop/gm-printer/src/printer/index.js":"6","/Users/joke/Desktop/gm-printer/src/printer/do_print.js":"7","/Users/joke/Desktop/gm-printer/src/index.js":"8"},{"size":12947,"mtime":1730112542854},{"size":3569,"mtime":1730112081043,"results":"9","hashOfConfig":"10"},{"size":25058,"mtime":1730112453858},{"size":10273,"mtime":1730112252986},{"size":1907,"mtime":1730181054714,"results":"11","hashOfConfig":"10"},{"size":366,"mtime":1730177042822,"results":"12","hashOfConfig":"10"},{"size":4420,"mtime":1730179896410,"results":"13","hashOfConfig":"10"},{"size":1173,"mtime":1730177052800,"results":"14","hashOfConfig":"10"},{"filePath":"15","messages":"16","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1ho4xzn",{"filePath":"17","messages":"18","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19","messages":"20","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21","messages":"22","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23","messages":"24","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/joke/Desktop/gm-printer/src/config.js",[],"/Users/joke/Desktop/gm-printer/src/printer/page.js",[],"/Users/joke/Desktop/gm-printer/src/printer/index.js",[],"/Users/joke/Desktop/gm-printer/src/printer/do_print.js",[],"/Users/joke/Desktop/gm-printer/src/index.js",[]]
1
+ [{"/Users/min/Documents/GMFE/gm-util/gm-printer/src/util.js":"1","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/get_css.js":"2","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/barcode.js":"3","/Users/min/Documents/GMFE/gm-util/gm-printer/src/index.js":"4","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/context_menu.js":"5","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/context_menu.js":"6","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/context_menu.js":"7","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/context_menu.js":"8","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/context_menu.js":"9","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor_special_table.js":"10","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/context_menu.js":"11","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/context_menu.js":"12","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/context_menu.js":"13","/Users/min/Documents/GMFE/gm-util/gm-printer/src/config.js":"14","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_store.js":"15","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_shadow_dom.js":"16","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/get_editor_css.js":"17","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_title.js":"18","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_store.js":"19","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_select.js":"20","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_edit_field.js":"21","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/component.js":"22","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/editor.js":"23","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/editor.js":"24","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/editor.js":"25","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/editor.js":"26","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/editor.js":"27","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor.js":"28","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account_statement/editor.js":"29","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/editor.js":"30","/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/editor.js":"31","/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/tooltip/index.js":"32","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_special_field.js":"33","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/store.js":"34","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/index.js":"35","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/do_print.js":"36","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/finance_printer.js":"37","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table_subtotal_tr.js":"38","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table.js":"39","/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/finance_batch_printer.js":"40","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/page.js":"41","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_subtotal_tr.js":"42","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table.js":"43","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/printer.js":"44","/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/flex/index.js":"45","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_overallOrder_tr.js":"46","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/util.js":"47","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_add_field.js":"48","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/counter.js":"49","/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/common_context_menu.js":"50","/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_diy_overallOrder_tr.js":"51"},{"size":7813,"mtime":1648799098282,"results":"52","hashOfConfig":"53"},{"size":291,"mtime":1638935573926,"results":"54","hashOfConfig":"55"},{"size":523,"mtime":1638935549030,"results":"56","hashOfConfig":"55"},{"size":1139,"mtime":1644572548725,"results":"57","hashOfConfig":"58"},{"size":2293,"mtime":1638948548042,"results":"59","hashOfConfig":"55"},{"size":2292,"mtime":1638948522492,"results":"60","hashOfConfig":"55"},{"size":1078,"mtime":1638948543271,"results":"61","hashOfConfig":"55"},{"size":2067,"mtime":1648466228565,"results":"62","hashOfConfig":"53"},{"size":2991,"mtime":1638948535719,"results":"63","hashOfConfig":"55"},{"size":4379,"mtime":1638935458586,"results":"64","hashOfConfig":"55"},{"size":2428,"mtime":1648466380496,"results":"65","hashOfConfig":"53"},{"size":2955,"mtime":1647850650993,"results":"66","hashOfConfig":"58"},{"size":5660,"mtime":1695026529575,"results":"67","hashOfConfig":"68"},{"size":2833,"mtime":1638861837310,"results":"69","hashOfConfig":"55"},{"size":4212,"mtime":1638935746667,"results":"70","hashOfConfig":"55"},{"size":861,"mtime":1638931446915,"results":"71","hashOfConfig":"55"},{"size":178,"mtime":1638931439249,"results":"72","hashOfConfig":"55"},{"size":3272,"mtime":1648713847909,"results":"73","hashOfConfig":"53"},{"size":46636,"mtime":1695028084459,"results":"74","hashOfConfig":"68"},{"size":4898,"mtime":1639992402586,"results":"75","hashOfConfig":"55"},{"size":21854,"mtime":1695028069713,"results":"76","hashOfConfig":"68"},{"size":15155,"mtime":1657626470824,"results":"77","hashOfConfig":"78"},{"size":2165,"mtime":1638949854481,"results":"79","hashOfConfig":"55"},{"size":2165,"mtime":1638949840121,"results":"80","hashOfConfig":"55"},{"size":2223,"mtime":1638949823846,"results":"81","hashOfConfig":"55"},{"size":2356,"mtime":1650083974574,"results":"82","hashOfConfig":"53"},{"size":3367,"mtime":1638949855771,"results":"83","hashOfConfig":"55"},{"size":2305,"mtime":1638949843817,"results":"84","hashOfConfig":"55"},{"size":3294,"mtime":1638949855131,"results":"85","hashOfConfig":"55"},{"size":2850,"mtime":1638949842017,"results":"86","hashOfConfig":"55"},{"size":4157,"mtime":1638949853726,"results":"87","hashOfConfig":"55"},{"size":605,"mtime":1638949882777,"results":"88","hashOfConfig":"55"},{"size":1175,"mtime":1638949720500,"results":"89","hashOfConfig":"55"},{"size":19364,"mtime":1728010871551,"results":"90","hashOfConfig":"91"},{"size":332,"mtime":1644573509040,"results":"92","hashOfConfig":"58"},{"size":4080,"mtime":1648536160221,"results":"93","hashOfConfig":"53"},{"size":8842,"mtime":1646363892377,"results":"94","hashOfConfig":"58"},{"size":4317,"mtime":1646376602197,"results":"95","hashOfConfig":"58"},{"size":9440,"mtime":1644993553716,"results":"96","hashOfConfig":"58"},{"size":724,"mtime":1644808940649,"results":"97","hashOfConfig":"58"},{"size":1717,"mtime":1648466368772,"results":"98","hashOfConfig":"53"},{"size":5563,"mtime":1658392065200,"results":"99","hashOfConfig":"78"},{"size":10376,"mtime":1695025236432,"results":"100","hashOfConfig":"68"},{"size":9001,"mtime":1648713828033,"results":"101","hashOfConfig":"53"},{"size":3152,"mtime":1648713745966},{"size":1901,"mtime":1650082399244,"results":"102","hashOfConfig":"53"},{"size":600,"mtime":1657507507231,"results":"103","hashOfConfig":"78"},{"size":1945,"mtime":1657624830918,"results":"104","hashOfConfig":"78"},{"size":2009,"mtime":1659343100368,"results":"105","hashOfConfig":"78"},{"size":9861,"mtime":1659343100367,"results":"106","hashOfConfig":"78"},{"size":2513,"mtime":1695028123275,"results":"107","hashOfConfig":"68"},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1h9xfdh",{"filePath":"110","messages":"111","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"jpc0be",{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"114","messages":"115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1qaimc",{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"118","messages":"119","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"120","messages":"121","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"126","messages":"127","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"130","messages":"131","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"132","messages":"133","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"yfiwrq",{"filePath":"134","messages":"135","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"138","messages":"139","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"142","messages":"143","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"144","messages":"145","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","errorCount":1,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"150","messages":"151","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"su5mnm",{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"156","messages":"157","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"160","messages":"161","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"162","messages":"163","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"2f4922",{"filePath":"176","messages":"177","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"184","messages":"185","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"206","messages":"207","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/min/Documents/GMFE/gm-util/gm-printer/src/util.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/get_css.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/barcode.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor_special_table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/config.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_store.js",["208","209"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/hoc_with_shadow_dom.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/get_editor_css.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_title.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_store.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_select.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_edit_field.js",["210","211","212","213","214"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/component.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockout/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_stockin/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_statement/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_settle/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_salemenus/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_purchase/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account_statement/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor_account/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/editor/editor.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/components/tooltip/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_special_field.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/store.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/index.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/do_print.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/finance_printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table_subtotal_tr.js",["215"],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/finance_voucher/components/finance_batch_printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/page.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_subtotal_tr.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/printer.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_overallOrder_tr.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/util.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/editor_add_field.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/counter.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/common/common_context_menu.js",[],"/Users/min/Documents/GMFE/gm-util/gm-printer/src/printer/table_diy_overallOrder_tr.js",["216"],{"ruleId":"217","severity":2,"message":"218","line":10,"column":29,"nodeType":"219","endLine":10,"endColumn":35},{"ruleId":"217","severity":2,"message":"220","line":145,"column":63,"nodeType":"219","endLine":145,"endColumn":71},{"ruleId":"221","severity":1,"message":"222","line":344,"column":13,"nodeType":"223","endLine":344,"endColumn":49},{"ruleId":"221","severity":1,"message":"222","line":362,"column":13,"nodeType":"223","endLine":362,"endColumn":56},{"ruleId":"221","severity":1,"message":"222","line":519,"column":15,"nodeType":"223","endLine":519,"endColumn":53},{"ruleId":"221","severity":1,"message":"222","line":568,"column":11,"nodeType":"223","endLine":568,"endColumn":53},{"ruleId":"224","severity":2,"message":"225","line":669,"column":22,"nodeType":"226","messageId":"227","endLine":669,"endColumn":31},{"ruleId":"224","severity":2,"message":"225","line":120,"column":14,"nodeType":"226","messageId":"227","endLine":120,"endColumn":23},{"ruleId":"228","severity":2,"message":"229","line":13,"column":5,"nodeType":"219","endLine":13,"endColumn":11},"react/prop-types","'config' is missing in props validation","Identifier","'mockData' is missing in props validation","react/jsx-handler-names","Handler function for onChange prop key must begin with 'handle'","JSXAttribute","gmfe/i18n-check","t函数的key只能为字符串常量(Literal),请使用单引号或双引号包裹","MemberExpression","isVariable","no-unused-vars","'config' is assigned a value but never used."]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-printer",
3
- "version": "10.28.1",
3
+ "version": "10.28.3",
4
4
  "description": "diy printer",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -114,4 +114,4 @@
114
114
  "dependencies": {
115
115
  "qrcode.react": "^0.9.2"
116
116
  }
117
- }
117
+ }
@@ -1,7 +1,11 @@
1
1
  import i18next from '../../locales'
2
2
  import React, { useEffect } from 'react'
3
3
  import PropTypes from 'prop-types'
4
- import { tableClassNameList } from '../config'
4
+ import {
5
+ tableClassNameList,
6
+ longPrintTableClassNameList,
7
+ LONG_PRINT
8
+ } from '../config'
5
9
  import _ from 'lodash'
6
10
  import { Hr, ImageUploader } from '../common/component'
7
11
  import { observer, inject } from 'mobx-react'
@@ -191,7 +195,8 @@ class CommonContextMenu extends React.Component {
191
195
  const arr = name.split('.')
192
196
  const { className } = editStore.config.contents[arr[2]]
193
197
  const isActive = c => className === c
194
-
198
+ const { config } = editStore
199
+ const isLongPrint = config?.page?.type === LONG_PRINT
195
200
  return (
196
201
  <>
197
202
  {renderTableAction && (
@@ -204,17 +209,38 @@ class CommonContextMenu extends React.Component {
204
209
  <div onClick={this.handleRemove}>{i18next.t('移除列')}</div>
205
210
  <Hr />
206
211
 
207
- {_.map(tableClassNameList, o => (
208
- <div
209
- onClick={this.handleSetTableConfig.bind(this, o.value)}
210
- key={o.value}
211
- className={isActive(o.value) ? 'active' : ''}
212
- >
213
- {o.text}
214
- </div>
215
- ))}
212
+ {!isLongPrint && (
213
+ <>
214
+ {' '}
215
+ {_.map(tableClassNameList, o => (
216
+ <div
217
+ onClick={this.handleSetTableConfig.bind(this, o.value)}
218
+ key={o.value}
219
+ className={isActive(o.value) ? 'active' : ''}
220
+ >
221
+ {o.text}
222
+ </div>
223
+ ))}{' '}
224
+ <Hr />
225
+ </>
226
+ )}
227
+
228
+ {isLongPrint && (
229
+ <>
230
+ {' '}
231
+ {_.map(longPrintTableClassNameList, o => (
232
+ <div
233
+ onClick={this.handleSetTableConfig.bind(this, o.value)}
234
+ key={o.value}
235
+ className={isActive(o.value) ? 'active' : ''}
236
+ >
237
+ {o.text}
238
+ </div>
239
+ ))}{' '}
240
+ <Hr />
241
+ </>
242
+ )}
216
243
 
217
- <Hr />
218
244
  <div onClick={this.handleAddContent.bind(this, 0, '')}>
219
245
  {i18next.t('向上插入区域块')}
220
246
  </div>
@@ -20,6 +20,7 @@ import {
20
20
  import { get, toJS } from 'mobx'
21
21
  import PropTypes from 'prop-types'
22
22
  import { subtotalRadioList } from './util'
23
+ import { LONG_PRINT } from '../config'
23
24
  import _ from 'lodash'
24
25
 
25
26
  @inject('editStore')
@@ -199,7 +200,8 @@ class EditorField extends React.Component {
199
200
  renderTable() {
200
201
  const { tableDataKeyList, editStore, isSomeSubtotalTr } = this.props
201
202
  const { head, headStyle, text, style } = editStore.computedSelectedInfo
202
-
203
+ const { config } = editStore
204
+ const isLongPrint = config?.page?.type === LONG_PRINT
203
205
  const {
204
206
  specialConfig,
205
207
  subtotal,
@@ -362,19 +364,38 @@ class EditorField extends React.Component {
362
364
 
363
365
  <Gap height='5px' />
364
366
 
365
- <Flex alignCenter>
366
- <Flex alignCenter>{i18next.t('表格样式')}:</Flex>
367
- <Select
368
- className='gm-printer-edit-select'
369
- value={editStore.tableCustomStyle}
370
- onChange={editStore.changeTableCustomStyle}
371
- >
372
- <Option value='default'>{i18next.t('默认样式')}</Option>
373
- <Option value='className0'>{i18next.t('样式一')}</Option>
374
- <Option value='className1'>{i18next.t('样式二')}</Option>
375
- <Option value='className2'>{i18next.t('样式三')}</Option>
376
- </Select>
377
- </Flex>
367
+ {!isLongPrint && (
368
+ <Flex alignCenter>
369
+ <Flex alignCenter>{i18next.t('表格样式')}:</Flex>
370
+ <Select
371
+ className='gm-printer-edit-select'
372
+ value={editStore.tableCustomStyle}
373
+ onChange={editStore.changeTableCustomStyle}
374
+ >
375
+ <Option value='default'>{i18next.t('默认样式')}</Option>
376
+ <Option value='className0'>{i18next.t('样式一')}</Option>
377
+ <Option value='className1'>{i18next.t('样式二')}</Option>
378
+ <Option value='className2'>{i18next.t('样式三')}</Option>
379
+ </Select>
380
+ </Flex>
381
+ )}
382
+
383
+ {isLongPrint && (
384
+ <Flex alignCenter>
385
+ <Flex alignCenter>{i18next.t('表格样式')}:</Flex>
386
+ <Select
387
+ className='gm-printer-edit-select'
388
+ value={editStore.tableCustomStyle}
389
+ onChange={editStore.changeTableCustomStyle}
390
+ >
391
+ <Option value='default'>{i18next.t('默认样式')}</Option>
392
+ <Option value='className0'>{i18next.t('样式一')}</Option>
393
+ <Option value='className1'>{i18next.t('样式二')}</Option>
394
+ <Option value='className2'>{i18next.t('样式三')}</Option>
395
+ <Option value='specialTable'>{i18next.t('样式四')}</Option>
396
+ </Select>
397
+ </Flex>
398
+ )}
378
399
 
379
400
  <Gap height='5px' />
380
401
 
@@ -2,12 +2,9 @@ import i18next from '../../locales'
2
2
  import React from 'react'
3
3
  import { observer, inject } from 'mobx-react'
4
4
  import { Flex, Option, Select } from '../components'
5
- import {
6
- RadioGroup,
7
- Radio,
8
- } from '@gmfe/react'
5
+ import { RadioGroup, Radio } from '@gmfe/react'
9
6
  import { InputWithUnit } from '../common/component'
10
- import { pageTypeMap, printDirectionList } from '../config'
7
+ import { pageTypeMap, printDirectionList, LONG_PRINT } from '../config'
11
8
  import _ from 'lodash'
12
9
  import { dispatchMsg } from '../util'
13
10
  import PropTypes from 'prop-types'
@@ -19,7 +16,7 @@ class EditorSelector extends React.Component {
19
16
  this.props.editStore.setConfigName(e.target.value)
20
17
  }
21
18
 
22
- handleConfigIsFixLastFooter = (_val) => {
19
+ handleConfigIsFixLastFooter = _val => {
23
20
  this.props.editStore.setConfigIsFixLastFooter(_val)
24
21
  }
25
22
 
@@ -45,13 +42,19 @@ class EditorSelector extends React.Component {
45
42
 
46
43
  render() {
47
44
  const {
48
- config: { name, page, batchPrintConfig, isFixLastFooter, showDiyOverAllOrder },
45
+ config: {
46
+ name,
47
+ page,
48
+ batchPrintConfig,
49
+ isFixLastFooter,
50
+ showDiyOverAllOrder
51
+ },
49
52
  computedRegionList,
50
53
  computedSelectedRegionTip,
51
54
  selectedRegion
52
55
  } = this.props.editStore
53
56
  const isDIY = page.type === 'DIY'
54
-
57
+ const isLongPrint = page.type === LONG_PRINT
55
58
  return (
56
59
  <div>
57
60
  <Flex alignCenter>
@@ -79,7 +82,7 @@ class EditorSelector extends React.Component {
79
82
  </Select>
80
83
  </Flex>
81
84
 
82
- {isDIY && (
85
+ {(isDIY || isLongPrint) && (
83
86
  <Flex alignCenter className='gm-padding-top-5'>
84
87
  <div>{i18next.t('纸张宽度')}:</div>
85
88
  <InputWithUnit
@@ -102,21 +105,22 @@ class EditorSelector extends React.Component {
102
105
  />
103
106
  </Flex>
104
107
  )}
105
-
106
- <Flex alignCenter className='gm-padding-top-5'>
107
- <div>{i18next.t('打印布局')}:</div>
108
- <Select
109
- className='gm-printer-edit-select'
110
- value={page.printDirection}
111
- onChange={this.handlePrintDirection}
112
- >
113
- {_.map(printDirectionList, v => (
114
- <Option key={v.value} value={v.value}>
115
- {v.text}
116
- </Option>
117
- ))}
118
- </Select>
119
- </Flex>
108
+ {!isLongPrint && (
109
+ <Flex alignCenter className='gm-padding-top-5'>
110
+ <div>{i18next.t('打印布局')}:</div>
111
+ <Select
112
+ className='gm-printer-edit-select'
113
+ value={page.printDirection}
114
+ onChange={this.handlePrintDirection}
115
+ >
116
+ {_.map(printDirectionList, v => (
117
+ <Option key={v.value} value={v.value}>
118
+ {v.text}
119
+ </Option>
120
+ ))}
121
+ </Select>
122
+ </Flex>
123
+ )}
120
124
 
121
125
  <Flex alignCenter className='gm-padding-top-5'>
122
126
  <div>{i18next.t('选择区域')}:</div>
@@ -157,21 +161,25 @@ class EditorSelector extends React.Component {
157
161
  </>
158
162
  )}
159
163
 
160
- {
161
- showDiyOverAllOrder !== undefined && <Flex alignCenter className='gm-padding-top-5'>
162
- <label htmlFor={1}>{'是否固定末页签名和页脚区域:'}</label>
163
- <RadioGroup
164
- name='isFixFooter'
165
- value={isFixLastFooter}
166
- inline
167
- onChange={this.handleConfigIsFixLastFooter}
168
- className="gm-flex"
169
- >
170
- <Radio value={true} style={{ display: 'flex', marginRight: 10}}><span style={{ marginLeft: 5}}>是</span></Radio>
171
- <Radio value={false} style={{ display: 'flex'}}><span style={{ marginLeft: 5}}>否</span></Radio>
172
- </RadioGroup>
173
- </Flex>
174
- }
164
+ {showDiyOverAllOrder !== undefined && (
165
+ <Flex alignCenter className='gm-padding-top-5'>
166
+ <label htmlFor={1}>是否固定末页签名和页脚区域:</label>
167
+ <RadioGroup
168
+ name='isFixFooter'
169
+ value={isFixLastFooter}
170
+ inline
171
+ onChange={this.handleConfigIsFixLastFooter}
172
+ className='gm-flex'
173
+ >
174
+ <Radio value style={{ display: 'flex', marginRight: 10 }}>
175
+ <span style={{ marginLeft: 5 }}>是</span>
176
+ </Radio>
177
+ <Radio value={false} style={{ display: 'flex' }}>
178
+ <span style={{ marginLeft: 5 }}>否</span>
179
+ </Radio>
180
+ </RadioGroup>
181
+ </Flex>
182
+ )}
175
183
 
176
184
  <Flex className='gm-padding-top-5 gm-text-red' column>
177
185
  {computedSelectedRegionTip}
@@ -263,6 +263,13 @@
263
263
  top: calc(50% - 0.5em);
264
264
  }
265
265
 
266
+ .long_print_table_row{
267
+ cursor: move;
268
+ &.active{
269
+ outline: 1px solid rgb(82, 146, 247);
270
+ }
271
+ }
272
+
266
273
  table {
267
274
  // 不被 before 遮挡
268
275
  position: relative;
package/src/config.js CHANGED
@@ -1,4 +1,7 @@
1
1
  import i18next from '../locales'
2
+
3
+ export const LONG_PRINT = 'longPrint'
4
+
2
5
  export const pageTypeMap = {
3
6
  A4: {
4
7
  name: 'A4',
@@ -78,6 +81,21 @@ export const pageTypeMap = {
78
81
  paddingLeft: '16mm'
79
82
  }
80
83
  },
84
+ // 新增长条打印配置选项
85
+ [LONG_PRINT]: {
86
+ name: i18next.t('长条打印'),
87
+ size: {
88
+ width: '80mm',
89
+ height: '100mm'
90
+ },
91
+ printDirection: 'vertical',
92
+ gap: {
93
+ paddingTop: '2mm',
94
+ paddingRight: '2mm',
95
+ paddingBottom: '2mm',
96
+ paddingLeft: '2mm'
97
+ }
98
+ },
81
99
  DIY: {
82
100
  name: i18next.t('自定义纸张'),
83
101
  size: {
@@ -107,7 +125,16 @@ export const borderStyleList = [
107
125
  export const tableClassNameList = [
108
126
  { value: '', text: i18next.t('默认样式') },
109
127
  { value: 'className0', text: i18next.t('浅实线样式') },
110
- { value: 'className1', text: i18next.t('无实线样式') }
128
+ { value: 'className1', text: i18next.t('无实线样式') },
129
+ { value: 'className2', text: i18next.t('样式三') }
130
+ ]
131
+
132
+ export const longPrintTableClassNameList = [
133
+ { value: '', text: i18next.t('默认样式') },
134
+ { value: 'className0', text: i18next.t('样式一') },
135
+ { value: 'className1', text: i18next.t('样式二') },
136
+ { value: 'className2', text: i18next.t('样式三') },
137
+ { value: 'specialTable', text: i18next.t('样式四') }
111
138
  ]
112
139
 
113
140
  export const tableDataKeyList = [
@@ -6,6 +6,7 @@ import { inject, observer } from 'mobx-react'
6
6
  import _ from 'lodash'
7
7
  import { Printer } from '../printer'
8
8
  import { isMultiTable } from '../util'
9
+ import { LONG_PRINT } from '../config'
9
10
 
10
11
  const blockTypeList = [
11
12
  { value: '', text: i18next.t('插入文本') },
@@ -122,17 +123,21 @@ class ContextMenu extends React.Component {
122
123
  const isSubtotalActive = subtotal.show
123
124
  const isOverallOrder = overallOrder?.show
124
125
  const isDiyOverallOrder = diyOverallOrder?.show
126
+ // 长条打印
127
+ const isLongPrint = type === LONG_PRINT
125
128
 
126
129
  return (
127
130
  <>
128
- <div
129
- onClick={this.handleChangeTableDataKey.bind(this, 'multi', name)}
130
- className={isMultiActive ? 'active' : ''}
131
- >
132
- {i18next.t('双栏商品')}
133
- </div>
131
+ {!isLongPrint && (
132
+ <div
133
+ onClick={this.handleChangeTableDataKey.bind(this, 'multi', name)}
134
+ className={isMultiActive ? 'active' : ''}
135
+ >
136
+ {i18next.t('双栏商品')}
137
+ </div>
138
+ )}
134
139
  {/* 三分纸高度太小,做不了三栏,会死循环 */}
135
- {type !== 'A4/3' && (
140
+ {type !== 'A4/3' && !isLongPrint && (
136
141
  <div
137
142
  onClick={this.handleChangeTableDataKey.bind(this, 'multi3', name)}
138
143
  className={isThreeActive ? 'active' : ''}
package/src/index.js CHANGED
@@ -17,7 +17,8 @@ import {
17
17
  Printer,
18
18
  getCSS,
19
19
  getPrintContainerHTML,
20
- doBatchFinancePrint
20
+ doBatchFinancePrint,
21
+ setPrintStyle
21
22
  } from './printer'
22
23
  import { MULTI_SUFFIX, MULTI_SUFFIX3 } from './config'
23
24
 
@@ -43,5 +44,6 @@ export {
43
44
  MULTI_SUFFIX,
44
45
  MULTI_SUFFIX3,
45
46
  getPrintContainerHTML,
46
- doBatchFinancePrint
47
+ doBatchFinancePrint,
48
+ setPrintStyle
47
49
  }
@@ -4,7 +4,6 @@ import Printer from './printer'
4
4
  import getCSS from './get_css'
5
5
  import BatchPrinter from './batch_printer'
6
6
  import BatchFinancePrinter from '../finance_voucher/components/finance_batch_printer'
7
- import { isZoom } from 'gm-util'
8
7
  import { afterImgAndSvgLoaded } from '../util'
9
8
 
10
9
  const printerId = '_gm-printer_' + Math.random()
@@ -77,14 +76,18 @@ function toDoPrint({ data, config }, isSomeSubtotalTr) {
77
76
  function toDoPrintBatch(list, isPrint = true) {
78
77
  return new window.Promise(resolve => {
79
78
  const $app = $printer.contentWindow.document.getElementById('appContainer')
80
-
79
+ // 获取模版类型
80
+ const templateType = list?.[0]?.config?.page?.type
81
+ // 初始化
81
82
  ReactDOM.unmountComponentAtNode($app)
82
83
  ReactDOM.render(
83
84
  <BatchPrinter
84
85
  list={list}
85
86
  onReady={() => {
86
87
  afterImgAndSvgLoaded(() => {
87
- isPrint && $printer.contentWindow.print()
88
+ isPrint &&
89
+ templateType !== 'longPrint' &&
90
+ $printer.contentWindow.print()
88
91
  resolve()
89
92
  }, $app)
90
93
  }}
@@ -145,4 +148,17 @@ function getPrintContainerHTML() {
145
148
  return $printer.contentWindow.document.getElementsByTagName('html')[0]
146
149
  .innerHTML
147
150
  }
148
- export { doPrint, doBatchPrint, getPrintContainerHTML, doBatchFinancePrint }
151
+
152
+ function setPrintStyle() {
153
+ const doc = document
154
+ const style = doc.createElement('style')
155
+ style.appendChild(doc.createTextNode(getCSS()))
156
+ doc.head.appendChild(style)
157
+ }
158
+ export {
159
+ doPrint,
160
+ doBatchPrint,
161
+ getPrintContainerHTML,
162
+ doBatchFinancePrint,
163
+ setPrintStyle
164
+ }
@@ -4,7 +4,8 @@ import {
4
4
  doPrint,
5
5
  doBatchPrint,
6
6
  getPrintContainerHTML,
7
- doBatchFinancePrint
7
+ doBatchFinancePrint,
8
+ setPrintStyle
8
9
  } from './do_print'
9
10
  import getCSS from './get_css'
10
11
 
@@ -15,5 +16,6 @@ export {
15
16
  BatchPrinter,
16
17
  getCSS,
17
18
  getPrintContainerHTML,
18
- doBatchFinancePrint
19
+ doBatchFinancePrint,
20
+ setPrintStyle
19
21
  }
@@ -0,0 +1,391 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import _ from 'lodash'
4
+ import {
5
+ dispatchMsg,
6
+ getDataKey,
7
+ getHeight,
8
+ getTableColumnName,
9
+ getWidth
10
+ } from '../../util'
11
+ import { inject, observer } from 'mobx-react'
12
+ import classNames from 'classnames'
13
+ import SpecialTr from '../table_special_tr'
14
+ import CategoryTr from '../table_category_tr'
15
+ import SubtotalTr from '../table_subtotal_tr'
16
+ import PageSummary from '../page_summary'
17
+ import OverallOrder from '../table_overallOrder_tr'
18
+ import DiyOverallOrder from '../table_diy_overallOrder_tr'
19
+
20
+ @inject('printerStore')
21
+ @observer
22
+ class Table extends React.Component {
23
+ constructor(props) {
24
+ super(props)
25
+ this.ref = React.createRef()
26
+ this.state = {
27
+ index: null
28
+ }
29
+ }
30
+
31
+ componentDidMount() {
32
+ const { name, printerStore } = this.props
33
+
34
+ if (!printerStore.ready) {
35
+ const $table = this.ref.current.querySelector('table')
36
+ const tHead = $table.querySelector('thead')
37
+ const ths = tHead.querySelectorAll('th') || []
38
+ const trs = $table.querySelectorAll('tbody tr') || []
39
+ const detailsDiv = $table.querySelectorAll('tr td .b-table-details')
40
+
41
+ printerStore.setHeight(name, getHeight($table))
42
+
43
+ printerStore.setTable(name, {
44
+ head: {
45
+ height: getHeight(tHead),
46
+ widths: _.map(ths, th => getWidth(th))
47
+ },
48
+ body: {
49
+ heights: _.map(trs, tr => getHeight(tr)),
50
+ children: _.map(detailsDiv, div => getHeight(div))
51
+ }
52
+ })
53
+ }
54
+ }
55
+
56
+ handleClick = e => {
57
+ const { name } = this.props
58
+ const { index } = e.target.dataset
59
+ dispatchMsg('gm-printer-select', {
60
+ selected: getTableColumnName(name, index)
61
+ })
62
+ }
63
+
64
+ handleDragStart = e => {
65
+ const { name } = this.props
66
+ const { index } = e.target.dataset
67
+
68
+ this.setState({
69
+ index
70
+ })
71
+
72
+ dispatchMsg('gm-printer-select', {
73
+ selected: getTableColumnName(name, index)
74
+ })
75
+ }
76
+
77
+ handleSelectedRegion = () => {
78
+ const { name } = this.props
79
+
80
+ dispatchMsg('gm-printer-select-region', { selected: name })
81
+ }
82
+
83
+ handleDrop = e => {
84
+ const { index } = e.target.dataset
85
+ console.log(this.state.index, index)
86
+ if (this.state.index !== index) {
87
+ dispatchMsg('gm-printer-table-drag', {
88
+ source: this.state.index,
89
+ target: index
90
+ })
91
+ }
92
+ }
93
+
94
+ handleDragOver = e => {
95
+ e.preventDefault()
96
+ }
97
+
98
+ getColumns = () => {
99
+ const {
100
+ config: { columns, dataKey }
101
+ } = this.props
102
+ const columns1 = columns.map((val, index) => ({ ...val, index }))
103
+ return columns1
104
+ }
105
+
106
+ renderDefault() {
107
+ let {
108
+ config,
109
+ config: { dataKey, arrange, customerRowHeight = 23 },
110
+ name,
111
+ range,
112
+ pageIndex,
113
+ printerStore,
114
+ isSomeSubtotalTr
115
+ } = this.props
116
+ // 数据
117
+ dataKey = getDataKey(dataKey, arrange)
118
+ const tableData = printerStore.data._table[dataKey] || []
119
+
120
+ // 列
121
+ const columns = this.getColumns()
122
+ // 每页合计在前
123
+ const subtotalTrPageSummary = () => {
124
+ return (
125
+ <>
126
+ <SubtotalTr
127
+ range={range}
128
+ config={config}
129
+ printerStore={printerStore}
130
+ isSomeSubtotalTr={isSomeSubtotalTr}
131
+ />
132
+ <PageSummary {...this.props} />
133
+ </>
134
+ )
135
+ }
136
+ // 合计在前
137
+ const PageSummarySubtotalTr = () => {
138
+ return (
139
+ <>
140
+ <PageSummary {...this.props} />
141
+ <SubtotalTr
142
+ range={range}
143
+ config={config}
144
+ printerStore={printerStore}
145
+ isSomeSubtotalTr={isSomeSubtotalTr}
146
+ />
147
+ </>
148
+ )
149
+ }
150
+
151
+ return (
152
+ <div style={{ tableLayout: 'inherit', wordBreak: 'break-all' }}>
153
+ {_.map(_.range(range.begin, range.end), i => {
154
+ const _special = tableData[i] && tableData[i]._special
155
+ const _specialText = tableData[i] && tableData[i]._specialText
156
+ if (_specialText)
157
+ return <CategoryTr key={i} config={config} data={_specialText} />
158
+ if (_special)
159
+ return <SpecialTr key={i} config={config} data={_special} />
160
+ // 如果项为空对象展现一个占满一行的td
161
+ const isItemNone = !_.keys(tableData[i]).length
162
+ console.log(columns, 'columns')
163
+ return (
164
+ <div key={i} style={{ borderTop: '1px dashed black' }}>
165
+ {isItemNone
166
+ ? null
167
+ : _.map(columns, (col, j) => {
168
+ return (
169
+ <div
170
+ key={j}
171
+ data-name={getTableColumnName(name, col.index)}
172
+ data-index={col.index}
173
+ onClick={this.handleClick}
174
+ draggable
175
+ onDragStart={this.handleDragStart}
176
+ onDrop={this.handleDrop}
177
+ onDragOver={this.handleDragOver}
178
+ style={{ padding: '2px 0' }}
179
+ className={classNames('long_print_table_row', {
180
+ active:
181
+ getTableColumnName(name, col.index) ===
182
+ printerStore.selected
183
+ })}
184
+ >
185
+ <span
186
+ data-name={getTableColumnName(name, col.index)}
187
+ data-index={col.index}
188
+ onClick={this.handleClick}
189
+ style={{ ...col.headStyle }}
190
+ >
191
+ {col.head}:
192
+ </span>
193
+ <span
194
+ style={{
195
+ ...col.style
196
+ }}
197
+ data-name={getTableColumnName(name, col.index)}
198
+ data-index={col.index}
199
+ onClick={this.handleClick}
200
+ dangerouslySetInnerHTML={{
201
+ __html: col.isSpecialColumn
202
+ ? printerStore.templateSpecialDetails(
203
+ col,
204
+ dataKey,
205
+ i
206
+ )
207
+ : printerStore
208
+ .templateTable(
209
+ col.text,
210
+ dataKey,
211
+ i,
212
+ pageIndex
213
+ )
214
+ .replace(/\(\)/g, '')
215
+ }}
216
+ />
217
+ </div>
218
+ )
219
+ })}
220
+ </div>
221
+ )
222
+ })}
223
+ {this.props.config.subtotal.isCommutationPlace
224
+ ? PageSummarySubtotalTr()
225
+ : subtotalTrPageSummary()}
226
+ <OverallOrder
227
+ range={range}
228
+ config={config}
229
+ printerStore={printerStore}
230
+ />
231
+ <DiyOverallOrder
232
+ range={range}
233
+ config={config}
234
+ printerStore={printerStore}
235
+ pageIndex={pageIndex}
236
+ />
237
+ </div>
238
+ )
239
+
240
+ return (
241
+ <table
242
+ style={{
243
+ // td会撑开table的宽度
244
+ tableLayout: 'inherit',
245
+ wordBreak: 'break-all'
246
+ }}
247
+ >
248
+ <thead>
249
+ <tr style={{ height: `${customerRowHeight}px` }}>
250
+ {_.map(columns, (col, i) => (
251
+ <th
252
+ key={i}
253
+ data-index={col.index}
254
+ data-name={getTableColumnName(name, col.index)}
255
+ draggable
256
+ style={{
257
+ ...getTdStyle(i, col.headStyle),
258
+ ...col.headStyle
259
+ }}
260
+ className={classNames({
261
+ active:
262
+ getTableColumnName(name, col.index) ===
263
+ printerStore.selected
264
+ })}
265
+ onClick={this.handleClick}
266
+ onDragStart={this.handleDragStart}
267
+ onDrop={this.handleDrop}
268
+ onDragOver={this.handleDragOver}
269
+ >
270
+ {col.head}
271
+ </th>
272
+ ))}
273
+ </tr>
274
+ </thead>
275
+ <tbody>
276
+ {_.map(_.range(range.begin, range.end), i => {
277
+ const _special = tableData[i] && tableData[i]._special
278
+ const _specialText = tableData[i] && tableData[i]._specialText
279
+ if (_specialText)
280
+ return <CategoryTr key={i} config={config} data={_specialText} />
281
+ if (_special)
282
+ return <SpecialTr key={i} config={config} data={_special} />
283
+ // 如果项为空对象展现一个占满一行的td
284
+ const isItemNone = !_.keys(tableData[i]).length
285
+
286
+ return (
287
+ <tr style={{ height: `${customerRowHeight}px` }} key={i}>
288
+ {isItemNone ? (
289
+ <td colSpan='99' />
290
+ ) : (
291
+ _.map(columns, (col, j) => {
292
+ return (
293
+ <td
294
+ key={j}
295
+ data-name={getTableColumnName(name, col.index)}
296
+ style={{
297
+ ...getTdStyle(j, col.style),
298
+ ...col.style
299
+ }}
300
+ className={classNames({
301
+ active:
302
+ getTableColumnName(name, col.index) ===
303
+ printerStore.selected
304
+ })}
305
+ dangerouslySetInnerHTML={{
306
+ __html: col.isSpecialColumn
307
+ ? printerStore.templateSpecialDetails(
308
+ col,
309
+ dataKey,
310
+ i
311
+ )
312
+ : printerStore
313
+ .templateTable(col.text, dataKey, i, pageIndex)
314
+ .replace(/\(\)/g, '')
315
+ }}
316
+ />
317
+ )
318
+ })
319
+ )}
320
+ </tr>
321
+ )
322
+ })}
323
+ {this.props.config.subtotal.isCommutationPlace
324
+ ? PageSummarySubtotalTr()
325
+ : subtotalTrPageSummary()}
326
+ <OverallOrder
327
+ range={range}
328
+ config={config}
329
+ printerStore={printerStore}
330
+ />
331
+ <DiyOverallOrder
332
+ range={range}
333
+ config={config}
334
+ printerStore={printerStore}
335
+ pageIndex={pageIndex}
336
+ />
337
+ </tbody>
338
+ </table>
339
+ )
340
+ }
341
+
342
+ renderEmptyTable() {
343
+ return (
344
+ <table>
345
+ <thead />
346
+ <tbody>
347
+ <tr />
348
+ </tbody>
349
+ </table>
350
+ )
351
+ }
352
+
353
+ render() {
354
+ let {
355
+ config: { className, dataKey, arrange },
356
+ name,
357
+ placeholder,
358
+ printerStore
359
+ } = this.props
360
+ dataKey = getDataKey(dataKey, arrange)
361
+ const tableData = printerStore.data._table[dataKey] || []
362
+ const active = printerStore.selectedRegion === name
363
+ return (
364
+ <div
365
+ ref={this.ref}
366
+ className={classNames(
367
+ 'gm-printer-table',
368
+ 'gm-printer-table-classname-' + (className || 'default'),
369
+ { active }
370
+ )}
371
+ data-name={name}
372
+ data-placeholder={placeholder}
373
+ onClick={this.handleSelectedRegion}
374
+ >
375
+ {tableData.length ? this.renderDefault() : this.renderEmptyTable()}
376
+ </div>
377
+ )
378
+ }
379
+ }
380
+
381
+ Table.propTypes = {
382
+ config: PropTypes.object.isRequired,
383
+ name: PropTypes.string.isRequired,
384
+ range: PropTypes.object.isRequired,
385
+ pageIndex: PropTypes.number.isRequired,
386
+ placeholder: PropTypes.string,
387
+ printerStore: PropTypes.object,
388
+ isSomeSubtotalTr: PropTypes.bool
389
+ }
390
+
391
+ export default Table
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'
3
3
  import { inject, observer } from 'mobx-react'
4
4
  import { getHeight } from '../util'
5
5
  import classNames from 'classnames'
6
+ import { LONG_PRINT } from '../config'
6
7
 
7
8
  @inject('printerStore')
8
9
  @observer
@@ -29,9 +30,9 @@ class Page extends React.Component {
29
30
 
30
31
  const {
31
32
  size: { width, height },
32
- pageStyle
33
+ pageStyle,
34
+ type
33
35
  } = printerStore.config.page
34
-
35
36
  // 统一减2毫米,防止计算误差溢出
36
37
  const x = '- 2mm'
37
38
  return (
@@ -44,15 +45,21 @@ class Page extends React.Component {
44
45
  ...pageStyle,
45
46
  boxSizing: 'content-box',
46
47
  width: `calc(${width} - ${paddingLeft} - ${paddingRight})`,
47
- height: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`,
48
- padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`
48
+ padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`,
49
+ height:
50
+ type === LONG_PRINT
51
+ ? ``
52
+ : `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`
49
53
  }}
50
54
  >
51
55
  <div
52
56
  className='gm-printer-page-inner'
53
57
  style={{
54
58
  width: `calc(${width} - ${paddingLeft} - ${paddingRight})`,
55
- height: `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`
59
+ height:
60
+ type === LONG_PRINT
61
+ ? ``
62
+ : `calc(${height} - ${paddingTop} - ${paddingBottom} ${x})`
56
63
  }}
57
64
  >
58
65
  {children}
@@ -3,12 +3,14 @@ import React from 'react'
3
3
  import classNames from 'classnames'
4
4
  import { inject, observer, Provider } from 'mobx-react'
5
5
  import PropTypes from 'prop-types'
6
- import PrinterStore, { TR_BASE_HEIGHT } from './store'
6
+ import PrinterStore from './store'
7
7
  import Page from './page'
8
8
  import _ from 'lodash'
9
9
  import Panel from './panel'
10
10
  import Table from './table'
11
+ import LongPrintTable from './long_print_table'
11
12
  import MergePage from './merge_page'
13
+ import { LONG_PRINT } from '../config'
12
14
 
13
15
  // Header Sign Footer 相对特殊,要单独处理
14
16
  const Header = props => (
@@ -161,6 +163,61 @@ class Printer extends React.Component {
161
163
  )
162
164
  }
163
165
 
166
+ renderLongPage() {
167
+ const { printerStore, isSomeSubtotalTr } = this.props
168
+ const { config } = printerStore
169
+ return (
170
+ <Page>
171
+ <Header config={config.header} pageIndex={0} />
172
+ {_.map(config.contents, (content, index) => {
173
+ switch (content.type) {
174
+ case 'table':
175
+ // eslint-disable-next-line no-case-declarations
176
+ const list = printerStore.data._table[content.dataKey]
177
+ // console.log(content, "content");
178
+ if (content.className === 'specialTable') {
179
+ return (
180
+ <LongPrintTable
181
+ key={`contents.table.${index}`}
182
+ name={`contents.table.${index}`}
183
+ config={content}
184
+ range={{ begin: 0, end: list?.length || 0 }}
185
+ pageIndex={0}
186
+ placeholder={`${i18next.t('区域')} ${index}`}
187
+ />
188
+ )
189
+ } else {
190
+ return (
191
+ <Table
192
+ key={`contents.table.${index}`}
193
+ name={`contents.table.${index}`}
194
+ config={content}
195
+ range={{
196
+ begin: 0,
197
+ end: list?.length || 0
198
+ }}
199
+ placeholder={`${i18next.t('区域')} ${index}`}
200
+ pageIndex={0}
201
+ isSomeSubtotalTr={isSomeSubtotalTr}
202
+ />
203
+ )
204
+ }
205
+ default:
206
+ return (
207
+ <Panel
208
+ key={`contents.panel.${index}`}
209
+ name={`contents.panel.${index}`}
210
+ config={content}
211
+ pageIndex={0}
212
+ placeholder={`${i18next.t('区域')} ${index}`}
213
+ />
214
+ )
215
+ }
216
+ })}
217
+ </Page>
218
+ )
219
+ }
220
+
164
221
  renderPage() {
165
222
  const { printerStore, isSomeSubtotalTr } = this.props
166
223
  const { config, remainPageHeight, isAutoFilling } = printerStore
@@ -283,6 +340,9 @@ class Printer extends React.Component {
283
340
  const { printerStore, config } = this.props
284
341
  // batchPrintConfig: 1 不连续打印(纸张会间断)2 连续打印(纸张连续打,不间断)
285
342
  const batchPrintConfig = config.batchPrintConfig
343
+ if (config.page.type === LONG_PRINT) {
344
+ return !printerStore.ready ? this.renderBefore() : this.renderLongPage()
345
+ }
286
346
  if (batchPrintConfig === 2) {
287
347
  return this.renderMerge()
288
348
  } else {
@@ -100,7 +100,7 @@
100
100
  td,
101
101
  th {
102
102
  border: 1px solid black;
103
- // padding: 2px 0;
103
+ padding: 2px 0;
104
104
  }
105
105
  }
106
106
  }
@@ -110,7 +110,7 @@
110
110
  td,
111
111
  th {
112
112
  border: 1px solid #ddd;
113
- // padding: 2px 0;
113
+ padding: 2px 0;
114
114
  }
115
115
  }
116
116
  }
@@ -120,7 +120,7 @@
120
120
  td,
121
121
  th {
122
122
  border: 1px solid transparent;
123
- // padding: 2px 0;
123
+ padding: 2px 0;
124
124
  }
125
125
 
126
126
  th {
@@ -135,7 +135,7 @@
135
135
  td,
136
136
  th {
137
137
  border: none;
138
- // padding: 2px 0;
138
+ padding: 2px 0;
139
139
  }
140
140
  }
141
141
  }
@@ -146,7 +146,7 @@
146
146
 
147
147
  .gm-printer-special-container-box {
148
148
  flex: 1;
149
- // padding: 2px;
149
+ padding: 2px;
150
150
  }
151
151
 
152
152
  .gm-printer-special-container-box + .gm-printer-special-container-box {
@@ -178,6 +178,3 @@
178
178
  .gm-flex-page{
179
179
  display:flex
180
180
  }
181
- .b-table-details{
182
- box-sizing: border-box;
183
- }