laiguoran 3 лет назад
Родитель
Сommit
6fe3532e9d
2 измененных файлов с 186 добавлено и 0 удалено
  1. 185 0
      app/public/js/setting_datacollect_tender.js
  2. 1 0
      app/view/setting/datacollect.ejs

+ 185 - 0
app/public/js/setting_datacollect_tender.js

@@ -0,0 +1,185 @@
+'use strict';
+
+/**
+ *
+ * @author LanJianRong
+ * @date 2020/11/13
+ * @version
+ */
+const tenderTree = [];
+let parentId = 0;
+// 查询方法
+function findNode (key, value, arr) {
+    for (const a of arr) {
+        if (a[key] && a[key] === value) {
+            return a;
+        }
+    }
+}
+// 初始化TenderTree数据
+function initTenderTree () {
+    const levelCategory = category.filter(function (c) {
+        return c.level && c.level > 0;
+    });
+    function findCategoryNode(cid, value, array) {
+        for (const a of array) {
+            if (a.cid === cid && a.vid === value) {
+                return a;
+            }
+        }
+    }
+    function getCategoryNode(category, value, parent, i = null) {
+        const array = parent ?  parent.children : tenderTree;
+        let cate = findCategoryNode(category.id, value, array);
+        if (!cate) {
+            const cateValue = findNode('id', value, category.value);
+            if (!cateValue) return null;
+            cate = {
+                cid: category.id,
+                vid: value,
+                name: cateValue.value,
+                children: [],
+                level: i ? i : category.level,
+                sort_id: ++parentId,
+                sort: cateValue.sort,
+            };
+            array.push(cate);
+        }
+        return cate;
+    }
+    function loadTenderCategory (tender) {
+        let tenderCategory = null;
+        for (const [index,lc] of levelCategory.entries()) {
+            const tenderCate = findNode('cid', lc.id, tender.category);
+            if (tenderCate) {
+                tenderCategory = getCategoryNode(lc, tenderCate.value, tenderCategory);
+            } else {
+                if (index === 0 && tender.category) {
+                    for (const [i,c] of tender.category.entries()) {
+                        const cate = findNode('id', c.cid, category);
+                        tenderCategory = getCategoryNode(cate, c.value, tenderCategory, i+1);
+                    }
+                }
+                return tenderCategory;
+            }
+        }
+        return tenderCategory;
+    }
+    function calculateTender(tender) {
+        if (tender.lastStage) {
+            tender.gather_tp = ZhCalc.add(tender.lastStage.contract_tp, tender.lastStage.qc_tp);
+            tender.end_contract_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.contract_tp);
+            tender.end_qc_tp = ZhCalc.add(tender.lastStage.pre_qc_tp, tender.lastStage.qc_tp);
+            tender.end_gather_tp = ZhCalc.add(tender.end_contract_tp, tender.end_qc_tp);
+            tender.pre_gather_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.pre_qc_tp);
+            tender.yf_tp = ZhCalc.add(tender.lastStage.yf_tp);
+            tender.end_yf_tp = ZhCalc.add(tender.lastStage.pre_yf_tp, tender.yf_tp);
+        }
+    }
+    tenderTree.splice(0, tenderTree.length);
+    for (const t of tenders) {
+        calculateTender(t);
+        t.valid = true;
+        delete t.level;
+        if (t.category && levelCategory.length > 0) {
+            const parent = loadTenderCategory(t);
+            if (parent) {
+                t.level = parent.level + 1;
+                parent.children.push(t);
+            } else {
+                tenderTree.push(t);
+            }
+        } else {
+            tenderTree.push(t);
+        }
+    }
+}
+function recursiveGetTenderNodeHtml (node, arr, pid) {
+    // console.log(node, tender)
+    if (node.id === tender.id) return ''
+    if (node.user_id && parseInt(node.user_id) !== cur_uid) return ''
+    const html = [];
+    html.push('<tr pid="' + pid + '">');
+    // 名称
+    html.push('<td class="in-' + node.level + '">');
+    if (node.cid) {
+        html.push('<i class="fa fa-folder-o"></i> ', node.name);
+    } else {
+        html.push('<span class="text-muted mr-2">');
+        html.push(arr.indexOf(node) === arr.length - 1 ? '└' : '├');
+        html.push('</span>');
+        //html.push('<a href="/tender/' + node.id + '">', node[c.field], '</a>');
+        html.push('<a href="javascript: void(0)" id="' + node.id + '">', node.name, '</a>');
+    }
+    html.push('</td>');
+    // 创建人
+    html.push('<td>');
+    if (!node.cid) {
+        // html.push('<input data-tid="'+ node.id +'" type="radio"> '+ (node.copy_id === tender.copy_id ? 'checked' : '') + '/>');
+        html.push(`<input data-tid=${node.id} type="radio" ${node.id === tender.copy_id ? 'checked' : ''}>`);
+    }
+    html.push('</td>');
+    html.push('</tr>');
+    if (node.children) {
+        for (const c of node.children) {
+            html.push(recursiveGetTenderNodeHtml(c, node.children, node.sort_id));
+        }
+    }
+    return html.join('');
+}
+// 根据TenderTree数据获取Html代码
+function getTenderTreeHtml () {
+    if (tenderTree.length > 0) {
+        const html = [];
+        html.push('<table class="table table-hover table-bordered">');
+        html.push('<thead>', '<tr>');
+        html.push('<th>名称</th>');
+        html.push('<th width="40">选择</th>');
+        html.push('</tr>', '</thead>');
+        parentId = 0;
+        for (const t of tenderTree) {
+            html.push(recursiveGetTenderNodeHtml(t, tenderTree, ''));
+        }
+        html.push('</table>');
+        return html.join('');
+    } else {
+        return EmptyTenderHtml.join('');
+    }
+}
+$(document).ready(function () {
+    initTenderTree();
+    const html = getTenderTreeHtml();
+    $('#copyModalContent').html(html);
+    // $('#copyBtn').click(() => {
+    //     const html = getTenderTreeHtml();
+    //     $('#copyModalContent').html(html);
+    //     $('#bd-set-8').modal('show');
+    // });
+    //
+    // $('#copyModalContent').on('click', 'input[type="radio"]', function() {
+    //     $('#copyModalContent tbody').children().each(function () {
+    //         $(this).find('input:radio').prop("checked", false);
+    //     })
+    //     $(this).prop("checked", true);
+    // });
+    //
+    // $('#setting-custom').on('click', '.custom-checkbox', function () {
+    //     const isChecked = $(this).find('input').prop("checked");
+    //     $(this).find('input').prop("checked", !isChecked);
+    // })
+    // $('#copy_comfirm_btn').click(function() {
+    //     const type = []
+    //     $('#setting-custom').find('input:checked').each(function() {
+    //         type.push($(this).data('type'))
+    //     })
+    //     if (!type.length) {
+    //         return toastr.error('请勾选需要拷贝的属性')
+    //     }
+    //     const id = $('#copyModalContent').find('input:checked').data('tid');
+    //     if (id) {
+    //         postData(window.location.pathname + '/copy-setting', { id, type }, function() {
+    //             window.location.reload()
+    //         })
+    //     }
+    // });
+})

+ 1 - 0
app/view/setting/datacollect.ejs

@@ -35,6 +35,7 @@
 </div>
 <script src="/public/js/ztree/jquery.ztree.core.js"></script>
 <script src="/public/js/ztree/jquery.ztree.excheck.js"></script>
+<script src="/public/js/setting_datacollect_tender.js"></script>
 <script>
     const category = JSON.parse(unescape('<%- escape(JSON.stringify(categoryData)) %>'));
     console.log(category);