From c594169b9e916b0efe4eb0ee819f32277b0e28cd Mon Sep 17 00:00:00 2001
From: hanbo <2608504783@qq.com>
Date: Wed, 7 Dec 2022 15:58:00 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=98=B6=E6=AE=B5=E6=9B=B4?=
 =?UTF-8?q?=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/backend/ProjectController.java |  14 ++
 .../java/cn/palmte/work/model/Project.java    |  22 +++
 .../palmte/work/service/ProjectService.java   |  19 +++
 .../templates/admin/project_approve.ftl       |  37 +++++
 .../templates/admin/project_list.ftl          | 140 +++++++++++++++++-
 .../templates/admin/project_list_approve.ftl  |   2 +-
 6 files changed, 232 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java
index d2f1901..cbad382 100644
--- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java
+++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java
@@ -844,6 +844,14 @@ public class ProjectController extends BaseController {
         return "admin/project_select_role_user";
     }
 
+    @ResponseBody
+    @RequestMapping("/info/{projectId}")
+    public ResponseMsg info(@PathVariable int projectId,Map<String, Object> model) {
+        Project project = projectService.getProject(projectId);
+        model.put("info",project);
+        return ResponseMsg.buildSuccessData(project);
+    }
+
     /**
      * 获取当前所有的角色和角色下的用户,根据项目决定是否check
      */
@@ -1386,4 +1394,10 @@ public class ProjectController extends BaseController {
 
         return "admin/project_final_list";
     }
+
+    @ResponseBody
+    @RequestMapping("/stageRefreshSave/{projectId}")
+    public ResponseMsg stageRefreshSave(@RequestBody String json, @PathVariable int projectId) {
+        return projectService.stageRefreshSave(json,projectId);
+    }
 }
diff --git a/src/main/java/cn/palmte/work/model/Project.java b/src/main/java/cn/palmte/work/model/Project.java
index 6c32f3f..0ee22b2 100644
--- a/src/main/java/cn/palmte/work/model/Project.java
+++ b/src/main/java/cn/palmte/work/model/Project.java
@@ -257,6 +257,12 @@ public class Project {
     @Column(name = "calculation_collection")
     private String calculationCollection;
 
+    @Column(name = "stage")
+    private Integer stage;
+
+    @Column(name = "stage_remark")
+    private String stageRemark;
+
     @Transient
     private String contractRound;
 
@@ -1003,4 +1009,20 @@ public class Project {
     public void setRemark(String remark) {
         this.remark = remark;
     }
+
+    public Integer getStage() {
+        return stage;
+    }
+
+    public void setStage(Integer stage) {
+        this.stage = stage;
+    }
+
+    public String getStageRemark() {
+        return stageRemark;
+    }
+
+    public void setStageRemark(String stageRemark) {
+        this.stageRemark = stageRemark;
+    }
 }
diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java
index af65da6..6fe1798 100644
--- a/src/main/java/cn/palmte/work/service/ProjectService.java
+++ b/src/main/java/cn/palmte/work/service/ProjectService.java
@@ -112,6 +112,9 @@ public class ProjectService {
         }
 
         if(StrUtil.isNotEmpty(searchInfo.get("extend")) && "0".equals(searchInfo.get("extend"))) {
+            if (StrUtil.isNotEmpty(searchInfo.get("stage")) && !"-1".equals(searchInfo.get("stage"))) {
+                queryHelper.addCondition("p.stage=?", Integer.parseInt(searchInfo.get("stage")));
+            }
             if (StrUtil.isNotEmpty(searchInfo.get("isSecond")) && !"-1".equals(searchInfo.get("isSecond"))) {
                 queryHelper.addCondition("p.is_second=?", Integer.parseInt(searchInfo.get("isSecond")));
             }
@@ -895,4 +898,20 @@ public class ProjectService {
 
         }
     }
+
+    public ResponseMsg stageRefreshSave(String json,int projectId) {
+        JSONObject obj = JSON.parseObject(json);
+        int stage = obj.getIntValue("stage");
+        String stageRemark = obj.getString("stageRemark");
+
+        Project project = projectRepository.getOne(projectId);
+        if(null == project){
+            return ResponseMsg.buildFailedMsg("项目不存在");
+        }
+
+        project.setStage(stage);
+        project.setStageRemark(stageRemark);
+        projectRepository.saveAndFlush(project);
+        return ResponseMsg.buildSuccessMsg("保存成功");
+    }
 }
diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl
index 2c59358..7b5760f 100644
--- a/src/main/resources/templates/admin/project_approve.ftl
+++ b/src/main/resources/templates/admin/project_approve.ftl
@@ -395,6 +395,43 @@
                                     >${project.calculationCollection!}</textarea>
                                 </td>
                             </tr>
