From 424867c3809bb49bd1cc8a8db10bf656d8617a1d Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 수, 01 12월 2021 11:49:25 +0900
Subject: [PATCH] 이메일 수정 진행중 , 이슈 상세 및 이슈 리스트 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java                    |    1 
 src/main/webapp/scripts/components/utils/autoComplete.controller.js                  |   43 +++++
 src/main/webapp/views/issue/issueSendMail.html                                       |  121 +++++++++++++-
 src/main/webapp/scripts/config.js                                                    |   32 ++-
 src/main/webapp/scripts/app/issue/issueSendMail.controller.js                        |   82 ++++++++--
 src/main/webapp/views/issue/issueListNormal.html                                     |   49 ++---
 src/main/webapp/scripts/components/issue/issue.service.js                            |    6 
 src/main/webapp/scripts/components/utils/issueDetailImagePreview.directive.js        |    2 
 src/main/webapp/scripts/app/issue/issueList.controller.js                            |   36 ++++
 src/main/webapp/views/issue/issueDetail.html                                         |   19 +-
 src/main/webapp/scripts/app/issue/issueDetail.controller.js                          |   57 +++++--
 src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js |   11 +
 12 files changed, 352 insertions(+), 107 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index e67a094..0cf87fe 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -923,6 +923,7 @@
 
                 case "02": //  �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭,  �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂�, �뙎湲�, 湲곕줉�쓣 �뀑�똿�븳�떎.
                     this.setIssueDetail(issueVo, issue);    //  �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎.
+                    issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class));
                     break;
             }
         }
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index fe209d8..955bfbb 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -43,6 +43,7 @@
                 $scope.fn.getDownTableConfigs = getDownTableConfigs;
                 $scope.fn.containsPartner = containsPartner;
                 $scope.fn.onActivate = onActivate;
+                $scope.fn.makePartnersEmail = makePartnersEmail;
 
                 //  �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以�
                 $scope.vm.viewer = {};
@@ -72,7 +73,10 @@
 
                 $scope.vm.form = {
                     issues : [], //�뿰愿� �씪媛�
-                    issuesDown : []  // �븯�쐞 �씪媛�
+                    issuesDown : [],  // �븯�쐞 �씪媛�
+                    issueCompanyVos : [],
+                    issueIspVos : [],
+                    issueHostingVos : []
                 };
 
 
@@ -636,16 +640,25 @@
                 }
 
                 //  �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
-                $rootScope.$on("getIssueDetail", function (event, args) {
-                    $scope.vm.viewer.id = args["id"];
-                    $scope.fn.getIssueDetail();
-                });
+                // $rootScope.$on("getIssueDetail", function (event, args) {
+                //     $scope.vm.viewer.id = args["id"];
+                //     $scope.fn.getIssueDetail();
+                // });
 
                 //  �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
-                $scope.$on("getIssueDetail", function (event, args) {
-                    $scope.vm.viewer.id = args["id"];
-                    $scope.fn.getIssueDetail();
-                });
+                // $scope.$on("getIssueDetail", function (event, args) {
+                //     $scope.vm.viewer.id = args["id"];
+                //     $scope.fn.getIssueDetail();
+                // });
+
+                $scope.$watch(function() {
+                    return $rootScope.currentDetailIssueId;
+                }, function() {
+                    if ($rootScope.currentDetailIssueId != null) {
+                        $scope.vm.viewer.id = $rootScope.currentDetailIssueId;
+                        $scope.fn.getIssueDetail();
+                    }
+                }, true);
 
                 //  珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎.
                 function initReload() {
@@ -653,9 +666,9 @@
                     $scope.vm.issueForm.issueStatusList = [];
                     $scope.vm.issueForm.issueStatusId = "";
                     $scope.vm.issueTypeId = $rootScope.getCurrentIssueTypeId();
-                    /*if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {
-                        $scope.$apply();
-                    }*/
+                    // if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {
+                    //     $scope.$apply();
+                    // }
                 }
 
                 //  �씠�뒋 �긽�깭 蹂�寃�
