From 4cef9a63afe347bcc007f2f18c21da69b346da64 Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 금, 19 11월 2021 14:41:30 +0900
Subject: [PATCH] 이슈 상세 수정 -부서 [프론트]

---
 src/main/webapp/views/issue/issueModifyDepartment.html                        |   46 +++++
 src/main/webapp/scripts/app/project/projectModify.controller.js               |    2 
 src/main/webapp/scripts/app/issue/issue.js                                    |    2 
 src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js         |  133 ++++++++++++++
 src/main/webapp/scripts/app/issue/issueDetail.controller.js                   |   21 ++
 src/main/webapp/assets/styles/main.css                                        |   16 +
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                      |   11 
 src/main/webapp/views/issue/issueModifyUser.html                              |   24 +-
 src/main/webapp/views/project/projectModify.html                              |    2 
 src/main/webapp/scripts/components/issueDepartment/issueDepartment.service.js |   20 ++
 src/main/webapp/i18n/ko/global.json                                           |   28 ++-
 src/main/webapp/views/issue/issueDetail.html                                  |  199 +++++++++++++++++++---
 src/main/webapp/scripts/main.js                                               |    3 
 13 files changed, 451 insertions(+), 56 deletions(-)

diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css
index 4a4c05a..1d10159 100644
--- a/src/main/webapp/assets/styles/main.css
+++ b/src/main/webapp/assets/styles/main.css
@@ -30207,4 +30207,20 @@
 .country {
     margin-left: 3.25rem;
 }
+
+.h3-div {
+    font-size: 1.75rem;
+}
+
+.info_font {
+    color: #000;
+    font-size: 1rem;
+    line-height: 1.5;
+    font-weight: 600;
+}
+
+.email_color {
+    color:#0066ff;
+}
+
 /* 媛꾪듃李⑦듃 end */
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 97f6957..369b739 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -13,7 +13,7 @@
         "processingRate": "泥섎━�쑉",
         "dailyAverage": "�씪 �룊洹�",
         "inProgressStatusOfProject": "吏꾪뻾以묒씤 �봽濡쒖젥�듃 �쁽�솴",
-        "progressProject": "吏꾪뻾 �봽濡쒖젥�듃",
+        "progressProject": "吏꾪뻾 �봽濡쒌뀋�젥�듃",
         "issueAll": "�쟾泥� �씠�뒋",
         "projectProgress": "�봽濡쒖젥�듃 吏꾪뻾瑜�",
         "admin": "愿�由ъ옄",
@@ -158,6 +158,7 @@
         "issueNumber": "�씠�뒋 踰덊샇",
         "issueContent": "�씠�뒋 �궡�슜",
         "issueTitle": "�씠�뒋 �젣紐�",
+        "issueInfo": "�씠�뒋 �젙蹂�",
         "relationIssue": "�뿰愿� �씠�뒋",
         "addRelationIssue": "�뿰愿� �씠�뒋 異붽�",
         "relationIssueTitle": "�뿰愿� �씠�뒋 �젣紐�",
@@ -290,6 +291,7 @@
         "relationIssueType5" : "�떎�쓬�뿉 吏꾪뻾�븷 �씠�뒋",
         "relationIssueType6" : "�떎�쓬 �씠�뒋瑜� �슦�꽑 吏꾪뻾",
         "updateIssueUser" : "�씠�뒋 �떞�떦�옄 蹂�寃�",
+        "updateIssueDepartment" : "�씠�뒋 �떞�떦遺��꽌 蹂�寃�",
         "normalList" : "�씠�뒋 紐⑸줉",
         "timeLine" : "���엫 �씪�씤",
         "useProjects" : "�궗�슜 �봽濡쒖젥�듃",
@@ -769,6 +771,7 @@
         "emptyUser": "�꽑�깮�븷 �닔 �엳�뒗 �궗�슜�옄媛� �뾾�뒿�땲�떎.",
         "emptyProject": "�꽑�깮�븷 �닔 �엳�뒗 �봽濡쒖젥�듃媛� �뾾�뒿�땲�떎.",
         "emptyDepartment": "�꽑�깮�븷 �닔 �엳�뒗 遺��꽌媛� �뾾�뒿�땲�떎.",
