From d3a588c41660508fb494ba55c6d0d6ead0b1db27 Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 화, 16 11월 2021 12:51:28 +0900
Subject: [PATCH] 이슈 만들기 진행[프론트]

---
 src/main/webapp/views/hostingField/hostingFieldAdd.html                 |    2 
 src/main/webapp/views/issue/issueAdd.html                               |  180 ++++++++---------
 src/main/webapp/scripts/app/companyField/companyFieldList.controller.js |    2 
 src/main/webapp/views/ispField/ispFieldAdd.html                         |    2 
 src/main/webapp/views/ispField/ispFieldModify.html                      |    2 
 src/main/webapp/views/companyField/companyFieldModify.html              |    2 
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                |  125 +++++++++---
 src/main/webapp/scripts/components/utils/autoComplete.controller.js     |  195 +++++++++++++++----
 src/main/webapp/views/issue/issueModifyUser.html                        |   26 +-
 src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js     |    1 
 src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js |    2 
 src/main/webapp/i18n/ko/global.json                                     |   10 
 src/main/webapp/views/hostingField/hostingFieldModify.html              |    2 
 src/main/webapp/views/issue/issueModify.html                            |   26 +-
 src/main/webapp/scripts/app/ispField/ispFieldList.controller.js         |    2 
 src/main/webapp/views/companyField/companyFieldAdd.html                 |    2 
 16 files changed, 370 insertions(+), 211 deletions(-)

diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 7f4d968..3c185a4 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -760,7 +760,11 @@
         "d": "�씪",
         "emptyUser": "�꽑�깮�븷 �닔 �엳�뒗 �궗�슜�옄媛� �뾾�뒿�땲�떎.",
         "emptyProject": "�꽑�깮�븷 �닔 �엳�뒗 �봽濡쒖젥�듃媛� �뾾�뒿�땲�떎.",
+        "emptyDepartment": "�꽑�깮�븷 �닔 �엳�뒗 遺��꽌媛� �뾾�뒿�땲�떎.",
+        "emptyCompany": "�꽑�깮�븷 �닔 �엳�뒗 �뾽泥닿� �뾾�뒿�땲�떎.",
         "emptyIssue": "�꽑�깮�븷 �닔 �엳�뒗 �씠�뒋媛� �뾾�뒿�땲�떎.",
+        "emptyIsp": "�꽑�깮�븷 �닔 �엳�뒗 ISP媛� �뾾�뒿�땲�떎.",
+        "emptyHosting": "�꽑�깮�븷 �닔 �엳�뒗 HOSTING媛� �뾾�뒿�땲�떎.",
         "department" : "遺��꽌",
         "level" : "�궗�슜�옄 �벑湲�",
         "manageDepartment": "遺��꽌 愿�由�",
@@ -813,7 +817,7 @@
         "tel" : "�쟾�솕踰덊샇",
         "code" : "肄붾뱶",
         "email" : "�씠硫붿씪",
-        "desc" : "鍮꾧퀬",
+        "memo" : "鍮꾧퀬",
         "failedToSelectCompanyFieldFullList" : "�뾽泥� 愿�由� 紐⑸줉 議고쉶 �떎�뙣",
         "delete" : "�뾽泥� �궘�젣",
         "wantToDeleteSelectCompanyField" : "�꽑�깮�븳 �뾽泥대�� �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �뾽泥대뒗 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.",
@@ -831,7 +835,7 @@
         "tel" : "�쟾�솕踰덊샇",
         "code" : "肄붾뱶",
         "email" : "�씠硫붿씪",
-        "desc" : "鍮꾧퀬",
+        "memo" : "鍮꾧퀬",
         "failedToSelectIspFieldFullList" : "ISP 愿�由� 紐⑸줉 議고쉶 �떎�뙣",
         "delete" : "ISP �궘�젣",
         "wantToDeleteSelectIspField" : "�꽑�깮�븳 ISP瑜� �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 ISP�뒗 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.",
@@ -849,7 +853,7 @@
         "tel" : "�쟾�솕踰덊샇",
         "code" : "肄붾뱶",
         "email" : "�씠硫붿씪",
-        "desc" : "鍮꾧퀬",
+        "memo" : "鍮꾧퀬",
         "failedToSelectHostingFieldFullList" : "�샇�뒪�똿 愿�由� 紐⑸줉 議고쉶 �떎�뙣",
         "delete" : "�샇�뒪�똿 �궘�젣",
         "wantToDeleteSelectHostingField" : "�꽑�깮�븳 �샇�뒪�똿�쓣 �궘�젣�븯寃좎뒿�땲源�? �궘�젣�맂 �샇�뒪�똿�� 蹂듦뎄�븷 �닔 �뾾�뒿�땲�떎.",
diff --git a/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js b/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
index f8e895b..7d0c3a9 100644
--- a/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
+++ b/src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
@@ -92,7 +92,7 @@
                         .setDName("email")
                         .setDAlign("text-center"));
                     $scope.vm.tableConfigs.push($tableProvider.config()
-                        .setHName("companyField.desc")
+                        .setHName("companyField.memo")
                         .setHWidth("bold")
                         .setDName("memo")
                         .setDAlign("text-center"));
diff --git a/src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js b/src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js
index 6de39c8..97af0f2 100644
--- a/src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js
+++ b/src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js
@@ -90,7 +90,7 @@
                         .setDName("email")
                         .setDAlign("text-center"));
                     $scope.vm.tableConfigs.push($tableProvider.config()
-                        .setHName("hostingField.desc")
+                        .setHName("hostingField.memo")
                         .setHWidth("bold")
                         .setDName("desc")
                         .setDAlign("text-center"));
