# SGC Mobile (Ionic Vue)

- Service Api Docs (/docs/api/index.html)

## Install - required

    # https://nodejs.org/ko/download/
    # node install
    npm uninstall -g ionic # uninstall if ionic is installed
    npm install -g @ionic/cli@latest # install
    npm install -g @vue/cli # Vue Cli

## Install - optional

    npm install --save-dev node-sass sass-loader # Scss Loader optional
    npm install -g http-server # http server  optional
    npm install --save-dev colors # for deploy command  optional
    npm install --save-dev iconv-lite # for deploy command  optional

## Project Run & Build

    ionic serve # run server
    ionic serve -lab # run server for ios and android
    ionic build --prod # Build the application for production
    ionic build --aot # Perform ahead-of-time compilation for this build
    ionic build --minifyjs # Minify JS for this build
    ionic build --minifycss # Minify CSS for this build
    ionic build --optimizejs # Perform JS optimizations for this build
    # change package.json version
    npm install # if need when change the package
    ionic build --prod --minifyjs --minifycss --optimizejs # default origial command
    npm run format # file formatter not need. (if need run)
    npm run db2file # DB SQL(docs/DB_SQL.sql) to java, mapper, interface. (if need run)
    npm run translate # translate json file to other language.
    npm run compile # comple source to dist (ts to javascript)
    npm run deploy # copy dist folder to src/main/webapp/mobile. need  npm install -g colors , npm install -g iconv-lite

## ENV-Development

- portal (임직원)
  - ./.env.development (change this file and run ionic serve again)
  - VUE_APP_TYPE=portal
  - _VUE_APP_TYPE=as
- as (협력업체)
  - ./.env.development (change this file and run ionic serve again)
  - _VUE_APP_TYPE=portal
  - VUE_APP_TYPE=as

## Push Test

- http://localhost:8100/#/pushdev
- 개발 환경에서만 연결 가능합니다.

## VSCode Extension

- Name: Beautify css/sass/scss/less
  - Id: michelemelluso.code-beautifier
  - Description: Beautify css, sass and less code (extension for Visual Studio Code)
  - Version: 2.3.3
  - Publisher: michelemelluso
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=michelemelluso.code-beautifier
- Name: Comments in Typescript
  - Id: salbert.comment-ts
  - Description: Generates JSDoc comments in TypeScript files.
  - Version: 1.0.21
  - Publisher: s.albert
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=salbert.comment-ts
- Name: Git Graph
  - Id: mhutchie.git-graph
  - Description: View a Git Graph of your repository, and perform Git actions from the graph.
  - Version: 1.30.0
  - Publisher: mhutchie
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph
- Name: Prettier - Code formatter
  - Id: esbenp.prettier-vscode
  - Description: Code formatter using prettier
  - Version: 9.9.0
  - Publisher: Prettier
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
- Name: SCSS IntelliSense
  - Id: mrmlnc.vscode-scss
  - Description: Advanced autocompletion and refactoring support for SCSS
  - Version: 0.10.0
  - Publisher: mrmlnc
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-scss
- Name: Vue 3 Snippets
  - Id: hollowtree.vue-snippets
  - Description: A Vue.js 3 And Vue.js 2 Code Snippets Extension
  - Version: 1.0.4
  - Publisher: hollowtree
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=hollowtree.vue-snippets
- Name: Vue Language Features (Volar)
  - Id: Vue.volar
  - Description: Language support for Vue 3
  - Version: 0.40.13
  - Publisher: Vue
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=Vue.volar
- Name: Vue VSCode Snippets
  - Id: sdras.vue-vscode-snippets
  - Description: Snippets that will supercharge your Vue workflow
  - Version: 3.1.1
  - Publisher: sarah.drasner
  - VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets

## Menu Struct

### 모바일(공통)

- 로그인 (views/common/LoginPage.vue)
  - 아이디 찾기 (views/common/modals/FindIdModal.vue)
  - 비밀번호 찾기 (views/common/modals/FindPwModal.vue)
- 메인(홈) (views/common/HomePage.vue)

### 모바일(임직원)

