diff --git a/.gitignore b/.gitignore
index b64bbcf..dfa99d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,7 +30,6 @@
!.gitkeep
*.iml
-
# ember-try
.node_modules.ember-try/
bower.json.ember-try
diff --git a/server/.gitignore b/server/.gitignore
index 9c192f2..d769958 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -7,4 +7,6 @@ target/
bin/
crm/src/main/resources/static/
crm/src/main/resources/application.properties
+crm/src/main/resources/application.yml
crm/src/main/resources/log4j2.xml
+crm/src/main/resources/logback.xml
diff --git a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java
index 2d435e3..63c8705 100644
--- a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java
+++ b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java
@@ -69,6 +69,11 @@ public class ExportTaskServiceSupport
val exportFile = customerService.exportCSV(employeeKey);
val distDir = new File(new File(exportLocation),
DateFormatUtils.format(now, "yyyyMMdd"));
+
+ if (!distDir.exists()) {
+ distDir.mkdirs();
+ }
+
FileUtils.moveFileToDirectory(exportFile, distDir, true);
exportTask.setStatus(EnumExportTaskStatus.DONE);
exportTask.setLocation(new File(distDir, exportFile.getName()).getPath());
diff --git a/server/crm/src/main/resources/application.yml b/server/crm/src/main/resources/application.yml
deleted file mode 100644
index 5f428ab..0000000
--- a/server/crm/src/main/resources/application.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-server:
- port: 8088
-
-spring:
- jackson:
- default-property-inclusion: NON_NULL
- time-zone: GMT+8
- serialization:
- write-dates-as-timestamps: true
- fail-on-empty-beans: false
- servlet:
- multipart:
- max-file-size: 512MB
- max-request-size: 512MB
-
-datasource:
- database-name: ambition-crm
- host: 172.16.4.6
- password: MySQL2b||!2b
- port: 3306
- username: root
-
-database:
- backup-dir: d:/data/database_backups
- restore-shell: /data/program/mysql-backup/bin/mysql_restore.sh
-
-file:
- base-dir: /Users/donghuang/Documents/Workspaces/ambition-crm/files/
- base-path: http://127.0.0.1:1217/lm-f/
-
-export:
- location: d:/data/export
-
-tigon:
- shiro:
- session:
- validation:
- scheduler:
- enabled: true
- filter-chain: >
- /auth/login=anon
- /=anon
- /index.html=anon
- /assets/**=anon
- /f/**=anon
- /**=user
diff --git a/server/crm/src/main/resources/application_prod.yml b/server/crm/src/main/resources/application_prod.yml
index 4a2a995..c92a72d 100644
--- a/server/crm/src/main/resources/application_prod.yml
+++ b/server/crm/src/main/resources/application_prod.yml
@@ -32,12 +32,13 @@ file:
base-dir: /data/program/lemo-crm/files
base-path: http://116.62.189.211/f/
-shiro:
- session:
- timeout: 21600000
- validation:
- scheduler:
- enabled: true
+tigon:
+ shiro:
+ session:
+ timeout: 21600000
+ validation:
+ scheduler:
+ enabled: true
filter-chain: >
/auth/login=anon
/=anon
diff --git a/server/crm/src/main/resources/application_test.yml b/server/crm/src/main/resources/application_test.yml
index 511bdbc..4a2a995 100644
--- a/server/crm/src/main/resources/application_test.yml
+++ b/server/crm/src/main/resources/application_test.yml
@@ -1,18 +1,47 @@
-datasource:
- database-name: ambition_crm
- host: 127.0.0.1
- password: 696@2^~)oZ@^#*Q
- port: 3306
- username: root
server:
- port: 80
-shiro:
- session:
- validation:
- scheduler:
- enabled: true
+ port: 8100
+
spring:
- http:
- multipart:
- max-file-size: 1024MB
- max-request-size: 1024MB
+ http:
+ multipart:
+ max-file-size: 1024MB
+ max-request-size: 1024MB
+ jackson:
+ default-property-inclusion: NON_NULL
+ time-zone: GMT+8
+ serialization:
+ write-dates-as-timestamps: true
+ fail-on-empty-beans: false
+ servlet:
+ multipart:
+ max-file-size: 1024MB
+ max-request-size: 1024MB
+
+datasource:
+ database-name: ambition_crm
+ host: 127.0.0.1
+ password: 696@2^~)oZ@^#*Q
+ port: 3306
+ username: root
+
+database:
+ backup-dir: /data/program/mysql-backup/backup/ambition_crm
+ restore-shell: /data/program/mysql-backup/bin/mysql-restore.sh
+
+file:
+ base-dir: /data/program/lemo-crm/files
+ base-path: http://116.62.189.211/f/
+
+shiro:
+ session:
+ timeout: 21600000
+ validation:
+ scheduler:
+ enabled: true
+ filter-chain: >
+ /auth/login=anon
+ /=anon
+ /index.html=anon
+ /assets/**=anon
+ /f/**=anon
+ /**=user
diff --git a/server/pom.xml b/server/pom.xml
index 84f3f82..de9aabd 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -409,11 +409,11 @@
src/main/resources
false
- config_*.properties
- application_*.properties
- application_*.yaml
- application_*.yml
- log4j2_*.xml
+ application*.properties
+ application*.yaml
+ application*.yml
+ log4j2*.xml
+ logback*.xml
@@ -425,11 +425,11 @@
**/*.txt
- config_*.properties
- application_*.properties
- application_*.yaml
- application_*.yml
- log4j2_*.xml
+ application*.properties
+ application*.yaml
+ application*.yml
+ log4j2*.xml
+ logback*.xml
diff --git a/web/app/components/ace-checkbox.js b/web/app/components/ace-checkbox.js
index 85f92e8..a1ba0c8 100644
--- a/web/app/components/ace-checkbox.js
+++ b/web/app/components/ace-checkbox.js
@@ -1,5 +1,5 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['checkbox']
});
diff --git a/web/app/components/ace-login.js b/web/app/components/ace-login.js
index d4f034a..3097032 100644
--- a/web/app/components/ace-login.js
+++ b/web/app/components/ace-login.js
@@ -1,7 +1,7 @@
-import Ember from 'ember';
+import Component from '@ember/component';
import $ from 'jquery';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['container-fluid'],
errors: {},
model: {
diff --git a/web/app/components/date-cell.js b/web/app/components/date-cell.js
index 2d42fb6..ea3b1db 100644
--- a/web/app/components/date-cell.js
+++ b/web/app/components/date-cell.js
@@ -1,7 +1,7 @@
-import Ember from 'ember';
+import Component from '@ember/component';
import { alias } from '@ember/object/computed';
-export default Ember.Component.extend({
+export default Component.extend({
tagName: 'span',
value: alias('model'),
format: 'YYYY-MM-DD H:mm:ss'
diff --git a/web/app/components/form-content.js b/web/app/components/form-content.js
index 7b9fd51..083ebb1 100644
--- a/web/app/components/form-content.js
+++ b/web/app/components/form-content.js
@@ -1,5 +1,5 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['page-content']
});
diff --git a/web/app/components/gender-cell.js b/web/app/components/gender-cell.js
index e815f7a..4b22da0 100644
--- a/web/app/components/gender-cell.js
+++ b/web/app/components/gender-cell.js
@@ -1,5 +1,5 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
tagName: 'span'
});
diff --git a/web/app/components/grid-header.js b/web/app/components/grid-header.js
index 19bc333..6bcc8ce 100644
--- a/web/app/components/grid-header.js
+++ b/web/app/components/grid-header.js
@@ -1,6 +1,6 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['widget-header'],
dropdownMenu: true,
'search-box': true
diff --git a/web/app/components/home-board.js b/web/app/components/home-board.js
index 33f867b..83ce237 100644
--- a/web/app/components/home-board.js
+++ b/web/app/components/home-board.js
@@ -1,7 +1,8 @@
import Ember from 'ember';
+import Component from '@ember/component';
import $ from 'jquery';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['page-content', 'no-padding', 'desktop'],
init() {
let me = this;
diff --git a/web/app/components/input-spinner.js b/web/app/components/input-spinner.js
index 09b4712..a49564d 100644
--- a/web/app/components/input-spinner.js
+++ b/web/app/components/input-spinner.js
@@ -1,6 +1,7 @@
import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
step: 1,
value: 0,
classNames: ['ace-spinner', 'middle'],
diff --git a/web/app/components/main-content.js b/web/app/components/main-content.js
index 7b9fd51..083ebb1 100644
--- a/web/app/components/main-content.js
+++ b/web/app/components/main-content.js
@@ -1,5 +1,5 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['page-content']
});
diff --git a/web/app/components/modal-list-select.js b/web/app/components/modal-list-select.js
index 926b613..bb93d73 100644
--- a/web/app/components/modal-list-select.js
+++ b/web/app/components/modal-list-select.js
@@ -1,4 +1,4 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
});
diff --git a/web/app/components/nav-list.js b/web/app/components/nav-list.js
index 926b613..bb93d73 100644
--- a/web/app/components/nav-list.js
+++ b/web/app/components/nav-list.js
@@ -1,4 +1,4 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
});
diff --git a/web/app/components/query-criterion.js b/web/app/components/query-criterion.js
index 674da41..3423d8b 100644
--- a/web/app/components/query-criterion.js
+++ b/web/app/components/query-criterion.js
@@ -1,6 +1,7 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
classNames: ['form-group'],
optionsKeyMapping: {
dateAdded: 'model.dateAddedList',
@@ -12,7 +13,7 @@ export default Ember.Component.extend({
salesperson: 'model.salespersonList',
status: 'model.statusList'
},
- valOptions: Ember.computed('criterion.col', function() {
+ valOptions: computed('criterion.col', function() {
let me = this;
let optionsKey = me.get('optionsKeyMapping.' + me.get('criterion.col'));
optionsKey && me.set('criterion.val', '');
diff --git a/web/app/components/sortable-list-item.js b/web/app/components/sortable-list-item.js
index 2679646..344f340 100644
--- a/web/app/components/sortable-list-item.js
+++ b/web/app/components/sortable-list-item.js
@@ -1,6 +1,6 @@
-import Ember from 'ember';
+import Component from '@ember/component';
-export default Ember.Component.extend({
+export default Component.extend({
tagName: 'li',
classNames: ['clearfix'],
classNameBindings: ['selected:selected'],
diff --git a/web/app/components/week-goal-completion-rate.js b/web/app/components/week-goal-completion-rate.js
index e359741..b2eed37 100644
--- a/web/app/components/week-goal-completion-rate.js
+++ b/web/app/components/week-goal-completion-rate.js
@@ -1,7 +1,8 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-const WeekGoalCompletionRateComponent = Ember.Component.extend({
- rate: Ember.computed('goal', 'goal.goal', 'goal.done', function() {
+const WeekGoalCompletionRateComponent = Component.extend({
+ rate: computed('goal', 'goal.goal', 'goal.done', function() {
let me = this;
let goal = me.get('goal.goal');
let done = me.get('goal.done');
diff --git a/web/app/components/week-goal/completion-rate.js b/web/app/components/week-goal/completion-rate.js
index 28e0551..205cb58 100644
--- a/web/app/components/week-goal/completion-rate.js
+++ b/web/app/components/week-goal/completion-rate.js
@@ -1,14 +1,15 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-const WeekGoalCompletionRateComponent = Ember.Component.extend({
+const WeekGoalCompletionRateComponent = Component.extend({
tagName: '',
'completed-icon': true,
'timeout-icon': true,
- completed: Ember.computed('goal', 'goal.goal', 'goal.done', function() {
+ completed: computed('goal', 'goal.goal', 'goal.done', function() {
let me = this;
return me.get('goal.goal') > 0 && me.get('goal.goal') == me.get('goal.done');
}),
- rate: Ember.computed('goal', 'goal.goal', 'goal.done', function() {
+ rate: computed('goal', 'goal.goal', 'goal.done', function() {
let me = this;
let goal = me.get('goal.goal');
let done = me.get('goal.done');
diff --git a/web/app/components/week-goal/total-completion-rate.js b/web/app/components/week-goal/total-completion-rate.js
index 3945373..a374808 100644
--- a/web/app/components/week-goal/total-completion-rate.js
+++ b/web/app/components/week-goal/total-completion-rate.js
@@ -1,19 +1,20 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-const WeekGoalTotalCompletionRateComponent = Ember.Component.extend({
+const WeekGoalTotalCompletionRateComponent = Component.extend({
tagName: '',
goals: [],
- completed: Ember.computed('goals', 'goals.@each.goal', 'goals.@each.done', function() {
+ completed: computed('goals', 'goals.@each.goal', 'goals.@each.done', function() {
let me = this;
return me.get('goal') > 0 && me.get('goal') == me.get('done');
}),
- goal: Ember.computed('goals.@each.goal', function() {
+ goal: computed('goals.@each.goal', function() {
return this.get('goals').map(it => it.goal).reduce((pv, g) => pv + parseInt(g), 0);
}),
- done: Ember.computed('goals.@each.done', function() {
+ done: computed('goals.@each.done', function() {
return this.get('goals').map(it => it.done).reduce((pv, g) => pv + parseInt(g), 0);
}),
- totalRate: Ember.computed('goal', 'done', function() {
+ totalRate: computed('goal', 'done', function() {
let me = this;
let goal = me.get('goal');
let done = me.get('done');
diff --git a/web/app/components/week-goal/total-done.js b/web/app/components/week-goal/total-done.js
index 09a54db..d2b87fe 100644
--- a/web/app/components/week-goal/total-done.js
+++ b/web/app/components/week-goal/total-done.js
@@ -1,8 +1,9 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-const WeekGoalTotalGoalComponent = Ember.Component.extend({
+const WeekGoalTotalGoalComponent = Component.extend({
tagName: '',
- totalDone: Ember.computed('goals.@each.done', function() {
+ totalDone: computed('goals.@each.done', function() {
return this.get('goals').mapBy('done').reduce((pv, g) => pv + parseInt(g), 0);
})
});
diff --git a/web/app/components/week-goal/total-goal.js b/web/app/components/week-goal/total-goal.js
index e7dd268..265f50e 100644
--- a/web/app/components/week-goal/total-goal.js
+++ b/web/app/components/week-goal/total-goal.js
@@ -1,8 +1,9 @@
-import Ember from 'ember';
+import { computed } from '@ember/object'
+import Component from '@ember/component';
-const WeekGoalTotalGoalComponent = Ember.Component.extend({
+const WeekGoalTotalGoalComponent = Component.extend({
tagName: '',
- totalGoal: Ember.computed('goals.@each.goal', function() {
+ totalGoal: computed('goals.@each.goal', function() {
return this.get('goals').mapBy('goal').reduce((pv, g) => pv + parseInt(g), 0);
})
});
diff --git a/web/app/instance-initializers/tooltip.js b/web/app/instance-initializers/tooltip.js
index 4276251..727b843 100644
--- a/web/app/instance-initializers/tooltip.js
+++ b/web/app/instance-initializers/tooltip.js
@@ -1,4 +1,4 @@
-import Ember from 'ember';
+import Component from '@ember/component';
import $ from 'jquery';
export function initialize(/* appInstance */) {
$(function() {
@@ -6,7 +6,7 @@ export function initialize(/* appInstance */) {
'
';
});
- Ember.Component.reopen({
+ Component.reopen({
didInsertElement() {
let me = this;
me._super(...arguments);
@@ -29,7 +29,7 @@ export function initialize(/* appInstance */) {
$('[data-rel=tooltip]', me.element).tooltip();
}
catch(e) {
- Ember.Logger.warn('Init tooltip error caused', e);
+ console.warn('Init tooltip error caused', e);
}
}
}
diff --git a/web/app/services/week-goal/service.js b/web/app/services/week-goal/service.js
index b147ca6..ca16d4e 100644
--- a/web/app/services/week-goal/service.js
+++ b/web/app/services/week-goal/service.js
@@ -1,4 +1,3 @@
-import Ember from 'ember';
import BaseService from '../service';
export default BaseService.extend({
diff --git a/web/app/templates/export-task/list.hbs b/web/app/templates/export-task/list.hbs
index ad0fe99..4602d6d 100644
--- a/web/app/templates/export-task/list.hbs
+++ b/web/app/templates/export-task/list.hbs
@@ -17,6 +17,9 @@
File Downloaded
|
+
+ Note
+ |
Actions
@@ -46,12 +49,17 @@
{{/if}}
+ |
+ {{it.note}}
+ |
+ {{#if (eq it.status 'DONE')}}
Download
+ {{/if}}
|
diff --git a/web/package.json b/web/package.json
index 049810c..b7ec519 100644
--- a/web/package.json
+++ b/web/package.json
@@ -16,7 +16,6 @@
"author": "Shaun Chyxion",
"license": "MIT",
"devDependencies": {
- "@ember/jquery": "1.1.0",
"@ember/optional-features": "^1.3.0",
"@ember/test-helpers": "^2.8.1",
"bootbox": "5.1.3",