Enford 5 anos atrás
pai
commit
2dffc13493
64 arquivos alterados com 12884 adições e 0 exclusões
  1. 511 0
      src/main/webapp/webpage/modules/web/jquery.media.js
  2. 30 0
      src/main/webapp/webpage/modules/web/media.jsp
  3. 35 0
      src/main/webapp/webpage/modules/weixin/departmentList.jsp
  4. 280 0
      src/main/webapp/webpage/modules/weixin/home.jsp
  5. 36 0
      src/main/webapp/webpage/modules/weixin/meigui.jsp
  6. 174 0
      src/main/webapp/webpage/modules/weixin/user/contactForm.jsp
  7. 35 0
      src/main/webapp/webpage/modules/weixin/user/contactList.jsp
  8. 294 0
      src/main/webapp/webpage/modules/work/report/workReportForm.jsp
  9. 190 0
      src/main/webapp/webpage/modules/work/report/workReportForm2.jsp
  10. 29 0
      src/main/webapp/webpage/modules/work/report/workReportFormChoose.jsp
  11. 442 0
      src/main/webapp/webpage/modules/work/report/workReportFormDay.jsp
  12. 463 0
      src/main/webapp/webpage/modules/work/report/workReportFormMonth.jsp
  13. 459 0
      src/main/webapp/webpage/modules/work/report/workReportFormWeek.jsp
  14. 143 0
      src/main/webapp/webpage/modules/work/report/workReportListAll.jsp
  15. 160 0
      src/main/webapp/webpage/modules/work/report/workReportListGet.jsp
  16. 203 0
      src/main/webapp/webpage/modules/work/report/workReportListOut.jsp
  17. 207 0
      src/main/webapp/webpage/modules/work/report/workReportViewDay.jsp
  18. 224 0
      src/main/webapp/webpage/modules/work/report/workReportViewMonth.jsp
  19. 224 0
      src/main/webapp/webpage/modules/work/report/workReportViewWeek.jsp
  20. 80 0
      src/main/webapp/webpage/modules/work/review/workReportReviewForm.jsp
  21. 163 0
      src/main/webapp/webpage/modules/work/review/workReportReviewList.jsp
  22. 149 0
      src/main/webapp/webpage/modules/work/review/workReportReviewListBy.jsp
  23. 95 0
      src/main/webapp/webpage/modules/workactivity/activityForm.jsp
  24. 154 0
      src/main/webapp/webpage/modules/workactivity/activityList.jsp
  25. 171 0
      src/main/webapp/webpage/modules/workactivitymenu/officeList.jsp
  26. 65 0
      src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuCopy.jsp
  27. 530 0
      src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuForm.jsp
  28. 178 0
      src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuList.jsp
  29. 366 0
      src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuView.jsp
  30. 217 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampAudit.jsp
  31. 205 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampForm.jsp
  32. 364 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampList.jsp
  33. 203 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampModifyApply.jsp
  34. 15 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampTask.jsp
  35. 146 0
      src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampView.jsp
  36. 320 0
      src/main/webapp/webpage/modules/workaftermath/workAftermathForm.jsp
  37. 166 0
      src/main/webapp/webpage/modules/workaftermath/workAftermathList.jsp
  38. 160 0
      src/main/webapp/webpage/modules/workaftermath/workAftermathmgList.jsp
  39. 180 0
      src/main/webapp/webpage/modules/workaftermath/workBidingProjectRdList.jsp
  40. 236 0
      src/main/webapp/webpage/modules/workaftermath/workRecordForm.jsp
  41. 243 0
      src/main/webapp/webpage/modules/workaftermath/workRecordView.jsp
  42. 77 0
      src/main/webapp/webpage/modules/workapprovalcopy/approvalCopyForm.jsp
  43. 137 0
      src/main/webapp/webpage/modules/workapprovalcopy/approvalCopyList.jsp
  44. 95 0
      src/main/webapp/webpage/modules/workappshow/workappshowForm.jsp
  45. 154 0
      src/main/webapp/webpage/modules/workappshow/workappshowList.jsp
  46. 147 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceAudit.jsp
  47. 187 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceForm.jsp
  48. 127 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceHistoricList.jsp
  49. 244 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceList.jsp
  50. 239 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceMgList.jsp
  51. 15 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceTask.jsp
  52. 205 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceTodoList.jsp
  53. 183 0
      src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceView.jsp
  54. 319 0
      src/main/webapp/webpage/modules/workaskcheckprice/workFullManageFormDetail.jsp
  55. 84 0
      src/main/webapp/webpage/modules/workattendance/baiduApi.jsp
  56. 134 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceAudit.jsp
  57. 186 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceCountForm.jsp
  58. 139 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceCountList.jsp
  59. 198 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceInfoEdit.jsp
  60. 198 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceInfoForm.jsp
  61. 120 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceInfoView.jsp
  62. 737 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceRuleForm.jsp
  63. 149 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceRuleList.jsp
  64. 265 0
      src/main/webapp/webpage/modules/workattendance/workAttendanceRuleView.jsp

+ 511 - 0
src/main/webapp/webpage/modules/web/jquery.media.js

@@ -0,0 +1,511 @@
+/*
+ * jQuery Media Plugin for converting elements into rich media content.
+ *
+ * Examples and documentation at: http://malsup.com/jquery/media/
+ * Copyright (c) 2007-2010 M. Alsup
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * @author: M. Alsup
+ * @version: 0.99 (05-JUN-2013)
+ * @requires jQuery v1.1.2 or later
+ * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $
+ *
+ * Supported Media Players:
+ *  - Flash
+ *  - Quicktime
+ *  - Real Player
+ *  - Silverlight
+ *  - Windows Media Player
+ *  - iframe
+ *
+ * Supported Media Formats:
+ *   Any types supported by the above players, such as:
+ *   Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp
+ *   Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma
+ *   Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml
+ *
+ * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!
+ * Thanks to Dan Rossi for numerous bug reports and code bits!
+ * Thanks to Skye Giordano for several great suggestions!
+ * Thanks to Richard Connamacher for excellent improvements to the non-IE behavior!
+ */
+/*global SWFObject alert Sys */
+/*jshint forin:false */
+;(function($) {
+    "use strict";
+
+    var mode = document.documentMode || 0;
+    var msie = /MSIE/.test(navigator.userAgent);
+    var lameIE = msie && (/MSIE (6|7|8)\.0/.test(navigator.userAgent) || mode < 9);
+
+    /**
+     * Chainable method for converting elements into rich media.
+     *
+     * @param options
+     * @param callback fn invoked for each matched element before conversion
+     * @param callback fn invoked for each matched element after conversion
+     */
+    $.fn.media = function(options, f1, f2) {
+        if (options == 'undo') {
+            return this.each(function() {
+                var $this = $(this);
+                var html = $this.data('media.origHTML');
+                if (html)
+                    $this.replaceWith(html);
+            });
+        }
+
+        return this.each(function() {
+            if (typeof options == 'function') {
+                f2 = f1;
+                f1 = options;
+                options = {};
+            }
+            var o = getSettings(this, options);
+            // pre-conversion callback, passes original element and fully populated options
+            if (typeof f1 == 'function') f1(this, o);
+
+            var r = getTypesRegExp();
+            var m = r.exec(o.src.toLowerCase()) || [''];
+            var fn;
+
+            if (o.type)
+                m[0] = o.type;
+            else
+                m.shift();
+
+            for (var i=0; i < m.length; i++) {
+                fn = m[i].toLowerCase();
+                if (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers
+                if (!$.fn.media[fn])
+                    continue;  // unrecognized media type
+                // normalize autoplay settings
+                var player = $.fn.media[fn+'_player'];
+                if (!o.params) o.params = {};
+                if (player) {
+                    var num = player.autoplayAttr == 'autostart';
+                    o.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;
+                }
+                var $div = $.fn.media[fn](this, o);
+
+                $div.css('backgroundColor', o.bgColor).width(o.width);
+
+                if (o.canUndo) {
+                    var $temp = $('<div></div>').append(this);
+                    $div.data('media.origHTML', $temp.html()); // store original markup
+                }
+
+                // post-conversion callback, passes original element, new div element and fully populated options
+                if (typeof f2 == 'function') f2(this, $div[0], o, player.name);
+                break;
+            }
+        });
+    };
+
+    /**
+     * Non-chainable method for adding or changing file format / player mapping
+     * @name mapFormat
+     * @param String format File format extension (ie: mov, wav, mp3)
+     * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe
+     */
+    $.fn.media.mapFormat = function(format, player) {
+        if (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid
+        format = format.toLowerCase();
+        if (isDigit(format[0])) format = 'fn' + format;
+        $.fn.media[format] = $.fn.media[player];
+        $.fn.media[format+'_player'] = $.fn.media.defaults.players[player];
+    };
+
+// global defautls; override as needed
+    $.fn.media.defaults = {
+        standards:  true,       // use object tags only (no embeds for non-IE browsers)
+        canUndo:    true,       // tells plugin to store the original markup so it can be reverted via: $(sel).mediaUndo()
+        width:      400,
+        height:     400,
+        autoplay:   0,          // normalized cross-player setting
+        bgColor:    '#ffffff',  // background color
+        params:     { wmode: 'transparent'},    // added to object element as param elements; added to embed element as attrs
+        attrs:      {},         // added to object and embed elements as attrs
+        flvKeyName: 'file',     // key used for object src param (thanks to Andrea Ercolino)
+        flashvars:  {},         // added to flash content as flashvars param/attr
+        flashVersion:   '7',    // required flash version
+        expressInstaller: null, // src for express installer
+
+        // default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)
+        flvPlayer:   'mediaplayer.swf',
+        mp3Player:   'mediaplayer.swf',
+
+        // @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx
+        silverlight: {
+            inplaceInstallPrompt: 'true', // display in-place install prompt?
+            isWindowless:         'true', // windowless mode (false for wrapping markup)
+            framerate:            '24',   // maximum framerate
+            version:              '0.9',  // Silverlight version
+            onError:              null,   // onError callback
+            onLoad:               null,   // onLoad callback
+            initParams:           null,   // object init params
+            userContext:          null    // callback arg passed to the load callback
+        }
+    };
+
+// Media Players; think twice before overriding
+    $.fn.media.defaults.players = {
+        flash: {
+            name:        'flash',
+            title:       'Flash',
+            types:       'flv,mp3,swf',
+            mimetype:    'application/x-shockwave-flash',
+            pluginspage: 'http://www.adobe.com/go/getflashplayer',
+            ieAttrs: {
+                classid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
+                type:     'application/x-oleobject',
+                codebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion
+            }
+        },
+        quicktime: {
+            name:        'quicktime',
+            title:       'QuickTime',
+            mimetype:    'video/quicktime',
+            pluginspage: 'http://www.apple.com/quicktime/download/',
+            types:       'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',
+            ieAttrs: {
+                classid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+                codebase: 'http://www.apple.com/qtactivex/qtplugin.cab'
+            }
+        },
+        realplayer: {
+            name:         'real',
+            title:        'RealPlayer',
+            types:        'ra,ram,rm,rpm,rv,smi,smil',
+            mimetype:     'audio/x-pn-realaudio-plugin',
+            pluginspage:  'http://www.real.com/player/',
+            autoplayAttr: 'autostart',
+            ieAttrs: {
+                classid: 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'
+            }
+        },
+        winmedia: {
+            name:         'winmedia',
+            title:        'Windows Media',
+            types:        'asx,asf,avi,wma,wmv',
+            mimetype:     isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',
+            pluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/',
+            autoplayAttr: 'autostart',
+            oUrl:         'url',
+            ieAttrs: {
+                classid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',
+                type:     'application/x-oleobject'
+            }
+        },
+        // special cases
+        img: {
+            name:  'img',
+            title: 'Image',
+            types: 'gif,png,jpg'
+        },
+        iframe: {
+            name:  'iframe',
+            types: 'html,pdf'
+        },
+        silverlight: {
+            name:  'silverlight',
+            types: 'xaml'
+        }
+    };
+
+//
+//  everything below here is private
+//
+
+
+// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)
+// (hat tip to Mark Ross for this script)
+    function isFirefoxWMPPluginInstalled() {
+        var plugs = navigator.plugins || [];
+        for (var i = 0; i < plugs.length; i++) {
+            var plugin = plugs[i];
+            if (plugin['filename'] == 'np-mswmp.dll')
+                return true;
+        }
+        return false;
+    }
+
+    var counter = 1;
+
+    for (var player in $.fn.media.defaults.players) {
+        var types = $.fn.media.defaults.players[player].types;
+        $.each(types.split(','), function(i,o) {
+            if (isDigit(o[0])) o = 'fn' + o;
+            $.fn.media[o] = $.fn.media[player] = getGenerator(player);
+            $.fn.media[o+'_player'] = $.fn.media.defaults.players[player];
+        });
+    }
+
+    function getTypesRegExp() {
+        var types = '';
+        for (var player in $.fn.media.defaults.players) {
+            if (types.length) types += ',';
+            types += $.fn.media.defaults.players[player].types;
+        }
+        return new RegExp('\\.(' + types.replace(/,/ig,'|') + ')\\b');
+    }
+
+    function getGenerator(player) {
+        return function(el, options) {
+            return generate(el, options, player);
+        };
+    }
+
+    function isDigit(c) {
+        return '0123456789'.indexOf(c) > -1;
+    }
+
+// flatten all possible options: global defaults, meta, option obj
+    function getSettings(el, options) {
+        options = options || {};
+        var a, n;
+        var $el = $(el);
+        var cls = el.className || '';
+        // support metadata plugin (v1.0 and v2.0)
+        var meta = $.metadata ? $el.metadata() : $.meta ? $el.data() : {};
+        meta = meta || {};
+        var w = meta.width  || parseInt(((cls.match(/\bw:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bwidth:(\d+)/)||[])[1]||0),10);
+        var h = meta.height || parseInt(((cls.match(/\bh:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bheight:(\d+)/)||[])[1]||0),10);
+
+        if (w) meta.width = w;
+        if (h) meta.height = h;
+        if (cls) meta.cls = cls;
+
+        // crank html5 style data attributes
+        var dataName = 'data-';
+        for (var i=0; i < el.attributes.length; i++) {
+            a = el.attributes[i], n = $.trim(a.name);
+            var index = n.indexOf(dataName);
+            if (index === 0) {
+                n = n.substring(dataName.length);
+                meta[n] = a.value;
+            }
+        }
+
+        a = $.fn.media.defaults;
+        var b = options;
+        var c = meta;
+
+        var p = { params: { bgColor: options.bgColor || $.fn.media.defaults.bgColor } };
+        var opts = $.extend({}, a, b, c);
+        $.each(['attrs','params','flashvars','silverlight'], function(i,o) {
+            opts[o] = $.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});
+        });
+
+        if (typeof opts.caption == 'undefined') opts.caption = $el.text();
+
+        // make sure we have a source!
+        opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
+        return opts;
+    }
+
+//
+//  Flash Player
+//
+
+// generate flash using SWFObject library if possible
+    $.fn.media.swf = function(el, opts) {
+        var f, p;
+        if (!window.SWFObject && !window.swfobject) {
+            // roll our own
+            if (opts.flashvars) {
+                var a = [];
+                for (f in opts.flashvars)
+                    a.push(f + '=' + opts.flashvars[f]);
+                if (!opts.params) opts.params = {};
+                opts.params.flashvars = a.join('&');
+            }
+            return generate(el, opts, 'flash');
+        }
+
+        var id = el.id ? (' id="'+el.id+'"') : '';
+        var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+        var $div = $('<div' + id + cls + '>');
+
+        // swfobject v2+
+        if (window.swfobject) {
+            $(el).after($div).appendTo($div);
+            if (!el.id) el.id = 'movie_player_' + counter++;
+
+            // replace el with swfobject content
+            window.swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion,
+                opts.expressInstaller, opts.flashvars, opts.params, opts.attrs);
+        }
+        // swfobject < v2
+        else {
+            $(el).after($div).remove();
+            var so = new SWFObject(opts.src, 'movie_player_' + counter++, opts.width, opts.height, opts.flashVersion, opts.bgColor);
+            if (opts.expressInstaller) so.useExpressInstall(opts.expressInstaller);
+
+            for (p in opts.params)
+                if (p != 'bgColor') so.addParam(p, opts.params[p]);
+            for (f in opts.flashvars)
+                so.addVariable(f, opts.flashvars[f]);
+            so.write($div[0]);
+        }
+
+        if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
+        return $div;
+    };
+
+// map flv and mp3 files to the swf player by default
+    $.fn.media.flv = $.fn.media.mp3 = function(el, opts) {
+        var src = opts.src;
+        var player = /\.mp3\b/i.test(src) ? opts.mp3Player : opts.flvPlayer;
+        var key = opts.flvKeyName;
+        src = encodeURIComponent(src);
+        opts.src = player;
+        opts.src = opts.src + '?'+key+'=' + (src);
+        var srcObj = {};
+        srcObj[key] = src;
+        opts.flashvars = $.extend({}, srcObj, opts.flashvars );
+        return $.fn.media.swf(el, opts);
+    };
+
+//
+//  Silverlight
+//
+    $.fn.media.xaml = function(el, opts) {
+        if (!window.Sys || !window.Sys.Silverlight) {
+            if ($.fn.media.xaml.warning) return;
+            $.fn.media.xaml.warning = 1;
+            alert('You must include the Silverlight.js script.');
+            return;
+        }
+
+        var props = {
+            width: opts.width,
+            height: opts.height,
+            background: opts.bgColor,
+            inplaceInstallPrompt: opts.silverlight.inplaceInstallPrompt,
+            isWindowless: opts.silverlight.isWindowless,
+            framerate: opts.silverlight.framerate,
+            version: opts.silverlight.version
+        };
+        var events = {
+            onError: opts.silverlight.onError,
+            onLoad: opts.silverlight.onLoad
+        };
+
+        var id1 = el.id ? (' id="'+el.id+'"') : '';
+        var id2 = opts.id || 'AG' + counter++;
+        // convert element to div
+        var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+        var $div = $('<div' + id1 + cls + '>');
+        $(el).after($div).remove();
+
+        Sys.Silverlight.createObjectEx({
+            source: opts.src,
+            initParams: opts.silverlight.initParams,
+            userContext: opts.silverlight.userContext,
+            id: id2,
+            parentElement: $div[0],
+            properties: props,
+            events: events
+        });
+
+        if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
+        return $div;
+    };
+
+//
+// generate object/embed markup
+//
+    function generate(el, opts, player) {
+        var $el = $(el);
+        var o = $.fn.media.defaults.players[player];
+        var a, key, v;
+
+        if (player == 'iframe') {
+            o = $('<iframe' + ' width="' + opts.width + '" height="' + opts.height + '" >');
+            o.attr('src', opts.src);
+            o.css('backgroundColor', o.bgColor);
+        }
+        else if (player == 'img') {
+            o = $('<img>');
+            o.attr('src', opts.src);
+            if (opts.width)
+                o.attr('width', opts.width);
+            if (opts.height)
+                o.attr('height', opts.height);
+            o.css('backgroundColor', o.bgColor);
+        }
+        else if (lameIE) {
+            a = ['<object width="' + opts.width + '" height="' + opts.height + '" '];
+            for (key in opts.attrs)
+                a.push(key + '="'+opts.attrs[key]+'" ');
+            for (key in o.ieAttrs || {}) {
+                v = o.ieAttrs[key];
+                if (key == 'codebase' && window.location.protocol == 'https:')
+                    v = v.replace('http','https');
+                a.push(key + '="'+v+'" ');
+            }
+            a.push('></ob'+'ject'+'>');
+            var p = ['<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">'];
+            for (key in opts.params)
+                p.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
+            o = document.createElement(a.join(''));
+            for (var i=0; i < p.length; i++)
+                o.appendChild(document.createElement(p[i]));
+        }
+        else if (opts.standards) {
+            // Rewritten to be standards compliant by Richard Connamacher
+            a = ['<object type="' + o.mimetype +'" width="' + opts.width + '" height="' + opts.height +'"'];
+            if (opts.src) a.push(' data="' + opts.src + '" ');
+            if (msie) {
+                for (key in o.ieAttrs || {}) {
+                    v = o.ieAttrs[key];
+                    if (key == 'codebase' && window.location.protocol == 'https:')
+                        v = v.replace('http','https');
+                    a.push(key + '="'+v+'" ');
+                }
+            }
+            a.push('>');
+            a.push('<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">');
+            for (key in opts.params) {
+                if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
+                    continue;
+                a.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
+            }
+            // Alternate HTML
+            a.push('<div><p><strong>'+o.title+' Required</strong></p><p>'+o.title+' is required to view this media. <a href="'+o.pluginspage+'">Download Here</a>.</p></div>');
+            a.push('</ob'+'ject'+'>');
+        }
+        else {
+            a = ['<embed width="' + opts.width + '" height="' + opts.height + '" style="display:block"'];
+            if (opts.src) a.push(' src="' + opts.src + '" ');
+            for (key in opts.attrs)
+                a.push(key + '="'+opts.attrs[key]+'" ');
+            for (key in o.eAttrs || {})
+                a.push(key + '="'+o.eAttrs[key]+'" ');
+            for (key in opts.params) {
+                if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
+                    continue;
+                a.push(key + '="'+opts.params[key]+'" ');
+            }
+            a.push('></em'+'bed'+'>');
+        }
+        // convert element to div
+        var id = el.id ? (' id="'+el.id+'"') : '';
+        var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+        var $div = $('<div' + id + cls + '>');
+        $el.after($div).remove();
+        if (lameIE || player == 'iframe' || player == 'img')
+            $div.append(o);
+        else
+            $div.html(a.join(''));
+
+        if (opts.caption)
+            $('<div>').appendTo($div).html(opts.caption);
+        return $div;
+    }
+
+
+})(jQuery);

+ 30 - 0
src/main/webapp/webpage/modules/web/media.jsp

@@ -0,0 +1,30 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String contextPath = request.getContextPath();
+    String id = UserUtils.getUser().getId();
+%>
+<html>
+<head>
+    <title>Title</title>
+    <meta name="decorator" content="default"/>
+    <script src="<%=contextPath%>/webpage/modules/web/jquery.media.js"></script>
+    <script type="text/javascript">
+        $(function(){
+            if("${str}" == "1"){
+                parent.layer.msg("${str}",{icon:2});
+            }else{
+                if("${message}"){
+
+                }else{
+                    location.href="<%=contextPath%>/webpage/modules/web/<%=id%>/pre.pdf";
+                }
+            }
+        });
+    </script>
+</head>
+<body>
+<sys:message content="${message}"/>
+</body>
+</html>

+ 35 - 0
src/main/webapp/webpage/modules/weixin/departmentList.jsp

@@ -0,0 +1,35 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<head>
+    <title>部门列表</title>
+    <meta name="decorator" content="default"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
+    <meta content="yes" name="apple-mobile-web-app-capable">
+    <meta content="black" name="apple-mobile-web-app-status-bar-style">
+    <meta content="telephone=no" name="format-detection">
+    <link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/1.1.2/weui-for-work.min.css"/>
+    <link rel="stylesheet" href="../example.css"/>
+</head>
+<div class="page">
+    <div class="page__hd">
+    </div>
+    <div class="page__bd">
+        <%--<div class="weui-cells__title">联系人劣币</div>--%>
+        <div class="weui-cells">
+            <c:forEach var="department" items="${departments}" varStatus="status">
+            <a class="weui-cell weui-cell_access" href="javascript:;">
+                <div class="weui-cell__bd">
+                    <p>${department.name}</p>
+                </div>
+                <div class="weui-cell__ft">
+                </div>
+            </a>
+            </c:forEach>
+        </div>
+    </div>
+    <%--<div class="page__ft">--%>
+        <%--<a href="javascript:home()"><img src="./images/icon_footer_link.png" /></a>--%>
+    <%--</div>--%>
+</div>

+ 280 - 0
src/main/webapp/webpage/modules/weixin/home.jsp

@@ -0,0 +1,280 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>全过程系统</title>
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
+    <meta content="yes" name="apple-mobile-web-app-capable">
+    <meta content="black" name="apple-mobile-web-app-status-bar-style">
+    <meta content="telephone=no" name="format-detection">
+    <link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/1.1.2/weui-for-work.min.css"/>
+    <%--<link rel="stylesheet" href="/static/weixin/style/weui.min.css">--%>
+    <link rel="stylesheet" href="${ctx}/static/weixin/example/example.css"/>
+</head>
+<style>
+</style>
+<body>
+<div class="container" id="container"></div>
+<div class="page">
+    <div class="page__hd">
+    </div>
+    <div class="page__bd page__bd_spacing">
+        <ul>
+            <li>
+                <div class="weui-flex js_category">
+                    <p class="weui-flex__item">全过程系统</p>
+                    <img src="/static/weixin/example/images/icon_nav_form.png" alt="">
+                </div>
+                <div class="page__category js_categoryInner">
+                    <div class="weui-cells page__category-content">
+                        <a class="weui-cell weui-cell_access js_item" data-id="button" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Button</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="input" href="${ctx}/wxMessage/messageController/departmentList">
+                            <div class="weui-cell__bd">
+                                <p>部门列表</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="list" href="${ctx}/wxMessage/messageController/contactList">
+                            <div class="weui-cell__bd">
+                                <p>联系人列表</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="slider" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Slider</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="uploader" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Uploader</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="weui-flex js_category">
+                    <p class="weui-flex__item">基础组件</p>
+                    <img src="/static/weixin/example/images/icon_nav_layout.png" alt="">
+                </div>
+                <div class="page__category js_categoryInner">
+                    <div class="weui-cells page__category-content">
+                        <a class="weui-cell weui-cell_access js_item" data-id="article" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Article</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="badge" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Badge</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="flex" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Flex</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="footer" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Footer</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="gallery" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Gallery</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="grid" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Grid</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="icons" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Icons</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="loadmore" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Loadmore</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="panel" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Panel</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="preview" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Preview</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="progress" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Progress</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="weui-flex js_category">
+                    <p class="weui-flex__item">操作反馈</p>
+                    <img src="/static/weixin/example/images/icon_nav_feedback.png" alt="">
+                </div>
+                <div class="page__category js_categoryInner">
+                    <div class="weui-cells page__category-content">
+                        <a class="weui-cell weui-cell_access js_item" data-id="actionsheet" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Actionsheet</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="dialog" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Dialog</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="msg" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Msg</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="picker" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Picker</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="toast" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Toast</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="weui-flex js_category">
+                    <p class="weui-flex__item">导航相关</p>
+                    <img src="/static/weixin/example/images/icon_nav_nav.png" alt="">
+                </div>
+                <div class="page__category js_categoryInner">
+                    <div class="weui-cells page__category-content">
+                        <a class="weui-cell weui-cell_access js_item" data-id="navbar" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Navbar</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                        <a class="weui-cell weui-cell_access js_item" data-id="tabbar" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Tabbar</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="weui-flex js_category">
+                    <p class="weui-flex__item">搜索相关</p>
+                    <img src="${ctx}/static/weixin/example/images/icon_nav_search.png" alt="">
+                </div>
+                <div class="page__category js_categoryInner">
+                    <div class="weui-cells page__category-content">
+                        <a class="weui-cell weui-cell_access js_item" data-id="searchbar" href="javascript:;">
+                            <div class="weui-cell__bd">
+                                <p>Search Bar</p>
+                            </div>
+                            <div class="weui-cell__ft"></div>
+                        </a>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="weui-flex js_item" data-id="layers">
+                    <p class="weui-flex__item">层级规范</p>
+                    <img src="${ctx}/static/weixin/example/images/icon_nav_z-index.png" alt="">
+                </div>
+            </li>
+        </ul>
+    </div>
+    <div class="page__ft">
+        <a href="javascript:home()"><img src="${ctx}/static/weixin/example/images/icon_footer.png" /></a>
+    </div>
+</div>
+</body>
+<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">W</script>
+<script src="${ctx}/static/weixin/example/zepto.min.js"></script>
+<script type="text/javascript" src="${ctx}/static/weixin/style/jweixin-1.0.0.js"></script>
+<script src="${ctx}/static/weixin/style/weui.js"></script>
+<script src="https://res.wx.qq.com/open/libs/weuijs/1.0.0/weui.min.js"></script>
+<script src="${ctx}/static/weixin/example/example.js"></script>
+<script type="text/javascript">
+    $(function(){
+        var winH = $(window).height();
+        var categorySpace = 10;
+
+        $('.js_item').on('click', function(){
+            var id = $(this).data('id');
+            window.pageManager.go(id);
+        });
+        $('.js_category').on('click', function(){
+            var $this = $(this),
+                $inner = $this.next('.js_categoryInner'),
+                $page = $this.parents('.page'),
+                $parent = $(this).parent('li');
+            var innerH = $inner.data('height');
+            bear = $page;
+
+            if(!innerH){
+                $inner.css('height', 'auto');
+                innerH = $inner.height();
+                $inner.removeAttr('style');
+                $inner.data('height', innerH);
+            }
+
+            if($parent.hasClass('js_show')){
+                $parent.removeClass('js_show');
+            }else{
+                $parent.siblings().removeClass('js_show');
+
+                $parent.addClass('js_show');
+                if(this.offsetTop + this.offsetHeight + innerH > $page.scrollTop() + winH){
+                    var scrollTop = this.offsetTop + this.offsetHeight + innerH - winH + categorySpace;
+
+                    if(scrollTop > this.offsetTop){
+                        scrollTop = this.offsetTop - categorySpace;
+                    }
+
+                    $page.scrollTop(scrollTop);
+                }
+            }
+        });
+    });
+</script>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 36 - 0
src/main/webapp/webpage/modules/weixin/meigui.jsp


+ 174 - 0
src/main/webapp/webpage/modules/weixin/user/contactForm.jsp

@@ -0,0 +1,174 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<head>
+    <title>通讯录查看</title>
+    <meta name="decorator" content="default"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
+    <meta content="yes" name="apple-mobile-web-app-capable">
+    <meta content="black" name="apple-mobile-web-app-status-bar-style">
+    <meta content="telephone=no" name="format-detection">
+    <link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/1.1.2/weui-for-work.min.css"/>
+    <link rel="stylesheet" href="${ctx}/static/weixin/example/example.css"/>
+</head>
+<c:if test="${not empty workStaffBasicInfo}">
+<div class="page">
+    <div class="page__bd">
+        <div class="weui-cells__title">基本信息</div>
+        <div class="weui-cells weui-cells_form">
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">姓名</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.name}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">工号</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.no}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">性别</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${fns:getDictLabel(workStaffBasicInfo.gender,'sex','')}" type="text" placeholder=""/>
+                    <input name="gender" value="${workStaffBasicInfo.gender}"  hidden="hidden" readonly="readonly"  />
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">出生日期</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="<fmt:formatDate value="${workStaffBasicInfo.birthday}" pattern="yyyy-MM-dd"/>" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">年龄</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.age}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">民族</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${fns:getDictLabel(workStaffBasicInfo.nation,'nation_type','')}" type="text" placeholder=""/>
+                    <input name="nation" value="${workStaffBasicInfo.nation}" hidden="hidden" readonly="readonly" />
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">婚姻状态</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.marriage}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">政治面貌</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.politics}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">是否退伍军人</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${fns:getDictLabel(workStaffBasicInfo.exSoldier,'yes_no','')}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">籍贯</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" readonly="readonly" value="${workStaffBasicInfo.address}" type="text" placeholder=""/>
+                </div>
+            </div>
+        </div>
+        <div class="weui-cells__title">联系方式</div>
+        <div class="weui-cells weui-cells_form">
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">手机号</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="${workStaffBasicInfo.mobile}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">电子邮箱</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="${workStaffBasicInfo.email}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">座机</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="${workStaffBasicInfo.phone}" type="text" placeholder=""/>
+                </div>
+            </div>
+        </div>
+        <div class="weui-cells__title">入职信息</div>
+        <div class="weui-cells weui-cells_form">
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">职级</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="${workStaffBasicInfo.jobGrade.name}" type="text" placeholder=""/>
+                    <input value="${workStaffBasicInfo.jobGrade.id}"  hidden="hidden" readonly="readonly"  class=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">员工状态</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="${workStaffBasicInfo.status}" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">入职日期</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="<fmt:formatDate value="${workStaffBasicInfo.entryDate}" pattern="yyyy-MM-dd"/>" type="text" placeholder=""/>
+                </div>
+            </div>
+            <div class="weui-cell">
+                <div class="weui-cell__hd"><label class="weui-label">参加工作日期</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" value="<fmt:formatDate value="${workStaffBasicInfo.workDate}" pattern="yyyy-MM"/>" type="text" placeholder=""/>
+                </div>
+            </div>
+        </div>
+        <div class="weui-cells__title">所属信息</div>
+        <div class="weui-cells">
+            <div class="weui-cell weui-cell_select weui-cell_select-after">
+                <div class="weui-cell__hd">
+                    <label for="" class="weui-label">归属公司</label>
+                </div>
+                <div class="weui-cell__bd">
+                    <select class="weui-select" name="select1">
+                        <option value="1">${workStaffBasicInfo.company.name}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="weui-cell weui-cell_select weui-cell_select-after">
+                <div class="weui-cell__hd">
+                    <label for="" class="weui-label">归属部门</label>
+                </div>
+                <div class="weui-cell__bd">
+                    <select class="weui-select" name="select2">
+                        <option value="1">${workStaffBasicInfo.office.name}</option>
+                    </select>
+                    <input name="office.id" value="${workStaffBasicInfo.office.id}" hidden="hidden" readonly="readonly" />
+                </div>
+            </div>
+            <div class="weui-cell weui-cell_select weui-cell_select-after">
+                <div class="weui-cell__hd">
+                    <label for="" class="weui-label">岗位</label>
+                </div>
+                <div class="weui-cell__bd">
+                    <select class="weui-select" name="select3">
+                        <option value="1">${workStaffBasicInfo.branchOffice.name}</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="weui-cells">
+
+        </div>
+        <div class="weui-btn-area">
+            <a class="weui-btn weui-btn_primary" href="javascript:" id="showTooltips">确定</a>
+        </div>
+    </div>
+</div>
+</c:if>

+ 35 - 0
src/main/webapp/webpage/modules/weixin/user/contactList.jsp

