洪海涛 8 years ago
parent
commit
ad18c73d4f
100 changed files with 4796 additions and 3235 deletions
  1. 3 0
      webshell/dailyAnalys.sh
  2. 4 0
      webshell/hourlyWork.sh
  3. 3 0
      webshell/pushListener.sh
  4. 763 0
      webshell/sys-init.sh
  5. BIN
      www/images/digest.png
  6. BIN
      www/images/stick.png
  7. BIN
      www/images/toutiao_0.png
  8. BIN
      www/images/toutiao_1.png
  9. 16 0
      www/js/amazeui.datetimepicker.zh-CN.js
  10. 167 0
      www/js/hybrid.js
  11. 56 0
      www/js/www/type_selector.js
  12. 156 0
      www/protected/commands/HourlyWorkCommand.php
  13. 35 0
      www/protected/commands/PushListenerCommand.php
  14. 20 59
      www/protected/modules/moonclub/controllers/ReserveController.php
  15. 18 14
      www/protected/modules/moonclub/controllers/WebController.php
  16. 2 2
      www/protected/modules/moonclub/models/Reserve.php
  17. 0 229
      www/protected/modules/moonclub/views/advisory/SinglesDay.php
  18. 0 219
      www/protected/modules/moonclub/views/advisory/enterprise.php
  19. 0 67
      www/protected/modules/moonclub/views/advisory/im.php
  20. 0 343
      www/protected/modules/moonclub/views/commision/index.php
  21. 0 31
      www/protected/modules/moonclub/views/layouts/qyindex.php
  22. 0 30
      www/protected/modules/moonclub/views/layouts/qyinfo.php
  23. 0 14
      www/protected/modules/moonclub/views/layouts/techHomeLayout.php
  24. 0 5
      www/protected/modules/moonclub/views/myComment/error.php
  25. 0 88
      www/protected/modules/moonclub/views/myComment/index.php
  26. 0 106
      www/protected/modules/moonclub/views/myComment/info.php
  27. 0 5
      www/protected/modules/moonclub/views/myCommision/error.php
  28. 0 95
      www/protected/modules/moonclub/views/myCommision/index.php
  29. 0 83
      www/protected/modules/moonclub/views/myCommision/info_append.php
  30. 0 101
      www/protected/modules/moonclub/views/myCommision/info_order.php
  31. 0 5
      www/protected/modules/moonclub/views/myOrder/error.php
  32. 0 88
      www/protected/modules/moonclub/views/myOrder/index.php
  33. 0 557
      www/protected/modules/moonclub/views/myOrder/info.php
  34. 1 1
      www/protected/modules/moonclub/views/reserve/index.php
  35. 4 4
      www/protected/modules/moonclub/views/reserve/month.php
  36. 0 0
      www/protected/modules/moonclub/views/reserve/xyhIm.php
  37. 0 817
      www/protected/modules/moonclub/views/tech/index.php
  38. 0 1
      www/protected/modules/moonclub/views/techHome/error.php
  39. 0 161
      www/protected/modules/moonclub/views/techHome/index.php
  40. 4 4
      www/protected/modules/moonclub/views/web/index.php
  41. 106 106
      www/protected/modules/o2o/controllers/WebController.php
  42. 9 0
      www/protected/vendors/pingpp/example/rsa_public_key.pem
  43. 24 0
      www/protected/vendors/pingpp/example/webhooks_verify.php
  44. 238 0
      www/protected/vendors/pingpp/lib/Object.php
  45. 316 0
      www/webapp/common/js/ping_pay.js
  46. 27 0
      www/webapp/moonclub/Gruntfile.js
  47. 44 0
      www/webapp/moonclub/build.js
  48. 19 0
      www/webapp/moonclub/config.js
  49. 47 0
      www/webapp/moonclub/css/address.css
  50. 9 0
      www/webapp/moonclub/css/agreement.css
  51. 29 0
      www/webapp/moonclub/css/append.css
  52. 79 0
      www/webapp/moonclub/css/bargain.css
  53. 157 0
      www/webapp/moonclub/css/beautician.css
  54. 294 0
      www/webapp/moonclub/css/common.css
  55. 254 0
      www/webapp/moonclub/css/desc.css
  56. 39 0
      www/webapp/moonclub/css/hire.css
  57. 320 0
      www/webapp/moonclub/css/home.css
  58. 79 0
      www/webapp/moonclub/css/homeenterprise.css
  59. 79 0
      www/webapp/moonclub/css/homestay.css
  60. 25 0
      www/webapp/moonclub/css/main.css
  61. 187 0
      www/webapp/moonclub/css/mine.css
  62. 18 0
      www/webapp/moonclub/css/month.css
  63. 115 0
      www/webapp/moonclub/css/myOrder.css
  64. 92 0
      www/webapp/moonclub/css/orderDetail.css
  65. 19 0
      www/webapp/moonclub/css/orderFinish.css
  66. 51 0
      www/webapp/moonclub/css/pay.css
  67. 0 0
      www/webapp/moonclub/css/payAgreement.css
  68. 169 0
      www/webapp/moonclub/css/placeOrder.css
  69. 64 0
      www/webapp/moonclub/css/product.css
  70. 44 0
      www/webapp/moonclub/css/ratchetOverloading.css
  71. 117 0
      www/webapp/moonclub/css/refund.css
  72. 86 0
      www/webapp/moonclub/css/review.css
  73. 308 0
      www/webapp/moonclub/css/secondary.css
  74. 0 0
      www/webapp/moonclub/dist/css/main.css
  75. 1 0
      www/webapp/moonclub/dist/js/$.js
  76. 2 0
      www/webapp/moonclub/dist/js/IScroll.js
  77. 0 0
      www/webapp/moonclub/dist/js/api.js
  78. 6 0
      www/webapp/moonclub/dist/js/autosize.js
  79. 1 0
      www/webapp/moonclub/dist/js/base.js
  80. 1 0
      www/webapp/moonclub/dist/js/bdmapapi.js
  81. 54 0
      www/webapp/moonclub/dist/js/build.txt
  82. 1 0
      www/webapp/moonclub/dist/js/build/activities/alert.js
  83. 1 0
      www/webapp/moonclub/dist/js/build/activities/cat.js
  84. 0 0
      www/webapp/moonclub/dist/js/build/address/detail/index.js
  85. 1 0
      www/webapp/moonclub/dist/js/build/address/list/cell.js
  86. 1 0
      www/webapp/moonclub/dist/js/build/address/list/index.js
  87. 1 0
      www/webapp/moonclub/dist/js/build/address/poi/cell.js
  88. 1 0
      www/webapp/moonclub/dist/js/build/address/poi/index.js
  89. 1 0
      www/webapp/moonclub/dist/js/build/address/poiss/cell.js
  90. 1 0
      www/webapp/moonclub/dist/js/build/address/poiss/index.js
  91. 1 0
      www/webapp/moonclub/dist/js/build/address/position/cell.js
  92. 1 0
      www/webapp/moonclub/dist/js/build/address/position/city.js
  93. 1 0
      www/webapp/moonclub/dist/js/build/address/position/index.js
  94. 0 0
      www/webapp/moonclub/dist/js/build/agreement/index.js
  95. 0 0
      www/webapp/moonclub/dist/js/build/agreenment/index.js
  96. 1 0
      www/webapp/moonclub/dist/js/build/appointment/list.js
  97. 1 0
      www/webapp/moonclub/dist/js/build/beautician/comment.js
  98. 1 0
      www/webapp/moonclub/dist/js/build/beautician/detail.js
  99. 0 0
      www/webapp/moonclub/dist/js/build/beautician/index.js
  100. 1 0
      www/webapp/moonclub/dist/js/build/coming/index.js

+ 3 - 0
webshell/dailyAnalys.sh

@@ -0,0 +1,3 @@
+#! /bin/bash
+cd /data/php/www/protected
+/usr/local/php/bin/php yiic dailyanalys

+ 4 - 0
webshell/hourlyWork.sh

@@ -0,0 +1,4 @@
+#! /bin/bash
+cd /data/php/www/protected
+/usr/local/php/bin/php yiic hourlywork
+/usr/local/php/bin/php yiic dealvideoconv

+ 3 - 0
webshell/pushListener.sh

@@ -0,0 +1,3 @@
+#! /bin/bash
+cd /data/php/www/protected
+/usr/local/php/bin/php yiic pushlistener

+ 763 - 0
webshell/sys-init.sh

@@ -0,0 +1,763 @@
+#! /bin/bash -e
+#
+platform=`uname -i`
+if [ $platform != "x86_64" ];then
+	echo "\033[31mthis script is only for 64bit Operating System !\033[0m"
+	exit 1
+fi
+system=`cat /etc/redhat-release |awk '{print $1}'`
+if [ $system != "CentOS" ];then
+	echo "\033[31mthis script is only for CentOS 6 !\033[0m"
+	exit 1
+fi
+mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
+wget -c http://mirrors.163.com/.help/CentOS6-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo
+
+DATE=`date +"%Y-%m-%d %H:%M:%S"`
+CPU_PROCESSOR=`grep 'processor' /proc/cpuinfo | sort -u | wc -l`
+HOSTNAME=`hostname -s`
+USER=`whoami`
+IPADDR=`ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g' |sed 's/Bcast:.*$//g'`
+CPU_AVERAGE=`cat /proc/loadavg | cut -c1-14`
+MemTotal=$[`grep MemTotal /proc/meminfo |awk '{print $2}'`/1024/1024+1]
+BASEPATH=$(cd `dirname $0`; pwd)
+DOWNURL="http://cdn.iyueni.com/download/package/"
+
+function system {
+	echo -e "\033[41;33m|-----------System Infomation-----------\033[0m"
+	echo -e "| DATE         :$DATE"
+	echo -e "| HOSTNAME     :$HOSTNAME"
+	echo -e "| USER         :$USER"
+	echo -e "| Root dir     :$BASEPATH"
+	echo -e "| IP           :$IPADDR"
+	echo -e "| CPU_AVERAGE  :$CPU_AVERAGE"
+	echo -e "| CPU_PROCESSOR:$CPU_PROCESSOR"
+	echo -e "| MemTotal     :${MemTotal}G"
+}
+
+function process {
+	echo -e "\033[41;33m|-----------Current Process-----------\033[0m"
+	for service in nginx php mysql
+	do
+		if [ `ps aux|grep $service |grep -v grep|wc -l` -gt 0 ];then
+			echo -e "\033[32m$service.......................[RUNNING]\033[0m"
+		else
+			echo -e "\033[31m$service.......................[NOT RUN]\033[0m"
+		fi
+	done
+}
+
+function configSysctl {
+	if [ -z "`grep '^net.ipv4.tcp_max_tw_buckets' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_max_tw_buckets = 10000" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_max_tw_buckets *=.*/net.ipv4.tcp_max_tw_buckets = 10000/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.ip_local_port_range' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.ip_local_port_range *=.*/net.ipv4.ip_local_port_range = 1024 65000/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_tw_recycle' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_tw_recycle *=.*/net.ipv4.tcp_tw_recycle = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_tw_reuse' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_tw_reuse *=.*/net.ipv4.tcp_tw_reuse = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_syncookies' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_syncookies *=.*/net.ipv4.tcp_syncookies = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.core.somaxconn' /etc/sysctl.conf`" ];then
+		echo "net.core.somaxconn = 262144" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.core.somaxconn *=.*/net.core.somaxconn = 262144/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.core.netdev_max_backlog' /etc/sysctl.conf`" ];then
+		echo "net.core.netdev_max_backlog = 262144" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.core.netdev_max_backlog *=.*/net.core.netdev_max_backlog = 262144/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_max_orphans' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_max_orphans = 2621444" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_max_orphans *=.*/net.ipv4.tcp_max_orphans = 2621444/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_max_syn_backlog' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_max_syn_backlog = 262144" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_max_syn_backlog *=.*/net.ipv4.tcp_max_syn_backlog = 262144/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_timestamps' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_timestamps *=.*/net.ipv4.tcp_timestamps = 0/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_synack_retries' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_synack_retries *=.*/net.ipv4.tcp_synack_retries = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_syn_retries' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_syn_retries *=.*/net.ipv4.tcp_syn_retries = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_fin_timeout' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_fin_timeout = 1" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_fin_timeout *=.*/net.ipv4.tcp_fin_timeout = 1/g" /etc/sysctl.conf
+	fi
+	if [ -z "`grep '^net.ipv4.tcp_keepalive_time' /etc/sysctl.conf`" ];then
+		echo "net.ipv4.tcp_keepalive_time = 1200" >> /etc/sysctl.conf
+	else
+		sed -i "s/^net.ipv4.tcp_keepalive_time *=.*/net.ipv4.tcp_keepalive_time = 1200/g" /etc/sysctl.conf
+	fi
+	sysctl -p
+	echo -e "\033[31msysctl.conf to complete the optimization!\033[0m"
+}
+
+function configUlimit {
+	if [ -z "`grep '^ulimit -SHn' /etc/profile`" ];then
+		echo "ulimit -SHn 65535" >> /etc/profile
+	else
+		sed -i "s/^ulimit -SHn.*/ulimit -SHn 65535/g" /etc/profile
+	fi
+	if [ -z "`grep '^ulimit -SHu' /etc/profile`" ];then
+		echo "ulimit -SHu 256716" >> /etc/profile
+	else
+		sed -i "s/^ulimit -SHu.*/ulimit -SHu 256716/g" /etc/profile
+	fi
+	echo -e "\033[31m\"source /etc/profile\" command to take effect!\033[0m"
+}
+
+function installNginx {
+	echo -e "============================Install Nginx================================="
+	if [ ! -e "/usr/local/nginx" ];then
+		yum -y update && yum -y install gcc-c++ zlib-devel openssl--devel pcre-devel
+		groupadd www && /usr/sbin/useradd -g www www		
+		if [ ! -s "nginx-1.7.9.tar.gz" ];then
+			#http://nginx.org/download/nginx-1.7.9.tar.gz
+			wget -c ${DOWNURL}nginx-1.7.9.tar.gz
+		fi
+		tar zxvf nginx-1.7.9.tar.gz 
+		cd nginx-1.7.9
+		./configure
+		make && make install
+		if [ $CPU_PROCESSOR -ge 8 ];then
+			workerCA="00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000"
+			workerP=8
+		elif [ $CPU_PROCESSOR -ge 4 ] && [ $CPU_PROCESSOR -lt 8 ];then
+			workerCA="0001 0010 0100 1000"
+			workerP=4
+		else
+			workerCA="1"
+			workerP=1
+		fi
+		
+		sed -i '1,$d' /usr/local/nginx/conf/nginx.conf
+		echo -e "user www;\nworker_processes ${workerP};\nworker_cpu_affinity ${workerCA};\nerror_log logs/error.log;\npid logs/nginx.pid;\nworker_rlimit_nofile 102400;\nevents {\n\tuse epoll;\n\tworker_connections 10240;\n}\nhttp {\n\tinclude mime.types;\n\tdefault_type application/octet-stream;\n\tclient_header_buffer_size 64k;\n\tlarge_client_header_buffers 4 64k;\n\tclient_max_body_size 300m;\n\tserver_tokens off;\n\tsendfile on;\n\ttcp_nopush on;\n\tgzip on;\n\tgzip_disable 'MSIE [1-6].';\n\tkeepalive_timeout 60;\n\topen_file_cache max=102400 inactive=20s;\n\topen_file_cache_valid 30s;\n\topen_file_cache_min_uses 1;\n\tinclude vhost/*.conf;\n}" > /usr/local/nginx/conf/nginx.conf
+		mkdir -p /usr/local/nginx/conf/vhost		
+		/usr/local/nginx/sbin/nginx &
+		echo -e "\033[31mNginx complete installation!\033[0m"
+		cleanFiles nginx-1.7.9
+	else
+		echo -e "\033[31mNginx is already installed!\033[0m"
+	fi
+}
+
+function updateNginx {
+	if [ ! -s "nginx-1.9.0.tar.gz" ];then
+		#http://nginx.org/download/nginx-1.9.0.tar.gz
+		wget -c ${DOWNURL}nginx-1.9.0.tar.gz
+	fi
+	tar zxvf nginx-1.9.0.tar.gz
+	cd nginx-1.9.0
+	./configure
+	make
+	mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
+	cp -f objs/nginx /usr/local/nginx/sbin/ 
+	/usr/local/nginx/sbin/nginx -s reload
+	echo -e "\033[31mNginx complete upgrade!\033[0m"
+	cleanFiles nginx-1.9.0
+}
+
+function configVhost {
+	while : 
+	do 
+		read -p "Please input domain(example: www.test.com): " domain
+		if [ -z "`echo $domain | grep -Pix '^([a-z0-9]+[a-z0-9_]*[a-z0-9]+(\.)?)[a-z0-9]+[a-z0-9_]*(\.org\.cn|\.net|\.com|\.com\.cn)$'`" ]; then 
+			echo -e "\033[31minput error! \033[0m" 
+		else 
+			if [ ! -f "/usr/local/nginx/conf/vhost/${domain}.conf" ]; then
+				echo -e "\033[31mdomain=${domain}\033[0m" 
+			else
+				echo -e "\033[31m${domain} is exist!\033[0m"  
+			fi
+			break 
+		fi 
+	done
+	
+	while : 
+	do 
+		echo "Please input the directory for the domain:$domain :" 
+		read -p "(Default directory: /data/$domain): " vhostdir 
+		if [ "$vhostdir" = "" ]; then
+			vhostdir="/data/$domain"
+		fi
+		if [ -z "`echo $vhostdir | grep -Pix '(\/[\w\.]+)+'`" ]; then 
+			echo -e "\033[31minput error! \033[0m"			
+		else
+			if [ ! -e "$vhostdir" ]; then
+				mkdir -p $vhostdir
+				echo -e "\033[31mCreate Virtul Host directory ${vhostdir}\033[0m" 
+			else
+				echo -e "\033[31m${vhostdir} is exist!\033[0m"  
+			fi
+			chown -R $USER.$USER $vhostdir
+			break
+		fi
+	done
+	
+	echo -e "server {\n\tlisten 80 default_server;\n\tlocation / {\n\t\treturn 403;\n\t}\n}\nserver\n{\n\tlisten 80;\n\tserver_name ${domain};\n\tindex index.html index.php;\n\troot ${vhostdir};\n\tlocation / {\n\t}\n\tlocation ~ .*\.(php|php5)?$\n\t{\n\t\tfastcgi_pass 127.0.0.1:9000;\n\t\tfastcgi_send_timeout 3600s;\n\t\tfastcgi_connect_timeout 3600s;\n\t\tfastcgi_read_timeout 3600s;\n\t\tfastcgi_index  index.php;\n\t\tfastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;\n\t\tinclude fastcgi_params;\n\t}\n\tlocation ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$\n\t{\n\t\texpires 30d;\n\t\taccess_log off;\n\t}\n\tlocation ~ .*\.(js|css)?$\n\t{\n\t\texpires 12h;\n\t\taccess_log off;\n\t}\n}" > /usr/local/nginx/conf/vhost/$domain.conf
+	kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
+}
+
+function installPHP {	
+	if [ ! -e "/usr/local/php/bin/php" ];then		
+		yum -y install gcc gcc-c++ libxml2-devel.x86_64 autoconf libjpeg-devel freetype-devel.x86_64 zlib-devel.x86_64 glibc-devel.x86_64 glib2-devel.x86_64 libpng-devel.x86_64 libcurl-devel.x86_64
+		if [ ! -s "php-5.5.24.tar.gz" ];then
+			#http://cn2.php.net/distributions/php-5.5.24.tar.gz
+			wget -c ${DOWNURL}php-5.5.24.tar.gz
+		fi
+		tar zxvf php-5.5.24.tar.gz
+		cd php-5.5.24
+		./configure --prefix=/usr/local/php --with-curl --enable-mbstring --with-mysql=mysqlnd --with-mysqli --enable-opcache --with-pdo-mysql --with-iconv --with-gd --enable-fpm --with-jpeg-dir --with-png-dir --enable-zip --with-freetype-dir --with-gettext --enable-gd-native-ttf --without-pdo-sqlite --without-sqlite3
+		make && make install
+		cp -f php.ini-production /usr/local/php/lib/php.ini
+		sed -i '{
+		s/;date.timezone *=.*/date.timezone = PRC/g
+		s/upload_max_filesize *=.*/upload_max_filesize = 5M/g
+		s/memory_limit *=.*/memory_limit = 5120M/g
+		s/post_max_size *=.*/post_max_size = 100M/g
+		s/expose_php *=.*/expose_php = Off/g
+		s/; extension_dir = ".\/"/extension_dir = "\/usr\/local\/php\/lib\/php\/extensions\/no-debug-non-zts-20121212\/"/g			
+		}' /usr/local/php/lib/php.ini
+
+		cp -f /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
+		/bin/mkdir -p /usr/local/php/log/
+		sed -i '1,$d' /usr/local/php/etc/php-fpm.conf
+		echo -e "[global]\nerror_log = /usr/local/php/log/error.log\nlog_level = warning\n[www]\nuser = www\ngroup = www\nlisten = 127.0.0.1:9000\npm = dynamic\npm.max_children = 2000\npm.start_servers = 10\npm.min_spare_servers = 5\npm.max_spare_servers = 200\npm.max_requests = 12000\npm.process_idle_timeout = 10s\nrequest_terminate_timeout = 300s\nrequest_slowlog_timeout = 10s\nslowlog = /usr/local/php/log/slow.log" > /usr/local/php/etc/php-fpm.conf
+			
+		cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
+		chmod 700 /etc/init.d/php-fpm 
+		chkconfig --add php-fpm
+		chkconfig php-fpm on
+		php_version=`/usr/local/php/bin/php -v |awk 'NR==1 {print $2}'`
+		echo -e "\033[31mPHP${php_version} complete installation!\033[0m"
+		cleanFiles php-5.5.24
+	else
+		php_version=`/usr/local/php/bin/php -v |awk 'NR==1 {print $2}'`
+		echo -e "\033[31mPHP${php_version} is already installed!\033[0m"
+	fi
+}
+
+function updatePHP {
+	php_version=`/usr/local/php/bin/php -v |awk 'NR==1 {print $2}'`
+	if [ $php_version == "5.5.24" ];then
+		echo -e "\033[31mPHP${php_version} is the latest version!\033[0m"
+		return
+	fi
+	if [ -e "/usr/local/php/bin/php" ];then
+		/bin/rm -rf /usr/local/php/
+		yum -y install gcc gcc-c++ libxml2-devel.x86_64 autoconf libjpeg-devel freetype-devel.x86_64 zlib-devel.x86_64 glibc-devel.x86_64 glib2-devel.x86_64 libpng-devel.x86_64 libcurl-devel.x86_64
+		if [ ! -s "php-5.5.24.tar.gz" ];then
+			#http://cn2.php.net/distributions/php-5.5.24.tar.gz
+			wget -c ${DOWNURL}php-5.5.24.tar.gz
+		fi
+		tar zxvf php-5.5.24.tar.gz
+		cd php-5.5.24
+		./configure --prefix=/usr/local/php --with-curl --enable-mbstring --with-mysql=mysqlnd --with-mysqli --enable-opcache --with-pdo-mysql --with-iconv --with-gd --enable-fpm --with-jpeg-dir --with-png-dir --enable-zip --with-freetype-dir --with-gettext --enable-gd-native-ttf --without-pdo-sqlite --without-sqlite3
+		make && make install
+		cp -f php.ini-production /usr/local/php/lib/php.ini
+		sed -i '{
+		s/;date.timezone *=.*/date.timezone = PRC/g
+		s/upload_max_filesize *=.*/upload_max_filesize = 5M/g
+		s/memory_limit *=.*/memory_limit = 5120M/g
+		s/post_max_size *=.*/post_max_size = 100M/g
+		s/expose_php *=.*/expose_php = Off/g
+		s/; extension_dir = ".\/"/extension_dir = "\/usr\/local\/php\/lib\/php\/extensions\/no-debug-non-zts-20121212\/"/g			
+		}' /usr/local/php/lib/php.ini
+
+		cp -f /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
+		/bin/mkdir -p /usr/local/php/log/
+		sed -i '1,$d' /usr/local/php/etc/php-fpm.conf
+		echo -e "[global]\nerror_log = /usr/local/php/log/error.log\nlog_level = warning\n[www]\nuser = www\ngroup = www\nlisten = 127.0.0.1:9000\npm = dynamic\npm.max_children = 2000\npm.start_servers = 10\npm.min_spare_servers = 5\npm.max_spare_servers = 200\npm.max_requests = 12000\npm.process_idle_timeout = 10s\nrequest_terminate_timeout = 300s\nrequest_slowlog_timeout = 10s\nslowlog = /usr/local/php/log/slow.log" > /usr/local/php/etc/php-fpm.conf
+			
+		cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
+		chmod 700 /etc/init.d/php-fpm 
+		chkconfig --add php-fpm
+		chkconfig php-fpm on
+		php_version=`/usr/local/php/bin/php -v |awk 'NR==1 {print $2}'`
+		echo -e "\033[31mPHP${php_version} complete installation!\033[0m"
+		cleanFiles php-5.5.24
+	fi
+}
+
+function installPHPRedis {
+	if [ ! -s "redis-2.2.7.tgz" ];then
+		#http://pecl.php.net/get/redis-2.2.7.tgz
+		wget -c ${DOWNURL}redis-2.2.7.tgz
+	fi
+	tar zxvf redis-2.2.7.tgz
+	cd redis-2.2.7  
+	/usr/local/php/bin/phpize
+	./configure -with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=redis.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=redis.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mRedis extension complete installation!\033[0m"
+	cleanFiles redis-2.2.7
+}
+
+function installPHPMongo {
+	if [ ! -s "mongo-1.6.8.tgz" ];then
+		#http://pecl.php.net/get/mongo-1.6.8.tgz
+		wget -c ${DOWNURL}mongo-1.6.8.tgz
+	fi
+	tar zxvf mongo-1.6.8.tgz
+	cd mongo-1.6.8
+	/usr/local/php/bin/phpize
+	./configure -with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=mongo.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=mongo.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mMongo extension complete installation!\033[0m"
+	cleanFiles mongo-1.6.8
+}
+
+function installPHPSphinx {
+	yum -y update && yum -y install libtool autoconf automake mysql-devel libxml2-devel expat-devel
+	if [ ! -s "coreseek-4.1-beta.tar.gz" ];then
+		#http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
+		wget -c ${DOWNURL}coreseek-4.1-beta.tar.gz
+	fi
+	tar zxvf coreseek-4.1-beta.tar.gz
+	cd coreseek-4.1-beta/csft-4.1/api/libsphinxclient
+	aclocal
+	libtoolize --force
+	automake --add-missing && autoconf && autoheader
+	./configure
+	make && make install
+	cleanFiles coreseek-4.1-beta
+	
+	wget -c ${DOWNURL}sphinx-1.3.2.tgz
+	tar zxvf sphinx-1.3.2.tgz
+	cd sphinx-1.3.2
+	/usr/local/php/bin/phpize
+	./configure -with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=sphinx.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=sphinx.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mSphinx extension complete installation!\033[0m"
+	cleanFiles sphinx-1.3.2
+}
+
+function installPHPXsplit {
+	if [ ! -s "xsplit-0.0.8.zip" ];then
+		#wget -O xsplit-0.0.8.zip -c https://github.com/chopins/php-xsplit/archive/master.zip
+		wget -c ${DOWNURL}xsplit-0.0.8.zip
+	fi
+	unzip xsplit-0.0.8.zip
+	cd php-xsplit-master
+	/usr/local/php/bin/phpize
+	./configure -with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=xsplit.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=xsplit.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mXsplit extension complete installation!\033[0m"
+	cleanFiles php-xsplit-master
+}
+
+function installPHPPhalcon {
+	if [ ! -s "phalcon-2.0.1.zip" ];then
+		#wget -O phalcon-2.0.1.zip -c https://github.com/phalcon/cphalcon/archive/master.zip
+		wget -c ${DOWNURL}phalcon-2.0.1.zip
+	fi
+	unzip phalcon-2.0.1.zip
+	cd cphalcon-master/build/64bits
+	/usr/local/php/bin/phpize
+	./configure -with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=phalcon.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=phalcon.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mPhalcon extension complete installation!\033[0m"
+	cleanFiles cphalcon-master
+}
+
+function installPHPGmagick {
+	if [ ! -s "giflib-5.1.0.tar.gz" ];then
+		#http://cznic.dl.sourceforge.net/project/giflib/giflib-5.1.0.tar.gz
+		wget -c ${DOWNURL}giflib-5.1.0.tar.gz
+	fi
+	tar zxvf giflib-5.1.0.tar.gz
+	cd giflib-5.1.0
+	./configure --prefix=/usr/local/giflib
+	make && make install
+	cleanFiles giflib-5.1.0
+
+	if [ ! -s "libwebp-0.4.0.tar.gz" ];then
+		#http://webp.googlecode.com/files/libwebp-0.4.0.tar.gz
+		wget -c ${DOWNURL}libwebp-0.4.0.tar.gz
+	fi
+	tar zxvf libwebp-0.4.0.tar.gz
+	cd libwebp-0.4.0
+	./configure --prefix=/usr/local/libwep --with-gifincludedir=/usr/local/giflib/include/ --with-giflibdir=/usr/local/giflib/lib/
+	make && make install
+	cleanFiles libwebp-0.4.0
+	
+	if [ ! -s "GraphicsMagick-1.3.21.tar.gz" ];then
+		wget -c http://jaist.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.21/GraphicsMagick-1.3.21.tar.gz
+	fi
+	tar zxvf GraphicsMagick-1.3.21.tar.gz
+	cd GraphicsMagick-1.3.21/
+	./configure --prefix=/usr/local/gmagick --enable-shared CPPFLAGS='-I/usr/local/libwep/include' LDFLAGS='-L/usr/local/libwep/lib'
+	make && make install
+	cp -f /usr/local/gmagick/bin/gm /usr/bin/
+	cleanFiles GraphicsMagick-1.3.21
+
+	if [ ! -s "gmagick-1.1.7RC3.tgz" ];then
+		wget -c http://pecl.php.net/get/gmagick-1.1.7RC3.tgz
+	fi	
+	tar zxvf gmagick-1.1.7RC3.tgz
+	cd gmagick-1.1.7RC3
+	/usr/local/php/bin/phpize
+	./configure --with-php-config=/usr/local/php/bin/php-config --with-gmagick=/usr/local/gmagick
+	make && make install	
+	if [ -z "`grep '^extension=gmagick.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=gmagick.so' /usr/local/php/lib/php.ini
+	fi
+	/sbin/service php-fpm restart
+	echo -e "\033[31mGmagick extension complete installation!\033[0m"
+	cleanFiles gmagick-1.1.7RC3
+}
+
+function installPHPSSH2 {
+	yum -y install openssl openssl-devel
+	if [ ! -s "libssh2-1.4.3.tar.gz" ];then
+		wget -c http://7xorsj.dl1.z0.glb.clouddn.com/libssh2-1.4.3.tar.gz
+	fi
+	tar zxvf libssh2-1.4.3.tar.gz
+	cd libssh2-1.4.3
+	./configure --prefix=/usr/local/libssh2
+	make && make install
+	cleanFiles libssh2-1.4.3
+	
+	if [ ! -s "ssh2-0.12.tgz" ];then
+		wget -c http://pecl.php.net/get/ssh2-0.12.tgz
+	fi
+	tar zxvf ssh2-0.12.tgz 
+	cd ssh2-0.12
+	/usr/local/php/bin/phpize 
+	./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2  --with-php-config=/usr/local/php/bin/php-config
+	make && make install
+	if [ -z "`grep '^extension=ssh2.so' /usr/local/php/lib/php.ini`" ];then
+		sed -i '/;extension=php_xsl.dll/a\extension=ssh2.so' /usr/local/php/lib/php.ini
+	fi	
+	/sbin/service php-fpm restart
+	echo -e "\033[31mSSH2 extension complete installation!\033[0m"
+	cleanFiles ssh2-0.12
+}
+
+function installMysql {
+	yum -y update && yum -y downgrade ncurses* && yum -y install make gcc-c++ cmake bison-devel ncurses-devel
+	if [ ! -e "/usr/local/mysql" ];then
+		if [ ! -s "mysql-5.6.20.tar.gz" ];then
+			wget -c http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.20.tar.gz
+		fi
+		tar zxvf mysql-5.6.20.tar.gz
+		cd mysql-5.6.20
+		
+		read -p "Please input the root password of mysql:" mysqlrootpwd
+		if [ "$mysqlrootpwd" = "" ]; then
+			mysqlrootpwd="root"
+		fi
+		
+		while : 
+		do 
+			read -p "Please input the directory for the mysql data(example: /data/mysql): " mysqldatadir
+			if [ "$mysqldatadir" = "" ]; then
+				mysqldatadir="/data/mysql"
+			fi
+			if [ -z "`echo $mysqldatadir | grep -Pix '(\/[\w\.]+)+'`" ]; then 
+				echo -e "\033[31minput error! \033[0m"			
+			else
+				if [ ! -e "$mysqldatadir" ]; then
+					mkdir -p $mysqldatadir
+					echo -e "\033[31mCreate directory ${mysqldatadir}\033[0m" 
+				else
+					echo -e "\033[31m${mysqldatadir} is exist!\033[0m"  
+				fi
+				break
+			fi
+		done
+		
+		cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=$mysqldatadir -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
+		make && make install
+		groupadd mysql && useradd -g mysql mysql
+		chown -R mysql:mysql /usr/local/mysql
+		cd /usr/local/mysql
+		scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=$mysqldatadir --user=mysql
+		rm -rf /etc/my.cnf
+		mv /usr/local/mysql/my.cnf /etc/
+		sed -i '1,$d' /etc/my.cnf
+		ibps=`echo "$mem * 0.8"|bc`
+		ibps=${ibps%.*}
+		echo -e "[client]\nport=3306\nsocket=/tmp/mysql.sock\n[mysqld]datadir=${mysqldatadir}\nsocket=/tmp/mysql.sock\nport=3306\nuser=mysql\nsql_mode=\"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"\nlong_query_time=1\nslow_query_log=1\nslow_query_log_file=slow.log\nkey_buffer_size=1024M\nmax_allowed_packet=512M\ntable_open_cache=2048\nsort_buffer_size=64M\nmax_length_for_sort_data=8096\nread_buffer_size=64M\nread_rnd_buffer_size=64M\nmyisam_sort_buffer_size=512M\nthread_cache_size=256\nquery_cache_size=512M\nquery_cache_type=1\nquery_cache_limit=2M\ntmp_table_size=4096M\nthread_concurrency=16\nmyisam-recover=BACKUP,FORCE\nmax_connections=3000\nskip-name-resolve\nback_log=384\nmyisam_max_sort_file_size=10G\nmax_allowed_packet=256M\nwait_timeout=3600\nlog-bin=mysql-bin\nbinlog_format=mixed\nserver-id=811\nexpire_logs_days=0\ninnodb_buffer_pool_size=${ibps}G\ninnodb_flush_log_at_trx_commit=0\n[mysqld_safe]\nlog-error=mysql.log" > /etc/my.cnf
+		cp -f support-files/mysql.server /etc/init.d/mysql
+		chkconfig mysql on
+		service mysql start
+		/usr/local/mysql/bin/mysql -uroot -e "SET PASSWORD = PASSWORD(\"${mysqlrootpwd}\");GRANT ALL PRIVILEGES ON *.* TO root@\"%\" IDENTIFIED BY \"${mysqlrootpwd}\" WITH GRANT OPTION;"
+		echo -e "\033[31mMysql complete installation!\033[0m"
+		cleanFiles mysql-5.6.20
+	else
+		echo -e "\033[31mMysql is already installed!\033[0m"
+	fi
+}
+
+function toContinue {
+	echo -e "\033[41;33mPress any key to continue...\033[0m"
+	read -n1
+	clear
+}
+
+function cleanFiles {
+	if [ $# -eq 1 ] && [ -e "${BASEPATH}/$1" ];then
+		/bin/rm -rf ${BASEPATH}/$1 &
+	fi
+	cd ${BASEPATH}
+}
+
+function startService {
+	/usr/local/nginx/sbin/nginx &
+	/sbin/service php-fpm start
+	/sbin/service mysql start
+}
+
+function stopService {
+	kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
+	/sbin/service php-fpm stop
+	/sbin/service mysql stop
+}
+
+function restartService {
+	kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
+	/sbin/service php-fpm restart
+	/sbin/service mysql restart
+}
+
+function menu {
+while true
+do
+	system
+	process
+	echo -e "\033[41;33m|-----------Menu-----------\033[0m"
+	echo -e "(1) Configure \033[1mSystem Kernel\033[0m"
+	echo -e "(2) Configure \033[1mNGINX\033[0m Service"
+	echo -e "(3) Configure \033[1mPHP\033[0m Service"
+	echo -e "(4) Configure \033[1mMYSQL\033[0m Service"
+	echo -e "(0) Quit"
+	read -p "Please enter your choice[0-4]: " input
+	case $input in
+	1)
+		clear
+		while true
+		do
+			system
+			echo -e "\033[41;33m|-----------Configure System Kernel-----------\033[0m"
+			echo -e "(1) Configure /etc/sysctl.conf"
+			echo -e "(2) Configure ulimit"
+			echo -e "(0) Back"
+			read -p "Please enter your choice[0-2]: " input1
+			case $input1 in
+			1)
+				configSysctl
+				toContinue
+				;;
+			2)
+				configUlimit
+				exit 0
+				;;
+			0) 
+				clear 
+				break
+				;;
+			*)
+				echo -e "\033[31mPlease Enter Right Choice!\033[0m"
+				toContinue
+				;;
+			esac			
+		done
+		;;
+	2)
+		clear
+		while true
+		do
+			system
+			echo -e "\033[41;33m|-----------Configure NGINX Service-----------\033[0m"
+			echo -e "(1) Install the latest version nginx"
+			echo -e "(2) Seamless upgrade nginx"
+			echo -e "(3) Configure the virtual host"
+			echo -e "(0) Back"
+			read -p "Please enter your choice[0-3]: " input2
+			case $input2 in
+			1)
+				installNginx
+				toContinue
+				;;
+			2)
+				updateNginx
+				toContinue
+				;;
+			3)
+				configVhost
+				toContinue
+				;;
+			0) 
+				clear 
+				break
+				;;
+			*)
+				echo -e "\033[31mPlease Enter Right Choice!\033[0m"
+				toContinue
+				;;
+			esac			
+		done
+		;;
+	3)
+		clear		
+		while true
+		do
+			system
+			echo -e "\033[41;33m|-----------Configure PHP Service-----------\033[0m"
+			echo -e "(1) Install the Old Stable \033[1mPHP 5.5.24\033[0m"
+			echo -e "(2) Upgrade to Old Stable \033[1mPHP 5.5.24\033[0m"
+			echo -e "(3) Install the latest \033[1mredis\033[0m extension of PHP"
+			echo -e "(4) Install the latest \033[1mmongoDB\033[0m extension of PHP"
+			echo -e "(5) Install the latest \033[1msphinx\033[0m extension of PHP"
+			echo -e "(6) Install the latest \033[1mxsplit\033[0m extension of PHP"
+			echo -e "(7) Install the latest \033[1mphalcon\033[0m extension of PHP"
+			echo -e "(8) Install the latest \033[1mgmagick\033[0m extension of PHP"
+			echo -e "(9) Install the latest \033[1mssh2\033[0m extension of PHP"			
+			echo -e "(0) Back"
+			read -p "Please enter your choice[0-9]: " input3
+			case $input3 in
+			1)
+				installPHP
+				toContinue
+				;;
+			2)
+				updatePHP
+				toContinue
+				;;
+			3)
+				installPHPRedis
+				toContinue
+				;;
+			4)
+				installPHPMongo
+				toContinue
+				;;
+			5)
+				installPHPSphinx
+				toContinue
+				;;
+			6)
+				installPHPXsplit
+				toContinue
+				;;
+			7)
+				installPHPPhalcon
+				toContinue
+				;;
+			8)
+				installPHPGmagick
+				toContinue
+				;;
+			9)
+				installPHPSSH2
+				toContinue
+				;;
+			0) 
+				clear 
+				break
+				;;
+			*)
+				echo -e "\033[31mPlease Enter Right Choice!\033[0m"
+				toContinue
+				;;
+			esac			
+		done
+		;;
+	4)
+		clear
+		while true
+		do
+			system
+			echo -e "\033[41;33m|-----------Configure MYSQL Service-----------\033[0m"
+			echo -e "(1) Install the latest version MYSQL"
+			echo -e "(0) Back"
+			read -p "Please enter your choice[0-1]: " input4
+			case $input4 in
+			1)
+				installMysql
+				toContinue
+				;;
+			0) 
+				clear 
+				break
+				;;
+			*)
+				echo -e "\033[31mPlease Enter Right Choice!\033[0m"
+				toContinue
+				;;
+			esac			
+		done
+		;;
+	0) 
+		clear 
+		break
+		;;
+	*)
+		echo -e "\033[31mPlease Enter Right Choice!\033[0m"	
+		toContinue
+		;;
+	esac
+done
+}
+#start Judge script parameters
+if [ "$1" != "" ];then
+    arr=($1)
+	for i in ${arr[@]}
+	do
+		$i >> install.log
+	done
+else
+    clear
+	menu
+fi

