diff --git a/package-lock.json b/package-lock.json index c91b905..21fd5b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,8 @@ "version": "0.0.0", "dependencies": { "@quasar/extras": "^1.15.11", + "@vuepic/vue-datepicker": "^4.2.1", + "keycloak-js": "^21.0.1", "pinia": "^2.0.32", "quasar": "^2.11.7", "vue": "^3.2.47", @@ -2031,6 +2033,21 @@ } } }, + "node_modules/@vuepic/vue-datepicker": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-4.2.1.tgz", + "integrity": "sha512-O8hy0o9jQkv/Et7G0mUFDR94NTcHHouy70ELfrTmaWOIBamS/8cRWAwwb/reOvKPX+eo1XKs/v2mj+i5WA14kw==", + "dependencies": { + "date-fns": "^2.29.3", + "date-fns-tz": "^1.3.7" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vue": ">=3.2.0" + } + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -2354,7 +2371,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3054,6 +3070,26 @@ "node": ">=14" } }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", + "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, "node_modules/dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -5189,6 +5225,11 @@ "url": "https://opencollective.com/js-sdsl" } }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5383,6 +5424,15 @@ "verror": "1.10.0" } }, + "node_modules/keycloak-js": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-21.0.1.tgz", + "integrity": "sha512-ot0KW4qyDHl5AyDZNV0CkEkuvIZi+37y3BReNvqqfag7wqJeV13R/PcgECvbbd05+0NSOQjhBL8S+a4A++vNQw==", + "dependencies": { + "base64-js": "^1.5.1", + "js-sha256": "^0.9.0" + } + }, "node_modules/lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", @@ -9601,6 +9651,15 @@ "dev": true, "requires": {} }, + "@vuepic/vue-datepicker": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-4.2.1.tgz", + "integrity": "sha512-O8hy0o9jQkv/Et7G0mUFDR94NTcHHouy70ELfrTmaWOIBamS/8cRWAwwb/reOvKPX+eo1XKs/v2mj+i5WA14kw==", + "requires": { + "date-fns": "^2.29.3", + "date-fns-tz": "^1.3.7" + } + }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -9842,8 +9901,7 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -10348,6 +10406,17 @@ "whatwg-url": "^12.0.0" } }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + }, + "date-fns-tz": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", + "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", + "requires": {} + }, "dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -11909,6 +11978,11 @@ "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true }, + "js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -12065,6 +12139,15 @@ "verror": "1.10.0" } }, + "keycloak-js": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-21.0.1.tgz", + "integrity": "sha512-ot0KW4qyDHl5AyDZNV0CkEkuvIZi+37y3BReNvqqfag7wqJeV13R/PcgECvbbd05+0NSOQjhBL8S+a4A++vNQw==", + "requires": { + "base64-js": "^1.5.1", + "js-sha256": "^0.9.0" + } + }, "lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", diff --git a/package.json b/package.json index b0875d5..65ddde9 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,8 @@ }, "dependencies": { "@quasar/extras": "^1.15.11", + "@vuepic/vue-datepicker": "^4.2.1", + "keycloak-js": "^21.0.1", "pinia": "^2.0.32", "quasar": "^2.11.7", "vue": "^3.2.47", diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..0279b79 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,34 @@ +/**config api */ +import { ref } from "vue"; + +const env = ref(process.env.NODE_ENV || "development"); +// if (process.env.VUE_APP_TEST) { +// env = "test"; +// } + +const config = ref({ + development: { + API_URI: "https://localhost:7006/api/v1", + // API_URI: "https://wsh.frappet.com", + MEET_URI: "meet.frappet.com", + }, + test: { + API_URI: "http://localhost:5010/api/v1", + MEET_URI: "meet.frappet.com", + }, + production: { + // API_URI: "https://localhost:5010", + API_URI: `${window.location.protocol}//api-${window.location.host}/api/v1`, + MEET_URI: "meet.frappet.com", + }, +}); + +const API_URI = ref(config.value[env.value].API_URI); +const MEET_URI = ref(config.value[env.value].MEET_URI); + +export default { + env: env.value, + config: config.value, + API_URI: API_URI.value, + MEET_URI: MEET_URI.value, +}; diff --git a/src/api/manage/api.organization.ts b/src/api/manage/api.organization.ts new file mode 100644 index 0000000..5255dea --- /dev/null +++ b/src/api/manage/api.organization.ts @@ -0,0 +1,7 @@ +import env from '../index' +const dashbord = `${env.API_URI}/dashbord/` + +export default { + countDashbordSubHistory: (type: number) => `${dashbord}${type}`, + countDashbordHistory: `${dashbord}` +} diff --git a/src/app.config.ts b/src/app.config.ts new file mode 100644 index 0000000..6370ef3 --- /dev/null +++ b/src/app.config.ts @@ -0,0 +1,11 @@ +/**ใช้รวมไฟล์ย่อยๆ ของ api แต่ละไฟล์ */ + +import manageOrganization from './api/manage/api.organization' + +const API = { + ...manageOrganization +} + +export default { + API: API +} diff --git a/src/components/DialogFooter.vue b/src/components/DialogFooter.vue new file mode 100644 index 0000000..8975b2b --- /dev/null +++ b/src/components/DialogFooter.vue @@ -0,0 +1,126 @@ + + diff --git a/src/components/DialogHeader.vue b/src/components/DialogHeader.vue new file mode 100644 index 0000000..95cdcdb --- /dev/null +++ b/src/components/DialogHeader.vue @@ -0,0 +1,32 @@ + + diff --git a/src/components/NotifyError.vue b/src/components/NotifyError.vue new file mode 100644 index 0000000..bfef40f --- /dev/null +++ b/src/components/NotifyError.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/Table.vue b/src/components/Table.vue new file mode 100644 index 0000000..7620a0a --- /dev/null +++ b/src/components/Table.vue @@ -0,0 +1,199 @@ + + + diff --git a/src/components/top.vue b/src/components/top.vue new file mode 100644 index 0000000..e6c3cc3 --- /dev/null +++ b/src/components/top.vue @@ -0,0 +1,172 @@ + + + diff --git a/src/main.ts b/src/main.ts index 2e526e1..6e8cf34 100644 --- a/src/main.ts +++ b/src/main.ts @@ -38,5 +38,17 @@ app.component( 'data-table', defineAsyncComponent(() => import('./components/TableView.vue')) ) +app.component( + 'notifyError', + defineAsyncComponent(() => import('./components/NotifyError.vue')) +) +app.component( + 'datepicker', + defineAsyncComponent(() => import('@vuepic/vue-datepicker')) +) +app.component( + 'full-loader', + defineAsyncComponent(() => import('./plugins/FullLoader.vue')) +) app.mount('#app') diff --git a/src/modules/01_exam/components/Career.vue b/src/modules/01_exam/components/Career.vue new file mode 100644 index 0000000..e7d1f3a --- /dev/null +++ b/src/modules/01_exam/components/Career.vue @@ -0,0 +1,4 @@ + + diff --git a/src/modules/01_exam/components/Education.vue b/src/modules/01_exam/components/Education.vue new file mode 100644 index 0000000..4f6751d --- /dev/null +++ b/src/modules/01_exam/components/Education.vue @@ -0,0 +1,554 @@ + + + + diff --git a/src/modules/01_exam/components/ExamForm.vue b/src/modules/01_exam/components/ExamForm.vue index 699a8d0..85b8e46 100644 --- a/src/modules/01_exam/components/ExamForm.vue +++ b/src/modules/01_exam/components/ExamForm.vue @@ -8,602 +8,23 @@ indicator-color="primary" align="justify" > - - - - - - + + + + - - -
-
- - -
+ + -
- ชื่อ -
- -
-
+ + -
- นามสกุล -
- -
-
- -
- วัน เดือน ปีเกิด(พ.ศ.) - - - -
- - - -
- เพศ -
- -
-
- -
- สถานภาพ -
- -
-
- -
- หมู่โลหิต -
- -
-
- -
- สัญชาติ -
- -
-
- -
- เชื้อชาติ -
- -
-
- -
- ศาสนา -
- -
-
- -
- เบอร์โทรศัพท์ -
- -
-
- -
- อีเมล -
- -
-
-
-
- - - -
-
- เลขประจำตัวประชาชน -
- -
-
-
- ออกให้ ณ จังหวัด - - - -
-
- บัตรประจำตัวเจ้าหน้าที่รัฐ (ถ้ามี) -
- -
-
- -
- วันออกบัตรประชาชน - - - -
- -
- หมดอายุวันที่ - - - -
-
-
- - - - -
-
- ที่อยู่ตามทะเบียนบ้าน -
- -
-
-
- จังหวัด - - - -
-
- เขต/อำเภอ - - - -
-
- แขวง/ตำบล - - - -
-
- รหัสไปรษณีย์ -
- -
-
-
- - -
-
- ที่อยู่ตามทะเบียนบ้าน -
- -
-
-
- จังหวัด -
- -
-
-
- เขต/อำเภอ -
- -
-
-
- แขวง/ตำบล -
- -
-
-
- รหัสไปรษณีย์ -
- -
-
-
- - - - -
-
- ที่อยู่ปัจจุบัน -
- -
-
-
- จังหวัด - - - -
-
- เขต/อำเภอ - - - -
-
- แขวง/ตำบล - - - -
-
- รหัสไปรษณีย์ -
- -
-
-
- - -
-
- ที่อยู่ปัจจุบัน -
- -
-
-
- จังหวัด -
- -
-
-
- เขต/อำเภอ -
- -
-
-
- แขวง/ตำบล -
- -
-
-
- รหัสไปรษณีย์ -
- -
-
-
-
- - - -
-
- วุฒิการศึกษา -
- -
-
-
- สาขา -
- -
-
-
- มหาวิทยาลัย -
- -
-
-
- ระดับการศึกษา -
- -
-
-
- วันที่สำเร็จการศึกษา - - - -
-
- เกรด -
- -
-
-
- ความสามารถพิเศษ -
- -
-
-
-
- - - - -
-
- ใบประกอบวิชาชีพ -
- -
-
-
- เลขที่ -
- -
-
-
- วันที่ใช้งานได้ - - - -
-
- วันที่หมดอายุ - - - -
-
- - - - -
-
- อาชีพ -
- -
-
-
- อายุงาน -
- -
-
-
- ตำแหน่ง -
- -
-
-
- บริษัท -
- -
-
-
- เบอร์โทรบริษัท -
- -
-
-
-
+ + - +
-
+
- diff --git a/src/modules/01_exam/components/Profile.vue b/src/modules/01_exam/components/Profile.vue new file mode 100644 index 0000000..e7d1f3a --- /dev/null +++ b/src/modules/01_exam/components/Profile.vue @@ -0,0 +1,4 @@ + + diff --git a/src/modules/01_exam/interface/request/Certificate.ts b/src/modules/01_exam/interface/request/Certificate.ts deleted file mode 100644 index 76a39d2..0000000 --- a/src/modules/01_exam/interface/request/Certificate.ts +++ /dev/null @@ -1,29 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; - } - - //ข้อมูล - interface RequestItemsObject { - id: string; - name: string; - certiNumber: string; - start: Date; - end: Date; - } - - //columns - interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; - } - - export type { RequestItemsObject, Columns, DataProps }; - \ No newline at end of file diff --git a/src/modules/01_exam/interface/request/Coin.ts b/src/modules/01_exam/interface/request/Coin.ts deleted file mode 100644 index b5d3d05..0000000 --- a/src/modules/01_exam/interface/request/Coin.ts +++ /dev/null @@ -1,27 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - receiveDate: Date; - detail: string; - agency: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Discipline.ts b/src/modules/01_exam/interface/request/Discipline.ts deleted file mode 100644 index 334f2e8..0000000 --- a/src/modules/01_exam/interface/request/Discipline.ts +++ /dev/null @@ -1,29 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - date: Date; - status: string; - level: string; - refNo: string; - refDate: Date; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Document.ts b/src/modules/01_exam/interface/request/Document.ts deleted file mode 100644 index 9e1c218..0000000 --- a/src/modules/01_exam/interface/request/Document.ts +++ /dev/null @@ -1,19 +0,0 @@ -//ข้อมูล -interface RequestItemsObject { - name: String; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns }; diff --git a/src/modules/01_exam/interface/request/Education.ts b/src/modules/01_exam/interface/request/Education.ts index 3b4a37f..d1c190a 100644 --- a/src/modules/01_exam/interface/request/Education.ts +++ b/src/modules/01_exam/interface/request/Education.ts @@ -1,31 +1,30 @@ interface DataProps { - row: RequestItemsObject; - rowIndex: number; + row: RequestItemsObject + rowIndex: number } //ข้อมูล interface RequestItemsObject { - id: string; - level: string; - levelId: string; - name: string; - start: number; - end: number; - education: string; - major: string; + id: string + qualificationId: string + qualification: string + major: string + scores: number | null + name: string + duration: any } //columns interface Columns { [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; + name: String + align: String + label: String + sortable: Boolean + field: String + headerStyle: String + style: String + } } -export type { RequestItemsObject, Columns, DataProps }; +export type { RequestItemsObject, Columns, DataProps } diff --git a/src/modules/01_exam/interface/request/Insignia.ts b/src/modules/01_exam/interface/request/Insignia.ts deleted file mode 100644 index fb7eb81..0000000 --- a/src/modules/01_exam/interface/request/Insignia.ts +++ /dev/null @@ -1,36 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - year: number; - receiveDate: Date; - insigniaType: string; - insigniaTypeId: string; - insignia: string; - insigniaId: string; - no: string; - gazetteNo: string; - volume: string; - book: string; - section: string; - page: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Leave.ts b/src/modules/01_exam/interface/request/Leave.ts deleted file mode 100644 index 5e36e33..0000000 --- a/src/modules/01_exam/interface/request/Leave.ts +++ /dev/null @@ -1,38 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - year: number; - holiday: string; - sick: string; - government: string; - late: string; - other: string; - business: string; - maternity: string; - helpMaternity: string; - ordination: string; - study: string; - international: string; - spouse: string; - rehabilitation: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Other.ts b/src/modules/01_exam/interface/request/Other.ts deleted file mode 100644 index 986ae23..0000000 --- a/src/modules/01_exam/interface/request/Other.ts +++ /dev/null @@ -1,25 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - detail: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Record.ts b/src/modules/01_exam/interface/request/Record.ts deleted file mode 100644 index 2a7235a..0000000 --- a/src/modules/01_exam/interface/request/Record.ts +++ /dev/null @@ -1,27 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - date: Date; - detail: string; - reference: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Salary.ts b/src/modules/01_exam/interface/request/Salary.ts deleted file mode 100644 index f80c788..0000000 --- a/src/modules/01_exam/interface/request/Salary.ts +++ /dev/null @@ -1,33 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - date: Date; - position: string; - positionId: string; - posNo: string; - posNoId: string; - level: string; - levelId: string; - salary: string; - reference: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Talent.ts b/src/modules/01_exam/interface/request/Talent.ts deleted file mode 100644 index dada96a..0000000 --- a/src/modules/01_exam/interface/request/Talent.ts +++ /dev/null @@ -1,27 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - side: string; - detail: string; - note: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Train.ts b/src/modules/01_exam/interface/request/Train.ts deleted file mode 100644 index 107895e..0000000 --- a/src/modules/01_exam/interface/request/Train.ts +++ /dev/null @@ -1,31 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - course: string; - start: Date; - end: Date; - location: string; - detail: string; - organize: string; - gen: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/request/Work.ts b/src/modules/01_exam/interface/request/Work.ts deleted file mode 100644 index 4631317..0000000 --- a/src/modules/01_exam/interface/request/Work.ts +++ /dev/null @@ -1,28 +0,0 @@ -interface DataProps { - row: RequestItemsObject; - rowIndex: number; -} - -//ข้อมูล -interface RequestItemsObject { - id: string; - start: Date; - end: Date; - detail: string; - reference: string; -} - -//columns -interface Columns { - [index: number]: { - name: String; - align: String; - label: String; - sortable: Boolean; - field: String; - headerStyle: String; - style: String; - }; -} - -export type { RequestItemsObject, Columns, DataProps }; diff --git a/src/modules/01_exam/interface/response/Certificate.ts b/src/modules/01_exam/interface/response/Certificate.ts deleted file mode 100644 index a3d4017..0000000 --- a/src/modules/01_exam/interface/response/Certificate.ts +++ /dev/null @@ -1,11 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - date: Date; - status: string; - level: string; - refNo: string; - refDate: Date; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Coin.ts b/src/modules/01_exam/interface/response/Coin.ts deleted file mode 100644 index ea73301..0000000 --- a/src/modules/01_exam/interface/response/Coin.ts +++ /dev/null @@ -1,9 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - receiveDate: Date; - detail: string; - agency: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Discipline.ts b/src/modules/01_exam/interface/response/Discipline.ts deleted file mode 100644 index a3d4017..0000000 --- a/src/modules/01_exam/interface/response/Discipline.ts +++ /dev/null @@ -1,11 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - date: Date; - status: string; - level: string; - refNo: string; - refDate: Date; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Document.ts b/src/modules/01_exam/interface/response/Document.ts deleted file mode 100644 index 4365fe3..0000000 --- a/src/modules/01_exam/interface/response/Document.ts +++ /dev/null @@ -1,6 +0,0 @@ -//ข้อมูล -interface ResponseObject { - name: String; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Education.ts b/src/modules/01_exam/interface/response/Education.ts index 2910198..e9d22c0 100644 --- a/src/modules/01_exam/interface/response/Education.ts +++ b/src/modules/01_exam/interface/response/Education.ts @@ -1,13 +1,12 @@ //ข้อมูล interface ResponseObject { - id: string; - level: string; - levelId: string; - name: string; - start: number; - end: number; - education: string; - major: string; + id: string + qualificationId: string + qualification: string + major: string + scores: number | null + name: string + duration: any } -export type { ResponseObject }; +export type { ResponseObject } diff --git a/src/modules/01_exam/interface/response/Insignia.ts b/src/modules/01_exam/interface/response/Insignia.ts deleted file mode 100644 index f42502d..0000000 --- a/src/modules/01_exam/interface/response/Insignia.ts +++ /dev/null @@ -1,18 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - year: number; - receiveDate: Date; - insigniaType: string; - insigniaTypeId: string; - insignia: string; - insigniaId: string; - no: string; - gazetteNo: string; - volume: string; - book: string; - section: string; - page: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Leave.ts b/src/modules/01_exam/interface/response/Leave.ts deleted file mode 100644 index 320552a..0000000 --- a/src/modules/01_exam/interface/response/Leave.ts +++ /dev/null @@ -1,20 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - year: number; - holiday: string; - sick: string; - government: string; - late: string; - other: string; - business: string; - maternity: string; - helpMaternity: string; - ordination: string; - study: string; - international: string; - spouse: string; - rehabilitation: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Other.ts b/src/modules/01_exam/interface/response/Other.ts deleted file mode 100644 index c2469ac..0000000 --- a/src/modules/01_exam/interface/response/Other.ts +++ /dev/null @@ -1,7 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - detail: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Record.ts b/src/modules/01_exam/interface/response/Record.ts deleted file mode 100644 index 5ed887b..0000000 --- a/src/modules/01_exam/interface/response/Record.ts +++ /dev/null @@ -1,9 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - date: Date; - detail: string; - reference: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Salary.ts b/src/modules/01_exam/interface/response/Salary.ts deleted file mode 100644 index e8bc9ed..0000000 --- a/src/modules/01_exam/interface/response/Salary.ts +++ /dev/null @@ -1,15 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - date: Date; - position: string; - positionId: string; - posNo: string; - posNoId: string; - level: string; - levelId: string; - salary: string; - reference: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Talent.ts b/src/modules/01_exam/interface/response/Talent.ts deleted file mode 100644 index 7f6ec19..0000000 --- a/src/modules/01_exam/interface/response/Talent.ts +++ /dev/null @@ -1,9 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - side: string; - detail: string; - note: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Train.ts b/src/modules/01_exam/interface/response/Train.ts deleted file mode 100644 index 2566c6a..0000000 --- a/src/modules/01_exam/interface/response/Train.ts +++ /dev/null @@ -1,13 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - course: string; - start: Date; - end: Date; - location: string; - detail: string; - organize: string; - gen: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/interface/response/Work.ts b/src/modules/01_exam/interface/response/Work.ts deleted file mode 100644 index cb0b0a1..0000000 --- a/src/modules/01_exam/interface/response/Work.ts +++ /dev/null @@ -1,10 +0,0 @@ -//ข้อมูล -interface ResponseObject { - id: string; - start: Date; - end: Date; - detail: string; - reference: string; -} - -export type { ResponseObject }; diff --git a/src/modules/01_exam/store.ts b/src/modules/01_exam/store.ts index 26f5d89..c0ac940 100644 --- a/src/modules/01_exam/store.ts +++ b/src/modules/01_exam/store.ts @@ -4,14 +4,17 @@ import { defineStore } from 'pinia' export const useExamDataStore = defineStore('exam', () => { interface exam { main: { columns: String[] } + education: { columns: String[] } } const examData = ref({ - main: { columns: [] } + main: { columns: [] }, + education: { columns: [] } }) const changeExamColumns = (system: String, val: String[]) => { if (system == 'main') examData.value.main.columns = val + if (system == 'education') examData.value.education.columns = val localStorage.setItem('exam', JSON.stringify(examData.value)) } diff --git a/src/plugins/FullLoader.vue b/src/plugins/FullLoader.vue new file mode 100644 index 0000000..c517d7f --- /dev/null +++ b/src/plugins/FullLoader.vue @@ -0,0 +1,21 @@ + + + + diff --git a/src/plugins/axios.ts b/src/plugins/axios.ts new file mode 100644 index 0000000..79bba4e --- /dev/null +++ b/src/plugins/axios.ts @@ -0,0 +1,25 @@ +import axios from "axios" +import config from "process" +// import { dotnetPath } from "../path/axiosPath"; +// import { getToken } from "@baloise/vue-keycloak"; +import keycloak from "../plugins/keycloak" + +const axiosInstance = axios.create({ + withCredentials: false, +}) + +// axiosInstance.defaults.baseURL = dotnetPath; +axiosInstance.interceptors.request.use( + async (config) => { + const token = await keycloak.token + config.headers = { + Authorization: `Bearer ${token}`, + } + return config + }, + (error) => { + Promise.reject(error) + } +) + +export default axiosInstance diff --git a/src/plugins/http.ts b/src/plugins/http.ts new file mode 100644 index 0000000..494c9aa --- /dev/null +++ b/src/plugins/http.ts @@ -0,0 +1,45 @@ +import Axios, { type AxiosRequestConfig, type AxiosResponse } from "axios"; +import keycloak from "./keycloak"; + +const http = Axios.create({ + timeout: 1000000000, // เพิ่มค่า timeout + headers: { + "X-Requested-With": "XMLHttpRequest", + }, +}); + +http.interceptors.request.use( + async function (config: AxiosRequestConfig) { + await keycloak.updateToken(1); + config.headers = config.headers ?? {}; + const token = keycloak.token; + // const token = localStorage.getItem("access_token") + // const token = + // "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIxU2VKV2dVRFVlNXZwNS13Q1ZHaG9lT2l4bDJTTkdKemthLU5ZN211NXZJIn0.eyJleHAiOjE2NzI0MTI1NDksImlhdCI6MTY3MjM3NjU0OSwiYXV0aF90aW1lIjoxNjcyMzc2NTQ5LCJqdGkiOiI1MTVhY2IwNC1jODQ3LTQzM2YtYjUxOC03ODUzMzJhY2ZjNWYiLCJpc3MiOiJodHRwczovL2tleWNsb2FrLmZyYXBwZXQuc3lub2xvZ3kubWUvYXV0aC9yZWFsbXMvYm1hLWVociIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJlZmM5YjRlMC1mZGU2LTQ1NDQtYmU1OS1lMTA0MjEwMjUzZjAiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJibWEtZWhyIiwibm9uY2UiOiI3NjMyMGI3ZS0xZTMxLTQ5ODYtYWIzOC1iOTUyYjFlODY3OGYiLCJzZXNzaW9uX3N0YXRlIjoiMDZlNTBkZjktNzAyNi00ZGIwLTkxMjgtMWY3Y2FiYTRkNDEyIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwczovL2xvY2FsaG9zdDo3MDA2Il0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJkZWZhdWx0LXJvbGVzLWJtYS1laHIiLCJvZmZsaW5lX2FjY2VzcyIsImFkbWluIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBlbWFpbCBwcm9maWxlIiwic2lkIjoiMDZlNTBkZjktNzAyNi00ZGIwLTkxMjgtMWY3Y2FiYTRkNDEyIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInJvbGUiOlsiZGVmYXVsdC1yb2xlcy1ibWEtZWhyIiwib2ZmbGluZV9hY2Nlc3MiLCJhZG1pbiIsInVtYV9hdXRob3JpemF0aW9uIl0sIm5hbWUiOiJTeXN0ZW0gQWRtaW5pc3RyYXRvciIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiZ2l2ZW5fbmFtZSI6IlN5c3RlbSIsImZhbWlseV9uYW1lIjoiQWRtaW5pc3RyYXRvciIsImVtYWlsIjoiYWRtaW5AbG9jYWxob3N0In0.xmfJ3pzI-jLYsaiFXyjTW7gfAEpvUmMVsp9BsB1CfRCVOKiGBbuZhnQY8W-1SWVAx1NjJ55L-zMHPK6hk1dRPLbEse3DlIBZw04W9j8m-Wz3eqdHf_UCjmrXb8qAwkeq0Iaxq9mVfJJeQWeKhFBi-Ff8ek4hCXTYDICXS8ny_BaC5WkyrefHQ2xBqQjwRyoxsg4IoVMjXYNb8L9A-4BNlRfs928SqgFYCRlF5h6zw_rC0XoLrGTmqeacBdpey-r3j2g_lTqWy8mQg2T9s65IDqW3kFPOsr0SVO88sjlFbN9Et0L57RmiqORk_RwzbWg-_Yb6dOuolXsnjBOhOoTzkA"; + if (token) config.headers.Authorization = `Bearer ${token}`; + return config; + }, + function (error: any) { + return Promise.reject(error); + } +); + +http.interceptors.response.use( + function (response: AxiosResponse) { + return response; + }, + function (error: any) { + if (typeof error !== undefined) { + // eslint-disable-next-line no-prototype-builtins + if (error.hasOwnProperty("response")) { + if (error.response.status === 401 || error.response.status === 403) { + // Store.commit("SET_ERROR_MESSAGE", error.response.data.message); + // Store.commit("REMOVE_ACCESS_TOKEN") + } + } + } + return Promise.reject(error); + } +); + +export default http; diff --git a/src/plugins/keycloak.ts b/src/plugins/keycloak.ts new file mode 100644 index 0000000..5d64de9 --- /dev/null +++ b/src/plugins/keycloak.ts @@ -0,0 +1,23 @@ +/** + * front connect to keycloak + */ +import Keycloak from "keycloak-js"; +// import config from "../app.config"; +// import http from "../shared/http"; +// import router from "../router"; + +const initOptions = { + // url: "https://keycloak.frappet.synology.me/auth/", + // realm: "bma-ehr", + // clientId: "bma-ehr-vue3", + url: "https://identity.frappet.com/", + realm: "bma-ehr", + clientId: "bma-ehr-vue3", +}; //option keycloak ที่จะ connect + +const keycloak = Keycloak(initOptions); + +keycloak.onAuthSuccess = () => {}; //เพิ่มlogin สำเร็จจะมาทำฟังก์ชันนี้ + +await keycloak.init({ checkLoginIframe: false }); //ทำการ connect keycloak +export default keycloak;