@@ -0,0 +1,35 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<head>
+    <title>通讯录</title>
+    <meta name="decorator" content="default"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
+    <meta content="yes" name="apple-mobile-web-app-capable">
+    <meta content="black" name="apple-mobile-web-app-status-bar-style">
+    <meta content="telephone=no" name="format-detection">
+    <link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/1.1.2/weui-for-work.min.css"/>
+    <link rel="stylesheet" href="${ctx}/static/weixin/example/example.css"/>
+</head>
+<div class="page">
+    <div class="page__hd">
+    </div>
+    <div class="page__bd">
+        <%--<div class="weui-cells__title">联系人劣币</div>--%>
+        <div class="weui-cells">
+            <c:forEach var="u" items="${users}" varStatus="status">
+            <a class="weui-cell weui-cell_access" href="${ctx}/wxMessage/messageController/contactForm?&id=${u.id}">
+                <div class="weui-cell__bd">
+                    <p>${u.name}</p>
+                </div>
+                <div class="weui-cell__ft">
+                </div>
+            </a>
+            </c:forEach>
+        </div>
+    </div>
+    <%--<div class="page__ft">--%>
+        <%--<a href="javascript:home()"><img src="./images/icon_footer_link.png" /></a>--%>
+    <%--</div>--%>
+</div>

+ 294 - 0
src/main/webapp/webpage/modules/work/report/workReportForm.jsp

