master-hiprint

feature/核算表格双击编辑
lys 2 months ago
parent e17c5a490a
commit 7cf4f53ec3

@ -22,6 +22,7 @@
"dependencies": {
"@ant-design/pro-layout": "6.32.1",
"@types/lodash": "^4.14.172",
"@wtto00/html2canvas": "^1.4.3",
"@ztree/ztree_v3": "^3.5.42",
"ahooks": "^3.1.3",
"antd": "^4.24.10",
@ -31,6 +32,7 @@
"js-cookie": "^2.2.1",
"jsencrypt": "^3.2.1",
"jsonwebtoken": "^8.5.1",
"jspdf": "^2.5.1",
"lodash": "^4.17.21",
"mobx": "^6.3.2",
"mobx-react": "^7.2.0",

@ -0,0 +1,816 @@
.hiprint-printPaper.design.grid {
background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%);
background-size: 5mm 5mm;
background-position: left top;
}
/* hiprint-pagination */
.hiprint-pagination {
display: inline-block;
padding-left: 0;
}
.hiprint-pagination > li {
border: 1px solid #bdc3c7;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
display: block;
float: left;
padding: 5px;
text-decoration: none;
margin-right: 5px;
margin-bottom: 5px;
font-family: helvetica;
font-size: 13px;
cursor: pointer
}
.hiprint-pagination > li > span {
padding: 0 10px 0 10px;
}
.hiprint-pagination > li > a {
color: #bdc3c7;
font-weight: bold;
text-decoration: none;
font-size: 11px;
padding: 3px;
}
.hiprint-pagination > li > a:hover {
color: red;
}
.hiprint-pagination-sm > li > a {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
/*rect-printElement-type hiprint-printElement-type */
.rect-printElement-types .hiprint-printElement-type {
display: block;
}
.rect-printElement-types .hiprint-printElement-type {
padding: 0 0 0 0;
list-style: none;
}
.rect-printElement-types .hiprint-printElement-type > li > .title {
display: block;
padding: 4px 0px;
clear: both;
}
.rect-printElement-types .hiprint-printElement-type > li > ul {
padding: 0 0 0 0;
display: block;
list-style: none;
}
.rect-printElement-types .hiprint-printElement-type > li > ul > li {
display: block;
width: 50%;
float: left;
max-width: 100px;
}
.rect-printElement-types .hiprint-printElement-type > li > ul > li > a {
height: 92px;
padding: 12px 6px;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
margin-right: 5px;
width: 95%;
max-width: 100px;
display: inline-block;
text-align: center;
margin-bottom: 7px;
box-sizing: border-box;
color: #b9a5a6;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
}
/*small-printElement-type hiprint-printElement-type */
/*.hiprint-printElement :focus {
outline: none;
}*/
.small-printElement-types .hiprint-printElement-type {
display: block;
}
.small-printElement-types .hiprint-printElement-type {
padding: 0 0 0 0;
list-style: none;
}
.small-printElement-types .hiprint-printElement-type > li > .title {
display: block;
padding: 4px 0px;
clear: both;
}
.small-printElement-types .hiprint-printElement-type > li > ul {
padding: 0 0 0 0;
display: block;
list-style: none;
width: 100%;
}
.small-printElement-types .hiprint-printElement-type > li > ul > li {
display: block;
width: 50%;
float: left;
padding: 0 4px;
}
.small-printElement-types .hiprint-printElement-type > li > ul > li > a {
height: 22px;
/* padding: 12px 6px; */
/* margin-left: -1px; */
line-height: 20px;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
margin-right: 5px;
width: 100%;
display: block;
text-align: center;
margin-bottom: 7px;
box-sizing: border-box;
color: #b9a5a6;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
}
/* hiprint-toolbar*/
.hiprint-toolbar {
}
.hiprint-toolbar > ul {
padding: 0px;
margin-bottom: 5px;
}
.hiprint-toolbar > ul > li {
display: inline-block;
}
.hiprint-toolbar > ul > li > a {
position: relative;
float: left;
padding: 3px 10px;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
margin-right: 4px;
cursor: pointer;
}
.hiprint-printElement-type .glyphicon-class {
display: block;
text-align: center;
word-wrap: break-word;
/*font-size: 0.65rem;
font-weight: normal;*/
font-family: Helvetica, sans-serif;
}
.hiprint-printElement-type .glyphicon {
margin-top: 5px;
margin-bottom: 10px;
font-size: 37px;
}
/*
*/
/*option css*/
/*option css*/
.hiprint-option-items {
font-size: .75rem;
padding: 10px 5px;
display: flex;
flex-wrap: wrap;
align-items: flex-end;
box-sizing: border-box;
width: 100%;
}
.hiprint-option-items .hiprint-option-item {
box-sizing: border-box;
float: left;
width: 50%;
margin-bottom: 5px;
padding: 0 5px;
font-size: 14px;
}
.hiprint-option-items .hiprint-option-item-row {
width: 100%;
}
.hiprint-option-item-label {
margin: 5px 5px 3px 0;
}
.hiprint-option-items .hiprint-option-item-field input, .hiprint-option-items .hiprint-option-item-field select, .hiprint-option-items .hiprint-option-item-field textarea {
color: inherit;
background-color: transparent;
box-sizing: border-box;
width: 100%;
position: relative;
padding: 3px;
z-index: 1;
border: 1px solid rgb(169, 169, 169);
height: 19pt;
}
.hiprint-option-item-settingBtn {
height: 19pt;
line-height: 19pt;
font-size: 12px;
padding: 0 24px;
background: #00c1de;
border-color: transparent;
color: #fff;
display: inline-block;
margin: 5px;
font-weight: 400;
border: 1px solid transparent;
font-family: PingFangSC, helvetica neue, hiragino sans gb, arial, microsoft yahei ui, microsoft yahei, simsun, "sans-serif";
vertical-align: middle;
transition: .3s cubic-bezier(.4, 0, .2, 1);
transform: translateZ(0);
}
.hiprint-option-item-deleteBtn {
background: red;
}
.hiprint-option-items .minicolors {
position: relative;
}
.hiprint-option-items .minicolors-sprite {
background-image: url(./image/jquery.minicolors.png);
}
.hiprint-option-items .minicolors-swatch {
position: absolute;
vertical-align: middle;
background-position: -80px 0;
cursor: text;
padding: 0;
margin: 0;
display: inline-block;
}
.hiprint-option-items .minicolors-swatch-color {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.hiprint-option-items .minicolors input[type=hidden] + .minicolors-swatch {
width: 28px;
position: static;
cursor: pointer;
}
.hiprint-option-items .minicolors input[type=hidden][disabled] + .minicolors-swatch {
cursor: default;
}
/* Panel */
.hiprint-option-items .minicolors-panel {
position: absolute;
width: 173px;
background: white;
border: solid 1px #CCC;
box-shadow: 0 0 20px rgba(0, 0, 0, .2);
z-index: 99999;
box-sizing: content-box;
display: none;
}
.hiprint-option-items .minicolors-panel.minicolors-visible {
display: block;
}
/* Panel positioning */
.hiprint-option-items .minicolors-position-top .minicolors-panel {
top: -154px;
}
.hiprint-option-items .minicolors-position-right .minicolors-panel {
right: 0;
}
.hiprint-option-items .minicolors-position-bottom .minicolors-panel {
top: auto;
}
.hiprint-option-items .minicolors-position-left .minicolors-panel {
left: 0;
}
.hiprint-option-items .minicolors-with-opacity .minicolors-panel {
width: 194px;
}
.hiprint-option-items .minicolors .minicolors-grid {
position: relative;
top: 1px;
left: 1px; /* LTR */
width: 150px;
height: 150px;
margin-bottom: 2px;
background-position: -120px 0;
cursor: crosshair;
}
.hiprint-option-items .minicolors .minicolors-grid-inner {
position: absolute;
top: 0;
left: 0;
width: 150px;
height: 150px;
}
.hiprint-option-items .minicolors-slider-saturation .minicolors-grid {
background-position: -420px 0;
}
.hiprint-option-items .minicolors-slider-saturation .minicolors-grid-inner {
background-position: -270px 0;
background-image: inherit;
}
.hiprint-option-items .minicolors-slider-brightness .minicolors-grid {
background-position: -570px 0;
}
.hiprint-option-items .minicolors-slider-brightness .minicolors-grid-inner {
background-color: black;
}
.hiprint-option-items .minicolors-slider-wheel .minicolors-grid {
background-position: -720px 0;
}
.hiprint-option-items .minicolors-slider,
.hiprint-option-items .minicolors-opacity-slider {
position: absolute;
top: 1px;
left: 152px; /* LTR */
width: 20px;
height: 150px;
background-color: white;
background-position: 0 0;
cursor: row-resize;
}
.hiprint-option-items .minicolors-slider-saturation .minicolors-slider {
background-position: -60px 0;
}
.hiprint-option-items .minicolors-slider-brightness .minicolors-slider {
background-position: -20px 0;
}
.hiprint-option-items .minicolors-slider-wheel .minicolors-slider {
background-position: -20px 0;
}
.hiprint-option-items .minicolors-opacity-slider {
left: 173px; /* LTR */
background-position: -40px 0;
display: none;
}
.hiprint-option-items .minicolors-with-opacity .minicolors-opacity-slider {
display: block;
}
/* Pickers */
.hiprint-option-items .minicolors-grid .minicolors-picker {
position: absolute;
top: 70px;
left: 70px;
width: 12px;
height: 12px;
border: solid 1px black;
border-radius: 10px;
margin-top: -6px;
margin-left: -6px;
background: none;
}
.hiprint-option-items .minicolors-grid .minicolors-picker > div {
position: absolute;
top: 0;
left: 0;
width: 8px;
height: 8px;
border-radius: 8px;
border: solid 2px white;
box-sizing: content-box;
}
.hiprint-option-items .minicolors-picker {
position: absolute;
top: 0;
left: 0;
width: 18px;
height: 2px;
background: white;
border: solid 1px black;
margin-top: -2px;
box-sizing: content-box;
}
/* Swatches */
.hiprint-option-items .minicolors-swatches,
.hiprint-option-items .minicolors-swatches li {
margin: 5px 0 3px 5px; /* LTR */
padding: 0;
list-style: none;
overflow: hidden;
}
.hiprint-option-items .minicolors-swatches .minicolors-swatch {
position: relative;
float: left; /* LTR */
cursor: pointer;
margin: 0 4px 0 0; /* LTR */
}
.hiprint-option-items .minicolors-with-opacity .minicolors-swatches .minicolors-swatch {
margin-right: 7px; /* LTR */
}
.hiprint-option-items .minicolors-swatch.selected {
border-color: #000;
}
/* Inline controls */
.hiprint-option-items .minicolors-inline {
display: inline-block;
}
.hiprint-option-items .minicolors-inline .minicolors-input {
display: none !important;
}
.hiprint-option-items .minicolors-inline .minicolors-panel {
position: relative;
top: auto;
left: auto; /* LTR */
box-shadow: none;
z-index: auto;
display: inline-block;
}
/* Bootstrap theme */
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch {
z-index: 2;
top: 3px;
left: 3px;
width: 17px;
height: 17px;
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch {
margin-bottom: 2px;
top: 0;
left: 0; /* LTR */
width: 20px;
height: 20px;
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch-color {
border-radius: inherit;
}
.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch {
left: auto; /* LTR */
right: 3px; /* LTR */
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input {
float: none;
padding-left: 23px; /* LTR */
}
.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
padding-right: 44px; /* LTR */
padding-left: 12px; /* LTR */
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
top: 4px;
left: 4px; /* LTR */
width: 37px;
height: 37px;
border-radius: 5px;
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
width: 24px;
height: 24px;
}
.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch {
width: 18px;
height: 18px;
}
.hiprint-option-items .input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
border-top-left-radius: 0; /* LTR */
border-bottom-left-radius: 0; /* LTR */
}
/*hitable reizer*/
.hitable {
}
.hitable .selected {
background: #3e66ad;
}
/*resizer*/
.hitable tr.resizerRow,
.hitable .resizerRow td {
border: 0pt dashed;
height: 0pt;
background: #fff;
}
.hitable tr.resizerRow + tr,
.hitable tr.resizerRow + tr td {
border-top: 0px !important;
}
.hitable td.resizerColumn {
border: 0pt dashed;
width: 0.000001px !important;
background: #fff;
}
.hitable td.resizerColumn + td {
border-left: 0px !important;
}
/*GRIP*/
.columngrips {
height: 0px;
position: absolute;
}
.columngrip {
margin-left: -5px;
position: absolute;
z-index: 5;
width: 10px;
}
.columngrip .gripResizer {
position: absolute;
filter: alpha(opacity=1);
opacity: 0;
width: 10px;
height: 100%;
cursor: col-resize;
top: 0px;
}
.columngripDraging {
border-left: 1px dotted black;
}
.rowgrips {
height: 0px;
width: 0px;
position: absolute;
}
.rowgrip {
margin-top: -5px;
position: absolute;
z-index: 5;
height: 10px;
}
.rowgrip .gripResizer {
position: absolute;
filter: alpha(opacity=1);
opacity: 0;
height: 10px;
width: 100%;
cursor: row-resize;
left: 0px;
}
.rowgripDraging {
border-top: 1px dotted black;
}
.hitable .hitable-editor-text {
border: 1px solid;
width: 95%;
height: 80%;
}
.hipanel-disable {
height: 0px;
display: block !important;
top: 8500px;
width: 0px;
overflow: hidden;
position: absolute;
}
.hiprint_rul_wrapper {
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
pointer-events: none;
border: 0;
border-top: 1px solid rgb(201, 190, 190);
border-left: 1px solid rgb(201, 190, 190);
padding-left: 15px;
margin: -10px -20px -10px -20px
}
.hiprint_rul_wrapper .h_img {
position: absolute;
top: 0px;
left: 15px;
width: 400mm;
height: 15px;
}
.hiprint_rul_wrapper .v_img {
width: 400mm;
transform: rotate(90deg);
transform-origin: 0 100%;
height: 15px;
position: absolute;
top: -2px;
left: 0px;
}
/*hiprint-option-table*/
.hiprint-option-table-selected-columns {
color: inherit;
background-color: transparent;
box-sizing: border-box;
width: 100%;
position: relative;
padding: 0px;
list-style: none;
}
.hiprint-option-table-selected-columns .hiprint-option-table-selected-item {
color: inherit;
background-color: transparent;
box-sizing: border-box;
width: 100%;
padding: 0 3px;
border: 1px solid rgb(169, 169, 169);
line-height: 19pt;
margin: 3px 0;
}
/*hi-pretty */
.hi-pretty * {
box-sizing: border-box;
}
.hi-pretty input:not([type='checkbox']):not([type='radio']) {
display: none;
}
.hi-pretty {
position: relative;
display: inline-block;
margin-right: 1em;
white-space: nowrap;
line-height: 1;
}
.hi-pretty input {
position: absolute;
left: 0;
top: 0;
min-width: 1em;
width: 100%;
height: 100%;
z-index: 2;
opacity: 0;
margin: 0;
padding: 0;
cursor: pointer;
}
.hi-pretty .state label {
position: initial;
display: inline-block;
font-weight: normal;
margin: 0;
text-indent: 1.5em;
min-width: calc(1em + 2px);
}
.hi-pretty .state label:before,
.hi-pretty .state label:after {
content: '';
width: calc(1em + 2px);
height: calc(1em + 2px);
display: block;
box-sizing: border-box;
border-radius: 0;
border: 1px solid transparent;
z-index: 0;
position: absolute;
left: 0;
top: calc((0% - (100% - 1em)) - 8%);
background-color: transparent;
}
.hi-pretty .state label:before {
border-color: #bdc3c7;
}
.hi-pretty .state.p-is-hover,
.hi-pretty .state.p-is-indeterminate {
display: none;
}
.hi-pretty.p-default.p-fill .state label:after {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.hi-pretty.p-default .state label:after {
-webkit-transform: scale(0.6);
-ms-transform: scale(0.6);
transform: scale(0.6);
}
.hi-pretty.p-default input:checked ~ .state label:after {
background-color: #bdc3c7 !important;
}
.hi-pretty.p-default.p-thick .state label:before,
.hi-pretty.p-default.p-thick .state label:after {
border-width: calc(1em / 7);
}
.hi-pretty.p-default.p-thick .state label:after {
-webkit-transform: scale(0.4) !important;
-ms-transform: scale(0.4) !important;
transform: scale(0.4) !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,279 @@
@media print {
body {
margin: 0px;
padding: 0px;
}
}
@page {
margin: 0;
}
.hiprint-printPaper * {
box-sizing: border-box;
-moz-box-sizing: border-box; /* Firefox */
-webkit-box-sizing: border-box; /* Safari */
}
.hiprint-printPaper *:focus {
outline: -webkit-focus-ring-color auto 0px;
}
.hiprint-page-break-avoid {
page-break-after: avoid;
}
.hiprint-printPaper {
position: relative;
padding: 0 0 0 0;
page-break-after: always;
overflow-x: hidden;
overflow: hidden;
}
.hiprint-printPaper .hiprint-printPaper-content {
position: relative;
}
.hiprint-printPaper.design {
overflow: visible;
}
.hiprint-printTemplate .hiprint-printPanel {
page-break-after: always;
}
.hiprint-printPaper, hiprint-printPanel {
box-sizing: border-box;
border: 0px;
}
.hiprint-printPanel .hiprint-printPaper:last-child {
page-break-after: avoid;
}
.hiprint-printTemplate .hiprint-printPanel:last-child {
page-break-after: avoid;
}
.hiprint-printPaper .hideheaderLinetarget {
border-top: 0px dashed rgb(201, 190, 190) !important;
}
.hiprint-printPaper .hidefooterLinetarget {
border-top: 0px dashed rgb(201, 190, 190) !important;
}
.hiprint-printPaper.design {
border: 1px dashed rgba(170,170,170,0.7);
}
.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content {
overflow: hidden;
box-sizing: border-box;
}
.design .resize-panel {
box-sizing: border-box;
border: 1px dotted;
}
.hiprint-printElement-text {
background-color: transparent;
background-repeat: repeat;
padding: 0 0 0 0;
border: 0.75pt none rgb(0,0,0);
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
line-height: 9.75pt;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
}
.design .hiprint-printElement-text-content {
border: 1px dashed rgb(206, 188, 188);
box-sizing: border-box;
}
.hiprint-printElement-longText {
background-color: transparent;
background-repeat: repeat;
border: 0.75pt none rgb(0,0,0);
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
line-height: 9.75pt;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
/*white-space: pre-wrap*/
}
.hiprint-printElement-table {
background-color: transparent;
background-repeat: repeat;
color: rgb(0,0,0);
border-color: rgb(0,0,0);
border-style: none;
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
padding: 0 0 0 0;
box-sizing: border-box;
line-height: 9.75pt;
}
.hiprint-printElement-table thead {
background: #e8e8e8;
font-weight: 700;
}
.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td {
border-color: rgb(0,0,0);
border-style: none;
border: 1px solid rgb(0,0,0);
font-weight: normal;
direction: ltr;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-decoration: none;
vertical-align: middle;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
/*line-height: 9.75pt;
font-size: 9pt;*/
}
/*.hiprint-printElement-tableTarget tr,*/
.hiprint-printElement-tableTarget td {
height: 18pt;
}
.hiprint-printPaper .hiprint-paperNumber {
font-size: 9pt;
}
.design .hiprint-printElement-table-handle {
position: absolute;
height: 21pt;
width: 21pt;
background: red;
z-index:1;
}
.hiprint-printPaper .hiprint-paperNumber-disabled {
float: right !important;
right: 0 !important;
color: gainsboro !important;
}
.hiprint-printElement-vline, .hiprint-printElement-hline {
border: 0px none rgb(0,0,0);
}
.hiprint-printElement-vline {
border-left: 0.75pt solid #000;
border-right: 0px none rgb(0,0,0) !important;
border-bottom: 0px none rgb(0,0,0) !important;
border-top: 0px none rgb(0,0,0) !important;
}
.hiprint-printElement-hline {
border-top: 0.75pt solid #000;
border-right: 0px none rgb(0,0,0) !important;
border-bottom: 0px none rgb(0,0,0) !important;
border-left: 0px none rgb(0,0,0) !important;
}
.hiprint-printElement-oval, .hiprint-printElement-rect {
border: 0.75pt solid #000;
}
.hiprint-text-content-middle {
display:table;
}
.hiprint-text-content-middle>div {
display: table-cell;
vertical-align:middle
}
.hiprint-text-content-bottom {
display: table;
}
.hiprint-text-content-bottom > div {
display: table-cell;
vertical-align: bottom
}
/*hi-grid-row */
.hi-grid-row {
position: relative;
height: auto;
margin-right: 0;
margin-left: 0;
zoom: 1;
display: block;
box-sizing: border-box;
}
.hi-grid-row::after, .hi-grid-row::before {
display: table;
content: '';
box-sizing: border-box;
}
.hi-grid-col {
display: block;
box-sizing: border-box;
position: relative;
float: left;
flex: 0 0 auto;
}
.table-grid-row {
margin-left: -0pt;
margin-right: -0pt;
}
.tableGridColumnsGutterRow {
padding-left: 0pt;
padding-right: 0pt;
}
.hiprint-gridColumnsFooter {
text-align: left;
clear: both;
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,754 @@
(function () {
window.HIPRINT_CONFIG = {
//optionItems: [hiprintCustomOptionItem],//自定义选项
movingDistance: 1.5, //鼠标拖动一次移动的距离,默认1.5pt
paperHeightTrim: 1, //纸张html 的高度等于真实高度-1
text: (any = {
supportOptions: [
// {
// name: 'hiprintCustomOptionItem',
// hidden: false
// },
{
name: "title",
hidden: false
},
{
name: "field",
hidden: false
},
{
name: "testData",
hidden: false
},
{
name: "dataType",
hidden: false
},
{
name: "fontFamily",
hidden: false
},
{
name: "fontSize",
hidden: false
},
{
name: "fontWeight",
hidden: false
},
{
name: "letterSpacing",
hidden: false
},
{
name: "color",
hidden: false
},
{
name: "textDecoration",
hidden: false
},
{
name: "textAlign",
hidden: false
},
{
name: "textContentVerticalAlign",
hidden: false
},
{
name: "lineHeight",
hidden: false
},
{
name: "textType",
hidden: false
},
{
name: "barcodeMode",
hidden: false
},
{
name: "hideTitle",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "unShowInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "optionsGroup",
hidden: false
},
{
name: "borderLeft",
hidden: false
},
{
name: "borderTop",
hidden: false
},
{
name: "borderRight",
hidden: false
},
{
name: "borderBottom",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "borderColor",
hidden: false
},
{
name: "contentPaddingLeft",
hidden: false
},
{
name: "contentPaddingTop",
hidden: false
},
{
name: "contentPaddingRight",
hidden: false
},
{
name: "contentPaddingBottom",
hidden: false
},
{
name: "backgroundColor",
hidden: false
},
{
name: "formatter",
hidden: false
},
{
name: "styler",
hidden: false
}
],
default: {
width: 120,
height: 9.75
}
}),
image: (any = {
supportOptions: [
{
name: "field",
hidden: false
},
{
name: "src",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "formatter",
hidden: false
},
{
name: "styler",
hidden: false
}
],
default: {}
}),
longText: (any = {
supportOptions: [
{
name: "title",
hidden: false
},
{
name: "field",
hidden: false
},
{
name: "testData",
hidden: false
},
{
name: "fontFamily",
hidden: false
},
{
name: "fontSize",
hidden: false
},
{
name: "fontWeight",
hidden: false
},
{
name: "letterSpacing",
hidden: false
},
{
name: "textAlign",
hidden: false
},
{
name: "lineHeight",
hidden: false
},
{
name: "color",
hidden: false
},
{
name: "hideTitle",
hidden: false
},
{
name: "longTextIndent",
hidden: false
},
{
name: "leftSpaceRemoved",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "unShowInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "lHeight",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "optionsGroup",
hidden: false
},
{
name: "borderLeft",
hidden: false
},
{
name: "borderTop",
hidden: false
},
{
name: "borderRight",
hidden: false
},
{
name: "borderBottom",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "borderColor",
hidden: false
},
{
name: "contentPaddingLeft",
hidden: false
},
{
name: "contentPaddingTop",
hidden: false
},
{
name: "contentPaddingRight",
hidden: false
},
{
name: "contentPaddingBottom",
hidden: false
},
{
name: "backgroundColor",
hidden: false
},
{
name: "formatter",
hidden: false
},
{
name: "styler",
hidden: false
}
],
default: {
height: 42,
width: 550
}
}),
table: (any = {
supportOptions: [
{
name: "field",
hidden: false
},
{
name: "fontFamily",
hidden: false
},
{
name: "fontSize",
hidden: false
},
{
name: "lineHeight",
hidden: false
},
{
name: "textAlign",
hidden: false
},
{
name: "gridColumns",
hidden: false
},
{
name: "gridColumnsGutter",
hidden: false
},
{
name: "tableBorder",
hidden: false
},
{
name: "tableHeaderBorder",
hidden: false
},
{
name: "tableHeaderCellBorder",
hidden: false
},
{
name: "tableHeaderRowHeight",
hidden: false
},
{
name: "tableHeaderBackground",
hidden: false
},
{
name: "tableHeaderFontSize",
hidden: false
},
{
name: "tableHeaderFontWeight",
hidden: false
},
{
name: "tableBodyRowHeight",
hidden: false
},
{
name: "tableBodyRowBorder",
hidden: false
},
{
name: "tableBodyCellBorder",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "lHeight",
hidden: false
},
{
name: "autoCompletion",
hidden: false
},
{
name: "columns",
hidden: false
},
{
name: "styler",
hidden: false
},
{
name: "rowStyler",
hidden: false
},
{
name: "tableFooterRepeat",
hidden: false
},
{
name: "footerFormatter",
hidden: false
},
{
name: "gridColumnsFooterFormatter",
hidden: false
}
],
default: {
width: 550
}
}),
tableCustom: (any = {
supportOptions: [
{
name: "field",
hidden: false
},
{
name: "fontFamily",
hidden: false
},
{
name: "fontSize",
hidden: false
},
{
name: "textAlign",
hidden: false
},
{
name: "tableBorder",
hidden: false
},
{
name: "tableHeaderBorder",
hidden: false
},
{
name: "tableHeaderCellBorder",
hidden: false
},
{
name: "tableHeaderRowHeight",
hidden: false
},
{
name: "tableHeaderFontSize",
hidden: false
},
{
name: "tableHeaderFontWeight",
hidden: false
},
{
name: "tableHeaderBackground",
hidden: false
},
{
name: "tableBodyRowHeight",
hidden: false
},
{
name: "tableBodyRowBorder",
hidden: false
},
{
name: "tableBodyCellBorder",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "lHeight",
hidden: false
},
{
name: "autoCompletion",
hidden: false
},
{
name: "tableFooterRepeat",
hidden: false
}
],
default: {
width: 550
}
}),
hline: (any = {
supportOptions: [
{
name: "borderColor",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "borderStyle",
hidden: false
}
],
default: {
borderWidth: 0.75,
height: 9,
width: 90
}
}),
vline: (any = {
supportOptions: [
{
name: "borderColor",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "borderStyle",
hidden: false
}
],
default: {
borderWidth: undefined,
height: 90,
width: 9
}
}),
rect: (any = {
supportOptions: [
{
name: "borderColor",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "borderStyle",
hidden: false
}
],
default: {
borderWidth: undefined,
height: 90,
width: 90
}
}),
oval: (any = {
supportOptions: [
{
name: "borderColor",
hidden: false
},
{
name: "borderWidth",
hidden: false
},
{
name: "showInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "transform",
hidden: false
},
{
name: "borderStyle",
hidden: false
}
],
default: {
borderWidth: undefined,
height: 90,
width: 90
}
}),
html: (any = {
supportOptions: [
{
name: "showInPage",
hidden: false
},
{
name: "unShowInPage",
hidden: false
},
{
name: "fixed",
hidden: false
},
{
name: "axis",
hidden: false
},
{
name: "formatter",
hidden: false
}
],
default: {
height: 90,
width: 90
}
}),
tableColumn: (any = {
supportOptions: [
{
name: "title",
hidden: false
},
{
name: "align",
hidden: false
},
{
name: "halign",
hidden: false
},
{
name: "vAlign",
hidden: false
},
{
name: "paddingLeft",
hidden: false
},
{
name: "paddingRight",
hidden: false
},
{
name: "formatter2",
hidden: false
},
{
name: "styler2",
hidden: false
}
],
default: {
height: 90,
width: 90
}
})
};
})();

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -0,0 +1,113 @@
(function ($) {
$.fn.hiwprint = function (options) {
var usedFrame = document.getElementById('hiwprint_iframe');
if (usedFrame) usedFrame.parentNode.removeChild(usedFrame);
var opt = $.extend({}, $.fn.hiwprint.defaults, options);
var $element = this;
var $iframe = $('<iframe id="hiwprint_iframe" style="visibility: hidden; height: 0; width: 0; position: absolute;border-width: 0"></iframe>');
var css = '';
if (opt.importCss) {
if ($("link[media=print]").length > 0) {
$("link[media=print]").each(function () {
css += '<link rel="stylesheet" type="text/css" media="print" href="' + $(this).attr("href") + '">';
});
}
else {
$("link").each(function () {
css += '<link rel="stylesheet" type="text/css" media="print" href="' + $(this).attr("href") + '">';
});
}
}
$iframe[0].srcdoc = '<!DOCTYPE html><html><head><title></title><meta charset="UTF-8">' + css + '</head><body></body></html>';
$iframe[0].onload = function () {
var printDocument = $iframe[0].contentWindow || $iframe[0].contentDocument;
if (printDocument.document) printDocument = printDocument.document;
if (!$iframe.attr('srcdoc')) {
printDocument.write('<!DOCTYPE html><html><head><title></title><meta charset="UTF-8">' + css + '</head><body></body></html>');
}
if (opt.printContainer) {
printDocument.body.innerHTML = $element[0].outerHTML;
}
else {
printDocument.body.innerHTML = $element.html();
}
loadAllImages(printDocument, function () {
performPrint($iframe[0]);
});
};
$iframe.appendTo("body");
};
$.fn.hiwprint.defaults = {
importCss: true,
printContainer: true
};
function performPrint(iframeElement) {
try {
iframeElement.focus();
if (isEdge() || isIE()) {
try {
iframeElement.contentWindow.document.execCommand('print', false, null);
} catch (e) {
iframeElement.contentWindow.print();
}
} else {
// Other browsers
iframeElement.contentWindow.print();
}
} catch (error) {
console.log(error);
}
}
function isIE() {
return navigator.userAgent.indexOf('MSIE') !== -1 || !!document.documentMode;
}
// Edge 20+
function isEdge() {
return !isIE() && !!window.StyleMedia;
}
function loadAllImages(printDocument, callback, time) {
if (time === undefined) {
time = 0;
}
var images = printDocument.getElementsByTagName('img');
var allLoaded = true;
for (var i = 0; i < images.length; i++) {
var image = images[i];
if (image.src && image.src !== window.location.href && image.src.indexOf('base64') == -1) {
if (!image || typeof image.naturalWidth === 'undefined' || image.naturalWidth === 0 || !image.complete) {
console.log(image.complete);
if (!image.complete) {
allLoaded = false;
}
}
}
}
time++;
if (!allLoaded && time < 10) {
setTimeout(function () {
loadAllImages(printDocument, callback, time);
}, 500);
} else {
callback();
}
}
})(jQuery);

@ -0,0 +1,77 @@
// -----------------------------------------------------------------------
// Eros Fratini - eros@recoding.it
// jqprint 0.3
//
// - 19/06/2009 - some new implementations, added Opera support
// - 11/05/2009 - first sketch
//
// Printing plug-in for jQuery, evolution of jPrintArea: http://plugins.jquery.com/project/jPrintArea
// requires jQuery 1.3.x
//
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
//------------------------------------------------------------------------
(function($) {
var opt;
$.fn.jqprint = function (options) {
opt = $.extend({}, $.fn.jqprint.defaults, options);
var $element = (this instanceof jQuery) ? this : $(this);
if (opt.operaSupport && $.browser.opera)
{
var tab = window.open("","jqPrint-preview");
tab.document.open();
var doc = tab.document;
}
else
{
var $iframe = $("<iframe />");
if (!opt.debug) { $iframe.css({ position: "absolute", width: "0px", height: "0px", left: "-600px", top: "-600px" }); }
$iframe.appendTo("body");
var doc = $iframe[0].contentWindow.document;
}
if (opt.importCSS)
{
doc.write('<style media="print"> @page {size: auto; margin: 0mm;padding:0mm }</style>')
if ($("link[media=print]").length > 0)
{
$("link[media=print]").each( function() {
doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />");
});
}
else
{
$("link").each( function() {
doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />");
});
}
}
if (opt.printContainer) { doc.write($element.outer()); }
else { $element.each( function() { doc.write($(this).html()); }); }
doc.close();
(opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).focus();
setTimeout( function() { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);
}
$.fn.jqprint.defaults = {
debug: false,
importCSS: true,
printContainer: true,
operaSupport: true
};
// Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
jQuery.fn.outer = function() {
return $($('<div></div>').html(this.clone())).html();
}
})(jQuery);

File diff suppressed because one or more lines are too long

@ -0,0 +1,265 @@
/**
* covert canvas to image
* and save the image file
*/
var Canvas2Image = function () {
// check if support sth.
var $support = function () {
var canvas = document.createElement('canvas'),
ctx = canvas.getContext('2d');
return {
canvas: !!ctx,
imageData: !!ctx.getImageData,
dataURL: !!canvas.toDataURL,
btoa: !!window.btoa
};
}();
var downloadMime = 'image/octet-stream';
function scaleCanvas (canvas, width, height) {
var w = canvas.width,
h = canvas.height;
if (width == undefined) {
width = w;
}
if (height == undefined) {
height = h;
}
var retCanvas = document.createElement('canvas');
var retCtx = retCanvas.getContext('2d');
retCanvas.width = width;
retCanvas.height = height;
retCtx.drawImage(canvas, 0, 0, w, h, 0, 0, width, height);
return retCanvas;
}
function getDataURL (canvas, type, width, height) {
canvas = scaleCanvas(canvas, width, height);
return canvas.toDataURL(type);
}
function saveFile (strData) {
document.location.href = strData;
}
function genImage(strData) {
var img = document.createElement('img');
img.src = strData;
return img;
}
function fixType (type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
}
function encodeData (data) {
if (!window.btoa) { throw 'btoa undefined' }
var str = '';
if (typeof data == 'string') {
str = data;
} else {
for (var i = 0; i < data.length; i ++) {
str += String.fromCharCode(data[i]);
}
}
return btoa(str);
}
function getImageData (canvas) {
var w = canvas.width,
h = canvas.height;
return canvas.getContext('2d').getImageData(0, 0, w, h);
}
function makeURI (strData, type) {
return 'data:' + type + ';base64,' + strData;
}
/**
* create bitmap image
* 按照规则生成图片响应头和响应体
*/
var genBitmapImage = function (oData) {
//
// BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx
// BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx
//
var biWidth = oData.width;
var biHeight = oData.height;
var biSizeImage = biWidth * biHeight * 3;
var bfSize = biSizeImage + 54; // total header size = 54 bytes
//
// typedef struct tagBITMAPFILEHEADER {
// WORD bfType;
// DWORD bfSize;
// WORD bfReserved1;
// WORD bfReserved2;
// DWORD bfOffBits;
// } BITMAPFILEHEADER;
//
var BITMAPFILEHEADER = [
// WORD bfType -- The file type signature; must be "BM"
0x42, 0x4D,
// DWORD bfSize -- The size, in bytes, of the bitmap file
bfSize & 0xff, bfSize >> 8 & 0xff, bfSize >> 16 & 0xff, bfSize >> 24 & 0xff,
// WORD bfReserved1 -- Reserved; must be zero
0, 0,
// WORD bfReserved2 -- Reserved; must be zero
0, 0,
// DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
54, 0, 0, 0
];
//
// typedef struct tagBITMAPINFOHEADER {
// DWORD biSize;
// LONG biWidth;
// LONG biHeight;
// WORD biPlanes;
// WORD biBitCount;
// DWORD biCompression;
// DWORD biSizeImage;
// LONG biXPelsPerMeter;
// LONG biYPelsPerMeter;
// DWORD biClrUsed;
// DWORD biClrImportant;
// } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
//
var BITMAPINFOHEADER = [
// DWORD biSize -- The number of bytes required by the structure
40, 0, 0, 0,
// LONG biWidth -- The width of the bitmap, in pixels
biWidth & 0xff, biWidth >> 8 & 0xff, biWidth >> 16 & 0xff, biWidth >> 24 & 0xff,
// LONG biHeight -- The height of the bitmap, in pixels
biHeight & 0xff, biHeight >> 8 & 0xff, biHeight >> 16 & 0xff, biHeight >> 24 & 0xff,
// WORD biPlanes -- The number of planes for the target device. This value must be set to 1
1, 0,
// WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap
// has a maximum of 2^24 colors (16777216, Truecolor)
24, 0,
// DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed
0, 0, 0, 0,
// DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
biSizeImage & 0xff, biSizeImage >> 8 & 0xff, biSizeImage >> 16 & 0xff, biSizeImage >> 24 & 0xff,
// LONG biXPelsPerMeter, unused
0,0,0,0,
// LONG biYPelsPerMeter, unused
0,0,0,0,
// DWORD biClrUsed, the number of color indexes of palette, unused
0,0,0,0,
// DWORD biClrImportant, unused
0,0,0,0
];
var iPadding = (4 - ((biWidth * 3) % 4)) % 4;
var aImgData = oData.data;
var strPixelData = '';
var biWidth4 = biWidth<<2;
var y = biHeight;
var fromCharCode = String.fromCharCode;
do {
var iOffsetY = biWidth4*(y-1);
var strPixelRow = '';
for (var x = 0; x < biWidth; x++) {
var iOffsetX = x<<2;
strPixelRow += fromCharCode(aImgData[iOffsetY+iOffsetX+2]) +
fromCharCode(aImgData[iOffsetY+iOffsetX+1]) +
fromCharCode(aImgData[iOffsetY+iOffsetX]);
}
for (var c = 0; c < iPadding; c++) {
strPixelRow += String.fromCharCode(0);
}
strPixelData += strPixelRow;
} while (--y);
var strEncoded = encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) + encodeData(strPixelData);
return strEncoded;
};
/**
* saveAsImage
* @param canvasElement
* @param {String} image type
* @param {Number} [optional] png width
* @param {Number} [optional] png height
*/
var saveAsImage = function (canvas, width, height, type) {
if ($support.canvas && $support.dataURL) {
if (typeof canvas == "string") { canvas = document.getElementById(canvas); }
if (type == undefined) { type = 'png'; }
type = fixType(type);
if (/bmp/.test(type)) {
var data = getImageData(scaleCanvas(canvas, width, height));
var strData = genBitmapImage(data);
saveFile(makeURI(strData, downloadMime));
} else {
var strData = getDataURL(canvas, type, width, height);
saveFile(strData.replace(type, downloadMime));
}
}
};
var convertToImage = function (canvas, width, height, type) {
if ($support.canvas && $support.dataURL) {
if (typeof canvas == "string") { canvas = document.getElementById(canvas); }
if (type == undefined) { type = 'png'; }
type = fixType(type);
if (/bmp/.test(type)) {
var data = getImageData(scaleCanvas(canvas, width, height));
var strData = genBitmapImage(data);
return genImage(makeURI(strData, 'image/bmp'));
} else {
var strData = getDataURL(canvas, type, width, height);
return genImage(strData);
}
}
};
return {
saveAsImage: saveAsImage,
saveAsPNG: function (canvas, width, height) {
return saveAsImage(canvas, width, height, 'png');
},
saveAsJPEG: function (canvas, width, height) {
return saveAsImage(canvas, width, height, 'jpeg');
},
saveAsGIF: function (canvas, width, height) {
return saveAsImage(canvas, width, height, 'gif');
},
saveAsBMP: function (canvas, width, height) {
return saveAsImage(canvas, width, height, 'bmp');
},
convertToImage: convertToImage,
convertToPNG: function (canvas, width, height) {
return convertToImage(canvas, width, height, 'png');
},
convertToJPEG: function (canvas, width, height) {
return convertToImage(canvas, width, height, 'jpeg');
},
convertToGIF: function (canvas, width, height) {
return convertToImage(canvas, width, height, 'gif');
},
convertToBMP: function (canvas, width, height) {
return convertToImage(canvas, width, height, 'bmp');
}
};
}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,615 @@
/**
* @fileoverview
* - Using the 'QRCode for Javascript library'
* - Fixed dataset of 'QRCode for Javascript library' for support full-spec.
* - this library has no dependencies.
*
* @author davidshimjs
* @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
* @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
*/
window.QRCode;
(function () {
//---------------------------------------------------------------------
// QRCode for JavaScript
//
// Copyright (c) 2009 Kazuhiko Arase
//
// URL: http://www.d-project.com/
//
// Licensed under the MIT license:
// http://www.opensource.org/licenses/mit-license.php
//
// The word "QR Code" is registered trademark of
// DENSO WAVE INCORPORATED
// http://www.denso-wave.com/qrcode/faqpatent-e.html
//
//---------------------------------------------------------------------
function QR8bitByte(data) {
this.mode = QRMode.MODE_8BIT_BYTE;
this.data = data;
this.parsedData = [];
// Added to support UTF-8 Characters
for (var i = 0, l = this.data.length; i < l; i++) {
var byteArray = [];
var code = this.data.charCodeAt(i);
if (code > 0x10000) {
byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);
byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);
byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[3] = 0x80 | (code & 0x3F);
} else if (code > 0x800) {
byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);
byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[2] = 0x80 | (code & 0x3F);
} else if (code > 0x80) {
byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);
byteArray[1] = 0x80 | (code & 0x3F);
} else {
byteArray[0] = code;
}
this.parsedData.push(byteArray);
}
this.parsedData = Array.prototype.concat.apply([], this.parsedData);
if (this.parsedData.length != this.data.length) {
this.parsedData.unshift(191);
this.parsedData.unshift(187);
this.parsedData.unshift(239);
}
}
QR8bitByte.prototype = {
getLength: function (buffer) {
return this.parsedData.length;
},
write: function (buffer) {
for (var i = 0, l = this.parsedData.length; i < l; i++) {
buffer.put(this.parsedData[i], 8);
}
}
};
function QRCodeModel(typeNumber, errorCorrectLevel) {
this.typeNumber = typeNumber;
this.errorCorrectLevel = errorCorrectLevel;
this.modules = null;
this.moduleCount = 0;
this.dataCache = null;
this.dataList = [];
}
QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}
return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}
this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}
if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}
this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}
return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}
return qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}
this.modules[r][6]=(r%2==0);}
for(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}
this.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}
for(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}
for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}
for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}
this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}
var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}
this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}
row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}
var totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}
if(buffer.getLengthInBits()>totalDataCount*8){throw new Error("code length overflow. ("
+buffer.getLengthInBits()
+">"
+totalDataCount*8
+")");}
if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}
while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}
while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD1,8);}
return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}
offset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}
var totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}
var data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}
for(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}
return data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}
return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}
return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}
return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}
return a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+mode);}}else{throw new Error("type:"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}
for(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}
if(r==0&&c==0){continue;}
if(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}
if(sameCount>5){lostPoint+=(3+sameCount-5);}}}
for(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}
for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}
for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}
var darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}
var ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error("glog("+n+")");}
return QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}
while(n>=256){n-=255;}
return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}
for(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}
for(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}
function QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+"/"+shift);}
var offset=0;while(offset<num.length&&num[offset]==0){offset++;}
this.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}
QRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}
return new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}
var ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}
for(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}
return new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}
QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error("bad rs block @ typeNumber:"+typeNumber+"/errorCorrectLevel:"+errorCorrectLevel);}
var length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}
return list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}
QRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}
if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}
this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];
function _isSupportCanvas() {
return typeof CanvasRenderingContext2D != "undefined";
}
// android 2.x doesn't support Data-URI spec
function _getAndroid() {
var android = false;
var sAgent = navigator.userAgent;
if (/android/i.test(sAgent)) { // android
android = true;
var aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i);
if (aMat && aMat[1]) {
android = parseFloat(aMat[1]);
}
}
return android;
}
var svgDrawer = (function() {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
this.clear();
function makeSVG(tag, attrs) {
var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
for (var k in attrs)
if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);
return el;
}
var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});
svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink");
_el.appendChild(svg);
svg.appendChild(makeSVG("rect", {"fill": _htOption.colorLight, "width": "100%", "height": "100%"}));
svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"}));
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
if (oQRCode.isDark(row, col)) {
var child = makeSVG("use", {"x": String(col), "y": String(row)});
child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template")
svg.appendChild(child);
}
}
}
};
Drawing.prototype.clear = function () {
while (this._el.hasChildNodes())
this._el.removeChild(this._el.lastChild);
};
return Drawing;
})();
var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
// Drawing in DOM by using Table tag
var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
var aHTML = ['<table style="border:0;border-collapse:collapse;">'];
for (var row = 0; row < nCount; row++) {
aHTML.push('<tr>');
for (var col = 0; col < nCount; col++) {
aHTML.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';"></td>');
}
aHTML.push('</tr>');
}
aHTML.push('</table>');
_el.innerHTML = aHTML.join('');
// Fix the margin values as real size.
var elTable = _el.childNodes[0];
var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;
var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;
if (nLeftMarginTable > 0 && nTopMarginTable > 0) {
elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px";
}
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._el.innerHTML = '';
};
return Drawing;
})() : (function () { // Drawing in Canvas
function _onMakeImage() {
this._elImage.src = this._elCanvas.toDataURL("image/png");
this._elImage.style.display = "block";
this._elCanvas.style.display = "none";
}
// Android 2.1 bug workaround
// http://code.google.com/p/android/issues/detail?id=5141
if (this._android && this._android <= 2.1) {
var factor = 1 / window.devicePixelRatio;
var drawImage = CanvasRenderingContext2D.prototype.drawImage;
CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {
if (("nodeName" in image) && /img/i.test(image.nodeName)) {
for (var i = arguments.length - 1; i >= 1; i--) {
arguments[i] = arguments[i] * factor;
}
} else if (typeof dw == "undefined") {
arguments[1] *= factor;
arguments[2] *= factor;
arguments[3] *= factor;
arguments[4] *= factor;
}
drawImage.apply(this, arguments);
};
}
/**
* Check whether the user's browser supports Data URI or not
*
* @private
* @param {Function} fSuccess Occurs if it supports Data URI
* @param {Function} fFail Occurs if it doesn't support Data URI
*/
function _safeSetDataURI(fSuccess, fFail) {
var self = this;
self._fFail = fFail;
self._fSuccess = fSuccess;
// Check it just once
if (self._bSupportDataURI === null) {
var el = document.createElement("img");
var fOnError = function() {
self._bSupportDataURI = false;
if (self._fFail) {
self._fFail.call(self);
}
};
var fOnSuccess = function() {
self._bSupportDataURI = true;
if (self._fSuccess) {
self._fSuccess.call(self);
}
};
el.onabort = fOnError;
el.onerror = fOnError;
el.onload = fOnSuccess;
el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data.
return;
} else if (self._bSupportDataURI === true && self._fSuccess) {
self._fSuccess.call(self);
} else if (self._bSupportDataURI === false && self._fFail) {
self._fFail.call(self);
}
};
/**
* Drawing QRCode by using canvas
*
* @constructor
* @param {HTMLElement} el
* @param {Object} htOption QRCode Options
*/
var Drawing = function (el, htOption) {
this._bIsPainted = false;
this._android = _getAndroid();
this._htOption = htOption;
this._elCanvas = document.createElement("canvas");
this._elCanvas.width = htOption.width;
this._elCanvas.height = htOption.height;
el.appendChild(this._elCanvas);
this._el = el;
this._oContext = this._elCanvas.getContext("2d");
this._bIsPainted = false;
this._elImage = document.createElement("img");
this._elImage.alt = "Scan me!";
this._elImage.style.display = "none";
this._el.appendChild(this._elImage);
this._bSupportDataURI = null;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _elImage = this._elImage;
var _oContext = this._oContext;
var _htOption = this._htOption;
var nCount = oQRCode.getModuleCount();
var nWidth = _htOption.width / nCount;
var nHeight = _htOption.height / nCount;
var nRoundedWidth = Math.round(nWidth);
var nRoundedHeight = Math.round(nHeight);
_elImage.style.display = "none";
this.clear();
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
var bIsDark = oQRCode.isDark(row, col);
var nLeft = col * nWidth;
var nTop = row * nHeight;
_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.lineWidth = 1;
_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.fillRect(nLeft, nTop, nWidth, nHeight);
// 안티 앨리어싱 방지 처리
_oContext.strokeRect(
Math.floor(nLeft) + 0.5,
Math.floor(nTop) + 0.5,
nRoundedWidth,
nRoundedHeight
);
_oContext.strokeRect(
Math.ceil(nLeft) - 0.5,
Math.ceil(nTop) - 0.5,
nRoundedWidth,
nRoundedHeight
);
}
}
this._bIsPainted = true;
};
/**
* Make the image from Canvas if the browser supports Data URI.
*/
Drawing.prototype.makeImage = function () {
if (this._bIsPainted) {
_safeSetDataURI.call(this, _onMakeImage);
}
};
/**
* Return whether the QRCode is painted or not
*
* @return {Boolean}
*/
Drawing.prototype.isPainted = function () {
return this._bIsPainted;
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);
this._bIsPainted = false;
};
/**
* @private
* @param {Number} nNumber
*/
Drawing.prototype.round = function (nNumber) {
if (!nNumber) {
return nNumber;
}
return Math.floor(nNumber * 1000) / 1000;
};
return Drawing;
})();
/**
* Get the type by string length
*
* @private
* @param {String} sText
* @param {Number} nCorrectLevel
* @return {Number} type
*/
function _getTypeNumber(sText, nCorrectLevel) {
var nType = 1;
var length = _getUTF8Length(sText);
for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
var nLimit = 0;
switch (nCorrectLevel) {
case QRErrorCorrectLevel.L :
nLimit = QRCodeLimitLength[i][0];
break;
case QRErrorCorrectLevel.M :
nLimit = QRCodeLimitLength[i][1];
break;
case QRErrorCorrectLevel.Q :
nLimit = QRCodeLimitLength[i][2];
break;
case QRErrorCorrectLevel.H :
nLimit = QRCodeLimitLength[i][3];
break;
}
if (length <= nLimit) {
break;
} else {
nType++;
}
}
if (nType > QRCodeLimitLength.length) {
throw new Error("Too long data");
}
return nType;
}
function _getUTF8Length(sText) {
var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
return replacedText.length + (replacedText.length != sText ? 3 : 0);
}
/**
* @class QRCode
* @constructor
* @example
* new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie");
*
* @example
* var oQRCode = new QRCode("test", {
* text : "http://naver.com",
* width : 128,
* height : 128
* });
*
* oQRCode.clear(); // Clear the QRCode.
* oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode.
*
* @param {HTMLElement|String} el target element or 'id' attribute of element.
* @param {Object|String} vOption
* @param {String} vOption.text QRCode link data
* @param {Number} [vOption.width=256]
* @param {Number} [vOption.height=256]
* @param {String} [vOption.colorDark="#000000"]
* @param {String} [vOption.colorLight="#ffffff"]
* @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]
*/
QRCode = function (el, vOption) {
this._htOption = {
width : 256,
height : 256,
typeNumber : 4,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRErrorCorrectLevel.H
};
if (typeof vOption === 'string') {
vOption = {
text : vOption
};
}
// Overwrites options
if (vOption) {
for (var i in vOption) {
this._htOption[i] = vOption[i];
}
}
if (typeof el == "string") {
el = document.getElementById(el);
}
if (this._htOption.useSVG) {
Drawing = svgDrawer;
}
this._android = _getAndroid();
this._el = el;
this._oQRCode = null;
this._oDrawing = new Drawing(this._el, this._htOption);
if (this._htOption.text) {
this.makeCode(this._htOption.text);
}
};
/**
* Make the QRCode
*
* @param {String} sText link data
*/
QRCode.prototype.makeCode = function (sText) {
this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);
this._oQRCode.addData(sText);
this._oQRCode.make();
this._el.title = sText;
this._oDrawing.draw(this._oQRCode);
this.makeImage();
};
/**
* Make the Image from Canvas element
* - It occurs automatically
* - Android below 3 doesn't support Data-URI spec.
*
* @private
*/
QRCode.prototype.makeImage = function () {
if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) {
this._oDrawing.makeImage();
}
};
/**
* Clear the QRCode
*/
QRCode.prototype.clear = function () {
this._oDrawing.clear();
};
/**
* @name QRCode.CorrectLevel
*/
QRCode.CorrectLevel = QRErrorCorrectLevel;
})();

