web cleanup

This commit is contained in:
Donghuang 2022-06-24 00:16:47 +08:00
parent 87a3d72a33
commit decb2c133b
29 changed files with 132 additions and 128 deletions

1
.gitignore vendored
View File

@ -30,7 +30,6 @@
!.gitkeep !.gitkeep
*.iml *.iml
# ember-try # ember-try
.node_modules.ember-try/ .node_modules.ember-try/
bower.json.ember-try bower.json.ember-try

2
server/.gitignore vendored
View File

@ -7,4 +7,6 @@ target/
bin/ bin/
crm/src/main/resources/static/ crm/src/main/resources/static/
crm/src/main/resources/application.properties crm/src/main/resources/application.properties
crm/src/main/resources/application.yml
crm/src/main/resources/log4j2.xml crm/src/main/resources/log4j2.xml
crm/src/main/resources/logback.xml

View File

@ -69,6 +69,11 @@ public class ExportTaskServiceSupport
val exportFile = customerService.exportCSV(employeeKey); val exportFile = customerService.exportCSV(employeeKey);
val distDir = new File(new File(exportLocation), val distDir = new File(new File(exportLocation),
DateFormatUtils.format(now, "yyyyMMdd")); DateFormatUtils.format(now, "yyyyMMdd"));
if (!distDir.exists()) {
distDir.mkdirs();
}
FileUtils.moveFileToDirectory(exportFile, distDir, true); FileUtils.moveFileToDirectory(exportFile, distDir, true);
exportTask.setStatus(EnumExportTaskStatus.DONE); exportTask.setStatus(EnumExportTaskStatus.DONE);
exportTask.setLocation(new File(distDir, exportFile.getName()).getPath()); exportTask.setLocation(new File(distDir, exportFile.getName()).getPath());

View File

@ -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

View File

@ -32,6 +32,7 @@ file:
base-dir: /data/program/lemo-crm/files base-dir: /data/program/lemo-crm/files
base-path: http://116.62.189.211/f/ base-path: http://116.62.189.211/f/
tigon:
shiro: shiro:
session: session:
timeout: 21600000 timeout: 21600000

View File