@@ -0,0 +1,294 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+					laydate({
+			            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate({
+			            elem: '#finishDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+
+            //只做查看时,禁用掉以下标签
+            $('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+		});
+		function addRow(list, idx, tpl, row){
+			$(list).append(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+		}
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+	</script>
+</head>
+<body class="hideScroll">
+	<form:form id="inputForm" modelAttribute="workReport" action="${ctx}/work/report/workReport/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">类型:</label></td>
+					<td class="width-35">
+
+						<c:choose>
+							<c:when test="${!disabled}">
+								<form:select path="type" class="form-control " readonly="true">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('work_report_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</c:when>
+							<c:otherwise>
+								${fns:getDictLabel(workReport.type, 'work_report_type', '')}
+							</c:otherwise>
+						</c:choose>
+					</td>	
+				</tr>
+				<tr>
+				     <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>状态:</label></td>
+			         <td class="width-35" >
+						 <c:choose>
+							 <c:when test="${!disabled}">
+								 <form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks required"/>
+							 </c:when>
+							 <c:otherwise>
+								 ${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}
+							 </c:otherwise>
+						 </c:choose>
+					 </td>
+				</tr>
+				<tr>
+				<td class="width-15 active"><label class="pull-right">本次工作内容:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<form:textarea  path="thisContent" htmlEscape="false" row="4"   class="form-control "/>
+							</c:when>
+							<c:otherwise>
+								${workReport.thisContent,}
+							</c:otherwise>
+						</c:choose>
+					</td>		
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">本次工作内容附件:</label></td>
+					<td class="width-35">
+							<img src="${workReport.thisFiles}">
+					</td>
+				</tr>
+				<tr>
+				<td class="width-15 active"><label class="pull-right">下次工作计划:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<form:textarea   path="nextContent" htmlEscape="false"  row="4"  class="form-control "/>
+							</c:when>
+							<c:otherwise>
+								${workReport.nextContent}
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">下次工作附件:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<form:input path="nextFiles" htmlEscape="false"    class="form-control "/>
+							</c:when>
+							<c:otherwise>
+								${workReport.nextFiles}
+							</c:otherwise>
+						</c:choose>
+					</td>
+					
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<form:textarea   path="remarks" htmlEscape="false" row="4"   class="form-control "/>
+							</c:when>
+							<c:otherwise>
+								${workReport.remarks}
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+																																																								
+				<tr>
+					<td class="width-15 active"><label class="pull-right">开始时间:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+									   value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							</c:when>
+							<c:otherwise>
+								<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">结束时间:</label></td>
+					<td class="width-35">
+						<c:choose>
+							<c:when test="${!disabled}">
+								<input id="finishDate" name="finishDate" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+									   value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							</c:when>
+							<c:otherwise>
+								<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+				<c:if test="${workReport.status ne '1'}">
+		      	 <tr> 
+			         <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>接收人:</label></td>
+			         <td  class="width-35" >
+						 <c:choose>
+							 <c:when test="${!disabled}">
+								 <sys:treeselect id="workReportRecordUser" name="workReportRecordIdsUser" value="${workReport.workReportRecordIdsUser}" labelName="workReportRecordNamesUser" labelValue="${workReport.workReportRecordNamesUser}"
+												 title="用户" url="/sys/office/treeData?type=3" cssClass="form-control required" notAllowSelectParent="true" checked="true"/>
+							 </c:when>
+							 <c:otherwise>
+								 ${workReport.workReportRecordNamesUser}
+							 </c:otherwise>
+						 </c:choose>
+					 </td>
+
+		      		</tr>
+		        <tr> 
+			         <td  class="width-15 active">	<label class="pull-right"><font color="red">*</font>接收群:</label></td>
+				     <td  class="width-35" >
+						 <c:choose>
+							 <c:when test="${!disabled}">
+								 <sys:treeselect id="workReportRecordGroup" name="workReportRecordIdsGroup" value="${workReport.workReportRecordIdsGroup}" labelName="workReportRecordNamesGroup" labelValue="${workReport.workReportRecordNamesGroup}"
+												 title="群组" url="/iim/layGroup/treeData" cssClass="form-control required" notAllowSelectParent="true" checked="true"/>
+							 </c:when>
+							 <c:otherwise>
+								 ${workReport.workReportRecordNamesGroup}
+							 </c:otherwise>
+						 </c:choose>
+					 </td>
+		      	</tr>
+			</c:if>
+				<c:if test="${workReport.status eq '1'}">
+					  <tr>
+				         <td  class="width-15 active">	<label class="pull-right">接收人:</label></td>
+				         <td class="width-35" colspan="3"><table id="contentTableUser" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+								<thead>
+									<tr>
+										<th>接收人</th>
+										<th>接收部门</th>
+										<th>阅读状态</th>
+										<th>阅读时间</th>
+									</tr>
+								</thead>
+								<tbody>
+								<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecord">
+									<tr>
+										<td>
+											${workReportRecord.user.name}
+										</td>
+										<td>
+											${workReportRecord.user.office.name}
+										</td>
+										<td>
+											${fns:getDictLabel(workReportRecord.readFlag, 'oa_notify_read', '')}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportRecord.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+									</tr>
+								</c:forEach>
+								</tbody>
+							</table>
+							</td>
+				      </tr>
+				      
+				       <tr>
+				         <td  class="width-15 active">	<label class="pull-right">接收群:</label></td>
+				         <td class="width-35" colspan="3"><table id="contentTableGroup" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+								<thead>
+									<tr>
+										<th>接收群</th>
+									</tr>
+								</thead>
+								<tbody>
+								<c:forEach items="${workReport.workReportRecordListGroup}" var="workReportRecord">
+									<tr>
+										<td>
+											${workReportRecord.group.groupname}
+										</td>
+									</tr>
+								</c:forEach>
+								</tbody>
+							</table>
+							</td>
+				      </tr>
+		</c:if>
+		 	</tbody>
+		</table>
+		
+	</form:form>
+</body>
+</html>

+ 190 - 0
src/main/webapp/webpage/modules/work/report/workReportForm2.jsp

@@ -0,0 +1,190 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+					laydate({
+			            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate({
+			            elem: '#finishDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+            //只做查看时,禁用掉以下标签
+            $('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+		});
+		function addRow(list, idx, tpl, row){
+			$(list).append(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+		}
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+	</script>
+</head>
+<body class="hideScroll">
+	<form:form id="inputForm" modelAttribute="workReport" action="${ctx}/work/report/workReport/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">类型:</label></td>
+					<td class="width-35">
+						<form:select path="type" class="form-control ">
+							<form:option value="" label=""/>
+							<form:options items="${fns:getDictList('work_report_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</td>
+					<td class="width-15 active"><label class="pull-right">本次工作内容:</label></td>
+					<td class="width-35">
+						<form:textarea path="thisContent" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">本次工作内容附件:</label></td>
+					<td class="width-35">
+						<form:input path="thisFiles" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">下次工作计划内容:</label></td>
+					<td class="width-35">
+						<form:textarea path="nextContent" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">下次工作附件:</label></td>
+					<td class="width-35">
+						<form:input path="nextFiles" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">状态:</label></td>
+					<td class="width-35">
+						<form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">开始时间:</label></td>
+					<td class="width-35">
+						<input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+							value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">结束时间:</label></td>
+					<td class="width-35">
+						<input id="finishDate" name="finishDate" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+							value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+		
+		<div class="tabs-container">
+            <ul class="nav nav-tabs">
+				<li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true">工作日志发送记录:</a>
+                </li>
+            </ul>
+            <div class="tab-content">
+				<div id="tab-1" class="tab-pane active">
+			<a class="btn btn-white btn-sm" onclick="addRow('#workReportRecordList', workReportRecordRowIdx, workReportRecordTpl);workReportRecordRowIdx = workReportRecordRowIdx + 1;" title="新增"><i class="fa fa-plus"></i> 新增</a>
+			<table id="contentTable" class="table table-striped table-bordered table-condensed">
+				<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>接收人</th>
+						<th>接收群</th>
+						<th width="10">&nbsp;</th>
+					</tr>
+				</thead>
+				<tbody id="workReportRecordList">
+				</tbody>
+			</table>
+			<script type="text/template" id="workReportRecordTpl">//<!--
+				<tr id="workReportRecordList{{idx}}">
+					<td class="hide">
+						<input id="workReportRecordList{{idx}}_id" name="workReportRecordList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+						<input id="workReportRecordList{{idx}}_delFlag" name="workReportRecordList[{{idx}}].delFlag" type="hidden" value="0"/>
+					</td>
+					
+					<td  class="max-width-250">
+						<sys:treeselect id="workReportRecordList{{idx}}_user" name="workReportRecordList[{{idx}}].user.id" value="{{row.user.id}}" labelName="workReportRecordList{{idx}}.user.name" labelValue="{{row.user.name}}"
+							title="用户" url="/sys/office/treeData?type=3" cssClass="form-control  " allowClear="true" notAllowSelectParent="true"/>
+					</td>
+					
+					
+					<td  class="max-width-250">
+						<sys:treeselect id="workReportRecordList{{idx}}_groupId" name="workReportRecordList[{{idx}}].groupId" value="{{row.groupId}}" labelName="workReportRecordList{{idx}}." labelValue="{{row.}}"
+							title="用户" url="/sys/office/treeData?type=3" cssClass="form-control  " allowClear="true" notAllowSelectParent="true"/>
+					</td>
+					
+					<td class="text-center" width="10">
+						{{#delBtn}}<span class="close" onclick="delRow(this, '#workReportRecordList{{idx}}')" title="删除">&times;</span>{{/delBtn}}
+					</td>
+				</tr>//-->
+			</script>
+			<script type="text/javascript">
+				var workReportRecordRowIdx = 0, workReportRecordTpl = $("#workReportRecordTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+				$(document).ready(function() {
+					var data = ${fns:toJson(workReport.workReportRecordList)};
+					for (var i=0; i<data.length; i++){
+						addRow('#workReportRecordList', workReportRecordRowIdx, workReportRecordTpl, data[i]);
+						workReportRecordRowIdx = workReportRecordRowIdx + 1;
+					}
+				});
+			</script>
+			</div>
+		</div>
+		</div>
+	</form:form>
+</body>
+</html>

+ 29 - 0
src/main/webapp/webpage/modules/work/report/workReportFormChoose.jsp

@@ -0,0 +1,29 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+	function day(){
+		openDialog("日报"+'${title}',"${ctx}/work/report/workReport/form?type=1","${width==null?'80%':width}", "${height==null?'80%':height}","${target}");
+	}
+	function week(){
+		openDialog("周报"+'${title}',"${ctx}/work/report/workReport/form?type=2","${width==null?'80%':width}", "${height==null?'80%':height}","${target}");
+	}
+	function month(){
+		openDialog("月报"+'${title}',"${ctx}/work/report/workReport/form?type=3","${width==null?'80%':width}", "${height==null?'80%':height}","${target}");
+	}
+
+</script>
+</head>
+<body class="hideScroll">
+	<div style="height: 100px;  text-align: center; line-height: 100px">
+    <button class="btn btn-white btn-sm" data-toggle="tooltip" data-placement="left" onclick="day()" title="添加日报"><i class="fa "></i> ${label==null?'日报':label}</button>
+	<br>
+	<button class="btn btn-white btn-sm" data-toggle="tooltip" data-placement="left" onclick="week()" title="添加周报"><i class="fa "></i> ${label==null?'周报':label}</button>
+	<br>
+	<button class="btn btn-white btn-sm" data-toggle="tooltip" data-placement="left" onclick="month()" title="添加月报"><i class="fa "></i> ${label==null?'月报':label}</button>
+	</div>
+</body>
+</html>

+ 442 - 0
src/main/webapp/webpage/modules/work/report/workReportFormDay.jsp

@@ -0,0 +1,442 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>添加日报</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		#status-error{
+			left:-20px;
+			top:30px;
+		}
+		#thisContent-error{
+			left:0;
+			top:120px;
+		}
+	</style>
+	<%--<style type="text/css">--%>
+		<%--img {width:50px; height:50px;}--%>
+	<%--</style>--%>
+	<script type="text/javascript">
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "77";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workContractInfo/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);
+        }}
+        //上传图片
+        // function this_upload_image_button(index){
+        //     var length = $("#this_upload_image_div :file").length;
+        //     var this_item_id = 'this_upload_image_'+index;
+        //     var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');
+        //     if(length==6 && this_item_id==last_item_id){
+        //         top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});
+        //         return;
+        //     }
+        //     $("#this_upload_file_"+index).click();
+        // }
+        // function this_upload_show_image(index){
+        //     var obj =$("#this_upload_file_"+index)[0].files[0];
+        //     var fileType = obj.type;
+        //     var url ;
+        //     if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){
+        //         url = window.URL.createObjectURL(obj);
+        //     }else {
+        //         //需要置空
+        //         var file = $("#this_upload_file_"+index);
+        //         file.after(file.clone().val(""));
+        //         file.remove();
+        //         top.layer.alert('请上传*.png,*.bmp,*.jpg/jpeg格式的图片',{icon:0,title:'系统提示'});
+        //         return false ;
+        //     }
+        //     $("#this_upload_image_"+index).attr("src",url);
+        //     var length = $("#this_upload_image_div :file").length;
+        //     var this_item_id = 'this_upload_image_'+index;
+        //     var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');
+        //     if( this_item_id==last_item_id &&  length < 6 ){
+        //         this_upload_image_append(index);
+        //         this_add_x(index);
+        //     }
+        // }
+        <%--function this_upload_image_append(index){--%>
+            <%--var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";--%>
+            <%--var img = '<img  id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';--%>
+            <%--var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';--%>
+            <%--var div2 = "</div>";--%>
+
+            <%--$("#this_upload_image_div").append(div1+img+input+div2);--%>
+        <%--}--%>
+        <%--function this_close_img(index) {--%>
+            <%--$("#this_upload_div_"+index).remove();--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--if(length == 0){--%>
+                <%--this_add_div();--%>
+            <%--}else if(length == 1){--%>
+                <%--var x = $("#this_upload_image_div").find("span").text();--%>
+                <%--if("x" != x){--%>
+                    <%--this_add_div();--%>
+                <%--}--%>
+            <%--}--%>
+        <%--}--%>
+        <%--function this_add_x(index) {--%>
+            <%--var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';--%>
+            <%--$("#this_upload_image_div").find("img:eq(-2)").before(span);--%>
+        <%--}--%>
+        <%--function this_add_div() {--%>
+            <%--var this_upload_div_1 =--%>
+                <%--'<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+--%>
+                <%--'<img  id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>'+--%>
+                <%--'<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>'+--%>
+                <%--'</div>';--%>
+            <%--$("#this_upload_image_div").html("").append(this_upload_div_1);--%>
+        <%--}--%>
+
+
+        <%--//删除附件--%>
+        <%--function delFile(id,attaId,attachmentUrl,obj) {--%>
+            <%--var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});--%>
+            <%--var tr = $(obj).parent().parent();--%>
+            <%--$.ajax({--%>
+                <%--type:'POST',--%>
+                <%--dataType:'json',--%>
+                <%--url:'${ctx}/work/report/workReport/delFile',--%>
+                <%--data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},--%>
+                <%--cache:false,--%>
+                <%--success: function() {--%>
+                    <%--//先修改序号,再删除--%>
+                    <%--$(tr).nextAll().each(function (i,n) {--%>
+                        <%--var num = $(n).find("td:first").text().trim();--%>
+                        <%--$(n).find("td:first").text(parseInt(num)-1);--%>
+                    <%--});--%>
+                    <%--tr.remove();--%>
+                    <%--parent.layer.msg("删除成功!!!",{icon:6});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--},--%>
+                <%--error:function () {--%>
+                    <%--parent.layer.msg("删除失败!!!",{icon:3});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--}--%>
+            <%--});--%>
+        <%--}--%>
+	</script>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+            $("#attachment_btn").click(function () {
+                var length = $("#listAttachment tbody").find("tr").length ;
+                if(length==5 ){
+                    top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});
+                    return;
+                }
+
+                $("#attachment_file").click();
+            });
+
+            $('#thisContent').blur(function(){
+                var conval = $(this).val();
+
+			})
+		});
+		// function addRow(list, idx, tpl, row){
+		// 	$(list).append(Mustache.render(tpl, {
+		// 		idx: idx, delBtn: true, row: row
+		// 	}));
+		// 	$(list+idx).find("select").each(function(){
+		// 		$(this).val($(this).attr("data-value"));
+		// 	});
+		// 	$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+		// 		var ss = $(this).attr("data-value").split(',');
+		// 		for (var i=0; i<ss.length; i++){
+		// 			if($(this).val() == ss[i]){
+		// 				$(this).attr("checked","checked");
+		// 			}
+		// 		}
+		// 	});
+		// }
+		// function delRow(obj, prefix){
+		// 	var id = $(prefix+"_id");
+		// 	var delFlag = $(prefix+"_delFlag");
+		// 	if (id.val() == ""){
+		// 		$(obj).parent().parent().remove();
+		// 	}else if(delFlag.val() == "0"){
+		// 		delFlag.val("1");
+		// 		$(obj).html("&divide;").attr("title", "撤回删除");
+		// 		$(obj).parent().parent().addClass("error");
+		// 	}else if(delFlag.val() == "1"){
+		// 		delFlag.val("0");
+		// 		$(obj).html("&times;").attr("title", "删除");
+		// 		$(obj).parent().parent().removeClass("error");
+		// 	}
+		// }
+
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<c:if test="${forUpdate != 'forUpdate'}">
+			<div class="tabs-container">
+				<div class="layui-tab" id="tabDiv">
+					<ul class="layui-tab-title" >
+						<li class="active"><a href="${ctx}/work/report/workReport/form?type=1">添加日报</a></li>
+						<li><a href="${ctx}/work/report/workReport/form?type=2">添加周报</a></li>
+						<li><a href="${ctx}/work/report/workReport/form?type=3">添加月报</a></li>
+					</ul>
+				</div>
+			</div>
+		</c:if>
+	<form:form id="inputForm" modelAttribute="workReport" enctype="multipart/form-data" action="${ctx}/work/report/workReport/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="1">
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first">
+			<div class="form-group-label"><h2>基础信息</h2></div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>类型:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('1','work_report_type' ,'' )}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>状态:</label>
+				<div class="layui-input-block">
+					<div class="input-group">
+						<form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks required"/>
+					</div>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label"><span class="require-item">*</span>工作内容:</label>
+				<div class="layui-input-block">
+					<form:textarea path="thisContent" htmlEscape="false" rows="6"  maxlength="2000"  class="form-control required"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<form:textarea  path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12">
+				<label class="layui-form-label"><span class="require-item">*</span>接收人:</label>
+				<div class="layui-input-block with-icon">
+					<div class="input-group">
+						<sys:treeselect id="workReportRecordUser" name="workReportRecordIdsUser" value="${workReport.workReportRecordIdsUser}" labelName="workReportRecordNamesUser" labelValue="${workReport.workReportRecordNamesUser}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" notAllowSelectParent="true" checked="true"/>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>相关附件</h2></div>
+			<div class="layui-item nav-btns">
+				<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+			</div>
+			<div id="addFile_attachment" style="display: none" class="upload-progress">
+				<span id="fileName_attachment" ></span>
+				<b><span id="baifenbi_attachment" ></span></b>
+				<div class="progress">
+					<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+					</div>
+				</div>
+			</div>
+            <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+			<span id="attachment_title"></span>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="listAttachment" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+							<%-- <th>序号</th>--%>
+						<th>文件</th>
+						<th>上传人</th>
+						<th>上传时间</th>
+						<th width="180px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_attachment">
+					<c:if test="${workReport.status == '0'}">
+						<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+					</c:if>
+					</tbody>
+				</table>
+			</div>
+		</div>
+<%--
+		        <tr>
+			         <td  class="width-15 active">	<label class="pull-right">接收群:</label></td>
+				     <td  class="width-35" >
+						 <sys:treeselect id="easemobGroupId" name="easemobGroupId" value="${workReport.easemobGroupId}" labelName="easemobGroupName" labelValue="${workReport.easemobGroupName}"
+							title="群组" url="/iim/easemobGroup/treeData" cssClass="form-control " notAllowSelectParent="true" />
+					 </td>
+		      	</tr>
+--%>
+			<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>接收人信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="contentTableUser" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>接收人</th>
+							<th>接收部门</th>
+							<th>阅读状态</th>
+							<th>阅读时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+							<tr>
+								<td>
+										${workReportRecordU.user.name}
+								</td>
+								<td>
+										${workReportRecordU.user.office.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			</c:if>
+			</form:form>
+
+
+	<!-- ==已发布,评论与回复== -->
+	<c:if test="${workReport.status eq '1'}">
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>评论信息</h2></div>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="commentTable" class="table table-bordered table-condensed details">
+					<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+					</thead>
+					<tbody>
+					<c:choose>
+						<c:when test="${empty workReportReviewList}">
+							<tr>
+								<td colspan="6" align="center">尚无评论|回复</td>
+							</tr>
+						</c:when>
+						<c:when test="${!empty workReportReviewList}">
+							<tr>
+								<th  class="sort-column createBy.name">评论者|回复者</th>
+								<th  class="sort-column type">类型</th>
+								<th  class="sort-column content">内容</th>
+								<th  class="sort-column createDate">创建时间</th>
+								<th  class="sort-column updateDate">更新时间</th>
+								<th  class="sort-column remarks">备注信息</th>
+							</tr>
+							<c:forEach items="${workReportReviewList}" var="workReportReview">
+							<tr>
+								<td>
+										${workReportReview.createBy.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+								</td>
+								<td>
+										${workReportReview.content}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+								<td>
+										${workReportReview.remarks}
+								</td>
+							</tr>
+							</c:forEach>
+						</c:when>
+					</c:choose>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</c:if>
+	</div>
+</div>
+
+</body>
+</html>

+ 463 - 0
src/main/webapp/webpage/modules/work/report/workReportFormMonth.jsp

@@ -0,0 +1,463 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<style type="text/css">--%>
+		<%--img {width:50px; height:50px;}--%>
+	<%--</style>--%>
+	<style>
+		#status-error{
+			left:-20px;
+			top:30px;
+		}
+		#thisContent-error{
+			left:0;
+			top:120px;
+		}
+	</style>
+	<script type="text/javascript">
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "77";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/workContractInfo/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile" + divId).show();
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, 0);
+            }
+        }
+        //上传图片
+        <%--function this_upload_image_button(index){--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--var this_item_id = 'this_upload_image_'+index;--%>
+            <%--var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');--%>
+            <%--if(length==6 && this_item_id==last_item_id){--%>
+                <%--top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});--%>
+                <%--return;--%>
+            <%--}--%>
+            <%--$("#this_upload_file_"+index).click();--%>
+        <%--}--%>
+        <%--function this_upload_show_image(index){--%>
+            <%--var obj =$("#this_upload_file_"+index)[0].files[0];--%>
+            <%--var fileType = obj.type;--%>
+            <%--var url ;--%>
+            <%--if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){--%>
+                <%--url = window.URL.createObjectURL(obj);--%>
+            <%--}else {--%>
+                <%--//需要置空--%>
+                <%--var file = $("#this_upload_file_"+index);--%>
+                <%--file.after(file.clone().val(""));--%>
+                <%--file.remove();--%>
+                <%--top.layer.alert('请上传*.png,*.bmp,*.jpg/jpeg格式的图片',{icon:0,title:'系统提示'});--%>
+                <%--return false ;--%>
+            <%--}--%>
+            <%--$("#this_upload_image_"+index).attr("src",url);--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--var this_item_id = 'this_upload_image_'+index;--%>
+            <%--var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');--%>
+            <%--if( this_item_id==last_item_id &&  length < 6 ){--%>
+                <%--this_upload_image_append(index);--%>
+                <%--this_add_x(index);--%>
+            <%--}--%>
+        <%--}--%>
+        <%--function this_upload_image_append(index){--%>
+            <%--var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";--%>
+            <%--var img = '<img  id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';--%>
+            <%--var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';--%>
+            <%--var div2 = "</div>";--%>
+
+            <%--$("#this_upload_image_div").append(div1+img+input+div2);--%>
+        <%--}--%>
+        <%--function this_close_img(index) {--%>
+            <%--$("#this_upload_div_"+index).remove();--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--if(length == 0){--%>
+                <%--this_add_div();--%>
+            <%--}else if(length == 1){--%>
+                <%--var x = $("#this_upload_image_div").find("span").text();--%>
+                <%--if("x" != x){--%>
+                    <%--this_add_div();--%>
+                <%--}--%>
+            <%--}--%>
+        <%--}--%>
+        <%--function this_add_x(index) {--%>
+            <%--var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';--%>
+            <%--$("#this_upload_image_div").find("img:eq(-2)").before(span);--%>
+        <%--}--%>
+        <%--function this_add_div() {--%>
+            <%--var this_upload_div_1 =--%>
+                <%--'<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+--%>
+                <%--'<img  id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>'+--%>
+                <%--'<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>'+--%>
+                <%--'</div>';--%>
+            <%--$("#this_upload_image_div").html("").append(this_upload_div_1);--%>
+        <%--}--%>
+
+        <%--//删除附件--%>
+        <%--function delFile(id,attaId,attachmentUrl,obj) {--%>
+            <%--var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});--%>
+            <%--var tr = $(obj).parent().parent();--%>
+            <%--$.ajax({--%>
+                <%--type:'POST',--%>
+                <%--dataType:'json',--%>
+                <%--url:'${ctx}/work/report/workReport/delFile',--%>
+                <%--data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},--%>
+                <%--cache:false,--%>
+                <%--success: function() {--%>
+                    <%--//先修改序号,再删除--%>
+                    <%--$(tr).nextAll().each(function (i,n) {--%>
+                        <%--var num = $(n).find("td:first").text().trim();--%>
+                        <%--$(n).find("td:first").text(parseInt(num)-1);--%>
+                    <%--});--%>
+                    <%--tr.remove();--%>
+                    <%--parent.layer.msg("删除成功!!!",{icon:6});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--},--%>
+                <%--error:function () {--%>
+                    <%--parent.layer.msg("删除失败!!!",{icon:3});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--}--%>
+            <%--});--%>
+        <%--}--%>
+	</script>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+            $("#attachment_btn").click(function () {
+                var length = $("#listAttachment tbody").find("tr").length ;
+                if(length==5 ){
+                    top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});
+                    return;
+                }
+
+                $("#attachment_file").click();
+
+            });
+			
+					laydate.render({
+			            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' ,//响应事件。如果没有传入event,则按照默认的click
+						type: 'date'
+			        });
+					laydate.render({
+			            elem: '#finishDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                        type: 'date'
+			        });
+
+		});
+		// function addRow(list, idx, tpl, row){
+		// 	$(list).append(Mustache.render(tpl, {
+		// 		idx: idx, delBtn: true, row: row
+		// 	}));
+		// 	$(list+idx).find("select").each(function(){
+		// 		$(this).val($(this).attr("data-value"));
+		// 	});
+		// 	$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+		// 		var ss = $(this).attr("data-value").split(',');
+		// 		for (var i=0; i<ss.length; i++){
+		// 			if($(this).val() == ss[i]){
+		// 				$(this).attr("checked","checked");
+		// 			}
+		// 		}
+		// 	});
+		// }
+		// function delRow(obj, prefix){
+		// 	var id = $(prefix+"_id");
+		// 	var delFlag = $(prefix+"_delFlag");
+		// 	if (id.val() == ""){
+		// 		$(obj).parent().parent().remove();
+		// 	}else if(delFlag.val() == "0"){
+		// 		delFlag.val("1");
+		// 		$(obj).html("&divide;").attr("title", "撤回删除");
+		// 		$(obj).parent().parent().addClass("error");
+		// 	}else if(delFlag.val() == "1"){
+		// 		delFlag.val("0");
+		// 		$(obj).html("&times;").attr("title", "删除");
+		// 		$(obj).parent().parent().removeClass("error");
+		// 	}
+		// }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<c:if test="${forUpdate != 'forUpdate'}">
+		<div class="tabs-container">
+			<div class="layui-tab" id="tabDiv">
+				<ul class="layui-tab-title" >
+					<li><a href="${ctx}/work/report/workReport/form?type=1">添加日报</a></li>
+					<li><a href="${ctx}/work/report/workReport/form?type=2">添加周报</a></li>
+					<li class="active"><a href="${ctx}/work/report/workReport/form?type=3">添加月报</a></li>
+				</ul>
+			</div>
+		</div>
+		</c:if>
+
+	<form:form id="inputForm" modelAttribute="workReport" enctype="multipart/form-data" action="${ctx}/work/report/workReport/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="3">
+		<sys:message content="${message}"/>
+
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('3','work_report_type' ,'' )}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>状态:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks required"/>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+					<label class="layui-form-label"><span class="require-item">*</span>本月工作内容:</label>
+					<div class="layui-input-block">
+						<form:textarea path="thisContent" htmlEscape="false" rows="6"  maxlength="2000"  class="form-control required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+					<label class="layui-form-label">下月工作计划:</label>
+					<div class="layui-input-block">
+						<form:textarea  path="nextContent" htmlEscape="false" rows="6" maxlength="2000" class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开始时间:</label>
+					<div class="layui-input-block">
+						<input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">结束时间:</label>
+					<div class="layui-input-block">
+						<input id="finishDate" name="finishDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">备注:</label>
+					<div class="layui-input-block">
+						<form:textarea  path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+					</div>
+				</div>
+				<c:if test="${workReport.status ne '1'}">
+					<div class="layui-item layui-col-sm12">
+						<label class="layui-form-label"><span class="require-item">*</span>接收人:</label>
+						<div class="layui-input-block with-icon">
+							<div class="input-group">
+								<sys:treeselect id="workReportRecordUser" name="workReportRecordIdsUser" value="${workReport.workReportRecordIdsUser}" labelName="workReportRecordNamesUser" labelValue="${workReport.workReportRecordNamesUser}"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" notAllowSelectParent="true" checked="true"/>
+							</div>
+						</div>
+					</div>
+				</c:if>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>相关附件</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="listAttachment" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="180px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:if test="${workReport.status == '0'}">
+							<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+								<tr>
+										<%-- <td>${status.index + 1}</td>--%>
+									<c:choose>
+										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+											<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+										</c:when>
+										<c:otherwise>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+													<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>
+									<td>${workClientAttachment.createBy.name}</td>
+									<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+									<td class="op-td">
+										<div class="op-btn-box" >
+											<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+												<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+											</c:if>
+										</div>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>接收人信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="contentTableUser" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>接收人</th>
+							<th>接收部门</th>
+							<th>阅读状态</th>
+							<th>阅读时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+							<tr>
+								<td>
+										${workReportRecordU.user.name}
+								</td>
+								<td>
+										${workReportRecordU.user.office.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			</c:if>
+			</form:form>
+
+		<!-- ==已发布,评论与回复== -->
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>评论信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="commentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:choose>
+							<c:when test="${empty workReportReviewList}">
+								<tr>
+									<td colspan="6" align="center">尚无评论|回复</td>
+								</tr>
+							</c:when>
+							<c:when test="${!empty workReportReviewList}">
+								<tr>
+									<th  class="sort-column createBy.name">评论者|回复者</th>
+									<th  class="sort-column type">类型</th>
+									<th  class="sort-column content">内容</th>
+									<th  class="sort-column createDate">创建时间</th>
+									<th  class="sort-column updateDate">更新时间</th>
+									<th  class="sort-column remarks">备注信息</th>
+								</tr>
+								<c:forEach items="${workReportReviewList}" var="workReportReview">
+									<tr>
+										<td>
+												${workReportReview.createBy.name}
+										</td>
+										<td>
+												${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+										</td>
+										<td>
+												${workReportReview.content}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+												${workReportReview.remarks}
+										</td>
+									</tr>
+								</c:forEach>
+							</c:when>
+						</c:choose>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</div>
+</div>
+</body>
+</html>

+ 459 - 0
src/main/webapp/webpage/modules/work/report/workReportFormWeek.jsp

@@ -0,0 +1,459 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>添加周报</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		#status-error{
+			left:-20px;
+			top:30px;
+		}
+		#thisContent-error{
+			left:0;
+			top:120px;
+		}
+	</style>
+	<script type="text/javascript">
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "77";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/workContractInfo/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile" + divId).show();
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, 0);
+            }
+        }
+        //上传图片
+        <%--function this_upload_image_button(index){--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--var this_item_id = 'this_upload_image_'+index;--%>
+            <%--var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');--%>
+            <%--if(length==6 && this_item_id==last_item_id){--%>
+                <%--top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});--%>
+                <%--return;--%>
+            <%--}--%>
+            <%--$("#this_upload_file_"+index).click();--%>
+        <%--}--%>
+        <%--function this_upload_show_image(index){--%>
+            <%--var obj =$("#this_upload_file_"+index)[0].files[0];--%>
+            <%--var fileType = obj.type;--%>
+            <%--var url ;--%>
+            <%--if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){--%>
+                <%--url = window.URL.createObjectURL(obj);--%>
+            <%--}else {--%>
+                <%--//需要置空--%>
+                <%--var file = $("#this_upload_file_"+index);--%>
+                <%--file.after(file.clone().val(""));--%>
+                <%--file.remove();--%>
+                <%--top.layer.alert('请上传*.png,*.bmp,*.jpg/jpeg格式的图片',{icon:0,title:'系统提示'});--%>
+                <%--return false ;--%>
+            <%--}--%>
+            <%--$("#this_upload_image_"+index).attr("src",url);--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--var this_item_id = 'this_upload_image_'+index;--%>
+            <%--var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');--%>
+            <%--if( this_item_id==last_item_id &&  length < 6 ){--%>
+                <%--this_upload_image_append(index);--%>
+                <%--this_add_x(index);--%>
+            <%--}--%>
+        <%--}--%>
+        <%--function this_upload_image_append(index){--%>
+            <%--var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";--%>
+            <%--var img = '<img  id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px"  onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';--%>
+            <%--var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';--%>
+            <%--var div2 = "</div>";--%>
+
+            <%--$("#this_upload_image_div").append(div1+img+input+div2);--%>
+        <%--}--%>
+        <%--function this_close_img(index) {--%>
+            <%--$("#this_upload_div_"+index).remove();--%>
+            <%--var length = $("#this_upload_image_div :file").length;--%>
+            <%--if(length == 0){--%>
+                <%--this_add_div();--%>
+            <%--}else if(length == 1){--%>
+                <%--var x = $("#this_upload_image_div").find("span").text();--%>
+                <%--if("x" != x){--%>
+                    <%--this_add_div();--%>
+                <%--}--%>
+            <%--}--%>
+        <%--}--%>
+        <%--function this_add_x(index) {--%>
+            <%--var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';--%>
+            <%--$("#this_upload_image_div").find("img:eq(-2)").before(span);--%>
+        <%--}--%>
+        <%--function this_add_div() {--%>
+            <%--var this_upload_div_1 =--%>
+                <%--'<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+--%>
+                <%--'<img  id="this_upload_image_1" class="upload_ico" style="cursor:pointer;"  src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png"  onclick="this_upload_image_button(1)"/>'+--%>
+                <%--'<input id="this_upload_file_1" type="file" style="display:none"  name="this_upload_files"  onchange="this_upload_show_image(1)" /><br>'+--%>
+                <%--'</div>';--%>
+            <%--$("#this_upload_image_div").html("").append(this_upload_div_1);--%>
+        <%--}--%>
+
+        <%--//删除附件--%>
+        <%--function delFile(id,attaId,attachmentUrl,obj) {--%>
+            <%--var loadingMessage = parent.layer.load(0, {shade: [0.1,'#393d49']});--%>
+            <%--var tr = $(obj).parent().parent();--%>
+            <%--$.ajax({--%>
+                <%--type:'POST',--%>
+                <%--dataType:'json',--%>
+                <%--url:'${ctx}/work/report/workReport/delFile',--%>
+                <%--data:{"id":id,"attaId":attaId,"attachmentUrl":attachmentUrl},--%>
+                <%--cache:false,--%>
+                <%--success: function() {--%>
+                    <%--//先修改序号,再删除--%>
+                    <%--$(tr).nextAll().each(function (i,n) {--%>
+                        <%--var num = $(n).find("td:first").text().trim();--%>
+                        <%--$(n).find("td:first").text(parseInt(num)-1);--%>
+                    <%--});--%>
+                    <%--tr.remove();--%>
+                    <%--parent.layer.msg("删除成功!!!",{icon:6});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--},--%>
+                <%--error:function () {--%>
+                    <%--parent.layer.msg("删除失败!!!",{icon:3});--%>
+                    <%--parent.layer.close(loadingMessage);--%>
+                <%--}--%>
+            <%--});--%>
+        <%--}--%>
+	</script>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+            $("#attachment_btn").click(function () {
+                var length = $("#listAttachment tbody").find("tr").length ;
+                if(length==5 ){
+                    top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});
+                    return;
+                }
+
+                $("#attachment_file").click();
+
+            });
+			
+					laydate.render({
+			            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' ,//响应事件。如果没有传入event,则按照默认的click
+                        type: 'date'
+			        });
+					laydate.render({
+			            elem: '#finishDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' ,//响应事件。如果没有传入event,则按照默认的click
+                        type: 'date'
+			        });
+
+		});
+		// function addRow(list, idx, tpl, row){
+		// 	$(list).append(Mustache.render(tpl, {
+		// 		idx: idx, delBtn: true, row: row
+		// 	}));
+		// 	$(list+idx).find("select").each(function(){
+		// 		$(this).val($(this).attr("data-value"));
+		// 	});
+		// 	$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+		// 		var ss = $(this).attr("data-value").split(',');
+		// 		for (var i=0; i<ss.length; i++){
+		// 			if($(this).val() == ss[i]){
+		// 				$(this).attr("checked","checked");
+		// 			}
+		// 		}
+		// 	});
+		// }
+		// function delRow(obj, prefix){
+		// 	var id = $(prefix+"_id");
+		// 	var delFlag = $(prefix+"_delFlag");
+		// 	if (id.val() == ""){
+		// 		$(obj).parent().parent().remove();
+		// 	}else if(delFlag.val() == "0"){
+		// 		delFlag.val("1");
+		// 		$(obj).html("&divide;").attr("title", "撤回删除");
+		// 		$(obj).parent().parent().addClass("error");
+		// 	}else if(delFlag.val() == "1"){
+		// 		delFlag.val("0");
+		// 		$(obj).html("&times;").attr("title", "删除");
+		// 		$(obj).parent().parent().removeClass("error");
+		// 	}
+		// }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<c:if test="${forUpdate != 'forUpdate'}">
+		<div class="tabs-container">
+			<div class="layui-tab" id="tabDiv">
+				<ul class="layui-tab-title" >
+					<li><a href="${ctx}/work/report/workReport/form?type=1">添加日报</a></li>
+					<li class="active"><a href="${ctx}/work/report/workReport/form?type=2">添加周报</a></li>
+					<li><a href="${ctx}/work/report/workReport/form?type=3">添加月报</a></li>
+				</ul>
+			</div>
+		</div>
+		</c:if>
+
+	<form:form id="inputForm" modelAttribute="workReport" enctype="multipart/form-data" action="${ctx}/work/report/workReport/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="2">
+		<sys:message content="${message}"/>
+			<div class="form-group layui-row first  lw12">
+				<div class="form-group-label"><h2>基础信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('2','work_report_type' ,'' )}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>状态:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks required"/>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+					<label class="layui-form-label"><span class="require-item">*</span>本周工作内容:</label>
+					<div class="layui-input-block">
+						<form:textarea path="thisContent" htmlEscape="false" rows="6"  maxlength="2000"  class="form-control required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+					<label class="layui-form-label">下周工作计划:</label>
+					<div class="layui-input-block">
+						<form:textarea  path="nextContent" htmlEscape="false" rows="6" maxlength="2000" class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开始时间:</label>
+					<div class="layui-input-block">
+						<input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">结束时间:</label>
+					<div class="layui-input-block">
+						<input id="finishDate" name="finishDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+							   value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">备注:</label>
+					<div class="layui-input-block">
+						<form:textarea  path="remarks" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+					</div>
+				</div>
+				<c:if test="${workReport.status ne '1'}">
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>接收人:</label>
+					<div class="layui-input-block with-icon">
+						<div class="input-group">
+							<sys:treeselect id="workReportRecordUser" name="workReportRecordIdsUser" value="${workReport.workReportRecordIdsUser}" labelName="workReportRecordNamesUser" labelValue="${workReport.workReportRecordNamesUser}"
+											title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" notAllowSelectParent="true" checked="true"/>
+						</div>
+					</div>
+				</div>
+				</c:if>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>相关附件</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</div>
+				<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="listAttachment" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="180px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:if test="${workReport.status == '0'}">
+							<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+								<tr>
+										<%-- <td>${status.index + 1}</td>--%>
+									<c:choose>
+										<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+											<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+										</c:when>
+										<c:otherwise>
+											<c:choose>
+												<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+													<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+												</c:when>
+												<c:otherwise>
+													<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+												</c:otherwise>
+											</c:choose>
+										</c:otherwise>
+									</c:choose>
+									<td>${workClientAttachment.createBy.name}</td>
+									<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+									<td class="op-td">
+										<div class="op-btn-box" >
+											<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+												<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+											</c:if>
+										</div>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>接收人信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="contentTableUser" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>接收人</th>
+							<th>接收部门</th>
+							<th>阅读状态</th>
+							<th>阅读时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+							<tr>
+								<td>
+										${workReportRecordU.user.name}
+								</td>
+								<td>
+										${workReportRecordU.user.office.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			</c:if>
+			</form:form>
+
+		<!-- ==已发布,评论与回复== -->
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>评论信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="commentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:choose>
+							<c:when test="${empty workReportReviewList}">
+								<tr>
+									<td colspan="6" align="center">尚无评论|回复</td>
+								</tr>
+							</c:when>
+							<c:when test="${!empty workReportReviewList}">
+								<tr>
+									<th  class="sort-column createBy.name">评论者|回复者</th>
+									<th  class="sort-column type">类型</th>
+									<th  class="sort-column content">内容</th>
+									<th  class="sort-column createDate">创建时间</th>
+									<th  class="sort-column updateDate">更新时间</th>
+									<th  class="sort-column remarks">备注信息</th>
+								</tr>
+								<c:forEach items="${workReportReviewList}" var="workReportReview">
+									<tr>
+										<td>
+												${workReportReview.createBy.name}
+										</td>
+										<td>
+												${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+										</td>
+										<td>
+												${workReportReview.content}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+												${workReportReview.remarks}
+										</td>
+									</tr>
+								</c:forEach>
+							</c:when>
+						</c:choose>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</div>
+</div>
+</body>
+</html>

+ 143 - 0
src/main/webapp/webpage/modules/work/report/workReportListAll.jsp

@@ -0,0 +1,143 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+			<form:form id="searchForm" modelAttribute="workReport" action="${ctx}/work/report/workReport/${getList}${outList}" method="post" class="form-inline">
+				<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+				<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+				<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">类型:</label>
+						<div class="layui-input-block with-icon">
+							<form:select path="type"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('work_report_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</div>
+					<div class="layui-item query athird">
+						<label class="layui-form-label">发布人:</label>
+						<div class="layui-input-block">
+							<form:input path="create" htmlEscape="false"    class="form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item athird">
+						<div class="input-group">
+							<button id="searchReset" style="margin-right: 0px;" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="work:report:workReport:del">
+						<table:delRow url="${ctx}/work/report/workReport/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="work:report:workReport:import">
+						<table:importExcel url="${ctx}/work/report/workReport/import"></table:importExcel><!-- 导入按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="work:report:workReport:export">
+						<table:exportExcel url="${ctx}/work/report/workReport/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+                ,{field:'type',align:'center', title: '类型', minWidth:150}
+                ,{field:'status',align:'center', title: '状态', minWidth:150}
+                ,{field:'createDate',align:'center', title: '创建时间', minWidth:150}
+                ,{field:'updateDate', align:'center',title: '更新时间', minWidth:150}
+                ,{field:'createBy', align:'center',title: '创建人', minWidth:150}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.canview != undefined && d.canview == "1")
+                            xml += "<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id="+ d.id +"&readAttr=disabled&view=view','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i>查看</a>";
+                        if(d.candel != undefined && d.candel == "1")
+                            xml +="<a href=\"${ctx}/work/report/workReport/delete?id="+ d.id +"\" onclick=\"return confirmx('确认要删除该工作日志吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i>删除</a>";
+
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workReport" varStatus="varStatus">
+                <c:if test="${varStatus.index != 0}">,</c:if>
+                {
+                    "index":"${varStatus.index+1}"
+                    ,"id":"${workReport.id}"
+                    ,"type":"${fns:getDictLabel(workReport.type, 'work_report_type', '')}"
+                    ,"status":"${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}"
+                    ,"createDate":"<fmt:formatDate value="${workReport.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"updateDate":"<fmt:formatDate value="${workReport.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"createBy":"${workReport.createBy.name}"
+					<shiro:hasPermission name="work:report:workReport:view">,"canview":"1"</shiro:hasPermission>
+					<shiro:hasPermission name="work:report:workReport:del">,"candel":"1"</shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable();
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 160 - 0
src/main/webapp/webpage/modules/work/report/workReportListGet.jsp

@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+			<form:form id="searchForm" modelAttribute="workReport" action="${ctx}/work/report/workReport/${getList}${outList}" method="post" class="form-inline">
+				<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+				<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+				<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">类型:</label>
+						<div class="layui-input-block with-icon">
+							<form:select path="type"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('work_report_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</div>
+
+					<div class="layui-item query athird">
+						<label class="layui-form-label">发布人:</label>
+						<div class="layui-input-block">
+							<form:input path="create" htmlEscape="false"    class="form-control layui-input"/>
+						</div>
+					</div>
+					<div class="layui-item athird">
+						<div class="input-group">
+							<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+							<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+				<div id="moresees" style="clear:both;display:none;">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">阅读状态:</label>
+						<div class="layui-input-block">
+							<form:select path="readFlag"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:option value="0" label="未读"/>
+								<form:option value="1" label="已读"/>
+							</form:select>
+						</div>
+					</div>
+					<div style="clear:both;"></div>
+				</div>
+			</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+                ,{field:'type',align:'center', title: '类型', minWidth:150}
+                ,{field:'status',align:'center', title: '阅读状态', minWidth:150}
+                ,{field:'createDate',align:'center', title: '发布时间', minWidth:150}
+                ,{field:'createBy', align:'center',title: '发布人', minWidth:150}
+                ,{field:'op',align:'center',title:"操作",width:80,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.canview != undefined && d.canview == "1")
+                            xml += "<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id=" + d.id + "&readAttr=disabled&view=view&updateReadFlag=updateReadFlag','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i>查看</a>";
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workReport" varStatus="varStatus">
+                <c:if test="${varStatus.index != 0}">,</c:if>
+                {
+                    "index":"${varStatus.index+1}"
+                    ,"id":"${workReport.id}"
+                    ,"type":"${fns:getDictLabel(workReport.type, 'work_report_type', '')}"
+                    ,"status":"${fns:getDictLabel(workReport.readFlag, 'oa_notify_read', '')}"
+                    ,"createDate":"<fmt:formatDate value="${workReport.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"createBy":"${workReport.createBy.name}"
+                    <shiro:hasPermission name="work:report:workReport:view">,"canview":"1"</shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable(80);
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+<script type="text/javascript">
+    $(document).ready(function() {
+        //搜索框收放
+        $('#moresee').click(function(){
+            if($('#moresees').is(':visible'))
+            {
+                $('#moresees').slideUp(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+            }else{
+                $('#moresees').slideDown(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+            }
+        });
+
+    })
+</script>
+
+</body>
+</html>

+ 203 - 0
src/main/webapp/webpage/modules/work/report/workReportListOut.jsp

@@ -0,0 +1,203 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+			<form:form id="searchForm" modelAttribute="workReport" action="${ctx}/work/report/workReport/${getList}${outList}" method="post" class="form-inline">
+				<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+				<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+				<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+
+				<div class="commonQuery">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">类型:</label>
+						<div class="layui-input-block with-icon">
+							<form:select path="type"  class="form-control simple-select">
+								<form:option value="" label=""/>
+								<form:options items="${fns:getDictList('work_report_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+							</form:select>
+						</div>
+					</div>
+					<c:if test="${requestScope.outList == 'outList'}">
+					<div class="layui-item query athird">
+						<label class="layui-form-label">发布人:</label>
+						<div class="layui-input-block">
+							<form:radiobuttons class="i-checks" path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</div>
+					</div>
+					</c:if>
+					<div class="layui-item athird fr">
+						<div class="input-group">
+							<%--<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>--%>
+							<button id="searchReset" style="margin-right: 0px;" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+							<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+						</div>
+					</div>
+					<div style="    clear:both;"></div>
+				</div>
+				<%--<div id="moresees" style="clear:both;display:none;">--%>
+
+					<%--<div style="clear:both;"></div>--%>
+				<%--</div>--%>
+			</form:form>
+			</div>
+		</div>
+
+
+			<%--<c:if test="${requestScope.allList == 'allList' || requestScope.getList == 'getList'}">--%>
+				<%--<label>创建人:</label>--%>
+				<%--<form:input path="createBy.name" htmlEscape="false"    class="form-control"/>--%>
+			<%--</c:if>--%>
+			<%--<c:if test="${requestScope.outList == 'outList'}">--%>
+				<%--<label>状态:</label>--%>
+				<%--<form:radiobuttons class="i-checks" path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>--%>
+			<%--</c:if>--%>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<c:if test="${not empty my_send}">
+						<shiro:hasPermission name="work:report:workReport:add">
+							<table:addRow url="${ctx}/work/report/workReport/formc" title="工作日志"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+					</c:if>
+					<%--
+                                    <shiro:hasPermission name="work:report:workReport:edit">
+                                        <table:editRow url="${ctx}/work/report/workReport/form" title="工作日志" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+                                    </shiro:hasPermission>
+                    --%>
+					<c:if test="${empty my_receive and empty my_send}">
+						<shiro:hasPermission name="work:report:workReport:del">
+							<table:delRow url="${ctx}/work/report/workReport/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="work:report:workReport:import">
+							<table:importExcel url="${ctx}/work/report/workReport/import"></table:importExcel><!-- 导入按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="work:report:workReport:export">
+							<table:exportExcel url="${ctx}/work/report/workReport/export"></table:exportExcel><!-- 导出按钮 -->
+						</shiro:hasPermission>
+					</c:if>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'index',align:'center',  width:40,title: '序号'}
+                ,{field:'type',align:'center', title: '类型', minWidth:150}
+                ,{field:'status',align:'center', title: '状态', minWidth:150}
+                ,{field:'createDate',align:'center', title: '创建时间', minWidth:150}
+                ,{field:'updateDate', align:'center',title: '更新时间', minWidth:150}
+                ,{field:'createBy', align:'center',title: '创建人', minWidth:150}
+                ,{field:'op',align:'center',title:"操作",width:180,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.canview1 != undefined && d.canview1 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id=" + d.id + "&readAttr=disabled&view=view&updateReadFlag=updateReadFlag','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i> 查看</a>";
+                        if(d.canview2 != undefined && d.canview2 == "1")
+                         	xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id=" + d.id + "&readAttr=disabled&view=view','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i> 查看</a>";
+                        if(d.candel2 != undefined && d.candel2 == "1")
+                            xml +="<a href=\"${ctx}/work/report/workReport/delete?id="+ d.id +"\" onclick=\"return confirmx('确认要删除该工作日志吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        if(d.canview3 != undefined && d.canview3 == "1")
+                            xml += "<a href=\"javascript:void(0)\" onclick=\"openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id="+ d.id +"&readAttr=disabled&view=view','95%','95%')\" class=\"op-btn op-btn-view\" ><i class=\"fa fa-search-plus\"></i> 查看</a>";
+                        if(d.canedit3 != undefined && d.canedit3 == "1")
+                            xml += "<a href=\"javascript:void(0)\" onclick=\"openDialog('修改工作日志', '${ctx}/work/report/workReport/form?id="+ d.id +"&forUpdate=forUpdate','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        if(d.candel31 != undefined && d.candel31 == "1")
+                            xml += "<a href=\"${ctx}/work/report/workReport/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该工作日志吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        if(d.candel32 != undefined && d.candel32 == "1")
+                            xml += "<a href=\"${ctx}/work/report/workReport/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该工作日志吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workReport" varStatus="varStatus">
+                <c:if test="${varStatus.index != 0}">,</c:if>
+                {
+                    "index":"${varStatus.index+1}"
+                    ,"id":"${workReport.id}"
+                    ,"type":"${fns:getDictLabel(workReport.type, 'work_report_type', '')}"
+                    ,"status":"${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}"
+                    ,"createDate":"<fmt:formatDate value="${workReport.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"updateDate":"<fmt:formatDate value="${workReport.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+                    ,"createBy":"${workReport.createBy.name}"
+					<c:if test="${my_receive}"><shiro:hasPermission name="work:report:workReport:view">,"canview1":"1"</shiro:hasPermission></c:if>
+                    <c:if test="${empty my_receive and empty my_send}">	<shiro:hasPermission name="work:report:workReport:view">,"canview2":"1"</shiro:hasPermission>
+						<shiro:hasPermission name="work:report:workReport:del">,"candel2":"1"</shiro:hasPermission></c:if>
+					<c:if test="${my_send}"><shiro:hasPermission name="work:report:workReport:view">,"canview3":"1"</shiro:hasPermission>
+					<c:if test="${workReport.status eq '0'}"><shiro:hasPermission name="work:report:workReport:edit">,"canedit3":"1"</shiro:hasPermission>
+					<shiro:hasPermission name="work:report:workReport:del">,"candel31":"1"</shiro:hasPermission></c:if>
+					<c:if test="${workReport.status eq '1'}"><shiro:hasPermission name="work:report:workReport:del">,"candel32":"1"</shiro:hasPermission>
+					</c:if></c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+
+    resizeListTable(200);
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+<script type="text/javascript">
+    $(document).ready(function() {
+        //搜索框收放
+        $('#moresee').click(function(){
+            if($('#moresees').is(':visible'))
+            {
+                $('#moresees').slideUp(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+            }else{
+                $('#moresees').slideDown(0,resizeListWindow1);
+                $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+            }
+        });
+
+    })
+</script>
+</body>
+</html>

+ 207 - 0
src/main/webapp/webpage/modules/work/report/workReportViewDay.jsp

@@ -0,0 +1,207 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<style type="text/css">--%>
+		<%--img {width:50px; height:50px;}--%>
+	<%--</style>--%>
+	<script type="text/javascript">
+        $(function () {
+
+        })
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="workReport" action="" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="1">
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first">
+			<div class="form-group-label"><h2>基础信息</h2></div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">类型:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('1','work_report_type' ,'' )}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">状态:</label>
+				<div class="layui-input-block">
+					<div class="input-group">
+						<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}"/>
+					</div>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label">工作内容:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="6"  maxlength="2000"  class="form-control required">${workReport.thisContent}</textarea>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="4"  maxlength="2000"  class="form-control required">${workReport.remarks}</textarea>
+				</div>
+			</div>
+		</div>
+
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>相关附件</h2></div>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="listAttachment" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+							<%-- <th>序号</th>--%>
+						<th>文件</th>
+						<th>上传人</th>
+						<th>上传时间</th>
+						<th width="180px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_attachment">
+					<%--<c:if test="${workReport.status == '0'}">--%>
+						<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+					<%--</c:if>--%>
+					</tbody>
+				</table>
+			</div>
+		</div>
+
+		<c:if test="${workReport.status eq '1'}">
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>接收人信息</h2></div>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="contentTableUser" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+						<th>接收人</th>
+						<th>接收部门</th>
+						<th>阅读状态</th>
+						<th>阅读时间</th>
+					</tr>
+					</thead>
+					<tbody>
+					<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+						<tr>
+							<td>
+									${workReportRecordU.user.name}
+							</td>
+							<td>
+									${workReportRecordU.user.office.name}
+							</td>
+							<td>
+									${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+							</td>
+							<td>
+								<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+							</td>
+						</tr>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		</c:if>
+		</form:form>
+
+	<!-- ==已发布,评论与回复== -->
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>评论信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="commentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:choose>
+							<c:when test="${empty workReportReviewList}">
+								<tr>
+									<td colspan="6" align="center">尚无评论|回复</td>
+								</tr>
+							</c:when>
+							<c:when test="${!empty workReportReviewList}">
+								<tr>
+									<th  class="sort-column createBy.name">评论者|回复者</th>
+									<th  class="sort-column type">类型</th>
+									<th  class="sort-column content">内容</th>
+									<th  class="sort-column createDate">创建时间</th>
+									<th  class="sort-column updateDate">更新时间</th>
+									<th  class="sort-column remarks">备注信息</th>
+								</tr>
+								<c:forEach items="${workReportReviewList}" var="workReportReview">
+									<tr>
+										<td>
+												${workReportReview.createBy.name}
+										</td>
+										<td>
+												${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+										</td>
+										<td>
+												${workReportReview.content}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+												${workReportReview.remarks}
+										</td>
+									</tr>
+								</c:forEach>
+							</c:when>
+						</c:choose>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</div>
+</div>
+
+</body>
+</html>

+ 224 - 0
src/main/webapp/webpage/modules/work/report/workReportViewMonth.jsp

@@ -0,0 +1,224 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<style type="text/css">--%>
+		<%--img {width:50px; height:50px;}--%>
+	<%--</style>--%>
+	<script type="text/javascript">
+        $(function () {
+
+        })
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="workReport" action="" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="3">
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first lw12">
+			<div class="form-group-label"><h2>基础信息</h2></div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">类型:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('3','work_report_type' ,'' )}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">状态:</label>
+				<div class="layui-input-block">
+					<div class="input-group">
+						<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}"/>
+					</div>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label">本月工作内容:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="6"  maxlength="2000"  class="form-control required">${workReport.thisContent}</textarea>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label">下月工作计划:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="6"  maxlength="2000"  class="form-control required">${workReport.nextContent}</textarea>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">开始时间:</label>
+				<div class="layui-input-block">
+					<input readonly="true" type="text" maxlength="20" class="form-control layui-input"
+						   value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd"/>"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">结束时间:</label>
+				<div class="layui-input-block">
+					<input readonly="true" type="text" maxlength="20" class="form-control layui-input"
+						   value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd"/>"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="4"  maxlength="2000"  class="form-control required">${workReport.remarks}</textarea>
+				</div>
+			</div>
+		</div>
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>相关附件</h2></div>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="listAttachment" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+							<%-- <th>序号</th>--%>
+						<th>文件</th>
+						<th>上传人</th>
+						<th>上传时间</th>
+						<th width="180px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_attachment">
+					<%--<c:if test="${workReport.status == '0'}">--%>
+						<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+					<%--</c:if>--%>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>接收人信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="contentTableUser" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>接收人</th>
+							<th>接收部门</th>
+							<th>阅读状态</th>
+							<th>阅读时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+							<tr>
+								<td>
+										${workReportRecordU.user.name}
+								</td>
+								<td>
+										${workReportRecordU.user.office.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</form:form>
+
+		<!-- ==已发布,评论与回复== -->
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>评论信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="commentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:choose>
+							<c:when test="${empty workReportReviewList}">
+								<tr>
+									<td colspan="6" align="center">尚无评论|回复</td>
+								</tr>
+							</c:when>
+							<c:when test="${!empty workReportReviewList}">
+								<tr>
+									<th  class="sort-column createBy.name">评论者|回复者</th>
+									<th  class="sort-column type">类型</th>
+									<th  class="sort-column content">内容</th>
+									<th  class="sort-column createDate">创建时间</th>
+									<th  class="sort-column updateDate">更新时间</th>
+									<th  class="sort-column remarks">备注信息</th>
+								</tr>
+								<c:forEach items="${workReportReviewList}" var="workReportReview">
+									<tr>
+										<td>
+												${workReportReview.createBy.name}
+										</td>
+										<td>
+												${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+										</td>
+										<td>
+												${workReportReview.content}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+												${workReportReview.remarks}
+										</td>
+									</tr>
+								</c:forEach>
+							</c:when>
+						</c:choose>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</div>
+</div>
+</body>
+</html>

+ 224 - 0
src/main/webapp/webpage/modules/work/report/workReportViewWeek.jsp

@@ -0,0 +1,224 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<style type="text/css">--%>
+		<%--img {width:50px; height:50px;}--%>
+	<%--</style>--%>
+	<script type="text/javascript">
+        $(function () {
+        })
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+	<form:form id="inputForm" modelAttribute="workReport"  action="" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" name="type" value="2">
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first lw12">
+			<div class="form-group-label"><h2>基础信息</h2></div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">类型:</label>
+				<div class="layui-input-block">
+					<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel('2','work_report_type' ,'' )}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">状态:</label>
+				<div class="layui-input-block">
+					<div class="input-group">
+						<input htmlEscape="false" readonly="true" class="form-control  layui-input" value="${fns:getDictLabel(workReport.status, 'oa_notify_status', '')}"/>
+					</div>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label">本周工作内容:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="6"  maxlength="2000"  class="form-control required">${workReport.thisContent}</textarea>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea" style="min-height: 142px;">
+				<label class="layui-form-label">下周工作计划:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="6"  maxlength="2000"  class="form-control required">${workReport.nextContent}</textarea>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">开始时间:</label>
+				<div class="layui-input-block">
+					<input readonly="true" type="text" maxlength="20" class="form-control layui-input"
+						   value="<fmt:formatDate value="${workReport.startDate}" pattern="yyyy-MM-dd"/>"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">结束时间:</label>
+				<div class="layui-input-block">
+					<input readonly="true" type="text" maxlength="20" class="form-control layui-input"
+						   value="<fmt:formatDate value="${workReport.finishDate}" pattern="yyyy-MM-dd"/>"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm12 with-textarea">
+				<label class="layui-form-label">备注:</label>
+				<div class="layui-input-block">
+					<textarea htmlEscape="false" readonly="true" rows="4"  maxlength="2000"  class="form-control required">${workReport.remarks}</textarea>
+				</div>
+			</div>
+		</div>
+		<div class="form-group layui-row">
+			<div class="form-group-label"><h2>相关附件</h2></div>
+			<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+				<table id="listAttachment" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+							<%-- <th>序号</th>--%>
+						<th>文件</th>
+						<th>上传人</th>
+						<th>上传时间</th>
+						<th width="180px">操作</th>
+					</tr>
+					</thead>
+					<tbody id="file_attachment">
+					<%--<c:if test="${workReport.status == '0'}">--%>
+						<c:forEach items="${workReport.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+					<%--</c:if>--%>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>接收人信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="contentTableUser" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>接收人</th>
+							<th>接收部门</th>
+							<th>阅读状态</th>
+							<th>阅读时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:forEach items="${workReport.workReportRecordListUser}" var="workReportRecordU">
+							<tr>
+								<td>
+										${workReportRecordU.user.name}
+								</td>
+								<td>
+										${workReportRecordU.user.office.name}
+								</td>
+								<td>
+										${fns:getDictLabel(workReportRecordU.readFlag, 'oa_notify_read', '')}
+								</td>
+								<td>
+									<fmt:formatDate value="${workReportRecordU.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</form:form>
+
+		<!-- ==已发布,评论与回复== -->
+		<c:if test="${workReport.status eq '1'}">
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>评论信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="commentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>评论者|回复者</th>
+							<th>类型</th>
+							<th>内容</th>
+							<th>创建时间</th>
+							<th>更新时间</th>
+							<th>备注信息</th>
+						</tr>
+						</thead>
+						<tbody>
+						<c:choose>
+							<c:when test="${empty workReportReviewList}">
+								<tr>
+									<td colspan="6" align="center">尚无评论|回复</td>
+								</tr>
+							</c:when>
+							<c:when test="${!empty workReportReviewList}">
+								<tr>
+									<th  class="sort-column createBy.name">评论者|回复者</th>
+									<th  class="sort-column type">类型</th>
+									<th  class="sort-column content">内容</th>
+									<th  class="sort-column createDate">创建时间</th>
+									<th  class="sort-column updateDate">更新时间</th>
+									<th  class="sort-column remarks">备注信息</th>
+								</tr>
+								<c:forEach items="${workReportReviewList}" var="workReportReview">
+									<tr>
+										<td>
+												${workReportReview.createBy.name}
+										</td>
+										<td>
+												${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+										</td>
+										<td>
+												${workReportReview.content}
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+											<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+										<td>
+												${workReportReview.remarks}
+										</td>
+									</tr>
+								</c:forEach>
+							</c:when>
+						</c:choose>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</c:if>
+	</div>
+</div>
+
+</body>
+</html>

+ 80 - 0
src/main/webapp/webpage/modules/work/review/workReportReviewForm.jsp

@@ -0,0 +1,80 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志的评论与回复管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			$("#name").focus();
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox") || element.is(":radio") || element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            //只做查看时,禁用掉以下标签
+            $('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+		});
+	</script>
+</head>
+<body class="hideScroll">
+	<form:form id="inputForm" modelAttribute="workReportReview" action="${ctx}/work/review/workReportReview/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+			<tr>
+				<td class="width-15 active"><label class="pull-right">上级父级编号:</label></td>
+				<td class="width-35">
+					<sys:treeselect id="parent" name="parent.id" value="${workReportReview.parent.id}" labelName="parent.name" labelValue="${workReportReview.parent.name}"
+						title="父级编号" url="/work/review/workReportReview/treeData" extId="${workReportReview.id}" cssClass="form-control " allowClear="true"/>
+				</td>
+			</tr>
+			<tr>
+				<td class="width-15 active"><label class="pull-right">公告ID:</label></td>
+				<td class="width-35">
+					<form:input path="reportId" htmlEscape="false"    class="form-control "/>
+				
+				</td>
+			</tr>
+			<tr>
+				<td class="width-15 active"><label class="pull-right">类型:</label></td>
+				<td class="width-35">
+					<form:select path="type" class="form-control  ">
+						<form:option value="" label=""/>
+						<form:options items="${fns:getDictList('work_report_review_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+					</form:select>
+				
+				</td>
+			</tr>
+			<tr>
+				<td class="width-15 active"><label class="pull-right">内容:</label></td>
+				<td class="width-35">
+					<form:textarea path="content" htmlEscape="false" rows="4"    class="form-control "/>
+				
+				</td>
+			</tr>
+		</tbody>
+	</table>
+	</form:form>
+</body>
+</html>

+ 163 - 0
src/main/webapp/webpage/modules/work/review/workReportReviewList.jsp

@@ -0,0 +1,163 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作日志的评论与回复管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			var data = ${fns:toJson(list)}, ids = [], rootIds = [];
+			for (var i=0; i<data.length; i++){
+				ids.push(data[i].id);
+			}
+			ids = ',' + ids.join(',') + ',';
+			for (var i=0; i<data.length; i++){
+				if (ids.indexOf(','+data[i].parentId+',') == -1){
+					if ((','+rootIds.join(',')+',').indexOf(','+data[i].parentId+',') == -1){
+						rootIds.push(data[i].parentId);
+					}
+				}
+			}
+			for (var i=0; i<rootIds.length; i++){
+				addRow("#treeTableList", tpl, data, rootIds[i], true);
+			}
+			$("#treeTable").treeTable({expandLevel : 5});
+		});
+		function addRow(list, tpl, data, pid, root){
+			for (var i=0; i<data.length; i++){
+				var row = data[i];
+				if ((${fns:jsGetVal('row.parentId')}) == pid){
+					$(list).append(Mustache.render(tpl, {
+						dict: {
+							type: getDictLabel(${fns:toJson(fns:getDictList('work_report_review_type'))}, row.type),
+						blank123:0}, pid: (root?0:pid), row: row
+					}));
+					addRow(list, tpl, data, row.id);
+				}
+			}
+		}
+		
+		function refresh(){//刷新
+			
+			window.location="${ctx}/work/review/workReportReview/";
+		}
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+			<h5>工作日志的评论与回复列表 </h5>
+			<div class="ibox-tools">
+				<a class="collapse-link">
+					<i class="fa fa-chevron-up"></i>
+				</a>
+				<a class="dropdown-toggle" data-toggle="dropdown" href="form_basic.html#">
+					<i class="fa fa-wrench"></i>
+				</a>
+				<ul class="dropdown-menu dropdown-user">
+					<li><a href="javascript:void(0)">选项1</a>
+					</li>
+					<li><a href="javascript:void(0)">选项2</a>
+					</li>
+				</ul>
+				<a class="close-link">
+					<i class="fa fa-times"></i>
+				</a>
+			</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workReportReview" action="${ctx}/work/review/workReportReview/" method="post" class="form-inline">
+		<div class="form-group">
+				<label>公告ID:</label>
+				<form:input path="reportId" htmlEscape="false" maxlength="64" class="form-control input-sm"/>
+				<label>类型:</label>
+				<form:select path="type" class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getDictList('work_report_review_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+				<label>创建者:</label>
+				<form:input path="createBy.id" htmlEscape="false" maxlength="64" class="form-control input-sm"/>
+				<label>创建时间:</label>
+				<input id="createDate" name="createDate" type="text" maxlength="20" class="laydate-icon form-control layer-date input-sm"
+					value="<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="work:review:workReportReview:add">
+				<table:addRow url="${ctx}/work/review/workReportReview/form" title="工作日志的评论与回复"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="refresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<table id="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th>公告ID</th>
+				<th>类型</th>
+				<th>内容</th>
+				<th>创建者</th>
+				<th>创建时间</th>
+				<shiro:hasPermission name="work:review:workReportReview:edit"><th>操作</th></shiro:hasPermission>
+			</tr>
+		</thead>
+		<tbody id="treeTableList"></tbody>
+	</table>
+	<script type="text/template" id="treeTableTpl">
+		<tr id="{{row.id}}" pId="{{pid}}">
+			<td>
+				<%--<a  href="javascript:void(0)" onclick="openDialogView('查看工作日志的评论与回复', '${ctx}/work/review/workReportReview/form?id={{row.id}}&readAttr=disabled','80%','80%')">
+				</a>--%>
+				{{row.reportId}}
+			</td>
+			<td>
+				{{dict.type}}
+			</td>
+			<td>
+				{{row.content}}
+			</td>
+			<td>
+				{{row.createBy.id}}
+			</td>
+			<td>
+				{{row.createDate}}
+			</td>
+			<td>
+			<shiro:hasPermission name="work:review:workReportReview:view">
+				<a href="javascript:void(0)" onclick="openDialogView('查看工作日志的评论与回复', '${ctx}/work/review/workReportReview/form?id={{row.id}}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i>  查看</a>
+				</shiro:hasPermission>
+			<shiro:hasPermission name="work:review:workReportReview:edit">
+   				<a href="javascript:void(0)" onclick="openDialog('修改工作日志的评论与回复', '${ctx}/work/review/workReportReview/form?id={{row.id}}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+   			</shiro:hasPermission>
+   			<shiro:hasPermission name="work:review:workReportReview:del">
+				<a href="${ctx}/work/review/workReportReview/delete?id={{row.id}}" onclick="return confirmx('确认要删除该工作日志的评论与回复及所有子工作日志的评论与回复吗?', this.href)" class="btn btn-danger btn-xs" ><i class="fa fa-trash"></i> 删除</a>
+			</shiro:hasPermission>
+   			<shiro:hasPermission name="work:review:workReportReview:add">
+				<a href="javascript:void(0)" onclick="openDialog('添加下级工作日志的评论与回复', '${ctx}/work/review/workReportReview/form?parent.id={{row.id}}','80%','80%')" class="btn btn-primary btn-xs" ><i class="fa fa-plus"></i> 添加下级工作日志的评论与回复</a>
+			</shiro:hasPermission>
+			</td>
+		</tr>
+	</script>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/work/review/workReportReviewListBy.jsp

@@ -0,0 +1,149 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评论与回复管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>评论与回复列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workReportReview" action="${ctx}/work/review/workReportReview/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<span>类型:</span>
+			<form:select path="type"  class="form-control m-b">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getDictList('work_report_review_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+		 </div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="work:review:workReportReview:add">
+				<table:addRow url="${ctx}/work/review/workReportReview/form" title="评论与回复"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="work:review:workReportReview:edit">
+			    <table:editRow url="${ctx}/work/review/workReportReview/form" title="评论与回复" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="work:review:workReportReview:del">
+				<table:delRow url="${ctx}/work/review/workReportReview/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="work:review:workReportReview:import">
+				<table:importExcel url="${ctx}/work/review/workReportReview/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="work:review:workReportReview:export">
+	       		<table:exportExcel url="${ctx}/work/review/workReportReview/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column type">类型</th>
+				<th  class="sort-column content">内容</th>
+				<th  class="sort-column createBy.id">创建者</th>
+				<th  class="sort-column createDate">创建时间</th>
+				<th  class="sort-column updateDate">更新时间</th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workReportReview">
+			<tr>
+				<td> <input type="checkbox" id="${workReportReview.id}" class="i-checks"></td>
+				<td>
+					<%--<a  href="javascript:void(0)" onclick="openDialogView('查看评论与回复', '${ctx}/work/review/workReportReview/form?id=${workReportReview.id}&readAttr=disabled','80%','80%')">
+				    </a>--%>
+						${fns:getDictLabel(workReportReview.type, 'work_report_review_type', '')}
+				</td>
+				<td>
+					${workReportReview.content}
+				</td>
+				<td>
+					${workReportReview.createBy.name}
+				</td>
+				<td>
+					<fmt:formatDate value="${workReportReview.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<fmt:formatDate value="${workReportReview.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					${workReportReview.remarks}
+				</td>
+				<td>
+					<shiro:hasPermission name="work:review:workReportReview:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看评论与回复', '${ctx}/work/review/workReportReview/form?id=${workReportReview.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="work:review:workReportReview:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改评论与回复', '${ctx}/work/review/workReportReview/form?id=${workReportReview.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="work:review:workReportReview:del">
+						<a href="${ctx}/work/review/workReportReview/delete?id=${workReportReview.id}" onclick="return confirmx('确认要删除该评论与回复吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 95 - 0
src/main/webapp/webpage/modules/workactivity/activityForm.jsp

@@ -0,0 +1,95 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流附加类管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="activity" action="${ctx}/workactivity/activity/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">任务名称:</label></td>
+					<td class="width-35">
+						<form:input path="name" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">审批人:</label></td>
+					<td class="width-35">
+						<form:input path="User.id" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">审批角色别名:</label></td>
+					<td class="width-35">
+						<form:input path="roleEnname" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">由人/角色审批(0 人审批 1角色审批):</label></td>
+					<td class="width-35">
+						<form:input path="isUser" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">流程标识:</label></td>
+					<td class="width-35">
+						<form:input path="processKey" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">0 返回上一步 1 返回第一步:</label></td>
+					<td class="width-35">
+						<form:input path="returnBack" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">是否审批:</label></td>
+					<td class="width-35">
+						<form:input path="isApproval" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">审批id:</label></td>
+					<td class="width-35">
+						<form:input path="approvalId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 154 - 0
src/main/webapp/webpage/modules/workactivity/activityList.jsp

@@ -0,0 +1,154 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作流附加类管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>工作流附加类列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="activity" action="${ctx}/workactivity/activity/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workactivity:activity:add">
+				<table:addRow url="${ctx}/workactivity/activity/form" title="工作流附加类"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workactivity:activity:edit">
+			    <table:editRow url="${ctx}/workactivity/activity/form" title="工作流附加类" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workactivity:activity:del">
+				<table:delRow url="${ctx}/workactivity/activity/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workactivity:activity:import">
+				<table:importExcel url="${ctx}/workactivity/activity/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workactivity:activity:export">
+	       		<table:exportExcel url="${ctx}/workactivity/activity/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column name">任务名称</th>
+				<th  class="sort-column User.id">审批人</th>
+				<th  class="sort-column roleEnname">审批角色别名</th>
+				<th  class="sort-column isUser">由人/角色审批(0 人审批 1角色审批)</th>
+				<th  class="sort-column processKey">流程标识</th>
+				<th  class="sort-column returnBack">0 返回上一步 1 返回第一步</th>
+				<th  class="sort-column isApproval">是否审批</th>
+				<th  class="sort-column approvalId">审批id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="activity">
+			<tr>
+				<td> <input type="checkbox" id="${activity.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看工作流附加类', '${ctx}/workactivity/activity/form?id=${activity.id}','80%','80%')">
+					${activity.remarks}
+				</a></td>
+				<td>
+					${activity.name}
+				</td>
+				<td>
+					${activity.User.id}
+				</td>
+				<td>
+					${activity.roleEnname}
+				</td>
+				<td>
+					${activity.isUser}
+				</td>
+				<td>
+					${activity.processKey}
+				</td>
+				<td>
+					${activity.returnBack}
+				</td>
+				<td>
+					${activity.isApproval}
+				</td>
+				<td>
+					${activity.approvalId}
+				</td>
+				<td>
+					<shiro:hasPermission name="workactivity:activity:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看工作流附加类', '${ctx}/workactivity/activity/form?id=${activity.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workactivity:activity:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改工作流附加类', '${ctx}/workactivity/activity/form?id=${activity.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workactivity:activity:del">
+						<a href="${ctx}/workactivity/activity/delete?id=${activity.id}" onclick="return confirmx('确认要删除该工作流附加类吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 171 - 0
src/main/webapp/webpage/modules/workactivitymenu/officeList.jsp

@@ -0,0 +1,171 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程模块管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            $("th").css('text-align','center');
+            var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+            var data = ${fns:toJson(list)}, rootId = "${not empty office.id ? office.id : '0'}";
+            //console.log(data+"-----"+rootId);
+            addRow("#treeTableList", tpl, data, rootId, true);
+            $("#treeTable").treeTable({expandLevel : 5});
+        });
+        function addRow(list, tpl, data, pid, root){
+            /*console.log(list+"---List--");
+            console.log(data+"---data--");
+            console.log(pid+"---pid--");
+            console.log(root+"---root--");*/
+            for (var i=0; i<data.length; i++){
+                var row = data[i];
+                if ((${fns:jsGetVal('row.parentId')}) == pid){
+                    //console.log(pid+"***********");
+                    $(list).append(Mustache.render(tpl, {
+                        dict: {
+                            type: getDictLabel(${fns:toJson(fns:getDictList('sys_office_type'))}, row.type)
+                        }, pid: (root?0:pid), row: row
+                    }));
+                    //console.log(row.id+"+++++++++++");
+                    addRow(list, tpl, data, row.id);
+                }
+            }
+        }
+        function refresh(){//刷新或者排序,页码不清零
+
+            window.location="${ctx}/sys/office/list";
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<!--查询条件-->
+	<div class="row">
+		<div class="col-sm-12">
+			<form:form id="searchForm" modelAttribute="workActivityMenu" action="${ctx}/workactivitymenu/workActivityMenu/workActivityMenuList" method="post" class="form-inline">
+				<div class="form-group">
+					<form:hidden id="officeId" path="officeId" htmlEscape="false" maxlength="100" class="form-control input-sm"/>
+				</div>
+			</form:form>
+			<br/>
+		</div>
+	</div>
+	<table id="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead><tr><th>机构名称</th><th>归属区域</th><th>机构编码</th><th>机构类型</th><th>备注</th><th>操作</th></tr></thead>
+		<tbody id="treeTableList"></tbody>
+	</table>
+</div>
+<script type="text/template" id="treeTableTpl">
+	<tr id="{{row.id}}" pId="{{pid}}">
+		<td>
+			{{row.name}}</td>
+		<td>{{row.area.name}}</td>
+		<td>{{row.code}}</td>
+		<td>{{dict.type}}</td>
+		<td>{{row.remarks}}</td>
+		<td>
+			<div style="text-align: center">
+			  <a href="javascript:" onclick="$('#officeId').val('{{row.id}}');$('#searchForm').submit();return false;"  class="btn btn-primary btn-xs">流程定义</a>
+			</div>
+		</td>
+	</tr>
+</script>
+</body>
+</html>
+<%--
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>公司流程模块管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>流程模块列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+		<form:form id="searchForm" modelAttribute="workActivityMenu" action="${ctx}/workactivitymenu/workActivityMenu/workActivityMenuList" method="post" class="form-inline">
+			<div class="form-group">
+				<form:hidden id="officeId" path="officeId" htmlEscape="false" maxlength="100" class="form-control input-sm"/>
+			</div>
+		</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th  class="sort-column id" style="width: 20%;">编号</th>
+				<th  class="sort-column name" style="width: 20%;">名称</th>
+				<th  class="sort-column createDate" style="width: 20%;">创建时间</th>
+				<th  class="sort-column remarks" style="width: 20%;">备注</th>
+				<th style="width: 20%;">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${list}" var="office">
+
+			<tr>
+				<td>
+					${office.id}
+				</td>
+				<td>
+					${office.name}
+				</td>
+				<td><fmt:formatDate value="${office.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+
+				<td>
+					${office.remarks}
+				</td>
+				<td>
+					<a href="javascript:" onclick="$('#officeId').val('${office.id}');$('#searchForm').submit();return false;"  class="btn btn-primary btn-xs">流程定义</a>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>--%>

+ 65 - 0
src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuCopy.jsp

@@ -0,0 +1,65 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程表同步</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+            //初始化加载
+            var processKey = "${workActivityMenu.processKey}";
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox") || element.is(":radio") || element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(processKey){
+                showlink(processKey);
+            }
+		});
+
+	</script>
+</head>
+<body class="hideScroll">
+	<form:form id="inputForm" modelAttribute="workActivityMenu" action="${ctx}/workactivitymenu/workActivityMenu/copy" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+			<tbody>
+			<tr>
+				<td class="width-15 active"><label class="pull-right">所属公司/部门:</label></td>
+				<td class="width-25">
+						${workActivityMenu.officeName}
+				</td>
+			</tr>
+			<tr>
+				<td  class="width-15 active"><label class="pull-right">同步到:</label></td>
+				<td  class="width-25" >
+					<sys:treeselect id="office" name="officeId" value="" labelName="officeName" labelValue=""
+									title="部门" url="/sys/office/treeDataAll" cssClass="form-control required" allowClear="true" />
+				</td>
+			</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 530 - 0
src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuForm.jsp


+ 178 - 0
src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuList.jsp

@@ -0,0 +1,178 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程表管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			/*var tpl = $("#treeTableTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+			var data = ${fns:toJson(list)}, ids = [], rootIds = [];
+			for (var i=0; i<data.length; i++){
+				ids.push(data[i].id);
+			}
+			ids = ',' + ids.join(',') + ',';
+			for (var i=0; i<data.length; i++){
+				if (ids.indexOf(','+data[i].parentId+',') == -1){
+					if ((','+rootIds.join(',')+',').indexOf(','+data[i].parentId+',') == -1){
+						rootIds.push(data[i].parentId);
+					}
+				}
+			}
+			for (var i=0; i<rootIds.length; i++){
+				addRow("#treeTableList", tpl, data, rootIds[i], true);
+			}
+			$("#treeTable").treeTable({expandLevel : 5});*/
+            $("#treeTable").treeTable({expandLevel : 2,column:1}).show();
+		});
+		function addRow(list, tpl, data, pid, root){
+			for (var i=0; i<data.length; i++){
+				var row = data[i];
+				if ((${fns:jsGetVal('row.parentId')}) == pid){
+					$(list).append(Mustache.render(tpl, {
+						dict: {
+						blank123:0}, pid: (root?0:pid), row: row
+					}));
+					addRow(list, tpl, data, row.id);
+				}
+			}
+		}
+
+		function refresh(){//刷新
+
+			window.location="${ctx}/workactivitymenu/workActivityMenu/";
+		}
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+			<h5>流程表列表 </h5>
+			<div class="ibox-tools">
+				<a class="collapse-link">
+					<i class="fa fa-chevron-up"></i>
+				</a>
+				<a class="dropdown-toggle" data-toggle="dropdown" href="form_basic.html#">
+					<i class="fa fa-wrench"></i>
+				</a>
+				<ul class="dropdown-menu dropdown-user">
+					<li><a href="javascript:void(0)">选项1</a>
+					</li>
+					<li><a href="javascript:void(0)">选项2</a>
+					</li>
+				</ul>
+				<a class="close-link">
+					<i class="fa fa-times"></i>
+				</a>
+			</div>
+	</div>
+
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workActivityMenu" action="${ctx}/workactivitymenu/workActivityMenu/workActivityMenuList" method="post" class="form-inline">
+		<div class="form-group">
+				<label>名称:</label>
+				<form:input path="name" htmlEscape="false" maxlength="100" class="form-control input-sm"/>
+				<form:hidden id="officeId" path="officeId" value="${officeId}" htmlEscape="false" maxlength="100" class="form-control input-sm"/>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workactivitymenu:workActivityMenu:add">
+				<table:addRow url="${ctx}/workactivitymenu/workActivityMenu/form?officeId=${officeId}" title="流程表"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="refresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+
+		<table id="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+			<thead>
+				<tr>
+					<th style="width: 20%">功能名称</th>
+					<th style="width: 20%">名称</th>
+					<th style="width: 20%">更新时间</th>
+					<th style="width: 20%">公司/部门</th>
+					<th style="width: 20%">操作</th>
+				</tr>
+			</thead>
+			<%--<tbody id="treeTableList"></tbody>--%>
+			<tbody>
+			<c:forEach items="${list}" var="menu">
+				<tr id="${menu.id}" pId="${menu.parent.id ne '1'?menu.parent.id:'0'}">
+					<td>
+							${menu.functionalName}
+					</td>
+					<td>
+						<c:choose>
+						<c:when test="${menu.companyId ne '0' || not empty menu.processKey}">
+							<a  href="javascript:void(0)" onclick="openDialogView('查看流程表', '${ctx}/workactivitymenu/workActivityMenu/form?id=${menu.id}&view=view','80%','80%')">
+									${menu.name}
+							</a>
+						</c:when>
+							<c:otherwise>
+								${menu.name}
+							</c:otherwise>
+						</c:choose>
+					</td>
+					<td>
+						<fmt:formatDate value="${menu.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td>${menu.officeName}</td>
+					<td>
+						<c:choose>
+							<c:when test="${menu.companyId ne '0'}">
+								<shiro:hasPermission name="workactivitymenu:workActivityMenu:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看流程表', '${ctx}/workactivitymenu/workActivityMenu/form?id=${menu.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i>  查看</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="workactivitymenu:workActivityMenu:edit">
+									<a href="javascript:void(0)" onclick="openDialog('修改流程表', '${ctx}/workactivitymenu/workActivityMenu/form?id=${menu.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+								</shiro:hasPermission>
+								<shiro:hasPermission name="workactivitymenu:workActivityMenu:del">
+                                 <a href="${ctx}/workactivitymenu/workActivityMenu/delete?id=${menu.id}" onclick="return confirmx('确认要删除该流程表及所有子流程表吗?', this.href)" class="btn btn-danger btn-xs" ><i class="fa fa-trash"></i> 删除</a>
+                             	</shiro:hasPermission>
+								<a href="javascript:void(0)" onclick="openDialog('同步流程表', '${ctx}/workactivitymenu/workActivityMenu/form?id=${menu.id}&view=copy','800px', '250px')" class="btn btn-info btn-xs" ><i class="fa fa-refresh"></i>  流程同步</a>
+
+								<%--<shiro:hasPermission name="workactivitymenu:workActivityMenu:add">
+									 <a href="javascript:void(0)" onclick="openDialog('添加部门流程', '${ctx}/workactivitymenu/workActivityMenu/form?parent.id={{row.id}}','80%','80%')" class="btn btn-primary btn-xs" ><i class="fa fa-plus"></i> 添加部门流程</a>
+								 </shiro:hasPermission>--%>
+							</c:when>
+							<c:when test="${menu.companyId eq '0' && not empty menu.processKey}">
+								<shiro:hasPermission name="workactivitymenu:workActivityMenu:view">
+									<a href="javascript:void(0)" onclick="openDialogView('查看流程表', '${ctx}/workactivitymenu/workActivityMenu/form?id=${menu.id}&view=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i>  查看</a>
+								</shiro:hasPermission>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i>修改</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i> 删除</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-refresh"></i> 流程同步</a>
+							</c:when>
+							<c:otherwise>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-search-plus"></i>查看</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-edit"></i>修改</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-trash"></i> 删除</a>
+								<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('无操作权限!',{icon:5})" class="btn btn-default btn-xs"><i class="fa fa-refresh"></i> 流程同步</a>
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+			</c:forEach>
+			</tbody>
+		</table>
+
+</body>
+</html>

+ 366 - 0
src/main/webapp/webpage/modules/workactivitymenu/workActivityMenuView.jsp

@@ -0,0 +1,366 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程表管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+            //初始化加载
+            var processKey = "${workActivityMenu.processKey}";
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox") || element.is(":radio") || element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(processKey){
+                showlink(processKey);
+            }
+		});
+		function showlink(obj) {
+            if(obj==1){
+                $("#tr1").show();$("#tr2").hide();$("#tr3").hide();$("#tr4").hide();$("#tr5").hide();
+                $("#tr6").hide();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").hide();$("#tr3a").hide();$("#tr4a").hide();$("#tr5a").hide();
+                $("#tr6a").hide();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==2){
+                $("#tr1").show();$("#tr2").show();$("#tr3").hide();$("#tr4").hide();$("#tr5").hide();
+                $("#tr6").hide();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").hide();$("#tr4a").hide();$("#tr5a").hide();
+                $("#tr6a").hide();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==3){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").hide();$("#tr5").hide();
+                $("#tr6").hide();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").hide();$("#tr5a").hide();
+                $("#tr6a").hide();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==4){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").hide();
+                $("#tr6").hide();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").hide();
+                $("#tr6a").hide();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==5){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").hide();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").hide();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==6){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").show();$("#tr7").hide();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").show();$("#tr7a").hide();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==7){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").show();$("#tr7").show();$("#tr8").hide(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").show();$("#tr7a").show();$("#tr8a").hide(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==8){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").show();$("#tr7").show();$("#tr8").show(); $("#tr9").hide();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").show();$("#tr7a").show();$("#tr8a").show(); $("#tr9a").hide();$("#tr10a").hide();
+            }else if (obj==9){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").show();$("#tr7").show();$("#tr8").show(); $("#tr9").show();$("#tr10").hide();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").show();$("#tr7a").show();$("#tr8a").show(); $("#tr9a").show();$("#tr10a").hide();
+            }else if (obj==10){
+                $("#tr1").show();$("#tr2").show();$("#tr3").show();$("#tr4").show();$("#tr5").show();
+                $("#tr6").show();$("#tr7").show();$("#tr8").show(); $("#tr9").show();$("#tr10").show();
+                $("#tr1a").show();$("#tr2a").show();$("#tr3a").show();$("#tr4a").show();$("#tr5a").show();
+                $("#tr6a").show();$("#tr7a").show();$("#tr8a").show(); $("#tr9a").show();$("#tr10a").show();
+            }else {
+                parent.layer.msg('请输入1-10之间的流程个数!',{icon:2});
+            }
+        }
+        function showUser(obj) {
+            if(obj == 0){
+                $("#tda1").show(); $("#tdb1").show(); $("#tdc1").show(); $("#tdd1").show(); $("#tde1").show(); $("#tdf1").show(); $("#tdg1").show(); $("#tdh1").show(); $("#tdi1").show(); $("#tdj1").show();
+                $("#tda2").show(); $("#tdb2").show(); $("#tdc2").show(); $("#tdd2").show(); $("#tde2").show(); $("#tdf2").show(); $("#tdg2").show(); $("#tdh2").show(); $("#tdi2").show(); $("#tdj2").show();
+                $("#tda3").hide(); $("#tdb3").hide(); $("#tdc3").hide(); $("#tdd3").hide(); $("#tde3").hide(); $("#tdf3").hide(); $("#tdg3").hide(); $("#tdh3").hide(); $("#tdi3").hide(); $("#tdj3").hide();
+                $("#tda4").hide(); $("#tdb4").hide(); $("#tdc4").hide(); $("#tdd4").hide(); $("#tde4").hide(); $("#tdf4").hide(); $("#tdg4").hide(); $("#tdh4").hide(); $("#tdi4").hide(); $("#tdj4").hide();
+            }else{
+                $("#tda1").hide(); $("#tdb1").hide(); $("#tdc1").hide(); $("#tdd1").hide(); $("#tde1").hide(); $("#tdf1").hide(); $("#tdg1").hide(); $("#tdh1").hide(); $("#tdi1").hide(); $("#tdj1").hide();
+                $("#tda2").hide(); $("#tdb2").hide(); $("#tdc2").hide(); $("#tdd2").hide(); $("#tde2").hide(); $("#tdf2").hide(); $("#tdg2").hide(); $("#tdh2").hide(); $("#tdi2").hide(); $("#tdj2").hide();
+                $("#tda3").show(); $("#tdb3").show(); $("#tdc3").show(); $("#tdd3").show(); $("#tde3").show(); $("#tdf3").show(); $("#tdg3").show(); $("#tdh3").show(); $("#tdi3").show(); $("#tdj3").show();
+                $("#tda4").show(); $("#tdb4").show(); $("#tdc4").show(); $("#tdd4").show(); $("#tde4").show(); $("#tdf4").show(); $("#tdg4").show(); $("#tdh4").show(); $("#tdi4").show(); $("#tdj4").show();
+            }
+        }
+
+	</script>
+</head>
+<body class="hideScroll">
+	<form:form id="inputForm" modelAttribute="workActivityMenu" action="${ctx}/workactivitymenu/workActivityMenu/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+			<tbody>
+			<tr>
+				<td  class="width-15 active"><label class="pull-right">选择任务模块:</label></td>
+				<td class="width-35">
+						${workActivityMenu.parent.name}
+				</td>
+				<td class="width-15 active"><label class="pull-right">所属公司/部门:</label></td>
+				<td class="width-25">
+						${workActivityMenu.officeName}
+				</td>
+			</tr>
+			<tr>
+				<td  class="width-15 active"><label class="pull-right">模块名称:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">功能名称</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.functionalName}
+				</td>
+			</tr>
+			<tr>
+				<td  class="width-15 active"><label class="pull-right">自定义流程个数</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.processKey}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否使用模板</label></td>
+				<td  class="width-35" >
+					<c:choose>
+						<c:when test="${workActivityMenu.isExt ne 0}">
+							否
+						</c:when>
+						<c:otherwise>
+							是
+						</c:otherwise>
+					</c:choose>
+				</td>
+				<%--<td  class="width-15 active"><label class="pull-right"><font color="red">*</font>排序</label></td>
+				<td  class="width-35" ><form:input path="sort" htmlEscape="false" maxlength="50" class="form-control required"/></td>
+			--%>
+			</tr>
+			<tr id="tr1" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务一:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[0].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[0].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr1a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[0].role.name}
+				</td>
+				<td  class="width-15 active" ><label class="pull-right">执行人:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[0].user.name}
+				</td>
+			</tr>
+			<tr id="tr2" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务二:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[1].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[1].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr2a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[1].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[1].user.name}
+				</td>
+			</tr>
+			<tr id="tr3" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务三:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[2].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[2].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr3a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[2].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[2].user.name}
+				</td>
+			</tr>
+			<tr id="tr4" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务四:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[3].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[3].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr4a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[3].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[3].user.name}
+				</td>
+			</tr>
+			<tr id="tr5" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务五:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[4].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[4].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr5a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[4].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[4].user.name}
+				</td>
+			</tr>
+			<tr id="tr6" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务六:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[5].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[5].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr6a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[5].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[5].user.name}
+				</td>
+			</tr>
+			<tr id="tr7" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务七:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[6].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[6].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr7a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[6].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[6].user.name}
+				</td>
+			</tr>
+			<tr id="tr8" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务八:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[7].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[7].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr8a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[7].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[7].user.name}
+				</td>
+			</tr>
+			<tr id="tr9" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务九:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[8].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[8].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr9a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[8].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[8].user.name}
+				</td>
+			</tr>
+			<tr id="tr10" hidden="hidden">
+				<td  class="width-15 active"><label class="pull-right">任务十:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[9].name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">是否允许撤回:</label></td>
+				<td  class="width-35" >
+						${fns:getDictLabel(workActivityMenu.activities[9].returnBack, 'activity_return_back', '')}
+				</td>
+			</tr>
+			<tr id="tr10a" hidden="hidden">
+				<td  class="width-15 active" ><label class="pull-right">执行角色:</label></td>
+				<td  class="width-35" >
+						${workActivityMenu.activities[9].role.name}
+				</td>
+				<td  class="width-15 active"><label class="pull-right">执行人:</label></td>
+				<td  class="width-35">
+						${workActivityMenu.activities[9].user.name}
+				</td>
+			</tr>
+			<tr >
+				<td  class="width-15 active"><label class="pull-right">备注:</label></td>
+				<td class="width-35" colspan="3">
+						${workActivityMenu.remarks}
+				</td>
+			</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 217 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampAudit.jsp

