@simitgroup/simpleapp-generator 2.0.0-k-alpha → 2.0.0-m-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReleaseNote.md +9 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +3 -1
- package/dist/generate.js.map +1 -1
- package/package.json +1 -1
- package/src/generate.ts +3 -1
- package/templates/basic/nest/controller.ts.eta +1 -1
- package/templates/basic/nest/service.ts.eta +3 -3
- package/templates/nest/src/simple-app/_core/features/auto-increament/auto-increament.service.ts.eta +1 -2
- package/templates/nest/src/simple-app/_core/features/cron/cron-system/cron-system.service.ts.eta +2 -2
- package/templates/nest/src/simple-app/_core/features/event/event.type.ts.eta +6 -0
- package/templates/nest/src/simple-app/_core/features/event/interface/event-after-patch.interface.ts.eta +5 -0
- package/templates/nest/src/simple-app/_core/features/event/interface/event-before-patch.interface.ts.eta +5 -0
- package/templates/nest/src/simple-app/_core/features/log/log.controller.ts.eta +3 -3
- package/templates/nest/src/simple-app/_core/features/maintenance/maintenance.controller.ts.eta +6 -6
- package/templates/nest/src/simple-app/_core/features/profile/profile.controller.ts.eta +5 -4
- package/templates/nest/src/simple-app/_core/features/profile/profile.service.ts.eta +21 -22
- package/templates/nest/src/simple-app/_core/features/queue/queue-user-context/queue-user-context.service.ts.eta +2 -2
- package/templates/nest/src/simple-app/_core/features/user-context/user.context.ts.eta +17 -5
- package/templates/nest/src/simple-app/_core/framework/base/simple-app.service.ts.eta +18 -18
- package/templates/nest/src/simple-app/_core/framework/generator-version.ts.eta +1 -0
- package/templates/nest/src/simple-app/apis/additional-api.module.ts._eta +17 -0
- package/templates/nest/src/simple-app/apis/resource-api.module.ts.eta +2 -1
- package/templates/nest/src/simple-app/events/branch-event/branch-event.service.ts._eta +7 -7
- package/templates/nest/src/simple-app/events/organization-event/organization-event.service.ts._eta +5 -5
- package/templates/nest/src/simple-app/events/permission-event/permission-event.service.ts.eta +1 -1
- package/templates/nest/src/simple-app/events/tenant-event/tenant-event.service.ts_eta +3 -3
- package/templates/nuxt/app.vue.eta +7 -3
- package/templates/nuxt/components/image/ImageOrganization.vue._eta +39 -34
- package/templates/nuxt/composables/goTo.generate.ts.eta +56 -42
- package/templates/nuxt/composables/roles.generate.ts.eta +6 -6
- package/templates/nuxt/composables/stringHelper.generate.ts.eta +1 -1
- package/templates/nuxt/plugins/19.simpleapp-mini-app-store.ts.eta +18 -13
- package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +44 -35
- package/templates/nuxt/server/api/profile/[...].ts.eta +1 -1
- package/templates/nuxt/simpleapp/generate/commons/generator-version.ts.eta +1 -0
- package/templates/nuxt/simpleapp/generate/features/miniApp/app/components/MiniAppRestrictedWarning.vue.eta +1 -1
- package/templates/nuxt/simpleapp/generate/features/miniApp/app/components/integration/MiniAppIntegrationItem.vue.eta +1 -1
- package/templates/nuxt/simpleapp/generate/features/miniApp/app/components/integration/MiniAppIntegrationItemBadge.vue.eta +1 -1
- package/templates/nuxt/simpleapp/generate/features/miniApp/bridge/services/bridge.service.ts.eta +7 -2
- package/templates/nuxt/simpleapp/generate/features/miniApp/bridge/types/bridge.type.ts.eta +2 -0
- package/templates/nest/src/simple-app/_core/utils/encryption.static.ts.eta +0 -73
|
@@ -63,7 +63,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
63
63
|
protected withDocNumberFormat = false;
|
|
64
64
|
protected foreignkeys = {};
|
|
65
65
|
private eventEmitter: EventEmitter2;
|
|
66
|
-
private
|
|
66
|
+
private logService: SimpleAppLogService;
|
|
67
67
|
// protected userprovider = new UserContext() ;
|
|
68
68
|
|
|
69
69
|
constructor(
|
|
@@ -73,7 +73,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
73
73
|
isolationtype: IsolationType = IsolationType.org,
|
|
74
74
|
eventEmitter: EventEmitter2,
|
|
75
75
|
docnogenerator: SimpleAppDocumentNoFormatService,
|
|
76
|
-
|
|
76
|
+
logService: SimpleAppLogService,
|
|
77
77
|
runWebHook: RunWebhookService,
|
|
78
78
|
) {
|
|
79
79
|
// console.log("-------init simpleapp service abstract class -------userprovider=",typeof this.userprovider)
|
|
@@ -83,7 +83,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
83
83
|
this.doc = newdoc;
|
|
84
84
|
this.docnogenerator = docnogenerator;
|
|
85
85
|
this.isolationtype = isolationtype;
|
|
86
|
-
this.
|
|
86
|
+
this.logService = logService;
|
|
87
87
|
this.runWebHook = runWebHook;
|
|
88
88
|
// this.tenantdoc = tenantdoc
|
|
89
89
|
}
|
|
@@ -479,16 +479,14 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
479
479
|
if (dbsession && !dbsession.inTransaction()) {
|
|
480
480
|
dbsession.startTransaction({ readPreference: 'primary' });
|
|
481
481
|
}
|
|
482
|
-
|
|
483
|
-
try{
|
|
482
|
+
|
|
483
|
+
try {
|
|
484
484
|
const result = await this.doc.insertMany(datas, { session: dbsession });
|
|
485
|
-
await this.addManyAuditEvents(appuser, this.documentName, 'createMany', datas);
|
|
485
|
+
await this.addManyAuditEvents(appuser, this.documentName, 'createMany', datas);
|
|
486
486
|
return result;
|
|
487
|
-
}catch(e){
|
|
488
|
-
throw e
|
|
487
|
+
} catch (e) {
|
|
488
|
+
throw e;
|
|
489
489
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
490
|
} else {
|
|
493
491
|
throw new BadRequestException(this.getDocumentType() + ': create many only support array');
|
|
494
492
|
}
|
|
@@ -600,7 +598,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
600
598
|
appuser.addInsertedRecordId(this.documentName, result._id);
|
|
601
599
|
} catch (err) {
|
|
602
600
|
this.logger.error(err);
|
|
603
|
-
throw err
|
|
601
|
+
throw err;
|
|
604
602
|
}
|
|
605
603
|
|
|
606
604
|
try {
|
|
@@ -786,7 +784,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
786
784
|
await this.identifyForeignKeys(appuser, data);
|
|
787
785
|
|
|
788
786
|
//new way of hook
|
|
789
|
-
await this.runEvent(appuser,
|
|
787
|
+
await this.runEvent(appuser, this.setHookName('beforeUpdate'), { id: id, prevData: existingdata, newData: data }, false);
|
|
790
788
|
|
|
791
789
|
// if (this.hooks.beforeUpdate) await this.hooks.beforeUpdate(appuser, id, existingdata, data);
|
|
792
790
|
|
|
@@ -845,7 +843,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
845
843
|
|
|
846
844
|
await this.identifyForeignKeys(appuser, data);
|
|
847
845
|
|
|
848
|
-
await this.runEvent(appuser,
|
|
846
|
+
await this.runEvent(appuser, this.setHookName('beforeUpdate'), { data: data }, false);
|
|
849
847
|
|
|
850
848
|
// if (this.hooks.beforeUpdate) await this.hooks.beforeUpdate(appuser, id, existingdata, data);
|
|
851
849
|
|
|
@@ -904,7 +902,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
904
902
|
|
|
905
903
|
//patch not suitable trigger afterupdate
|
|
906
904
|
// if (this.hooks.beforeUpdate) await this.hooks.beforeUpdate(appuser, id, existingdata, data);
|
|
907
|
-
|
|
905
|
+
await this.runEvent(appuser, this.setHookName('beforePatch'), { id: id, patchData: data,prevData:existingdata }, false);
|
|
908
906
|
const dbsession = appuser.getDBSession();
|
|
909
907
|
if (dbsession && !dbsession.inTransaction()) {
|
|
910
908
|
dbsession.startTransaction({ readPreference: 'primary' });
|
|
@@ -937,7 +935,7 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
937
935
|
await this.addAuditEvent(appuser, this.documentName, id, 'patch', data);
|
|
938
936
|
}
|
|
939
937
|
appuser.addUpdatedRecordId(this.documentName, data._id);
|
|
940
|
-
|
|
938
|
+
await this.runEvent(appuser, this.setHookName('afterPatch'), { id: id, patchData: data, prevData:existingdata }, false);
|
|
941
939
|
return result; //await this.findById(appuser, id);
|
|
942
940
|
} catch (err) {
|
|
943
941
|
this.logger.error(err.message, 'findIdThenPath error');
|
|
@@ -1092,11 +1090,13 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
1092
1090
|
* @param {any} data The data
|
|
1093
1091
|
* @return {Promise} { description_of_the_return_value }
|
|
1094
1092
|
*/
|
|
1095
|
-
async runEvent(appuser: UserContext, eventName: string, payloads: any, enforce: boolean = true) {
|
|
1093
|
+
async runEvent(appuser: UserContext, eventName: string, payloads: any, enforce: boolean = true) {
|
|
1096
1094
|
try {
|
|
1097
1095
|
if (enforce && !this.eventEmitter.hasListeners(eventName)) {
|
|
1098
1096
|
throw new InternalServerErrorException(`${eventName} seems no listener`);
|
|
1099
1097
|
} else if (this.eventEmitter.hasListeners(eventName)) {
|
|
1098
|
+
|
|
1099
|
+
console.log("run eventName",eventName)
|
|
1100
1100
|
const res = await this.eventEmitter.emitAsync(eventName, appuser, payloads);
|
|
1101
1101
|
|
|
1102
1102
|
if (!res) {
|
|
@@ -1298,9 +1298,9 @@ export class SimpleAppService<T extends SchemaFields> {
|
|
|
1298
1298
|
}
|
|
1299
1299
|
|
|
1300
1300
|
async addAuditEvent(appUser: UserContext, documentName: string, id: string, eventType: string, data: any) {
|
|
1301
|
-
await this.
|
|
1301
|
+
await this.logService.addEvent(appUser, documentName, id, eventType, data);
|
|
1302
1302
|
}
|
|
1303
1303
|
async addManyAuditEvents(appUser: UserContext, documentName: string, eventType: string, datas: any) {
|
|
1304
|
-
await this.
|
|
1304
|
+
await this.logService.addManyEvents(appUser, documentName, eventType, datas);
|
|
1305
1305
|
}
|
|
1306
1306
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export generatorVersion='<%=it.version%>'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by simpleapp generator. It is changable.
|
|
3
|
+
* last change 2025-09-023
|
|
4
|
+
* --remove-this-line-to-prevent-override--
|
|
5
|
+
* Author: Ks Tan
|
|
6
|
+
*/
|
|
7
|
+
import { Module } from '@nestjs/common';
|
|
8
|
+
@Module({
|
|
9
|
+
imports: [
|
|
10
|
+
|
|
11
|
+
],
|
|
12
|
+
controllers: [],
|
|
13
|
+
providers: [],
|
|
14
|
+
exports: [
|
|
15
|
+
],
|
|
16
|
+
})
|
|
17
|
+
export class AdditionalApiModule { }
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Author: Ks Tan
|
|
6
6
|
*/
|
|
7
7
|
import { Module } from '@nestjs/common';
|
|
8
|
+
import { AdditionalApiModule } from './additional-api.module';
|
|
8
9
|
<% const loadapi = true; %>
|
|
9
10
|
<% for(let i=0;i<it.modules.length; i++){ %>
|
|
10
11
|
<% let obj = it.modules[i]%>
|
|
@@ -15,7 +16,7 @@ import { Module } from '@nestjs/common';
|
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
@Module({
|
|
18
|
-
imports: [
|
|
19
|
+
imports: [AdditionalApiModule,
|
|
19
20
|
<% for(let i=0;i<it.modules.length; i++){ %>
|
|
20
21
|
<% let obj = it.modules[i]%>
|
|
21
22
|
<% if( loadapi && obj.api && obj.api.length>0 && !getSystemResources().includes(obj.docname)){%>
|
|
@@ -12,15 +12,15 @@ import { GenerateLogoService } from 'src/simple-app/features/generate-image/gene
|
|
|
12
12
|
@Injectable()
|
|
13
13
|
export class BranchEventService implements EventBeforeCreate<Branch>, EventAfterCreate<Branch> {
|
|
14
14
|
constructor(
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private
|
|
15
|
+
private branchService: BranchService,
|
|
16
|
+
private autoIncreamentService: AutoIncreamentService,
|
|
17
|
+
private docNoGeneratorService: DocumentNoFormatService,
|
|
18
|
+
private generateLogoService: GenerateLogoService,
|
|
19
19
|
) {}
|
|
20
20
|
|
|
21
21
|
@OnEvent('branch.before-create')
|
|
22
22
|
async beforeCreate(appUser: UserContext, payload: CreatePayload<Branch>) {
|
|
23
|
-
const searchresult = await this.
|
|
23
|
+
const searchresult = await this.autoIncreamentService.runGenerateNextNo(appUser, 'branch', 'branchId');
|
|
24
24
|
payload.data.branchId = searchresult.nextNo;
|
|
25
25
|
console.log('branch.before-create', payload);
|
|
26
26
|
}
|
|
@@ -33,8 +33,8 @@ export class BranchEventService implements EventBeforeCreate<Branch>, EventAfter
|
|
|
33
33
|
throw new BadRequestException('Create branch failed due to branchId=0')
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
await this.
|
|
37
|
-
await this.
|
|
36
|
+
await this.docNoGeneratorService.generateBranchDefaultDocNumbers(appUser, data);
|
|
37
|
+
await this.generateLogoService.generateLogo(appUser, data.branchName, data._id, data.tenantId, data.orgId, data.branchId);
|
|
38
38
|
}catch(e){
|
|
39
39
|
return e
|
|
40
40
|
}
|
package/templates/nest/src/simple-app/events/organization-event/organization-event.service.ts._eta
CHANGED
|
@@ -17,14 +17,14 @@ export class OrganizationEventService implements
|
|
|
17
17
|
EventBeforeUpdate<Organization>
|
|
18
18
|
{
|
|
19
19
|
constructor(
|
|
20
|
-
private
|
|
21
|
-
private
|
|
22
|
-
private
|
|
20
|
+
private organizationService: OrganizationService,
|
|
21
|
+
private autoIncreamentService: AutoIncreamentService,
|
|
22
|
+
private generateLogoService: GenerateLogoService,
|
|
23
23
|
) {}
|
|
24
24
|
|
|
25
25
|
@OnEvent('organization.before-create',{suppressErrors:false})
|
|
26
26
|
async beforeCreate(appUser: UserContext, payload: CreatePayload<Organization>) {
|
|
27
|
-
const searchresult = await this.
|
|
27
|
+
const searchresult = await this.autoIncreamentService.runGenerateNextNo(appUser, 'organization', 'orgId');
|
|
28
28
|
payload.data.orgId = searchresult.nextNo;
|
|
29
29
|
console.log('organization.before-create', payload);
|
|
30
30
|
}
|
|
@@ -35,7 +35,7 @@ export class OrganizationEventService implements
|
|
|
35
35
|
if (data.orgId == 0) {
|
|
36
36
|
throw new BadRequestException('Create branch failed due to orgId=0');
|
|
37
37
|
}
|
|
38
|
-
// await this.
|
|
38
|
+
// await this.generateLogoService.generateLogo(appUser, data.orgName, data._id, data.tenantId, data.orgId, data.organizationId);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
@OnEvent('organization.after-create',{suppressErrors:false})
|
package/templates/nest/src/simple-app/events/permission-event/permission-event.service.ts.eta
CHANGED
|
@@ -9,7 +9,7 @@ import { CreatePayload } from 'src/simple-app/_core/features/event/event.type';
|
|
|
9
9
|
@Injectable()
|
|
10
10
|
export class PermissionEventService implements EventBeforeCreate<Permission>, EventAfterCreate<Permission> {
|
|
11
11
|
constructor(
|
|
12
|
-
private
|
|
12
|
+
private permissionService: PermissionService,
|
|
13
13
|
) {}
|
|
14
14
|
|
|
15
15
|
@OnEvent('permission.before-create')
|
|
@@ -10,13 +10,13 @@ import { AutoIncreamentService } from 'src/simple-app/_core/features/auto-increa
|
|
|
10
10
|
@Injectable()
|
|
11
11
|
export class TenantEventService implements EventBeforeCreate<Tenant>, EventAfterCreate<Tenant> {
|
|
12
12
|
constructor(
|
|
13
|
-
private
|
|
14
|
-
private
|
|
13
|
+
private tenantService: TenantService,
|
|
14
|
+
private autoIncreamentService: AutoIncreamentService,
|
|
15
15
|
) {}
|
|
16
16
|
|
|
17
17
|
@OnEvent('tenant.before-create')
|
|
18
18
|
async beforeCreate(appUser: UserContext, payload: CreatePayLoad<Tenant>) {
|
|
19
|
-
const searchresult = await this.
|
|
19
|
+
const searchresult = await this.autoIncreamentService.runGenerateNextNo(appUser, 'tenant', 'tenantId');
|
|
20
20
|
payload.data.tenantId = searchresult.nextNo;
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -20,10 +20,14 @@
|
|
|
20
20
|
* last change 2024-03-17
|
|
21
21
|
* Author: Ks Tan
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
watch(()=>useRoute().
|
|
25
|
-
|
|
23
|
+
let currentXorg = getCurrentXorg()
|
|
24
|
+
watch(()=>useRoute().fullPath,async (newval,oldvalue)=>{
|
|
25
|
+
if(getCurrentXorg()!=currentXorg){
|
|
26
|
+
currentXorg = getCurrentXorg()
|
|
27
|
+
await reloadUserStore()
|
|
28
|
+
}
|
|
26
29
|
if(getPathPara('xorg','')!=''){
|
|
30
|
+
|
|
27
31
|
if(!getUserProfile()?.currentGroup) goTo('pickgroup')
|
|
28
32
|
setGraphqlServer()
|
|
29
33
|
}
|
|
@@ -5,30 +5,25 @@
|
|
|
5
5
|
#default
|
|
6
6
|
:class="` place-content-center bg-white rounded-md`"
|
|
7
7
|
@image-uploaded="handleBase64"
|
|
8
|
-
:
|
|
8
|
+
:src="`${server}/organizations/${orgId}`"
|
|
9
9
|
>
|
|
10
|
-
<!-- {{console.log("imagepath",imagepath)}} -->
|
|
11
10
|
<NuxtImg
|
|
12
|
-
v-if="
|
|
13
|
-
class="w-full h-full rounded-
|
|
11
|
+
v-if="orgId"
|
|
12
|
+
class="w-full h-full rounded-lg"
|
|
14
13
|
:key="imageKey"
|
|
15
|
-
:src="
|
|
16
|
-
placeholder="
|
|
17
|
-
@error="onError"
|
|
14
|
+
:src="`${server}/organizations/${orgId}`"
|
|
15
|
+
:placeholder="`/organizations/${props.orgId}`"
|
|
18
16
|
/>
|
|
19
17
|
</ImageToBase64Uploader>
|
|
20
|
-
<div
|
|
21
|
-
v-else
|
|
22
|
-
:class="` inline-block rounded-md bg-white text-black`"
|
|
23
|
-
>
|
|
24
|
-
<!-- {{console.log("imagepath",imagepath)}} -->
|
|
25
|
-
|
|
18
|
+
<div v-else :class="` inline-block rounded-md bg-white text-black`">
|
|
26
19
|
<NuxtImg
|
|
27
|
-
v-if="
|
|
28
|
-
class="
|
|
29
|
-
:
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
v-if="orgId"
|
|
21
|
+
class="w-full h-full rounded-lg"
|
|
22
|
+
:width="size"
|
|
23
|
+
:height="size"
|
|
24
|
+
:src="`${server}/organizations/${orgId}`"
|
|
25
|
+
:key="imageKey"
|
|
26
|
+
:placeholder="`/organizations/${props.orgId}`"
|
|
32
27
|
/>
|
|
33
28
|
</div>
|
|
34
29
|
</div>
|
|
@@ -36,42 +31,52 @@
|
|
|
36
31
|
<script lang="ts" setup>
|
|
37
32
|
import { PHOTOSIZE } from "~/types";
|
|
38
33
|
// import {KeyValue} from ''
|
|
34
|
+
const server = useRuntimeConfig().public.imageUrl;
|
|
35
|
+
console.log("server", server);
|
|
36
|
+
const uploading = ref(false);
|
|
37
|
+
const emits = defineEmits(["upload"]);
|
|
39
38
|
const props = defineProps<{
|
|
40
39
|
changable?: boolean;
|
|
40
|
+
orgId: number;
|
|
41
41
|
orgRecordId?: string;
|
|
42
42
|
size: PHOTOSIZE;
|
|
43
43
|
}>();
|
|
44
44
|
const imageKey = ref(0);
|
|
45
|
-
const orgRecordId = computed(
|
|
46
|
-
() => props.orgRecordId ?? getUserProfile()?.orgRecordId,
|
|
47
|
-
);
|
|
48
|
-
const xorgpath = getCurrentXorg() ? `${getCurrentXorg()}/` : "MC0wLTA/";
|
|
49
|
-
const size = props.size ?? PHOTOSIZE.S64;
|
|
50
|
-
const path = useOrganizationInfo().getBranchPhotoUrl(orgRecordId.value, size);
|
|
51
|
-
const imagepath = ref(path)
|
|
52
45
|
|
|
53
46
|
|
|
47
|
+
useNuxtApp().$listen("RefreshPhoto", (resource: string[]) => {
|
|
48
|
+
if (resource[0] == "organization" && resource[1] == props.orgRecordId) {
|
|
49
|
+
imageKey.value = new Date().getTime();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
54
53
|
watch(
|
|
55
|
-
() => props.
|
|
54
|
+
() => props.orgId,
|
|
56
55
|
() => imageKey.value++,
|
|
57
56
|
);
|
|
58
57
|
const handleBase64 = async (data: string) => {
|
|
59
58
|
const keyvalue = {
|
|
60
|
-
key: "organizations/" + props.
|
|
59
|
+
key: "organizations/" + props.orgId,
|
|
61
60
|
value: data,
|
|
61
|
+
id: props.orgRecordId,
|
|
62
62
|
};
|
|
63
|
+
uploading.value = true;
|
|
63
64
|
// console.log("upload logo ", data);
|
|
64
65
|
const uploadok = await useNuxtApp()
|
|
65
66
|
.$OrganizationDoc()
|
|
66
67
|
.getApi()
|
|
67
|
-
.runUploadPhoto(orgRecordId
|
|
68
|
+
.runUploadPhoto(<string>props.orgRecordId, keyvalue);
|
|
68
69
|
if (uploadok) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
imageKey.value = new Date().getTime();
|
|
71
|
+
uploading.value = false;
|
|
72
|
+
emits("upload", keyvalue.key);
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
useNuxtApp().$event("RefreshPhoto", [
|
|
75
|
+
"organization",
|
|
76
|
+
<string>props.orgRecordId ,
|
|
77
|
+
keyvalue.key ?? "",
|
|
78
|
+
]);
|
|
79
|
+
}, 1500);
|
|
72
80
|
}
|
|
73
81
|
};
|
|
74
|
-
const onError = () => {
|
|
75
|
-
imagepath.value = "/images/organization.png";
|
|
76
|
-
};
|
|
77
82
|
</script>
|
|
@@ -4,50 +4,64 @@
|
|
|
4
4
|
* last change 2023-10-28
|
|
5
5
|
* Author: Ks Tan
|
|
6
6
|
*/
|
|
7
|
-
export const getDocumentUrl = (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
export const getDocumentUrl = (
|
|
8
|
+
document: string,
|
|
9
|
+
id?: string,
|
|
10
|
+
querystr?: string,
|
|
11
|
+
) => {
|
|
12
|
+
let path = `/${getCurrentXorg()}/${document}`;
|
|
13
|
+
if (id) {
|
|
14
|
+
path = path + "/" + id;
|
|
15
|
+
}
|
|
16
|
+
if (querystr) {
|
|
17
|
+
path = path + "?" + querystr;
|
|
18
|
+
}
|
|
19
|
+
return path;
|
|
20
|
+
};
|
|
18
21
|
|
|
19
|
-
export const getPathResource=()=>{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
navigateTo(getDocumentUrl(document,id,querystr))
|
|
25
|
-
}
|
|
22
|
+
export const getPathResource = () => {
|
|
23
|
+
return useRoute()
|
|
24
|
+
.path.toString()
|
|
25
|
+
.replace("/" + getCurrentXorg(), "");
|
|
26
|
+
};
|
|
26
27
|
|
|
28
|
+
export const goTo = (
|
|
29
|
+
document: string,
|
|
30
|
+
id?: string,
|
|
31
|
+
querystr?: string,
|
|
32
|
+
options?: Parameters<typeof navigateTo>[1],
|
|
33
|
+
) => {
|
|
34
|
+
navigateTo(getDocumentUrl(document, id, querystr), options);
|
|
35
|
+
};
|
|
27
36
|
|
|
28
37
|
export const goBranch = (branchRecordId: string) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
const parenturl = getDocumentUrl("organization");
|
|
39
|
+
const branchUrl = `${parenturl}/${branchRecordId}`;
|
|
40
|
+
navigateTo(branchUrl);
|
|
41
|
+
};
|
|
33
42
|
|
|
34
|
-
export const getPathPara = (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
43
|
+
export const getPathPara = (
|
|
44
|
+
paraname: string,
|
|
45
|
+
emptyvalue: string = "",
|
|
46
|
+
): string => {
|
|
47
|
+
const paravalue = useRoute().params[paraname];
|
|
48
|
+
if (paravalue) {
|
|
49
|
+
return paravalue.toString();
|
|
50
|
+
} else {
|
|
51
|
+
return emptyvalue;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export const getPathQuery = (
|
|
55
|
+
paraname: string,
|
|
56
|
+
emptyvalue: string | string[] = "",
|
|
57
|
+
): string | string[] => {
|
|
58
|
+
const paravalue = useRoute().query[paraname];
|
|
59
|
+
if (paraname.includes("[")) {
|
|
60
|
+
return (typeof paravalue == "string" ? [paravalue] : paravalue) as string[];
|
|
61
|
+
} else if (typeof paravalue == "string") {
|
|
62
|
+
return paravalue.toString();
|
|
63
|
+
} else {
|
|
64
|
+
return emptyvalue;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export const setCurrentUrl = (path: string) => useRouter().push({ path: path });
|
|
@@ -13,14 +13,14 @@ const allroles:roletype[] = [
|
|
|
13
13
|
<% for(let i=0;i<it.modules.length; i++){ %>
|
|
14
14
|
<% const m = it.modules[i] %>
|
|
15
15
|
<% const appconfig = m.schema["x-simpleapp-config"] %>
|
|
16
|
-
{resource: '<%=m.
|
|
17
|
-
{resource: '<%=m.
|
|
18
|
-
{resource: '<%=m.
|
|
19
|
-
{resource: '<%=m.
|
|
20
|
-
{resource: '<%=m.
|
|
16
|
+
{resource: '<%=m.typename%>', action:'access'},
|
|
17
|
+
{resource: '<%=m.typename%>', action:'create'},
|
|
18
|
+
{resource: '<%=m.typename%>', action:'update'},
|
|
19
|
+
{resource: '<%=m.typename%>', action:'delete'},
|
|
20
|
+
{resource: '<%=m.typename%>', action:'search'},
|
|
21
21
|
<% if(Array.isArray(appconfig?.allStatus) && appconfig.allStatus.length>0){%>
|
|
22
22
|
<% for(let sindex=0;sindex<appconfig.allStatus.length;sindex++){%>
|
|
23
|
-
{resource: '<%=m.
|
|
23
|
+
{resource: '<%=m.typename%>', action:'<%=appconfig.allStatus[sindex].status%>'},
|
|
24
24
|
<%}%>
|
|
25
25
|
<%}%>
|
|
26
26
|
<%}%>
|
|
@@ -23,7 +23,7 @@ export const md5=(s:string)=> new Md5().appendStr(s).end()
|
|
|
23
23
|
// }
|
|
24
24
|
export const getAvatarByUid = (id:string, size?:number):string=>{
|
|
25
25
|
if(size===undefined)size=160
|
|
26
|
-
return `${useRuntimeConfig().public.
|
|
26
|
+
return `${useRuntimeConfig().public.imageUrl}/id?width=${size}&height=${size}`
|
|
27
27
|
}
|
|
28
28
|
export const updateAvatarVersion = ()=>{
|
|
29
29
|
myAvatarVersion.value++
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
MINIAPPMANAGERApi,
|
|
14
14
|
} from "~/simpleapp/generate/openapi";
|
|
15
15
|
import { MiniAppFormWithMiniAppCode } from "~/simpleapp/generate/features/miniApp/app/types/miniApp";
|
|
16
|
-
import { MiniappEnvEnum } from "~/enums
|
|
16
|
+
import { MiniappEnvEnum } from "~/enums";
|
|
17
17
|
|
|
18
18
|
export default defineNuxtPlugin(async () => {
|
|
19
19
|
/**
|
|
@@ -21,9 +21,9 @@ export default defineNuxtPlugin(async () => {
|
|
|
21
21
|
*/
|
|
22
22
|
const MINI_APP_PAGE_PATH_PREFIX = "miniapp";
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
|
|
28
28
|
const MINI_APP_BUILT_IN_SETTING_NAME = "mini-app-setting";
|
|
29
29
|
|
|
@@ -59,7 +59,11 @@ export default defineNuxtPlugin(async () => {
|
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
61
|
},
|
|
62
|
-
|
|
62
|
+
getMiniAppManager : ()=>{
|
|
63
|
+
const config = getAxiosConfig();
|
|
64
|
+
const miniAppManager = new MINIAPPMANAGERApi(config);
|
|
65
|
+
return miniAppManager
|
|
66
|
+
},
|
|
63
67
|
showMiniAppMoreMenuButton: (state) => {
|
|
64
68
|
if (!state.permissions.hasMiniAppFeature) {
|
|
65
69
|
return false;
|
|
@@ -322,10 +326,11 @@ export default defineNuxtPlugin(async () => {
|
|
|
322
326
|
|
|
323
327
|
// ============================ Load Function ============================
|
|
324
328
|
async loadInstalledMiniApps() {
|
|
325
|
-
this.isFetchingInstalledMiniApps = true;
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
+
this.isFetchingInstalledMiniApps = true;
|
|
330
|
+
const resp = await this.getMiniAppManager
|
|
331
|
+
.runGetInstalledMiniApps({
|
|
332
|
+
|
|
333
|
+
})
|
|
329
334
|
.then((res) => {
|
|
330
335
|
return res.data;
|
|
331
336
|
})
|
|
@@ -340,7 +345,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
340
345
|
},
|
|
341
346
|
|
|
342
347
|
async loadMiniAppDetail(miniAppCode: string) {
|
|
343
|
-
return await
|
|
348
|
+
return await this.getMiniAppManager
|
|
344
349
|
.runGetMiniAppDetail(miniAppCode)
|
|
345
350
|
.then((res) => {
|
|
346
351
|
return res.data;
|
|
@@ -351,7 +356,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
351
356
|
},
|
|
352
357
|
|
|
353
358
|
async loadCategorizedMiniApps() {
|
|
354
|
-
return await
|
|
359
|
+
return await this.getMiniAppManager
|
|
355
360
|
.runGetCategorizedMiniApps()
|
|
356
361
|
.then((res) => {
|
|
357
362
|
return res.data;
|
|
@@ -411,7 +416,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
411
416
|
// ============================ miniApp Action ============================
|
|
412
417
|
|
|
413
418
|
async installMiniApp(miniAppCode: string) {
|
|
414
|
-
const miniAppInstallation = await
|
|
419
|
+
const miniAppInstallation = await this.getMiniAppManager
|
|
415
420
|
.runInstallMiniApp(miniAppCode)
|
|
416
421
|
.then((res) => {
|
|
417
422
|
return res.data;
|
|
@@ -426,7 +431,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
426
431
|
},
|
|
427
432
|
|
|
428
433
|
async uninstallMiniApp(miniAppCode: string) {
|
|
429
|
-
const miniAppInstallation = await
|
|
434
|
+
const miniAppInstallation = await this.getMiniAppManager
|
|
430
435
|
.runUninstallMiniApp(miniAppCode)
|
|
431
436
|
.then((res) => {
|
|
432
437
|
return res.data;
|
|
@@ -444,7 +449,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
444
449
|
miniAppCode: string,
|
|
445
450
|
data: { [key: string]: any },
|
|
446
451
|
) {
|
|
447
|
-
const miniAppInstallation = await
|
|
452
|
+
const miniAppInstallation = await this.getMiniAppManager
|
|
448
453
|
.runUpdateMiniAppSetting(miniAppCode, data)
|
|
449
454
|
.then((res) => {
|
|
450
455
|
return res.data;
|