+        "noDepartment": "�떞�떦遺��꽌媛� �뾾�뒿�땲�떎.",
         "emptyCompany": "�꽑�깮�븷 �닔 �엳�뒗 �뾽泥닿� �뾾�뒿�땲�떎.",
         "emptyIssue": "�꽑�깮�븷 �닔 �엳�뒗 �씠�뒋媛� �뾾�뒿�땲�떎.",
         "emptyIsp": "�꽑�깮�븷 �닔 �엳�뒗 ISP媛� �뾾�뒿�땲�떎.",
@@ -815,9 +818,11 @@
         "successToApiTokenAdd" : "API �넗�겙 �깮�꽦 �꽦怨�"
     },
     "companyField" : {
-        "info": "�뾽泥� �젙蹂�",
-        "add" : "�뾽泥� �깮�꽦",
-        "name" : "�뾽泥� �씠由�",
+        "info": "�뾽泥댁젙蹂�",
+        "add" : "�뾽泥댁깮�꽦",
+        "name" : "�뾽泥댁씠由�",
+        "manager": "�떞�떦�옄",
+        "companyName" : "�뾽泥대챸",
         "company" : "�뾽泥� 遺꾨쪟",
         "profitYN" : "�쁺由�/鍮꾩쁺由�",
         "industry" : "�궛�뾽 遺꾨쪟",
@@ -838,9 +843,10 @@
         "invalidTelFormat": "�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. xxx-xxx-xxxx �삎�떇�쑝濡� �엯�젰�븯�꽭�슂."
     },
     "ispField" : {
-        "info": "ISP �젙蹂�",
-        "add" : "ISP �깮�꽦",
-        "name" : "ISP �씠由�",
+        "info": "ISP�젙蹂�",
+        "add" : "ISP�깮�꽦",
+        "name" : "ISP�씠由�",
+        "ispName" : "ISP紐�",
         "manager" : "�떞�떦�옄",
         "tel" : "�쟾�솕踰덊샇",
         "code" : "肄붾뱶",
@@ -856,9 +862,11 @@
         "invalidCodeFormat": "肄붾뱶紐낆뿉�뒗 �듅�닔 臾몄옄瑜� �엯�젰 �븷 �닔 �뾾�뒿�땲�떎."
     },
     "hostingField" : {
-        "info": "�샇�뒪�똿 �젙蹂�",
-        "add" : "�샇�뒪�똿 �깮�꽦",
-        "name" : "�샇�뒪�똿 �씠由�",
+        "info": "�샇�뒪�똿�젙蹂�",
+        "add" : "�샇�뒪�똿�깮�꽦",
+        "name" : "�샇�뒪�똿�씠由�",
+        "manager" : "�샇�뒪�똿�씠由�",
+        "hostingName" : "�샇�뒪�똿紐�",
         "manager" : "�떞�떦�옄",
         "tel" : "�쟾�솕踰덊샇",
         "code" : "肄붾뱶",
diff --git a/src/main/webapp/scripts/app/issue/issue.js b/src/main/webapp/scripts/app/issue/issue.js
index 7725198..cf9e407 100644
--- a/src/main/webapp/scripts/app/issue/issue.js
+++ b/src/main/webapp/scripts/app/issue/issue.js
@@ -35,7 +35,7 @@
                             require([
                                 'issueListTimelineController', 'issueManagerController', 'issueListController', 'issueAddController', 'issueModifyController', 'issueDetailController', 'issueImportExcelController',
                                 'chartLoader', 'jsTable', 'tableColumnGenerator', 'modalFormAutoScroll', 'summerNote', 'summerNote-ko-KR', 'fullScroll', 'workflowService', 'priorityService', 'issueSearchService', 'issueTableConfigService', 'inputRegex',
-                                'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'issueUserService', 'issueModifyUserController', 'customFieldService', 'issueSearchFieldKeyViewElement',
+                                'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'issueUserService','issueDepartmentService','issueModifyUserController', 'issueModifyDepartmentController', 'customFieldService', 'issueSearchFieldKeyViewElement',
                                 'issueSearchCustomFieldViewElement', 'tableUserImage', 'fullScroll', 'issueCommentService', 'detectIssueEditor', 'formSubmit', 'issueModifyStatusController', 'jsShortCut',
                                 'issueAddTableConfigController', 'domAppend', 'issueDetailImagePreview', 'issueSendMailController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService',
                                 'jsHtmlDiff', 'issueReservationController', 'issueReservationService', 'issueVersionService', 'issueStatusAutoFocus', 'issueRelationService'
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index 53dd6bb..53ef440 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -60,25 +60,26 @@
                     projectName : "",   //  �봽濡쒖젥�듃 紐� 寃��깋
                     userName : "",  //  �궗�슜�옄 寃��깋
                     departmentName : "",  // 遺��꽌紐� 寃��깋
+                    companyId : -1, // 遺��꽌 ID
                     companyName : "",   // �뾽泥대챸 寃��깋
                     companyManager : "",   // �뾽泥� �떞�떦�옄
                     companyTel : "",  // �뾽泥� �쟾�솕踰덊샇
                     companyEmail : "",  // �뾽泥� �씠硫붿씪
                     companyMemo : "",  // �뾽泥� 鍮꾧퀬
+                    ispId : -1, // ISP ID
                     ispName : "", // ISP 紐�
                     ispCode : "", // ISP 肄붾뱶
                     ispManager : "", // ISP �떞�떦�옄
                     ispTel : "", // ISP �쟾�솕踰덊샇
                     ispEmail : "", // ISP �씠硫붿씪
                     ispMemo : "", // ISP 鍮꾧퀬
+                    hostingId : -1, // �샇�뒪�똿 ID
                     hostingName : "", // �샇�뒪�똿紐� 寃��깋
                     hostingManager : "", // �샇�뒪�똿 �떞�떦�옄
                     hostingTel : "", // �샇�뒪�똿 �쟾�솕踰덊샇
                     hostingEmail : "", // �샇�뒪�똿 �씠硫붿씪
-                    hostingMemo : "", // �샇�뒪�똿 鍮꾧퀬
-                    companyId : -1,
-                    ispId : -1,
-                    hostingId : -1,
+                    hostingMemo :"", // �샇�뒪�똿 鍮꾧퀬
+
                     autoCompletePage : {
                         user : {
                             page : 0,
@@ -551,7 +552,7 @@
                                 else {
                                     $scope.fn.cancel();
 
-                                    if ($state.current.name !== "issues.list") {
+                                    if ($state.current.name !== "issues.list" || $state.current.name === "issues.list") {
                                         $state.go("issues.list");
                                     }
                                 }
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index 1eee581..32157d2 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -26,6 +26,7 @@
                 $scope.fn.getChangeIssueStatusList = getChangeIssueStatusList;    //  �씠�뒋�쓽 �쁽�옱 �긽�깭�뿉�꽌 蹂�寃� 媛��뒫�븳 �씠�뒋 �깄�깭 紐⑸줉 媛��졇�삤湲�
                 $scope.fn.modifyIssueStatus = modifyIssueStatus;    //  �씠�뒋 �긽�깭 蹂�寃�
                 $scope.fn.modifyIssueUser = modifyIssueUser;    //  �씠�뒋 �떞�떦�옄 蹂�寃�
+                $scope.fn.modifyIssueDepartment = modifyIssueDepartment;    //  �씠�뒋 �떞�떦遺��꽌 蹂�寃�
                 $scope.fn.initReload = initReload;  //  珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎.
                 $scope.fn.sendMail = sendMail;  //  �듅�젙 �궗�슜�옄�뿉寃� �씠�뒋 �젙蹂대�� 硫붿씪濡� 諛쒖넚
                 $scope.fn.versionView = versionView;    //  踰꾩쟾 �젙蹂대�� �몴�떆�븳�떎.
@@ -363,6 +364,26 @@
                     });
                 }
 
+                //  �떞�떦遺��꽌 蹂�寃�
+                function modifyIssueDepartment() {
+                    $uibModal.open({
+                        templateUrl : 'views/issue/issueModifyDepartment.html',
+                        size : "md",
+                        controller : 'issueModifyDepartmentController',
+                        backdrop : 'static',
+                        resolve : {
+                            parameter : function () {
+                                return {
+                                    departmentVos : [$scope.vm.form.issues[0].departmentVos],
+                                    id : [$scope.vm.form.issues[0].id],
+                                    projectId : [$scope.vm.form.issues[0].projectVo.id],
+                                    project : [$scope.vm.form.issues[0].projectVo]
+                                };
+                            }
+                        }
+                    });
+                }
+
                 //  蹂�寃� 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉�쓣 議고쉶�븯怨� �닔�젙 紐⑤뱶濡� �솕硫댁쓣 蹂�寃쏀븳�떎.
                 function getChangeIssueStatusList(checkPermission) {
                     //  �닔�젙 沅뚰븳�씠 �뾾�쑝硫� �씠�뒋 �긽�깭 蹂�寃� 遺덇�
diff --git a/src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js b/src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js
new file mode 100644
index 0000000..55fcf76
--- /dev/null
+++ b/src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js
@@ -0,0 +1,133 @@
+/**
+ * Created by Maprex on 2021-06-08
+ */
+'use strict';
+
+define([
+        'app',
+        'angular'
+    ],
+    function (app, angular) {
+        app.controller('issueModifyDepartmentController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance','$injector', '$controller', 'SweetAlert', '$timeout', '$stateParams', '$q', 'parameter',
+            'IssueDepartment', '$filter',
+            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, $injector, $controller, SweetAlert, $timeout, $stateParams, $q, parameter, IssueDepartment, $filter) {
+
+                //  �븿�닔 紐⑥쓬
+                $scope.fn = {
+                    cancel: cancel,    //  �뙘�뾽 李� �떕湲�
+                    formSubmit: formSubmit,    //  �뤌 �쟾�넚
+                    formCheck: formCheck,  //  �뤌 泥댄겕
+                    removeManager : removeManager, // �떞�떦�옄 �궘�젣
+                    load : load, // �쁽�옱 �떞�떦�옄 媛��졇�삤湲�
+                    startExecute : startExecute // �떆�옉�떆 �떎�뻾
+                };
+
+                //  蹂��닔 紐⑥쓬
+                $scope.vm = {
+                    form : {
+                        departments : [],     //  �떞�떦遺��꽌
+                        projects : []
+                    },
+                    departmentName : "",  //  遺��꽌 寃��깋
+                    autoCompletePage : {
+                        department : {
+                            page : 0,
+                            totalPage : 0
+                        }
+                    },
+                };
+
+                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
+
+                //  �떞�떦遺��꽌 �궘�젣
+                function removeManager(index) {
+                    $scope.vm.form.departments.splice(index, 1);
+                }
+
+                //  �떞�떦遺��꽌 autocomplete page �뾽�뜲�씠�듃�듃
+                function getDepartmentListCallBack(result) {
+                    $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage;
+                }
+
+                //  �뤌 �쟾�넚
+                function formCheck(formInvalid) {
+                    if (formInvalid) {
+                        return true;
+                    }
+
+                    return false;
+                }
+
+                //  �뤌 �쟾�넚
+                function formSubmit() {
+                    $rootScope.spinner = true;
+
+                    var content = {
+                        id : parameter.id[0],
+                        projectId : parameter.projectId[0],
+                        departmentIds : (function () {
+                            var departmentIds = [];
+
+                            angular.forEach($scope.vm.form.departments, function (department) {
+                                departmentIds.push(department.id);
+                            });
+
+                            return departmentIds;
+                        })(),
+                    };
+
+                    IssueDepartment.modify($resourceProvider.getContent(content,
+                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
+
+                        if (result.data.message.status === "success") {
+                            $scope.fn.cancel();
+
+                            $rootScope.$broadcast("getIssueList", {});
+
+                            if ($rootScope.isDefined($rootScope.currentDetailIssueId)) {
+                                $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId});
+                            }
+                        } else {
+                            SweetAlert.error($filter("translate")("issue.failedToChangeMultipleIssueStatus"), result.data.message.message); // �떎以� �씠�뒋 �긽�깭 蹂�寃� �떎�뙣
+                        }
+
+                        $rootScope.spinner = false;
+                    });
+                }
+
+
+                //  �뙘�뾽 李� �떕湲�
+                function cancel() {
+                    $rootScope.$broadcast("closeLayer");    //  �뙘�뾽�씠 �뿴由ш퀬 �굹�꽌 js-multi, js-single �벑�뿉�꽌 body �씠踰ㅽ듃媛� �궇�븘媛��뒗 �쁽�긽 �닔�젙
+                    $uibModalInstance.dismiss('cancel');
+                    $(document).unbind("keydown");  //  �떒異뺥궎 �씠踰ㅽ듃 �젣嫄�
+                }
+
+                //  理쒖큹 �떎�뻾
+                function startExecute() {
+                    var promises = {
+                        users : $scope.fn.load()
+                    };
+
+                    $q.all(promises).then(function (results) {
+                        $log.debug("promises 寃곌낵 ", results);
+                    });
+                }
+
+                function load() {
+                    $scope.vm.form.projects = [];
+                    $scope.vm.form.projects.push(parameter.project[0]);
+
+                    var departmentVos = parameter.departmentVos[0];
+
+                    if (departmentVos.length > 0 && departmentVos[0] != undefined) {
+                        $scope.vm.form.departments = departmentVos;
+                    } else {
+                        $scope.vm.form.departments = [];
+                    }
+                }
+
+                $scope.fn.startExecute();
+
+            }]);
+    });
diff --git a/src/main/webapp/scripts/app/project/projectModify.controller.js b/src/main/webapp/scripts/app/project/projectModify.controller.js
index 0342053..d0f6edf 100644
--- a/src/main/webapp/scripts/app/project/projectModify.controller.js
+++ b/src/main/webapp/scripts/app/project/projectModify.controller.js
@@ -38,10 +38,12 @@
                         description : "",
                         managers : [],  //  愿�由ъ옄
                         users : [], //  �씪諛� �궗�슜�옄