@@ -0,0 +1,217 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>行政盖章管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#incomeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="workAdministrativeAtamp" action="${ctx}/workadministrativeatamp/workAdministrativeAtamp/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <form:hidden path="act.taskId"/>
+                <form:hidden path="act.taskName"/>
+                <form:hidden path="act.taskDefKey"/>
+                <form:hidden path="act.procInsId"/>
+                <form:hidden path="act.procDefId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>文档类型:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${fns:getMainDictLabel(workAdministrativeAtamp.docType, 'sign_doc_type', '')}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请编号:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group">
+                                <form:input path="num" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                                <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workAdministrativeAtamp.state}">${fns:getDictLabel(workAdministrativeAtamp.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>签章公司:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${workAdministrativeAtamp.comSign.name}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>印章类型:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${fns:getMainDictLabel(workAdministrativeAtamp.sealType, 'seal_type', '')}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请人:</label>
+                        <div class="layui-input-block">
+                            <form:input path="submiter.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.topCompany}"/>
+                            <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.id}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input"
+                                   value="<fmt:formatDate value="${workAdministrativeAtamp.submitDate}" pattern="yyyy-MM-dd"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label">说    明:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="remarks" readonly="true" htmlEscape="false" rows="3" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>项目计划附件信息</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <table id="listAttachment" class="table table-bordered table-condensed no-bottom-margin details">
+                            <thead>
+                            <tr>
+                                    <%-- <th>序号</th>--%>
+                                <th>文件预览</th>
+                                <th>上传人</th>
+                                <th>上传时间</th>
+                                <th width="150px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="file_attachment">
+                            <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                                <tr>
+                                        <%-- <td>${status.index + 1}</td>--%>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workClientAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                                    <c:if test="${workAdministrativeAtamp.act.taskDefKey eq 'gzr'}">
+                                                        <a href="${ctx}/isignature/iSignatureDocument/sign?recordId=${workClientAttachment.id}" class="op-btn op-btn-sign" target="_blank">签章</a>
+                                                    </c:if>
+                                                    <a href="javascript:void(0);" onclick="openDialogView('查看电子签章信息', '${ctx}/isignature/iSignatureDocument/form?recordId=${workClientAttachment.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                                    <c:choose>
+                                                        <c:when test="${signflag == '是'}">
+                                                            <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                        </c:when>
+                                                        <c:otherwise>
+                                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                        </c:otherwise>
+                                                    </c:choose>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批意见</h2></div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label">审批意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="act.comment" class="form-control" rows="4" maxlength="127" />
+                            <input type="file" name="upload_files" style="display: none;">
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${workAdministrativeAtamp.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${workAdministrativeAtamp.act.procInsId}"/>
+                    </div>
+                </div>
+
+                <div class="form-group layui-row page-end"></div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 205 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampForm.jsp

@@ -0,0 +1,205 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>行政盖章管理</title>
+	<meta name="decorator" content="default"/>
+    <style>
+        label.error{
+            left:0px;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(i==2){
+                    $("#inputForm").attr("action","${ctx}/workadministrativeatamp/workAdministrativeAtamp/tstore");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+	
+		  return false;
+		}
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workAdministrativeAtamp.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "102";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workIncomingMessage/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+	</script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="workAdministrativeAtamp" action="${ctx}/workadministrativeatamp/workAdministrativeAtamp/save" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>文档类型:</label>
+                        <div class="layui-input-block">
+                            <form:select path="docType" class="form-control simple-select required">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getMainDictList('sign_doc_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请编号:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group">
+                                <form:input path="num" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                                <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workAdministrativeAtamp.state}">${fns:getDictLabel(workAdministrativeAtamp.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>签章公司:</label>
+                        <div class="layui-input-block with-icon">
+                            <sys:treeselect id="comSign" name="comSign.id" value="${workAdministrativeAtamp.comSign.id}" labelName="comSign.name" labelValue="${workAdministrativeAtamp.comSign.name}"
+                                            title="签章公司" url="/sys/office/treeDataCompany?type=2" cssClass="form-control layui-input required" allowClear="true" />
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>印章类型:</label>
+                        <div class="layui-input-block">
+                            <form:select path="sealType" class="form-control simple-select required">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getMainDictList('seal_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请人:</label>
+                        <div class="layui-input-block">
+                            <form:input path="submiter.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                            <form:hidden path="submiter.id" htmlEscape="false"    class="form-control required"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.topCompany}"/>
+                            <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.id}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="submitDate" readonly="readonly" class="form-control layui-input"
+                                   value="<fmt:formatDate value="${workAdministrativeAtamp.submitDate}" pattern="yyyy-MM-dd"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label">说    明:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="remarks" htmlEscape="false" rows="3" maxlength="255" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>附件信息</h2></div>
+                    <div class="layui-item nav-btns">
+                        <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                    </div>
+                    <div id="addFile_attachment" style="display: none" class="upload-progress">
+                        <span id="fileName_attachment" ></span>
+                        <b><span id="baifenbi_attachment" ></span></b>
+                        <div class="progress">
+                            <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                            </div>
+                        </div>
+                    </div>
+                    <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                    <span id="attachment_title"></span>
+                    <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                        <table id="upTable" class="table table-bordered table-condensed details">
+                            <thead>
+                            <tr>
+                                    <%-- <th>序号</th>--%>
+                                <th>文件预览</th>
+                                <th>上传人</th>
+                                <th>上传时间</th>
+                                <th width="150px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="file_attachment">
+                            <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                                <tr>
+                                        <%-- <td>${status.index + 1}</td>--%>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workClientAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 364 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampList.jsp

@@ -0,0 +1,364 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>行政盖章管理</title>
+	<meta name="decorator" content="default"/>
+    <style>
+        .widthClass{
+            display: inline-block;
+        }
+        .shows .input-group{
+            width: 48%!important;
+        }
+    </style>
+    <style>
+        body{
+            background-color:transparent;
+            filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+            color:#ffffff;
+            background-color:rgba(255,255,255,0);
+            height:100%;
+        }
+    </style>
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#cus_name").show();
+            $("#cus_name").siblings().hide();
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                /*yes: function (index, layero) {
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if (target) {
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    } else {
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+
+                    if (iframeWin.contentWindow.doSubmit()) {
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function () {
+                            top.layer.close(index)
+                        }, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+
+                },*/
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+    </script>
+</head>
+<body>
+    <div class="wrapper wrapper-content">
+        <sys:message content="${message}"/>
+        <div class="layui-row">
+            <div class="full-width fl">
+                <div class="contentShadow layui-row" id="queryDiv">
+                    <form:form id="searchForm" modelAttribute="workAdministrativeAtamp" action="${ctx}/workadministrativeatamp/workAdministrativeAtamp/" method="post" class="form-inline">
+                        <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+                        <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+                        <table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+                        <div class="commonQuery">
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">申请日期:</label>
+                                <div class="layui-input-block with-icon">
+                                    <input id="beginDate" name="beginDate" type="text" readonly="readonly" placeholder="开始时间" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                           value="<fmt:formatDate value="${workAdministrativeAtamp.beginDate}" pattern="yyyy-MM-dd"/>"/>
+                                    </input>
+                                    <span class="group-sep">-</span>
+                                    <input id="endDate" name="endDate" type="text" readonly="readonly" placeholder="结束时间" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                           value="<fmt:formatDate value="${workAdministrativeAtamp.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                    </input>
+                                </div>
+                            </div>
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">申请人:</label>
+                                <div class="layui-input-block">
+                                    <form:input path="submiter.name" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+                                </div>
+                            </div>
+                            <div class="layui-item athird">
+                                <div class="input-group">
+                                    <a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+                                    <button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+                                    <button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+                                </div>
+                            </div>
+                            <div style="    clear:both;"></div>
+                         </div>
+                        <div id="moresees" style="clear:both;display:none;">
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">申请编号:</label>
+                                <div class="layui-input-block">
+                                    <form:input path="num" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+                                </div>
+                            </div>
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">文档类型:</label>
+                                <div class="layui-input-block">
+                                    <form:select path="docType" class="form-control layui-input required">
+                                        <form:option value="" label=""/>
+                                        <form:options items="${fns:getMainDictList('sign_doc_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                    </form:select>
+                                </div>
+                            </div>
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">签章公司:</label>
+                                <div class="layui-input-block">
+                                    <form:input path="comSign.name" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+                                </div>
+                            </div>
+                            <div class="layui-item query athird">
+                                <label class="layui-form-label">申请状态:</label>
+                                <div class="layui-input-block">
+                                    <form:select path="state" class="form-control simple-select">
+                                        <form:option value="" label=""/>
+                                        <form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                    </form:select>
+                                </div>
+                            </div>
+                        </div>
+                    </form:form>
+	            </div>
+	        </div>
+	
+	<!-- 工具栏 -->
+            <div class="full-width fl">
+                <div class="contentShadow layui-form contentDetails">
+                    <div class="nav-btns">
+                        <shiro:hasPermission name="workadministrativeatamp:workAdministrativeAtamp:add">
+                            <table:addRow url="${ctx}/workadministrativeatamp/workAdministrativeAtamp/form" title="行政盖章"></table:addRow><!-- 增加按钮 -->
+                        </shiro:hasPermission>
+                        <button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+                        <div style="clear: both;"></div>
+                    </div>
+                    <table class="oa-table layui-table" id="contentTable"></table>
+
+                    <!-- 分页代码 -->
+                    <table:page page="${page}"></table:page>
+                    <div style="clear: both;"></div>
+	            </div>
+	        </div>
+        </div>
+        <div id="changewidth"></div>
+    </div>
+    <script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+    <script>
+        layui.use('table', function(){
+            layui.table.render({
+                limit:${ page.pageSize }
+                ,elem: '#contentTable'
+                ,page: false
+                ,cols: [[
+                    {field:'index',align:'center', title: '序号',width:40}
+                    ,{field:'num',align:'center', title: '申请编号',minWidth:200,templet:function(d){
+                            var xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看行政盖章', '${ctx}/workadministrativeatamp/workAdministrativeAtamp/view?id="+d.id+"','95%','95%')\">" +
+                                "<span title=" + d.num + ">" + d.num + "</span></a>";
+                            return xml;
+                        }}
+                    ,{field:'docType',align:'center', title: '文档类型',minWidth:150}
+                    ,{field:'comSign',align:'center', title: '签章公司',minWidth:150}
+                    ,{field:'submiter',align:'center', title: '申请人', minWidth:150}
+                    ,{field:'submitDate', align:'center',sort:true,title: '申请日期',minWidth:200}
+                    ,{align:'center', title: '申请状态',  width:70,templet:function(d){
+                            var st = getAuditState(d.state)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workadministrativeatamp/workAdministrativeAtamp/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                            return xml;
+                        }}
+                    ,{align:'center',title:"操作",width:130,templet:function(d){
+                            ////对操作进行初始化
+                            var xml = "";
+
+                            if(d.canedit != undefined && d.canedit == "1"){
+                                xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改行政盖章', '${ctx}/workadministrativeatamp/workAdministrativeAtamp/form?id=" + d.id+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i>修改</a>"
+                            }
+                            if(d.canmodify != undefined && d.canmodify =="1"){
+                                xml+="<a href=\"#\" onclick=\"openDialogre('修改行政盖章', '${ctx}/workadministrativeatamp/workAdministrativeAtamp/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                            }
+                            if(d.canrecall != undefined && d.canrecall =="1"){
+                                xml+="<a href=\"#\" onclick=\"openDialogre('修改行政盖章', '${ctx}/workadministrativeatamp/workAdministrativeAtamp/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                            }
+                            if(d.candelete != undefined && d.candelete == "1"){
+                                xml +="<a href=\"${ctx}/workadministrativeatamp/workAdministrativeAtamp/delete?id=" + d.id+"\" onclick=\"return confirmx('确认要删除该行政盖章吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                            }
+                            if(d.cancancel != undefined && d.cancancel =="1"){
+                                xml+="<a href=\"${ctx}/workadministrativeatamp/workAdministrativeAtamp/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该行政盖章审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+                            }
+
+                            return xml;
+                        }}
+                ]]
+                ,data: [
+                    <c:if test="${ not empty page.list}">
+                    <c:forEach items="${page.list}" var="workAdministrativeAtamp" varStatus="index">
+                    <c:if test="${index.index != 0}">,</c:if>
+                    {
+                        "index":"${index.index+1}"
+                        ,"id":"${workAdministrativeAtamp.id}"
+                        ,"num":"<c:out value="${workAdministrativeAtamp.num}" escapeXml="true"/>"
+                        ,'docType':"${fns:getMainDictLabel(workAdministrativeAtamp.docType, 'sign_doc_type', '')}"
+                        ,'comSign':"${workAdministrativeAtamp.comSign.name}"
+                        ,'submiter':"${workAdministrativeAtamp.submiter.name}"
+                        ,"submitDate":"<fmt:formatDate value="${workAdministrativeAtamp.submitDate}" pattern="yyyy-MM-dd"/>"
+                        ,"state":"${workAdministrativeAtamp.state}"
+                        ,"procId":"${workAdministrativeAtamp.processInstanceId}"
+                        <c:if test="${flag == '1' or fns:getUser().id == workAdministrativeAtamp.createBy.id}">
+                        <shiro:hasPermission name="workAdministrativeAtamp:workAdministrativeAtamp:edit">,"canedit":<c:choose><c:when test="${workAdministrativeAtamp.state == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                        ,"canmodify":<c:choose><c:when test="${workAdministrativeAtamp.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                        ,"canrecall":<c:choose><c:when test="${ workAdministrativeAtamp.state == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="workAdministrativeAtamp:workAdministrativeAtamp:del">,"candelete":<c:choose><c:when test="${workAdministrativeAtamp.state == 1 or workAdministrativeAtamp.state == 3 or workAdministrativeAtamp.state == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                        ,"cancancel":<c:choose><c:when test="${workAdministrativeAtamp.state == 2}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                        </c:if>
+                    }
+                    </c:forEach>
+                    </c:if>
+                ]
+            });
+
+        })
+
+        resizeListTable(130);/*消除由于有竖向滚动条造成table出现横向滚动条*/
+        $("a").on("click",addLinkVisied);
+    </script>
+    <script>
+        resizeListWindow1();
+        $(window).resize(function(){
+            resizeListWindow1();
+        });
+    </script>
+</body>
+</html>

+ 203 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampModifyApply.jsp

@@ -0,0 +1,203 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>行政盖章管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }
+	
+		  return false;
+		}
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workAdministrativeAtamp.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "102";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/workIncomingMessage/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+	</script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="workAdministrativeAtamp" action="${ctx}/workadministrativeatamp/workAdministrativeAtamp/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <form:hidden path="act.taskId"/>
+                <form:hidden path="act.taskName"/>
+                <form:hidden path="act.taskDefKey"/>
+                <form:hidden path="act.procInsId"/>
+                <form:hidden path="act.procDefId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>文档类型:</label>
+                        <div class="layui-input-block">
+                            <form:select path="docType" class="form-control simple-select required">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getMainDictList('doc_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请编号:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group">
+                                <form:input path="num" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                                <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workAdministrativeAtamp.state}">${fns:getDictLabel(workAdministrativeAtamp.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>签章公司:</label>
+                        <div class="layui-input-block with-icon">
+                            <sys:treeselect id="comSign" name="comSign.id" value="${workAdministrativeAtamp.comSign.id}" labelName="comSign.name" labelValue="${workAdministrativeAtamp.comSign.name}"
+                                            title="签章公司" url="/sys/office/treeDataCompany?type=2" cssClass="form-control layui-input required" allowClear="true" />
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>印章类型:</label>
+                        <div class="layui-input-block">
+                            <form:select path="sealType" class="form-control simple-select required">
+                                <form:option value="" label=""/>
+                                <form:options items="${fns:getMainDictList('seal_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请人:</label>
+                        <div class="layui-input-block">
+                            <form:input path="submiter.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                            <form:hidden path="submiter.id" htmlEscape="false"    class="form-control required"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.topCompany}"/>
+                            <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.id}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="submitDate" readonly="readonly" class="form-control layui-input"
+                                   value="<fmt:formatDate value="${workAdministrativeAtamp.submitDate}" pattern="yyyy-MM-dd"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label">说    明:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="remarks" htmlEscape="false" rows="3" maxlength="255" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>附件信息</h2></div>
+                    <div class="layui-item nav-btns">
+                        <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                    </div>
+                    <div id="addFile_attachment" style="display: none" class="upload-progress">
+                        <span id="fileName_attachment" ></span>
+                        <b><span id="baifenbi_attachment" ></span></b>
+                        <div class="progress">
+                            <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                            </div>
+                        </div>
+                    </div>
+                    <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                    <span id="attachment_title"></span>
+                    <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                        <table id="upTable" class="table table-bordered table-condensed details">
+                            <thead>
+                            <tr>
+                                    <%-- <th>序号</th>--%>
+                                <th>文件预览</th>
+                                <th>上传人</th>
+                                <th>上传时间</th>
+                                <th width="150px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="file_attachment">
+                            <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                                <tr>
+                                        <%-- <td>${status.index + 1}</td>--%>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workClientAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampTask.jsp

@@ -0,0 +1,15 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程追踪</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body class="gray-bg">
+<div class="container form layui-form">
+	<act:flowChart procInsId="${processInstanceId}"/>
+	<act:histoicFlow procInsId="${processInstanceId}"/>
+</div>
+</body>
+</html>
+

+ 146 - 0
src/main/webapp/webpage/modules/workadministrativeatamp/workAdministrativeAtampView.jsp

@@ -0,0 +1,146 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>行政盖章管理</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container view-form">
+            <form:form id="inputForm" modelAttribute="workAdministrativeAtamp" action="${ctx}/workadministrativeatamp/workAdministrativeAtamp/save" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>文档类型:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${fns:getMainDictLabel(workAdministrativeAtamp.docType, 'sign_doc_type', '')}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请编号:</label>
+                        <div class="layui-input-block">
+                            <div class="input-group">
+                                <form:input path="num" htmlEscape="false"  readonly="true"  class="form-control  layui-input"/>
+                                <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty workAdministrativeAtamp.state}">${fns:getDictLabel(workAdministrativeAtamp.state, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>签章公司:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${workAdministrativeAtamp.comSign.name}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>印章类型:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input" value="${fns:getMainDictLabel(workAdministrativeAtamp.sealType, 'seal_type', '')}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请人:</label>
+                        <div class="layui-input-block">
+                            <form:input path="submiter.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="office.name" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.topCompany}"/>
+                            <input type="hidden" name="office.id" readonly="readonly" class="form-control layui-input"  value="${workAdministrativeAtamp.office.id}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+                        <div class="layui-input-block">
+                            <input type="text" readonly="readonly" class="form-control layui-input"
+                                   value="<fmt:formatDate value="${workAdministrativeAtamp.submitDate}" pattern="yyyy-MM-dd"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label">说    明:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="remarks" readonly="true" htmlEscape="false" rows="3" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>附件信息</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <table id="listAttachment" class="table table-bordered table-condensed no-bottom-margin details">
+                            <thead>
+                            <tr>
+                                    <%-- <th>序号</th>--%>
+                                <th>文件预览</th>
+                                <th>上传人</th>
+                                <th>上传时间</th>
+                                <th width="150px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="file_attachment">
+                            <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                                <tr>
+                                        <%-- <td>${status.index + 1}</td>--%>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workClientAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <c:set var="signflag" value="${fns:getSysParam('sign_flag',fns:getUser())}"/>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'doc')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'docx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xls')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'xlsx')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'ppt')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'pptx')}">
+                                                    <a href="javascript:void(0);" onclick="openDialogView('查看电子签章信息', '${ctx}/isignature/iSignatureDocument/form?recordId=${workClientAttachment.id}','95%', '95%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                                    <c:choose>
+                                                        <c:when test="${signflag == '是'}">
+                                                            <a href="javascript:location.href='${ctx}/isignature/iSignatureDocument/download?recordId=${workClientAttachment.id}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                        </c:when>
+                                                        <c:otherwise>
+                                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                        </c:otherwise>
+                                                    </c:choose>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 320 - 0
src/main/webapp/webpage/modules/workaftermath/workAftermathForm.jsp