diff --git a/src/main/webapp/scripts/app/ispField/ispFieldList.controller.js b/src/main/webapp/scripts/app/ispField/ispFieldList.controller.js
index 682f68f..ce9ad37 100644
--- a/src/main/webapp/scripts/app/ispField/ispFieldList.controller.js
+++ b/src/main/webapp/scripts/app/ispField/ispFieldList.controller.js
@@ -90,7 +90,7 @@
                         .setDName("email")
                         .setDAlign("text-center"));
                     $scope.vm.tableConfigs.push($tableProvider.config()
-                        .setHName("ispField.desc")
+                        .setHName("ispField.memo")
                         .setHWidth("bold")
                         .setDName("memo")
                         .setDAlign("text-center"));
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index 3345714..d6eb016 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -16,10 +16,13 @@
                 $scope.fn = {
                     cancel : cancel,    //  �뙘�뾽 李� �떕湲�
                     formSubmit : formSubmit,    //  �뤌 �쟾�넚
-                    // formCheck : formCheck,  //  �뤌 泥댄겕
+                     formCheck : formCheck,  //  �뤌 泥댄겕
                     getUserListCallBack : getUserListCallBack,  //  �떞�떦�옄 autocomplete �럹�씠吏�
                     getProjectListCallBack : getProjectListCallBack,    //  �봽濡쒖젥�듃 autocomplete �럹�씠吏�
-                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    //  �봽濡쒖젥�듃 autocomplete �럹�씠吏�
+                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    // �뾽泥댁젙蹂� autocomplete �럹�씠吏�
+                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // �떞�떦�옄 -> �떞�떦遺��꽌 autocomplete �럹�씠吏�
+                    getIspFieldListCallBack : getIspFieldListCallBack,    // ISP�젙蹂� autocomplete �럹�씠吏�
+                    getHostingFieldListCallBack : getHostingFieldListCallBack,    // �샇�뒪�똿�젙蹂� autocomplete �럹�씠吏�
                     getOptionColor : getOptionColor,    //  �슦�꽑�닚�쐞, 以묒슂�룄 �깋�긽�쑝濡� Select �깭洹� �쟻�슜
                     onFileSelect : onFileSelect,    //  �뙆�씪 泥⑤�
                     infiniteAddForm : infiniteAddForm,  //  怨꾩냽 �깮�꽦
@@ -31,8 +34,7 @@
                     removeUploadFile : removeUploadFile,    //  �뾽濡쒕뱶�븯�젮�뒗 �듅�젙 �뙆�씪�쓣 �궘�젣
                     removeManager : removeManager,  //  �떞�떦�옄 �궘�젣
                     setIssueTypeTemplate : setIssueTypeTemplate,    //  �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲�
-                    startExecute : startExecute, //  而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔
-                    companyImport : companyImport
+                    startExecute : startExecute //  而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔
                 };
 
                 $scope.vm = {
@@ -40,24 +42,39 @@
                         title : "",    //  �젣紐�
                         description : "",   //  �궡�슜
                         projects : [],  //  �봽濡쒖젥�듃
-                        companyFields : [],
+                        companyFields : [], // �뾽泥댁젙蹂�
+                        ispFields : [], // ISP �젙蹂�
+                        hostingFields : [], // �샇�뒪�똿�젙蹂�
                         issueTypeId : "",   //  �씠�뒋 �쑀�삎 �븘�씠�뵒
                         priorityId : "",    //  �슦�꽑�닚�쐞 �븘�씠�뵒
                         severityId : "",    //  以묒슂�룄 �븘�씠�뵒
                         users : [],     //  �떞�떦�옄
+                        departments : [], // �뵥�떦遺��꽌
                         files : [], //  �뾽濡쒕뱶 �뙆�씪
                         attachedFiles : [], //  �꽟癒몃끂�듃濡� �뙆�씪 �뾽濡쒕뱶瑜� �븷 寃쎌슦 �꽌踰꾩뿉�꽌 pk瑜� �뵲怨� issue id�� �뿰�룞 �옉�뾽�씠 �븘�슂�븯�떎.
                         startCompleteDateRange : "", //  �떆�옉�씪 ~ 醫낅즺�씪
+                        detectingDateRange : "", //  �깘吏��씪
                         issueCustomFields : []  //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶
                     },
                     infiniteAdd : false,    //  �뿰�냽 �깮�꽦
                     projectName : "",   //  �봽濡쒖젥�듃 紐� 寃��깋
-                    companyName : "",   //  �봽濡쒖젥�듃 紐� 寃��깋
                     userName : "",  //  �궗�슜�옄 寃��깋
-                    companyManager : "",   //�떞�떦�옄
-                    companyTel : "",  //�쟾�솕踰덊샇
-                    companyEmail : "",  //�씠硫붿씪
-                    companyDesc : "",  //鍮꾧퀬
+                    departmentName : "",  // 遺��꽌紐� 寃��깋
+                    companyName : "",   // �뾽泥대챸 寃��깋
+                    companyManager : "",   // �뾽泥� �떞�떦�옄
+                    companyTel : "",  // �뾽泥� �쟾�솕踰덊샇
+                    companyEmail : "",  // �뾽泥� �씠硫붿씪
+                    companyMemo : "",  // �뾽泥� 鍮꾧퀬
+                    ispName : "", // ISP 紐�
+                    ispManager : "", // ISP �떞�떦�옄
+                    ispTel : "", // ISP �쟾�솕踰덊샇
+                    ispEmail : "", // ISP �씠硫붿씪
+                    ispMemo : "", // ISP 鍮꾧퀬
+                    hostingName : "", // �샇�뒪�똿紐� 寃��깋
+                    hostingManager : "", // �샇�뒪�똿 �떞�떦�옄
+                    hostingTel : "", // �샇�뒪�똿 �쟾�솕踰덊샇
+                    hostingEmail : "", // �샇�뒪�똿 �씠硫붿씪
+                    hostingMemo : "", // �샇�뒪�똿 鍮꾧퀬
                     autoCompletePage : {
                         user : {
                             page : 0,
@@ -68,6 +85,18 @@
                             totalPage : 0
                         },
                         companyField : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        department : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        ispField : {
+                            page : 0,
+                            totalPage : 0
+                        },
+                        hostingField : {
                             page : 0,
                             totalPage : 0
                         }
@@ -83,7 +112,6 @@
                 };
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
-
 
                 function getStartProjectListCallback(result){
                     //  �봽濡쒖젥�듃 autocomplete page �뾽�뜲�씠�듃
@@ -104,15 +132,6 @@
                         $scope.fn.getIssueTypeCustomFields();
                     }
                 });