@@ -804,7 +817,7 @@
                     $scope.fn.getDownTableConfigs();
 
                         Issue.detail($resourceProvider.getContent(
-                        {id : $scope.vm.viewer.id, deep : "02", customFields : $scope.vm.customFields},
+                        {id : $scope.vm.viewer.id, deep : "02"},
                         $resourceProvider.getPageContent(0, 1))).then(function (result) {
 
                         if (result.data.message.status === "success") {
@@ -846,6 +859,10 @@
                                 }
                                 $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
                                 $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos;
+
+                                if ($rootScope.workProject.id > -1) {
+                                    $rootScope.changeLastProject(result.data.data.projectVo.id);
+                                }
                             }
                         }
                         else {
@@ -1038,8 +1055,15 @@
                     });
                 }
 
+                // �뾽泥�/ISP/�샇�뒪�똿 諛곗뿴媛믪쓣 �븯�굹濡� �빀爾먯꽌 硫붿씪 �겢由��떆 �쟾�떖
+                function makePartnersEmail() {
+                    $scope.vm.form.partnersEmail = $scope.vm.viewer.issueCompanyVos.concat($scope.vm.viewer.issueIspVos, $scope.vm.viewer.issueHostingVos)
+                    return $scope.vm.form.partnersEmail;
+                }
+
                 //  �듅�젙 �궗�슜�옄�뿉寃� �씠�뒋瑜� 硫붿씪濡� 諛쒖넚
                 function sendMail(issueId, projectId) {
+                    makePartnersEmail();
                     $uibModal.open({
                         templateUrl : 'views/issue/issueSendMail.html',
                         size : "md",
@@ -1049,11 +1073,12 @@
                             parameter : function () {
                                 return {
                                     departmentVos : [$scope.vm.form.issues[0].departmentVos],
-                                    issueCompanyFields : [$scope.vm.form.issues[0].issueCompanyVos],
-                                    issueIspFields : [$scope.vm.form.issues[0].issueIspVos],
-                                    issueHostingFields : [$scope.vm.form.issues[0].issueHostingVos],
+                                    partners : $scope.vm.form.partnersEmail,
                                     issueId : issueId,
                                     projectId : projectId
+                                    // issueCompanyFields : [$scope.vm.viewer.issueCompanyVos[0]],
+                                    // issueIspFields : [$scope.vm.viewer.issueIspVos[0]],
+                                    // issueHostingFields : [$scope.vm.viewer.issueHostingVos[0]],
                                 };
                             }
                         }
diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js
index fe9dc27..7c348ac 100644
--- a/src/main/webapp/scripts/app/issue/issueList.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -169,10 +169,11 @@
                     //  �쁽�옱 �긽�꽭�솕硫댁쑝濡� 蹂대젮怨좏븯�뒗 �씠�뒋 id瑜� 湲곗뼲�븳�떎.
                     $rootScope.currentDetailIssueId = id;
                     //  �씠�뒋 �긽�꽭 �솕硫� �슂泥�
-                    $rootScope.$broadcast("getIssueDetail", {
-                        id : id
-                    });
+                    // $scope.$broadcast("getIssueDetail", {
+                    //     id : id
+                    // });
                 }
+
 
                 //  紐⑸줉 �솕硫댁쑝濡� 蹂�寃쏀븳�떎.
                 function listView() {
@@ -183,6 +184,7 @@
                     $scope.vm.responseData.data = angular.copy(temp);
                     //  留덉�留됱쑝濡� 蹂닿퀬�엳�뜕 �씠�뒋 id瑜� 珥덇린�솕�븳�떎.
                     $rootScope.currentDetailIssueId = null;
+                    $scope.$broadcast("getIssueList", {id: $rootScope.currentDetailIssueId});
                 }
 
                 //  �씠�뒋 �뀒�씠釉� �꽕�젙
@@ -508,6 +510,31 @@
                                 if (detail) {
                                     changeDetailView(result.data.data[0].id);
                                 }
+                            }
+                        }
+                        else {
+                            SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // �씠�뒋 議고쉶 �떎�뙣
+                        }
+                    });
+                }
+
+                // �씠硫붿씪 �봽濡쒖젥�듃 寃쎈줈濡� �씠�룞 �썑 �긽�꽭 吏꾩엯�떆 議고쉶
+                function getDetailList(projectKey, number) {
+                    var conditions = {
+                        projectKey : projectKey,
+                        combinationIssueNumber : number
+                    };
+
+                    Issue.find($resourceProvider.getContent(conditions,
+                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
+
+                        if (result.data.message.status === "success") {
+                            if (result.data.data !=  null && result.data.data.length > 0) {
+                                $scope.vm.projectKey = result.data.data[0].projectKey;
+                                $scope.vm.issueNumber = result.data.data[0].issueNumber;
+                                $scope.vm.responseData = result.data;
+
+                                changeDetailView(result.data.data[0].id);
                             }
                         }
                         else {
@@ -885,7 +912,8 @@
                     // �뙆�씪誘명꽣 �씫湲�
                     var params = $rootScope.previousGetParams;
                     if ($rootScope.isDefined(params)) {
-                        $rootScope.$broadcast("makeIssueSearch", {  projectKey : params.projectKey, issueNumber : params.issueNumber });
+                        // $rootScope.$broadcast("makeIssueSearch", {  projectKey : params.projectKey, issueNumber : params.issueNumber });
+                        getDetailList(params.projectKey, params.issueNumber);
                         $rootScope.previousGetParams = null;
                         // $rootScope.issueTypeId = $rootScope.issueTypeMenu.id;
                         return;
diff --git a/src/main/webapp/scripts/app/issue/issueSendMail.controller.js b/src/main/webapp/scripts/app/issue/issueSendMail.controller.js
index 29e991e..3643b48 100644
--- a/src/main/webapp/scripts/app/issue/issueSendMail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueSendMail.controller.js
@@ -13,49 +13,63 @@
                     removeManager : removeManager,  //  �쟾�넚 ���긽�옄 �궘�젣
                     cancel : cancel,    //  �뙘�뾽 李� �떕湲�
                     formSubmit : formSubmit,    //  �뤌 �쟾�넚
-                    formCheck : formCheck   //  �뤌 泥댄겕
+                    // formCheck : formCheck  //  �뤌 泥댄겕
                 };
+
 
                 $scope.vm = {
                     form : {
                         id : parameter.issueId,  //  �씠�뒋 踰덊샇
                         projects : [{ id : parameter.projectId}],  //  �봽濡쒖젥�듃
-                        users : []    //  硫붿씪 �쟾�넚諛쏅뒗 �궗�슜�옄
+                        partners : parameter.partners,
+                        users : [],    //  硫붿씪 �쟾�넚諛쏅뒗 �궗�슜�옄
+                        issueCompanyVos : [],
+                        issueIspVos : [],
+                        issueHostingVos : []
+                        // companyFields : parameter.issueCompanyFields,  //  �뾽泥� �씠硫붿씪
+                        // ispFields : parameter.issueIspFields,  //  ISP �씠硫붿씪
+                        // hostingFields : parameter.issueHostingFields,  //  �샇�뒪�똿 �씠硫붿씪
                     },
                     userName : "",
+                    partnerName : "",
                     autoCompletePage : {
                         user : {
                             page : 0,
                             totalPage : 0
+                        },
+                        partnersMail : {
+                            page : 0,
+                            totalPage :0
                         }
                     }
                 };
 
+
+
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
-                function formCheck(formInvalid) {
-                    if (formInvalid) {
-                        return true;
-                    }
-
-                    if ($scope.vm.form.users.length < 1) {
-                        return true;
-                    }
-
-                    return false;
-                }
+                // function formCheck(formInvalid) {
+                //     if (formInvalid) {
+                //         return true;
+                //     }
+                //
+                //     if ($scope.vm.form.users.length < 1) {
+                //         return true;
+                //     }
+                //
+                //     return false;
+                // }
 
                 //  �뤌 �쟾�넚
                 function formSubmit() {
                     $rootScope.spinner = true;
-
                     var content = {
                         id : $scope.vm.form.id,
                         sendEmails : (function () {
                             var sendEmails = [];
 
-                            angular.forEach($scope.vm.form.users, function (user) {
-                                sendEmails.push($rootScope.encryption(user.account));
+                            angular.forEach($scope.vm.form.projects, function (project) {
+                                sendEmails.push(project.id);
                             });
 
                             return sendEmails;
@@ -78,6 +92,42 @@
                     });
                 }
 
+                // function formSubmit() {
+                //     $rootScope.spinner = true;
+                //
+                //     var content = {
+                //         id : $scope.vm.form.id,
+                //         companyFieldsEmail : $scope.vm.form.companyFieldsEmail,
+                //         ispFieldsEmail : $scope.vm.form.ispFieldsEmail,
+                //         hostingFieldsEmail : $scope.vm.form.hostingFieldsEmail,
+                //         sendEmails : (function () {
+                //             var sendEmails = [];
+                //
+                //             angular.forEach($scope.vm.form.projects, function (project) {
+                //                 sendEmails.push(project.id);
+                //             });
+                //
+                //             return sendEmails;
+                //         })()
+                //     };
+                //
+                //     Issue.findMailTargetAll($resourceProvider.getContent(
+                //         content,
+                //         $resourceProvider.getPageContent(0, 10))).then(function (result) {
+                //
+                //         if (result.data.message.status === "success") {
+                //             SweetAlert.success($filter("translate")("issue.succeededIssueMail"), $filter("translate")("issue.sentToTheSelectedUser")); // "�씠�뒋 硫붿씪 諛쒖넚 �셿猷�"
+                //             $scope.fn.cancel();
+                //         }
+                //         else {
+                //             SweetAlert.error($filter("translate")("issue.failedIssueMail"), result.data.message.message); // "�씠�뒋 硫붿씪 諛쒖넚 �떎�뙣"
+                //         }
+                //
+                //         $rootScope.spinner = false;
+                //     });
+                // }
+
+
                 //  �궗�슜�옄 auto complete callback function
                 function getUserListCallBack(result) {
                     $scope.vm.autoCompletePage.user.totalPage = result.data.page.totalPage;
diff --git a/src/main/webapp/scripts/components/issue/issue.service.js b/src/main/webapp/scripts/components/issue/issue.service.js
index 4c28715..22cf448 100644
--- a/src/main/webapp/scripts/components/issue/issue.service.js
+++ b/src/main/webapp/scripts/components/issue/issue.service.js
@@ -98,6 +98,12 @@
                     return response;
                 });
             },
+            findMailTargetAll : function (conditions) {
+                return $http.post("issue/findMailTargetAll", conditions).then(function (response) {
+                    $log.debug("�씠�뒋 �씠硫붿씪 諛쒖넚 寃곌낵 : ", response);
+                    return response;
+                });
+            }
         }
     }
     ])
diff --git a/src/main/webapp/scripts/components/utils/autoComplete.controller.js b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
index ef94066..1b527bf 100644
--- a/src/main/webapp/scripts/components/utils/autoComplete.controller.js
+++ b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -40,6 +40,7 @@
                 $scope.fn.getPartnerList = getPartnerList;          // �뾽泥�/isp/�샇�뒪�똿 紐⑸줉 議고쉶
                 $scope.fn.getIssueTypeList = getIssueTypeList;          // �씠�뒋 �쑀�삎 紐⑸줉 議고쉶
                 $scope.fn.getCustomFieldList = getCustomFieldList;          // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶
+                $scope.fn.getMailTargetAll = getMailTargetAll;          // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶
 
                 function getUserList(query, excludeList, page, callBack) {
                     var conditions = {
@@ -480,6 +481,48 @@
 
                     return deferred.promise;
                 }
+
+                function getMailTargetAll(query, excludeList, page, callBack) {
+                    var conditions = {
+                        id : query,
+                        excludeIds : (function () {
+                            var excludeIds = [];
+
+                            angular.forEach(excludeList, function (exclude) {
+                                excludeIds.push(exclude.id);
+                            });
+
+                            return excludeIds;
+                        })(),
+                        partnersEmailIds : (function () {
+                            var partnersEmailIds = [];
+
+                            angular.forEach($scope.vm.form.partners, function (partner) {
+                                partnersEmailIds.push(partner.email);
+                            });
+
+                            return partnersEmailIds;
+                        })(),
+                    };
+                    var deferred = $q.defer();
+
+                    Issue.findMailTargetAll($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")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "�씠�뒋 �쑀�삎 紐⑸줉 議고쉶 �떎�뙣"
+                        }
+                    });
+
+                    return deferred.promise;
+                }
             }
         ]);
     }
