This commit is contained in:
2024-04-19 20:09:40 +07:00
commit 5ba63b0869
64 changed files with 111785 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
node_modules
.DS_Store

29
README.md Normal file
View File

@@ -0,0 +1,29 @@
# vote67
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Run your unit tests
```
npm run test:unit
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

19
jsconfig.json Normal file
View File

@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

26066
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

75
package.json Normal file
View File

@@ -0,0 +1,75 @@
{
"name": "vote67",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@mdi/font": "5.9.55",
"@trpc/client": "^10.45.2",
"roboto-fontface": "*",
"vue": "^3.2.13",
"vue-router": "^4.3.0",
"vuetify": "^3.0.0-beta.0",
"vuex": "^4.0.0",
"webfontloader": "^1.0.0"
},
"devDependencies": {
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-plugin-unit-jest": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"@vue/test-utils": "^2.0.0-0",
"@vue/vue3-jest": "^27.0.0-alpha.1",
"babel-eslint": "^10.1.0",
"babel-jest": "^27.0.6",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.0.3",
"jest": "^27.0.5",
"prettier": "^2.4.1",
"sass": "^1.32.7",
"sass-loader": "^12.0.0",
"vue-cli-plugin-vuetify": "~2.5.8",
"webpack-plugin-vuetify": "^2.0.0-alpha.0"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {},
"overrides": [
{
"files": [
"**/__tests__/*.{j,t}s?(x)",
"**/tests/unit/**/*.spec.{j,t}s?(x)"
],
"env": {
"jest": true
}
}
]
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
],
"jest": {
"preset": "@vue/cli-plugin-unit-jest/presets/no-babel"
}
}

7981
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

28
public/index.html Normal file
View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@100;200;300;400;500;600;700&display=swap"
rel="stylesheet">
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

117
src/App.vue Normal file
View File

@@ -0,0 +1,117 @@
<template>
<v-app>
<v-main class="bg-main">
<div class="d-block w-100 text-right pa-3">
<span class="img-logo">
<router-link to="/">
<span class="float-left">
<v-img
:aspect-ratio="1"
src="./assets/logo.png"
width="80"
></v-img></span></router-link
></span>
<span
><v-btn
icon="mdi-home-variant-outline"
variant="text"
href="/"
></v-btn
><v-btn icon="mdi-account-outline" variant="text"></v-btn>
<v-btn variant="text"> Sign In </v-btn>
<v-btn elevated color="#F4C03F"> Get Started </v-btn></span
>
</div>
<router-view />
</v-main>
</v-app>
</template>
<script>
import { client } from "./utils/trpc.ts";
console.log(client);
// import MainVote from "./components/MainVote.vue";
export default {
name: "App",
components: {
// MainVote,
},
data: () => ({
//
}),
};
</script>
<style>
.img-logo {
position: absolute;
left: 0;
top: 0;
}
* {
font-family: "IBM Plex Sans Thai", sans-serif;
}
.text-title {
font-size: 40px;
font-weight: 500;
/* font: normal normal medium 47px/77px IBM Plex Sans Thai; */
}
.text-normal {
font-size: 30px;
}
.text-subtitle {
font-size: 25px;
font-weight: 600;
}
.text-sub {
font-size: 24px;
font-weight: 400;
}
.text-sub2 {
font-size: 20px;
/* font-weight: 500; */
}
.text-sub3 {
font-size: 18px;
/* font-weight: 500; */
}
.text-small {
font-size: 16px;
}
.txt-black {
color: #37332f;
/* color: black; */
}
@media only screen and (min-width: 0px) and (max-width: 700px) {
.img-logo {
display: none;
}
.text-title {
font-size: 28px;
font-weight: 500;
/* font: normal normal medium 47px/77px IBM Plex Sans Thai; */
}
.text-normal {
font-size: 25px;
}
.text-subtitle {
font-size: 22px;
font-weight: 600;
}
.text-sub {
font-size: 23px;
font-weight: 400;
}
.text-sub2 {
font-size: 20px;
/* font-weight: 500; */
}
.text-sub3 {
font-size: 18px;
/* font-weight: 500; */
}
}
</style>

BIN
src/assets/Group 23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/assets/Group 42.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/assets/Group 43.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/assets/Group 44.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/assets/Group 51.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
src/assets/Group 7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/assets/Group 9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/assets/Path 14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
src/assets/Path 18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/assets/Path 69.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
src/assets/Rectangle -1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
src/assets/Rectangle -2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
src/assets/Rectangle -3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
src/assets/Rectangle -4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
src/assets/Rectangle 3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/Rectangle 36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
src/assets/Rectangle 37.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/assets/Rectangle 39.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
src/assets/greenimg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
src/assets/logo-title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

6
src/assets/logo.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="488" height="424" viewBox="0 0 488 424" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M249.126 95.017L151.843 263.694L243.959 423.473L365.966 211.973L487.918 0.473206H303.629L249.126 95.017Z" fill="#1697F6"/>
<path d="M122.007 211.973L128.396 223.096L219.402 65.2635L256.793 0.473206H243.959H0L122.007 211.973Z" fill="#AEDDFF"/>
<path d="M303.629 0.473206C349.743 152.355 243.959 423.473 243.959 423.473L151.843 263.694L303.629 0.473206Z" fill="#1867C0"/>
<path d="M256.793 0.473206C62.5042 0.473206 128.397 223.096 128.397 223.096L256.793 0.473206Z" fill="#7BC6FF"/>
</svg>

After

Width:  |  Height:  |  Size: 598 B

View File

@@ -0,0 +1,107 @@
<template>
<div>
<div class="text-normal mb-5">
<div class="d-block w-100 text-normal txt-black">
<v-row align="center" justify="center">
<v-col cols="auto" sm="12" md="" align="center">
<v-img
:aspect-ratio="1"
src="../assets/logo-title.png"
width="600"
></v-img>
</v-col>
<v-col align-self="center" align="center">
<div style="width: 90%">
สว. ระบบใหม <b>แบงกลมอาช</b> และ
<b>เลอกกนเอง</b>
กษาใหพรอมแลวมารวมเปนสวนหนงของกระบวนการเลอก สว.
</div>
<v-btn
elevated
color="#B2C573"
class="mt-4"
style="color: #0f470f"
size="large"
href="#started"
>
มาเรมกนเลย
</v-btn>
</v-col>
</v-row>
</div>
</div>
<div style="position: relative" class="bg-curve" id="started">
<v-row style="height: 100%" align="center" class="text-center">
<v-col cols="12" md="6">
<div style="position: relative">
<v-btn
elevated
color="#DD6C31"
class="text-normal"
stacked
height="110"
to="/check"
>
ตรวจสอบคณสมบ
<br />
การเป สว.
<v-img
:aspect-ratio="1"
src="../assets/Group 9.png"
width="70"
style="position: absolute; bottom: -25px; left: -20px"
></v-img>
</v-btn>
</div>
</v-col>
<v-col cols="12" md="6">
<v-btn
elevated
color="#DD6C31"
class="text-normal"
stacked
height="110"
to="/forms"
>
<v-img
:aspect-ratio="1"
src="../assets/Group 23.png"
width="80"
style="position: absolute; bottom: -30px; right: 0px"
></v-img>
แสดงตนเปนผสมคร
</v-btn>
</v-col>
</v-row>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
.text-normal .v-btn--size-large {
--v-btn-height: 70px;
}
.v-btn {
border-radius: 20px;
}
.text-normal .v-btn__content {
font-size: 30px;
font-weight: 400;
}
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.bg-curve {
background-image: url("/src/assets/Path\ 14.png");
height: 400px;
background-position: center top;
/* background: #2b2b26 0% 0% no-repeat padding-box; */
}
</style>

View File

@@ -0,0 +1,43 @@
<template>
<div class="bg-main">
<Header />
<Section2Green />
<Section3Base />
<Section4White/>
<Section5Green/>
<Section6Base/>
<Section7GreenTab/>
<Section8Base/>
</div>
</template>
<script>
import Header from "./HeaderHome.vue";
import Section2Green from "./Section2Green.vue";
import Section3Base from "./Section3Base.vue";
import Section4White from "./Section4White.vue";
import Section5Green from "./Section5Green.vue";
import Section6Base from "./Section6Base.vue";
import Section7GreenTab from "./Section7GreenTab.vue";
import Section8Base from "./Section8Base.vue";
export default {
components: {
Header,
Section2Green,
Section3Base,
Section4White,
Section5Green,
Section6Base,
Section7GreenTab,
Section8Base
},
};
</script>
<style >
.bg-main {
background: #f6ebd5;
min-height: 100vh;
height:auto;
}
</style>

View File

@@ -0,0 +1,50 @@
<template>
<div style="position: relative" class="bg-green-curve text-normal">
<div class="text-center text-white py-5">
<div class="text-title my-3">มาศกษากอนจะเป สว.</div>
<v-row>
<v-col class="border-green">
<v-icon icon="mdi-circle" color="#B2C573"></v-icon>
<div>ใครสมครสว.ไดาง</div>
</v-col>
<v-col class="border-green">
<v-icon icon="mdi-circle" color="#B2C573"></v-icon>
<div>หนาทของสว.</div>
</v-col>
<v-col>
<v-icon icon="mdi-circle" color="#B2C573"></v-icon>
<div>กระบวนการเลอก สมาชกวสภา</div>
</v-col>
</v-row>
<v-row>
<v-col>
<v-icon icon="mdi-circle" color="#B2C573"></v-icon>
<div>นตอนการเลอกสว.</div>
</v-col>
<v-col>
<v-icon icon="mdi-circle" color="#B2C573"></v-icon>
<div>กลมอาช สมครรบเลอกสว.</div>
</v-col>
</v-row>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
.bg-green-curve {
background-image: url("/src/assets/Rectangle\ 3.png");
min-height: 600px;
height: auto;
background-position: center bottom;
/* background: #2b2b26 0% 0% no-repeat padding-box; */
}
.border-green{
border-right: 5px solid #b2c573;
}
</style>

View File

@@ -0,0 +1,21 @@
<template>
<div style="position: relative" class="text-normal mb-10">
<div class="text-center txt-black py-5">
<div class="text-title my-3">ใครสมครสว.ไดาง</div>
<div>
สมาชกวสภาตองไมกใฝหรอยอมตนอยภายใตของพรรคการเมองใดๆ
โดยมณสมบงน
</div>
<div>เชคคณสมบนเลย !</div>
<v-btn elevated color="#DD6C31" class="text-normal mt-4" stacked height="80">
ตรวจสอบคณสมบการเป สว.
</v-btn>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
</style>

View File

@@ -0,0 +1,64 @@
<template>
<div style="position: relative" class="bg-white text-normal pb-10">
<div class="text-center txt-black py-10 ma-auto" style="width: 90%">
<div class="text-title my-3">หนาทของสว.</div>
<v-row align="center" justify="center">
<v-col
class="border-dot"
align="center"
justify="center"
cols="12"
sm="12"
md="4"
>
<v-img
:aspect-ratio="1"
src="../assets/Group 42.png"
width="70"
></v-img>
<div class="text-subtitle my-3">จารณากฎหมาย</div>
<div class="text-sub">
จารณาและกลนกรองกฎหมาย กลนกรองพระราชบญญ อนพระราชกำหนด
แกไขเพมเตมรฐธรรมน
</div>
</v-col>
<v-col class="border-dot" align="center" cols="12" sm="12" md="4">
<v-img
:aspect-ratio="1"
src="../assets/Group 43.png"
width="70"
></v-img>
<div class="text-subtitle my-3">ตรวจสอบการทำงานรฐบาล</div>
<div class="text-sub">
ควบคมการบรหารราชการแผนด งกระทถาม
เปดอภปรายทวไปในวสภา หรอทประชมรฐสภา การตงกรรมาธการ
</div>
</v-col>
<v-col align="center" cols="12" sm="12" md="4">
<v-img
:aspect-ratio="1"
src="../assets/Group 44.png"
width="70"
></v-img>
<div class="text-subtitle my-3">เคาะเลอกคนมาตรวจสอบรฐบาล</div>
<div class="text-sub">
ใหคำแนะนำหรอความเหนชอบใหคคล ดำรงตำแหนงในองคกรตามรฐธรรมน
</div>
</v-col>
</v-row>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
.border-dot {
border-right: 3px dashed #b2c573;
}
.bg-white {
background-color: white;
height: auto;
}
</style>

View File

@@ -0,0 +1,84 @@
<template>
<div style="position: relative" class="bg-green-full text-normal pb-10">
<!-- <v-img :aspect-ratio="1" src="../assets/greenimg.png" width="100%"></v-img> -->
<div class="text-center txt-black py-10 ma-auto" style="width: 90%">
<div class="text-title my-3">กระบวนการเลอกสมาชกวสภา</div>
<v-timeline align="start" side="end" class="text-sub">
<v-timeline-item fill-dot size="large" dot-color="white">
<template v-slot:icon>
<span style="color: #4c884c;">1</span>
</template>
<div class="d-flex">
<div>กกต. ประกาศกำหนดว และเวลารบสมคร</div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="#4c884c">
<template v-slot:icon>
<span>2</span>
</template>
<div class="d-flex">
<div>เปดสมครรบเลอกสว.โดยม ระยะเวลารบสมคร 5 - 7 </div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="white">
<template v-slot:icon>
<span style="color: #4c884c;">3</span>
</template>
<div class="d-flex">
<div>ประกาศบญช รายชอผสมคร</div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="#4c884c">
<template v-slot:icon>
<span>4</span>
</template>
<div class="d-flex">
<div>เลอกสว. ระดบอำเภอ (ภายใน 20 )</div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="white">
<template v-slot:icon>
<span style="color: #4c884c;">5</span>
</template>
<div class="d-flex">
<div>เลอกสว. ระดบจงหว (+ 7 )</div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="#4c884c">
<template v-slot:icon>
<span>6</span>
</template>
<div class="d-flex">
<div>เลอกสว.ระดบประเทศ (+ 10 )</div>
</div>
</v-timeline-item>
<v-timeline-item fill-dot size="large" dot-color="white">
<template v-slot:icon>
<span style="color: #4c884c;" >7</span>
</template>
<div class="d-flex">
<div>กกต. ประกาศผล การเลอกสว.</div>
</div>
</v-timeline-item>
</v-timeline>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
.border-dot {
border-right: 3px dashed #b2c573;
}
.bg-green-full {
background-color: #b2c573;
height: auto;
}
</style>

View File

@@ -0,0 +1,243 @@
<template>
<div style="position: relative" class="text-normal pb-10">
<!-- <v-img :aspect-ratio="1" src="../assets/greenimg.png" width="100%"></v-img> -->
<div class="text-center txt-black py-10 ma-auto" style="width: 90%">
<div class="text-title my-3">นตอนการเลอกสว.</div>
<v-row class="text-left">
<v-col cols="12" md="6">
<v-row align="center"
justify="center" >
<v-col cols="12" >
<!-- <v-icon icon="mdi-flag-triangle" color="#F4C03F"></v-icon> -->
<div class="line-flag">
<div class="text-subtitle">
ประกาศใหการเลอกสว.
<v-icon size="50" color="#F4C03F">mdi-menu-left</v-icon>
<v-avatar color="#F4C03F"> 1</v-avatar>
</div>
<div class="text-sub2">
ภายใน 5 นนบตงแตนทพระราชกฤษฎกาใหการเลอกสว.
ใชงค ใหกกต.ประกาศกำหนดวนเลอกอระดบอำเภอ ระดบจงหว
ระดบประเทศ
</div>
<!-- <br> -->
</div>
</v-col>
<!-- ------------------------------- -->
<v-col cols="12" md="5">
<div
style="
background-color: white;
border-radius: 20px;
padding: 20px;
text-align: center;
"
>
<div class="text-sub3">
สมครรบเลอกฯ เลอกกนเองในกล
</div>
<div class="text-sub3 text-red">
เลอกสมครได 1 กลมอาช และ 1 อำเภอเทาน
</div>
</div>
</v-col>
<v-col cols="12" md="7">
<div>
<div class="text-subtitle">
การสมครรบเลอกสว.
<v-icon size="50" color="#37332F">mdi-menu-left</v-icon>
<v-avatar color="#37332F"> 2</v-avatar>
</div>
<div class="text-sub2">
บสมครไมเก 15 นนบแตนทพระราชกฤษฎกาให
การเลอกสว.ใชงค และกำหนดวนรบสมครไมอยกว 5
แตองไมเก 7
</div>
</div>
</v-col>
<!-- ------------------------------- -->
<v-col cols="12" md="5">
<div
style="
background-color: white;
border-radius: 20px;
padding: 20px;
text-align: center;
"
>
<div class="text-sub3">
สมครรบเลอกฯ เลอกกนเองในกล
</div>
<div class="text-sub3 text-red">
เลอกตนเองได แตจะลงคะแนน ใหคคลใดเก 1 คะแนนไมได
</div>
<div class="text-sub3 mt-3">
สมครรบเลอกฯ เลอกผสมคร กลมอนทอยในสายเดยวก
</div>
<div class="text-sub3 text-red">
กลมละ 1 คน แตจะเลอกกล เดยวกนหรอเลอกตนเองไมได
</div>
</div>
</v-col>
<v-col cols="12" md="7">
<div>
<div class="text-subtitle">
<v-icon size="50" color="#B2C573">mdi-menu-right</v-icon>
<v-avatar color="#B2C573" class="mr-2"> 3</v-avatar>
การเลอกสว. ระดบอำเภอ
</div>
<div class="text-sub2">
<div style="color: #4c884c; font-weight: 500">
การเลอกรอบท 1 เลอกกลมบคคลในกลมเดยวก
</div>
ไดคะแนนสงสดลำดบท 1-5
เปนผไดบเลอกขนตนของกลมน และเขาไปเลอกรอบ 2
อไป
</div>
<br>
<div class="text-sub2">
<div style="color: #4c884c; font-weight: 500">
การเลอกรอบท 2 เลอกกลมบคคลในสายเดยวก
</div>
ไดคะแนนสงสดลำด 3 ลำดบแรก ของแตละกล
เปนผไดบเลอกระดบอำเภอ สำหรบกลมน
</div>
</div>
</v-col>
</v-row>
</v-col>
<!-- ------------------------------------------------------------------------------------------------------------------------------- -->
<v-col>
<v-row>
<v-col cols="12" md="7">
<div>
<div class="text-subtitle">
การเลอกสว. ระดบจงหว
<v-icon size="50" color="#dd6c31">mdi-menu-left</v-icon>
<v-avatar color="#dd6c31"> 4</v-avatar>
</div>
<div class="text-sub2">
<div style="color: #dd6c31; font-weight: 500">
การเลอกรอบท 1 เลอกกลมบคคลในกลมเดยวก
</div>
ไดคะแนนสงสดลำดบท 1-5
เปนผไดบเลอกขนตนของกลมน และเขาไปเลอกรอบ 2
อไป
</div>
<div class="text-sub2">
<div style="color: #dd6c31; font-weight: 500">
การเลอกรอบท 2 เลอกกลมบคคลในสายเดยวก
</div>
ไดคะแนนสงสดลำด 2 ลำดบแรก ของแตละกล
เปนผไดบเลอกระดบจงหว สำหรบกลมน
</div>
</div>
</v-col>
<v-col cols="12" md="5">
<div
style="
background-color: white;
border-radius: 20px;
padding: 20px;
text-align: center;
"
>
<div class="text-sub3">
สมครรบเลอกฯ เลอกกนเองในกล
</div>
<div class="text-sub3 text-red">
เลอกตนเองได แตจะลงคะแนน ใหคคลใดเก 1 คะแนนไมได
</div>
<div class="text-sub3 mt-3">
สมครรบเลอกฯ เลอกผสมคร กลมอนทอยในสายเดยวก
</div>
<div class="text-sub3 text-red">
กลมละ 1 คน แตจะเลอกกล เดยวกนหรอเลอกตนเองไมได
</div>
</div>
</v-col>
</v-row>
<v-row>
<v-col cols="12" md="7">
<div>
<div class="text-subtitle">การเลอกสว. ระดบประเทศ
<v-icon size="50" color="#1b76ba">mdi-menu-left</v-icon>
<v-avatar color="#1b76ba"> 5</v-avatar></div>
<div class="text-sub2">
<div style="color: #1b76ba; font-weight: 500">
การเลอกรอบท 1 เลอกกลมบคคลในกลมเดยวก
</div>
ไดคะแนนสงสดลำดบท 1-40
เปนผไดบเลอกขนตนของกลมน และเขาไปเลอกรอบ 2
อไป
</div>
<br>
<div class="text-sub2">
<div style="color: #1b76ba; font-weight: 500">
การเลอกรอบท 2 เลอกกลมบคคลในสายเดยวก
</div>
ไดคะแนนสงสดลำด 1-10 เปนสว. และ ลำดบท 11-15
อยในบญชสำรองของกลมน
</div>
</div>
</v-col>
<v-col cols="12" md="5">
<div
style="
background-color: white;
border-radius: 20px;
padding: 20px;
text-align: center;
"
>
<div class="text-sub3">
สมครรบเลอกฯ เลอกกนเอง ในกลมไดไมเก 10 คน
</div>
<div class="text-sub3 text-red">
เลอกตนเองกได แตจะลงคะแนน ใหคคลใดเก 1 คะแนนไมได
</div>
<div class="text-sub3 mt-3">
สมครรบเลอกฯ เลอกผสมคร กลมอนทอยในสายเดยวก
</div>
<div class="text-sub3 text-red">
<div><b>กลมละไมเก 5 คน</b></div>
แตจะเลอกกลมเดยวก หรอเลอกตนเองไมได
</div>
</div>
</v-col>
<v-col cols="12">
<div class="text-subtitle">ประกาศผลเลอกสว. <v-icon size="50" color="#4C884C">mdi-menu-left</v-icon>
<v-avatar color="#4C884C"> 6</v-avatar></div>
<div class="text-sub2">
เมอกกต. ไดบรายงานจากผอำนวยการการเลอกระดบประเทศแล
รอไวอยางนอยไมเก 5 เมอพนเวลาดงกลาวแล กกต.
เหนวาการเลอกเปนไปโดยถกตองสจร และเทยงธรรม
ใหประกาศผลการเลอกในราชกจจานเบกษา
</div>
</v-col>
</v-row>
</v-col>
</v-row>
</div>
</div>
</template>
<script>
export default {};
</script>
<style>
.line-flag{
border-left: 3px solid #37332F;
padding-left: 20px;
}
.bg-darkgreen-full {
background-color: #4c884c;
height: auto;
}
</style>

View File

@@ -0,0 +1,100 @@
<template>
<div style="position: relative" class="bg-green-full text-normal py-7">
<div id="scroll-container">
<div id="scroll-text" class="text-sub">
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมบรหารราชการแผนดนและความมนคง
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมกฎหมายกระบวนการยธรรม
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมการศกษา
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมการสาธารณส
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมอาชพทำนา ปลกพชลมล
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมอาชพทำสวน าไม ปศตว ประมง
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมพนกงานหรอลกจางของบคคล(ไมใชหนวยงานร)
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผประกอบอาชพดานสงแวดลอม งเมอง อสงหารมทรพยและสาธารณปโภค ทรพยากรธรรมชาต พลงงาน
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผประกอบกจการ หร SME
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผประกอบธรกจหรออาชพดานการทองเทยว
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผประกอบอตสาหกรรม
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมสตร
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผงอาย คนพการหรอทพพลภาพ กลมชาตนธ กลมอตลกษณ
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมศลปะ ฒนธรรม ดนตร การแสดงและบนเท
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมประชาสงคม องคกรสาธารณประโยชน
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมนกกฬา อสารมวลชน สรางสรรควรรณกรรม
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมผประกอบวชาช ประกอบอาชพอสระ
<v-icon icon="mdi-circle" size="20"></v-icon>
กลมอนๆ
<v-icon icon="mdi-circle" size="20"></v-icon>
</div>
</div>
</div>
</template>
<script>
export default {};
</script>
<style lang="scss">
#scroll-container {
overflow: hidden;
display: inline-block;
white-space: nowrap;
}
#scroll-text {
/* animation properties */
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
-moz-animation: my-animation 50s linear infinite;
-webkit-animation: my-animation 60s linear infinite;
animation: my-animation 60s linear infinite;
}
/* for Firefox */
@-moz-keyframes my-animation {
from {
-moz-transform: translateX(100%);
}
to {
-moz-transform: translateX(-100%);
}
}
/* for Chrome */
@-webkit-keyframes my-animation {
from {
-webkit-transform: translateX(100%);
}
to {
-webkit-transform: translateX(-100%);
}
}
@keyframes my-animation {
from {
-moz-transform: translateX(100%);
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
to {
-moz-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
</style>

View File

@@ -0,0 +1,125 @@
<template>
<div style="position: relative" class="text-normal pb-10">
<!-- <v-img :aspect-ratio="1" src="../assets/greenimg.png" width="100%"></v-img> -->
<div class="text-center txt-black py-10 ma-auto" style="width: 90%">
<!-- <div class="text-title my-3">นตอนการเลอกสว.</div> -->
<br />
<v-row>
<v-col cols="12" md="6">
<div style="width: 90%; margin: auto">
<div class="text-title">กลมอาชพผสมครรบเลอกสว.</div>
<br />
<div>
กคนทณสมบและไมกษนะตองหาม
ทธสมครรบเลอกเปนสว. ในกลมใดกลมหน ในกลมอาช 20
กล งน.
</div>
</div>
</v-col>
<v-col cols="12" md="6">
<v-card
class="text-sub mx-auto"
color="#F4C03F"
variant="elevated"
style="width: 90%; margin: auto"
rounded="xl"
min-height="400"
>
<v-card-item>
<div class="text-right text-sub2">{{ count + 1 }} / 4</div>
<div
class="py-20 text-left my-4"
v-for="(item, k) in listItem()"
:key="k"
>
<v-avatar color="white" size="small"
><span style="font-size: 16px"> {{ item.idx }}</span>
</v-avatar>
{{ item.text }}
</div>
</v-card-item>
</v-card>
<v-btn
@click="count++"
style="top: -55px"
class="float-right"
icon="mdi-skip-next"
rounded="circle"
size="lg"
color="#4c884c"
></v-btn>
</v-col>
</v-row>
</div>
</div>
</template>
<script>
export default {
watch: {
count(val) {
if (val > 4) {
this.count = 0;
}
},
},
methods: {
listItem() {
let cnt = this.count;
if (cnt > 3) {
this.count = 0;
}
let s = cnt * 5;
let e = 5 * (cnt + 1);
console.log("s", s, e);
let item = this.items.slice(s, e);
return item;
},
},
data: () => ({
count: 0,
items: [
{ text: "กลุ่มบริหารราชการแผ่นดินและความมั่นคง", idx: 1 },
{ text: "กลุ่มกฎหมายกระบวนการยุติธรรม", idx: 2 },
{ text: "กลุ่มการศึกษา", idx: 3 },
{ text: "กลุ่มการสาธารณสุข", idx: 4 },
{ text: "กลุ่มอาชีพทำนา ปลูกพืชล้มลุก", idx: 5 },
{ text: "กลุ่มอาชีพทำสวน ป่าไม้ ปศุสัตว์ ประมง", idx: 6 },
{ text: "กลุ่มพนักงานหรือลูกจ้างของบุคคล(ไม่ใช่หน่วยงานรัฐ)", idx: 7 },
{
text: "กลุ่มผู้ประกอบอาชีพด้านสิ่งแวดล้อม ผังเมือง อสังหาริมทรัพย์และสาธารณูปโภค ทรัพยากรธรรมชาติ พลังงาน",
idx: 8,
},
{ text: "กลุ่มผู้ประกอบกิจการ หรือ SME", idx: 9 },
{ text: "กลุ่มผู้ประกอบกิจการอื่นนอกจากข้อ (9)", idx: 10 },
{ text: "กลุ่มผู้ประกอบธุรกิจหรืออาชีพด้านการท่องเที่ยว", idx: 11 },
{ text: "กลุ่มผู้ประกอบอุตสาหกรรม", idx: 12 },
{
text: "กลุมผู้ประกอบอาชีพด้านวิทยาศาสตร์ เทคโนโลยี การสื่อสาร การพัฒนานวัตรกรรม",
idx: 13,
},
{ text: "กลุ่มสตรี", idx: 14 },
{
text: "กลุ่มผู้สูงอายุ คนพิการหรือทุพพลภาพ กลุ่มชาติพันธุ์ กลุ่มอัตลักษณ์อื่น",
idx: 15,
},
{ text: "กลุ่มศิลปะ วัฒนธรรม ดนตรี การแสดงและบันเทิง", idx: 16 },
{ text: "กลุ่มประชาสังคม องค์กรสาธารณประโยชน์", idx: 17 },
{ text: "กลุ่มนักกีฬา สื่อสารมวลชน ผู้สร้างสรรค์วรรณกรรม", idx: 18 },
{ text: "กลุ่มผู้ประกอบวิชาชีพ ผู้ประกอบอาชีพอิสระ", idx: 19 },
{ text: "กลุ่มอื่นๆ", idx: 20 },
// { text: "Real-Time" },
// { text: "Audience" },
],
}),
};
</script>
<style>
.line-flag {
border-left: 3px solid #37332f;
padding-left: 20px;
}
.bg-darkgreen-full {
background-color: #4c884c;
height: auto;
}
</style>

View File

@@ -0,0 +1,51 @@
<template>
<v-container class="text-center">
<div class="text-title">ใครสมครสว.ไดาง</div>
<div>
<v-img
:aspect-ratio="1"
class="mx-auto"
src="@/assets/Group 9.png"
width="70"
></v-img>
</div>
<br />
<div class="text-sub ma-auto" style="width: 90%">
อยากลงสมครสว. แตไมแนใจวาเราสามารถสมครไดหรอไม
เราสามารถมารวมกนเชคคณสมบ เชคเราามารถสมครกลมไหน เขตอำเภอไหนบาง
ในการลงสมคร สว. !
</div>
<v-btn
elevated
color="#DD6C31"
style="white-space: pre-wrap"
class="text-subtitle mt-3"
height="70"
to="/checklist"
><div class="text-wrap" style="width: 100%; margin: auto">
ตรวจสอบคณสมบการเป สว. 2567
</div>
</v-btn>
<v-img
:aspect-ratio="1"
class="mx-auto"
src="@/assets/Group 51.png"
width="230"
></v-img>
<v-btn variant="text" append color="#3ba8c8" size="lg"
><div class="text-wrap text-sub3" style="width: 100%; margin: auto">
ตรวจเชคคณสมบ-กษณะตองหามของผจะสมคร สว.
</div></v-btn
>
</v-container>
</template>
<script>
export default {
}
</script>
<style>
</style>

View File

@@ -0,0 +1,16 @@
<template>
<div>
<CheckListVue />
</div>
</template>
<script>
import CheckListVue from "./CheckList.vue";
export default {
components: {
CheckListVue,
},
};
</script>
<style></style>

View File

@@ -0,0 +1,476 @@
<template>
<div
style="height: auto; min-height: 100vh"
class="d-flex justify-center parent-container"
>
<!-- {{ model }} -->
<!-- {{ slides }} -->
<v-btn
@click="model++"
style="z-index: 999"
class="float-right btn-r"
rounded="circle"
size="lg"
color="white"
v-if="model < 17"
><v-icon icon="mdi-menu-right" size="70" color="#F4C03F"></v-icon
></v-btn>
<!-- v-if="model > 0" -->
<v-btn
v-if="model > 0"
@click="model--"
style="z-index: 999"
class="float-right btn-l"
rounded="circle"
size="lg"
color="white"
><v-icon icon="mdi-menu-left" size="70" color="#F4C03F"></v-icon
></v-btn>
<!-- hide-delimiters -->
<v-carousel
style="height: auto; min-height: 100vh"
progress="#f4c03f"
:show-arrows="false"
v-model="model"
hide-delimiters
>
<v-carousel-item v-for="(slide, i) in slides" :key="i">
<v-sheet
min-height="100vh"
:color="slide.color"
tile
class="d-flex justify-center"
>
<v-container
class="text-white text-center ma-auto"
style="width: 90%"
v-show="model <= 16"
>
<div class="d-block fill-height justify-center align-center">
<v-img
:aspect-ratio="1"
class="mx-auto mb-4"
src="@/assets/Group 9.png"
width="70"
></v-img>
<div class="text-title">คำถามท {{ i + 1 }}</div>
<div class="border-white my-2"></div>
<br />
<p class="text-title">{{ slide.txt }}</p>
<a
:href="slide.link"
target="_blank"
rel="noopener noreferrer"
class="text-normal text-white"
>
{{ slide.link }}</a
>
<p class="text-normal">{{ slide.subtxt }}</p>
<br />
<div class="d-flex justify-center align-center">
<div>
<div>
<v-chip-group
v-model="slide.vmodel"
selected-class="text-white"
mandatory
:key="i"
>
<v-chip
v-if="i == 0 || i == 1"
label
@click="check(false, i)"
variant="elevated"
size="x-large"
class="d-flex justify-center align-center"
style="width: 80px; font-size: 25px; height: 50px"
color="#3AA8C9"
>
ใช
</v-chip>
<v-chip
v-else
label
@click="check(true, i)"
variant="elevated"
size="x-large"
class="d-flex justify-center align-center"
style="width: 80px; font-size: 25px; height: 50px"
color="#3AA8C9"
>
ใช
</v-chip>
<v-chip
class="d-flex justify-center align-center"
label
@click="check(true, i)"
variant="elevated"
size="x-large"
style="width: 80px; font-size: 25px; height: 50px"
color="#dd6c31"
v-if="i == 0 || i == 1"
>
ไมใช
</v-chip>
<v-chip
v-else
class="d-flex justify-center align-center"
label
@click="check(false, i)"
variant="elevated"
size="x-large"
style="width: 80px; font-size: 25px; height: 50px"
color="#dd6c31"
>
ไมใช
</v-chip>
</v-chip-group>
</div>
</div>
</div>
</div>
</v-container>
<div
v-if="model > 16 && checkNull.length==17"
class="text-sub text-white py-8 d-block"
>
<v-icon icon="mdi-alert-circle-outline"></v-icon>
กรณาตอบคำถามใหครบ
</div>
<div
class="py-7 parent-container"
v-if="model > 16 && checkPass.length == 17"
>
<v-container>
<div
class="text-black text-center pa-5 ma-auto vcenter txt-black"
style="
background: white;
border-radius: 50%;
height: 400px;
width: 400px;
box-shadow: 0px 0px 0px 12px rgba(255, 255, 255, 0.5);
position: relative;
"
>
<v-icon
icon="mdi-check-decagram"
color="#4c884c"
size="60"
></v-icon>
<div class="text-title txt-black my-2">สรปผล</div>
<hr
class="w-75 ma-auto"
style="border: 1px solid; color: #37332f"
/>
<v-icon
icon="mdi-crown-outline"
size="70"
color="#1b76ba"
></v-icon>
<div class="text-subtitle txt-black">
ณสมบาน <br />
การสมครเป สว.
</div>
</div>
<div class="text-center mt-5">
<v-btn
elevated
color="#DD6C31"
class="mt-4"
stacked
height="60"
to="/"
>
<span class="text-sub">เสรจส</span>
</v-btn>
</div>
</v-container>
</div>
<div class="py-7 text-center" v-if="model > 16 && alertList.length">
<v-container class="text-black">
<div class="text-title mb-2">สรปผล</div>
<div class="border-white mb-5"></div>
<v-icon icon="mdi-close-circle" size="60" color="red"></v-icon>
<div class="text-sub">ณสมบไมาน</div>
<!-- {{ alertList }} -->
<div
v-for="(txt, i) in alertList"
:key="i"
class="text-left my-3 text-sub2"
>
<v-avatar color="#4c884c" size="35">
{{ i + 1 }}
</v-avatar>
{{ txt.not }}
</div>
<v-btn
elevated
color="#DD6C31"
class="mt-4"
stacked
height="60"
to="/"
>
<span class="text-sub">เสรจส</span>
</v-btn>
</v-container>
</div>
</v-sheet>
</v-carousel-item>
</v-carousel>
<!-- <hr style="bolder" /> -->
</div>
</template>
<script>
export default {
watch: {
model() {
this.show = false;
},
},
computed: {
checkNull() {
let slides = this.slides;
let data = slides.filter((x) => x.check === null);
return data;
},
checkPass() {
let slides = this.slides;
let data = slides.filter((x) => x.check === false);
return data;
},
alertList() {
let slides = this.slides;
let data = slides.filter((x) => x.check === true);
return data;
},
},
data() {
return {
alert: [],
selection: null,
model: 0,
show: false,
slides: [
{
txt: "อายุ 40 ปีเต็ม นับถึงเดือนพฤษภาคม 2567 หรือไม่?",
color: "#4C884C",
not: "อายุไม่ถึง 40 ปีเต็ม นับถึงเดือนพฤษภาคม 2567",
check: null,
idx: 1,
vmodel: null,
},
{
txt: "มีสัญชาติไทยตั้งแต่เกิดหรือไม่?",
not: "ไม่มีสัญชาติไทยตั้งแต่เกิด",
check: null,
idx: 2,
vmodel: null,
color: "#8aa042",
},
{
txt: "ปัจจุบันคุณทำงานเป็นข้าราชการ พนักงาน หรือลูกจ้างของหน่วยงานรัฐ หรือรัฐวิสาหกิจ หรือไม่?",
color: "#4C884C",
not: "ต้องลาออกจากงานข้าราชการ พนักงานหรือลูกจ้างของรัฐ",
check: null,
idx: 3,
vmodel: null,
},
{
txt: "เป็นตุลาการศาลรัฐธรรมนูญ​ หรือเป็นผู้ดำรงตำแหน่งในองค์กรอิสระ?",
color: "#8aa042",
not: "ต้องลาออกจากตำแหน่งตุลาการ หรือกรรมการองค์กรอิสระ",
check: null,
idx: 4,
vmodel: null,
},
{
txt: "เป็นเจ้าของหรือผู้ถือหุ้น ในกิจการหนังสือพิมพ์หรือสื่อมวลชน?",
color: "#4C884C",
not: "ต้องลาออกหรือขายหุ้นในกิจการสื่อมวลชน",
check: null,
idx: 5,
vmodel: null,
},
{
txt: "เป็นสมาชิกพรรคการเมือง? ตรวจสอบการเป็นสมาชิกพรรคการเมืองได้ที่",
link: "https://party.ect.go.th/checkidparty",
color: "#8aa042",
not: "ต้องลาออกจากการเป็นสมาชิกพรรค",
check: null,
idx: 6,
vmodel: null,
},
{
txt: "เป็นพระภิกษุ สามเณร นักพรต หรือนักบวช?",
color: "#4C884C",
not: "ต้องลาสิกขา หรือออกจากสถานะนักบวชของศาสนานั้นๆ",
check: null,
idx: 7,
vmodel: null,
},
{
txt: "เป็นบุคคลล้มละลายอยู่จนถึงเดือนพฤษภาคม 2567 หรือเคยเป็นบุคคลล้มละลายทุจริต?",
color: "#8aa042",
not: "เป็นบุคคลล้มละลายอยู่จนถึงเดือนพฤษภาคม 2567",
check: null,
idx: 8,
vmodel: null,
},
{
txt: "อยู่ในระหว่างถูกเพิกถอนสิทธิเลือกตั้ง หรือระงับสิทธิสมัครรับเลือกตั้ง?",
color: "#4C884C",
not: "อยู่ในระหว่างถูกเพิกถอนสิทธิเลือกตั้ง หรือระงับสิทธิสมัครรับเลือกตั้ง",
check: null,
idx: 9,
vmodel: null,
},
{
txt: "เคยต้องคำพิพากษาถึงที่สุดว่า ทำความผิดต่อตำแหน่งหน้าที่ราชการ ความผิดเกี่ยวกับทรัพย์ที่กระทำโดยทุจริต ความผิดฐานฉ้อโกงประชาชน ความผิดฐานเป็นผู้ผลิตหรือผู้ค้ายาเสพติด ความผิดฐานเป็นเจ้ามือการพนัน ความผิดฐานค้ามนุษย์ ความผิดฐานฟอกเงิน?",
color: "#8aa042",
not: "เคยต้องคำพิพากษาถึงที่สุดว่า ทำความผิดต่อตำแหน่งหน้าที่ราชการ ความผิดเกี่ยวกับทรัพย์ที่กระทำโดยทุจริต ความผิดฐานฉ้อโกงประชาชน ความผิดฐานเป็นผู้ผลิตหรือผู้ค้ายาเสพติด ความผิดฐานเป็นเจ้ามือการพนัน ความผิดฐานค้ามนุษย์ ความผิดฐานฟอกเงิน",
check: null,
idx: 10,
vmodel: null,
},
{
txt: "เคยต้องคำพิพากษาถึงที่สุดว่า ร่ำรวยผิดปกติ หรือมีความผิดตามกฎหมายป.ป.ช. หรือทุจริตการเลือกตั้ง?",
color: "#4C884C",
not: "เคยต้องคำพิพากษาถึงที่สุดว่า ร่ำรวยผิดปกติ หรือมีความผิดตามกฎหมายป.ป.ช. หรือทุจริตการเลือกตั้ง",
check: null,
idx: 11,
vmodel: null,
},
{
txt: "เคยพ้นจากราชการเพราะทุจริตต่อหน้าที่?",
color: "#8aa042",
not: "เคยพ้นจากราชการเพราะทุจริตต่อหน้าที่",
check: null,
idx: 12,
vmodel: null,
},
{
txt: "เป็นรัฐมนตรี เป็นสส. เป็นผู้ดำรงตำแหน่งในพรรคการเมือง เป็นผู้บริหารท้องถิ่น เป็นสมาชิกสภาท้องถิ่น และพ้นจากตำแหน่งมาไม่เกิน 5 ปี นับจนถึงพ.ค.67?",
color: "#4C884C",
not: "เป็นรัฐมนตรี เป็นสส. เป็นผู้ดำรงตำแหน่งในพรรคการเมือง เป็นผู้บริหารท้องถิ่น เป็นสมาชิกสภาท้องถิ่น และพ้นจากตำแหน่งมาไม่เกิน 5 ปี นับจนถึงพ.ค.67",
check: null,
idx: 13,
vmodel: null,
},
{
txt: "เป็นบุพการี (บิดามารดา ปู่ย่า ตายาย) คู่สมรส หรือบุตร ของสส. สว. ข้าราชการการเมือง สมาชิกสภาท้องถิ่นหรือผู้บริหารท้องถิ่น? (ถ้าบุพการี คู่สมรส หรือบุตร ลาออกตำแหน่งดังกล่าวแล้ว ให้ตอบว่า ไม่ใช่)",
color: "#8aa042",
not: "เป็นบุพการี (บิดามารดา ปู่ย่า ตายาย) คู่สมรส หรือบุตร ของสส. สว. ข้าราชการการเมือง สมาชิกสภาท้องถิ่นหรือผู้บริหารท้องถิ่น",
check: null,
idx: 14,
vmodel: null,
},
{
txt: "เป็นบุพการี (บิดามารดา ปู่ย่า ตายาย) คู่สมรส หรือบุตร ของผู้ที่จะสมัครสว. ในปี 2567?",
color: "#4C884C",
not: "เป็นบุพการี (บิดามารดา ปู่ย่า ตายาย) คู่สมรส หรือบุตร ของผู้ที่จะสมัครสว. ในปี 2567 (ในครอบครัวนึงให้เลือกลงสมัครได้คนเดียวนะ)",
check: null,
idx: 15,
vmodel: null,
},
{
txt: "คุณถูกจำกัดสิทธิสมัคร สว. 2567 เนื่องจากไม่ได้ไปใช้สิทธิเลือกตั้ง สส. 2566 หรือไม่ได้ไปเลือกตั้งซ่อม สส. ในช่วงปี 2565 (เฉพาะเขตที่มีการเลือกตั้งซ่อม) และไม่ได้แจ้งเหตุไม่ไปใช้สิทธิเลือกตั้งตรวจสอบว่าถูกจำกัดสิทธิหรือไม่ ได้ทาง",
link: "https://boraservices.bora.dopa.go.th/election/absvote/",
color: "#8aa042",
not: "ไม่ได้ไปใช้สิทธิเลือกตั้ง สส. 2566 หรือไม่ได้ไปเลือกตั้งซ่อม สส. ในช่วงปี 2565 โดยไม่ได้แจ้งเหตุ",
check: null,
idx: 16,
vmodel: null,
},
{
txt: "คุณเคยได้รับโทษจำคุก และพ้นโทษมายังไม่ถึง 10 ปีถ้าเป็นกรณีต่อไปนี้ ให้ตอบว่า “ไม่เคย”",
subtxt:
"คดีนั้นรอลงอาญา / พ้นโทษมายังไม่ถึง 10 ปี แต่เป็นคดีความผิดจากการกระทำโดยประมาท / พ้นโทษมายังไม่ถึง 10 ปี แต่เป็นคดีความผิดลหุโทษ (ความผิดที่กฎหมายกำหนดโทษจำคุกไม่เกินหนึ่งเดือน ปรับไม่เกิน 10,000 บาท)",
color: "#4C884C",
not: "เคยได้รับโทษจำคุก และพ้นโทษมายังไม่ถึง 10 ปี",
check: null,
idx: 17,
vmodel: null,
},
{
color: "#8aa042",
idx: 18,
vmodel: null,
},
],
colors: ["primary", "secondary", "yellow darken-2", "#4C884C", "orange"],
};
},
methods: {
check(val, i) {
if (val == true || val == false) {
this.slides[i].check = val;
// this.slides= this.slides
this.show = true;
this.model = this.model + 1;
}
// if(val){
// alert.push()
// }
},
},
};
</script>
<style>
.parent-container {
position: relative; /* ตั้งค่าเพื่อให้ .btn-r สามารถตั้งอยู่ส่วนมากในพื้นที่นี้ */
display: flex; /* ให้พาเนลหลักของพื้นที่ตรงกลางแนวตั้ง */
align-items: center; /* จัดแนวตั้งของ .btn-r ให้อยู่ตรงกลาง */
}
.btn-r {
height: 70px !important;
width: 70px !important;
position: absolute;
right: 0px;
margin: 15px;
margin: 15px;
}
.btn-l {
height: 70px !important;
width: 70px !important;
position: absolute;
left: 0px;
margin: 15px;
margin: 15px;
}
.vcenter {
display: block;
/* justify-content: center; */
align-items: center;
}
.border-white {
border: 2px solid white;
width: 350px;
margin: auto;
}
@media only screen and (min-width: 0px) and (max-width: 700px) {
.btn-r {
background-color: transparent !important;
}
.btn-l {
background-color: transparent !important;
position: absolute;
left: 0px;
margin: 15px;
margin: 15px;
}
}
</style>

View File

@@ -0,0 +1,33 @@
<template lang="">
<div>
<div class="hearder-form text-center pb-8">
<v-img
class="mx-auto"
:aspect-ratio="1"
src="@/assets/logo-title.png"
width="250"
></v-img>
<div class="text-title txt-black">
แสดงตนเปนผสมคร
</div>
<v-icon icon="mdi-circle" color="white" class="mt-2"></v-icon>
</div>
<FormSteper/>
</div>
</template>
<script>
import FormSteper from './FormSteper.vue';
export default {
components:{
FormSteper
}
};
</script>
<style>
.hearder-form {
background-color: #f4c03f;
width: 100%;
height: auto;
}
</style>

View File

@@ -0,0 +1,591 @@
<template>
<v-container class="txt-black my-3">
<div class="text-subtitle mb-5">กรณากรอกขอมลตามกำหนด</div>
<div>
<v-stepper v-model="e1">
<template v-slot:default="{ prev, next }">
<v-stepper-header>
<template v-for="n in steps" :key="`${n}-step`">
<v-stepper-item
color="#4C884C"
:complete="e1 > n"
:step="`Step {{ n }}`"
:value="n"
></v-stepper-item>
<v-divider v-if="n !== steps" :key="n"></v-divider>
</template>
</v-stepper-header>
<v-stepper-window>
<!-- -------------------------------------------step1----------------------------------------------- -->
<v-stepper-window-item :key="`${1}-content`" :value="1">
<v-card color="" class="text-sub2">
<div>วงท 1</div>
<div class="text-subtitle">
อมลสวนต
<hr class="my-3" />
</div>
<v-row class="text-center">
<v-col class="py-3" cols="12" md="6">
<v-text-field
label="ชื่อ / Name"
variant="solo"
></v-text-field>
<v-text-field
label="นามสกุล / LastName"
variant="solo"
></v-text-field>
<v-row>
<v-col class="py-3" cols="12" md="6">
<v-text-field
label="อายุ / Age"
variant="solo"
></v-text-field>
</v-col>
<v-col class="py-3" cols="12" md="6">
<v-text-field
label="อาชีพ / Occupation"
variant="solo"
></v-text-field>
<!-- <v-select
label="อาชีพ / Occupation"
:items="items"
variant="solo"
item-title="text"
return-object
></v-select> -->
</v-col>
</v-row>
<v-text-field
label="ประวัติการศึกษา / Education"
variant="solo"
></v-text-field>
<v-text-field
label="เบอร์โทรศัพท์"
variant="solo"
></v-text-field>
<div class="text-small text-left font-weight-medium">
งผาน OTP
</div>
</v-col>
<v-col>
<v-card color="#4C884C" class="py-5" elevated>
<v-icon icon="mdi-cellphone-message" size="200"></v-icon>
<div class="text-sub">นยนรห OTP</div>
<div>05:00</div>
<div>
<v-otp-input variant="solo-filled"></v-otp-input>
</div>
<v-btn color="#DD6C31" class="mt-4" height="40">
<span class="text-sub">นย</span>
</v-btn>
</v-card>
</v-col>
</v-row>
</v-card>
</v-stepper-window-item>
<!-- -------------------------------------------step2----------------------------------------------- -->
<v-stepper-window-item :key="`${2}-content`" :value="2">
<v-card color="" class="text-sub2">
<div>วงท 2</div>
<div class="text-subtitle">
อมลการสมครสว.
<hr class="my-3" />
</div>
<v-row class="">
<v-col class="text-sub" cols="12">
ประสงคจะสมครในกล*
</v-col>
<v-col class="py-3 col2" cols="12" md="12">
<v-radio-group v-model="radio">
<v-radio
class="text-sub2"
:label="item.text"
:value="item.text"
v-for="(item, i) in items"
:key="i"
></v-radio>
</v-radio-group>
</v-col>
<v-col>
<v-card>
<div class="text-sub">
งหวดทณประสงคจะลงสมคร*
<span class="text-sub3"
>สามารถเลอก 1 อำเภอ/เขต</span
>
<hr class="my-3" />
<div class="text-sub3 text-red font-weight-bold">
เงอนไข
</div>
<div class="text-sub2">
งหวดทเก
ออยในทะเบยนบานตดตอกนไมอยกว 2
(บถงวนสมคร) เคยมออยในทะเบยนบานไมอยกว
2 ทำงานตดตอกนไมอยกว 2
เคยทำงานไมอยกว 2
เปนทงของสถานศกษาทเคยศกษา
ดตอกนไมอยกว 2 การศกษา
</div>
<!-- {{ province }} -->
<v-autocomplete
label="จังหวัด"
:items="provinceItems"
variant="solo"
item-title="provinceNameTh"
return-object
v-model="province"
placeholder="จังหวัด"
@update:modelValue="filterData"
></v-autocomplete>
</div>
</v-card>
<v-card>
<div class="text-sub">
อำเภอทณประสงคจะลงสมคร*
<span class="text-sub3"
>สามารถเลอก 1 อำเภอ/เขต</span
>
<hr class="my-3" />
<div class="text-sub3 text-red font-weight-bold">
เงอนไข
</div>
<div class="text-sub2">
อำเภอทเก
ออยในทะเบยนบานตดตอกนไมอยกว 2
(บถงวนสมคร) เคยมออยในทะเบยนบานไมอยกว
2 ทำงานตดตอกนไมอยกว 2
เคยทำงานไมอยกว 2
เปนทงของสถานศกษาทเคยศกษา
ดตอกนไมอยกว 2 การศกษา
</div>
<!-- {{ district }} -->
<v-autocomplete
label="อำเภอ / เขต"
:items="districtItems"
variant="solo"
item-title="districtNameTh"
return-object
v-model="district"
placeholder="อำเภอ / เขต"
></v-autocomplete>
</div>
</v-card>
</v-col>
</v-row>
</v-card>
</v-stepper-window-item>
<!-- -------------------------------------------step3----------------------------------------------- -->
<v-stepper-window-item :key="`${3}-content`" :value="3">
<v-card color="" class="text-sub2">
<div>วงท 3</div>
<div class="text-subtitle">
ดยนในฐานะสมาชกรฐสภา (สว.)
<hr class="my-3" />
</div>
<v-row>
<v-col class="text-sub" cols="12">
ณคดเหนอยางไรกบประเดนเหลาน? *
</v-col>
<v-col cols="12" md="12">
<!-- {{ opnitem1 }} -->
<v-row>
<v-col></v-col>
<v-col>
<v-row class="text-sub3 font-weight-medium">
<v-col class="rot-box" cols="4">เหนดวย</v-col
><v-col class="rot-box" cols="4">ไมเหนดวย</v-col
><v-col class="rot-box" cols="4">จารณา</v-col>
</v-row>
</v-col></v-row
>
<v-row
v-for="(item, i) in opnitem1"
:key="i"
align="center"
justify="center"
style="border-bottom: 1px solid #e4e4e4"
>
<v-col class="">
{{ item.text }}
</v-col>
<v-col>
<v-radio-group inline hide>
<v-radio
class="text-sub2"
value="เห็นด้วย"
@click="item.check = 'เห็นด้วย'"
></v-radio>
<v-radio
class="text-sub2"
value="ไม่เห็นด้วย"
@click="item.check = 'ไม่เห็นด้วย'"
></v-radio>
<v-radio
class="text-sub2"
value="พิจารณา"
@click="item.check = 'พิจารณา'"
></v-radio>
</v-radio-group>
</v-col>
</v-row>
</v-col>
<v-col>
<v-card>
<div class="text-sub">
ณคดเหนอยางไรกบประเดนเหลาน? *
</div>
<hr class="my-3" />
<v-row>
<v-col></v-col>
<v-col>
<!-- <v-row class="text-sub3 font-weight-bold ">
<v-col class="rot-box" cols="3">เหนดวย</v-col><v-col class="rot-box" cols="3">ไมเหนดวย</v-col
><v-col class="rot-box" cols="3">จารณา</v-col>
<v-col class="rot-box" cols="3">ไมแสดงความเห</v-col>
</v-row> -->
</v-col></v-row
>
<v-row
v-for="(item, i) in opnitem2"
:key="i"
align="center"
justify="center"
style="border-bottom: 1px solid #e4e4e4"
>
<v-col class="text-sub2 font-weight-medium" cols="12">
{{ item.text }}
</v-col>
<v-col cols="12">
<v-radio-group inline class="col4">
<v-radio
class="text-sub2"
value="เห็นด้วย"
@click="item.check = 'เห็นด้วย'"
label="เห็นด้วย"
></v-radio>
<v-radio
class="text-sub2"
value="ไม่เห็นด้วย"
@click="item.check = 'ไม่เห็นด้วย'"
label="ไม่เห็นด้วย"
></v-radio>
<v-radio
class="text-sub2"
value="พิจารณา"
@click="item.check = 'พิจารณา'"
label="พิจารณา"
></v-radio>
<v-radio
class="text-sub2"
value="ไม่แสดงความเห็น"
@click="item.check = 'ไม่แสดงความเห็น'"
label="ไม่แสดงความเห็น"
></v-radio>
</v-radio-group>
</v-col>
</v-row>
</v-card>
<v-card class="mt-8">
<div class="text-sub">
คำอธบายจดยนในฐานะสมาชกรฐสภาเพมเตมทองการจะใหคนอนทราบ
*
</div>
<hr class="my-3" />
<v-textarea
label=""
variant="solo"
bg-color="#F2EBD1"
></v-textarea>
</v-card>
</v-col>
</v-row>
</v-card>
</v-stepper-window-item>
<!-- -------------------------------------------step4----------------------------------------------- -->
<v-stepper-window-item :key="`${4}-content`" :value="4">
<v-card class="mt-8 text-sub">
<div>วงท 4</div>
<div class="text-subtitle">
คำถามอนเกยวกบสว.
<hr class="my-3" />
</div>
<v-card class="mt-8 text-sub">
<div class="text-sub">
แนวทางการพจารณาเหนชอบผดำรงตำแหนงในองคกรอสระ.
</div>
<v-textarea
label="เหตุผลความตั้งใจในการลงสมัคร สว. ครั้งนี้"
variant="solo"
bg-color="#F2EBD1"
></v-textarea>
</v-card>
<v-card class="mt-8 text-sub">
<div class="text-sub">
องทางการตดต (สำหรบเปดเผยตอสาธารณะ)
</div>
<v-row>
<v-col cols="12" md="4">
<v-text-field
variant="solo"
bg-color="#F2EBD1"
label="โทรศัพท์"
></v-text-field
></v-col>
</v-row>
<v-row>
<v-col
><v-text-field
variant="solo"
bg-color="#F2EBD1"
label="Facebook"
></v-text-field
></v-col>
<v-col
><v-text-field
variant="solo"
bg-color="#F2EBD1"
label="X"
></v-text-field
></v-col>
<v-col
><v-text-field
variant="solo"
bg-color="#F2EBD1"
label="TikTok"
></v-text-field
></v-col>
</v-row>
<v-text-field
variant="solo"
bg-color="#F2EBD1"
label="ช่องทางอื่นๆ"
></v-text-field>
<div class="text-sub">องทางการตดต (สำหรบทมงาน)*</div>
<v-row>
<v-col cols="12" md="4">
<v-text-field
variant="solo"
bg-color="#F2EBD1"
label="โทรศัพท์"
></v-text-field
></v-col>
</v-row>
</v-card>
<v-card class="mt-8 text-sub">
<div class="text-sub">กรณายนยนการสงคำตอบ</div>
<v-checkbox
color="success"
value="true"
style="font-size: 24px"
></v-checkbox>
<div class="text-sub3">
าพเจาขอสาบานตนตอสงศกดทธงหลายทาพเจานบถ
และ/หรอหลกการใดๆ าพเจายดถอว
อมลทาพเจาไดใหไวนเปนความสตยจร งส
และหากขาพเจาไดบเลอกเปนสมาชกวสภา (สว.) ในครงน
จะทำหนาทางๆ
โดยยดเอาหลกการประชาธปไตยและประชาชนเปนท
หากขาพเจาใหความเทจหรอกระทำการใดอนขดตอหลกประชาธปไตยและสทธมนษยชน
ขอภยนตรายและความวงปวงจงบงเกดแกาพเจ โดยพล
*นยนการสงคำตอบ เพอประกาศตวเปนผสมครเป สว.67
</div>
<div class="text-right">
<v-btn color="#DD6C31" class="mt-4" height="40">
<span class="text-sub">นท</span>
</v-btn>
</div>
</v-card>
</v-card>
</v-stepper-window-item>
</v-stepper-window>
<v-stepper-actions
:disabled="disabled"
@click:next="next"
@click:prev="prev"
></v-stepper-actions>
</template>
</v-stepper>
</div>
</v-container>
</template>
<script>
import Provinces from "./provinces.json";
import Districts from "./districts.json";
export default {
computed: {
disabled() {
return this.e1 === 1
? "prev"
: this.e1 === this.steps
? "next"
: undefined;
},
},
data() {
return {
province: null,
district: null,
districtItems: [],
provinceItems: Provinces,
radio: null,
e1: 1,
steps: 4,
opnitem2: [
{ text: "แก้ไข มาตรา 112", idx: 1, check: null },
{
text: "สามจังหวัดชายแดนภาคใต้เป็นเขตปกครองพิเศษ",
idx: 2,
check: null,
},
{
text: "ควบคุมองค์กร NGO (องค์กรเอกชนเพื่อสาธารณประโยชน์)",
idx: 3,
check: null,
},
],
opnitem1: [
{ text: "สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี", idx: 1, check: null },
{ text: "แก้ไขรัฐธรรมนูญ 2560", idx: 2, check: null },
{ text: "เขียนรัฐธรรมนูญใหม่ “ทั้งฉบับ” ", idx: 3, check: null },
{
text: "เขียนรัฐธรรมนูญใหม่ แต่ยกเว้นหมวด 1 หมวด 2",
idx: 4,
check: null,
},
{
text: "ให้มีสภาร่างรัฐธรรมนูญ (สสร.) ใหม่ จากการเลือกตั้ง100%",
idx: 5,
check: null,
},
{
text: "แก้ไขที่มาของสว. ยกเลิกสว. ใช้ระบบสภาเดี่ยว",
idx: 6,
check: null,
},
{ text: "นิรโทษกรรมคดีการเมือง “ทุกคดี”", idx: 7, check: null },
{
text: "นิรโทษกรรมคดีการเมือง ยกเว้นคดีมาตรา 112",
idx: 8,
check: null,
},
{ text: "ป้องกันภัยคุกคามจากต่างประเทศ", idx: 9, check: null },
{ text: "ควบคุมสื่อสังคมออนไลน์", idx: 10, check: null },
// { text: "ยกเลิกกฎหมายปราบปรามการค้าประเวณี", idx: 11, check: null },
{
text: "กัญชาเสรี บำนาญให้ประชาชนทุกคน เดือนละ 3,000 บาท",
idx: 11,
check: null,
},
{
text: "ยกเลิกการเกณฑ์ทหารแบบบังคับ",
idx: 12,
check: null,
},
{ text: "กระจายอำนาจ เพิ่มงบประมาณให้ท้องถิ่น", idx: 13, check: null },
{
text: "เพิ่มอำนาจให้จังหวัดจัดการตัวเอง ถ่ายทอดสดการประชุมกรรมาธิการสว.",
idx: 14,
},
],
items: [
{ text: "กลุ่มบริหารราชการแผ่นดินและความมั่นคง", idx: 1 },
{ text: "กลุ่มกฎหมายกระบวนการยุติธรรม", idx: 2 },
{ text: "กลุ่มการศึกษา", idx: 3 },
{ text: "กลุ่มการสาธารณสุข", idx: 4 },
{ text: "กลุ่มอาชีพทำนา ปลูกพืชล้มลุก", idx: 5 },
{ text: "กลุ่มอาชีพทำสวน ป่าไม้ ปศุสัตว์ ประมง", idx: 6 },
{ text: "กลุ่มพนักงานหรือลูกจ้างของบุคคล(ไม่ใช่หน่วยงานรัฐ)", idx: 7 },
{
text: "กลุ่มผู้ประกอบอาชีพด้านสิ่งแวดล้อม ผังเมือง อสังหาริมทรัพย์และสาธารณูปโภค ทรัพยากรธรรมชาติ พลังงาน",
idx: 8,
},
{ text: "กลุ่มผู้ประกอบกิจการ หรือ SME", idx: 9 },
{ text: "กลุ่มผู้ประกอบกิจการอื่นนอกจากข้อ (9)", idx: 10 },
{ text: "กลุ่มผู้ประกอบธุรกิจหรืออาชีพด้านการท่องเที่ยว", idx: 11 },
{ text: "กลุ่มผู้ประกอบอุตสาหกรรม", idx: 12 },
{
text: "กลุ่มผู้ประกอบอาชีพด้านวิทยาศาสตร์ เทคโนโลยี การสื่อสาร การพัฒนานวัตรกรรม",
idx: 13,
},
{ text: "กลุ่มสตรี", idx: 14 },
{
text: "กลุ่มผู้สูงอายุ คนพิการหรือทุพพลภาพ กลุ่มชาติพันธุ์ กลุ่มอัตลักษณ์อื่น",
idx: 15,
},
{ text: "กลุ่มศิลปะ วัฒนธรรม ดนตรี การแสดงและบันเทิง", idx: 16 },
{ text: "กลุ่มประชาสังคม องค์กรสาธารณประโยชน์", idx: 17 },
{ text: "กลุ่มนักกีฬา สื่อสารมวลชน ผู้สร้างสรรค์วรรณกรรม", idx: 18 },
{ text: "กลุ่มผู้ประกอบวิชาชีพ ผู้ประกอบอาชีพอิสระ", idx: 19 },
{ text: "กลุ่มอื่นๆ", idx: 20 },
// { text: "Real-Time" },
// { text: "Audience" },
],
};
},
methods: {
filterData() {
// กรองข้อมูลอันที่สองโดยใช้ข้อมูลจากอันแรก
if (this.province && this.province.provinceCode) {
this.districtItems = [...Districts].filter(
(item) => item.provinceCode === this.province.provinceCode
);
}
},
},
};
</script>
<style>
.v-selection-control-group--inline > * {
flex-grow: 1;
}
.v-radio-group .v-input__details {
display: none;
}
.v-stepper-item__avatar.v-avatar {
width: 40px !important;
height: 40px !important;
font-size: 20px;
}
.v-label.v-field-label {
opacity: 0.8;
}
.col2 {
column-count: 2 !important;
}
.v-selection-control .v-label {
font-size: 20px;
opacity: 1;
}
@media only screen and (min-width: 0px) and (max-width: 700px) {
.col2 {
column-count: 1 !important;
}
.rot-box {
transform: rotate(-90deg);
white-space: nowrap;
font-size: 17px;
font-weight: 500;
}
.v-stepper-item__avatar.v-avatar {
width: 20px !important;
height: 20px !important;
font-size: 15px;
}
.v-selection-control .v-label {
font-size: 17px;
opacity: 1;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,464 @@
[
{
"id": 1,
"provinceCode": 10,
"provinceNameEn": "Bangkok",
"provinceNameTh": "กรุงเทพมหานคร"
},
{
"id": 2,
"provinceCode": 11,
"provinceNameEn": "Samut Prakan",
"provinceNameTh": "สมุทรปราการ"
},
{
"id": 3,
"provinceCode": 12,
"provinceNameEn": "Nonthaburi",
"provinceNameTh": "นนทบุรี"
},
{
"id": 4,
"provinceCode": 13,
"provinceNameEn": "Pathum Thani",
"provinceNameTh": "ปทุมธานี"
},
{
"id": 5,
"provinceCode": 14,
"provinceNameEn": "Phra Nakhon Si Ayutthaya",
"provinceNameTh": "พระนครศรีอยุธยา"
},
{
"id": 6,
"provinceCode": 15,
"provinceNameEn": "Ang Thong",
"provinceNameTh": "อ่างทอง"
},
{
"id": 7,
"provinceCode": 16,
"provinceNameEn": "Loburi",
"provinceNameTh": "ลพบุรี"
},
{
"id": 8,
"provinceCode": 17,
"provinceNameEn": "Sing Buri",
"provinceNameTh": "สิงห์บุรี"
},
{
"id": 9,
"provinceCode": 18,
"provinceNameEn": "Chai Nat",
"provinceNameTh": "ชัยนาท"
},
{
"id": 10,
"provinceCode": 19,
"provinceNameEn": "Saraburi",
"provinceNameTh": "สระบุรี"
},
{
"id": 11,
"provinceCode": 20,
"provinceNameEn": "Chon Buri",
"provinceNameTh": "ชลบุรี"
},
{
"id": 12,
"provinceCode": 21,
"provinceNameEn": "Rayong",
"provinceNameTh": "ระยอง"
},
{
"id": 13,
"provinceCode": 22,
"provinceNameEn": "Chanthaburi",
"provinceNameTh": "จันทบุรี"
},
{
"id": 14,
"provinceCode": 23,
"provinceNameEn": "Trat",
"provinceNameTh": "ตราด"
},
{
"id": 15,
"provinceCode": 24,
"provinceNameEn": "Chachoengsao",
"provinceNameTh": "ฉะเชิงเทรา"
},
{
"id": 16,
"provinceCode": 25,
"provinceNameEn": "Prachin Buri",
"provinceNameTh": "ปราจีนบุรี"
},
{
"id": 17,
"provinceCode": 26,
"provinceNameEn": "Nakhon Nayok",
"provinceNameTh": "นครนายก"
},
{
"id": 18,
"provinceCode": 27,
"provinceNameEn": "Sa Kaeo",
"provinceNameTh": "สระแก้ว"
},
{
"id": 19,
"provinceCode": 30,
"provinceNameEn": "Nakhon Ratchasima",
"provinceNameTh": "นครราชสีมา"
},
{
"id": 20,
"provinceCode": 31,
"provinceNameEn": "Buri Ram",
"provinceNameTh": "บุรีรัมย์"
},
{
"id": 21,
"provinceCode": 32,
"provinceNameEn": "Surin",
"provinceNameTh": "สุรินทร์"
},
{
"id": 22,
"provinceCode": 33,
"provinceNameEn": "Si Sa Ket",
"provinceNameTh": "ศรีสะเกษ"
},
{
"id": 23,
"provinceCode": 34,
"provinceNameEn": "Ubon Ratchathani",
"provinceNameTh": "อุบลราชธานี"
},
{
"id": 24,
"provinceCode": 35,
"provinceNameEn": "Yasothon",
"provinceNameTh": "ยโสธร"
},
{
"id": 25,
"provinceCode": 36,
"provinceNameEn": "Chaiyaphum",
"provinceNameTh": "ชัยภูมิ"
},
{
"id": 26,
"provinceCode": 37,
"provinceNameEn": "Amnat Charoen",
"provinceNameTh": "อำนาจเจริญ"
},
{
"id": 27,
"provinceCode": 38,
"provinceNameEn": "Bueng Kan",
"provinceNameTh": "บึงกาฬ"
},
{
"id": 28,
"provinceCode": 39,
"provinceNameEn": "Nong Bua Lam Phu",
"provinceNameTh": "หนองบัวลำภู"
},
{
"id": 29,
"provinceCode": 40,
"provinceNameEn": "Khon Kaen",
"provinceNameTh": "ขอนแก่น"
},
{
"id": 30,
"provinceCode": 41,
"provinceNameEn": "Udon Thani",
"provinceNameTh": "อุดรธานี"
},
{
"id": 31,
"provinceCode": 42,
"provinceNameEn": "Loei",
"provinceNameTh": "เลย"
},
{
"id": 32,
"provinceCode": 43,
"provinceNameEn": "Nong Khai",
"provinceNameTh": "หนองคาย"
},
{
"id": 33,
"provinceCode": 44,
"provinceNameEn": "Maha Sarakham",
"provinceNameTh": "มหาสารคาม"
},
{
"id": 34,
"provinceCode": 45,
"provinceNameEn": "Roi Et",
"provinceNameTh": "ร้อยเอ็ด"
},
{
"id": 35,
"provinceCode": 46,
"provinceNameEn": "Kalasin",
"provinceNameTh": "กาฬสินธุ์"
},
{
"id": 36,
"provinceCode": 47,
"provinceNameEn": "Sakon Nakhon",
"provinceNameTh": "สกลนคร"
},
{
"id": 37,
"provinceCode": 48,
"provinceNameEn": "Nakhon Phanom",
"provinceNameTh": "นครพนม"
},
{
"id": 38,
"provinceCode": 49,
"provinceNameEn": "Mukdahan",
"provinceNameTh": "มุกดาหาร"
},
{
"id": 39,
"provinceCode": 50,
"provinceNameEn": "Chiang Mai",
"provinceNameTh": "เชียงใหม่"
},
{
"id": 40,
"provinceCode": 51,
"provinceNameEn": "Lamphun",
"provinceNameTh": "ลำพูน"
},
{
"id": 41,
"provinceCode": 52,
"provinceNameEn": "Lampang",
"provinceNameTh": "ลำปาง"
},
{
"id": 42,
"provinceCode": 53,
"provinceNameEn": "Uttaradit",
"provinceNameTh": "อุตรดิตถ์"
},
{
"id": 43,
"provinceCode": 54,
"provinceNameEn": "Phrae",
"provinceNameTh": "แพร่"
},
{
"id": 44,
"provinceCode": 55,
"provinceNameEn": "Nan",
"provinceNameTh": "น่าน"
},
{
"id": 45,
"provinceCode": 56,
"provinceNameEn": "Phayao",
"provinceNameTh": "พะเยา"
},
{
"id": 46,
"provinceCode": 57,
"provinceNameEn": "Chiang Rai",
"provinceNameTh": "เชียงราย"
},
{
"id": 47,
"provinceCode": 58,
"provinceNameEn": "Mae Hong Son",
"provinceNameTh": "แม่ฮ่องสอน"
},
{
"id": 48,
"provinceCode": 60,
"provinceNameEn": "Nakhon Sawan",
"provinceNameTh": "นครสวรรค์"
},
{
"id": 49,
"provinceCode": 61,
"provinceNameEn": "Uthai Thani",
"provinceNameTh": "อุทัยธานี"
},
{
"id": 50,
"provinceCode": 62,
"provinceNameEn": "Kamphaeng Phet",
"provinceNameTh": "กำแพงเพชร"
},
{
"id": 51,
"provinceCode": 63,
"provinceNameEn": "Tak",
"provinceNameTh": "ตาก"
},
{
"id": 52,
"provinceCode": 64,
"provinceNameEn": "Sukhothai",
"provinceNameTh": "สุโขทัย"
},
{
"id": 53,
"provinceCode": 65,
"provinceNameEn": "Phitsanulok",
"provinceNameTh": "พิษณุโลก"
},
{
"id": 54,
"provinceCode": 66,
"provinceNameEn": "Phichit",
"provinceNameTh": "พิจิตร"
},
{
"id": 55,
"provinceCode": 67,
"provinceNameEn": "Phetchabun",
"provinceNameTh": "เพชรบูรณ์"
},
{
"id": 56,
"provinceCode": 70,
"provinceNameEn": "Ratchaburi",
"provinceNameTh": "ราชบุรี"
},
{
"id": 57,
"provinceCode": 71,
"provinceNameEn": "Kanchanaburi",
"provinceNameTh": "กาญจนบุรี"
},
{
"id": 58,
"provinceCode": 72,
"provinceNameEn": "Suphan Buri",
"provinceNameTh": "สุพรรณบุรี"
},
{
"id": 59,
"provinceCode": 73,
"provinceNameEn": "Nakhon Pathom",
"provinceNameTh": "นครปฐม"
},
{
"id": 60,
"provinceCode": 74,
"provinceNameEn": "Samut Sakhon",
"provinceNameTh": "สมุทรสาคร"
},
{
"id": 61,
"provinceCode": 75,
"provinceNameEn": "Samut Songkhram",
"provinceNameTh": "สมุทรสงคราม"
},
{
"id": 62,
"provinceCode": 76,
"provinceNameEn": "Phetchaburi",
"provinceNameTh": "เพชรบุรี"
},
{
"id": 63,
"provinceCode": 77,
"provinceNameEn": "Prachuap Khiri Khan",
"provinceNameTh": "ประจวบคีรีขันธ์"
},
{
"id": 64,
"provinceCode": 80,
"provinceNameEn": "Nakhon Si Thammarat",
"provinceNameTh": "นครศรีธรรมราช"
},
{
"id": 65,
"provinceCode": 81,
"provinceNameEn": "Krabi",
"provinceNameTh": "กระบี่"
},
{
"id": 66,
"provinceCode": 82,
"provinceNameEn": "Phangnga",
"provinceNameTh": "พังงา"
},
{
"id": 67,
"provinceCode": 83,
"provinceNameEn": "Phuket",
"provinceNameTh": "ภูเก็ต"
},
{
"id": 68,
"provinceCode": 84,
"provinceNameEn": "Surat Thani",
"provinceNameTh": "สุราษฎร์ธานี"
},
{
"id": 69,
"provinceCode": 85,
"provinceNameEn": "Ranong",
"provinceNameTh": "ระนอง"
},
{
"id": 70,
"provinceCode": 86,
"provinceNameEn": "Chumphon",
"provinceNameTh": "ชุมพร"
},
{
"id": 71,
"provinceCode": 90,
"provinceNameEn": "Songkhla",
"provinceNameTh": "สงขลา"
},
{
"id": 72,
"provinceCode": 91,
"provinceNameEn": "Satun",
"provinceNameTh": "สตูล"
},
{
"id": 73,
"provinceCode": 92,
"provinceNameEn": "Trang",
"provinceNameTh": "ตรัง"
},
{
"id": 74,
"provinceCode": 93,
"provinceNameEn": "Phatthalung",
"provinceNameTh": "พัทลุง"
},
{
"id": 75,
"provinceCode": 94,
"provinceNameEn": "Pattani",
"provinceNameTh": "ปัตตานี"
},
{
"id": 76,
"provinceCode": 95,
"provinceNameEn": "Yala",
"provinceNameTh": "ยะลา"
},
{
"id": 77,
"provinceCode": 96,
"provinceNameEn": "Narathiwat",
"provinceNameTh": "นราธิวาส"
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,311 @@
<template>
<div class="pa-lg-8 pa-md-8 pa-sm-3">
<div
style="
background-color: #4c884c;
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
border-radius: 20px;
"
class="pa-lg-10 pa-md-10 pa-sm-4 pa-2"
>
<v-row>
<v-col v-for="(item, i) in profile" :key="i" cols="12" md="6" lg="6">
<v-card
elevation="3"
class="text-sub2 mx-auto py-5"
max-height="380"
min-height="380"
>
<v-card-item>
<v-row align="left">
<div class="box-province px-3 py-2">
<div class="font-weight-bold">
{{ item.province }} เขต{{ item.district }}
</div>
</div>
<v-col cols="auto" class="text-left">
<v-avatar color="#DD6C31" size="100">
<v-icon
icon="mdi-account"
color=""
size="80"
></v-icon> </v-avatar
></v-col>
<v-col cols="" class="text-left">
<div class="font-weight-bold text-normal my-2">
{{ item.name }}
<span class="ml-3">
{{ item.lastname }}
<span v-if="item.age" class="text-sub2"> ( {{ item.age }}ปี )</span></span
>
<div class="text-sub3">{{ item.group }}</div>
</div>
</v-col>
</v-row>
<v-row>
<v-col cols="12">
<div class="text-small text-left">
<div class="font-weight-medium ">
อาช : {{ item.occupation }}
</div>
<div class="font-weight-medium">
การศกษา : {{ item.education }}
</div>
</div>
</v-col>
</v-row>
<div class="text-left text-small my-3">
<div class="text-small font-weight-bold">องทางตดต</div>
<v-divider class="my-1"></v-divider>
<span>
<span v-if="item.social.email" class="mr-2"
><v-icon icon="mdi-email"></v-icon>
{{ item.social.email }}</span
>
<span v-if="item.social.fb" class="mr-2"
><v-icon icon="mdi-facebook"></v-icon>
{{ item.social.fb }}</span
>
<span v-if="item.social.x" class="mr-2"
><v-icon icon="mdi-twitter"></v-icon>
{{ item.social.x }}</span
>
<span v-if="item.phone" class="mr-2 d-none"
><v-icon icon="mdi-cellphone"></v-icon>
{{ item.phone }}</span
>
</span>
</div>
<div class="text-small font-weight-bold text-left d-none">ดย
<v-divider class="my-1"></v-divider>
<v-row class="text-small" style="height: 150px; overflow: auto">
<v-col class="text-left">
<div class="font-weight-bold">เหนดวย :</div>
<div v-for="(ag, k) in item.opinion.agree" :key="k">
{{ ag }}
</div>
</v-col>
<v-col class="text-left">
<div class="font-weight-bold">ไมเหนดวย :</div>
<div v-for="(ag, k) in item.opinion.disagree" :key="k">
{{ ag }}
</div>
</v-col>
</v-row></div>
</v-card-item>
</v-card></v-col
>
</v-row>
</div>
</div>
</template>
<script>
export default {
data() {
return {
profile: [
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพ",
district: "บางเขน",
phone: "08952402xx",
age: "42",
edit: "บางเขน",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: {
fb: "Sornram jadee",
x: "Sornram jadee",
email: "sornram.j@gmail.com",
},
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพมหานคร",
district: "บางเขนบางเขน",
phone: "08952402xx",
age: "42",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group:
"กลุ่มผู้ประกอบอาชีพด้านวิทยาศาสตร์ เทคโนโลยี การสื่อสาร การพัฒนานวัตรกรรม",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
"นิรโทษกรรมคดีการเมือง ยกเว้นคดีมาตรา 112",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพ",
district: "บางเขน",
phone: "08952402xx",
age: "42",
edit: "บางเขน",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพ",
district: "บางเขน",
phone: "08952402xx",
age: "42",
edit: "บางเขน",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพ",
district: "บางเขน",
phone: "08952402xx",
age: "42",
edit: "บางเขน",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพมหานคร",
district: "บางเขนบางเขน",
phone: "08952402xx",
age: "42",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
"นิรโทษกรรมคดีการเมือง ยกเว้นคดีมาตรา 112",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
{
name: "ศรราม",
lastname: "ใจดี",
province: "กรุงเทพมหานคร",
district: "บางเขนบางเขน",
phone: "08952402xx",
age: "42",
education: "ปริญญาโท ด้านเศรษฐศาสตร์",
group: "กลุ่มการศึกษา",
occupation:
"อดีตเคยทำงานด้านการจัดทำข้อเสนอเชิงนโยบายเศรษฐกิจมหภาคต่อกระทรวงการคลังและรัฐบาล...",
email: "sornram.j@gmail.com",
social: { fb: "Sornram jadee", x: "Sornram jadee" },
opinion: {
agree: [
"แก้ไข มาตรา 112",
"แก้ไขรัฐธรรมนูญ 2560",
"ยกเลิกการเกณฑ์ทหารแบบบังคับ",
"นิรโทษกรรมคดีการเมือง ยกเว้นคดีมาตรา 112",
],
disagree: ["สว. มีอำนาจโหวตเลือกนายกรัฐมนตรี"],
},
},
],
};
},
};
</script>
<style>
.more{
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.box-province {
position: absolute;
top: 0;
right: 0;
background-color: #f4c03f;
border-radius: 5px;
margin: 5px;
box-shadow: rgba(0, 0, 0, 0.24) 3px 0px 8px;
}
@media only screen and (min-width: 0px) and (max-width: 700px) {
.box-province {
position: unset;
display: block;
width: 100%;
top: 0;
right: 0;
background-color: #f4c03f;
border-radius: 5px;
margin: 5px;
box-shadow: rgba(0, 0, 0, 0.24) 3px 0px 8px;
}
}
</style>

View File

@@ -0,0 +1,14 @@
<template>
<div>
<CardUser />
</div>
</template>
<script>
import CardUser from "./CardUser";
export default {
components: {
CardUser,
},
};
</script>
<style></style>

View File

@@ -0,0 +1,127 @@
<template>
<div>
<div class="text-center pb-8">
<v-img
class="mx-auto"
:aspect-ratio="1"
src="@/assets/logo-title.png"
width="250"
></v-img>
<div class="text-title txt-black">นหาผสมครสว.</div>
<v-container>
<v-row>
<v-col cols="12" md="3">
<v-autocomplete
label="จังหวัด"
:items="provinceItems"
variant="solo"
item-title="provinceNameTh"
return-object
v-model="province"
placeholder="จังหวัด"
@update:modelValue="filterData"
hide-details
></v-autocomplete
></v-col>
<v-col cols="12" md="3">
<v-autocomplete
label="อำเภอ / เขต"
:items="districtItems"
variant="solo"
item-title="districtNameTh"
return-object
v-model="district"
placeholder="อำเภอ / เขต"
hide-details
></v-autocomplete
></v-col>
<v-col cols="12" md="3">
<v-autocomplete
label="กลุ่มอาชีพ"
:items="items"
variant="solo"
item-title="text"
return-object
placeholder="กลุ่มอาชีพ"
hide-details
></v-autocomplete>
</v-col>
<v-col cols="12" md="3">
<v-text-field
label="ชื่อ"
variant="solo"
hide-details
></v-text-field>
</v-col>
</v-row>
<v-btn color="#DD6C31" class="mt-8" elevated size="large">
<span class="text-sub">นหา</span>
</v-btn>
</v-container>
<ResultMain />
</div>
</div>
</template>
<script>
import Provinces from "@/components/form/provinces.json";
import Districts from "@/components/form/districts.json";
import ResultMain from "./ResultMain.vue";
export default {
components: {
ResultMain,
},
data() {
return {
province: null,
district: null,
districtItems: [],
provinceItems: Provinces,
items: [
{ text: "กลุ่มบริหารราชการแผ่นดินและความมั่นคง", idx: 1 },
{ text: "กลุ่มกฎหมายกระบวนการยุติธรรม", idx: 2 },
{ text: "กลุ่มการศึกษา", idx: 3 },
{ text: "กลุ่มการสาธารณสุข", idx: 4 },
{ text: "กลุ่มอาชีพทำนา ปลูกพืชล้มลุก", idx: 5 },
{ text: "กลุ่มอาชีพทำสวน ป่าไม้ ปศุสัตว์ ประมง", idx: 6 },
{ text: "กลุ่มพนักงานหรือลูกจ้างของบุคคล(ไม่ใช่หน่วยงานรัฐ)", idx: 7 },
{
text: "กลุ่มผู้ประกอบอาชีพด้านสิ่งแวดล้อม ผังเมือง อสังหาริมทรัพย์และสาธารณูปโภค ทรัพยากรธรรมชาติ พลังงาน",
idx: 8,
},
{ text: "กลุ่มผู้ประกอบกิจการ หรือ SME", idx: 9 },
{ text: "กลุ่มผู้ประกอบกิจการอื่นนอกจากข้อ (9)", idx: 10 },
{ text: "กลุ่มผู้ประกอบธุรกิจหรืออาชีพด้านการท่องเที่ยว", idx: 11 },
{ text: "กลุ่มผู้ประกอบอุตสาหกรรม", idx: 12 },
{
text: "กลุมผู้ประกอบอาชีพด้านวิทยาศาสตร์ เทคโนโลยี การสื่อสาร การพัฒนานวัตรกรรม",
idx: 13,
},
{ text: "กลุ่มสตรี", idx: 14 },
{
text: "กลุ่มผู้สูงอายุ คนพิการหรือทุพพลภาพ กลุ่มชาติพันธุ์ กลุ่มอัตลักษณ์อื่น",
idx: 15,
},
{ text: "กลุ่มศิลปะ วัฒนธรรม ดนตรี การแสดงและบันเทิง", idx: 16 },
{ text: "กลุ่มประชาสังคม องค์กรสาธารณประโยชน์", idx: 17 },
{ text: "กลุ่มนักกีฬา สื่อสารมวลชน ผู้สร้างสรรค์วรรณกรรม", idx: 18 },
{ text: "กลุ่มผู้ประกอบวิชาชีพ ผู้ประกอบอาชีพอิสระ", idx: 19 },
{ text: "กลุ่มอื่นๆ", idx: 20 },
// { text: "Real-Time" },
// { text: "Audience" },
],
};
},
methods: {
filterData() {
// กรองข้อมูลอันที่สองโดยใช้ข้อมูลจากอันแรก
if (this.province && this.province.provinceCode) {
this.districtItems = [...Districts].filter(
(item) => item.provinceCode === this.province.provinceCode
);
}
},
},
};
</script>
<style></style>

9
src/main.js Normal file
View File

@@ -0,0 +1,9 @@
import { createApp } from "vue";
import App from "./App.vue";
import store from "./store";
import vuetify from "./plugins/vuetify";
import { loadFonts } from "./plugins/webfontloader";
import router from './router'
loadFonts();
createApp(App).use(store).use(vuetify).use(router).mount("#app");

9
src/plugins/vuetify.js Normal file
View File

@@ -0,0 +1,9 @@
// Styles
import "@mdi/font/css/materialdesignicons.css";
import "vuetify/styles";
// Vuetify
import { createVuetify } from "vuetify";
export default createVuetify();
// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides

View File

@@ -0,0 +1,17 @@
/**
* plugins/webfontloader.js
*
* webfontloader documentation: https://github.com/typekit/webfontloader
*/
export async function loadFonts() {
const webFontLoader = await import(
/* webpackChunkName: "webfontloader" */ "webfontloader"
);
webFontLoader.load({
google: {
families: ["Roboto:100,300,400,500,700,900&display=swap"],
},
});
}

36
src/router/index.js Normal file
View File

@@ -0,0 +1,36 @@
import { createWebHistory, createRouter } from "vue-router";
import HomePage from "@/views/HomePage.vue";
import CheckSurvey from "@/views/CheckSurvey.vue";
import QuestionList from "@/views/QuestionList.vue";
import RegisterForm from "@/views/RegisterForm.vue";
import SearchUser from "@/views/SearchUser.vue";
const routes = [
{
path: "/",
name: "HomePage",
component: HomePage,
},
{
path: "/check",
component: CheckSurvey,
},
{
path: "/checklist",
component: QuestionList,
},
{
path: "/forms",
component: RegisterForm,
},
{
path: "/search",
component: SearchUser,
},
];
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;

9
src/store/index.js Normal file
View File

@@ -0,0 +1,9 @@
import { createStore } from "vuex";
export default createStore({
state: {},
getters: {},
mutations: {},
actions: {},
modules: {},
});

10
src/utils/trpc.ts Normal file
View File

@@ -0,0 +1,10 @@
import {} from "@trpc/client";
import { httpBatchLink, createTRPCProxyClient } from "@trpc/client";
export const client = createTRPCProxyClient({
links: [
httpBatchLink({
url: "http://localhost:3000",
}),
],
});

19
src/views/CheckSurvey.vue Normal file
View File

@@ -0,0 +1,19 @@
<template>
<div>
<MainCheckVue/>
</div>
</template>
<script>
import MainCheckVue from '@/components/check/MainCheck.vue'
export default {
components:{
MainCheckVue
}
}
</script>
<style>
</style>

16
src/views/HomePage.vue Normal file
View File

@@ -0,0 +1,16 @@
<template>
<div><MainVote /></div>
</template>
<script>
import MainVote from "@/components/MainVote.vue";
export default {
name: "HomePage",
components: {
MainVote,
},
};
</script>
<style></style>

View File

@@ -0,0 +1,19 @@
<template>
<div>
<QuestionListVue/>
</div>
</template>
<script>
import QuestionListVue from '@/components/check/QuestionList.vue'
export default {
components:{
QuestionListVue
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,12 @@
<template lang="">
<div>
<FormMain />
</div>
</template>
<script>
import FormMain from "../components/form/FormMain.vue";
export default {
components: { FormMain },
};
</script>
<style lang=""></style>

14
src/views/SearchUser.vue Normal file
View File

@@ -0,0 +1,14 @@
<template>
<div>
<FormMain />
</div>
</template>
<script>
import FormMain from "../components/search/SearchMain.vue";
export default {
components: {
FormMain,
},
};
</script>
<style></style>

View File

@@ -0,0 +1,12 @@
import { shallowMount } from "@vue/test-utils";
import HelloWorld from "@/components/HelloWorld.vue";
describe("HelloWorld.vue", () => {
it("renders props.msg when passed", () => {
const msg = "new message";
const wrapper = shallowMount(HelloWorld, {
props: { msg },
});
expect(wrapper.text()).toMatch(msg);
});
});

8
vue.config.js Normal file
View File

@@ -0,0 +1,8 @@
const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
pluginOptions: {
vuetify: {
// https://github.com/vuetifyjs/vuetify-loader/tree/next/packages/vuetify-loader
},
},
});