@@ -0,0 +1,320 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评标后工作管理管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(function(){
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei-5)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+            }
+           /* $("img").not(".upload_ico").each(function () {
+                var num = 1 ;
+                $(this).click(function () {
+                    var flag = num%2;
+                    if(flag == 1){
+                        $(this).css("width","90%");
+                        $(this).css("height","90%");
+                        num++;
+                    }else if(flag ==0){
+                        $(this).css("width","50px");
+                        $(this).css("height","50px");
+                        num++;
+                    }
+                })
+            });*/
+        })
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+					laydate.render({
+			            elem: '#dateStart', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#dateEnd', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+					laydate.render({
+			            elem: '#invoiceDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+			        });
+
+			//通过类型补全名称
+            $("#type").change(function(){
+                if($("#type").val() == 1){
+                    $("#payName").val("${workAftermath.workClientInfo.name}");
+                }
+                if($("#type").val() == 2){
+                    $("#payName").val("");
+                } if($("#type").val() == 3){
+                    $("#payName").val("");
+                }
+            });
+		});
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<form:form id="inputForm" modelAttribute="workAftermath" action="${ctx}/workaftermath/workAftermath/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<form:hidden path="workBidingProject.id"/>
+		<sys:message content="${message}"/>
+			<div class="col-sm-12 m-t-xs">
+				<div class="col-sm-2 gray-bg text-center oneTab">
+					<label>中标信息</label>
+				</div>
+				<div class="col-sm-10 " >
+
+							<table id="contentTablee" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+								<thead>
+								<tr>
+									<th  class="sort-column bidingOfficeName">企业名称</th>
+									<th  class="sort-column contacts">联系人</th>
+									<th  class="sort-column phone">联系电话</th>
+									<th  class="sort-column Email">电子邮箱</th>
+									<th  class="sort-column deposit">保证金(万元)</th>
+									<th>操作</th>
+								</tr>
+								</thead>
+								<tbody>
+								<c:choose>
+									<c:when test="${not empty workAftermath.list}">
+										<c:forEach items="${workAftermath.list}" var="workProjectDeposit">
+											<tr>
+												<%--<td> <input type="checkbox" id="${workVisa.id}" class="i-checks"></td>--%>
+												<td>
+														${workProjectDeposit.bidingOfficeName}
+												</td>
+												<td>
+														${workProjectDeposit.contacts}
+												</td>
+												<td>
+														${workProjectDeposit.phone}
+												</td>
+												<td>
+														${workProjectDeposit.email}
+												</td>
+												<td>
+														${workProjectDeposit.deposit}
+												</td>
+												<td>
+													<c:choose>
+														<c:when test="${workProjectDeposit.bidingState eq 1}">
+
+															<a href="" class="btn btn-info btn-xs disabled">已中标</a>
+														</c:when>
+														<c:when test="${workProjectDeposit.bidingState eq 2}">
+															<a href="" class="btn btn-danger btn-xs disabled">未中标</a>
+														</c:when>
+														<c:otherwise>
+															<a href="${ctx}/workaftermath/workAftermath/updateBiding?id=${workProjectDeposit.id}" onclick="return confirmx('确认此企业中标?', this.href)"   class="btn btn-info btn-xs"><%--btn btn-default btn-xs<i class="fa fa-trash"></i>--%>确认中标</a>
+														</c:otherwise>
+													</c:choose>
+												</td>
+											</tr>
+										</c:forEach>
+									</c:when>
+									<c:otherwise>
+										<tr>
+											<td colspan="15" align="center">
+												暂无数据
+											</td>
+										</tr>
+									</c:otherwise>
+								</c:choose>
+								</tbody>
+							</table>
+					<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">中标金额(万元):</label></td>
+							<td class="width-35">
+								<form:input path="bidAmount" htmlEscape="false"    class="form-control  number"/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">工期(起):</label></td>
+							<td class="width-35">
+								<input id="dateStart" name="dateStart" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+									   value="<fmt:formatDate value="${workAftermath.dateStart}" pattern="yyyy-MM-dd"/>"/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">项目经理:</label></td>
+							<td class="width-35">
+								<%--<form:input path="projectMaster" htmlEscape="false"    class="form-control disabled"/>--%>
+								${workAftermath.projectMaster}
+							</td>
+							<td class="width-15 active"><label class="pull-right">工期(止):</label></td>
+							<td class="width-35">
+							<input id="dateEnd" name="dateEnd" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							value="<fmt:formatDate value="${workAftermath.dateEnd}" pattern="yyyy-MM-dd"/>"/>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="col-sm-12 m-t-xs">
+				<div class="col-sm-2 gray-bg text-center oneTab">
+					<label>保证金退还</label>
+				</div>
+				<div class="col-sm-10 " >
+					<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+						<tbody>
+						<tr>
+							<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+								<thead>
+								<tr>
+									<th  class="sort-column bidingOfficeName">企业名称</th>
+									<th  class="sort-column contacts">联系人</th>
+									<th  class="sort-column phone">联系电话</th>
+									<th  class="sort-column Email">电子邮箱</th>
+									<th  class="sort-column deposit">保证金(万元)</th>
+									<th>操作</th>
+									<th  class="sort-column depositStatus">保证金状态</th>
+								</tr>
+								</thead>
+								<tbody>
+								<c:choose>
+									<c:when test="${not empty workAftermath.list}">
+										<c:forEach items="${workAftermath.list}" var="workProjectDeposit">
+											<tr>
+													<%--<td> <input type="checkbox" id="${workVisa.id}" class="i-checks"></td>--%>
+												<td>
+														${workProjectDeposit.bidingOfficeName}
+												</td>
+												<td>
+														${workProjectDeposit.contacts}
+												</td>
+												<td>
+														${workProjectDeposit.phone}
+												</td>
+												<td>
+														${workProjectDeposit.email}
+												</td>
+												<td>
+														${workProjectDeposit.deposit}
+												</td>
+												<td>
+													<c:choose>
+														<c:when test="${workProjectDeposit.bidingState eq 1 or workProjectDeposit.bidingState eq 2}">
+															<c:choose>
+																<c:when test="${workProjectDeposit.depositStatus eq 4 or workProjectDeposit.depositStatus eq 2}">
+																	<a href="${ctx}/workaftermath/workAftermath/updateStatus?id=${workProjectDeposit.id}" onclick="return confirmx('确认退还吗?', this.href)"   class="btn btn-danger btn-xs">开始退还保证金</a>
+																</c:when>
+																<c:otherwise>
+																	<a href="javascript:void(0)" onclick="javascript:parent.layer.msg('该阶段无法退还保证金',{icon:2})" class="btn btn-default btn-xs">开始退还保证金</a>
+																</c:otherwise>
+															</c:choose>
+														</c:when>
+														<c:otherwise>
+															<a href="javascript:parent.layer.msg('项目还未定标,暂无法退还',{icon:5})" class="btn btn-default btn-xs">开始退还保证金</a>
+														</c:otherwise>
+													</c:choose>
+
+												</td>
+												<td>
+													<c:choose>
+														<c:when test="${workProjectDeposit.depositStatus eq 3}">
+															<a href="" class="btn btn-info btn-xs disabled">保证金已退还</a>
+														</c:when>
+														<c:otherwise>
+															<a href="" class="btn btn-danger btn-xs disabled">保证金未退还</a>
+														</c:otherwise>
+													</c:choose>
+												</td>
+											</tr>
+										</c:forEach>
+									</c:when>
+									<c:otherwise>
+										<tr>
+											<td colspan="15" align="center">
+												暂无数据
+											</td>
+										</tr>
+									</c:otherwise>
+								</c:choose>
+								</tbody>
+							</table>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="col-sm-12 m-t-xs">
+				<div class="col-sm-2 gray-bg text-center oneTab">
+					<label>代理费缴纳</label>
+				</div>
+				<div class="col-sm-10 " >
+					<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">代理费缴纳方类型:</label></td>
+							<td class="width-35">
+								<form:select id="type" path="agencyType" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('agency_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>缴纳方全称:</label></td>
+							<td class="width-35">
+								<form:input id ="payName" path="payName" htmlEscape="false"    class="form-control required"/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">发票号:</label></td>
+							<td class="width-35">
+								<form:input path="invoiceNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">开票时间:</label></td>
+							<td class="width-35">
+								<input id="invoiceDate" name="invoiceDate" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+									   value="<fmt:formatDate value="${workAftermath.invoiceDate}" pattern="yyyy-MM-dd"/>"/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+							<td class="width-35" colspan="3">
+								<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+	</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 166 - 0
src/main/webapp/webpage/modules/workaftermath/workAftermathList.jsp

@@ -0,0 +1,166 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评标后工作管理管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>评标后工作管理列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workAftermath" action="${ctx}/workaftermath/workAftermath/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workaftermath:workAftermath:add">
+				<table:addRow url="${ctx}/workaftermath/workAftermath/form" title="评标后工作管理"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaftermath:workAftermath:edit">
+			    <table:editRow url="${ctx}/workaftermath/workAftermath/form" title="评标后工作管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaftermath:workAftermath:del">
+				<table:delRow url="${ctx}/workaftermath/workAftermath/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaftermath:workAftermath:import">
+				<table:importExcel url="${ctx}/workaftermath/workAftermath/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaftermath:workAftermath:export">
+	       		<table:exportExcel url="${ctx}/workaftermath/workAftermath/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column workBidingProject.id">招标项目</th>
+				<th  class="sort-column companyId">company_id</th>
+				<th  class="sort-column officeId">office_id</th>
+				<th  class="sort-column bidAmount">中标金额</th>
+				<th  class="sort-column dateStart">工期(起)</th>
+				<th  class="sort-column dateEnd">工期(止)</th>
+				<th  class="sort-column projectMaster">项目经理</th>
+				<th  class="sort-column agencyType">代理费缴纳方类型</th>
+				<th  class="sort-column payName">缴纳方全称</th>
+				<th  class="sort-column invoiceNumber">发票号</th>
+				<th  class="sort-column invoiceDate">开票时间</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workAftermath">
+			<tr>
+				<td> <input type="checkbox" id="${workAftermath.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看评标后工作管理', '${ctx}/workaftermath/workAftermath/form?id=${workAftermath.id}','80%','80%')">
+					${workAftermath.remarks}
+				</a></td>
+				<td>
+					${workAftermath.workBidingProject.name}
+				</td>
+				<td>
+					${workAftermath.companyId}
+				</td>
+				<td>
+					${workAftermath.officeId}
+				</td>
+				<td>
+					${workAftermath.bidAmount}
+				</td>
+				<td>
+					<fmt:formatDate value="${workAftermath.dateStart}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<fmt:formatDate value="${workAftermath.dateEnd}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					${workAftermath.projectMaster}
+				</td>
+				<td>
+					${fns:getDictLabel(workAftermath.agencyType, '', '')}
+				</td>
+				<td>
+					${workAftermath.payName}
+				</td>
+				<td>
+					${workAftermath.invoiceNumber}
+				</td>
+				<td>
+					<fmt:formatDate value="${workAftermath.invoiceDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<shiro:hasPermission name="workaftermath:workAftermath:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看评标后工作管理', '${ctx}/workaftermath/workAftermath/form?id=${workAftermath.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workaftermath:workAftermath:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改评标后工作管理', '${ctx}/workaftermath/workAftermath/form?id=${workAftermath.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workaftermath:workAftermath:del">
+						<a href="${ctx}/workaftermath/workAftermath/delete?id=${workAftermath.id}" onclick="return confirmx('确认要删除该评标后工作管理吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 160 - 0
src/main/webapp/webpage/modules/workaftermath/workAftermathmgList.jsp

@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>招标项目信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>招标项目信息列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>--%>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workBidingProject" action="${ctx}/workbidingprojectmg/workBidingProjectmg/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<%--<span>客户信息Id:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectclientId" id="client.id" name="client.id"  value="${workBidingProject.client.id}"  title="选择客户信息Id" labelName="client.id"
+					labelValue="${workBidingProject.client.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<%--<span>合同外键:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectcontractId" id="contract.id" name="contract.id"  value="${workBidingProject.contract.id}"  title="选择合同外键" labelName="contract.id"
+					labelValue="${workBidingProject.contract.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<span>项目编号:</span>
+				<form:input path="projectNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>&nbsp;&nbsp;项目名称:</span>
+				<form:input path="projectName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<%--<span>&nbsp;&nbsp;招标方式:</span>
+				<form:select path="biddingType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('bidding_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+				<br/><br/>--%>
+			<span style="margin-top: 15px">客户名称: </span>
+				<div class="form-group shows">
+					<sys:gridselectcallproject url="${ctx}/workcontractinfo/workContractInfo/selectclient" id="client" name="client"  value="${workContractInfo.client.id}"  title="选择客户ID" labelName="client.name"
+									labelValue="${workContractInfo.client.name}"  cssClass="form-control required" fieldLabels="客户名称" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselectcallproject>
+				</div>
+			<%--<span style="margin-top: 15px">&nbsp;&nbsp;合同名称: </span>
+				<div class="form-group shows">
+					<sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" name="contractId.id" type="1,2" value="${workEngineeringProject.contractId.id}"  title="选择合同名称" labelName="contractId.name"
+									labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+				</div>--%>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th style="width: 5%"> <input type="checkbox" class="i-checks"></th>
+				<th style="text-align: center;width: 15%"  class="sort-column createDate">登记日期</th>
+				<th style="text-align: center;width: 25%"  class="">客户名称</th>
+				<th style="text-align: center;width: 15%"  class="">项目编号</th>
+				<th style="text-align: center;width: 25%"  class="">项目名称</th>
+				<th style="text-align: center;width: 10%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+
+			<c:choose>
+			<c:when test="${not empty page.list}">
+				<c:forEach items="${page.list}" var="workBidingProject">
+				<tr>
+					<td> <input type="checkbox" id="${workBidingProject.id}" class="i-checks"></td>
+					<td>
+						<fmt:formatDate value="${workBidingProject.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workBidingProject.client.id}','80%', '80%')">
+							<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workBidingProject.client.name,30)}</span>
+						</a>
+					</td>
+					<td>
+						${workBidingProject.projectNumber}
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingProject.id}&name=view','80%','80%')">
+							${workBidingProject.projectName}
+						</a>
+
+					</td>
+					<td>
+						<div style="text-align: center">
+						<a href="javascript:void(0)" onclick="openDialog('评标结果管理', '${ctx}/workaftermath/workAftermath/form?pid=${workBidingProject.id}','80%', '80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 评标结果管理</a>
+						</div>
+					</td>
+				</tr>
+				</c:forEach>
+			</c:when>
+				<c:otherwise>
+					<tr>
+						<td colspan="15" align="center">
+							暂无数据
+						</td>
+					</tr>
+				</c:otherwise>
+			</c:choose>
+
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 180 - 0
src/main/webapp/webpage/modules/workaftermath/workBidingProjectRdList.jsp

@@ -0,0 +1,180 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>招标项目信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>招标项目信息列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workBidingProject" action="${ctx}/workbidingprojectrd/workBidingProjectrd/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+			<%--<span>客户信息Id:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectclientId" id="client.id" name="client.id"  value="${workBidingProject.client.id}"  title="选择客户信息Id" labelName="client.id"
+					labelValue="${workBidingProject.client.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<%--<span>合同外键:</span>
+				<sys:gridselect url="${ctx}/workbidingproject/workBidingProject/selectcontractId" id="contract.id" name="contract.id"  value="${workBidingProject.contract.id}"  title="选择合同外键" labelName="contract.id"
+					labelValue="${workBidingProject.contract.id}" cssClass="form-control required" fieldLabels="" fieldKeys="" searchLabel="" searchKey="" ></sys:gridselect>
+			--%>
+			<span>项目编号:</span>
+				<form:input path="projectNumber" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<span>&nbsp;&nbsp;项目名称:</span>
+				<form:input path="projectName" htmlEscape="false" maxlength="255"  class=" form-control input-sm"/>
+			<%--<span>&nbsp;&nbsp;招标方式:</span>
+				<form:select path="biddingType"  class="form-control m-b">
+					<form:option value="" label=""/>
+					<form:options items="${fns:getMainDictList('bidding_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+				</form:select>
+				<br/><br/>--%>
+			<span style="margin-top: 15px">客户名称: </span>
+				<div class="form-group shows">
+					<sys:gridselectcallproject url="${ctx}/workcontractinfo/workContractInfo/selectclient" id="client" name="client"  value="${workContractInfo.client.id}"  title="选择客户ID" labelName="client.name"
+									labelValue="${workContractInfo.client.name}"  cssClass="form-control required" fieldLabels="客户名称" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselectcallproject>
+				</div>
+			<%--<span style="margin-top: 15px">&nbsp;&nbsp;合同名称: </span>
+				<div class="form-group shows">
+					<sys:gridselectContract url="${ctx}/workengineeringproject/workEngineeringProject/selectcontractId" id="contractId" name="contractId.id" type="1,2" value="${workEngineeringProject.contractId.id}"  title="选择合同名称" labelName="contractId.name"
+									labelValue="${workEngineeringProject.contractId.name}" cssClass="form-control required" fieldLabels="合同信息" fieldKeys="name" searchLabel="合同名称" searchKey="name" ></sys:gridselectContract>
+				</div>--%>
+		</div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column createDate">登记日期</th>
+				<th  class="sort-column client.id">客户名称</th>
+				<th  class="sort-column projectNumber">项目编号</th>
+				<th  class="sort-column projectName">项目名称</th>
+				<th  class="sort-column status">归档状态</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workBidingProject">
+			<c:choose>
+			<c:when test="${not empty page.list}">
+				<tr>
+					<td> <input type="checkbox" id="${workBidingProject.id}" class="i-checks"></td>
+					<td>
+						<fmt:formatDate value="${workBidingProject.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看客户管理', '${ctx}/workclientinfo/workClientInfo/detail?id=${workBidingProject.client.id}','80%', '80%')">
+							<span title="${workEngineeringProject.workClientInfo.name}">${fns:abbr(workBidingProject.client.name,30)}</span>
+						</a>
+					</td>
+					<td>
+						<%--<a  href="javascript:void(0)" onclick="openDialogView('查看项目归档信息', '${ctx}/workaftermath/workAftermath/startposs?id=${workBidingProject.id}&name=view','80%','80%')">
+								${workBidingProject.projectNumber}
+						</a>--%>
+							${workBidingProject.projectNumber}
+					</td>
+					<td>
+						<a  href="javascript:void(0)" onclick="openDialogView('查看招标项目信息', '${ctx}/workbidingproject/workBidingProject/form?id=${workBidingProject.id}&name=view','80%','80%')">
+							${workBidingProject.projectName}
+						</a>
+
+					</td>
+					<td>
+						<%--${fns:getDictLabel(workBidingProject.status, 'status', '')}--%>
+							<c:choose>
+								<c:when test="${workBidingProject.status eq 3}">
+									已归档
+								</c:when>
+								<c:otherwise>
+									未归档
+								</c:otherwise>
+							</c:choose>
+					</td>
+					<td>
+
+						<c:choose>
+							<c:when test="${workBidingProject.status eq 3}">
+
+								<a href="" class="btn btn-default btn-xs disabled">项目归档</a>
+							</c:when>
+							<c:otherwise>
+								<%--<a href="${ctx}/workaftermath/workAftermath/startposs?id=${workBidingProject.id}" onclick="return confirmx('确认要归档吗?', this.href)"   class="btn btn-info btn-xs"><i class="fa fa-trash"></i>项目归档</a>--%>
+								<a href="javascript:void(0)" onclick="openDialog('项目归档', '${ctx}/workaftermath/workAftermath/startposs?id=${workBidingProject.id}','80%', '80%')" class="btn btn-info btn-xs" > 项目归档</a>
+							</c:otherwise>
+						</c:choose>
+					</td>
+				</tr>
+			</c:when>
+				<c:otherwise>
+					<tr>
+						<td colspan="15" align="center">
+							暂无数据
+						</td>
+					</tr>
+				</c:otherwise>
+			</c:choose>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 236 - 0
src/main/webapp/webpage/modules/workaftermath/workRecordForm.jsp

