Explorar el Código

编辑标段及切换项目和分类功能

ellisran hace 3 meses
padre
commit
3eacc4c5a4

+ 9 - 1
app/controller/sub_proj_setting_controller.js

@@ -445,7 +445,8 @@ module.exports = app => {
                     await this.ctx.service.tenderCache.loadTenderCache(t, this.ctx.session.sessionUser.accountId);
                 }
                 // todo 自定义分类移动到子项目内部后,在整个项目上没有分类了
-                const categoryData = []; // await this.ctx.service.category.getAllCategory(this.ctx.session.sessionProject.id);
+                const categoryData = await ctx.service.category.getAllCategory(ctx.subProject);
+                // const categoryData = []; // await this.ctx.service.category.getAllCategory(this.ctx.session.sessionProject.id);
 
                 // 获取所有项目参与者
                 const accountList = await ctx.service.projectAccount.getAllSubProjectAccount(ctx.subProject);
@@ -454,6 +455,9 @@ module.exports = app => {
                     const groupList = accountList.filter(item1 => item1.company === item.name);
                     return {groupName: item.name, groupList};
                 });
+
+                // 获取项目列表
+                const subProjects = await ctx.service.subProject.getAllDataByCondition({ where: { project_id: projectId, is_delete: 0 } });
                 const renderData = {
                     projectData,
                     tenderList,
@@ -470,6 +474,7 @@ module.exports = app => {
                     spid: ctx.subProject.id,
                     scPermission: scheduleConst.permission,
                     change_type_list: shenpiConst.change_type_list,
+                    subProjects,
                 };
                 renderData.selfCategoryLevel = await this.ctx.service.projectAccount.getSelfCategoryLevel(this.ctx.session.sessionUser.accountId);
                 await this.layout('sp_setting/manage.ejs', renderData, 'sp_setting/manage_modal.ejs');
@@ -547,6 +552,9 @@ module.exports = app => {
                         }
                         responseData.data = await ctx.service.tender.bindSp(projectId, data.spid, data.tidList.split(','));
                         break;
+                    case 'get-category':
+                        responseData.data = await ctx.service.category.getAllCategory({ id: data.spid });
+                        break;
                     default:
                         throw '参数有误';
                 }

+ 15 - 0
app/public/js/setting_manage.js

@@ -657,6 +657,21 @@ $(document).ready(() => {
         const checked = $(this).is(':checked');
         $('#no-project-tenders input').prop('checked', checked);
     });