diff --git a/src/main/webapp/scripts/components/utils/issueDetailImagePreview.directive.js b/src/main/webapp/scripts/components/utils/issueDetailImagePreview.directive.js
index 4f8cf0f..38d3899 100644
--- a/src/main/webapp/scripts/components/utils/issueDetailImagePreview.directive.js
+++ b/src/main/webapp/scripts/components/utils/issueDetailImagePreview.directive.js
@@ -25,7 +25,7 @@
 
                         //  �씠誘몄� 媛ㅻ윭由� 留뚮뱾湲�
                         function makeNgImageGallery() {
-                            var makeTag = '<ng-image-gallery images="images" thumb-size="80" bubbles="true" bubble-size="50" img-bubbles="true"></ng-image-gallery>';
+                            var makeTag = '<ng-image-gallery images="images" thumb-size="60" bubbles="true" bubble-size="50" img-bubbles="true"></ng-image-gallery>';
                             var linkFn = $compile(makeTag);
                             var content = linkFn($scope);
                             $element.append(content);
diff --git a/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js b/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js
index 92ee0a0..5c4ae0c 100644
--- a/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js
+++ b/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js
@@ -51,9 +51,14 @@
                                         break;
                                     }
                                 }
-
-                                makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>횞</span>";
-                                makeTag += "</p>";
+                                if (target.fieldValue !== null) {
+                                    makeTag += "<span></span>";
+                                    makeTag += "</p>";
+                                }
+                                else {
+                                    makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>횞</span>";
+                                    makeTag += "</p>";
+                                }
                             });
 
                             var linkFn = $compile(makeTag);