BIN
www/images/digest.png


BIN
www/images/stick.png


BIN
www/images/toutiao_0.png


BIN
www/images/toutiao_1.png


+ 16 - 0
www/js/amazeui.datetimepicker.zh-CN.js

@@ -0,0 +1,16 @@
+/**
+ * Simplified Chinese translation for bootstrap-datetimepicker
+ * Yuan Cheung <advanimal@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['zh-CN'] = {
+			days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
+			daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
+			daysMin:  ["日", "一", "二", "三", "四", "五", "六", "日"],
+			months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+			monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+			today: "今日",
+			suffix: [],
+			meridiem: ["上午", "下午"]
+	};
+}(jQuery));

+ 167 - 0
www/js/hybrid.js

@@ -0,0 +1,167 @@
+function os_proxy(fn){
+    var u = navigator.userAgent.toLowerCase();
+    if (!fn.hasOwnProperty('browser')){
+        fn['browser'] = function(){
+            console.log('没有定义方法');
+            return false;
+        }
+    }
+    if ((/android|linux/i.test(u)) && fn.hasOwnProperty('android')){
+        return fn['android']();
+    } else if ((/iphone|ipad|ipod/i.test(u)) && fn.hasOwnProperty('ios')){
+        return fn['ios']();
+    } else{
+        return fn['browser']();
+    }
+}
+//获取用户的信息
+function get_user_info(){
+    os_proxy({
+        android: function(){
+            window.jsapi.getUserInfo('{"callback":"notifyGetUserInfo"}');
+        },
+        ios: function(){
+            window.location.href = 'http://callclient?method=getUserInfo&callback=notifyGetUserInfo';
+        }
+    });
+}
+//保存用户的信息
+function notifyGetUserInfo(result){
+    //alert('notifyGetUserInfo called');
+    var reg=new RegExp('(\r\n|\r|\n)', 'g');
+    var _res = JSON.stringify(result).replace(reg, '');
+    $('#result').val(_res);
+    var res = JSON.parse(_res);
+
+    res = os_proxy({
+        android: function(){
+            if (res.success == 1){
+                res.success = true;
+            } else {
+                res.success = false;
+            }
+            return res;
+        },
+        ios: function(){
+            if (res && res.hasOwnProperty('success')){
+                if (res.success == 1){
+                    res.success = true;
+                } else {
+                    res.success = false;
+                }
+            }
+            return res;
+        }
+    });
+    if (res){
+        if (res.hasOwnProperty('version')){
+            app_version = res.version;
+        }
+        if (res.hasOwnProperty('deviceId')){
+            deviceId = res.deviceId;
+        }
+        if (res.hasOwnProperty('osVersion')){
+            osVersion = res.osVersion;
+        }
+
+        if (res.hasOwnProperty('success') && res.success){
+            do_login(res);
+        }
+    }
+}
+//根据客户端接口或web登录接口初始化用户信息
+function do_login(res){
+    if (res.hasOwnProperty('success')){
+        user_info = res.data;
+    }
+    if (res.hasOwnProperty('success')){
+        user_id = user_info.id;
+    }
+
+    //$('#result').val('user_id:'+user_id+'<br />'+'osVersion:'+osVersion+'<br />'+'deviceId:'+deviceId+'<br />'+'app_version:'+app_version+'<br />'+'user_name:'+user_info.user_name+'<br />');
+}
+//分享
+function do_share(opts){
+    var share_img = 'http://www.yiguanjia.me/images/logo.png';
+    var share_str = '';
+    var share_url = '';
+    var title = '';
+    if (opts.hasOwnProperty('str')){
+        if (typeof(opts.str) == 'function'){
+            share_str = opts.str();
+        } else {
+            share_str = opts.str;
+        }
+    }
+    if (opts.hasOwnProperty('img')){
+        share_img = opts.img;
+    }
+    if (opts.hasOwnProperty('url')){
+        share_url = opts.url;
+    }
+    if (opts.hasOwnProperty('title')){
+        title = opts.title;
+    }
+    var share_param = {
+        share_title : title,
+        share_string : share_str,
+        share_img_url: encodeURIComponent(share_img),
+        share_url: encodeURIComponent(share_url)
+    };
+    os_proxy({
+        android: function(){
+            share_param.share_img_url = share_img;
+            share_param.share_url = share_url;
+            window.jsapi.doShare(JSON.stringify(share_param));
+        },
+        ios: function(){
+            window.location.href = 'http://callclient?method=doShare&param=' + JSON.stringify(share_param);
+        }
+    });
+}
+//退出webview
+function exit_webview(){
+    os_proxy({
+        android: function(){
+            window.jsapi.exitWebView();
+        },
+        ios: function(){
+            var url = 'http://callclient?method=exitWebView';
+            window.location.href = url;
+        }
+    });
+}
+//跳转到登录页面
+function go_login(){
+    os_proxy({
+        android: function(){
+            window.jsapi.goLogin('{"callback":"notifyGetUserInfo"}');
+        },
+        ios: function(){
+            var url = 'http://callclient?method=goLogin';
+            url += '&callback=notifyGetUserInfo';
+            window.location.href = url;
+        }
+    });
+}
+
+//打开/关闭IOS的左滑返回
+function switch_pop_gesture(flag){
+    os_proxy({
+        ios: function(){
+            var url = 'http://callclient?method=switchPopGesture';
+            url += '&param={"enable":'+flag+'}';
+            window.location.href = url;
+        }
+    });
+}
+
+var user_id = 0;
+var user_info = null;
+var osVersion = '';
+var deviceId = '';
+var app_version = '2.0';
+
+$(function(){
+    //get_user_info();
+})

+ 56 - 0
www/js/www/type_selector.js

@@ -0,0 +1,56 @@
+;
+(function ($) {
+    var defaults = {
+        onselected:function(value){console.log(value);},
+        value:{}    //初始化的选项信息
+    };
+
+    var options = null;
+    var privateVal = {
+        time:9527
+    }
+
+    var privateFunction = {
+        createDom:function(){
+            privateVal.time = new Date().getTime();
+            var _html = '<input type="hidden" name="'+options.input_name+'" />\
+                        <div>\
+                            <div style="float: left;margin-right: 10px;"><input id="serviceType'+privateVal.time+'" style="margin-right: 10px;" /></div><div style="float: left;"><input id="group_'+privateVal.time+'" style="margin-right: 10px;" /></div><div style="clear: both;"></div>\
+                        </div>';
+            $('#'+options.container).html(_html);
+        },
+        initCombobox:function(){
+            var cat = $('#serviceType'+privateVal.time).combobox({
+                url:site_root+'/index.php?r=serviceType/all',
+                editable:false,
+                valueField:'type',
+                textField:'type',
+               
+            });
+            
+        }
+    }
+
+    var methods = {
+        init: function(args) {
+            options = $.extend(defaults, args);
+            privateFunction.createDom();
+            privateFunction.initCombobox();
+            
+        }
+    };
+
+    $.fn.group_selector = function() {
+        var method = arguments[0];
+        if(methods[method]) {
+            method = methods[method];
+        } else if( typeof(method) == 'object' || !method ) {
+            method = methods.init;
+        } else {
+            return this;
+        }
+        var args = arguments[1];
+        return method.call(this,args);
+    }
+
+})(jQuery);

+ 156 - 0
www/protected/commands/HourlyWorkCommand.php

@@ -0,0 +1,156 @@
+<?php
+require_once(APP_PATH."/protected/vendors/tencent/XingeApp.php");
+class HourlyWorkCommand extends CConsoleCommand{
+    public function run($args) {
+        error_reporting(E_ERROR);
+        ini_set('memory_limit', '256M');
+        set_time_limit(0);
+
+
+        //用户活跃度异步任务
+        $list = new ARedisList('user_active_list');
+        while ($list->getCount() > 0) {
+            $key = $list->pop();
+            try {
+                Service::factory('LevelService')->addActive($key);
+            } catch (Exception $e) {
+                continue;
+            }
+        }
+
+        $end_time = time();
+        $start_time = $end_time - 3600*2;
+        $criteria = new EMongoCriteria();
+        $criteria->time('>=',$start_time);
+        $criteria->time('<',$end_time);
+        $cursor = Topic::model()->findAll($criteria);
+        $i=1;
+        $docs_to_upload = array();
+        foreach ($cursor as $topic) {
+            $i++;
+            if($i%200 == 0){
+                $result = Service::factory('SearchService')->addTopic($docs_to_upload);
+                var_dump($result);
+                sleep(3);
+                $docs_to_upload = array();
+            }
+            $item = array();
+            $item['cmd'] = 'update';
+            //添加文档内容
+            $item["fields"] = array(
+                                    'id'=>(string)$topic->_id,
+                                    "content" => $topic->content,
+                                    "search_rank" => $topic->search_rank,
+                                    'status'=>$topic->status,
+                                    'time'=>$topic->time
+                                );
+            $docs_to_upload[] = $item;
+        }
+        if(!empty($docs_to_upload)){
+            $result = Service::factory('SearchService')->addTopic($docs_to_upload);
+            var_dump($result);
+        }
+        $docs_to_upload = array();
+        echo "end_topic:";
+
+        $end_time = time();
+        $start_time = $end_time - 3600*2;
+        $criteria = new EMongoCriteria();
+        $criteria->time('>=',$start_time);
+        $criteria->time('<',$end_time);
+        $cursor = Post::model()->findAll($criteria);
+        $i=1;
+        $docs_to_upload = array();
+        foreach ($cursor as $post) {
+            $i++;
+            if($i%200 == 0){
+                $result = Service::factory('SearchService')->addPost($docs_to_upload);
+                var_dump($result);
+                sleep(3);
+                $docs_to_upload = array();
+            }
+            $item = array();
+            $item['cmd'] = 'update';
+            //添加文档内容
+            $item["fields"] = array(
+                                    'id'=>(string)$post->_id,
+                                    "content" => $post->content,
+                                    'time'=>$post->time,
+                                    'status'=>$post->status,
+                                );
+            $docs_to_upload[] = $item;
+        }
+        if(!empty($docs_to_upload)){
+            $result = Service::factory('SearchService')->addPost($docs_to_upload);
+        }
+        $docs_to_upload = array();
+        echo "end_post:";
+        var_dump($result);
+
+        $criteria = new EMongoCriteria();
+        $start_time = $end_time - 3600*2;
+        $criteria->register_time('>=',$start_time);
+        $criteria->register_time('<',$end_time);
+        $cursor = RUser::model()->findAll($criteria);
+        $i=1;
+        $docs_to_upload = array();
+        foreach ($cursor as $user) {
+            $i++;
+            if($i%100 == 0){
+                $result = Service::factory('SearchService')->addUser($docs_to_upload);
+                var_dump($result);
+                sleep(3);
+                $docs_to_upload = array();
+            }
+            $item = array();
+            $item['cmd'] = 'ADD';
+            //添加文档内容
+            $item["fields"] = array(
+                                    'id'=>(string)$user->_id,
+                                    "user_name" => $user->user_name,
+                                    "status" => $user->status,
+                                );
+            $docs_to_upload[] = $item;
+        }
+        if(!empty($docs_to_upload)){
+            $result = Service::factory('SearchService')->addUser($docs_to_upload);
+        }
+        $docs_to_upload = array();
+        echo "end_user:";
+        var_dump($result);
+
+        //用户信息更新,每小时更新
+        $list = new ARedisList('user_info_update');
+        while ($list->getCount() > 0) {
+            $res = $list->pop();
+            $syncData = unserialize($res);
+            try {
+                $user_obj = RUser::get(new MongoId($syncData['user_id']));
+                $user_obj->app_client_id = $syncData['app_client_id'];
+                $user_obj->device_id = $syncData['device_id'];
+                $user_obj->channel = $syncData['channel'];
+                $user_obj->app_version = $syncData['app_version'];
+                $user_obj->phone_type = $syncData['phone_type'];
+                $user_obj->os_version = $syncData['os_version'];
+                $user_obj->last_visit_time = $syncData['last_visit_time'];
+                $user_obj->update(array('last_visit_time','app_version','app_client_id','device_id','channel','phone_type','os_version'),true);
+                    $getui = Service::factory('PushService');
+                    $cids = $getui->queryCID($syncData['user_id']);
+                    if($cids){
+                        $tags = [];
+                        foreach ($cids as $cid){
+                            $res = $getui->getCidTags($cid);
+                            $new_tags = preg_replace('/\d+(\.\d+){0,2}/',$syncData['app_version'],$res);
+                            $new_tags = explode(' ',$new_tags);
+                            $res = $getui->setTag($cid,$new_tags);
+                            var_dump($res);
+                        }
+                    }
+            } catch (Exception $e) {
+                continue;
+            }
+        }
+        
+
+    }
+}

+ 35 - 0
www/protected/commands/PushListenerCommand.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * 消息推送监听脚本
+ * @author   >
+ */
+class PushListenerCommand extends CConsoleCommand{
+    public function run($args) {
+        error_reporting(E_ERROR);
+        ini_set('memory_limit', '512M');
+        ignore_user_abort(true);
+        set_time_limit(0);
+        $time_H = time();
+        while (true) {
+            sleep(2);
+            $time = time();
+            if($time - $time_H > 3600){
+                exit();
+            }
+            //信鸽消息推送队列,
+            $list = new ARedisList('xinge_push');
+            $z_push = new ZPush();
+            echo $list->getCount();
+            while ($list->getCount() > 0) {
+                try {
+                    $res = $list->pop();
+                    $data = unserialize($res);
+                    $result = $z_push->PushSingleAccountIOS($data['ios_data']);
+                    $result2 = $z_push->PushSingleAccountAndroid($data['android_data']); 
+                } catch (Exception $e) {
+                    continue;
+                }
+            }
+        }
+    }
+}

+ 20 - 59
www/protected/modules/moonclub/controllers/AdvisoryController.php → www/protected/modules/moonclub/controllers/ReserveController.php

@@ -6,12 +6,12 @@
  * Date: 2016/11/9
  * Time: 17:55
  */
-class AdvisoryController extends MoonClubBaseController
+class ReserveController extends MoonClubBaseController
 {
 
 	public function actionIndex()
 	{
-		$status_option = CommonFn::getComboboxData(Advisory::$status_option, 1, true, 100);
+		$status_option = CommonFn::getComboboxData(Reserve::$status_option, 1, true, 100);
 		$this->render('index', [
 			'status_option' => $status_option
 		]);
@@ -35,9 +35,9 @@ class AdvisoryController extends MoonClubBaseController
 			$criteria->status('==', $status);
 		}
 
-		$cursor = Advisory::model()->findAll($criteria);
+		$cursor = Reserve::model()->findAll($criteria);
 		$rows = CommonFn::getRowsFromCursor($cursor);
-		$parsedRows = Advisory::model()->parse($rows);
+		$parsedRows = Reserve::model()->parse($rows);
 		$total = $cursor->count();
 
 		echo CommonFn::composeDatagridData($parsedRows, $total);
@@ -54,49 +54,16 @@ class AdvisoryController extends MoonClubBaseController
 		if ($status == 100) {
 			CommonFn::requestAjax(false, '请选择状态');
 		}
-		$advisory = Advisory::model()->get(new MongoId($id));
-		$advisory->status = $status;
-		$success = $advisory->save();
+        $reserve = Reserve::model()->get(new MongoId($id));
+        $reserve->status = $status;
+		$success = $reserve->save();
 		if ($success) {
 			CommonFn::requestAjax(true, '修改成功');
 		}
 
 	}
-
-
-	//名宿保洁
-	public function actionSinglesDay()
-	{
-
-		$name = Yii::app()->request->getParam('user_name', '');
-		$area = str_replace('string:', "", Yii::app()->request->getParam('area', ''));
-		$homeType = str_replace('string:', "", Yii::app()->request->getParam('homeType', ''));
-		$num = str_replace('string:', "", Yii::app()->request->getParam('num', ''));
-		$mobile = Yii::app()->request->getParam('mobile');
-		$tech_content = Yii::app()->request->getParam('tech_content', '');
-		if ($name) {
-			$advisory = new Advisory();
-			$advisory->user_name = $name;
-			$advisory->area = $area;
-			$advisory->homeType = $homeType;
-			$advisory->mobile = $mobile;
-			$advisory->num = $num;
-			$advisory->area = $area;
-			$advisory->type = '名宿保洁';
-			$advisory->time = time();
-			$advisory->status = 1;
-			$advisory->tech_content = $tech_content;
-			if ($advisory->save()) {
-				echo '您的咨询已发送成功,请等待我们的管家与您联系,温馨提示,一般是一个工作日内,日间致电给您,请留意。';
-				exit;
-			}
-		}
-
-		$this->render('SinglesDay');
-	}
-
 	//企业服务