-
-                function companyImport() {
-                    $uibModal.open({
-                        templateUrl : 'views/issue/issueCompanyFieldDetail.html',
-                        size : "mg",
-                        controller : 'issueCompanyFieldDetailController',
-                        backdrop : 'static',
-                    });
-                }
 
                 //  �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶
                 function imageUpload($files) {
@@ -267,7 +286,7 @@
 
                 //  �떞�떦�옄 �궘�젣
                 function removeManager(index) {
-                    $scope.vm.form.users.splice(index, 1);
+                    $scope.vm.form.departments.splice(index, 1);
                 }
 
                 //  �뾽濡쒕뱶 �뙆�씪 �궘�젣
@@ -288,23 +307,56 @@
                 function getProjectListCallBack(result) {
                     $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
                 }
-
+                //  �뾽泥댁젙蹂� autocomplete page �뾽�뜲�씠�듃
                 function getCompanyFieldListCallBack(result) {
-                    $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
+                    $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage;
                 }
 
-                //  �뤌 泥댄겕
-                // function formCheck(formInvalid) {
-                //     if (formInvalid) {
-                //         return true;
-                //     }
-                //
-                //     if ($scope.vm.form.projects.length < 1) {
-                //         return true;
-                //     }
-                //
-                //     return false;
-                // }
+                function getIssueDepartmentListCallBack(result) {
+                    $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage;
+                }
+
+                function getIspFieldListCallBack(result) {
+                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
+
+                }
+                function getHostingFieldListCallBack(result) {
+                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
+
+                }
+
+                // �뤌 泥댄겕
+                function formCheck(formInvalid) {
+                    if (formInvalid) {
+                        return true;
+                    }
+                    return false;
+                }
+
+                // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("companyFieldEvent", function (event, result) {
+                    $scope.vm.companyManager = result[0].manager;
+                    $scope.vm.companyTel = result[0].tel;
+                    $scope.vm.companyEmail = result[0].email;
+                    $scope.vm.companyMemo = result[0].memo;
+
+                });
+
+                // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("ispFieldEvent", function (event, result) {
+                    $scope.vm.ispManager = result[0].manager;
+                    $scope.vm.ispTel = result[0].tel;
+                    $scope.vm.ispEmail = result[0].email;
+                    $scope.vm.ispMemo = result[0].memo;
+                });
+                // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set)
+                $scope.$on("hostingFieldEvent", function (event, result) {
+                    $scope.vm.hostingManager = result[0].manager;
+                    $scope.vm.hostingTel = result[0].tel;
+                    $scope.vm.hostingEmail = result[0].email;
+                    $scope.vm.hostingMemo = result[0].memo;
+                });
+
 
                 //  �뤌 �쟾�넚
                 function formSubmit() {
@@ -346,6 +398,8 @@
                             return attachedFileIds;
                         })(),
                         startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
