@simitgroup/simpleapp-generator 1.0.64 → 1.1.1
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/dist/buildinschemas/user.d.ts.map +1 -1
- package/dist/buildinschemas/user.js +0 -1
- package/dist/buildinschemas/user.js.map +1 -1
- package/package.json +1 -1
- package/src/buildinschemas/user.ts +1 -2
- package/templates/basic/nuxt/pages.landing.vue.eta +1 -1
- package/templates/basic/nuxt/pages.new.vue.eta +52 -68
- package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +0 -1
- package/templates/nuxt/assets/css/style.css._eta +29 -1
- package/templates/nuxt/assets/primevue/passthrough.ts._eta +8 -2
- package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +8 -4
- package/templates/nuxt/components/event/EventNotification.vue.eta +13 -9
- package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +31 -44
- package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +12 -11
- package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +5 -4
- package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +288 -0
- package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +4 -52
- package/templates/nuxt/components/simpleApp/{SimpleAppAutocomplete.vue.eta → pending/SimpleAppAutocomplete.vue} +1 -2
- package/templates/nuxt/components/simpleApp/pending/SimpleAppDocumentNo.vue +90 -0
- package/templates/nuxt/components/simpleApp/pending/SimpleAppInputTable.vue +83 -0
- package/templates/nuxt/components/simpleApp/{SimpleAppText.vue.eta → pending/SimpleAppText.vue} +0 -2
- package/templates/nuxt/composables/getOpenApi.generate.ts.eta +32 -1
- package/templates/nuxt/layouts/default.vue.eta +1 -1
- package/templates/nuxt/layouts/documentlist.vue.eta +4 -4
- package/templates/nuxt/layouts/sidelist.vue.eta +1 -1
- package/templates/nuxt/layouts/sidelistcrud.vue.eta +1 -1
- package/templates/nuxt/nuxt.config.ts.eta +0 -1
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +96 -90
- package/templates/nuxt/pages/[xorg]/organization/[id]/branches/new.vue +3 -3
- package/templates/nuxt/pages/[xorg]/organization/new.vue.eta +24 -18
- package/templates/nuxt/pages/[xorg]/organization.vue.eta +32 -17
- package/templates/nuxt/pages/[xorg]/user/index.vue.eta +40 -35
- package/templates/nuxt/pages/[xorg]/user.vue.eta +10 -8
- package/templates/nuxt/pages/index.vue._eta +3 -3
- package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +4 -0
- package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +4 -1
- package/templates/nuxt/types/index.ts.eta +2 -1
- package/templates/nuxt/types/simpleappinput.ts.eta +39 -0
- package/templates/project/jsonschemas/category.json._eta +6 -6
- package/templates/project/jsonschemas/customer.json._eta +17 -4
- package/templates/project/jsonschemas/invoice.json._eta +5 -4
- package/templates/project/jsonschemas/product.json._eta +3 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/templates/nuxt/composables/getAutocomplete.generate.ts.eta +0 -32
- /package/templates/nuxt/components/{ListView.vue.eta → list/ListView.vue.eta} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppAutocompletemulti.vue.eta → pending/SimpleAppAutocompletemulti.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppCalendar.vue.eta → pending/SimpleAppCalendar.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppCheckbox.vue.eta → pending/SimpleAppCheckbox.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppChip.vue.eta → pending/SimpleAppChip.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppColor.vue.eta → pending/SimpleAppColor.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppDynamicInput.vue.eta → pending/SimpleAppDynamicInput.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppEditor.vue.eta → pending/SimpleAppEditor.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppList.vue.eta → pending/SimpleAppList.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppListmulti.vue.eta → pending/SimpleAppListmulti.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppNumber.vue.eta → pending/SimpleAppNumber.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppPassword.vue.eta → pending/SimpleAppPassword.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppRadio.vue.eta → pending/SimpleAppRadio.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppRating.vue.eta → pending/SimpleAppRating.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppSelect.vue.eta → pending/SimpleAppSelect.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppSelectmulti.vue.eta → pending/SimpleAppSelectmulti.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppSlider.vue.eta → pending/SimpleAppSlider.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppSwitch.vue.eta → pending/SimpleAppSwitch.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppTextarea.vue.eta → pending/SimpleAppTextarea.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{SimpleAppValue.vue.eta → pending/SimpleAppValue.vue} +0 -0
- /package/templates/nuxt/components/simpleApp/{helper.ts.eta → pending/helper.ts-backup} +0 -0
- /package/templates/nuxt/components/simpleApp/{type.ts.eta → pending/type.ts-backup} +0 -0
- /package/templates/nuxt/components/{CrudNestedDoc.vue.eta → suspended/CrudNestedDoc.vue.eta} +0 -0
- /package/templates/nuxt/components/{CrudSimple.vue.eta → suspended/CrudSimple.vue.eta} +0 -0
- /package/templates/nuxt/components/{Menus.vue.eta → suspended/Menus.vue.eta} +0 -0
- /package/templates/nuxt/components/{Spinner.vue.eta → suspended/Spinner.vue.eta} +0 -0
- /package/templates/nuxt/components/{DocumentDatatable.vue.eta → table/TableDocuments.vue.eta} +0 -0
- /package/templates/nuxt/components/{ButtonCreateTenant.vue.eta → user/UserButtonCreateTenant.vue.eta} +0 -0
- /package/templates/nuxt/components/{ButtonPermissionInfo.vue.eta → user/UserButtonPermissionInfo.vue.eta} +0 -0
- /package/templates/nuxt/components/{Invitation.vue.eta → user/UserInvitation.vue.eta} +0 -0
- /package/templates/nuxt/components/{UserProfileListItem.vue.eta → user/UserProfileListItem.vue.eta} +0 -0
- /package/templates/nuxt/components/{TenantPicker.vue.eta → user/UserTenantPicker.vue.eta} +0 -0
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import {SimpleAppInputType} from '~/types'
|
|
2
3
|
import ConfirmPopup from "primevue/confirmpopup";
|
|
3
4
|
import { useConfirm } from "primevue/useconfirm";
|
|
4
5
|
import moment from "moment";
|
|
5
6
|
const confirm = useConfirm();
|
|
6
|
-
const isReadOnly = ref(true)
|
|
7
|
-
const {$event
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
const isReadOnly = ref(true);
|
|
8
|
+
const { $event, $listen, $DocnoformatDoc } = useNuxtApp();
|
|
9
|
+
const doc = $DocnoformatDoc();
|
|
10
|
+
const data = doc.getReactiveData();
|
|
11
|
+
const list = ref([]);
|
|
12
|
+
const sample = ref("");
|
|
13
|
+
const refresh = async () => {
|
|
14
|
+
$event("RefreshDocumentList", { documentName: doc.getDocName() });
|
|
15
|
+
isReadOnly.value = true;
|
|
16
|
+
};
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const updateSample = () => {
|
|
19
|
+
sample.value = "Example: " + previewDocNo();
|
|
20
|
+
};
|
|
21
|
+
const createData = async () => {
|
|
21
22
|
// disabled.value=true
|
|
22
23
|
|
|
23
24
|
doc
|
|
24
25
|
.create()
|
|
25
26
|
.then((res) => {
|
|
26
|
-
refresh()
|
|
27
|
-
newData()
|
|
27
|
+
refresh();
|
|
28
|
+
newData();
|
|
28
29
|
})
|
|
29
30
|
.catch((err) => {
|
|
30
31
|
console.error(err);
|
|
@@ -42,7 +43,6 @@ const updateData = async () => {
|
|
|
42
43
|
});
|
|
43
44
|
};
|
|
44
45
|
const deleteData = (el: any) => {
|
|
45
|
-
|
|
46
46
|
confirm.require({
|
|
47
47
|
target: el.currentTarget as HTMLElement,
|
|
48
48
|
message: "Delete?",
|
|
@@ -50,8 +50,8 @@ const deleteData = (el: any) => {
|
|
|
50
50
|
acceptClass: "p-button-danger",
|
|
51
51
|
accept: () => {
|
|
52
52
|
// disabled.value=true
|
|
53
|
-
doc.delete(data.value._id ?? "").then((res) => {
|
|
54
|
-
newData()
|
|
53
|
+
doc.delete(data.value._id ?? "").then((res) => {
|
|
54
|
+
newData();
|
|
55
55
|
refresh();
|
|
56
56
|
});
|
|
57
57
|
},
|
|
@@ -61,79 +61,87 @@ const deleteData = (el: any) => {
|
|
|
61
61
|
});
|
|
62
62
|
};
|
|
63
63
|
const newData = () => {
|
|
64
|
-
doc.setNew()
|
|
65
|
-
goTo(doc.getDocName(),String(useRoute().params.doctype)+
|
|
64
|
+
doc.setNew();
|
|
65
|
+
goTo(doc.getDocName(), String(useRoute().params.doctype) + "/new");
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
const id=computed(()=>String(useRoute().params.id??
|
|
68
|
+
const id = computed(() => String(useRoute().params.id ?? ""));
|
|
69
69
|
|
|
70
|
-
const fetchRecord =async ()=>{
|
|
71
|
-
if(id.value){
|
|
72
|
-
isReadOnly.value=true
|
|
73
|
-
await doc.getById(id.value)
|
|
74
|
-
}else{
|
|
75
|
-
isReadOnly.value=false
|
|
76
|
-
data.value.docNoType=String(useRoute().params.doctype)
|
|
70
|
+
const fetchRecord = async () => {
|
|
71
|
+
if (id.value) {
|
|
72
|
+
isReadOnly.value = true;
|
|
73
|
+
await doc.getById(id.value);
|
|
74
|
+
} else {
|
|
75
|
+
isReadOnly.value = false;
|
|
76
|
+
data.value.docNoType = String(useRoute().params.doctype);
|
|
77
77
|
}
|
|
78
|
-
}
|
|
78
|
+
};
|
|
79
79
|
|
|
80
80
|
const previewDocNo = (): string => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
const pattern = data.value.docNoPattern;
|
|
82
|
+
if (pattern) {
|
|
83
|
+
const numberReg: RegExp = /\[(.*?)\]/g;
|
|
84
|
+
const dateReg: RegExp = /\{(.*?)\}/g;
|
|
85
|
+
let newvalue = pattern;
|
|
86
|
+
const numberpattern = pattern.match(numberReg);
|
|
87
|
+
const datepattern = pattern.match(dateReg);
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
if (numberpattern && numberpattern.length > 0) {
|
|
90
|
+
const numberlength = numberpattern[0]
|
|
91
|
+
.replace("[", "")
|
|
92
|
+
.replace("]", "").length;
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
let nextnumber = (data.value.nextNumber ?? 0).toString();
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
const numberdiff = numberlength - nextnumber.length;
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
newvalue = newvalue.replace(numberpattern[0], nextnumber);
|
|
98
|
+
for (let n = 0; n < numberdiff; n++) {
|
|
99
|
+
nextnumber = "0" + nextnumber;
|
|
102
100
|
}
|
|
101
|
+
newvalue = newvalue.replace(numberpattern[0], nextnumber);
|
|
102
|
+
}
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
104
|
+
if (datepattern && datepattern.length > 0) {
|
|
105
|
+
for (let d = 0; d < datepattern.length; d++) {
|
|
106
|
+
const dpattern = datepattern[d];
|
|
107
|
+
const date = new Date();
|
|
108
|
+
const formatteddate = moment().format(
|
|
109
|
+
dpattern.replace("{", "").replace("}", ""),
|
|
110
|
+
);
|
|
111
|
+
newvalue = newvalue.replace(dpattern, formatteddate);
|
|
113
112
|
}
|
|
114
|
-
return newvalue;
|
|
115
|
-
} else {
|
|
116
|
-
return "";
|
|
117
113
|
}
|
|
118
|
-
|
|
114
|
+
return newvalue;
|
|
115
|
+
} else {
|
|
116
|
+
return "";
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
fetchRecord();
|
|
121
121
|
</script>
|
|
122
122
|
<template>
|
|
123
|
-
<DebugDocumentData v-model="data" label="docnoformat"/>
|
|
123
|
+
<DebugDocumentData v-model="data" label="docnoformat" />
|
|
124
124
|
<div class="p-4">
|
|
125
|
-
<div v-if="isReadOnly">
|
|
126
|
-
|
|
125
|
+
<div v-if="isReadOnly" class="col-span-4 ">
|
|
126
|
+
<Button
|
|
127
|
+
class="btn-default"
|
|
128
|
+
@click="newData"
|
|
129
|
+
type="button"
|
|
130
|
+
v-if="canPerform(doc.getDocName(), 'create')"
|
|
131
|
+
>New
|
|
132
|
+
</Button>
|
|
133
|
+
<Button class="btn btn-primary" @click="isReadOnly = false">Edit</Button>
|
|
127
134
|
</div>
|
|
128
135
|
<div v-else class="simpleapp-tool-bar col-span-4 text-left gap-4">
|
|
129
136
|
<Button
|
|
130
|
-
class="btn-default"
|
|
137
|
+
class="btn-default"
|
|
131
138
|
@click="newData"
|
|
132
139
|
type="button"
|
|
133
|
-
v-if="canPerform(doc.getDocName(), 'create')"
|
|
140
|
+
v-if="canPerform(doc.getDocName(), 'create')"
|
|
141
|
+
>New
|
|
134
142
|
</Button>
|
|
135
143
|
<Button
|
|
136
|
-
class="
|
|
144
|
+
class="btn btn-primary"
|
|
137
145
|
@click="createData"
|
|
138
146
|
type="button"
|
|
139
147
|
v-if="canPerform(doc.getDocName(), 'create') && doc.isNew()"
|
|
@@ -141,72 +149,70 @@ const previewDocNo = (): string => {
|
|
|
141
149
|
Create
|
|
142
150
|
</Button>
|
|
143
151
|
<Button
|
|
144
|
-
|
|
145
|
-
|
|
152
|
+
class="btn btn-primary"
|
|
146
153
|
@click="updateData"
|
|
147
154
|
type="button"
|
|
148
|
-
v-if="canPerform(doc.getDocName(), 'update') &&
|
|
155
|
+
v-if="canPerform(doc.getDocName(), 'update') && !doc.isNew()"
|
|
149
156
|
>
|
|
150
157
|
Update
|
|
151
158
|
</Button>
|
|
152
159
|
<Button
|
|
153
|
-
|
|
154
|
-
|
|
160
|
+
class="btn btn-danger"
|
|
155
161
|
@click="deleteData($el)"
|
|
156
162
|
type="button"
|
|
157
163
|
v-if="canPerform(doc.getDocName(), 'delete') && !doc.isNew()"
|
|
158
164
|
>
|
|
159
165
|
Delete
|
|
160
|
-
</Button>
|
|
166
|
+
</Button>
|
|
161
167
|
<ConfirmPopup></ConfirmPopup>
|
|
162
168
|
</div>
|
|
163
169
|
<SimpleAppForm :document="doc" #default="o" :readonly="isReadOnly">
|
|
164
170
|
<div class="grid grid-cols-4 gap-4">
|
|
165
|
-
<
|
|
171
|
+
<SimpleAppInput
|
|
166
172
|
autofocus
|
|
173
|
+
:input-type="SimpleAppInputType.text"
|
|
167
174
|
:setting="o.getField('#/properties/docNoFormatNo')"
|
|
168
175
|
v-model="data.docNoFormatNo"
|
|
169
176
|
/>
|
|
170
|
-
<
|
|
171
|
-
|
|
177
|
+
<SimpleAppInput
|
|
178
|
+
:input-type="SimpleAppInputType.text"
|
|
172
179
|
:setting="o.getField('#/properties/docNoFormatName')"
|
|
173
180
|
v-model="data.docNoFormatName"
|
|
174
181
|
/>
|
|
175
|
-
<
|
|
182
|
+
<SimpleAppInput
|
|
183
|
+
:input-type="SimpleAppInputType.autocomplete"
|
|
176
184
|
v-model="data.branch"
|
|
177
185
|
:setting="o.getField('#/properties/branch')"
|
|
178
|
-
:remoteSrc="getAutocomplete('branch')"
|
|
179
|
-
optionLabel="label"
|
|
180
186
|
/>
|
|
181
|
-
<
|
|
182
|
-
|
|
187
|
+
<SimpleAppInput
|
|
188
|
+
:input-type="SimpleAppInputType.checkbox"
|
|
183
189
|
:setting="o.getField('#/properties/active')"
|
|
184
190
|
v-model="data.active"
|
|
185
191
|
/>
|
|
186
192
|
|
|
187
|
-
<
|
|
188
|
-
|
|
193
|
+
<SimpleAppInput
|
|
194
|
+
:input-type="SimpleAppInputType.checkbox"
|
|
189
195
|
:setting="o.getField('#/properties/default')"
|
|
190
196
|
v-model="data.default"
|
|
191
197
|
/>
|
|
192
198
|
|
|
193
|
-
<
|
|
194
|
-
|
|
199
|
+
<SimpleAppInput
|
|
200
|
+
:input-type="SimpleAppInputType.text"
|
|
195
201
|
:setting="o.getField('#/properties/docNoPattern')"
|
|
196
202
|
v-model="data.docNoPattern"
|
|
197
203
|
@change="updateSample"
|
|
198
204
|
:description="sample"
|
|
199
205
|
v-tooltip="'Examples: PO-<00000>, SI{YY}/<000>, SI{YYMM}/<000>'"
|
|
200
206
|
/>
|
|
201
|
-
<
|
|
207
|
+
<SimpleAppInput
|
|
202
208
|
:readonly="true"
|
|
209
|
+
:input-type="SimpleAppInputType.text"
|
|
203
210
|
:setting="o.getField('#/properties/docNoType')"
|
|
204
|
-
v-model="data.docNoType"
|
|
211
|
+
v-model="data.docNoType"
|
|
205
212
|
description="Document Type"
|
|
206
|
-
|
|
207
213
|
/>
|
|
208
|
-
<
|
|
209
|
-
|
|
214
|
+
<SimpleAppInput
|
|
215
|
+
:input-type="SimpleAppInputType.number"
|
|
210
216
|
:setting="o.getField('#/properties/nextNumber')"
|
|
211
217
|
v-model="data.nextNumber"
|
|
212
218
|
/>
|
|
@@ -97,7 +97,7 @@ if (bid.value) {
|
|
|
97
97
|
>New</Button
|
|
98
98
|
> -->
|
|
99
99
|
<Button
|
|
100
|
-
class="
|
|
100
|
+
class="btn btn-primary"
|
|
101
101
|
:disabled="disabled"
|
|
102
102
|
@click="createData"
|
|
103
103
|
type="button"
|
|
@@ -105,7 +105,7 @@ if (bid.value) {
|
|
|
105
105
|
>Create</Button
|
|
106
106
|
>
|
|
107
107
|
<Button
|
|
108
|
-
class="
|
|
108
|
+
class="btn btn-primary"
|
|
109
109
|
:disabled="disabled"
|
|
110
110
|
@click="updateData"
|
|
111
111
|
type="button"
|
|
@@ -113,7 +113,7 @@ if (bid.value) {
|
|
|
113
113
|
>Update</Button
|
|
114
114
|
>
|
|
115
115
|
<Button
|
|
116
|
-
class="
|
|
116
|
+
class="btn btn-danger"
|
|
117
117
|
:disabled="disabled"
|
|
118
118
|
@click="deleteData($event)"
|
|
119
119
|
type="button"
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* last change 2023-09-09
|
|
7
7
|
* author: Ks Tan
|
|
8
8
|
*/
|
|
9
|
+
import { SimpleAppInputType } from "~/types";
|
|
9
10
|
import ConfirmPopup from "primevue/confirmpopup";
|
|
10
11
|
import { useConfirm } from "primevue/useconfirm";
|
|
11
12
|
const confirm = useConfirm();
|
|
@@ -15,7 +16,7 @@ const orgdoc = $OrganizationDoc();
|
|
|
15
16
|
const doc = $BranchDoc();
|
|
16
17
|
const data = doc.getReactiveData();
|
|
17
18
|
const bid = ref(String(useRoute().params.bid ?? ""));
|
|
18
|
-
const isReadOnly=ref(true)
|
|
19
|
+
const isReadOnly = ref(true);
|
|
19
20
|
const fetchRecord = async (id: string) => {
|
|
20
21
|
await doc.getById(id);
|
|
21
22
|
};
|
|
@@ -56,7 +57,7 @@ const deleteData = (event: Event) => {
|
|
|
56
57
|
// disabled.value=true
|
|
57
58
|
doc.delete(data.value._id ?? "").then((res) => {
|
|
58
59
|
refresh();
|
|
59
|
-
|
|
60
|
+
|
|
60
61
|
goTo(doc.getDocName());
|
|
61
62
|
});
|
|
62
63
|
},
|
|
@@ -68,16 +69,16 @@ const deleteData = (event: Event) => {
|
|
|
68
69
|
|
|
69
70
|
const refresh = () => {
|
|
70
71
|
$event("RefreshDocumentList", { documentName: doc.getDocName() });
|
|
71
|
-
isReadOnly.value=true
|
|
72
|
+
isReadOnly.value = true;
|
|
72
73
|
};
|
|
73
74
|
|
|
74
|
-
if (bid.value) {
|
|
75
|
+
if (bid.value) {
|
|
75
76
|
fetchRecord(bid.value);
|
|
76
77
|
} else {
|
|
77
78
|
// const orgRecordid = ref(String(useRoute().params.id));
|
|
78
79
|
// const orgdata = (await orgdoc.getById(orgRecordid.value)).data;
|
|
79
80
|
doc.setNew();
|
|
80
|
-
isReadOnly.value=false
|
|
81
|
+
isReadOnly.value = false;
|
|
81
82
|
data.value.tenantId = getUserProfile().tenantId;
|
|
82
83
|
data.value.orgId = getUserProfile().orgId;
|
|
83
84
|
data.value.organization._id = getUserProfile().orgRecordId;
|
|
@@ -91,7 +92,7 @@ if (bid.value) {
|
|
|
91
92
|
<SimpleAppForm :document="doc" #default="o" :readonly="isReadOnly">
|
|
92
93
|
<div v-if="!isReadOnly" class="col-span-4 text-left gap-4">
|
|
93
94
|
<Button
|
|
94
|
-
class="
|
|
95
|
+
class="btn btn-primary"
|
|
95
96
|
:isReadOnly="isReadOnly"
|
|
96
97
|
@click="createData"
|
|
97
98
|
type="button"
|
|
@@ -99,43 +100,48 @@ if (bid.value) {
|
|
|
99
100
|
>Create</Button
|
|
100
101
|
>
|
|
101
102
|
<Button
|
|
102
|
-
class="
|
|
103
|
-
|
|
103
|
+
class="btn btn-primary"
|
|
104
104
|
@click="updateData"
|
|
105
105
|
type="button"
|
|
106
106
|
v-if="canPerform(doc.getDocName(), 'update') && !doc.isNew()"
|
|
107
107
|
>Update</Button
|
|
108
108
|
>
|
|
109
109
|
<Button
|
|
110
|
-
class="
|
|
110
|
+
class="btn btn-danger"
|
|
111
111
|
@click="deleteData($event)"
|
|
112
112
|
type="button"
|
|
113
113
|
v-if="canPerform(doc.getDocName(), 'delete') && !doc.isNew()"
|
|
114
114
|
>Delete</Button
|
|
115
115
|
>
|
|
116
|
-
|
|
116
|
+
|
|
117
117
|
<ConfirmPopup></ConfirmPopup>
|
|
118
118
|
</div>
|
|
119
119
|
<div v-else class="col-span-4 text-left gap-4">
|
|
120
|
-
<Button
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
<Button
|
|
121
|
+
class="btn btn-primary"
|
|
122
|
+
@click="isReadOnly = false"
|
|
123
|
+
type="button"
|
|
124
|
+
>Edit</Button
|
|
125
|
+
>
|
|
124
126
|
</div>
|
|
125
127
|
|
|
126
|
-
<
|
|
128
|
+
<SimpleAppInput
|
|
129
|
+
:input-type="SimpleAppInputType.text"
|
|
127
130
|
v-model="data.branchCode"
|
|
128
131
|
:setting="o.getField('#/properties/branchCode')"
|
|
129
132
|
/>
|
|
130
|
-
<
|
|
133
|
+
<SimpleAppInput
|
|
134
|
+
:input-type="SimpleAppInputType.text"
|
|
131
135
|
v-model="data.branchName"
|
|
132
136
|
:setting="o.getField('#/properties/branchName')"
|
|
133
137
|
/>
|
|
134
|
-
<
|
|
138
|
+
<SimpleAppInput
|
|
139
|
+
:input-type="SimpleAppInputType.checkbox"
|
|
135
140
|
v-model="data.active"
|
|
136
141
|
:setting="o.getField('#/properties/active')"
|
|
137
142
|
/>
|
|
138
|
-
<
|
|
143
|
+
<SimpleAppInput
|
|
144
|
+
:input-type="SimpleAppInputType.textarea"
|
|
139
145
|
v-model="data.description"
|
|
140
146
|
:setting="o.getField('#/properties/description')"
|
|
141
147
|
/>
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* last change 2023-09-09
|
|
7
7
|
* author: Ks Tan
|
|
8
8
|
*/
|
|
9
|
+
import { SimpleAppInputType } from "~/types";
|
|
9
10
|
import ConfirmPopup from "primevue/confirmpopup";
|
|
10
11
|
import { useConfirm } from "primevue/useconfirm";
|
|
11
12
|
const confirm = useConfirm();
|
|
@@ -15,7 +16,7 @@ const doc = $OrganizationDoc();
|
|
|
15
16
|
const brancdoc = $BranchDoc();
|
|
16
17
|
const data = doc.getReactiveData();
|
|
17
18
|
const branchlist = ref([]);
|
|
18
|
-
const isReadOnly=ref(true)
|
|
19
|
+
const isReadOnly = ref(true);
|
|
19
20
|
const getCurrentOrg = async () => {
|
|
20
21
|
await doc.getById(getUserProfile().orgRecordId);
|
|
21
22
|
};
|
|
@@ -32,7 +33,7 @@ const updateData = async () => {
|
|
|
32
33
|
.update()
|
|
33
34
|
.then(() => {
|
|
34
35
|
refresh();
|
|
35
|
-
isReadOnly.value=true
|
|
36
|
+
isReadOnly.value = true;
|
|
36
37
|
})
|
|
37
38
|
.catch((err) => {
|
|
38
39
|
console.error(err);
|
|
@@ -61,38 +62,52 @@ getCurrentOrg();
|
|
|
61
62
|
<div class="grid grid-cols-3">
|
|
62
63
|
<div class="">
|
|
63
64
|
<Card>
|
|
65
|
+
<template #header><h1 class="text-2xl">Organization</h1></template>
|
|
64
66
|
<template #content>
|
|
65
|
-
<SimpleAppForm #default="o" :document="doc"
|
|
66
|
-
<div
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<Button
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
<SimpleAppForm #default="o" :document="doc" :readonly="isReadOnly">
|
|
68
|
+
<div
|
|
69
|
+
class="simpleapp-tool-bar col-span-4 text-left gap-4"
|
|
70
|
+
v-if="canPerform(doc.getDocName(), 'update')"
|
|
71
|
+
>
|
|
72
|
+
<Button
|
|
73
|
+
v-if="isReadOnly"
|
|
74
|
+
class="btn btn-primary"
|
|
75
|
+
@click="isReadOnly = false"
|
|
76
|
+
type="button"
|
|
77
|
+
>Edit</Button
|
|
78
|
+
>
|
|
79
|
+
<Button
|
|
80
|
+
v-else
|
|
81
|
+
class="btn btn-primary"
|
|
82
|
+
@click="updateData"
|
|
83
|
+
type="button"
|
|
84
|
+
>Update</Button
|
|
85
|
+
>
|
|
74
86
|
<ConfirmPopup></ConfirmPopup>
|
|
75
87
|
</div>
|
|
76
88
|
<div class="flex flex-col">
|
|
77
89
|
<div class="flex flex-row gap-4">
|
|
78
|
-
<
|
|
79
|
-
|
|
90
|
+
<SimpleAppInput
|
|
91
|
+
:input-type="SimpleAppInputType.text"
|
|
92
|
+
autofocus
|
|
80
93
|
v-model="data.orgCode"
|
|
81
94
|
:setting="o.getField('#/properties/orgCode')"
|
|
82
|
-
|
|
83
95
|
/>
|
|
84
|
-
<
|
|
96
|
+
<SimpleAppInput
|
|
97
|
+
:input-type="SimpleAppInputType.text"
|
|
85
98
|
v-model="data.orgName"
|
|
86
99
|
class=""
|
|
87
100
|
:setting="o.getField('#/properties/orgName')"
|
|
88
101
|
/>
|
|
89
|
-
<
|
|
102
|
+
<SimpleAppInput
|
|
103
|
+
:input-type="SimpleAppInputType.checkbox"
|
|
90
104
|
v-model="data.active"
|
|
91
105
|
:setting="o.getField('#/properties/active')"
|
|
92
106
|
/>
|
|
93
107
|
</div>
|
|
94
108
|
<div>
|
|
95
|
-
<
|
|
109
|
+
<SimpleAppInput
|
|
110
|
+
:input-type="SimpleAppInputType.textarea"
|
|
96
111
|
:setting="o.getField('#/properties/description')"
|
|
97
112
|
v-model="data.description"
|
|
98
113
|
/>
|