-	public function actionEnterprise()
+	public function actionMonth()
 	{
 		$name = Yii::app()->request->getParam('user_name', '');
 		$area = str_replace('string:', "", Yii::app()->request->getParam('area', ''));
@@ -105,23 +72,21 @@ class AdvisoryController extends MoonClubBaseController
 		$mobile = Yii::app()->request->getParam('mobile');
 		$tech_content = str_replace('string:', "", Yii::app()->request->getParam('tech_content', ''));
 		if ($name) {
-			$advisory = new Advisory();
-			$advisory->user_name = $name;
-			$advisory->area = $area;
-			$advisory->homeType = $homeType;
-			$advisory->mobile = $mobile;
-			$advisory->num = $num;
-			$advisory->area = $area;
-			$advisory->time = time();
-			$advisory->type = '企业服务';
-			$advisory->status = 1;
-			$advisory->tech_content = $tech_content;
-			if ($advisory->save()) {
+			$reserve = new Reserve();
+			$reserve->user_name = $name;//名字
+			$reserve->homeType = $homeType;//套餐类型
+			$reserve->mobile = $mobile;//手机号
+			$reserve->num = $num;//预产期
+			$reserve->time = time();//预约时间
+			$reserve->type = '月子会所';
+			$reserve->status = 1;
+			$reserve->tech_content = $tech_content;
+			if ($reserve->save()) {
 				echo '您的咨询已发送成功,请等待我们的管家与您联系,温馨提示,一般是一个工作日内,日间致电给您,请留意。';
 				exit;
 			}
 		}
-		$this->render('enterprise');
+		$this->render('month');
 	}
 
 	//享月会联系
@@ -129,11 +94,7 @@ class AdvisoryController extends MoonClubBaseController
 	{
 		$this->render('xyhIm');
 	}
-//享月会联系
-	public function actionMonth()
-	{
-		$this->render('month');
-	}
+
 
 	//联系壹管家
 	public function actionIm()

+ 18 - 14
www/protected/modules/moonclub/controllers/WebController.php

@@ -13,14 +13,14 @@ class WebController extends MoonClubBaseController {
         if($code && $state){
             $accessInfo = CommonWeixin::getAccessInfo1($code);
             $userId = '';
-            if (!isset($accessInfo['errcode']) && $state == 'xiangyuehui') {
+            if (!isset($accessInfo['errcode']) && $state == 'yiguanjia') {
                 $appToken = md5(substr($accessInfo['openid'],2));
                 //微信校验通过,登录(注册),分发token
                 $userInfo = CommonWeixin::getUserInfo($accessInfo['access_token'], $accessInfo['openid']);
                 if (!isset($accessInfo['errcode'])) {
                     //检查是否有注册,没有就注册
                     $criteria = new EMongoCriteria();
-                    $criteria->unionid('==', $accessInfo['unionid']);
+                    $criteria->openid('==', $accessInfo['openid']);
                     $user = RUser::model()->find($criteria);
                     if ($user) {
                         $userId = $user->_id;
@@ -34,7 +34,6 @@ class WebController extends MoonClubBaseController {
                         $userAr->user_name = $userInfo['nickname'];
                         $userAr->avatar = $userInfo['headimgurl'];
                         $userAr->wx_pub_openid = $userInfo['openid'];
-                        $userAr->unionid = $userInfo['unionid'];
                         $userAr->sex = $userInfo['sex'];
                         $userAr->register_time = time();
                         $userAr->channel = 'wxpub';
@@ -66,10 +65,11 @@ class WebController extends MoonClubBaseController {
                     die();
                 }
             }
+            $userId = '1234';
 
         }
-
         if($home_page){
+
             $this->renderpartial($home_page.'Index', array(
                 'version' => '2015082505',
                 'debug' => 'false',
@@ -78,6 +78,13 @@ class WebController extends MoonClubBaseController {
                 'appToken' => $appToken,
             ));
         }else{
+            /* var_dump(array(
+                     'version' => '2015111601',
+                     'debug' => 'false',
+                     'signPackage' => $signPackage,
+                     'userId' => $userId,
+                     'appToken' => $appToken,
+             ));exit;*/
 
             $this->renderpartial('index', array(
                 'version' => '2015111601',
@@ -93,22 +100,19 @@ class WebController extends MoonClubBaseController {
     public function actionWxIndex() {
         $wxConfig = Yii::app()->params['xyhWxConfig'];
         $home_page = Yii::app()->getRequest()->getParam("home_page",'');
-        $redirectURI = 'http://' . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . '/moonclub/web/index';
+        $redirectURI = 'http://' . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . '/index.php?r=/moonclub/web/index';
         if($home_page){
-            $appURI = Yii::app()->request->baseUrl . 'index.php?r=/moonclub/web/index&home_page='.$home_page;
-            $redirectURI = $redirectURI.'/index.php?r='.$home_page;
+            $appURI = Yii::app()->request->baseUrl . '/moonclub/web/index'.'&home_page='.$home_page;
+            $redirectURI = $redirectURI.'/'.$home_page;
         }else{
-            $appURI = Yii::app()->request->baseUrl . 'index.php?r=/moonclub/web/index';
+            $appURI = Yii::app()->request->baseUrl . '/moonclub/web/index';
         }
-        var_dump($appURI);
-
         $scope = 'snsapi_userinfo';
-        $state = 'xiangyuehui';
+        $state = 'yiguanjia';
         $codeURI = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wxConfig['appId'] . '&redirect_uri=' . urlencode($redirectURI) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
-        var_dump($codeURI);
         $this->renderpartial('wxIndex', array(
-              'codeURI' => $codeURI,
-              'appURI' => $appURI
+            'codeURI' => $codeURI,
+            'appURI' => $appURI
         ));
     }
 

+ 2 - 2
www/protected/modules/moonclub/models/Advisory.php → www/protected/modules/moonclub/models/Reserve.php

@@ -6,7 +6,7 @@
  * Time: 17:05
  * 咨询模型
  */
-class Advisory extends MongoAr{
+class Reserve extends MongoAr{
     public $_id;
     public $user_name;
     public $mobile;
@@ -36,7 +36,7 @@ class Advisory extends MongoAr{
 
     public function getCollectionName()
     {
-        return 'advisory';
+        return 'reserve';
     }
 
     public static function get($_id) {

+ 0 - 229
www/protected/modules/moonclub/views/advisory/SinglesDay.php

@@ -1,229 +0,0 @@
-<!DOCTYPE html>
-<!--HTML5 doctype-->
-<html ng-app="myapp">
-<head>
-  <title>壹管家</title>
-  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-  <meta name="viewport"
-        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
-  <meta name="apple-mobile-web-app-capable" content="yes">
-  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
-  <meta http-equiv="Pragma" content="no-cache">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <!--引入css文件-->
-  <link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/webapp/common/css/common.css">
-  <link rel="stylesheet" href=" <?php echo Yii::app()->request->baseUrl; ?>/css/bootstrap-3.3.7.min.css">
-  <!--引入js文件-->
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery-3.1.1.min.js"></script>
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/AngularJS v1.4.3.min.js"></script>
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/bootstrap-3.3.7.min.js"></script>
-  <!--修改title-->
-  <script>
-    $(function () {
-      document.title = "壹管家";
-    })
-  </script>
-</head>
-<body ng-controller="myctrl">
-<div class="">
-  <form action="" method='post'
-        class="container  form-horizontal  ng-valid ng-dirty ng-valid-parse" id='singlesDay'
-        style="margin-bottom: 15%; ">
-    <div class="container">
-      <!--姓名-->
-      <div class="form-group">
-        <label>姓名:</label>
-        <input type="text" name='user_name' class="form-control username" placeholder="请输入您的姓名" ng-model="username">
-      </div>
-      <!--选择区域-->
-      <div class="form-group">
-        <label>选择区域:</label>
-        <select name="area" onchange="theforever(this.value)" class="form-control" ng-model="Area"
-                ng-init="Area=AreaList[0].id"
-                ng-options="info.name as info.name for info in AreaList" id="">
-          <option value="">--请选择--</option>
-        </select>
-      </div>
-      <!--房型-->
-      <div class="form-group">
-        <label>选择房型:</label>
-        <select name="homeType" onchange="theforever(this.value)" class="form-control" ng-model="Type"
-                ng-init="Type=TypeList[0].id"
-                ng-options="type.name as type.name for type in TypeList" id="">
-          <option value="">--请选择--</option>
-        </select>
-      </div>
-      <!--房源套数-->
-      <div class="form-group">
-        <label>选择房源套数:</label>
-        <select name="num" onchange="theforever(this.value)" class="form-control" ng-model="Num"
-                ng-init="Num=NumList[0].id"
-                ng-options="num.name as num.name for num in NumList" id="">
-          <option value="">--请选择--</option>
-        </select>
-      </div>
-      <!--手机号码-->
-      <div class="form-group">
-        <label>手机号码:</label>
-        <input type="text" name="mobile" class="form-control"
-               placeholder="请输入您的手机号码" ng-model="phone"/>
-      </div>
-      <!--性别-->
-      <div class="form-group">
-        <div style="display: inline-block;max-width: 100%;margin-bottom: 5px;font-weight: 700;">性别:</div>
-        <div>
-          <label class="radio-inline">
-            <input type="radio" name="sex" value="先生" ng-model="sex">先生
-          </label>
-          <label class="radio-inline">
-            <input type="radio" name="sex" value="女士" ng-model="sex">女士
-          </label>
-        </div>
-      </div>
-      <!--按钮-->
-      <div class="form-group">
-        <a id="SinglesDayBtn"
-          style="background: rgb(42,36,0);color:rgb(178,143,0);border: 0"
-          class="btn btn-success col-xs-12"
-          data-container="body"
-          data-toggle="popover"
-          data-placement="top"
-          data-content="{{btnContent}}">
-          提交
-        </a>
-      </div>
-    </div>
-  </form>
-</div>
-<div class="prevent-scroll">
-  <div class="box my-action">
-    <!--首页-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-my-order" href="/index.php?r=o2o/web/index#">
-          <div class="logo logo-my-order" style="margin-bottom: 5px;"></div>
-          <div class="name">首页</div>
-        </a>
-      </div>
-    </div>
-    <!--LOGO-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-logo" href="/index.php?r=o2o/advisory/im">
-          <div class="logo logo-my-logo"></div>
-        </a>
-      </div>
-    </div>
-    <!--我的-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-coupon">
-          <div class="logo logo-coupon" style="margin-bottom: 5px;"></div>
-          <div class="name">我的</div>
-        </a>
-      </div>
-    </div>
-  </div>
-</div>
-<!--模态框-->
-<div class="model" style="width: 100%;position: fixed;top: 0;background: rgba(0,0,0,0.4)">
-  <!--错误提示容器-->
-  <div class="model-box"
-       style="border-radius: 10px;height:130px;display:none;width: 70%;background: #fff;margin: 0 auto;top:25%;left:15%;position: fixed;">
-    <div class="model-title"
-         style="font-family: '微软雅黑', 'Microsoft YaHei', 'STHeiti Light';width: 100%;text-align: center;font-size: 1.1rem;margin-top: 5%;"></div>
-    <div class="model-content"
-         style="font-family: '微软雅黑', 'Microsoft YaHei', 'STHeiti Light';margin: 0 auto;width: 80%;background: rgb(42,36,0);color:rgb(178,143,0);font-size: 1.3rem;margin-top: 30px;text-align: center;padding: 5px 0 5px 0"></div>
-  </div>
-</div>
-</body>
-</html>
-<script>
-  var myapp = angular.module('myapp', []);
-  myapp.controller('myctrl', ['$scope', function ($scope) {
-    $('.model-content').on('click', function () {
-      if ($('.model-content').html() == '返回首页') {
-        window.location.href = '/index.php?r=o2o/web/index';
-      } else {
-        $('.model').css('height', '0');
-        $('.model-box').css('display', 'none');
-      }
-    });
-    /*表单提交进行判断*/
-    $('#SinglesDayBtn').on('click', function () {
-        /*姓名是否为空*/
-        if ($scope.username == undefined) {
-          model('请重填', '确认您的姓名');
-          return false;
-        }
-
-
-
-        /*验证手机号码*/
-        if (!(/^1[34578]\d{9}$/.test($scope.phone)) || $scope.phone == 0) {
-          model('请重填', '手机号码有误');
-          return false;
-        }
-        /*性别*/
-        if ($scope.sex == undefined) {
-          model('请重新选择', '确认');
-          return false;
-        }
-        /*model*/
-        $.ajax({
-          url: 'index.php?r=o2o/Advisory/SinglesDay',
-          type: 'POST',
-          dataType: 'html',
-          data: $('#singlesDay').serialize(),
-          success: function (message) {
-            model(message,'返回首页');
-
-          },
-          error: function (message) {
-            model('标题', '咨询失败');
-          }
-
-
-        });
-
-        function model(title, content) {
-          $('.model-box').css('display', 'inline');
-          $('.model').height(window.screen.height);
-          $('.model-title').html(title);
-          $('.model-content').html(content);
-        }
-      }
-    );
-
-    $scope.AreaList = [
-      {'id': 1, 'name': '跨多个区', 'parent': 1, type: '2'},
-      {'id': 2, 'name': '黄浦区', 'parent': 1, type: '2'},
-      {'id': 3, 'name': '徐汇区', 'parent': 1, type: '2'},
-      {'id': 4, 'name': '长宁区', 'parent': 1, type: '2'},
-      {'id': 5, 'name': '静安区', 'parent': 1, type: '2'},
-      {'id': 6, 'name': '普陀区', 'parent': 1, type: '2'},
-      {'id': 7, 'name': '虹口区', 'parent': 1, type: '2'},
-      {'id': 8, 'name': '杨浦区', 'parent': 1, type: '2'},
-      {'id': 9, 'name': '闵行区', 'parent': 1, type: '2'},
-      {'id': 10, 'name': '宝山区', 'parent': 1, type: '2'},
-      {'id': 11, 'name': '嘉定区', 'parent': 1, type: '2'},
-      {'id': 12, 'name': '浦东新区', 'parent': 1, type: '2'},
-      {'id': 13, 'name': '金山区', 'parent': 1, type: '2'},
-      {'id': 14, 'name': '松江区', 'parent': 1, type: '2'},
-      {'id': 15, 'name': '青浦区', 'parent': 1, type: '2'},
-      {'id': 16, 'name': '奉贤区', 'parent': 1, type: '2'}
-    ];
-    $scope.TypeList = [
-      {'id': 1, 'name': '一户室', 'parent': 1, type: '3'},
-      {'id': 2, 'name': '两户室', 'parent': 1, type: '3'},
-      {'id': 3, 'name': '三户及以上', 'parent': 1, type: '3'},
-      {'id': 4, 'name': '单间', 'parent': 1, type: '3'},
-      {'id': 5, 'name': '多套多房型', 'parent': 1, type: '3'},
-    ];
-    $scope.NumList = [
-      {'id': 1, 'name': '整房三套以下', 'parent': 1, type: '4'},
-      {'id': 2, 'name': '整房三套以上', 'parent': 1, type: '4'},
-      {'id': 3, 'name': '多套单间', 'parent': 1, type: '4'}
-    ]
-  }])
-</script>

+ 0 - 219
www/protected/modules/moonclub/views/advisory/enterprise.php

@@ -1,219 +0,0 @@
-<!DOCTYPE html>
-<!--HTML5 doctype-->
-<html ng-app="myapp">
-<head>
-  <title>壹管家</title>
-  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-  <meta name="viewport"
-        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
-  <meta name="apple-mobile-web-app-capable" content="yes">
-  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
-  <meta http-equiv="Pragma" content="no-cache">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <!--引入css文件-->
-  <link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/webapp/common/css/common.css">
-  <link rel="stylesheet" href=" <?php echo Yii::app()->request->baseUrl; ?>/css/bootstrap-3.3.7.min.css">
-  <!--引入js文件-->
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery-3.1.1.min.js"></script>
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/bootstrap-3.3.7.min.js"></script>
-  <!--修改title-->
-  <script>
-    $(function () {
-      document.title = "壹管家";
-    })
-  </script>
-</head>
-<body ng-controller="myctrl">
-<div class="container" style="margin-top: 2rem">
-  <form action="" method='post'
-        class="container  form-horizontal  ng-valid ng-dirty ng-valid-parse" id='enterprise'
-        style="margin-bottom: 15%; ">
-      <!--姓名-->
-      <div class="form-group">
-        <label>姓名:</label>
-        <input type="text" name='user_name' class="form-control username" placeholder="请输入您的姓名" ng-model="username">
-      </div>
-      <!--选择区域-->
-      <div class="form-group">
-        <label>选择区域:</label>
-        <select name="area" class="form-control" ng-model="Area" ng-init="Area=AreaList[0].id"
-                ng-options="info.name as info.name for info in AreaList" id="">
-          <option value="">--请选择--</option>
-        </select>
-      </div>
-      <!--房型-->
-      <div class="form-group">
-        <label>选择服务:</label>
-        <select name="tech_content" class="form-control" ng-model="AechContent" ng-init="AechContent=AechContentList[0].id"
-                ng-options="type.name as type.name for type in AechContentList" id="">
-          <option value="">--请选择--</option>
-        </select>
-      </div>
-
-      <!--手机号码-->
-      <div class="form-group">
-        <label>手机号码:</label>
-        <input type="text" name="mobile" class="form-control"
-               placeholder="请输入您的手机号码" ng-model="phone"/>
-      </div>
-      <!--性别-->
-      <div class="form-group">
-        <div style="display: inline-block;max-width: 100%;margin-bottom: 5px;font-weight: 700;">性别:</div>
-        <div>
-          <label class="radio-inline">
-            <input type="radio" name="sex" value="先生" ng-model="sex">先生
-          </label>
-          <label class="radio-inline">
-            <input type="radio" name="sex" value="女士" ng-model="sex">女士
-          </label>
-        </div>
-      </div>
-      <!--按钮-->
-      <div class="form-group">
-        <a id="enterpriseBtn"
-            style="background: rgb(42,36,0);color:rgb(178,143,0);border: 0"
-            class="btn btn-success col-xs-12"
-            data-container="body"
-            data-toggle="popover"
-            data-placement="top"
-            data-content="{{btnContent}}">
-          提交
-        </a>
-      </div>
-    </div>
-  </form>
-</div>
-<div class="prevent-scroll">
-  <div class="box my-action">
-    <!--首页-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-my-order" href="/index.php?r=o2o/web/index">
-          <div class="logo logo-my-order" style="margin-bottom: 0.5rem;"></div>
-          <div class="name">首页</div>
-        </a>
-      </div>
-    </div>
-    <!--LOGO-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-logo" href="/index.php?r=o2o/advisory/im">
-          <div class="logo logo-my-logo"></div>
-        </a>
-      </div>
-    </div>
-    <!--我的-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-coupon">
-          <div class="logo logo-coupon"style="margin-bottom: 0.5rem;"></div>
-          <div class="name">我的</div>
-        </a>
-      </div>
-    </div>
-  </div>
-</div>
-<!--模态框-->
-<div class="model" style="width: 100%;position: fixed;top: 0;background: rgba(0,0,0,0.4)">
-  <!--错误提示容器-->
-  <div class="model-box"
-       style="border-radius: 10px;height:130px;display:none;width: 70%;background: #fff;margin: 0 auto;top:25%;left:15%;position: fixed;">
-    <div class="model-title"
-         style="font-family: '微软雅黑', 'Microsoft YaHei', 'STHeiti Light';width: 100%;text-align: center;font-size: 1.1rem;margin-top: 5%;"></div>
-    <div class="model-content"
-         style="font-family: '微软雅黑', 'Microsoft YaHei', 'STHeiti Light';margin: 0 auto;width: 80%;background: rgb(42,36,0);color:rgb(178,143,0);font-size: 1.3rem;margin-top: 30px;text-align: center;padding: 5px 0 5px 0"></div>
-  </div>
-</div>
-</body>
-</html>
-<script src="//cdn.bootcss.com/angular.js/1.4.3/angular.min.js"></script>
-<script>
-  var myapp = angular.module('myapp', []);
-  myapp.controller('myctrl', ['$scope', function ($scope) {
-    $('.model-content').on('click', function () {
-      if ($('.model-content').html() == '返回首页') {
-        window.location.href = '/index.php?r=o2o/web/index';
-      } else {
-        $('.model').css('height', '0');
-        $('.model-box').css('display', 'none');
-      }
-    });
-    /*表单提交进行判断*/
-    $('#enterpriseBtn').on('click', function () {
-
-          /*姓名是否为空*/
-          if ($scope.username == undefined) {
-            model('请重填', '确认您的姓名');
-            return false;
-          }
-          /*验证手机号码*/
-          if (!(/^1[34578]\d{9}$/.test($scope.phone)) || $scope.phone == 0) {
-            model('请重填', '手机号码有误');
-            return false;
-          }
-          /*性别*/
-          if ($scope.sex == undefined) {
-            model('请重新选择', '确认');
-            return false;
-          }
-          /*model*/
-
-          $.ajax({
-            url: 'index.php?r=o2o/Advisory/enterprise',
-            type: 'POST',
-            dataType: 'html',
-            data: $('#enterprise').serialize(),
-            success: function (message) {
-              model(message,'返回首页');
-
-            },
-            error: function (message) {
-              model('标题', '咨询失败');
-            }
-          });
-
-          function model(title, content) {
-            $('.model-box').css('display', 'inline');
-            $('.model').height(window.screen.height);
-            $('.model-title').html(title);
-            $('.model-content').html(content);
-          }
-        }
-    );
-
-    $scope.AreaList = [
-      {'id': 1, 'name': '跨多个区', 'parent': 1, type: '2'},
-      {'id': 2, 'name': '黄浦区', 'parent': 1, type: '2'},
-      {'id': 3, 'name': '徐汇区', 'parent': 1, type: '2'},
-      {'id': 4, 'name': '长宁区', 'parent': 1, type: '2'},
-      {'id': 5, 'name': '静安区', 'parent': 1, type: '2'},
-      {'id': 6, 'name': '普陀区', 'parent': 1, type: '2'},
-      {'id': 7, 'name': '虹口区', 'parent': 1, type: '2'},
-      {'id': 8, 'name': '杨浦区', 'parent': 1, type: '2'},
-      {'id': 9, 'name': '闵行区', 'parent': 1, type: '2'},
-      {'id': 10, 'name': '宝山区', 'parent': 1, type: '2'},
-      {'id': 11, 'name': '嘉定区', 'parent': 1, type: '2'},
-      {'id': 12, 'name': '浦东新区', 'parent': 1, type: '2'},
-      {'id': 13, 'name': '金山区', 'parent': 1, type: '2'},
-      {'id': 14, 'name': '松江区', 'parent': 1, type: '2'},
-      {'id': 15, 'name': '青浦区', 'parent': 1, type: '2'},
-      {'id': 16, 'name': '奉贤区', 'parent': 1, type: '2'}
-    ];
-    $scope.AechContentList=[
-      {'id': 1, 'name': '写字楼日常保洁', 'parent': 1, type: '3'},
-      {'id': 2, 'name': '展会日常保洁', 'parent': 1, type: '3'},
-      {'id': 3, 'name': '开荒保洁', 'parent': 1, type: '3'},
-      {'id': 4, 'name': '地毯清洁', 'parent': 1, type: '3'},
-      {'id': 5, 'name': '地板打蜡', 'parent': 1, type: '3'},
-      {'id': 6, 'name': '沙发清洗', 'parent': 1, type: '3'},
-      {'id': 7, 'name': '电器清洗', 'parent': 1, type: '3'},
-      {'id': 8, 'name': '玻璃清洗', 'parent': 1, type: '3'},
-      {'id': 9, 'name': '整体消毒', 'parent': 1, type: '3'},
-      {'id': 10, 'name': '电器消毒', 'parent': 1, type: '3'},
-      {'id': 11, 'name': '除尘除螨', 'parent': 1, type: '3'}
-    ];
-
-  }])
-
-
-</script>

+ 0 - 67
www/protected/modules/moonclub/views/advisory/im.php

@@ -1,67 +0,0 @@
-<!--/**
- * Created by PhpStorm.
- * User: Jinguo
- * Date: 2016/11/11
- * Time: 13:14
- */-->
-<!DOCTYPE html>
-<!--HTML5 doctype-->
-<html ng-app="myapp">
-<head>
-  <title>壹管家</title>
-  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-  <meta name="viewport"
-        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
-  <meta name="apple-mobile-web-app-capable" content="yes">
-  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
-  <meta http-equiv="Pragma" content="no-cache">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <!--引入css文件-->
-  <link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/webapp/common/css/common.css">
-  <link rel="stylesheet" href=" <?php echo Yii::app()->request->baseUrl; ?>/css/bootstrap-3.3.7.min.css">
-  <!--引入js文件-->
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery-3.1.1.min.js"></script>
-  <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/bootstrap-3.3.7.min.js"></script>
-  <!--修改title-->
-  <script>
-    $(function () {
-      document.title = "壹管家";
-	    $('img').height($(window).height());
-	    $('img').width($(window).width());
-    })
-  </script>
-</head>
-<body>
-  <img src="http://odulvej8l.bkt.clouddn.com/1110%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg" alt="联系我们" style="width: 100%;margin-top: -0.2rem">
-<div class="prevent-scroll">
-  <div class="box my-action">
-    <!--首页-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-my-order" href="/index.php?r=o2o/web/index">
-          <div class="logo logo-my-order" style="margin-bottom: 0.5rem;"></div>
-          <div class="name">首页</div>
-        </a>
-      </div>
-    </div>
-    <!--LOGO-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-logo" href="/index.php?r=o2o/advisory/im">
-          <div class="logo logo-my-logo"></div>
-        </a>
-      </div>
-    </div>
-    <!--我的-->
-    <div class="width-percent-33">
-      <div class="title-container-square">
-        <a class="btn-home-action btn-action-coupon">
-          <div class="logo logo-coupon"style="margin-bottom: 0.5rem;"></div>
-          <div class="name">我的</div>
-        </a>
-      </div>
-    </div>
-  </div>
-</div>
-</body>
-</html>

+ 0 - 343
www/protected/modules/moonclub/views/commision/index.php

@@ -1,343 +0,0 @@
-<style>
-    .f_label {width: 90px;}
-    .accordion-body {padding: 0;}
-</style>
-<div id="main">
-<div region="west" border="false" id="west_panel">
-    <table id="dg_content"></table>
-    <div id="tb_content">
-        <div class="tb_line">
-            <input id="search" style="120px" />
-            <span class="tb_label">类型: </span>
-            <input id="filter_type" />
-            <span class="tb_label">预约时间: </span>
-            <input id="filter_start" style="100px"/>
-            <span class="tb_label">至</span>
-            <input id="filter_end" style="100px"/>
-            <div class="right">
-                <a href="#" class='easyui-linkbutton' iconCls="icon-add" plain="true" onclick="add();return false;">新增</a>
-                <a href="#" class='easyui-linkbutton' iconCls="icon-search" plain="true" onclick="searchContent();return false;">查询</a>
-            </div>
-        </div>
-    </div>
-</div>
-<div region="center" border="false">
-<div class="easyui-layout detail_layout">
-<div data-options="region:'center'" class="detail_center">
-<div class="detail_main">
-    <form id="content_form">
-        <ul id="content_ul"></ul>
-    </form>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div style="display:none;">
-<div id="add_dialog" style="padding: 15px 0;">
-    <form id="add_form" method="post">
-        <ul>
-            <li class="f_item">
-                <div class="box">
-                    <div class="f_label">
-                        <span>时间:</span>
-                    </div>
-                    <div class="box_flex f_content">
-                        <input id="add_datetime" name="datetime" />
-                    </div>
-                </div>
-            </li>
-            <li class="f_item">
-                <div class="box">
-                    <div class="f_label">
-                        <span>选择保洁师:</span>
-                    </div>
-                    <div class="box_flex f_content">
-                        <input id="add_username" name="user_name" />
-                        <input id="add_userid" name="user" type="hidden" />
-                    </div>
-                </div>
-            </li>
-            <li class="f_item">
-                <div class="box">
-                    <div class="f_label">
-                        <span>订单ID:</span>
-                    </div>
-                    <div class="box_flex f_content">
-                        <input id="add_order" name="order" />
-                    </div>
-                </div>
-            </li>
-            <li class="f_item">
-                <div class="box">
-                    <div class="f_label">
-                        <span>提成数(元):</span>
-                    </div>
-                    <div class="box_flex f_content">
-                        <input id="add_commision" name="commision" />
-                    </div>
-                </div>
-            </li>
-        </ul>
-    </form>
-</div>
-</div>
-<script language="javascript" type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/coolautosuggest/jquery.coolautosuggest.js"></script>
-<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/js/coolautosuggest/jquery.coolautosuggest.css" />
-<script type="text/javascript">
-var jq_dg_content   = $('#dg_content');
-var w_width         = $(window).width();
-var w_height        = $(window).height();
-var jq_content_form = $('#content_form');
-var jq_filter_type  = $('#filter_type');
-var jq_search       = $('#search');
-var jq_filter_start = $('#filter_start');
-var jq_filter_end   = $('#filter_end');
-var jq_add_dialog   = $('#add_dialog');
-var jq_add_form     = $('#add_form');
-var jq_add_datetime = $('#add_datetime');
-var jq_add_username = $('#add_username');
-var type_option = <?php echo json_encode($type_option); ?>
-
-var module_router = site_root + '/index.php?r=o2o/commision';
-
-$(function() {
-    var p_width = parseInt(w_width / 2);
-    if (p_width < 520){
-        p_width = 520;
-    }
-    var d_width = p_width - 10;
-    $('#west_panel').css({width: p_width});
-    $('#main').css({width: w_width-25, height: w_height-18}).layout();
-
-    jq_filter_type.combobox({
-        editable: false,
-        width: 100,
-        data: type_option,
-        onSelect: function() {
-            searchContent();
-        }
-    });
-
-    jq_search.searchbox({
-        width: 150,
-        prompt: '订单ID、姓名、拼音',
-        searcher: function() {
-            searchContent();
-        }
-    });
-
-    jq_filter_start.datebox({
-        width: 100,
-        editable: false
-    });
-
-    jq_filter_end.datebox({
-        width: 100,
-        editable: false
-    });
-
-    jq_add_datetime.datetimebox({
-        showSeconds: false,
-        width: 150,
-        editable: true
-    });
-
-    // 内容表格
-    jq_dg_content.datagrid({
-        url: module_router + '/list',
-        title: '保洁师提成',
-        width: d_width,
-        height: w_height - 18,
-        fitColumns: true,
-        autoRowHeight: true,
-        striped: true,
-        toolbar: '#tb_content',
-        singleSelect: true,
-        selectOnCheck: false,
-        checkOnSelect: false,
-        pagination: true,
-        pageList: [20, 30, 50],
-        pageSize: 20,
-        nowrap: false,
-        idField: 'id',
-        sortName: 'booking_time',
-        sortOrder: 'desc',
-        queryParams: $.extend(get_param_obj(), {}),
-        frozenColumns:[],
-        columns: [
-            [
-                {field: 'id', titie:'id', hidden: true},
-                {field: 'time_str', title: '完成时间', width: 30},
-                {field: 'booking_time', title: '预约时间', width: 30, sortable: true,
-                    formatter: function(value, row, index) {
-                        return row['booking_time_str'];
-                    }
-                },
-                {field: 'user_str', title: '保洁师姓名', width: 25},
-                {field: 'commision', title: '提成数量(元)', width: 25},
-                {field: 'type_str', title: '类型', width: 25},
-                {field: 'order', title: '操作', width: 25,
-                    formatter: function(value, row, index) {
-                        if (row.type == 0) {
-                            var url = '\'<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=rOrder&id='+value+'\'';
-                            return '<a href="javascript:;" onclick="parent.load_url('+url+')">'+'查看订单'+'</a>';
-                        } else if (row.type == 1) {
-                            var url = '\'<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=appendOrders&id='+value+'\'';
-                            return '<a href="javascript:;" onclick="parent.load_url('+url+')">'+'查看订单'+'</a>';
-                        } else {
-                            return '';
-                        }
-                    }
-                }
-            ]
-        ],
-        onSelect: function(index, row) {
-
-        },
-        onLoadSuccess: function() {
-            $('#content_ul').empty();
-            if (jq_search.searchbox('getValue') && jq_filter_start.datebox('getValue') && jq_filter_end.datebox('getValue')) {
-                $.post(
-                    module_router + '/commisionCountOne',
-                    {
-                        search: jq_search.searchbox('getValue'),
-                        start: jq_filter_start.datebox('getValue'),
-                        end: jq_filter_end.datebox('getValue'),
-                        type: jq_filter_type.combobox('getValue')
-                    },
-                    function (res) {
-                        var data = $.parseJSON(res);
-                        for (key in data) {
-                            var _html  = '<li class="f_item"><div class="box"><div class="f_label">';
-                                _html += '<span>' + data[key]['type'] + '</span>';
-                                _html += '</div><div class="box_flex f_content">' + data[key]['sum'] + '</div>';
-                                _html += '</div></li>';
-                            $('#content_ul').append(_html);
-                        }
-                    }
-                );
-            }
-        }
-    });
-
-    // 新增提成表单
-    jq_add_form.form({
-        url: module_router + '/addCommision',
-        onSubmit: function(param) {
-            check = checkAddForm();
-            if (!check) {
-                return false;
-            } else {
-                $.messager.progress();
-            }
-        },
-        success: function(res) {
-            $.messager.progress('close');
-            var res = JSON.parse(res);
-
-            if (res.success){
-                jq_dg_content.datagrid('reload');
-            }
-            if(res.success){
-                $.messager.show({
-                    title: '提示',
-                    msg: '保存成功',
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-                jq_add_dialog.dialog('close');
-            }else{
-                $.messager.show({
-                    title: '提示',
-                    msg: res.message,
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            }
-        }
-    });
-
-    // 新增提成弹窗
-    jq_add_dialog.dialog({
-        title: '新增提成',
-        width: 400,
-        height: 280,
-        closed: true,
-        modal: true,
-        buttons:[{
-            text: '确认',
-            iconCls: 'icon-ok',
-            handler: function() {
-                jq_add_form.submit();
-            }
-        }, {
-            text: '取消',
-            iconCls: 'icon-cancel',
-            handler: function() {
-                jq_add_dialog.dialog('close');
-            }
-        }],
-        onOpen: function() {
-            jq_add_form.form('clear');
-            $('#suggestions_holder').remove();
-            jq_add_username.coolautosuggest({
-                url: 'index.php?r=material/selectUser&user=',
-                showDescription: true,
-                onSelected: function(result) {
-                    $('#add_userid').val(result.uid);
-                }
-            });
-        }
-    });
-});
-
-function add() {
-    jq_add_dialog.dialog('open');
-}
-
-function searchContent() {
-    var type_search    = jq_filter_type.combobox('getValue');
-    var search_content = jq_search.searchbox('getValue');
-    var filter_start   = jq_filter_start.datebox('getValue');
-    var filter_end     = jq_filter_end.datebox('getValue');
-
-    jq_dg_content.datagrid({
-        pageNum: 1,
-        queryParams: {
-            type: type_search,
-            search: search_content,
-            start: filter_start,
-            end: filter_end
-        }
-    });
-}
-
-function checkAddForm() {
-    var username = $('#add_username').val();
-    if (username.length == 0) {
-        $.messager.alert('提示', '请选择保洁师');
-        return false;
-    }
-
-    // var order = $('#add_order').val();
-    // if (order.length == 0) {
-    //     $.messager.alert('提示', '请输入普通订单/追加订单号');
-    //     return false;
-    // }
-
-    var commision = $('#add_commision').val();
-    if (commision.length == 0) {
-        $.messager.alert('提示', '请输入提成数');
-        return false;
-    }
-
-    var num_reg = new RegExp(/^[-\d]*\d*[\.]*\d*$/);
-    if (!num_reg.test(commision)) {
-        $.messager.alert('提示', '提成只能输入整数或带小数点的数字');
-        return false;
-    }
-
-    return true;
-}
-</script>

+ 0 - 31
www/protected/modules/moonclub/views/layouts/qyindex.php

@@ -1,31 +0,0 @@
-<!DOCTYPE>
-<html>
-<head>
-    <title></title>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
-    <!-- vue 框架 -->
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/vue.js"></script>
-    <!-- jquery 框架 -->
-    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
-    <!-- amaze 框架 -->
-    <link rel="stylesheet" type="text/css" href="http://cdn.amazeui.org/amazeui/2.5.0/css/amazeui.css">
-    <link rel="stylesheet" type="text/css" href="http://cdn.amazeui.org/amazeui/2.5.0/css/amazeui.min.css">
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.min.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.ie8polyfill.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.ie8polyfill.min.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.widgets.helper.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.widgets.helper.min.js"></script>
-    <!-- 自定义样式 -->
-    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/qywechat/style.css?v=20151215">
-    <!-- 插件 -->
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.vtable.js?v=20151215"></script>
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.valert.js?v=20160106"></script>
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.vloading.js?v=20151215"></script>
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.vselect.js?v=20151215"></script>
-</head>
-<body>
-<?php echo $content; ?>
-</body>
-</html>

+ 0 - 30
www/protected/modules/moonclub/views/layouts/qyinfo.php

@@ -1,30 +0,0 @@
-<!-- 企业号应用详情布局 -->
-<!DOCTYPE>
-<html>
-<head>
-    <title></title>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
-    <!-- vue 框架 -->
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/vue.js"></script>
-    <!-- jquery 框架 -->
-    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
-    <!-- amaze 框架 -->
-    <link rel="stylesheet" type="text/css" href="http://cdn.amazeui.org/amazeui/2.5.0/css/amazeui.css">
-    <link rel="stylesheet" type="text/css" href="http://cdn.amazeui.org/amazeui/2.5.0/css/amazeui.min.css">
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.min.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.ie8polyfill.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.ie8polyfill.min.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.widgets.helper.js"></script>
-    <script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.widgets.helper.min.js"></script>
-    <!-- 自定义样式 -->
-    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/qywechat/info.css?v=20160101">
-    <!-- 插件 -->
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.valert.js?v=20160106"></script>
-    <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qywechat/jquery.vloading.js?v=20160106"></script>
-</head>
-<body>
-<?php echo $content; ?>
-</body>
-</html>

+ 0 - 14
www/protected/modules/moonclub/views/layouts/techHomeLayout.php

@@ -1,14 +0,0 @@
-<!DOCTYPE>
-<html>
-<head>
-    <title></title>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
-    <link rel="stylesheet" href="http://cdn.amazeui.org/amazeui/2.5.0/css/amazeui.min.css">
-    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
-    <!-- <script src="http://cdn.amazeui.org/amazeui/2.5.0/js/amazeui.min.js"></script> -->
-</head>
-<body>
-<?php echo $content; ?>
-</body>
-</html>

+ 0 - 5
www/protected/modules/moonclub/views/myComment/error.php

@@ -1,5 +0,0 @@
-<script type="text/javascript">
-document.title = '错误';
-var message = <?php echo json_encode($msg); ?>;
-$.valert(message);
-</script>

+ 0 - 88
www/protected/modules/moonclub/views/myComment/index.php

@@ -1,88 +0,0 @@
-<div id="main">
-    <div id="head" class="layoutbox">
-        <div id="vselect"></div>
-    </div>
-    <div id="content" class="layoutbox" style="display: none;">
-        <div id="info" class="am-g">
-            <div class="am-u-sm-12 am-text-center am-text-default">
-                <span>该月共有&nbsp;{{count}}条评价</span>
-            </div>
-        </div>
-        <div id="vtable" style="margin-top: 2%;"></div>
-    </div>
-    <div id="footer"></div>
-</div>
-<script type="text/javascript">
-/* sessionStorage设置 */
-if (!sessionStorage.getItem('timelist_index_comment')) {
-    sessionStorage.setItem('timelist_index_comment', '0');
-    var timelist_index_comment = 0;
-} else {
-    timelist_index_str = sessionStorage.getItem('timelist_index_comment');
-    var timelist_index_comment = parseInt(timelist_index_str);
-}
-
-var username = <?php echo json_encode($username); ?>;
-document.title = '我的评价-'+username;
-/* 获取变量 */
-var userid = <?php echo json_encode($userid); ?>;
-var user = <?php echo json_encode($user); ?>;
-var timelist = <?php echo json_encode($timelist); ?>;
-var jq_vtable = $('#vtable');
-var jq_vselect = $('#vselect');
-
-jq_vselect.vselect({
-    options: timelist,
-    selected: timelist_index_comment,
-    onSelect: function(value, index) {
-        // 筛选列表
-        jq_vtable.vtable({
-            page: 1,
-            query: {
-                userid: userid,
-                start: value
-            }
-        });
-        // sessionStorage设置
-        sessionStorage.setItem('timelist_index_comment', index);
-    }
-});
-
-/* vtable插件 */
-jq_vtable.vtable({
-    url: '/index.php?r=o2o/myComment/list',
-    pagination: true,
-    rows: 30,
-    sort: 'time',
-    query: {
-        userid: userid,
-        start: timelist[jq_vselect.getVIndex()]['value']
-    },
-    columns: [
-        {key: 'time_str_short', name: '时间'},
-        {key: 'score', name: '评分'}
-    ],
-    beforeLoad: function() {
-        $.vloading('open');
-    },
-    onSelect: function(index, row) {
-        if (row.order == '') {
-            $.valert('订单信息未录入');
-        }
-        window.location.href = '/index.php?r=o2o/myComment/info&order='+row.order+'&user='+user;
-    },
-    afterLoad: function(data) {
-        $.vloading('close');
-        v_info.count = data.count;
-        $('#content').show();
-    }
-});
-
-/* 基本信息 */
-var v_info = new Vue({
-    el: '#info',
-    data: {
-        count: 0
-    }
-});
-</script>

+ 0 - 106
www/protected/modules/moonclub/views/myComment/info.php

@@ -1,106 +0,0 @@
-<div>
-    <div id="header">
-        <div class="am-g">
-            <div class="am-u-sm-12">
-                <div class="layoutbox">
-                    评价详情
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- 订单详情 -->
-    <div id="info">
-        <div class="am-popup-bd" id="info_content" style="display: none;">
-            <div class="am-g">
-                <div class="am-u-sm-4">预约时间</div>
-                <div class="am-u-sm-8">{{info.booking_time_str}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">客户姓名</div>
-                <div class="am-u-sm-8">{{info.address.name}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">地址</div>
-                <div class="am-u-sm-8">{{info.address.city}}&nbsp;{{info.address.area}}&nbsp;{{info.address.poi.name}}&nbsp;{{info.address.detail}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">客户电话</div>
-                <div class="am-u-sm-8"><a href="tel:{{info.address.mobile}}">{{info.address.mobile}}</a></div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">评价信息</div>
-                <div class="am-u-sm-8">{{info.comment}}</a></div>
-            </div>
-            <br>
-            <div class="am-g">
-                <div class="am-u-sm-4">产品</div>
-                <div class="am-u-sm-12">
-                    <ul class="am-list am-list-static am-list-border">
-                        <li v-for="product in info.products">
-                            名称:&nbsp;{{info.products[0].product.name}}<br>
-                            价格:&nbsp;{{info.products[0].product.price}}
-                        </li>
-                    </ul>
-                </div>
-            </div>
-            <div class="am-g" v-if="info.append_orders.length > 0">
-                <div class="am-u-sm-4">追加订单</div>
-                <div class="am-u-sm-12">
-                    <ul class="am-list am-list-static am-list-border">
-                        <li v-for="append in info.append_orders">
-                            <ul class="am-list am-list-static am-list-border">
-                                <li v-for="product in append.products">
-                                    服务:&nbsp;{{product.name}}<br>
-                                    价格:&nbsp;{{product.price}}
-                                </li>
-                            </ul>
-                        </li>
-                    </ul>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script type="text/javascript">
-document.title = '评价详情';
-var order = <?php echo json_encode($order); ?>;
-var user = <?php echo json_encode($user); ?>;
-
-var v_order = new Vue({
-    el: '#info',
-    data: {
-        info: []
-    }
-});
-
-$(function() {
-    getCommentInfo(order, user);
-});
-
-function getCommentInfo(order, user) {
-    // ID为空则弹窗提示
-    if (order.length == 0 || user.length == 0) {
-        $.valert('订单信息未录入');
-        return false;
-    }
-
-    $.vloading('open');
-    $.post(
-        '/index.php?r=o2o/o2oApp/getCommentInfo',
-        {
-            id : order,
-            user : user
-        },
-        function(res) {
-            $.vloading('close');
-            var data = $.parseJSON(res);
-            if (data.success == false) {
-                $.valert(data.msg);
-            } else {
-                v_order.info = data.content;
-                $('#info_content').show();
-            }
-        }
-    );
-}
-</script>

+ 0 - 5
www/protected/modules/moonclub/views/myCommision/error.php

@@ -1,5 +0,0 @@
-<script type="text/javascript">
-document.title = '错误';
-var message = <?php echo json_encode($msg); ?>;
-$.valert(message);
-</script>

+ 0 - 95
www/protected/modules/moonclub/views/myCommision/index.php

@@ -1,95 +0,0 @@
-<div id="main">
-    <div id="head" class="layoutbox">
-        <div id="vselect"></div>
-    </div>
-    <div id="content" class="layoutbox">
-        <div id="info" class="am-g">
-            <div class="am-u-sm-6 am-text-center am-text-default">
-                <span>完成单数&nbsp;{{count}}&nbsp;单</span>
-            </div>
-            <div class="am-u-sm-6 am-text-center am-text-default">
-                <span>总提成&nbsp;{{sum}}&nbsp;元</span>
-            </div>
-        </div>
-        <div id="vtable" style="margin-top: 2%;"></div>
-    </div>
-    <div id="footer" class="layoutbox"></div>
-</div>
-<script type="text/javascript">
-/* sessionStorage设置 */
-if (!sessionStorage.getItem('timelist_index_commision')) {
-    sessionStorage.setItem('timelist_index_commision', '0');
-    var timelist_index_commision = 0;
-} else {
-    timelist_index_str = sessionStorage.getItem('timelist_index_commision');
-    var timelist_index_commision = parseInt(timelist_index_str);
-}
-
-var username = <?php echo json_encode($username); ?>;
-document.title = '我的提成-'+username;
-/* 获取变量 */
-var userid = <?php echo json_encode($userid); ?>;
-var user = <?php echo json_encode($user); ?>;
-var timelist = <?php echo json_encode($timelist); ?>;
-var jq_vtable = $('#vtable');
-var jq_vselect = $('#vselect');
-
-jq_vselect.vselect({
-    options: timelist,
-    selected: timelist_index_commision,
-    onSelect: function(value, index) {
-        // 筛选列表
-        jq_vtable.vtable({
-            page: 1,
-            query: {
-                userid: userid,
-                start: value
-            }
-        });
-        // sessionStorage设置
-        sessionStorage.setItem('timelist_index_commision', index);
-    }
-});
-
-/* 基本信息 */
-var v_info = new Vue({
-    el: '#info',
-    data: {
-        count: 0,
-        sum: 0
-    }
-});
-
-/* vtable插件 */
-jq_vtable.vtable({
-    url: '/index.php?r=o2o/myCommision/list',
-    pagination: true,
-    rows: 30,
-    sort: 'time',
-    query: {
-        userid: userid,
-        start: timelist[jq_vselect.getVIndex()]['value']
-    },
-    columns: [
-        {key: 'booking_time_str', name: '预约时间'},
-        {key: 'commision', name: '提成'},
-        {key: 'type_str', name: '类型'}
-    ],
-    beforeLoad: function() {
-        $.vloading('open');
-    },
-    onSelect: function(index, row) {
-        var order = row.order;
-        if (order.length == 0 || (row.type != 0 && row.type != 1)) {
-            $.valert('订单信息未录入');
-        } else {
-            window.location.href = '/index.php?r=o2o/myCommision/info&order='+order+'&user='+user+'&type='+row.type;
-        }
-    },
-    afterLoad: function(data) {
-        $.vloading('close');
-        v_info.sum = data.sum;
-        v_info.count = data.count;
-    }
-});
-</script>

+ 0 - 83
www/protected/modules/moonclub/views/myCommision/info_append.php

@@ -1,83 +0,0 @@
-<div>
-    <div id="header">
-        <div class="am-g">
-            <div class="am-u-sm-12">
-                <div class="layoutbox">
-                    订单详情
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- 订单详情 -->
-    <div id="info">
-        <div class="am-popup-bd" id="info_content" style="display: none;">
-            <div class="am-g">
-                <div class="am-u-sm-4">追加时间</div>
-                <div class="am-u-sm-8">{{info.append_time_str}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">产品</div>
-                <div class="am-u-sm-12">
-                    <ul class="am-list am-list-static am-list-border">
-                        <li v-for="product in info.products">
-                            名称:&nbsp;{{product.name}}<br>
-                            价格:&nbsp;{{product.price}}
-                        </li>
-                    </ul>
-                </div>
-            </div>
-            <div class="am-g">
-                <button type="button" class="am-btn am-btn-warning am-radius" style="width:100%;"
-                onclick="getOrderInfo();">查看被追加的订单</button>
-                <input type="hidden" id="order" :value="info.order" />
-            </div>
-        </div>
-    </div>
-</div>
-<script type="text/javascript">
-document.title = '我的提成-详情';
-var order = <?php echo json_encode($order); ?>;
-var user = <?php echo json_encode($user); ?>;
-
-var v_order = new Vue({
-    el: '#info',
-    data: {
-        info: []
-    }
-});
-
-$(function() {
-    getCommisionInfo(order, user);
-});
-
-function getOrderInfo(order) {
-    var orderID = $('#order').val();
-    window.location.href = '/index.php?r=o2o/myCommision/info&order='+orderID+'&user='+user+'&type='+0;
-}
-
-function getCommisionInfo(order, user) {
-    if (order.length == 0 || user.length == 0) {
-        $.valert('订单信息未录入');
-        return false;
-    }
-
-    $.vloading('open');
-    $.post(
-        '/index.php?r=o2o/o2oApp/getAppendInfo',
-        {
-            id: order,
-            user: user
-        },
-        function(res) {
-            $.vloading('close');
-            var data = $.parseJSON(res);
-            if (data.success == false) {
-                $.valert(data.msg);
-            } else {
-                v_order.info = data.content;
-                $('#info_content').show();
-            }
-        }
-    );
-}
-</script>

+ 0 - 101
www/protected/modules/moonclub/views/myCommision/info_order.php

@@ -1,101 +0,0 @@
-<div>
-    <div id="header">
-        <div class="am-g">
-            <div class="am-u-sm-12">
-                <div class="layoutbox">
-                    订单详情
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- 订单详情 -->
-    <div id="info">
-        <div class="am-popup-bd" id="info_content" style="display: none;">
-            <div class="am-g">
-                <div class="am-u-sm-4">预约时间</div>
-                <div class="am-u-sm-8">{{info.booking_time_str}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">客户姓名</div>
-                <div class="am-u-sm-8">{{info.address.name}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">地址</div>
-                <div class="am-u-sm-8">{{info.address.city}}&nbsp;{{info.address.area}}&nbsp;{{info.address.poi.name}}&nbsp;{{info.address.detail}}</div>
-            </div>
-            <div class="am-g">
-                <div class="am-u-sm-4">客户电话</div>
-                <div class="am-u-sm-8"><a href="tel:{{info.address.mobile}}">{{info.address.mobile}}</a></div>
-            </div>
-            <br>
-            <div class="am-g">
-                <div class="am-u-sm-4">产品</div>
-                <div class="am-u-sm-12">
-                    <ul class="am-list am-list-static am-list-border">
-                        <li v-for="product in info.products">
-                            名称:&nbsp;{{info.products[0].product.name}}<br>
-                            价格:&nbsp;{{info.products[0].product.price}}
-                        </li>
-                    </ul>
-                </div>
-            </div>
-            <div class="am-g" v-if="info.append_orders.length > 0">
-                <div class="am-u-sm-4">追加订单</div>
-                <div class="am-u-sm-12">
-                    <ul class="am-list am-list-static am-list-border">
-                        <li v-for="append in info.append_orders">
-                            <ul class="am-list am-list-static am-list-border">
-                                <li v-for="product in append.products">
-                                    服务:&nbsp;{{product.name}}<br>
-                                    价格:&nbsp;{{product.price}}
-                                </li>
-                            </ul>
-                        </li>
-                    </ul>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script type="text/javascript">
-document.title = '我的提成-详情';
-var order = <?php echo json_encode($order); ?>;
-var user = <?php echo json_encode($user); ?>;
-
-var v_order = new Vue({
-    el: '#info',
-    data: {
-        info: []
-    }
-});
-
-$(function() {
-    getCommisionInfo(order, user);
-});
-
-function getCommisionInfo(order, user) {
-    if (order.length == 0 || user.length == 0) {
-        $.valert('订单信息未录入');
-        return false;
-    }
-
-    $.vloading('open');
-    $.post(
-        '/index.php?r=o2o/o2oApp/getOrderInfo',
-        {
-            id: order,
-            user: user
-        },
-        function(res) {
-            $.vloading('close');
-            var data = $.parseJSON(res);
-            if (data.success == false) {
-                $.valert(data.msg);
-            } else {
-                v_order.info = data.content;
-                $('#info_content').show();
-            }
-        }
-    );
-}
-</script>

+ 0 - 5
www/protected/modules/moonclub/views/myOrder/error.php

@@ -1,5 +0,0 @@
-<script type="text/javascript">
-document.title = '错误';
-var message = <?php echo json_encode($msg); ?>;
-$.valert(message);
-</script>

+ 0 - 88
www/protected/modules/moonclub/views/myOrder/index.php

@@ -1,88 +0,0 @@
-<div id="main">
-    <div id="head" class="layoutbox">
-        <div id="vselect"></div>
-    </div>
-    <div id="content" class="layoutbox">
-        <div id="info" class="am-g">
-            <div class="am-u-sm-12 am-text-center am-text-default">
-                <span>该月共有&nbsp;{{count}}个订单</span>
-            </div>
-        </div>
-        <div id="vtable" style="margin-top: 2%;"></div>
-    </div>
-    <div id="footer"></div>
-</div>
-<script type="text/javascript">
-/* sessionStorage设置 */
-if (!sessionStorage.getItem('timelist_index_order')) {
-    sessionStorage.setItem('timelist_index_order', '0');
-    var timelist_index_order = 0;
-} else {
-    timelist_index_str = sessionStorage.getItem('timelist_index_order');
-    var timelist_index_order = parseInt(timelist_index_str);
-}
-
-var username = <?php echo json_encode($username); ?>;
-document.title = '我的订单-'+username;
-/* 获取变量 */
-var userid = <?php echo json_encode($userid); ?>;
-var user = <?php echo json_encode($user); ?>;
-var timelist = <?php echo json_encode($timelist); ?>;
-var jq_vtable = $('#vtable');
-var jq_vselect = $('#vselect');
-
-jq_vselect.vselect({
-    options: timelist,
-    selected: timelist_index_order,
-    onSelect: function(value, index) {
-        // 筛选列表
-        jq_vtable.vtable({
-            page: 1,
-            query: {
-                userid: userid,
-                start: value
-            }
-        });
-        // sessionStorage设置
-        sessionStorage.setItem('timelist_index_order', index);
-    }
-});
-
-var v_info = new Vue({
-    el: '#info',
-    data: {
-        count: 0
-    }
-});
-
-/* vtable插件 */
-jq_vtable.vtable({
-    url: '/index.php?r=o2o/myOrder/list',
-    pagination: true,
-    rows: 30,
-    sort: 'booking_time',
-    query: {
-        userid: userid,
-        start: timelist[jq_vselect.getVIndex()]['value']
-    },
-    columns: [
-        {key: 'booking_time_str', name: '预约时间'},
-        {key: 'status_str', name: '状态'}
-    ],
-    beforeLoad: function() {
-        $.vloading('open');
-    },
-    onSelect: function(index, row) {
-        var order = row.id;
-        if (order.length == 0) {
-            $.valert('订单信息未录入');
-        } else {
-            window.location.href = '/index.php?r=o2o/myOrder/info&order='+order+'&user='+user;
-        }
-    },
-    afterLoad: function(data) {
-        $.vloading('close');
-        v_info.count = data.count;
-    }
-});
-</script>

+ 0 - 557
www/protected/modules/moonclub/views/myOrder/info.php

@@ -1,557 +0,0 @@
-<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=B349f0b32ef6e78b2e678f45cb9fddaf"></script>
-<link href="//cdn.bootcss.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" rel="stylesheet">
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/o2o/jq-signature.min.js"></script>
-
-<link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/css">
-<div>
-  <div id="header">
-    <div class="am-g">
-      <div class="am-u-sm-12">
-        <div class="layoutbox">
-          订单详情
-        </div>
-      </div>
-    </div>
-  </div>
-  <!-- 订单详情 -->
-  <div id="info">
-    <div class="am-popup-bd" id="info_content" style="display: none;">
-      <div class="am-g">
-        <div class="am-u-sm-4">预约时间</div>
-        <div class="am-u-sm-8">{{info.booking_time_str}}</div>
-      </div>
-      <div class="am-g">
-        <div class="am-u-sm-4">客户姓名</div>
-        <div class="am-u-sm-8">{{info.address.name}}</div>
-      </div>
-      <div class="am-g">
-        <div class="am-u-sm-4">地址</div>
-        <div class="am-u-sm-8">{{info.address.city}}&nbsp;{{info.address.area}}&nbsp;{{info.address.poi.name}}&nbsp;{{info.address.detail}}</div>
-      </div>
-      <div class="am-g">
-        <div class="am-u-sm-4">客户电话</div>
-        <div class="am-u-sm-8"><a href="tel:{{info.address.mobile}}">{{info.address.mobile}}</a></div>
-      </div>
-      <div class="am-g">
-        <div class="am-u-sm-4">订单状态</div>
-        <div class="am-u-sm-8">{{info.status_str}}</div>
-      </div>
-      <br>
-      <div class="am-g">
-        <div class="am-u-sm-6">
-          <button class="am-btn am-btn-primary" style="width: 100%;" id="showMap">显示地图</button>
-        </div>
-        <div class="am-u-sm-6">
-          <button class="am-btn am-btn-default" style="width: 100%;" id="hideMap">隐藏地图</button>
-        </div>
-      </div>
-      <div class="am-g">
-        <div class="am-u-sm-12">
-          <div id="map_box" style="display: none;">
-            <div id="map_container" style="margin-top: 10px; width: 100%;"></div>
-          </div>
-        </div>
-      </div>
-      <br>
-      <div class="am-g">
-        <div class="am-u-sm-4">产品</div>
-        <div class="am-u-sm-12">
-          <ul class="am-list am-list-static am-list-border">
-            <li v-for="product in info.products">
-              名称:&nbsp;<span id="formProductName">{{info.products[0].product.name}}</span><br>
-              价格:&nbsp;{{info.products[0].product.price}}
-            </li>
-          </ul>
-        </div>
-      </div>
-      <div class="am-g" v-if="info.append_orders.length > 0">
-        <div class="am-u-sm-4">追加订单</div>
-        <div class="am-u-sm-12">
-          <ul class="am-list am-list-static am-list-border">
-            <li v-for="append in info.append_orders">
-              <ul class="am-list am-list-static am-list-border">
-                <li v-for="product in append.products">
-                  服务:&nbsp;{{product.name}}<br>
-                  价格:&nbsp;{{product.price}}
-                </li>
-              </ul>
-            </li>
-          </ul>
-        </div>
-      </div>
-      <div class="am-g am-hide" id="confirm_container">
-        <div class="am-u-sm-12">
-          <button class="am-btn am-btn-block am-btn-primary" id="confirm_set_out">确认订单</button>
-        </div>
-      </div>
-      <div class="am-g am-hide" id="setout_container">
-        <div class="am-u-sm-12">
-          <button class="am-btn am-btn-block am-btn-primary" id="confirm_set_out">确认出发</button>
-        </div>
-      </div>
-      <div class="am-g am-hide" id="come_container">
-        <div class="am-u-sm-12">
-          <button class="am-btn am-btn-block am-btn-primary" id="confirm_come">确认上门</button>
-        </div>
-      </div>
-      <div class="am-g am-hide" id="has_come_container">
-        <div class="am-u-sm-12">
-          <button class="am-btn am-btn-block am-btn-primary">已上门</button>
-        </div>
-      </div>
-      <div class="am-g am-hide" id="has_come_success">
-        <div class="am-u-sm-12">
-          <button class="am-btn am-btn-block am-btn-primary am-disabled">已完成</button>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-<!--手写板-->
-<div id="pics"
-     style="position: fixed;width: 100%;background: #fff;top:0;display: none;text-align: center;padding-bottom: 10px;">
-  <div class="">
-    <div class="">
-      <div class="js-signature"></div>
-    </div>
-    <p style="margin:0;border-top: 1px solid rgba(0,0,0,0.3);padding-top: 4px;">
-      <button id="returnBtn" class="btn btn-default">返回</button>
-      <button id="clearBtn" class="btn btn-default" onclick="clearCanvas();">清除</button>
-      &nbsp;
-      <button id="saveBtn" class="btn btn-default" onclick="saveSignature();" disabled>确认财产无误</button>
-    </p>
-  </div>
-</div>
-<div style="clear: both"></div>
-<!--表单-->
-<div id="orderForm"
-     class="am-hide"
-     style="position: fixed;top: 0;width: 100%;background: rgba(255,255,255,1);color:rgb(0,0,0);">
-  <h1 style="text-align: center;margin-top: 1rem" id="formH1">民宿保洁检查表</h1>
-  <form action="" id="orderFormTitle" class="form-ul">
-    <div class="form-ul" style="position: fixed;5rem;">
-      <!--设备检查-->
-      <div id="orderForm1" class="am-hide">
-        <h3 style="text-align: left">设备检查</h3>
-        <input type="checkbox" value="电视机">电视机有遥控器、可开启。<br/>
-        <input type="checkbox" value="空调">空调有遥控器、可开启。<br/>
-        <input type="checkbox" value="冰箱">冰箱运行中。<br/>
-        <input type="checkbox" value="Wifi">Wifi可连接。<br/>
-      </div>
-      <!--卧室客厅-->
-      <div id="orderForm2" class="am-hide">
-        <h3 style="text-align: left">卧室客厅</h3>
-        <input type="checkbox" value="四件套">四件套,已换新,无污无毛发。<br/>
-        <input type="checkbox" value="床底">床底,床沿触手可及处,无异物。<br/>
-        <input type="checkbox" value="床头柜"><span>床头柜,抽屉内无前客残留物,台面干净、无灰尘污迹。</span><br/>
-        <input type="checkbox" value="地面">地面,扫过一遍,无明显毛发、灰尘、污迹。<br/>
-        <input type="checkbox" value="茶几、写字台">茶几、写字台,台面干净、无灰尘污迹。<br/>
-      </div>
-      <!--洗手间-->
-      <div id="orderForm3" class="am-hide">
-        <h3 style="text-align: left">洗手间</h3>
-        <input type="checkbox" value="马桶">马桶洗刷一遍,清洁无渍,无毛发,马桶盖翻开。<br/>
-        <input type="checkbox" value="台盆">台盆,台面台盆整洁,已擦干,无渍无毛发。<br/>
-        <input type="checkbox" value="浴缸、淋浴房">浴缸、淋浴房,已擦干,无渍无毛发。<br/>
-        <input type="checkbox" value="地面">地面拖过一遍、无明显毛发、灰尘、污迹。<br/>
-      </div>
-      <!--厨房-->
-      <div id="orderForm4" class="am-hide">
-        <h3 style="text-align: left">厨房</h3>
-        <input type="checkbox" value="冰箱">厨房无前客残留物,内无食物残留污迹。<br/>
-        <input type="checkbox" value="微波炉">微波炉内壁托盘无明显食物残留污迹。<br/>
-        <input type="checkbox" value="灶台、厨具">灶台、厨具灶台清洁无油渍,使用过的厨具清洗擦拭收纳。<br/>
-        <input type="checkbox" value="餐桌">餐桌擦拭一遍,无污迹油渍。。<br/>
-        <input type="checkbox" value="水斗">水斗无厨余残存痕迹。<br/>
-        <input type="checkbox" value="地面">地面扫过一遍,无明显灰尘、污迹。<br/>
-      </div>
-      <!--最后检查-->
-      <div id="orderForm5" class="am-hide form-group">
-        <h3 style="text-align: left">最后检查</h3>
-        <div class="col-xs-12 col-sm-12 col-md-12">
-          <input type="checkbox" value="窗户">窗户闭合关实。<br/>
-          <input type="checkbox" value="电器">电器除冰箱、wifi外,其它家电关闭状态。<br/>
-        </div>
-        <h4>物料</h4>
-        <div class="" style="display: block">
-          <span class="col-xs-8 col-md-8">卧室、客厅,有纸巾摆放包数。</span>
-          <select name="" class="" id="">
-            <option value="0">0</option>
-            <option value="0-5">0-5</option>
-            <option value="5-10">5-10</option>
-            <option value="10-20">10-20</option>
-          </select>
-        </div>
-        <div class="col-lg-12">
-          <span class="col-xs-8 col-md-8">厕所,有卷纸摆放包数。</span>
-          <br>
-          <select name="" class="" id="">
-            <option value="0">0</option>
-            <option value="0-5">0-5</option>
-            <option value="5-10">5-10</option>
-            <option value="10-20">10-20</option>
-          </select>
-        </div>
-        <div class="col-xs-12 col-sm-12 col-md-12">
-          <input type="checkbox"> 洗发水、沐浴露预估存于30%以上。
-        </div>
-      </div>
-    </div>
-    <div style="text-align: center;position:fixed;bottom:1rem;margin-top: 1rem;" class="col-xs-12 col-sm-12 col-md-12">
-      <a class="btn btn-danger" id="formNO">取消</a>
-      &nbsp;&nbsp;
-      <a class="btn btn-success" id="formYes">确认</a>
-    </div>
-  </form>
-</div>
-<script type="text/javascript">
-  /*设置全局变量*/
-  var url;
-  var index = 0;
-  /*表单js*/
-  $(function () {
-    /*取消*/
-    $('#formNO').on('click', function () {
-      if (index == 0) {
-        $('#orderForm').addClass('am-hide');
-        $('#orderForm1').addClass('am-hide');
-        return false;
-      }
-      if (index == 1) {
-        $('#orderForm1').removeClass('am-hide');
-        $('#orderForm2').addClass('am-hide');
-        index = 0;
-        return false;
-      }
-      if (index == 2) {
-        $('#orderForm2').removeClass('am-hide');
-        $('#orderForm3').addClass('am-hide');
-        index = 1;
-        return false;
-      }
-      if (index == 3) {
-        $('#orderForm3').removeClass('am-hide');
-        $('#orderForm4').addClass('am-hide');
-        index = 2;
-        return false;
-      }
-      if (index == 4) {
-        $('#orderForm4').removeClass('am-hide');
-        $('#orderForm5').addClass('am-hide');
-        index = 3;
-        return false;
-      }
-    });
-    /*确认*/
-    $('#formYes').on('click', function () {
-      if (index == 0) {
-        $('#orderForm1').addClass('am-hide');
-        $('#orderForm2').removeClass('am-hide');
-        index = 1;
-        return false;
-      }
-      if (index == 1) {
-        $('#orderForm2').addClass('am-hide');
-        $('#orderForm3').removeClass('am-hide');
-        index = 2;
-        return false;
-      }
-      if (index == 2) {
-
-        $('#orderForm3').addClass('am-hide');
-        $('#orderForm4').removeClass('am-hide');
-        index = 3;
-        return false;
-      }
-      if (index == 3) {
-
-        $('#orderForm4').addClass('am-hide');
-        $('#orderForm5').removeClass('am-hide');
-        index = 4;
-        return false;
-      }
-      if (index == 4) {
-        $('#orderForm5').addClass('am-hide');
-
-        //隐藏表单
-        $('#orderForm').addClass('am-hide');
-        /*调用手写板*/
-        $('#has_come_container').addClass('am-hide');
-        $('#has_come_success').removeClass('am-hide');
-        $('#pics').css('display', 'block');
-        $('.js-signature').eq(0).on('jq.signature.changed', function () {
-          $('#saveBtn').attr('disabled', false);
-        });
-      }
-
-    });
-    /*返回*/
-    $('#returnBtn').on('click', function () {
-      index = 0;
-      $('#pics').css('display', 'none');
-      $('#has_come_container').removeClass('am-hide');
-      $('#has_come_success').addClass('am-hide');
-    })
-  });
-  /*form样式调整*/
-  $(function () {
-    /*设置ul与li样式*/
-    $('ul.form-ul').css("margin", '0').css('padding', '0');
-    $('ul.form-ul').children('li').css("list-style", 'none');
-    /*设置ul的宽度*/
-    $('ul.form-ul').children('li').width(($(window).width()));
-    /*设置ul的高度  orderFormOne*/
-    $('ul.form-ul').height($('#orderForm1').height());
-    /*设置li的宽度*/
-//    $('ul.form-ul').children('li').width($(window).width());
-    /*设置表单的margin-top*/
-    var formMargin = ((($(window).height()) - ($('#orderFormTitle').height())) / 6) - (($('#formH1').height()) * 3);
-    $('#orderFormTitle').css('margin-top', formMargin);
-    $('#orderForm').height($(window).height());
-    /*设置body的外边距为0*/
-    $('body').css('margin', '0');
-  });
-  /*手写板js*/
-  $(document).on('ready', function () {
-    if ($('.js-signature').length) {
-      $('.js-signature').jqSignature();
-    }
-  });
-  $('.js-signature').eq(0).on('jq.signature.changed', function () {
-    $('#saveBtn').attr('disabled', false);
-  });
-  $('#pics').height($(window).height());//设置底层div高度
-  $("canvas").width($(window).width());//设置手写板宽度
-  $("canvas").height($(window).height() - ($('#saveBtn').height()));//设置手写板高度
-  document.title = '我的订单-详情';
-  var order = <?php echo json_encode($order); ?>;
-  var user = <?php echo json_encode($user); ?>;
-  var showMap = false;
-  var w_height = $(window).height();
-  var map_height = w_height * 0.6;
-  $('#map_container').css({height: map_height + 'px'});
-  var v_order = new Vue({
-    el: '#info',
-    data: {
-      info: []
-    }
-  });
-  $(function () {
-    getOrderInfo(order, user);
-    // 显示地图
-    $('#showMap').click(function () {
-      address = v_order.info.address;
-      position = address.position;
-      if (!position) {
-        $.valert('定位信息未记录');
-        return false;
-      }
-
-      $('#map_box').show();
-
-      map = new BMap.Map('map_container');
-      point = new BMap.Point(position[0], position[1]);
-      marker = new BMap.Marker(point);
-      map.addOverlay(marker);
-      map.centerAndZoom(point, 15);
-
-      windowOpts = {
-        width: 200,
-        height: 100,
-        title: address.area
-      }
-      infoWindow = new BMap.InfoWindow(address.detail, windowOpts);
-      marker.addEventListener("click", function () {
-        map.openInfoWindow(infoWindow, point);
-      });
-    });
-    // 隐藏地图
-    $('#hideMap').click(function () {
-      $('#map_box').hide();
-    });
-    //确认订单
-    $('#confirm_container').click(function () {
-      $.vloading('open');
-      $.post(
-        '/index.php?r=o2o/myOrder/techConfirmOrder',
-        {
-          order: order,
-          user: user
-        },
-        function (res) {
-          $.vloading('close');
-          var data = $.parseJSON(res);
-          if (data.success) {
-            $('#confirm_container').addClass('am-hide');
-            $('#setout_container').removeClass('am-hide');
-            $('#come_container').addClass('am-hide');
-            $('#has_come_container').addClass('am-hide');
-          } else {
-            $.valert(data.msg);
-          }
-        }
-      );
-    });
-    // 确认出发
-    $('#setout_container').click(function () {
-      $.vloading('open');
-      $.post(
-        '/index.php?r=o2o/myOrder/techSetout',
-        {
-          order: order,
-          user: user
-        },
-        function (res) {
-          $.vloading('close');
-          var data = $.parseJSON(res);
-          if (data.success) {
-            $('#setout_container').addClass('am-hide');
-            $('#come_container').removeClass('am-hide');
-            $('#has_come_container').addClass('am-hide');
-          } else {
-            $.valert(data.msg);
-          }
-        }
-      );
-    });
-    // 确认上门
-    $('#confirm_come').click(function () {
-      $.vloading('open');
-      $.post(
-        '/index.php?r=o2o/myOrder/techCome',
-        {
-          order: order,
-          user: user
-        },
-        function (res) {
-          $.vloading('close');
-          var data = $.parseJSON(res);
-          if (data.success) {
-            $('#setout_container').addClass('am-hide');
-            $('#come_container').addClass('am-hide');
-            $('#has_come_container').removeClass('am-hide');
-            $('#has_come_success').addClass('am-hide');
-          } else {
-            $.valert(data.msg);
-          }
-        }
-      );
-    });
-    //已上门
-
-    $('#has_come_container').click(function () {
-      console.log();
-      if($('#formProductName').html()=='民宿保洁'){
-        /*调出表单*/
-        $('#orderForm').removeClass('am-hide');
-        $('#orderForm1').removeClass('am-hide');
-      }else {
-        /*调用手写板*/
-        $('#has_come_container').addClass('am-hide');
-        $('#has_come_success').removeClass('am-hide');
-        $('#pics').css('display', 'block');
-        $('.js-signature').eq(0).on('jq.signature.changed', function () {
-          $('#saveBtn').attr('disabled', false);
-        });
-      }
-//      return false;
-
-    });
-  });
-  function putb64() {
-    var pic = url.replace("data:image/png;base64,", "");//需要提交的base64
-    var uri = "http://up.qiniu.com/putb64/-1";//提交地址
-    var xhr = new XMLHttpRequest();
-    xhr.onreadystatechange = function () {
-      if (xhr.readyState == 4) {
-        $.post(
-          '/index.php?r=o2o/myOrder/techComplete',
-          {
-            order: order,
-            user: user,
-            o2oImage: xhr.responseText
-          },
-          function (res) {
-            $.vloading('close');
-            var data = $.parseJSON(res);
-            if (data.success) {
-              $('#setout_container').addClass('am-hide');
-              $('#come_container').addClass('am-hide');
-              $('#has_come_container').addClass('am-hide');
-              $('#has_come_success').removeClass('am-hide');
-            } else {
-              $.valert(data.msg);
-            }
-          }
-        );
-      }
-    }
-    xhr.open("POST", uri, true);
-    xhr.setRequestHeader("Content-Type", "application/octet-stream");
-    xhr.setRequestHeader("Authorization", "UpToken Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr:a-HCK5r5iPL8Bisb-mQLI21oZJM=:eyJzY29wZSI6ImF2YXRhcnMiLCJkZWFkbGluZSI6MTQ3NDQ1MTg0OTAwMDAwMDAwMH0=");
-    xhr.send(pic);
-  }
-  function saveSignature() {
-    $('#signature').empty();
-    url = $('.js-signature').eq(0).jqSignature('getDataURL');
-    if (url != undefined) {
-      $('#pics').css('display', 'none');
-      //七牛上传照片
-      putb64();
-    }
-  }
-  function clearCanvas() {
-    $('.js-signature').eq(0).jqSignature('clearCanvas');
-    $('#saveBtn').attr('disabled', true);
-  }
-  function getOrderInfo(order, user) {
-    if (order.length == 0 || user.length == 0) {
-      $.valert('订单信息未录入');
-      return false;
-    }
-
-    $.vloading('open');
-    $.post(
-      '/index.php?r=o2o/o2oApp/getOrderInfo',
-      {
-        id: order,
-        user: user
-      },
-      function (res) {
-        $.vloading('close');
-        var data = $.parseJSON(res);
-        if (data.success == false) {
-          $.valert(data.msg);
-        } else {
-          var content = data.content;
-          v_order.info = content;
-          for (var j in content.technicians) {
-            if (content.technicians[j]['technician_id'] == user) {
-              if (content.status != 4 && content.status != 5 && content.status != 6 && $.inArray(content.status, [1, 2, 3]) != -1) {
-                $('#confirm_container').removeClass('am-hide');
-                $('#setout_container').addClass('am-hide');
-                $('#come_container').addClass('am-hide');
-                $('#has_come_container').addClass('am-hide');
-              } else if (content.status == 4) {
-                $('#setout_container').addClass('am-hide');
-                $('#come_container').removeClass('am-hide');
-                $('#has_come_container').addClass('am-hide');
-              } else if (content.status == 5) {
-                $('#setout_container').addClass('am-hide');
-                $('#come_container').addClass('am-hide');
-                $('#has_come_container').removeClass('am-hide');
-              } else if (content.status == 6) {
-                $('#setout_container').addClass('am-hide');
-                $('#come_container').addClass('am-hide');
-                $('#has_come_container').addClass('am-hide');
-                $('#has_come_success').removeClass('am-hide');
-              }
-              break;
-            }
-          }
-          $('#info_content').show();
-        }
-      }
-    );
-  }
-</script>

+ 1 - 1
www/protected/modules/moonclub/views/advisory/index.php → www/protected/modules/moonclub/views/reserve/index.php

@@ -157,7 +157,7 @@
     var jq_content_form = $('#content_form');
     var jq_filter_status = $('#filter_status');
     var jq_setStatus_add = $('#setStatus_add');
-    var module_router = site_root + '/index.php?r=o2o/Advisory';
+    var module_router = site_root + '/index.php?r=o2o/Reserve';
     var status_data = <?php echo json_encode($status_option); ?>;
     var jq_setStatus = $('#setStatus');
     var w_width = $(window).width();

+ 4 - 4
www/protected/modules/moonclub/views/advisory/month.php → www/protected/modules/moonclub/views/reserve/month.php

@@ -68,7 +68,7 @@
 				</select>
 			</div>
 			<!--数据-->
-			<input type="text" name="area" value="享月会" style="position: absolute;top:-1000px;">
+
 			<!--预产期-->
 			<div class="form-group">
 				<input name="num" class="form-control" style="background-color: #fff;" id="demo1" type="text" readonly=""
@@ -108,14 +108,14 @@
 	myapp.controller('myctrl', ['$scope', function ($scope) {
 		$('.model-content').on('click', function () {
 			if ($('.model-content').html() == '返回首页') {
-				window.location.href = '/index.php?r=o2o/web/index';
+				window.location.href = '/index.php?r=moonclub/web/index';
 			} else {
 				$('.model').css('height', '0');
 				$('.model-box').css('display', 'none');
 			}
 		});
 		$('.gradient').on('click',function () {
-			window.location.href = '/index.php?r=o2o/web/index';
+			window.location.href = '/index.php?r=moonclub/web/index';
 		})
 		/*表单提交进行判断*/
 		$('#SinglesDayBtn').on('click', function () {
@@ -131,7 +131,7 @@
 				}
 				/*model*/
 				$.ajax({
-					url: 'index.php?r=o2o/Advisory/SinglesDay',
+					url: 'index.php?r=moonclub/Reserve/Month',
 					type: 'POST',
 					dataType: 'html',
 					data: $('#singlesDay').serialize(),

+ 0 - 0
www/protected/modules/moonclub/views/advisory/xyhIm.php → www/protected/modules/moonclub/views/reserve/xyhIm.php


+ 0 - 817
www/protected/modules/moonclub/views/tech/index.php

@@ -1,817 +0,0 @@
-<link rel="stylesheet" href="http://cdn.amazeui.org//amazeui/2.5.0/css/amazeui.min.css">
-<link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/css/datetimepicker.css">
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/datetimepicker.js?v=2"></script>
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/amazeui.datetimepicker.zh-CN.js?v=2"></script>
-<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/baidu_map/CityList.js?v=201405243209"></script>
-<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/qiniu_upload_single.js?v=20200307"></script>
-<div id="main">
-    <div region="west" id="west_panel" border="false">
-        <table id="dg_content"></table>
-        <div id="tb_content">
-            <div class="tb_line">
-                <div>
-                    <input id="search">
-                    <span>状态</span>
-                    <input id="filter_status">
-                    <span>提成方案</span>
-                    <input id="filter_scheme">
-                    <div class="right">
-                        <a href="#" class='easyui-linkbutton' iconCls="icon-search" plain="true" onclick="search_content();return false;">查询</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-    <div region="center" class="easyui-accordion">
-        <div region="center" title="基本信息">
-            <div class="easyui-layout detail_layout">
-                <div data-options="region:'center'" class="detail_center">
-                    <div class="detail_main">
-                        <form id="content_form" method="post">
-                            <ul>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>ID: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <input type="hidden" name="_id" id="content_id_hide" value="" />
-                                            <span id="content_id"></span>
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>名字: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <input name="name" />
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>头像: </span>
-                                        </div>
-                                        <div class="box_flex f_content" id="content_avatar">
-                                            <div id="content_avatar_show"></div>
-                                            <div>
-                                                <a href="#" iconCls="icon-add" id="content_avatar_uploader" class="easyui-linkbutton" plain="true">
-                                                    上传图片
-                                                </a>
-                                            </div>
-                                            <input type="hidden" name="avatar" id="content_avatar_info" />
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>手机号: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <input name="mobile" id="content_mobile" readonly/>
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>状态: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <input name="status" id="content_status" />
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>提成方案: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <input name="scheme" id="content_scheme"/>
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>服务类型: </span>
-                                        </div>
-                                        <div class="box_flex f_content" id="service_type_container">
-                                            <?php foreach ($service_type as $key => $value): ?>
-                                                <?php if (($key-1) % 4 == 0 && $key != 1): ?>
-                                                    <br>
-                                                <?php endif ?>
-                                                <span class="service_type_list">
-                                                    <input type="checkbox" value="<?=$key?>" name="service_type[]" /><?=$value['name']?>
-                                                </span>
-                                            <?php endforeach ?>
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="f_item">
-                                    <div class="box">
-                                        <div class="f_label">
-                                            <span>描述: </span>
-                                        </div>
-                                        <div class="box_flex f_content">
-                                            <textarea name="desc" style="width:200px;height:120px;"></textarea>
-                                        </div>
-                                    </div>
-                                </li>
-                            </ul>
-                        </form>
-                    </div>
-                </div>
-                <div data-options="region:'south'" class="detail_south">
-                    <div class="detail_toolbar">
-                        <a href="#" class="easyui-linkbutton set_button" iconCls="icon-save" onclick="save_content();return false;">保存</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div region="center" title="微信信息">
-            <div class="easyui-layout detail_layout">
-                <div data-options="region:'center'" class="detail_center">
-                    <form id="weixin_info_form" method="post">
-                        <ul>
-                            <li class="f_item">
-                                <div class="box">
-                                    <div class="f_label">
-                                        <span>姓名</span>
-                                    </div>
-                                    <div class="box_flex f_content">
-                                        <input type="hidden" name="_id" />
-                                        <input type="hidden" name="name" />
-                                        <span id="weixin_info_name"></span>
-                                    </div>
-                                </div>
-                            </li>
-                            <li class="f_item">
-                                <div class="box">
-                                    <div class="f_label">
-                                        <span>微信ID</span>
-                                    </div>
-                                    <div class="box_flex f_content">
-                                        <input name="weixin_userid" id="weixin_info_userid" />
-                                    </div>
-                                </div>
-                            </li>
-                            <li class="f_item">
-                                <div class="box">
-                                    <div class="f_label">
-                                        <span>手机号</span>
-                                    </div>
-                                    <div class="box_flex f_content">
-                                        <input name="mobile" id="weixin_info_mobile" />
-                                    </div>
-                                </div>
-                            </li>
-                        </ul>
-                    </form>
-                </div>
-                <div data-options="region:'south'" class="detail_south">
-                    <div class="detail_toolbar">
-                        <a href="#" class="easyui-linkbutton set-button" id="save_weixin_info" iconCls="icon-save" onclick="save_weixin_info()">保存</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div region="center" title="服务时间">
-            <div class="easyui-layout detail_layout">
-                <div data-options="region:'center'" class="detail_center">
-                    <div id="datetimepicker_container"></div>
-                    <div>
-                        <form id="free_time_form" method="post">
-                            <input type="hidden" name="_id" />
-                            <input type="hidden" name="old_time_list" id="old_time_list" value="{}"/>
-                            <input type="hidden" name="new_time_list" id="new_time_list" value="{}"/>
-                        </form>
-                    </div>
-                </div>
-                <div data-options="region:'south'" class="detail_south">
-                    <div class="detail_toolbar">
-                        <a href="#" class="easyui-linkbutton set_button" id="save_selected_time" iconCls="icon-save" onclick="save_timeline();return false;">保存</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div region="center" title="服务范围">
-            <div class="easyui-layout detail_layout">
-                <div data-options="region:'center'" class="detail_center">
-                    <div style="width: 540px;height: 460px;">
-                        <div id="add_coverage_container" style="padding-bottom: 10px;display:inline-block;width:400px;"></div>
-                        <div id="add_coverage_button" style="display:inline-block;">
-                            <a href="#" class="easyui-linkbutton set_button" iconCls="icon-add" plain="true" onclick="add_coverage();">添加服务范围</a>
-                        </div>
-                        <div id="add_coverage_map_container" style="width:520px;height:340px;"></div>
-                        <div>
-                            <div id="coverage_info">
-                            </div>
-                            <form id="coverage_form" method="post">
-                                <input type="hidden" name="_id" />
-                                <input type="hidden" name="coverage_json" id="coverage_json" />
-                            </form>
-                        </div>
-                    </div>
-                </div>
-                <div data-options="region:'south'" class="detail_south">
-                    <div class="detail_toolbar">
-                        <a href="#" class="easyui-linkbutton set_button" iconCls="icon-save" onclick="save_coverage();return false;">保存</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<style type="text/css">
-body {margin: 8px;}
-.f_label {width: 90px;}
-.service_type_list {display:inline-block;width:110px;}
-</style>
-<script type="text/javascript">
-// option
-var status_option = <?php echo json_encode($status_option); ?>;
-var scheme_option = <?php echo json_encode($scheme_option); ?>;
-
-// base
-var module_root = site_root + '/index.php?r=o2o/tech';
-var w_width = $(window).width();
-var w_height = $(window).height();
-
-// datagrid
-var jq_dg_content = $('#dg_content');
-var jq_search = $('#search');
-var jq_filter_status = $('#filter_status');
-var jq_filter_scheme = $('#filter_scheme');
-
-// content_form
-var jq_content_form = $('#content_form');
-var jq_content_status = $('#content_status');
-var jq_content_scheme = $('#content_scheme');
-
-// add_form
-var jq_add_dialog = $('#add_dialog');
-var jq_add_form = $('#add_form');
-
-// free_time
-var datePickerStart = <?=json_encode($datePickerStart)?>;
-var datePickerEnd = <?=json_encode($datePickerEnd)?>;
-var jq_free_time_form = $('#free_time_form');
-
-// coverage
-var jq_coverage_form = $('#coverage_form');
-
-// weixin
-var jq_weixin_info_form = $('#weixin_info_form');
-
-$(function() {
-    var p_width = parseInt(w_width / 2);
-    if (p_width < 550) {p_width = 550}
-    var d_width = p_width - 18;
-
-    $('#west_panel').css({width: p_width});
-    $('#main').css({width: w_width - 25, height: w_height - 18}).layout();
-
-    // content_form
-    jq_content_status.combobox({
-        data: status_option,
-        editable: false
-    });
-
-    jq_content_scheme.combobox({
-        data: scheme_option,
-        editable: false
-    });
-
-    jq_content_form.form({
-        url: module_root + '/edit',
-        onSubmit: function(params) {
-            $.messager.progress();
-            var isValid = $(this).form('validate');
-            if (!isValid) {
-                $.messager.progress('close');
-            }
-            return isValid;
-        },
-        success: function(res) {
-            $.messager.progress('close');
-            var res = JSON.parse(res);
-            if(res.success) {
-                jq_dg_content.datagrid('reload');
-                $.messager.show({
-                    title: '提示',
-                    msg: '保存成功',
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            } else {
-                $.messager.show({
-                    title: '提示',
-                    msg: res.message,
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            }
-        }
-    });
-
-    // datagrid
-    jq_search.searchbox({
-        width: 150,
-        searcher: function() {
-            search_content();
-        },
-        prompt: 'ID、名字、微信ID'
-    });
-
-    jq_filter_status.combobox({
-        data: status_option,
-        width: 80,
-        editable: false,
-        onSelect: function() {
-            search_content();
-        }
-    });
-
-    jq_filter_scheme.combobox({
-        data: scheme_option,
-        width: 80,
-        editable: false,
-        onSelect: function() {
-            search_content();
-        }
-    });
-
-    jq_dg_content.datagrid({
-        height: w_height - 18,
-        width: d_width,
-        title: '保洁师列表',
-        idField: '_id',
-        url: module_root + '/list',
-        toolbar: '#tb_content',
-        nowrap: false,
-        singleSelect: true,
-        fitColumns: true,
-        queryParams: $.extend({
-            status: 1
-        }, get_param_obj()),
-        sortName: '_id',
-        sortOrder: 'asc',
-        pagination: true,
-        pageSize: 30,
-        pageList: [10, 20, 30, 50],
-        columns: [[
-            {field: 'name', title: '名字', width: 100},
-            {field: 'weixin_userid', title: '微信ID', width: 100},
-            {field: 'favourable_count', title: '好评数', width: 50},
-            {field: 'order_count', title: '服务次数', width: 50},
-            {field: 'scheme', title: '提成方案', width: 60,
-                formatter: function(value, row) {
-                    if (value == -1) {
-                        return '<span style="color: orange;">'+row['scheme_str']+'</span>';
-                    } else {
-                        return '<span>'+row['scheme_str']+'</span>';
-                    }
-                }
-            },
-            {field: 'status', title: '状态', width: 40,
-                formatter: function(value, row) {
-                    if (value == 1) {
-                        var color = 'green';
-                    } else if (value == 0) {
-                        var color = 'orange';
-                    } else {
-                        var color = 'red';
-                    }
-                    return '<span style="color:'+color+'">'+row.status_str+'</span>';
-                }
-            }
-        ]],
-        onSelect: function(index, row) {
-            // 载入数据
-            var data = $.extend(row, {});
-            jq_content_form.form('load', data);
-            $('#content_id').html(row._id);
-
-            // 头像显示
-            $('input[name="file"]').remove();
-            $('#content_avatar_show').empty();
-            if (data.avatar) {
-                var avatar_url = data.avatar;
-                $('#content_avatar_info').val(avatar_url);
-                $('#content_avatar_show').html('<img src="'+avatar_url+'" style="max-width: 60px" />');
-            } else {
-                $('#content_avatar_info').val('');
-            }
-
-            // 头像上传
-            $.fn.qiniu_upload_single('init', {
-                bucket: 'avatars',
-                button: '#content_avatar_uploader',
-                success_callback: function(result) {
-                    console.log(result);
-                    var img_url = result.url;
-
-                    var img = new Image();
-                    img.onload = function() {
-                        var imgWidth = img.width;
-                        var imgHeight = img.height;
-                        $('#content_avatar_info').val(img_url);
-                        $('#content_avatar_show').html('<img src="'+img_url+'" style="max-width: 60px;"/>');
-                    }
-                    img.src = img_url;
-                },
-                fail_callback: function() {
-                    $.messager.alert('提示', '上传失败,请重试');
-                    return false;
-                }
-            });
-
-            // 服务类型选择
-            $('#service_type_container').children().each(function (index, element) {
-                var val = parseInt($(this).find('input').val());
-                if ($.inArray(val, data.service_type) != -1) {
-                    $(this).find('input').prop('checked', true);
-                } else {
-                    $(this).find('input').prop('checked', false);
-                }
-            });
-
-            // 时间选择
-            $('#datetimepicker_container').empty();
-            $('#old_time_list').val('{}');
-            $('#new_time_list').val('{}');
-            showDatetimePicker(data._id);
-            jq_free_time_form.form('load', data);
-
-            // 服务范围选择
-            initBaiduCityList();
-            jq_coverage_form.form('load', data);
-            $('#add_coverage_button').show();
-            var coverage_info = '';
-            for (key in data.coverage) {
-                coverage_info += parse_coverage_item(data['coverage'][key], key);
-            }
-            $('#coverage_info').html(coverage_info);
-
-            // 微信信息
-            jq_weixin_info_form.form('load', data);
-            $('#weixin_info_name').html(data.name);
-            if (data.weixin_userid) {
-                $('#weixin_info_userid').attr('readonly', true);
-            } else {
-                $('#weixin_info_userid').removeAttr('readonly');
-            }
-        },
-        onLoadSuccess: function() {
-            // 基本信息
-            jq_content_form.form('clear');
-            $('#content_id').html('');
-            $('#content_avatar_show').empty();
-
-            // 时间选择
-            jq_free_time_form.form('clear');
-            $('#datetimepicker_container').empty();
-
-            // 服务范围
-            jq_coverage_form.form('clear');
-            $('#add_coverage_container').empty();
-            $('#add_coverage_map_container').empty();
-            $('#add_coverage_button').hide();
-            $('#coverage_info').empty();
-            
-            // 微信信息
-            jq_weixin_info_form.form('clear');
-            $('#weixin_info_name').empty();
-            $('#weixin_info_userid').removeAttr('disabled');
-        }
-    });
-
-    // free_time
-    jq_free_time_form.form({
-        url: module_root + '/modifyFreetime',
-        onSubmit: function(param) {
-            $.messager.progress();
-            var isValid = $(this).form('validate');
-            if (!isValid) {
-                $.messager.progress('close');
-            }
-            return isValid;
-        },
-        success: function(res) {
-            $.messager.progress('close');
-            var res = JSON.parse(res);
-
-            if (res.success) {
-                jq_dg_content.datagrid('reload');
-                $.messager.show({
-                    title: '提示',
-                    msg: '保存成功',
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            } else {
-                $.messager.show({
-                    title: '提示',
-                    msg: res.message,
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            }
-        }
-    });
-
-    // coverage
-    jq_coverage_form.form({
-        url: module_root + '/modifyCoverage',
-        onSubmit: function(param) {
-            $.messager.progress();
-            var isValid = $(this).form('validate');
-            if (!isValid) {
-                $.messager.progress('close');
-            }
-            return isValid;
-        },
-        success: function(res) {
-            $.messager.progress('close');
-            var res = JSON.parse(res);
-
-            if (res.success) {
-                jq_dg_content.datagrid('reload');
-                $.messager.show({
-                    title: '提示',
-                    msg: '保存成功',
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            } else {
-                $.messager.show({
-                    title: '提示',
-                    msg: res.message,
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            }
-        }
-    });
-
-    // 删除item绑定事件
-    $('body').on('click', '.del_coverage_item', function() {
-        var coverages = new Array();
-        if ($('#coverage_json').val()) {
-            var coverages = JSON.parse($('#coverage_json').val());
-        }
-
-        coverages.splice($(this).parent('div').attr('data'), 1);
-        $(this).parent('div').remove();
-        $('#coverage_info').children('div').each(function(index, e) {
-            $(this).attr('data', index);
-        });
-
-        $('#coverage_json').val(JSON.stringify(coverages));
-    });
-
-    // weixin_info
-    jq_weixin_info_form.form({
-        url: module_root + '/modifyWeixinInfo',
-        onSubmit: function(param) {
-            $.messager.progress();
-            var isValid = $(this).form('validate');
-            if (!isValid) {
-                $.messager.progress('close');
-            }
-            return isValid;
-        },
-        success: function(res) {
-            $.messager.progress('close');
-            var res = JSON.parse(res);
-
-            if (res.success) {
-                jq_dg_content.datagrid('reload');
-                $.messager.show({
-                    title: '提示',
-                    msg: '保存成功',
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            } else {
-                $.messager.show({
-                    title: '提示',
-                    msg: res.message,
-                    timeout: 3500,
-                    showType: 'slide'
-                });
-            }
-        }
-    });
-});
-
-function search_content() {
-    var status = jq_filter_status.combobox('getValue');
-    var scheme = jq_filter_scheme.combobox('getValue');
-    var search = jq_search.searchbox('getValue');
-
-    var query = {
-        status: status,
-        scheme: scheme,
-        search: search
-    };
-
-    jq_dg_content.datagrid({
-        queryParams: query
-    });
-}
-
-function save_content() {
-    if (!$('#content_id_hide').val()) {
-        $.messager.alert('提示', '请选择一个保洁师');
-        return false;
-    }
-
-    if (jq_content_scheme.combobox('getValue') == 100) {
-        $.messager.alert('提示', '请选择一个提成方案');
-        return false;
-    }
-
-    var status = jq_content_status.combobox('getValue');
-    if (parseInt(status) == -1) {
-        $.messager.confirm('提示', '确认删除吗?<br>该操作将删除后台用户,同时禁用微信端成员', function (r) {
-            if (!r) {
-                return false;
-            } else {
-                jq_content_form.form('submit');
-            }
-        });
-    } else {
-        jq_content_form.form('submit');
-    }
-}
-
-// 显示时间选择插件
-function showDatetimePicker(_id) {
-    $.post(
-        module_root + '/getTechTimeline',
-        {
-            _id: _id
-        },
-        function (res) {
-            var data = $.parseJSON(res);
-            var old_time_list = {};
-            var selected = {
-                day: {},
-                hours: {}
-            }
-            for (key in data) {
-                if (data[key]['selected']) {
-                    selected.day[key] = parseInt(data[key]['selected']);
-                    selected.hours[key] = data[key]['selectedHours'].slice();
-                    old_time_list[key] = data[key]['selectedHours'].slice();
-                }
-            }
-            $('#old_time_list').val(JSON.stringify(old_time_list));
-            $('#datetimepicker_container').append('<input id="datetimepicker" size="16" type="text" value="'+datePickerStart+'" readonly class="form-datetime am-form-field">');
-            initDatetimepicker(datePickerStart, datePickerEnd, selected);
-        }
-    );
-}
-
-function initDatetimepicker(startDate, endDate, selected) {
-    $('#datetimepicker').datetimepicker({
-        language:  'zh-CN',
-        format: 'yyyy-mm-dd hh:ii:ss',
-        startDate: startDate,
-        endDate: endDate,
-        startView: 2,
-        minView: 1,
-        todayBtn: true,
-        todayHighlight: true,
-        startHours: 9,
-        endHours: 19,
-        minuteStep: 10,
-        selected: selected
-    }).on('changeHour', function(event){
-        newSelectedTime(event);
-    }).on('today', function(event) {
-        newSelectedTime(event);
-    }).on('allDay', function(event) {
-        newSelectedTime(event);
-    });
-}
-
-function newSelectedTime(event) {
-    var new_time_list = JSON.parse($('#new_time_list').val());
-    if (event.type == 'today') {
-        var dateObj = new Date();
-        var today_year = dateObj.getFullYear() + '';
-        var today_month = dateObj.getMonth() + 1 + '';
-        var today_date = dateObj.getDate() + '';
-        if (today_month.length < 2) {
-            today_month = '0' + today_month;
-        }
-        if (today_date.length < 2) {
-            today_date = '0' + today_date;
-        }
-
-        var today_key = today_year + today_month + today_date;
-
-        new_time_list[today_key] = [
-            0, 0, 0, 0, 0, 0, 0, 0,
-            0, 1, 1, 1, 1, 1, 1, 1,
-            1, 1, 1, 1, 0, 0, 0, 0
-        ];
-    } else {
-        new_time_list = event.selectedHours;
-    }
-
-    $('#new_time_list').val(JSON.stringify(new_time_list));
-}
-
-function save_timeline() {
-    jq_free_time_form.submit();
-}
-
-function initBaiduCityList() {
-    map = new BMap.Map('add_coverage_map_container');
-    map.centerAndZoom(new BMap.Point(31.229402,121.455129), 12);
-    var cityList = new BMapLib.CityList({
-        container: 'add_coverage_container',
-        map: map
-    });
-}
-
-function add_coverage() {
-    var coverages = new Array();
-    if ($('#coverage_json').val()) {
-        coverages = JSON.parse($('#coverage_json').val());
-    }
-
-    var coverage_item = {};
-    coverage_item.province = storage.getItem('province');
-    coverage_item.city     = storage.getItem('city');
-    coverage_item.area     = storage.getItem('area');
-
-    if (storage.getItem('business') && storage.getItem('business') != '请选择') {
-        coverage_item.business = storage.getItem('business');
-    }
-
-    if (coverage_item.city != '上海市') {
-        $.messager.alert('提示', '必须选择上海市');
-        return false;
-    } else if (!coverage_item.province || !coverage_item.city || !coverage_item.area) {
-        $.messager.alert('提示', '必须选择区');
-        return false;
-    } else if (!coverage_item.business) {
-        var businessArray = [];
-        $('#add_coverage_container>select').last().children().each(function (index, element) {
-            if (this.title != '请选择') {
-                var coverage_json = $('#coverage_json').val();
-                var coverages = coverage_json ? JSON.parse(coverage_json) : [];
-                coverage_item.business = this.title;
-                coverages.push(coverage_item);
-                $('#coverage_json').val(JSON.stringify(coverages));
-                $('#coverage_info').html($('#coverage_info').html() + parse_coverage_item(coverage_item, coverages.length - 1));
-            }
-        });
-    } else {
-        coverages.push(coverage_item);
-        $('#coverage_json').val(JSON.stringify(coverages));
-        $('#coverage_info').html($('#coverage_info').html() + parse_coverage_item(coverage_item, coverages.length - 1));
-    }
-
-    storage.removeItem('province');
-    storage.removeItem('city');
-    storage.removeItem('area');
-    storage.removeItem('business');
-    storage.removeItem('points');
-    initBaiduCityList();
-}
-
-function parse_coverage_item(item, index) {
-    if (item.business) {
-        return '<div data='+index+'>['+item.province+'-'+item.city+'-'+item.area+'-'+item.business+']&nbsp;&nbsp;<a href="#" class="del_coverage_item">删除</a></div>';
-    } else {
-        return '<div data='+index+'>['+item.province+'-'+item.city+'-'+item.area+']&nbsp;&nbsp;<a href="#" class="del_coverage_item">删除</a></div>';
-    }
-}
-
-function save_coverage() {
-    jq_coverage_form.submit();
-}
-
-function save_weixin_info() {
-    if (!$('#weixin_info_userid').val()) {
-        $.messager.alert('提示', '请输入微信ID');
-        return false;
-    }
-    if (!$('#weixin_info_mobile').val()) {
-        $.messager.alert('提示', '请输入手机号');
-        return false;
-    }
-    jq_weixin_info_form.submit();
-}
-</script>

+ 0 - 1
www/protected/modules/moonclub/views/techHome/error.php

@@ -1 +0,0 @@
-<h1><?=$msg?></h1>

+ 0 - 161
www/protected/modules/moonclub/views/techHome/index.php

@@ -1,161 +0,0 @@
-<link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/js/cropbox/jquery.cropbox.css">
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/cropbox/hammer.js"></script>
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/cropbox/jquery.mousewheel.js"></script>
-<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/cropbox/jquery.cropbox.js?v=2016032201"></script>
-
-<form class="am-form tech-form">
-  <fieldset>
-    <legend><?=$name?><small>个人信息</small></legend>
-    <div class="am-form-group">
-      <label for="doc-ta-1">介绍</label>
-      <textarea class="intro" rows="5" id="doc-ta-1"><?=$desc?></textarea>
-    </div>
-
-    <div class="am-form-group am-form-file">
-      <label for="doc-ipt-file-2">头像</label>
-      <div>
-        <button type="button" class="am-btn am-btn-default am-btn-sm tech-avatar-btn">
-          <i class="am-icon-cloud-upload"></i> 选择图片</button>
-        <input type="file" id="tech-avatar" style="top: initial;bottom: 0;font-size: 1.4rem;padding: .25em 1em;">
-      </div>
-    </div>
-    <p class="img-preview">
-      <img src="<?=$avatar?>" alt="" class="" width="200" height="200">
-    </p>
-    <p>
-      <!-- <button type="submit" class="am-btn am-btn-default btn-edit">编辑</button> -->
-      <button type="submit" class="am-btn am-btn-success btn-submit">提交</button>
-    </p>
-  </fieldset>
-</form>
-<div class="am-modal am-modal-alert" tabindex="-1" id="my-alert">
-  <div class="am-modal-dialog">
-    <div class="am-modal-hd">提示信息</div>
-    <div class="am-modal-bd">
-      介绍或者头像不能为空
-    </div>
-    <div class="am-modal-footer">
-      <span class="am-modal-btn">确定</span>
-    </div>
-  </div>
-</div>
-<script>
-$(function(){
-  /* 初始化参数 */
-  var tech_name   = <?=json_encode($name)?>;          // 保洁师姓名
-  var tech_id     = <?=json_encode($_id)?>;           // 保洁师后台ID
-  var token       = <?=json_encode($qiniu_token)?>;   // 七牛上传token
-  var url         = <?=json_encode($qiniu_url)?>;     // 七牛上传url_prefix
-  var avatar = <?=json_encode($avatar)?>;
-  var intro = <?=json_encode($desc)?>;
-  var cropImg = '';
-  var apiUrl = 'http:// api.yiguanjia.me';
-  if (location.host == ' apitest.yiguanjia.me') {
-    apiUrl = 'http:// apitest.yiguanjia.me';
-  } else if (location.host == 'api.yiguanjiadev.me') {
-    apiUrl = 'http://api.yiguanjiadev.me';
-  }
-
-  function edit() {
-    $('.tech-form').find('.intro').removeAttr('readonly');
-    $('#tech-avatar').removeAttr('disabled');
-    $('.tech-avatar-btn').removeClass('am-disabled');
-  }
-  function submit() {
-    $('.tech-form').find('.intro').attr('readonly', 'true');
-    $('#tech-avatar').attr('disabled', 'disabled');
-    $('.tech-avatar-btn').addClass('am-disabled');
-  }
-
-  $('.intro').on('blur', function(event) {
-    event.preventDefault();
-    intro = $(this).val();
-  });
-
-  $('.tech-form').on('click', '.btn-edit', function(event) {
-    event.preventDefault();
-    edit();
-  });
-
-  $('.tech-form').on('click', '.btn-submit', function(event) {
-    event.preventDefault();
-    if (intro == '') {
-      alert('介绍不能为空');
-    } else if (avatar == '') {
-      alert('请上传头像');
-    } else {
-      submit();
-      $.ajax({
-        url: apiUrl + '/index.php?r=o2o/techHome/updateInfo',
-        jsonp: "callback",
-        dataType: "jsonp",
-        data: {
-          tech_id: tech_id,
-          desc: intro,
-          avatar: avatar + cropImg
-        }
-      })
-      .done(function(res) {
-        alert(res.message);
-      })
-      .fail(function(res) {
-        alert(res.message);
-      })
-      .always(function() {
-        edit();
-      });
-    }
-  });
-
-  $('.tech-form').on('change', '#tech-avatar', function(event) {
-    event.preventDefault();
-
-    var files = event.target.files;
-    var formData = new FormData();
-    formData.append('token', token);
-    formData.append('file', files[0]);
-    var name = files[0].name;
-    var point = name.lastIndexOf('.'),
-        type = name.substr(point),
-        key = Math.random().toString(16).substring(2) + (+new Date()) + type;
-    formData.append('key', key);
-
-    $.ajax({
-      url: 'http://upload.qiniu.com',
-      type: 'POST',
-      data: formData,
-      processData: false,
-      contentType: false
-    })
-    .done(function(res) {
-      avatar = url + res.key
-      $('.img-preview').html('<img src="'+ url + res.key +'" alt="" class="cropimage">');
-      crop();
-    })
-    .fail(function() {
-      console.log("error");
-    })
-    .always(function() {
-      console.log("complete");
-    });
-
-  });
-
-  function crop() {
-    $('.cropimage').cropbox({
-      width: 200,
-      height: 200,
-      controls: ''
-    }, function() {
-      //on load
-
-    }).on('cropbox', function(event, results) {
-      var X = results.cropX;
-      var Y = results.cropY;
-      var W = results.cropW;
-      var H = results.cropH;
-      cropImg = '?imageMogr/v2/crop/!' + W + 'x' + H + 'a' + X + 'a' + Y;
-    });
-  }
-})
-</script>

+ 4 - 4
www/protected/modules/moonclub/views/web/index.php

@@ -59,16 +59,16 @@
       <?php
       if (!empty($userId) && !empty($appToken)) {
         echo '
-            var xyhWxUserID = localStorage.setItem("xyhwxUserID",  "' . $userId . '");
+            var xyhWxUserID = localStorage.setItem("xyhWxUserID",  "' . $userId . '");
             var xyhappToken = localStorage.setItem("xyhappToken", "' . $appToken . '");
           ';
       } /*else {
           echo 'localStorage.clear();';
         }*/
       ?>
-      var userID = localStorage.getItem('xyhWxUserID');
-      var appToken = localStorage.getItem('xyhWxUserID');
 
+      var userID = localStorage.getItem('xyhWxUserID');
+      var appToken = localStorage.getItem('xyhappToken');
       if (!userID || !appToken) {
         localStorage.clear();
         location.href = '<?php echo Yii::app()->request->baseUrl . '/index.php?r=/moonclub/web/wxIndex'; ?>';
@@ -79,7 +79,7 @@
       location.hash = '';
     }
     var debug = false;
-    var main = '<?php echo Yii::app()->request->baseUrl;?>/webapp/o2o/dist/js/main.js?v=20160960804';
+    var main = '<?php echo Yii::app()->request->baseUrl;?>/webapp/moonclub/dist/js/main.js?v=20160960804';
     if (debug) {
       main = '<?php echo Yii::app()->request->baseUrl;?>/webapp/o2o/js/main.js?v=' + (new Date()).getTime();
       document.getElementById('debugMain').src = '<?php echo Yii::app()->request->baseUrl; ?>/webapp/common/js/debuggap.js';

+ 106 - 106
www/protected/modules/o2o/controllers/WebController.php

@@ -1,118 +1,118 @@
 <?php
 class WebController extends O2oBaseController {
 
-    public function actionIndex() {
+	public function actionIndex() {
 
-        $signPackage = CommonWeixin::get_sign();
-        $home_page = Yii::app()->getRequest()->getParam("home_page",'');
-        $code = Yii::app()->getRequest()->getParam("code");
-        $state = Yii::app()->getRequest()->getParam("state");
+		$signPackage = CommonWeixin::get_sign();
+		$home_page = Yii::app()->getRequest()->getParam("home_page",'');
+		$code = Yii::app()->getRequest()->getParam("code");
+		$state = Yii::app()->getRequest()->getParam("state");
 
-        $userId = '';
-        $appToken = '';
-        if($code && $state){
-            $accessInfo = CommonWeixin::getAccessInfo($code);
-            $userId = '';
-            if (!isset($accessInfo['errcode']) && $state == 'yiguanjia') {
-                $appToken = md5(substr($accessInfo['openid'],2));
-                //微信校验通过,登录(注册),分发token
-                $userInfo = CommonWeixin::getUserInfo($accessInfo['access_token'], $accessInfo['openid']);
-                if (!isset($accessInfo['errcode'])) {
-                    //检查是否有注册,没有就注册
-                    $criteria = new EMongoCriteria();
-                    $criteria->unionid('==', $accessInfo['unionid']);
-                    $user = RUser::model()->find($criteria);
-                    if ($user) {
-                        $userId = $user->_id;
-                        if(!isset($user->wx_pub_openid) || empty($user->wx_pub_openid)){
-                            $user->wx_pub_openid = $accessInfo['openid'];
-                            $user->wx_have_follow = 1;
-                            $user->update(array('wx_pub_openid','wx_have_follow'),true);
-                        }
-                    }else{
-                        $userAr  = new RUser();
-                        $userAr->user_name = $userInfo['nickname'];
-                        $userAr->avatar = $userInfo['headimgurl'];
-                        $userAr->wx_pub_openid = $userInfo['openid'];
-                        $userAr->unionid = $userInfo['unionid'];
-                        $userAr->sex = $userInfo['sex'];
-                        $userAr->register_time = time();
-                        $userAr->channel = 'wxpub';
-                        $userAr->wx_have_follow = 1;
-                        $u_criteria = new EMongoCriteria();
-                        $u_criteria->user_name('==',$userInfo['nickname']);
-                        $olduser = RUser::model()->find($u_criteria);
-                        if($olduser){
-                            $user_new_neme = $userAr->user_name.'_'.substr(time(),-7);
-                            $userAr->user_name = $user_new_neme;
-                        }
+		$userId = '';
+		$appToken = '';
+		if($code && $state){
+			$accessInfo = CommonWeixin::getAccessInfo($code);
+			$userId = '';
+			if (!isset($accessInfo['errcode']) && $state == 'yiguanjia') {
+				$appToken = md5(substr($accessInfo['openid'],2));
+				//微信校验通过,登录(注册),分发token
+				$userInfo = CommonWeixin::getUserInfo($accessInfo['access_token'], $accessInfo['openid']);
+				if (!isset($accessInfo['errcode'])) {
+					//检查是否有注册,没有就注册
+					$criteria = new EMongoCriteria();
+					$criteria->unionid('==', $accessInfo['unionid']);
+					$user = RUser::model()->find($criteria);
+					if ($user) {
+						$userId = $user->_id;
+						if(!isset($user->wx_pub_openid) || empty($user->wx_pub_openid)){
+							$user->wx_pub_openid = $accessInfo['openid'];
+							$user->wx_have_follow = 1;
+							$user->update(array('wx_pub_openid','wx_have_follow'),true);
+						}
+					}else{
+						$userAr  = new RUser();
+						$userAr->user_name = $userInfo['nickname'];
+						$userAr->avatar = $userInfo['headimgurl'];
+						$userAr->wx_pub_openid = $userInfo['openid'];
+						$userAr->unionid = $userInfo['unionid'];
+						$userAr->sex = $userInfo['sex'];
+						$userAr->register_time = time();
+						$userAr->channel = 'wxpub';
+						$userAr->wx_have_follow = 1;
+						$u_criteria = new EMongoCriteria();
+						$u_criteria->user_name('==',$userInfo['nickname']);
+						$olduser = RUser::model()->find($u_criteria);
+						if($olduser){
+							$user_new_neme = $userAr->user_name.'_'.substr(time(),-7);
+							$userAr->user_name = $user_new_neme;
+						}
 
-                        $result = $userAr->save();
-                        if($result){
-                            //异步同步微信头像到七牛
-                            if (!empty($userAr->unionid) && (strpos($userAr->avatar, 'qiniu') === false)) {
-                                $list = new ARedisList('after_user_reg');
-                                $user_id = (string)$userAr->_id;
-                                $list->push($user_id);
-                            }
-                            $userId = (string)$userAr->_id;
+						$result = $userAr->save();
+						if($result){
+							//异步同步微信头像到七牛
+							if (!empty($userAr->unionid) && (strpos($userAr->avatar, 'qiniu') === false)) {
+								$list = new ARedisList('after_user_reg');
+								$user_id = (string)$userAr->_id;
+								$list->push($user_id);
+							}
+							$userId = (string)$userAr->_id;
 
-                        }else{
-                            var_dump($userAr);exit;
-                        }
-                    }
-                }else{
-                    echo $accessInfo['errcode'];
-                    die();
-                }
-            }
+						}else{
+							var_dump($userAr);exit;
+						}
+					}
+				}else{
+					echo $accessInfo['errcode'];
+					die();
+				}
+			}
 
-        }
+		}
 
-        if($home_page){
-            $this->renderpartial($home_page.'Index', array(
-                'version' => '2015082505',
-                'debug' => 'false',
-                'signPackage' => $signPackage,
-                'userId' => $userId,
-                'appToken' => $appToken,
-            ));
-        }else{
-           /* var_dump(array(
-                'version' => '2015111601',
-                'debug' => 'false',
-                'signPackage' => $signPackage,
-                'userId' => $userId,
-                'appToken' => $appToken,
-            ));exit;*/
-            $this->renderpartial('index', array(
-                'version' => '2015111601',
-                'debug' => 'false',
-                'signPackage' => $signPackage,
-                'userId' => $userId,
-                'appToken' => $appToken,
-            ));
-        }
-    }
+		if($home_page){
+			$this->renderpartial($home_page.'Index', array(
+				'version' => '2015082505',
+				'debug' => 'false',
+				'signPackage' => $signPackage,
+				'userId' => $userId,
+				'appToken' => $appToken,
+			));
+		}else{
+			/* var_dump(array(
+					 'version' => '2015111601',
+					 'debug' => 'false',
+					 'signPackage' => $signPackage,
+					 'userId' => $userId,
+					 'appToken' => $appToken,
+			 ));exit;*/
+			$this->renderpartial('index', array(
+				'version' => '2015111601',
+				'debug' => 'false',
+				'signPackage' => $signPackage,
+				'userId' => $userId,
+				'appToken' => $appToken,
+			));
+		}
+	}
 
-    //检查微信登录页
-    public function actionWxIndex() {
-        $wxConfig = Yii::app()->params['wxConfig'];
-        $home_page = Yii::app()->getRequest()->getParam("home_page",'');
-        $redirectURI = 'http://' . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . '/o2o/web/index';
-        if($home_page){
-            $appURI = Yii::app()->request->baseUrl . '/o2o/web/index'.'&home_page='.$home_page;
-            $redirectURI = $redirectURI.'/'.$home_page;
-        }else{
-            $appURI = Yii::app()->request->baseUrl . '/o2o/web/index';
-        }
-        $scope = 'snsapi_userinfo';
-        $state = 'yiguanjia';
-        $codeURI = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wxConfig['appId'] . '&redirect_uri=' . urlencode($redirectURI) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
-        $this->renderpartial('wxIndex', array(
-              'codeURI' => $codeURI,
-              'appURI' => $appURI
-        ));
-    }
+	//检查微信登录页
+	public function actionWxIndex() {
+		$wxConfig = Yii::app()->params['wxConfig'];
+		$home_page = Yii::app()->getRequest()->getParam("home_page",'');
+		$redirectURI = 'http://' . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . '/o2o/web/index';
+		if($home_page){
+			$appURI = Yii::app()->request->baseUrl . '/o2o/web/index'.'&home_page='.$home_page;
+			$redirectURI = $redirectURI.'/'.$home_page;
+		}else{
+			$appURI = Yii::app()->request->baseUrl . '/o2o/web/index';
+		}
+		$scope = 'snsapi_userinfo';
+		$state = 'yiguanjia';
+		$codeURI = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wxConfig['appId'] . '&redirect_uri=' . urlencode($redirectURI) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
+		$this->renderpartial('wxIndex', array(
+			'codeURI' => $codeURI,
+			'appURI' => $appURI
+		));
+	}
 
 }

+ 9 - 0
www/protected/vendors/pingpp/example/rsa_public_key.pem

@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0d0QxZFYeHXGeWWneib
+4Q0jUFjj4ro7bMnIJ8DjZ4w2NtLJi8p1mcFMbrIS5g95U5FUBCfAZXFb2QIaJfft
+BByCQRbon7Jb97XoTP6kfk65tLz8Q9Cank1Ah/qivPIY0aNwvq8stedq9rcuJ6OQ
+ncbfQ1217/Za50vKotYa+MEcFo9Y65biEmzq7BZeNYzuU4dGrPaCi917cfwNa8ey
+ZSpoIOBe8e5JGOtZKCfgsgfecbXxdh6jq8Qn6mmrJILapEdxlj4xfzBzAuM3snqt
+5XnDzzFWlI5Z+4lhyZr7eFVmnQSqn1HWt4VPzz/EWvxP8Rkvy89XuRXBAiO3/7Ur
+8wIDAQAB
+-----END PUBLIC KEY-----

+ 24 - 0
www/protected/vendors/pingpp/example/webhooks_verify.php

@@ -0,0 +1,24 @@
+<?php
+// 验证 webhooks 签名
+function verify_signature($raw_data, $signature, $pub_key_path) {
+    $pub_key_contents = file_get_contents($pub_key_path);
+    // php 5.4.8 以上,第四个参数可用常量 OPENSSL_ALGO_SHA256
+    return openssl_verify($raw_data, base64_decode($signature), $pub_key_contents, 'sha256');
+}
+
+// POST 原始请求数据是待验签数据,请根据实际情况获取
+// $raw_data = file_get_contents('php://input');
+$raw_data = '{"id":"evt_eYa58Wd44Glerl8AgfYfd1sL","created":1434368075,"livemode":true,"type":"charge.succeeded","data":{"object":{"id":"ch_bq9IHKnn6GnLzsS0swOujr4x","object":"charge","created":1434368069,"livemode":true,"paid":true,"refunded":false,"app":"app_vcPcqDeS88ixrPlu","channel":"wx","order_no":"2015d019f7cf6c0d","client_ip":"140.227.22.72","amount":100,"amount_settle":0,"currency":"cny","subject":"An Apple","body":"A Big Red Apple","extra":{},"time_paid":1434368074,"time_expire":1434455469,"time_settle":null,"transaction_no":"1014400031201506150354653857","refunds":{"object":"list","url":"/v1/charges/ch_bq9IHKnn6GnLzsS0swOujr4x/refunds","has_more":false,"data":[]},"amount_refunded":0,"failure_code":null,"failure_msg":null,"metadata":{},"credential":{},"description":null}},"object":"event","pending_webhooks":0,"request":"iar_Xc2SGjrbdmT0eeKWeCsvLhbL"}';
+// 签名在头部信息的 x-pingplusplus-signature 字段
+$signature = 'BX5sToHUzPSJvAfXqhtJicsuPjt3yvq804PguzLnMruCSvZ4C7xYS4trdg1blJPh26eeK/P2QfCCHpWKedsRS3bPKkjAvugnMKs+3Zs1k+PshAiZsET4sWPGNnf1E89Kh7/2XMa1mgbXtHt7zPNC4kamTqUL/QmEVI8LJNq7C9P3LR03kK2szJDhPzkWPgRyY2YpD2eq1aCJm0bkX9mBWTZdSYFhKt3vuM1Qjp5PWXk0tN5h9dNFqpisihK7XboB81poER2SmnZ8PIslzWu2iULM7VWxmEDA70JKBJFweqLCFBHRszA8Nt3AXF0z5qe61oH1oSUmtPwNhdQQ2G5X3g==';
+// 请从 https://dashboard.pingxx.com 获取「Webhooks 验证 Ping++ 公钥」
+$pub_key_path = __DIR__ . "/rsa_public_key.pem";
+
+$result = verify_signature($raw_data, $signature, $pub_key_path);
+if ($result === 1) {
+    echo 'verification succeeded';
+} elseif ($result === 0) {
+    echo 'verification failed';
+} else {
+    echo 'verification error';
+}

+ 238 - 0
www/protected/vendors/pingpp/lib/Object.php

@@ -0,0 +1,238 @@
+<?php
+
+namespace Pingpp;
+
+use ArrayAccess;
+use InvalidArgumentException;
+
+class Object implements ArrayAccess
+{
+    /**
+     * @var array Attributes that should not be sent to the API because they're
+     *    not updatable (e.g. API key, ID).
+     */
+    public static $permanentAttributes;
+    /**
+     * @var array Attributes that are nested but still updatable from the parent
+     *    class's URL (e.g. metadata).
+     */
+    public static $nestedUpdatableAttributes;
+
+    public static function init()
+    {
+        self::$permanentAttributes = new Util\Set(array('_opts', 'id'));
+        self::$nestedUpdatableAttributes = new Util\Set(array('metadata'));
+    }
+
+    protected $_opts;
+    protected $_values;
+    protected $_unsavedValues;
+    protected $_transientValues;
+    protected $_retrieveOptions;
+
+    public function __construct($id = null, $opts = null)
+    {
+        $this->_opts = $opts ? $opts : new Util\RequestOptions();
+        $this->_values = array();
+        $this->_unsavedValues = new Util\Set();
+        $this->_transientValues = new Util\Set();
+
+        $this->_retrieveOptions = array();
+        if (is_array($id)) {
+            foreach ($id as $key => $value) {
+                if ($key != 'id')
+                    $this->_retrieveOptions[$key] = $value;
+            }
+            $id = $id['id'];
+        }
+
+        if ($id)
+            $this->id = $id;
+    }
+
+    // Standard accessor magic methods
+    public function __set($k, $v)
+    {
+        if ($v === "") {
+            throw new InvalidArgumentException(
+                'You cannot set \''.$k.'\'to an empty string. '
+                .'We interpret empty strings as NULL in requests. '
+                .'You may set obj->'.$k.' = NULL to delete the property'
+            );
+        }
+
+        if (self::$nestedUpdatableAttributes->includes($k) && isset($this->$k) && is_array($v)) {
+            $this->$k->replaceWith($v);
+        } else {
+            // TODO: may want to clear from $_transientValues.  (Won't be user-visible.)
+            $this->_values[$k] = $v;
+        }
+        if (!self::$permanentAttributes->includes($k))
+            $this->_unsavedValues->add($k);
+    }
+    public function __isset($k)
+    {
+        return isset($this->_values[$k]);
+    }
+    public function __unset($k)
+    {
+        unset($this->_values[$k]);
+        $this->_transientValues->add($k);
+        $this->_unsavedValues->discard($k);
+    }
+    public function __get($k)
+    {
+        if (array_key_exists($k, $this->_values)) {
+            return $this->_values[$k];
+        } else if ($this->_transientValues->includes($k)) {
+            $class = get_class($this);
+            $attrs = join(', ', array_keys($this->_values));
+            $message = "Pingpp Notice: Undefined property of $class instance: $k. "
+                . "HINT: The $k attribute was set in the past, however. "
+                . "It was then wiped when refreshing the object "
+                . "with the result returned by Pingpp's API, "
+                . "probably as a result of a save(). The attributes currently "
+                . "available on this object are: $attrs";
+            error_log($message);
+            return null;
+        } else {
+            $class = get_class($this);
+            error_log("Pingpp Notice: Undefined property of $class instance: $k");
+            return null;
+        }
+    }
+
+    // ArrayAccess methods
+    public function offsetSet($k, $v)
+    {
+        $this->$k = $v;
+    }
+
+    public function offsetExists($k)
+    {
+        return array_key_exists($k, $this->_values);
+    }
+
+    public function offsetUnset($k)
+    {
+        unset($this->$k);
+    }
+    public function offsetGet($k)
+    {
+        return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
+    }
+
+    public function keys()
+    {
+        return array_keys($this->_values);
+    }
+
+    /**
+     * This unfortunately needs to be public to be used in Util.php
+     *
+     * @param stdObject $values
+     * @param array $opts
+     *
+     * @return Object The object constructed from the given values.
+     */
+    public static function constructFrom($values, $opts)
+    {
+        $obj = new static(isset($values->id) ? $values->id : null);
+        $obj->refreshFrom($values, $opts);
+        return $obj;
+    }
+
+    /**
+     * Refreshes this object using the provided values.
+     *
+     * @param stdObject $values
+     * @param array $opts
+     * @param boolean $partial Defaults to false.
+     */
+    public function refreshFrom($values, $opts, $partial = false)
+    {
+        $this->_opts = $opts;
+
+        // Wipe old state before setting new.  This is useful for e.g. updating a
+        // customer, where there is no persistent card parameter.  Mark those values
+        // which don't persist as transient
+        if ($partial)
+            $removed = new Util\Set();
+        else
+            $removed = array_diff(array_keys($this->_values), array_keys(get_object_vars($values)));
+
+        foreach ($removed as $k) {
+            if (self::$permanentAttributes->includes($k))
+                continue;
+            unset($this->$k);
+        }
+
+        foreach ($values as $k => $v) {
+            if (self::$permanentAttributes->includes($k))
+                continue;
+
+            if (self::$nestedUpdatableAttributes->includes($k) && is_object($v))
+                $this->_values[$k] = AttachedObject::constructFrom($v, $opts);
+            else
+                $this->_values[$k] = Util\Util::convertToPingppObject($v, $opts);
+
+            $this->_transientValues->discard($k);
+            $this->_unsavedValues->discard($k);
+        }
+    }
+
+    /**
+     * @return array A recursive mapping of attributes to values for this object,
+     *    including the proper value for deleted attributes.
+     */
+    public function serializeParameters()
+    {
+        $params = array();
+        if ($this->_unsavedValues) {
+            foreach ($this->_unsavedValues->toArray() as $k) {
+                $v = $this->$k;
+                if ($v === NULL) {
+                    $v = '';
+                }
+                $params[$k] = $v;
+            }
+        }
+
+        // Get nested updates.
+        foreach (self::$nestedUpdatableAttributes->toArray() as $property) {
+            if (isset($this->$property) && $this->$property instanceOf Object) {
+                $params[$property] = $this->$property->serializeParameters();
+            }
+        }
+        return $params;
+    }
+
+    public function __toJSON()
+    {
+        if (defined('JSON_PRETTY_PRINT'))
+            return json_encode($this->__toStdObject(), JSON_PRETTY_PRINT);
+        else
+            return json_encode($this->__toStdObject());
+    }
+
+    public function __toString()
+    {
+        return $this->__toJSON();
+    }
+
+    public function __toArray($recursive = false)
+    {
+        if ($recursive)
+            return Util\Util::convertPingppObjectToArray($this->_values);
+        else
+            return $this->_values;
+    }
+
+    public function __toStdObject()
+    {
+        return Util\Util::convertPingppObjectToStdObject($this->_values);
+    }
+}
+
+
+Object::init();

+ 316 - 0
www/webapp/common/js/ping_pay.js

@@ -0,0 +1,316 @@
+(function(){
+var
+  version = "2.0.6",
+  hasOwn = {}.hasOwnProperty,
+  PingppSDK = function(){},
+  cfg = {
+    PINGPP_NOTIFY_URL: 'https://api.pingxx.com/notify/charges/',
+    UPACP_WAP_URL: 'https://gateway.95516.com/gateway/api/frontTransReq.do',
+    ALIPAY_WAP_URL: 'http://wappaygw.alipay.com/service/rest.htm',
+    UPMP_WAP_URL: 'uppay://uppayservice/?style=token&paydata=',
+    JDPAY_WAP_URL: 'https://m.jdpay.com/wepay/web/pay',
+    BFB_SUCCESS: '<html><head><meta name="VIP_BFB_PAYMENT" content="BAIFUBAO"></head><body></body></html>',
+    YEEPAY_WAP_URL: 'https://ok.yeepay.com/paymobile/api/pay/request',
+    YEEPAY_WAP_TEST_URL: 'http://mobiletest.yeepay.com/paymobile/api/pay/request',
+    PINGPP_MOCK_URL: 'http://sissi.pingxx.com/mock.php'
+  },
+  channels = {
+    alipay_wap: 'alipay_wap',
+    upmp_wap: 'upmp_wap',
+    upacp_wap: 'upacp_wap',
+    bfb_wap: 'bfb_wap',
+    wx_pub: 'wx_pub',
+    yeepay_wap: 'yeepay_wap',
+    jdpay_wap: 'jdpay_wap'
+  };
+
+PingppSDK.prototype = {
+
+  version: version,
+
+  _resultCallback: undefined,
+
+  _jsApiParameters: {},
+
+  _debug: false,
+
+  _signature: undefined,
+
+  createPayment: function(charge_json, callback, signature, debug) {
+    if (typeof callback == "function") {
+      this._resultCallback = callback;
+    }
+    if (typeof signature != "undefined") {
+      this._signature = signature;
+    }
+    if (typeof debug == "boolean") {
+      this._debug = debug;
+    }
+    var charge;
+    if(typeof charge_json == "string"){
+      try{
+        charge = JSON.parse(charge_json);
+      }catch(err){
+        this._innerCallback("fail", this._error("json_decode_fail"));
+        return;
+      }
+    }else{
+      charge = charge_json;
+    }
+    if(typeof charge == "undefined"){
+      this._innerCallback("fail", this._error("json_decode_fail"));
+      return;
+    }
+    if(!hasOwn.call(charge, 'id')){
+      this._innerCallback("fail", this._error("invalid_charge", "no_charge_id"));
+      return;
+    }
+    if(!hasOwn.call(charge, 'channel')){
+      this._innerCallback("fail", this._error("invalid_charge", "no_channel"));
+      return;
+    }
+    var channel = charge['channel'];
+    if(!hasOwn.call(charge, 'credential')){
+      this._innerCallback("fail", this._error("invalid_charge", "no_credential"));
+      return;
+    }
+    if (!charge['credential']) {
+      this._innerCallback("fail", this._error("invalid_credential", "credential_is_undefined"));
+      return;
+    }
+    if (!hasOwn.call(channels, channel)) {
+      this._innerCallback("fail", this._error("invalid_charge", "no_such_channel:" + channel));
+      return;
+    }
+    if (!hasOwn.call(charge['credential'], channel)) {
+      this._innerCallback("fail", this._error("invalid_credential", "no_valid_channel_credential"));
+      return;
+    }
+    if(!hasOwn.call(charge, 'livemode')){
+      this._innerCallback("fail", this._error("invalid_charge", "no_livemode"));
+      return;
+    }
+    if (charge['livemode'] == false) {
+      this._testModeNotify(charge);
+      return;
+    }
+    var credential = charge['credential'][channel];
+    if (channel == channels.upmp_wap) {  // 调起银联支付控件,客户端需要安装银联支付控件才能调起
+      location.href = cfg.UPMP_WAP_URL + credential['paydata'];
+    } else if (channel == channels.upacp_wap) {
+      form_submit(cfg.UPACP_WAP_URL, 'post', credential);
+    } else if (channel == channels.alipay_wap) {  // 调起支付宝手机网页支付
+      credential['_input_charset'] = 'utf-8';
+      if (typeof _AP != "undefined") {
+        var query = stringify_data(credential, channel, true);
+        _AP.pay(cfg.ALIPAY_WAP_URL + "?" + query);
+      } else {
+        form_submit(cfg.ALIPAY_WAP_URL, 'get', credential);
+      }
+    } else if (channel == channels.bfb_wap) {
+      if (!hasOwn.call(credential, 'url')) {
+        this._innerCallback("fail", this._error("invalid_credential", "missing_field:url"));
+        return;
+      }
+      location.href = credential['url'] + '?' + stringify_data(credential, channel);
+    } else if (channel == channels.yeepay_wap) {
+      var fields = ["merchantaccount", "encryptkey", "data"];
+      for(var k in fields){
+        if(typeof fields[k] !== "function" && !hasOwn.call(credential, fields[k])){
+          this._innerCallback("fail", this._error("invalid_credential", "missing_field_"+fields[k]));
+          return;
+        }
+      }
+      if (hasOwn.call(credential, "mode") && credential["mode"] == "test") {
+        location.href = cfg.YEEPAY_WAP_TEST_URL + '?' + stringify_data(credential, channel, true);
+      } else {
+        location.href = cfg.YEEPAY_WAP_URL + '?' + stringify_data(credential, channel, true);
+      }
+    } else if (channel == channels.wx_pub) {
+      var fields = ["appId", "timeStamp", "nonceStr", "package", "signType", "paySign"];
+      for (var k in fields) {
+        if (typeof fields[k] !== "function" && !hasOwn.call(credential, fields[k])) {
+          this._innerCallback("fail", this._error("invalid_credential", "missing_field_"+fields[k]));
+          return;
+        }
+      }
+      this._jsApiParameters = credential;
+      this._callpay();
+    } else if (channel == channels.jdpay_wap) {
+      form_submit(cfg.JDPAY_WAP_URL, 'post', credential);
+    }
+  },
+
+  _jsApiCall: function(){
+    var self = this;
+    if(self._jsApiParameters != {}){
+      WeixinJSBridge.invoke(
+        'getBrandWCPayRequest',
+        self._jsApiParameters,
+        function(res){
+          if(res.err_msg == 'get_brand_wcpay_request:ok'){
+            self._innerCallback("success");
+          }else if(res.err_msg == 'get_brand_wcpay_request:cancel'){
+            self._innerCallback("cancel");
+          }else{
+            self._innerCallback("fail", self._error("wx_result_fail", res.err_msg));
+          }
+        }
+      );
+    }
+  },
+
+  _callpay: function(){
+    var self = this;
+    if (typeof wx != "undefined" && typeof self._signature != "undefined") {
+      var wxConfigFailed = false;
+      wx.config({
+        debug: self._debug,
+        appId: self._jsApiParameters["appId"],
+        timestamp: self._jsApiParameters["timeStamp"],
+        nonceStr: self._jsApiParameters["nonceStr"],
+        signature: self._signature,
+        jsApiList: ['chooseWXPay']
+      });
+      wx.ready(function(){
+        if (wxConfigFailed) {
+          return;
+        }
+        wx.chooseWXPay({
+          timestamp: self._jsApiParameters["timeStamp"],
+          nonceStr: self._jsApiParameters["nonceStr"],
+          "package": self._jsApiParameters["package"],
+          signType: self._jsApiParameters["signType"],
+          paySign: self._jsApiParameters["paySign"],
+          success: function(res) {
+            if (res.errMsg == "chooseWXPay:ok") {
+              self._innerCallback("success");
+            } else {
+              self._innerCallback("fail", self._error("wx_result_fail", res.errMsg));
+            }
+          },
+          cancel: function(res) {
+            self._innerCallback("cancel");
+          },
+          fail: function(res) {
+            self._innerCallback("fail", self._error("wx_result_fail", res.errMsg));
+          }
+        });
+      });
+      wx.error(function(res){
+        wxConfigFailed = true;
+        self._innerCallback("fail", self._error("wx_config_error", res.errMsg));
+      });
+    } else if (typeof WeixinJSBridge == "undefined") {
+      function eventCallback(){
+        self._jsApiCall();
+      }
+      if (document.addEventListener) {
+        document.addEventListener('WeixinJSBridgeReady', eventCallback, false);
+      } else if(document.attachEvent) {
+        document.attachEvent('WeixinJSBridgeReady', eventCallback);
+        document.attachEvent('onWeixinJSBridgeReady', eventCallback);
+      }
+    }else{
+      this._jsApiCall();
+    }
+  },
+
+  _error: function(msg, extra) {
+    msg = (typeof msg == "undefined") ? "" : msg;
+    extra = (typeof extra == "undefined") ? "" : extra;
+    return {
+      msg:msg,
+      extra:extra
+    };
+  },
+
+  _innerCallback: function(result, err) {
+    if (typeof this._resultCallback == "function") {
+      if (typeof err == "undefined") {
+        err = this._error();
+      }
+      this._resultCallback(result, err);
+    }
+  },
+
+  _testModeNotify: function(charge) {
+    var self = this;
+    if (charge['channel'] == channels.wx_pub) {
+      var dopay = confirm("模拟付款?");
+      if (dopay) {
+        var request = new XMLHttpRequest();
+        request.open('GET', cfg.PINGPP_NOTIFY_URL+charge['id']+'?livemode=false', true);
+        request.onload = function() {
+          if (request.status >= 200 && request.status < 400 && request.responseText == "success"){
+            self._innerCallback("success");
+          } else {
+            var extra = 'http_code:'+request.status+';response:'+request.responseText;
+            self._innerCallback("fail", self._error("testmode_notify_fail", extra));
+          }
+        };
+        request.onerror = function() {
+          self._innerCallback("fail", self._error("network_err"));
+        };
+        request.send();
+      } else {
+        self._innerCallback("cancel");
+      }
+    } else {
+      var params = {
+        'ch_id': charge['id'],
+        'scheme': 'http',
+        'channel': charge['channel']
+      };
+      if (hasOwn.call(charge, 'order_no')) {
+        params['order_no'] = charge['order_no'];
+      }
+      if (hasOwn.call(charge, 'extra')) {
+        params['extra'] = encodeURIComponent(JSON.stringify(charge['extra']));
+      }
+      location.href = cfg.PINGPP_MOCK_URL+'?'+stringify_data(params);
+    }
+  }
+};
+
+function form_submit(url, method, params) {
+  var form = document.createElement("form");
+  form.setAttribute("method", method);
+  form.setAttribute("action", url);
+
+  for (var key in params) {
+    if (hasOwn.call(params, key)) {
+      var hiddenField = document.createElement("input");
+      hiddenField.setAttribute("type", "hidden");
+      hiddenField.setAttribute("name", key);
+      hiddenField.setAttribute("value", params[key]);
+      form.appendChild(hiddenField);
+    }
+  }
+
+  document.body.appendChild(form);
+  form.submit();
+}
+
+function stringify_data(data, channel, urlencode) {
+  if (typeof urlencode == "undefined") {
+    urlencode = false;
+  }
+  var output = [];
+  for (var i in data) {
+    if (channel == "bfb_wap" && i == "url") {
+      continue;
+    }
+    if (channel == "yeepay_wap" && i == "mode") {
+      continue;
+    }
+    output.push(i + '=' + (urlencode ? encodeURIComponent(data[i]) : data[i]));
+  }
+  return output.join('&');
+}
+
+PingppSDK.prototype.payment = PingppSDK.prototype.createPayment;
+window.pingpp = new PingppSDK();
+// aliases
+window.PINGPP_PAY_SDK = window.PINGPP_WX_PUB = window.pingpp;
+})();

+ 27 - 0
www/webapp/moonclub/Gruntfile.js

@@ -0,0 +1,27 @@
+module.exports = function(grunt) {
+    grunt.initConfig({
+        tmod: {
+            template: {
+                src: './tpl',
+                options: {
+                    combo: true,
+					dest: '../js/build'
+                } 
+            }
+        },
+        watch: {
+            template: {
+                //files: '<%=tmod.template.src%>',
+                files: './tpl',
+                tasks: ['tmod'],
+                options: {
+                    spawn: false
+                }
+            }
+        }
+    });
+
+    grunt.loadNpmTasks('grunt-tmod');
+    grunt.loadNpmTasks('grunt-contrib-watch');
+    grunt.registerTask('default', ['tmod', 'watch']);
+};

+ 44 - 0
www/webapp/moonclub/build.js

@@ -0,0 +1,44 @@
+({
+	mainConfigFile: './js/main.js',
+	baseUrl: './js',
+	waitSeconds: 200,
+	paths: {
+		"BMap": "empty:"
+	},
+	dir: './dist/js',
+	modules: [{
+		name: 'main',
+		include: [
+			'ratchet',
+			'pageHome',
+			'pageHelp',
+			'pageAbout',
+			'pageRecharge',
+			'pageMine',
+			'pageSecondary',
+			'pageHomestay',
+			'pageHomeenterprise',
+			'pageProduct',
+			'pagePlaceOrder',
+			'pagePicker',
+			'pageLongOrder',
+			'pagePay',
+			'pageMyOrder',
+			'pageMyCoupon',
+			'pageSuccess',
+			'pageAgreement',
+			'pageAddressList',
+			'pageAddressAdd',
+			'pageAddressDetail',
+			'pageAddressPoisiton',
+			'pageBeautician',
+			'pageBeauticianDetail',
+			'pageHire',
+			'panelAlert',
+			'panelDataPicker',
+			'panelDataPicker',
+			'panelProductOption',
+			'panelPostReview'
+		]
+	}]
+})

+ 19 - 0
www/webapp/moonclub/config.js

@@ -0,0 +1,19 @@
+{
+    // 程序的根路径
+    appDir: "some/path/trunk",
+    // 脚本的根路径
+    // 相对于程序的根路径
+    baseUrl: "./js",
+    // 打包输出到的路径
+    dir: "../some/path/release",
+    // 需要打包合并的js模块,数组形式,可以有多个
+    // name 以 baseUrl 为相对路径,无需写 .js 后缀
+    // 比如 main 依赖 a 和 b,a 又依赖 c,则 {name: 'main'} 会把 c.js a.js b.js main.js 合并成一个 main.js
+    modules: [
+        {name: 'main'}
+        ...
+    ]
+    // 通过正则以文件名排除文件/文件夹
+    // 比如当前的正则表示排除 .svn、.git 这类的隐藏文件
+    fileExclusionRegExp: /^\./
+}

+ 47 - 0
www/webapp/moonclub/css/address.css

@@ -0,0 +1,47 @@
+.spa-page-address-list .username {
+	display: inline-block;
+	font-size: 14px;
+}
+
+.spa-page-address-list .mobile {
+	display: inline-block;
+	margin-left: 20px;
+	font-size: 14px;
+	font-size: 14px;
+}
+
+.spa-page-address-list .address {
+	font-size: 12px;
+}
+.spa-page-address-list .btn-block {
+	margin-bottom:0!important;
+}
+.spa-page-address-poisition .search-form {
+	position: relative;
+}
+.spa-page-address-poisition .search-city {
+	position: absolute;
+	left: 15px;
+	line-height: 40px;
+}
+.spa-page-address-poisition #search-text {
+	padding-right: 80px;
+	padding-left: 60px;
+}
+.spa-page-address-poisition .search-form .search-btn {
+	position: absolute;
+	right: 0;
+	top: 0;
+	bottom: 15px;
+	width: 80px;
+	background: #8bc34a;
+	color: #fff;
+	border: none;
+}
+.spa-page-address-poisition .search-form .search-btn:active {
+	outline: 0;
+}
+.spa-page-address-detail .btn-delete {
+	line-height: 44px;
+	z-index: 20;
+}

+ 9 - 0
www/webapp/moonclub/css/agreement.css

@@ -0,0 +1,9 @@
+.spa-page-agreement .content {
+	background-color: white;
+}
+
+.spa-page-agreement .page-content {
+	font-size: 14px;
+	color: #333;
+	padding: 15px;
+}

File diff suppressed because it is too large
+ 29 - 0
www/webapp/moonclub/css/append.css


+ 79 - 0
www/webapp/moonclub/css/bargain.css

@@ -0,0 +1,79 @@
+#bargainScroll .prevent-scroll {
+    width: 100%;
+    position: fixed;
+    bottom: 0;
+    background-color: #2a2400;
+}
+#bargainScroll .prevent-scroll .width-percent-33 .title-container-square {
+    padding: 20%;
+    position: relative;
+    text-align: center;
+}
+#bargainScroll .prevent-scroll .width-percent-33 .title-container-square a {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+}
+#bargainScroll .prevent-scroll .width-percent-33 .title-container-square a .logo {
+    background-size: 65% 65%;
+    background-position: center center;
+    padding: 10%;
+    margin-top: 5px;
+    display: inline-block;
+    border-radius: 50%;
+}
+#bargainScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+    display: block;
+    margin-top: -5px;
+    font-size: 12px;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home.png") no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .name {
+    color: #fff;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(1) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home_pre.png") no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(1) a .name {
+    color: #b89400;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(2) a .logo {
+    border-radius: 50%;
+    display: inline-block;
+    padding: 25%;
+    background-size: 100%;
+    margin-top: -15px;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_butler.png") 0 0 no-repeat #2a2400;
+    background-size: 65% 65%;
+    background-position: center;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(3) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me_pre.png");
+    background-repeat: no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(3) a .name {
+    color: #b89400;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me.png");
+    background-repeat: no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#bargainScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .name {
+    color: #fff;
+}

+ 157 - 0
www/webapp/moonclub/css/beautician.css

@@ -0,0 +1,157 @@
+.beautician-content .page-content {
+  padding-bottom: 0;
+}
+.beautician-content .recommend {
+  padding: 10px 10px 0 10px;
+}
+#beauticianScroll .table-view-divider {
+  font-size: 12px;
+  font-weight: 400;
+}
+
+#beauticianScroll .media-object {
+  width: 42px;
+  height: 42px;
+  overflow: hidden;
+  text-align: center;
+}
+#beauticianScroll .media-object img {
+  max-height: 100%;
+}
+#beauticianScroll .recommend-time {
+  font-size: 12px;
+}
+#beauticianScroll .favor-count {
+  margin-left: 10px;
+}
+#beauticianDetailScroll {
+  background: #fff;
+}
+#beauticianDetailScroll .page-content {
+  padding-top: 0;
+}
+#beauticianDetailScroll .tech-info {
+  padding-top: 15px;
+}
+#beauticianDetailScroll .tech-info img {
+  width: 100px;
+  border-radius: 50%;
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+#beauticianDetailScroll .name,
+#beauticianDetailScroll .favor {
+  text-align: center;
+  margin-bottom: 0;
+}
+#beauticianDetailScroll .name {
+  padding-top: 10px;
+  font-size: 20px;
+  margin-bottom: 0px;
+  color: #333;
+}
+#beauticianDetailScroll .desc {
+  padding: 10px;
+}
+#beauticianDetailScroll .recommend {
+  margin-bottom: 0;
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+  padding: 10px;
+}
+
+.spa-page-beautician-detail #tech-comment .table-view-cell {
+  padding: 15px;
+}
+.spa-page-beautician-detail .user-info-container {
+  margin-bottom: 5px;
+}
+
+.spa-page-beautician-detail .user-info-btn {
+  display: inline-block;
+  padding-right: 10px;
+}
+
+.spa-page-beautician-detail .user-avatar {
+  width: 30px;
+  height: 30px;
+  border-radius: 15px;
+  margin-right: 10px;
+  vertical-align: middle;
+}
+
+.spa-page-beautician-detail .user-name {
+  display: inline-block;
+  vertical-align: middle;
+  color: #8bc34a;
+  font-size: 14px;
+}
+
+.spa-page-beautician-detail .star-label {
+  vertical-align: middle;
+}
+.spa-page-beautician-detail .img-preview-list {
+  font-size: 0;
+  margin-top: 10px;
+}
+.spa-page-beautician-detail .img-preview-list .width-percent-33 {
+  display: inline-block;
+  vertical-align: top;
+}
+.spa-page-beautician-detail .img-preview {
+  position: relative;
+}
+.img-count {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  width: 24px;
+  height: 18px;
+  line-height: 18px;
+  font-size: 12px;
+  text-align: center;
+  color: #fff;
+  background: rgba(0, 0, 0, 0.6);
+}
+.spa-page-beautician-detail .img-preview-list img {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 100%;
+  height: 100%;
+}
+.spa-page-beautician-detail .review-time {
+  font-size: 10px;
+  color: #999;
+  text-align: right;
+}
+
+.spa-page-beautician-detail .review-content {
+  margin-top: 6px;
+  font-size: 14px;
+  color: #333;
+  line-height: 20px;
+}
+
+.spa-page-beautician-detail .btn-more-container {
+  height: 64px;
+}
+
+.spa-page-beautician-detail .btn-more-review {
+  width:30%;
+  height: 38px;
+  line-height: 38px;
+  padding: 0;
+}
+.spa-page-beautician-detail .btn-more-container {
+  height: 64px;
+}
+
+.spa-page-beautician-detail .btn-more-review {
+  width:30%;
+  height: 38px;
+  line-height: 38px;
+  padding: 0;
+}

File diff suppressed because it is too large
+ 294 - 0
www/webapp/moonclub/css/common.css


+ 254 - 0
www/webapp/moonclub/css/desc.css

@@ -0,0 +1,254 @@
+.spa-page-desc {
+	font-size: 13px;
+	color: #333333;
+}
+
+.spa-page-desc .advantage {
+	padding: 15px;
+}
+
+.spa-page-desc .advantage-title {
+	width: 100%;
+	text-align: center;
+	font-size: 16px;
+	font-weight: bold;
+	position: relative;
+	height: 44px;
+	line-height: 44px;
+	overflow: hidden;
+}
+
+.spa-page-desc .advantage-title-self {
+	background-color: #8bc34a;
+	width: 50%;
+	color: #ffffff;
+	border-radius: 22px 0 0 22px;
+}
+
+.spa-page-desc .advantage-title-blank {
+	position: absolute;
+	left: 44%;
+	top: -50%;
+	z-index: 1;
+	transform: rotate(-66deg);
+	-webkit-transform: rotate(23deg);
+	width: 12%;
+	height: 200%;
+	background-color: #efeff4;
+}
+
+.spa-page-desc .advantage-title-sign {
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	z-index: 2;
+	-webkit-transform: translate(-50%, -50%);
+	transform: translate(-50%, -50%);
+}
+
+.spa-page-desc .advantage-title-other {
+	background-color: #cdced0;
+	width: 50%;
+	color: #666666;
+	border-radius: 0 22px 22px 0;
+}
+
+.spa-page-desc .advantage-detail {
+	border-radius: 6px;
+	margin: 20px 0;
+	overflow: hidden;
+}
+
+.spa-page-desc .advantage-detail ul {
+	padding: 0;
+	margin: 0;
+}
+
+.spa-page-desc .advantage-detail-cell {
+	position: relative;
+	height: 44px;
+	line-height: 44px;
+	text-align: left;
+	font-size: 13px;
+	color: #ffffff;
+}
+
+.spa-page-desc .advantage-detail-cell .cell-left,
+.spa-page-desc .advantage-detail-cell .cell-right {
+	padding-left: 10px;
+	width: 50%;
+}
+
+.spa-page-desc .advantage-detail-cell .cell-arrow {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+	background-repeat: no-repeat;
+	background-size: cover;
+	width: 5px;
+	height: 8px;
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(odd) .cell-left {
+	background-color: #9ccc65;
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(even) .cell-left {
+	background-color: #84ba47;
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(odd) .cell-right {
+	background-color: #d4d5d7;
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(even) .cell-right {
+	background-color: #c3c4c6;
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(odd) .cell-arrow {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAARCAMAAAA8P6bpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAYFBMVEWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGWczGX///8CoIk/AAAAHnRSTlMAnwrPJO9P/ocDvhbkO/pvqQyspWzjOLwVhEwhngiqTKsIAAAAAWJLR0QfBQ0QvQAAAE5JREFUCNdFzksSgCAMA1BQUfyhooDf3P+Y7pKu3nQ6TYytDAd1I8O1Mjrf08AwyphmGWGRgXWTEeWd+3DwPmX+KSdzL+a6Wz0f9nw/8gc1xArT3KJM0wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wNS0xOFQwMzowODo0MCswMDowMNGYU3kAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDUtMThUMDM6MDg6NDArMDA6MDCgxevFAAAAAElFTkSuQmCC);
+}
+
+.spa-page-desc .advantage-detail-cell:nth-child(even) .cell-arrow {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAARCAMAAAA8P6bpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAYFBMVEWEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukeEukf////06S1NAAAAHnRSTlMAnwrPJO9P/ocDvhbkO/pvqQyspWzjOLwVhEwhngiqTKsIAAAAAWJLR0QfBQ0QvQAAAE5JREFUCNdFzksSgCAMA1BQUfyhooDf3P+Y7pKu3nQ6TYytDAd1I8O1Mjrf08AwyphmGWGRgXWTEeWd+3DwPmX+KSdzL+a6Wz0f9nw/8gc1xArT3KJM0wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wNS0xOFQwMzoyMDozOSswMDowMAV+5oYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDUtMThUMDM6MjA6MzkrMDA6MDB0I146AAAAAElFTkSuQmCC);
+}
+
+.spa-page-desc .group-title {
+	height: 32px;
+	line-height: 32px;
+	color: #ffffff;
+	background-color: #8bc34a;
+	padding-left: 15px;
+	font-size: 16px;
+	width: 112px;
+	border-radius: 0 16px 16px 0;
+	font-weight: bold;
+}
+
+.spa-page-desc .group-detail {
+	background-color: white;
+	padding: 15px;
+}
+
+.spa-page-desc .product-title {
+	color: #333333;
+	font-size: 16px;
+}
+
+.spa-page-desc .price-table {
+	border-width: 1px;
+	border-color: #e3f1d4;
+	border-style: solid;
+	width: 100%;
+	background-color: rgba(232, 243, 219, 0.6);
+	margin: 15px 0;
+}
+
+.spa-page-desc .price-table th, .spa-page-desc .price-table td {
+	width: 20%;
+	text-align: center;
+	height: 40px;
+	border-width: 0 1px 1px 0;
+	border-color: #deeecb;
+	border-style: solid;
+}
+
+.spa-page-desc .price-table tr td:last-child, .spa-page-desc .price-table tr th:last-child {
+	border-right-width: 0;
+}
+
+.spa-page-desc .price-table tr:last-child td, .spa-page-desc .price-table tr:last-child th {
+	border-bottom-width: 0;
+}
+
+.spa-page-desc .price-table th {
+	color: #a2cf6e;
+	font-size: 12px;
+}
+
+.spa-page-desc .price-table td {
+	color: #333333;
+	font-size: 12px;
+}
+
+.spa-page-desc .price-table .pet-type {
+	font-size: 15px;
+}
+
+.spa-page-desc .product-desc {
+	color: #666666;
+	font-size: 10px;
+	margin-bottom: 10px;
+}
+
+/* process */
+
+.spa-page-desc .process ul {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+}
+
+.spa-page-desc .process-box {
+	width: 100%;
+}
+
+.spa-page-desc .process-line {
+	width: 20px;
+	position: relative;
+}
+
+.spa-page-desc .process ul li:first-child .line {
+	top: 20px;
+}
+
+.spa-page-desc .process ul li:last-child .line {
+	height: 20px;
+}
+
+.spa-page-desc .process-line .line {
+	width: 1px;
+	height: 100%;
+	background-color: #8bc34a;
+	position: absolute;
+	top: 0;
+	right: 13px;
+	z-index: 1;
+}
+
+.spa-page-desc .process-line .arrow {
+	width: 6px;
+	height: 9px;
+	position: absolute;
+	top: 16px;
+	right: 0;
+	background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAASCAYAAABvqT8MAAAAzklEQVQoU5WSTQ6CMBBGOwgFExMTNwLRpWdQ8SD+7eGybKvGLjRGEyMrvMDYEjGkgoNdz5t5802BtXxpmjrhpL+ENvWnh/C9Lk8AMSSBe36cosW2gMzVzRsBIQQfjOwVACyqFrVAVcFU/gKuuZx1LNyUCo1AoTC218Ag+hVEMeGc7QLXc2KdApUa3J77yALVGZFTxUVKfwOaumSH0OGQqAh9asonJSml2xuiWprNyaWrBZRi7eHeirFSDMjDlQVNdyE/n6lIAuZhWwEaKhVfsaBQAjKbP8QAAAAASUVORK5CYII=) no-repeat;
+	background-size: cover;
+}
+
+.spa-page-desc .process-line .circle {
+	width: 7px;
+	height: 7px;
+	border: 1px solid #8bc34a;
+	border-radius: 50%;
+	position: absolute;
+	top: 17px;
+	right: 10px;
+	z-index: 2;
+	background: white;
+}
+
+.spa-page-desc .process-step {
+	background-color: rgba(232, 243, 219, 0.6);
+	border-radius: 5px;
+	padding: 10px;
+	margin-bottom: 10px;
+}
+
+/* notes */
+
+.spa-page-desc .notes .group-detail {
+	padding-bottom: 30px;
+}

File diff suppressed because it is too large
+ 39 - 0
www/webapp/moonclub/css/hire.css


+ 320 - 0
www/webapp/moonclub/css/home.css

@@ -0,0 +1,320 @@
+body {
+	/*background: #bdbdbd;*/
+}
+
+.swiper-container {
+	width: 100%;
+	color: #fff;
+	text-align: center;
+}
+
+.swiper-slide {
+	width: 100%;
+	height: 100%;
+	display: block;
+}
+
+.swiper-slide .title {
+	font-style: italic;
+	font-size: 42px;
+	margin-top: 80px;
+	margin-bottom: 0;
+	line-height: 45px;
+}
+
+.swiper-slide img {
+	width: 100%;
+	display: block;
+}
+
+.pagination {
+	position: absolute;
+	z-index: 20;
+	left: 10px;
+	bottom: 0.15rem;
+	width: 100%;
+	text-align: center;
+}
+
+.swiper-pagination-switch {
+	display: inline-block;
+	width: 0.4rem;
+	height: 0.4rem;
+	border-radius: 10px;
+	background: rgba(153, 153, 153, 0.5);
+	box-shadow: 0px 1px 2px #555 inset;
+	margin: 0 3px;
+	cursor: pointer;
+}
+
+.swiper-visible-switch {
+	background: #aaa;
+}
+
+.swiper-active-switch {
+	background: #190f0d;
+	box-shadow: 0px 1px 2px #555 inset;
+}
+
+/*swiper结束*/
+.content-header {
+	width: 100%;
+	height: 44px;
+}
+
+/*图标*/
+.home-content .home-remy {
+	margin-top: 10px;
+	margin-bottom: 0px;
+	width: 100%;
+}
+
+.home-content .home-box {
+	/*margin-top: 1.5rem;*/
+}
+
+.home-content .home-box .width-percent-50 {
+	margin-top: 10px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	float: left;
+}
+
+.home-content .home-box .width-percent-50:nth-child(1),
+.home-content .home-box .width-percent-50:nth-child(3) {
+	padding-left: 4%;
+	padding-right: 2%;
+}
+
+.home-content .home-box .width-percent-50:nth-child(2),
+.home-content .home-box .width-percent-50:nth-child(4) {
+	padding-right: 4%;
+	padding-left: 2%;
+}
+
+.home-content .home-box .width-percent-50 img {
+	width: 100%;
+}
+
+/*媒体查询开始*/
+@media (max-width: 320px) {
+	.home-content .home-box {
+		height: 320px;
+	}
+}
+
+@media (min-width: 412px) {
+	.home-content .home-box {
+		height: 412px;
+	}
+}
+
+@media (min-width: 414px) {
+
+	.home-content .home-remy {
+		margin-bottom: 30px;
+	}
+}
+
+@media (min-width: 768px) {
+	.home-content {
+
+	}
+
+	.home-content .home-remy {
+		margin-top: 10px;
+		margin-bottom: 0px;
+		width: 100%;
+	}
+
+	.home-content .home-box {
+		width: 100%;
+		margin-top: 0rem;
+		height: 36rem;
+	}
+
+	.home-content .home-box .width-percent-50 {
+		margin-top: 1rem;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		text-align: center;
+		/*图片左右内边距*/
+		/*图片上下外边距*/
+	}
+
+	.home-content .home-box .width-percent-50:nth-child(1),
+	.home-content .home-box .width-percent-50:nth-child(3) {
+		padding-left: 2rem;
+		padding-right: 1rem;
+	}
+
+	.home-content .home-box .width-percent-50:nth-child(2),
+	.home-content .home-box .width-percent-50:nth-child(4) {
+		padding-left: 1rem;
+		padding-right: 2rem;
+	}
+
+	.home-content .home-box .width-percent-50 img {
+		width: 100%;
+	}
+
+	.prevent-scroll .width-percent-33 .title-container-square a .name {
+		display: block;
+		margin-top: 5px;
+		font-size: 1.6rem;
+	}
+}
+
+/*弹框*/
+.popup-box {
+	/*background: #fff;*/
+	position: fixed;
+	top: 0;
+}
+
+.popup {
+	position: fixed;
+	top: 0;
+	z-index: 5000;
+	background: rgba(0, 0, 0, 0.3);
+}
+
+.popup-img {
+	position: fixed;
+	width: 75%;
+	left: 12.5%;
+	top: 5%;
+	background: url("http://odulvej8l.bkt.clouddn.com/%E8%B7%B3%E8%BD%AC%E5%9B%BE.jpg");
+	background-repeat: no-repeat;
+	background-size: 100%;
+	z-index: 6000;
+}
+
+.popup-close {
+	position: fixed;
+	right: 12.5%;
+	top: 5%;
+	width: 1rem;
+	height: 1rem;
+	line-height: 1.1rem;
+	z-index: 7000;
+	text-align: center;
+	color: white;
+	font-family: 'Helvetica', 'Arial', sans-serif;
+	font-weight: lighter;
+}
+
+.nav-li-box {
+	position: relative;
+	width: 20px;
+	height: 20px;
+	border-radius: 50%;
+	background: black;
+}
+
+.nav-li {
+	cursor: pointer;
+	display: block;
+	position: absolute;
+	width: 15px;
+	height: 15px;
+	border-radius: 50%;
+	visibility: visible;
+}
+
+.nav-li hr {
+	border: 1px solid #ffffff;
+	width: 100%;
+	margin: 7px 0;
+	border-radius: 10%;
+}
+
+.rotatel {
+	transform: rotate(-45deg);
+	top: 3px;
+	left: 2px;
+}
+
+.rotater {
+	transform: rotate(45deg);
+	top: 10px;
+}
+
+.navli-1 {
+	transition: 500ms;
+	position: absolute;
+}
+
+.navli-2 {
+	transition: 500ms;
+	top: 3px;
+	position: absolute;
+	left: 1px;
+}
+
+.box {
+	width: 100%;
+	position: relative;
+}
+
+.box .box-package {
+	width: 33%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	/*background-color: #00a0e9;*/
+}
+
+.box .box-package div {
+	width: 100%;
+	height: 25%;
+}
+
+.box .box-package div:nth-child(1) {
+	/*background-color: #17e936;*/
+}
+
+.box .box-package div:nth-child(2) {
+	/*background-color: #70b6e9;*/
+}
+
+.box .box-package div:nth-child(3) {
+	/*background-color: #e98d7a;*/
+}
+
+.box .box-package div:nth-child(4) {
+	/*background-color: #3954e9;*/
+}
+
+.box .characteristic {
+position: absolute;
+	top: 0;
+	right: 0%;
+	width: 70%;
+	height: 100%;
+	/*background-color: #dcd90f;*/
+}
+
+.box img {
+	width: 100%;
+	display: inline-block;
+}
+
+.box-footer {
+	z-index: 2;
+	width: 100%;
+	position: fixed;
+	bottom: 0;
+	/*display: -webkit-box;*/
+	/*display: box;*/
+}
+.box-footer div{
+	width: 33.33%;
+	float: left;
+	/*display: inline-block;*/
+	padding-top: 13.33%;
+	/*background-color: #fa0090;*/
+}

+ 79 - 0
www/webapp/moonclub/css/homeenterprise.css

@@ -0,0 +1,79 @@
+#homestayScroll .prevent-scroll {
+    width: 100%;
+    position: fixed;
+    bottom: 0;
+    background-color: #2a2400;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square {
+    padding: 20%;
+    position: relative;
+    text-align: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .logo {
+    background-size: 65% 65%;
+    background-position: center center;
+    padding: 10%;
+    margin-top: 5px;
+    display: inline-block;
+    border-radius: 50%;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+    display: block;
+    margin-top: -5px;
+    font-size: 12px;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home.png") no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .name {
+    color: #fff;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home_pre.png") no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .name {
+    color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(2) a .logo {
+    border-radius: 50%;
+    display: inline-block;
+    padding: 25%;
+    background-size: 100%;
+    margin-top: -15px;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_butler.png") 0 0 no-repeat #2a2400;
+    background-size: 65% 65%;
+    background-position: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me_pre.png");
+    background-repeat: no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .name {
+    color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me.png");
+    background-repeat: no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .name {
+    color: #fff;
+}

+ 79 - 0
www/webapp/moonclub/css/homestay.css

@@ -0,0 +1,79 @@
+#homestayScroll .prevent-scroll {
+	width: 100%;
+	position: fixed;
+	bottom: 0;
+	background-color: #2a2400;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square {
+	padding: 20%;
+	position: relative;
+	text-align: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .logo {
+	background-size: 65% 65%;
+	background-position: center center;
+	padding: 10%;
+	margin-top: 5px;
+	display: inline-block;
+	border-radius: 50%;
+}
+#homestayScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+	display: block;
+	margin-top: -5px;
+	font-size: 12px;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_home.png") no-repeat;
+	background-size: 100%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .name {
+	color: #fff;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_home_pre.png") no-repeat;
+	background-size: 90%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(1) a .name {
+	color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(2) a .logo {
+	border-radius: 50%;
+	display: inline-block;
+	padding: 25%;
+	background-size: 100%;
+	margin-top: -15px;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_butler.png") 0 0 no-repeat #2a2400;
+	background-size: 65% 65%;
+	background-position: center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_me_pre.png");
+	background-repeat: no-repeat;
+	background-size: 90%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a .name {
+	color: #b89400;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .logo {
+	border-radius: inherit;
+	background: url("http://odulvej8l.bkt.clouddn.com/tab_me.png");
+	background-repeat: no-repeat;
+	background-size: 100%;
+	background-position: center center;
+}
+#homestayScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .name {
+	color: #fff;
+}

+ 25 - 0
www/webapp/moonclub/css/main.css

@@ -0,0 +1,25 @@
+@import url("../../common/css/common.css");
+@import url("../../common/css/gird.css");
+@import url("./ratchetOverloading.css");
+@import url("./common.css");
+@import url("./home.css");
+@import url("./payAgreement.css");
+@import url("./product.css");
+@import url("./placeOrder.css");
+@import url("./myOrder.css");
+@import url("./mine.css");
+@import url("./secondary.css");
+@import url("./homestay.css");
+@import url("./homeenterprise.css");
+@import url("./bargain.css");
+@import url("./desc.css");
+@import url("./agreement.css");
+@import url("./review.css");
+@import url("./address.css");
+@import url("./pay.css");
+@import url("./append.css");
+@import url("./refund.css");
+@import url("./orderFinish.css");
+@import url("./orderDetail.css");
+@import url("./beautician.css");
+@import url("./month.css");

+ 187 - 0
www/webapp/moonclub/css/mine.css

@@ -0,0 +1,187 @@
+
+body {
+    font-family: "Microsoft Yahei" !important;
+}
+#mineScroll div .user {
+    position: relative;
+}
+#mineScroll div .user img {
+    width: 100%;
+}
+#mineScroll div .user .user-image {
+    position: absolute;
+    width: 4rem;
+    height: 4rem;
+    top: 4rem;
+    right: 0;
+    left: 0;
+    margin: 0 auto;
+    /*background: #fff;*/
+    border-radius: 50%;
+}
+#mineScroll div .user .user-image img{
+    border-radius: 50%;
+}
+#mineScroll div .user .user-name {
+    position: absolute;
+    top: 10rem;
+    right: 0;
+    left: 0;
+    color: #fff;
+    text-align: center;
+}
+#mineScroll div .user-balance {
+    margin-top: 1rem;
+    width: 100%;
+    line-height: 2rem;
+    text-align: center;
+}
+#mineScroll div .user-balance span {
+    top: -8px;
+}
+#mineScroll div .user-balance span img {
+    width: 8%;
+    margin: 0 3px -2% 0;
+}
+#mineScroll div .mine-type {
+    margin-top: 1rem;
+    width: 100%;
+    /*height: 250px;*/
+}
+#mineScroll div .mine-type div {
+    float: left;
+    padding-top: 5%;
+    padding-bottom: 5%;
+    text-align: center;
+    background: #ffffff;
+}
+#mineScroll div .mine-type div:nth-child(1),
+#mineScroll div .mine-type div:nth-child(2),
+#mineScroll div .mine-type div:nth-child(3) {
+    border-top: 1px solid #b7b7b7;
+}
+#mineScroll div .mine-type div:nth-child(1),
+#mineScroll div .mine-type div:nth-child(2),
+#mineScroll div .mine-type div:nth-child(4),
+#mineScroll div .mine-type div:nth-child(5) {
+    border-bottom: 1px solid #b7b7b7;
+    border-right: 1px solid #b7b7b7;
+}
+#mineScroll div .mine-type div:nth-child(3),
+#mineScroll div .mine-type div:nth-child(6) {
+    border-bottom: 1px solid #b7b7b7;
+}
+#mineScroll div .mine-type div img {
+    width: 50px;
+    height: 50px;
+}
+#mineScroll div .mine-type div .mine-text {
+    display: block;
+    width: 100%;
+    border: 0;
+    padding: 0;
+}
+/*当其最大宽度为320*/
+@media (max-width: 320px) {
+    #mineScroll div .user{
+        /*margin-top: -20%;*/
+    }
+    #mineScroll div .user .user-name {
+        top: 8rem;
+    }
+    #mineScroll div .user .user-image {
+        top: 3.6rem;
+    }
+    #mineScroll div .user-balance {
+        font-size: 1rem;
+        margin-top: 0.2rem;
+    }
+    #mineScroll div .mine-type{
+        margin-top:0.3rem;
+    }
+    #mineScroll div .mine-type div img {
+        width: 40px;
+        height: 40px;
+    }
+}
+/*当其最小宽度为360*/
+@media (min-width: 360px) {
+    #mineScroll div .user .user-name {
+        top: 9rem;
+    }
+    #mineScroll div .user-balance {
+        font-size: 1rem;
+        margin-top: 0.5rem;
+    }
+    #mineScroll div .mine-type div img {
+        /*width: 40px;
+        height: 40px;*/
+    }
+}
+/*最小高度为568*/
+@media (min-height: 568px) {
+    #mineScroll div .user {
+        margin-top: 0;
+    }
+    #mineScroll div .user .user-image{
+        top: 2.2rem;
+    }
+    #mineScroll div .user .user-name{
+        top: 7rem;
+    }
+
+}
+/*当其最小宽度为768*/
+@media (min-width: 768px) {
+    #mineScroll div .user {
+        margin-top: -2rem;
+    }
+    #mineScroll div .user .user-image {
+        top: 7rem;
+        width: 9rem;
+        height: 9rem;
+    }
+    #mineScroll div .user .user-name {
+        top: 19rem;
+        font-size: 2rem;
+    }
+    #mineScroll div .user-balance {
+        margin-top: 1rem;
+        line-height: 4rem;
+        text-align: center;
+        font-size: 2rem;
+    }
+    #mineScroll div .user-balance span {
+        top: -8px;
+    }
+    #mineScroll div .user-balance span img {
+        width: 7%;
+        margin-bottom: -2%;
+    }
+    #mineScroll div .mine-type div img {
+        width: 60px;
+        height: 60px;
+    }
+}
+@media(min-width:375px){
+    #mineScroll div .user .user-name{
+        top:8rem;
+        font-size: 1.1rem;
+    }
+}
+@media(min-width:414px){
+    #mineScroll div .user .user-name{
+        top:9rem;
+    }
+}
+
+
+@media (min-width: 768px) {
+    @media (min-width: 768px) {
+        #mineScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+            display: block;
+            margin-top: 5px;
+            font-size: 1.6rem;
+        }
+    }
+}

+ 18 - 0
www/webapp/moonclub/css/month.css

@@ -0,0 +1,18 @@
+.request {
+	width: 100%;
+	position: fixed;
+	bottom: 0;
+}
+
+.request div {
+	width: 50%;
+	color: #fff;
+	line-height: 30px;
+	border-radius: 5px;
+	text-align: center;
+	float: left;
+	display: inline-block;
+	padding: 5px 35px;
+	border: 1px solid rgba(0, 0, 0, 0.11);
+	background-color: rgba(255, 182, 233, 0.83);
+}

+ 115 - 0
www/webapp/moonclub/css/myOrder.css

@@ -0,0 +1,115 @@
+.spa-page-my-order .order-type-control {
+  border-radius: 0;
+  border-left: 0;
+  border-right: 0;
+}
+
+.spa-page-my-order .order-type-control .control-item {
+  padding: 0;
+  line-height: 35px;
+  font-size: 0.71rem;
+}
+.spa-page-my-order .order-desc-line {
+  font-size: 0;
+}
+.spa-page-my-order .order-service-name {
+  margin-right: -50px;
+  position: relative;
+  padding-left: 41px;
+}
+.spa-page-my-order .order-append .order-desc-more {
+  color: #f37b1d;
+}
+.spa-page-my-order .order-append-price {
+  color: #f37b1d;
+  font-size: 12px;
+}
+.spa-page-my-order .order-service-name .order-desc-title {
+  position: absolute;
+  left: 0;
+}
+.spa-page-my-order .order-service-name .order-desc-more {
+  margin-left: 0;
+}
+.spa-page-my-order .order-desc-title {
+  font-size: 13px;
+  color: #999;
+  display: inline-block;
+  vertical-align: top;
+}
+
+.spa-page-my-order .order-desc-more {
+  font-size: 12px;
+  color: #767A92;
+  display: inline-block;
+  margin-left: 15px;
+  max-width: 285px;
+}
+.spa-page-my-order .order-precedence-status {
+  font-size: 12px;
+  color: #ea0d00;
+}
+.spa-page-my-order .order-status {
+  font-size: 12px;
+  color: #767a92;
+}
+
+.spa-page-my-order .order-status-pay {
+  font-size: 12px;
+  color: #f37b1d;
+}
+.spa-page-my-order .table-cell-accessory {
+  font-size: 0;
+}
+.order-btn {
+
+}
+.spa-page-my-order .order-btn {
+  display: inline-block;
+  padding-left: 0.6rem;
+  padding-right: 0.6rem;
+  font-size: 0.6rem;
+  height: 26px;
+  line-height: 26px;
+  /*color: white;*/
+  text-align: center;
+  vertical-align: top;
+  border-radius: 0px;
+  margin-left: 0.9rem;
+}
+.spa-page-my-order .order-btn.order-btn-review {
+  color: #fff;
+  background: #8bc34a;
+}
+.spa-page-my-order .btn-warning {
+  color: #f3781d;
+  border: 1px solid #f3781d;
+}
+
+.spa-page-my-order .btn-default {
+  color: #666;
+  border: 1px solid #666;
+}
+
+.spa-page-my-order .btn-warning:active {
+  background-color: #f39d00;
+}
+.spa-page-my-order .btn-more-orders {
+  width: 30%;
+  height: 38px;
+  line-height: 38px;
+  padding: 0;
+}
+
+.spa-page-my-order .list-content .table-view:last-child {
+  margin-bottom: 0;
+}
+/*.spa-page-my-order .btn-alert-info {
+  background: #d2d2d2;
+}*/
+.spa-page-my-order .order-number {
+  margin-right: -50px;
+  background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjI3IiB2aWV3Qm94PSIwIDAgMTYgMjciPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGZpbGw6ICM5OTk7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBkPSJNMS4yNzksMy41NDcgTDExLjEwMywxMy4zNzEgTDEuMTUwLDIzLjMyMyBMMS4xNTEsMjMuMzI0IEMwLjgyNiwyMy42NjEgMC42MjUsMjQuMTIwIDAuNjI1LDI0LjYyNSBDMC42MjUsMjUuNjYxIDEuNDY0LDI2LjUwMCAyLjUwMCwyNi41MDAgQzMuMDA2LDI2LjUwMCAzLjQ2NCwyNi4zMDAgMy44MDEsMjUuOTc1IEwzLjgwMiwyNS45NzUgTDE1LjA1MiwxNC43MjUgTDE1LjA1MSwxNC43MjUgQzE1LjQwNSwxNC4zODMgMTUuNjI1LDEzLjkwNSAxNS42MjUsMTMuMzc1IEMxNS42MjUsMTMuMzc0IDE1LjYyNSwxMy4zNzIgMTUuNjI1LDEzLjM3MSBDMTUuNjI1LDEzLjM3MCAxNS42MjUsMTMuMzY4IDE1LjYyNSwxMy4zNjcgQzE1LjYyNSwxMi44MzcgMTUuNDA1LDEyLjM1OCAxNS4wNTEsMTIuMDE4IEwxNS4wNTIsMTIuMDE3IEwzLjgwMiwwLjc2NyBMMy43OTcsMC43NzIgQzMuNDYwLDAuNDQ5IDMuMDAzLDAuMjUwIDIuNTAwLDAuMjUwIEMxLjQ2NCwwLjI1MCAwLjYyNSwxLjA5MCAwLjYyNSwyLjEyNSBDMC42MjUsMi42OTQgMC44NzgsMy4yMDMgMS4yNzksMy41NDcgWiIgY2xhc3M9ImNscy0xIi8+Cjwvc3ZnPgo=) no-repeat;
+  background-position: right center;
+  background-size: auto 60%;
+}