diff --git a/src/main/webapp/scripts/config.js b/src/main/webapp/scripts/config.js
index d118d3c..74ad46c 100644
--- a/src/main/webapp/scripts/config.js
+++ b/src/main/webapp/scripts/config.js
@@ -318,23 +318,25 @@
                 };
 
                 $rootScope.changeLastProject = function (projectId, reload = true) {
-                    if (User != null) {
-                        User.updateLastProject($resourceProvider.getContent(
-                            {lastProjectId: projectId},
-                            $resourceProvider.getPageContent(0, 0))).then(function (result) {
+                    if ($rootScope.workProject == null || $rootScope.workProject.id !== projectId ) {
+                        if (User != null) {
+                            User.updateLastProject($resourceProvider.getContent(
+                                {lastProjectId: projectId},
+                                $resourceProvider.getPageContent(0, 0))).then(function (result) {
 
-                            if (result.data.message.status === "success") {
-                                $rootScope.user = result.data.data;
-                                $rootScope.projects.forEach(function (el) {
-                                    if (el.id == projectId) {
-                                        $rootScope.workProject = el;
+                                if (result.data.message.status === "success") {
+                                    $rootScope.user = result.data.data;
+                                    $rootScope.projects.forEach(function (el) {
+                                        if (el.id == projectId) {
+                                            $rootScope.workProject = el;
 
-                                        $rootScope.$broadcast("changeLastProject", { id : el.id });
-                                    }
-                                });
-                                $state.go($state.current, {}, {reload: reload});
-                            }
-                        });
+                                            $rootScope.$broadcast("changeLastProject", {id: el.id});
+                                        }
+                                    });
+                                    $state.go($state.current, {}, {reload: reload});
+                                }
+                            });
+                        }
                     }
                 };
 
diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html
index cad525e..765c919 100644
--- a/src/main/webapp/views/issue/issueDetail.html
+++ b/src/main/webapp/views/issue/issueDetail.html
@@ -192,6 +192,11 @@
                             <span class="issue-detail-label" style="position: relative; top: 1rem" ng-show="vm.viewer.issueCustomFields == ''">�궗�슜�옄 �젙�쓽 �븘�뱶媛믪씠 �뾾�뒿�땲�떎.</span>
                         </div>
                     </div>
+                    <div class="col-md-2">
+                        <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
+                    </div>
+                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
+                    </div>
                 </div>
                 <!-- �궗�슜�옄 �젙�쓽 �븘�뱶 -->
                 <div class="row">
@@ -256,13 +261,9 @@
                             </div>
                         </div>
                     </div>
-                    <div class="pdt0" style="position: relative; bottom: 1rem">
-                        <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
-                    </div>
-                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
-                        <span></span>
-                    </div>
+
                 </div>
+
 
                            <!-- <div class="">
                                 <label class="issue-detail-label"><span>{{vm.viewer.issueCustomFieldValueVos[0].useValue}}</span> </label>
@@ -312,7 +313,7 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="companyField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueCompanyVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueCompanyVos[0].email}}</span>
                             </div>
                         </div>
                     </div>
@@ -372,7 +373,7 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="ispField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueIspVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueIspVos[0].email}}</span>
                             </div>
                         </div>
                     </div>
@@ -433,7 +434,7 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="hostingField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueHostingVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueHostingVos[0].email}}</span>
                             </div>
                         </div>
                     </div>
diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html
index 6fec887..7575114 100644
--- a/src/main/webapp/views/issue/issueListNormal.html
+++ b/src/main/webapp/views/issue/issueListNormal.html
@@ -38,9 +38,7 @@
                                             <!--    �봽濡쒖젥�듃    -->
                                             <issue-search-array-view-element lists="vm.projects"
                                                                              type="'project'"></issue-search-array-view-element>
-                                            <p ng-if="$root.isDefined(vm.projectKey)">
-                                                {{vm.projectKey}}
-                                            </p>
+
                                             <!--    �씠�뒋 ���엯   -->
                                             <issue-search-field-key-view-element lists="vm.issueTypes"
                                                                                  keys="vm.search.issueTypeIds"></issue-search-field-key-view-element>
@@ -48,16 +46,6 @@
                                             <!--    �씠�뒋 �긽�깭   -->
                                             <issue-search-field-key-view-element lists="vm.issueStatuses"
                                                                                  keys="vm.search.issueStatusIds"></issue-search-field-key-view-element>
-
-                                            <!--    �씠�뒋 踰덊샇   -->
-                                            <p ng-if="$root.isDefined(vm.issueNumber)">
-                                                {{vm.issueNumber}}
-                                            </p>
-
-                                            <p ng-if="$root.isDefined(vm.search.combinationIssueNumber)">
-                                                {{vm.search.combinationIssueNumber}}
-                                                <span ng-click="vm.search.combinationIssueNumber = ''">횞</span>
-                                            </p>
 
                                             <!--    �씠�뒋 �궡�슜   -->
                                             <p ng-if="$root.isDefined(vm.search.description)">
@@ -159,7 +147,9 @@
                                                                              options="::vm.issueStatuses"></ng-dropdown-multiselect>
                                                 </div>
                                             </div>
+                                        </div>
 
+                                        <div class="row">
                                             <div class="col-lg-3">
                                                 <div class="form-group">
                                                     <label> <span translate="issue.issueNumber">�씠�뒋 踰덊샇</span></label>
@@ -169,13 +159,10 @@
                                                            autocomplete="off"
                                                            kr-input
                                                            maxlength="20"
-                                                           ng-model="vm.issueNumber">
-<!--                                                           ng-model="vm.search.combinationIssueNumber">-->
+                                                           ng-model="vm.search.combinationIssueNumber">
                                                 </div>
                                             </div>
-                                        </div>
 
-                                        <div class="row">
                                             <div class="col-lg-3">
                                                 <div class="form-group">
                                                     <label> <span translate="issue.issueContent">�씠�뒋 �궡�슜</span></label>
@@ -206,20 +193,6 @@
                                                                              data-input-name="severities"
                                                                              selected-model="vm.search.severityIds"
                                                                              options="::vm.severities"></ng-dropdown-multiselect>
-                                                </div>
-                                            </div>
-
-                                            <div class="col-lg-3">
-                                                <div class="form-group">
-                                                    <label> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span></label>
-                                                    <js-autocomplete-multi data-input-name="departments"
-                                                                           selected-model="vm.departments"
-                                                                           search="vm.departmentName"
-                                                                           input-disabled="false"
-                                                                           source="fn.getUserDepartmentList(vm.departmentName, vm.departments)"
-                                                                           translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }"
-                                                                           extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }">
-                                                    </js-autocomplete-multi>
                                                 </div>
                                             </div>
                                         </div>