@@ -0,0 +1,236 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目归档</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
+	<style type="text/css">
+		.table{
+			margin-bottom: 0px;
+		}
+		.workfull>.form-horizontal{
+			margin: 0;
+			padding: 0;
+		}
+	</style>
+	<script type="text/javascript">
+        $(function(){
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+            }
+            $("img").not(".upload_ico").each(function () {
+                var num = 1 ;
+                $(this).click(function () {
+                    var flag = num%2;
+                    if(flag == 1){
+                        $(this).css("width","90%");
+                        $(this).css("height","90%");
+                        num++;
+                    }else if(flag ==0){
+                        $(this).css("width","50px");
+                        $(this).css("height","50px");
+                        num++;
+                    }
+                })
+            });
+        })
+        var validateForm;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+        });
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-content">
+		<div class="col-sm-12 m-t-xs">
+			<div class="col-sm-2 gray-bg text-center oneTab">
+				<label>档案信息</label>
+			</div>
+			<div class="col-sm-10 workfull" >
+				<form:form id="inputForm" modelAttribute="workFullRecord" action="${ctx}/workaftermath/workAftermath/updateRd" method="post" class="form-horizontal">
+					<form:hidden path="id"/>
+					<sys:message content="${message}"/>
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+							<td class="width-25" colspan="3">
+								<form:input path="recordName" htmlEscape="false"    class="form-control " readonly="true" value="${workFullRecord.recordName}"/>
+								<input type="hidden" name="workBidingProject.id" value="${workBidingProject.id}"   class="form-control "/>
+
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷号:</label></td>
+							<td class="width-35">
+								<form:input path="recordNumber" htmlEscape="false" readonly="true" value="${workFullRecord.recordNumber}"   class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档号:</label></td>
+							<td class="width-35">
+								<form:input path="backRecordNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属卷库:</label></td>
+							<td class="width-25">
+								<form:select path="recordLibNumber" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_lib_number')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档年代:</label></td>
+							<td class="width-25">
+								<form:input path="backRecordYear" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属部门:</label></td>
+							<td class="width-25">
+								<sys:treeselect id="backRecordDept" name="backRecordDept.id" value="${workFullRecord.backRecordDept.id}" labelName="backRecordDept.name" labelValue="${workFullRecord.backRecordDept.name}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">编制机构:</label></td>
+							<td class="width-25">
+								<form:input path="compleOrganization" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保管期限:</label></td>
+							<td class="width-25">
+								<form:select path="retentionPeriod" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('retention_period')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">起止日期:</label></td>
+							<td class="width-25" style="display: inline-block;">
+									<%--<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="<fmt:formatDate value="${startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+									<%--<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="/>--%>
+								<div class="col-sm-5" style="padding: 0;">
+									<input class="form-control" id="startTime" name="startTime" value="<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+									<input class="form-control" id="endTime" name="endTime" value="<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷密级:</label></td>
+							<td class="width-25">
+								<form:select path="recordSecretLevel" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_secret_level')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">全宗号:</label></td>
+							<td class="width-25">
+								<form:input path="fondsNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">目录号:</label></td>
+							<td class="width-25">
+								<form:input path="listsNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档馆号:</label></td>
+							<td class="width-25">
+								<form:input path="recordProNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保险箱号:</label></td>
+							<td class="width-25">
+								<form:input path="strongboxNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">缩微号:</label></td>
+							<td class="width-25">
+								<form:input path="microNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">凭证类别:</label></td>
+							<td class="width-25">
+								<form:select path="ekkoType" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('ekko_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</td>
+							<td class="width-15 active"><label class="pull-right">凭证编号:</label></td>
+							<td class="width-25">
+								<div class="col-sm-5" style="padding: 0;">
+									<form:input path="ekkoBstypOne" htmlEscape="false" class="form-control "/>
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+									<form:input path="ekkoBstypTwo" htmlEscape="false"  class="form-control "/>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">报告号:</label></td>
+							<td class="width-25">
+								<form:input path="reportNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">页数:</label></td>
+							<td class="width-25">
+								<form:input path="pageNumber" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷管理员:</label></td>
+							<td class="width-25">
+								<form:input path="manageUser" htmlEscape="false"    class="form-control "/>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">备注:</label></td>
+							<td class="width-25" colspan="3">
+								<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</form:form>
+			</div>
+		</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 243 - 0
src/main/webapp/webpage/modules/workaftermath/workRecordView.jsp

@@ -0,0 +1,243 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目归档</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
+	<style type="text/css">
+		.table{
+			margin-bottom: 0px;
+		}
+		.workfull>.form-horizontal{
+			margin: 0;
+			padding: 0;
+		}
+	</style>
+	<script type="text/javascript">
+        $(function(){
+            var oneSize = $(".oneTab").size();
+            for(var i = 0;i < oneSize;i++){
+                var hei = $(".oneTab:eq("+i+")").parent().height();
+                $(".oneTab:eq("+i+")").css("height",hei)
+                    .css("vertical-align","middle")
+                    .css("line-height",hei+"px")
+            }
+            $("img").not(".upload_ico").each(function () {
+                var num = 1 ;
+                $(this).click(function () {
+                    var flag = num%2;
+                    if(flag == 1){
+                        $(this).css("width","90%");
+                        $(this).css("height","90%");
+                        num++;
+                    }else if(flag ==0){
+                        $(this).css("width","50px");
+                        $(this).css("height","50px");
+                        num++;
+                    }
+                })
+            });
+        })
+        var validateForm;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+        });
+
+	</script>
+</head>
+<body class="hideScroll">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-content">
+		<div class="col-sm-12 m-t-xs">
+			<div class="col-sm-2 gray-bg text-center oneTab">
+				<label>档案信息</label>
+			</div>
+			<div class="col-sm-10 workfull" >
+				
+				<form:form id="inputForm" modelAttribute="workFullRecord" action="${ctx}/workaftermath/workAftermath/updateRd" method="post" class="form-horizontal">
+					<sys:message content="${message}"/>
+					<table class="table table-striped table-bordered table-hover table-condensed dataTables-example">
+						<tbody>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷名称:</label></td>
+							<td class="width-25" colspan="3">
+								<form:input path="recordName" htmlEscape="false"    class="form-control " readonly="true" value="${workFullRecord.recordName}"/>
+								<input type="hidden" name="workBidingProject.id" value="${workBidingProject.id}"   class="form-control "/>
+
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right"><font color="red">*</font>案卷号:</label></td>
+							<td class="width-35">
+								<form:input path="recordNumber" htmlEscape="false" readonly="true" value="${workFullRecord.recordNumber}"   class="form-control "/>
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档号:</label></td>
+							<td class="width-35">
+									${workFullRecord.backRecordNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属卷库:</label></td>
+							<td class="width-25">
+								<%--<form:select path="recordLibNumber" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_lib_number')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>--%>
+									${fns:getDictLabel(workFullRecord.recordLibNumber, 'record_lib_number', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档年代:</label></td>
+							<td class="width-25">
+									${workFullRecord.backRecordYear}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">所属部门:</label></td>
+							<td class="width-25">
+								<%--<sys:treeselect id="backRecordDept" name="backRecordDept.id" value="${workFullRecord.backRecordDept.id}" labelName="backRecordDept.name" labelValue="${workFullRecord.backRecordDept.name}"
+												title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>--%>
+									${workFullRecord.backRecordDept.name}
+							</td>
+							<td class="width-15 active"><label class="pull-right">编制机构:</label></td>
+							<td class="width-25">
+									${workFullRecord.compleOrganization}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保管期限:</label></td>
+							<td class="width-25">
+								<%--<form:select path="retentionPeriod" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('retention_period')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>--%>
+									${fns:getDictLabel(workFullRecord.retentionPeriod, 'retention_period', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right">起止日期:</label></td>
+							<td class="width-25" style="display: inline-block;">
+									<%--<input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="<fmt:formatDate value="${startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+									<%--<input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "--%>
+									<%--value="/>--%>
+								<div class="col-sm-5" style="padding: 0;">
+									<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd"/>
+									<%--<input class="form-control" id="startTime" name="startTime" value="<fmt:formatDate value="${workFullRecord.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">--%>
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+									<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd"/>
+									<%--<input class="form-control" id="endTime" name="endTime" value="<fmt:formatDate value="${workFullRecord.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">--%>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷密级:</label></td>
+							<td class="width-25">
+								<%--<form:select path="recordSecretLevel" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('record_secret_level')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>--%>
+									${fns:getDictLabel(workFullRecord.recordSecretLevel, 'record_secret_level', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right">全宗号:</label></td>
+							<td class="width-25">
+									${workFullRecord.fondsNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">目录号:</label></td>
+							<td class="width-25">
+									${workFullRecord.listsNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right">归档馆号:</label></td>
+							<td class="width-25">
+									${workFullRecord.recordProNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">保险箱号:</label></td>
+							<td class="width-25">
+									${workFullRecord.strongboxNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right">缩微号:</label></td>
+							<td class="width-25">
+									${workFullRecord.microNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">凭证类别:</label></td>
+							<td class="width-25">
+								<%--<form:select path="ekkoType" class="form-control ">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('ekko_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>--%>
+									${fns:getDictLabel(workFullRecord.ekkoType, 'ekko_type', '')}
+							</td>
+							<td class="width-15 active"><label class="pull-right">凭证编号:</label></td>
+							<td class="width-25">
+								<div class="col-sm-5" style="padding: 0;">
+										${workFullRecord.ekkoBstypOne}
+								</div>
+								<div class="col-sm-2 text-center" style="padding: 0;vertical-align: middle;line-height: 30px;">
+									至
+								</div>
+								<div class="col-sm-5" style="padding: 0;">
+										${workFullRecord.ekkoBstypTwo}
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">报告号:</label></td>
+							<td class="width-25">
+									${workFullRecord.reportNumber}
+							</td>
+							<td class="width-15 active"><label class="pull-right">页数:</label></td>
+							<td class="width-25">
+									${workFullRecord.pageNumber}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">案卷管理员:</label></td>
+							<td class="width-25">
+									${workFullRecord.manageUser}
+							</td>
+						</tr>
+						<tr>
+							<td class="width-15 active"><label class="pull-right">备注:</label></td>
+							<td class="width-25" colspan="3">
+									${workFullRecord.remarks}
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</form:form>
+			</div>
+		</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 77 - 0
src/main/webapp/webpage/modules/workapprovalcopy/approvalCopyForm.jsp

@@ -0,0 +1,77 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>抄送信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="approvalCopy" action="${ctx}/workapprovalcopy/approvalCopy/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">抄送人:</label></td>
+					<td class="width-35">
+						<form:textarea  path="CCId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">审批类型:</label></td>
+					<td class="width-35">
+						<form:textarea  path="type" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">申请人:</label></td>
+					<td class="width-35">
+						<form:textarea  path="userId" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">审批id:</label></td>
+					<td class="width-35">
+						<form:textarea  path="approvalId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" >
+						<form:textarea  path="" htmlEscape="false"    class="form-control "/>
+					</td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 137 - 0
src/main/webapp/webpage/modules/workapprovalcopy/approvalCopyList.jsp

@@ -0,0 +1,137 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>抄送信息管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>抄送信息列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="approvalCopy" action="${ctx}/workapprovalcopy/approvalCopy/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workapprovalcopy:approvalCopy:add">
+				<table:addRow url="${ctx}/workapprovalcopy/approvalCopy/form" title="抄送信息"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workapprovalcopy:approvalCopy:edit">
+			    <table:editRow url="${ctx}/workapprovalcopy/approvalCopy/form" title="抄送信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workapprovalcopy:approvalCopy:del">
+				<table:delRow url="${ctx}/workapprovalcopy/approvalCopy/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workapprovalcopy:approvalCopy:import">
+				<table:importExcel url="${ctx}/workapprovalcopy/approvalCopy/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workapprovalcopy:approvalCopy:export">
+	       		<table:exportExcel url="${ctx}/workapprovalcopy/approvalCopy/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> 序号</th>
+				<th  class="sort-column userId">申请人</th>
+				<th  class="sort-column type">审批类型</th>
+				<th  class="sort-column approvalId">审批人</th>
+				<th  class="sort-column remarks">申请原因</th>
+				<th  class="sort-column createDate">创建时间</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="approvalCopy" varStatus="status">
+			<tr>
+				<td> ${status.index+1}</td>
+				<td>
+					${approvalCopy.userName}
+				</td>
+				<td>
+						${fns:getDictLabel(approvalCopy.type, 'act_type', '')}</td>
+				</td>
+				<td>
+					${approvalCopy.approverIdName}
+				</td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看抄送信息', '${ctx}/workapprovalcopy/approvalCopy/form?id=${approvalCopy.id}','80%','80%')">
+						<%--${approvalCopy.remarks}--%>
+						<span title="${approvalCopy.remarks}">${fns:abbr(approvalCopy.remarks, 30)}</span>
+				</a></td>
+				<td><fmt:formatDate value="${approvalCopy.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+				<td>
+					<%--<shiro:hasPermission name="workapprovalcopy:approvalCopy:view">--%>
+						<a href="javascript:void(0)" onclick="openDialogView('查看抄送信息', '${ctx}/workapprovalcopy/approvalCopy/form?id=${approvalCopy.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					<%--</shiro:hasPermission>--%>
+					<%--<shiro:hasPermission name="workapprovalcopy:approvalCopy:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改抄送信息', '${ctx}/workapprovalcopy/approvalCopy/form?id=${approvalCopy.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workapprovalcopy:approvalCopy:del">
+						<a href="${ctx}/workapprovalcopy/approvalCopy/delete?id=${approvalCopy.id}" onclick="return confirmx('确认要删除该抄送信息吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>--%>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 95 - 0
src/main/webapp/webpage/modules/workappshow/workappshowForm.jsp

@@ -0,0 +1,95 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>app展示管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workappshow" action="${ctx}/workappshow/workappshow/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">公告展示:</label></td>
+					<td class="width-35">
+						<form:input path="notifyStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">考勤打卡:</label></td>
+					<td class="width-35">
+						<form:input path="companyRuleStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">工作日志:</label></td>
+					<td class="width-35">
+						<form:input path="reportStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">日程:</label></td>
+					<td class="width-35">
+						<form:input path="calendarStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">审批:</label></td>
+					<td class="width-35">
+						<form:input path="auditStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">外勤签到:</label></td>
+					<td class="width-35">
+						<form:input path="signInStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">管理日历:</label></td>
+					<td class="width-35">
+						<form:input path="manageCalendarStatus" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">用户id:</label></td>
+					<td class="width-35">
+						<form:input path="userId" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"></td>
+		   			<td class="width-35" ></td>
+		  		</tr>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 154 - 0
src/main/webapp/webpage/modules/workappshow/workappshowList.jsp

@@ -0,0 +1,154 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>app展示管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>app展示列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workappshow" action="${ctx}/workappshow/workappshow/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<div class="form-group">
+		 </div>	
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workappshow:workappshow:add">
+				<table:addRow url="${ctx}/workappshow/workappshow/form" title="app展示"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workappshow:workappshow:edit">
+			    <table:editRow url="${ctx}/workappshow/workappshow/form" title="app展示" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workappshow:workappshow:del">
+				<table:delRow url="${ctx}/workappshow/workappshow/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workappshow:workappshow:import">
+				<table:importExcel url="${ctx}/workappshow/workappshow/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workappshow:workappshow:export">
+	       		<table:exportExcel url="${ctx}/workappshow/workappshow/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+		
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<th> <input type="checkbox" class="i-checks"></th>
+				<th  class="sort-column remarks">备注信息</th>
+				<th  class="sort-column notifyStatus">公告展示</th>
+				<th  class="sort-column companyRuleStatus">考勤打卡</th>
+				<th  class="sort-column reportStatus">工作日志</th>
+				<th  class="sort-column calendarStatus">日程</th>
+				<th  class="sort-column auditStatus">审批</th>
+				<th  class="sort-column signInStatus">外勤签到</th>
+				<th  class="sort-column manageCalendarStatus">管理日历</th>
+				<th  class="sort-column userId">用户id</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="workappshow">
+			<tr>
+				<td> <input type="checkbox" id="${workappshow.id}" class="i-checks"></td>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看app展示', '${ctx}/workappshow/workappshow/form?id=${workappshow.id}','80%','80%')">
+					${workappshow.remarks}
+				</a></td>
+				<td>
+					${workappshow.notifyStatus}
+				</td>
+				<td>
+					${workappshow.companyRuleStatus}
+				</td>
+				<td>
+					${workappshow.reportStatus}
+				</td>
+				<td>
+					${workappshow.calendarStatus}
+				</td>
+				<td>
+					${workappshow.auditStatus}
+				</td>
+				<td>
+					${workappshow.signInStatus}
+				</td>
+				<td>
+					${workappshow.manageCalendarStatus}
+				</td>
+				<td>
+					${workappshow.userId}
+				</td>
+				<td>
+					<shiro:hasPermission name="workappshow:workappshow:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看app展示', '${ctx}/workappshow/workappshow/form?id=${workappshow.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workappshow:workappshow:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改app展示', '${ctx}/workappshow/workappshow/form?id=${workappshow.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workappshow:workappshow:del">
+						<a href="${ctx}/workappshow/workappshow/delete?id=${workappshow.id}" onclick="return confirmx('确认要删除该app展示吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 147 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceAudit.jsp

@@ -0,0 +1,147 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              if(obj == 1) {
+                  $("#flag").val("yes");
+              }else {
+                  $("#flag").val("no");
+			  }
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+		});
+	</script>
+</head>
+
+<body class="gray-bg">
+
+  <div class="wrapper wrapper-content">
+	<div class="ibox">
+	<div class="ibox-title">
+		<h5>询价与核价 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+		<div class="ibox-content">
+		<form:form id="inputForm" modelAttribute="workAskCheckPrice" action="${ctx}/workaskcheckprice/workAskCheckPrice/saveAudit" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="act.taskId"/>
+		<form:hidden path="act.taskName"/>
+		<form:hidden path="act.taskDefKey"/>
+		<form:hidden path="act.procInsId"/>
+		<form:hidden path="act.procDefId"/>
+		<form:hidden id="flag" path="act.flag"/>
+		<sys:message content="${message}"/>
+			<c:set var="status" value="${workAskCheckPrice.act.status}" />
+			<fieldset>
+				<legend>${workAskCheckPrice.act.taskName}</legend>
+				<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+					<tr>
+						<td class="width-20 active" rowspan="7"><label class="pull-right">台账信息</label></td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">核价设备名称:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.equipmentName}
+						</td>
+						<td class="width-15 active"><label class="pull-right">规格型号:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.formatType}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">核价人:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.checkUname}
+						</td>
+						<td class="width-15 active"><label class="pull-right">核价:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.checkPrice}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">报价单位:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.quotyClient}
+						</td>
+						<td class="width-15 active"><label class="pull-right">报价:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.quotyPrice}
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">报价有效期:</label></td>
+						<td class="width-35">
+							<%--<input id="quotyVtime" name="quotyVtime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+								   value="<fmt:formatDate value="${workAskCheckPrice.quotyVtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+								<fmt:formatDate value="${workAskCheckPrice.quotyVtime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+									<%--${workAskCheckPrice.quotyVtime}--%>
+						</td>
+						<td class="width-15 active"><label class="pull-right"><font color="red">*</font>核价单编号:</label></td>
+						<td class="width-35">
+								${workAskCheckPrice.checkNum}
+						</td>
+					</tr>
+					<%--<tr>
+						<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+						<td class="width-35" colspan="3">
+								${workAskCheckPrice.remarks}
+						</td>
+					</tr>--%>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">审批意见:</label></td>
+						<td colspan="5">
+							<form:textarea path="act.comment" class="form-control" rows="5" maxlength="127"/>
+						</td>
+					</tr>
+				</table>
+			</fieldset>
+			<act:flowChart procInsId="${workAskCheckPrice.act.procInsId}"/>
+			<act:histoicFlow procInsId="${workAskCheckPrice.act.procInsId}"/>
+	</form:form>
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 187 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceForm.jsp

@@ -0,0 +1,187 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 2){
+                    $("#inputForm").attr("action","${ctx}/workaskcheckprice/workAskCheckPrice/store");
+                }else if (obj == 3){
+                    $("#inputForm").attr("action","${ctx}/workaskcheckprice/workAskCheckPrice/save");
+                }else if (obj == 4){
+                    $("#inputForm").attr("action","${ctx}/workaskcheckprice/workAskCheckPrice/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workaskcheckprice/workAskCheckPrice/save");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+					laydate.render({
+			            elem: '#quotyVtime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+			            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+						,type:"datetime"
+			        });
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workAskCheckPrice" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<form:hidden path="fullManage.id" value="${workFullManage.id}"/>
+		<sys:message content="${message}"/>
+			<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+				<tbody>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">台账信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>核价设备名称:</label></td>
+					<td class="width-35">
+						<form:input path="equipmentName" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">规格型号:</label></td>
+					<td class="width-35">
+						<form:input path="formatType" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">核价人:</label></td>
+					<td class="width-35">
+						<form:input path="checkUname" htmlEscape="false"    class="form-control "/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">核价:</label></td>
+					<td class="width-35">
+						<form:input path="checkPrice" htmlEscape="false"    class="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>报价单位:</label></td>
+					<td class="width-35">
+						<form:input path="quotyClient" htmlEscape="false"    class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>报价:</label></td>
+					<td class="width-35">
+						<form:input path="quotyPrice" htmlEscape="false"    class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">报价有效期:</label></td>
+					<td class="width-35">
+						<input id="quotyVtime" name="quotyVtime" type="text" maxlength="20" class="laydate-icondate form-control layer-date "
+							   value="<fmt:formatDate value="${workAskCheckPrice.quotyVtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>核价单编号:</label></td>
+					<td class="width-35">
+						<form:input path="checkNum" htmlEscape="false"    readonly="true" class="form-control required"/>
+					</td>
+				</tr>
+				<%--<tr>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35" colspan="3">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+				</tr>--%>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">项目信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-25">
+							${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-25">
+							${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-25">
+							${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-25">
+							${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-25">
+							${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-25">
+							${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">客户信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-25" colspan="3">
+						<input type="hidden" id="clientId" name="clientId" value="${workFullManage.workClientInfo.id}"/>
+							${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.workClientLinkmanList[0].name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.workClientLinkmanList[0].position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.workClientLinkmanList[0].linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.workClientLinkmanList[0].qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-25">
+							${workFullManage.workClientInfo.workClientLinkmanList[0].email}
+					</td>
+				</tr>
+				</tbody>
+			</table>
+	</form:form>
+</body>
+</html>

+ 127 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceHistoricList.jsp

@@ -0,0 +1,127 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>已审核询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+        });
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li ><a href="${ctx}/workaskcheckpricemg/workAskCheckPriceMg/list">询价与核价</a></li>
+					<li><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceTodoList">待办任务</a></li>
+					<li class="active"><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceHistoricList">已办任务</a></li>
+					<%--<li><a href="${ctx}/workprequalification/workPrequalification/form">申请资格预审项目</a></li>--%>
+				</ul>
+			</h5>
+			<%--<div class="ibox-tools">
+				<a class="collapse-link">
+					<i class="fa fa-chevron-up"></i>
+				</a>
+				<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+					<i class="fa fa-wrench"></i>
+				</a>
+
+			</div>--%>
+		</div>
+
+		<div class="ibox-content">
+			<sys:message content="${message}"/>
+			<!--查询条件-->
+			<div class="row">
+				<div class="col-sm-12">
+					<form:form id="searchForm" modelAttribute="act" action="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceHistoricList" method="get" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+						<div class="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 9%">当前环节</th>
+					<th style="text-align: center;width: 9%">流程名称</th>
+					<th style="text-align: center;width: 9%">流程版本</th>
+					<th style="text-align: center;width: 20%">核价设备名称</th>
+					<th style="text-align: center;width: 20%">报价单位</th>
+					<th style="text-align: center;width: 8%">报价</th>
+					<th style="text-align: center;width: 13%">创建时间</th>
+				<%--<th>备注信息</th>--%>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workAskCheckPrice">
+					<c:set var="task" value="${workAskCheckPrice.act.task}" />
+					<c:set var="vars" value="${workAskCheckPrice.act.vars}" />
+					<c:set var="procDef" value="${workAskCheckPrice.act.procDef}" />
+					<c:set var="status" value="${workAskCheckPrice.act.status}" />
+					<tr>
+						<td>${workAskCheckPrice.act.vars.map.applyUserId}</td>
+						<td>
+								<%--${task.name}--%>
+										${fns:getDictLabel(workAskCheckPrice.status, 'workAskCheckPrice_status','')}
+						</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>${workAskCheckPrice.equipmentName}</td>
+						<td>${workAskCheckPrice.quotyClient}</td>
+						<td>${workAskCheckPrice.quotyPrice}</td>
+						<%--<td>${workAskCheckPrice.remarks}</td>--%>
+						<td><fmt:formatDate value="${workAskCheckPrice.createDate}" pattern="yyyy-MM-dd HH:mm:ss" type="both"/></td>
+						<%--<td>
+							</td>--%>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+		<td>${act.vars.map.applyUserId}</td>
+	</div>
+</div>
+</body>
+</html>

+ 244 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceList.jsp

@@ -0,0 +1,244 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+		});
+        function openDialogreToo(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['重新申请','撤回','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(3) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(4) ){
+                        //top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+	<%--<div class="ibox-title">
+		<h5>询价与核价列表 </h5>
+		<div class="ibox-tools">
+			<a class="collapse-link">
+				<i class="fa fa-chevron-up"></i>
+			</a>
+			<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+				<i class="fa fa-wrench"></i>
+			</a>
+			<ul class="dropdown-menu dropdown-user">
+				<li><a href="javascript:void(0)">选项1</a>
+				</li>
+				<li><a href="javascript:void(0)">选项2</a>
+				</li>
+			</ul>
+			<a class="close-link">
+				<i class="fa fa-times"></i>
+			</a>
+		</div>
+	</div>
+    --%>
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workAskCheckPrice" action="${ctx}/workaskcheckprice/workAskCheckPrice/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<%--<div class="form-group">
+			<span>项目状态:</span>
+				<form:input path="status" htmlEscape="false" maxlength="64"  class=" form-control input-sm"/>
+		 </div>	--%>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+	
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:add">
+				<table:addRow url="${ctx}/workaskcheckprice/workAskCheckPrice/form" title="询价与核价"></table:addRow><!-- 增加按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:edit">
+			    <table:editRow url="${ctx}/workaskcheckprice/workAskCheckPrice/form" title="询价与核价" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:del">
+				<table:delRow url="${ctx}/workaskcheckprice/workAskCheckPrice/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:import">
+				<table:importExcel url="${ctx}/workaskcheckprice/workAskCheckPrice/import"></table:importExcel><!-- 导入按钮 -->
+			</shiro:hasPermission>
+			<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:export">
+	       		<table:exportExcel url="${ctx}/workaskcheckprice/workAskCheckPrice/export"></table:exportExcel><!-- 导出按钮 -->
+	       	</shiro:hasPermission>
+	     <%--  <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>--%>
+		
+			</div>
+		<%--<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>--%>
+	</div>
+	</div>
+	
+	<!-- 表格 -->
+	<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<%--<th> <input type="checkbox" class="i-checks"></th>--%>
+				<th style="text-align: center;width: 10%"  class="">核价单编号</th>
+				<th style="text-align: center;width: 15%"  class="">核价设备名称</th>
+				<th style="text-align: center;width: 8%"  class="">规格类型</th>
+				<th style="text-align: center;width: 20%"  class="">报价单位</th>
+				<th style="text-align: center;width: 7%"  class="">报价</th>
+				<th style="text-align: center;width: 8%"  class="">核价</th>
+				<th style="text-align: center;width: 8%"  class="">核价人</th>
+				<th style="text-align: center;width: 8%"  class="">当前状态</th>
+				<th style="text-align: center;width: 8%"  class="">流程追踪</th>
+				<th style="text-align: center;width: 8%">操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+			<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="workAskCheckPrice">
+			<c:set var="Srole" scope="session" value="<%= UserUtils.getSelectRole().get(0).getName()%>"/>
+			<c:set var="Sid" scope="session" value="<%= UserUtils.getUser().getId()%>"/>
+			<tr>
+				<%--<td> <input type="checkbox" id="${workAskCheckPrice.id}" class="i-checks"></td>--%>
+				<td><a  href="javascript:void(0)" onclick="openDialogView('查看询价与核价', '${ctx}/workaskcheckprice/workAskCheckPrice/form?id=${workAskCheckPrice.id}&wf=${workAskCheckPrice.fullManage.id}&name=view','80%','80%')">
+					${workAskCheckPrice.checkNum}
+				</a></td>
+				<td>
+					${workAskCheckPrice.equipmentName}
+				</td>
+				<td>
+					${workAskCheckPrice.formatType}
+				</td>
+				<td>
+					${workAskCheckPrice.quotyClient}
+				</td>
+				<td>
+					${workAskCheckPrice.quotyPrice}
+				</td>
+				<td>
+					${workAskCheckPrice.checkPrice}
+				</td>
+				<td>
+					${workAskCheckPrice.checkUname}
+				</td>
+				<td>
+						${fns:getDictLabel(workAskCheckPrice.status, 'workAskCheckPrice_status', '')}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:choose>
+						<c:when test="${workAskCheckPrice.status eq '1'}">
+							<a href="${ctx}/workaskcheckprice/workAskCheckPrice/startposs?id=${workAskCheckPrice.id}" onclick="return confirmx('确认要发起任务吗?', this.href)"   class="btn btn-white btn-xs"> 启动流程</a>
+						</c:when>
+						<c:otherwise>
+							<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/workaskcheckprice/workAskCheckPrice/getProcess?id=${workAskCheckPrice.id}','80%','80%')" class="btn btn-white btn-xs" > 流程追踪</a>
+						</c:otherwise>
+					</c:choose>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<c:if test="${workAskCheckPrice.status == 3 and workAskCheckPrice.processEnded}">
+						<a href="javascript:void(0)" onclick="openDialogreToo('重新申请询价与核价', '${ctx}/workaskcheckprice/workAskCheckPrice/form?id=${workAskCheckPrice.id}&wf=${workAskCheckPrice.fullManage.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+					</c:if>
+					<c:if test="${workAskCheckPrice.status == 1 }">
+						<a href="javascript:void(0)" onclick="openDialog('修改询价与核价', '${ctx}/workaskcheckprice/workAskCheckPrice/form?id=${workAskCheckPrice.id}&wf=${workAskCheckPrice.fullManage.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+					</c:if>
+					<c:if test="${Srole eq '部门负责人' || workAskCheckPrice.createBy.id == fns:getUser()||workAskCheckPrice.updateBy.id == fns:getUser()}">
+						<a href="${ctx}/workaskcheckprice/workAskCheckPrice/delete?id=${workAskCheckPrice.id}" onclick="return confirmx('确认要删除该询价与核价吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</c:if>
+					</div>
+				</td>
+				<%--<td>
+					<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:view">
+						<a href="javascript:void(0)" onclick="openDialogView('查看询价与核价', '${ctx}/workaskcheckprice/workAskCheckPrice/form?id=${workAskCheckPrice.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:edit">
+    					<a href="javascript:void(0)" onclick="openDialog('修改询价与核价', '${ctx}/workaskcheckprice/workAskCheckPrice/form?id=${workAskCheckPrice.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+    				</shiro:hasPermission>
+    				<shiro:hasPermission name="workaskcheckprice:workAskCheckPrice:del">
+						<a href="${ctx}/workaskcheckprice/workAskCheckPrice/delete?id=${workAskCheckPrice.id}" onclick="return confirmx('确认要删除该询价与核价吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+					</shiro:hasPermission>
+				</td>--%>
+			</tr>
+		</c:forEach>
+		</c:when>
+		<c:otherwise>
+			<tr>
+				<td colspan="15" align="center">
+					暂无数据
+				</td>
+			</tr>
+		</c:otherwise>
+		</c:choose>
+		</tbody>
+	</table>
+	
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 239 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceMgList.jsp

@@ -0,0 +1,239 @@
+	<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/webpage/include/treetable.jsp" %>
+	<script type="text/javascript">
+        $(function(){
+            $("#treeTable").treeTable({expandLevel : 2,column:1}).show();
+        });
+        function openDialogre(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','暂存','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li class="active"><a href="${ctx}/workaskcheckpricemg/workAskCheckPriceMg/list">询价与核价</a></li>
+					<li><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceTodoList">待办任务</a></li>
+					<li><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceHistoricList">已办任务</a></li>
+					<%--<li><a href="${ctx}/workprequalification/workPrequalification/form">申请资格预审项目</a></li>--%>
+				</ul>
+			</h5>
+			<%--<div class="ibox-tools">
+				<a class="collapse-link">
+					<i class="fa fa-chevron-up"></i>
+				</a>
+				<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+					<i class="fa fa-wrench"></i>
+				</a>
+
+			</div>--%>
+		</div>
+    
+    <div class="ibox-content">
+	<sys:message content="${message}"/>
+	
+	<!--查询条件-->
+	<div class="row">
+	<div class="col-sm-12">
+	<form:form id="searchForm" modelAttribute="workFullManage" action="${ctx}/workaskcheckpricemg/workAskCheckPriceMg/" method="post" class="form-inline">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+		<a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+		<div class="form-group">
+			<label>项目编号:</label>
+			<form:input path="fullProjectNumber" htmlEscape="false"    class="form-control required"/>
+			<label>项目名称:</label>
+			<form:input path="fullProjectName" htmlEscape="false"    class="form-control required"/>
+			<label>项目状态:</label>
+			<form:select path="fullProjectStatus" class="form-control required">
+				<form:option value="" label=""/>
+				<form:options items="${fns:getDictList('full_project_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
+			<p></p>
+		 </div>
+	</form:form>
+	<br/>
+	</div>
+	</div>
+
+	<!-- 工具栏 -->
+	<div class="row">
+	<div class="col-sm-12">
+		<div class="pull-left">
+			<%--<shiro:hasPermission name="workfullmanage:workFullManage:add">--%>
+				<%--<table:addRow url="${ctx}/workfullmanage/workFullManage/form" title="项目登记"></table:addRow><!-- 增加按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workfullmanage:workFullManage:edit">--%>
+			    <%--<table:editRow url="${ctx}/workfullmanage/workFullManage/form" title="项目登记" id="contentTable"></table:editRow><!-- 编辑按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workfullmanage:workFullManage:del">--%>
+				<%--<table:delRow url="${ctx}/workfullmanage/workFullManage/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workfullmanage:workFullManage:import">--%>
+				<%--<table:importExcel url="${ctx}/workfullmanage/workFullManage/import"></table:importExcel><!-- 导入按钮 -->--%>
+			<%--</shiro:hasPermission>--%>
+			<%--<shiro:hasPermission name="workfullmanage:workFullManage:export">--%>
+	       		<%--<table:exportExcel url="${ctx}/workfullmanage/workFullManage/export"></table:exportExcel><!-- 导出按钮 -->--%>
+	       	<%--</shiro:hasPermission>--%>
+	       <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+
+			</div>
+		<div class="pull-right">
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+			<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+		</div>
+	</div>
+	</div>
+
+	<!-- 表格 -->
+	<table id="treeTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+		<thead>
+			<tr>
+				<%--<th> <input type="checkbox" class="i-checks"></th>--%>
+				<%--<th  class="sort-column fullProjectNumber">项目编号</th>--%>
+				<%--<th  class="sort-column totalFullName">总项目名称</th>--%>
+				<th style="text-align: center;width: 25%" class="sort-column fullProjectName">项目名称</th>
+				<th style="text-align: center;width: 22%" class="sort-column ciName">客户单位</th>
+				<th style="text-align: center;width: 10%" class="">项目负责人</th>
+				<th style="text-align: center;width: 15%" class="sort-column createDate">创建日期</th>
+				<th style="text-align: center;width: 7%" class="sort-column fullProjectStatus">项目状态</th>
+				<th style="text-align: center;width: 8%" class="">询价与核价</th>
+				<th style="text-align: center;width: 10%" class="">询价与核价列表</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:choose>
+		<c:when test="${not empty page.list}">
+		<c:forEach items="${page.list}" var="workFullManage">
+			<tr  id="${workFullManage.id}" pId="${workFullManage.totalFullId ne '1'?workFullManage.totalFullId:'0'}">
+				<%--<td> <input type="checkbox" id="${workFullManage.id}" class="i-checks"></td>--%>
+				<%--<td>--%>
+					<%--<a  href="javascript:void(0)" onclick="openDialogView('查看项目登记', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.totalFullId}&tabId=0','80%','80%')">--%>
+						<%--<span title="${workFullManage.totalFullName}">${fns:abbr(workFullManage.totalFullName,30)}</span>--%>
+					<%--</a>--%>
+				<%--</td>--%>
+				<%--<td>--%>
+						<%--${workFullManage.fullProjectNumber}--%>
+				<%--</td>--%>
+				<td>
+					<a  href="javascript:void(0)" onclick="openDialogView('查看项目登记', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=0','80%','80%')">
+						${workFullManage.fullProjectName}
+					</a>
+				</td>
+				<td>
+					${workFullManage.ciName}
+				</td>
+				<td>
+						${workFullManage.hostMasterName}
+				</td>
+				<td>
+					<fmt:formatDate value="${workFullManage.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					${fns:getDictLabel(workFullManage.fullProjectStatus, 'full_project_status', '')}
+				</td>
+				<td>
+					<div style="text-align: center">
+					<%--<a href="javascript:void(0)" onclick="openDialogre('工程签证单','${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=1','80%','80%')" class="btn btn-info btn-sm">项目立项</a>--%>
+						<button class="btn btn-info btn-sm" title="询价与核价" onclick="openDialogre('询价与核价','${ctx}/workaskcheckprice/workAskCheckPrice/form?wf=${workFullManage.id}','80%','80%')">&nbsp;询价与核价</button>
+					</div>
+				</td>
+				<td>
+					<div style="text-align: center">
+					<a  href="javascript:void(0)" onclick="openDialogView('查看询价与核价列表', '${ctx}/workaskcheckpricemg/workAskCheckPriceMg/workAskCheckPriceMgList?wf=${workFullManage.id}','80%','80%')">
+							${workFullManage.workAskCheckPriceCount}
+					</a>
+					</div>
+				</td>
+				<%--<td>--%>
+					<%--<a href="javascript:void(0)" onclick="openDialogView('项目准备','${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}&tabId=2','80%','80%')" class="btn btn-info btn-sm">项目准备</a>--%>
+				<%--</td>--%>
+				<%--<td>--%>
+					<%--<shiro:hasPermission name="workfullmanage:workFullManage:edit">--%>
+    					<%--<a href="javascript:void(0)" onclick="openDialog('修改项目登记', '${ctx}/workfullmanage/workFullManage/form?id=${workFullManage.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>--%>
+    				<%--</shiro:hasPermission>--%>
+    				<%--<shiro:hasPermission name="workfullmanage:workFullManage:del">--%>
+						<%--<a href="${ctx}/workfullmanage/workFullManage/delete?id=${workFullManage.id}" onclick="return confirmx('确认要删除该项目登记吗?', this.href)"   class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>--%>
+					<%--</shiro:hasPermission>--%>
+				<%--</td>--%>
+			</tr>
+		</c:forEach>
+		</c:when>
+			<c:otherwise>
+				<tr>
+					<td colspan="15" align="center">
+						暂无数据
+					</td>
+				</tr>
+			</c:otherwise>
+		</c:choose>
+		</tbody>
+	</table>
+
+		<!-- 分页代码 -->
+	<table:page page="${page}"></table:page>
+	<br/>
+	<br/>
+	</div>
+	</div>
+</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceTask.jsp

@@ -0,0 +1,15 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>询价与核价流程追踪</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content">
+        <act:flowChart procInsId="${processInstanceId}"/>
+        <act:histoicFlow procInsId="${processInstanceId}"/>
+	</div>
+</body>
+</html>
+

+ 205 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceTodoList.jsp

@@ -0,0 +1,205 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>待审核询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+                ,type: 'datetime'
+            });
+        });
+        function page(n,s){
+            location = '${ctx}/workaskcheckprice/workAskCheckPrice/list/?pageNo='+n+'&pageSize='+s;
+        }
+        /**
+         * 签收任务
+         */
+        function claim(taskId) {
+            $.get('${ctx}/act/task/claim' ,{taskId: taskId}, function(data) {
+                if (data == 'true'){
+                    top.$.jBox.tip('签收完成');
+                    location = '${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceTodoList/';
+                }else{
+                    top.$.jBox.tip('签收失败');
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['同意','驳回','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                    return false;
+                },
+                btn3: function(index){
+                }
+            });
+
+        }
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<div class="ibox">
+		<div class="ibox-title" style="height: 70px;">
+			<h5>
+				<ul class="nav nav-tabs">
+					<li ><a href="${ctx}/workaskcheckpricemg/workAskCheckPriceMg/list">询价与核价</a></li>
+					<li class="active"><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceTodoList">待办任务</a></li>
+					<li><a href="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceHistoricList">已办任务</a></li>
+					<%--<li><a href="${ctx}/workprequalification/workPrequalification/form">申请资格预审项目</a></li>--%>
+				</ul>
+			</h5>
+			<%--<div class="ibox-tools">
+				<a class="collapse-link">
+					<i class="fa fa-chevron-up"></i>
+				</a>
+				<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+					<i class="fa fa-wrench"></i>
+				</a>
+
+			</div>--%>
+		</div>
+
+		<div class="ibox-content">
+			<sys:message content="${message}"/>
+			<!--查询条件-->
+			<div class="row">
+				<div class="col-sm-12">
+					<form:form id="searchForm" modelAttribute="act" action="${ctx}/workaskcheckprice/workAskCheckPrice/workAskCheckPriceTodoList" method="get" class="form-inline">
+						<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+						<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+						<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+						<div class="form-group">
+							<label>创建时间:</label>
+							<input id="beginDate"  name="beginDate"  type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+							 -- 
+							<input id="endDate" name="endDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+								   value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+						</div>
+					</form:form>
+					<br/>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div class="row">
+				<div class="col-sm-12">
+					<div class="pull-left">
+						<button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+					</div>
+					<div class="pull-right">
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+						<button  class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+					</div>
+				</div>
+			</div>
+			<!-- 表格 -->
+			<table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+				<thead>
+				<tr>
+					<th style="text-align: center;width: 10%">流程发起人</th>
+					<th style="text-align: center;width: 8%">当前环节</th>
+					<th style="text-align: center;width: 8%">流程名称</th>
+					<th style="text-align: center;width: 8%">流程版本</th>
+					<th style="text-align: center;width: 19%">核价设备名称</th>
+					<th style="text-align: center;width: 20%">报价单位</th>
+					<th style="text-align: center;width: 7%">报价</th>
+					<th style="text-align: center;width: 13%">创建时间</th>
+					<th style="text-align: center;width: 7%">操作</th>
+				<%--<th>备注信息</th>--%>
+				</tr>
+				</thead>
+				<tbody>
+				<c:forEach items="${list}" var="workAskCheckPrice">
+					<c:set var="task" value="${workAskCheckPrice.act.task}" />
+					<c:set var="vars" value="${workAskCheckPrice.act.vars}" />
+					<c:set var="procDef" value="${workAskCheckPrice.act.procDef}" />
+					<c:set var="status" value="${workAskCheckPrice.act.status}" />
+					<tr>
+						<td>${workAskCheckPrice.act.vars.map.applyUserId}</td>
+						<td>
+							<%--${task.name}--%>
+									${fns:getDictLabel(workAskCheckPrice.status, 'workAskCheckPrice_status','')}
+						</td>
+						<td>${procDef.name}</td>
+						<td><b title='流程版本号'>V: ${procDef.version}</b></td>
+						<td>${workAskCheckPrice.equipmentName}</td>
+						<td>${workAskCheckPrice.quotyClient}</td>
+						<td>${workAskCheckPrice.quotyPrice}</td>
+						<%--<td>${workAskCheckPrice.remarks}</td>--%>
+						<td><fmt:formatDate value="${task.createTime}" pattern="yyyy-MM-dd HH:mm:ss" type="both"/></td>
+						<td>
+							<div style="text-align: center">
+							<a href="javascript:void(0)" onclick="openDialogre('查看询价与核价项目', '${ctx}/workaskcheckprice/workAskCheckPrice/applyOnWorkBidProject?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%','','同意','驳回')" class="btn btn-success btn-xs" > 任务办理</a>
+						<%--<c:if test="${empty task.assignee}">
+								<a href="javascript:claim('${task.id}');" class="btn btn-white btn-xs" >签收任务</a>
+							</c:if>
+							<c:if test="${not empty task.assignee}">
+								</c:if>--%>
+							</div>
+						</td>
+					</tr>
+				</c:forEach>
+				</tbody>
+			</table>
+			<!-- 分页代码 -->
+			<table:page page="${page}"></table:page>
+			<br/>
+			<br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 183 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workAskCheckPriceView.jsp

@@ -0,0 +1,183 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>询价与核价管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              $("#inputForm").submit();
+              return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workAskCheckPrice" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<form:hidden path="fullManage.id" value="${workFullManage.id}"/>
+		<sys:message content="${message}"/>
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+			   <tr>
+				   <td class="width-20 active" rowspan="5"><label class="pull-right">台账信息</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">核价设备名称:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.equipmentName}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">规格型号:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.formatType}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">核价人:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.checkUname}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">核价:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.checkPrice}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">报价单位:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.quotyClient}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">报价:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.quotyPrice}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">报价有效期:</label></td>
+				   <td class="width-35">
+						   <%--<input id="quotyVtime" name="quotyVtime" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+                                  value="<fmt:formatDate value="${workAskCheckPrice.quotyVtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>--%>
+							   <fmt:formatDate value="${workAskCheckPrice.quotyVtime}" pattern="yyyy-MM-dd"/>
+				   </td>
+				   <td class="width-15 active"><label class="pull-right"><font color="red">*</font>核价单编号:</label></td>
+				   <td class="width-35">
+						   ${workAskCheckPrice.checkNum}
+				   </td>
+			   </tr>
+			  <%-- <tr>
+				   <td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+				   <td class="width-35" colspan="3">
+						   ${workAskCheckPrice.remarks}
+				   </td>
+			   </tr>--%>
+			   <tr>
+				   <td class="width-20 active" rowspan="5"><label class="pull-right">项目信息</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.fullProjectNumber}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+				   <td class="width-25">
+						   ${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.fullProjectName}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+				   <td class="width-25">
+						   ${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+				   <td class="width-25">
+						   ${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+				   <td class="width-25">
+						   ${workFullManage.fullInvestMoney}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-20 active" rowspan="5"><label class="pull-right">客户信息</label></td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+				   <td class="width-25" colspan="3">
+					   <input type="hidden" id="clientId" name="clientId" value="${workFullManage.workClientInfo.id}"/>
+						   ${workFullManage.workClientInfo.name}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.creditRank}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.workClientLinkmanList[0].name}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">职务:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.workClientLinkmanList[0].position}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.workClientLinkmanList[0].linkPhone}
+				   </td>
+			   </tr>
+			   <tr>
+				   <td class="width-15 active"><label class="pull-right">QQ:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.workClientLinkmanList[0].qq}
+				   </td>
+				   <td class="width-15 active"><label class="pull-right">Email:</label></td>
+				   <td class="width-25">
+						   ${workFullManage.workClientInfo.workClientLinkmanList[0].email}
+				   </td>
+			   </tr>
+
+			   <%--<tr>--%>
+					<%--<td class="width-15 active"><label class="pull-right">项目状态:</label></td>--%>
+					<%--<td class="width-35">--%>
+						<%--<form:textarea path="status" htmlEscape="false" rows="4"    class="form-control "/>--%>
+					<%--</td>--%>
+					<%--<td class="width-15 active"></td>--%>
+		   			<%--<td class="width-35" ></td>--%>
+		  		<%--</tr>--%>
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 319 - 0
src/main/webapp/webpage/modules/workaskcheckprice/workFullManageFormDetail.jsp

@@ -0,0 +1,319 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目查看</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body class="hideScroll">
+		<form:form id="inputForm" modelAttribute="workFullManage" action="${ctx}/workaskcheckpricemg/workAskCheckPriceMg/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+		   <tbody>
+		   		<tr>
+					<td class="width-20 active" rowspan="3"><label class="pull-right">合同信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>合同名称:</label></td>
+					<td class="width-25" colspan="3">
+						${workFullManage.workContractInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">合同编号:</label></td>
+					<td class="width-25">
+						${workFullManage.contractId}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">项目信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+					<td class="width-25">
+						${workFullManage.fullProjectNumber}
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目来源:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.fullProjectSource, 'full_project_source', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-25">
+						${workFullManage.fullProjectName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">行业分类:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.fullIndustryType, 'full_industry_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">结构类型:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.fullStructureType, 'full_structure_type', '')}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">投资额(元):</label></td>
+					<td class="width-25">
+						${workFullManage.fullInvestMoney}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">客户信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-25" colspan="3">
+						<input type="hidden" id="clientId" name="clientId" value="${workFullManage.workClientInfo.id}"/>
+						${workFullManage.workClientInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.workClientLinkmanList[0].name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.workClientLinkmanList[0].position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.workClientLinkmanList[0].linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.workClientLinkmanList[0].qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-25">
+						${workFullManage.workClientInfo.workClientLinkmanList[0].email}
+					</td>
+				</tr>
+
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">建设方信息</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主单位:</label></td>
+					<td class="width-25" colspan="3">
+						${workFullManage.workBuildInfo.name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">客户信用等级:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.creditRank}
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主联系人:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.workClientLinkmanList[0].name}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">职务:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.workClientLinkmanList[0].position}
+					</td>
+					<td class="width-15 active"><label class="pull-right">联系方式:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.workClientLinkmanList[0].linkPhone}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">QQ:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.workClientLinkmanList[0].qq}
+					</td>
+					<td class="width-15 active"><label class="pull-right">Email:</label></td>
+					<td class="width-25">
+						${workFullManage.workBuildInfo.workClientLinkmanList[0].email}
+					</td>
+				</tr>
+
+				<tr>
+					<td class="width-20 active"><label class="pull-right">施工单位</label></td>
+					<td colspan="4">
+						<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+							<thead>
+							<th>施工单位</th>
+							<th>施工方联系人</th>
+							<th>联系方式</th>
+							</thead>
+							<tbody id="constructId">
+								<tr>
+									<td><a href="javascript:void(0)" onclick="openDialogView('查看','${ctx}/workfullmanage/workFullConstruct/form?id=${workFullManage.constructId.id}&tabId=1','80%','80%')">${workFullManage.constructId.unitName}</a></td>
+									<td>${workFullManage.constructId.unitLinkMan}</td>
+									<td>${workFullManage.constructId.linkPhone}</td>
+								</tr>
+							</tbody>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active"><label class="pull-right">监理单位</label></td>
+					<td colspan="4">
+						<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+							<thead>
+								<th>监理单位</th>
+								<th>监理方联系人</th>
+								<th>监理方式</th>
+							</thead>
+							<tbody id="surveyId">
+								<tr>
+									<td><a href="javascript:void(0)" onclick="openDialogView('查看','${ctx}/workfullmanage/workFullSurvey/form?id=${workFullManage.surveyId.id}&tabId=1','80%','80%')">${workFullManage.surveyId.unitName}</a></td>
+									<td>${workFullManage.surveyId.unitLinkMan}</td>
+									<td>${workFullManage.surveyId.linkPhone}</td>
+								</tr>
+							</tbody>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active"><label class="pull-right">设计单位</label></td>
+					<td colspan="4">
+						<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">
+							<thead>
+								<th>设计单位</th>
+								<th>设计方联系人</th>
+								<th>设计方式</th>
+							</thead>
+							<tbody id="designId">
+								<tr>
+									<td><a href="javascript:void(0)" onclick="openDialogView('查看','${ctx}/workfullmanage/workFullDesign/form?id=${workFullManage.designId.id}&tabId=1','80%','80%')">${workFullManage.designId.unitName}</a></td>
+									<td>${workFullManage.designId.unitLinkMan}</td>
+									<td>${workFullManage.designId.linkPhone}</td>
+								</tr>
+							</tbody>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="5"><label class="pull-right">项目概况</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目分类:</label></td>
+					<td class="width-25">
+							${fns:getDictLabel(workFullManage.fullProjectType, 'full_project_type', '')}
+					</td>
+					<td class="width-15 active"><label class="pull-right">工程所在地:</label></td>
+					<td class="width-25">
+						${workFullManage.fullProjectAddress}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工程性质:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.fullProjectProperty, 'full_project_property', '')}
+					</td>
+
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">工程规模:</label></td>
+					<td class="width-25">
+						${workFullManage.fullProjectScale}
+					</td>
+					<td class="width-15 active"><label class="pull-right">计量单位:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.fullCountUnit, 'full_count_unit', '')}
+					</td>
+
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目特性:</label></td>
+					<td class="width-25" colspan="3">
+						${workFullManage.fullProjectFeature}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="6"><label class="pull-right">洽谈记录</label></td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">洽谈开始时间:</label></td>
+					<td class="width-25">
+						<fmt:formatDate value="${workFullManage.talkStartTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">洽谈结束时间:</label></td>
+					<td class="width-25">
+						<fmt:formatDate value="${workFullManage.talkEndTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">咨询费用支付方式:</label></td>
+					<td class="width-25">
+						${fns:getDictLabel(workFullManage.askPayMode, 'ask_pay_mode', '')}
+					</td>
+
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">标准说明:</label></td>
+					<td class="width-25" colspan="3">
+						${workFullManage.standardExplain}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">固定价(元):</label></td>
+					<td class="width-25">
+						${workFullManage.fixedPrice}
+					</td>
+
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">业主要求:</label></td>
+					<td class="width-25" colspan="3">
+						${workFullManage.clientRequire}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="2"><label class="pull-right">部门安排</label></td>
+					<td class="width-15 active"><label class="pull-right">主办公司及部门:</label></td>
+					<td class="width-25">
+						${workFullManage.hostCompany.name}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司及部门:</label></td>
+					<td class="width-25">
+						${workFullManage.followCompany.name}
+					</td>
+				</tr>
+				<tr>
+
+				</tr>
+				<tr>
+					<td class="width-20 active" rowspan="2"><label class="pull-right">人员安排</label></td>
+					<td class="width-15 active"><label class="pull-right">主办公司负责人:</label></td>
+					<td class="width-25">
+						${workFullManage.hostMasterName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司负责人:</label></td>
+					<td class="width-25">
+						${workFullManage.followMasterName}
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">主办公司项目成员:</label></td>
+					<td class="width-25">
+						${workFullManage.hostMemberName}
+					</td>
+					<td class="width-15 active"><label class="pull-right">协办公司项目成员:</label></td>
+					<td class="width-25">
+						${workFullManage.followMemberName}
+					</td>
+				</tr>
+
+		 	</tbody>
+		</table>
+	</form:form>
+</body>
+</html>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.min.js" integrity="sha384-FzT3vTVGXqf7wRfy8k4BiyzvbNfeYjK+frTVqZeNDFl8woCbF0CYG6g2fMEFFo/i" crossorigin="anonymous"></script>

+ 84 - 0
src/main/webapp/webpage/modules/workattendance/baiduApi.jsp

@@ -0,0 +1,84 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>选择地点</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
+	<style type="text/css">
+		body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
+		#allmap{height:500px;width:100%;}
+		#r-result{width:100%; font-size:14px;}
+	</style>
+	<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=loaxPeDrzZ6xgvSMwiI8M61I5mK6l8dB"></script>
+	<title>城市名定位</title>
+</head>
+<body>
+<div id="allmap"></div>
+<div id="r-result">
+	<%--<div class="col-sm-12">
+	<form:form id="inputForm" modelAttribute="workAttendancePlace" method="post" class="form-horizontal">
+		<form:hidden path="itude"/>
+		<form:hidden  path="placeName"/>
+	</form:form>
+	</div>--%>
+</div>
+
+</body>
+</html>
+<script type="text/javascript">
+    // 百度地图API功能
+    var map = new BMap.Map("allmap");
+    var city = '${city}';
+    var point = new BMap.Point(116.331398,39.897445);
+    var x = "${x}";
+    var y = "${y}";
+    map.centerAndZoom(point,12);
+    map.enableScrollWheelZoom(true);
+    var geolocation = new BMap.Geolocation();
+    geolocation.getCurrentPosition(function(r){
+        if(this.getStatus() == BMAP_STATUS_SUCCESS){
+            if(x == null || x == '' || x == undefined || y == null || y == '' || y == undefined ){
+                map.centerAndZoom(city,12);      // 用城市名设置地图中心点
+            }else{
+                var points = new BMap.Point(x,y);
+                var mk = new BMap.Marker(points);
+                map.addOverlay(mk);//标出所在地
+                map.panTo(points);//地图中心移动
+                map.centerAndZoom(points,19);      // 用城市名设置地图中心点
+            }
+        }else {
+            alert('failed'+this.getStatus());
+        }
+    },{enableHighAccuracy: true})
+    function changePlacesInfo(name,itude,address) {
+        console.log(parent);
+        for(var i=0;i<parent.window.length;i++){
+            var pwin = parent.window[i];
+            console.log("pwin:"+pwin.pathName);
+            if("/a/workattendance/workAttendanceRule/form"==pwin.pathName){
+                pwin.changePlaces(name,itude,address);
+                return;
+			}
+		}
+    }
+    function showInfo(e){
+        var name = '${name}';
+        var index1 = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+        top.layer.confirm('确认要选择当前为考勤地址么?', {icon: 1, title:'系统提示'}, function(index){
+            var itude = e.point.lng + "," + e.point.lat;
+            var address = "";
+            var point = new BMap.Point(e.point.lng,e.point.lat);    //用所定位的经纬度查找所在地省市街道等信息
+            var gc = new BMap.Geocoder();
+            gc.getLocation(point, function(rs){
+                //var addComp = rs.addressComponents;
+                address = rs.address;
+                changePlacesInfo(name,itude,address);
+                top.layer.close(index);
+                parent.layer.close(index1); //再执行关闭
+            });
+
+        });
+    }
+    map.addEventListener("click", showInfo);
+</script>

+ 134 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceAudit.jsp

@@ -0,0 +1,134 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤规则</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		img {width: 50px; height: 50px;}
+	</style>
+	<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+	<script type="text/javascript" language="JavaScript" for="window" event="onload">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+            return false;
+        }
+       
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+        });
+	</script>
+
+</head>
+<body >
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceInfo" enctype="multipart/form-data" action="${ctx}/workattendance/workAttendanceInfo/saveAudit" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="ids"/>
+			<form:hidden path="flag"/>
+			<form:hidden path="home"/>
+			<sys:message content="${message}"/>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>补卡信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>补卡类型:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.type, 'attendance_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>上午/下午:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.morningAfternoon, 'am_pm', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>考勤类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.attendanceType, 'attendance_info_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>补卡时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceInfo.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>补卡原因:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${workAttendanceInfo.remarks}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>图片</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workAttendanceInfo.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+										<td>${workClientAttachment.createBy.name}</td>
+										<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+										<td class="op-td">
+											<div class="op-btn-box" >
+												<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											</div>
+										</td>
+									</c:when>
+									<c:otherwise>
+
+									</c:otherwise>
+								</c:choose>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 186 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceCountForm.jsp

@@ -0,0 +1,186 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤单</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              if(obj == 2){
+                  var id = $("#id").val();
+                  $.ajax({
+                      type:'post',
+                      url:'${ctx}/workattendance/workAttendanceCount/store',
+                      data:{
+                          "id":id
+                      },
+                      success:function(data){
+                          parent.layer.msg(data.msg,{icon:1});
+                          window.location= "${ctx}/workattendance/workAttendanceCount/form?id="+id+"&home=home";
+                      }
+                  })
+                  return true;
+              }else{
+                  $("#inputForm").attr("action","${ctx}/workattendance/workAttendanceCount/save");
+                  $("#inputForm").submit();
+                  return true;
+              }
+
+		  }
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceCount" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">月    份:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="attendanceMonth" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">部    门:</label>
+					<div class="layui-input-block">
+						<form:input path="office.name" htmlEscape="false" readonly="true"  class="form-control layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">部门人数:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="officeCount" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control number layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤人数:</label>
+					<div class="layui-input-block">
+						<form:input path="attendanceCount" htmlEscape="false" readonly="true"   class="form-control number layui-input "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤截止日:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceCount.attendanceEndDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">确认时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceCount.attendanceDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">确认人:</label>
+					<div class="layui-input-block">
+						<form:input path="user.name" htmlEscape="false" readonly="true"  class="form-control layui-input"/>
+					</div>
+				</div>
+			</div>
+		<div class="form-group layui-row">
+				<div class="form-group-label"><h2>考勤明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="userTable2" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>工号</th>
+							<th>姓名</th>
+							<th>是否考勤</th>
+							<th width="120px">应出勤天数(天)</th>
+							<th width="120px">实出勤天数(天)</th>
+							<th>内勤(天)</th>
+							<th>外勤(天)</th>
+							<th>出差(天)</th>
+							<th>加班(天)</th>
+							<th>旷工(天)</th>
+							<th>迟到(天)</th>
+							<th>早退(天)</th>
+							<th >请假(天)</th>
+						</tr>
+						</thead>
+						<tbody id="workAttendanceMonths">
+						<c:if test="${not empty workAttendanceCount.workAttendanceMonths}">
+							<c:forEach items="${workAttendanceCount.workAttendanceMonths}" var="workAttendanceMonth" varStatus="index">
+								<tr id="workAttendanceMonths${index.index}">
+									<td>
+										<a  href="javascript:void(0)" onclick="openDialogView('考勤详情', '${ctx}/workattendance/workAttendanceInfo/view?staffId=${workAttendanceMonth.staffId}&month=${workAttendanceCount.attendanceMonth}&home=${workAttendanceCount.home}','90%', '90%')">
+												${workAttendanceMonth.workStaffBasicInfo.no}
+										</a>
+									</td>
+									<td>
+										<a  href="javascript:void(0)" onclick="openDialogView('考勤详情', '${ctx}/workattendance/workAttendanceInfo/view?staffId=${workAttendanceMonth.staffId}&month=${workAttendanceCount.attendanceMonth}&home=${workAttendanceCount.home}','90%', '90%')">
+												${workAttendanceMonth.workStaffBasicInfo.name}
+										</a>
+									</td>
+
+									<td>
+											${fns:getDictLabel(workAttendanceMonth.isAttendance, 'yes_no', '')}
+									</td>
+									<td>
+											${workAttendanceMonth.answerAttendanceDay}
+									</td>
+									<td>
+											${workAttendanceMonth.realAttendanceDay}
+									</td>
+									<td>
+											${workAttendanceMonth.internalDuty}
+									</td>
+									<td>
+											${workAttendanceMonth.fieldPersonnel}
+									</td>
+									<td>
+											${workAttendanceMonth.goOut}
+									</td>
+									<td>
+											${workAttendanceMonth.overTime}
+									</td>
+									<td>
+											${workAttendanceMonth.miner}
+									</td>
+									<td>
+											${workAttendanceMonth.late}
+									</td>
+									<td>
+											${workAttendanceMonth.early}
+									</td>
+
+									<td>
+											${workAttendanceMonth.leave}
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 139 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceCountList.jsp

@@ -0,0 +1,139 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤表</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		.widthClass{
+			display: inline-block;
+		}
+		.shows .input-group{
+			width: 48%!important;
+		}
+	</style>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+	<script type="text/javascript">
+        function changeBtn(obj) {
+
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row ">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="workAttendanceCount" action="${ctx}/workattendance/workAttendanceCount/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw9">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">部门:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselectChange id="office" name="office.id" value="${workAttendanceCount.office.id}" labelName="office.name"  labelValue="${workAttendanceCount.office.name}"
+													  title="部门" url="/sys/office/treeDataBranchOffice?type=2" cssClass="form-control required layui-input" allowClear="true" />
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">月份:</label>
+							<div class="layui-input-block">
+								<form:input path="attendanceMonth" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="reset()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw9">
+
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'attendanceMonth',align:'center', title: '月份',minWidth:160,templet:function(d){
+                        return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('考勤单', '${ctx}/workattendance/workAttendanceCount/form?id=" + d.id + "&view=view','95%', '95%')\">" + d.attendanceMonth + "</a>";
+                    }}
+                ,{field:'office', align:'center',title: '部门',minWidth:120}
+                ,{field:'officeCount', align:'center',title: '部门人数',minWidth:120}
+                ,{field:'attendanceCount', align:'center',title: '考勤人数',minWidth:160}
+                ,{field:'attendanceEndDate', align:'center',title: '考勤截止日',minWidth:160}
+                ,{field:'attendanceDate', align:'center',title: '确认时间',width:200}
+                ,{field:'user', align:'center',title: '确认人',width:200}
+                ,{field:'status', align:'center',title: '确认状态',width:200}
+
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workAttendanceCount" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workAttendanceCount.id}"
+                    ,"attendanceMonth":"${workAttendanceCount.attendanceMonth}"
+                    ,"office":"${workAttendanceCount.office.name}"
+                    ,"officeCount":"${workAttendanceCount.officeCount}"
+                    ,"attendanceCount":"${workAttendanceCount.attendanceCount}"
+                    ,"attendanceEndDate":"<fmt:formatDate value="${workAttendanceCount.attendanceEndDate}" pattern="yyyy-MM-dd"/>"
+                    ,"attendanceDate":"<fmt:formatDate value="${workAttendanceCount.attendanceDate}" pattern="yyyy-MM-dd"/>"
+                    ,"user":"${workAttendanceCount.user.name}"
+                    ,"status":"${fns:getDictLabel(workAttendanceCount.status, 'attendance_count_status', '')}"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 198 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceInfoEdit.jsp

@@ -0,0 +1,198 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改考勤详情</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceInfo" action="${ctx}/workattendance/workAttendanceInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input path="workStaffBasicInfo.name" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤日期:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceInfo.attendanceDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">日期类型:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.dateType, 'holidays_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否加班:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isOvertime, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">加班时长:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="overtimeTime" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤类型:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.attendanceType, 'attendance_info_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">假期名称:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${workAttendanceInfo.leaveTypeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">是否计算出勤:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isCalculateAttendance, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">是否计算补助:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isCalculateSubsidies, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤方式:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.type, 'attendance_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceInfo.attendanceTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤地点:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="attendancePlace" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否迟到:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.lateEarly, 'lateEarly', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">迟到时长:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="lateEarlyTime" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">外勤出差是否有效:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isValid, 'yes_no', '')}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>相关附件</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workAttendanceInfo.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','95%','95%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','95%','95%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<%--   <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                                   <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                               </c:if>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 198 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceInfoForm.jsp

@@ -0,0 +1,198 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤详情</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceInfo" action="${ctx}/workattendance/workAttendanceInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="workStaffBasicInfo.no" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">姓名:</label>
+					<div class="layui-input-block">
+						<form:input path="workStaffBasicInfo.name" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤日期:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceInfo.attendanceDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">日期类型:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.dateType, 'holidays_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否加班:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isOvertime, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">加班时长:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="overtimeTime" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤类型:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.attendanceType, 'attendance_info_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">假期名称:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${workAttendanceInfo.leaveTypeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">是否计算出勤:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isCalculateAttendance, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">是否计算补助:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isCalculateSubsidies, 'yes_no', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤方式:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.type, 'attendance_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤时间:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceInfo.attendanceTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">考勤地点:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="attendancePlace" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">是否迟到:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.lateEarly, 'lateEarly', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">迟到时长:</label>
+					<div class="layui-input-block with-icon">
+						<form:input path="lateEarlyTime" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">外勤出差是否有效:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceInfo.isValid, 'yes_no', '')}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>相关附件</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="upTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${workAttendanceInfo.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+										<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','95%','95%','1')">${workClientAttachment.attachmentName}</a></td>
+											</c:when>
+											<c:otherwise>
+												<td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','95%','95%')">${workClientAttachment.attachmentName}</a></td>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<%--   <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                                   <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                               </c:if>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 120 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceInfoView.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤详情</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  $("#inputForm").submit();
+			  return true;
+		  }
+	
+		  return false;
+		}
+		$(document).ready(function() {
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			
+		});
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceInfo" action="${ctx}/workattendance/workAttendanceInfo/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>
+		<div class="form-group layui-row">
+				<div class="form-group-label"><h2>考勤详情</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="userTable2" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th>日期</th>
+							<th>上午/下午</th>
+							<th>考勤类型</th>
+							<th>假期名称</th>
+							<th width="120px">是否计算出勤</th>
+							<th>是否计算补助</th>
+							<th>考勤方式</th>
+							<th>是否迟到/早退</th>
+							<th>迟到早退时长</th>
+							<th>外勤出差是否有效</th>
+						</tr>
+						</thead>
+						<tbody id="workAttendanceInfos">
+						<c:if test="${not empty workAttendanceInfos}">
+							<c:forEach items="${workAttendanceInfos}" var="workAttendanceInfo" varStatus="index">
+								<tr id="workAttendanceInfos${index.index}">
+									<td>
+										<c:choose>
+											<c:when test="${not empty home}">
+												<a  href="javascript:void(0)" onclick="openDialogView('考勤详情-${fns:getDictLabel(workAttendanceInfo.morningAfternoon, 'am_pm', '')}', '${ctx}/workattendance/workAttendanceInfo/form?id=${workAttendanceInfo.id}&home=${home}','80%', '80%')">
+													<fmt:formatDate value="${workAttendanceInfo.attendanceDate}" pattern="yyyy-MM-dd"/>
+												</a>
+											</c:when>
+											<c:otherwise>
+												<a  href="javascript:void(0)" onclick="openDialogView('考勤详情-${fns:getDictLabel(workAttendanceInfo.morningAfternoon, 'am_pm', '')}', '${ctx}/workattendance/workAttendanceInfo/form?id=${workAttendanceInfo.id}&home=${home}','80%', '80%')">
+													<fmt:formatDate value="${workAttendanceInfo.attendanceDate}" pattern="yyyy-MM-dd"/>
+												</a>
+											</c:otherwise>
+										</c:choose>
+
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.morningAfternoon, 'am_pm', '')}
+									</td>
+			
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.attendanceType, 'attendance_info_type', '')}
+									</td>
+									<td>
+											${workAttendanceInfo.leaveTypeName}
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.isCalculateAttendance, 'yes_no', '')}
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.isCalculateSubsidies, 'yes_no', '')}
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.type, 'attendance_type', '')}
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.lateEarly, 'lateEarly', '')}
+									</td>
+									<td>
+											${workAttendanceInfo.lateEarlyTime}
+									</td>
+									<td>
+											${fns:getDictLabel(workAttendanceInfo.isValid, 'yes_no', '')}
+									</td>
+
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 737 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceRuleForm.jsp