+ 92 - 0
www/webapp/moonclub/css/orderDetail.css

@@ -0,0 +1,92 @@
+.spa-page-my-order-detail .content {
+  background: #fff;
+}
+.spa-page-my-order-detail .table-view-cell {
+  padding-right: 15px;
+}
+.spa-page-my-order-detail .order-detail-item {
+  position: relative;
+  padding-left: 71px;
+  font-size: 14px;
+  line-height: 24px;
+  color: #666;
+}
+.spa-page-my-order-detail .item-name {
+  position: absolute;
+  left: 0;
+  font-size: 14px;
+}
+.spa-page-my-order-detail .order-label {
+  /*height: 22px;*/
+  color: #666;
+  line-height: 22px;
+  font-size: 14px;
+}
+.spa-page-my-order-detail .order-label {
+  position: relative;
+  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100…ht='1'><rect fill='#c8c7cc' x='0' y='0' width='100%' height='0.5'/></svg>");
+  background-repeat: no-repeat;
+  background-position: 15px 100%;
+  border-bottom: 0;
+}
+.spa-page-my-order-detail .btn-group {
+  height: 22px;
+}
+.spa-page-my-order-detail .label-name {
+  max-width: 80%;
+  text-align: left;
+}
+.spa-page-my-order-detail .label-value {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+}
+.spa-page-my-order-detail .append-order {
+  color: #f37b1d;
+}
+.spa-page-my-order-detail .order-comment {
+  /*text-align: left;*/
+}
+.spa-page-my-order-detail .order-comment-label {
+  margin-right: 10px;
+}
+.spa-page-my-order-detail .service-count {
+  margin-left: 20px;
+}
+
+.spa-page-my-order-detail .order-btn {
+  display: inline-block;
+  padding-left: 0.6rem;
+  padding-right: 0.6rem;
+  font-size: 0.6rem;
+  height: 26px;
+  line-height: 26px;
+  /*color: white;*/
+  text-align: center;
+  vertical-align: top;
+  border-radius: 3px;
+  margin-left: 0.9rem;
+}
+.spa-page-my-order-detail .order-btn.order-btn-review {
+  color: #fff;
+  background: #8bc34a;
+}
+.spa-page-my-order-detail .btn-warning {
+  color: #f3781d;
+  border: 1px solid #f3781d;
+}
+
+.spa-page-my-order-detail .btn-default {
+  color: #666;
+  border: 1px solid #666;
+}
+
+.spa-page-my-order-detail .btn-warning:active {
+  background-color: #f39d00;
+}
+.spa-page-my-order-detail .btn-more-orders {
+  width: 30%;
+  height: 38px;
+  line-height: 38px;
+  padding: 0;
+}