+                        detectingDateRange : $scope.vm.form.detectingDateRange,
+
                         issueCustomFields : (function () {    //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶
                             var issueCustomFields = [];
 
@@ -566,6 +620,7 @@
 
                 //  理쒖큹 �떎�뻾
                 function startExecute() {
+
                     var promises = {
                         getIssueTypes : $scope.fn.getIssueTypes(),
                         getPriorities : $scope.fn.getPriorities(),
diff --git a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
index 6793b14..0e236a7 100644
--- a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
@@ -64,6 +64,7 @@
                         width : "width-100-p",
                         position : 7,
                         display : false
+                    }, {
                     }]
                 };
 
diff --git a/src/main/webapp/scripts/components/utils/autoComplete.controller.js b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
index 97563fc..5a4c131 100644
--- a/src/main/webapp/scripts/components/utils/autoComplete.controller.js
+++ b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -20,6 +20,8 @@
                 var CompanyField = $injector.get("CompanyField");
                 var Issue = $injector.get("Issue");
                 var UserWorkspace = $injector.get("UserWorkspace");
+                var IspField = $injector.get("IspField");
+                var HostingField = $injector.get("HostingField");
                 var $log = $injector.get("$log");
                 var SweetAlert = $injector.get("SweetAlert");
 
@@ -29,7 +31,10 @@
                 $scope.fn.getIssueList = getIssueList;  //  �씪媛� 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
                 $scope.fn.getWorkflowList = getWorkflowList;    //  �썙�겕�뵆濡쒖슦 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
                 $scope.fn.getUserDepartmentList = getUserDepartmentList;    //  遺��꽌 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
-                $scope.fn.getCompanyFieldList = getCompanyFieldList;    //  遺��꽌 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
+                $scope.fn.getCompanyFieldList = getCompanyFieldList;    //  �뾽泥� 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
+                $scope.fn.getIssueDepartmentList = getIssueDepartmentList;    //  �떞�떦�옄 -> �떞�떦遺��꽌 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
+                $scope.fn.getIspFieldList = getIspFieldList;    //  ISP 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
+                $scope.fn.getHostingFieldList = getHostingFieldList;    //  �샇�뒪�똿 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎.
 
                 function getUserList(query, excludeList, page, callBack) {
                     var conditions = {
@@ -115,9 +120,9 @@
                     return deferred.promise;
                 }
 
-                function getCompanyFieldList(query, excludeList, page, callBack, statuses, roleTypes) {
+                function getIssueList(query, excludeList, page, callBack) {
                     var conditions = {
-                        companyName : query,
+                        name : query,
                         excludeIds : (function () {
                             var excludeIds = [];
 
@@ -131,11 +136,10 @@
 
                     var deferred = $q.defer();
 
-
-
-                    CompanyField.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                    Issue.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
                         conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                         if (result.data.message.status === "success") {
+
                             if ($rootScope.isDefined(callBack)) {
                                 callBack(result);
                             }
@@ -143,41 +147,10 @@
                             deferred.resolve(result.data.data);
                         }
                         else {
-                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣"
+                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "�썙�겕�뵆濡쒖슦 紐⑸줉 議고쉶 �떎�뙣"
                         }
                     });
 
-                    return deferred.promise;
-                }
-
-
-                function getUserDepartmentList(query, excludeList, page, callBack) {
-                    var conditions = {
-                        departmentName : query,
-                        excludeIds : (function () { //excludeIds : �젣�쇅 �븷 由ъ뒪�듃
-                            var excludeIds = [];
-                            angular.forEach(excludeList, function (exclude) {
-                                excludeIds.push(exclude.id);
-                            });
-
-                            return excludeIds;
-                        })()
-                    };
-                    var deferred = $q.defer();
-
-                    UserWorkspace.departmentFind($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
-                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
-                        if (result.data.message.status === "success") {
-
-                            if ($rootScope.isDefined(callBack)) {
-                                callBack(result);
-                            }
-                            deferred.resolve(result.data.data); //�궗�슜�옄媛� �냽�빐�졇�엳�뒗 遺��꽌 由ъ뒪�듃瑜� 遺덈윭�샂
-                        }
-                        else {
-                            SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullDepartmentList"), result.data.message.message, "error"); // "遺��꽌 紐⑸줉 議고쉶 �떎�뙣"
-                        }
-                    });
                     return deferred.promise;
                 }
 
@@ -215,9 +188,39 @@
                     return deferred.promise;
                 }
 
-                function getIssueList(query, excludeList, page, callBack) {
+                function getUserDepartmentList(query, excludeList, page, callBack) {
                     var conditions = {
-                        name : query,
+                        departmentName : query,
+                        excludeIds : (function () { //excludeIds : �젣�쇅 �븷 由ъ뒪�듃
+                            var excludeIds = [];
+                            angular.forEach(excludeList, function (exclude) {
+                                excludeIds.push(exclude.id);
+                            });
+
+                            return excludeIds;
+                        })()
+                    };
+                    var deferred = $q.defer();
+
+                    UserWorkspace.departmentFind($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
+                        if (result.data.message.status === "success") {
+
+                            if ($rootScope.isDefined(callBack)) {
+                                callBack(result);
+                            }
+                            deferred.resolve(result.data.data); //�궗�슜�옄媛� �냽�빐�졇�엳�뒗 遺��꽌 由ъ뒪�듃瑜� 遺덈윭�샂
+                        }
+                        else {
+                            SweetAlert.swal($filter("translate")("managementWorkspace.failedToSelectWorkspaceFullDepartmentList"), result.data.message.message, "error"); // "遺��꽌 紐⑸줉 議고쉶 �떎�뙣"
+                        }
+                    });
+                    return deferred.promise;
+                }
+
+                function getCompanyFieldList(query, excludeList, page, callBack) {
+                    var conditions = {
+                        companyName : query,
                         excludeIds : (function () {
                             var excludeIds = [];
 
@@ -231,10 +234,11 @@
 
                     var deferred = $q.defer();
 
-                    Issue.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+
+
+                    CompanyField.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
                         conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                         if (result.data.message.status === "success") {
-
                             if ($rootScope.isDefined(callBack)) {
                                 callBack(result);
                             }
@@ -242,7 +246,112 @@
                             deferred.resolve(result.data.data);
                         }
                         else {
-                            SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "�썙�겕�뵆濡쒖슦 紐⑸줉 議고쉶 �떎�뙣"
+                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣"
+                        }
+                    });
+
+                    return deferred.promise;
+                }
+
+                function getIssueDepartmentList(query, excludeList, page, callBack) {
+                    var conditions = {
+                        departmentName : query,
+                        userId : $rootScope.user.id,
+                        excludeIds : (function () {
+                            var excludeIds = [];
+
+                            angular.forEach(excludeList, function (exclude) {
+                                excludeIds.push(exclude.id);
+                            });
+
+                            return excludeIds;
+                        })()
+                    };
+
+                    var deferred = $q.defer();
+
+
+
+                    UserWorkspace.departmentFind($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
+                        if (result.data.message.status === "success") {
+                            if ($rootScope.isDefined(callBack)) {
+                                callBack(result);
+                            }
+
+                            deferred.resolve(result.data.data);
+                        }
+                        else {
+                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣"
+                        }
+                    });
+
+                    return deferred.promise;
+                }
+
+                function getIspFieldList(query, excludeList, page, callBack) {
+                    var conditions = {
+                        ispName : query,
+                        excludeIds : (function () {
+                            var excludeIds = [];
+
+                            angular.forEach(excludeList, function (exclude) {
+                                excludeIds.push(exclude.id);
+                            });
+
+                            return excludeIds;
+                        })()
+                    };
+
+                    var deferred = $q.defer();
+
+
+
+                    IspField.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
+                        if (result.data.message.status === "success") {
+                            if ($rootScope.isDefined(callBack)) {
+                                callBack(result);
+                            }
+
+                            deferred.resolve(result.data.data);
+                        }
+                        else {
+                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣"
+                        }
+                    });
+
+                    return deferred.promise;
+                }
+
+                function getHostingFieldList(query, excludeList, page, callBack) {
+                    var conditions = {
+                        hostingName : query,
+                        excludeIds : (function () {
+                            var excludeIds = [];
+
+                            angular.forEach(excludeList, function (exclude) {
+                                excludeIds.push(exclude.id);
+                            });
+
+                            return excludeIds;
+                        })()
+                    };
+
+                    var deferred = $q.defer();
+
+
+                    HostingField.find($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
+                        if (result.data.message.status === "success") {
+                            if ($rootScope.isDefined(callBack)) {
+                                callBack(result);
+                            }
+
+                            deferred.resolve(result.data.data);
+                        }
+                        else {
+                            SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣"
                         }
                     });
 