- 하자관리
  - 하자작업지시 (views/po/PoDeftMangPage.vue - MO03010001U)
    - 하자작업지시 상세(views/po/PoDeftMangViewPage.vue - MO03010001U)
  - 하자조회 (views/po/PoDeftQuePage.vue - MO03020001U)
    - 하자조회 상세(views/po/PoDeftQueViewPage.vue - MO03020001U)

- 회의실관리
  - 회의실예약 (views/po/PoRoomRevPage.vue - MO01010001U)
  - 회의실예약승인 (views/po/PoRoomAppPage.vue - MO01020001)
- 현장 주소록(views/common/SiteAddressPage.vue)
  - 현장 주소록 지도보기(views/common/modals/SiteAddressMapModal.vue)

### 모바일(협력업체)

- 하자관리
  - 하자처리 (views/as/AsDeftIngPage.vue - MO02010001U)
    - 하자처리 상세 (views/as/AsDeftIngViewPage.vue - MO02010001U)
  - 하자완료조회 (views/as/AsDeftDonePage.vue - MO02020001U)
    - 하자완료조회 상세(views/as/AsDeftDoneViewPage.vue - MO02020001U)

## SRC File Struct

    mobile-src/src/
    ├── App.vue
    ├── assets
    │   ├── SGC-CI.svg  (로그인 페이지 하단 로고)
    │   ├── SGC.svg  (페이지 홈 로고)
    │   ├── calendar-number-outline.svg (날자 선택 우측 아이콘)
    │   ├── checkmark-circle-outline.svg (라디오 박스)
    │   ├── checkmark-outline.svg (체크박스)
    │   ├── mobile-main-01.svg (홈 하자 권한이 없을 경우 대체 이미지)
    │   └── mobile-main.svg (홈 하자 권한이 없을 경우 대체 이미지)
    ├── main.ts (메인 index - 진입시 작동됨)
    ├── registerServiceWorker.ts (Service Worker)
    ├── router
    │   └── index.ts (Router - 라우터 패스 정보 관리 및 권한 체크)
    ├── services
    │   ├── api.service.ts (Api Service - WAS 와 통신을 위한 서비스)
    │   ├── code.service.ts (Code Service for checkbox, radio, select)
    │   ├── common.interface.ts (Interfaces)
    │   ├── common.service.ts (Common Service - 공통 작업 서비스)
    │   ├── i18n.ts (Translate text for multi localization)
    │   ├── icon.ts (Icons - 페이지에서 사용되는 아이콘을 적재하고 있음)
    │   ├── index.ts
    │   ├── shared.service.ts (Shared Data Service for login info, site info etc)
    │   └── utils.service.ts (Template Util)
    ├── shims-vue.d.ts
    ├── theme
    │   ├── global.scss ( Global style)
    │   └── variables.css ( Css Color variables)
    └── views
        ├── as (협력업체)
        │   ├── AsDeftDonePage.vue (하자완료조회)
        │   ├── AsDeftDoneViewPage.vue (하자완료조회 상세)
        │   ├── AsDeftIngPage.vue (하자처리)
        │   ├── AsDeftIngViewPage.vue (하자처리 상세)
        │   └── modals
        │       └── index.ts
        ├── common
        │   ├── ErrorPage.vue (오류 페이지)
        │   ├── HomePage.vue (홈, 메인)
        │   ├── LoginPage.vue (로그인)
        │   ├── PushDevPage.vue (푸시 테스트)
        │   ├── SamplePage.vue (디자인 가이드)
        │   ├── SiteAddressPage.vue (현장 주소록)
        │   └── modals
        │       ├── DeftCustsignModal.vue (고객 서명 모달)
        │       ├── DeftElpsRegModal.vue (하자 경과 등록 모달)
        │       ├── DeftElpsSmsModal.vue  (하자 작업 지시 SMS&PUSH 전송 모달)
        │       ├── DeftElpsViewModal.vue (하자 작업 지시 보기 모달)
        │       ├── DeftPhotoModal.vue (하자 이미지 보기 모달)
        │       ├── FindIdModal.vue (아이디 찾기 모달)
        │       ├── FindPwModal.vue (암호 찾기 모달)
        │       ├── SettingModal.vue (설정 모달)
        │       ├── SiteAddressMapModal.vue (현장 지도보기 모달)
        │       └── index.ts
        ├── components
        │   ├── SgcCheckbox.vue (체크 박스)
        │   ├── SgcConsole.vue (콘솔 로그)
        │   ├── SgcDatetime.vue (날자 선택)
        │   ├── SgcDatetimeRange.vue (기간 범위)
        │   ├── SgcHourRange.vue (시간 범위)
        │   ├── SgcItemInput.vue (아이템 입력)
        │   ├── SgcItemView.vue (아이템 보기)
        │   ├── SgcLoading.vue (페이지 로딩)
        │   ├── SgcModal.vue (모달 외곽 템플릿)
        │   ├── SgcPage.vue (페이지 외곽 템플릿)
        │   ├── SgcRadio.vue (라디오 박스)
        │   ├── SgcSearchId.vue (현장 검색)
        │   ├── SgcSelect.vue (콤보 박스)
        │   ├── index.ts
        │   └── modals
        │       └── SearchCovendModal.vue (현장 검색)
        └── po
            ├── PoDeftMangPage.vue (하자작업지시)
            ├── PoDeftMangViewPage.vue (하자작업지시 상세)
            ├── PoDeftQuePage.vue (하자조회및완료처리)
            ├── PoDeftQueViewPage.vue (하자조회및완료처리 상세)
            ├── PoRoomAppPage.vue (회의실예약승인)
            ├── PoRoomRevPage.vue (회의실예약)
            └── modals
                ├── PoRoomRevRegModal.vue (회의실예약)
                ├── PoRoomRevViewModal.vue (회의실예약 상세)
                └── index.ts

