xvying 2 years ago
parent
commit
45b8f819ec
100 changed files with 1154 additions and 885 deletions
  1. 2 2
      common/http.interceptor.js
  2. 5 5
      online/index.html
  3. BIN
      online/static/.DS_Store
  4. 362 362
      online/static/common/js/touch-emulator.js
  5. BIN
      online/static/img/index_class.3400f8ff.png
  6. 0 0
      online/static/index.css
  7. 0 0
      online/static/js/chunk-vendors.24496f2e.js
  8. 0 0
      online/static/js/index.686e9b89.js
  9. 0 0
      online/static/js/pages-activity-add.6ae30912.js
  10. 0 0
      online/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.80b3c6b8.js
  11. 0 0
      online/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.0daa9728.js
  12. 0 0
      online/static/js/pages-activity-add~pages-index-realname.e7d68b59.js
  13. 0 0
      online/static/js/pages-activity-details.b3410016.js
  14. 0 0
      online/static/js/pages-activity-details_list.5400adbc.js
  15. 0 0
      online/static/js/pages-activity-history.fcf08205.js
  16. 0 0
      online/static/js/pages-activity-index.cce65f36.js
  17. 0 0
      online/static/js/pages-activity-success.9e3c5de2.js
  18. 0 0
      online/static/js/pages-index-index.16c8069b.js
  19. 0 0
      online/static/js/pages-index-realname.a1af86f0.js
  20. 0 0
      online/static/js/pages-index-realname~pages-scheduling-index.bbda0c81.js
  21. 0 0
      online/static/js/pages-login-index.ee8fcb9b.js
  22. 0 0
      online/static/js/pages-mine-change_pwd.b96093e1.js
  23. 0 0
      online/static/js/pages-mine-change_pwd~pages-scheduling-index.8a36d64e.js
  24. 0 0
      online/static/js/pages-mine-index.05acb960.js
  25. 0 0
      online/static/js/pages-mine-liuyan.c29eae3d.js
  26. 0 0
      online/static/js/pages-mine-notice.a7d6f18a.js
  27. 0 0
      online/static/js/pages-mine-record.0e0429d9.js
  28. 0 0
      online/static/js/pages-mine-shuangchuang.1da38af4.js
  29. 0 0
      online/static/js/pages-mine-shuangchuang_detail.354cec18.js
  30. 0 0
      online/static/js/pages-scheduling-add.ddde36dc.js
  31. 0 0
      online/static/js/pages-scheduling-index.77973a10.js
  32. 0 0
      online/static/js/pages-student-details.28716b4e.js
  33. 0 0
      online/static/js/pages-student-index_new.1442bf51.js
  34. 0 0
      online/static/js/pages-wenjuan-wenjuan.ccc2a840.js
  35. 1 1
      online1/index.html
  36. 0 0
      online1/static/index.css
  37. 0 0
      online1/static/js/chunk-vendors.46cc4b09.js
  38. 0 0
      online1/static/js/chunk-vendors.b4074974.js
  39. 0 0
      online1/static/js/index.d3746cff.js
  40. 0 0
      online1/static/js/index.da4903f0.js
  41. 0 0
      online1/static/js/pages-activity-add.98075f3b.js
  42. 0 0
      online1/static/js/pages-activity-add.d0ac3313.js
  43. 0 0
      online1/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.4bdb097e.js
  44. 0 0
      online1/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.79134b76.js
  45. 0 0
      online1/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.7c48fad2.js
  46. 0 0
      online1/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.d0b9d855.js
  47. 0 0
      online1/static/js/pages-activity-add~pages-index-realname.92859d3d.js
  48. 0 0
      online1/static/js/pages-activity-add~pages-index-realname.dc2d2220.js
  49. 0 0
      online1/static/js/pages-activity-details.1cb0fc41.js
  50. 0 0
      online1/static/js/pages-activity-details.2f3e351d.js
  51. 0 0
      online1/static/js/pages-activity-details_list.0c616657.js
  52. 0 0
      online1/static/js/pages-activity-details_list.1f8f266e.js
  53. 0 0
      online1/static/js/pages-activity-history.6bfff952.js
  54. 0 0
      online1/static/js/pages-activity-history.9a7d790b.js
  55. 0 0
      online1/static/js/pages-activity-index.583debeb.js
  56. 0 0
      online1/static/js/pages-activity-index.cf2b6845.js
  57. 0 0
      online1/static/js/pages-activity-success.260d6e2d.js
  58. 0 0
      online1/static/js/pages-activity-success.e642534d.js
  59. 0 0
      online1/static/js/pages-index-index.14583d99.js
  60. 0 0
      online1/static/js/pages-index-index.fd8531b3.js
  61. 0 0
      online1/static/js/pages-index-realname.4794cef6.js
  62. 0 0
      online1/static/js/pages-index-realname.9cf08fac.js
  63. 0 0
      online1/static/js/pages-login-index.48799ccd.js
  64. 0 0
      online1/static/js/pages-login-index.bd699912.js
  65. 0 0
      online1/static/js/pages-mine-change_pwd.c8fa89ae.js
  66. 0 0
      online1/static/js/pages-mine-change_pwd.cbabbc89.js
  67. 0 0
      online1/static/js/pages-mine-index.3a0d0fbc.js
  68. 0 0
      online1/static/js/pages-mine-index.d92c1766.js
  69. 0 0
      online1/static/js/pages-mine-liuyan.44e4c0c8.js
  70. 0 0
      online1/static/js/pages-mine-liuyan.817b9965.js
  71. 0 0
      online1/static/js/pages-mine-notice.6d8fcbb4.js
  72. 0 0
      online1/static/js/pages-mine-notice.6ff09ca2.js
  73. 0 0
      online1/static/js/pages-mine-record.3d317856.js
  74. 0 0
      online1/static/js/pages-mine-record.61651350.js
  75. 0 0
      online1/static/js/pages-mine-shuangchuang.1fd8181b.js
  76. 0 0
      online1/static/js/pages-mine-shuangchuang.a6353f75.js
  77. 0 0
      online1/static/js/pages-mine-shuangchuang_detail.59391903.js
  78. 0 0
      online1/static/js/pages-mine-shuangchuang_detail.737ff4e3.js
  79. 0 0
      online1/static/js/pages-scheduling-add.7433f3ec.js
  80. 0 0
      online1/static/js/pages-scheduling-add.89493f5d.js
  81. 0 0
      online1/static/js/pages-scheduling-index.5b324cb8.js
  82. 0 0
      online1/static/js/pages-scheduling-index.b0f2c1d7.js
  83. 0 0
      online1/static/js/pages-student-details.11ff5063.js
  84. 0 0
      online1/static/js/pages-student-details.5371c816.js
  85. 0 0
      online1/static/js/pages-student-index_new.35b9eb83.js
  86. 0 0
      online1/static/js/pages-student-index_new.9ec5108d.js
  87. 0 0
      online1/static/js/pages-wenjuan-wenjuan.1ec5943c.js
  88. 0 0
      online1/static/js/pages-wenjuan-wenjuan.8e7ca822.js
  89. 16 24
      pages/index/index.vue
  90. 11 5
      pages/mine/record.vue
  91. 390 119
      pages/scheduling/index.vue
  92. 5 5
      unpackage/dist/build/h5/index.html
  93. 362 362
      unpackage/dist/build/h5/static/common/js/touch-emulator.js
  94. BIN
      unpackage/dist/build/h5/static/img/index_class.3400f8ff.png
  95. 0 0
      unpackage/dist/build/h5/static/index.css
  96. 0 0
      unpackage/dist/build/h5/static/js/chunk-vendors.24496f2e.js
  97. 0 0
      unpackage/dist/build/h5/static/js/chunk-vendors.b4074974.js
  98. 0 0
      unpackage/dist/build/h5/static/js/index.686e9b89.js
  99. 0 0
      unpackage/dist/build/h5/static/js/index.da4903f0.js
  100. 0 0
      unpackage/dist/build/h5/static/js/pages-activity-add.6ae30912.js

+ 2 - 2
common/http.interceptor.js

