浏览代码

变更令排序

laiguoran 4 年之前
父节点
当前提交
4609712abf

+ 3 - 1
app/controller/change_controller.js

@@ -41,7 +41,9 @@ module.exports = app => {
             // const tenderList = await this.service.tender.getList();
 
             const page = ctx.page;
-            const changes = await ctx.service.change.getListByStatus(tender.id, status);
+            const sorts = ctx.query.sort ? ctx.query.sort : 0;
+            const orders = ctx.query.order ? ctx.query.order : 0;
+            const changes = await ctx.service.change.getListByStatus(tender.id, status, 1, sorts, orders);
             const total = await ctx.service.change.getCountByStatus(tender.id, status);
             if (changes !== null) {
                 let i = 0;

+ 26 - 1
app/public/js/change.js

@@ -274,7 +274,7 @@ $(document).ready(() => {
        if (status !== 0) {
            url += '/status/'+ status;
        }
-       window.location.href = url;
+       window.location.href = url + window.location.search;
     });
     // 不再显示首次使用
     $('#changeFirst').click(function () {
@@ -290,4 +290,29 @@ $(document).ready(() => {
     $('.delete-cid-modal').on('click', function () {
         $('#delete-cid').val($(this).attr('cid'));
     });
+
+    // 排序初始化
+    let orderSetting = getLocalCache('change-'+ $('#tenderId').val() +'-list-order');
+    if (!orderSetting) orderSetting = 'time|desc';
+    const orders = orderSetting.split('|');
+    $("#sort-radio input[value='"+ orders[0] +"']").prop('checked', true);
+    $("#order-radio input[value='"+ orders[1] +"']").prop('checked', true);
+    if (orders[0] === 'time') {
+        $('#bpaixu').text('排序:创建时间');
+    } else {
+        $('#bpaixu').text('排序:变更令号');
+    }
+
+    $('#sort-radio input[name="paizhi"]').click(function () {
+        const orderStr = $(this).val() + '|' + $('#order-radio input[name="paixu"]:checked').val();
+        setLocalCache('change-'+ $('#tenderId').val() +'-list-order', orderStr);
+        const link = window.location.origin + window.location.pathname + '?sort='+ $(this).val() + '&order=' + $('#order-radio input[name="paixu"]:checked').val();
+        window.location.href = link;
+    });
+    $('#order-radio input[name="paixu"]').click(function () {
+        const orderStr = $('#sort-radio input[name="paizhi"]:checked').val() + '|' + $(this).val();
+        setLocalCache('change-'+ $('#tenderId').val() +'-list-order', orderStr);
+        const link = window.location.origin + window.location.pathname + '?sort='+ $('#sort-radio input[name="paizhi"]:checked').val() + '&order=' + $(this).val();
+        window.location.href = link;
+    })
 });

+ 9 - 0
app/public/js/global.js

@@ -107,6 +107,15 @@ $(function(){
             $(this).attr('href', $(this).attr('href') + '?pageSize=' + getLocalCache('account-pageSize'));
         }
     });
+
+    $('.change_sort_link').each(function () {
+        const tender_id = $(this).attr('href').split('/')[2];
+        let orderSetting = getLocalCache('change-'+ tender_id +'-list-order');
+        if(orderSetting) {
+            const orders = orderSetting.split('|');
+            $(this).attr('href', $(this).attr('href') + '?sort=' + orders[0] + '&order=' + orders[1]);
+        }
+    });
 });
 
 function checkShowLast (count) {

+ 1 - 1
app/public/js/setting.js

@@ -196,7 +196,7 @@ $(document).ready(() => {
     // 设置页显示数目
     $('.nav-tabs .nav-link').each(function () {
         const pageSize = getLocalCache('account-pageSize') ? getLocalCache('account-pageSize') : '';
-        if (getLocalCache('account-pageSize')) {
+        if (getLocalCache('account-pageSize') && $(this).attr('href').indexOf('pageSize') === -1) {
             $(this).attr('href', $(this).attr('href') + '?pageSize=' + getLocalCache('account-pageSize'));
         }
     });

+ 17 - 7
app/service/change.js

@@ -227,18 +227,18 @@ module.exports = app => {
          * @param {int} hadlimit - 分页
          * @return {object} list - 列表
          */
-        async getListByStatus(tenderId, status = 0, hadlimit = 1) {
+        async getListByStatus(tenderId, status = 0, hadlimit = 1, sortBy = '', orderBy = '') {
             let sql = '';
             let sqlParam = '';
             if (this.ctx.tender.isTourist && status === 0) {
-                sql = 'SELECT * FROM ?? WHERE tid = ? ORDER BY in_time DESC';
+                sql = 'SELECT a.* FROM ?? WHERE a.tid = ?';
                 sqlParam = [this.tableName, tenderId];
             } else {
                 switch (status) {
                     case 0: // 包含你的所有变更令
                         sql =
                             'SELECT a.* FROM ?? AS a WHERE a.tid = ? AND ' +
-                            '(a.uid = ? OR (a.status != ? AND a.cid IN (SELECT b.cid FROM ?? AS b WHERE b.uid = ? AND a.times = b.times GROUP BY b.cid)) OR a.status = ? ) ORDER BY a.in_time DESC';
+                            '(a.uid = ? OR (a.status != ? AND a.cid IN (SELECT b.cid FROM ?? AS b WHERE b.uid = ? AND a.times = b.times GROUP BY b.cid)) OR a.status = ? )';
                         sqlParam = [
                             this.tableName,
                             tenderId,
@@ -250,14 +250,14 @@ module.exports = app => {
                         ];
                         break;
                     case 1: // 待处理(你的)
-                        sql = 'SELECT a.* FROM ?? as a WHERE cid in(SELECT b.cid FROM ?? as b WHERE tid = ? AND uid = ? AND status = ?) ORDER BY in_time DESC';
+                        sql = 'SELECT a.* FROM ?? as a WHERE cid in(SELECT b.cid FROM ?? as b WHERE tid = ? AND uid = ? AND status = ?)';
                         sqlParam = [this.tableName, this.ctx.service.changeAudit.tableName, tenderId, this.ctx.session.sessionUser.accountId, audit.flow.auditStatus.checking];
                         break;
                     case 5: // 待上报(所有的)PS:取未上报,退回,修订的变更令
                         sql =
                             'SELECT a.* FROM ?? AS a WHERE ' +
                             'a.cid IN (SELECT b.cid FROM ?? AS b WHERE b.uid = ? GROUP BY b.cid) AND ' +
-                            '(a.status = ? OR a.status = ? OR a.status = ?) AND a.tid = ? ORDER BY a.in_time DESC';
+                            '(a.status = ? OR a.status = ? OR a.status = ?) AND a.tid = ?';
                         sqlParam = [
                             this.tableName,
                             this.ctx.service.changeAudit.tableName,
@@ -273,23 +273,33 @@ module.exports = app => {
                         sql =
                             'SELECT a.* FROM ?? AS a WHERE ' +
                             'a.cid IN (SELECT b.cid FROM ?? AS b WHERE b.uid = ? AND a.times = b.times GROUP BY b.cid) AND ' +
-                            'a.status = ? AND a.tid = ? ORDER BY a.in_time DESC';
+                            'a.status = ? AND a.tid = ?';
                         sqlParam = [this.tableName, this.ctx.service.changeAudit.tableName, this.ctx.session.sessionUser.accountId, status, tenderId];
                         break;
                     case 3: // 已完成(所有的)
-                        sql = 'SELECT a.* FROM ?? AS a WHERE a.status = ? AND a.tid = ? ORDER BY a.in_time DESC';
+                        sql = 'SELECT a.* FROM ?? AS a WHERE a.status = ? AND a.tid = ?';
                         sqlParam = [this.tableName, status, tenderId];
                         break;
                     default:
                         break;
                 }
             }
+            if (sortBy && orderBy) {
+                if (sortBy === 'code') {
+                    sql += ' ORDER BY CHAR_LENGTH(a.code) ' + orderBy + ',convert(a.code using gbk) ' + orderBy;
+                } else {
+                    sql += ' ORDER BY a.in_time ' + orderBy;
+                }
+            } else {
+                sql += ' ORDER BY a.in_time DESC';
+            }
             if (hadlimit) {
                 const limit = this.app.config.pageSize;
                 const offset = limit * (this.ctx.page - 1);
                 const limitString = offset >= 0 ? offset + ',' + limit : limit;
                 sql += ' LIMIT ' + limitString;
             }
+            console.log(sql);
             const list = await this.db.query(sql, sqlParam);
             return list;
         }

+ 36 - 1
app/view/change/index.ejs

@@ -5,6 +5,41 @@
             <% include ../tender/tender_sub_mini_menu.ejs %>
             <div>
                 <div class="d-inline-block">
+                    <div class="btn-group">
+                        <button type="button" class="btn btn-sm btn-light text-primary dropdown-toggle" data-toggle="dropdown" id="bpaixu">排序:创建时间</button>
+                        <div class="dropdown-menu" aria-labelledby="bpaixu">
+                            <ul class="list-unstyled px-3 mb-0" id="sort-radio">
+                                <li class="mb-2">
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="pai1" name="paizhi" value="time" checked="">
+                                        <label class="custom-control-label" for="pai1">创建时间</label>
+                                    </div>
+                                </li>
+                                <li class="mb-2">
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="pai3" name="paizhi" value="code">
+                                        <label class="custom-control-label" for="pai3">变更令号</label>
+                                    </div>
+                                </li>
+                            </ul>
+                            <ul class="list-unstyled px-3 pt-2 mb-0 border-top" id="order-radio">
+                                <li class="mb-2">
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="pdown" name="paixu" value="desc" checked="">
+                                        <label class="custom-control-label" for="pdown">降序</label>
+                                    </div>
+                                </li>
+                                <li class="mb-2">
+                                    <div class="custom-control custom-radio">
+                                        <input type="radio" class="custom-control-input" id="pup" name="paixu" value="asc">
+                                        <label class="custom-control-label" for="pup">升序</label>
+                                    </div>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+                <div class="d-inline-block">
                     <select class="form-control form-control-sm" id="status_select">
                         <option value="0">全部</option>
                         <% for (const fs in filter.status) { %>
@@ -31,7 +66,7 @@
                 <table class="table table-bordered">
                     <thead>
                     <tr>
-                        <th width="20%">申请编号/变更令号</th><th width="30%">工程名称</th>
+                        <th width="20%" id="sort_change">申请编号/变更令号</th><th width="30%">工程名称</th>
                         <th width="10%">变更类别</th><th width="10%">变更金额</th>
                         <th width="10%">审批状态</th><th width="15%">审批进度</th><th></th>
                     </tr>

+ 1 - 1
app/view/tender/tender_sub_menu.ejs

@@ -35,7 +35,7 @@
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/change') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
+                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
             </ul>
         </div>
         <div class="nav-box">

+ 1 - 1
app/view/tender/tender_sub_mini_menu.ejs

@@ -39,7 +39,7 @@
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/change') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
+                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
             </ul>
         </div>
         <div class="nav-box">