diff --git a/src/main/webapp/views/companyField/companyFieldAdd.html b/src/main/webapp/views/companyField/companyFieldAdd.html
index 91445c3..7dec1d2 100644
--- a/src/main/webapp/views/companyField/companyFieldAdd.html
+++ b/src/main/webapp/views/companyField/companyFieldAdd.html
@@ -165,7 +165,7 @@
             <div>
                 <div class="form-group">
                     <label for="companyFieldAddForm8" class="issue-label">
-                        <span translate="companyField.desc">鍮꾧퀬</span>
+                        <span translate="companyField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="companyFieldAddForm8"
                            name="memo"
diff --git a/src/main/webapp/views/companyField/companyFieldModify.html b/src/main/webapp/views/companyField/companyFieldModify.html
index fab3375..94dccd5 100644
--- a/src/main/webapp/views/companyField/companyFieldModify.html
+++ b/src/main/webapp/views/companyField/companyFieldModify.html
@@ -161,7 +161,7 @@
             <div>
                 <div class="form-group">
                     <label for="companyFieldModifyForm8" class="issue-label">
-                        <span translate="companyField.desc">鍮꾧퀬</span>
+                        <span translate="companyField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="companyFieldModifyForm8"
                            name="memo"
diff --git a/src/main/webapp/views/hostingField/hostingFieldAdd.html b/src/main/webapp/views/hostingField/hostingFieldAdd.html
index 6919da2..d80aa9d 100644
--- a/src/main/webapp/views/hostingField/hostingFieldAdd.html
+++ b/src/main/webapp/views/hostingField/hostingFieldAdd.html
@@ -108,7 +108,7 @@
             <div>
                 <div class="form-group">
                     <label for="hostingFieldAddForm8" class="issue-label">
-                        <span translate="hostingField.desc">鍮꾧퀬</span>
+                        <span translate="hostingField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="hostingFieldAddForm8"
                            name="memo"
diff --git a/src/main/webapp/views/hostingField/hostingFieldModify.html b/src/main/webapp/views/hostingField/hostingFieldModify.html
index 764e8b5..e7f8a42 100644
--- a/src/main/webapp/views/hostingField/hostingFieldModify.html
+++ b/src/main/webapp/views/hostingField/hostingFieldModify.html
@@ -105,7 +105,7 @@
             <div>
                 <div class="form-group">
                     <label for="hostingFieldModifyForm8" class="issue-label">
-                        <span translate="hostingField.desc">鍮꾧퀬</span>
+                        <span translate="hostingField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="hostingFieldModifyForm8"
                            name="memo"
diff --git a/src/main/webapp/views/ispField/ispFieldAdd.html b/src/main/webapp/views/ispField/ispFieldAdd.html
index 7a28d5f..681ac65 100644
--- a/src/main/webapp/views/ispField/ispFieldAdd.html
+++ b/src/main/webapp/views/ispField/ispFieldAdd.html
@@ -108,7 +108,7 @@
             <div>
                 <div class="form-group">
                     <label for="ispFieldAddForm8" class="issue-label">
-                        <span translate="ispField.desc">鍮꾧퀬</span>
+                        <span translate="ispField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="ispFieldAddForm8"
                            name="memo"
diff --git a/src/main/webapp/views/ispField/ispFieldModify.html b/src/main/webapp/views/ispField/ispFieldModify.html
index 94aed34..5c01252 100644
--- a/src/main/webapp/views/ispField/ispFieldModify.html
+++ b/src/main/webapp/views/ispField/ispFieldModify.html
@@ -106,7 +106,7 @@
             <div>
                 <div class="form-group">
                     <label for="hostingFieldModifyForm8" class="issue-label">
-                        <span translate="hostingField.desc">鍮꾧퀬</span>
+                        <span translate="hostingField.memo">鍮꾧퀬</span>
                     </label>
                     <input id="hostingFieldModifyForm8"
                            name="memo"
diff --git a/src/main/webapp/views/issue/issueAdd.html b/src/main/webapp/views/issue/issueAdd.html
index 578e9c1..c85f722 100644
--- a/src/main/webapp/views/issue/issueAdd.html
+++ b/src/main/webapp/views/issue/issueAdd.html
@@ -41,7 +41,7 @@
                                                 total-page="vm.autoCompletePage.project.totalPage"
                                                 input-disabled="false"
                                                 translation-texts="{ empty : 'common.emptyProject' }"
-                                                extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
+                                                extra-settings="{ displayProp : '' , idProp : '', imageable : false, imagePathProp : '',
                                                 type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                     </div>
                 </div>
@@ -117,47 +117,29 @@
                         </div>
                     </div>
                 </div>
-
             </div>