@@ -7,8 +7,8 @@ const install = (Vue, vm) => {
 	Vue.prototype.$u.http.setConfig({
 
 		// baseUrl: 'http://mt.mentor.site.ximengnaikang.com/api',
-		// baseUrl: '/api',
-		baseUrl:'https://zhsz.hactcm.edu.cn/api',
+		baseUrl: '/api',
+		// baseUrl:'https://zhsz.hactcm.edu.cn/api',
 		originalData: true,
 		dataType: 'json',
 		showLoading: true, // 是否显示请求中的loading

+ 5 - 5
online/index.html

@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><link rel="shortcut icon" type=image/x-icon href=/static/logo.ico><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>智慧导师预约-教师端</title><style>::-webkit-scrollbar{
-                display: none;
-            }</style><script>document.addEventListener('DOMContentLoaded', function() {
-				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.b4074974.js></script><script src=/h5-teacher/static/js/index.da4903f0.js></script></body></html>
+<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><link rel="shortcut icon" type=image/x-icon href=/static/logo.ico><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>智慧导师预约-教师端</title><style>::-webkit-scrollbar{
+                display: none;
+            }</style><script>document.addEventListener('DOMContentLoaded', function() {
+				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
+			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.24496f2e.js></script><script src=/h5-teacher/static/js/index.686e9b89.js></script></body></html>

BIN
online/static/.DS_Store


+ 362 - 362
online/static/common/js/touch-emulator.js

@@ -1,363 +1,363 @@
-(function(window, document, exportName, undefined) {
-    "use strict";
-
-    var isMultiTouch = false;
-    var multiTouchStartPos;
-    var eventTarget;
-    var touchElements = {};
-
-    // polyfills
-    if(!document.createTouch) {
-        document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
-            // auto set
-            if(clientX == undefined || clientY == undefined) {
-                clientX = pageX - window.pageXOffset;
-                clientY = pageY - window.pageYOffset;
-            }
-
-            return new Touch(target, identifier, {
-                pageX: pageX,
-                pageY: pageY,
-                screenX: screenX,
-                screenY: screenY,
-                clientX: clientX,
-                clientY: clientY
-            });
-        };
-    }
-
-    if(!document.createTouchList) {
-        document.createTouchList = function() {
-            var touchList = new TouchList();
-            for (var i = 0; i < arguments.length; i++) {
-                touchList[i] = arguments[i];
-            }
-            touchList.length = arguments.length;
-            return touchList;
-        };
-    }
-
-    /**
-     * create an touch point
-     * @constructor
-     * @param target
-     * @param identifier
-     * @param pos
-     * @param deltaX
-     * @param deltaY
-     * @returns {Object} touchPoint
-     */
-    function Touch(target, identifier, pos, deltaX, deltaY) {
-        deltaX = deltaX || 0;
-        deltaY = deltaY || 0;
-
-        this.identifier = identifier;
-        this.target = target;
-        this.clientX = pos.clientX + deltaX;
-        this.clientY = pos.clientY + deltaY;
-        this.screenX = pos.screenX + deltaX;
-        this.screenY = pos.screenY + deltaY;
-        this.pageX = pos.pageX + deltaX;
-        this.pageY = pos.pageY + deltaY;
-    }
-
-    /**
-     * create empty touchlist with the methods
-     * @constructor
-     * @returns touchList
-     */
-    function TouchList() {
-        var touchList = [];
-
-        touchList.item = function(index) {
-            return this[index] || null;
-        };
-
-        // specified by Mozilla
-        touchList.identifiedTouch = function(id) {
-            return this[id + 1] || null;
-        };
-
-        return touchList;
-    }
-
-
-    /**
-     * Simple trick to fake touch event support
-     * this is enough for most libraries like Modernizr and Hammer
-     */
-    function fakeTouchSupport() {
-        var objs = [window, document.documentElement];
-        var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
-
-        for(var o=0; o<objs.length; o++) {
-            for(var p=0; p<props.length; p++) {
-                if(objs[o] && objs[o][props[p]] == undefined) {
-                    objs[o][props[p]] = null;
-                }
-            }
-        }
-    }
-
-    /**
-     * we don't have to emulate on a touch device
-     * @returns {boolean}
-     */
-    function hasTouchSupport() {
-        return ("ontouchstart" in window) || // touch events
-               (window.Modernizr && window.Modernizr.touch) || // modernizr
-               (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
-    }
-
-    /**
-     * disable mouseevents on the page
-     * @param ev
-     */
-    function preventMouseEvents(ev) {
-		// 注释启用默认事件
-        // ev.preventDefault();
-        // ev.stopPropagation();
-    }
-
-    /**
-     * only trigger touches when the left mousebutton has been pressed
-     * @param touchType
-     * @returns {Function}
-     */
-    function onMouse(touchType) {
-        return function(ev) {
-            // prevent mouse events
-            preventMouseEvents(ev);
-
-            if (ev.which !== 1) {
-                return;
-            }
-
-            // The EventTarget on which the touch point started when it was first placed on the surface,
-            // even if the touch point has since moved outside the interactive area of that element.
-            // also, when the target doesnt exist anymore, we update it
-            if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
-                eventTarget = ev.target;
-            }
-
-            // shiftKey has been lost, so trigger a touchend
-            if (isMultiTouch && !ev.shiftKey) {
-                triggerTouch('touchend', ev);
-                isMultiTouch = false;
-            }
-
-            triggerTouch(touchType, ev);
-
-            // we're entering the multi-touch mode!
-            if (!isMultiTouch && ev.shiftKey) {
-                isMultiTouch = true;
-                multiTouchStartPos = {
-                    pageX: ev.pageX,
-                    pageY: ev.pageY,
-                    clientX: ev.clientX,
-                    clientY: ev.clientY,
-                    screenX: ev.screenX,
-                    screenY: ev.screenY
-                };
-                triggerTouch('touchstart', ev);
-            }
-
-            // reset
-            if (ev.type == 'mouseup') {
-                multiTouchStartPos = null;
-                isMultiTouch = false;
-                eventTarget = null;
-            }
-        }
-    }
-
-    /**
-     * trigger a touch event
-     * @param eventName
-     * @param mouseEv
-     */
-    function triggerTouch(eventName, mouseEv) {
-        var touchEvent = document.createEvent('Event');
-        touchEvent.initEvent(eventName, true, true);
-
-        touchEvent.altKey = mouseEv.altKey;
-        touchEvent.ctrlKey = mouseEv.ctrlKey;
-        touchEvent.metaKey = mouseEv.metaKey;
-        touchEvent.shiftKey = mouseEv.shiftKey;
-
-        touchEvent.touches = getActiveTouches(mouseEv, eventName);
-        touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
-        touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
-
-        eventTarget.dispatchEvent(touchEvent);
-    }
-
-    /**
-     * create a touchList based on the mouse event
-     * @param mouseEv
-     * @returns {TouchList}
-     */
-    function createTouchList(mouseEv) {
-        var touchList = new TouchList();
-
-        if (isMultiTouch) {
-            var f = TouchEmulator.multiTouchOffset;
-            var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
-            var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
-
-            touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));
-            touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));
-        } else {
-            touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
-        }
-
-        return touchList;
-    }
-
-    /**
-     * receive all active touches
-     * @param mouseEv
-     * @returns {TouchList}
-     */
-    function getActiveTouches(mouseEv, eventName) {
-        // empty list
-        if (mouseEv.type == 'mouseup') {
-            return new TouchList();
-        }
-
-        var touchList = createTouchList(mouseEv);
-        if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
-            touchList.splice(1, 1);
-        }
-        return touchList;
-    }
-
-    /**
-     * receive a filtered set of touches with only the changed pointers
-     * @param mouseEv
-     * @param eventName
-     * @returns {TouchList}
-     */
-    function getChangedTouches(mouseEv, eventName) {
-        var touchList = createTouchList(mouseEv);
-
-        // we only want to return the added/removed item on multitouch
-        // which is the second pointer, so remove the first pointer from the touchList
-        //
-        // but when the mouseEv.type is mouseup, we want to send all touches because then
-        // no new input will be possible
-        if(isMultiTouch && mouseEv.type != 'mouseup' &&
-            (eventName == 'touchstart' || eventName == 'touchend')) {
-            touchList.splice(0, 1);
-        }
-
-        return touchList;
-    }
-
-    /**
-     * show the touchpoints on the screen
-     */
-    function showTouches(ev) {
-        var touch, i, el, styles;
-
-        // first all visible touches
-        for(i = 0; i < ev.touches.length; i++) {
-            touch = ev.touches[i];
-            el = touchElements[touch.identifier];
-            if(!el) {
-                el = touchElements[touch.identifier] = document.createElement("div");
-                document.body.appendChild(el);
-            }
-
-            styles = TouchEmulator.template(touch);
-            for(var prop in styles) {
-                el.style[prop] = styles[prop];
-            }
-        }
-
-        // remove all ended touches
-        if(ev.type == 'touchend' || ev.type == 'touchcancel') {
-            for(i = 0; i < ev.changedTouches.length; i++) {
-                touch = ev.changedTouches[i];
-                el = touchElements[touch.identifier];
-                if(el) {
-                    el.parentNode.removeChild(el);
-                    delete touchElements[touch.identifier];
-                }
-            }
-        }
-    }
-
-    /**
-     * TouchEmulator initializer
-     */
-    function TouchEmulator() {
-        if (hasTouchSupport()) {
-            return;
-        }
-
-        fakeTouchSupport();
-
-        window.addEventListener("mousedown", onMouse('touchstart'), true);
-        window.addEventListener("mousemove", onMouse('touchmove'), true);
-        window.addEventListener("mouseup", onMouse('touchend'), true);
-
-        window.addEventListener("mouseenter", preventMouseEvents, true);
-        window.addEventListener("mouseleave", preventMouseEvents, true);
-        window.addEventListener("mouseout", preventMouseEvents, true);
-        window.addEventListener("mouseover", preventMouseEvents, true);
-
-        // it uses itself!
-        window.addEventListener("touchstart", showTouches, true);
-        window.addEventListener("touchmove", showTouches, true);
-        window.addEventListener("touchend", showTouches, true);
-        window.addEventListener("touchcancel", showTouches, true);
-    }
-
-    // start distance when entering the multitouch mode
-    TouchEmulator.multiTouchOffset = 75;
-
-    /**
-     * css template for the touch rendering
-     * @param touch
-     * @returns object
-     */
-    TouchEmulator.template = function(touch) {
-        var size = 0;
-        var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';
-        return {
-            position: 'fixed',
-            left: 0,
-            top: 0,
-            background: '#fff',
-            border: 'solid 1px #999',
-            opacity: .6,
-            borderRadius: '100%',
-            height: size + 'px',
-            width: size + 'px',
-            padding: 0,
-            margin: 0,
-            display: 'block',
-            overflow: 'hidden',
-            pointerEvents: 'none',
-            webkitUserSelect: 'none',
-            mozUserSelect: 'none',
-            userSelect: 'none',
-            webkitTransform: transform,
-            mozTransform: transform,
-            transform: transform,
-            zIndex: 100
-        }
-    };
-
-    // export
-    if (typeof define == "function" && define.amd) {
-        define(function() {
-            return TouchEmulator;
-        });
-    } else if (typeof module != "undefined" && module.exports) {
-        module.exports = TouchEmulator;
-    } else {
-        window[exportName] = TouchEmulator;
-    }
+(function(window, document, exportName, undefined) {
+    "use strict";
+
+    var isMultiTouch = false;
+    var multiTouchStartPos;
+    var eventTarget;
+    var touchElements = {};
+
+    // polyfills
+    if(!document.createTouch) {
+        document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
+            // auto set
+            if(clientX == undefined || clientY == undefined) {
+                clientX = pageX - window.pageXOffset;
+                clientY = pageY - window.pageYOffset;
+            }
+
+            return new Touch(target, identifier, {
+                pageX: pageX,
+                pageY: pageY,
+                screenX: screenX,
+                screenY: screenY,
+                clientX: clientX,
+                clientY: clientY
+            });
+        };
+    }
+
+    if(!document.createTouchList) {
+        document.createTouchList = function() {
+            var touchList = new TouchList();
+            for (var i = 0; i < arguments.length; i++) {
+                touchList[i] = arguments[i];
+            }
+            touchList.length = arguments.length;
+            return touchList;
+        };
+    }
+
+    /**
+     * create an touch point
+     * @constructor
+     * @param target
+     * @param identifier
+     * @param pos
+     * @param deltaX
+     * @param deltaY
+     * @returns {Object} touchPoint
+     */
+    function Touch(target, identifier, pos, deltaX, deltaY) {
+        deltaX = deltaX || 0;
+        deltaY = deltaY || 0;
+
+        this.identifier = identifier;
+        this.target = target;
+        this.clientX = pos.clientX + deltaX;
+        this.clientY = pos.clientY + deltaY;
+        this.screenX = pos.screenX + deltaX;
+        this.screenY = pos.screenY + deltaY;
+        this.pageX = pos.pageX + deltaX;
+        this.pageY = pos.pageY + deltaY;
+    }
+
+    /**
+     * create empty touchlist with the methods
+     * @constructor
+     * @returns touchList
+     */
+    function TouchList() {
+        var touchList = [];
+
+        touchList.item = function(index) {
+            return this[index] || null;
+        };
+
+        // specified by Mozilla
+        touchList.identifiedTouch = function(id) {
+            return this[id + 1] || null;
+        };
+
+        return touchList;
+    }
+
+
+    /**
+     * Simple trick to fake touch event support
+     * this is enough for most libraries like Modernizr and Hammer
+     */
+    function fakeTouchSupport() {
+        var objs = [window, document.documentElement];
+        var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
+
+        for(var o=0; o<objs.length; o++) {
+            for(var p=0; p<props.length; p++) {
+                if(objs[o] && objs[o][props[p]] == undefined) {
+                    objs[o][props[p]] = null;
+                }
+            }
+        }
+    }
+
+    /**
+     * we don't have to emulate on a touch device
+     * @returns {boolean}
+     */
+    function hasTouchSupport() {
+        return ("ontouchstart" in window) || // touch events
+               (window.Modernizr && window.Modernizr.touch) || // modernizr
+               (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
+    }
+
+    /**
+     * disable mouseevents on the page
+     * @param ev
+     */
+    function preventMouseEvents(ev) {
+		// 注释启用默认事件
+        // ev.preventDefault();
+        // ev.stopPropagation();
+    }
+
+    /**
+     * only trigger touches when the left mousebutton has been pressed
+     * @param touchType
+     * @returns {Function}
+     */
+    function onMouse(touchType) {
+        return function(ev) {
+            // prevent mouse events
+            preventMouseEvents(ev);
+
+            if (ev.which !== 1) {
+                return;
+            }
+
+            // The EventTarget on which the touch point started when it was first placed on the surface,
+            // even if the touch point has since moved outside the interactive area of that element.
+            // also, when the target doesnt exist anymore, we update it
+            if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
+                eventTarget = ev.target;
+            }
+
+            // shiftKey has been lost, so trigger a touchend
+            if (isMultiTouch && !ev.shiftKey) {
+                triggerTouch('touchend', ev);
+                isMultiTouch = false;
+            }
+
+            triggerTouch(touchType, ev);
+
+            // we're entering the multi-touch mode!
+            if (!isMultiTouch && ev.shiftKey) {
+                isMultiTouch = true;
+                multiTouchStartPos = {
+                    pageX: ev.pageX,
+                    pageY: ev.pageY,
+                    clientX: ev.clientX,
+                    clientY: ev.clientY,
+                    screenX: ev.screenX,
+                    screenY: ev.screenY
+                };
+                triggerTouch('touchstart', ev);
+            }
+
+            // reset
+            if (ev.type == 'mouseup') {
+                multiTouchStartPos = null;
+                isMultiTouch = false;
+                eventTarget = null;
+            }
+        }
+    }
+
+    /**
+     * trigger a touch event
+     * @param eventName
+     * @param mouseEv
+     */
+    function triggerTouch(eventName, mouseEv) {
+        var touchEvent = document.createEvent('Event');
+        touchEvent.initEvent(eventName, true, true);
+
+        touchEvent.altKey = mouseEv.altKey;
+        touchEvent.ctrlKey = mouseEv.ctrlKey;
+        touchEvent.metaKey = mouseEv.metaKey;
+        touchEvent.shiftKey = mouseEv.shiftKey;
+
+        touchEvent.touches = getActiveTouches(mouseEv, eventName);
+        touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
+        touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
+
+        eventTarget.dispatchEvent(touchEvent);
+    }
+
+    /**
+     * create a touchList based on the mouse event
+     * @param mouseEv
+     * @returns {TouchList}
+     */
+    function createTouchList(mouseEv) {
+        var touchList = new TouchList();
+
+        if (isMultiTouch) {
+            var f = TouchEmulator.multiTouchOffset;
+            var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
+            var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
+
+            touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));
+            touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));
+        } else {
+            touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
+        }
+
+        return touchList;
+    }
+
+    /**
+     * receive all active touches
+     * @param mouseEv
+     * @returns {TouchList}
+     */
+    function getActiveTouches(mouseEv, eventName) {
+        // empty list
+        if (mouseEv.type == 'mouseup') {
+            return new TouchList();
+        }
+
+        var touchList = createTouchList(mouseEv);
+        if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
+            touchList.splice(1, 1);
+        }
+        return touchList;
+    }
+
+    /**
+     * receive a filtered set of touches with only the changed pointers
+     * @param mouseEv
+     * @param eventName
+     * @returns {TouchList}
+     */
+    function getChangedTouches(mouseEv, eventName) {
+        var touchList = createTouchList(mouseEv);
+
+        // we only want to return the added/removed item on multitouch
+        // which is the second pointer, so remove the first pointer from the touchList
+        //
+        // but when the mouseEv.type is mouseup, we want to send all touches because then
+        // no new input will be possible
+        if(isMultiTouch && mouseEv.type != 'mouseup' &&
+            (eventName == 'touchstart' || eventName == 'touchend')) {
+            touchList.splice(0, 1);
+        }
+
+        return touchList;
+    }
+
+    /**
+     * show the touchpoints on the screen
+     */
+    function showTouches(ev) {
+        var touch, i, el, styles;
+
+        // first all visible touches
+        for(i = 0; i < ev.touches.length; i++) {
+            touch = ev.touches[i];
+            el = touchElements[touch.identifier];
+            if(!el) {
+                el = touchElements[touch.identifier] = document.createElement("div");
+                document.body.appendChild(el);
+            }
+
+            styles = TouchEmulator.template(touch);
+            for(var prop in styles) {
+                el.style[prop] = styles[prop];
+            }
+        }
+
+        // remove all ended touches
+        if(ev.type == 'touchend' || ev.type == 'touchcancel') {
+            for(i = 0; i < ev.changedTouches.length; i++) {
+                touch = ev.changedTouches[i];
+                el = touchElements[touch.identifier];
+                if(el) {
+                    el.parentNode.removeChild(el);
+                    delete touchElements[touch.identifier];
+                }
+            }
+        }
+    }
+
+    /**
+     * TouchEmulator initializer
+     */
+    function TouchEmulator() {
+        if (hasTouchSupport()) {
+            return;
+        }
+
+        fakeTouchSupport();
+
+        window.addEventListener("mousedown", onMouse('touchstart'), true);
+        window.addEventListener("mousemove", onMouse('touchmove'), true);
+        window.addEventListener("mouseup", onMouse('touchend'), true);
+
+        window.addEventListener("mouseenter", preventMouseEvents, true);
+        window.addEventListener("mouseleave", preventMouseEvents, true);
+        window.addEventListener("mouseout", preventMouseEvents, true);
+        window.addEventListener("mouseover", preventMouseEvents, true);
+
+        // it uses itself!
+        window.addEventListener("touchstart", showTouches, true);
+        window.addEventListener("touchmove", showTouches, true);
+        window.addEventListener("touchend", showTouches, true);
+        window.addEventListener("touchcancel", showTouches, true);
+    }
+
+    // start distance when entering the multitouch mode
+    TouchEmulator.multiTouchOffset = 75;
+
+    /**
+     * css template for the touch rendering
+     * @param touch
+     * @returns object
+     */
+    TouchEmulator.template = function(touch) {
+        var size = 0;
+        var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';
+        return {
+            position: 'fixed',
+            left: 0,
+            top: 0,
+            background: '#fff',
+            border: 'solid 1px #999',
+            opacity: .6,
+            borderRadius: '100%',
+            height: size + 'px',
+            width: size + 'px',
+            padding: 0,
+            margin: 0,
+            display: 'block',
+            overflow: 'hidden',
+            pointerEvents: 'none',
+            webkitUserSelect: 'none',
+            mozUserSelect: 'none',
+            userSelect: 'none',
+            webkitTransform: transform,
+            mozTransform: transform,
+            transform: transform,
+            zIndex: 100
+        }
+    };
+
+    // export
+    if (typeof define == "function" && define.amd) {
+        define(function() {
+            return TouchEmulator;
+        });
+    } else if (typeof module != "undefined" && module.exports) {
+        module.exports = TouchEmulator;
+    } else {
+        window[exportName] = TouchEmulator;
+    }
 })(window, document, "TouchEmulator");

