From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/controls/page/PageControl.js |  438 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 438 insertions(+), 0 deletions(-)

diff --git a/public/map/controls/page/PageControl.js b/public/map/controls/page/PageControl.js
new file mode 100644
index 0000000..da22770
--- /dev/null
+++ b/public/map/controls/page/PageControl.js
@@ -0,0 +1,438 @@
+/**
+ * 加载专题图widget
+ * @author Wenyb
+ * @date 2015/6/30
+ */
+define([
+  "dojo",
+  "dojo/_base/declare",
+  "dijit/_WidgetBase",
+  "dijit/_TemplatedMixin",
+  "dojo/text!controls/page/template.html",
+  "dojo/_base/lang",
+  "dojo/query",
+  "dojo/dom-construct",
+  "dojo/dom-style",
+  "dojo/on",
+  "dojo/dom-class",
+  "dojo/window",
+  "dojo/_base/array",
+  "dojo/dom-attr",
+  "dojo/aspect",
+  "dojo/domReady!"
+], function (
+  dojo,
+  declare,
+  _WidgetBase, 
+  _TemplatedMixin,
+  template,
+  lang,
+  query,
+  domConstruct,
+  domStyle,
+  on,
+  domClass,
+  win,
+  array,
+  domAttr,
+  aspect
+  ){
+	var Widget = declare([_WidgetBase,_TemplatedMixin],
+		{
+			templateString: template,
+			
+			/**
+			 * 一共的页数
+			 */
+			totalCount:10,
+			/**
+			 * 一次显示的页码数
+			 */
+			pageCount:5,
+			_refNode:null,
+			pageSpanlist:[],
+			pageSpanEventHandlers:[],
+			currentPage:1,
+			constructor:function(options,srcNodeRef)
+			{
+				//this._refNode=refNode;
+				var csspath = require.toUrl("controls/page/PageControl.css");
+				lang.mixin(this, options);
+				dojo.create("link", 
+					{href:csspath, type:'text/css', rel:'stylesheet'}, 
+					document.getElementsByTagName('head')[0]);
+			},
+			postCreate:function()
+			{
+				//this.placeAt(this._refNode);
+				this.createPage();
+			},
+			createPage:function(option)
+			{
+				if(option !== undefined && option != null)
+				{
+					this.totalCount = option.totalCount;
+					this.pageCount=option.pageCount;
+				}
+				domConstruct.empty(this.pagelist);
+				if(this.totalCount < 1)
+				{
+					this.switchPreButton(false);
+					this.switchNextButton(false);
+					return;
+				}
+				this.pageSpanlist=[];
+				this.pageSpanlist.push(this.createPageSpan("1",true));
+				var tmpTotal;
+				if(this.totalCount<this.pageCount)
+				{
+					tmpTotal=this.totalCount+1;
+				}
+				else
+				{
+					tmpTotal=this.pageCount+1;
+				}
+				for(var i=2;i<tmpTotal;i++)
+				{
+					this.pageSpanlist.push(this.createPageSpan(i.toString(),false));
+				}
+				this.currentPage=1;
+				this.switchPreButton(false);
+				if(this.totalCount==1)
+				{
+					this.switchNextButton(false);
+				}
+				else
+				{
+					this.switchNextButton(true);
+				}
+			},
+			createPageSpan:function(page,selected)
+			{
+				var pageDom = domConstruct.create("li",{innerHTML:page},this.pagelist);
+				domAttr.set(pageDom,"page",page);
+				if(selected)
+				{
+					domClass.add(pageDom,"pagecontrol-selectpage");
+				}
+				this.own(on(pageDom,"click",lang.hitch(this,this._onPageClick)));
+				//this.pageSpanEventHandlers.push(on(pageDom,"click",lang.hitch(this,this._onPageClick)));
+				return pageDom;
+			},
+			_onPageClick:function(evt)
+			{
+				if(evt.target.innerHTML == this.currentPage.toString())
+				{
+					return;
+				}
+				this.currentPage = parseInt(evt.target.innerHTML);
+				this.updateControl(this.currentPage);
+			},
+			_onNextClick:function(evt)
+			{
+				if(domAttr.get(this.nextbutton,"enable") == "false")
+				{
+					return;
+				}
+				this.currentPage++;
+				this.updateControl(this.currentPage);
+			},
+			_onPreClick:function(evt)
+			{
+				if(domAttr.get(this.prebutton,"enable") == "false")
+				{
+					return;
+				}
+				this.currentPage--;
+				this.updateControl(this.currentPage);
+			},
+			/**
+			 * 让上一页按钮可用
+			 */
+			switchPreButton:function(flag)
+			{
+				if(flag)
+				{
+					domClass.remove(this.prebutton,"pagecontrol-pre-disable");
+					domAttr.set(this.prebutton, "enable","true");
+				}
+				else
+				{
+					domClass.add(this.prebutton,"pagecontrol-pre-disable");
+					domAttr.set(this.prebutton, "enable","false");
+				}
+				
+				
+			},
+			/**
+			 * 让下一页按钮可用
+			 */
+			switchNextButton:function(flag)
+			{
+				if(flag)
+				{
+					domClass.remove(this.nextbutton,"pagecontrol-next-disable");
+					domAttr.set(this.nextbutton, "enable","true");
+				}
+				else
+				{
+					domClass.add(this.nextbutton,"pagecontrol-next-disable");
+					domAttr.set(this.nextbutton, "enable","false");
+				}
+				
+			},
+			updateControl:function(nPage)
+			{
+				//首先移除所有页码控件
+				domConstruct.empty(this.pagelist);
+//				for(var i=0;i<this.pageSpanEventHandlers.length;i++)
+//				{
+//					this.pageSpanEventHandlers[i].remove();
+//				}
+//				this.pageSpanEventHandlers=[];
+				//记录是否点击的是第一个或者最后一页
+				var strFlag = "";
+				var i=0;
+				//var ctl:LinkButton = null;
+				this.currentPage = nPage;
+				//需要显示上一页
+				if(this.currentPage>1)
+				{
+					this.switchPreButton(true);
+				}
+				//如果点击的是第一项,那么把点击的按钮移到中间
+				if(domAttr.get(this.pageSpanlist[this.pageSpanlist.length-1],"page") == nPage.toString())
+				{
+					strFlag = "last";
+				}
+				//如果点击的是最后一项,那么把点击的按钮移到中间
+				else if(domAttr.get(this.pageSpanlist[0],"page") == nPage.toString())
+				{
+					strFlag = "first";
+				}
+				switch(strFlag)
+				{
+					case "last":
+						var thisPageCount = -1;
+						if(this.pageCount>this.totalCount)
+							thisPageCount = this.totalCount;
+						else
+							thisPageCount = this.pageCount;
+						var step = parseInt((thisPageCount-1)/2);
+						this.pageSpanlist = [];
+						//当前按钮可以放到中间
+						if(step<(this.totalCount-this.currentPage))
+						{
+							for(i=step;i>=0;i--)
+							{
+								if(i == 0)
+								{
+									this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),true));
+								}
+								else
+								{
+									this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),false));
+								}
+							}
+							//如果页面数是偶数,则需要再加1
+							if(this.pageCount%2 == 0)
+							{
+								step++; 
+							}
+							for(i=1;i<=step;i++)
+							{
+								this.pageSpanlist.push(this.createPageSpan((this.currentPage + i).toString(),false));
+							}
+						}
+						//当前按钮不可放在中间
+						else
+						{
+							for(i = this.totalCount-thisPageCount+1;i<=this.totalCount;i++)
+							{
+								if(i == this.currentPage)
+								{
+									this.pageSpanlist.push(this.createPageSpan(i.toString(),true));
+								}
+								else
+								{
+									this.pageSpanlist.push(this.createPageSpan(i.toString(),false));
+								}
+							}
+						}
+						break;
+					case "first":
+						thisPageCount= -1;
+						if(this.pageCount>this.totalCount)
+							thisPageCount = this.totalCount;
+						else
+							thisPageCount = this.pageCount;
+						step = parseInt((thisPageCount-1)/2);
+						
+						this.pageSpanlist = [];
+						//当前按钮可以放到中间
+						if(step<this.currentPage)
+						{
+							for(i=step;i>=0;i--)
+							{
+								if(i == 0)
+								{
+									this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),true));
+								}
+								else
+								{
+									this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),false));
+								}
+							}
+							//如果页面数是偶数,则需要再加1
+							if(thisPageCount%2 == 0)
+							{
+								step++; 
+							}
+							for(i=1;i<=step;i++)
+							{
+								this.pageSpanlist.push(this.createPageSpan((this.currentPage + i).toString(),false));
+							}
+						}
+							//当前按钮不可放在中间
+						else
+						{
+							for(i = 1;i<=thisPageCount;i++)
+							{
+								if(i == this.currentPage)
+								{
+									this.pageSpanlist.push(this.createPageSpan(i.toString(),true));
+								}
+								else
+								{
+									this.pageSpanlist.push(this.createPageSpan(i.toString(),false));
+								}
+							}
+						}
+						break;
+					default:
+						//array.forEach(this.pageSpanlist,this.updatePageSpan,this);
+						break;
+				}
+				for(i=0;i< this.pageSpanlist.length;i++)
+				{
+					var pagevalue = domAttr.get(this.pageSpanlist[i],"page");
+					this.pageSpanlist[i].innerHTML=pagevalue;
+					domConstruct.place(this.pageSpanlist[i],this.pagelist);
+				} 
+				array.forEach(this.pageSpanlist,this.updatePageSpan,this);
+				//需要显示“下一页”
+				if(this.currentPage<this.totalCount)
+				{
+					this.switchNextButton(true)
+				}
+				else
+				{
+					this.switchNextButton(false)
+				}
+				if(this.currentPage == 1)
+				{
+					this.switchPreButton(false);
+				}
+				else
+				{
+					this.switchPreButton(true);
+				}
+				//触发事件
+				this.onpagechange();
+//				var e:PageChangeEvent = new PageChangeEvent();
+//				e.currentPage = this._currentPage;
+//				this.dispatchEvent(e);
+			},
+			onpagechange:function()
+			{
+				return this.currentPage;
+			},
+			updatePageSpan:function(span)
+			{
+				if(span.innerHTML == this.currentPage.toString())
+				{
+					domClass.add(span,"pagecontrol-selectpage");
+				}
+				else
+				{
+					if(domClass.contains(span,"pagecontrol-selectpage"))
+					{
+						domClass.remove(span,"pagecontrol-selectpage");
+					}
+				}
+			},
+			_onMouseMove:function(evt)
+			{
+				 var newtop = evt.clientY-this._refNode.offsetTop-this._ystart;
+	    		 var newleft = evt.clientX-this._refNode.offsetLeft-this._xstart;
+	    		 domStyle.set(this.domNode,"top",newtop.toString()+"px");
+    			 domStyle.set(this.domNode,"left",newleft.toString()+"px");
+			},
+			_onMouseUp:function(evt)
+			{
+				if(this._movehandler != null){
+					this._movehandler.remove();
+					this._uphandler.remove();
+					this._movehandler = null;
+		    		domStyle.set(this.controlbar,"cursor","default");
+	    		}
+			},
+			_setModalAttr:function(modal)
+			{
+				if(modal !== undefined && modal !== null)
+				{
+					this.modal = modal;
+				}
+				if(this.modal === true)
+				{
+					if(this._modalDiv == null){
+						this._modalDiv = domConstruct.create("div");
+						domClass.add(this._modalDiv,"custom-popupwindow-modal");
+					}
+					var body = query("body")[0];
+					domConstruct.place(this._modalDiv,body,"last");
+				}
+			},
+			_getModalAttr:function()
+			{
+				return this.modal;
+			},
+			_onCloseButtonClick:function(evt)
+			{
+				evt.stopPropagation();
+				this.close();
+			},
+			_onCloseButtonMouseDown:function(evt)
+			{
+				evt.stopPropagation();
+			},
+			close:function()
+			{
+				this._refNode.removeChild(this.domNode);
+				if(this.modal)
+				{
+					var body = query("body")[0];
+					body.removeChild(this._modalDiv);
+				}
+			},
+			setContent:function(contentDom)
+			{
+				domConstruct.empty(this.content);
+				domConstruct.place(contentDom,this.content);
+			},
+			setInnerHTML:function(htmlText)
+			{
+				domConstruct.empty(this.content);
+				this.content.innerHTML = htmlText;
+			},
+			show:function()
+			{
+				domStyle.set(this.domNode, "display", "block");
+			},
+			hide:function()
+			{
+				domStyle.set(this.domNode, "display", "none");
+			}
+		});
+	return Widget;
+});

--
Gitblit v1.9.3