## Public File Struct

    mobile-src/public/
    ├── firebase-messaging-sw.js (구글 파이어 베이스 푸시 알림 정보)
    ├── img
    │   └── icons (어플 아이콘)
    │       ├── android-chrome-144x144.png (어플 아이콘)
    │       ├── android-chrome-167x167.png (어플 아이콘)
    │       ├── android-chrome-180x180.png (어플 아이콘)
    │       ├── android-chrome-192x192.png (어플 아이콘)
    │       ├── android-chrome-20x20.png (어플 아이콘)
    │       ├── android-chrome-29x29.png (어플 아이콘)
    │       ├── android-chrome-40x40.png (어플 아이콘)
    │       ├── android-chrome-512x512.png (로딩 아이콘)
    │       ├── android-chrome-76x76.png (어플 아이콘)
    │       ├── android-chrome-maskable-192x192.png (어플 아이콘)
    │       ├── android-chrome-maskable-512x512.png (어플 아이콘)
    │       ├── favicon-16x16.png (파비콘)
    │       ├── favicon-20x20.png (파비콘)
    │       ├── favicon-32x32.png (파비콘)
    │       ├── favicon.ico (파비콘)
    │       ├── favicon.svg (파비콘)
    │       ├── icon-messages-27x20.png (푸시 메세지 아이콘)
    │       ├── icon-messages-54x40.png (푸시 메세지 아이콘)
    │       ├── icon-messages-81x60.png (푸시 메세지 아이콘)
    │       ├── icon-messages-96x96.png (푸시 메세지 아이콘)
    │       ├── marker_blue.png (현장 지도 마크 아이콘)
    │       ├── marker_gray.png (현장 지도 마크 아이콘)
    │       ├── marker_green.png (현장 지도 마크 아이콘)
    │       ├── marker_orange.png (현장 지도 마크 아이콘)
    │       ├── marker_purple.png (현장 지도 마크 아이콘)
    │       ├── marker_red.png (현장 지도 마크 아이콘)
    │       ├── marker_yellow.png (현장 지도 마크 아이콘)
    │       ├── menu-deftdone-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-defting-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-deftmang-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-deftque-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-home-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-roomapp-96x96.png (어플 간편 진입 아이콘)
    │       ├── menu-roomrev-96x96.png (어플 간편 진입 아이콘)
    │       └── safari-pinned-tab.svg (사파리 아이콘)
    └── index.html (메인 index)

Generated using TypeDoc