BIN
online/static/img/index_class.3400f8ff.png


File diff suppressed because it is too large
+ 0 - 0
online/static/index.css


File diff suppressed because it is too large
+ 0 - 0
online/static/js/chunk-vendors.24496f2e.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/index.686e9b89.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-add.6ae30912.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.80b3c6b8.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.0daa9728.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-add~pages-index-realname.e7d68b59.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-details.b3410016.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-details_list.5400adbc.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-history.fcf08205.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-index.cce65f36.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-activity-success.9e3c5de2.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-index-index.16c8069b.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-index-realname.a1af86f0.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-index-realname~pages-scheduling-index.bbda0c81.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-login-index.ee8fcb9b.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-change_pwd.b96093e1.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-change_pwd~pages-scheduling-index.8a36d64e.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-index.05acb960.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-liuyan.c29eae3d.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-notice.a7d6f18a.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-record.0e0429d9.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-shuangchuang.1da38af4.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-mine-shuangchuang_detail.354cec18.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-scheduling-add.ddde36dc.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-scheduling-index.77973a10.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-student-details.28716b4e.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-student-index_new.1442bf51.js


File diff suppressed because it is too large
+ 0 - 0
online/static/js/pages-wenjuan-wenjuan.ccc2a840.js


+ 1 - 1
online1/index.html

