From 3acb4e28856d988f2793acf371298fa1cec2b023 Mon Sep 17 00:00:00 2001 From: neo <Neo Wang@cn.asia.ad.pwcinternal.com> Date: Mon, 29 Oct 2018 17:50:43 +0800 Subject: [PATCH] [Bugfix] fixed save formular cannot save to db --- .../service/impl/CellTemplateServiceImpl.java | 4 +- .../src/main/resources/bpmn/approval.bpmn | 14 +- atms-web/pom.xml | 2 +- .../resources/conf_profile_dev.properties | 2 +- atms-web/src/main/webapp/package-lock.json | 736 +++-- diff | 2717 +++++++++++++++++ 6 files changed, 3226 insertions(+), 249 deletions(-) create mode 100644 diff diff --git a/atms-api/src/main/java/pwc/taxtech/atms/service/impl/CellTemplateServiceImpl.java b/atms-api/src/main/java/pwc/taxtech/atms/service/impl/CellTemplateServiceImpl.java index f9c0d1ad8..5a1de3f71 100644 --- a/atms-api/src/main/java/pwc/taxtech/atms/service/impl/CellTemplateServiceImpl.java +++ b/atms-api/src/main/java/pwc/taxtech/atms/service/impl/CellTemplateServiceImpl.java @@ -254,7 +254,7 @@ public class CellTemplateServiceImpl extends AbstractService { private String getFormulaDataSource(String formula, List<String> keyValueConfigIds) { FormulaConfigExample example = new FormulaConfigExample(); - example.setOrderByClause("LENGTH(FormulaName) desc"); + example.setOrderByClause("LENGTH(FORMULA_NAME) desc"); List<FormulaConfig> dataSourceList = formulaConfigMapper.selectByExample(example); List<String> nameList = new ArrayList<>(); FormulaHelper formulaHelper = new FormulaHelper(); @@ -270,7 +270,7 @@ public class CellTemplateServiceImpl extends AbstractService { String keyValueMethodName = "KEYVALUE("; if (tmpFormula.contains(keyValueMethodName)) { KeyValueConfigExample keyValueConfigExample = new KeyValueConfigExample(); - keyValueConfigExample.setOrderByClause("LENGTH(KeyCode) desc"); + keyValueConfigExample.setOrderByClause("LENGTH(KEY_CODE) desc"); List<KeyValueConfig> keyValueList = keyValueConfigMapper.selectByExample(keyValueConfigExample); for (KeyValueConfig keyValueConfig : keyValueList) { if (tmpFormula.contains(keyValueMethodName + "\"" + keyValueConfig.getKeyCode().toUpperCase() + "\")")) { diff --git a/atms-api/src/main/resources/bpmn/approval.bpmn b/atms-api/src/main/resources/bpmn/approval.bpmn index 4ca03d06c..0db445668 100644 --- a/atms-api/src/main/resources/bpmn/approval.bpmn +++ b/atms-api/src/main/resources/bpmn/approval.bpmn @@ -69,49 +69,49 @@ </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="_13" id="BPMNEdge__13" sourceElement="_5" targetElement="_12"> - <di:waypoint x="510.0" y="192.5"/> + <di:waypoint x="495.0" y="192.5"/> <di:waypoint x="640.0" y="191.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_15" id="BPMNEdge__15" sourceElement="_11" targetElement="_5"> - <di:waypoint x="456.0" y="365.0"/> + <di:waypoint x="456.0" y="380.0"/> <di:waypoint x="456.0" y="220.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_14" id="BPMNEdge__14" sourceElement="_3" targetElement="_11"> - <di:waypoint x="290.0" y="397.5"/> + <di:waypoint x="275.0" y="397.5"/> <di:waypoint x="440.0" y="396.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_16" id="BPMNEdge__16" sourceElement="_11" targetElement="_9"> - <di:waypoint x="487.0" y="396.0"/> + <di:waypoint x="472.0" y="396.0"/> <di:waypoint x="760.0" y="396.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_4" id="BPMNEdge__4" sourceElement="_2" targetElement="_3"> - <di:waypoint x="97.0" y="396.0"/> + <di:waypoint x="82.0" y="396.0"/> <di:waypoint x="190.0" y="397.5"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_12" targetElement="_7"> - <di:waypoint x="687.0" y="191.0"/> + <di:waypoint x="672.0" y="191.0"/> <di:waypoint x="765.0" y="121.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10" sourceElement="_12" targetElement="_9"> - <di:waypoint x="687.0" y="191.0"/> + <di:waypoint x="672.0" y="191.0"/> <di:waypoint x="760.0" y="396.0"/> <bpmndi:BPMNLabel> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> diff --git a/atms-web/pom.xml b/atms-web/pom.xml index f64640ae9..2957cda85 100644 --- a/atms-web/pom.xml +++ b/atms-web/pom.xml @@ -198,7 +198,7 @@ <version>2.1</version> <configuration> <!-- 閫氳繃maven tomcat7:run杩愯椤圭洰鏃讹紝璁块棶椤圭洰鐨勭鍙e彿 --> - <port>8080</port> + <port>18080</port> <!-- 椤圭洰璁块棶璺緞 鏈緥锛歭ocalhost:9090, 濡傛灉閰嶇疆鐨刟a锛� 鍒欒闂矾寰勪负localhost:9090/aa--> <path>/</path> <uriEncoding>UTF-8</uriEncoding> diff --git a/atms-web/src/main/resources/conf_profile_dev.properties b/atms-web/src/main/resources/conf_profile_dev.properties index f4f64cf44..c56e55d13 100644 --- a/atms-web/src/main/resources/conf_profile_dev.properties +++ b/atms-web/src/main/resources/conf_profile_dev.properties @@ -1,3 +1,3 @@ -api.url=http://etms.longi-silicon.com:8180/ +api.url=http://10.158.230.144:8181/ cookie.maxAgeSeconds=86400 diff --git a/atms-web/src/main/webapp/package-lock.json b/atms-web/src/main/webapp/package-lock.json index 38f43fe6a..dd678526d 100644 --- a/atms-web/src/main/webapp/package-lock.json +++ b/atms-web/src/main/webapp/package-lock.json @@ -16,8 +16,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -31,11 +31,11 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "array-find-index": { @@ -102,7 +102,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "boom": { @@ -111,15 +111,15 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -138,8 +138,8 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caseless": { @@ -154,11 +154,28 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "co": { @@ -168,10 +185,25 @@ "dev": true, "optional": true }, - "coffeescript": { + "coffee-script": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=" + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colors": { "version": "1.1.2", @@ -184,9 +216,15 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -206,7 +244,7 @@ "dev": true, "optional": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "currently-unhandled": { @@ -214,7 +252,7 @@ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "dashdash": { @@ -224,7 +262,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -241,8 +279,8 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.3.0" } }, "decamelize": { @@ -256,6 +294,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -263,7 +307,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "errno": { @@ -273,15 +317,15 @@ "dev": true, "optional": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { @@ -317,13 +361,29 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "findup-sync": { @@ -331,7 +391,7 @@ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "requires": { - "glob": "5.0.15" + "glob": "~5.0.0" }, "dependencies": { "glob": { @@ -339,11 +399,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -362,9 +422,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -389,7 +449,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -406,12 +466,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -420,37 +480,65 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "grunt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz", - "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", - "requires": { - "coffeescript": "1.10.0", - "dateformat": "1.0.12", - "eventemitter2": "0.4.14", - "exit": "0.1.2", - "findup-sync": "0.3.0", - "glob": "7.0.6", - "grunt-cli": "1.2.0", - "grunt-known-options": "1.1.0", - "grunt-legacy-log": "1.0.0", - "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.19", - "js-yaml": "3.5.5", - "minimatch": "3.0.4", - "nopt": "3.0.6", - "path-is-absolute": "1.0.1", - "rimraf": "2.2.8" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", + "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "requires": { + "coffee-script": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~1.0.0", + "grunt-legacy-util": "~1.0.0", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.5.2", + "minimatch": "~3.0.0", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.2.8" + } + }, + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "requires": { + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + } + }, + "grunt-contrib-clean": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", + "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "rimraf": "^2.6.2" }, "dependencies": { - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, "requires": { - "findup-sync": "0.3.0", - "grunt-known-options": "1.1.0", - "nopt": "3.0.6", - "resolve": "1.1.7" + "glob": "^7.0.5" } } } @@ -461,8 +549,60 @@ "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", "dev": true, "requires": { - "chalk": "1.1.3", - "source-map": "0.5.7" + "chalk": "^1.0.0", + "source-map": "^0.5.3" + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + } + }, + "grunt-contrib-cssmin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-3.0.0.tgz", + "integrity": "sha512-eXpooYmVGKMs/xV7DzTLgJFPVOfMuawPD3x0JwhlH0mumq2NtH3xsxaHxp1Y3NKxp0j0tRhFS6kSBRsz6TuTGg==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "clean-css": "~4.2.1", + "maxmin": "^2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "grunt-contrib-less": { @@ -471,10 +611,10 @@ "integrity": "sha1-O73sC3XRLOqlXWKUNiXAsIYc328=", "dev": true, "requires": { - "async": "2.6.0", - "chalk": "1.1.3", - "less": "2.7.3", - "lodash": "4.17.5" + "async": "^2.0.0", + "chalk": "^1.0.0", + "less": "~2.7.1", + "lodash": "^4.8.2" }, "dependencies": { "async": { @@ -483,7 +623,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "lodash": { @@ -494,21 +634,63 @@ } } }, + "grunt-contrib-uglify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.0.tgz", + "integrity": "sha512-vy3Vop2KDqdiwcGOGAjyKvjHFrRD/YK4KPQWR3Yt6OdYlgFw1z7HCuk66+IJ9s7oJmp9uRQXuuSHyawKRAgiMw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "maxmin": "^2.1.0", + "uglify-js": "~3.4.8", + "uri-path": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "grunt-known-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==" }, "grunt-legacy-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", - "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz", + "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==", "requires": { - "colors": "1.1.2", - "grunt-legacy-log-utils": "1.0.0", - "hooker": "0.2.3", - "lodash": "3.10.1", - "underscore.string": "3.2.3" + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" } }, "grunt-legacy-log-utils": { @@ -516,8 +698,8 @@ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", "requires": { - "chalk": "1.1.3", - "lodash": "4.3.0" + "chalk": "~1.1.1", + "lodash": "~4.3.0" }, "dependencies": { "lodash": { @@ -532,13 +714,13 @@ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", "requires": { - "async": "1.5.2", - "exit": "0.1.2", - "getobject": "0.1.0", - "hooker": "0.2.3", - "lodash": "4.3.0", - "underscore.string": "3.2.3", - "which": "1.2.14" + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.3.0", + "underscore.string": "~3.2.3", + "which": "~1.2.1" }, "dependencies": { "lodash": { @@ -548,6 +730,15 @@ } } }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "^0.1.1" + } + }, "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", @@ -562,8 +753,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-ansi": { @@ -571,9 +762,15 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", @@ -581,10 +778,10 @@ "dev": true, "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -599,9 +796,9 @@ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "http-signature": { "version": "1.1.1", @@ -610,15 +807,18 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "image-size": { "version": "0.5.5", @@ -632,7 +832,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "inflight": { @@ -640,8 +840,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -659,7 +859,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-finite": { @@ -667,7 +867,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -699,8 +899,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" + "argparse": "^1.0.2", + "esprima": "^2.6.0" } }, "jsbn": { @@ -724,7 +924,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -769,14 +969,14 @@ "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", "dev": true, "requires": { - "errno": "0.1.6", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.2.11", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", "request": "2.81.0", - "source-map": "0.5.7" + "source-map": "^0.5.3" } }, "load-json-file": { @@ -784,25 +984,25 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "map-obj": { @@ -810,21 +1010,33 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" }, + "maxmin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^3.0.0", + "pretty-bytes": "^3.0.0" + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, "mime": { @@ -846,7 +1058,7 @@ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -854,7 +1066,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -886,7 +1098,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -894,10 +1106,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "number-is-nan": { @@ -922,7 +1134,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "parse-json": { @@ -930,7 +1142,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -938,7 +1150,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -951,9 +1163,9 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "performance-now": { @@ -978,7 +1190,16 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" + } + }, + "pretty-bytes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" } }, "promise": { @@ -988,7 +1209,7 @@ "dev": true, "optional": true, "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "prr": { @@ -1017,9 +1238,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -1027,8 +1248,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "redent": { @@ -1036,8 +1257,8 @@ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "repeating": { @@ -1045,7 +1266,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -1055,28 +1276,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "resolve": { @@ -1095,10 +1316,15 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, "signal-exit": { "version": "3.0.2", @@ -1112,7 +1338,7 @@ "dev": true, "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "source-map": { @@ -1122,22 +1348,32 @@ "dev": true }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" }, "sprintf-js": { "version": "1.0.3", @@ -1151,14 +1387,14 @@ "dev": true, "optional": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -1182,7 +1418,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -1190,7 +1426,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-indent": { @@ -1198,7 +1434,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "supports-color": { @@ -1213,7 +1449,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "trim-newlines": { @@ -1228,7 +1464,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -1238,11 +1474,35 @@ "dev": true, "optional": true }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "underscore.string": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=" }, + "uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true + }, "uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", @@ -1251,12 +1511,12 @@ "optional": true }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "verror": { @@ -1266,9 +1526,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" }, "dependencies": { "assert-plus": { @@ -1285,7 +1545,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "wrappy": { diff --git a/diff b/diff new file mode 100644 index 000000000..8d272beb7 --- /dev/null +++ b/diff @@ -0,0 +1,2717 @@ +diff --git a/atms-web/src/main/webapp/app/app.config.js b/atms-web/src/main/webapp/app/app.config.js +new file mode 100644 +index 00000000..12fc1609 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/app.config.js +@@ -0,0 +1,30 @@ ++锘�(function () { ++ 'use strict'; ++ ++ angular.module('app.config', []) ++ // region of current application ++ .constant('region', 'zh-CN') ++ //.constant('region', 'en-US') ++ // version of current application ++ .constant('version', '1.0.0.0') ++ // Exceptionless Server URL ++ .constant('exceptionlessServerURL', '') ++ .run([ ++ 'region', function (region) { ++ $.when( ++ $.getJSON("/Scripts/cldr/main/zh/numbers.json"), ++ $.getJSON("/Scripts/cldr/main/zh/ca-gregorian.json"), ++ $.getJSON("/Scripts/cldr/supplemental/likelySubtags.json") ++ ).then(function () { ++ return [].slice.apply(arguments, [0]).map(function (result) { ++ return result[0]; ++ }); ++ }).then(Globalize.load).then(function () { ++ Globalize.locale("zh-CN"); ++ // Globalize.locale("en-US"); ++ DevExpress.localization.locale(region); ++ //DevExpress.localization.locale(navigator.language || navigator.browserLanguage); ++ }); ++ } ++ ]); ++}()); +\ No newline at end of file +diff --git a/atms-web/src/main/webapp/app/app.js b/atms-web/src/main/webapp/app/app.js +new file mode 100644 +index 00000000..4f10bcb0 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/app.js +@@ -0,0 +1,355 @@ ++锘�// ++// app module for online DPMS ++// ++var app = angular.module('app', ['ui.tree', 'ui.bootstrap', 'ui.bootstrap.tpls', 'ui.event', 'pascalprecht.translate', 'ngMessages', 'ui.utils', ++ 'ngRoute', 'ngCookies', 'ngSanitize', 'ct.ui.router.extras', 'chieffancypants.loadingBar', 'ngDraggable', 'ngFileUpload', 'LocalStorageModule', 'exceptionless', ++ 'app.config', 'app.common', 'app.webservices', 'app.framework', 'app.vat', 'app.invoice', 'app.cit', 'app.assetsManage', 'pasvaz.bindonce', 'app.vatDashboard', 'app.vatDongfeng', 'vs-repeat', 'ivh.treeview', 'angular-cache', ++ 'app.cache', 'angularBootstrapNavTree', 'ngAnimate', 'cgNotify', 'dx', 'ngNumeraljs', 'app.noPermissionPage']) ++ //run blocks are executed after the injector is created and are the first ++ //methods that are executed in any Angular app. ++ .run(['$log', '$http', 'CacheFactory', 'userService', 'loginContext', '$rootScope', 'vatSessionService', '$q', function ($log, $http, CacheFactory, userService, loginContext, $rootScope, vatSessionService, $q) { ++ $log.debug('app.run()...'); ++ ++ $rootScope.vatPermission = constant.vatPermission; ++ ++ // 鎺у埗鐢ㄦ埛鏈烘瀯缁村害涓婄殑鏉冮檺 ++ $rootScope.checkUserOrganizationPermissionList = function (permissionCodeList) { ++ var deferred = $q.defer(); ++ var promise = deferred.promise; ++ var model = {}; ++ ++ var orgID = vatSessionService.project.organizationID; ++ ++ userService.getUserPermissionNew(loginContext.userName, function (data) { ++ permissionCodeList.forEach(function (permissionCode) { ++ var ret = window.PWC.isHaveOrganizationPermission(orgID, permissionCode, data); ++ model[permissionCode] = ret; ++ }); ++ ++ deferred.resolve(model); ++ }); ++ ++ var successFunction = function (fn) { ++ promise.then(function (model) { ++ fn(model); ++ }); ++ return this; ++ } ++ ++ return { ++ success: successFunction, ++ }; ++ }; ++ ++ ++ $rootScope.checkUserOrganizationPermissionList([]); ++ ++ $rootScope.checkUserPermissionList = function (permissionCodeList) { ++ var deferred = $q.defer(); ++ var promise = deferred.promise; ++ var model = {}; ++ // 杩欑鏂瑰紡 閲嶆柊鐧诲綍锛屽苟鍙戝幓鍚庡彴 鍙栨暟鎹� 浼氬嚭鐜伴棶棰� ++ //userService.getUserPermission(loginContext.userName).success(function (data) { ++ // permissionCodeList.forEach(function (permissionCode) { ++ // var ret = window.PWC.isHavePermission(permissionCode, data); ++ // model[permissionCode] = ret; ++ // }); ++ ++ // deferred.resolve(model); ++ //}); ++ ++ userService.getUserPermissionNew(loginContext.userName, function (data) { ++ permissionCodeList.forEach(function (permissionCode) { ++ var ret = window.PWC.isHavePermission(permissionCode, data); ++ model[permissionCode] = ret; ++ }); ++ ++ deferred.resolve(model); ++ }); ++ ++ var successFunction = function (fn) { ++ promise.then(function (model) { ++ fn(model); ++ }); ++ return this; ++ } ++ ++ return { ++ success: successFunction, ++ }; ++ }; ++ $http.defaults.headers.common['X-XSRF-Token'] = ++ angular.element('input[name="__RequestVerificationToken"]').attr('value'); ++ ++ ++ }]) ++ // We always place constant at the beginning of all configuration blocks. ++ .constant('application', { ++ // the current logged on user ++ currentUser: {}, ++ // convert date to display time based on current user ++ toDisplayTimeString: function (dateTime) { ++ if (!_.isDate(dateTime)) { ++ throw new TypeError('"dateTime" should be "Date" type!'); ++ } ++ return dateTime.toString('h:mmtt').toLowerCase(); ++ }, ++ // define angular events for $broadcast/$emit and $on ++ events: { ++ beforeUnload: 'event:beforeUnload', ++ navigateToTab: 'event:navigateToTab', ++ showNotificationBar: 'event:showNotificationBar' ++ } ++ }) ++ // only providers and constants should be injected in config block ++ .config(['$logProvider', '$translateProvider', '$translatePartialLoaderProvider', 'region', '$compileProvider', ++ function ($logProvider, $translateProvider, $translatePartialLoaderProvider, region, $compileProvider) { ++ 'use strict'; ++ ++ // to disable various debug runtime information in the compiler to DOM elements. ++ $compileProvider.debugInfoEnabled(false); ++ // enable output $log.debug by default ++ $logProvider.debugEnabled(true); ++ ++ // angular-translate configuration ++ var configurateTranslation = function () { ++ ++ $translateProvider.useLoader('$translatePartialLoader', { ++ // the translation table are organized by language and module under folder 'app/i18n/' ++ urlTemplate: '/app-resources/i18n/{lang}/{part}.json' ++ }); ++ ++ $translateProvider ++ .preferredLanguage(region) ++ .fallbackLanguage(region); ++ ++ //https://github.com/Contactis/translations-manager/issues/7 ++ //https://angular-translate.github.io/docs/#/guide/19_security ++ $translateProvider.useSanitizeValueStrategy('escape'); ++ }; ++ ++ configurateTranslation(); ++ } ++ ]) ++ // IE10 fires input event when a placeholder is defined so that form element is in dirty instead of pristine state ++ // refer to: https://github.com/angular/angular.js/issues/2614 ++ .config(['$provide', function ($provide) { ++ $provide.decorator('$sniffer', ['$delegate', function ($sniffer) { ++ var msieVersion = parseInt((/msie (\d+)/.exec(angular.lowercase(navigator.userAgent)) || [])[1], 10); ++ var hasEvent = $sniffer.hasEvent; ++ $sniffer.hasEvent = function (event) { ++ if (event === 'input' && msieVersion === 10) { ++ return false; ++ } ++ hasEvent.call(this, event); ++ }; ++ return $sniffer; ++ }]); ++ }]) ++ .config(['$ExceptionlessClient', 'exceptionlessServerURL', function ($ExceptionlessClient, exceptionlessServerURL) { ++ if (!PWC.isNullOrEmpty(exceptionlessServerURL)) { ++ $ExceptionlessClient.config.apiKey = 'HK0XK49LbufV6E4q8HLW7CGncwSBJvdBrJQwUnzw'; ++ $ExceptionlessClient.config.serverUrl = exceptionlessServerURL; ++ $ExceptionlessClient.config.setUserIdentity('0', 'Anonymous'); ++ $ExceptionlessClient.config.useSessions(); ++ $ExceptionlessClient.config.defaultTags.push('JavaScript', 'Angular'); ++ } ++ }]) ++ .config(['CacheFactoryProvider', function (CacheFactoryProvider) { ++ var options = { ++ storageMode: 'localStorage', // This cache will use `localStorage`. ++ storagePrefix: 'atms.' ++ }; ++ if (!window.localStorage) { ++ options.storageImpl = localStoragePolyfill; ++ } ++ angular.extend(CacheFactoryProvider.defaults, options); ++ }]) ++ .config(['ivhTreeviewOptionsProvider', function (ivhTreeviewOptionsProvider) { ++ ivhTreeviewOptionsProvider.set({ ++ defaultSelectedState: false, ++ validate: true, ++ // Twisties can be images, custom html, or plain text ++ twistieCollapsedTpl: '<i class="fa fa-plus" aria-hidden="true"></i>', ++ twistieExpandedTpl: '<i class="fa fa-minus" aria-hidden="true"></i>', ++ twistieLeafTpl: '<span style="color:white">●</span>' ++ }); ++ }]) ++ // refer to: https://github.com/oitozero/ngSweetAlert ++ .factory('SweetAlert', ['$rootScope', '$log', '$translate', function ($rootScope, $log, $translate) { ++ $log.debug('SweetAlert.run()...'); ++ var swal = window.swal; ++ //public methods ++ var self = { ++ ++ swal: function (arg1, arg2, arg3) { ++ $rootScope.$evalAsync(function () { ++ if (typeof (arg2) === 'function') { ++ swal(arg1, function (isConfirm) { ++ $rootScope.$evalAsync(function () { ++ arg2(isConfirm); ++ }); ++ }, arg3); ++ } else { ++ swal(arg1, arg2, arg3); ++ } ++ }); ++ }, ++ success: function (title, message) { ++ $rootScope.$evalAsync(function () { ++ //swal(title, message, 'success'); ++ ++ swal({ ++ title: title, ++ text: message, ++ type: "success", ++ confirmButtonText: $translate.instant('Confirm'), ++ }); ++ }); ++ }, ++ error: function (title, message) { ++ $rootScope.$evalAsync(function () { ++ //swal(title, message, 'error'); ++ swal({ ++ title: title, ++ text: message, ++ type: "error", ++ confirmButtonText: $translate.instant('Confirm'), ++ }); ++ ++ }); ++ }, ++ warning: function (title, message) { ++ $rootScope.$evalAsync(function () { ++ //swal(title, message, 'warning'); ++ swal({ ++ title: title, ++ text: message, ++ type: "warning", ++ confirmButtonText: $translate.instant('Confirm'), ++ }); ++ }); ++ }, ++ info: function (title, message) { ++ $rootScope.$evalAsync(function () { ++ //swal(title, message, 'info'); ++ swal({ ++ title: title, ++ text: message, ++ type: "info", ++ confirmButtonText: $translate.instant('Confirm'), ++ }); ++ }); ++ } ++ }; ++ ++ return self; ++ }]) ++ //turn off angular-loading-bar spinner ++ //refer to https://github.com/chieffancypants/angular-loading-bar ++ .config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) { ++ cfpLoadingBarProvider.includeSpinner = false; ++ }]) ++ //initialize localStorage ++ //refer to https://github.com/grevory/angular-local-storage#get-started ++ .config(['localStorageServiceProvider', function (localStorageServiceProvider) { ++ localStorageServiceProvider.setPrefix('pwcdashboard').setStorageType('sessionStorage'); ++ }]) ++ // Provide the localization function for application and support async load translation table by parts on demand. ++ // Note: When trying to adding new translation resource into .json file, please check if the same KEY is existing ++ // in .json files under i18n folder. Because if two parts have the same property, the property value will be overwrited ++ // by the loaded last part. ++ // for example, ++ // We load app.json first and then load patient.json. "app.json" file contains a property {"Text" : "Test"} ++ // and "patient.json" file contains property {"Text" : "Overwrite Test"} the "Text" on view will be translated to ++ // be "Overwrite Test". ++ .factory('appTranslation', ['$log', '$translatePartialLoader', '$translate', ++ function ($log, $translatePartialLoader, $translate) { ++ 'use strict'; ++ $log.debug('appTranslation.ctor()...'); ++ ++ var translation = { ++ // part names for modules ++ // AppPart is for the translation of application level, not for a module for a business logic. ++ appPart: 'app', ++ vat: 'vat', ++ cit: 'cit', ++ noPermissionPage: 'noPermissionPage', ++ /// <summary> ++ /// async load translation tables into application for specified part names that required for the view. ++ /// </summary> ++ /// <param name="partNames">part names of array type</param> ++ load: function (partNames) { ++ if (!angular.isArray(partNames)) { ++ throw new TypeError('"partNames" should be an array!'); ++ } ++ ++ partNames.forEach(function (name) { ++ $translatePartialLoader.addPart(name); ++ }); ++ ++ $translate.refresh(); ++ }, ++ loadAll: function () { ++ _.map(_.values(translation), function (part) { ++ if (_.isString(part)) { ++ $translatePartialLoader.addPart(part); ++ } ++ }); ++ $translate.refresh(); ++ } ++ }; ++ return translation; ++ } ++ ]) ++ .controller('AppController', ['$scope', '$log', '$location', '$translate', '$translatePartialLoader', ++ '$window', 'appRoute', 'application', 'appTranslation', '$timeout', '$uibModal', 'loginContext', '$ExceptionlessClient', 'signalRSvc', ++ 'exceptionlessServerURL', function ($scope, $log, $location, $translate, $translatePartialLoader, $window, appRoute, ++ application, appTranslation, $timeout, $uibModal, loginContext, $ExceptionlessClient, signalRSvc, exceptionlessServerURL) { ++ 'use strict'; ++ $log.debug('AppController.ctor()...'); ++ ++ $scope.localName = loginContext.localName; ++ ++ if (!PWC.isNullOrEmpty(exceptionlessServerURL)) { ++ $ExceptionlessClient.config.setUserIdentity(loginContext.userId, loginContext.localName); ++ $ExceptionlessClient.config.useSessions(); ++ } ++ ++ $scope.$on('$locationChangeSuccess', function () { ++ $scope.actualLocation = $location.path(); ++ }); ++ ++ $scope.$watch(function () { return $location.path() }, function (newLocation) { ++ if ($scope.actualLocation === newLocation) { ++ // back or forward ++ $log.debug('Go back or go forward to view browser history. Url: ' + newLocation); ++ } ++ }); ++ ++ $scope.$on('$stateChangeSuccess', ++ function () { ++ $log.debug('$stateChangeSuccess: '); ++ }); ++ ++ ++ // publish unbeforeunload event to child scopes ++ $scope.onbeforeunload = function () { ++ $scope.$broadcast(application.events.beforeUnload); ++ }; ++ ++ $scope.main = function () { ++ $location.path('/main'); ++ $location.url('main'); ++ }; ++ ++ $scope.createDemo = function () { ++ $location.path('/accountDemo'); ++ $location.url($location.path()); ++ }; ++ ++ appTranslation.loadAll(); ++ ++ signalRSvc.initialize(); ++ } ++ ]); +\ No newline at end of file +diff --git a/atms-web/src/main/webapp/app/framework/app-nav/app-nav.html b/atms-web/src/main/webapp/app/framework/app-nav/app-nav.html +index 99acd90b..5f89d291 100644 +--- a/atms-web/src/main/webapp/app/framework/app-nav/app-nav.html ++++ b/atms-web/src/main/webapp/app/framework/app-nav/app-nav.html +@@ -20,11 +20,6 @@ + <span class="nav-icon-color">{{'MenuVAT' | translate}}</span> + </a> + </div> +- <div class="nav-element-left"> +- <a ui-sref="listApproval"> +- <span class="nav-icon-color">{{'鎶ヨ〃瀹℃壒' | translate}}</span> +- </a> +- </div> + <!--<div class="nav-element-left">--> + <!--<a ui-sref="summaryDashboard" hover-show="second">--> + <!--<span class="nav-icon-color">{{'MenuTaxAnalysisPlatform' | translate}}</span>--> +diff --git a/atms-web/src/main/webapp/app/module-part1.js b/atms-web/src/main/webapp/app/module-part1.js +new file mode 100644 +index 00000000..17307b54 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/module-part1.js +@@ -0,0 +1,858 @@ ++//Common Bind Module Method ++var bindModule = function (thisModule, controllerProvider, compileProvider, filterProvider, provide) { ++ ++ thisModule.controller = controllerProvider.register; ++ thisModule.directive = compileProvider.directive; ++ thisModule.filter = filterProvider.register; ++ thisModule.factory = provide.factory; ++ thisModule.service = provide.service; ++ ++ return thisModule; ++}; ++ ++// register common module for shared functionalities for all other feature modules ++var commonModule = angular.module('app.common', ['pascalprecht.translate', 'ngAnimate', 'ui.grid', 'ui.grid.selection', 'ui.grid.selection', 'ui.grid.treeView', 'ui.grid.resizeColumns', 'ui.grid.grouping', 'ui.grid.exporter', 'app.config', 'ui.grid.edit']) ++ .run(['$log', function ($log) { ++ $log.debug('app.common.run()...'); ++ }]) ++ // define the script files for lazy loading and method to create depencency map for resovle config in route ++ .provider('scriptDependency', ['version', function (version) { ++ 'use strict'; ++ // Here must add version parameter ?v=***, ++ // to solve the problem that the bundle is not refreshed when its content changed. ++ ++ this.commdataimport = [{ ++ url: '/bundles/commdataimport.js?v=' + version, ++ type: 'text/javascript' ++ }, { ++ url: '/bundles/commdataimport.css?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.vat = [{ ++ url: '/bundles/vat.js?v=' + version, ++ type: 'text/javascript' ++ }, { ++ url: '/bundles/vat.css?v=' + version, ++ type: 'text/css' ++ }, { ++ url: '/bundles/vat.less?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.cit = [{ ++ url: '/bundles/cit.js?v=' + version, ++ type: 'text/javascript' ++ }, { ++ url: '/bundles/cit.css?v=' + version, ++ type: 'text/css' ++ }, { ++ url: '/bundles/cit.less?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.noPermissionPage = [{ ++ url: '/bundles/noPermissionPage.js?v=' + version, ++ type: 'text/javascript' ++ }, { ++ url: '/bundles/noPermissionPage.less?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.assetsManage = [{ ++ url: '/bundles/assetsManage.js?v=' + version, ++ type: 'text/javascript' ++ }, { ++ url: '/bundles/assetsManage.css?v=' + version, ++ type: 'text/css' ++ }, { ++ url: '/bundles/assetsManage.less?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.summary = [ ++ // { ++ // url: '/bundles/summary.js?v=' + version, ++ // type: 'text/javascript' ++ //}, ++ { ++ url: '/bundles/summary.css?v=' + version, ++ type: 'text/css' ++ }]; ++ ++ this.createDependenciesMap = function (dependencies) { ++ if (!angular.isArray(dependencies)) { ++ throw new TypeError('"scriptUrls" should be an array type!'); ++ } ++ ++ var dependenciesMap = { ++ dependency: ['$q', '$rootScope', ++ function ($q, $rootScope) { ++ var deferred = $q.defer(); ++ PWC.Loader.load(dependencies, function (hasNewJsLoaded) { ++ // If has new JavaScript resource loaded, should call $apply, otherwise, ++ // should not call it. ++ if (hasNewJsLoaded) { ++ $rootScope.$apply(function () { ++ deferred.resolve(); ++ }); ++ } else { ++ deferred.resolve(); ++ } ++ }); ++ return deferred.promise; ++ } ++ ] ++ }; ++ ++ return dependenciesMap; ++ }; ++ ++ this.$get = function () { ++ return { ++ createDependenciesMap: createDependenciesMap, ++ infrastructure: infrastructure, ++ vat: vat, ++ cit: cit, ++ assetsManage: assetsManage, ++ noPermissionPageModule: noPermissionPageModule ++ //subjectCorrespondingInfrastructure: subjectCorrespondingInfrastructure ++ //subjectCorresponding: subjectCorresponding, ++ //configurationInfrastructure: configurationInfrastructure, ++ //declarationFormConfiguration: declarationFormConfiguration ++ }; ++ }; ++ }]); ++ ++// register services module ++var webservices = angular.module('app.webservices', ['app.common']) ++ .run(['$log', function ($log) { ++ $log.debug('app.webservices.run()...'); ++ }]); ++ ++// register framework module for application framework ++var frameworkModule = angular.module('app.framework', ['app.webservices', 'app.common']) ++ .run(['$log', function ($log) { ++ $log.debug('app.framework.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', 'scriptDependencyProvider', '$stateProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, scriptDependencyProvider, $stateProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(frameworkModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ $stateProvider.state({ ++ name: 'overview', ++ url: '/overview', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.appPart]); ++ }], ++ template: '<app-overview servicetypeid="2"></app-overview>', ++ } ++ }, ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'notification', ++ url: '/notification', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.appPart]); ++ }], ++ template: '<app-push-notification></app-push-notification>', ++ } ++ }, ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'overviewVat', ++ url: '/overview/vat', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat,appTranslation.appPart]); ++ }], ++ template: '<app-overview servicetypeid="2"></app-overview>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ /*$stateProvider.state({ ++ name: 'overviewAssetsManage', ++ url: '/overview/assetsManage', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.appPart]); ++ }], ++ template: '<app-overview servicetypeid="12"></app-overview>', ++ } ++ }, ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'overviewCit', ++ url: '/overview/cit', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.appPart]); ++ }], ++ template: '<app-overview servicetypeid="6"></app-overview>', ++ } ++ }, ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'summary', ++ url: '/summary', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.appPart]); ++ }], ++ template: '<app-summary></app-summary>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.summary), ++ deepStateRedirect: true, ++ sticky: true ++ });*/ ++ ++ } ++ ]); ++ ++// register cache module for application framework ++var cacheModule = angular.module('app.cache', ['app.common']) ++ .run(['$log', 'cacheService', function ($log, cacheService) { ++ $log.debug('app.cache.run()...'); ++ ++ }]); ++ ++var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngAnimate', 'ngSanitize', 'ui.bootstrap', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning',]) ++ .run(['$log', function ($log) { ++ $log.debug('app.vat.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(vatModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ uiSelectConfig.theme = 'select2'; ++ ++ $stateProvider.state({ ++ name: 'vat', ++ url: '/vat', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-layout></vat-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData', ++ url: '/importData', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-layout></vat-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ $stateProvider.state({ ++ name: 'vat.importData.balanceSheet', ++ url: '/balanceSheet', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-trial-balance></vat-import-trial-balance>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.journalEntry', ++ url: '/journalEntry', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-journal-entry></vat-import-journal-entry>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.erpData', ++ url: '/erpData', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-erp></vat-import-erp>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.outputInvoice', ++ url: '/outputInvoice', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-output-invoice></vat-import-output-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-income-invoice></vat-import-income-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.customInvoice', ++ url: '/customInvoice', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-custom-invoice></vat-import-custom-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.voucherMapping', ++ url: '/voucherMapping', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-voucher-mapping></vat-voucher-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.invoiceMapping', ++ url: '/invoiceMapping', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-invoice-mapping></vat-invoice-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.importData.auditAdjust', ++ url: '/auditAdjust', ++ views: { ++ '@vat.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-audit-adjust></vat-audit-adjust>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData', ++ url: '/previewData', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-layout></vat-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData.balanceSheet', ++ url: '/balanceSheet', ++ views: { ++ '@vat.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-preview-balance-sheet></vat-preview-balance-sheet>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData.accountVoucher', ++ url: '/accountVoucher', ++ views: { ++ '@vat.previewData': { ++ controller: [ ++ '$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ } ++ ], ++ template: '<vat-preview-account-voucher></vat-preview-account-voucher>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData.outputInvoice', ++ url: '/outputInvoice', ++ views: { ++ '@vat.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-preview-output-invoice></vat-preview-output-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@vat.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-preview-input-invoice></vat-preview-input-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.previewData.customInvoice', ++ url: '/customInvoice', ++ views: { ++ '@vat.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-preview-custom-invoice-sheet></vat-preview-custom-invoice-sheet>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.reductionData', ++ url: '/reductionData', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-import-layout></vat-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ // $stateProvider.state({ ++ // name: 'vat.reductionData.accountMapping', ++ // url: '/accountMapping', ++ // views: { ++ // '@vat.reductionData': { ++ // controller: ['$scope', '$stateParams', 'appTranslation', ++ // function ($scope, $stateParams, appTranslation) { ++ // appTranslation.load([appTranslation.vat]); ++ // }], ++ // template: '<vat-account-mapping></vat-account-mapping>', ++ // } ++ // }, ++ // resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ // deepStateRedirect: true, ++ // sticky: true ++ // }); ++ // ++ // $stateProvider.state({ ++ // name: 'vat.reductionData.goodsMapping', ++ // url: '/goodsMapping', ++ // views: { ++ // '@vat.reductionData': { ++ // controller: ['$scope', '$stateParams', 'appTranslation', ++ // function ($scope, $stateParams, appTranslation) { ++ // appTranslation.load([appTranslation.vat]); ++ // }], ++ // template: '<vat-goods-mapping></vat-goods-mapping>', ++ // } ++ // }, ++ // resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ // deepStateRedirect: true, ++ // sticky: true ++ // }); ++ ++ $stateProvider.state({ ++ name: 'vat.reductionData.caculateData', ++ url: '/caculateData', ++ views: { ++ '@vat.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-caculate-data></vat-caculate-data>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.reductionData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@vat.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<p>inputInvoice</p>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.reductionData.unbilledInvoice', ++ url: '/unbilledInvoice', ++ views: { ++ '@vat.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-unbilled-invoice></vat-unbilled-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ $stateProvider.state({ ++ name: 'vat.generateReport', ++ url: '/generateReport', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ $scope.isFromTopMenu = true; ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-report-layout></vat-report-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.generateReport.reportView', ++ url: '/reportView?{id:string}&{templateid:string}&{name:string}&{templatecode:string}', ++ views: { ++ '@vat.generateReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ $scope.reportId = $stateParams.id; ++ $scope.templateId = $stateParams.templateid; ++ $scope.templateName = $stateParams.name; ++ $scope.templateCode = $stateParams.templatecode; ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-report-view report-id="reportId" template-id="templateId" template-name="templateName" template-code="templateCode" ></vat-report-view>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ /**********a beautiful separated line for analyzeReport*********/ ++ $stateProvider.state({ ++ name: 'vat.analyzeLayout', ++ url: '/analyzeLayout', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-analysis-menu></vat-analysis-menu>', ++ ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeLayout.analyzeReport', ++ url: '/analyzeReport', ++ views: { ++ '@vat.analyzeLayout': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-model-analysis></vat-model-analysis>', ++ ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeLayout.vatTaxDifference', ++ url: '/vatTaxDifference', ++ views: { ++ '@vat.analyzeLayout': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-tax-difference></vat-tax-difference>', ++ ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ $stateProvider.state({ ++ name: 'vat.analyzeReport', ++ url: '/analyzeReport', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-model-analysis></vat-model-analysis>', ++ ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeReport.dataSummary', ++ url: '/dataSummary', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-data-summary></vat-data-summary>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeReport.vatAnalysis', ++ url: '/vatAnalysis', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-vat-analysis></vat-vat-analysis>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeReport.financeTargetAnalysis', ++ url: '/financeTargetAnalysis', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-finance-target-analysis></vat-finance-target-analysis>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'vat.analyzeReport.vatModelAnalysis', ++ url: '/vatModelAnalysis', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<vat-model-analysis></vat-model-analysis>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ /**********the end of a beautiful separated line for analyzeReport*********/ ++ ++ $stateProvider.state({ ++ name: 'vat.devGrid', ++ url: '/devGrid', ++ views: { ++ '@vat': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dev-grid></dev-grid>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ }]); +\ No newline at end of file +diff --git a/atms-web/src/main/webapp/app/module-part2.js b/atms-web/src/main/webapp/app/module-part2.js +new file mode 100644 +index 00000000..bb6d7a84 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/module-part2.js +@@ -0,0 +1,957 @@ ++锘�//Common Bind Module Method ++var bindModule = function (thisModule, controllerProvider, compileProvider, filterProvider, provide) { ++ ++ thisModule.controller = controllerProvider.register; ++ thisModule.directive = compileProvider.directive; ++ thisModule.filter = filterProvider.register; ++ thisModule.factory = provide.factory; ++ thisModule.service = provide.service; ++ ++ return thisModule; ++}; ++ ++var invoiceModule = angular.module('app.invoice', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning']) ++ .run(['$log', function ($log) { ++ $log.debug('app.invoice.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(invoiceModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ uiSelectConfig.theme = 'select2'; ++ ++ //鍙戠エ绠$悊妗嗘灦 ++ $stateProvider.state({ ++ name: 'invoiceManagement', ++ url: '/invoiceManagement', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', '$state', ++ function ($scope, $stateParams, appTranslation, $state) { ++ appTranslation.load([appTranslation.vat]); ++ $scope.state = $state; ++ }], ++ template: '<invoice-manage-infrastructure state="state"></invoice-manage-infrastructure>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ //鍙戠エ绠$悊涓昏鐣岄潰 ++ $stateProvider.state('invoiceManagement.main', { ++ url: "/main", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'main-view@invoiceManagement': { ++ template: '<invoice-manage-main></invoice-manage-main>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊涓婁紶index ++ $stateProvider.state('invoiceManagement.uploadIndex', { ++ url: "/main/uploadIndex", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'uploadIndex-view@invoiceManagement': { ++ ++ template: '<invoice-manage-main-upload-index></invoice-manage-main-upload-index>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ //鍙戠エ绠$悊涓婁紶paper invoice ++ $stateProvider.state('invoiceManagement.uploadPaperInvoice', { ++ url: "/main/uploadPaperInvoice", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'uploadPaperInvoice-view@invoiceManagement': { ++ ++ template: '<invoice-manage-main-upload-paper-invoice></invoice-manage-main-upload-paper-invoice>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊涓婁紶electonic invoice ++ $stateProvider.state('invoiceManagement.uploadElecInvoice', { ++ url: "/main/uploadElecInvoice", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'uploadElecInvoice-view@invoiceManagement': { ++ ++ template: '<invoice-manage-main-upload-electronic-invoice></invoice-manage-main-upload-electronic-invoice>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊涓婁紶scan invoice ++ $stateProvider.state('invoiceManagement.uploadScanInvoice', { ++ url: "/main/uploadScanInvoice", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'uploadScanInvoice-view@invoiceManagement': { ++ ++ template: '<invoice-manage-main-upload-scan-invoice></invoice-manage-main-upload-scan-invoice>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //鍙戠エ绠$悊鏈敹绁ㄨ璇� ++ $stateProvider.state('invoiceManagement.noInvoiceVerify', { ++ url: "/noInvoiceVerify", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'noInvoiceVerify-view@invoiceManagement': { ++ template: '<invoice-manage-verify></invoice-manage-verify>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //寮€绁ㄧ鐞� ++ $stateProvider.state('invoiceManagement.billingManage', ++ { ++ url: "/billingManage", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'billingManage-view@invoiceManagement': { ++ template: '<iframe id="dfiframe" src="/app/df/code/pages/PreViewFapiao.html" scrolling="auto" height="100%" style="border:none" width="100%"></iframe>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ ++ //鍙戠エ鏌ヨ ++ $stateProvider.state('invoiceManagement.invoiceQuery', ++ { ++ url: "/invoiceQuery", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'invoiceQuery-view@invoiceManagement': { ++ template: '<iframe id="dfiframe" src="/app/df/code/pages/FapiaoInqury.html" scrolling="auto" height="100%" style="border:none" width="100%"></iframe>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //鍙戠エ绠$悊寰呴€€绁ㄧ鐞� ++ $stateProvider.state('invoiceManagement.pendingRefundInvoice', { ++ url: "/pendingRefundInvoice", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'pendingRefundInvoice-view@invoiceManagement': { ++ template: '<invoice-manage-refund></invoice-manage-refund>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊鍏宠仈绠$悊 ++ $stateProvider.state('invoiceManagement.mapInvoice', { ++ url: "/mapInvoice", ++ sticky: true, ++ dsr: true, ++ views: { ++ 'mapInvoice-view@invoiceManagement': { ++ template: '<invoice-manage-map></invoice-manage-map>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //鍙戠エ绠$悊妗嗘灦 ++ $stateProvider.state({ ++ name: 'outputInvoiceManage', ++ url: '/outputInvoiceManage', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', '$state', ++ function ($scope, $stateParams, appTranslation, $state) { ++ appTranslation.load([appTranslation.vat]); ++ $scope.state = $state; ++ }], ++ template: '<output-invoice-infrastructure state="state"></output-invoice-infrastructure>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ //鍙戠エ绠$悊涓昏鐣岄潰 ++ $stateProvider.state('outputInvoiceManage.imported', { ++ url: "/imported", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'outputInvoiceImported-view@outputInvoiceManage': { ++ template: '<output-invoice-imported></output-invoice-imported>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊缂栬緫鐣岄潰 ++ $stateProvider.state('outputInvoiceManage.outputInvoiceEdit', { ++ url: "/outputInvoiceEdit", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'outputInvoiceEdit-view@outputInvoiceManage': { ++ template: '<output-invoice-edit></output-invoice-edit>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ //鍙戠エ绠$悊宸叉墦鍗癇D-USER鍙戠エ ++ $stateProvider.state('outputInvoiceManage.issuedInvoiceBdView', { ++ url: "/issuedInvoiceBdView", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'issuedInvoiceBd-view@outputInvoiceManage': { ++ template: '<issued-invoice-bd-view></issued-invoice-bd-view>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ $stateProvider.state('outputInvoiceManage.bdViewByVin', { ++ url: "/bdViewByVin", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'bdViewByVin-view@outputInvoiceManage': { ++ template: '<bd-view-by-vin></bd-view-by-vin>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //GD宸插紑鍏峰彂绁ㄧ壒娈婂鐞� ++ $stateProvider.state('outputInvoiceManage.issuedInvoiceSpecial', { ++ url: "/issuedInvoiceSpecial", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'issuedInvoiceSpecial-view@outputInvoiceManage': { ++ template: '<special-vat-invoice></special-vat-invoice>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ //GD宸插紑鍏峰彂绁ㄧ壒娈婂鐞� ++ $stateProvider.state('outputInvoiceManage.GDViewByVIN', { ++ url: "/GDViewByVIN", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'GDViewByVIN-view@outputInvoiceManage': { ++ template: '<gd-view-by-vin></gd-view-by-vin>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ $stateProvider.state('outputInvoiceManage.outputReconciliationOverview', { ++ url: "/outputReconciliationOverview", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'output-reconciliation-overview@outputInvoiceManage': { ++ template: '<output-reconciliation-overview></output-reconciliation-overview>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ $stateProvider.state('outputInvoiceManage.reconciliationRuleConfig', { ++ url: "/reconciliationRuleConfig", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'reconciliation-rule-config@outputInvoiceManage': { ++ template: '<reconciliation-rule-config></reconciliation-rule-config>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ $stateProvider.state('outputInvoiceManage.outputReconciliationConfiguration', { ++ url: "/outputReconciliationConfiguration", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'output-reconciliation-configuration@outputInvoiceManage': { ++ template: '<output-reconciliation-configuration></output-reconciliation-configuration>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ $stateProvider.state('outputInvoiceManage.taxControlDisk', { ++ url: "/taxControlDisk", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'tax-control-disk@outputInvoiceManage': { ++ template: '<tax-control-disk></tax-control-disk>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ////GD宸插紑鍏峰彂绁ㄨ鎯� ++ //$stateProvider.state('outputInvoiceManage.issuedInvoiceSpecialDetail', { ++ // url: "/issuedInvoiceSpecialDetail/{gdid}/{parentPage}", ++ // sticky: true, ++ // dsr: true, ++ // //params: { ++ // // GDID: null, ++ // // parentPage:null ++ // //}, ++ // views: { ++ // 'issuedInvoiceSpecialDetail-view@outputInvoiceManage': { ++ // controller: ['$scope', '$stateParams', 'appTranslation', ++ // function ($scope, $stateParams, appTranslation) { ++ // console.log($stateParams.gdid); ++ // $scope.gdInvoiceID = $stateParams.gdid; ++ // $scope.parentPage = $stateParams.parentPage; ++ // }], ++ // template: '<invoice-detail-vehicle></invoice-detail-vehicle>' ++ ++ // } ++ // }, ++ // resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ //}); ++ //鍙戠エ绠$悊宸叉墦鍗癎D-BD鍙戠エ ++ $stateProvider.state('outputInvoiceManage.issuedInvoiceGdView', { ++ url: "/issuedInvoiceGdView", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'issuedInvoiceGd-view@outputInvoiceManage': { ++ template: '<issued-invoice-gd-view></issued-invoice-gd-view>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ ++ //鍙戠エ绠$悊缂栬緫鐣岄潰 ++ $stateProvider.state('outputInvoiceManage.gdInvoicePrint', { ++ url: "/gdInvoicePrint", ++ sticky: false, ++ params: { "invoiceList": null }, ++ dsr: true, ++ views: { ++ 'gdInvoicePrint-view@outputInvoiceManage': { ++ template: '<gd-invoice-print></gd-invoice-print>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ ++ //鍙戠エ绠$悊缂栬緫鐣岄潰 ++ $stateProvider.state('outputInvoiceManage.importShipmentList', { ++ url: "/importShipmentList", ++ sticky: false, ++ dsr: true, ++ views: { ++ 'importShipment-view@outputInvoiceManage': { ++ template: '<import-shipment-list></import-shipment-list>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat) ++ }); ++ ++ }]); ++ ++var citModule = angular.module('app.cit', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngAnimate', 'ngSanitize', 'ui.bootstrap', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning']) ++ .run(['$log', function ($log) { ++ $log.debug('app.cit.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(citModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ uiSelectConfig.theme = 'select2'; ++ ++ $urlRouterProvider.when('/cit', '/cit/importData/balanceSheet'); ++ ++ $urlRouterProvider.when('/cit/importData', '/cit/importData/balanceSheet'); ++ ++ $urlRouterProvider.when('/cit/previewData', '/cit/previewData/balanceSheet'); ++ ++ $urlRouterProvider.when('/cit/reductionData', 'cit/reductionData/calculateData'); ++ ++ $urlRouterProvider.when('/cit/analyzeReport', 'cit/analyzeReport/citModelAnalysis'); ++ ++ $stateProvider.state({ ++ name: 'cit', ++ url: '/cit', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-layout></cit-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData', ++ url: '/importData', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-layout></cit-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ $stateProvider.state({ ++ name: 'cit.importData.balanceSheet', ++ url: '/balanceSheet', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-trial-balance></cit-import-trial-balance>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.assetList', ++ url: '/assetList', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-asset></cit-import-asset>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.journalEntry', ++ url: '/journalEntry', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-journal-entry></cit-import-journal-entry>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.erpData', ++ url: '/erpData', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-erp></cit-import-erp>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.outputInvoice', ++ url: '/outputInvoice', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-output-invoice></cit-import-output-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-income-invoice></cit-import-income-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.customInvoice', ++ url: '/customInvoice', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-custom-invoice></cit-import-custom-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.voucherMapping', ++ url: '/voucherMapping', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-voucher-mapping></cit-voucher-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.invoiceMapping', ++ url: '/invoiceMapping', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-invoice-mapping></cit-invoice-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.importData.auditAdjust', ++ url: '/auditAdjust', ++ views: { ++ '@cit.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-audit-adjust></cit-audit-adjust>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData', ++ url: '/previewData', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-layout></cit-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData.balanceSheet', ++ url: '/balanceSheet', ++ views: { ++ '@cit.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-preview-balance-sheet></cit-preview-balance-sheet>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData.accountVoucher', ++ url: '/accountVoucher', ++ views: { ++ '@cit.previewData': { ++ controller: [ ++ '$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ } ++ ], ++ template: '<cit-preview-account-voucher></cit-preview-account-voucher>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData.outputInvoice', ++ url: '/outputInvoice', ++ views: { ++ '@cit.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-preview-output-invoice></cit-preview-output-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@cit.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-preview-input-invoice></cit-preview-input-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.previewData.customInvoice', ++ url: '/customInvoice', ++ views: { ++ '@cit.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-preview-custom-invoice-sheet></cit-preview-custom-invoice-sheet>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.reductionData', ++ url: '/reductionData', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-layout></cit-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.reductionData.accountMapping', ++ url: '/accountMapping', ++ views: { ++ '@cit.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-account-mapping></cit-account-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ /*$stateProvider.state({ ++ name: 'cit.reductionData.goodsMapping', ++ url: '/goodsMapping', ++ views: { ++ '@cit.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-goods-mapping></cit-goods-mapping>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ });*/ ++ ++ $stateProvider.state({ ++ name: 'cit.reductionData.caculateData', ++ url: '/caculateData', ++ views: { ++ '@cit.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-caculate-data></cit-caculate-data>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.reductionData.inputInvoice', ++ url: '/inputInvoice', ++ views: { ++ '@cit.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<p>inputInvoice</p>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.reductionData.unbilledInvoice', ++ url: '/unbilledInvoice', ++ views: { ++ '@cit.reductionData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-unbilled-invoice></cit-unbilled-invoice>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ $stateProvider.state({ ++ name: 'cit.generateReport', ++ url: '/generateReport', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-report-layout></cit-report-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.generateReport.reportView', ++ url: '/reportView?{id:string}&{templateid:string}&{name:string}', ++ views: { ++ '@cit.generateReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ $scope.reportId = $stateParams.id; ++ $scope.templateId = $stateParams.templateid; ++ $scope.templateName = $stateParams.name; ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-report-view report-id="reportId" template-id="templateId" template-name="templateName"></cit-report-view>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.analyzeReport', ++ url: '/analyzeReport', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-import-layout></cit-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.analyzeReport.citModelAnalysis', ++ url: '/citModelAnalysis', ++ views: { ++ '@cit.analyzeReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-model-analysis></cit-model-analysis>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.analyzeReport.citIndexAnalysis', ++ url: '/citIndexAnalysis', ++ views: { ++ '@cit.analyzeReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<iframe id="dfiframe" src="/app/df/code/pages/citdashboard.html" scrolling="auto" height="100%" style="border:none" width="100%"></iframe>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'cit.analyzeReport.dataSummary', ++ url: '/dataSummary', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<cit-data-summary></cit-data-summary>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ /**********the end of a beautiful separated line for analyzeReport*********/ ++ ++ $stateProvider.state({ ++ name: 'cit.devGrid', ++ url: '/devGrid', ++ views: { ++ '@cit': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<dev-grid></dev-grid>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ ++ }]); +\ No newline at end of file +diff --git a/atms-web/src/main/webapp/app/module-part3.js b/atms-web/src/main/webapp/app/module-part3.js +new file mode 100644 +index 00000000..7fc0e660 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/module-part3.js +@@ -0,0 +1,428 @@ ++锘�//Common Bind Module Method ++var bindModule = function (thisModule, controllerProvider, compileProvider, filterProvider, provide) { ++ ++ thisModule.controller = controllerProvider.register; ++ thisModule.directive = compileProvider.directive; ++ thisModule.filter = filterProvider.register; ++ thisModule.factory = provide.factory; ++ thisModule.service = provide.service; ++ ++ return thisModule; ++}; ++ ++var assetsManageModule = angular.module('app.assetsManage', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning']) ++ .run(['$log', function ($log) { ++ $log.debug('app.assetsManage.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(assetsManageModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ uiSelectConfig.theme = 'select2'; ++ ++ $urlRouterProvider.when('/assetsManage', '/assetsManage/importData/productItem'); ++ ++ $urlRouterProvider.when('/assetsManage/importData', '/assetsManage/importData/productItem'); ++ ++ $urlRouterProvider.when('/assetsManage/previewData', '/assetsManage/previewData/productItem'); ++ ++ $urlRouterProvider.when('/assetsManage/productMix', '/assetsManage/productMix/productItem'); ++ ++ $stateProvider.state({ ++ name: 'assetsManage', ++ url: '/assetsManage', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-layout></assets-manage-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.importData', ++ url: '/importData', ++ views: { ++ '@assetsManage': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-import-layout></assets-manage-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.importData.productItem', ++ url: '/productItem', ++ views: { ++ '@assetsManage.importData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<product-item-import></product-item-import>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.previewData', ++ url: '/previewData', ++ views: { ++ '@assetsManage': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-import-layout></assets-manage-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.previewData.productItem', ++ url: '/productItem', ++ views: { ++ '@assetsManage.previewData': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<product-item-preview></product-item-preview>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.generateReport', ++ url: '/generateReport', ++ views: { ++ '@assetsManage': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-report-layout></assets-manage-report-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.productMix', ++ url: '/productMix', ++ views: { ++ '@assetsManage': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-import-layout></assets-manage-import-layout>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.productMix.productItem', ++ url: '/productMix', ++ views: { ++ '@assetsManage.productMix': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<product-item-mix></product-item-mix>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.generateReport.reportView', ++ url: '/reportView?{id:string}&{templateid:string}&{name:string}', ++ views: { ++ '@assetsManage.generateReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ $scope.reportId = $stateParams.id; ++ $scope.templateId = $stateParams.templateid; ++ $scope.templateName = $stateParams.name; ++ appTranslation.load([appTranslation.cit]); ++ }], ++ template: '<assets-manage-report-view report-id="reportId" template-id="templateId" template-name="templateName"></assets-manage-report-view>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'assetsManage.generateReport.reportViewCit', ++ url: '/reportViewCit?{id:string}&{templateid:string}&{name:string}', ++ views: { ++ '@assetsManage.generateReport': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ $scope.reportId = $stateParams.id; ++ $scope.templateId = $stateParams.templateid; ++ $scope.templateName = $stateParams.name; ++ appTranslation.load([appTranslation.cit]); ++ }] ++ //template: '<cit-report-view2 report-id="reportId" template-id="templateId" template-name="templateName"></cit-report-view2>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ }]); ++ ++var vatDashboardModule = angular.module('app.vatDashboard', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning']) ++ .run(['$log', function ($log) { ++ $log.debug('app.vatDashboard.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(vatDashboardModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ $stateProvider.state({ ++ name: 'summaryDashboard', ++ url: '/summaryDashboard', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<summary-dashboard></summary-dashboard>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'summaryDashboardConfig', ++ url: '/summaryDashboardConfig/{id}', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<summary-dashboard-config></summary-dashboard-config>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'reportAnalysisDashboardConfig', ++ url: '/reportAnalysisDashboardConfig/{id}', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<report-analysis-dashboard-config></report-analysis-dashboard-config>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'organizationDashboard', ++ url: '/organizationDashboard/{id}', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<organization-dashboard></organization-dashboard>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'analyzeOrganizeDashboard', ++ url: '/analyzeOrganizeDashboard/{id}', ++ views: { ++ '@vat.analyzeLayout': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<organization-dashboard></organization-dashboard>', ++ ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'analyzeOrganizeDashboardConfig', ++ url: '/analyzeOrganizeDashboardConfig/{id}', ++ views: { ++ '@vat.analyzeLayout': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<report-analysis-dashboard-config></report-analysis-dashboard-config>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ }]); ++ ++var vatDongfengModule = angular.module('app.vatDongfeng', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning']) ++ .run(['$log', function ($log) { ++ $log.debug('app.vatDongfeng.run()...'); ++ }]) ++ .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider', ++ function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) { ++ 'use strict'; ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(vatDongfengModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ $stateProvider.state({ ++ name: 'IncomeTax', ++ url: '/IncomeTax', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dongfeng-nav-bar type="1"></dongfeng-nav-bar>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'CashFlow', ++ url: '/CashFlow', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dongfeng-nav-bar type="2"></dongfeng-nav-bar>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'DataSummary', ++ url: '/DataSummary', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dongfeng-nav-bar type="3"></dongfeng-nav-bar>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'GlobalSearch', ++ url: '/GlobalSearch', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dongfeng-nav-bar type="4"></dongfeng-nav-bar>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ ++ $stateProvider.state({ ++ name: 'RiskPanel', ++ url: '/RiskPanel', ++ cache: false, ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.vat]); ++ }], ++ template: '<dongfeng-nav-bar type="5"></dongfeng-nav-bar>', ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ }]); +\ No newline at end of file +diff --git a/atms-web/src/main/webapp/app/module-part4.js b/atms-web/src/main/webapp/app/module-part4.js +new file mode 100644 +index 00000000..fbf23348 +--- /dev/null ++++ b/atms-web/src/main/webapp/app/module-part4.js +@@ -0,0 +1,31 @@ ++锘� ++var noPermissionPageModule = angular.module('app.noPermissionPage', []) ++ .run(['$log', function ($log) { ++ $log.debug('app.noPermissionPage.run()...'); ++ }]) ++ .config(['$controllerProvider', '$compileProvider', '$filterProvider', '$provide', 'scriptDependencyProvider', '$stateProvider', '$urlRouterProvider', ++ function ($controllerProvider, $compileProvider, $filterProvider, $provide, scriptDependencyProvider, $stateProvider, $urlRouterProvider) { ++ 'use strict'; ++ ++ ++ // this is required to add controller/directive/filter/service after angular bootstrap ++ bindModule(noPermissionPageModule, $controllerProvider, $compileProvider, $filterProvider, $provide); ++ ++ ++ $stateProvider.state({ ++ name: 'noPermissionPage', ++ url: '/noPermissionPage', ++ views: { ++ '@': { ++ controller: ['$scope', '$stateParams', 'appTranslation', ++ function ($scope, $stateParams, appTranslation) { ++ appTranslation.load([appTranslation.noPermissionPage]); ++ }], ++ template: '<no-permission-page></no-permission-page>' ++ } ++ }, ++ resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.noPermissionPage), ++ deepStateRedirect: true, ++ sticky: true ++ }); ++ }]); +\ No newline at end of file -- 2.18.0