+
+    $('#change-sp').change(function () {
+        const spid = $(this).val();
+        console.log(spid);
+        postData(`/sp/${spid}/setting/manage/tender/save`, { type: 'get-category', spid }, function (result) {
+            $('#cate-list', '#edit-bd').html(getCategoryHtml(result));
+            const tender = _.find(tenders, { id: cur_tenderid });
+            if (tender && tender.spid === spid) {
+                for (const c of tender.category) {
+                    // $('input[value=' + c.value + ']', '#edit-bd').prop('checked', 'checked');
+                    $('option[value=' + c.value + ']', '#edit-bd').prop('selected', true);
+                }
+            }
+        });
+    })
 })
 
 const tenderListSpec = (function(){

+ 28 - 14
app/public/js/tender_list_base.js

@@ -160,8 +160,8 @@ function initCategoryLevelNode() {
     }
 }
 // 新建标段 -- 分类属性选择
-function getCategoryHtml() {
-    function getSelectCategoryHtml (cate) {
+function getCategoryHtml(cg, value = 0) {
+    function getSelectCategoryHtml (cate, value) {
         const html = [];
         html.push('<div class="form-group" cate-id="' + cate.id + '">');
         html.push('<label>', cate.name, '</label>');
@@ -169,7 +169,7 @@ function getCategoryHtml() {
         for (const v of cate.value) {
             html.push('<option value="' + v.id + '">', v.value, '</option>');
         }
-        html.push('<option value="0">不选</option>');
+        html.push(`<option value="0" ${value === 0 ? 'selected' : ''}>不选</option>`);
         html.push('</select>');
         html.push('</div>');
         return html.join('');
@@ -191,9 +191,9 @@ function getCategoryHtml() {
         return html.join('');
     }
     const html = [];
-    for (const c of category) {
+    for (const c of cg) {
         // if (c.type === categoryType.key.dropDown) {
-        html.push(getSelectCategoryHtml(c));
+        html.push(getSelectCategoryHtml(c, value));
         // } else if (c.type === categoryType.key.radio) {
         //     html.push(getRadioCategoryHtml(c));
         // }
@@ -330,6 +330,7 @@ function bindTenderUrl() {
         $('[name=spid]', '#edit-bd').val(tender.spid);
         $('input[type=radio]', '#add-bd').prop('checked', false);
         $('option[value=0]', '#edit-bd').prop('selected', true);
+        $('#cate-list', '#edit-bd').html(getCategoryHtml(category));
         for (const c of tender.category) {
             // $('input[value=' + c.value + ']', '#edit-bd').prop('checked', 'checked');
             $('option[value=' + c.value + ']', '#edit-bd').prop('selected', true);
@@ -353,8 +354,8 @@ $(document).ready(() => {
     sortCategory();
     // 初始化分类数据
     initCategoryLevelNode();
-    $('.modal-body', '#add-bd').append(getCategoryHtml());
-    $('.modal-body', '#edit-bd').append(getCategoryHtml());
+    $('.modal-body', '#add-bd').append(getCategoryHtml(category));
+    // $('.modal-body', '#edit-bd').append(getCategoryHtml(category));
     // 初始化标段树结构
     tenderListOrder.reOrderTenders();
     initTenderTree();
@@ -496,22 +497,35 @@ $(document).ready(() => {
             // TODO 提示用户
             return;
         }
-        for (const c of category) {
-            const cateObj = $('[cate-id=' + c.id + ']', '#edit-bd');
-            if (parseInt($('select', cateObj).val()) !== 0) {
-                const cate = {cid: c.id};
-                cate.value = parseInt($('select', cateObj).val());
-                data.category.push(cate);
+        $('#cate-list .form-group').each(function (index, item) {
+            const cid = $(item).attr('cate-id');
+            if (parseInt($('select', item).val()) !== 0) {
+                data.category.push({cid: parseInt(cid), value: parseInt($('select', item).val())});
             }
+        });
+        console.log(data);
+        // for (const c of category) {
+        //     const cateObj = $('[cate-id=' + c.id + ']', '#edit-bd');
+        //     if (parseInt($('select', cateObj).val()) !== 0) {
+        //         const cate = {cid: c.id};
+        //         cate.value = parseInt($('select', cateObj).val());
+        //         data.category.push(cate);
+        //     }
             // if (c.type === categoryType.key.dropDown) {
             //     cate.value = parseInt($('select', cateObj).val());
             // } else if (c.type === categoryType.key.radio) {
             //     cate.value = parseInt($('input:checked', cateObj).val());
             // }
             // data.category.push(cate);
-        }
+        // }
         postData(`/sp/${spid}/list/update`, data, function (result) {
             const tender = _.find(tenders, {id: result.id});
+            if (tender.spid !== data.spid) {
+                setTimeout(function () {
+                    window.location.reload();
+                }, 500);
+                return;
+            }
             _.assign(tender, result);
             initTenderTree();
             $('.c-body').html(getTenderTreeHtml());

+ 7 - 1
app/view/sp_setting/manage_modal.ejs

@@ -169,12 +169,18 @@
             <div class="modal-body">
                 <div class="form-group">
                     <label>所属项目<b class="text-danger">*</b></label>
-                    <input class="form-control form-control-sm"  placeholder="输入标段名称" type="text" name="name">
+                    <select class="form-control form-control-sm" name="spid" id="change-sp">
+                        <% for (const sp of subProjects) { %>
+                        <option value="<%- sp.id %>"><%- sp.name %></option>
+                        <% } %>
+                    </select>
                 </div>
                 <div class="form-group">
                     <label>标段名称<b class="text-danger">*</b></label>
                     <input class="form-control form-control-sm"  placeholder="输入标段名称" type="text" name="name">
                 </div>
+                <div id="cate-list">
+                </div>
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>

+ 2 - 0
app/view/tender/manage_modal.ejs

@@ -48,6 +48,8 @@
                     <input class="form-control form-control-sm"  placeholder="输入标段名称" type="text" name="name">
                 </div>
                 <input type="hidden" name="spid" value="<%- ctx.subProject.id %>">
+                <div id="cate-list">
+                </div>
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>

+ 8 - 2
sql/update.sql

@@ -22,11 +22,17 @@ ADD COLUMN `spid` varchar(36) NOT NULL DEFAULT '' COMMENT '子项目id(uuid)
 ALTER TABLE `zh_sub_project_permission`
 ADD COLUMN `self_category_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER `update_time`;
 
-ALTER TABLE `calculation`.`zh_project_log`
+ALTER TABLE `zh_project_log`
 ADD COLUMN `spid` varchar(36) NOT NULL DEFAULT '' COMMENT '操作子项目' AFTER `pid`;
 
+ALTER TABLE `zh_sub_project`
+MODIFY COLUMN `rela_tender` varchar(5000) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' COMMENT '关联标段id(\',\'分隔)' AFTER `user_id`;
+
+ALTER TABLE `zh_budget`
+MODIFY COLUMN `rela_tender` varchar(5000) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' COMMENT '关联标段id(\',\'分隔)' AFTER `std_id`;
+
 ------------------------------------
 -- 表数据
 ------------------------------------
 
-UPDATE zh_project_log pl LEFT JOIN zh_tender t ON pl.tid = t.id SET pl.spid = IF(ISNULL(t.spid),'',t.spid);
+UPDATE zh_project_log pl LEFT JOIN zh_tender t ON pl.tid = t.id SET pl.spid = IF(ISNULL(t.spid),'',t.spid);