+ 19 - 0
www/webapp/moonclub/css/orderFinish.css

@@ -0,0 +1,19 @@
+.spa-page-order-done img {
+  width: 100%;
+}
+
+.spa-page-order-done .box {
+  margin-top: 1.8rem;
+}
+.spa-page-order-done .box-flex-1 {
+  padding: 0 0.6rem;
+}
+.spa-page-order-done .btn-default {
+  background: #9a9a9a;
+  color: #fff;
+}
+.spa-page-order-done .btn-success {
+  background: #8bc34a;
+  color: #fff;
+  border-color: #8bc34a;
+}

File diff suppressed because it is too large
+ 51 - 0
www/webapp/moonclub/css/pay.css


+ 0 - 0
www/webapp/moonclub/css/payAgreement.css


File diff suppressed because it is too large
+ 169 - 0
www/webapp/moonclub/css/placeOrder.css


File diff suppressed because it is too large
+ 64 - 0
www/webapp/moonclub/css/product.css


File diff suppressed because it is too large
+ 44 - 0
www/webapp/moonclub/css/ratchetOverloading.css


+ 117 - 0
www/webapp/moonclub/css/refund.css

@@ -0,0 +1,117 @@
+
+.spa-page-refund .order-service-name {
+  margin-right: -50px;
+  position: relative;
+  padding-left: 41px;
+}
+.spa-page-refund .order-service-name .order-desc-title {
+  position: absolute;
+  left: 0;
+}
+.spa-page-refund .order-service-name .order-desc-more {
+  margin-left: 0;
+}
+.spa-page-refund .order-desc-title {
+  font-size: 13px;
+  color: #999;
+  display: inline-block;
+  vertical-align: top;
+}
+
+.spa-page-refund .order-desc-more {
+  font-size: 12px;
+  color: #767A92;
+  display: inline-block;
+  margin-left: 15px;
+  max-width: 285px;
+}
+.spa-page-refund .order-precedence-status {
+  font-size: 12px;
+  color: #ea0d00;
+}
+.spa-page-refund .order-status {
+  font-size: 12px;
+  color: #767a92;
+}
+
+.spa-page-refund .order-status-pay {
+  font-size: 12px;
+  color: orange;
+}
+.spa-page-refund .table-cell-accessory {
+  font-size: 0;
+}
+.btn-main {
+  background-color: rgba(146,118,3,1)!important;
+}
+.spa-page-refund .order-btn {
+  display: inline-block;
+  padding-left: 0.6rem;
+  padding-right: 0.6rem;
+  font-size: 0.6rem;
+  height: 26px;
+  line-height: 26px;
+  color: white;
+  text-align: center;
+  vertical-align: top;
+  border-radius: 3px;
+  margin-left: 0.9rem;
+}
+
+.spa-page-refund .btn-warning {
+  background-color: orange;
+}
+
+.spa-page-refund .btn-default {
+  background-color: #9a9a9a;
+}
+
+.spa-page-refund .btn-warning:active {
+  background-color: #f39d00;
+}
+.spa-page-refund .btn-more-orders {
+  width: 30%;
+  height: 38px;
+  line-height: 38px;
+  padding: 0;
+}
+
+.spa-page-refund .list-content .table-view:last-child {
+  margin-bottom: 0;
+}
+.spa-page-refund .tip {
+  font-size: 0.7rem;
+  height: 2.2rem;
+  line-height: 2.2rem;
+  padding: 0 15px;
+}
+.spa-page-refund .btn-box,
+.spa-page-refund-success .btn-box {
+  text-align: center;
+  margin-top: 3rem;
+}
+.spa-page-refund-success .btn-box .btn,
+.spa-page-refund .btn-box .btn {
+  display: inline-block;
+  width: 13.5rem;
+  background: #fa7353;
+  border: 3px;
+  font-size: 0.9rem;
+  color: #fff;
+  line-height: 2.2rem;
+  padding: 0;
+}
+.spa-page-refund-success .text-center {
+  padding-top: 2.5rem;
+}
+.spa-page-refund-success .title-msg {
+  font-size: 0.9rem;
+  margin-bottom: 1rem;
+}
+.spa-page-refund .order-append-price {
+  font-size: 12px;
+  color: #767A92;
+}
+.spa-page-refund .order-desc-line {
+  font-size: 0;
+}

