efront 4.35.6 → 4.35.8

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.
Files changed (86) hide show
  1. package/apps/_index.html +41 -41
  2. package/apps/blank/index.html +20 -20
  3. package/apps/noice/index.html +42 -42
  4. package/apps/pivot/menu.yml +1 -6
  5. package/apps/pivot//344/270/273/351/241/265.html +42 -42
  6. package/coms/basic/JSAM.js +259 -259
  7. package/coms/basic/Matrix.js +1 -1
  8. package/coms/basic/check.js +42 -42
  9. package/coms/basic/color.js +696 -696
  10. package/coms/basic/crc.js +39 -39
  11. package/coms/basic/getIndexFromOrderedArray.js +39 -39
  12. package/coms/basic/isObject.js +3 -3
  13. package/coms/basic/keys.js +4 -4
  14. package/coms/basic/lazy.js +78 -78
  15. package/coms/basic/math.js +3 -3
  16. package/coms/basic/refilm.js +96 -96
  17. package/coms/basic/saveToOrderedArray.js +11 -11
  18. package/coms/compile/autoeval.js +8 -2
  19. package/coms/compile/autoeval_test.js +10 -8
  20. package/coms/compile/scanner.js +653 -653
  21. package/coms/compile/scanner2.js +0 -23
  22. package/coms/compile/wraphtml.js +1 -1
  23. package/coms/compile//347/256/227/345/274/217.js +1 -1
  24. package/coms/compile//347/256/227/345/274/217_test.js +4 -2
  25. package/coms/docs/getMimeData_test.js +19 -19
  26. package/coms/docs/md5.js +173 -173
  27. package/coms/frame/chat.js +2 -1
  28. package/coms/frame/top.less +190 -190
  29. package/coms/zimoli/AudioContext_test.html +5 -5
  30. package/coms/zimoli/AudioContext_test.js +92 -92
  31. package/coms/zimoli/AudioContext_test.less +114 -114
  32. package/coms/zimoli/alert_test.js +11 -11
  33. package/coms/zimoli/bggrid-func.less +2 -2
  34. package/coms/zimoli/dispatch.js +50 -50
  35. package/coms/zimoli/drag.js +11 -6
  36. package/coms/zimoli/extendTouchEvent.js +8 -8
  37. package/coms/zimoli/fullscreen.js +52 -52
  38. package/coms/zimoli/gallery.less +13 -13
  39. package/coms/zimoli/gallery_test.html +2 -2
  40. package/coms/zimoli/gallery_test.js +14 -14
  41. package/coms/zimoli/gallery_test.less +17 -17
  42. package/coms/zimoli/getChanged.js +7 -7
  43. package/coms/zimoli/getChanges.js +13 -13
  44. package/coms/zimoli/lattice.js +109 -109
  45. package/coms/zimoli/lattice_test.less +23 -23
  46. package/coms/zimoli/moveupon.js +26 -1
  47. package/coms/zimoli/picture.less +54 -71
  48. package/coms/zimoli/refilm_test.html +41 -41
  49. package/coms/zimoli/refilm_test.less +102 -102
  50. package/coms/zimoli/xml.js +131 -131
  51. package/data/keystore/cross-cert.pem +21 -21
  52. package/data/keystore/cross-key.pem +27 -27
  53. package/package.json +1 -1
  54. package/public/efront.js +1 -1
  55. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
  56. package/apps/pay/paypal.jsp +0 -0
  57. package/apps/pay/wxpay.jsp +0 -32
  58. package/apps/pivot/dht/rent.html +0 -14
  59. package/apps/pivot/dht/rent.js +0 -148
  60. package/apps/pivot/dht/rent.less +0 -46
  61. package/apps/pivot/home/desktop.xht +0 -0
  62. package/apps/pivot/shop/goods/list.xht +0 -183
  63. package/apps/pivot/shop/home.xht +0 -20
  64. package/apps/pivot/shop/mind/list.xht +0 -1
  65. package/apps/pivot/shop/order/create.xht +0 -49
  66. package/apps/pivot/shop/order/list.xht +0 -1
  67. package/apps/pivot/shop/paypal.jsp +0 -23
  68. package/apps/pivot/soft/list.html +0 -0
  69. package/apps/pivot/soft/list.js +0 -9
  70. package/apps/pivot/soft/list.less +0 -0
  71. package/coms/7z_temp/Java.js +0 -93
  72. package/coms/7z_temp/LzmaBench.java +0 -392
  73. package/coms/7z_temp/read-from-java-code.js +0 -28
  74. package/coms/7z_temp//350/257/264/346/230/216.md +0 -1
  75. package/coms/basic_/&pget.js +0 -1
  76. package/coms/basic_/&pset.js +0 -1
  77. package/coms/basic_/Proxy.js +0 -6
  78. package/coms/basic_/Reflect.js +0 -55
  79. package/coms/compile/bracket.js +0 -51
  80. package/coms/compile/bracket_test.js +0 -9
  81. package/coms/compile/createvm.js +0 -35
  82. package/coms/compile/createvm_test.js +0 -7
  83. package/coms/pivot/DB.js +0 -9
  84. package/coms/pivot/paypal-var.js +0 -1
  85. package/coms/pivot//345/225/206/345/223/201.js +0 -1
  86. /package/apps/pivot/{ticket → tick}/list.js +0 -0