+                        departments : [], //  遺��꽌
                         startEndDateRange : ""
                     },
                     managerName : "",   //  愿�由ъ옄 �씠由� 寃��깋
                     userName : "",  //  �씪諛� �궗�슜�옄 �씠由� 寃��깋
+                    departmentName : "",  // 遺��꽌 �씠由� 寃��깋
                     projectName : "",   //  �긽�쐞 �봽濡쒖젥�듃 �씠由� 寃��깋
                     autoCompletePage : {
                         manager : {
diff --git a/src/main/webapp/scripts/components/issueDepartment/issueDepartment.service.js b/src/main/webapp/scripts/components/issueDepartment/issueDepartment.service.js
new file mode 100644
index 0000000..16459bd
--- /dev/null
+++ b/src/main/webapp/scripts/components/issueDepartment/issueDepartment.service.js
@@ -0,0 +1,20 @@
+/**
+ * Created by maprex on 2021-06-08
+ */
+'use strict';
+
+define([
+    'app'
+], function (app) {
+    app.factory("IssueDepartment", ['$http', '$log', function ($http, $log) {
+        return {
+            modify : function (conditions) {
+                return $http.post("issueDepartment/modify", conditions).then(function (response) {
+                    $log.debug("�씠�뒋 �떞�떦遺��꽌 �닔�젙 寃곌낵 : ", response);
+                    return response;
+                });
+            }
+        }
+    }
+    ]);
+});
diff --git a/src/main/webapp/scripts/main.js b/src/main/webapp/scripts/main.js
index 2c46176..a5116c5 100644
--- a/src/main/webapp/scripts/main.js
+++ b/src/main/webapp/scripts/main.js
@@ -187,11 +187,13 @@
         'issueVersionViewController' : 'app/issue/issueVersionView.controller', //  �씠�뒋 踰꾩쟾 �솗�씤 而⑦듃濡ㅻ윭
         'issueReservationController' : 'app/issue/issueReservation.controller', //  �씠�뒋 諛쒖깮 �삁�빟 而⑦듃濡ㅻ윭
         'issueModifyUserController' : 'app/issue/issueModifyUser.controller', // �씠�뒋 �떞�떦�옄 而⑦듃濡ㅻ윭
+        'issueModifyDepartmentController' : 'app/issue/issueModifyDepartment.controller', // �씠�뒋 �떞�떦遺��꽌 而⑦듃濡ㅻ윭
         'issueService' : 'components/issue/issue.service', //  �씠�뒋�뿉 愿��젴�맂 �넻�떊�쓣 �떞�떦�븳�떎.
         'issueVersionService' : 'components/issueVersion/issueVersion.service', //  �씠�뒋 踰꾩쟾�뿉 愿��젴�맂 �넻�떊�쓣 �떞�떦�븳�떎.
         'issueReservationService' : 'components/issueReservation/issueReservation.service', //  �씠�뒋 諛쒖깮 �삁�빟�뿉 愿��젴�맂 �넻�떊�쓣 �떞�떦�븳�떎.
         'issueRelationService' : 'components/issueRelation/issueRelation.service', //  愿��젴 �씠�뒋�뿉 愿��젴�맂 �넻�떊�쓣 �떞�떦�븳�떎.
         'issueUserService' : 'components/issueUser/issueUser.service', // �씠�뒋 �떞�떦�옄 愿��젴 �넻�떊�쓣 �떞�떦�븳�떎.
+        'issueDepartmentService' : 'components/issueDepartment/issueDepartment.service', // �씠�뒋 �떞�떦�옄 愿��젴 �넻�떊�쓣 �떞�떦�븳�떎.
 
         /* �븷�씪 愿��젴 */
 
@@ -503,6 +505,7 @@
     'summerNote-ja-JP', //  �씠�뒋 留뚮뱾湲곗뿉�꽌 �궗�슜
     'summerNote-vi-VN', //  �씠�뒋 留뚮뱾湲곗뿉�꽌 �궗�슜
     'issueUserService',
+    'issueDepartmentService',
     'jsShortCut',
     'languageService',
     'principalService',
diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html
index e1cd779..6366d1f 100644
--- a/src/main/webapp/views/issue/issueDetail.html
+++ b/src/main/webapp/views/issue/issueDetail.html
@@ -86,18 +86,18 @@
 <!--    �긽�꽭 �솕硫�   -->
 <div class="support-ticket-content-w" ng-controller="issueDetailController">
     <div class="support-ticket-content">
-        <div class="support-ticket-content-header issue-detail-word-break">
-            <h3 class="ticket-header">
+        <div class="support-ticket-content-header issue-detail-word-break" style="height: 8vh">
+            <span class="ticket-header">
                 <div class="tasks-header-w">
                     <span class="tags">
                         <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} &nbsp; / &nbsp; {{vm.viewer.projectVo.name}}</span>
                     </span>
                 </div>
-                {{vm.viewer.title}}
-            </h3>
+                <span class="h3-div">{{vm.viewer.title}}</span>
+            </span>
             <div class="col-sm-2">
-                <div class="form-group">
-                    <label class="issue-detail-label"><span translate="issue.issueType">�씠�뒋 ���엯</span> </label>
+                <div class="form-group ml-4">
+                    <label class="issue-detail-label"><span translate="issue.issueType">�씠�뒋 �쑀�삎</span> </label>
                     <span class="status-pill smaller"
                           ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span>
                 </div>
@@ -116,7 +116,6 @@
                     </span>
             </div>
 
-
             <a class="show-ticket-info cursor">
                 <i class="os-icon os-icon-email-forward mr-20" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)" data-toggle="tooltip" data-placement="right" title="�떎瑜� �궗�슜�옄�뿉寃� �씠�뒋 蹂대궡湲�"></i>
                 <i class="os-icon os-icon-airplay mr-20" ng-click="fn.versionView(vm.viewer.id)" data-toggle="tooltip" data-placement="right" title="�씠�뒋 蹂�寃� �씠�젰 �긽�꽭 蹂닿린"></i>
