Browse Source

项目管理-项目信息,新增数据

MaiXinRong 7 tháng trước cách đây
mục cha
commit
0a6044f29a
3 tập tin đã thay đổi với 217 bổ sung9 xóa
  1. 4 0
      app/controller/sub_proj_controller.js
  2. 183 9
      app/view/sub_proj/info.ejs
  3. 30 0
      sql/update.sql

+ 4 - 0
app/controller/sub_proj_controller.js

@@ -208,6 +208,10 @@ module.exports = app => {
         async info(ctx) {
             try {
                 const info = await this.ctx.service.subProjInfo.getInfo(ctx.subProject.id);
+                info.lx_tp = await this.ctx.service.budgetGu.getSumTp(ctx.subProject.budget_id);
+                info.cb_tp = await this.ctx.service.budgetGai.getSumTp(ctx.subProject.budget_id);
+                info.sgt_tp = await this.ctx.service.budgetYu.getSumTp(ctx.subProject.budget_id);
+                info.zbys_tp = await this.ctx.service.budgetZb.getSumTp(ctx.subProject.budget_id);
                 const renderData = {
                     info,
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.subProject.info),

+ 183 - 9
app/view/sub_proj/info.ejs

@@ -4,7 +4,11 @@
         <div class="title-main">
             <% include ./sp_info_mini_menu.ejs %>
             <div class="d-inline-block">
-                项目信息
+                <div class="btn-group group-tab">
+                    <a class="btn btn-sm btn-light active" href="sp/<%- info.id %>/info">项目信息</a>
+                    <a class="btn btn-sm btn-light" href="sp/<%- info.id %>/progress">阶段进度</a>
+                    <a class="btn btn-sm btn-light" href="sp/<%- info.id %>/push">推进记录</a>
+                </div>
             </div>
         </div>
         <div class="ml-auto"></div>
@@ -14,6 +18,16 @@
             <div class="sjs-height-0" style="height: 570px;">
                 <div class="col-9 px-3">
                     <div>
+                        <div class="row">
+                            <div class="form-group col-6">
+                                <div class="py-2 font-weight-bold">项目概述</div>
+                                <textarea class="form-control form-control-sm" name="proj_intro" rows="5" org="<%- info.proj_intro %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.proj_intro %></textarea>
+                            </div>
+                            <div class="col">
+                                <div class="py-2 font-weight-bold">当前状态</div>
+                                <textarea class="form-control form-control-sm" name="proj_cur_status" rows="5" org="<%- info.proj_cur_status %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.proj_cur_status %></textarea>
+                            </div>
+                        </div>
                         <div class="py-2 font-weight-bold">项目信息</div>
                         <div class="form-group">
                             <label for="">建设项目名称:</label>
@@ -57,7 +71,17 @@
                                     </select>
                                 </div>
                             </div>
-                            <div class="col-3"></div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">建设状态:</label>
+                                    <select class="form-control form-control-sm" name="proj_status" value="<%- info.proj_status %>" org="<%- info.proj_status%>" onchange="changeInfo(this)">
+                                        <option value="">请选择</option>
+                                        <option value="在建" <%if (info.proj_status === '在建') { %>selected<% } %>>在建</option>
+                                        <option value="已建" <%if (info.proj_status === '已建') { %>selected<% } %>>已建</option>
+                                        <option value="拟建" <%if (info.proj_status === '拟建') { %>selected<% } %>>拟建</option>
+                                    </select>
+                                </div>
+                            </div>
                         </div>
                         <div class="row">
                             <div class="col-3">
@@ -87,7 +111,7 @@
                         </div>
                         <div class="py-2 font-weight-bold">立项批准(核准)情况:</div>
                         <div class="row">
-                            <div class="col-6">
+                            <div class="col-3">
                                 <div class="form-group">
                                     <label for="">部门:</label>
                                     <input type="text" class="form-control form-control-sm" name="lx_department" value="<%- info.lx_department %>" org="<%- info.lx_department %>" maxlength="100" placeholder="请输入部门名称" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
@@ -105,10 +129,22 @@
                                     <input type="text" class="form-control form-control-sm" name="lx_code" value="<%- info.lx_code %>" org="<%- info.lx_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
                                 </div>
                             </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="lx_tp" value="<%- info.lx_tp %>" org="<%- info.lx_tp %>" maxlength="50" readonly>
+                                </div>
+                            </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="lx_memo" rows="2" org="<%- info.lx_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.lx_memo %></textarea>
+                                </div>
+                            </div>
                         </div>
                         <div class="py-2 font-weight-bold">初步(修编)设计批准情况:</div>
                         <div class="row">
-                            <div class="col-6">
+                            <div class="col-3">
                                 <div class="form-group">
                                     <label for="">部门:</label>
                                     <input type="text" class="form-control form-control-sm" name="cb_department" value="<%- info.cb_department %>" org="<%- info.cb_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
@@ -126,10 +162,121 @@
                                     <input type="text" class="form-control form-control-sm" name="cb_code" value="<%- info.cb_code %>" org="<%- info.cb_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
                                 </div>
                             </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="cb_tp" value="<%- info.cb_tp %>" org="<%- info.cb_tp %>" maxlength="50" readonly>
+                                </div>
+                            </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="cb_memo" rows="2" org="<%- info.cb_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.cb_memo %></textarea>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="py-2 font-weight-bold">施工图预算批复情况:</div>
+                        <div class="row">
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">部门:</label>
+                                    <input type="text" class="form-control form-control-sm" name="sgt_department" value="<%- info.sgt_department %>" org="<%- info.sgt_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">日期:</label>
+                                    <input type="date" class="form-control form-control-sm" name="sgt_date" value="<%- info.sgt_date %>" org="<%- info.sgt_date %>" placeholder="请输入" onchange="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">文号:</label>
+                                    <input type="text" class="form-control form-control-sm" name="sgt_code" value="<%- info.sgt_code %>" org="<%- info.sgt_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="sgt_tp" value="<%- info.sgt_tp %>" org="<%- info.sgt_tp %>" maxlength="50" readonly>
+                                </div>
+                            </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="sgt_memo" rows="2" org="<%- info.sgt_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.sgt_memo %></textarea>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="py-2 font-weight-bold">财评/造价站批复情况:</div>
+                        <div class="row">
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">部门:</label>
+                                    <input type="text" class="form-control form-control-sm" name="pf_department" value="<%- info.pf_department %>" org="<%- info.pf_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">日期:</label>
+                                    <input type="date" class="form-control form-control-sm" name="pf_date" value="<%- info.pf_date %>" org="<%- info.pf_date %>" placeholder="请输入" onchange="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">文号:</label>
+                                    <input type="text" class="form-control form-control-sm" name="pf_code" value="<%- info.pf_code %>" org="<%- info.pf_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="pf_tp" value="<%- info.pf_tp %>" org="<%- info.pf_tp %>" maxlength="50" onblur="changeInfo(this, true)">
+                                </div>
+                            </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="pf_memo" rows="2" org="<%- info.pf_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.pf_memo %></textarea>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="py-2 font-weight-bold">招标完成情况:</div>
+                        <div class="row">
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">部门:</label>
+                                    <input type="text" class="form-control form-control-sm" name="zb_department" value="<%- info.zb_department %>" org="<%- info.zb_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">日期:</label>
+                                    <input type="date" class="form-control form-control-sm" name="zb_date" value="<%- info.zb_date %>" org="<%- info.zb_date %>" placeholder="请输入" onchange="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">文号:</label>
+                                    <input type="text" class="form-control form-control-sm" name="zb_code" value="<%- info.zb_code %>" org="<%- info.zb_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
+                                </div>
+                            </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="zb_tp" value="<%- info.zb_tp %>" org="<%- info.zb_tp %>" maxlength="50" onblur="changeInfo(this, true)">
+                                </div>
+                            </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="zb_memo" rows="2" org="<%- info.zb_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.zb_memo %></textarea>
+                                </div>
+                            </div>
                         </div>
                         <div class="py-2 font-weight-bold">施工许可批复情况:</div>
                         <div class="row">
-                            <div class="col-6">
+                            <div class="col-3">
                                 <div class="form-group">
                                     <label for="">部门:</label>
                                     <input type="text" class="form-control form-control-sm" name="sg_department" value="<%- info.sg_department %>" org="<%- info.sg_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
@@ -147,10 +294,16 @@
                                     <input type="text" class="form-control form-control-sm" name="sg_code" value="<%- info.sg_code %>" org="<%- info.sg_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
                                 </div>
                             </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="sg_memo" rows="2" org="<%- info.sg_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.sg_memo %></textarea>
+                                </div>
+                            </div>
                         </div>
                         <div class="py-2 font-weight-bold">交工验收情况:</div>
                         <div class="row">
-                            <div class="col-6">
+                            <div class="col-3">
                                 <div class="form-group">
                                     <label for="">部门:</label>
                                     <input type="text" class="form-control form-control-sm" name="jg_department" value="<%- info.jg_department %>" org="<%- info.jg_department %>" placeholder="请输入部门名称" maxlength="100" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
@@ -168,6 +321,12 @@
                                     <input type="text" class="form-control form-control-sm" name="jg_code" value="<%- info.jg_code %>" org="<%- info.jg_code %>" placeholder="请输入文号" maxlength="50" oninput="limitMaxLength(this)" onblur="changeInfo(this)">
                                 </div>
                             </div>
+                            <div class="col-3">
+                                <div class="form-group">
+                                    <label for="">金额:</label>
+                                    <input type="text" class="form-control form-control-sm" name="jg_tp" value="<%- info.jg_tp %>" org="<%- info.jg_tp %>" maxlength="50" onblur="changeInfo(this, true)">
+                                </div>
+                            </div>
                         </div>
                         <div class="row">
                             <div class="col-3">
@@ -187,6 +346,12 @@
                                     </select>
                                 </div>
                             </div>
+                            <div class="col-12">
+                                <div class="form-group">
+                                    <label for="">备注:</label>
+                                    <textarea class="form-control form-control-sm" name="jg_memo" rows="2" org="<%- info.jg_memo %>" maxlength="1000" oninput="limitMaxLength(this)" onblur="changeInfo(this)"><%- info.jg_memo %></textarea>
+                                </div>
+                            </div>
                         </div>
                         <div class="py-2 font-weight-bold">单位信息:</div>
                         <div class="row">
@@ -250,17 +415,26 @@
             obj.value = obj.value.substr(0, obj.maxLength);
         }
     }
-    function changeInfo(obj) {
+    function changeInfo(obj, isNum = false) {
         const field = obj.getAttribute('name');
         if (!field) return;
         if (obj.getAttribute('org') === obj.value) return;
 
         const updateData = {};
-        updateData[field] = obj.value;
+        if (isNum) {
+            updateData[field] = _.toNumber(obj.value);
+            if (!_.isFinite(updateData[field])) {
+                toastr.error('输入的数字非法');
+                obj.focus();
+                return;
+            }
+        } else {
+            updateData[field] = obj.value;
+        }
         postData('info/save', { updateData }, function (result) {
             obj.setAttribute('org', obj.value);
         }, function () {
             obj.value = obj.getAttribute('org');
         });
-    };
+    }
 </script>

+ 30 - 0
sql/update.sql

@@ -7,6 +7,36 @@
 -- 表结构
 ------------------------------------
 
+ALTER TABLE `zh_sub_project_info`
+ADD COLUMN `proj_intro` text NULL COMMENT '项目概述' AFTER `project_id`,
+ADD COLUMN `proj_cur_status` text NULL COMMENT '当前状态' AFTER `proj_intro`,
+ADD COLUMN `proj_status` varchar(20) NOT NULL DEFAULT '' COMMENT '建设状态' AFTER `proj_level`,
+ADD COLUMN `lx_tp` decimal(24, 8) NOT NULL COMMENT '立项-金额' AFTER `lx_code`,
+ADD COLUMN `lx_memo` text NULL COMMENT '立项-备注' AFTER `lx_tp`,
+ADD COLUMN `cb_tp` decimal(24, 8) NOT NULL DEFAULT 0 COMMENT '初步-金额' AFTER `cb_code`,
+ADD COLUMN `cb_memo` text NULL COMMENT '初步-备注' AFTER `cb_tp`,
+ADD COLUMN `sg_tp` decimal(24, 8) NOT NULL COMMENT '施工许可批复-金额' AFTER `sg_code`,
+ADD COLUMN `sg_memo` text NULL COMMENT '施工许可批复-备注' AFTER `sg_tp`,
+ADD COLUMN `sgt_department` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '施工图-部门' AFTER `gcl_quantity`,
+ADD COLUMN `sgt_date` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '施工图-日期' AFTER `sgt_department`,
+ADD COLUMN `sgt_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '施工图-文号' AFTER `sgt_date`,
+ADD COLUMN `sgt_tp` decimal(24, 8) NOT NULL DEFAULT 0 COMMENT '施工图-金额' AFTER `sgt_code`,
+ADD COLUMN `sgt_memo` text NULL COMMENT '施工图-备注' AFTER `sgt_tp`,
+ADD COLUMN `pf_department` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '财评/造价站批复-部门' AFTER `sgt_memo`,
+ADD COLUMN `pf_date` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '财评/造价站批复-日期' AFTER `pf_department`,
+ADD COLUMN `pf_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '财评/造价站批复-文号' AFTER `pf_date`,
+ADD COLUMN `pf_tp` decimal(24, 8) NOT NULL DEFAULT 0 COMMENT '财评/造价站批复-金额' AFTER `pf_code`,
+ADD COLUMN `pf_memo` text NULL COMMENT '财评/造价站批复-备注' AFTER `pf_tp`,
+ADD COLUMN `zb_department` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '招标完成-部门' AFTER `pf_memo`,
+ADD COLUMN `zb_date` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '招标完成-日期' AFTER `zb_department`,
+ADD COLUMN `zb_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '招标完成-文号' AFTER `zb_date`,
+ADD COLUMN `zb_tp` decimal(24, 8) NOT NULL DEFAULT 0 COMMENT '招标完成-金额' AFTER `zb_code`,
+ADD COLUMN `zb_memo` text NULL COMMENT '招标完成-备注' AFTER `zb_tp`;
+
+ALTER TABLE `zh_sub_project_info`
+ADD COLUMN `jg_tp` decimal(24, 8) NOT NULL DEFAULT 0 COMMENT '交工-金额' AFTER `jg_level`,
+ADD COLUMN `jg_memo` text NULL COMMENT '交工-备注' AFTER `jg_tp`;
+
 
 ------------------------------------
 -- 表数据