@@ -1,14 +1,14 @@
1
- function getChanges(current_props, previous_props) {
2
- if (!isObject(current_props) && !isObject(previous_props)) return !shallowEqual(current_props, previous_props);
3
- var changes = null;
4
- if (!isObject(current_props)) current_props = Object.create(null), changes = {};
5
- if (!isObject(previous_props)) previous_props = Object.create(null), changes = {};
6
- keys(previous_props, current_props).forEach(function (key) {
7
- if (key.charAt(0) === "$") return;
8
- if (!shallowEqual(current_props[key], previous_props[key])) {
9
- if (!changes) changes = {};
10
- changes[key] = { previous: previous_props[key], current: current_props[key] };
11
- }
12
- });
13
- return changes;
1
+ function getChanges(current_props, previous_props) {
2
+ if (!isObject(current_props) && !isObject(previous_props)) return !shallowEqual(current_props, previous_props);
3
+ var changes = null;
4
+ if (!isObject(current_props)) current_props = Object.create(null), changes = {};
5
+ if (!isObject(previous_props)) previous_props = Object.create(null), changes = {};
6
+ keys(previous_props, current_props).forEach(function (key) {
7
+ if (key.charAt(0) === "$") return;
8
+ if (!shallowEqual(current_props[key], previous_props[key])) {
9
+ if (!changes) changes = {};
10
+ changes[key] = { previous: previous_props[key], current: current_props[key] };
11
+ }
12
+ });
13
+ return changes;
14
14
  }
@@ -1,110 +1,110 @@
1
- var complete_class = "complete";
2
- var inadequate_class = "lack";
3
- function lattice(element, minWidth, _maxWidth, layers) {
4
- var boxCount, maxWidth = _maxWidth || minWidth << 1;
5
- var resize = function () {
6
- var _layers = layers || _box.src || [];
7
- if (!_layers.length) return;
8
- var _minWidth = +(element.getAttribute("min-width") || element.getAttribute("item-width"));
9
- if (_minWidth) {
10
- minWidth = _minWidth;
11
- maxWidth = _maxWidth || minWidth << 1;
12
- }
13
- var clientWidth = parseFloat(freePixel(_box.clientWidth));
14
- if (!clientWidth) return;
15
- var savedCount = boxCount;
16
- boxCount = clientWidth / minWidth | 0;
17
- if (boxCount >= _layers.length) {
18
- boxCount = _layers.length;
19
- var minCount = Math.ceil(clientWidth / maxWidth);
20
- if (minCount >= _layers.length) {
21
- boxCount = minCount;
22
- }
23
- addClass(_box, complete_class);
24
- }
25
- else removeClass(_box, complete_class);
26
- if (boxCount < 1) boxCount = 1, addClass(_box, inadequate_class);
27
- else removeClass(_box, inadequate_class);
28
- _box.paddingMax = boxCount;
29
- _box.group = boxCount;
30
- if (savedCount === boxCount) return;
31
- _box.clean();
32
- [].forEach.call(_box.children, build);
33
- return true;
34
- };
35
- if (layers) {
36
- var _box = list(element, function (index) {
37
- var offset = boxCount * index;
38
- var objs = layers.slice(offset, offset + boxCount).map(function (a) {
39
- css(a, {
40
- width: (1000000 / boxCount | 0) / 10000 + "%",
41
- maxWidth: fromPixel(maxWidth),
42
- });
43
- return a;
44
- });
45
- if (!objs.length) return false;
46
- var _container = div();
47
- appendChild(_container, objs);
48
- return _container;
49
- })
50
- } else {
51
- var _box = list(element);
52
- var insertBefore = _box.insertBefore;
53
- _box.insertBefore = function (element) {
54
- build(element);
55
- return insertBefore.apply(_box, arguments);
56
- };
57
- }
58
- var build = function (element) {
59
- css(element, {
60
- width: (1000000 / boxCount | 0) / 10000 + "%",
61
- maxWidth: fromPixel(maxWidth),
62
- });
63
- if (element.with instanceof Array) element.with.forEach(build);
64
- else if (isElement(element.with)) build(element.with);
65
- };
66
- var go = _box.go;
67
- _box.go = function () {
68
- resize();
69
- go.apply(this, arguments);
70
- };
71
- _box.resize = lazy(function () {
72
- var index = _box.index();
73
- var savedCount = boxCount;
74
- if (resize()) {
75
- var realIndex = index * (savedCount || 1);
76
- index = realIndex / boxCount || 0;
77
- go.call(_box, index);
78
- }
79
- });
80
- resizingList.set(_box, _box.resize);
81
- return _box;
82
- }
83
- function main() {
84
- var element, minWidth, maxWidth, layers;
85
- var initMinWidth = function (arg) {
86
- if (minWidth) {
87
- if (arg >= minWidth) {
88
- maxWidth = arg;
89
- } else {
90
- maxWidth = minWidth;
91
- minWidth = arg;
92
- }
93
- } else {
94
- minWidth = arg;
95
- }
96
- };
97
- [].forEach.call(arguments, function (arg) {
98
- if (isNode(arg)) {
99
- element = arg;
100
- } else if (isArray(arg)) {
101
- layers = arg;
102
- } else if (isFinite(arg)) {
103
- initMinWidth(arg);
104
- }
105
- });
106
- if (element && element.$src) {
107
- layers = null;
108
- }
109
- return lattice(element, minWidth || 240, maxWidth, layers);
1
+ var complete_class = "complete";
2
+ var inadequate_class = "lack";
3
+ function lattice(element, minWidth, _maxWidth, layers) {
4
+ var boxCount, maxWidth = _maxWidth || minWidth << 1;
5
+ var resize = function () {
6
+ var _layers = layers || _box.src || [];
7
+ if (!_layers.length) return;
8
+ var _minWidth = +(element.getAttribute("min-width") || element.getAttribute("item-width"));
9
+ if (_minWidth) {
10
+ minWidth = _minWidth;
11
+ maxWidth = _maxWidth || minWidth << 1;
12
+ }
13
+ var clientWidth = parseFloat(freePixel(_box.clientWidth));
14
+ if (!clientWidth) return;
15
+ var savedCount = boxCount;
16
+ boxCount = clientWidth / minWidth | 0;
17
+ if (boxCount >= _layers.length) {
18
+ boxCount = _layers.length;
19
+ var minCount = Math.ceil(clientWidth / maxWidth);
20
+ if (minCount >= _layers.length) {
21
+ boxCount = minCount;
22
+ }
23
+ addClass(_box, complete_class);
24
+ }
25
+ else removeClass(_box, complete_class);
26
+ if (boxCount < 1) boxCount = 1, addClass(_box, inadequate_class);
27
+ else removeClass(_box, inadequate_class);
28
+ _box.paddingMax = boxCount;
29
+ _box.group = boxCount;
30
+ if (savedCount === boxCount) return;
31
+ _box.clean();
32
+ [].forEach.call(_box.children, build);
33
+ return true;
34
+ };
35
+ if (layers) {
36
+ var _box = list(element, function (index) {
37
+ var offset = boxCount * index;
38
+ var objs = layers.slice(offset, offset + boxCount).map(function (a) {
39
+ css(a, {
40
+ width: (1000000 / boxCount | 0) / 10000 + "%",
41
+ maxWidth: fromPixel(maxWidth),
42
+ });
43
+ return a;
44
+ });
45
+ if (!objs.length) return false;
46
+ var _container = div();
47
+ appendChild(_container, objs);
48
+ return _container;
49
+ })
50
+ } else {
51
+ var _box = list(element);
52
+ var insertBefore = _box.insertBefore;
53
+ _box.insertBefore = function (element) {
54
+ build(element);
55
+ return insertBefore.apply(_box, arguments);
56
+ };
57
+ }
58
+ var build = function (element) {
59
+ css(element, {
60
+ width: (1000000 / boxCount | 0) / 10000 + "%",
61
+ maxWidth: fromPixel(maxWidth),
62
+ });
63
+ if (element.with instanceof Array) element.with.forEach(build);
64
+ else if (isElement(element.with)) build(element.with);
65
+ };
66
+ var go = _box.go;
67
+ _box.go = function () {
68
+ resize();
69
+ go.apply(this, arguments);
70
+ };
71
+ _box.resize = lazy(function () {
72
+ var index = _box.index();
73
+ var savedCount = boxCount;
74
+ if (resize()) {
75
+ var realIndex = index * (savedCount || 1);
76
+ index = realIndex / boxCount || 0;
77
+ go.call(_box, index);
78
+ }
79
+ });
80
+ resizingList.set(_box, _box.resize);
81
+ return _box;
82
+ }
83
+ function main() {
84
+ var element, minWidth, maxWidth, layers;
85
+ var initMinWidth = function (arg) {
86
+ if (minWidth) {
87
+ if (arg >= minWidth) {
88
+ maxWidth = arg;
89
+ } else {
90
+ maxWidth = minWidth;
91
+ minWidth = arg;
92
+ }
93
+ } else {
94
+ minWidth = arg;
95
+ }
96
+ };
97
+ [].forEach.call(arguments, function (arg) {
98
+ if (isNode(arg)) {
99
+ element = arg;
100
+ } else if (isArray(arg)) {
101
+ layers = arg;
102
+ } else if (isFinite(arg)) {
103
+ initMinWidth(arg);
104
+ }
105
+ });
106
+ if (element && element.$src) {
107
+ layers = null;
108
+ }
109
+ return lattice(element, minWidth || 240, maxWidth, layers);
110
110
  }
@@ -1,24 +1,24 @@
1
- & {
2
- height: 100%;
3
- background: #fff;
4
- }
5
-
6
- >lattice {
7
- max-height: 300px;
8
- height: 100%;
9
- @mask-color: rgba(0, 0, 0, .4);
10
- // background: linear-gradient(45deg, @mask-color, 25%, @mask-color, 25%, rgba(0, 0, 0, 0), 75%, rgba(0, 0, 0, 0), 75%, @mask-color), linear-gradient(135deg, @mask-color, 25%, @mask-color, 25%, rgba(0, 0, 0, 0), 75%, rgba(0, 0, 0, 0), 75%, @mask-color);
11
- background-size: 20px 20px;
12
- background-repeat: repeat;
13
- border: 2px solid transparent;
14
- background-clip: content-box;
15
-
16
- >div {
17
- box-sizing: border-box;
18
- height: 100px;
19
- color: #fff;
20
- border: 1px solid #fff;
21
- padding: 10px 16px;
22
- display: inline-block;
23
- }
1
+ & {
2
+ height: 100%;
3
+ background: #fff;
4
+ }
5
+
6
+ >lattice {
7
+ max-height: 300px;
8
+ height: 100%;
9
+ @mask-color: rgba(0, 0, 0, .4);
10
+ // background: linear-gradient(45deg, @mask-color, 25%, @mask-color, 25%, rgba(0, 0, 0, 0), 75%, rgba(0, 0, 0, 0), 75%, @mask-color), linear-gradient(135deg, @mask-color, 25%, @mask-color, 25%, rgba(0, 0, 0, 0), 75%, rgba(0, 0, 0, 0), 75%, @mask-color);
11
+ background-size: 20px 20px;
12
+ background-repeat: repeat;
13
+ border: 2px solid transparent;
14
+ background-clip: content-box;
15
+
16
+ >div {
17
+ box-sizing: border-box;
18
+ height: 100px;
19
+ color: #fff;
20
+ border: 1px solid #fff;
21
+ padding: 10px 16px;
22
+ display: inline-block;
23
+ }
24
24
  }
@@ -50,16 +50,35 @@ var locktouch = function (target, handles) {
50
50
  }
51
51
  }
52
52
  };
53
-
53
+ var getX = function (event) {
54
+ if ('screenX' in event) return event.screenX;
55
+ return event.clientX;
56
+ };
57
+ var getY = function (event) {
58
+ if ('screenY' in event) return event.screenY;
59
+ return event.clientY;
60
+ };
54
61
  function moveupon(target, handles, initialEvent) {
55
62
  var { start, move, end } = handles;
56
63
  var touchLocked = false;
64
+ var savedX, savedY;
57
65
  var offmouseup, offtouchend, offtouchcancel;
66
+ var setMovement = function (event) {
67
+ if ("movementX" in event) return
68
+ var x = getX(event);
69
+ event.movementX = x - savedX;
70
+ savedX = x;
71
+ var y = getY(event);
72
+ event.movementY = y - savedY;
73
+ savedY = y;
74
+ }
58
75
  var mousemove = function (event) {
76
+ setMovement(event);
59
77
  if (isFunction(move)) move.call(target, event);
60
78
  };
61
79
 
62
80
  var touchmove = function (event) {
81
+ setMovement(event);
63
82
  extendTouchEvent(event);
64
83
  if (isFunction(move)) move.call(target, event);
65
84
  };
@@ -87,6 +106,7 @@ function moveupon(target, handles, initialEvent) {
87
106
 
88
107
  if (initialEvent) {
89
108
  if (locktouch(initialEvent.target, handles)) return;
109
+ if (target.notouch) return;
90
110
  if (initialEvent.type === "touchstart") {
91
111
  extendTouchEvent(initialEvent);
92
112
  initialEvent.preventDefault();
@@ -100,8 +120,11 @@ function moveupon(target, handles, initialEvent) {
100
120
  onmousedown(target, function (event) {
101
121
  if (touchLocked) return;
102
122
  if (locktouch(event.target, handles)) return;
123
+ if (target.notouch) return;
103
124
  touchLocked = true;
104
125
  hookmouse(event);
126
+ savedX = getX(event);
127
+ savedY = getY(event);
105
128
  if (isFunction(start)) start.call(this, event);
106
129
  });
107
130
  ontouchstart(target, function (event) {
@@ -109,6 +132,8 @@ function moveupon(target, handles, initialEvent) {
109
132
  if (locktouch(event.target, handles)) return;
110
133
  touchLocked = true;
111
134
  extendTouchEvent(event);
135
+ savedX = getX(event);
136
+ savedY = getY(event);
112
137
  hooktouch(event);
113
138
  if (isFunction(start)) start.call(this, event);
114
139
  });
@@ -1,72 +1,55 @@
1
- & {
2
- width: 100%;
3
- height: 100%;
4
- position: absolute;
5
- left: 0;
6
- right: 0;
7
- top: 0;
8
- bottom: 0;
9
- padding: 0;
10
- background-color: #000;
11
- }
12
-
13
-
14
- .grid() {
15
- @mask-color1 : rgba(255, 255, 255, .6);
16
- @mask-color2 : rgba(0, 0, 0, 0);
17
- @mask-color3 : rgba(0, 0, 0, .1);
18
- background-image:
19
- linear-gradient(45deg, @mask-color1, 25%, @mask-color1, 25%, @mask-color2, 75%, @mask-color1, 75%, @mask-color1),
20
- linear-gradient(45deg, @mask-color1, 25%, @mask-color1, 25%, @mask-color2, 75%, @mask-color1, 75%, @mask-color1),
21
- linear-gradient(45deg, @mask-color3, 25%, @mask-color3, 25%, @mask-color2, 75%, @mask-color3, 75%, @mask-color3),
22
- linear-gradient(45deg, @mask-color3, 25%, @mask-color3, 25%, @mask-color2, 75%, @mask-color3, 75%, @mask-color3);
23
- background-size: 20px 20px;
24
- background-position: 0 0, 10px 10px, 10px 0, 0 10px;
25
- background-repeat: repeat;
26
- background-clip: border-box;
27
- background-color: #fff;
28
-
29
- }
30
-
31
- &[grid],
32
- &.grid,
33
- &[type=grid] {
34
- .grid();
35
- }
36
-
37
- &+.mask {
38
- background: #fff;
39
- opacity: .5;
40
- }
41
-
42
- >div {
43
- height: 100%;
44
-
45
- >[imgpic] {
46
- position: absolute;
47
- pointer-events: none;
48
- .grid();
49
- }
50
-
51
- >.adv {
52
- color: #fff9;
53
- vertical-align: top;
54
- position: absolute;
55
- left: 0;
56
- right: 0;
57
- text-align: center;
58
- }
59
-
60
- &:after {
61
- content: "";
62
- display: block;
63
- left: -1px;
64
- top: -1px;
65
- bottom: -1px;
66
- right: -1px;
67
- width: auto;
68
- height: auto;
69
- pointer-events: none;
70
- position: absolute;
71
- }
1
+ @import "bggrid-func.less";
2
+ & {
3
+ width: 100%;
4
+ height: 100%;
5
+ position: absolute;
6
+ left: 0;
7
+ right: 0;
8
+ top: 0;
9
+ bottom: 0;
10
+ padding: 0;
11
+ background-color: #000;
12
+ }
13
+
14
+ &[grid],
15
+ &.grid,
16
+ &[type=grid] {
17
+ .grid();
18
+ }
19
+
20
+ &+.mask {
21
+ background: #fff;
22
+ opacity: .5;
23
+ }
24
+
25
+ >div {
26
+ height: 100%;
27
+
28
+ >[imgpic] {
29
+ position: absolute;
30
+ pointer-events: none;
31
+ .grid();
32
+ }
33
+
34
+ >.adv {
35
+ color: #fff9;
36
+ vertical-align: top;
37
+ position: absolute;
38
+ left: 0;
39
+ right: 0;
40
+ text-align: center;
41
+ }
42
+
43
+ &:after {
44
+ content: "";
45
+ display: block;
46
+ left: -1px;
47
+ top: -1px;
48
+ bottom: -1px;
49
+ right: -1px;
50
+ width: auto;
51
+ height: auto;
52
+ pointer-events: none;
53
+ position: absolute;
54
+ }
72
55
  }
@@ -1,42 +1,42 @@
1
- <hbox class="topbar">
2
- <btn @click="index=i" v-for="(s,i) in steps" type_="i&lt;=index?'default':'white'">
3
- <span ng-bind="s[0].name"></span>
4
- </btn>
5
- </hbox>
6
- <div class="body">
7
- <textarea _value="refilm_encode(steps[index])">
8
-
9
- </textarea>
10
- <div class="form">
11
- <table>
12
- <thead>
13
- <tr>
14
- <td ng-repeat="(f,i) in refilms">
15
- <span ng-bind="f.name"></span>
16
- </td>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- <tr ng-repeat="s in steps[index]">
21
- <td ng-repeat="r in refilms">
22
- <span bg-bind="String(s[r.key]||'')"></span>
23
- </td>
24
- </tr>
25
- </tbody>
26
- </table>
27
- </div>
28
- <form class="form">
29
- <field ng-src="[f,data]" ng-repeat="(f,i) in steps[index]"></field>
30
- </form>
31
- <div class="step">
32
- <div class="page-number">
33
- <span ng-bind=index+1></span>
34
- /
35
- <span ng-bind="steps.length"></span>
36
- </div>
37
- </div>
38
- <div class="foot">
39
- <btn @click="prevStep()">上一步</btn>
40
- <btn @click="nextStep()">下一步</btn>
41
- </div>
1
+ <hbox class="topbar">
2
+ <btn @click="index=i" v-for="(s,i) in steps" type_="i&lt;=index?'default':'white'">
3
+ <span ng-bind="s[0].name"></span>
4
+ </btn>
5
+ </hbox>
6
+ <div class="body">
7
+ <textarea _value="refilm_encode(steps[index])">
8
+
9
+ </textarea>
10
+ <div class="form">
11
+ <table>
12
+ <thead>
13
+ <tr>
14
+ <td ng-repeat="(f,i) in refilms">
15
+ <span ng-bind="f.name"></span>
16
+ </td>
17
+ </tr>
18
+ </thead>
19
+ <tbody>
20
+ <tr ng-repeat="s in steps[index]">
21
+ <td ng-repeat="r in refilms">
22
+ <span bg-bind="String(s[r.key]||'')"></span>
23
+ </td>
24
+ </tr>
25
+ </tbody>
26
+ </table>
27
+ </div>
28
+ <form class="form">
29
+ <field ng-src="[f,data]" ng-repeat="(f,i) in steps[index]"></field>
30
+ </form>
31
+ <div class="step">
32
+ <div class="page-number">
33
+ <span ng-bind=index+1></span>
34
+ /
35
+ <span ng-bind="steps.length"></span>
36
+ </div>
37
+ </div>
38
+ <div class="foot">
39
+ <btn @click="prevStep()">上一步</btn>
40
+ <btn @click="nextStep()">下一步</btn>
41
+ </div>
42
42
  </div>