+ 86 - 0
www/webapp/moonclub/css/review.css

@@ -0,0 +1,86 @@
+/* post */
+.spa-panel-post-review .review-container {
+	padding: 15px 15px 5px;
+	width: 100%;
+	background-color: white;
+}
+
+.spa-panel-post-review .review-star-container {
+	margin-bottom: 20px;
+	font-size: 14px;
+	color: #999;
+}
+
+.spa-panel-post-review .review-content-container {
+	position: relative;
+}
+.spa-panel-post-review .review-img-content {
+  /*height: 60px;*/
+  font-size: 0;
+  /*line-height: 20px;*/
+  /*margin-bottom: 0;*/
+}
+.spa-panel-post-review .review-img-content .width-percent-25 {
+  display: inline-block;
+  vertical-align: top;
+  margin-bottom: 10px;
+}
+.spa-panel-post-review .img-preview {
+  position: relative;
+  height: 60px;
+  width: 60px;
+  margin-left: auto;
+  margin-right: auto;
+}
+.spa-panel-post-review .img-preview img {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  max-width: 100%;
+  max-height: 100%;
+}
+.spa-panel-post-review .img-preview .btn-preview-close {
+  position: absolute;
+  right: -10px;
+  top: -10px;
+  z-index: 10;
+  width: 20px;
+  height: 20px;
+  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lvaIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAyNHB4IiBoZWlnaHQ9IjEwMjRweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAyNCAxMDI0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICA8cGF0aCBmaWxsPSIjMjcyNjM2IiBkPSJNNTMxLjkzNzg4MiAyODAuMDYyMTE4bS00NzEuNzAyNTg4IDBhNy44MzEgNy44MzEgMCAxIDAgOTQzLjQwNTE3NiAwIDcuODMxIDcuODMxIDAgMSAwIC05NDMuNDA1MTc2IDBaTTcxMC43NzY0NzEgMTI3LjQyNTg4MiA1NjguNjIxMTc2IDI2OS41MjA5NDEgNzEwLjcxNjIzNSA0MTEuNjE2QzcyNi45MTk1MjkgNDI3Ljc1OTA1OSA3MjYuOTE5NTI5IDQ1NC4wMjE2NDcgNzEwLjcxNjIzNSA0NzAuMjI0OTQxIDY5NC41MTI5NDEgNDg2LjM2OCA2NjguMzEwNTg4IDQ4Ni4zNjggNjUyLjEwNzI5NCA0NzAuMjI0OTQxTDUxMC4wMTIyMzUgMzI4LjEyOTg4MiAzNjcuOTE3MTc2IDQ3MC4yMjQ5NDFDMzUxLjc3NDExOCA0ODYuNDI4MjM1IDMyNS41MTE1MjkgNDg2LjQyODIzNSAzMDkuMzA4MjM1IDQ3MC4yMjQ5NDEgMjkzLjE2NTE3NiA0NTQuMDgxODgyIDI5My4xNjUxNzYgNDI3LjgxOTI5NCAzMDkuMzA4MjM1IDQxMS42MTZMNDUxLjQwMzI5NCAyNjkuNTIwOTQxIDMwOS4zMDgyMzUgMTI3LjQyNTg4MkMyOTMuMTA0OTQxIDExMS4yMjI1ODggMjkzLjE2NTE3NiA4NC45NiAzMDkuMzA4MjM1IDY4LjgxNjk0MSAzMjUuNTcxNzY1IDUyLjYxMzY0NyAzNTEuNzEzODgyIDUyLjYxMzY0NyAzNjcuOTc3NDEyIDY4LjgxNjk0MUw1MTAuMDcyNDcxIDIxMC45NzIyMzUgNjUyLjE2NzUyOSA2OC44NzcxNzZDNjY4LjMxMDU4OCA1Mi42NzM4ODIgNjk0LjUxMjk0MSA1Mi43MzQxMTggNzEwLjcxNjIzNSA2OC44NzcxNzYgNzI2Ljg1OTI5NCA4NS4wMjAyMzUgNzI2Ljg1OTI5NCAxMTEuMjIyNTg4IDcxMC43NzY0NzEgMTI3LjQyNTg4Mkw3MTAuNzc2NDcxIDEyNy40MjU4ODJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCA4MTIpIHNjYWxlKDEsIC0xKSIvPgo8L3N2Zz4K);
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+.spa-panel-post-review .img-upload-btn {
+  position: relative;
+  display: block;
+  height: 60px;
+  width: 60px;
+  margin-left: auto;
+  margin-right: auto;
+  overflow: hidden;
+  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i5Zu+5bGCXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDAgMjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQwIDI4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJYTUxJRF8yXyI+DQoJPHJlY3QgaWQ9IlhNTElEXzhfIiB4PSI0LjUyMiIgeT0iMS41NyIgZmlsbD0iIzhFOEU5MyIgd2lkdGg9IjMuMDQ3IiBoZWlnaHQ9IjEuNTg0Ii8+DQoJPGNpcmNsZSBpZD0iWE1MSURfN18iIGZpbGw9IiM4RThFOTMiIGN4PSIyMC4xNDgiIGN5PSIxNi4yMzQiIHI9IjYuOTY0Ii8+DQoJPHBhdGggaWQ9IlhNTElEXzNfIiBmaWxsPSIjOEU4RTkzIiBkPSJNMzcuNTc1LDMuOTY2aC04LjQwNmwtMy44NzItMy45NTFoLTkuODMxbC00LjE0OSwzLjk1MUgyLjcyDQoJCWMtMS4xNCwwLTIuMDczLDAuOTMzLTIuMDczLDIuMDczdjE5LjkwM2MwLDEuMTQsMC45MzMsMi4wNzMsMi4wNzMsMi4wNzNoMzQuODU0YzEuMTQsMCwyLjA3My0wLjkzMywyLjA3My0yLjA3M1Y2LjAzOQ0KCQlDMzkuNjQ4LDQuODk5LDM4LjcxNSwzLjk2NiwzNy41NzUsMy45NjZ6IE0yMC4xNDgsMjQuOTA3Yy00Ljc5LDAtOC42NzMtMy44ODMtOC42NzMtOC42NzNjMC00Ljc5LDMuODgzLTguNjczLDguNjczLTguNjczDQoJCXM4LjY3MywzLjg4Myw4LjY3Myw4LjY3M0MyOC44MjEsMjEuMDI0LDI0LjkzOCwyNC45MDcsMjAuMTQ4LDI0LjkwN3ogTTMxLjMzNCw5LjEyNmgtMS43MDZWNy40MmgxLjcwNlY5LjEyNnoiLz4NCjwvZz4NCjwvc3ZnPg0K) no-repeat;
+  background-size: 40px 40px;
+  background-position: center center;
+  border: 1px solid #eaeaea;
+}
+
+.spa-panel-post-review .img-upload-btn input {
+  position: absolute;
+  width: 60px;
+  height: 60px;
+  overflow: hidden;
+  opacity: 0;
+}
+
+.spa-panel-post-review .review-content {
+	font-size: 16px;
+	max-height: 120px;
+	padding: 10px;
+	margin-bottom: 0;
+}
+
+.spa-panel-post-review .star-item {
+	width: 24px;
+	height: 24px;
+	margin-right: 8px;
+}