File diff suppressed because one or more lines are too long

@ -0,0 +1,20 @@
import * as React from "react";
import { useEffect } from "react";
import { ConfigProvider } from "antd";
import styles from "../index.less";
// 样式
import "../../../public/js/hiprint/css/hiprint.css";
import "../../../public/js/hiprint/css/print-lock.css";
export default ({ children, style = {} }: any) => {
useEffect(() => {
ConfigProvider.config({ theme: { primaryColor: "#2DB7F5" } });
return ()=>{}
}, []);
return (
<div className={styles.root} style={{ width: "100%", height: "100%", overflow: "hidden", ...style }}>
{children}
</div>
);
};

@ -23,6 +23,7 @@ module.exports = {
"/unitTable.*": "blank",
"/aliTable.*": "blank",
"/custom-project.*": "blank",
"/hiprintDesign.*": "hiPrint",
"/manage.*": "manage",
"/portal.*": "template",
"/passport/oauth-in": "blank",

@ -10,6 +10,7 @@ import { HTML5Backend } from "react-dnd-html5-backend";
import { connect, IRouteComponentProps, useModel } from "umi";
// import BaseLayout from "./BaseLayout";
import BlankLayout from "./BlankLayout";
import HiPrintLayout from "./HiPrintLayout";
// import UserLayout from "./UserLayout";
import PageEmptyLayout from "./PageEmptyLayout";
import { IRouterProps, RouterContext } from "./RouterContext";
@ -72,6 +73,9 @@ const Layout = ({ children, location, route, history, match }: IRouteComponentPr
case "blank":
layout = <BlankLayout {...props} />;
break;
case "hiPrint":
layout = <HiPrintLayout {...props} />;
break;
default:
layout = <PageEmptyLayout {...props} />;
break;

@ -0,0 +1,71 @@
// 自定义设计元素
import { hiprint } from "@/utils/hiprint";
export const aProvider: any = function (ops: any) {
const addElementTypes = function (context: any) {
context.removePrintElementTypes("aProviderModule");
context.addPrintElementTypes("aProviderModule", [
new hiprint.PrintElementTypeGroup("表格/其他", [
{
tid: "aProviderModule.table",
title: "订单数据",
type: "table",
options: {
field: "table",
fields: [
{ text: "名称", field: "NAME" },
{ text: "数量", field: "SL" },
{ text: "规格", field: "GG" },
{ text: "条码", field: "TM" },
{ text: "单价", field: "DJ" },
{ text: "金额", field: "JE" },
{ text: "备注", field: "DETAIL" }
]
},
editable: true,
columnDisplayEditable: true, //列显示是否能编辑
columnDisplayIndexEditable: true, //列顺序显示是否能编辑
columnTitleEditable: true, //列标题是否能编辑
columnResizable: true, //列宽是否能调整
columnAlignEditable: true, //列对齐是否调整
columns: [
[
{ title: "名称", align: "center", field: "NAME", width: 100 },
{ title: "数量", align: "center", field: "SL", width: 100 },
{ title: "条码", align: "center", field: "TM", width: 100 },
{ title: "规格", align: "center", field: "GG", width: 100 },
{ title: "单价", align: "center", field: "DJ", width: 100 },
{ title: "金额", align: "center", field: "JE", width: 100 },
{ title: "备注", align: "center", field: "DETAIL", width: 100 }
]
],
footerFormatter: function (options: any, rows: any, data: any, currentPageGridRowsData: any) {
if (data && data["totalCap"]) {
return `<td style="padding:0 10px" colspan="100">${"应收金额大写: " + data["totalCap"]}</td>`;
}
return '<td style="padding:0 10px" colspan="100">应收金额大写: </td>';
}
}
])
]);
};
return { addElementTypes };
};
// type: 1供货商 2经销商
export default [
{
key: "default",
name: "默认设计",
value: "defaultProviderModule",
type: 1,
f: null
},
{
key: "custom",
name: "自定义设计",
value: "aProviderModule",
type: 1,
f: aProvider()
}
];

@ -0,0 +1,8 @@
.previewHiprintDesign {
:global {
.ant-drawer-body {
padding: 0;
overflow: hidden auto;
}
}
}

@ -0,0 +1,57 @@
import React, { useEffect } from "react";
import { observer } from "mobx-react";
import { Button, Drawer, Space } from "antd";
import type { DrawerProps } from "antd/es/drawer";
import { DownloadOutlined, PrinterOutlined } from "@ant-design/icons";
import { useMobStore } from "@/hooks";
import { toJS } from "mobx";
import styles from "./index.less";
interface IProps extends DrawerProps {}
const Index: React.FC<IProps> = observer((props) => {
const store = useMobStore("hiprintStore");
useEffect(() => {
console.log("draw", toJS(store)?.hiprintTemplate?.getHtml());
props.open && $("#preview_content_design").html(toJS(store)?.hiprintTemplate?.getHtml());
return () => {};
}, [props.open]);
const print = () => {
store?.hiprintTemplate.print(
{},
{},
{
callback: () => {
console.log("callback");
}
}
);
};
const toPdf = () => {
store?.hiprintTemplate.toPdf({}, "打印预览");
};
return (
<Drawer
{...props}
width={toJS(store)?.hiprintTemplate?.editingPanel?.width + "mm"}
title="打印预览"
placement="right"
className={styles.previewHiprintDesign}
extra={
<Space>
<Button type="primary" icon={<PrinterOutlined />} onClick={print}>
</Button>
<Button type="ghost" icon={<DownloadOutlined />} onClick={toPdf}>
pdf
</Button>
</Space>
}
>
<div id="preview_content_design" />
</Drawer>
);
});
export default Index;

@ -0,0 +1,17 @@
interface PaperObject {
label: String;
value: String;
width: number;
height: number;
}
const paperTypes: PaperObject[] = [
{ label: "A3", value: "A3", width: 420, height: 296.6 },
{ label: "A4", value: "A4", width: 210, height: 296.6 },
{ label: "A5", value: "A5", width: 210, height: 147.6 },
{ label: "B3", value: "B3", width: 500, height: 352.6 },
{ label: "B4", value: "B4", width: 250, height: 352.6 },
{ label: "B5", value: "B5", width: 250, height: 175.6 }
];
export { paperTypes, PaperObject };

@ -0,0 +1,92 @@
.hiprintOuterLayout {
height: 100%;
width: 100%;
background: #f7f7f7;
.hiprintHeader {
position: relative;
display: flex;
align-items: center;
width: 100%;
z-index: 901;
height: 46px;
background-color: #fff;
border-bottom: 1px solid #e5e5e5;
.hiprintHeader_rightside {
display: flex;
align-items: center;
position: absolute;
right: 10px;
z-index: 1;
top: 0;
height: 100%;
}
}
.hiprintInnerLayout {
position: relative;
height: calc(100% - 46px);
overflow: hidden;
.hiprintContent {
padding: 10px 20px 10px 20px;
background: #f6f6f6;
overflow: auto;
}
.hiprintSider {
background: #FFF;
}
.hiprint_design_ls {
:global {
.rect-printElement-types {
padding: 10px;
}
.ant-tabs-nav {
margin: 0;
padding: 0 10px;
}
.ant-radio-group {
padding: 10px;
}
}
}
.hiprint_design_rs {
:global {
.ant-layout-sider-children {
overflow-y: auto;
}
.ant-layout-sider-zero-width-trigger {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
box-sizing: border-box;
color: #999;
cursor: pointer;
background: #fff;
z-index: 100;
border: 1px solid #e5e5e5;
top: 50%;
transform: translateY(-50%);
width: 14px;
height: 36px;
left: -14px;
border-right: none;
border-radius: 6px 0 0 6px;
span.anticon {
width: 10px;
height: 10px;
}
}
}
}
}
}

@ -0,0 +1,161 @@
import React, { FunctionComponent, useEffect, useMemo, useState } from "react";
import { Button, Input, InputNumber, Layout, Popover, Radio, Space, Tabs } from "antd";
import { EyeOutlined, LeftOutlined, RedoOutlined, RightOutlined } from "@ant-design/icons";
import Preview from "./components/preview";
import provider from "./components/custom/provider";
import { observer } from "mobx-react";
import { toJS } from "mobx";
import { useMobStore } from "@/hooks";
import * as hiprintConfig from "./config";
import classnames from "classnames";
import styles from "./index.less";
const { Header, Sider, Content } = Layout;
interface OwnProps {}
type Props = OwnProps;
const Design: FunctionComponent<Props> = observer((props) => {
const store = useMobStore("hiprintStore");
const [designType, setDesignType] = useState<string>("default");
const [cusPaper, setCusPaper] = useState<boolean>(false);
const [collapsed, setCollapsed] = useState<boolean>(false);
const [open, setOpen] = useState<boolean>(false);
const [curPaper, setCurPaper] = useState<Partial<hiprintConfig.PaperObject>>({ value: "A4", width: 220, height: 80 });
useEffect(() => {
getPanel();
init();
return () => {};
}, [designType]);
/*
* Author:
* Description:
* Params:
* Date: 2025/1/27
*/
const init = () => {
const f = _.find(provider, (o) => o.key === designType)?.f;
const providerVal = _.find(provider, (o) => o.key === designType)?.value;
store?.hiprint.init({ providers: f ? [f] : [] });
// @ts-ignore
$(".hiprintEpContainer").empty();
store?.hiprint.PrintElementTypeManager.build(".hiprintEpContainer", providerVal);
// @ts-ignore
$("#hiprint-printTemplate").empty();
store.setHiprintTemplate(
new store.hiprint.PrintTemplate({
template: {},
settingContainer: "#PrintElementOptionSetting",
paginationContainer: ".hiprint-printPagination"
})
);
store?.hiprintTemplate.design("#hiprint-printTemplate", { grid: true });
console.log(toJS(store?.hiprintTemplate));
};
/**
* @description: panel
*/
const getPanel = () => {
// 加载所有 panel
const panels = (require as any).context("./", true, /panel.*\.js$/);
console.log(panels.keys());
};
/*
* Author:
* Description:
* Params:[A3, A4, A5, B3, B4, B5, other] value {width,height} mm
* Date: 2025/2/5
*/
const paperType = useMemo(() => {
const paperWidth = _.find(hiprintConfig.paperTypes, (o) => o.value === curPaper?.value)?.width,
paperHeight = _.find(hiprintConfig.paperTypes, (o) => o.value === curPaper?.value)?.height;
if (!_.isEmpty(_.find(hiprintConfig.paperTypes, (o) => o.value === curPaper?.value))) {
store?.hiprintTemplate?.setPaper(paperWidth, paperHeight);
} else {
store?.hiprintTemplate?.setPaper(curPaper.width, curPaper.height);
}
return curPaper?.value;
}, [curPaper]);
return (
<Layout className={styles.hiprintOuterLayout}>
<Header className={styles.hiprintHeader}>
<div className={styles.hiprintHeader_rightside}>
<Space>
{designType === "default" && (
<Button type="ghost" icon={<RedoOutlined />} onClick={() => store?.hiprintTemplate?.rotatePaper()}>
</Button>
)}
<Button type="primary" icon={<EyeOutlined />} onClick={() => setOpen(true)}>
</Button>
</Space>
</div>
</Header>
<Layout className={styles.hiprintInnerLayout}>
<Sider className={classnames(styles.hiprintSider, styles.hiprint_design_ls, {})}>
<Tabs
activeKey={designType}
size="small"
onChange={setDesignType}
items={[
{ label: "默认设计", key: "default" },
{ label: "自定义设计", key: "custom" }
]}
/>
<Radio.Group size="small" value={paperType} onChange={(e) => setCurPaper({ ...curPaper, value: e.target.value })}>
{_.map(hiprintConfig.paperTypes, (o) => (
<Radio.Button value={o.value} key={o.value.toString()}>
{o.label}
</Radio.Button>
))}
<Popover
open={cusPaper}
onOpenChange={setCusPaper}
trigger="click"
title="设置纸张宽高(mm)"
content={
<>
<Input.Group compact style={{ marginBottom: 10 }}>
<InputNumber placeholder="宽(mm)" value={curPaper.width} onChange={(val) => setCurPaper({ ...curPaper, width: val as number })} />
<Input
placeholder="~"
disabled
style={{
width: 30,
pointerEvents: "none"
}}
/>
<InputNumber placeholder="高(mm)" value={curPaper.height} onChange={(val) => setCurPaper({ ...curPaper, height: val as number })} />
</Input.Group>
</>
}
>
<Radio.Button value="other" key="other">
</Radio.Button>
</Popover>
</Radio.Group>
<div className="rect-printElement-types hiprintEpContainer" />
</Sider>
<Content className={styles.hiprintContent}>
<div id="hiprint-printTemplate" className="hiprint-printTemplate" />
<Preview open={open} onClose={() => setOpen(false)} />
</Content>
<Sider
className={classnames(styles.hiprintSider, styles.hiprint_design_rs, {})}
width={249}
collapsible
collapsedWidth={0}
onCollapse={setCollapsed}
trigger={!collapsed ? <RightOutlined /> : <LeftOutlined />}
>
<div id="PrintElementOptionSetting" />
</Sider>
</Layout>
</Layout>
);
});
export default Design;

@ -0,0 +1,14 @@
import { action, makeObservable, observable } from "mobx";
import * as reactPluginHiprint from "@/utils/hiprint";
export class HiprintStore {
constructor() {
makeObservable(this);
}
@observable hiprint: any = reactPluginHiprint.hiprint;
@observable hiprintTemplate: any = null;
@action setHiprintTemplate = (hiprintTemplate: any) => (this.hiprintTemplate = hiprintTemplate);
}
export const hiprintStore = new HiprintStore();

@ -1,11 +1,13 @@
import { appStore } from "./AppStore";
import { calculateStore } from "./CalculateStore";
import { baseLayoutStore } from "@/layouts/BaseLayout/Store";
import { hiprintStore } from "@/store/HiprintStore";
export { baseLayoutStore, appStore, calculateStore };
export { baseLayoutStore, appStore, calculateStore, hiprintStore };
export default {
baseLayoutStore,
calculateStore,
appStore
appStore,
hiprintStore
};

@ -0,0 +1,29 @@
// hiprint相关文件
import { hiprint } from "../../public/js/hiprint/hiprint.bundle.js";
// 调用浏览器打印js
import "../../public/js/hiprint/plugins/jquery.hiwprint.js";
require("../../public/js/hiprint/hiprint.config");
/**
* /
* cb: (status, msg) {
* status: true/false
* msg: status == true socket.connect e
* }
*/
const autoConnect = function (cb: any) {
console.log("autoConnect");
(window as any).autoConnect = true;
(window as any).hiwebSocket && (window as any).hiwebSocket.hasIo() && (window as any).hiwebSocket.start(cb);
};
/**
* /
*/
const disAutoConnect = function () {
console.log("disAutoConnect");
(window as any).autoConnect = false;
(window as any).hiwebSocket && (window as any).hiwebSocket.hasIo() && (window as any).hiwebSocket.stop();
};
(window as any).hiprint = hiprint;
export { autoConnect, disAutoConnect, hiprint };

2
typings.d.ts vendored

@ -14,3 +14,5 @@ declare module '*.svg' {
}
declare const _;
declare var $: JQueryStatic;

Loading…
Cancel
Save