@@ -0,0 +1,737 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤规则</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		img {width: 50px; height: 50px;}
+		label.error{
+			top:40px;
+			left:0;
+		}
+	</style>
+	<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+	<script type="text/javascript" language="JavaScript" for="window" event="onload">
+        var validateForm;
+        window.doSubmit = doSubmit;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                var officeCount =  $("#officeTableList tr:visible").length;
+                var userCount =  $("#userTableList tr:visible").length;
+                var placesCount =  $("#workAttendancePlaces tr:visible").length;
+                if(placesCount<1){
+                    parent.layer.msg("请选择考勤地点!",{icon:5});
+                    return false;
+                }
+                var placesCounts =  $("#workAttendancePlaces tr").length;
+                for(var i = 0;i < placesCounts; i++) {
+                    var tds =  $("#workAttendancePlaces"+i+" td:visible").length;
+                    if(tds > 0 ) {
+                        var placeScope = $("#workAttendancePlaces" + i + "_placeScope").val();
+                        var placeName = $("#workAttendancePlaces" + i + "_placeName").val();
+                        var wifi = $("#workAttendancePlaces" + i + "_wifi").val();
+                        if (wifi == null || wifi == '' || wifi == undefined) {
+                            if (placeName == null || placeName == '' || placeName == undefined) {
+                                parent.layer.msg("请选择考勤地址!", {icon: 5});
+                                return false;
+                            }
+                            if (placeScope == null || placeScope == '' || placeScope == undefined) {
+                                parent.layer.msg("请选择考勤半径!", {icon: 5});
+                                return false;
+                            }
+                        }
+                    }
+                }
+                if(officeCount+userCount<1){
+                    parent.layer.msg("请选择考勤范围!",{icon:5});
+                    return false;
+                }
+                var officeCounts =  $("#officeTableList tr").length;
+                var userCounts =  $("#userTableList tr").length;
+                var userIds = "";
+                var officeIds = "";
+                for(var i = 0;i < officeCounts; i++) {
+                    var officeId = $("#officeList" + i + "_id").val();
+                    if(officeId != null && officeId != '' && officeId != undefined){
+                        officeIds += officeId+",";
+                    }
+                }
+                for(var i = 0;i < userCounts; i++) {
+                    var userId = $("#userList" + i + "_id").val();
+                    if(userId != null && userId != '' && userId != undefined){
+                        userIds += userId+",";
+                    }
+                }
+                var id = $("#id").val();
+                var succ = isSave(id,officeIds,userIds);
+                if(succ == false || succ == 'false'){
+                    return false;
+				}
+                var start = $("#startTime").val();
+                var end = $("#endTime").val();
+                if(start!=undefined&&start!=null&&start!=''){
+                    var d1 = new Date();
+                    var format = d1.format('yyyy-MM-dd');
+                    $("#startTime").val(format+" "+start);
+                }
+                if(end!=undefined&&end!=null&&end!=''){
+                    var d1 = new Date();
+                    var format = d1.format('yyyy-MM-dd');
+                    $("#endTime").val(format+" "+end);
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+            return false;
+        }
+        Date.prototype.format = function(fmt) {
+            var o = {
+                "M+" : this.getMonth()+1,                 //月份
+                "d+" : this.getDate(),                    //日
+                "h+" : this.getHours(),                   //小时
+                "m+" : this.getMinutes(),                 //分
+                "s+" : this.getSeconds(),                 //秒
+                "q+" : Math.floor((this.getMonth()+3)/3), //季度
+                "S"  : this.getMilliseconds()             //毫秒
+            };
+            if(/(y+)/.test(fmt)) {
+                fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
+            }
+            for(var k in o) {
+                if(new RegExp("("+ k +")").test(fmt)){
+                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
+                }
+            }
+            return fmt;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            //只做查看时,禁用掉以下标签
+            laydate.render({
+                elem: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'time',
+                format:'HH:mm:ss'
+            });
+            laydate.render({
+                elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'time',
+                format:'HH:mm:ss'
+            });
+           /* laydate.render({
+                elem: '#workStartTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'datetime'
+            });
+            laydate.render({
+                elem: '#workEndTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'datetime'
+            });*/
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            var branchOffice = $("#branchOfficeId").val();
+            changeBtn(branchOffice);
+            var notWorkCount = $("#notWorkCount").val();
+            dispSimpleName(notWorkCount);
+            var type = $("#type").val();
+            dispSimpleInfo(type);
+
+        });
+	</script>
+	<script type="text/javascript">
+        function changeUser(ids,names,parents) {
+            var split = ids.split(',');
+            var split2 = names.split(',');
+            $("#userTableList").html("");
+            userIdx=0;
+            for(var i=0;i<split.length;i++){
+                var id = split[i];
+                if(id==''||id==null){
+                    continue;
+                }else {
+                    var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+                    addRow('#userTableList',userIdx,userTpl,obj);
+                    userIdx+=1;
+                }
+            }
+        }
+
+        function changeOffice(ids,names,parentIds) {
+            $("#officeTableList").html("");
+            officeIdx=0;
+            for(var i=0;i<ids.length;i++){
+                var obj = {'id':ids[i],'name':parentIds[i]};
+                addRow('#officeTableList',officeIdx,officeTpl,obj);
+                officeIdx+=1;
+            }
+        }
+        function getSelectOfficeIds() {
+            var selectedIds = "";
+            var pidArr = $("#officeTableList tr .officeId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+        function getSelectUserIds() {
+            var selectedIds = "";
+            var pidArr = $("#userTableList tr .userId");
+            for(var i=0;i<pidArr.length;i++){
+                selectedIds+=$(pidArr[i]).val();
+                selectedIds+=",";
+            }
+            return selectedIds;
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx2 = $("#workAttendancePlaces tr").length;
+            if(list == '#workAttendancePlaces'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delRow(obj, prefix) {
+            var delFlag = $(prefix+"_delFlag");
+            delFlag.val("1");
+            $(obj).parent().parent().hide();
+        }
+
+        function changePlaces(name,itude,address) {
+            var _placeName = name+"_placeName";
+            var _itude = name+"_itude";
+            var areaName= $("#"+name+"_areaName").val();
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workattendance/workAttendanceRule/isCity',
+                async:false,
+                data:{
+                    "itude":itude
+                },
+                success:function(data){
+                    if(data!=areaName){
+                        parent.layer.msg("该地点不在所选城市范围内!", {icon: 5});
+                        return false;
+					}else{
+                        $("#"+_placeName).val(address);
+                        $("#"+_itude).val(itude);
+					}
+                }
+            });
+
+        }
+
+        //打开对话框(查看)
+        function openDialogInfo(title,url,width,height,name){
+			var areaName = $(name+"_areaName").val();
+			var itude = $(name+"_itude").val();
+            if(areaName == null || areaName == '' || areaName == undefined ){
+                parent.layer.msg("请先输入城市!",{icon:5});
+                return;
+            }
+            url += encodeURIComponent(areaName+"&itude="+itude);
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                skin: 'one-btn',
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['关闭'],
+                cancel: function(index){
+                }
+            });
+        }
+
+        function dispSimpleName(val) {
+            if(val == '1'){
+                $("#notWorkNeed1").show();
+                $("#notWorkType1").show();
+                $("#notWorkVacation1").show();
+                $("#notWorkVacationRead").hide();
+                $("#notWorkNeedRead").hide();
+                $("#notWorkTypeRead").hide();
+            }else {
+                $("#notWorkNeed").val("");
+                $("#notWorkType").val("");
+                $("#notWorkVacation").val("");
+                $("#notWorkNeedRead").show();
+                $("#notWorkTypeRead").show();
+                $("#notWorkVacationRead").show();
+                $("#notWorkNeed1").hide();
+                $("#notWorkType1").hide();
+                $("#notWorkVacation1").hide();
+            }
+        }
+        function dispSimpleInfo(val) {
+            if(val == '2'){
+                $("#startTime1").show();
+                $("#endime1").show();
+                $("#startTime2").hide();
+                $("#endime2").hide();
+                $("#notWorkCount1").show();
+                $("#notWorkCount2").hide();
+            }else if(val == '1') {
+                $("#startTime").val("");
+                $("#endTime").val("");
+                $("#startTime1").hide();
+                $("#endime1").hide();
+                $("#startTime2").show();
+                $("#endime2").show();
+                $("#notWorkCount1").show();
+                $("#notWorkCount2").hide();
+            }else {
+                dispSimpleName();
+                $("#notWorkCount").val("");
+                $("#startTime").val("");
+                $("#endTime").val("");
+                $("#notWorkCount1").hide();
+                $("#notWorkCount2").show();
+                $("#startTime1").hide();
+                $("#endime1").hide();
+                $("#startTime2").show();
+                $("#endime2").show();
+            }
+        }
+        function addInfo() {
+            parent.layer.msg("请先选择分公司!", {icon: 5});
+        }
+        function changeBtn(obj) {
+            if(obj == null || obj == '' || obj == undefined){
+                $("#userId1").hide();
+                $("#officeId1").hide();
+                $("#userId2").show();
+                $("#officeId2").show();
+            }else {
+                $("#userId1").show();
+                $("#officeId1").show();
+                $("#userId2").hide();
+                $("#officeId2").hide();
+            }
+
+        }
+
+        function isSave(id,officeIds,userIds) {
+            var save = false;
+            var branchOffice = $("#branchOfficeId").val();
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workattendance/workAttendanceRule/isSave',
+                data:{
+                    "id":id,"officeIds":officeIds,"userIds":userIds,"branchOffice":branchOffice
+                },
+                async: false,
+                success:function(data){
+                    if(!data.success){
+                        parent.layer.msg(data.msg,{icon:5});
+                    }
+                    save = data.success;
+                }
+            })
+			return save;
+        }
+	</script>
+
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workAttendanceRule" enctype="multipart/form-data" action="${ctx}/workattendance/workAttendanceRule/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<sys:message content="${message}"/>
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>分公司:</label>
+					<div class="layui-input-block with-icon">
+						<sys:treeselectChange id="branchOffice" name="branchOffice.id" value="${workAttendanceRule.branchOffice.id}" labelName="branchOffice.name"  labelValue="${workAttendanceRule.branchOffice.name}"
+										title="部门" url="/sys/office/treeDataCompanyDSF?type=2" cssClass="form-control required layui-input" allowClear="true" />
+
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规则编号:</label>
+					<div class="layui-input-block">
+						<form:input path="number" htmlEscape="false"  minlength="1" maxlength="3" class="form-control number layui-input required"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规则名称:</label>
+					<div class="layui-input-block">
+						<form:input path="name" htmlEscape="false"  maxlength="30" class="form-control layui-input required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>办公区域</h2></div>
+				<div class="layui-item nav-btns">
+					<a class="nav-btn nav-btn-add" onclick="addRow('#workAttendancePlaces', workAttendancePlacesRowIdx, workAttendancePlacesTpl);workAttendancePlacesRowIdx = workAttendancePlacesRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+				</div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="contentTable2" class="table table-bordered table-condensed can-edit">
+						<thead>
+						<tr>
+							<th width="15%">城市</th>
+							<th>地理位置</th>
+							<th width="15%">经纬度</th>
+							<th width="12%">半径(米)</th>
+							<th width="10%">WIFI</th>
+							<th width="15%">无线SSID</th>
+							<th width="120px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workAttendancePlaces">
+						<c:if test="${not empty workAttendanceRule.workAttendancePlaces}">
+							<c:forEach items="${workAttendanceRule.workAttendancePlaces}" var="workAttendancePlaces" varStatus="index">
+								<tr id="workAttendancePlaces${index.index}">
+									<td class="hide">
+										<input id="workAttendancePlaces${index.index}_id" name="workAttendancePlaces[${index.index}].id" type="hidden" value="${workAttendancePlaces.id}"/>
+										<input id="workAttendancePlaces${index.index}_delFlag" name="workAttendancePlaces[${index.index}].delFlag" type="hidden" value="0"/>
+									</td>
+									<td>
+										<sys:treeselect id="workAttendancePlaces${index.index}_area" name="workAttendancePlaces[${index.index}].area.id" value="${workAttendancePlaces.area.id}" labelName="workAttendancePlaces[${index.index}].area.name" labelValue="${workAttendancePlaces.area.name}"
+														title="城市" url="/sys/area/treeData" rule="rule" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="false"/>
+									</td>
+
+									<td>
+										<input id="workAttendancePlaces${index.index}_placeName" readonly="true" name="workAttendancePlaces[${index.index}].placeName" type="text" maxlength="32" value="${workAttendancePlaces.placeName}"  class="form-control "/>
+									</td>
+									<td>
+										<input id="workAttendancePlaces${index.index}_itude" readonly="true" name="workAttendancePlaces[${index.index}].itude" type="text" maxlength="32" value="${workAttendancePlaces.itude}" class="form-control "/>
+									</td>
+									<td>
+										<c:choose>
+											<c:when test="${not empty workAttendanceRule.workAttendancePlaces}">
+												<input id="workAttendancePlaces${index.index}_placeScope" name="workAttendancePlaces[${index.index}].placeScope" type="text" minlength="1" maxlength="6" value="${workAttendancePlaces.placeScope}" class="form-control number "/>
+											</c:when>
+											<c:otherwise>
+												<input id="workAttendancePlaces${index.index}_placeScope" name="workAttendancePlaces[${index.index}].placeScope" readonly="true" type="text" minlength="1" maxlength="6" value="${workAttendancePlaces.placeScope}" class="form-control number "/>
+											</c:otherwise>
+										</c:choose>
+									</td>
+									<td>
+										<input id="workAttendancePlaces${index.index}_wifi" readonly="true" name="workAttendancePlaces[${index.index}].wifi" type="text" maxlength="32" value="${workAttendancePlaces.wifi}" class="form-control "/>
+									</td>
+									<td>
+										<input id="workAttendancePlaces${index.index}_wifiName" readonly="true" name="workAttendancePlaces[${index.index}].wifiName"  type="text" maxlength="32" value="${workAttendancePlaces.wifi}" class="form-control "/>
+									</td>
+									<td class="text-center op-td">
+										<c:if test="${empty workAttendancePlaces.wifi}">
+											<span onclick="openDialogInfo('选择地址','${ctx}/workattendance/workAttendanceRule/baidiApi?name=workAttendancePlaces${index.index}&city=','80%','80%','#workAttendancePlaces${index.index}')" class="op-btn op-btn-add" ><i class="fa fa-plus"></i>&nbsp;选择</span>
+										</c:if>
+										<span class="op-btn op-btn-delete" onclick="delRow(this, '#workAttendancePlaces${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+					<script type="text/template" id="workAttendancePlacesTpl">//<!--
+                                    <tr id="workAttendancePlaces{{idx}}">
+                                        <td class="hide">
+											<input id="workAttendancePlaces{{idx}}_id" name="workAttendancePlaces[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+											<input id="workAttendancePlaces{{idx}}_delFlag" name="workAttendancePlaces[{{idx}}].delFlag" type="hidden" value="0"/>
+										</td>
+										<td>
+											<sys:treeselect id="workAttendancePlaces{{idx}}_area" name="workAttendancePlaces[{{idx}}].area.id" value="${workAttendanceRule.area.id}" labelName="workAttendancePlaces[{{idx}}].area.name" labelValue="${workAttendanceRule.area.name}"
+															title="城市" url="/sys/area/treeData" rule="rule" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+										</td>
+
+										<td>
+											<input id="workAttendancePlaces{{idx}}_placeName" readonly="true"name="workAttendancePlaces[{{idx}}].placeName" type="text" maxlength="32" value=""  class="form-control "/>
+										</td>
+										<td>
+											<input id="workAttendancePlaces{{idx}}_itude" readonly="true" name="workAttendancePlaces[{{idx}}].itude" type="text" maxlength="32" value="" class="form-control "/>
+										</td>
+										<td>
+											<input id="workAttendancePlaces{{idx}}_placeScope" name="workAttendancePlaces[{{idx}}].placeScope" minlength="1" maxlength="6" type="text" maxlength="32" value="" class="form-control number "/>
+										</td>
+										<td>
+											<input id="workAttendancePlaces{{idx}}_wifi" readonly="true" name="workAttendancePlaces[{{idx}}].wifi" type="text" maxlength="32" value="" class="form-control "/>
+										</td>
+										<td>
+											<input id="workAttendancePlaces{{idx}}_wifiName" readonly="true" name="workAttendancePlaces[{{idx}}].wifiName" type="text" maxlength="32" value="" class="form-control  "/>
+										</td>
+										<td class="text-center op-td">
+											<span onclick="openDialogInfo('选择地址','${ctx}/workattendance/workAttendanceRule/baidiApi?name=workAttendancePlaces{{idx}}&city=','80%','80%','#workAttendancePlaces{{idx}}')" class="op-btn op-btn-add" ><i class="fa fa-plus"></i>&nbsp;选择</span>
+											<span class="op-btn op-btn-delete" onclick="delRow(this, '#workAttendancePlaces{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+										</td>
+                                    </tr>//-->
+					</script>
+					<script type="text/javascript">
+                        var workAttendancePlacesRowIdx = 0, workAttendancePlacesTpl = $("#workAttendancePlacesTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                        if($("#id").val()){
+                            workAttendancePlacesRowIdx = ${fn:length(workAttendanceRule.workAttendancePlaces)};
+                        }
+                        $(document).ready(function() {
+                            /*var data = ${fns:toJson(workAttendanceRule.workAttendancePlaces)};
+                    for (var i=0; i<data.length; i++){
+                        addRow('#workAttendancePlaces', workAttendancePlacesRowIdx, workAttendancePlacesTpl, data[i]);
+                        workAttendancePlacesRowIdx = workAttendancePlacesRowIdx + 1;
+                    }*/
+                        });
+					</script>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>考勤方式</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>考勤方式:</label>
+					<div class="layui-input-block">
+						<form:select path="type" class="form-control required simple-select" onchange="dispSimpleInfo(this.value);">
+                            <form:option value="" label=""/>
+							<form:options items="${fns:getDictList('attendance_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<div class="layui-input-block">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 ">
+					<label class="layui-form-label"><span class="require-item">*</span>上班时间:</label>
+					<div id="startTime1" class="layui-input-block"  style="display:none">
+						<input id="startTime" name="startTime" style="background-color: #ffffff;" readonly="true" htmlEscape="false"  class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+							   value="<fmt:formatDate value="${workAttendanceRule.startTime}" pattern="HH:mm:ss"/>"/>
+					</div>
+					<div id="startTime2" class="layui-input-block"  style="display:none">
+                        <form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>下班时间:</label>
+					<div id="endime1" class="layui-input-block">
+						<input id="endTime" name="endTime" style="background-color: #ffffff;" readonly="true" htmlEscape="false"  class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+							   value="<fmt:formatDate value="${workAttendanceRule.endTime}" pattern="HH:mm:ss"/>"/>
+					</div>
+                    <div id="endime2" class="layui-input-block"  style="display:none">
+                        <form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input"/>
+                    </div>
+				</div>
+			</div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>非工作日加班</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>非工作日计算加班:</label>
+                    <div id="notWorkCount1" class="layui-input-block">
+                        <form:select path="notWorkCount" class="form-control required simple-select" onchange="dispSimpleName(this.value);">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getDictList('not_work_count')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                    <div id="notWorkCount2" class="layui-input-block" style="display:none">
+						<form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">非工作日加班需要申请:</label>
+                    <div id="notWorkNeed1" class="layui-input-block"  style="display:none">
+                        <form:select path="notWorkNeed" class="form-control required simple-select">
+							<form:option value="" label=""/>
+                            <form:options items="${fns:getDictList('not_work_need')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                    <div id="notWorkNeedRead" class="layui-input-block">
+                        <form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">非工作日加班处理方式:</label>
+                    <div id="notWorkType1" class="layui-input-block"  style="display:none">
+                        <form:select path="notWorkType" class="form-control required simple-select">
+							<form:option value="" label=""/>
+                            <form:options items="${fns:getDictList('not_work_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                    <div id="notWorkTypeRead" class="layui-input-block">
+                        <form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>调休假期类型:</label>
+                    <div id="notWorkVacation1" class="layui-input-block with-icon" style="display:none">
+						<sys:treeLeave id="leaveType" name="leaveType" value="${workAttendanceRule.leaveType}" labelName="leaveTypeName" labelValue="${workAttendanceRule.leaveTypeName}"
+									   title="调休请假类型" url="/leavetype/leaveType/treeData?typeId=1" isAll="true"  cssClass="form-control required layui-input" notAllowSelectParent="true"/>
+
+					</div>
+                    <div id="notWorkVacationRead" class="layui-input-block">
+                        <form:input path="" htmlEscape="false" readonly="true" minlength="1" maxlength="3" class="form-control layui-input"/>
+                    </div>
+                </div>
+            </div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>规则使用范围-部门</h2></div>
+				<div id="officeId1" class="layui-item nav-btns" style="display:none">
+					<sys:treeselectofficesChange id="offices" name="" value="" labelName="memberNameStr" labelValue=""
+										   retnParent="true" checked="true" notAllowSelectParent="true" title="部门" url="/sys/office/treeDataBranchOffice?type=2"  cssClass="form-control required" allowClear="true"/>
+				</div>
+                <div id="officeId2" style="display:none">
+                    <button style="font-size:14px;" type="button" onclick="addInfo()" class="nav-btn nav-btn-add"><i class="fa fa-plus"></i>&nbsp;选择
+                    </button>
+                </div>
+				<table id="officeTable" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>部门</th>
+						<th>操作</th>
+					</tr>
+					</thead>
+					<tbody id="officeTableList">
+					</tbody>
+				</table>
+				<script type="text/template" id="officeTpl">//<!--
+                    <tr id="officeList{{idx}}">
+                        <td class="hide">
+                            <input id="officeList{{idx}}_id" name="officeList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control officeId"/>
+                            <input id="officeList{{idx}}_delFlag" name="officeList[{{idx}}].delFlag" readonly="true" value="0" type="hidden" class="form-control delFlag"/>
+                        </td>
+                        <td>
+                            {{row.name}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#officeList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+				</script>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>规则使用范围-成员</h2></div>
+				<div id="userId1" class="layui-item nav-btns"  style="display:none">
+					<sys:treeselectusersChange id="users" name="" value="" labelName="memberNameStr" labelValue=""
+										 retnParent="true" title="用户" url="/sys/office/treeDataBranchOffice?type=3" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+				</div>
+                <div id="userId2" style="display:none">
+                    <button style="font-size:14px;" type="button" onclick="addInfo()" class="nav-btn nav-btn-add"><i class="fa fa-plus"></i>&nbsp;选择
+                    </button>
+                </div>
+				<table id="userTable" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>姓名</th>
+						<th>部门</th>
+						<th>操作</th>
+					</tr>
+					</thead>
+					<tbody id="userTableList">
+					</tbody>
+				</table>
+				<script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                            <input id="userList{{idx}}_delFlag" name="userList[{{idx}}].delFlag" readonly="true" value="0" type="hidden" class="form-control delFlag"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                        <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRow(this, '#userList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                        </td>
+                    </tr>//-->
+				</script>
+				<script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var data = ${fns:toJson(workAttendanceRule.officeList)};
+                        if (data!=null) {
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#officeTableList', officeIdx, officeTpl, data[i]);
+                                officeIdx = officeIdx + 1;
+                            }
+                        }
+                        var dataBank = ${fns:toJson(workAttendanceRule.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = 0;
+                        if('#userTableList'==list){
+                            idx1 = $("#userTableList tr").length
+                        }else if('#officeTableList'==list){
+                            idx1 = $("#officeTableList tr").length
+                        }
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix){
+                        var delFlag = $(prefix+"_delFlag");
+                        delFlag.val("1");
+                        $(obj).parent().parent().hide();
+                    }
+				</script>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 149 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceRuleList.jsp

@@ -0,0 +1,149 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤规则管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		.widthClass{
+			display: inline-block;
+		}
+		.shows .input-group{
+			width: 48%!important;
+		}
+	</style>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+    <script type="text/javascript">
+        function changeBtn(obj) {
+
+        }
+    </script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row ">
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="workAttendanceRule" action="${ctx}/workattendance/workAttendanceRule/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw9">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">分公司:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselectChange id="branchOffice" name="branchOffice.id" value="${workAttendanceRule.branchOffice.id}" labelName="branchOffice.name"  labelValue="${workAttendanceRule.branchOffice.name}"
+													  title="部门" url="/sys/office/treeDataCompanyDSF?type=2" cssClass="form-control required layui-input" allowClear="true" />
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">规则名称:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="reset()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw9">
+
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<shiro:hasPermission name="workattendance:workAttendanceRule:add">
+						<table:addRow url="${ctx}/workattendance/workAttendanceRule/form" title="考勤规则"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                // {checkbox: true, fixed: true},
+                {field:'number', align:'center',title: '报告编号',width:80}
+                ,{field:'branchOffice', align:'center',title: '分公司',minWidth:120}
+                ,{field:'name',align:'center', title: '规则名称',minWidth:160,templet:function(d){
+                        return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看考勤规则', '${ctx}/workattendance/workAttendanceRule/form?id=" + d.id + "&view=view','95%', '95%')\">" + d.name + "</a>";
+                    }}
+                ,{field:'type', align:'center',title: '考勤方式',minWidth:160}
+                ,{field:'notWorkCount', align:'center',title: '非工作日计算加班',minWidth:160}
+                ,{field:'updateDate', align:'center',title: '修改日期',width:200}
+                ,{align:'center',title:"操作",width:200,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "";
+                        if(d.canedit1 != undefined && d.canedit1 == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改考勤规则', '${ctx}/workattendance/workAttendanceRule/form	?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"${ctx}/workattendance/workAttendanceRule/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该考勤规则吗?', this.href)\"   class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workAttendanceRule" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "id":"${workAttendanceRule.id}"
+                    ,"number":"${workAttendanceRule.number}"
+                    ,"branchOffice":"${workAttendanceRule.branchOffice.name}"
+                    ,"name":"${workAttendanceRule.name}"
+                    ,"type":"${fns:getDictLabel(workAttendanceRule.type, 'attendance_type', '')}"
+                    ,"notWorkCount":"${fns:getDictLabel(workAttendanceRule.notWorkCount, 'not_work_count', '')}"
+                    ,"updateDate":"<fmt:formatDate value="${workAttendanceRule.updateDate}" pattern="yyyy-MM-dd"/>"
+                    <shiro:hasPermission name="workattendance:workAttendanceRule:edit">,"canedit1":"1"</shiro:hasPermission>
+                    <shiro:hasPermission name="workattendance:workAttendanceRule:del"> ,"candelete":"1"</shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+
+    })
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+</html>

+ 265 - 0
src/main/webapp/webpage/modules/workattendance/workAttendanceRuleView.jsp

@@ -0,0 +1,265 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考勤规则</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		img {width: 50px; height: 50px;}
+	</style>
+	<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+	<script type="text/javascript" language="JavaScript" for="window" event="onload">
+	</script>
+
+</head>
+<body >
+<div class="single-form">
+	<div class="container view-form">
+		<form:form id="inputForm" modelAttribute="workAttendanceRule" enctype="multipart/form-data" action="${ctx}/workattendance/workAttendanceRule/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<sys:message content="${message}"/>
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>分公司:</label>
+					<div class="layui-input-block with-icon">
+						<input htmlEscape="false"  readonly="true"  class="form-control layui-input" value="${workAttendanceRule.branchOffice.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规则编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true"  class="form-control layui-input" value="${workAttendanceRule.number}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>规则名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true"  class="form-control layui-input" value="${workAttendanceRule.name}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>办公区域</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="userTable2" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th width="15%">城市</th>
+							<th>sss地理位置</th>
+							<th width="15%">经纬度</th>
+							<th width="12%">半径(米)</th>
+							<th width="10%">WIFI</th>
+							<th width="15%">无线SSID</th>
+							<th width="120px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workAttendancePlaces">
+						<c:if test="${not empty workAttendanceRule.workAttendancePlaces}">
+							<c:forEach items="${workAttendanceRule.workAttendancePlaces}" var="workAttendancePlaces" varStatus="index">
+								<tr id="workAttendancePlaces${index.index}">
+									<td class="hide">
+									</td>
+									<td>
+											${workAttendancePlaces.area.name}
+									</td>
+
+									<td>
+											${workAttendancePlaces.placeName}
+									</td>
+									<td>
+											${workAttendancePlaces.itude}
+									</td>
+									<td>
+											${workAttendancePlaces.placeScope}
+									</td>
+									<td>
+											${workAttendancePlaces.wifi}
+									</td>
+									<td>
+											${workAttendancePlaces.wifiName}
+									</td>
+									<td class="text-center op-td">
+									</td>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>考勤方式</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>考勤方式:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceRule.type, 'attendance_type', '')}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<div class="layui-input-block">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 ">
+					<label class="layui-form-label"><span class="require-item">*</span>上班时间:</label>
+					<div id="startTime1" class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceRule.startTime}" pattern="HH:mm:ss"/>"/>
+					</div>
+
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>下班时间:</label>
+					<div id="endime1" class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="<fmt:formatDate value="${workAttendanceRule.endTime}" pattern="HH:mm:ss"/>"/>
+					</div>
+				</div>
+			</div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>非工作日加班</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>非工作日计算加班:</label>
+                    <div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceRule.notWorkCount, 'not_work_count', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">非工作日加班需要申请:</label>
+                    <div id="notWorkNeed1" class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceRule.notWorkNeed, 'not_work_need', '')}"/>
+					</div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">非工作日加班处理方式:</label>
+                    <div id="notWorkType1" class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${fns:getDictLabel(workAttendanceRule.notWorkType, 'not_work_type', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>调休假期类型:</label>
+                    <div id="notWorkVacation1" class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  class="form-control layui-input" value="${workAttendanceRule.leaveTypeName}"/>
+					</div>
+                </div>
+            </div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>规则使用范围-部门</h2></div>
+				<table id="officeTable" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>部门</th>
+						<th>操作</th>
+					</tr>
+					</thead>
+					<tbody id="officeTableList">
+					</tbody>
+				</table>
+				<script type="text/template" id="officeTpl">//<!--
+                    <tr id="officeList{{idx}}">
+                        <td class="hide">
+                            <input id="officeList{{idx}}_id" name="officeList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control officeId"/>
+                        </td>
+                        <td>
+                            {{row.name}}
+                        </td>
+                        <td class="text-center op-td">
+                        </td>
+                    </tr>//-->
+				</script>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>规则使用范围-成员</h2></div>
+				<div id="userId1" class="layui-item nav-btns"  style="display:none">
+					<sys:treeselectusersChange id="users" name="" value="" labelName="memberNameStr" labelValue=""
+										 retnParent="true" title="用户" url="/sys/office/treeDataBranchOffice?type=3" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+				</div>
+                <div id="userId2" style="display:none">
+                    <button style="font-size:14px;" type="button" onclick="addInfo()" class="nav-btn nav-btn-add"><i class="fa fa-plus"></i>&nbsp;选择
+                    </button>
+                </div>
+				<table id="userTable" class="table table-bordered table-condensed details">
+					<thead>
+					<tr>
+						<th class="hide"></th>
+						<th>姓名</th>
+						<th>部门</th>
+						<th>操作</th>
+					</tr>
+					</thead>
+					<tbody id="userTableList">
+					</tbody>
+				</table>
+				<script type="text/template" id="userTpl">//<!--
+                    <tr id="userList{{idx}}">
+                        <td class="hide">
+                            <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+                        </td>
+                        <td>
+                        {{row.name}}
+                        </td>
+                        <td>
+                        {{row.officeName}}
+                        </td>
+                        <td class="text-center op-td">
+                        </td>
+                    </tr>//-->
+				</script>
+				<script type="text/javascript">
+                    var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+
+                    $(document).ready(function() {
+                        var data = ${fns:toJson(workAttendanceRule.officeList)};
+                        if (data!=null) {
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#officeTableList', officeIdx, officeTpl, data[i]);
+                                officeIdx = officeIdx + 1;
+                            }
+                        }
+                        var dataBank = ${fns:toJson(workAttendanceRule.userList)};
+                        if (dataBank!=null) {
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+                                userIdx = userIdx + 1;
+                            }
+                        }
+                    });
+
+                    function addRow(list, idx, tpl, row){
+                        var idx1 = 0;
+                        if('#userTableList'==list){
+                            idx1 = $("#userTableList tr").length
+                        }else if('#officeTableList'==list){
+                            idx1 = $("#officeTableList tr").length
+                        }
+                        bornTemplete(list, idx, tpl, row, idx1);
+                    }
+                    function bornTemplete(list, idx, tpl, row, idx1){
+                        $(list).append(Mustache.render(tpl, {
+                            idx: idx, delBtn: true, row: row,
+                            order:idx1 + 1, idx1:idx1
+                        }));
+                        $(list+idx).find("select").each(function(){
+                            $(this).val($(this).attr("data-value"));
+                        });
+                        $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                            var ss = $(this).attr("data-value").split(',');
+                            for (var i=0; i<ss.length; i++){
+                                if($(this).val() == ss[i]){
+                                    $(this).attr("checked","checked");
+                                }
+                            }
+                        });
+                    }
+                    function delRow(obj, prefix,idx){
+                        $(obj).parent().parent().remove();
+                    }
+				</script>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>