-
-            <div class="form-group mb10">
-                <label class="issue-label"><span translate="common.content">�궡�슜</span></label>
-                <summernote
-                        class="summernote"
-                        lang="ko-KR"
-                        summer-note-auto-focus
-                        ng-model="vm.form.description"
-                        data-editor="vm.summerNote.editor"
-                        data-editable="vm.summerNote.editable"
-                        on-image-upload="fn.imageUpload(files)"
-                        target=".note-editable"></summernote>
-            </div>
-
+            <hr>
             <div class="row">
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
-                        <js-input-autocomplete data-input-name="users"
-                                               selected-model="vm.form.users"
-                                               search="vm.userName"
-                                               page="vm.autoCompletePage.user.page"
-                                               total-page="vm.autoCompletePage.user.totalPage"
-                                               source="fn.getUserList(vm.userName, vm.form.users, vm.autoCompletePage.user.page, fn.getUserListCallBack)"
-                                               input-disabled="vm.form.projects.length == 0"
-                                               translation-texts="{ empty : 'common.emptyUser'}"
-                                               extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile',
-                                               type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
+                        <js-autocomplete-multi data-input-name="department�꽩"
+                                               selected-model="vm.form.departments"
+                                               search="vm.departmentName"
+                                               source="fn.getIssueDepartmentList(vm.departmentName, vm.form.departments)"
+                                               input-disabled="false"
+                                               translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment'}"
+                                               extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true}"></js-autocomplete-multi>
 
-                        <div class="select3-selection__choicediv">
-                            <span class="select3-selection__choice" ng-repeat="user in vm.form.users">
-                                <span class="avatar-w"><img ng-src="{{user.profile}}"></span>
-                                <span>{{user.name}}({{user.account}})</span>
-                                <span class="select3-selection__choice__remove"
-                                      ng-click="fn.removeManager($index)">횞</span>
+                        <div class="select3-selection__choicediv mt-10">
+                            <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
+                                <span>{{department.byName}}</span>
+                                <span class="select3-selection__choice__remove" ng-click="fn.removeManager($index)">횞</span>
                             </span>
                         </div>
                     </div>
                 </div>
+
                 <div class="col-lg-4">
                     <div class="form-group mb10">
                         <label for="issueAddForm5" class="issue-label"> <span translate="common.period">湲곌컙</span></label>
@@ -228,7 +210,6 @@
                     </div>
                 </div>
             </div>
-
             <div class="row">
                 <div class="col-lg-4 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="common.detectingInfo">�깘吏��젙蹂�</span></label>
@@ -245,7 +226,7 @@
                                readonly
                                class="form-control cursor"
                                placeholder="{{'issue.clickToSelectDate' | translate}}"
-                               ng-model="vm.form.startCompleteDateRange"
+                               ng-model="vm.form.detectingDateRange"
                                modal-form-auto-scroll
                                date-format="YYYY-MM-DD"
                                parent-el="'#createdWidget2'"
@@ -288,31 +269,28 @@
                     </div>
                 </div>
             </div>
+            <hr>
             <div class="row">
                 <div class="col-lg-4 fontcolor_green">
                     <label class="issue-label"><span class="fontcolor_green" translate="companyField.info">�뾽泥댁젙蹂�</span></label>
-                    <button class="btn btn-sm col-lg-6 btn-indigo" ng-click="fn.companyImport()">
-                        &nbsp; &nbsp;  <span translate="common.import">媛��졇�삤湲�</span> &nbsp; &nbsp;
-                    </button>
                 </div>
             </div>
 
             <div class="row">
                 <div class="col-lg-4">
                     <div class="form-group mb10">
-                        <label for="companyFieldNameAddForm" class="issue-label"> <span translate="companyField.name">�뾽泥대챸</span> </label>
-                        <input id="companyFieldNameAddForm"
-                               name="companyName"
-                               type="text"
-                               class="form-control"
-                               autofocus
-                               kr-input
-                               input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
-                               autocomplete="off"
-                               ng-model="vm.form.companyName"
-                               ng-maxlength="100"
-                               maxlength="100"
-                               required>
+                        <label class="issue-label"> <span translate="companyField.name">�뾽泥댁씠由�</span> </label>
+                        <js-autocomplete-single data-input-name="companyField"
+                                                selected-model="vm.form.companyFields"
+                                                search="vm.companyName"
+                                                source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)"
+                                                page="vm.autoCompletePage.companyField.page"
+                                                total-page="vm.autoCompletePage.companyField.totalPage"
+                                                input-disabled="false"
+                                                translation-texts="{ empty : 'common.emptyCompany' }"
+                                                broad-cast="companyFieldEvent"
+                                                extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -326,10 +304,10 @@
                                kr-input
                                input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
                                autocomplete="off"
-                               ng-model="vm.form.companyManager"
+                               ng-model="vm.companyManager"
                                ng-maxlength="100"
                                maxlength="100"
-                               required>
+                               >
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -342,7 +320,7 @@
                                kr-input
                                ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/"
                                autocomplete="off"
-                               ng-model="vm.form.companyTel"
+                               ng-model="vm.companyTel"
                                maxlength="20">
                         <div ng-show="issueAddForm.companyTel.$error.pattern" class="help-block form-text text-danger"
                              translate="companyField.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. xxx-xxx-xxxx �삎�떇�쑝濡� �엯�젰�븯�꽭�슂.
@@ -358,7 +336,7 @@
                                class="form-control"
                                autocomplete="off"
                                maxLength="50"
-                               ng-model="vm.form.companyEmail"
+                               ng-model="vm.companyEmail"
                                kr-input
                                ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/">
                         <div ng-show="issueAddForm.companyEmail.$error.pattern" class="help-block form-text text-danger"
@@ -368,15 +346,15 @@
                 </div>
                 <div class="col-lg-4">
                     <div class="form-group mgb5">
-                        <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.desc">鍮꾧퀬</span></label>
+                        <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.memo">鍮꾧퀬</span></label>
                         <input id="companyFieldDescAddForm"