+                            <tr class="am-text-nowrap">
+                                <th class="table-title" colspan="1" ><span style="font-size: 15px">项目阶段:</span></th>
+                                <td class="table-title" colspan="5" >
+                                    <#if project.stage??>
+                                        <#if (project.stage) =0>
+                                            <input readonly value="S0-概算立项"/>
+                                        <#elseif (project.stage) =1>
+                                            <input readonly value="S1-项目调研"/>
+                                        <#elseif (project.stage) =2>
+                                            <input readonly value="S2-方案设计"/>
+                                        <#elseif (project.stage) =3>
+                                            <input readonly value="S3-预算评估"/>
+                                        <#elseif (project.stage) =4>
+                                            <input readonly value="S4-招标期"/>
+                                        <#elseif (project.stage) =5>
+                                            <input readonly value="S5-合同期"/>
+                                        <#elseif (project.stage) =6>
+                                            <input readonly value="S6-交付期"/>
+                                        <#elseif (project.stage) =7>
+                                            <input readonly value="S7-结算期"/>
+                                        <#elseif (project.stage) =8>
+                                            <input readonly value="S8-决算期"/>
+                                        <#elseif (project.stage) =9>
+                                            <input readonly value="L-项目丢失"/>
+                                        </#if>
+                                    <#else>
+                                        <input readonly value=""/>
+                                    </#if>
+                                </td>
+                            </tr>
+                            <tr class="am-text-nowrap">
+                                <th class="table-title" colspan="1" ><span style="font-size: 15px">当前进度描述:</span></th>
+                                <td class="table-title" colspan="5" >
+                                    <textarea rows="3" cols="20" style="border-style:none;background-color: white;" disabled="disabled"
+                                    >${project.stageRemark!}</textarea>
+                                </td>
+                            </tr>
                         </table>
                     </div>
                     <#--  项目预算信息 展示内容  -->
diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl
index a25d274..2be4fe9 100644
--- a/src/main/resources/templates/admin/project_list.ftl
+++ b/src/main/resources/templates/admin/project_list.ftl
@@ -176,7 +176,7 @@
                                 </div>
                             </div>
                             <div class="st-col">
-                                <div class="st-col-title">项目状态</div>
+                                <div class="st-col-title">项目当前状态</div>
                                 <div class="st-col-field">
                                     <select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="status" name="status">
                                         <option value="-1">全部</option>
@@ -452,6 +452,27 @@
                                     </div>
                                 </div>
                             </div>
+                            <!-- 第六行 -->
+                            <div class="flex-row st-row">
+                                <div class="st-col st-col-4">
+                                    <div class="st-col-title">项目阶段</div>
+                                    <div class="st-col-field">
+                                        <select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="qstage" name="qstage">
+                                            <option value="-1">全部</option>
+                                            <option value="0" <#if qstage?? && qstage='0'>selected</#if>>S0-概算立项</option>
+                                            <option value="1" <#if qstage?? && qstage='1'>selected</#if>>S1-项目调研</option>
+                                            <option value="2" <#if qstage?? && qstage='2'>selected</#if>>S2-方案设计</option>
+                                            <option value="3" <#if qstage?? && qstage='3'>selected</#if>>S3-预算评估</option>
+                                            <option value="4" <#if qstage?? && qstage='4'>selected</#if>>S4-招标期</option>
+                                            <option value="5" <#if qstage?? && qstage='5'>selected</#if>>S5-合同期</option>
+                                            <option value="6" <#if qstage?? && qstage='6'>selected</#if>>S6-交付期</option>
+                                            <option value="7" <#if qstage?? && qstage='7'>selected</#if>>S7-结算期</option>
+                                            <option value="8" <#if qstage?? && qstage='8'>selected</#if>>S8-决算期</option>
+                                            <option value="9" <#if qstage?? && qstage='9'>selected</#if>>L-项目丢失</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
                         <#-- 按钮 -->
                         <div class="flex-row tools-row">
@@ -1027,6 +1048,10 @@
                                                 </button>
                                             </#if>
 
+                                            <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary"
+                                                    onclick="stageRefreshModal(${list.id})">
+                                                <span class="am-icon-pencil-square-o"></span>项目阶段更新
+                                            </button>
                                         </div>
                                     </div>
                                 </td>
@@ -1188,6 +1213,55 @@
             </div><!-- /.modal-content -->
         </div><!-- /.modal-dialog -->
     </div>