@ -1,18 +1,47 @@
server:
port: 8100
spring:
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: datasource:
database-name: ambition_crm database-name: ambition_crm
host: 127.0.0.1 host: 127.0.0.1
password: 696@2^~)oZ@^#*Q password: 696@2^~)oZ@^#*Q
port: 3306 port: 3306
username: root username: root
server:
port: 80 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: shiro:
session: session:
timeout: 21600000
validation: validation:
scheduler: scheduler:
enabled: true enabled: true
spring: filter-chain: >
http: /auth/login=anon
multipart: /=anon
max-file-size: 1024MB /index.html=anon
max-request-size: 1024MB /assets/**=anon
/f/**=anon
/**=user

View File

@ -409,11 +409,11 @@
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
<filtering>false</filtering> <filtering>false</filtering>
<excludes> <excludes>
<exclude>config_*.properties</exclude> <exclude>application*.properties</exclude>
<exclude>application_*.properties</exclude> <exclude>application*.yaml</exclude>
<exclude>application_*.yaml</exclude> <exclude>application*.yml</exclude>
<exclude>application_*.yml</exclude> <exclude>log4j2*.xml</exclude>
<exclude>log4j2_*.xml</exclude> <exclude>logback*.xml</exclude>
</excludes> </excludes>
</resource> </resource>
<resource> <resource>
@ -425,11 +425,11 @@
<include>**/*.txt</include> <include>**/*.txt</include>
</includes> </includes>
<excludes> <excludes>
<exclude>config_*.properties</exclude> <exclude>application*.properties</exclude>
<exclude>application_*.properties</exclude> <exclude>application*.yaml</exclude>
<exclude>application_*.yaml</exclude> <exclude>application*.yml</exclude>
<exclude>application_*.yml</exclude> <exclude>log4j2*.xml</exclude>
<exclude>log4j2_*.xml</exclude> <exclude>logback*.xml</exclude>
</excludes> </excludes>
</resource> </resource>
</resources> </resources>

View File

@ -1,5 +1,5 @@
import Ember from 'ember'; import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
classNames: ['checkbox'] classNames: ['checkbox']
}); });

View File

@ -1,7 +1,7 @@
import Ember from 'ember'; import Component from '@ember/component';
import $ from 'jquery'; import $ from 'jquery';
export default Ember.Component.extend({ export default Component.extend({
classNames: ['container-fluid'], classNames: ['container-fluid'],
errors: {}, errors: {},
model: { model: {

View File

@ -1,7 +1,7 @@
import Ember from 'ember'; import Component from '@ember/component';
import { alias } from '@ember/object/computed'; import { alias } from '@ember/object/computed';
export default Ember.Component.extend({ export default Component.extend({
tagName: 'span', tagName: 'span',
value: alias('model'), value: alias('model'),
format: 'YYYY-MM-DD H:mm:ss' format: 'YYYY-MM-DD H:mm:ss'

View File

@ -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'] classNames: ['page-content']
}); });

View File

@ -1,5 +1,5 @@
import Ember from 'ember'; import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
tagName: 'span' tagName: 'span'
}); });

View File

@ -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'], classNames: ['widget-header'],
dropdownMenu: true, dropdownMenu: true,
'search-box': true 'search-box': true

View File

@ -1,7 +1,8 @@
import Ember from 'ember'; import Ember from 'ember';
import Component from '@ember/component';
import $ from 'jquery'; import $ from 'jquery';
export default Ember.Component.extend({ export default Component.extend({
classNames: ['page-content', 'no-padding', 'desktop'], classNames: ['page-content', 'no-padding', 'desktop'],
init() { init() {
let me = this; let me = this;

View File

@ -1,6 +1,7 @@
import Ember from 'ember'; import Ember from 'ember';
import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
step: 1, step: 1,
value: 0, value: 0,
classNames: ['ace-spinner', 'middle'], classNames: ['ace-spinner', 'middle'],

View File

@ -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'] classNames: ['page-content']
}); });

View File

@ -1,4 +1,4 @@
import Ember from 'ember'; import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
}); });

View File

@ -1,4 +1,4 @@
import Ember from 'ember'; import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
}); });

View File

@ -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'], classNames: ['form-group'],
optionsKeyMapping: { optionsKeyMapping: {
dateAdded: 'model.dateAddedList', dateAdded: 'model.dateAddedList',
@ -12,7 +13,7 @@ export default Ember.Component.extend({
salesperson: 'model.salespersonList', salesperson: 'model.salespersonList',
status: 'model.statusList' status: 'model.statusList'
}, },
valOptions: Ember.computed('criterion.col', function() { valOptions: computed('criterion.col', function() {
let me = this; let me = this;
let optionsKey = me.get('optionsKeyMapping.' + me.get('criterion.col')); let optionsKey = me.get('optionsKeyMapping.' + me.get('criterion.col'));
optionsKey && me.set('criterion.val', ''); optionsKey && me.set('criterion.val', '');

View File

@ -1,6 +1,6 @@
import Ember from 'ember'; import Component from '@ember/component';
export default Ember.Component.extend({ export default Component.extend({
tagName: 'li', tagName: 'li',
classNames: ['clearfix'], classNames: ['clearfix'],
classNameBindings: ['selected:selected'], classNameBindings: ['selected:selected'],

View File

@ -1,7 +1,8 @@
import Ember from 'ember'; import { computed } from '@ember/object'
import Component from '@ember/component';
const WeekGoalCompletionRateComponent = Ember.Component.extend({ const WeekGoalCompletionRateComponent = Component.extend({
rate: Ember.computed('goal', 'goal.goal', 'goal.done', function() { rate: computed('goal', 'goal.goal', 'goal.done', function() {
let me = this; let me = this;
let goal = me.get('goal.goal'); let goal = me.get('goal.goal');
let done = me.get('goal.done'); let done = me.get('goal.done');

View File

@ -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: '', tagName: '',
'completed-icon': true, 'completed-icon': true,
'timeout-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; let me = this;
return me.get('goal.goal') > 0 && me.get('goal.goal') == me.get('goal.done'); 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 me = this;
let goal = me.get('goal.goal'); let goal = me.get('goal.goal');
let done = me.get('goal.done'); let done = me.get('goal.done');

View File

@ -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: '', tagName: '',
goals: [], 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; let me = this;
return me.get('goal') > 0 && me.get('goal') == me.get('done'); 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); 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); 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 me = this;
let goal = me.get('goal'); let goal = me.get('goal');
let done = me.get('done'); let done = me.get('done');

View File

@ -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: '', 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); return this.get('goals').mapBy('done').reduce((pv, g) => pv + parseInt(g), 0);
}) })
}); });

View File

@ -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: '', 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); return this.get('goals').mapBy('goal').reduce((pv, g) => pv + parseInt(g), 0);
}) })
}); });

View File

@ -1,4 +1,4 @@
import Ember from 'ember'; import Component from '@ember/component';
import $ from 'jquery'; import $ from 'jquery';
export function initialize(/* appInstance */) { export function initialize(/* appInstance */) {
$(function() { $(function() {
@ -6,7 +6,7 @@ export function initialize(/* appInstance */) {
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><pre class="tooltip-inner"></pre></div>'; '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><pre class="tooltip-inner"></pre></div>';
}); });
Ember.Component.reopen({ Component.reopen({
didInsertElement() { didInsertElement() {
let me = this; let me = this;
me._super(...arguments); me._super(...arguments);
@ -29,7 +29,7 @@ export function initialize(/* appInstance */) {
$('[data-rel=tooltip]', me.element).tooltip(); $('[data-rel=tooltip]', me.element).tooltip();
} }
catch(e) { catch(e) {
Ember.Logger.warn('Init tooltip error caused', e); console.warn('Init tooltip error caused', e);
} }
} }
} }

View File

@ -1,4 +1,3 @@
import Ember from 'ember';
import BaseService from '../service'; import BaseService from '../service';
export default BaseService.extend({ export default BaseService.extend({

View File

@ -17,6 +17,9 @@
<th> <th>
File Downloaded File Downloaded
</th> </th>
<th>
Note
</th>
<th style="min-width: 106px;"> <th style="min-width: 106px;">
<i class="ace-icon fa fa-cogs bigger-110"></i> <i class="ace-icon fa fa-cogs bigger-110"></i>
Actions Actions
@ -46,12 +49,17 @@
</span> </span>
{{/if}} {{/if}}
</td> </td>
<td>
{{it.note}}
</td>
<td> <td>
<div class="btn-group"> <div class="btn-group">
{{#if (eq it.status 'DONE')}}
<a {{on 'click' (route-action 'download' it)}} target="_blank" href="/export-task/download?id={{it.id}}" class="btn btn-xs btn-info" data-rel="tooltip" title="Download"> <a {{on 'click' (route-action 'download' it)}} target="_blank" href="/export-task/download?id={{it.id}}" class="btn btn-xs btn-info" data-rel="tooltip" title="Download">
<i class="ace-icon fa fa-download bigger-120"></i> <i class="ace-icon fa fa-download bigger-120"></i>
Download Download
</a> </a>
{{/if}}
</div> </div>
</td> </td>
</tr> </tr>

View File

@ -16,7 +16,6 @@
"author": "Shaun Chyxion", "author": "Shaun Chyxion",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@ember/jquery": "1.1.0",
"@ember/optional-features": "^1.3.0", "@ember/optional-features": "^1.3.0",
"@ember/test-helpers": "^2.8.1", "@ember/test-helpers": "^2.8.1",
"bootbox": "5.1.3", "bootbox": "5.1.3",