-                               name="companyDesc"
+                               name="companyMemo"
                                type="text"
                                class="form-control"
                                kr-input
                                autocomplete="off"
-                               ng-model="vm.form.companyDesc"
                                ng-maxlength="200"
+                               ng-model="vm.companyMemo"
                                maxlength="200">
                     </div>
                 </div>
@@ -390,19 +368,18 @@
             <div class="row">
                 <div class="col-lg-4">
                     <div class="form-group mb10">
-                        <label for="ispFieldNameAddForm" class="issue-label"> <span translate="ispField.name">ISP �씠由�</span> </label>
-                        <input id="ispFieldNameAddForm"
-                               name=ispName"
-                               type="text"
-                               class="form-control"
-                               autofocus
-                               kr-input
-                               input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
-                               autocomplete="off"
-                               ng-model="vm.form.ispName"
-                               ng-maxlength="100"
-                               maxlength="100"
-                               required>
+                        <label class="issue-label"> <span translate="ispField.name">ISP �씠由�</span> </label>
+                        <js-autocomplete-single data-input-name="ispField"
+                                                selected-model="vm.form.ispFields"
+                                                search="vm.ispName"
+                                                source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)"
+                                                page="vm.autoCompletePage.ispField.page"
+                                                total-page="vm.autoCompletePage.ispField.totalPage"
+                                                input-disabled="false"
+                                                translation-texts="{ empty : 'common.emptyIsp' }"
+                                                broad-cast="ispFieldEvent"
+                                                extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -415,7 +392,7 @@
                                kr-input
                                input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
                                autocomplete="off"
-                               ng-model="vm.form.ispManager"
+                               ng-model="vm.ispManager"
                                ng-maxlength="100"
                                maxlength="100">
                     </div>
@@ -430,7 +407,7 @@
                                kr-input
                                ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/"
                                autocomplete="off"
-                               ng-model="vm.form.ispTel"
+                               ng-model="vm.ispTel"
                                maxlength="20">
                         <div ng-show="issueAddForm.ispTel.$error.pattern" class="help-block form-text text-danger"
                              translate="companyField.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. xxx-xxx-xxxx �삎�떇�쑝濡� �엯�젰�븯�꽭�슂.
@@ -446,7 +423,7 @@
                                class="form-control"
                                autocomplete="off"
                                maxLength="50"
-                               ng-model="vm.form.ispEmail"
+                               ng-model="vm.ispEmail"
                                kr-input
                                ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/">
                         <div ng-show="issueAddForm.ispEmail.$error.pattern" class="help-block form-text text-danger"
@@ -456,14 +433,14 @@
                 </div>
                 <div class="col-lg-4">
                     <div class="form-group mgb5">
-                        <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.desc">鍮꾧퀬</span></label>
+                        <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.memo">鍮꾧퀬</span></label>
                         <input id="ispFieldDescAddForm"
-                               name="ispDesc"
+                               name="ispMemo"
                                type="text"
                                class="form-control"
                                kr-input
                                autocomplete="off"
-                               ng-model="vm.form.ispDesc"
+                               ng-model="vm.ispMemo"
                                ng-maxlength="200"
                                maxlength="200">
                     </div>
@@ -478,19 +455,18 @@
             <div class="row">
                 <div class="col-lg-4">
                     <div class="form-group mb10">
-                        <label for="hostingFieldNameAdd" class="issue-label"> <span translate="hostingField.name">�샇�뒪�똿 �씠由�</span> </label>
-                        <input id="hostingFieldNameAdd"
-                               name="hostingName"
-                               type="text"
-                               class="form-control"
-                               autofocus
-                               kr-input
-                               input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
-                               autocomplete="off"
-                               ng-model="vm.form.hostingName"
-                               ng-maxlength="100"
-                               maxlength="100"
-                               required>
+                        <label class="issue-label"> <span translate="hostingField.name">�샇�뒪�똿 �씠由�</span> </label>
+                        <js-autocomplete-single data-input-name="hostingField"
+                                                selected-model="vm.form.hostingFields"
+                                                search="vm.hostingName"
+                                                source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)"
+                                                page="vm.autoCompletePage.hostingField.page"
+                                                total-page="vm.autoCompletePage.hostingField.totalPage"
+                                                input-disabled="false"
+                                                translation-texts="{ empty : 'common.emptyHosting' }"
+                                                broad-cast="hostingFieldEvent"
+                                                extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '',
+                                                type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                     </div>
                 </div>
                 <div class="col-lg-4">
@@ -503,7 +479,7 @@
                                kr-input
                                input-regex="[^a-zA-Z0-9 媛�-�옡�꽦-�뀕�뀖-�뀭\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]"
                                autocomplete="off"
-                               ng-model="vm.form.hostingManager"
+                               ng-model="vm.hostingManager"
                                ng-maxlength="100"
                                maxlength="100">
                     </div>
@@ -518,7 +494,7 @@
                                kr-input
                                ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/"
                                autocomplete="off"
-                               ng-model="vm.form.hostingTel"
+                               ng-model="vm.hostingTel"
                                maxlength="20">
                         <div ng-show="issueAddForm.hostingTel.$error.pattern" class="help-block form-text text-danger"
                              translate="companyField.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. xxx-xxx-xxxx �삎�떇�쑝濡� �엯�젰�븯�꽭�슂.
@@ -534,7 +510,7 @@
                                class="form-control"
                                autocomplete="off"
                                maxLength="50"
-                               ng-model="vm.form.hostingEmail"
+                               ng-model="vm.hostingEmail"
                                kr-input
                                ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/">
                         <div ng-show="issueAddForm.hostingEmail.$error.pattern" class="help-block form-text text-danger"
@@ -544,23 +520,37 @@
                 </div>
                 <div class="col-lg-4">
                     <div class="form-group mgb5">