@@ -2,4 +2,4 @@
                 display: none;
             }</style><script>document.addEventListener('DOMContentLoaded', function() {
 				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.46cc4b09.js></script><script src=/h5-teacher/static/js/index.d3746cff.js></script></body></html>
+			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.b4074974.js></script><script src=/h5-teacher/static/js/index.da4903f0.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
online1/static/index.css


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/chunk-vendors.46cc4b09.js


+ 0 - 0
online/static/js/chunk-vendors.b4074974.js → online1/static/js/chunk-vendors.b4074974.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/index.d3746cff.js


+ 0 - 0
online/static/js/index.da4903f0.js → online1/static/js/index.da4903f0.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-add.98075f3b.js


+ 0 - 0
online/static/js/pages-activity-add.d0ac3313.js → online1/static/js/pages-activity-add.d0ac3313.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.4bdb097e.js


+ 0 - 0
online/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.79134b76.js → online1/static/js/pages-activity-add~pages-activity-index~pages-index-index~pages-index-realname~pages-login-index~pag~33e2e626.79134b76.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.7c48fad2.js


+ 0 - 0
online/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.d0b9d855.js → online1/static/js/pages-activity-add~pages-index-index~pages-index-realname~pages-mine-record~pages-scheduling-index.d0b9d855.js


+ 0 - 0
online/static/js/pages-activity-add~pages-index-realname.92859d3d.js → online1/static/js/pages-activity-add~pages-index-realname.92859d3d.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-add~pages-index-realname.dc2d2220.js


+ 0 - 0
online/static/js/pages-activity-details.1cb0fc41.js → online1/static/js/pages-activity-details.1cb0fc41.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-details.2f3e351d.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-details_list.0c616657.js


+ 0 - 0
online/static/js/pages-activity-details_list.1f8f266e.js → online1/static/js/pages-activity-details_list.1f8f266e.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-history.6bfff952.js


+ 0 - 0
online/static/js/pages-activity-history.9a7d790b.js → online1/static/js/pages-activity-history.9a7d790b.js


+ 0 - 0
online/static/js/pages-activity-index.583debeb.js → online1/static/js/pages-activity-index.583debeb.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-index.cf2b6845.js


+ 0 - 0
online/static/js/pages-activity-success.260d6e2d.js → online1/static/js/pages-activity-success.260d6e2d.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-activity-success.e642534d.js


+ 0 - 0
online/static/js/pages-index-index.14583d99.js → online1/static/js/pages-index-index.14583d99.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-index-index.fd8531b3.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-index-realname.4794cef6.js


+ 0 - 0
online/static/js/pages-index-realname.9cf08fac.js → online1/static/js/pages-index-realname.9cf08fac.js


+ 0 - 0
online/static/js/pages-login-index.48799ccd.js → online1/static/js/pages-login-index.48799ccd.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-login-index.bd699912.js


+ 0 - 0
online/static/js/pages-mine-change_pwd.c8fa89ae.js → online1/static/js/pages-mine-change_pwd.c8fa89ae.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-change_pwd.cbabbc89.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-index.3a0d0fbc.js


+ 0 - 0
online/static/js/pages-mine-index.d92c1766.js → online1/static/js/pages-mine-index.d92c1766.js


+ 0 - 0
online/static/js/pages-mine-liuyan.44e4c0c8.js → online1/static/js/pages-mine-liuyan.44e4c0c8.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-liuyan.817b9965.js


+ 0 - 0
online/static/js/pages-mine-notice.6d8fcbb4.js → online1/static/js/pages-mine-notice.6d8fcbb4.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-notice.6ff09ca2.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-record.3d317856.js


+ 0 - 0
online/static/js/pages-mine-record.61651350.js → online1/static/js/pages-mine-record.61651350.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-shuangchuang.1fd8181b.js


+ 0 - 0
online/static/js/pages-mine-shuangchuang.a6353f75.js → online1/static/js/pages-mine-shuangchuang.a6353f75.js


+ 0 - 0
online/static/js/pages-mine-shuangchuang_detail.59391903.js → online1/static/js/pages-mine-shuangchuang_detail.59391903.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-mine-shuangchuang_detail.737ff4e3.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-scheduling-add.7433f3ec.js


+ 0 - 0
online/static/js/pages-scheduling-add.89493f5d.js → online1/static/js/pages-scheduling-add.89493f5d.js


+ 0 - 0
online/static/js/pages-scheduling-index.5b324cb8.js → online1/static/js/pages-scheduling-index.5b324cb8.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-scheduling-index.b0f2c1d7.js


+ 0 - 0
online/static/js/pages-student-details.11ff5063.js → online1/static/js/pages-student-details.11ff5063.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-student-details.5371c816.js


+ 0 - 0
online/static/js/pages-student-index_new.35b9eb83.js → online1/static/js/pages-student-index_new.35b9eb83.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-student-index_new.9ec5108d.js


+ 0 - 0
online/static/js/pages-wenjuan-wenjuan.1ec5943c.js → online1/static/js/pages-wenjuan-wenjuan.1ec5943c.js


File diff suppressed because it is too large
+ 0 - 0
online1/static/js/pages-wenjuan-wenjuan.8e7ca822.js


+ 16 - 24
pages/index/index.vue

@@ -158,12 +158,8 @@
 			</view>
 			<view class="list" v-if="list.length>0">
 				<view class="item" v-for="(item,index) in list " :key='index'>
-					<view class="tips" @click="stuDetail(item)" v-if="item.student">
-						查看学生
-					</view>
-					<view class="tips1" v-else style="background-color: rgba(254, 242, 204, 0.97);">
-						暂无预约
-					</view>
+
+
 					<view class="left">
 						<view class="left-time" v-if="item.student">
 							距离值班
@@ -172,31 +168,27 @@
 						<view class="left-time1" v-else>
 							暂无人预约
 						</view>
-						<view class="left-tip" v-if="item.student">
-							<view class="text">
-								<image src="../../static/images/index_clock.png" mode=""></image>
-								<text>{{item.start_time}}--{{item.end_time}}</text>
-							</view>
-							<view class="text">
-								<image src="../../static/images/index_date.png" mode=""></image>
-								<text>{{item.day}}</text>
-							</view>
-						</view>
-						<view class="left-tip1" v-else>
+
+						<view class="left-tip1">
 							<view class="text1">
-								时间
-								<text>{{item.start_time}}--{{item.end_time}}</text>
+								值班时间:
+								<text>{{item.day}}({{item.start_time}}--{{item.end_time}}))</text>
 							</view>
-							<view class="text1">
+							<!-- <view class="text1">
 								日期 :
 								<text>{{item.day}}</text>
+							</view> -->
+							<view class="text">
+								值班教室
+								<text>{{item.room_name}}</text>
 							</view>
 						</view>
+
 					</view>
-					<view class="right">
-						<image v-if="item.student" src="../../static/images/index_class.png" mode=""></image>
-						<image v-else src="../../static/images/index_none.png" mode=""></image>
-					</view>
+					<!-- <view class="right">
+						<image src="../../static/images/index_class.png" mode=""></image>
+					
+					</view> -->
 				</view>
 
 			</view>

+ 11 - 5
pages/mine/record.vue

@@ -60,17 +60,23 @@
 						<view class="time">
 							{{item.day}}
 						</view>
-					</view>
-					<view class="text">
+					</view>
+						<view class="text">
+							值班教室:
+							<view class="time">
+								{{item.room_name || '--'}}
+							</view>
+						</view>
+				<!-- 	<view class="text">
 						有无预约:
 						<view class="time">
 							{{item.student ? '有预约' :'无预约' }}
 						</view>
-					</view>
+					</view> -->
 				</view>
-				<view class="cancel" v-if="item.student" @click="stuDetail(item.student)">
+				<!-- <view class="cancel" v-if="item.student" @click="stuDetail(item.student)">
 					查看学生
-				</view>
+				</view> -->
 			</view>
 		</view>
 		<view class="empty" v-else>

+ 390 - 119
pages/scheduling/index.vue

@@ -2,15 +2,38 @@
 
 	<view class="sheduling">
 		<!-- 添加排班 -->
-		<u-popup v-model="teacher_show" mode="center" border-radius="19">
-			<view class="pop_wrap">
+		<u-popup v-model="teacher_show" mode="right" border-radius="19" @close="handleClose">
+			<view class="pop_wrap pop_wrap_1">
 				<view class="pop_top">
 					<text class="title">请您确认排班时间</text>
 				</view>
-				<view class="pop_center">
-					<text>上课日期:{{now_date}}</text>
-					<text>上课时间:{{time.start_time}}-{{time.end_time}}</text>
-				</view>
+				<u-form :model="form" ref="uForm" label-width="150">
+					<u-form-item label="值班日期">
+						{{now_date}}
+					</u-form-item>
+					<u-form-item label="值班时间">
+						{{time.start_time}}-{{time.end_time}}
+					</u-form-item>
+					<u-form-item label="教室类型" prop="radiovalue1" borderBottom ref="item2">
+						<u-radio-group v-model="form.room_type" @change='changeType'>
+							<u-radio :name="0">
+								固定教室
+							</u-radio>
+							<u-radio :name="1">
+								自定义教室
+							</u-radio>
+						</u-radio-group>
+					</u-form-item>
+					<u-form-item label="教室名称" v-if="form.room_type == 0">
+						<u-input v-model="form.room_name" type="select" @click="roomShow = true" />
+					</u-form-item>
+
+					<u-select v-model="roomShow" mode="mutil-column-auto" value-name="id" label-name="name"
+						:list="roomList" @confirm="actionSheetCallback"></u-select>
+					<u-form-item label="教室名称" v-if="form.room_type == 1">
+						<u-input v-model="form.room_name" />
+					</u-form-item>
+				</u-form>
 				<view class="pop_bootom">
 					<button type="default" @click="sure_choose">确认</button>
 				</view>
@@ -23,8 +46,9 @@
 					<text class="title">您确定要取消如下排班吗</text>
 				</view>
 				<view class="pop_center">
-					<text>上课日期:{{cancel_detail.day}}</text>
-					<text>上课时间:{{cancel_detail.start_time}}-{{cancel_detail.end_time}}</text>
+					<text>值班日期:{{cancel_detail.day}}</text>
+					<text>值班时间:{{cancel_detail.start_time}}-{{cancel_detail.end_time}}</text>
+					<text>值班地点:{{cancel_detail.room_name}}</text>
 				</view>
 				<view class="pop_bootom">
 					<button type="default" @click="sure_cancel">确定取消</button>
@@ -124,125 +148,105 @@
 
 					<view class="" v-for="(item,index) in shedule_list" :key='index'>
 
-						<view class="item" v-if="item.scheduling && index==current_time && index!=-1">
-							<view class="item-left">
-								<view class="image"
-									:style="{backgroundImage:'url('+ (item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png') +')'}">
+						<view v-if="item.scheduling && index==current_time && index!=-1">
+							<view class="item" v-for="(child,value) in item.scheduling">
+								<view class="item-right">
+									<view class="text">
+										<image src="../../static/images/icon-2.png" mode=""></image>
+										<view class="time">
+											{{child.day}}
+										</view>
+									</view>
+									<view class="text">
 
-								</view>
-								<!-- <image
-									:src="item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png'"
-									mode=""></image> -->
-								<view class="name">
-									{{item.scheduling ? item.scheduling.teacher.truename : ''}}
-								</view>
-							</view>
-							<!-- {{item}} -->
-							<view class="item-right">
-								<view class="text">
-									<view class="tips" v-if="item.scheduling.student"
-										@click="stuDetail(item.scheduling)">
-										查看学生
+										<image src="../../static/images/icon-1.png" mode=""></image>
+										<view class="time">
+											{{child.start_time}}-{{child.end_time}}
+										</view>
 									</view>
-									<image src="../../static/images/icon-1.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.start_time}}-{{item.scheduling.end_time}}
+									<view class="text">
+
+										<image src="../../static/images/icon-3.png" mode=""></image>
+										<view class="time">
+											{{child.teacher ? child.teacher.truename :'--'}}
+										</view>
 									</view>
-								</view>
-								<view class="text">
-									<image src="../../static/images/icon-2.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.day}}
+									<view class="text">
+										<image src="../../static/images/icon-3.png" mode=""></image>
+										<view class="time">
+											{{child.room_name }}
+										</view>
 									</view>
 								</view>
-								<view class="text">
-									<image src="../../static/images/icon-3.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.student ? '有预约' :'无预约' }}
-									</view>
+								<view class="cancel" @click="cancelShedule(child)" v-if="checkShedul([child])">
+									取消
+								</view>
+								<view class="" v-if="!item.scheduling">
+									{{ item.is_scheduling == false ? '已过期' : '立即排班' }}
 								</view>
 							</view>
-							<view class="cancel" @click="cancelShedule(item)"
-								v-if="item.is_del==true && item.is_me==true">
-								取消
-							</view>
-							<view class="" v-if="!item.scheduling">
-								{{ item.is_scheduling == false ? '已过期' : '立即排班' }}
-							</view>
-
 						</view>
 
 						<!-- 当时间未全部index==0 -->
+						<view v-if="item.scheduling.length>0 && current_time==-1">
+							<view class="item" v-for="(child,value) in item.scheduling">
+								<view class="item-right">
+									<view class="text">
+										<image src="../../static/images/icon-2.png" mode=""></image>
+										<view class="time">
+											{{child.day}}
+										</view>
+									</view>
+									<view class="text">
 
-						<view class="item" v-if="item.scheduling && current_time==-1">
-							<view class="item-left">
-								<view class="image"
-									:style="{backgroundImage:'url('+ (item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png') +')'}">
+										<image src="../../static/images/icon-1.png" mode=""></image>
+										<view class="time">
+											{{child.start_time}}-{{child.end_time}}
+										</view>
+									</view>
+									<view class="text">
 
-								</view>
-								<!-- <image
-									:src="item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png'"
-									mode=""></image> -->
-								<view class="name">
-									{{item.scheduling ? item.scheduling.teacher.truename : ''}}
-								</view>
-							</view>
-							<!-- {{item}} -->
-							<view class="item-right">
-								<view class="text">
-									<view class="tips" v-if="item.scheduling.student"
-										@click="stuDetail(item.scheduling)">
-										查看学生
+										<image src="../../static/images/icon-3.png" mode=""></image>
+										<view class="time">
+											{{child.teacher ? child.teacher.truename :'--'}}
+										</view>
 									</view>
-									<image src="../../static/images/icon-1.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.start_time}}-{{item.scheduling.end_time}}
+
+
+									<view class="text">
+										<image src="../../static/images/icon-3.png" mode=""></image>
+										<view class="time">
+											{{child.room_name }}
+										</view>
 									</view>
 								</view>
-								<view class="text">
-									<image src="../../static/images/icon-2.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.day}}
-									</view>
+								<view class="cancel" @click="cancelShedule(child)" v-if="checkShedul([child])">
+									取消
 								</view>
-								<view class="text">
-									<image src="../../static/images/icon-3.png" mode=""></image>
-									<view class="time">
-										{{item.scheduling.student ? '有预约' :'无预约' }}
-									</view>
+								<view class="" v-if="!item.scheduling">
+									{{ item.is_scheduling == false ? '已过期' : '立即排班' }}
 								</view>
 							</view>
-							<view class="cancel" @click="cancelShedule(item)"
-								v-if="item.is_del==true && item.is_me==true">
-								取消
-							</view>
-							<view class="" v-if="!item.scheduling">
-								{{ item.is_scheduling == false ? '已过期' : '立即排班' }}
-							</view>
 						</view>
-						<view class="add add1" v-if=" item.is_scheduling == true && index == current_time">
-							<image src="../../static/images/pass1.png" mode="widthFix"></image>
+						<view class="add add1" v-if=" index == current_time">
+							<image src="../../static/images/pass1.png" mode="widthFix" v-if="item.scheduling.length==0">
+							</image>
 							<view class="add-buttom" v-if="current_time != -1" @click="teacher_show = true">
-								<!-- <image src="../../static/images/add_duty.png" mode=""></image> -->
+
 								添加排班
 							</view>
 
 						</view>
-						<view class="add"
+						<!-- 	<view class="add"
 							v-if="!item.scheduling &&item.is_scheduling == false && index == current_time ">
 							<image src="../../static/images/pass1.png" mode="widthFix"></image>
 							<view class="add-text">
 								已截止
 							</view>
-						</view>
-					</view>
-					<view class="add" v-if="getEmpty && current_time==-1">
-						<image src="../../static/images/pass1.png" mode="widthFix"></image>
-						<view class="add-text">
-							暂无排班
-						</view>
+						</view> -->
 					</view>
 
+
 				</view>
 			</view>
 			<view class="table">
@@ -258,17 +262,14 @@
 					</view>
 					<view class="table-tr">
 						<view class="table-time" v-for="(item1,index1) in table_list" :key='index1'>
-							<view v-for="(item,index) in item1" :key='index'
-								:class="item.scheduling && item.is_me==false ? 'active-time-item' :item.scheduling&&item.is_me==true ? 'me-item' : 'time-item'">
-								<view class="" v-if="item.scheduling">
-									<view class="teacher">
-										{{getName(item.scheduling.teacher)}}
-									</view>
-									<view class="stu">
-										{{getName(item.scheduling.student)}}
+
+							<view v-for="(item,index) in item1" :key='index' class="time-item"
+								:class="checkShedul(item.scheduling) ? 'me-item' : '' ">
+								<view class="" v-if="item.scheduling.length>0" @click="lookTeacher(item.scheduling)">
+									<view class="teacher" style="text-align: center;">
+										{{item.scheduling.length}}位导师排班
 									</view>
 								</view>
-
 							</view>
 						</view>
 
@@ -276,15 +277,52 @@
 				</view>
 				<view class="tips">
 					<view class="tip-item">
-						<span class="yellow">*</span>第一行上面显示的是导师
-					</view>
-					<view class="tip-item">
-						<span class="yellow">*</span>第二行下方显示的是学生
+						<span class="yellow">*</span>点击单元格可查看导师排班列表
 					</view>
+
 				</view>
 
 			</view>
 		</view>
+		<!-- 添加排班 -->
+		<u-popup v-model="paibanList" mode="right">
+			<view class="shedule-detail">
+				<view class="pop_top">
+					<text class="title">导师排班列表</text>
+				</view>
+				<view class="shedul-list">
+					<view class="item" v-for="(item,index) in tableList" :key="index">
+						<view class="item-right">
+							<view class="text">
+								<image src="../../static/images/icon-2.png" mode=""></image>
+								<view class="time">
+									{{item.day}}
+								</view>
+							</view>
+							<view class="text">
+								<image src="../../static/images/icon-1.png" mode=""></image>
+								<view class="time">
+									{{item.start_time}}-{{item.end_time}}
+								</view>
+							</view>
+							<view class="text">
+								<image src="../../static/images/icon-3.png" mode=""></image>
+								<view class="time">
+									{{item.teacher ? item.teacher.truename :'--'}}
+								</view>
+							</view>
+							<view class="text">
+								<image src="../../static/images/icon-3.png" mode=""></image>
+								<view class="time">
+									{{item.room_name }}
+								</view>
+							</view>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</u-popup>
 	</view>
 
 </template>
@@ -293,6 +331,15 @@
 	export default {
 		data() {
 			return {
+				form: {
+					status: 1,
+					status: 1,
+					room_type: 0,
+					room_name: '',
+					room_id: '',
+				},
+				roomShow: false,
+				roomList: [], //教室列表
 				teacher_show: false,
 				time_detail: '', //预约时间弹框
 				stu_show: false, //学生信息弹框
@@ -317,6 +364,8 @@
 				now_list: [],
 				cancel_detail: '',
 				cancel_show: false, //取消排班
+				paibanList: false,
+				tableList: [], //排班详情
 			}
 		},
 		async onShow() {
@@ -331,6 +380,7 @@
 			this.notice = []
 			this.teacher_id = this.$store.state.vuex_user.type_id
 			this.getNotice()
+			this.getSetting()
 		},
 		computed: {
 			getEmpty() {
@@ -349,6 +399,56 @@
 			},
 		},
 		methods: {
+			handleClose() {
+				this.form = {
+					status: 1,
+					room_type: 0,
+					room_name: '',
+					room_id: '',
+				}
+				this.teacher_show = false
+			},
+			//修改教室类型
+			changeType() {
+				this.form.room_name = ''
+				this.form.room_id = ''
+			},
+			//获取配置项
+			getSetting() {
+				this.$u.get('/base/setting-key', {
+					key: 'CLASS_ROOM_LIST'
+				}).then(res => {
+					this.roomList = JSON.parse(res.data.value)
+				})
+			},
+			// 点击actionSheet回调
+			actionSheetCallback(e) {
+				console.log(e, 'ppp')
+				this.form.room_id = e[0].value
+				this.form.room_name = e[0].label
+			},
+			//查看导师列表
+			lookTeacher(item) {
+				this.paibanList = true
+				this.tableList = item
+			},
+			//判断当前排班中是否还有自己排班
+			checkShedul(arr) {
+				var status = false
+
+				if (arr.length > 0) {
+					arr.map((item) => {
+
+						if (item.teacher_id == this.teacher_id) {
+							status = true
+							return
+						}
+					})
+				} else {
+					status = false
+				}
+				return status
+			},
 			//判断是否是微信
 			is_weixin() {
 				let ua = navigator.userAgent.toLowerCase();
@@ -360,8 +460,8 @@
 			},
 			//取消排班
 			cancelShedule(item) {
-				console.log(item.scheduling, 'ppp')
-				this.cancel_detail = item.scheduling
+				console.log(item, 'ppp')
+				this.cancel_detail = item
 				this.cancel_show = true
 			},
 			sure_cancel() {
@@ -544,13 +644,19 @@
 			// },
 			//确认添加排班
 			sure_choose() {
-				let data = {
-					status: 1,
-					teacher_id: this.$store.state.vuex_user.type_id,
-					day: this.now_date,
-					time_ids: this.time.id
+				if (this.form.room_type == 1) {
+					this.form.room_id = 0
 				}
-				this.$u.post('/mentor/scheduling', data).then(res => {
+				this.form.teacher_id = this.$store.state.vuex_user.type_id
+				this.form.day = this.now_date
+				this.form.time_ids = this.time.id
+				// let data = {
+				// 	status: 1,
+				// 	teacher_id: this.$store.state.vuex_user.type_id,
+				// 	day: this.now_date,
+				// 	time_ids: this.time.id
+				// }
+				this.$u.post('/mentor/scheduling', this.form).then(res => {
 					console.log(res, '添加排班')
 					if (res.code == 200) {
 						uni.showToast({
@@ -558,6 +664,13 @@
 							icon: 'none'
 						})
 						this.teacher_show = false
+						this.form = {
+							status: 1,
+							status: 1,
+							room_type: 0,
+							room_name: '',
+							room_id: '',
+						}
 						this.getSheuling()
 
 					} else {
@@ -570,12 +683,156 @@
 </script>
 
 <style lang="scss" scoped>
+	.u-form {
+		width: 100%;
+	}
+
 	.sheduling {
+		.shedule-detail {
+			width: 270px;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+
+			.pop_top {
+				margin-top: 32px;
+
+				text {
+					display: block;
+					font-size: 13px;
+					color: rgba(40, 40, 40, 0.5);
+					text-align: center;
+					line-height: 18px;
+				}
+
+				.title {
+					font-size: 18px;
+					font-weight: bold;
+					color: #282828;
+					line-height: 25px;
+					margin-bottom: 2px;
+				}
+			}
+
+			.shedul-list {
+				width: 90%;
+				overflow-y: auto;
+				height: 85vh;
+			}
+
+			.item {
+				display: flex;
+				position: relative;
+				align-items: center;
+				padding: 10px;
+				margin-top: 12px;
+				font-size: 13px;
+				background: rgba(234, 237, 242, .28);
+				border-radius: 7px;
+
+				.tips {
+					position: absolute;
+					width: 57px;
+					height: 20px;
+					background: #C1915A;
+					line-height: 20px;
+					font-size: 12px;
+					font-family: PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+					opacity: 1;
+					opacity: 1;
+					right: 12px;
+					z-index: 2;
+					top: 0;
+					text-align: center;
+					border-radius: 0px 0px 6px 6px;
+				}
+
+				.item-left {
+					margin-right: 10px;
+
+					.image {
+						height: 42px;
+						width: 42px;
+						border: solid 1px;
+						border-radius: 50%;
+						background-position: center;
+						background-repeat: no-repeat;
+						background-size: cover;
+					}
+
+					.name {
+						font-size: 10px;
+						font-family: PingFang SC;
+						font-weight: 400;
+						text-align: center;
+						line-height: 20px;
+						color: #292929;
+						opacity: 1;
+						width: 50px;
+						/*指定宽度*/
+						word-break: keep-all;
+						/* 不换行 */
+						white-space: nowrap;
+						/* 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。不换行 */
+						overflow: hidden;
+						/* 内容超出宽度时隐藏超出部分的内容 */
+						text-overflow: ellipsis;
+						/* IE 专有属性,当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
+					}
+				}
+
+				.item-right {
+					flex: 1;
+
+					.text {
+						line-height: 17px;
+						font-size: 12px;
+						font-family: PingFang SC;
+						font-weight: 400;
+						color: #282828;
+						opacity: 1;
+
+						image {
+
+							height: 13px;
+							width: 13px;
+							display: inline-block;
+							margin-right: 4px;
+						}
+
+						.time {
+							font-family: PingFang SC;
+							font-weight: 400;
+							color: #282828;
+							opacity: 1;
+							display: inline-block;
+
+							margin-top: 4px;
+						}
+					}
+				}
+			}
+
+		}
 
 		//添加排班弹框
 		.pop_wrap {
+			height: 270px;
 			width: 290px;
-			height: 250px;
+
+		}
+
+		.pop_wrap_1 {
+			width: 300px;
+			padding: 10px;
+		}
+
+		.pop_wrap,
+		.pop_wrap_1 {
+
+
 			display: flex;
 			flex-direction: column;
 			align-items: center;
@@ -600,7 +857,11 @@
 				}
 			}
 
+
 			.pop_center {
+
+				width: 250px;
+				margin: 0 auto;
 				margin-top: 22px;
 
 				text {
@@ -628,6 +889,8 @@
 					color: #FF5A26;
 				}
 			}
+
+
 		}
 
 		//查看学生信息弹框
@@ -878,6 +1141,8 @@
 					}
 
 					.add-buttom {
+						position: absolute;
+						bottom: 50px;
 						font-size: 14px;
 						color: #292929;
 						padding: 10px 20px;
@@ -943,6 +1208,7 @@
 					flex: 1;
 					margin-left: 3px;
 					height: 425px;
+					padding-bottom: 20px;
 					overflow-y: scroll;
 
 					.item {
@@ -1040,6 +1306,9 @@
 						}
 
 						.cancel {
+							position: absolute;
+							right: 10px;
+							top: 15px;
 							width: 58px;
 							height: 23px;
 							line-height: 23px;
@@ -1149,6 +1418,7 @@
 								background-color: rgba(209, 39, 39, 1);
 
 								.teacher {
+									text-align: center;
 									font-size: 10px;
 									font-family: PingFang SC;
 									font-weight: 500;
@@ -1181,7 +1451,7 @@
 								align-items: center;
 								flex-flow: column;
 								height: 53px;
-
+								text-align: center;
 								border-top: solid 1px rgba(255, 255, 255, .08);
 								border-right: solid 1px rgba(255, 255, 255, .08);
 								font-size: 10px;
@@ -1192,6 +1462,7 @@
 								background-color: rgba(193, 145, 90, 1);
 
 								.teacher {
+									text-align: center;
 									font-size: 10px;
 									font-family: PingFang SC;
 									font-weight: 500;

+ 5 - 5
unpackage/dist/build/h5/index.html

@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><link rel="shortcut icon" type=image/x-icon href=/static/logo.ico><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>智慧导师预约-教师端</title><style>::-webkit-scrollbar{
-                display: none;
-            }</style><script>document.addEventListener('DOMContentLoaded', function() {
-				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.b4074974.js></script><script src=/h5-teacher/static/js/index.da4903f0.js></script></body></html>
+<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><link rel="shortcut icon" type=image/x-icon href=/static/logo.ico><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>智慧导师预约-教师端</title><style>::-webkit-scrollbar{
+                display: none;
+            }</style><script>document.addEventListener('DOMContentLoaded', function() {
+				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
+			})</script><link rel=stylesheet href=/h5-teacher/static/index.css></head><body><noscript><strong>本站点必须要开启JavaScript才能运行</strong></noscript><div id=app></div><script>/*BAIDU_STAT*/</script><script src=/h5-teacher/static/js/chunk-vendors.24496f2e.js></script><script src=/h5-teacher/static/js/index.686e9b89.js></script></body></html>

+ 362 - 362
unpackage/dist/build/h5/static/common/js/touch-emulator.js

@@ -1,363 +1,363 @@
-(function(window, document, exportName, undefined) {
-    "use strict";
-
-    var isMultiTouch = false;
-    var multiTouchStartPos;
-    var eventTarget;
-    var touchElements = {};
-
-    // polyfills
-    if(!document.createTouch) {
-        document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
-            // auto set
-            if(clientX == undefined || clientY == undefined) {
-                clientX = pageX - window.pageXOffset;
-                clientY = pageY - window.pageYOffset;
-            }
-
-            return new Touch(target, identifier, {
-                pageX: pageX,
-                pageY: pageY,
-                screenX: screenX,
-                screenY: screenY,
-                clientX: clientX,
-                clientY: clientY
-            });
-        };
-    }
-
-    if(!document.createTouchList) {
-        document.createTouchList = function() {
-            var touchList = new TouchList();
-            for (var i = 0; i < arguments.length; i++) {
-                touchList[i] = arguments[i];
-            }
-            touchList.length = arguments.length;
-            return touchList;
-        };
-    }
-
-    /**
-     * create an touch point
-     * @constructor
-     * @param target
-     * @param identifier
-     * @param pos
-     * @param deltaX
-     * @param deltaY
-     * @returns {Object} touchPoint
-     */
-    function Touch(target, identifier, pos, deltaX, deltaY) {
-        deltaX = deltaX || 0;
-        deltaY = deltaY || 0;
-
-        this.identifier = identifier;
-        this.target = target;
-        this.clientX = pos.clientX + deltaX;
-        this.clientY = pos.clientY + deltaY;
-        this.screenX = pos.screenX + deltaX;
-        this.screenY = pos.screenY + deltaY;
-        this.pageX = pos.pageX + deltaX;
-        this.pageY = pos.pageY + deltaY;
-    }
-
-    /**
-     * create empty touchlist with the methods
-     * @constructor
-     * @returns touchList
-     */
-    function TouchList() {
-        var touchList = [];
-
-        touchList.item = function(index) {
-            return this[index] || null;
-        };
-
-        // specified by Mozilla
-        touchList.identifiedTouch = function(id) {
-            return this[id + 1] || null;
-        };
-
-        return touchList;
-    }
-
-
-    /**
-     * Simple trick to fake touch event support
-     * this is enough for most libraries like Modernizr and Hammer
-     */
-    function fakeTouchSupport() {
-        var objs = [window, document.documentElement];
-        var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
-
-        for(var o=0; o<objs.length; o++) {
-            for(var p=0; p<props.length; p++) {
-                if(objs[o] && objs[o][props[p]] == undefined) {
-                    objs[o][props[p]] = null;
-                }
-            }
-        }
-    }
-
-    /**
-     * we don't have to emulate on a touch device
-     * @returns {boolean}
-     */
-    function hasTouchSupport() {
-        return ("ontouchstart" in window) || // touch events
-               (window.Modernizr && window.Modernizr.touch) || // modernizr
-               (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
-    }
-
-    /**
-     * disable mouseevents on the page
-     * @param ev
-     */
-    function preventMouseEvents(ev) {
-		// 注释启用默认事件
-        // ev.preventDefault();
-        // ev.stopPropagation();
-    }
-
-    /**
-     * only trigger touches when the left mousebutton has been pressed
-     * @param touchType
-     * @returns {Function}
-     */
-    function onMouse(touchType) {
-        return function(ev) {
-            // prevent mouse events
-            preventMouseEvents(ev);
-
-            if (ev.which !== 1) {
-                return;
-            }
-
-            // The EventTarget on which the touch point started when it was first placed on the surface,
-            // even if the touch point has since moved outside the interactive area of that element.
-            // also, when the target doesnt exist anymore, we update it
-            if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
-                eventTarget = ev.target;
-            }
-
-            // shiftKey has been lost, so trigger a touchend
-            if (isMultiTouch && !ev.shiftKey) {
-                triggerTouch('touchend', ev);
-                isMultiTouch = false;
-            }
-
-            triggerTouch(touchType, ev);
-
-            // we're entering the multi-touch mode!
-            if (!isMultiTouch && ev.shiftKey) {
-                isMultiTouch = true;
-                multiTouchStartPos = {
-                    pageX: ev.pageX,
-                    pageY: ev.pageY,
-                    clientX: ev.clientX,
-                    clientY: ev.clientY,
-                    screenX: ev.screenX,
-                    screenY: ev.screenY
-                };
-                triggerTouch('touchstart', ev);
-            }
-
-            // reset
-            if (ev.type == 'mouseup') {
-                multiTouchStartPos = null;
-                isMultiTouch = false;
-                eventTarget = null;
-            }
-        }
-    }
-
-    /**
-     * trigger a touch event
-     * @param eventName
-     * @param mouseEv
-     */
-    function triggerTouch(eventName, mouseEv) {
-        var touchEvent = document.createEvent('Event');
-        touchEvent.initEvent(eventName, true, true);
-
-        touchEvent.altKey = mouseEv.altKey;
-        touchEvent.ctrlKey = mouseEv.ctrlKey;
-        touchEvent.metaKey = mouseEv.metaKey;
-        touchEvent.shiftKey = mouseEv.shiftKey;
-
-        touchEvent.touches = getActiveTouches(mouseEv, eventName);
-        touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
-        touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
-
-        eventTarget.dispatchEvent(touchEvent);
-    }
-
-    /**
-     * create a touchList based on the mouse event
-     * @param mouseEv
-     * @returns {TouchList}
-     */
-    function createTouchList(mouseEv) {
-        var touchList = new TouchList();
-
-        if (isMultiTouch) {
-            var f = TouchEmulator.multiTouchOffset;
-            var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
-            var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
-
-            touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));
-            touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));
-        } else {
-            touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
-        }
-
-        return touchList;
-    }
-
-    /**
-     * receive all active touches
-     * @param mouseEv
-     * @returns {TouchList}
-     */
-    function getActiveTouches(mouseEv, eventName) {
-        // empty list
-        if (mouseEv.type == 'mouseup') {
-            return new TouchList();
-        }
-
-        var touchList = createTouchList(mouseEv);
-        if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
-            touchList.splice(1, 1);
-        }
-        return touchList;
-    }
-
-    /**
-     * receive a filtered set of touches with only the changed pointers
-     * @param mouseEv
-     * @param eventName
-     * @returns {TouchList}
-     */
-    function getChangedTouches(mouseEv, eventName) {
-        var touchList = createTouchList(mouseEv);
-
-        // we only want to return the added/removed item on multitouch
-        // which is the second pointer, so remove the first pointer from the touchList
-        //
-        // but when the mouseEv.type is mouseup, we want to send all touches because then
-        // no new input will be possible
-        if(isMultiTouch && mouseEv.type != 'mouseup' &&
-            (eventName == 'touchstart' || eventName == 'touchend')) {
-            touchList.splice(0, 1);
-        }
-
-        return touchList;
-    }
-
-    /**
-     * show the touchpoints on the screen
-     */
-    function showTouches(ev) {
-        var touch, i, el, styles;
-
-        // first all visible touches
-        for(i = 0; i < ev.touches.length; i++) {
-            touch = ev.touches[i];
-            el = touchElements[touch.identifier];
-            if(!el) {
-                el = touchElements[touch.identifier] = document.createElement("div");
-                document.body.appendChild(el);
-            }
-
-            styles = TouchEmulator.template(touch);
-            for(var prop in styles) {
-                el.style[prop] = styles[prop];
-            }
-        }
-
-        // remove all ended touches
-        if(ev.type == 'touchend' || ev.type == 'touchcancel') {
-            for(i = 0; i < ev.changedTouches.length; i++) {
-                touch = ev.changedTouches[i];
-                el = touchElements[touch.identifier];
-                if(el) {
-                    el.parentNode.removeChild(el);
-                    delete touchElements[touch.identifier];
-                }
-            }
-        }
-    }
-
-    /**
-     * TouchEmulator initializer
-     */
-    function TouchEmulator() {
-        if (hasTouchSupport()) {
-            return;
-        }
-
-        fakeTouchSupport();
-
-        window.addEventListener("mousedown", onMouse('touchstart'), true);
-        window.addEventListener("mousemove", onMouse('touchmove'), true);
-        window.addEventListener("mouseup", onMouse('touchend'), true);
-
-        window.addEventListener("mouseenter", preventMouseEvents, true);
-        window.addEventListener("mouseleave", preventMouseEvents, true);
-        window.addEventListener("mouseout", preventMouseEvents, true);
-        window.addEventListener("mouseover", preventMouseEvents, true);
-
-        // it uses itself!
-        window.addEventListener("touchstart", showTouches, true);
-        window.addEventListener("touchmove", showTouches, true);
-        window.addEventListener("touchend", showTouches, true);
-        window.addEventListener("touchcancel", showTouches, true);
-    }
-
-    // start distance when entering the multitouch mode
-    TouchEmulator.multiTouchOffset = 75;
-
-    /**
-     * css template for the touch rendering
-     * @param touch
-     * @returns object
-     */
-    TouchEmulator.template = function(touch) {
-        var size = 0;
-        var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';
-        return {
-            position: 'fixed',
-            left: 0,
-            top: 0,
-            background: '#fff',
-            border: 'solid 1px #999',
-            opacity: .6,
-            borderRadius: '100%',
-            height: size + 'px',
-            width: size + 'px',
-            padding: 0,
-            margin: 0,
-            display: 'block',
-            overflow: 'hidden',
-            pointerEvents: 'none',
-            webkitUserSelect: 'none',
-            mozUserSelect: 'none',
-            userSelect: 'none',
-            webkitTransform: transform,
-            mozTransform: transform,
-            transform: transform,
-            zIndex: 100
-        }
-    };
-
-    // export
-    if (typeof define == "function" && define.amd) {
-        define(function() {
-            return TouchEmulator;
-        });
-    } else if (typeof module != "undefined" && module.exports) {
-        module.exports = TouchEmulator;
-    } else {
-        window[exportName] = TouchEmulator;
-    }
+(function(window, document, exportName, undefined) {
+    "use strict";
+
+    var isMultiTouch = false;
+    var multiTouchStartPos;
+    var eventTarget;
+    var touchElements = {};
+
+    // polyfills
+    if(!document.createTouch) {
+        document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
+            // auto set
+            if(clientX == undefined || clientY == undefined) {
+                clientX = pageX - window.pageXOffset;
+                clientY = pageY - window.pageYOffset;
+            }
+
+            return new Touch(target, identifier, {
+                pageX: pageX,
+                pageY: pageY,
+                screenX: screenX,
+                screenY: screenY,
+                clientX: clientX,
+                clientY: clientY
+            });
+        };
+    }
+
+    if(!document.createTouchList) {
+        document.createTouchList = function() {
+            var touchList = new TouchList();
+            for (var i = 0; i < arguments.length; i++) {
+                touchList[i] = arguments[i];
+            }
+            touchList.length = arguments.length;
+            return touchList;
+        };
+    }
+
+    /**
+     * create an touch point
+     * @constructor
+     * @param target
+     * @param identifier
+     * @param pos
+     * @param deltaX
+     * @param deltaY
+     * @returns {Object} touchPoint
+     */
+    function Touch(target, identifier, pos, deltaX, deltaY) {
+        deltaX = deltaX || 0;
+        deltaY = deltaY || 0;
+
+        this.identifier = identifier;
+        this.target = target;
+        this.clientX = pos.clientX + deltaX;
+        this.clientY = pos.clientY + deltaY;
+        this.screenX = pos.screenX + deltaX;
+        this.screenY = pos.screenY + deltaY;
+        this.pageX = pos.pageX + deltaX;
+        this.pageY = pos.pageY + deltaY;
+    }
+
+    /**
+     * create empty touchlist with the methods
+     * @constructor
+     * @returns touchList
+     */
+    function TouchList() {
+        var touchList = [];
+
+        touchList.item = function(index) {
+            return this[index] || null;
+        };
+
+        // specified by Mozilla
+        touchList.identifiedTouch = function(id) {
+            return this[id + 1] || null;
+        };
+
+        return touchList;
+    }
+
+
+    /**
+     * Simple trick to fake touch event support
+     * this is enough for most libraries like Modernizr and Hammer
+     */
+    function fakeTouchSupport() {
+        var objs = [window, document.documentElement];
+        var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
+
+        for(var o=0; o<objs.length; o++) {
+            for(var p=0; p<props.length; p++) {
+                if(objs[o] && objs[o][props[p]] == undefined) {
+                    objs[o][props[p]] = null;
+                }
+            }
+        }
+    }
+
+    /**
+     * we don't have to emulate on a touch device
+     * @returns {boolean}
+     */
+    function hasTouchSupport() {
+        return ("ontouchstart" in window) || // touch events
+               (window.Modernizr && window.Modernizr.touch) || // modernizr
+               (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
+    }
+
+    /**
+     * disable mouseevents on the page
+     * @param ev
+     */
+    function preventMouseEvents(ev) {
+		// 注释启用默认事件
+        // ev.preventDefault();
+        // ev.stopPropagation();
+    }
+
+    /**
+     * only trigger touches when the left mousebutton has been pressed
+     * @param touchType
+     * @returns {Function}
+     */
+    function onMouse(touchType) {
+        return function(ev) {
+            // prevent mouse events
+            preventMouseEvents(ev);
+
+            if (ev.which !== 1) {
+                return;
+            }
+
+            // The EventTarget on which the touch point started when it was first placed on the surface,
+            // even if the touch point has since moved outside the interactive area of that element.
+            // also, when the target doesnt exist anymore, we update it
+            if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
+                eventTarget = ev.target;
+            }
+
+            // shiftKey has been lost, so trigger a touchend
+            if (isMultiTouch && !ev.shiftKey) {
+                triggerTouch('touchend', ev);
+                isMultiTouch = false;
+            }
+
+            triggerTouch(touchType, ev);
+
+            // we're entering the multi-touch mode!
+            if (!isMultiTouch && ev.shiftKey) {
+                isMultiTouch = true;
+                multiTouchStartPos = {
+                    pageX: ev.pageX,
+                    pageY: ev.pageY,
+                    clientX: ev.clientX,
+                    clientY: ev.clientY,
+                    screenX: ev.screenX,
+                    screenY: ev.screenY
+                };
+                triggerTouch('touchstart', ev);
+            }
+
+            // reset
+            if (ev.type == 'mouseup') {
+                multiTouchStartPos = null;
+                isMultiTouch = false;
+                eventTarget = null;
+            }
+        }
+    }
+
+    /**
+     * trigger a touch event
+     * @param eventName
+     * @param mouseEv
+     */
+    function triggerTouch(eventName, mouseEv) {
+        var touchEvent = document.createEvent('Event');
+        touchEvent.initEvent(eventName, true, true);
+
+        touchEvent.altKey = mouseEv.altKey;
+        touchEvent.ctrlKey = mouseEv.ctrlKey;
+        touchEvent.metaKey = mouseEv.metaKey;
+        touchEvent.shiftKey = mouseEv.shiftKey;
+
+        touchEvent.touches = getActiveTouches(mouseEv, eventName);
+        touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
+        touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
+
+        eventTarget.dispatchEvent(touchEvent);
+    }
+
+    /**
+     * create a touchList based on the mouse event
+     * @param mouseEv
+     * @returns {TouchList}
+     */
+    function createTouchList(mouseEv) {
+        var touchList = new TouchList();
+
+        if (isMultiTouch) {
+            var f = TouchEmulator.multiTouchOffset;
+            var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
+            var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
+
+            touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));
+            touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));
+        } else {
+            touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
+        }
+
+        return touchList;
+    }
+
+    /**
+     * receive all active touches
+     * @param mouseEv
+     * @returns {TouchList}
+     */
+    function getActiveTouches(mouseEv, eventName) {
+        // empty list
+        if (mouseEv.type == 'mouseup') {
+            return new TouchList();
+        }
+
+        var touchList = createTouchList(mouseEv);
+        if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
+            touchList.splice(1, 1);
+        }
+        return touchList;
+    }
+
+    /**
+     * receive a filtered set of touches with only the changed pointers
+     * @param mouseEv
+     * @param eventName
+     * @returns {TouchList}
+     */
+    function getChangedTouches(mouseEv, eventName) {
+        var touchList = createTouchList(mouseEv);
+
+        // we only want to return the added/removed item on multitouch
+        // which is the second pointer, so remove the first pointer from the touchList
+        //
+        // but when the mouseEv.type is mouseup, we want to send all touches because then
+        // no new input will be possible
+        if(isMultiTouch && mouseEv.type != 'mouseup' &&
+            (eventName == 'touchstart' || eventName == 'touchend')) {
+            touchList.splice(0, 1);
+        }
+
+        return touchList;
+    }
+
+    /**
+     * show the touchpoints on the screen
+     */
+    function showTouches(ev) {
+        var touch, i, el, styles;
+
+        // first all visible touches
+        for(i = 0; i < ev.touches.length; i++) {
+            touch = ev.touches[i];
+            el = touchElements[touch.identifier];
+            if(!el) {
+                el = touchElements[touch.identifier] = document.createElement("div");
+                document.body.appendChild(el);
+            }
+
+            styles = TouchEmulator.template(touch);
+            for(var prop in styles) {
+                el.style[prop] = styles[prop];
+            }
+        }
+
+        // remove all ended touches
+        if(ev.type == 'touchend' || ev.type == 'touchcancel') {
+            for(i = 0; i < ev.changedTouches.length; i++) {
+                touch = ev.changedTouches[i];
+                el = touchElements[touch.identifier];
+                if(el) {
+                    el.parentNode.removeChild(el);
+                    delete touchElements[touch.identifier];
+                }
+            }
+        }
+    }
+
+    /**
+     * TouchEmulator initializer
+     */
+    function TouchEmulator() {
+        if (hasTouchSupport()) {
+            return;
+        }
+
+        fakeTouchSupport();
+
+        window.addEventListener("mousedown", onMouse('touchstart'), true);
+        window.addEventListener("mousemove", onMouse('touchmove'), true);
+        window.addEventListener("mouseup", onMouse('touchend'), true);
+
+        window.addEventListener("mouseenter", preventMouseEvents, true);
+        window.addEventListener("mouseleave", preventMouseEvents, true);
+        window.addEventListener("mouseout", preventMouseEvents, true);
+        window.addEventListener("mouseover", preventMouseEvents, true);
+
+        // it uses itself!
+        window.addEventListener("touchstart", showTouches, true);
+        window.addEventListener("touchmove", showTouches, true);
+        window.addEventListener("touchend", showTouches, true);
+        window.addEventListener("touchcancel", showTouches, true);
+    }
+
+    // start distance when entering the multitouch mode
+    TouchEmulator.multiTouchOffset = 75;
+
+    /**
+     * css template for the touch rendering
+     * @param touch
+     * @returns object
+     */
+    TouchEmulator.template = function(touch) {
+        var size = 0;
+        var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';
+        return {
+            position: 'fixed',
+            left: 0,
+            top: 0,
+            background: '#fff',
+            border: 'solid 1px #999',
+            opacity: .6,
+            borderRadius: '100%',
+            height: size + 'px',
+            width: size + 'px',
+            padding: 0,
+            margin: 0,
+            display: 'block',
+            overflow: 'hidden',
+            pointerEvents: 'none',
+            webkitUserSelect: 'none',
+            mozUserSelect: 'none',
+            userSelect: 'none',
+            webkitTransform: transform,
+            mozTransform: transform,
+            transform: transform,
+            zIndex: 100
+        }
+    };
+
+    // export
+    if (typeof define == "function" && define.amd) {
+        define(function() {
+            return TouchEmulator;
+        });
+    } else if (typeof module != "undefined" && module.exports) {
+        module.exports = TouchEmulator;
+    } else {
+        window[exportName] = TouchEmulator;
+    }
 })(window, document, "TouchEmulator");

BIN
unpackage/dist/build/h5/static/img/index_class.3400f8ff.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/index.css


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/chunk-vendors.24496f2e.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/chunk-vendors.b4074974.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/index.686e9b89.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/index.da4903f0.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-activity-add.6ae30912.js


Some files were not shown because too many files changed in this diff