+
+    <#--项目阶段更新弹窗-->
+    <div class="modal fade" id="myModal4" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+        <div class="modal-dialog">
+            <div class="modal-content" style="width: 500px">
+
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+                    <h4 class="modal-title" id="myModalLabel">项目阶段更新</h4>
+                </div>
+                <input type="hidden" id="stageProjectId" name="stageProjectId" value=''/>
+
+                <div class="am-g am-form-group am-margin-top" style="display: flex;">
+                    <div class="am-u-sm-3 am-u-md-3 am-text-right">
+                        <span style="color: red;">*</span>项目阶段</div>
+                    <div class="am-u-sm-6 am-u-md-6">
+                        <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 300,searchBox: 1}"
+                                id="stage" name="stage">
+                            <option value="0" <#if stage?? && stage='0'>selected</#if>>S0-概算立项</option>
+                            <option value="1" <#if stage?? && stage='1'>selected</#if>>S1-项目调研</option>
+                            <option value="2" <#if stage?? && stage='2'>selected</#if>>S2-方案设计</option>
+                            <option value="3" <#if stage?? && stage='3'>selected</#if>>S3-预算评估</option>
+                            <option value="4" <#if stage?? && stage='4'>selected</#if>>S4-招标期</option>
+                            <option value="5" <#if stage?? && stage='5'>selected</#if>>S5-合同期</option>
+                            <option value="6" <#if stage?? && stage='6'>selected</#if>>S6-交付期</option>
+                            <option value="7" <#if stage?? && stage='7'>selected</#if>>S7-结算期</option>
+                            <option value="8" <#if stage?? && stage='8'>selected</#if>>S8-决算期</option>
+                            <option value="9" <#if stage?? && stage='9'>selected</#if>>L-项目丢失</option>
+                        </select>
+                    </div>
+                    <div class="am-u-sm-3 am-u-md-3 input-msg"></div>
+                </div>
+
+                <div class="am-g am-form-group am-margin-top" style="display: flex;">
+                    <div class="am-u-sm-3 am-u-md-3 am-text-right">
+                        <span style="color: red;">*</span>当前进度描述</div>
+                    <div class="am-u-sm-6 am-u-md-6">
+                        <textarea id="stageRemark" minlength="1"  rows="3" cols="40" maxlength="1000" class="am-input"></textarea>
+                    </div>
+                    <div class="am-u-sm-3 am-u-md-3 input-msg"></div>
+                </div>
+
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-default" data-dismiss="modal" data-am-modal-cancel>关闭</button>
+                    <button type="button" class="btn btn-primary" data-am-modal-confirm onclick="stageRefreshSave()">提交</button>
+                </div>
+            </div><!-- /.modal-content -->
+        </div><!-- /.modal-dialog -->
+    </div>
     <!-- /.modal -->
 
 
@@ -1315,6 +1389,8 @@
                 keywordsObj.otherStart = $("#otherStart").val();
             if ($("#otherEnd").val())
                 keywordsObj.otherEnd = $("#otherEnd").val();
+            if ($("#qstage").val())
+                keywordsObj.stage = $("#qstage").val();
         }
         if ($("#customer").val())
             keywordsObj.customer = $("#customer").val();
@@ -1556,6 +1632,44 @@
         });
     };
 
+    /**
+     * 项目阶段更新保存
+     */
+    var stageRefreshSave = function () {
+        var stage = $("#stage").val();
+        console.info("=============="+stage);
+        var stageRemark = $("#stageRemark").val();
+        var projectId = $("#stageProjectId").val();
+        if (stage == '') {
+            layer.alert("请选择项目阶段");
+            return;
+        }
+        if (stageRemark == '') {
+            layer.alert("请填写当前进度描述");
+            return;
+        }
+
+        var params = {
+            stage: stage,
+            stageRemark: stageRemark
+        };
+        $.ajax({
+            url: '${base}/project/stageRefreshSave/' + projectId,
+            data: JSON.stringify(params),
+            dataType: "json",
+            contentType: "application/json",
+            type: 'post',
+            async: false,
+            success: function (data) {
+                if (data.status == 0) {
+                    layer.alert(data.msg);
+                    window.location.href=window.location.href;
+                } else if (data.status == 1) {
+                    layer.alert(data.msg);
+                }
+            }
+        });
+    };
 
     //上传会签单
     var generateFileupload = function (name) {
@@ -1687,6 +1801,30 @@
         });
     };
 
+    var stageRefreshModal = function(id) {
+        $.ajax({
+            url: "${base}/project/info/" + id,
+            dataType: "json",
+            contentType: "application/json",
+            type: 'post',
+            async: false,
+            success: function (data) {
+                $("#stage").val(data.data.stage);
+                $("#stageRemark").val(data.data.stageRemark);
+            }
+        });
+        $("#stageProjectId").val(id);
+        $('#myModal4').modal({
+            relatedElement: this,
+            onConfirm: function() {
+                console.log("提交");
+            },
+            onCancel: function() {
+                console.log("取消");
+            }
+        });
+    };
+
     var projectNoCheck = function () {
         var newProjectNo = $("#newProjectNo").val();
         var id = $("#modelId").val();
diff --git a/src/main/resources/templates/admin/project_list_approve.ftl b/src/main/resources/templates/admin/project_list_approve.ftl
index 6b9d0a6..00fcf42 100644
--- a/src/main/resources/templates/admin/project_list_approve.ftl
+++ b/src/main/resources/templates/admin/project_list_approve.ftl
@@ -173,7 +173,7 @@
                                 </div>
                             </div>
                             <div class="st-col">
-                                <div class="st-col-title">项目状态</div>
+                                <div class="st-col-title">项目当前状态</div>
                                 <div class="st-col-field">
                                     <select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="status" name="status">
                                         <option value="-1">全部</option>