@@ -130,7 +129,7 @@
 
         <div class="ticket-thread">
             <div class="todo-content">
-                <h6 class="todo-content-subheader mt-20" translate="common.detailInformation">�긽�꽭 �젙蹂�</h6>
+                <h6 class="todo-content-subheader" translate="issue.issueInfo">�씠�뒋 �젙蹂�</h6>
                 <div class="row mt-20">
                     <div class="col-md-4">
                         <div class="form-group">
@@ -140,14 +139,13 @@
                                         <label class="issue-detail-label"><span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
                                         <div class="">
                                             <div class="select3-selection__choicediv">
-                                                <span class="select3-selection__choice" ng-repeat="user in vm.viewer.userVos">
-                                                    <span class="avatar-w"><img ng-src="{{::user.profile}}"></span>
-                                                    <span>{{::user.byName}}</span>
+                                                <span class="select3-selection__choice" ng-repeat="department in vm.viewer.departmentVos">
+                                                    <span>{{::department.byName}}</span>
                                                 </span>
 
-                                                <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">�떞�떦�옄媛� �뾾�뒿�땲�떎.</span>
+                                                <span ng-if="vm.viewer.departmentVos.length < 1" translate="common.noDepartment">�떞�떦遺��꽌媛� �뾾�뒿�땲�떎.</span>
                                                             <i class="fa fa-edit fa-2x issue-status-edit cursor"