@@ -280,6 +253,20 @@
                                                 </div>
                                             </div>
 
+                                            <div class="col-lg-3">
+                                                <div class="form-group">
+                                                    <label> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span></label>
+                                                    <js-autocomplete-multi data-input-name="departments"
+                                                                           selected-model="vm.departments"
+                                                                           search="vm.departmentName"
+                                                                           input-disabled="false"
+                                                                           source="fn.getUserDepartmentList(vm.departmentName, vm.departments)"
+                                                                           translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }"
+                                                                           extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }">
+                                                    </js-autocomplete-multi>
+                                                </div>
+                                            </div>
+
                                             <div class="col-lg-3" ng-repeat="customField in vm.customFields">
                                                 <label>{{::customField.name}}</label>
 
diff --git a/src/main/webapp/views/issue/issueSendMail.html b/src/main/webapp/views/issue/issueSendMail.html
index d9998ff..4eb604b 100644
--- a/src/main/webapp/views/issue/issueSendMail.html
+++ b/src/main/webapp/views/issue/issueSendMail.html
@@ -20,21 +20,97 @@
                                       ng-click="fn.removeManager($index)">횞</span>
                             </span>
                 </div>
-                <js-input-autocomplete data-input-name="users"
-                                       owl-auto-focus
-                                       target=".auto-complete-input"
-                                       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"
-                                       extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile',
-                                               type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
+
+<!--                <js-autocomplete-single data-input-name="issue"-->
+<!--                                        selected-model="vm.form.issues"-->
+<!--                                        search="vm.issueName"-->
+<!--                                        source="fn.getIssueList(vm.issueName, vm.issueTypeId, vm.form.issues, vm.autoCompletePage.issue.page, fn.getIssueListCallBack)"-->
+<!--                                        page="vm.autoCompletePage.issue.page"-->
+<!--                                        total-page="vm.autoCompletePage.issue.totalPage"-->
+<!--                                        input-disabled="false"-->
+<!--                                        translation-texts="{ empty : 'common.emptyIssue' }"-->
+<!--                                        extra-settings="{ displayProp : 'title' , idProp : 'id', imageable : false, imagePathProp : '',-->
+<!--                                            type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>-->
+
+<!--                {{vm.form.companyFieldsEmail}}-->
+                <label><span>�삊�젰�궗 硫붿씪</span></label>
+                <js-autocomplete-multi data-input-name="partnersEmail"
+                                       selected-model="vm.form.partnersEmail"
+                                       search="vm.partnerName"
+                                       source="fn.getMailTargetAll(vm.form.partnersEmail)"
+                                       input-disabled="false"
+                                       page="vm.autoCompletePage.partnersMail.page"
+                                       total-page="vm.autoCompletePage.partnersMail.totalPage"
+                                       modal-form-auto-scroll
+                                       extra-settings="{ displayProp : 'byName' , idProp : 'email', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi>
+
+<!--                <ng-dropdown-multiselect class="multiSelect cursor"-->
+<!--                                         data-input-name="companyFieldsEmail"-->
+<!--                                         selected-model="vm.form.companyFieldsEmail.concat(vm.form.ispFieldsEmail,vm.form.hostingFieldsEmail)"-->
+<!--                                         extra-settings="{ stringTypeOption : true }"-->
+<!--                                         options="vm.options.companyFieldsEmail"></ng-dropdown-multiselect>-->
+
+<!--                <span class="issue-detail-label" translate="companyField.info"></span>-->
+<!--                <input ng-if="vm.form.companyFieldsEmail != null"-->
+<!--                       type="text"-->
+<!--                       class="form-control"-->
+<!--                       kr-input-->
+<!--                       autocomplete="off"-->
+<!--                       ng-model="vm.form.companyFieldsEmail">-->
+
+<!--                <span class="issue-detail-label" translate="ispField.info"></span>-->
+<!--                <input ng-if="vm.form.ispFieldsEmail != null"-->
+<!--                       type="text"-->
+<!--                       class="form-control"-->
+<!--                       kr-input-->
+<!--                       autocomplete="off"-->
+<!--                       ng-model="vm.form.ispFieldsEmail">-->
+
+<!--                <span class="issue-detail-label" translate="hostingField.info"></span>-->
+<!--                <input ng-if="vm.form.hostingFieldsEmail != null"-->
+<!--                       type="text"-->
+<!--                       class="form-control"-->
+<!--                       kr-input-->
+<!--                       autocomplete="off"-->
+<!--                       ng-model="vm.form.hostingFieldsEmail">-->
+
+<!--                <a style="display: flex; text-align: center; justify-content: center;">-->
+<!--                    <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">1</i>-->
+<!--                    <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">2</i>-->
+<!--                    <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">3</i>-->
+<!--                </a>-->
+<!--                <div class="modal-content">-->
+<!--                    <a style="display: flex; text-align: center; justify-content: center;">-->
+<!--                        <img onclick="emailTemplate()" id="template1" class="cursor" src="assets/images/btn_facebook.png">-->
+<!--                        <img onclick="emailTemplate()" id="template2" class="cursor" src="assets/images/btn_kakao.png">-->
+<!--                        <img onclick="emailTemplate()" id="template3" class="cursor" src="assets/images/btn_google.png">-->
+<!--                    </a>-->
+<!--                </div>-->
+<!--                <form action="${pageContext.request.contextPath}/updatetNoticePro.do" method="post" enctype="multipart/form-data" name="noticeForm">-->
+<!--                    <input type='file' id="filename" name="filename"/>-->
+<!--                    <img id="preImage" src="${pageContext.request.contextPath}/saveFile/${noticeVO.filename}" alt="image_title" onerror='this.src="${pageContext.request.contextPath}/images/no_img.jpg"'/>-->
+<!--                </form>-->
+
             </div>
         </form>
