diff --git a/public/static/images/canvas/grid_option_arr.svg b/public/static/images/canvas/grid_option_arr.svg
new file mode 100644
index 0000000..c2c6cbb
--- /dev/null
+++ b/public/static/images/canvas/grid_option_arr.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/static/images/main/id_delete.svg b/public/static/images/main/id_delete.svg
new file mode 100644
index 0000000..3e5d611
--- /dev/null
+++ b/public/static/images/main/id_delete.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/main/login-arr.svg b/public/static/images/main/login-arr.svg
new file mode 100644
index 0000000..7de03bc
--- /dev/null
+++ b/public/static/images/main/login-arr.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/static/images/main/login-logo.svg b/public/static/images/main/login-logo.svg
new file mode 100644
index 0000000..eb5d29f
--- /dev/null
+++ b/public/static/images/main/login-logo.svg
@@ -0,0 +1,26 @@
+
diff --git a/public/static/images/main/login_bg.png b/public/static/images/main/login_bg.png
new file mode 100644
index 0000000..e78e68d
Binary files /dev/null and b/public/static/images/main/login_bg.png differ
diff --git a/public/static/images/main/login_id.svg b/public/static/images/main/login_id.svg
new file mode 100644
index 0000000..74af51d
--- /dev/null
+++ b/public/static/images/main/login_id.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/main/login_password.svg b/public/static/images/main/login_password.svg
new file mode 100644
index 0000000..ac4757a
--- /dev/null
+++ b/public/static/images/main/login_password.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/main/password_hidden.svg b/public/static/images/main/password_hidden.svg
new file mode 100644
index 0000000..28aeac7
--- /dev/null
+++ b/public/static/images/main/password_hidden.svg
@@ -0,0 +1,11 @@
+
diff --git a/public/static/images/main/password_visible.svg b/public/static/images/main/password_visible.svg
new file mode 100644
index 0000000..dcbc2a9
--- /dev/null
+++ b/public/static/images/main/password_visible.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/app/canvas/page.jsx b/src/app/canvas/page.jsx
index 0fbce07..356b647 100644
--- a/src/app/canvas/page.jsx
+++ b/src/app/canvas/page.jsx
@@ -2,6 +2,9 @@
import CanvasLayout from '@/components/canvas/CanvasLayout'
import CanvasMenu from '@/components/canvas/CanvasMenu'
+import GridCopy from '@/components/canvas/modal/gridoption/GridCopy'
+import GridMove from '@/components/canvas/modal/gridoption/GridMove'
+import GridOption from '@/components/canvas/modal/gridoption/GridOption'
import OuterLineWall from '@/components/canvas/modal/outerlinesetting/OuterLineWall'
import SettingModal01 from '@/components/canvas/modal/settoing01/SettingModal01'
import Header from '@/components/layout/Header'
@@ -21,7 +24,10 @@ export default function CanvasPage() {
{modalOption.option && }
- {modalOption.outerwall && }
+ {/* {modalOption.outerwall && } 확인용 숨김처리*/}
+ {modalOption.gridoption && }
+ {modalOption.gridcopy && }
+ {modalOption.gridmove && }
diff --git a/src/app/inputwrap/page.jsx b/src/app/inputwrap/page.jsx
index 3e9480a..b37232f 100644
--- a/src/app/inputwrap/page.jsx
+++ b/src/app/inputwrap/page.jsx
@@ -186,6 +186,28 @@ export default function InputWrapPage (){
+
)
}
\ No newline at end of file
diff --git a/src/app/login/page.jsx b/src/app/login/page.jsx
new file mode 100644
index 0000000..549d960
--- /dev/null
+++ b/src/app/login/page.jsx
@@ -0,0 +1,50 @@
+'use client'
+
+import '@/styles/style.scss'
+import Image from 'next/image'
+import Link from 'next/link'
+import { useState } from 'react'
+
+export default function LoginPage(){
+ const [passwordVisible, setPasswordVisible] = useState(false);
+ return(
+
+
+
+
+
+
+
+ Q.CAST III
+ 太陽光発電システム図面管理サイト
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ パスワードの初期化
+
+
+
+
+ ※当サイトをご利用の際は、事前申請が必要です。
+ IDがない方は ID申請 クリックしてください。
+
+
+
COPYRIGHT©2024 Hanwha Japan All Rights Reserved.
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/canvas/modal/gridoption/GridCopy.jsx b/src/components/canvas/modal/gridoption/GridCopy.jsx
new file mode 100644
index 0000000..c7374c3
--- /dev/null
+++ b/src/components/canvas/modal/gridoption/GridCopy.jsx
@@ -0,0 +1,54 @@
+import WithDraggable from "@/components/common/draggable/withDraggable";
+import { modalState } from "@/store/modalAtom";
+import { useState } from "react";
+import { useRecoilState } from "recoil";
+
+export default function GridCopy() {
+ const [modalOption, setModalOption] = useRecoilState(modalState); //modal 열림닫힘 state
+ const [close, setClose] = useState(false)
+
+ const HandleClickClose = () => {
+ setClose(true)
+ setTimeout(() => {
+ setModalOption({...modalOption, gridcopy: false})
+ setClose(false);
+ }, 180)
+ }
+
+
+ return(
+
+
+
+
グリッドのコピー
+
+
+
+
+ 間隔を設定し、コピー方向を選択します
+
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/canvas/modal/gridoption/GridMove.jsx b/src/components/canvas/modal/gridoption/GridMove.jsx
new file mode 100644
index 0000000..6c4e4ee
--- /dev/null
+++ b/src/components/canvas/modal/gridoption/GridMove.jsx
@@ -0,0 +1,66 @@
+import WithDraggable from "@/components/common/draggable/withDraggable";
+import { modalState } from "@/store/modalAtom";
+import { useState } from "react";
+import { useRecoilState } from "recoil";
+
+export default function GridMove() {
+ const [modalOption, setModalOption] = useRecoilState(modalState); //modal 열림닫힘 state
+ const [close, setClose] = useState(false)
+
+ const HandleClickClose = () => {
+ setClose(true)
+ setTimeout(() => {
+ setModalOption({...modalOption, gridmove: false})
+ setClose(false);
+ }, 180)
+ }
+
+
+ return(
+
+
+
+
グリッドのコピー
+
+
+
+
+ 移動する方向を入力してください
+
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/canvas/modal/gridoption/GridOption.jsx b/src/components/canvas/modal/gridoption/GridOption.jsx
new file mode 100644
index 0000000..13c230a
--- /dev/null
+++ b/src/components/canvas/modal/gridoption/GridOption.jsx
@@ -0,0 +1,88 @@
+import WithDraggable from "@/components/common/draggable/withDraggable";
+import Qselect from "@/components/common/select/Qselect";
+import { modalState } from "@/store/modalAtom";
+import { useState } from "react";
+import { useRecoilState } from "recoil";
+
+export default function GridOption() {
+ const [modalOption, setModalOption] = useRecoilState(modalState); //modal 열림닫힘 state
+ const [close, setClose] = useState(false)
+
+ const SelectOption = [
+ {name: 'オンライン保証シ',}, {name: 'ステム'}
+ ]
+
+ const HandleClickClose = () => {
+ setClose(true)
+ setTimeout(() => {
+ setModalOption({...modalOption, gridoption: false})
+ setClose(false);
+ }, 180)
+ }
+
+
+ return(
+
+
+
+
ドット・ライングリッドの設定
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/canvas/modal/settoing01/SecondOption.jsx b/src/components/canvas/modal/settoing01/SecondOption.jsx
index 0340605..1adf131 100644
--- a/src/components/canvas/modal/settoing01/SecondOption.jsx
+++ b/src/components/canvas/modal/settoing01/SecondOption.jsx
@@ -42,8 +42,9 @@ export default function SecondOption (props){
-
吸着範囲の設定
{buttonList03.map((item)=>(
- onClick(e)}>
-
- {item.name}
+
+ {item.name}
))}
diff --git a/src/components/publishpage/PublishPage.jsx b/src/components/publishpage/PublishPage.jsx
index afdfe53..e88d2d5 100644
--- a/src/components/publishpage/PublishPage.jsx
+++ b/src/components/publishpage/PublishPage.jsx
@@ -90,6 +90,13 @@ export default function PublishPage() {
|
2024-09-11 |
+
+ | LoginPage |
+ |
+ LoginPage |
+ |
+ 2024-09-23 |
+
| 물품 및 도면 관리 |
|
diff --git a/src/store/modalAtom.js b/src/store/modalAtom.js
index a7f2173..3728655 100644
--- a/src/store/modalAtom.js
+++ b/src/store/modalAtom.js
@@ -5,6 +5,9 @@ export const modalState = atom({
default: {
option: true,
outerwall: true,
+ gridoption: true,
+ gridcopy: true,
+ gridmove: true,
},
})
diff --git a/src/styles/_inputcommon.scss b/src/styles/_inputcommon.scss
index 78534fd..f1b6aab 100644
--- a/src/styles/_inputcommon.scss
+++ b/src/styles/_inputcommon.scss
@@ -40,6 +40,16 @@
display: flex;
align-items: center;
}
+ &.pop{
+ .input-wrap{
+ .form-input{
+ background-color: #272727;
+ span{
+ color: #fff;
+ }
+ }
+ }
+ }
}
.title{
max-width: 1600px;
diff --git a/src/styles/_main.scss b/src/styles/_main.scss
index 29bdec1..334a048 100644
--- a/src/styles/_main.scss
+++ b/src/styles/_main.scss
@@ -358,4 +358,200 @@
margin-bottom: 0;
}
}
+}
+
+// loginpage
+.login-wrap{
+ position: relative;
+ width: 100%;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ background: url(../../public/static/images/main/login_bg.png) no-repeat center;
+ background-size: cover;
+ .login-inner{
+ max-width: 500px;
+ width: 100%;
+ margin: 0 auto;
+ .login-logo{
+ display: block;
+ margin-bottom: 25px;
+ }
+ .login-input-frame{
+ padding: 40px 50px;
+ border-radius: 6px;
+ background: rgba(255, 255, 255, 0.97);
+ box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02);
+ .login-frame-tit{
+ font-size: 18px;
+ color: #364864;
+ font-weight: 400;
+ padding-bottom: 30px;
+ border-bottom: 1px solid #E5E9EF;
+ span{
+ display: block;
+ font-weight: 600;
+ margin-bottom: 5px;
+ }
+ }
+ .login-input-wrap{
+ margin-top: 30px;
+ .login-area{
+ position: relative;
+ display: flex;
+ align-items: center;
+ border: 1px solid #E5E9EF;
+ height: 45px;
+ padding-left: 40px;
+ padding-right: 15px;
+ margin-bottom: 15px;
+ .login-input{
+ flex: 1;
+ height: 100%;
+ background-color: transparent;
+ font-size: 13px;
+ font-weight: 400;
+ color: #D1D7E0;
+ &::placeholder{
+ color: #D1D7E0;
+ }
+ }
+ &::before{
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 15px;
+ transform: translateY(-50%);
+ width: 10px;
+ height: 12px;
+ background-size: cover;
+ }
+ button{
+ width: 20px;
+ height: 100%;
+ background-repeat: no-repeat;
+ background-position: center;
+ }
+ &.id{
+ &::before{
+ background: url(../../public/static/images/main/login_id.svg)no-repeat center;
+ }
+ .id-delete{
+ background-image: url(../../public/static/images/main/id_delete.svg);
+ background-size: 17px 17px;
+ }
+ }
+ &.password{
+ margin-bottom: 20px;
+ &::before{
+ background: url(../../public/static/images/main/login_password.svg)no-repeat center;
+ }
+ .password-hidden{
+ background-image: url(../../public/static/images/main/password_hidden.svg);
+ background-size: 19px 13px;
+ &.visible{
+ background-image: url(../../public/static/images/main/password_visible.svg);
+ }
+ }
+ }
+ }
+ .login-btn-box{
+ margin-bottom: 20px;
+ .login-btn{
+ display: block;
+ width: 100%;
+ height: 45px;
+ background-color: #5C6773;
+ color: #fff;
+ font-size: 15px;
+ font-weight: 600;
+ border-radius: 4px;
+ transition: background .15s ease-in-out;
+ &:hover{
+ background-color: #717e8d;
+ }
+ }
+ }
+ .reset-password{
+ width: 100%;
+ text-align: center;
+ a{
+ position: relative;
+ font-size: 13px;
+ color: #364864;
+ font-weight: 400;
+ padding-right: 16px;
+ &::before{
+ content: '';
+ position: absolute;
+ top: calc(50% + 1px);
+ right: 0;
+ transform: translateY(-50%);
+ width: 6px;
+ height: 8px;
+ background: url(../../public/static/images/main/login-arr.svg)no-repeat center;
+ }
+ }
+ }
+ }
+ }
+ .login-guide-wrap{
+ position: relative;
+ margin-left: 10px;
+ margin-top: 30px;
+ padding-left: 15px;
+ font-size: 13px;
+ color: #fff;
+ line-height: 24px;
+ a{
+ color: #fff;
+ font-weight: 600;
+ text-decoration: underline;
+ }
+ span{
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+ }
+ }
+ .login-copyright{
+ position: absolute;
+ bottom: 40px;
+ left: 50%;
+ transform: translateX(-50%);
+ font-size: 11px;
+ color: #fff;
+ font-weight: 500;
+ }
+}
+
+.d-check-box{
+ &.login{
+ margin-bottom: 25px;
+ label{
+ padding-left: 20px;
+ color: #364864;
+ &:before{
+ width: 22px;
+ height: 22px;
+ top: -1px;
+ border-color: #A8B6C7;
+ border-radius: 3px;
+ transition: background .05s ease-in-out;
+ }
+ }
+ }
+ input[type=checkbox]:checked + label::before{
+ border-color: #A8B6C7;
+ background-color: #A8B6C7;
+ }
+ input[type=checkbox]:checked + label::after{
+ border-color: #fff;
+ width: 7px;
+ height: 11px;
+ top: -2px;
+ left: 1px;
+ }
}
\ No newline at end of file
diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss
index d623e02..cfd5582 100644
--- a/src/styles/_modal.scss
+++ b/src/styles/_modal.scss
@@ -12,7 +12,7 @@
top: 200px;
right: 100px;
width: 100%;
- min-width: 380px;
+ min-width: 300px;
max-width: fit-content;
height: -webkit-fit-content;
height: -moz-fit-content;
@@ -22,11 +22,14 @@
background-color: #272727;
z-index: 9999999;
&.sm{
- max-width: 550px;
+ max-width: 580px;
}
&.ssm{
max-width: 380px;
}
+ &.xm{
+ max-width: 300px;
+ }
&.mount{
animation: mountpop .17s ease-in-out forwards;
}
@@ -109,4 +112,149 @@
}
}
}
+}
+
+.adsorption-point{
+ display: flex;
+ align-items: center;
+ background-color: #3A3A3A;
+ border-radius: 3px;
+ padding-left: 11px;
+ overflow: hidden;
+ transition: all 0.17s ease-in-out;
+ span{
+ font-size: 12px;
+ color: #898989;
+ }
+ i{
+ display: flex;
+ align-items: center;
+ padding: 0 7px;
+ margin-left: auto;
+ height: 100%;
+ font-size: 13px;
+ color: #898989;
+ }
+ &.act{
+ i{
+ color: #fff;
+ background-color: #1083E3;
+ }
+ }
+}
+
+// grid-option
+.grid-check-form{
+ display: flex;
+ align-items: center;
+ gap: 15px;
+ padding-bottom: 15px;
+ border-bottom: 1px solid #3C3C3C;
+}
+.grid-option-wrap{
+ padding: 15px 0;
+ border-bottom: 1px solid #3C3C3C;
+ .grid-option-box{
+ display: flex;
+ align-items: center;
+ background-color: #3D3D3D;
+ border-radius: 2px;
+ padding: 10px;
+ gap: 20px;
+ margin-bottom: 5px;
+ .grid-input-form{
+ display: flex;
+ align-items: center;
+ span{
+ font-size: 12px;
+ color: #fff;
+ font-weight: 500;
+ }
+ .input-grid{
+ width: 63px;
+ input{
+ width: 100%;
+ }
+ }
+ }
+ &:last-child{
+ margin-bottom: 0;
+ }
+ }
+}
+.grid-select{
+ flex: 1;
+ .sort-select{
+ width: 100%;
+ background-color: #313131;
+ }
+}
+.grid-btn-wrap{
+ padding-top: 15px;
+ text-align: right;
+ button{
+ padding: 0 20px;
+ }
+}
+
+// grid copy
+.grid-option-tit{
+ font-size: 12px;
+ color: #fff;
+ font-weight: 400;
+ padding-bottom: 15px;
+ border-bottom: 1px solid #3C3C3C;
+}
+.grid-direction{
+ display: flex;
+ align-items: center;
+ gap: 5px;
+}
+.direction{
+ width: 22px;
+ height: 22px;
+ background-color: #757575;
+ background-image: url(../../public/static/images/canvas/grid_option_arr.svg);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 16px 15px;
+ border-radius: 50%;
+ transition: all .15s ease-in-out;
+ &.down{transform: rotate(180deg);}
+ &.left{transform: rotate(-90deg);}
+ &.right{transform: rotate(90deg);}
+ &:hover,
+ &.act{
+ background-color: #1083E3;
+ }
+}
+
+// grid-move
+.move-form{
+ p{
+ font-size: 12px;
+ color: #fff;
+ font-weight: 500;
+ }
+}
+.input-move-wrap{
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ span{
+ color: #fff;
+ font-size: 12px;
+ }
+ .input-move{
+ width: 148px;
+ input{
+ width: 100%;
+ }
+ }
+}
+.direction-move-wrap{
+ flex: none;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 10px;
}
\ No newline at end of file
diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss
index d4f4ed2..7e36fd7 100644
--- a/src/styles/_reset.scss
+++ b/src/styles/_reset.scss
@@ -338,6 +338,7 @@ button{
margin-bottom: 10px;
}
}
+input[type=number],
input[type=text]{
&.input-origin{
display: inline-block;
@@ -508,6 +509,11 @@ input[type=text]{
color: #45576F;
}
}
+ &.no-text{
+ label{
+ padding-left: 0;
+ }
+ }
}
.d-check-radio {
@@ -565,6 +571,16 @@ input[type=text]{
opacity: 1;
visibility: visible;
}
+ &.pop{
+ label{
+ &:before{
+ border-color: #fff;
+ }
+ &:after{
+ background-color: #fff;
+ }
+ }
+ }
}
// check-box
@@ -611,6 +627,11 @@ input[type=text]{
transform: translate(7.75px,4.5px) rotate(45deg);
-ms-transform: translate(7.75px,4.5px) rotate(45deg);
}
+ &.pop{
+ input[type=checkbox]:checked + label::after{
+ border-color: #fff;
+ }
+ }
}
// date-picker