-                                                               ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="�떞�떦�옄 蹂�寃� �븯湲�"></i>
+                                                               ng-click="fn.modifyIssueDepartment()" data-toggle="tooltip" data-placement="right" title="�떞�떦�옄 蹂�寃� �븯湲�"></i>
                                             </div>
                                         </div>
 
@@ -195,7 +193,7 @@
                 <div class="row">
                     <div class="col-md-4">
                         <div class="form-group">
-                            <label class="issue-detail-label"><span translate="common.detectingInfo">�깘吏��젙蹂�</span> </label>
+                            <h6 class="info_font" translate="common.detectingInfo">�깘吏��젙蹂�</h6>
                             <div class="">
                                 <label class="issue-detail-label"><span translate="common.diffuserURL">�쑀�룷�옄URL</span> </label>
                                 <label class="issue-detail-label offset-2"><span translate="common.country">援�媛�</span></label>
@@ -206,36 +204,183 @@
 <!--                                <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">�떞�떦�옄媛� �뾾�뒿�땲�떎.</span>-->
                             </div>
                         </div>
-
+                    </div>
+                </div>
+                <hr>
+<!--                <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} &nbsp; / &nbsp; {{vm.viewer.projectVo.name}}</span>-->
+                <div class="row">
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <h6 class="info_font" translate="companyField.info">�뾽泥댁젙蹂�</h6>
+                            <button style="display: inline">1111</button>
+                        </div>
                     </div>
                 </div>
 
                 <div class="row">