+ 308 - 0
www/webapp/moonclub/css/secondary.css

@@ -0,0 +1,308 @@
+#secondaryScroll {
+    /*底部导航栏*/
+}
+#secondaryScroll .secondary-content {
+    /*.secondary-type{
+        margin-top: 1rem;
+        width: 100%;
+        height: 100%;
+        div {
+          float: left;
+          padding-top: 5%;
+          padding-bottom: 5%;
+          text-align: center;
+          background: #ffffff;
+
+          &:nth-child(1),&:nth-child(3),&:nth-child(5),&:nth-child(7){
+            border-bottom: 1px solid;
+            border-right:1px solid;
+          }
+          img {
+            width: 50px;
+            height: 50px;
+          }
+          .mine-text {
+            display: block;
+            width: 100%;
+            border: 0;
+            padding: 0;
+          }
+        }
+      }*/
+}
+#secondaryScroll .secondary-content .secondary-head {
+    position: relative;
+    text-align: center;
+}
+#secondaryScroll .secondary-content .secondary-head img {
+    width: 100%;
+}
+#secondaryScroll .secondary-content .secondary-head img:nth-child(2) {
+    width: 5rem;
+    position: absolute;
+    left: 50%;
+    margin-left: -2.5rem;
+    bottom: -2.3rem;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list {
+    margin: 0;
+    list-style: none;
+    padding-left: 0;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list li {
+    padding-top: 0.4rem;
+    text-align: center;
+    width: 50%;
+    float: left;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list li img {
+    width: 50px;
+    height: 50px;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list li div {
+    border-bottom: 3px solid #a8a8a8;
+    width: 5rem;
+    margin: 0 auto;
+    padding-bottom: 0.3rem;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(1),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(3),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(5),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(7) {
+    border-bottom: 1px solid #b7b7b7;
+    border-right: 1px solid #b7b7b7;
+}
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+#secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+    border-bottom: 1px solid #b7b7b7;
+}
+#secondaryScroll .prevent-scroll {
+    width: 100%;
+    position: fixed;
+    bottom: 0;
+    background-color: #2a2400;
+}
+#secondaryScroll .prevent-scroll .width-percent-33 .title-container-square {
+    padding: 20%;
+    position: relative;
+    text-align: center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33 .title-container-square a {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+}
+#secondaryScroll .prevent-scroll .width-percent-33 .title-container-square a .logo {
+    background-size: 65% 65%;
+    background-position: center center;
+    padding: 10%;
+    margin-top: 5px;
+    display: inline-block;
+    border-radius: 50%;
+}
+#secondaryScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+    display: block;
+    margin-top: -5px;
+    font-size: 12px;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home.png") no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(1) a:active .name {
+    color: #fff;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(1) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_home_pre.png") no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(1) a .name {
+    color: #b89400;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(2) a .logo {
+    border-radius: 50%;
+    display: inline-block;
+    padding: 25%;
+    background-size: 100%;
+    margin-top: -15px;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_butler.png") 0 0 no-repeat #2a2400;
+    background-size: 65% 65%;
+    background-position: center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(3) a .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me_pre.png");
+    background-repeat: no-repeat;
+    background-size: 90%;
+    background-position: center center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(3) a .name {
+    color: #b89400;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .logo {
+    border-radius: inherit;
+    background: url("http://odulvej8l.bkt.clouddn.com/tab_me.png");
+    background-repeat: no-repeat;
+    background-size: 100%;
+    background-position: center center;
+}
+#secondaryScroll .prevent-scroll .width-percent-33:nth-child(3) a:active .name {
+    color: #fff;
+}
+@media (min-width: 768px) {
+    #secondaryScroll .prevent-scroll .width-percent-33 .title-container-square a .name {
+        display: block;
+        margin-top: 5px;
+        font-size: 1.6rem;
+    }
+}
+/*媒体查询*/
+@media (min-width: 414px) {
+    #secondaryScroll .secondary-content .secondary-head {
+        position: relative;
+        text-align: center;
+    }
+    #secondaryScroll .secondary-content .secondary-head img {
+        width: 100%;
+    }
+    #secondaryScroll .secondary-content .secondary-head img:nth-child(2) {
+        width: 7rem;
+        position: absolute;
+        left: 50%;
+        margin-left: -3.5rem;
+        bottom: -3.4rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list {
+        /*margin: 0;
+              list-style: none;
+              padding-left: 0;*/
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li {
+        /*padding-top:0.4rem;
+                text-align: center;
+                width: 50%;
+                float: left;*/
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li img {
+        width: 2.7rem;
+        height: 2.7rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li div {
+        border-bottom: 3px solid #a8a8a8;
+        width: 6rem;
+        margin: 0 auto;
+        padding-bottom: 0.3rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(1),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(3),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(5),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(7) {
+        border-bottom: 1px solid #b7b7b7;
+        border-right: 1px solid #b7b7b7;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+        border-bottom: 1px solid #b7b7b7;
+    }
+}
+@media (min-width: 768px) {
+    #secondaryScroll .secondary-content .secondary-head {
+        position: relative;
+        text-align: center;
+    }
+    #secondaryScroll .secondary-content .secondary-head img {
+        width: 100%;
+    }
+    #secondaryScroll .secondary-content .secondary-head img:nth-child(2) {
+        width: 8rem;
+        position: absolute;
+        left: 50%;
+        margin-left: -4rem;
+        bottom: -3.9rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list {
+        /*margin: 0;
+              list-style: none;
+              padding-left: 0;*/
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li {
+        /*padding-top:0.4rem;
+                text-align: center;
+                width: 50%;
+                float: left;*/
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li img {
+        width: 5rem;
+        height: 5rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li div {
+        border-bottom: 3px solid #a8a8a8;
+        width: 6rem;
+        margin: 0 auto;
+        padding-bottom: 0.3rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(1),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(3),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(5),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(7) {
+        border-bottom: 1px solid #b7b7b7;
+        border-right: 1px solid #b7b7b7;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+        border-bottom: 1px solid #b7b7b7;
+    }
+}
+@media (max-height: 480px) {
+    #secondaryScroll .secondary-content .secondary-list .products-list {
+        height: 420px ;
+    }
+}
+@media (min-height: 568px) {
+    #secondaryScroll .secondary-content .secondary-list .products-list li img {
+        width: 1.5rem;
+        height: 1.5rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+        border-bottom: 1px solid #b7b7b7;
+    }
+}
+@media (min-height: 667px) {
+    #secondaryScroll .secondary-content .secondary-list .products-list li img {
+        width: 2.3rem;
+        height: 2.3rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+        border-bottom: 1px solid #b7b7b7;
+    }
+}
+@media (min-height: 700px) {
+    #secondaryScroll .secondary-content .secondary-list .products-list li img {
+        width: 2.8rem;
+        height: 2.8rem;
+    }
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(2),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(4),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(6),
+    #secondaryScroll .secondary-content .secondary-list .products-list li:nth-child(8) {
+        border-bottom: 1px solid #b7b7b7;
+    }
+}