-                        <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.desc">鍮꾧퀬</span></label>
+                        <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.memo">鍮꾧퀬</span></label>
                         <input id="hostingFieldDescAdd"
-                               name="hostingDesc"
+                               name="hostingMemo"
                                type="text"
                                class="form-control"
                                kr-input
                                autocomplete="off"
-                               ng-model="vm.form.hostingDesc"
+                               ng-model="vm.hostingMemo"
                                ng-maxlength="200"
                                maxlength="200">
                     </div>
                 </div>
             </div>
         </form>
+        <hr>
+        <div class="form-group mb10">
+            <label class="issue-label"><span translate="common.content">�궡�슜</span></label>
+            <summernote
+                    class="summernote"
+                    lang="ko-KR"
+                    summer-note-auto-focus
+                    ng-model="vm.form.description"
+                    data-editor="vm.summerNote.editor"
+                    data-editable="vm.summerNote.editable"
+                    on-image-upload="fn.imageUpload(files)"
+                    target=".note-editable"></summernote>
+        </div>
     </div>
 </div>
 
+
 <div class="modal-footer buttons-on-right">
     <div class="pull-left">
         <label>
diff --git a/src/main/webapp/views/issue/issueModify.html b/src/main/webapp/views/issue/issueModify.html
index 863a4f5..adbb0b4 100644
--- a/src/main/webapp/views/issue/issueModify.html
+++ b/src/main/webapp/views/issue/issueModify.html
@@ -139,22 +139,22 @@
                 <div class="col-lg-4">
                     <div class="form-group mgb5">
                         <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
-                        <js-input-autocomplete data-input-name="users"
-                                               selected-model="vm.form.users"
-                                               search="vm.userName"
-                                               page="vm.autoCompletePage.user.page"
-                                               total-page="vm.autoCompletePage.user.totalPage"
-                                               source="fn.getUserList(vm.userName, vm.form.users, vm.autoCompletePage.user.page, fn.getUserListCallBack)"
-                                               translation-texts="{ empty : 'common.emptyUser'}"
-                                               input-disabled="vm.form.projects.length == 0"
+                        <js-input-autocomplete data-input-name="departments"
+                                               selected-model="vm.form.departments"
+                                               search="vm.departmentName"
+                                               page="vm.autoCompletePage.department.page"
+                                               total-page="vm.autoCompletePage.department.totalPage"
+                                               source="fn.getDepartmentList(vm.departmentName, vm.form.departments, vm.autoCompletePage.department.page, fn.getDepartmentListCallBack)"
+                                               input-disabled="vm.form.departments.length == 0"
+                                               translation-texts="{ empty : 'common.emptyDepartment'}"
                                                extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile',
-                                               type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
+                                               type : 'department', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
 
-                        <small translate="common.setParticipatingInProject">�봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄瑜� �꽕�젙�빀�땲�떎.</small>
                         <div class="select3-selection__choicediv">
-                            <span class="select3-selection__choice" ng-repeat="user in vm.form.users">
-                                <span class="avatar-w"><img ng-src="{{user.profile}}"></span>
-                                <span>{{user.name}}({{user.account}})</span>
+                            <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
+                                <span class="avatar-w"></span>
+                                <!--                                <img ng-src="{{department.profile}}">-->
+                                <span>{{department.name}}({{department.id}})</span>
                                 <span class="select3-selection__choice__remove"
                                       ng-click="fn.removeManager($index)">횞</span>
                             </span>
diff --git a/src/main/webapp/views/issue/issueModifyUser.html b/src/main/webapp/views/issue/issueModifyUser.html
index f56e075..886bc2f 100644
--- a/src/main/webapp/views/issue/issueModifyUser.html
+++ b/src/main/webapp/views/issue/issueModifyUser.html
@@ -13,22 +13,22 @@
             <div class="form-group">
                 <div class="form-group mgb5">
                     <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
-                    <js-input-autocomplete data-input-name="users"
-                                           selected-model="vm.form.users"
-                                           search="vm.userName"
-                                           page="vm.autoCompletePage.user.page"
-                                           total-page="vm.autoCompletePage.user.totalPage"
-                                           source="fn.getUserList(vm.userName, vm.form.users, vm.autoCompletePage.user.page, fn.getUserListCallBack)"
-                                           translation-texts="{ empty : 'common.emptyUser'}"
-                                           input-disabled="vm.form.projects.length == 0"
+                    <js-input-autocomplete data-input-name="departments"
+                                           selected-model="vm.form.departments"
+                                           search="vm.departmentName"
+                                           page="vm.autoCompletePage.department.page"
+                                           total-page="vm.autoCompletePage.department.totalPage"
+                                           source="fn.getDepartmentList(vm.departmentName, vm.form.departments, vm.autoCompletePage.department.page, fn.getDepartmentListCallBack)"
+                                           input-disabled="vm.form.departments.length == 0"
+                                           translation-texts="{ empty : 'common.emptyDepartment'}"
                                            extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile',
-                                               type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
+                                               type : 'department', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
 
-                    <small translate="common.setParticipatingInProject">�봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄瑜� �꽕�젙�빀�땲�떎.</small>
                     <div class="select3-selection__choicediv">
-                            <span class="select3-selection__choice" ng-repeat="user in vm.form.users">
-                                <span class="avatar-w"><img ng-src="{{user.profile}}"></span>
-                                <span>{{user.name}}({{user.account}})</span>
+                            <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
+                                <span class="avatar-w"></span>
+                                <!--                                <img ng-src="{{department.profile}}">-->
+                                <span>{{department.name}}({{department.id}})</span>
                                 <span class="select3-selection__choice__remove"
                                       ng-click="fn.removeManager($index)">횞</span>
                             </span>

--
Gitblit v1.8.0