+
     </div>
+<!--    <h6>{{vm.form.companyFieldsEmail}}</h6>-->
+<!--   <span>{{vm.form.id}}===============</span>-->
+<!--   <h6>{{vm.form.ispFieldsEmail}}===============</h6>-->
+<!--   <span>===============</span>-->
+<!--   <h6>{{vm.form.hostingFieldsEmail}}</h6>-->
+<!--    <div style="display: flex; text-align: center">-->
+<!--            �뀥�뵆由�1-->
+<!--        </div>-->
+<!--        <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">-->
+<!--            �뀥�뵆由�2-->
+    <!--        <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">-->
+<!--        </div>-->
+<!--        <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">-->
+<!--            �뀥�뵆由�3-->
+<!--        </div>-->
+<!--    </div>-->
 
     <div class="modal-footer buttons-on-right">
         <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span
@@ -45,3 +121,24 @@
         </button>
     </div>
 </div>
+
+<script>
+
+    function emailTemplate() {
+        $('#template1').click(function() {
+            $('#template1').hide();
+        });
+
+        $('#template2').click(function() {
+            $('#template2').hide();
+        });
+
+        $('#template3').click(function() {
+            $('#template3').hide();
+        });
+    }
+
+    function changeIMG() {
+        $('#template1').attr("src", "assets/images/previewTemplate.png")
+    }
+</script>
\ No newline at end of file

--
Gitblit v1.8.0