File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/css/main.css


+ 1 - 0
www/webapp/moonclub/dist/js/$.js

@@ -0,0 +1 @@
+define(["config","native","zepto"],function(e,t,n){return function(n){function i(e){var s=r.shift();s.data=e.data,n.autoAjax(s),r.length>0&&t.getSign(r[0].data,i)}n.extend(n,{getScript:function(e,t){var n=document.createElement("script");n.async="async",n.src=e,t&&(n.onload=t),document.getElementsByTagName("head")[0].appendChild(n)},autoAjax:function(t){t.no_sign=1;if(location.host=="yiguanjia.me")n.ajax(t);else{t.data.version=e.o2oVersion;var r=t.url;r.indexOf("?")==-1&&(r+="?"),r.charAt(r.length-1)!="?"&&(r+="&"),r+="callback=?",!t.data||(r.charAt(r.length-1)!="?"&&(r+=""),r+="&"+n.param(t.data)),n.ajaxJSONP({url:r,success:t.success?t.success:null,error:t.error?t.error:null})}},signAjax:function(n){if(e.isIOS||e.isAndroid){var s=n.data,o=n.success;n.success=function(e){o(e)},s.time||(s.time=(new Date).getTime()/1e3),r.push(n),r.length==1&&t.getSign(r[0].data,i)}else this.autoAjax(n)},newTouch:function(e,t,r){var i="tap";window.DocumentTouch&&document instanceof DocumentTouch||"ontouchstart"in window||(i="click"),r!==undefined?n(r).on(i,e,function(e){t.call(this,e)}):n(e).on(i,function(e){t.call(this,e)})}});var r=[]}(n),n});

File diff suppressed because it is too large
+ 2 - 0
www/webapp/moonclub/dist/js/IScroll.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/js/api.js


File diff suppressed because it is too large
+ 6 - 0
www/webapp/moonclub/dist/js/autosize.js


+ 1 - 0
www/webapp/moonclub/dist/js/base.js

@@ -0,0 +1 @@
+define(["storage"],function(e){var t=function(){this.storagePrefix=""};return t.prototype={set:function(t,n,r){this[t]=n,typeof r!="boolean"&&(r=!1),r&&e.setItem(this.storagePrefix+t,n)},get:function(e,t){return typeof t=="undefined"&&(t=null),this.hasOwnProperty(e)&&this[e]!==null?this[e]:t},setCache:function(t,n){var r=typeof n!="undefined"?n:this.hasOwnProperty(t)?this[t]:null;e.setItem(this.storagePrefix+t,r)},getCache:function(t,n,r){typeof r=="undefined"&&(r=null);var i=e.getItem(this.storagePrefix+t,n);return i?i:r},remove:function(t){this[t]=null,e.removeItem(this.storagePrefix+t)}},t});

+ 1 - 0
www/webapp/moonclub/dist/js/bdmapapi.js

@@ -0,0 +1 @@
+define(["$","base"],function(e,t){var n={suggestion:"http://api.map.baidu.com/place/v2/suggestion",search:"http://api.map.baidu.com/place/v2/search",ak:"B349f0b32ef6e78b2e678f45cb9fddaf",output:"json",query:"",region:""},r=function(){if(typeof r.instance=="object")return r.instance;r.instance=this,this.isLoading=!1};r.prototype=new t;var i={success:!1,message:"当前页面加载失败,请您重新加载"};return r.prototype={getSuggestionList:function(t,r,s){var o=this;this.isLoading=!0,e.autoAjax({url:n.suggestion,data:{ak:n.ak,output:n.output,query:t,region:r},dataType:"JSON",success:function(e){o.isLoading=!1,s&&s(e)},error:function(e){o.isLoading=!1,s&&s(i)}})},getPlaceList:function(t,r,s){var o=this;this.isLoading=!0,e.autoAjax({url:n.search,data:{ak:n.ak,output:n.output,query:t,page_size:"10",page_num:"0",scope:"1",location:r,radius:"2000"},dataType:"JSON",success:function(e){o.isLoading=!1,s&&s(e)},error:function(e){o.isLoading=!1,s&&s(i)}})},getSearchList:function(t,r,s){var o=this;this.isLoading=!0,e.autoAjax({url:n.search,data:{ak:n.ak,output:n.output,q:t,region:r},dataType:"JSON",success:function(e){o.isLoading=!1,s&&s(e)},error:function(e){o.isLoading=!1,s&&s(i)}})}},new r});

+ 54 - 0
www/webapp/moonclub/dist/js/build.txt

@@ -0,0 +1,54 @@
+
+main.js
+----------------
+config.js
+helper.js
+pingpp.js
+storage.js
+base.js
+api.js
+native.js
+zepto.js
+$.js
+spa.js
+ratchet.js
+model/product.js
+model/order.js
+model/address.js
+model/user.js
+main.js
+build/template.js
+IScroll.js
+page/home.js
+model/recharge.js
+page/help.js
+page/about.js
+page/rechargee.js
+model/review.js
+page/mine.js
+page/secondary.js
+page/homestay.js
+page/homeenterprise.js
+model/cart.js
+page/product.js
+page/placeOrder.js
+page/picker.js
+page/longOrder.js
+page/pay.js
+page/myOrder.js
+page/myCoupon.js
+page/success.js
+page/agreement.js
+page/address/addressList.js
+page/address/addressAdd.js
+page/address/addressDetail.js
+bdmapapi.js
+page/address/addressPoi.js
+page/beautician.js
+page/beauticianDetail.js
+page/hire.js
+panel/alert.js
+panel/dataPicker.js
+panel/productOption.js
+autosize.js
+panel/postReview.js

+ 1 - 0
www/webapp/moonclub/dist/js/build/activities/alert.js

@@ -0,0 +1 @@
+template("activities/alert",function(e,t){var n=this,r=n.$escape,i=e.content,s="";return s+='<div class="box-container box-center"> <div class="activity-body alert-body"> <img src="',s+=r(i),s+='" alt="" id="activity-content"> <div class="btn-close"></div> </div> </div> ',new String(s)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/activities/cat.js

@@ -0,0 +1 @@
+template("activities/cat",function(e,t){var n=this,r=e.showNavBar,i=n.$escape,s=e.src,o="";return r&&(o+=' <header class="bar bar-nav"> <a class="left-button back-button"> <div class="icon icon-left-nav"></div> </a> <h1 class="title">下单送爪币 壕礼抽不停</h1> </header> '),o+=' <div id="activities-scroll" class="content"> <div class="scroller"> <div class="box-container"> <div class="box-container box box-vertical" style="background: #fff"> <img src="',o+=i(s),o+='" alt="" style="width:100%"> </div> </div> </div> </div> </div> ',new String(o)});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/js/build/address/detail/index.js


+ 1 - 0
www/webapp/moonclub/dist/js/build/address/list/cell.js

@@ -0,0 +1 @@
+template("address/list/cell",function(e,t){var n=this,r=n.$each,i=e.addresses,s=(e.address,e.i,n.$escape),o="";return r(i,function(e,t){o+=' <li class="table-view-cell media"> <a class="address-item" data-id="',o+=s(e.address_id),o+='" data-index="',o+=s(t),o+='"> <div class="media-body"> <span class="username"> ',e&&(o+=" ",o+=s(e.name),o+=" "),o+=' </span> <span class="mobile"> ',e&&(o+=" ",o+=s(e.mobile),o+=" "),o+=' </span> <p class="detail"> ',e&&(o+=" ",e.address.poi?(o+=" ",o+=s(e.address.city),o+=" ",o+=s(e.address.area),o+=" ",o+=s(e.address.poi.name),o+=" "):(o+=" ",o+=s(e.address.province),o+=" ",o+=s(e.address.city),o+=" ",o+=s(e.address.area),o+=" ",o+=s(e.address.detail),o+=" "),o+=" "),o+=' </p> </div> </a> <button class="btn btn-edit" data-id="',o+=s(e.address_id),o+='" data-index="',o+=s(t),o+='">编辑</button> </li> '}),new String(o)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/list/index.js

@@ -0,0 +1 @@
+template("address/list/index",function(e,t){var n=this,r=e.showNavBar,i=function(r,i){i=i||e;var s=n.$include(r,i,t);return u+=s,s},s=n.$escape,o=e.addText,u="";return r&&(u+=' <header class="bar bar-nav"> <a class="left-button back-button"> <div class="icon icon-left-nav"></div> </a> <h1 class="title">选择地址</h1> </header> '),u+=' <div class="content" > <div class="box-container box box-vertical"> <div id="addressListScroll" class="scroll-container box-flex-1"> <div class="page-content"> <ul class="table-view list-content"> ',i("./cell"),u+=' </ul> </div> </div> <div class="btn-container prevent-scroll"> <a class="btn btn-main btn-block btn-add">',u+=s(o),u+="</a> </div> </div> </div>",new String(u)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/poi/cell.js

@@ -0,0 +1 @@
+template("address/poi/cell",function(e,t){var n=this,r=e.poiLists,i=n.$each,s=e.poiList,o=(e.i,n.$escape),u="";return r?(u+=" ",i(r,function(e,t){u+=' <li data-location="',u+=o(e.location.lat),u+=",",u+=o(e.location.lng),u+='"> <h6>',u+=o(e.name),u+="</h6> <p>",u+=o(e.address),u+="</p> </li> "}),u+=" "):(u+=' <li data-location="',u+=o(s.location.lat),u+=",",u+=o(s.location.lng),u+='"> 搜索地址 </li> '),new String(u)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/poi/index.js

@@ -0,0 +1 @@
+template("address/poi/index","");

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/poiss/cell.js

@@ -0,0 +1 @@
+template("address/poiss/cell","");

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/poiss/index.js

@@ -0,0 +1 @@
+template("address/poiss/index","");

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/position/cell.js

@@ -0,0 +1 @@
+template("address/position/cell",function(e,t){var n=this,r=n.$each,i=e.poiLists,s=(e.poilist,e.i,n.$escape),o="";return r(i,function(e,t){o+=' <li class="table-view-cell position-item" data-location-lat="',e.location&&(o+=s(e.location.lat)),o+='" data-location-lng="',e.location&&(o+=s(e.location.lng)),o+='" data-uid="',e.uid&&(o+=s(e.uid)),o+='" data-district="',e.district&&(o+=s(e.district)),o+='" data-city="',e.city&&(o+=s(e.city)),o+='"> <a class="set-poi">',e.name&&(o+=s(e.name)),o+="</a> <p> ",e.city&&(o+=s(e.city)),o+=" ",e.district&&(o+=s(e.district)),o+=" </p> </li> "}),o+=" ",new String(o)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/position/city.js

@@ -0,0 +1 @@
+template("address/position/city","");

+ 1 - 0
www/webapp/moonclub/dist/js/build/address/position/index.js

@@ -0,0 +1 @@
+template("address/position/index",function(e,t){var n=this,r=e.showNavBar,i=function(r,i){i=i||e;var o=n.$include(r,i,t);return s+=o,o},s="";return r&&(s+=' <header class="bar bar-nav"> <a class="left-button back-button"> <div class="icon icon-left-nav"></div> </a> <h1 class="title">定位地点</h1> </header> '),s+=' <div class="content"> <div class="box-container box box-vertical"> <div id="addressPositionScroll" class="scroll-container box-flex-1"> <div class="scroller"> <div class="page-content"> <div class="table-view search-form"> <div class="search-city">上海</div> <input type="text" name="" id="search-text" placeholder="请搜索您的位置"> <button class="search-btn">搜索</button> </div> <ul class="table-view position-list"> ',i("./cell"),s+=" </ul> </div> </div> </div> </div> </div> ",new String(s)});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/js/build/agreement/index.js


File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/js/build/agreenment/index.js


+ 1 - 0
www/webapp/moonclub/dist/js/build/appointment/list.js

@@ -0,0 +1 @@
+template("appointment/list",function(e,t){var n=this,r=e.appointment_list,i=n.$each,s=(e.appointment,e.i,"");return r.length>0?(s+=' <ul class="list"> ',i(r,function(e,t){s+=' <li class="each_appointment"> <a> 我的预约 </a> </li> '}),s+=" </ul> "):s+=' <div class="box_center my_order_none"> 你还没有快送订单哦,快去下单体验吧~ </div> ',new String(s)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/beautician/comment.js

@@ -0,0 +1 @@
+template("beautician/comment",function(e,t){var n=this,r=n.$each,i=e.comments,s=(e.comment,e.i,n.$escape),o=function(r,i){i=i||e;var s=n.$include(r,i,t);return f+=s,s},u=e.imgW,a=(e.pic,e.review),f="";return r(i,function(e,t){f+=' <li class="table-view-cell"> <div> <div class="user-info-container"> <div class="user-info-btn" data-id="',f+=s(e.user.id),f+='"> <img class="user-avatar" src="',f+=s(e.user.avatar),f+='?imageView2/2/w/60/h/60"/> <span class="user-name">',f+=s(e.user.user_name),f+='</span> </div> </div> <div class="box"> <div class="box-flex-1"> <span class="star-label">评分:</span> ',o("../common/star",e),f+=' </div> <div class="box-flex-1 review-time"> ',f+=s(e.time_str),f+=' </div> </div> <div class="review-content"> ',f+=s(e.content),f+=' </div> <div class="img-preview-list" ',e.pics.length>0&&(f+='style="height:',f+=s(u),f+='px"'),f+="> ",e.pics.length>0&&(f+=" ",r(e.pics,function(t,n){f+=" ",3>n&&(f+=' <div class="width-percent-33"> <div class="img-preview" data-src="',f+=s(t.url),f+='" style="width: ',f+=s(u),f+='px"> <img src="',f+=s(t.url),f+="?imageView2/5/w/",f+=s(2*u),f+="/h/",f+=s(2*u),f+='" alt="" class="img-preview-item"> ',e.pics.length>3&&2==n&&(f+=' <span class="img-count">',f+=s(e.pics.length),f+="</span> "),f+=" </div> </div> "),f+=" "}),f+=" "),f+=" </div> ",""!==e.reply&&(f+=' <div class="reply-content"> 美容师回复:',f+=s(a.reply),f+=" </div> "),f+=" </div> </li> "}),f+=" ",new String(f)});

+ 1 - 0
www/webapp/moonclub/dist/js/build/beautician/detail.js

@@ -0,0 +1 @@
+template("beautician/detail",function(e,t){var n=this,r=e.showNavBar,i=e.recommend,s=n.$escape,o=e.avatar,u=e.name,a=e.favor,f=e.desc,l="";return r&&(l+=' <header class="bar bar-nav"> <a class="left-button back-button"> <div class="icon icon-left-nav"></div> </a> <h1 class="title">美容师详情</h1> </header> '),l+=' <div class="content beautician-detail-content"> <div class="box-container box box-vertical"> <div id="beauticianDetailScroll" class="scroll-container box-flex-1"> <div class="page-content"> ',""!==i&&(l+=' <p class="recommend">当前时间段,该美容师已被预约,推荐时间段&nbsp; ',l+=s(i),l+="</p> "),l+=' <div class="tech-info"> <img src="',l+=s(o),l+='?imageView2/0/w/400/h/400" alt=""> <p class="name">',l+=s(u),l+='</p> <p class="favor">好评数: ',l+=s(a),l+='</p> <p class="desc">',l+=s(f),l+='</p> </div> <div id="tech-comment"> <div class="extra-service-title">用户评价<span></span></div> <ul class="table-view"></ul> <div class="btn-more-container box-center hide"> <a class="btn btn-block btn-more-review">加载更多</a> </div> </div> </div> </div> </div> </div> ',new String(l)});

File diff suppressed because it is too large
+ 0 - 0
www/webapp/moonclub/dist/js/build/beautician/index.js


+ 1 - 0
www/webapp/moonclub/dist/js/build/coming/index.js

@@ -0,0 +1 @@
+template("coming/index",function(e,t){var n=this,r=e.showNavBar,i=n.$escape,s=e.prodcutTitle,o="";return r&&(o+=' <header class="bar bar-nav"> <a class="left-button back-button"> <div class="icon icon-left-nav"></div> </a> <h1 class="title">',o+=i(s.name),o+="</h1> </header> "),o+=' <div class="content"> <div class="box-container"> <div class="box-container box box-vertical coming"> </div> </div> </div> </div>',new String(o)});

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