-                    <div class="col-md-4">
+                    <div class="col-sm-2">
                         <div class="form-group">
-                            <label class="issue-detail-label"><span translate="common.registrationDate">�벑濡앹씪</span>
-                            </label>
+                            <span translate="companyField.companyName">�뾽泥대챸</span>:
+                            <span>{{vm.viewer.issueCompanyVos[0].name}}</span>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
                             <div class="">
-                                {{vm.viewer.registerDate}}
+                                <span translate="companyField.manager">�떞�떦�옄</span>:
+                                <span>{{vm.viewer.issueCompanyVos[0].manager}}</span>
                             </div>
                         </div>
                     </div>
 
-                    <div class="col-md-4">
+                    <div class="col-sm-2">
                         <div class="form-group">
-                            <label class="issue-detail-label"><span translate="common.register">�벑濡앹옄</span></label>
                             <div class="">
-                                <div class="select3-selection__choicediv">
-                                    <span class="select3-selection__choice">
-                                        <span class="avatar-w"><img ng-src="{{vm.viewer.registerVo.profile}}"></span>
-                                        <span>{{vm.viewer.registerVo.byName}}</span>
-                                    </span>
-                                </div>
+                                <span translate="companyField.tel">�쟾�솕踰덊샇</span>:
+                                <span>{{vm.viewer.issueCompanyVos[0].tel}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="companyField.email">�씠硫붿씪</span>:
+                                <span class="email_color">{{vm.viewer.issueCompanyVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="companyField.memo">鍮꾧퀬</span>:
+                                <span>{{vm.viewer.issueCompanyVos[0].memo}}</span>
                             </div>
                         </div>
                     </div>
                 </div>
 
+                <div class="row">
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <h6 class="info_font" translate="ispField.info">ISP�젙蹂�</h6>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="row">
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <span translate="ispField.ispName">ISP紐�</span>:
+                            <span>{{vm.viewer.issueIspVos[0].name}}</span>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <span translate="ispField.code">肄붾뱶</span>:
+                            <span>{{vm.viewer.issueIspVos[0].code}}</span>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="ispField.manager">�떞�떦�옄</span>:
+                                <span>{{vm.viewer.issueIspVos[0].manager}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="ispField.tel">�쟾�솕踰덊샇</span>:
+                                <span>{{vm.viewer.issueIspVos[0].tel}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="ispField.email">�씠硫붿씪</span>:
+                                <span class="email_color">{{vm.viewer.issueIspVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="ispField.memo">鍮꾧퀬</span>:
+                                <span>{{vm.viewer.issueIspVos[0].memo}}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="row">
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <h6 class="info_font" translate="hostingField.info">�샇�뒪�똿�젙蹂�</h6>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="row">
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <span translate="hostingField.hostingName">�샇�뒪�똿紐�</span>:
+                            <span>{{vm.viewer.issueHostingVos[0].name}}</span>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <span translate="hostingField.code">肄붾뱶</span>:
+                            <span>{{vm.viewer.issueHostingVos[0].code}}</span>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="hostingField.manager">�떞�떦�옄</span>:
+                                <span>{{vm.viewer.issueHostingVos[0].manager}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="hostingField.tel">�쟾�솕踰덊샇</span>:
+                                <span>{{vm.viewer.issueHostingVos[0].tel}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="hostingField.email">�씠硫붿씪</span>:
+                                <span class="email_color">{{vm.viewer.issueHostingVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="hostingField.memo">鍮꾧퀬</span>:
+                                <span>{{vm.viewer.issueHostingVos[0].memo}}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
 
 
                 <div class="row">
diff --git a/src/main/webapp/views/issue/issueModifyDepartment.html b/src/main/webapp/views/issue/issueModifyDepartment.html
new file mode 100644
index 0000000..166f3e4
--- /dev/null
+++ b/src/main/webapp/views/issue/issueModifyDepartment.html
@@ -0,0 +1,46 @@
+<div class="formModal">
+    <div class="modal-header faded smaller">
+        <div class="modal-title">
+            <strong translate="issue.updateIssueDepartment">�씠�뒋 �떞�떦遺��꽌 蹂�寃�</strong>
+        </div>
+        <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()">
+            <span aria-hidden="true"> &times;</span>
+        </button>
+    </div>
+
+    <div class="modal-body">
+        <form role="form" name="issueDepartmentModifyForm">
+            <div class="form-group">
+                <div class="form-group mgb5">
+                    <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
+                    <js-autocomplete-multi data-input-name="departments"
+                                           selected-model="vm.form.departments"
+                                           search="vm.departmentName"
+                                           source="fn.getUserDepartmentList(vm.departmentName, vm.form.departments)"
+                                           input-disabled="false"
+                                           translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
+                                           extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi>
+
+
+                    <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.removeDepartments($index)">횞</span>
+                            </span>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+
+    <div class="modal-footer buttons-on-right">
+        <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span
+                translate="common.cancel">痍⑥냼</span></button>
+        <button type="button" class="btn btn-md btn-primary bold"
+                js-short-cut
+                js-short-cut-action="(fn.formCheck(issueMultiStatusModifyForm.$invalid) || $root.spinner) ? null : fn.formSubmit()"
+                ng-disabled="fn.formCheck(issueMultiStatusModifyForm.$invalid)"
+                ng-click="fn.formSubmit()"><span translate="common.save">���옣</span>
+        </button>
+    </div>
+</div>
diff --git a/src/main/webapp/views/issue/issueModifyUser.html b/src/main/webapp/views/issue/issueModifyUser.html
index 886bc2f..6ac4acf 100644
--- a/src/main/webapp/views/issue/issueModifyUser.html
+++ b/src/main/webapp/views/issue/issueModifyUser.html
@@ -12,23 +12,23 @@
         <form role="form" name="issueUserModifyForm">
             <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="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"
+                    <label class="issue-label"> <span translate="common.assignee">�떞�떦�옄</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.users.length == 0"
                                            translation-texts="{ empty : 'common.emptyDepartment'}"
                                            extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile',
-                                               type : 'department', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
+                                               type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
 
                     <div class="select3-selection__choicediv">
-                            <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
+                            <span class="select3-selection__choice" ng-repeat="user in vm.form.users">
                                 <span class="avatar-w"></span>
-                                <!--                                <img ng-src="{{department.profile}}">-->
-                                <span>{{department.name}}({{department.id}})</span>
+                                <img ng-src="{{department.profile}}">
+                                <span>{{user.name}}({{user.id}})</span>
                                 <span class="select3-selection__choice__remove"
                                       ng-click="fn.removeManager($index)">횞</span>
                             </span>
diff --git a/src/main/webapp/views/project/projectModify.html b/src/main/webapp/views/project/projectModify.html
index ec7058a..7ae0c04 100644
--- a/src/main/webapp/views/project/projectModify.html
+++ b/src/main/webapp/views/project/projectModify.html
@@ -107,7 +107,7 @@
 
             <div class="form-group">
                 <label><span translate="project.projectDepartment">�봽濡쒖젥�듃 遺��꽌</span> </label>
-                <js-autocomplete-multi data-input-name="users"
+                <js-autocomplete-multi data-input-name="departments"
                                        selected-model="vm.form.users"
                                        search="vm.userName"
                                        source="fn.getUserList(vm.userName, vm.form.users.concat(vm.form.managers))"

--
Gitblit v1.8.0