shipengfei

Code Update

Showing 227 changed files with 14475 additions and 0 deletions
.idea/*
\ No newline at end of file
{
"plugins": [
"transform-strict-mode",
"transform-es2015-modules-commonjs",
"transform-es2015-spread",
"transform-es2015-destructuring",
"transform-es2015-parameters"
]
}
\ No newline at end of file
node_modules/
bower_components/*
dist/
.idea
npm-debug.log
.env
runtime/*
vendor/*
storage/logs/*
.svn/*
*.swp
*.lock
src/config.js
src/utils/
.idea/*
my-project/*
.project
test/*
test.html
*.csv
No preview for this file type
const path = require('path');
var fetch = require('node-fetch');
var fs = require('fs');
var file = path.join(process.cwd(),'/data.csv');
var json2csv = require('json2csv');
var csvFields = ['accessToken','expires','updateTime'];
//console.log(fetch);
var accessToken = '9FrII2SMyfSQqMgTKXBc2CBE_c-O8MW4Hc1SCO9o7pK3k-BLr-x4oGhWMG_Bzr7Or7xnFr1nx-gGdlorAGUAh6Vtisdusb7gq9bbO_byzYOGUoQ8FZZncgZ3JCvI6ov1AXNcAIDQND';
var getUsersUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='+accessToken;
console.log(getUsersUrl);
var ss = function(url,param){
return recordWxUsers()
};
var testUrl = 'http://thirdparty.qingger.com/auth/accessToken/MPShop';
recordWxUsers(testUrl).then(function(response){
console.log(response);
if(typeof response.call=='function') {
response.call(testUrl,response.param);
}
},function(rejResponse){
console.log(rejResponse);
});
//
// var openids = json.data.openid;
// var openidLength = openids.length;
// var lastOpenId = openidLength?openids[openidLength-1]:null;
var result = json2csv({data:json.data,fields:csvFields});
console.log(result);
fs.writeFile(file,result,'utf8',function(err){
if(err) throw err;
console.log('Saved.');
});
function recordWxUsers(url,nextOpenId=null){
return new Promise(function(resolve,reject){
fetch(url)
.then(function(res) {
return res.json();
})
.then(function(json) {
// 处理json
return new Promise(function(resolve,reject){
fetch(url)
})
});
});
}
{
"name": "shipfi",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"clientApp": "node index.js"
},
"author": "shipfi",
"license": "ISC",
"dependencies": {
"babel-cli": "^6.18.0",
"express": "^4.14.0",
"fast-csv": "^2.3.0",
"fs-extra": "^1.0.0",
"json2csv": "^3.7.1",
"jsuri": "^1.3.1",
"node-fetch": "^1.6.3",
"whatwg-fetch": "^2.0.1"
},
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-core": "^6.18.2",
"babel-plugin-transform-es2015-destructuring": "^6.19.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.18.0",
"babel-plugin-transform-es2015-parameters": "^6.18.0",
"babel-plugin-transform-es2015-spread": "^6.8.0",
"babel-plugin-transform-strict-mode": "^6.18.0"
}
}
/**
* Created by shipfi on 2016/11/19.
*/
// 实现Promise递归方案
var count = 0;
var http = function() {
if(count === 0) {
return Promise.resolve({more:true,user:{name:'jack',age:22}});
}else {
return Promise.resolve({more:false,user:{name:'isaac',age:21}});
}
};
var a=[1,2];
a = a.concat([3,4]);
console.log(a);
//
// var fetchData = function() {
// var goFetch = function(users) {
// return http().then(function(data){
// users.push(data.user);
// if(data.more) {
// console.log(users);
// return goFetch(users);
// }else{
// console.log(users);
// return users;
// }
// })
// };
//
// return goFetch([]);
// };
//
// fetchData();
\ No newline at end of file
/**
* Created by shipfi on 2016/11/19.
*/
const path = require('path');
var jsuri = require('jsuri');
var fetch = require('node-fetch');
var fs = require('fs');
var json2csv = require('json2csv');
var csvFields = ['subscribe','openid','nickname','sex','city','province','country','headimgurl','subscribe_time','remark','groupid'];
//var accessToken = '2Y3cDvNzN2UNqEKXXGrnQox3Iv_DssZIlhrYOY5pAy_ZFhm1EkLyiJ68gq1DirrbpMv-YVVuo4P1BH9AMEE2w9C1Bhunj5F0Oj1If6qq0lwo58HZYqUNPyzcFgBN95aJTAGiALDBIO';
var accessToken = 'IX6Bajo9XVnVX02JzImWeQOEEtNohoZB-5EWSDUxYpsDPwZdBOMyzK0S0ruuYwgfW6XObv0VLlruKmnp5k6wwRV_QeAEbVLoBWlRQKp9CUteKkJLwbxob0NMuZc7JqlCSTLfAIDABT';
var getOpenIdFromWx = function(openid=null) {
var wxGetUsersURL = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='+accessToken;
if(openid) {
wxGetUsersURL = wxGetUsersURL+"&next_openid="+openid;
}
//console.log(wxGetUsersURL);
return new Promise(function(resolve,reject){
fetch(wxGetUsersURL).then(function(res){
resolve(res.json());
}).catch(function(err){
reject(err);
});
});
};
var getWxUsersInfo = function(openids,file_id=0){
return new Promise(function(resolve,reject){
if(!openids) reject(0);
var lengths = openids.length;
if(lengths<=0) reject(0);
var times = parseInt(lengths/100)+1;
var wxUserInfoUrl = 'https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token='+accessToken;
var lastOpenId = openids[lengths-1];
// var jsonStream = { 'user_list':[] };
for(var i=0;i<times;i++) {
var iBegin = 0;
var iEnd = 99;
if(openids.length<0)
return;
var tmpOpenIds = openids.splice(iBegin,iEnd);
var tmpJsonStream = { 'user_list':[] };
tmpJsonStream.user_list = tmpOpenIds.map(function(x){
return {"openid":x,"lang":'zh-CN'}
});
var userListLength = tmpJsonStream.user_list.length;
var stringJsonStream = JSON.stringify(tmpJsonStream);
// jsonStream.user_list = openids.splice(iBegin,iEnd).map(function(x){
// return {"openid":x,"lang":'zh-CN'}
// });
if(userListLength>0) {
fetch(wxUserInfoUrl,{method:'POST',body:stringJsonStream}).then(function(res){
return res.json();
}).then(function(json){
console.log('Begin:========================================================>'+iBegin);
var result = json2csv({data:json.user_info_list,fields:csvFields,'hasCSVColumnTitle':false});
console.log(result);
var fileName = path.join(process.cwd(),'/data_'+file_id+'.csv');
fs.appendFile(fileName,"\n",'utf8',function(err){
if(err) throw err;
});
fs.appendFile(fileName,result,'utf8',function(err){
if(err) throw err;
console.log('Saved.');
});
if(i>=times-1) {
resolve(lastOpenId);
}
console.log('End:========================================================>'+iEnd);
}).catch(function(err){
reject(0);
});
}
}
});
// for(var i=0;i<times;i++) {
// jsonStream.user_list = [];
// var iBegin = i*100;
// var iEnd = (i*100+99)>(lengths-1)?(lengths-1):i*100+99;
// if(iBegin>iEnd) break;
// console.log(iBegin+':========================================================>'+iEnd);
// jsonStream.user_list = openids.splice(iBegin,iEnd).map(function(x){
// return {"openid":x,"lang":'zh-CN'}
// });
//
// if(jsonStream.user_list.length>0) {
// fetch(wxUserInfoUrl,{method:'POST',body:JSON.stringify(jsonStream)}).then(function(res){
// return res.json()
// }).then(function(json){
// console.log(JSON.stringify(json.user_info_list));
// // var result = json2csv({data:json.user_info_list,fields:csvFields});
// // //console.log(result);
// // var fileName = path.join(process.cwd(),'/data_'+file_id+'.csv');
// // fs.appendFile(fileName,result,'utf8',function(err){
// // if(err) throw err;
// // console.log('Saved.');
// // });
// });
//
// }
// }
};
var processDatas = function(_nextOpenid=null) {
var openidArrays = [];
var goFetch = function(nextOpenId,fileIndex=0) {
return getOpenIdFromWx(nextOpenId).then(function(json){
//console.log(response);
if(typeof json.data != 'undefined') {
var openids = json.data.openid;
openidArrays = openidArrays.concat(openids);
var openidLength = openids.length;
var lastOpenId = openidLength?openids[openidLength-1]:null;
//console.log(fileIndex+'++++++++++++++++++++++++++++++++++++++++++++++++++++>'+openidLength);
//console.log(openids);
//getWxUsersInfo(openids,fileIndex);
getWxUsersInfo(openids).then(function(theRetLastOpenId){
goFetch(theRetLastOpenId,fileIndex++);
},function(rejRes){
Promise.resolve(rejRes);
});
// if(lastOpenId) {
//
// }else{
// Promise.resolve(openidArrays);
// }
}else{
Promise.resolve(openidArrays);
}
}).catch(function(err){
Promise.reject(err);
});
}
return goFetch(_nextOpenid);
};
// var xxx = [];
// for(var i=0;i<298;i++) {
// xxx.push('OOOOPPPPP'+i);
// }
// getWxUsersInfo(xxx);
var _nextOpenid = null;
processDatas(_nextOpenid).then(function(data){
//console.log(data);
});
//console.log(openIds);
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- Komodo Project File - DO NOT EDIT -->
<project id="4e9bd012-c316-4b2e-afce-d6ba26db9bfa" kpf_version="5" name="MyProject.komodoproject">
<preference-set idref="4e9bd012-c316-4b2e-afce-d6ba26db9bfa" id="project" preftype="project">
</preference-set>
</project>
#!/usr/bin/perl -w
use strict;
my ($dbName,$dbUser,$dbPassword) = ('portal','shipfi','12345qwerT');
foreach(@ARGV) {
print 'process table '.$_."\n";
my $exportCmd = "mysqldump -u{$dbUser} -p{$dbPassword} {$dbName} {$_} > {$_}.sql";
`$exportCmd`;
}
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="FacetManager">
<facet type="django" name="Django">
<configuration>
<option name="rootFolder" value="$MODULE_DIR$" />
<option name="settingsModule" value="DjangoTest/settings.py" />
<option name="manageScript" value="manage.py" />
<option name="environment" value="&lt;map/&gt;" />
<option name="commandsToSkip" value="" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Django" />
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/../DjangoTest\templates" />
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
\ No newline at end of file
<component name="ProjectDictionaryState">
<dictionary name="shipfi" />
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="useProjectProfile" value="false" />
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="ECMAScript 6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>CoffeeScript</id>
</State>
<State>
<id>Control flow issuesJavaScript</id>
</State>
<State>
<id>Data flow issuesJavaScript</id>
</State>
<State>
<id>Error handlingJavaScript</id>
</State>
<State>
<id>General</id>
</State>
<State>
<id>JavaScript</id>
</State>
<State>
<id>Potentially confusing code constructsJavaScript</id>
</State>
<State>
<id>Probable bugsJavaScript</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>CoffeeScript</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.13 virtualenv at C:\Python27\VirutalEnv" project-jdk-type="Python SDK" />
<component name="SvnConfiguration">
<configuration>C:\Users\My PC\AppData\Roaming\Subversion</configuration>
</component>
<component name="masterDetails">
<states>
<state key="ScopeChooserConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/DjangoTest.iml" filepath="$PROJECT_DIR$/.idea/DjangoTest.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="513a136b-9194-4c0d-be95-720a9744f8c1" name="Default" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="DjangoConsoleOptions" custom-start-script="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)">
<option name="myCustomStartScript" value="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="settings.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/DjangoTest/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1190">
<caret line="70" column="47" lean-forward="false" selection-start-line="70" selection-start-column="47" selection-end-line="70" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="manage.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/manage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="20" column="12" lean-forward="false" selection-start-line="20" selection-start-column="12" selection-end-line="20" selection-end-column="12" />
<folding>
<element signature="e#22#31#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/DjangoTest/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="15" column="31" lean-forward="false" selection-start-line="15" selection-start-column="31" selection-end-line="15" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="apps.py" pinned="false" current-in-tab="true">
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/apps.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="51">
<caret line="3" column="23" lean-forward="true" selection-start-line="3" selection-start-column="23" selection-end-line="3" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/DjangoTest/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-1928" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1056" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="DjangoTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="DjangoTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="DjangoTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="DjangoTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="DjangoTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="preferences.sourceCode.Python" />
<property name="js.eslint.nodeInterpreter" value="C:\Program Files\nodejs\node.exe" />
<property name="js.eslint.eslintPackage" value="C:\Users\My PC\AppData\Roaming\npm\node_modules\eslint" />
<property name="js-jscs-nodeInterpreter" value="C:\Program Files\nodejs\node.exe" />
<property name="JavaScriptPreferStrict" value="false" />
<property name="JavaScriptWeakerCompletionTypeGuess" value="true" />
<property name="nodejs_interpreter_path" value="C:/Program Files/nodejs/node" />
<property name="last_opened_file_path" value="C:/Python27/VirutalEnv" />
<property name="WebServerToolWindowFactoryState" value="false" />
</component>
<component name="RunManager" selected="Django server.DjangoTest">
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="TARGET" value="" />
<option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
<method />
</configuration>
<configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
<method />
</configuration>
<configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
<method />
</configuration>
<configuration default="true" type="Python.DjangoServer" factoryName="Django server">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<option name="launchJavascriptDebuger" value="false" />
<option name="port" value="8000" />
<option name="host" value="" />
<option name="additionalOptions" value="" />
<option name="browserUrl" value="" />
<option name="runTestServer" value="false" />
<option name="runNoReload" value="false" />
<option name="useCustomRunCommand" value="false" />
<option name="customRunCommand" value="" />
<method />
</configuration>
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<configuration default="true" type="Tox" factoryName="Tox">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<module name="DjangoTest" />
<method />
</configuration>
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
<node-interpreter>project</node-interpreter>
<node-options />
<gulpfile />
<tasks />
<arguments />
<envs />
<method />
</configuration>
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
<command value="run" />
<scripts />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="ptest" factoryName="ptest">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="SUGGESTED_NAME" value="" />
<option name="ACTION_NAME" value="" />
<option name="RUN_TEST" value="true" />
<option name="TEST_TARGETS" value="" />
<option name="RUN_FAILED" value="false" />
<option name="XUNIT_XML" value="" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
<option name="USE_VARIABLES" value="false" />
<option name="VARIABLES" value="" />
<option name="VERBOSE" value="true" />
<option name="DISABLE_SCREENSHOT" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Attests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Doctests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Nosetests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Unittests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="py.test">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="testToRun" value="" />
<option name="keywords" value="" />
<option name="params" value="" />
<option name="USE_PARAM" value="false" />
<option name="USE_KEYWORD" value="false" />
<method />
</configuration>
<configuration default="false" name="DjangoTest" type="Python.DjangoServer" factoryName="Django server">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="DjangoTest" />
<option name="launchJavascriptDebuger" value="false" />
<option name="port" value="8000" />
<option name="host" value="" />
<option name="additionalOptions" value="" />
<option name="browserUrl" value="" />
<option name="runTestServer" value="false" />
<option name="runNoReload" value="false" />
<option name="useCustomRunCommand" value="false" />
<option name="customRunCommand" value="" />
<method />
</configuration>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="Django server.DjangoTest" />
</list>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="513a136b-9194-4c0d-be95-720a9744f8c1" name="Default" comment="" />
<created>1488537014543</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1488537014543</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-1928" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20833333" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32979852" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="processedProjectFiles" value="true" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/DjangoTest/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1190">
<caret line="70" column="47" lean-forward="false" selection-start-line="70" selection-start-column="47" selection-end-line="70" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/manage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="340">
<caret line="20" column="12" lean-forward="false" selection-start-line="20" selection-start-column="12" selection-end-line="20" selection-end-column="12" />
<folding>
<element signature="e#22#31#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/DjangoTest/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="15" column="31" lean-forward="false" selection-start-line="15" selection-start-column="31" selection-end-line="15" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/apps.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/DjangoTest/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/DjangoTest/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1190">
<caret line="70" column="47" lean-forward="false" selection-start-line="70" selection-start-column="47" selection-end-line="70" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/requirements">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/DjangoTest/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/manage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="20" column="12" lean-forward="false" selection-start-line="20" selection-start-column="12" selection-end-line="20" selection-end-column="12" />
<folding>
<element signature="e#22#31#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/views/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/views/main.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3638">
<caret line="14" column="27" lean-forward="false" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" />
</state>
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/sites.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2530">
<caret line="267" column="0" lean-forward="true" selection-start-line="267" selection-start-column="0" selection-end-line="267" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/DjangoTest/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="15" column="31" lean-forward="false" selection-start-line="15" selection-start-column="31" selection-end-line="15" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/django/contrib/admin/apps.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="51">
<caret line="3" column="23" lean-forward="true" selection-start-line="3" selection-start-column="23" selection-end-line="3" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
"""
Django settings for DjangoTest project.
Generated by 'django-admin startproject' using Django 1.10.6.
For more information on this file, see
https://docs.djangoproject.com/en/1.10/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.10/ref/settings/
"""
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '+x-=a7*_1rk(5e7f^wll^pm(1r--*-1)ki*lhu1o1w3e$zw$7o'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'DjangoTest.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'DjangoTest.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
"""DjangoTest URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
"""
WSGI config for DjangoTest project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoTest.settings")
application = get_wsgi_application()
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoTest.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
attrs==16.3.0
Automat==0.5.0
constantly==15.1.0
Django==1.10.6
incremental==16.10.1
lxml==3.6.0
mysql-connector-python==2.1.5
MySQL-python==1.2.5
six==1.10.0
Twisted==17.1.0
virtualenv==15.1.0
zope.interface==4.3.3
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
\ No newline at end of file
<component name="ProjectDictionaryState">
<dictionary name="shipfi" />
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="useProjectProfile" value="false" />
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="ECMAScript 6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>CoffeeScript</id>
</State>
<State>
<id>Control flow issuesJavaScript</id>
</State>
<State>
<id>Data flow issuesJavaScript</id>
</State>
<State>
<id>Error handlingJavaScript</id>
</State>
<State>
<id>General</id>
</State>
<State>
<id>JavaScript</id>
</State>
<State>
<id>Potentially confusing code constructsJavaScript</id>
</State>
<State>
<id>Probable bugsJavaScript</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>CoffeeScript</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.13 virtualenv at C:\Python27\VirutalEnv" project-jdk-type="Python SDK" />
<component name="SvnConfiguration">
<configuration>C:\Users\My PC\AppData\Roaming\Subversion</configuration>
</component>
<component name="masterDetails">
<states>
<state key="ScopeChooserConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Learns.iml" filepath="$PROJECT_DIR$/.idea/Learns.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="6d9cebb7-78cf-4efe-9c84-0d0fa334deac" name="Default" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CoverageDataManager">
<SUITE FILE_PATH="coverage/Learns$statement.coverage" NAME="statement Coverage Results" MODIFIED="1488556017751" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component>
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="statement.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/statement.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="34">
<caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Python Script" />
</list>
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/statement.py" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="y" value="-8" />
<option name="width" value="1616" />
<option name="height" value="876" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Learns" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="External Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="&lt; Python 2.7.13 virtualenv at C:\Python27\VirutalEnv &gt;" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Learns" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Learns" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="pyconsole" />
<property name="js.eslint.nodeInterpreter" value="C:\Program Files\nodejs\node.exe" />
<property name="js.eslint.eslintPackage" value="C:\Users\My PC\AppData\Roaming\npm\node_modules\eslint" />
<property name="settings.editor.splitter.proportion" value="0.2" />
<property name="js-jscs-nodeInterpreter" value="C:\Program Files\nodejs\node.exe" />
<property name="JavaScriptPreferStrict" value="false" />
<property name="JavaScriptWeakerCompletionTypeGuess" value="true" />
<property name="nodejs_interpreter_path" value="C:/Program Files/nodejs/node" />
<property name="last_opened_file_path" value="C:/Python27/VirutalEnv" />
<property name="WebServerToolWindowFactoryState" value="false" />
</component>
<component name="RunManager" selected="Python.statement">
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="TARGET" value="" />
<option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
<method />
</configuration>
<configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
<method />
</configuration>
<configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
<method />
</configuration>
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<configuration default="true" type="Tox" factoryName="Tox">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<module name="Learns" />
<method />
</configuration>
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
<method />
</configuration>
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
<command value="run" />
<scripts />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="ptest" factoryName="ptest">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="SUGGESTED_NAME" value="" />
<option name="ACTION_NAME" value="" />
<option name="RUN_TEST" value="true" />
<option name="TEST_TARGETS" value="" />
<option name="RUN_FAILED" value="false" />
<option name="XUNIT_XML" value="" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
<option name="USE_VARIABLES" value="false" />
<option name="VARIABLES" value="" />
<option name="VERBOSE" value="true" />
<option name="DISABLE_SCREENSHOT" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Attests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Doctests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Nosetests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Unittests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="py.test">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="testToRun" value="" />
<option name="keywords" value="" />
<option name="params" value="" />
<option name="USE_PARAM" value="false" />
<option name="USE_KEYWORD" value="false" />
<method />
</configuration>
<configuration default="false" name="statement" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="C:\Python27\VirutalEnv\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Learns" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/statement.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="Python.statement" />
</list>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="6d9cebb7-78cf-4efe-9c84-0d0fa334deac" name="Default" comment="" />
<created>1488555313546</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1488555313546</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1616" height="876" extended-state="7" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.175" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896462" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="processedProjectFiles" value="true" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/statement.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="34">
<caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
#!/usr/bin/python
# coding=utf-8
## 语句
### 1. 迭代
* 使用For迭代序列对象
```python
nameList = ['W','N','S','H']
for eachName in nameList:
print eachName, '.'
```
* 使用For迭代序列索引项
```python
for index in range(len(nameList)):
print index, nameList[index]
```
* 使用For迭代项和索引
```python
for i,name in enumerate(nameList):
print '%d %s'%(i,name)
```
\ No newline at end of file
{
"presets": ["es2015", "stage-2"],
"plugins": ["transform-runtime"],
"comments": false
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
build/*.js
config/*.js
dist/*.js
node_modules/*
src/static/*
src/assets/*
\ No newline at end of file
/* Refer : http://eslint.cn/docs/user-guide/configuring */
module.exports = {
root: true,
/* 默认使用Espree作为其解析器, 但在本环境中,使用babel-eslint作其解析器 */
parser: 'babel-eslint',
/* 设置解析器选项 */
parserOptions: {
/* 设置为 3, 5 (默认), 6、7 或 8 指定你想要使用的 ECMAScript 版本。你也可以指定为 2015(同 6),2016(同 7),或 2017(同 8)使用年份命名 */
"ecmaVersion" : 6,
/* 设置为 "script" (默认) 或 "module"(如果你的代码是 ECMAScript 模块)。 */
"sourceType" : 'module',
/* 额外的语言特性: */
"ecmaFeatures": {
"jsx": true
}
},
/* 全局环境变量 */
env : {
"node" : true,
"commonjs" : true,
"jquery" : true,
"es6" : true,
},
/* 项目全局变量定义区: 在一个文件里使用全局变量,推荐你定义这些全局变量,这样 ESLint 就不会发出警告了 */
globals: {
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
'html'
],
// add your custom rules here
/* 规则 0:关闭规则; 1:开启规则并使用警告级别; 2:开启规则并使用错误级别 */
'rules': {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
// allow console
'no-console' : "off",
/* 关闭: 禁止不必要的分号规则 */
'no-extra-semi' : "off",
/* 关闭: 强制分号前后有空格 */
'semi-spacing' : ["off"],
/* 关闭: 要求在语句末尾使用分号 */
"semi": ["off", "always"],
/* 关闭: 在对象字面量的键和值之间至少有一个空格存在 */
// http://eslint.cn/docs/rules/key-spacing
"key-spacing": [ "off", { "beforeColon":true,"afterColon":true }],
/* 错误: 检测本作用域中声明的变量是否使用,未使用则报错 */
"no-unused-vars": ["error", { "vars": "local" }],
/* 警告: 使用一致的缩进 */
"indent": ["warn", 4, { "SwitchCase": 1 }],
/* 关闭: 不允许多个空行 */
"no-multiple-empty-lines":"off",
/* 关闭: 要求或禁止函数圆括号之前有一个空格 */
"space-before-function-paren": ["off", {
"anonymous": "ignore",
"named": "ignore",
"asyncArrow": "ignore"
}],
/* 错误: 要求或禁止使用拖尾逗号 */
"comma-dangle": ["warn", {
"arrays": "never",
"objects": "ignore",
"imports": "never",
"exports": "never",
"functions": "ignore"
}],
/* 关闭: 禁止行尾空格 */
"no-trailing-spaces" : "off",
/* 警告: 要求文件末尾保留一行空行*/
"eol-last" : ["warn", "always"],
/* 关闭:*/
"comma-spacing" : ["off", { "before": false, "after": true }],
/* 关闭: 强制使用一致的反勾号、双引号或单引号 */
"quotes" : ["off","single"],
/* 关闭: 要求或禁止在注释前有空白 */
"spaced-comment" : ["off","always"],
/* 关闭: 要求使用 === 和 !== */
"eqeqeq" : "off",
/* 关闭: 禁止在条件中使用常量表达式 */
"no-constant-condition" : "off",
/* 关闭: 要求或禁止块内填充 */
"padded-blocks" : "off",
/* 警告: 禁止自身比较 */
"no-self-compare" : "warn",
/* 关闭: 禁止未使用过的变量 ==> 后期开启 */
"no-unused-vars" : "off",
/* 关闭: 禁止或强制圆括号内的空格 */
"space-in-parens" : "off",
/* 警告: 要求或者禁止Yoda条件 */
"yoda" : "off",
/* 警告: 要求或禁止语句块之前的空格 */
"space-before-blocks" : "warn"
}
};
.DS_Store
node_modules/
dist/
npm-debug.log
test/unit/coverage
test/e2e/reports
selenium-debug.log
.node_modules/
dist/
npm-debug.log.*
npm-debug.log
selenium-debug.log
.idea/*
\ No newline at end of file
# shopweb
> vue project for shop
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
```
For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
// https://github.com/shelljs/shelljs
require('./check-versions')()
require('shelljs/global')
env.NODE_ENV = 'production'
var path = require('path')
var config = require('../config')
var ora = require('ora')
var webpack = require('webpack')
var webpackConfig = require('./webpack.prod.conf')
console.log(
' Tip:\n' +
' Built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
)
var spinner = ora('building for production...')
spinner.start()
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
rm('-rf', assetsPath)
mkdir('-p', assetsPath)
cp('-R', 'static/*', assetsPath)
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n')
})
var semver = require('semver')
var chalk = require('chalk')
var packageConfig = require('../package.json')
var exec = function (cmd) {
return require('child_process')
.execSync(cmd).toString().trim()
}
var versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
},
{
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
}
]
module.exports = function () {
var warnings = []
for (var i = 0; i < versionRequirements.length; i++) {
var mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (var i = 0; i < warnings.length; i++) {
var warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
/* eslint-disable */
require('eventsource-polyfill')
var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
hotClient.subscribe(function (event) {
if (event.action === 'reload') {
window.location.reload()
}
})
require('./check-versions')()
var config = require('../config')
if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var opn = require('opn')
var proxyMiddleware = require('http-proxy-middleware')
// var webpackConfig = process.env.NODE_ENV === 'testing'
// ? require('./webpack.prod.conf')
// : require('./webpack.dev.conf')
var webpackConfig = require('./webpack.prod.conf');
// default port where dev server listens for incoming traffic
var port = config.dev.port
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable
var app = express()
var compiler = webpack(webpackConfig)
var devMiddleware = require('webpack-dev-middleware')(compiler, {
publicPath: webpackConfig.output.publicPath,
stats: {
colors: true,
chunks: false
}
})
var hotMiddleware = require('webpack-hot-middleware')(compiler)
// force page reload when html-webpack-plugin template changes
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
var options = proxyTable[context]
if (typeof options === 'string') {
options = { target: options }
}
app.use(proxyMiddleware(context, options))
})
// handle fallback for HTML5 history API
app.use(require('connect-history-api-fallback')())
// serve webpack bundle output
app.use(devMiddleware)
// enable hot-reload and state-preserving
// compilation error display
app.use(hotMiddleware)
// serve pure static assets
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
app.use(staticPath, express.static('./static'))
module.exports = app.listen(port, function (err) {
if (err) {
console.log(err)
return
}
var uri = 'http://localhost:' + port
console.log('Listening at ' + uri + '\n')
// when env is testing, don't need open it
// if (process.env.NODE_ENV !== 'testing') {
// opn(uri)
// }
})
var path = require('path')
var config = require('../config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
exports.assetsPath = function (_path) {
var assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
// generate loader string to be used with extract text plugin
function generateLoaders (loaders) {
var sourceLoader = loaders.map(function (loader) {
var extraParamChar
if (/\?/.test(loader)) {
loader = loader.replace(/\?/, '-loader?')
extraParamChar = '&'
} else {
loader = loader + '-loader'
extraParamChar = '?'
}
return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '')
}).join('!')
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract('vue-style-loader', sourceLoader)
} else {
return ['vue-style-loader', sourceLoader].join('!')
}
}
// http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
return {
css: generateLoaders(['css']),
postcss: generateLoaders(['css']),
less: generateLoaders(['css', 'less']),
sass: generateLoaders(['css', 'sass?indentedSyntax']),
scss: generateLoaders(['css', 'sass']),
stylus: generateLoaders(['css', 'stylus']),
styl: generateLoaders(['css', 'stylus'])
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
loader: loader
})
}
console.log(output);
return output
}
var path = require('path');
var config = require('../config');
var utils = require('./utils');
var projectRoot = path.resolve(__dirname, '../');
var webpack = require('webpack');
var env = process.env.NODE_ENV
// check env & config/index.js to decide weither to enable CSS Sourcemaps for the
// various preprocessor loaders added to vue-loader at the end of this file
var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap)
var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap)
var useCssSourceMap = cssSourceMapDev || cssSourceMapProd
module.exports = {
entry: {
main : config.build.entry,
},
output: {
path: config.build.assetsRoot,
publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath,
filename: '[name].js'
},
resolve: {
extensions: ['', '.js', '.vue'],
fallback: [path.join(__dirname, '../node_modules')],
alias: {
'vue$': 'vue/dist/vue.common.js',
'src': path.resolve(__dirname, '../src'),
'assets': path.resolve(__dirname, '../src/assets'),
'components': path.resolve(__dirname, '../src/components')
},
modulesDirectories: ["web_modules", "node_modules", "bower_components"],
},
resolveLoader: {
fallback: [path.join(__dirname, '../node_modules')]
},
module: {
preLoaders: [
// {
// test: /\.vue$/,
// loader: 'eslint',
// include: projectRoot,
// exclude: /node_modules/
// },
// {
// test: /\.js$/,
// loader: 'babel-loader!eslint-loader',
// include: projectRoot,
// exclude: /node_modules/
// }
],
loaders: [
{ test: /\.js$/, loader: 'babel',include: projectRoot, exclude: /node_modules/ },
{ test: /\.json$/, loader: 'json' },
// less语法转化
{ test: /\.less$/, loader: 'style!css!less' },
// stylus语法转化
{ test: /\.styl$/, loader: 'style-loader!css-loader!stylus-loader' },
// 编译css并自动添加css前缀
{ test: /\.css$/, loader: "style!css" },
{ test: /\.vue$/, loader: 'vue' },
{ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url',
query: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url',
query: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
eslint: {
// formatter: require('eslint-friendly-formatter')
},
vue: {
//loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }),
postcss: [
require('autoprefixer')({
browsers: ['last 2 versions']
})
],
loaders: [
// less语法转化
{ test: /\.less$/, loader: 'vue-style-loader!css-loader!less-loader' },
// stylus语法转化
{ test: /\.styl$/, loader: 'vue-style-loader!css-loader!stylus-loader' },
// 编译css并自动添加css前缀
{ test: /\.css$/, loader: "vue-style-loader!css-loader" },
// postcss转化
{ test: /\.postcss$/, loader: "vue-style-loader!css-loader" },
{ test: /\.sass$/, loader: "vue-style!css!sass" }
]
},
plugins : [
//new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(".bower.json", ["main"])
],
babel: {
presets: ['es2015'],
plugins: ['transform-runtime']
}
}
var config = require('../config')
var webpack = require('webpack')
var merge = require('webpack-merge')
var utils = require('./utils')
var baseWebpackConfig = require('./webpack.base.conf')
var HtmlWebpackPlugin = require('html-webpack-plugin')
// add hot-reload related code to entry chunks
Object.keys(baseWebpackConfig.entry).forEach(function (name) {
baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
})
module.exports = merge(baseWebpackConfig, {
// module: {
// //loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
// },
// eval-source-map is faster for development
devtool: '#eval-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': config.dev.env
}),
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
chunks: ['main'],
inject: true
})
]
})
var path = require('path')
var config = require('../config')
var utils = require('./utils')
var webpack = require('webpack')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var env = config.build.env
var webpackConfig = merge(baseWebpackConfig, {
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new webpack.optimize.UglifyJsPlugin({
exclude: /\.css/,
sourceMap: false,
minimize: true,
compress: {
drop_debugger:true,
warnings: false
}
}),
new webpack.optimize.OccurrenceOrderPlugin(),
// extract css into its own file
new ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
//chunks: ['main'], // 这里不能只加main,对于pord来说,还会使用CommonsChunkPlugin插件生成vender.js
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
})
]
})
if (config.build.productionGzip) {
var CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
module.exports = webpackConfig
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
entry: path.resolve(__dirname, '../src/main.js'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsImagesDirectory: 'src/static/images',
assetsJsDirectory: 'src/static/js',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css']
},
dev: {
env: require('./dev.env'),
port: 9080,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
}
}
module.exports = {
NODE_ENV: '"production"'
}
var merge = require('webpack-merge')
var devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})
<!DOCTYPE html>
<html>
<head>
<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,user-scalable=no" />
<meta content="email=no" name="format-detection" />
<meta name="format-detection" content="telephone=no" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<meta name="keyword" content="">
<meta name="x5-page-mode" content="app">
<meta charset="utf-8">
<title>shopweb</title>
</head>
<body>
<div id="app"></div>
<script src="//cdn.bootcss.com/zepto/1.2.0/zepto.min.js"></script>
<!-- built files will be auto injected -->
</body>
</html>
{
"name": "shopweb",
"version": "1.0.0",
"description": "vue project for shop",
"author": "shipfi@thinkpad <shipfi@thinkpad>",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"unit": "karma start test/unit/karma.conf.js --single-run",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src",
"webpack-build" : "webpack --config=build/webpack.dev.conf.js",
"webpack-server" : "webpack-dev-server --config=build/webpack.dev.conf.js --port=9088"
},
"dependencies": {
"vue": "^2.1.0",
"connect-history-api-fallback": "^1.3.0",
"isomorphic-fetch": ">=2.2.1",
"jsuri": ">=1.3.1",
"mint-ui": "^2.0.4",
"react-cookie": ">=0.4.8",
"vue-resource": "^1.0.3",
"vue-router": "^2.0.1",
"vuex": "^1.0.0",
"vuex-router-sync": "^2.1.1"
},
"devDependencies": {
"autoprefixer": "^6.4.0",
"babel-core": "^6.0.0",
"babel-eslint": "^7.0.0",
"babel-loader": "^6.0.0",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-register": "^6.0.0",
"chalk": "^1.1.3",
"connect-history-api-fallback": "^1.1.0",
"css-loader": "^0.25.0",
"eslint": "^3.7.1",
"eslint-friendly-formatter": "^2.0.5",
"eslint-loader": "^1.5.0",
"eslint-plugin-html": "^1.3.0",
"eslint-config-standard": "^6.1.0",
"eslint-plugin-promise": "^2.0.1",
"eslint-plugin-standard": "^2.0.1",
"eventsource-polyfill": "^0.9.6",
"express": "^4.13.3",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"function-bind": "^1.0.2",
"html-webpack-plugin": "^2.8.1",
"http-proxy-middleware": "^0.17.2",
"json-loader": "^0.5.4",
"karma": "^1.3.0",
"karma-coverage": "^1.1.1",
"karma-mocha": "^1.2.0",
"karma-sinon-chai": "^1.2.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.26",
"karma-webpack": "^1.7.0",
"lolex": "^1.4.0",
"mocha": "^3.1.0",
"chai": "^3.5.0",
"sinon": "^1.17.3",
"sinon-chai": "^2.8.0",
"inject-loader": "^2.0.1",
"isparta-loader": "^2.0.0",
"chromedriver": "^2.21.2",
"cross-spawn": "^4.0.2",
"nightwatch": "^0.9.8",
"selenium-server": "2.53.1",
"semver": "^5.3.0",
"opn": "^4.0.2",
"ora": "^0.3.0",
"shelljs": "^0.7.4",
"url-loader": "^0.5.7",
"vue-loader": "^10.0.0",
"vue-style-loader": "^1.0.0",
"vue-template-compiler": "^2.1.0",
"webpack": "^1.13.2",
"webpack-dev-middleware": "^1.8.3",
"webpack-hot-middleware": "^2.12.2",
"webpack-merge": "^0.14.1",
"less": ">=2.7.1",
"less-loader": ">=2.2.3",
"my-local-ip": "^1.0.0",
"postcss": "^5.2.0",
"postcss-loader": "^0.13.0",
"style-loader": "^0.13.1",
"stylus": ">=0.54.5",
"stylus-loader": ">=2.3.1",
"uppercamelcase": "^1.1.0",
"vue-validator": "^3.0.0-alpha.1"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
}
}
<template>
<div id="app">
<div class="content-top"></div>
<div class="content">
<div class="content-body">
<router-view></router-view>
</div>
<div class="sidebar"></div>
</div>
</div>
</template>
<script>
import './static/js/clamp.js'
import store from './vuex/store';
export default {
store
}
</script>
\ No newline at end of file
/**
* Created by shipfi on 2016/6/2.
*/
import apiResource from './resource';
import weiIndex from './jsons/weiIndex';
import personData from './jsons/personData';
import orderNum from './jsons/orderNum';
import browseRecordList from './jsons/browseRecordList';
import myCollectionList from './jsons/myCollectionList';
import couponCenterList from './jsons/couponCenterList';
import couponCenterDetail from './jsons/couponCenterDetail';
import matchNetList from './jsons/matchNetList';
import couponTab from './jsons/couponTab';
import myCouponList from './jsons/myCouponList';
import myCouponDetail from './jsons/myCouponDetail';
import groupNav from './jsons/groupNav';
import myAddressList from './jsons/myAddressList';
import selectAddress from './jsons/selectAddress';
import checkOrder from './jsons/checkOrder';
import confirmOrder from './jsons/confirmOrder';
import pushOrder from './jsons/pushOrder';
import matchCouponList from './jsons/matchCouponList';
import orderList from './jsons/orderList';
import count from './jsons/count';
import {cacheType, cacheManager} from '../utils/cacheManager';
export default {
apiAddCache: function (promiseFun, cacheType, expiresInSeconds = 3600) {
return new Promise(function (resolve, reject) {
var apiCache = cacheManager.get(cacheType);
if (apiCache) {
console.log('Get ' + cacheType + ' from Cache===========================>');
console.log(apiCache);
resolve(apiCache);
} else {
promiseFun.then(function (res) {
console.log('Get ' + cacheType + ' from API===========================>');
apiCache = {
data: res.data
};
console.log(apiCache);
cacheManager.set(cacheType, apiCache, expiresInSeconds);
resolve(res);
}, function (err) {
reject(err);
});
}
});
},
/*获取首页结构*/
getweiIndext: function (pageId) {
//return apiResource.getweiIndext.get({pageId:pageId});
return new Promise(function (resolve, reject) {
if (true) {
resolve(weiIndex);
} else {
reject(error);
}
});
},
/*获取个人中心信息*/
getpersonData: function () {
// return apiResource.getpersonData.get();
return new Promise(function (resolve, reject) {
if (true) {
resolve(personData);
} else {
reject(error);
}
});
},
/*获取个人中心订单数*/
getorderNum: function () {
// return apiResource.getOrderNum.get();
return new Promise(function (resolve, reject) {
if (true) {
resolve(orderNum);
} else {
reject(error);
}
});
},
/*获取浏览记录*/
getbrowseRecordList: function (page, pageNum) {
// return apiResource.getbrowseRecordList.get({page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = browseRecordList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (var i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(browseRecordList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (var i = page * pageNum; i < browseRecordList.content.list.length; i++) {
newdata = newdata.concat(browseRecordList.content.list[i]);
}
}
var data = {count: browseRecordList.content.count, content: newdata};
console.log("接口" + data.count);
resolve(data);
} else {
reject(1);
}
});
},
/*获取我的收藏列表*/
getmyCollectionList: function (page, pageNum) {
// return apiResource.getmyAddressList.get({page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = myCollectionList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (var i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(myCollectionList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (var i = page * pageNum; i < myCollectionList.content.list.length; i++) {
newdata = newdata.concat(myCollectionList.content.list[i]);
}
}
var data = {count: myCollectionList.content.count, content: newdata};
console.log("接口" + data.count);
resolve(data);
} else {
reject(1);
}
});
},
/*添加/取消收藏*/
addCancelCollection: function (id, type) {
//return apiResource.addCancelCollection.save({favoriateId:id,type:type});
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve({code: 20000});
} else {
reject(1);
}
});
},
/*获取我的优惠券列表*/
getmyCouponList: function (page, pageNum) {
// return apiResource.getmyCouponList.get({page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = myCouponList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (var i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(myCouponList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (var i = page * pageNum; i < myCouponList.content.list.length; i++) {
newdata = newdata.concat(myCouponList.content.list[i]);
}
}
var data = {count: myCouponList.content.count, content: newdata};
console.log("接口" + data.count);
resolve(data);
} else {
reject(1);
}
});
},
/*获取我的优惠券详情*/
getmyCouponDetail: function () {
// return apiResource.getmyCouponDetail.get();
return new Promise(function (resolve, reject) {
if (true) {
resolve(myCouponDetail);
} else {
reject(error);
}
});
},
/*获取优惠券中心列表*/
getcouponCenterList: function (cplType, page, pageNum) {
// return apiResource.getcouponCenterList.get({cplType:{cplType},page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = couponCenterList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (var i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(couponCenterList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (var i = page * pageNum; i < couponCenterList.content.list.length; i++) {
newdata = newdata.concat(couponCenterList.content.list[i]);
}
}
var data = {count: couponCenterList.content.count, content: newdata};
console.log("接口" + data.count);
resolve(data);
} else {
reject(1);
}
});
},
//获取优惠券中心标题背景
getcouponTab: function () {
// return apiResource.getcouponTab.get();
return new Promise(function (resolve, reject) {
if (true) {
resolve(orderNum);
} else {
reject(error);
}
});
},
/*获取底部导航*/
getgroupNav: function () {
// return apiResource.getgroupNav.get();
return new Promise(function (resolve, reject) {
if (true) {
resolve(groupNav);
} else {
reject(error);
}
});
},
/*获取我的地址列表*/
getmyAddressList: function (page, pageNum) {
// return apiResource.getmyAddressList.get({page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = myAddressList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (var i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(myAddressList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (var i = page * pageNum; i < myAddressList.content.list.length; i++) {
newdata = newdata.concat(myAddressList.content.list[i]);
}
}
var data = {content: {count: myAddressList.content.count, list: newdata}};
console.log("接口" + data.content);
resolve(data);
} else {
reject(1);
}
});
},
/*设置默认地址*/
setDefaultAddress: function (id) {
//return apiResource.setDefaultAddress.save({buyerAddressId:id});
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve({code: 20000});
} else {
reject(1);
}
});
},
/*删除地址*/
deleteAddress: function (id) {
//return apiResource.deleteAddress.delete({buyerAddressId:id});
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve({code: 20000});
} else {
reject(1);
}
});
},
/*获取指定地址信息*/
selectAddress: function (id) {
//return apiResource.selectAddress.get({buyerAddressId: id});
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(selectAddress);
} else {
reject(1);
}
});
},
/*保存编辑地址信息*/
posteditAddress: function (data) {
return apiResource.posteditAddress.save(data);
},
/*保存新增地址信息*/
postaddAddress: function (data) {
return apiResource.postaddAddress.save(data);
},
/*确认订单(结算)*/
postcheckOrder: function (data) {
//return apiResource.postcheckOrder.save(data);
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(checkOrder);
} else {
reject(1);
}
});
},
/*获取符合需求的优惠券列表*/
postmatchCouponList: function (data) {
//return apiResource.postmatchCouponList.save(data);
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(matchCouponList);
} else {
reject(1);
}
});
},
/*确认下单*/
postconfirmOrder: function (data) {
//return apiResource.postconfirmOrder.save(data);
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(confirmOrder);
} else {
reject(1);
}
});
},
/*支付页面*/
getpushOrder: function (orderId) {
//return apiResource.getpushOrder.get({orderId:orderId});
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(pushOrder);
} else {
reject(1);
}
});
},
/*支付订单*/
postpayOrder: function (data) {
return apiResource.postpayOrder.save(data);
//return new Promise(function (resolve, reject) {
// if (1 == 1) {
// resolve(pushOrder);
// } else {
// reject(1);
// }
//});
},
/*订单列表*/
getOrderList: function (orderState, evaluationState, page, pageNum) {
// return apiResource.getOrderList.get({orderState:orderState,evaluationState:evaluationState,page:page,pageNum:pageNum});
return new Promise(function (resolve, reject) {
if (1 == 1) {
var newdata = [];
var isend = orderList.content.list.length - page * pageNum;
if (isend >= pageNum) {
for (let i = page * pageNum; i < page * pageNum + pageNum; i++) {
newdata = newdata.concat(orderList.content.list[i]);
}
} else if (0 < isend < pageNum) {
for (let i = page * pageNum; i < orderList.content.list.length; i++) {
newdata = newdata.concat(orderList.content.list[i]);
}
}
var data = {content: {count: orderList.content.count, list: newdata}}
//console.log(data.content)
resolve(data);
} else {
reject(1);
}
});
},
/*订单列表总数*/
getOrderCount: function () {
return new Promise(function (resolve, reject) {
if (1 == 1) {
resolve(count);
} else {
reject(1);
}
});
},
};
/**
* Created by qingge_zwj on 2016/11/23.
*/
export default {
"code": 20000, // 成功时返回
"content": {
count: 12, //记录总数
list: [
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (0 为商品 1 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "111111111111", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "22222222222222", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "3333333333333", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "444444444444444", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "55555555555555555", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "666666666666", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "777777777777777", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "88888888888888", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "99999999999999", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "10", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "11", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
},
{
id: 12, // 浏览内容id (商品/优惠券)
type: 1, // 浏览内容类型 (1 为商品 2 为优惠券)
photo: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 主图 商品主图 spc_main_photo / 优惠券图 cpl_image
name: "12", // 名称 商品名 spc_good_name / 优惠券名 cpl_name
price: 999, // 商品最小牌价 spc_min_price / 优惠券面值
browserTime: "2016-12-12 12:12:12" // 浏览时间
}
]
}
}
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default
{
"code": 20000, // 成功时返回
"content": {
siteName: "兑换", // 店铺名
orderMoney: 599,
orderPoint: 10,
siteUnitName: '人民币', //价格单位
products: [
{
spcId: '010101', //商品id
productPhoto: "http://qing.com/1.png",//商品主图
productName: "dfdf", // 商品名 spd_good_name
productAttrValue: "红色 35", // 规格商品详细值 spd_spec_attr_value
price: 999, // 规格商品主价格 spd_price
productNum: 2, // 商品数量
},
],
shippingFee: 10, // 运费
from: "dfdfdf", // 商品来源
coupon: { // 优惠券信息
money: 3, // 订单优惠金额
cplName: "包邮券", //优惠券名称
},
activity: { // 活动信息
money: 3, // 订单优惠金额
actName: " 满100减5", // 活动名称
}
}
}
\ No newline at end of file
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default
{
"code": 20000, // 成功时返回
"content": {
siteName: "兑换", // 店铺名
orderId: 12, //订单id
orderMoney: 599,
orderPoint: 10,
siteUnitName: '人民币', //价格单位
products: [
{
spcId: '010101', //商品id
productPhoto: "http://qing.com/1.png",//商品主图
productName: "dfdf", // 商品名 spd_good_name
productAttrValue: "红色 35", // 规格商品详细值 spd_spec_attr_value
price: 999, // 规格商品主价格 spd_price
productNum: 2, // 商品数量
},
],
shippingFee: 10, // 运费
from: "dfdfdf", // 商品来源
coupon: { // 优惠券信息
money: 3, // 订单优惠金额
cplName: "包邮券", //优惠券名称
},
activity: { // 活动信息
money: 3, // 订单优惠金额
actName: " 满100减5", // 活动名称
}
}
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/23.
*/
export default {
"code" : 20000 , // 成功时返回
"content" :{
count:1, //订单总数
}
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/28.
*/
/**
* Created by qingge_zwj on 2016/11/28.
*/
/**
* Created by qingge_zwj on 2016/11/28.
*/
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default
{
"code": 20000, // 成功时返回
"content": {
appNavId: 15, // 导航ID
groupId: "SatTest", // 集团ID
style: 1, // 导航样式
bgColor: "", // 导航背景
navList: [
{
name: "人样",
subMenu: [
{
name: '小样', //导航名
text: '优惠券中心', //导航目标名
prefix: { // 链接类型
type: 4, // 链接类型
id: 1, // 链接参数 为id
},
url: "http://www.baidu.com", // 导航链接
},
]
},
{
name: '小样', //导航名
text: '优惠券中心', //导航目标名
prefix: { // 链接类型
type: 6, // 链接类型
id: 1, // 链接参数 为id
url: '/personCenter'
},
url: "http://www.baidu.com" // 导航链接
}
]
}
}
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default
{
"code": 20000, // 成功时返回
"content": [
{
cplId: 12, // 优惠券id
cplName: "满减", // 优惠券名称
money: 5 // 订单优惠金额
},
{
cplId: 13, // 优惠券id
cplName: "满减", // 优惠券名称
money: 9 // 订单优惠金额
}
]
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/28.
*/
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default
{
"code": 20000, // 成功时返回
"content": {
count: 35, //记录总数
list: [
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 13, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 14, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 1 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 15, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 16, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 17, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 18, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 19, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 20, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 21, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 22, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小二", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小三", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小四", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小五", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
},
{
buyerNickName: "王小六", // 买家名称
buyerAddressId: 12, // 买家地址id
buyerAddress: "常州新北..", // 买家地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900, // 买家邮编
isDefault: 0 // 是否默认 0为否 1为是
}
]
}
}
/**
* Created by qingge_zwj on 2016/11/24.
*/
export default {
"code": 20000, // 成功时返回
"content": {
count: 12, //收藏总数
list: [
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
},
{
favoriateId: 1212, // 收藏ID bf_id
productPhoto: "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ", // 商品主图 spc_main_photo
productName: "dfdfd", // 商品名称 spc_good_name
productListPrice: 999, // 商品最小牌价 spc_min_price
favoriateTime: "28187397", // 收藏时间
type: 0 // 0: com_id为商品 1:位优惠券
}
]
}
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/28.
*/
export default {
"code": 20000, // 成功时返回
"content":
{
cplId: "11", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券", // 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "#000", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12", // 使用截止时间
conditions: "满减" // 使用条件
}
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/24.
*/
export default {
"code": 20000, // 成功时返回
"content": {
count: 12, //收藏总数
list: [
{
cplId: "11", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券aaaaaa",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
{
cplId: "121212", // 优惠券id
cplCode: "dfldjfl3333", // 优惠券编号
cplName: "无敌券qqqqqqqqqq",
cplUnit:'zhe',// 券名称
cplType: 0, // 优惠券类型
cplTypeName: "折扣券", // 优惠券类型名
cplValue: 500, // 优惠券面值
cplBgcolor: "yellow", // 优惠券背景颜色
cplStartTime: "2016-12-12 12:12:12", // 使用开始时间
cplEndTime: "2016-12-12 12:12:12" // 使用截止时间
},
]
}
}
\ No newline at end of file
/**
* Created by qingge_zwj on 2016/11/23.
*/
export default {
"code" : 20000 , // 成功时返回
"content" :{
count:12, //订单总数
list:[
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
{
orderId : 121212 , // 订单ID
siteId : "wjdf2121" , // 店铺ID
siteName : "小店" , // 店铺名
orderSn : "dd1212121", // 订单编号
orderState : 0 , // 订单状态
evaluationState : 1 , // 评价状态
returnState:0 , //退款状态
products : [
{
orderListId : 129 , // 订单明细id
productName : "dfdf" , // 商品名 spd_good_name
productPhoto : "http://qing.com/1.png" , // 商品主图 spd_main_photo
price : 999 , // 规格商品主价格 spd_price
productSpecValue : "红色 35" , // 规格商品详细值 spd_spec_attr_value
},
],
shippingFee : 10 , // 运费
brandId : 10 , // 商品品牌ID
brandName : "dd" , // 品牌名称
},
]
}
}
\ No newline at end of file
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default {
"code": 20000, // 成功时返回
"content": {
stayPayNum: 11, // 待付款订单数
stayDeliverNum: 22, // 待发货订单数
stayTakeNum: 33, // 待收货订单数
stayReplyNum: 44, // 待评论订单数
salesReturnNum: 55 // 退货订单数
}
}
\ No newline at end of file
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default {
"code": 20000, // 成功时返回
"content": {
custId: "12121", // 客户ID
buyerNickName: "王小二", // 买家名称
buyerMobile: "1928192783", // 买家电话
buyerAvatar: "", // 买家头像
buyerPoint: 1222, // 买家积分信息
buyerAppvalue: 1212, // 买家联盟价值
buyerState: 1 // 买家状态
}
}
/**
* Created by qingge_zwj on 2016/11/23.
*/
export default {
"code" : 20000 , // 成功时返回
"content" :{
orderPoints : 999 , // 所需支付总积分值
orderMoney : 10 , // 所需人民币价格
payWay : ["wx","zfb"], // 支付方式
buyerNickName : "小饭团" , // 买家名称
buyerAvatar : "1.png", // 买家头像
custId : "1000000000090" , // 客户ID
custPoints : 8000 , // 客户积分
siteUnitName:'积分' , //客户积分单位
orderTime : '2016-12-12 12:12:12' , // 订单生成时间
orderValidTime :1800 // 订单有效时间(秒)
}
}
/**
* Created by qingge_cyc on 2016/11/23.
*/
export default {
"code": 20000, // 成功时返回
"content": {
buyerNickName: "王小二", // 买家名称
cityId: "1212", // 城市Id
cityName: "常州市", // 城市名
provinceId: "4343", // 省份ID
provinceName: "江苏省", // 省份名
areaId: "555", // 区县ID
areaName: "新北区", // 区县名
detailAddress: "太湖东路9-2", // 详细地址
buyerMobile: "12819378189", // 买家电话
buyerCode: 222900 // 买家邮编
}
}
\ No newline at end of file
/**
* Created by ZL on 2016/6/20.
*/
export default
{
"code": 20000, // 成功时返回
"content": {
pageId: 110, // 页面ID
groupId: "101010", // 集团ID
siteId: "wd1212", // 站点ID
pageName: "首页", // 页面标题
pageDesc: "小首页", // 页面描述
bgColor: "#ddd", // 背景颜色
isHome: 1, // 是否为主页 0否,1是
siteType: 1, // 站点类型 0积分凉商城,1云店,2体验店
siteName: "小网站", // 站点名称
siteUnitName: "人民币", // 网点定价单位
fields: [ // 微页面模块
/************图片广告**************/
{
fieldId: 11959, // 模块id
fieldType: "imageAdv", // 模块类型,图片广告 image_ad
content: {
"imageType": 1, // 广告显示方式(2为轮播,1为分开)
"navList": [ // 图片广告列表
{
"title": "", // 广告标题
"name": "", // 广告名
"prefix": { // 链接类型
type: 9, // 链接类型
id: 1 // 链接参数 为id
},
"url": "http://www.baidu.com", // 广告链接
"image": "http://evshop.picture.qingger.com/FvQX8lTUghumYFqoCbElrG5hDOHB"// 广告图片
}
]
}
},
/************富文本**************/
{
fieldId: 11749, // 组件ID
fieldType: "richText", // 组件类型,富文本 rich_text
content: {
"bgColor": "#ffff00", // 文本的背景色
"textContent": "<p>文本内容</p><br/><p>asdfasdf</p>" // 文本内容
}
},
/************标题**************/
{
fieldId: 11749, // 组件ID
fieldType: "title", // 组件类型,标题
content: {
"title": "这是一个很神奇的标题", // 标题名
"subTitle": "2016-11-07 14:40", // 副标题
"showMethod": "1", // 显示方式 (3、居左显示 1、居中显示 2、居右显示)
"bgColor": "#00ffff" // 背景色
}
},
/************文本导航**************/
{
fieldId: 11749, // 组件ID
fieldType: "textNav", // 组件类型, 文本导航 text_nav
content: [
{
"title": "这是一个导航", // 导航名
"name": "2016秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋",// 导航目标名
"prefix": { // 链接类型
type: 7, // 链接类型
id: 1 // 链接参数 为id
}, // 导航类型
"url": "http://www.baidu.com" // 导航链接
},
{
"title": "这是一个导航2", // 导航名
"name": "2016秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋",// 导航目标名
"prefix": { // 链接类型
type: 3, // 链接类型
id: 1 // 链接参数 为id
}, // 导航类型
"url": "http://www.baidu.com" // 导航链接
}
]
},
/************图片导航**************/
{
fieldId: 11749, // 组件ID
fieldType: "imageNav", // 组件类型, 图片导航 image_nav
content: [
{
"title": "这是一个图片导航", // 图片导航名
"name": "http://www.baidu.com",
"prefix": { // 链接类型
type: 1, // 链接类型
id: 1 // 链接参数 为id
}, // 导航类型
"url": "http://www.baidu.com", // 导航链接
"image": "http://evshop.picture.qingger.com/Fu1KoaUvwSFTMVwIGrlKWbg2pUhE" // 导航图片
},
{
"title": "这是一个图片导航2", // 图片导航名
"name": "http://www.baidu.com",
"prefix": { // 链接类型
type: 2, // 链接类型
id: 1 // 链接参数 为id
}, // 导航类型
"url": "http://www.baidu.com", // 导航链接
"image": "http://evshop.picture.qingger.com/Fu1KoaUvwSFTMVwIGrlKWbg2pUhE" // 导航图片
},
{
"title": "这是一个图片导航3", // 图片导航名
"name": "http://www.baidu.com",
"prefix": { // 链接类型
type: 4, // 链接类型
id: 1 // 链接参数 为id
}, // 导航类型
"url": "http://www.baidu.com", // 导航链接
"image": "http://evshop.picture.qingger.com/Fu1KoaUvwSFTMVwIGrlKWbg2pUhE" // 导航图片
}
]
},
/************商品搜索框**************/
{
fieldId: 11749, // 组件ID
fieldType: "search" // 组件类型,商品搜索框
},
/************辅助线**************/
{
fieldId: 11749, // 组件ID
fieldType: "line" // 组件类型,辅助线
},
/************辅助空白**************/
{
fieldId: 11749, // 组件ID
fieldType: "white", // 组件类型,辅助空白
content: {
"height": 98
}
},
/************公告**************/
{
fieldId: 11749, // 组件ID
fieldType: "notice", // 组件类型,公告
content: {
"content": "公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容公告内容",
"contentNum": 2
}
},
/************优惠券**************/
{
fieldId: 11749, // 组件ID
fieldType: "coupons", // 组件类型, 优惠券
content: {
"couponArr": [
{
"id": "121", // 优惠券id
"code": "1000001", // 优惠券编号
"faceMoney": "0.00", // 金额
"url": "121",
"cplType": "1", // 优惠券类型:0折扣券(discount), 1金额券(money), 2礼品券(gift), 3定价券(price)
"cplTypeName": "金额券", // 劵类型名
"cplName": "双11满1000减50元", // 优惠券名
"cplUnit": "元", // 优惠券单位
"bgColor": "#6B44B5", // 优惠券背景色
"useVal": "100.00",
"grantStartTime": "2016-11-19 12:12:12", // 发放开始时间
"grantEndTime": "2016-11-19 12:12:12" // 发放结束时间
},
{
"id": "121", // 优惠券id
"code": "1000001", // 优惠券编号
"faceMoney": "0.00", // 金额
"url": "121",
"cplType": "1", // 优惠券类型:0折扣券(discount), 1金额券(money), 2礼品券(gift), 3定价券(price)
"cplTypeName": "礼品券", // 劵类型名
"cplName": "双11满1000减50元", // 优惠券名
"cplUnit": "元", // 优惠券单位
"bgColor": "#ccc", // 优惠券背景色
"useVal": "100.00",
"grantStartTime": "2016-11-19 12:12:12", // 发放开始时间
"grantEndTime": "2016-11-19 12:12:12" // 发放结束时间
}
]
}
},
/************优惠券中心**************/
{
fieldId: 11749, // 组件ID
fieldType: "couponCenter" // 组件类型,优惠券中心
},
/************商品**************/
{
fieldId: 11749, // 组件ID
fieldType: "product", // 组件类型, 商品 "goods"
content: {
"listType": 2, // size : 列表样式,4为大图,1为小图,2为一大两小,3为详细列表
"showTitle": 1, // show_title : 是否显示商品名 0为不显示,1为显示
"showType": 2, // size_type :显示样式 1为卡片样式,2为极简样式
"isShowPrice": 1, // price : 是否显示商品价格 ,0为不显示,1为显示
"goods": [
{
"id": 381, // 商品id
"title": "2016.+/*46253wetrqwe秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋", // 商品名称
"price": 899, // 商品人民币价格
"pointPrice": 8868, // 积分值
"image": "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ",// 商品图片
},
{
"id": 382, // 商品id
"title": "2016秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋", // 商品名称
"price": 899, // 商品人民币价格
"pointPrice": 8868, // 积分值
"image": "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ",// 商品图片
},
{
"id": 383, // 商品id
"title": "2016qwerwer秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋", // 商品名称
"price": 901, // 商品人民币价格
"pointPrice": 8868, // 积分值
"image": "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ",// 商品图片
}
]
}
},
/************商品分组**************/
{
fieldId: 11749, // 组件ID
fieldType: "productList", // 组件类型, 商品分组 "goods_group2"
content: {
"listType": 1, // size : 列表样式,4为大图,1为小图,2为一大两小,3为详细列表
"showTitle": 1, // show_title : 是否显示商品名 0为不显示,1为显示
"showType": 2, // size_type :显示样式 1为卡片样式,2为极简样式
"isShowPrice": 1, // price : 是否显示商品价格 ,0为不显示,1为显示
"groupTitle": "商品分组", // 商品分组是标题
"groupId": 123,
"goods": [
{
"id": 381, // 商品id
"title": "2016秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋", // 商品名称
"price": 899, // 商品人民币价格
"pointPrice": 8868, // 积分值
"image": "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ",// 商品图片
},
{
"id": 381, // 商品id
"title": "2016秋季新款牛皮蝴蝶结尖头金属中跟浅口单鞋女鞋", // 商品名称
"price": 899, // 商品人民币价格
"pointPrice": 8868, // 积分值
"image": "http://evshop.picture.qingger.com/FmDTQf0tZ9Md7pKnaZj6Bj8lESLZ",// 商品图片
}
]
}
}
]
}
}
/**
* Created by shipfi on 2016/6/2.
*/
/*jshint esversion: 6 */
import Vue from 'vue';
import VueResource from 'vue-resource';
//import cookieManager from '../utils/cookieManager';
//import {API_ROOT} from '../config';
//import {getCookie,signOut} from '../utils/AuthService';
Vue.use(VueResource);
// HTTP相关
Vue.http.options.crossOrigin = true;
Vue.http.options.xhr = {withCredentials: true};
//Vue.http.options.timeout = 5000;
//Vue.http.headers.common['GrpAppID'] = cookieManager.getCookie('grpAppId');
//Vue.http.headers.common['OpenID'] = cookieManager.getCookie('wxOpenId');
Vue.http.interceptors.push({
request(request) {
request.headers = request.headers || {};
//request.headers.UserID = "xxx";//getCookie('UserID');
//console.log(grpAppId);
//request.headers.common['AppID'] = cookieManager.getCookie('grpAppId');
//request.headers.common['OpenID'] = cookieManager.getCookie('wxOpenId');
//request.headers.common['UserID'] = cookieManager.getCookie('userId');
return request;
},
response(response){
// 这里可以对响应的结果进行处理
if (response.status === 401) {
//signOut();
window.location.pathname = '/authFaild';
}
return response;
}
});
var API_ROOT='/shopAPI';
export default {
/* 首页结构 */
getweiIndext: Vue.resource(API_ROOT + '/weiPage/indexPage/{pageId}'),
/* 底部导航 */
getgroupNav:Vue.resource(API_ROOT + '/weiPage/nav'),
/* 获取我的地址列表 */
getmyAddressList:Vue.resource(API_ROOT + '/address/list?page={page}&pageNum={pageNum}'),
/* 设置默认地址 */
setDefaultAddress:Vue.resource(API_ROOT + '/address/default'),
/* 删除默认地址 */
deleteAddress:Vue.resource(API_ROOT + '/address'),
/* 获取指定地址信息 */
selectAddress:Vue.resource(API_ROOT + '/address/appoint/{buyerAddressId}'),
/* 保存编辑地址信息 */
posteditAddress:Vue.resource(API_ROOT + '/address/edit'),
/* 保存新增地址信息 */
postaddAddress:Vue.resource(API_ROOT + '/address/add'),
/* 获取个人中心信息 */
getpersonData:Vue.resource(API_ROOT + '/self'),
/* 获取个人中心订单数 */
getorderNum:Vue.resource(API_ROOT + '/order/orderCount'),
/* 获取浏览记录 */
getbrowseRecordList:Vue.resource(API_ROOT + '/self/browers?page={page}&pageNum={pageNum}'),
/* 获取收藏记录 */
getmyCollectionList:Vue.resource(API_ROOT + '/self/favoriates?page={page}&pageNum={pageNum}'),
/* 添加/取消收藏 */
addCancelCollection:Vue.resource(API_ROOT + '/self/favoriate?id={id}&type={type}'),
/* 获取我的优惠券列表 */
getmyCouponList:Vue.resource(API_ROOT + '/self/coupons?useType={useType}&page={page}&pageNum={pageNum}'),
/* 获取优惠券详情 */
getmyCouponDetail:Vue.resource(API_ROOT + '/self/coupon/detail/{cplId}'),
/* 获取优惠券中心列表 */
getcouponCenterList:Vue.resource(API_ROOT + '/coupon/list?cplType={cplType}&page={page}&pageNum={pageNum}'),
/* 获取优惠券中心的优惠券详情 */
getcouponCenterDetail:Vue.resource(API_ROOT + '/coupon/detail/{cplId}'),
/* 获取优惠券适用网点 */
getmatchNetList:Vue.resource(API_ROOT + 'coupon/sites/{cplId}?lon={lon}&lng={lng}'),
/* 获取优惠券中心标题及背景 */
getcouponTab:Vue.resource(API_ROOT + '/coupon'),
/* 优惠券兑换 */
couponExchange:Vue.resource(API_ROOT + '/coupon/exchange'),
/* 确认订单(结算) */
postcheckOrder:Vue.resource(API_ROOT + '/order/checkOrder'),
/* 获取符合需求的优惠券列表 */
postmatchCouponList:Vue.resource(API_ROOT + '/order/coupons'),
/* 确认下单 */
postconfirmOrder:Vue.resource(API_ROOT + '/order/submitOrder'),
/* 支付页面 */
getpushOrder:Vue.resource(API_ROOT + 'pay.qingger.com'),
/* 支付订单 */
postpayOrder:Vue.resource(API_ROOT + '/order/payOrder'),
/* 订单列表 */
getOrderList:Vue.resource(API_ROOT + '/order/list?orderState={orderState}&evaluationState={evaluationState}&page={page}&pageNum={pageNum}'),
};
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h2>Essential Links</h2>
<ul>
<li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
<li><a href="https://gitter.im/vuejs/vue" target="_blank">Gitter Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
<br>
<li><a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a></li>
</ul>
<h2>Ecosystem</h2>
<ul>
<li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li>
<li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li>
<li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li>
</ul>
</div>
</template>
<script>
export default {
name : 'hello',
data () {
return {
msg : 'Welcome to Your Vue.js App'
};
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
<template>
<li class="addressitem-div">
<div class="address-top">
<span class="name">{{item.buyerNickName}}</span>
<span class="phone">{{item.buyerMobile}}</span>
</div>
<div class="address-mid">
<p>{{item.buyerAddress}}</p>
</div>
<div class="address-bottom">
<label class="mint-radiolist-label" @click.self="selectedlabel(index,item.buyerAddressId)"
:class="{'colorpurple':item.isDefault==1}">
<span class="mint-radio">
<input class="mint-radio-input" type="radio" :value="item.buyerAddressId" checked="checked"
v-if="item.isDefault==1">
<input class="mint-radio-input" type="radio" :value="item.buyerAddressId" v-else>
<span class="mint-radio-core"></span>
</span>
<span class="mint-radio-label">默认地址</span>
</label>
<div class="address-btn">
<router-link :to="{name:'addAddress',params: {Id: item.buyerAddressId,teype:'edit' }}" tag="span"><img
src="../../static/images/edit.svg"/></router-link>
<span @click="openConfirm(item.buyerAddressId)" size="large"><img src="../../static/images/delete.svg"/></span>
</div>
</div>
</li>
</template>
<script type="text/ecmascript-6">
import {MessageBox, Toast} from 'mint-ui';
import {setDefaultAddress, ClearAddresslist, getmyAddressList, deleteAddress} from '../../vuex/actions';
export default {
data() {
return {}
},
props: {
index: '',
item: '',
pageNum: ''
},
components: {},
vuex: {
getters: {},
actions: {
setDefaultAddress,
ClearAddresslist,
getmyAddressList,
deleteAddress
}
},
methods: {
selectedlabel(index, id){
$(".mint-radio-input").removeAttr("checked");
$(".mint-radio-label").removeClass("colorpurple");
$(".mint-radio-input").eq(index).attr("checked", "checked");
$(".mint-radio-label").eq(index).addClass("colorpurple");
this.setDefaultAddress(id);
},
openConfirm(id) {
var self = this;
MessageBox.confirm('确定删除该地址?', '提示').then(action => {
self.deleteAddress(id).then(function () {
Toast({
message: '删除成功',
position: 'bottom',
duration: 5000
});
self.ClearAddresslist().then(function () {
self.getmyAddressList(0, self.pageNum);
})
});
});
}
}
}
</script>
<template>
<div class="order-address-item">
<span class="left"><img src="../../static/images/address.svg"/></span>
<span class="mid">
<p class="top">收货人:{{selectAddress.buyerNickName}}<span>{{selectAddress.buyerMobile}}</span></p>
<p class="bot">收货地址:{{selectAddress.provinceName}} {{selectAddress.cityName}} {{selectAddress.areaName}}
{{selectAddress.detailAddress}}</p>
</span>
<slot name="right">
</slot>
</div>
</template>
<script type="text/ecmascript-6">
export default{
data(){
return {
msg: 'hello vue'
}
},
props: {
selectAddress: ''
},
components: {}
}
</script>
<template>
<li class="component-noswipeitem">
<slot></slot>
</li>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
created(){
// $(function(){
// console.log("asdfsadfsafasd")
// var paragraph = document.getElementsByClassName('component-swipe-title')[1];
// $clamp(paragraph, {clamp: 1, useNativeClamp: false});
// })
},
methods: {},
beforeRouteEnter (to, from, next){
next(next(vm => {
}));
},
beforeRouteLeave (to, from, next){
next();
},
}
</script>
<template>
<router-link :to="{ name: 'goodsDetail', params: { productId: 0 }}" tag="li">
<div class="record-item">
<img :src="imgSrc" class="record-img"/>
<div class="record-info">
<p class="record-title">{{item.name}}</p>
<p class="record-coin">联盟币:{{item.price}}</p>
</div>
<div class="record-time">{{item.browserTime}}</div>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
import {formatImg} from '../../utils/commonUtil';
export default {
data() {
return {}
},
props: {
item: {}
},
computed: {
imgSrc(){
return formatImg.formatSRC(this.item.photo, 100, 100);
},
},
}
</script>
<template>
<router-link to="{ name: 'goodsDetail', params: { productId: 0 }}" tag="li">
<div class="record-item">
<img :src="imgSrc" class="record-img"/>
<div class="record-info">
<p class="record-title">{{item.productName}}</p>
<p class="record-coin">联盟币:{{item.productListPrice}}</p>
</div>
<div class="record-time">{{item.favoriateTime}}
<span @click.stop="openConfirm(item.favoriateId,item.type)" class="cancel-collect">取消收藏</span>
</div>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
import {formatImg} from '../../utils/commonUtil';
import {MessageBox, Toast} from 'mint-ui';
import {getmyCollectionList, clearmyCollectionList, addCancelCollection} from '../../vuex/actions';
export default {
data() {
return {}
},
props: {
item: '',
pageNum: ''
},
computed: {
imgSrc(){
return formatImg.formatSRC(this.item.productPhoto, 100, 100);
}
},
methods: {
openConfirm(id, type) {
var self = this;
MessageBox.confirm('确定取消收藏?', '提示').then(action => {
self.addCancelCollection(id, type).then(function () {
Toast({
message: '取消成功',
position: 'bottom',
duration: 5000
});
self.clearmyCollectionList().then(function () {
self.getmyCollectionList(0, self.pageNum);
})
});
});
}
},
vuex: {
getters: {},
actions: {
getmyCollectionList,
clearmyCollectionList,
addCancelCollection
}
}
}
</script>
<template>
<div class="nav-bottom">
<div class="nav-bottom-home">
<img src="../../static/images/home.svg" style="width:0.55rem;margin-top:0.2rem;"/>
</div>
<ul class="nav-bottom-table">
<template v-for="(item, index) in groupNav.navList">
<li v-if="item.subMenu" class="nav-tablecell" @click="showSecond(index,item)">
<div class="nav-first">{{item.name}}</div>
<ul class="nav-second hide" v-if="item.subMenu">
<li class="nav-second-item" v-for="subitem in item.subMenu"
@click="gotopage(subitem.prefix,subitem.url)">{{subitem.name}}
</li>
</ul>
</li>
<router-link :to="item.prefix.url" class="nav-tablecell" @click="gotopage(item.prefix,item.url)" v-else
tag="li">
<div class="nav-first">{{item.name}}</div>
</router-link>
</template>
</ul>
</div>
</template>
<style>
</style>
<script type="text/ecmascript-6">
import {getgroupNav} from '../../vuex/actions';
import {goto} from '../../utils/commonUtil';
export default {
data(){
return {
showlist: false,
linkActiveurl: [],
}
},
mounted(){
this.getgroupNav();
},
methods: {
showSecond(index, item){
if ($(".nav-second").eq(index).hasClass('hide')) {
$(".nav-second").addClass('hide');
$(".nav-second").eq(index).removeClass('hide')
} else {
$(".nav-second").eq(index).addClass('hide')
}
},
gotopage(type, url){
goto.gotopage(this, type, url);
},
},
vuex: {
getters: {
groupNav: ({weiPageData}) => {
return weiPageData.groupNav;
},
},
actions: {
getgroupNav
}
},
}
</script>
<template>
<div class="nodatadiv">
<slot></slot>
</div>
</template>
\ No newline at end of file
<template>
<router-link :to="{ name: 'couponCenterDetail', params: { cplId: item.id }}" tag="div" class="index-coupon-item">
<div class="coupon-left">
<!--优惠券类型-->
<div class="coupon-type">
<div class="coupon-type-left" :style="{'color':item.bgColor}">{{item.useVal}}</div>
<div class="coupon-type-right">
<!--<div class="type-up">{{item.cplTypeName}}</div>-->
<div class="type-down">{{item.cplUnit}}</div>
</div>
</div>
<!--优惠券名称-->
<div class="coupon-name"><span :style="{'color':item.bgColor,'border-color':item.bgColor}" class="typer">{{item.cplTypeName}}</span>{{item.cplName}}
</div>
<!--优惠券有效期--->
<div class="coupon-time">{{StartTime}} 至 {{EndTime}}</div>
</div>
<div class="coupon-right" :style="{'background':item.bgColor}">
<div class="coupon-num">{{item.faceMoney}}</div>
<div class="coupon-jg-type">{{siteUnitName}}</div>
<div class="coupon-btn">立即兑换</div>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
export default {
props: {
item: ''
},
data() {
return {
popupVisible: false
};
},
computed: {
StartTime(){
return this.item.grantStartTime.substring(0, 11);
},
EndTime(){
return this.item.grantEndTime.substring(0, 11);
}
}
};
</script>
<template>
<router-link :to="{ name: 'couponCenterDetail', params: { cplId: item.id }}" tag="div" class="index-coupon-item">
<div class="coupon-left">
<!--优惠券类型-->
<div class="coupon-type">
<div class="coupon-type-left" :style="{'color':item.bgColor}">{{item.useVal}}</div>
<div class="coupon-type-right">
<!--<div class="type-up">{{item.cplTypeName}}</div>-->
<div class="type-down">{{item.cplUnit}}</div>
</div>
</div>
<!--优惠券名称-->
<div class="coupon-name"><span :style="{'color':item.bgColor,'border-color':item.bgColor}" class="typer">{{item.cplTypeName}}</span>{{item.cplName}}
</div>
<!--优惠券有效期--->
<div class="coupon-time">{{StartTime}} 至 {{EndTime}}</div>
</div>
<div class="coupon-right" :style="{'background':item.bgColor}">
<div class="coupon-num">{{item.faceMoney}}</div>
<div class="coupon-jg-type">{{siteUnitName}}</div>
<div class="coupon-btn">立即兑换</div>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
export default {
props: {
item: '',
siteUnitName: ''
},
data() {
return {
popupVisible: false
};
},
computed: {
StartTime(){
return this.item.grantStartTime.substring(0, 11);
},
EndTime(){
return this.item.grantEndTime.substring(0, 11);
}
}
};
</script>
<template>
<router-link :to="{ name: 'myCouponDetail', params: { cplId: item.cplId }}" tag="div" class="index-coupon-item">
<div class="coupon-left">
<!--优惠券类型-->
<div class="coupon-type">
<div class="coupon-type-left" :style="{'color':item.cplBgcolor}">{{item.cplValue}}</div>
<div class="coupon-type-right">
<!--<div class="type-up">{{item.cplUnit}}</div>-->
<div class="type-down">{{item.cplUnit}}</div>
</div>
</div>
<!--优惠券名称-->
<div class="coupon-name"><span :style="{'color':item.cplBgcolor ,'border-color':item.cplBgcolor }"
class="typer">{{item.cplTypeName}}</span>{{item.cplName}}
</div>
<!--优惠券有效期--->
<div class="coupon-time">{{startTime}} 至 {{endTime}}</div>
</div>
<div class="coupon-right" :style="{'background':item.cplBgcolor}">
<div class="use-now">立即使用<span class="mint-cell-allow-right"></span></div>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
props: {
item: {}
},
computed: {
startTime(){
return this.item.cplStartTime.substring(0, 11);
},
endTime(){
return this.item.cplEndTime.substring(0, 11);
}
}
}
</script>
<template>
<router-link :to="{ name: 'goodsDetail', params: { productId: item.id }}" tag="li" class="component-bigpic-li">
<img v-lazy="imgsrc"/>
<!--卡片样式-->
<div class="component-bigpic-txt" v-if="showType!=2">
<p class="goods-name" v-show="showTitle==1">{{item.title}}</p>
<p class="goods-Price" v-show="isShowPrice==1">{{item.price}}{{siteUnitName}}</p>
</div>
<!--极简样式-->
<div class="component-bigpic-Minitxt" v-else>
<p class="goods-name" v-show="showTitle==1">{{item.title}}</p>
<p class="goods-Price" v-show="isShowPrice==1">{{item.price}}{{siteUnitName}}</p>
</div>
</router-link>
</template>
<script>
import {Lazyload} from 'mint-ui'
import {formatImg} from '../../utils/commonUtil';
export default {
props: {
item: '',
showType: '',
showTitle: '',
isShowPrice: '',
siteUnitName: ''
},
data() {
return {};
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.item.image, 400, 400);
},
},
};
</script>
<template>
<router-link :to="{name:'goodsDetail',params: { productId: 123 }}" tag="li" class="car-item">
<div class="left">
<span class="mint-radio">
<input class="mint-radio-input" type="radio">
<span class="mint-radio-core"></span>
</span>
</div>
<div class="middle"><img src="../../static/images/u35.jpg" alt=""/></div>
<div class="right">
<p class="title">星期六2016秋冬新款牛皮尖头系带低跟粗
跟单鞋女鞋新款牛皮尖头系带低跟粗星期六2016秋冬新款牛皮尖头系带低跟粗
跟单鞋女鞋新款牛皮尖头系带低跟粗</p>
<p class="style">规格:黑色 35</p>
<p class="money-num"><span class="money">888联盟币</span><span class="num">x1</span></p>
</div>
</router-link>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
props: {},
components: {},
methods: {},
}
</script>
<template>
<div>
<!--小图-->
<ul class="goods-small-ul">
<router-link to="/" tag="li" class="component-smallpic-li">
<img v-lazy="item"/>
<!--卡片样式-->
<div class="component-smallpic-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Price">499联盟币</p>
</div>
<!--极简样式-->
<!--<div class="component-smallpic-Minitxt">-->
<!--<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>-->
<!--<p class="goods-Price">499联盟币</p>-->
<!--</div>-->
</router-link>
<router-link to="/" tag="li" class="component-smallpic-li">
<img v-lazy="item"/>
<!--卡片样式-->
<div class="component-smallpic-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Price">499联盟币</p>
</div>
<!--极简样式-->
<!--<div class="component-smallpic-Minitxt">-->
<!--<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>-->
<!--<p class="goods-Price">499联盟币</p>-->
<!--</div>-->
</router-link>
<router-link to="/" tag="li" class="component-smallpic-li">
<img v-lazy="item"/>
<!--卡片样式-->
<div class="component-smallpic-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Price">499联盟币</p>
</div>
<!--极简样式-->
<!--<div class="component-smallpic-Minitxt">-->
<!--<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>-->
<!--<p class="goods-Price">499联盟币</p>-->
<!--</div>-->
</router-link>
<router-link to="/" tag="li" class="component-smallpic-li">
<img v-lazy="item"/>
<!--卡片样式-->
<div class="component-smallpic-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Price">499联盟币</p>
</div>
<!--极简样式-->
<!--<div class="component-smallpic-Minitxt">-->
<!--<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>-->
<!--<p class="goods-Price">499联盟币</p>-->
<!--</div>-->
</router-link>
</ul>
</div>
</template>
<style>
image[lazy=loading] {
width: 40px;
height: 300px;
margin: auto;
}
</style>
<script>
import Lazyload from 'mint-ui';
export default {
data() {
return {
item: 'http://fuss10.elemecdn.com/b/18/0678e57cb1b226c04888e7f244c20jpeg.jpeg',
};
},
};
</script>
<template>
<div>
<!--大图-->
<big-pic :item="data[0]" :showType="showType" :showTitle="showTitle" :isShowPrice="isShowPrice"
:siteUnitName="siteUnitName"></big-pic>
<!--小图-->
<ul class="goods-small-ul">
<template v-for="item in smallgoods">
<small-pic :item="item" :showType="showType" :showTitle="showTitle" :isShowPrice="isShowPrice"
:siteUnitName="siteUnitName"></small-pic>
</template>
</ul>
</div>
</template>
<style>
image[lazy=loading] {
width: 40px;
height: 300px;
margin: auto;
}
</style>
<script>
import smallPic from '../goods/smallPic.vue';
import bigPic from '../goods/bigPic.vue';
import Lazyload from 'mint-ui';
import {formatImg} from '../../utils/commonUtil';
export default {
props: {
data: '',
showType: '',
showTitle: '',
isShowPrice: '',
siteUnitName: ''
},
data() {
return {};
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.data[0].image, 400, 400);
},
smallgoods(){
return this.data.slice(1);
},
},
components: {
smallPic,
bigPic
}
};
</script>
<template>
<router-link to="/" tag="li">
<div class="goods-comment">
<div class="item">
<div>
<img src="../../static/images/defaultface.png" alt="" class="face" />
<span class="name-time">
<span class="name">啊啊啊</span>
<span class="time">2016-11-09 13:55</span>
</span>
</div>
<div class="content">
鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真
的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真
的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真
的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真
的很喜欢,下次还会光临。
</div>
</div>
</div>
</router-link>
</template>
<template>
<router-link :to="{ name: 'goodsDetail', params: { productId: item.id }}" tag="li" class="component-smallpic-li">
<img v-lazy="imgsrc"/>
<!--卡片样式-->
<div class="component-smallpic-txt" v-if="showType!=2">
<p class="goods-name" v-show="showTitle==1">{{item.title}}</p>
<p class="goods-Price" v-show="isShowPrice==1">{{item.price}}{{siteUnitName}}</p>
</div>
<!--极简样式-->
<div class="component-smallpic-Minitxt" v-else>
<p class="goods-name" v-show="showTitle==1">{{item.title}}</p>
<p class="goods-Price" v-show="isShowPrice==1">{{item.price}}{{siteUnitName}}</p>
</div>
</router-link>
</template>
<script>
import Lazyload from 'mint-ui';
import {formatImg} from '../../utils/commonUtil';
export default {
props: {
item: '',
showType: '',
showTitle: '',
isShowPrice: '',
siteUnitName: ''
},
data() {
return {};
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.item.image, 200, 200);
},
},
};
</script>
<template>
<router-link :to="{ name: 'goodsDetail', params: { productId: item.id }}" tag="li" class="component-piclist-li">
<img v-lazy="imgsrc"/>
<div class="component-piclist-txt">
<p class="goods-name" v-show="showTitle==1">{{item.title}}</p>
<p class="goods-Price" v-show="isShowPrice==1">{{item.price}}{{siteUnitName}}</p>
</div>
</router-link>
</template>
<style>
image[lazy=loading] {
width: 40px;
height: 300px;
margin: auto;
}
</style>
<script>
import Lazyload from 'mint-ui';
import {formatImg} from '../../utils/commonUtil';
export default {
props: {
item: '',
showType: '',
showTitle: '',
isShowPrice: '',
siteUnitName: ''
},
data() {
return {};
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.item.image, 200, 200);
},
},
};
</script>
<template>
<div class="component-notice-main">
<div class="component-notice" @click="popupVisible = true">
<div class="notice-title">
<img src="../../static/images/laba.svg"/>公告:
</div>
<div class="notice-con" :style="{'-webkit-line-clamp': data.contentNum}">{{data.content}}</div>
</div>
<mt-popup v-model="popupVisible">
<div class="notice-popup-con">
<h1>公告</h1>
{{data.content}}
</div>
<div @click="popupVisible = false" class="notice-popup-btn">
<img src="../../static/images/closed.svg" width="35"/>
</div>
</mt-popup>
</div>
</template>
<script type="text/ecmascript-6">
import {Popup} from 'mint-ui';
export default {
props: {
data: '',
},
data() {
return {
popupVisible: false
};
}
};
</script>
<template>
<div></div>
</template>
\ No newline at end of file
<template>
<div class="component-picNav-tablecell" @click="gotopage(item.prefix,item.url)">
<img :src="imgsrc" width="100%">
<p>{{item.title}}</p>
</div>
</template>
<script type="text/ecmascript-6">
import {formatImg, goto} from '../../utils/commonUtil';
export default {
props: {
item: ''
},
data() {
return {};
},
methods: {
gotopage(type, url){
goto.gotopage(this, type, url);
}
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.item.image, 200, 200);
}
}
};
</script>
<template>
<div class="component-text-nav" @click="gotopage(item.prefix,item.url)">
<span>{{item.title}}</span><img src="../../static/images/arr.svg"/>
</div>
</template>
<script type="text/ecmascript-6">
import {goto} from '../../utils/commonUtil';
export default {
props: {
item: ''
},
data() {
return {};
},
methods: {
gotopage(type, url){
goto.gotopage(this, type, url);
}
}
};
</script>
<template>
<div class="component-title" :style="{'background':data.bgColor,'text-align':showMethod}">
<span class="main-title">{{data.title}}</span>
<span class="second-title" v-if="data.showMethod!=1">| {{data.subTitle}}</span>
<p class="second-title" v-else>{{data.subTitle}}</p>
</div>
</template>
<script type="text/ecmascript-6">
export default {
props: {
data: ''
},
data() {
return {
isbackground: false
};
},
computed: {
showMethod(){
if (this.data.showMethod == 3) {
return 'left';
} else if (this.data.showMethod == 1) {
return 'center';
} else if (this.data.showMethod == 2) {
return 'right';
}
}
}
};
</script>
<template>
<div class="evaluate-item">
<div class="component-piclist-li">
<img src="http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg"
lazy="loaded">
<div class="component-piclist-txt">
<mt-field placeholder="请输入评价内容,最多不超过500字" type="textarea" rows="3" class="evaluate-textarea"></mt-field>
</div>
</div>
</div>
</template>
<script>
export default{
data(){
return {}
},
components: {}
}
</script>
<template>
<div class="component-piclist-li">
<img v-lazy="imgsrc"/>
<div class="component-piclist-txt">
<p class="goods-name">{{item.productName}}</p>
<p class="goods-Specifications">规格:{{item.productAttrValue}}</p>
<p class="goods-Price">{{item.price}}{{unitname}}<span class="goods-num">X{{item.productNum}}</span></p>
</div>
</div>
</template>
<script>
import {formatImg} from '../../utils/commonUtil';
export default{
props: {
item: '',
unitname: ''
},
data(){
return {}
},
computed: {
imgsrc(){
return formatImg.formatSRC(this.item.productPhoto, 200, 200);
}
}
}
</script>
<template>
<li class="order-item-li">
<div class="top">
<span class="left">兑换商城</span>
<span class="right">待付款</span>
</div>
<router-link to="/orderDetail" tag="div" class="mid">
<ul>
<li class="component-piclist-li">
<img v-lazy="item"/>
<div class="component-piclist-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Specifications">规格:黑色 35</p>
<p class="goods-Price">499联盟币<span class="goods-num">X1</span></p>
</div>
<div class="returnGoodsStatus">已退货</div>
</li>
</ul>
<div class="order-count">
<!--<p><span>共1件商品&nbsp;&nbsp; 总计:599联盟币+¥5.00</span></p>-->
<p><span>订单金额:1198联盟币+¥ 1.00</span>&nbsp;&nbsp;<span>退款金额:599联盟币</span></p>
</div>
</router-link>
<div class="bottom">
<mt-button size="small" type="primary" plain @click.native="showMessageBox">取消订单</mt-button>
<mt-button size="small" type="primary">去付款</mt-button>
</div>
</li>
</template>
<script>
import {MessageBox} from 'mint-ui';
export default{
data(){
return {
item: 'http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg'
}
},
components: {},
methods: {
showMessageBox(){
MessageBox({
title: '提示',
message: '确认取消订单?',
showCancelButton: true
});
}
}
}
</script>
<template>
<router-link to="/" tag="li" class="order-item-li">
<div class="top">
<span class="left">兑换商城</span>
<span class="right red">退货中</span>
</div>
<div class="mid">
<ul>
<li class="component-piclist-li">
<img v-lazy="item"/>
<div class="component-piclist-txt">
<p class="goods-name">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋头系带低跟粗跟单鞋女鞋皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="goods-Specifications">规格:黑色 35</p>
<p class="goods-Price">499联盟币<span class="goods-num">X1</span></p>
</div>
</li>
</ul>
<div class="order-count">
<p><span>订单金额:1198联盟币+¥ 1.00</span>&nbsp;&nbsp;<span>退款金额:599联盟币</span></p>
</div>
</div>
</router-link>
</template>
<script>
export default{
data(){
return {
item: 'http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg'
}
},
components: {}
}
</script>
<template>
<div class="zj-main">
<mt-header title="物流跟踪">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="ems-top">
<p class="order-cell-p">
订单编号:2016110718065166
<span class="purple">待发货</span>
</p>
</div>
<div class="ems-mid">
<no-data>
<img src="../../static/images/wl.svg"/>
<p>对不起,暂无物流信息,请耐心等待哟!</p>
</no-data>
<!--<table class="ems-tab">-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--<tr class="ems-tr">-->
<!--<td class="line">-->
<!--<span></span>-->
<!--</td>-->
<!--<td class="con">-->
<!--<p class="con-p">【江苏省常州市新区公司】快件到达常州中转站</p>-->
<!--<p class="con-p">2016-11-10 10:10:46</p>-->
<!--</td>-->
<!--</tr>-->
<!--</table>-->
</div>
</div>
</template>
<script>
import noData from '../common/noData.vue'
import {MessageBox} from 'mint-ui';
export default{
data(){
return {}
},
components: {
noData
},
methods: {
gotoback(){
this.$router.go(-1)
}
}
}
</script>
<template>
<div class="zj-main">
<mt-header :title="headname">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="addAddress-edit-main">
<div class="block">
<mt-field label="收货人" placeholder="请输入收货人" :value="buyerNickName" v-model="buyerNickName"></mt-field>
<mt-field label="联系电话" placeholder="请输入联系电话" :value="buyerMobile" v-model="buyerMobile"></mt-field>
<mt-cell title="所在地区" is-link :value="selectArea" @click.native="popupvisible=true"></mt-cell>
<textarea placeholder="请输入详细地址" class="addAddress-textarea" :value="detailAddress"
v-model="detailAddress"></textarea>
</div>
<div class="block defaultaddAddress">
<mt-cell title="设为默认地址">
<mt-switch v-model="selectswitch"></mt-switch>
</mt-cell>
</div>
<mt-popup v-model="popupvisible" position="bottom" style="width:100%;display:none">
<mt-picker :slots="addressSlots" @change="onAddressChange" :visible-item-count="5" :showToolbar="true">
<span @click="popupvisible=!popupvisible">取消</span><span @click="Determine">确定</span>
</mt-picker>
</mt-popup>
</div>
<div class="addAddress-edit-bottom">
<!--删除按钮在编辑地址页面显示-->
<button class="zj-bottom-btn addAddress-edit-btn del" @click="delmessage">删除</button>
<button class="zj-bottom-btn addAddress-edit-btn" @click="editAddress">保存</button>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import addressItem from '../address/addressItem.vue'
import {Popup, MessageBox, Toast} from 'mint-ui';
import {address} from '../../utils/commonUtil';
import {getselectAddress, posteditAddress, deleteAddress, postaddAddress} from '../../vuex/actions'
export default {
methods: {
gotoback(){
this.$router.go(-1)
},
onAddressChange(picker, values) {
picker.setSlotValues(1, Object.keys(address[values[0]][0]));
picker.setSlotValues(2, address[values[0]][0][values[1]]);
this.addressProvince = values[0];
this.addressCity = values[1];
this.addressRegion = values[2];
},
/* 切换省市区 */
Determine(){
this.popupvisible = false;
this.selectArea = this.addressProvince + ' ' + this.addressCity + ' ' + this.addressRegion;
},
/*删除地址*/
delmessage(){
var self = this;
MessageBox.confirm('确定删除该地址?', '提示').then(action => {
self.deleteAddress(self.$route.params.Id).then(function () {
Toast({
message: '删除成功',
position: 'bottom',
duration: 5000
});
self.$router.go(-1)
});
});
},
/*保存地址*/
editAddress(){
console.log(this.detailAddress);
var data = {
// buyerAddressId : this.$route.params.Id, // 地址id
buyerNickName: this.buyerNickName,
buyerMobile: this.buyerMobile, // 买家电话
city: this.addressCity, // 城市Id
province: this.addressProvince, // 省份ID
area: this.addressRegion, // 区县ID
detailAddress: this.detailAddress, // 详细地址
isDefault: this.selectswitch ? 1 : 0, // 是否设为默认
};
if (this.$route.params.teype == 'edit') {
data.buyerAddressId = this.$route.params.Id;
this.posteditAddress(data).then(function () {
Toast({
message: '修改地址成功',
position: 'bottom',
duration: 5000
});
self.$router.go(-1)
});
} else {
this.postaddAddress(data).then(function () {
Toast({
message: '新增地址成功',
position: 'bottom',
duration: 5000
});
self.$router.go(-1)
});
}
},
selectArea(){
if (this.$route.params.teype == 'edit') {
this.selectArea = this.selectAddress.provinceName + ' ' + this.selectAddress.cityName + ' ' + this.selectAddress.areaName
} else {
this.selectArea = '请选择'
}
},
buyerNickName(){
if (this.$route.params.teype == 'edit') {
this.buyerNickName = this.selectAddress.buyerNickName
} else {
this.buyerNickName = ''
}
},
buyerMobile(){
if (this.$route.params.teype == 'edit') {
this.buyerMobile = this.selectAddress.buyerMobile
} else {
this.buyerMobile = ''
}
},
detailAddress(){
if (this.$route.params.teype == 'edit') {
this.detailAddress = this.selectAddress.detailAddress
} else {
this.detailAddress = ''
}
},
addressProvince(){
if (this.$route.params.teype == 'edit') {
this.addressProvince = this.selectAddress.provinceName
} else {
this.addressProvince = '北京'
}
},
addressCity(){
if (this.$route.params.teype == 'edit') {
this.addressCity = this.selectAddress.cityName
} else {
this.addressCity = '北京'
}
},
addressRegion(){
if (this.$route.params.teype == 'edit') {
this.addressRegion = this.selectAddress.areaName
} else {
this.addressRegion = '海淀'
}
}
},
data() {
return {
buyerNickName: '',
buyerMobile: '',
detailAddress: '',
selectArea: '',
popupvisible: false,
selectswitch: false,
addressSlots: [
{
flex: 1,
values: Object.keys(address),
className: 'slot1',
textAlign: 'center'
}, {
divider: true,
content: '-',
className: 'slot2'
}, {
flex: 1,
values: Object.keys(address['北京'][0]),
className: 'slot3',
textAlign: 'center'
}, {
divider: true,
content: '-',
className: 'slot4'
}, {
flex: 1,
values: ['海淀', '东城'],
className: 'slot5',
textAlign: 'center'
}
],
addressProvince: '',
addressCity: '',
addressRegion: '',
}
},
components: {
addressItem
},
vuex: {
getters: {
selectAddress: ({addressData}) => {
return addressData.selectAddress;
},
},
actions: {
getselectAddress,
posteditAddress,
deleteAddress,
postaddAddress,
}
},
computed: {
headname(){
if (this.$route.params.teype == 'edit') {
return '编辑地址'
} else {
return '新增地址'
}
}
},
beforeRouteEnter (to, from, next){
next(vm => {
if (vm.$route.params.teype == 'edit') {
vm.getselectAddress().then(function () {
vm.buyerNickName();
vm.selectArea();
vm.buyerMobile();
vm.detailAddress();
vm.addressProvince();
vm.addressCity();
vm.addressRegion();
});
} else {
vm.buyerNickName();
vm.selectArea();
vm.buyerMobile();
vm.detailAddress();
vm.addressProvince();
vm.addressCity();
vm.addressRegion();
}
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="全部订单">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<ul class="common-tab">
<li class="selected"><span>全部</span></li>
<li>待付款</li>
<li>待发货</li>
<li>待收货</li>
<li>待评价</li>
<li>退货</li>
</ul>
<div class="page-loadmore-wrapper" ref="wrapper" :style="{ height: wrapperHeight + 'px' }">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="page-loadmore-list">
<order-item v-for="item in orderList"></order-item>
<li class="loadmore-end" v-show="allLoaded">--end--</li>
</ul>
<!--<ul class="page-loadmore-list">-->
<!--<return-goods-item v-for="item in list"></return-goods-item>-->
<!--<li class="loadmore-end" v-show="allLoaded">--end--</li>-->
<!--<li class="loadmore-end" v-if="browsertyper=='pc'"><mt-button size="small" type="primary" plain >点击加载更多</mt-button></li>-->
<!--</ul>-->
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<!--<no-data>-->
<!--<img src="../../static/images/order2.svg"/>-->
<!--<p>您还没有订单记录</p>-->
<!--</no-data>-->
</div>
</div>
</template>
<style>
.page-loadmore-wrapper {
overflow: scroll;
}
.mint-loadmore-bottom span {
display: inline-block;
transition: .2s linear;
vertical-align: middle;
}
.is-rotate {
transform: rotate(180deg);
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
}
</style>
<script type="text/ecmascript-6">
import noData from '../common/noData.vue';
import returnGoodsItem from '../order/returnGoodsItem.vue';
import orderItem from '../order/orderItem.vue';
import {getOrderList, ClearOrderList, getOrderCount} from '../../vuex/actions';
export default {
mounted() {
this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;
},
create(){
console.log("12345");
},
data() {
return {
allLoaded: false,
browsertyper: '',
bottomStatus: '',
wrapperHeight: 0,
page: 0,
pageNum: 10,
orderState: 99,//订单状态,99为全部订单
evaluationState: false,//订单评论状态,初始状态为false
}
},
components: {
orderItem,
returnGoodsItem,
noData
},
vuex: {
getters: {
orderList: ({orderData}) => {
return orderData.orderList;
},
orderCount: ({orderData}) => {
return orderData.orderCount;
},
},
actions: {
getOrderList,
getOrderCount,
ClearOrderList
}
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
console.log(status);
this.bottomStatus = status;
},
loadBottom(id) {
var self = this;
self.allLoaded = true;
setTimeout(function () {
if (self.orderList.length < self.orderCount) {
self.allLoaded = false;
console.log("滚动到底allLoaded:" + self.allLoaded);
} else {
self.allLoaded = true;
}
}, 0);
if (self.orderList.length > 0 && !self.allLoaded) {
self.page++;
console.log("滚动到底page:" + self.page);
self.getOrderList(self.orderState, self.evaluationState, self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.browsertyper = window.BROWSERTYPER;
vm.ClearOrderList().then(function () {
console.log("进入页面allLoaded:" + vm.allLoaded)
console.log("进入页面page:" + vm.page)
vm.getOrderList(vm.orderState, vm.evaluationState, vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="浏览记录">
<router-link to="/personCenter" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<!--<div class="page-loadmore-wrapper" ref="wrapper" :style="{ height: wrapperHeight + 'px' }">-->
<div class="cyc-scroll1">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="record-list">
<browse-record-item v-for="item in browseRecordList" :item="item"></browse-record-item>
</ul>
<div class="loadmore-end" v-show="allLoaded && browseRecordList.length>0">--end--</div>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="browseRecordList.length==0">
<img src="../../static/images/nobrowser.svg"/>
<p>您还没有浏览记录哦~</p>
</no-data>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import browseRecordItem from "../browse/browseRecordItem.vue";
import noData from '../common/noData.vue';
import {getbrowseRecordList, clearbrowseRecordList} from '../../vuex/actions';
export default {
data() {
return {
page: 0,
pageNum: 10,
allLoaded: false,
bottomStatus: '',
wrapperHeight: 0
}
},
mounted() {
// $(".page-loadmore-wrapper").scrollTop(0);
// this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;
},
components: {
browseRecordItem,
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
// if(this.browseRecordList.length>=this.browseRecordList.count){
// this.allLoaded=true;
// }
var self = this;
setTimeout(function () {
if (self.browseRecordList.length >= self.myBrowseCount) {
self.allLoaded = true;
}
}, 0);
if (self.browseRecordList.length > 0 && !this.allLoaded) {
self.page++;
self.getbrowseRecordList(self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
vuex: {
getters: {
browseRecordList: ({personCenterData}) => {
return personCenterData.browseRecordList;
}
},
actions: {
getbrowseRecordList,
clearbrowseRecordList
},
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.clearbrowseRecordList().then(function () {
vm.getbrowseRecordList(vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
setTimeout(function () {
$(".cyc-scroll1").scrollTop(0);
}, 0)
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="购物车">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="car-box">
<div class="car-top"><span>兑换商城</span><span>编辑</span></div>
<div class="cyc-scroll4">
<ul class="car-list">
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
<car-item></car-item>
</ul>
</div>
</div>
<div class="car-bottom">
<span class="mint-radio">
<input class="mint-radio-input" type="radio">
<span class="mint-radio-core"></span>
</span>
<span class="sum">合计:599联盟币</span>
<span class="count-btn">结算</span>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import carItem from "../goods/carItem.vue";
export default {
data() {
return {}
},
components: {
carItem,
},
methods: {},
beforeRouteEnter(to, from, next) {
next();
},
beforeRouteLeave(to, from, next) {
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="收藏记录">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<!--<div class="page-loadmore-wrapper" ref="wrapper" :style="{ height: wrapperHeight + 'px' }">-->
<div class="cyc-scroll1">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange" :bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="record-list">
<collection-item v-for="item in myCollectionList" :item="item"></collection-item>
</ul>
<div class="loadmore-end" v-show="allLoaded && myCollectionList.length>0">--end--</div>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="myCollectionList.length==0">
<img src="../../static/images/nocollection.svg"/>
<p>您还没有收藏记录哦~</p>
</no-data>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import collectionItem from "../collection/collectionItem.vue"
import noData from '../common/noData.vue'
import {getmyCollectionList,clearmyCollectionList} from '../../vuex/actions'
export default {
data() {
return {
page: 0,
pageNum:10,
allLoaded: false,
bottomStatus: '',
wrapperHeight:0,
}
},
// mounted() {
// $(".page-loadmore-wrapper").scrollTop(0);
//
// this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;
// },
components: {
collectionItem,
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
var self=this;
setTimeout(function(){
if(self.myCollectionList.length>=self.myCollectionCount){
self.allLoaded=true;
}
},0);
if(self.myCollectionList.length>0 && !this.allLoaded){
self.page++;
self.getmyCollectionList(self.page,self.pageNum).then(function (result) {
if(result=="stop"){
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
vuex: {
getters: {
myCollectionList: ({personCenterData}) => {
return personCenterData.myCollectionList;
}
},
actions: {
getmyCollectionList,
clearmyCollectionList
},
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.clearmyCollectionList().then(function(){
vm.getmyCollectionList(vm.page,vm.pageNum).then(function(result){
if(result=="stop"){
vm.allLoaded=true;
}
});
});
setTimeout(function () {
$(".cyc-scroll1").scrollTop(0);
},0)
});
},
beforeRouteLeave (to, from, next){
next();
},
}
</script>
\ No newline at end of file
<template>
<div class="zj-main">
<mt-header title="确认订单">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-count-mid">
<router-link :to="{name:'selectAddress',params: { id: $route.params.addressId}}" tag="div"
class="order-address" style="margin-top:0px">
<order-address-item :select-address="selectAddress">
<span slot="right" class="right"><i class="mint-cell-allow-right"></i></span>
</order-address-item>
</router-link>
<!--订单商品-->
<div class="order-Goods">
<div class="top">{{checkOrder.siteName}}</div>
<ul class="mid">
<li class="order-goods-li unactive-goods-li" v-for="item in checkOrder.products">
<order-goods-item :item="item" :unitname="checkOrder.siteUnitName"></order-goods-item>
</li>
</ul>
</div>
<!--订单价格-->
<div class="order-money">
<div class="typer">
<p class="order-cell-p" v-if="checkOrder.shippingFee>0">运费:<span class="purple">+¥{{checkOrder.shippingFee}}</span>
</p>
<p class="order-cell-p" v-else>运费:<span class="purple">免运费</span></p>
</div>
<div class="typer" @click="popupVisible = true">
<p class="order-cell-p" v-if="typeof checkOrder.coupon=='object'">优惠券:<span class="right">-¥{{checkOrder.coupon.money}}:{{checkOrder.coupon['cplName']}}<i
class="mint-cell-allow-right"></i></span></p>
<p class="order-cell-p" v-else>优惠券:<span class="right">请选择<i
class="mint-cell-allow-right"></i></span></p>
</div>
<div class="typer" v-if="typeof checkOrder.activity=='object'">
<p class="order-cell-p">
活动:<span>-¥{{checkOrder.activity.money}}:{{checkOrder.activity.actName}}</span></p>
</div>
</div>
<mt-popup v-model="popupVisible" position="bottom" style="width:100%;display:none">
<div style="max-height:60vh;overflow: auto">
<mt-cell :title="'-¥'+item.money+':'+item.cplName" v-for="item in matchCouponList"
@click.native="selectCoupon(item.cplId)"></mt-cell>
</div>
</mt-popup>
</div>
<div class="count-bottom">
<div class="right" style="margin-left:10px" @click="countpay">
<button>确认下单</button>
</div>
<div class="right">
<p class="bigfont">实付款:{{checkOrder.orderPoint
}}{{checkOrder.siteUnitName}}+¥{{checkOrder.orderMoney}}</p>
<p v-if="checkOrder.shippingFee>0">(含¥{{checkOrder.shippingFee}}运费)</p>
<p v-else>免运费</p>
</div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import orderAddressItem from '../address/orderAddressItem.vue';
import orderGoodsItem from '../order/orderGoodsItem.vue';
import {MessageBox, Popup} from 'mint-ui';
import {
getmyAddressList,
getselectAddress,
postcheckOrder,
postconfirmOrder,
postmatchCouponList
} from '../../vuex/actions';
export default{
data(){
return {
item: 'http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg',
popupVisible: false,
actions: [],
addRessId: '', //收货地址id
cplID: '', //选中的优惠券id
products: [] //从url上获取的需要结算的商品
}
},
components: {
orderAddressItem,
orderGoodsItem
},
vuex: {
getters: {
myAddressCount: ({addressData}) => {
return addressData.myAddressCount;
},
selectAddress: ({addressData}) => {
return addressData.selectAddress;
},
checkOrder: ({orderData}) => {
return orderData.checkOrder;
},
confirmOrder: ({orderData}) => {
return orderData.confirmOrder;
},
matchCouponList: ({orderData}) => {
return orderData.matchCouponList;
},
},
actions: {
getmyAddressList,
getselectAddress,
postcheckOrder,
postconfirmOrder,
postmatchCouponList
}
},
methods: {
gotoback(){
this.$router.go(-1)
},
selectCoupon(id){
console.log(id);
this.popupVisible = false;
this.cplID = id;
let data = {
products: this.products,
cplID: this.cplID, // 优惠券id 结算时进入传0
from: this.$route.params.from, // 商品来源
addRessId: this.addRessId //收货地址ID ,结算时进入传0
};
this.postcheckOrder(data);
},
countpay(){
var self = this;
let data = {
products: this.products,
cplID: this.cplID, // 优惠券id 结算时进入传0
from: this.$route.params.from, // 商品来源
addRessId: this.addRessId //收货地址ID ,结算时进入传0
};
this.postconfirmOrder(data).then(function () {
self.$router.push({
name: 'pay',
params: {
orderId: self.confirmOrder.orderId,
}
})
});
}
},
beforeRouteEnter (to, from, next){
console.log("进入结算页了");
console.log(from);
next(vm => {
if (from.path.indexOf('pay') != -1) {
vm.$router.replace({
name: 'allOrderList'
});
}
vm.popupVisible = false;
vm.cplID = vm.$route.params.cplID;
vm.getmyAddressList(0, 10).then(function () {
if (vm.myAddressCount <= 0) {
vm.$router.push({name: 'addAddress', params: {Id: false, teype: 'add'}});
} else {
if (from.path.indexOf('selectAddress') != -1 && (from.params.id != vm.$route.params.addressId)) {//判断是否由选择地址页回退并且已改变地址
vm.addRessId = from.params.id
} else {
vm.addRessId = vm.$route.params.addressId
}
vm.getselectAddress(vm.addRessId);//获取指定收货地址
var goods = vm.$route.params.Goods;
var goodsArry = [];
goodsArry = goods.split(",");
goodsArry.forEach(function (el) {
var elArry = [];
elArry = el.split("-");
vm.products.push({spdId: elArry[0], productNum: elArry[1]});
});
var data = {
products: vm.products,
cplID: vm.cplID, // 优惠券id 结算时进入传0
from: vm.$route.params.from, // 商品来源
addRessId: vm.addRessId //收货地址ID ,结算时进入传0
}
vm.getselectAddress(vm.$route.params.addressId);
vm.postcheckOrder(data);
vm.postmatchCouponList(vm.products);
}
})
});
},
beforeRouteLeave (to, from, next){
next()
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="优惠券中心">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="coupon-banner">
<img src="../../static/images/ccbanner.png" class="ccbanner-img"/>
</div>
<ul class="common-tab">
<li class="selected">全部</li>
<li>折扣券</li>
<li>金额券</li>
<li>礼品券</li>
<li>定价券</li>
<li>包邮</li>
<li>礼品券</li>
<li>定价券</li>
<li>包邮</li>
</ul>
<div class="cyc-scroll3">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul>
<center-coupon-item v-for="item in couponCenterList" :item="item"></center-coupon-item>
</ul>
<div class="loadmore-end" v-show="allLoaded && couponCenterList.length>0">--end--</div>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="couponCenterList.length==0">
<img src="../../static/images/nocoupon.svg"/>
<p>您还没有该类优惠券,尽请期待吧~</p>
</no-data>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import centerCouponItem from "../coupon/centerCouponItem.vue"
import noData from '../common/noData.vue'
import {getcouponCenterList, getcouponTab, clearcouponCenterList} from '../../vuex/actions'
export default {
data() {
return {
page: 0,
pageNum: 10,
allLoaded: false,
bottomStatus: '',
wrapperHeight: 0
}
},
components: {
centerCouponItem,
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
var self = this;
setTimeout(function () {
if (self.couponCenterList.length >= self.couponCenterCount) {
self.allLoaded = true;
}
}, 0);
if (self.couponCenterList.length > 0 && !this.allLoaded) {
self.page++;
self.getcouponCenterList(self.cplType, self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
vuex: {
getters: {
couponCenterList: ({couponCenterData}) => {
return couponCenterData.couponCenterList;
}
},
actions: {
getcouponCenterList,
clearcouponCenterList
}
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.clearcouponCenterList().then(function () {
vm.getcouponCenterList(vm.cplType, vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
setTimeout(function () {
$(".cyc-scroll3").scrollTop(0);
}, 0)
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="优惠券详情">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="coupon-center-detail">
<div class="top">
<div class="title">折扣券</div>
<div class="num"><span class="big-num">9</span>折</div>
<span class="double-line-left"></span><span class="double-line-right"></span>
</div>
<div class="middle">
<div class="time">领用期限:2016-10-28 至 2016-11-28</div>
<div class="use-if">
<span class="left">使用条件:</span>
<div class="right">
<p>&nbsp;1、只能在使用网店使用;</p>
<p>&nbsp;2、优惠券在使用期限内使用;</p>
<p>&nbsp;3、线上线下都可使用。</p>
</div>
</div>
<div class="use-if">
<span class="left">使用备注:</span>
<div class="right">
<p>&nbsp;1、只能在使用网店使用;</p>
<p>&nbsp;2、优惠券在使用期限内使用;</p>
<p>&nbsp;3、线上线下都可使用。</p>
</div>
</div>
<mt-cell title="适用网点" to="//github.com" is-link></mt-cell>
</div>
</div>
<div class="coupon-center-detail-bottom">
<div class="coupon-name-price">
<div class="coupon-name">女鞋专用折扣券</div>
<div class="coupon-price">599联盟币</div>
</div>
<div class="coupon-num-sale"><span class="num">库存:889个</span><span class="sale">销量:89</span></div>
<div class="buy-number"><span>购买数量</span>
<div class="mui-numbox">
<button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
<input class="mui-input-numbox" type="number" value="1" min="1" max="10">
<button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
</div>
</div>
</div>
<div class="exchange-button">立即兑换</div>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
components: {},
methods: {},
beforeRouteEnter(to, from, next) {
next();
},
beforeRouteLeave(to, from, next) {
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="优惠券详情">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="my-coupon-content">
<div class="top">
<div class="title">折扣券</div>
<div class="time">使用期限:2016-10-28 至 2016-11-28</div>
<div class="num-tel"><span class="num"><span class="big-num">9</span>折</span><span class="tel">券号:20160912N11024MAO</span>
</div>
<span class="double-line-left"></span><span class="double-line-right"></span>
</div>
<div class="middle">
<img src="../../static/images/two.png" alt="" class="two-code"/>
<img src="../../static/images/bar.png" alt="" class="bar-code"/>
<div class="use-if">
<span class="left">使用条件:</span>
<div class="right">
<p>&nbsp;1、只能在使用网店使用;</p>
<p>&nbsp;2、优惠券在使用期限内使用;</p>
<p>&nbsp;3、线上线下都可使用。</p>
</div>
</div>
<div class="bottom">
<mt-cell title="适用网点" to="//github.com" is-link></mt-cell>
</div>
</div>
<div class="bottom-bg"></div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
components: {},
methods: {},
beforeRouteEnter(to, from, next) {
next();
},
beforeRouteLeave(to, from, next) {
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="发表评价">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
<mt-button slot="right" style="font-size:0.26rem" @click.native="postcon">发送</mt-button>
</mt-header>
<div class="evaluate-mid">
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
<order-comment-item></order-comment-item>
</div>
</div>
</template>
<script>
import orderCommentItem from '../order/orderCommentItem.vue';
import {Toast} from 'mint-ui';
export default{
data(){
return {}
},
components: {
orderCommentItem
},
methods: {
postcon(){
Toast({
message: '提示',
position: 'bottom',
duration: 5000
});
},
gotoback(){
this.$router.go(-1)
}
}
}
</script>
<template>
<div class="zj-main">
<div class="fail-main">
<div class="fail-typer" :class="{'cg':$route.params.status==1}">
<img src="../../static/images/diu.svg" style="width: 60%;vertical-align: middle;"
v-if="$route.params.status==1"/>
<img src="../../static/images/cha.svg" style="width: 60%;vertical-align: middle;" v-else/>
</div>
<div class="fail-text">{{$route.params.con}}</div>
<div class="fail-btn">
<mt-button plain size="small" style="width:2rem" @click.native="gotohome">返回首页</mt-button>
<span style="display:inline-block;width:10px;"></span>
<mt-button plain size="small" style="width:2rem" @click.native="gotoorder"
v-if="$route.params.status==1">查看订单
</mt-button>
<mt-button plain size="small" style="width:2rem" @click.native="gotoorder" v-else>重新支付</mt-button>
</div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import {MessageBox, Actionsheet} from 'mint-ui';
export default{
data(){
return {
item: 'http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg',
}
},
components: {},
methods: {
gotohome(){
this.$router.push('/pageId/0');
},
gotoorder(){
this.$router.push({
name: 'orderDetail',
params: {
orderId: this.$route.params.orderId,
}
});
}
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="商品详情页">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="cyc-scroll1">
<!--轮播广告-->
<mt-swipe :auto="4000" style="height:7.5rem">
<mt-swipe-item style="background:lightskyblue">
</mt-swipe-item>
<mt-swipe-item style="background:yellow">
</mt-swipe-item>
<mt-swipe-item style="background:green">
</mt-swipe-item>
</mt-swipe>
<div class="swipe-info">
<p class="title">星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋星期六2016秋冬新款牛皮尖头系带低跟粗跟单鞋女鞋</p>
<p class="coin">99联盟币</p>
<p class="refer-money">市场参考价:¥ 1459.00</p>
<p class="freight-sale"><span class="freight">运费:¥ 1.00</span><span class="sale">销量:89</span></p>
</div>
<div class="goods-comment">
<div class="comment-num">商品评价(89)</div>
<div class="item">
<div>
<img src="../../static/images/defaultface.png" alt="" class="face"/>
<span class="name-time">
<span class="name">啊啊啊</span>
<span class="time">2016-11-09 13:55</span>
</span>
</div>
<div class="content">
鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真 的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真
的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真 的很喜欢,下次还会光临。鞋子收到了,真的很喜欢,下次还会光临,鞋子收到了,真 的很喜欢,下次还会光临。
</div>
<div class="link-all">查看全部评价</div>
</div>
</div>
<ul class="common-tab">
<li class="selected">商品详情</li>
<li>商品规格</li>
<li>商品推荐</li>
</ul>
<mt-popup v-model="popupVisible" position="bottom">
</mt-popup>
<div class="goodsPopup">
<div class="box">
<div class="simple-info">
<img src="../../static/images/u35.jpg"/>
<div class="font">
<p class="coin">599联盟币</p>
<p class="store">库存:8889件</p>
</div>
</div>
<div class="select">
<p class="s-color">请选择颜色</p>
<ul class="color-list">
<li class="selected">黑色</li>
<li>黑色</li>
<li>黑色</li>
</ul>
</div>
<div class="select">
<p class="s-color">请选择尺码</p>
<ul class="color-list">
<li class="selected">36</li>
<li>37</li>
<li>38</li>
</ul>
</div>
<div class="buy-number"><span>购买数量</span>
<div class="mui-numbox">
<button type="button" class="mui-btn mui-btn-numbox-minus">-</button>
<input type="number" value="1" min="1" max="10" class="mui-input-numbox">
<button type="button" class="mui-btn mui-btn-numbox-plus">+</button>
</div>
</div>
</div>
<div class="confirm">确定</div>
</div>
<div class="goods-detail-bottom">
<div class="nav">
<div class="nav-item">
<img src="../../static/images/home.svg"/>
<p>主页</p>
</div>
<div class="nav-item">
<img src="../../static/images/colbefore.svg"/>
<p>收藏</p>
</div>
<div class="nav-item">
<img src="../../static/images/car.svg"/>
<p>购物车</p>
<span class="num">22</span>
</div>
</div>
<div class="right"><span class="to-carlist">加入购物车</span><span class="buy-now">立即购买</span></div>
</div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
components: {},
methods: {},
beforeRouteEnter(to, from, next) {
next();
},
beforeRouteLeave(to, from, next) {
next();
},
}
</script>
<template>
<div class="zj-main">
<mt-header title="女鞋专区">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="cyc-scroll1">
<goods-group-item></goods-group-item>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import goodsGroupItem from "../goods/goodsGroupItem.vue"
export default {
data() {
return {}
},
components: {
goodsGroupItem,
},
methods: {},
beforeRouteEnter (to, from, next){
next();
},
beforeRouteLeave (to, from, next){
next();
},
}
</script>
<template>
<div class="main">
<!--轮播广告-->
<template v-for="vm in weiIndex.fields">
<template v-if="vm.fieldType=='imageAdv'">
<mt-swipe :auto="4000" style="height:4.2rem" v-if="vm.content.imageType==2">
<mt-swipe-item :style="{'background-image':'url('+item.image+')'}"
v-for="item in vm.content.navList" @click.native="gotopage(item.prefix,item.url)">
<div class="component-swipe-title" v-if="item.title!=''">{{item.title}}</div>
</mt-swipe-item>
</mt-swipe>
<!--轮播广告分开显示-->
<ul v-else>
<no-swpie-adv :style="{'background-image':'url('+item.image+')'}" v-for="item in vm.content.navList"
@click.native="gotopage(item.prefix,item.url)">
<div class="component-swipe-title" ref="title" v-if="item.title!=''">
斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达斯柯达
</div>
</no-swpie-adv>
</ul>
</template>
<!--商品-->
<template v-if="vm.fieldType=='product'">
<!--商品大图-->
<ul v-if="vm.content.listType==4">
<big-pic v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></big-pic>
</ul>
<!--商品小图-->
<ul class="goods-small-ul" v-if="vm.content.listType==1">
<small-pic v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></small-pic>
</ul>
<!--商品详细列表-->
<ul class="goods-piclist-ul" v-if="vm.content.listType==3">
<small-pic-list v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></small-pic-list>
</ul>
<!--商品一大两小-->
<div v-if="vm.content.listType==2">
<mix-pic :data="vm.content.goods" :showType="vm.content.showType" :showTitle="vm.content.showTitle"
:isShowPrice="vm.content.isShowPrice" :siteUnitName="weiIndex.siteUnitName"></mix-pic>
</div>
</template>
<!--商品组-->
<template v-if="vm.fieldType=='productList'">
<router-link
:to="{ name: 'goodsGroup',params: {typer:'productGroup',productListId: vm.content.groupId}}"
tag="div" class="component-text-nav">
<span>{{vm.content.groupTitle}}</span><img src="../../static/images/arr.svg"/>
</router-link>
<!--商品大图-->
<ul v-if="vm.content.listType==4">
<big-pic v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></big-pic>
</ul>
<!--商品小图-->
<ul class="goods-small-ul" v-if="vm.content.listType==1">
<small-pic v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></small-pic>
</ul>
<!--商品详细列表-->
<ul class="goods-piclist-ul" v-if="vm.content.listType==3">
<small-pic-list v-for="item in vm.content.goods" :item="item" :showType="vm.content.showType"
:showTitle="vm.content.showTitle" :isShowPrice="vm.content.isShowPrice"
:siteUnitName="weiIndex.siteUnitName"></small-pic-list>
</ul>
<!--商品一大两小-->
<div v-if="vm.content.listType==2">
<mix-pic :data="vm.content.goods" :showType="vm.content.showType" :showTitle="vm.content.showTitle"
:isShowPrice="vm.content.isShowPrice" :siteUnitName="weiIndex.siteUnitName"></mix-pic>
</div>
</template>
<!--标题-->
<titler v-if="vm.fieldType=='title'" :data="vm.content"></titler>
<!--文本导航-->
<template v-if="vm.fieldType=='textNav'">
<text-nav v-for="item in vm.content" :item="item"></text-nav>
</template>
<!--辅助线-->
<div class="component-Guide" v-if="vm.fieldType=='line'"></div>
<!--辅助空白-->
<div class="component-blank" v-if="vm.fieldType=='white'" :style="{'height':vm.content.height+'px'}"></div>
<!--富文本-->
<div class="component-Rich-text" v-if="vm.fieldType=='richText'" :style="{'background':vm.content.bgColor}"
v-html="vm.content.textContent"></div>
<!--图片导航-->
<div class="component-picNav-table" v-if="vm.fieldType=='imageNav'">
<pic-nav v-for="item in vm.content" :item="item"></pic-nav>
</div>
<!--商品搜索-->
<router-link to="/search" tag="div" class="component-search" v-if="vm.fieldType=='search'">
<button>请输入商品名称或分类</button>
</router-link>
<!--公告组件-->
<notice v-if="vm.fieldType=='notice'" :data="vm.content"></notice>
<!--优惠券组件-->
<template v-if="vm.fieldType=='coupons'">
<index-coupon-item v-for="item in vm.content.couponArr" :item="item"
:siteUnitName="weiIndex.siteUnitName"></index-coupon-item>
</template>
<!--优惠券中心-->
<router-link to="/couponCenter" tag="div" class="coupon-center"
v-if="vm.fieldType=='couponCenter'"></router-link>
</template>
<!--底部导航-->
<bottom-nav></bottom-nav>
</div>
</template>
<style>
.main .mint-swipe-indicators {
left: auto !important;
bottom: 5px !important;
right: -16px;
}
image[lazy=loading] {
width: 40px !important;
height: 50vw;
margin: auto;
}
</style>
<script type="text/ecmascript-6">
import noSwpieAdv from '../adv/noSwpieAdv.vue';
import bigPic from '../goods/bigPic.vue';
import smallPic from '../goods/smallPic.vue';
import smallPicList from '../goods/smallPicList.vue';
import mixPic from '../goods/mixPic.vue';
import titler from '../index/title.vue';
import textNav from '../index/textNav.vue';
import picNav from '../index/picNav.vue';
import notice from '../index/notice.vue';
import indexCouponItem from '../coupon/indexCouponItem.vue';
import bottomNav from '../common/bottomNav.vue';
import {getweiIndext} from '../../vuex/actions';
import {goto} from '../../utils/commonUtil';
export default {
data() {
return {}
},
components: {
noSwpieAdv,
bigPic,
smallPic,
smallPicList,
mixPic,
titler,
textNav,
picNav,
notice,
indexCouponItem,
bottomNav
},
methods: {
gotopage(type, url){
goto.gotopage(this, type, url);
}
},
vuex: {
getters: {
weiIndex: ({weiPageData}) => {
return weiPageData.weiIndex;
}
},
actions: {
getweiIndext,
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.getweiIndext(0);
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="适用网点">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="your-location">您所在的地区:常州</div>
<ul class="net-list">
<li class="net-item">
<div class="left">
<div class="shop-name">星期六门店1(万达广场店)</div>
<div class="shop-address">江苏省常州市新北区通江路88号万达广场1楼大厅坐台江苏省常州市新北区通江路88号万达广场1楼大厅坐台</div>
<div class="shop-tel">0519-83653221 营业时间:8:00-17:00</div>
</div>
<div class="right">188km</div>
</li>
<li class="net-item">
<div class="left">
<div class="shop-name">星期六门店1(万达广场店)</div>
<div class="shop-address">江苏省常州市新北区通江路88号万达广场1楼大厅坐台江苏省常州市新北区通江路88号万达广场1楼大厅坐台</div>
<div class="shop-tel">0519-83653221 营业时间:8:00-17:00</div>
</div>
<div class="right">188km</div>
</li>
<li class="net-item">
<div class="left">
<div class="shop-name">星期六门店1(万达广场店)</div>
<div class="shop-address">江苏省常州市新北区通江路88号万达广场1楼大厅坐台江苏省常州市新北区通江路88号万达广场1楼大厅坐台</div>
<div class="shop-tel">0519-83653221 营业时间:8:00-17:00</div>
</div>
<div class="right">188km</div>
</li>
</ul>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {}
},
components: {},
methods: {},
beforeRouteEnter (to, from, next){
next();
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="商品评价">
<router-link to="/" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<div class="cyc-scroll1">
<ul class="comment-list">
<more-comment-item></more-comment-item>
<more-comment-item></more-comment-item>
<more-comment-item></more-comment-item>
<more-comment-item></more-comment-item>
<more-comment-item></more-comment-item>
<more-comment-item></more-comment-item>
</ul>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import moreCommentItem from "../goods/moreCommentItem.vue"
export default {
data() {
return {}
},
components: {
moreCommentItem,
},
methods: {},
beforeRouteEnter (to, from, next){
next();
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="收货地址">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-main-mid">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="page-loadmore-list">
<address-item v-for="(item,index) in myAddressList" :index="index" :item="item"
:page-num="pageNum"></address-item>
<li class="loadmore-end" v-show="allLoaded&&myAddressList.length>0">--end--</li>
</ul>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="myAddressList.length==0">
<img src="../../static/images/noaddress.svg"/>
<p>您还没有收货地址哦~</p>
</no-data>
</div>
<div class="zj-bottom">
<router-link :to="{name:'addAddress',params: {Id:false,teype:'add' }}" tag="button" class="zj-bottom-btn">
+ 新增地址
</router-link>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import addressItem from '../address/addressItem.vue'
import {getmyAddressList, ClearAddresslist} from '../../vuex/actions'
import noData from '../common/noData.vue'
export default {
data() {
return {
page: 0,
pageNum: 10,
allLoaded: false,
bottomStatus: '',
}
},
components: {
addressItem,
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
var self = this;
setTimeout(function () {
if (self.myAddressList.length >= self.myAddressCount) {
console.log("allLoaded:" + self.allLoaded);
self.allLoaded = true;
}
}, 0);
if (self.myAddressList.length > 0 && !self.allLoaded) {
self.page++;
self.getmyAddressList(self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
vuex: {
getters: {
myAddressList: ({addressData}) => {
return addressData.myAddressList;
},
myAddressCount: ({addressData}) => {
return addressData.myAddressCount;
}
},
actions: {
getmyAddressList,
ClearAddresslist
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.ClearAddresslist().then(function () {
vm.getmyAddressList(vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
setTimeout(function () {
$(".zj-main-mid").scrollTop(0);
}, 0);
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="优惠券">
<router-link to="/personCenter" slot="left">
<mt-button icon="back"></mt-button>
</router-link>
</mt-header>
<ul class="common-tab">
<li class="selected">未使用</li>
<li>已使用</li>
<li>已过期</li>
</ul>
<div class="cyc-scroll2">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul>
<person-coupon-item v-for="item in myCouponList" :item="item"></person-coupon-item>
</ul>
<div class="loadmore-end" v-show="allLoaded && myCouponList.length>0">--end--</div>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="myCouponList.length==0">
<img src="../../static/images/nocoupon.svg"/>
<p>您还没有优惠券记录哦~</p>
</no-data>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import personCouponItem from "../coupon/personCouponItem.vue"
import noData from '../common/noData.vue'
import {getmyCouponList, clearmyCouponList} from '../../vuex/actions'
export default {
data() {
return {
page: 0,
pageNum: 10,
allLoaded: false,
bottomStatus: '',
wrapperHeight: 0
}
},
components: {
personCouponItem,
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
// if(this.browseRecordList.length>=this.browseRecordList.count){
// this.allLoaded=true;
// }
var self = this;
setTimeout(function () {
if (self.myCouponList.length >= self.myCouponCount) {
self.allLoaded = true;
}
}, 0);
if (self.myCouponList.length > 0 && !this.allLoaded) {
self.page++;
self.getmyCouponList(self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
}
},
vuex: {
getters: {
myCouponList: ({personCenterData}) => {
return personCenterData.myCouponList;
}
},
actions: {
getmyCouponList,
clearmyCouponList
}
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.clearmyCouponList().then(function () {
vm.getmyCouponList(vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
setTimeout(function () {
$(".cyc-scroll2").scrollTop(0);
}, 0)
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="优惠券详情">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="my-coupon-content">
<div class="ctopbg-l"></div>
<div class="top" :style="{'background':myCouponDetail.cplBgcolor}">
<div class="title">{{myCouponDetail.cplName}}</div>
<div class="time">使用期限:{{startTime}} 至 {{endTime}}</div>
<div class="num-tel"><span class="num"><span class="big-num">{{myCouponDetail.cplValue }}</span>折<span
class="tel">券号:{{myCouponDetail.cplCode}}</span></span></div>
<span class="double-line-left"></span><span class="double-line-right"></span>
</div>
<div class="ctopbg-r"></div>
<div class="middle">
<div id="qrcode"></div>
<div id="barcode"></div>
<div class="use-if">
<span class="left">使用条件:</span>
<div class="right">
<p>&nbsp;1、只能在使用网店使用;</p>
<p>&nbsp;2、优惠券在使用期限内使用;</p>
<p>&nbsp;3、线上线下都可使用。</p>
</div>
</div>
<div class="bottom">
<mt-cell title="适用网点" to="/matchNet" is-link></mt-cell>
</div>
</div>
<div class="bottom-bg" :style="{'background':myCouponDetail.cplBgcolor}">
<div class="cbottombg-l"></div>
<div class="cbottombg-r"></div>
</div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import {getmyCouponDetail} from '../../vuex/actions';
export default {
data() {
return {
startTime: '',
endTime: ''
}
},
computed: {
cplCode(){
return this.myCouponDetail.cplCode;
}
},
methods: {
gotoback(){
this.$router.go(-1)
},
createQRcode(){
// 设置参数方式
var qrcode = new QRCode('qrcode', {
text: this.cplCode,
width: 150,
height: 150,
colorDark: '#000000',
colorLight: '#ffffff',
correctLevel: QRCode.CorrectLevel.H
});
return qrcode;
},
createBarCode(){
$("#barcode").empty().barcode("22222", "code11", {barWidth: 2, barHeight: 30});
},
beginTime(){
this.startTime = this.myCouponDetail.cplStartTime.substring(0, 11);
},
finishTime(){
this.endTime = this.myCouponDetail.cplEndTime.substring(0, 11);
}
},
vuex: {
getters: {
myCouponDetail: ({personCenterData}) => {
return personCenterData.myCouponDetail;
},
},
actions: {
getmyCouponDetail
}
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.getmyCouponDetail(vm.$route.params.cplId).then(function () {
vm.beginTime();
vm.finishTime();
vm.createQRcode();
vm.createBarCode();
});
});
},
beforeRouteLeave(to, from, next) {
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="订单详情">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-main-mid">
<div class="orderDetail-no">
<div class="top">
订单编号:2016110718065166
<span>待收货</span>
</div>
<router-link to="/EMS" tag="div" class="bottom">
<span>物流信息:</span>
<p>【江苏省常州市新区公司】快件到达常州中转站</p>
<p>2016-11-10 10:10:46</p>
<p>申通快递为您服务</p>
<span>
<i class="mint-cell-allow-right"></i>
</span>
</router-link>
</div>
<!--订单地址-->
<div class="order-address">
<order-address-item>
<!--<span slot="right" class="right"><i class="mint-cell-allow-right"></i></span>-->
</order-address-item>
</div>
<!--订单商品-->
<div class="order-Goods">
<div class="top">兑换商城</div>
<ul class="mid">
<li class="order-goods-li">
<order-goods-item></order-goods-item>
<router-link to="/returnGoods" class="order-returnGoodsStatus" tag="div">
<mt-button size="small" type="primary" plain>申请退货</mt-button>
</router-link>
</li>
<li class="order-goods-li">
<order-goods-item></order-goods-item>
<router-link to="/returnGoods" class="order-returnGoodsStatus" tag="div">
<mt-button size="small" type="primary" plain>申请退货</mt-button>
</router-link>
</li>
</ul>
</div>
<!--支付方式-->
<div class="order-paytyper">
<p class="order-cell-p">支付方式:<span>微信支付</span></p>
</div>
<!--订单金额信息-->
<div class="order-money">
<div class="typer">
<p class="order-cell-p">优惠券:<span>包邮券</span></p>
</div>
<div class="typer">
<p class="order-cell-p">运费:<span>¥1.00</span></p>
<p class="order-cell-p">商品金额:<span>1198联盟币</span></p>
</div>
<div class="count">
<p class="bigfont" style="position: absolute;top:0.2rem;left:0.2rem;">总计</p>
<p class="bigfont">1198联盟币+¥1.00</p>
<p class="smallfont">(含¥1.00运费)</p>
<p class="smallfont" style="color:#ccc">下单时间:2016-11-10 10:10:36</p>
<!--付款剩余时间-->
<p class="smallfont" style="color:#ff0000">付款剩余时间:27分钟</p>
</div>
</div>
</div>
<div class="orderDetail-bottom">
<mt-button size="small" type="primary" plain @click.native="showMessageBox">取消订单</mt-button>
<mt-button size="small" type="primary">去付款</mt-button>
</div>
</div>
</template>
<script>
import orderAddressItem from '../address/orderAddressItem.vue';
import orderGoodsItem from '../order/orderGoodsItem.vue';
import {MessageBox} from 'mint-ui';
export default{
data(){
return {
item: 'http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1308/02/c0/24056523_1375430477597.jpg',
}
},
components: {
orderAddressItem,
orderGoodsItem
},
methods: {
showMessageBox(){
MessageBox({
title: '提示',
message: '确认取消订单?',
showCancelButton: true
});
},
gotoback(){
this.$router.go(-1)
}
}
}
</script>
\ No newline at end of file
<template>
<div class="zj-main">
<mt-header title="订单结算">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-pay-mid">
<div class="pay-top">
<div class="left cell">
<img src="../../static/images/defaultface.png" v-if="pushOrder.buyerAvatar==''"/>
<img :src="pushOrder.buyerAvatar" v-else/>
</div>
<div class="right cell">
<p>{{pushOrder.buyerNickName}}</p>
<p class="samllerfont">会员ID:{{pushOrder.custId}}</p>
<p>{{pushOrder.siteUnitName}}:{{pushOrder.custPoints}}</p>
</div>
</div>
<div class="pay-mid">
<div class="typer">
<p class="order-cell-p">需支付:<span class="purple">{{pushOrder.orderPoints}}{{pushOrder.siteUnitName}} <em
v-if="pushOrder.orderMoney!=''&&pushOrder.orderMoney!=0">+
¥{{pushOrder.orderMoney}}</em></span></p>
</div>
</div>
<!--有人民币支付时显示-->
<div class="pay-bot" v-if="pushOrder.orderMoney!=''&&pushOrder.orderMoney!=0">
<div class="typer" style="border-bottom:1px solid #eee">人民币支付方式</div>
<div class="typer">
<template v-for="(item,index) in pushOrder.payWay">
<!--微信支付--->
<label class="order-cell-p mint-radiolist-label" @click.self="selectedlabel(index,item)"
v-if="item=='wx'">
<img src="../../static/images/weixing.svg" style="width:0.5rem;margin-right:5px;"/>微信支付<em
style="color:#ff0000">(系统推荐)</em>
<span class="mint-radio">
<input class="mint-radio-input" type="radio" :value="item.buyerAddressId"
checked="checked">
<span class="mint-radio-core"></span>
</span>
</label>
<!--支付宝支付--->
<label class="order-cell-p mint-radiolist-label" @click.self="selectedlabel(index,item)"
v-if="item=='zfb'&&browsertyper!='weixing'">
<img src="../../static/images/zfb.svg" style="width:0.5rem;margin-right:5px;"/>支付宝支付
<span class="mint-radio">
<input class="mint-radio-input" type="radio" :value="item.buyerAddressId">
<span class="mint-radio-core"></span>
</span>
</label>
</template>
</div>
</div>
<div class="returnGood-ps" style="padding:0 0.2rem">温馨提示:未支付的订单将于{{downTime}}分钟后自动取消</div>
<div class="pay-button">
<mt-button size="large" class="system-btn" @click.native="pay"
v-if="pushOrder.custPoints>pushOrder.orderPoints" v-show="downTime>0">确认付款
</mt-button>
<mt-button size="large" class="disabled-btn" @click.native="pay" disabled
v-if="pushOrder.custPoints>pushOrder.orderPoints" v-show="downTime<=0">确认付款
</mt-button>
<mt-button size="large" v-else disabled class="disabled-btn">{{pushOrder.siteUnitName}}不足</mt-button>
</div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import orderAddressItem from '../address/orderAddressItem.vue';
import orderGoodsItem from '../order/orderGoodsItem.vue';
import {MessageBox, Actionsheet} from 'mint-ui';
import {countDown} from '../../utils/commonUtil';
import {getpushOrder, postpayOrder} from '../../vuex/actions';
export default{
data(){
return {
paymentType: 'wx',//支付方式
browsertyper: '',//浏览器类型
downTime: ''//倒计时
}
},
components: {
orderAddressItem,
orderGoodsItem
},
computed: {},
methods: {
gotoback(){
var self = this;
MessageBox.confirm('未支付订单' + self.downTime + '分钟后将被取消,确认离开?').then(action => {
this.$router.go(-1)
});
},
orderValidTime(){
var self = this;
this.downTime = (this.pushOrder.orderValidTime / 60);
function timeCount() {
self.downTime = self.downTime - 1;
if (self.downTime == 0) {
window.clearInterval(interavl);
}
}
var interavl = setInterval(timeCount, 60000);
},
selectedlabel(index, type){
var self = this;
$(".mint-radio-input").removeAttr("checked");
$(".mint-radio-label").removeClass("colorpurple");
$(".mint-radio-input").eq(index).attr("checked", "checked");
$(".mint-radio-label").eq(index).addClass("colorpurple");
this.paymentType = type;
},
pay(){
var self = this;
var payType;
if (this.paymentType == 'wx') {
if (this.browsertyper != 'pc') {
payType = 'weixin';
} else {
payType = 'weixin_code';
}
} else {
if (this.browsertyper != 'pc') {
payType = 'wapalipay';
} else {
payType = 'alipay';
}
}
var data = {
order_code: this.$route.params.orderId,
payment_type: payType,
show_url: '/orderDetail/orderId/' + this.$route.params.orderId,
order_create_time: this.pushOrder.orderTime,
order_money: this.pushOrder.orderMoney
};
this.postpayOrder(data)
}
},
vuex: {
getters: {
pushOrder: ({orderData}) => {
return orderData.pushOrder;
},
},
actions: {
getpushOrder,
postpayOrder
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.browsertyper = window.BROWSERTYPER
vm.getpushOrder(vm.$route.params.orderId).then(function () {
vm.orderValidTime();
});
});
},
beforeRouteLeave (to, from, next){
next()
}
}
</script>
\ No newline at end of file
<template>
<div class="personCenter-page">
<div class="person-header">
<div class="person-info">
<img v-if="personData.buyerAvatar" :src="face" alt="头像" class="person-face">
<img v-else src="../../static/images/defaultface.png" alt="头像" class="person-face">
<div>
<div class="person-name">{{personData.buyerNickName}}</div>
<div class="person-coins">联盟币:{{personData.buyerPoint}}</div>
</div>
</div>
</div>
<div class="cell-padding part-one">
<div class="total-order">
<mt-cell title="全部订单" is-link>
<img slot="icon" src="../../static/images/order.svg" width="20" height="20">
</mt-cell>
</div>
<ul class="order-box">
<li class="order-item">
<div><p>{{orderNum.stayPayNum}}</p>
<p>待付款</p></div>
</li>
<li class="order-item">
<div><p>{{orderNum.stayDeliverNum}}</p>
<p>待发货</p></div>
</li>
<li class="order-item">
<div><p>{{orderNum.stayTakeNum}}</p>
<p>待收货</p></div>
</li>
<li class="order-item">
<div><p>{{orderNum.stayReplyNum}}</p>
<p>待评价</p></div>
</li>
<li class="order-item">
<div><p>{{orderNum.salesReturnNum}}</p>
<p>退货</p></div>
</li>
</ul>
</div>
<div class="cell-padding part-two">
<mt-cell title="浏览记录" to="/browseRecordList" is-link>
<img slot="icon" src="../../static/images/record.svg" width="20" height="20">
</mt-cell>
<mt-cell title="我的收藏" to="/collectionList" is-link>
<img slot="icon" src="../../static/images/collection.svg" width="20" height="20">
</mt-cell>
<mt-cell title="我的地址" to="/myAddress" is-link>
<img slot="icon" src="../../static/images/address.svg" width="20" height="20">
</mt-cell>
</div>
<div class="cell-padding part-three">
<mt-cell title="我的优惠券" to="/myCoupon" is-link>
<img slot="icon" src="../../static/images/coupon.svg" width="20" height="20">
</mt-cell>
</div>
<bottom-nav></bottom-nav>
</div>
</template>
<script type="text/ecmascript-6">
import bottomNav from '../common/bottomNav.vue';
import {getpersonData} from '../../vuex/actions';
import {getorderNum} from '../../vuex/actions';
import {formatImg} from '../../utils/commonUtil';
export default {
data() {
return {}
},
components: {
bottomNav
},
computed: {
face(){
return formatImg.formatSRC(this.personData.buyerAvatar, 100, 100);
}
},
methods: {},
vuex: {
getters: {
personData: ({personCenterData}) => {
return personCenterData.personData;
},
orderNum: ({personCenterData}) => {
return personCenterData.orderNum;
}
},
actions: {
getpersonData,
getorderNum,
},
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.getpersonData(),
vm.getorderNum();
});
},
beforeRouteLeave(to, from, next) {
next();
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="申请退货">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-main-mid">
<div class="returnGood-div">
<order-goods-item style="border:0px"></order-goods-item>
</div>
<div class="returnGood-mid-div">
<mt-field label="退款金额" placeholder="请输入退货金额"></mt-field>
</div>
<div class="returnGood-ps">(最多退款 599联盟币)</div>
<textarea placeholder="请输入退货原因,最多不超过500字" class="addAddress-textarea"></textarea>
</div>
<div class="zj-bottom">
<button class="zj-bottom-btn">提交申请</button>
</div>
</div>
</template>
<script>
import orderGoodsItem from '../order/orderGoodsItem.vue';
export default{
data(){
return {}
},
components: {
orderGoodsItem
},
methods: {
gotoback(){
this.$router.go(-1)
}
}
}
</script>
<template>
<div class="zj-main">
<mt-header title="退货详情">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-main-mid">
<div class="returnGoodsDetail-main">
<div class="returnGoodsDetail-block">
<div><label>订单编号:</label>2016110718065166</div>
<div><label>退货进度:</label><span style="color:#ff0000">已退货</span></div>
<!--退货失败时显示-->
<div><label>失败原因:</label><span style="color:#ff0000">已超过7天</span></div>
<div>
<label>退货地址:</label>
<p>江苏省常州新北区太湖东路9-1号A座</p>
<p>许小姐 13915029888</p>
</div>
</div>
<div class="returnGoodsDetail-block">
<div class="bigfont left">退款明细</div>
<div><label>退款金额:</label>联盟币 1198</div>
<div><label>退款时间:</label><span>2016-11-10 10:10:36</span></div>
<div>
<label>退款原因:</label>
<p>商品尺码太小,穿不下。商品尺码太小,穿不下商
品尺码太小,穿不下商品尺码太小,穿不下商品尺
码太小,穿不下。</p>
</div>
</div>
<!--等待卖家收货时显示-->
<div class="returnGoodsDetail-block">
<div class="bigfont left">退货物流明细</div>
<div><label>物流名称:</label>申通物流</div>
<div><label>物流单号:</label><span>201611101606395166</span></div>
</div>
</div>
<!--退货申请成功,请提交物流信息-->
<div class="returnGoodsDetail-edit">
<div class="bigfont left purple">退货物流明细</div>
<mt-field label="物流名称" placeholder="请输入物流名称"></mt-field>
<mt-field label="物流单号" placeholder="请输入物流单号"></mt-field>
</div>
</div>
<div class="zj-bottom">
<button class="zj-bottom-btn">提交</button>
</div>
</div>
</template>
<script>
import orderGoodsItem from '../order/orderGoodsItem.vue';
export default{
data(){
return {}
},
components: {
orderGoodsItem
},
methods: {
gotoback(){
this.$router.go(-1)
}
}
}
</script>
<template>
<div class="zj-main">
<div class="search-leftbtn" @click="gotoback"></div>
<mt-search v-model="value" style="width:calc(100% - 20px);float:right;" :autofocus="autofocus">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="goods-small-ul" style="margin-top:0px">
<small-pic v-for="item in list" :item="item"></small-pic>
</ul>
<!--<ul class="page-loadmore-list">-->
<!--<return-goods-item v-for="item in list"></return-goods-item>-->
<!--<li class="loadmore-end" v-show="allLoaded">--end--</li>-->
<!--<li class="loadmore-end" v-if="browsertyper=='pc'"><mt-button size="small" type="primary" plain >点击加载更多</mt-button></li>-->
<!--</ul>-->
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
</mt-search>
</div>
</template>
<style>
.main .mint-swipe-indicators {
left: auto !important;
bottom: 5px !important;
right: -16px;
}
</style>
<script type="text/ecmascript-6">
import smallPic from '../goods/smallPic.vue';
export default {
data() {
return {
value: '',
allLoaded: false,
autofocus: true,
browsertyper: '',
bottomStatus: '',
wrapperHeight: 0,
list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
},
components: {
smallPic
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
setTimeout(() => {
let lastValue = this.list[this.list.length - 1];
if (lastValue < 40) {
for (let i = 1; i <= 10; i++) {
this.list.push(lastValue + i);
}
} else {
this.allLoaded = true;
}
this.$refs.loadmore.onBottomLoaded(id);
}, 1500);
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.browsertyper = window.BROWSERTYPER;
});
},
beforeRouteLeave (to, from, next){
next();
},
}
</script>
<template>
<div class="zj-main">
<mt-header title="选择地址">
<span @click="gotoback" slot="left">
<mt-button icon="back"></mt-button>
</span>
</mt-header>
<div class="zj-main-mid">
<mt-loadmore :bottom-method="loadBottom" @bottom-status-change="handleBottomChange"
:bottom-all-loaded="allLoaded" ref="loadmore">
<ul class="page-loadmore-list">
<li class="addressitem-div selected" v-for="item in myAddressList"
@click="selectedaddress(item.buyerAddressId)">
<div class="address-top">
<span class="name">{{item.buyerNickName}}</span>
<span class="phone">{{item.buyerMobile}}</span>
</div>
<div class="address-mid">
<p><b v-show="item.isDefault==1">【默认地址】</b>{{item.buyerAddress}}</p>
</div>
</li>
<li class="loadmore-end" v-show="allLoaded&&myAddressList.length>0">--end--</li>
</ul>
<div slot="bottom" class="mint-loadmore-bottom">
<span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
<span v-show="bottomStatus === 'loading'">
<mt-spinner type="snake"></mt-spinner>
</span>
</div>
</mt-loadmore>
<no-data v-if="myAddressList.length==0">
<img src="../../static/images/noaddress.svg"/>
<p>您还没有收货地址哦~</p>
</no-data>
</div>
<div class="zj-bottom">
<router-link to="/myAddress" tag="button" class="zj-bottom-btn">
编辑地址
</router-link>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import noData from '../common/noData.vue';
import {getmyAddressList, ClearAddresslist} from '../../vuex/actions';
export default {
data() {
return {
page: 0,
pageNum: 20,
allLoaded: false,
bottomStatus: '',
addressId: '',
cplID: '',
from: '',
Goods: ''
}
},
components: {
noData
},
methods: {
gotoback(){
this.$router.go(-1)
},
handleBottomChange(status) {
this.bottomStatus = status;
},
loadBottom(id) {
var self = this;
setTimeout(function () {
if (self.myAddressList.length >= self.myAddressCount) {
console.log("allLoaded:" + self.allLoaded);
self.allLoaded = true;
}
}, 0);
if (this.myAddressList.length > 0 && !this.allLoaded) {
var self = this;
self.page++;
self.getmyAddressList(self.page, self.pageNum).then(function (result) {
if (result == "stop") {
self.allLoaded = true;
}
});
}
this.$refs.loadmore.onBottomLoaded(id);
},
selectedaddress(id){
this.addressId = id;
this.$route.params.id = id;
this.$router.go(-1);
// this.$router.replace({
// name:'count',
// params:{
// addressId:id,
// cplID:this.cplID,
// from:this.from,
// Goods:this.Goods
// }
// })
}
},
vuex: {
getters: {
myAddressList: ({addressData}) => {
return addressData.myAddressList;
},
myAddressCount: ({addressData}) => {
return addressData.myAddressCount;
}
},
actions: {
getmyAddressList,
ClearAddresslist
}
},
beforeRouteEnter (to, from, next){
next(vm => {
vm.ClearAddresslist().then(function () {
vm.getmyAddressList(vm.page, vm.pageNum).then(function (result) {
if (result == "stop") {
vm.allLoaded = true;
}
});
});
setTimeout(function () {
$(".zj-main-mid").scrollTop(0);
}, 0)
});
},
beforeRouteLeave (to, from, next){
next();
}
}
</script>
\ No newline at end of file
<template>
<div class="main">
<span>TEST IT</span>
</div>
</template>
<style>
.main .mint-swipe-indicators {
left: auto !important;
bottom: 5px !important;
right: -16px;
}
image[lazy=loading] {
width: 40px !important;
height: 50vw;
margin: auto;
}
</style>
<script type="text/ecmascript-6">
export default {
data() {
return {};
},
};
</script>
import Vue from 'vue'
import MintUI from 'mint-ui'
import VueRouter from 'vue-router'
import VueValidator from 'vue-validator'
import {sync} from 'vuex-router-sync'
import 'mint-ui/lib/style.css'
import 'mint-ui/src/assets/font/iconfont.css'
import 'mint-ui/lib/index.js'
import './static/css/common.less'
import routes from './route.js'
import store from './vuex/store'
import App from './App';
Vue.use(MintUI);
Vue.use(VueRouter);
Vue.use(VueValidator);
const router = new VueRouter(
{
routes: routes
}
);
/* eslint-disable no-new */
new Vue({
el: '#app',
router: router,
render: h => h(App)
// template: '<App/>',
// components: { App }
});
sync(store, router);
/*判断浏览器设备*/
var browsertyper;
var browser = {
versions: function () {
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
browsertyper='mobile';
console.log("在手机中打开");
var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
if (ua.match(/MicroMessenger/i) == "micromessenger") {
//在微信中打开
browsertyper='weixing';
console.log("在微信中打开")
setInterval(WeixinJSBridge.call('closeWindow'),2000);
}
} else {
//否则就是PC浏览器打开
browsertyper ='pc';
console.log("PC浏览器打开");
}
window.BROWSERTYPER = browsertyper;
/**
* Created by shop on 2016/11/10.
*/
import Home from './components/pages/home.vue';
import personCenter from './components/pages/personCenter.vue';
import browseRecordList from './components/pages/browseRecordList.vue';
import collectionList from './components/pages/collectionList.vue';
import myAddress from './components/pages/myAddress.vue';
import addAddress from './components/pages/addAddress.vue';
import myCoupon from './components/pages/myCoupon.vue';
import myCouponDetail from './components/pages/myCouponDetail.vue';
import couponCenter from './components/pages/couponCenter.vue';
import couponCenterDetail from './components/pages/couponCenterDetail.vue';
import matchNet from './components/pages/matchNet.vue';
import goodsGroup from './components/pages/goodsGroup.vue';
import goodsDetail from './components/pages/goodsDetail.vue';
import carList from './components/pages/carList.vue';
import count from './components/pages/count.vue';
import pay from './components/pages/pay.vue';
import allOrderList from './components/pages/allOrderList.vue';
import orderDetail from './components/pages/orderDetail.vue';
import EMS from './components/pages/EMS.vue';
import evaluate from './components/pages/evaluate.vue';
import returnGoods from './components/pages/returnGoods.vue';
import returnGoodsDetail from './components/pages/returnGoodsDetail.vue';
import fail from './components/pages/fail.vue';
import search from './components/pages/search.vue';
import selectAddress from './components/pages/selectAddress.vue';
import moreComments from './components/pages/moreComments.vue';
export default [
{path: '/pageId/:pageId', name: '/pageId', component: Home},
{path: '/personCenter', name: 'personCenter', component: personCenter},
{path: '/browseRecordList', name: 'browseRecordList', component: browseRecordList},
{path: '/collectionList', name: 'collectionList', component: collectionList},
{path: '/myAddress', name: 'myAddress', component: myAddress},
{path: '/addAddress/Id/:Id/teype/:teype', name: 'addAddress', component: addAddress},
{path: '/myCoupon', name: 'myCoupon', component: myCoupon},
{path: '/myCouponDetail/cplId/:cplId', name: 'myCouponDetail', component: myCouponDetail},
{path: '/couponCenter', name: 'couponCenter', component: couponCenter},
{path: '/couponCenterDetail/cplId/:cplId', name: 'couponCenterDetail', component: couponCenterDetail},
{path: '/matchNet', name: 'matchNet', component: matchNet},
{path: '/goodsGroup/typer/:typer/productListId/:productListId', name: 'goodsGroup', component: goodsGroup},
{path: '/goodsDetail/productId/:productId', name: 'goodsDetail', component: goodsDetail},
{path: '/carList', name: 'carList', component: carList},
/**
* 订单确认(结算页)
* addressId:收货地址id ,结算时传0
* cplID:使用的优惠券id ,结算时传0
* from:订单来源,1:购物车,2:商品详情
* Goods:需要结算的商品,格式如 20201-4,20004-1 ‘ - ’前面的是商品ID,后面的是对应商品的数量,多个商品用“,”分隔
*/
{path: '/count/addressId/:addressId/cplID/:cplID/from/:from/Goods/:Goods', name: 'count', component: count},
{path: '/pay/orderId/:orderId', name: 'pay', component: pay},
{path: '/allOrderList', name: 'allOrderList', component: allOrderList},
{path: '/orderDetail/orderId/:orderId', name: 'orderDetail', component: orderDetail},
{path: '/EMS', name: 'EMS', component: EMS},
{path: '/evaluate', name: 'evaluate', component: evaluate},
{path: '/returnGoods', name: 'returnGoods', component: returnGoods},
{path: '/returnGoodsDetail', name: 'returnGoodsDetail', component: returnGoodsDetail},
/**
* 支付成功、失败页面
* status:支付状态,1成功,2失败
* con:原因,成功为"支付成功"
* orderId:订单id,
*
*/
{path: '/fail/status/:status/con/:con/orderId/:orderId', name: 'fail', component: fail},
{path: '/search', name: 'search', component: search},
{path: '/selectAddress/id/:id', name: 'selectAddress', component: selectAddress},
{path: '/moreComments', name: 'moreComments', component: moreComments},
{path: '*', redirect: '/pageId/0'}
]
@b333:#333 ;
@red:#ff0000;
@gray:#f2f2f2;
@grayfont:#666;
//紫色
@system-color:#6B44B5;
@s-font:0.26rem;
@m-font:0.32rem;
@b-font:0.46rem;
//图片之间的距离
@jiange:0.2rem;
//border颜色
@border-color:#eee;
@base-url:"";//图片路径
* {
-webkit-appearance: none;
-webkit-overflow-scrolling: touch;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}
* {
-webkit-tap-highlight-color: rgba(255,255,255,0);
-webkit-touch-callout: none;
/*系统默认菜单被禁用*/
-webkit-user-select: none;
/*webkit浏览器*/
-khtml-user-select: none;
/*早期浏览器*/
-moz-user-select: none;
/*火狐*/
-ms-user-select: none;
/*IE10*/
user-select: none;
}
input,
textarea {
-webkit-user-select: auto;
/*webkit浏览器*/
}
html,
body {
font-size: 50px;
font-family: "Microsoft Yahei","Helvetica Neue", Helvetica, Arial, sans-serif,mintui;
}
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
form,
fieldset,
legend,
input,
textarea,
p,
blockquote,
th,
td,
img {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
input,
textarea,
button,
a {
outline: none;
border-radius: 0;
font-family: "Microsoft Yahei","Helvetica Neue", Helvetica, Arial, sans-serif,mintui;
}
img {
border: 0;
vertical-align: bottom;
}
//图片加载样式
img[lazy = loading]{
width: 40px !important;
height: calc(50vw - 0.35rem);
margin: auto;
}
em,
strong,
b,
i,
th {
font-style: normal;
font-weight: normal;
}
a {
text-decoration: none;
}
ol,
ul {
list-style: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: normal;
}
@font-face {
font-family: "mintui";
src: url('iconfont.ttf?t=1464927413');
}
@media (min-width: 800px) {
html,
body {
font-size: 76px;
box-sizing: border-box;
}
.content {
width: 760px;
margin: 38px auto 0;
}
.content-body {
width: 540px;
border: 1px solid #ddd;
box-shadow: 0 0 5px #ccc;
min-height: ~'calc(100vh - 40px)';
}
.zj-main {
height: ~'calc(100vh - 40px)';
}
.content-top {
width: 100%;
position: fixed;
height: 40px;
background: #fff;
z-index: 9999;
top: 0;
left: 0;
}
.sidebar {
width: 180px;
background: #ccc;
margin-left: 560px;
position: fixed;
top: 40px;
height: 200px;
}
#app {
height: auto;
}
}
@media (max-width: 540px) {
.content {
width: 100%;
margin: 0 auto;
}
.sidebar {
display: none;
}
.content-top {
display: none;
}
#app {
height: 100%;
}
.zj-main {
height: 100vh;
}
}
//点击颜色加深
.active(@color) {
background: darken(@color, 10%);
}
//初始化字体
#app {
font-size: @s-font;
background: #f8f8f8;
}
.content {
background: #f9f9f9;
}
//选择字体
.font-s(@size: @s-font) {
font-size: @size;
}
//文字加粗
.bold() {
font-weight: bold;
}
//单行文字居中
.text-c() {
text-align: center;
}
// 文字垂直居中
.h-l(@h) {
height: @h;
line-height: @h;
}
//长宽相等的正方形div
.w-h(@h) {
width: @h;
height: @h;
}
//背景
.bg(@url, @repeat:no-repeat, @x:0, @y:0) {
background: url("@url") @repeat @x @y;
}
//浮动
.fr() {
float: left;
}
.fl() {
float: right;
}
//display
.d-b() {
display: block;
}
.d-i() {
display: inline;
}
.d-ib() {
display: inline-block;
}
.d-t() {
display: table;
}
//定位
.rel() {
position: relative;
}
.abs() {
position: absolute;
}
.fix() {
position: fixed;
}
//定宽垂直居中
.pos-box-cc(@w, @h, @pos:absolute) {
width: @w;
height: @h;
position: @pos;
left: 50%;
top: 50%;
margin-left: -@w / 2;
margin-top: -@h / 2;
}
//清除浮动
.clearfix {
&:after {
content: "\200B";
display: block;
height: 0;
clear: both;
}
*zoom: 1;
}
//圆角
.border-radius(@radius) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
//单行文本溢出
.clamp1 {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
//多行文本溢出
.text-overflow(@clamp) {
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: @clamp; // 限制文本行数2行(webkit私有属性)
display: -webkit-box;
-webkit-box-orient: vertical;
}
//内容区域溢出滚动
.content-pos(@head, @bottom, @pos:absolute) {
position: absolute;
top: @head;
bottom: @bottom;
width: 100%;
overflow: auto;
}
//隐藏滚动条
::-webkit-scrollbar {
width: 0;
height: 0;
}
//MUI商品数量加减
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
height: auto;
}
.mui-numbox {
position: relative;
display: inline-block;
width: 120px;
height: 28px;
padding: 0 40px;
overflow: hidden;
vertical-align: top;
vertical-align: middle;
background-color: #efeff4;
border: solid 1px #bbb;
border-radius: 3px;
}
.mui-numbox [class*=btn-numbox],
.mui-numbox [class*=numbox-btn] {
position: absolute;
top: 0;
width: 40px;
height: 100%;
padding: 0;
overflow: hidden;
font-size: 18px;
font-weight: 400;
line-height: 100%;
color: #555;
background-color: #f9f9f9;
border: none;
border-radius: 0;
}
.mui-numbox [class*=btn-numbox]:active,
.mui-numbox [class*=numbox-btn]:active {
background-color: #ccc;
}
.mui-numbox [class*=btn-numbox][disabled],
.mui-numbox [class*=numbox-btn][disabled] {
color: silver;
}
.mui-numbox .mui-btn-numbox-plus,
.mui-numbox .mui-numbox-btn-plus {
right: 0;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
.mui-numbox .mui-btn-numbox-minus,
.mui-numbox .mui-numbox-btn-minus {
left: 0;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.mui-numbox .mui-input-numbox,
.mui-numbox .mui-numbox-input {
display: inline-block;
width: 100%!important;
height: 100%;
padding: 0 3px !important;
margin: 0;
overflow: hidden;
text-align: center;
text-overflow: ellipsis;
word-break: normal;
border: none!important;
border-right: solid 1px #ccc!important;
border-left: solid 1px #ccc!important;
border-radius: 0!important;
}
//重写mintui样式
#app .mint-header {
font-size: 0.36rem;
height: 0.88rem;
background-color: @system-color;
}
#app .mintui {
font-size: 0.5rem;
}
#app .mint-button--primary {
background-color: @system-color;
}
#app .mint-button--primary.is-plain {
border: 1px solid #999999;
background-color: transparent;
color: @grayfont;
}
#app .mint-badge.is-primary {
background-color: @system-color;
}
#app .mint-switch-input:checked+ .mint-switch-core {
border-color: @system-color;
background-color: @system-color;
}
#app .mint-navbar .mint-tab-item.is-selected {
border-bottom: 3px solid @system-color;
color: @system-color;
}
#app .mint-tabbar> .mint-tab-item.is-selected {
background-color: #eaeaea;
color: @system-color;
}
#app .mint-searchbar-cancel {
color: @system-color;
}
#app .mint-checkbox-input:checked+ .mint-checkbox-core {
background-color: @system-color;
border-color: @system-color;
}
#app .mint-radio-input:checked+ .mint-radio-core {
background-color: @system-color;
border-color: @system-color;
}
#app .mt-range-progress {
background-color: @system-color;
}
#app .mt-progress-progress {
background-color: @system-color;
}
#app .mint-msgbox-confirm {
color: @system-color;
}
#app .mint-msgbox-confirm:active {
color: @system-color;
}
#app .mint-datetime-action {
color: @system-color;
}
//底部导航
.nav-bottom {
position: fixed;
width: 100%;
bottom: 0;
height: 1rem;
background: #fff;
left: 0;
border-top: 1px solid #eee;
z-index: 999;
}
.nav-bottom-home {
float: left;
width: 1rem;
height: 100%;
text-align: center;
}
.nav-bottom-table {
float: left;
display: table;
width: ~'calc(100% - 1rem)';
height: 100%;
}
.nav-bottom-table .nav-tablecell {
display: table-cell;
border-left: 1px solid #eee;
text-align: center;
vertical-align: middle;
position: relative;
height: 100%;
}
.nav-bottom-table .nav-second {
position: absolute;
width: 100%;
background: #fff;
border-radius: 5px;
bottom: 1.2rem;
border: 1px solid #eee;
}
.nav-bottom-table .nav-second:after {
content: "\200B";
width: 0;
height: 0;
border-left: 0.2rem solid transparent;
border-right: 0.2rem solid transparent;
border-top: 0.2rem solid #fff;
position: absolute;
bottom: -0.2rem;
}
.nav-bottom-table .nav-second .nav-second-item {
height: 0.8rem;
line-height: 0.8rem;
border-bottom: 1px solid #eee;
}
.nav-bottom-table .nav-second .nav-second-item:last-child {
border-bottom: 0;
}
.nav-bottom-table .nav-second .nav-second-item:active {
.active(#fff);
}
.nav-bottom-table .nav-tablecell .nav-first {
width: 100%;
height: 100%;
line-height: 1rem;
}
.nav-bottom-table .nav-tablecell .nav-first:active {
.active(#fff);
}
//无数据
.nodatadiv {
padding-top: 1rem;
color: #ccc;
font-size: @m-font;
text-align: center;
}
.nodatadiv img {
width: 20%;
margin-bottom: 0.5rem;
}
//通用tab切换
.common-tab {
position: relative;
display: flex;
height: 0.8rem;
background: #fff;
z-index: 100;
overflow-x: auto;
}
.common-tab li {
flex: 1;
.h-l(.8rem);
text-align: center;
min-width: 16%;
color: @grayfont;
position: relative; // border-left: 1px solid @border-color;
}
.common-tab li:after {
content: "|";
position: absolute;
right: 0;
color: #ddd;
}
.common-tab li:last-child:after {
font-size: 0;
}
.common-tab .selected {
border-bottom: 1px solid @system-color;
}
/*激活链连样式*/
.router-link-active{
color:@system-color;
}
/*禁用按钮*/
.disabled-btn{
background: #aaa;
color:#fff;
}
@import "bl";
@import "zj";
@import "cyc";
.personCenter-page .mint-cell-text {
display: inline-block;
font-size: @m-font;
color: @b333;
text-indent: 1em;
}
.personCenter-page .mint-cell-allow-right::after {
right: 10px;
}
.personCenter-page .mint-cell::after {
color: #fff;
}
.part-two .mint-cell:last-child::before {
color: #fff;
}
.part-three .mint-cell:last-child::before {
color: #fff;
}
.personCenter-page .mint-cell:active {
.active(#fff);
}
.personCenter-page .mint-cell-allow-right:after {
width: 8px;
height: 8px;
}
.person-header {
display: flex;
justify-content: center;
align-items: center;
height: 3.2rem;
font-size: @m-font;
background: url("../images/u1421.png") no-repeat center;
}
.person-face {
width: 1.6rem;
height: 1.6rem;
.border-radius(50%);
}
.person-info {
color: #fff;
line-height: 0.6rem;
text-align: center;
}
.cell-padding {
padding: 0 10px;
background: #fff;
}
.order-box {
display: flex;
height: 1.3rem;
font-size: @s-font;
}
.order-item {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
line-height: 0.5rem;
}
.order-item:active {
.active(#fff);
}
.order-item div p:first-child {
color: @system-color;
}
.part-one {
margin-bottom: @jiange;
}
.part-two {
margin-bottom: @jiange;
}
//内容区通用无tab滚动
.cyc-scroll1 {
.content-pos(0.88rem,0);
z-index: 1;
}
//内容区通用有tab滚动
.cyc-scroll2 {
.content-pos(1.66rem,0);
z-index: 1;
}
//内容区有bannertab滚动
.cyc-scroll3 {
.content-pos(3.66rem,0);
z-index: 1;
}
//浏览记录页面
.record-list {
background: #fff;
padding: 0 0.2rem;
}
.record-img {
width: 1.5rem;
height: 1.5rem;
display: inline-block;
}
.record-info {
position: relative;
display: inline-block;
margin-left: 0.2rem;
width: ~'calc(100% - 1.9rem)';
height: 1.5rem;
}
.record-title {
position: absolute;
top: 2px;
.text-overflow(2);
height: 0.8rem;
line-height: 0.4rem;
}
.record-coin {
position: absolute;
bottom: 0;
color: @system-color;
font-weight: 700;
}
.record-time {
.h-l(.42rem);
font-size: @s-font - 0.02;
color: #999;
}
.record-item {
padding: 0.1rem 0;
border-bottom: 1px solid @border-color;
}
//收藏记录
.cancel-collect {
float: right;
}
//我的优惠券页面
.use-now {
.h-l(1.8rem);
font-size: 0.3rem;
}
.use-now .mint-cell-allow-right {
position: relative;
}
.use-now .mint-cell-allow-right:after {
right: -0.22rem;
width: 0.16rem;
height: 0.16rem;
border-color: #fff;
}
.cyc-scroll2 .index-coupon-item .coupon-right {
border: none;
}
//优惠券中心
.coupon-banner {
height: 2rem;
background: #7954BE;
}
.ccbanner-img {
width: 100%;
height: 2rem;
}
//优惠券中心里的优惠券详情页
.coupon-center-detail {
padding: 0.2rem;
height: 6.8rem;
background: #018BD6;
color: #fff;
}
.coupon-center-detail .top {
position: relative;
text-align: center;
border-bottom: 1px dashed #fff;
}
.coupon-center-detail .top .title {
font-size: @m-font;
}
.coupon-center-detail .top .big-num {
font-size: @b-font*2;
font-weight: 700;
}
.coupon-center-detail .middle {
margin-top: 0.3rem;
}
.coupon-center-detail .middle .time {
margin-left: 0.2rem;
}
.coupon-center-detail .use-if {
color: #fff;
}
.coupon-center-detail .mint-cell {
border-top: 1px dashed #fff;
}
.coupon-center-detail .mint-cell {
background-color: #018BD6;
min-height: 36px;
}
.coupon-center-detail .mint-cell-allow-right::after {
.w-h(8px);
border-color: #fff;
}
.coupon-center-detail .mint-cell::after,
.coupon-center-detail .mint-cell::before {
color: #018BD6;
}
.coupon-center-detail-bottom {
padding: 0.2rem;
height: 3rem;
color: #999;
}
.coupon-center-detail-bottom .coupon-name-price {
height: 1.1rem;
line-height: 0.6rem;
font-size: @m-font - 0.02;
}
.coupon-center-detail-bottom .coupon-num-sale {
display: flex;
justify-content: space-between;
border-top: 1px solid @border-color;
border-bottom: 1px solid @border-color;
}
.coupon-center-detail-bottom .coupon-name {
color: @b333;
}
.coupon-center-detail-bottom .coupon-price {
color: @system-color;
}
.coupon-center-detail-bottom .coupon-num-sale {
.h-l(.7rem);
}
.coupon-center-detail-bottom .buy-number {
display: flex;
justify-content: space-between;
align-items: center;
height: 0.9rem;
}
.exchange-button {
position: fixed;
bottom: 0;
width: 100%;
.h-l(.88rem);
font-size: @m-font - 0.02;
text-align: center;
color: #fff;
background: @system-color;
}
//我的优惠券页面的详情页
.my-coupon-content {
position: relative;
padding: 0 0.2rem;
}
.my-coupon-content .top {
position: relative;
margin-top: .2rem;
padding: 0.2rem;
background-color: #ff0000;
height: 2.36rem;
text-align: center;
color: #fff;
}
.ctopbg {
position: absolute;
width: .28rem;
height: 2.36rem;
background: url("../images/ctopbg2.png") no-repeat ;
z-index: 2;
}
.my-coupon-content .ctopbg-l{
.ctopbg();
left: .1rem;
}
.my-coupon-content .ctopbg-r{
.ctopbg();
top:0;
right: -.01rem;
}
.my-coupon-content .title {
font-size: @m-font;
}
.my-coupon-content .time {
margin-top: 0.2rem;
}
.my-coupon-content .num-tel {
text-align: left;
}
.my-coupon-content .num {
margin-left: 0.2rem;
}
.my-coupon-content .big-num {
font-size: @b-font*2;
font-weight: 700;
}
.my-coupon-content .tel {
position: absolute;
bottom: .17rem;
right: .2rem;
}
.my-coupon-content .middle {
margin-top: -.2rem;
background: #fff;
}
.my-coupon-content .middle img {
display: block;
}
#qrcode {
padding-top: .2rem;
margin: 0.2rem auto 0;
.w-h(150px);
}
#qrcode>canvas,#qrcode>img{
display: block;
}
#barcode {
margin: 0.4rem auto 0;
//width: 280px;
height: 55px;
}
.use-if {
margin-top: 0.2rem;
margin-bottom: 0.2rem;
color: #666;
}
.use-if .left {
float: left;
margin-left: 0.2rem;
width: 1.4rem;
height: 1rem;
}
.use-if .right {
display: inline-block;
height: 1rem;
line-height: 0.4rem;
}
.my-coupon-content .mint-cell::before {
color: #fff;
}
.my-coupon-content .mint-cell-allow-right::after {
.w-h(8px);
}
.my-coupon-content .mint-cell-text {
color: #666;
font-size: @m-font;
}
.my-coupon-content .bottom-bg {
height: 0.5rem;
background: #ff0000;
}
.cbottombg{
position: absolute;
width: .14rem;
height: .5rem;
background: url("../images/cbottombg2.png") no-repeat ;
z-index: 2;
}
.cbottombg-l{
.cbottombg();
left: .1rem;
}
.cbottombg-r{
.cbottombg();
right: .1rem;
}
.double-line {
display: inline-block;
position: absolute;
top: 0.6rem;
width: 1.26rem;
height: 0.14rem;
border-top: 1px solid #fff;
border-bottom: 1px solid #fff;
}
.double-line-left {
.double-line();
left: 0.3rem;
}
.double-line-right {
.double-line();
right: 0.3rem;
}
//适用网点
.your-location {
margin-bottom: 0.2rem;
padding-left: 0.3rem;
color: @grayfont;
.h-l(.7rem);
background: #fff;
}
.net-list {
padding: 0 0.2rem;
background: #fff;
color: @grayfont;
}
.net-list .shop-name {
font-size: @m-font - 0.02;
color: @b333;
}
.net-list .shop-address {
.clamp1();
}
.net-item {
padding-top: 0.2rem;
border-bottom: 1px solid @border-color;
.clearfix();
}
.net-item:last-child {
border: none;
}
.net-item .left {
float: left;
width: 88%;
height: 1.6rem;
line-height: 0.45rem;
}
.net-item .right {
float: right;
background: url("../images/match.svg") no-repeat 80% 30%;
background-size: 0.5rem;
width: 11%;
height: 1.2rem;
line-height: 2rem;
text-align: center;
border-left: 1px solid @border-color;
}
//商品组
.cyc-scroll1 .goods-small-ul {
margin-top: 0;
}
//购物车
//购物车滚动
.cyc-scroll4{
.content-pos(1.4rem,0);
z-index: 1;
}
.car-list{
padding: 0.2rem;
background: #fff;
}
.car-top {
position: relative;
display: flex;
justify-content: space-between;
.h-l(.8rem);
border-bottom: 1px solid @border-color;
font-size: @m-font;
background: #fff;
padding: 0 .2rem;
z-index: 2;
}
.car-top span:last-child{
color: @system-color;
}
.car-item{
height: 1.9rem;
padding: .2rem 0;
border-bottom: 1px solid @border-color;
}
.car-item:last-child{
border:none;
}
.car-item .left {
display: inline-block;
width: 6%;
}
.car-item .middle {
display: inline-block;
}
.car-item .middle img {
display: inline-block;
margin-left: 0.1rem;
.w-h(1.5rem);
vertical-align: middle;
}
.car-item .right {
float: right;
width:~'calc(94% - 1.8rem)';
}
.car-item .right .title {
.text-overflow(2);
}
.car-item .right .style,.car-item .right .num{
line-height: .5rem;
color: @grayfont;
}
.car-item .right .money-num{
display: flex;
justify-content: space-between;
line-height: .4rem;
}
.car-item .right .money{
color: @system-color;
}
.car-bottom{
position: fixed;
bottom: 0;
padding-left: .2rem;
width: 100%;
.h-l(.8rem);
font-size: @m-font - .02rem;
background: #fff;
z-index: 3;
}
.car-bottom .mint-radio{
float: left;
}
.car-bottom .sum{
display: inline-block;
width: ~'calc(100% - 2.3rem)';
text-align: right;
color: @system-color;
}
.count-btn{
float: right;
width: 1.8rem;
height: .8rem;
text-align: center;
color: #fff;
background: @system-color;
}
//商品详情页
.swipe-info{
padding: .2rem;
margin-bottom: .2rem;
background: #fff;
}
.swipe-info .title{
.clamp1;
font-size: .28rem;
}
.swipe-info .coin{
padding: .1rem 0;
font-size: .3rem;
color: @system-color;
}
.swipe-info .refer-money{
padding: .1rem 0;
border-bottom: 1px solid @border-color;
color: @grayfont;
}
.swipe-info .freight-sale{
display: flex;
justify-content: space-between;
padding: .1rem 0;
color: @grayfont;
}
.goods-comment{
margin-bottom: .2rem;
padding: .2rem;
background: #fff;
}
.goods-comment .comment-num{
.h-l(.8rem);
font-size: .3rem;
}
.goods-comment .face{
.w-h(.8rem);
.border-radius(50%);
vertical-align: middle;
}
.goods-comment .name-time{
float: right;
display: inline-block;
width: ~'calc(100% - .8rem)';
line-height: .8rem;
display: flex;
justify-content: space-between;
}
.goods-comment .name{
margin-left: .2rem;
}
.goods-comment .content{
margin-top: .1rem;
.text-overflow(3);
}
.goods-comment .link-all{
margin: .2rem auto 0;
width: 2rem;
height: .4rem;
text-align: center;
border: 1px solid @system-color;
color: @system-color;
}
.goods-detail-bottom{
position: fixed;
bottom: 0;
z-index: 999;
height: .8rem;
width: 100%;
color: @grayfont;
background: #fff;
}
.goods-detail-bottom .nav-item{
float: left;
padding:0 .15rem;
border-right: 1px solid @border-color;
}
.goods-detail-bottom .nav-item:last-child{
position: relative;
border: none;
}
.goods-detail-bottom .right{
float: right;
}
.goods-detail-bottom img{
.w-h(.5rem);
}
.goods-detail-bottom .nav-item .num{
position: absolute;
top: 0;
right: .1rem;
.w-h(.3rem);
.border-radius(50%);
background: #FF1515;
color: #fff;
}
.gdb-com{
display: inline-block;
width: 1.8rem;
.h-l(.8rem);
text-align: center;
color: #fff;
font-size: .3rem;
}
.to-carlist{
.gdb-com;
background: #000;
}
.buy-now{
.gdb-com;
background: @system-color;
}
//底部弹出层
.goodsPopup{
position: relative;
}
.goodsPopup .box{
position: relative;
padding: .2rem .2rem 0;
width: 100%;
height: 8.6rem;
background: #fff;
}
.goodsPopup .simple-info{
height: 1.8rem;
border-bottom: 1px solid @border-color;
}
.goodsPopup .simple-info img{
float: left;
.w-h(1.5rem);
}
.goodsPopup .simple-info .font{
float: left;
margin-top: .2rem;
margin-left: .3rem;
line-height: .6rem;
}
.goodsPopup .simple-info .coin{
font-size: .3rem;
color: @system-color;
}
.goodsPopup .simple-info .store{
color: @grayfont;
}
.goodsPopup .select{
height: 1.8rem;
line-height: .9rem;
border-bottom: 1px solid @border-color;
}
.goodsPopup .select .s-color{
color: @grayfont;
font-size: @m-font;
}
.goodsPopup .color-list{
.clearfix();
}
.goodsPopup .color-list li{
float: left;
margin-left: .2rem;
padding:0 .2rem;
.h-l(.6rem);
border: 1px solid @b333;
}
.goodsPopup .color-list li:first-child{
margin-left: 0;
}
.goodsPopup .color-list li.selected{
color: #fff;
background: @b333;
}
.goodsPopup .buy-number{
display: flex;
justify-content: space-between;
margin-top: .2rem;
}
.goodsPopup .buy-number span:first-child{
color: @grayfont;
font-size: @m-font;
}
.goodsPopup .confirm{
position: absolute;
bottom: 0;
width: 100%;
.h-l(.8rem);
text-align: center;
color: #fff;
font-size: @m-font;
background: @system-color;
}
//更多评价页面
.comment-list .goods-comment{
margin-bottom: 0;
}
.comment-list .goods-comment .item{
padding-bottom: .2rem;
border-bottom: 1px solid @border-color;
}
.comment-list .goods-comment .item:last-child{
border: none;
}
/*公用*/
.hide{display:none}
.main{
padding-bottom:0.88rem;
}
/*页面布局*/
.zj-main{
position: relative;
}
.zj-main-mid{
.content-pos(0.88rem,0.88rem);
}
.zj-bottom{
position: absolute;
bottom:0px;
height:0.88rem;
left:0px;
width:100%;
}
.zj-bottom-btn{
width:100%;
height:100%;
border:0px;
border-radius: 0px;
background: @system-color;
color:#fff;
font-size:@m-font;
}
.zj-bottom-btn:active{
.active(@system-color)
}
/*广告轮播标题*/
.component-swipe-title{
position: absolute;
bottom:0px;
height:0.6rem;
line-height:0.6rem;
background:rgba(0,0,0,0.5);
color:#fff;
padding-left:10px;
padding-right:20%;
width:100%;
.text-overflow(1);
}
/*广告轮播*/
.mint-swipe-item{
background-size: cover;
}
/*广告分开显示*/
.component-noswipeitem{
width:100%;
height:4.2rem;
position: relative;
margin-top:@jiange;
background-size: cover;
}
.component-noswipeitem:first-child{
margin-top:0px;
}
/*商品大图*/
.component-bigpic-li{
margin-top:@jiange;
background: #ccc;
position: relative;
text-align: center;
}
.component-bigpic-li img{
width:100%
}
/*商品大图卡片样式*/
.component-bigpic-txt{
font-size:@m-font;
padding:0.2rem;
line-height:0.44rem;
background: #fff;
text-align: left;
}
.component-bigpic-txt .goods-name{
color:@grayfont;
.text-overflow(2);
}
.component-bigpic-txt .goods-Price{
color:@system-color;
font-weight:bold;
}
.component-bigpic-txt p:first-child{
margin-bottom:0.2rem;
}
.component-bigpic-txt p:last-child{
margin-bottom:0;
}
/*商品大图极简样式*/
.component-bigpic-Minitxt{
position: absolute;
bottom:0;
width:100%;
padding:0.1rem;
background: rgba(0,0,0,0.5);
color:#fff !important;
left:0;
font-size:@m-font;
text-align: left;
}
.component-bigpic-Minitxt .goods-name{
.text-overflow(1);
}
.component-bigpic-Minitxt .goods-Price{
text-align: right;
font-weight:bold;
}
/*商品小图*/
.goods-small-ul{
background: #fff;
padding:0 0 0.2rem 0;
margin-top:@jiange;
}
.component-smallpic-li{
width:~'calc(50% - 0.35rem)';
display: inline-block;
margin-left:0.2rem;
position: relative;
margin-top:0.3rem;
background: #ccc;
text-align: center;
}
.component-smallpic-li img{
width:100%;
box-shadow: 2px 2px 2px #ccc;
}
/*商品小图卡片样式*/
.component-smallpic-txt{
font-size:@s-font;
padding:0.2rem;
line-height:0.36rem;
background:#fff;
text-align: left;
}
.component-smallpic-txt .goods-name{
color:@grayfont;
.text-overflow(2);
}
.component-smallpic-txt .goods-Price{
color:@system-color;
font-weight:bold;
}
.component-smallpic-txt p:first-child{
margin-bottom:0.2rem;
}
.component-smallpic-txt p:last-child{
margin-bottom:0;
}
/*商品小图极简样式*/
.component-smallpic-Minitxt{
position: absolute;
bottom:0;
width:100%;
padding:0.1rem;
background: rgba(0,0,0,0.5);
color:#fff !important;
left:0;
font-size:@s-font;
text-align: left;
}
.component-smallpic-Minitxt .goods-name{
.text-overflow(1);
}
.component-smallpic-Minitxt .goods-Price{
text-align: right;
font-weight:bold;
}
/*商品详细列表*/
.goods-piclist-ul{
background: #fff;
padding:0 0.2rem;
margin-top:@jiange;
}
.goods-piclist-ul .component-piclist-li:last-child{
border-bottom:0;
}
.component-piclist-li{
border-bottom:1px solid @border-color;
padding:0.2rem 0;
}
.component-piclist-li:active{
.active(#fff);
}
.component-piclist-li img{
width:1.5rem;
height:1.5rem;
display:inline-block;
}
.component-piclist-txt{
display:inline-block;
margin-left:0.2rem;
width:~'calc(100% - 1.9rem)';
height:1.5rem;
position: relative;
font-size:@s-font;
}
.component-piclist-txt .goods-name{
color:@grayfont;
.text-overflow(2);
position: absolute;
top:0px;
}
.component-piclist-txt .goods-Specifications{
color:#999;
font-size:@s-font*0.9;
position: absolute;
top:0.78rem;
}
.component-piclist-txt .goods-Price{
color:@system-color;
font-weight:bold;
position: absolute;
bottom:0px;
width:100%;
}
.component-piclist-txt .goods-Price .goods-num{
float:right;
font-size:@s-font*0.9;
color:#999;
font-weight:300;
}
/*标题组件*/
.component-title{
background: #fff;
padding:0.2rem;
margin-top:@jiange;
}
.component-title .main-title{
font-size:@m-font;
font-weight:bold;
}
.component-title .second-title{
font-size:@s-font;
color:#999;
padding-left:5px;
}
.component-title.component-color-title .main-title,.component-title.component-color-title .second-title{
color:#fff;
}
/*文本导航*/
.component-text-nav{
background: #fff;
font-size:@m-font;
color:@grayfont;
text-align: center;
padding:0.1rem;
margin-top:@jiange;
}
.component-text-nav img{
width:0.3rem;
vertical-align: middle;
margin-left:5px;
}
.component-text-nav:active{
.active(#fff);
}
/*图片导航*/
.component-picNav-table{
background: #fff;
padding:0.1rem;
margin-top:@jiange;
display: table;
width:100%;
}
.component-picNav-tablecell{
display:table-cell;
padding:0.1rem;
text-align: center;
color:@grayfont;
line-height:0.6rem;
font-weight:bold;
}
.component-picNav-tablecell:active{
.active(#fff);
}
/*商品搜索*/
.mint-search{
height:auto !important;
}
.mint-searchbar-core{
width:100%;
}
.component-search{
height:1rem;
padding:0.2rem 0.2rem 0 0.2rem;
}
.component-search button{
background: #fff;
border:1px solid #ddd;
height:100%;
width:100%;
color:@grayfont;
text-align: left;
padding-left:5px;
font-size:@s-font
}
.component-search button:before{
content: "\E604";
}
/*辅助线*/
.component-Guide{
width:100%;
height:1px;
border-bottom:1px solid @border-color
}
/*辅助空白*/
.component-blank{
width:100%;
}
/*富文本*/
.component-Rich-text{
margin-top:@jiange;
padding:0.2rem;
}
/*公告通知*/
.component-notice{
background: #fff;
margin-top:@jiange;
padding:0.2rem;
padding-left:1.6rem;
position: relative;
min-height:0.8rem;
}
.component-notice .notice-title{
position: absolute;
top:0.2rem;
color:@system-color;
left:0.2rem;
}
.component-notice .notice-title img{
width:0.4rem;
margin-right:5px;
vertical-align: middle;
}
.component-notice .notice-con{
color:@grayfont;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
}
.component-notice-main .mint-popup{
background: none;
width:90vw;
height:95vh;
color:#fff;
}
.component-notice-main .notice-popup-con{
height:85vh;
overflow: auto;
line-height:22px;
}
.component-notice-main .notice-popup-con h1{
text-align: center;
margin-bottom:10px;
font-size:@m-font
}
.component-notice-main .notice-popup-btn{
height:10vh;
text-align: center;
padding-top:10px;
}
.component-notice-main .v-modal{
opacity: .9;
}
/*首页优惠券*/
.index-coupon-item{
margin-top:@jiange;
padding:0 0.2rem;
color:#fff;
.clearfix;
}
.index-coupon-item .coupon-left{
border-radius: 8px;
height:2rem;
padding:0.1rem 0.3rem;
border-right:1px dashed #fff;
float:left;
width:70%;
color:@grayfont;
background: #fff;
}
.index-coupon-item .coupon-type{
height:1rem;
margin-top:-0.1rem;
}
.index-coupon-item .coupon-left .coupon-name span{
padding:0 0.1rem;
border-radius: 3px;
border:1px solid;
margin-right:5px;
display:inline-block;
}
.index-coupon-item .coupon-type .coupon-type-left{
font-size:0.9rem;
display:inline-block;
}
.index-coupon-item .coupon-type .coupon-type-right{
display:inline-block;
}
.index-coupon-item .coupon-type .coupon-type-right .type-up{
padding:0 0.1rem;
color:@system-color;
border:1px solid @system-color;
border-radius: 3px;
}
.index-coupon-item .coupon-type .coupon-type-right .type-down{
}
.index-coupon-item .coupon-right{
border-radius: 8px;
height:2rem;
padding:0.1rem;
border-left:1px dashed #fff;
float:left;
width:30%;
text-align: center;
}
.index-coupon-item .coupon-name{
line-height:0.36rem;
margin-top:0.15rem;
.text-overflow(1);
}
.index-coupon-item .coupon-time{
line-height:0.36rem;
.text-overflow(1);
}
.index-coupon-item .coupon-num{
font-size:@b-font;
}
.index-coupon-item .coupon-jg-type{
}
.index-coupon-item .coupon-btn{
border-radius: 3px;
border:1px solid #fff;
display:inline-block;
padding:2px 5px;
margin-top:5px;
}
/*优惠券中心导航*/
.coupon-center{
margin-top:@jiange;
background:url(../images/coupon-center.png) no-repeat @system-color center center;
background-size: cover;
height:1rem;
}
/*我的地址页面*/
.addressitem-div{
background: #fff;
padding:0 0.2rem;
margin-top:@jiange;
}
.addressitem-div:first-child{
margin-top:0px;
}
.addressitem-div.selected{
margin-top:0px;
border-top:1px solid #eee;
}
.addressitem-div.selected:first-child{
border-top:0px
}
.addressitem-div .address-top,.address-mid{
line-height:0.5rem;
color:@grayfont;
position: relative;
}
.addressitem-div .address-top{
padding-top:0.1rem;
}
.addressitem-div .address-mid{
padding-bottom:0.1rem;
color:#999;
}
.addressitem-div .address-mid b{
color:@system-color
}
.addressitem-div .address-bottom{
border-top:1px solid #eee;
color:#999;
font-size:@s-font*1.1;
padding:0.2rem 0;
position: relative;
padding-right:1.8rem;
}
.address-top .name{
.text-overflow(1);
width:~'calc(100% - 1.2rem)';
}
.address-top .phone{
position: absolute;
right:0;
top:0.1rem;
}
.address-bottom .mint-radiolist-label{
padding:0px;
}
.mint-radio-label.colorpurple{
color:@system-color;
}
.address-bottom .address-btn{
position: absolute;
right:0px;
top:0.18rem;
}
.address-bottom .address-btn span{
display:inline-block;
width:0.6rem;
text-align: center;
}
.address-bottom .address-btn span img{
width:70%
}
/*编辑/新增地址*/
.addAddress-edit-main{
}
.addAddress-edit-main .block{
background: #fff;
font-size:@m-font;
}
.addAddress-edit-main .mint-cell-wrapper{
font-size:@m-font;
}
.block.defaultaddAddress{
margin-top:@jiange
}
.addAddress-textarea{
width:100%;
border:0px;
height:2rem;
padding:0.2rem;
resize: none
}
.block.defaultaddAddress{
min-height:48px;
line-height:48px;
}
.addAddress-edit-main .picker-toolbar{
border-bottom:1px solid #eee;
font-size:@m-font;
display: table;
width:100%;
}
.addAddress-edit-main .picker-items{
background: #f8f8f8;
}
.addAddress-edit-main .picker-toolbar span{
display:table-cell;
text-align: center;
border-left:1px solid #eee;
vertical-align: middle;
color:@system-color;
}
.addAddress-edit-bottom{
position: absolute;
bottom:0px;
width:100%;
}
.zj-bottom-btn.addAddress-edit-btn{
height:0.88rem;
}
.zj-bottom-btn.addAddress-edit-btn.del{
background:#c9c9c9;
margin-bottom:0.1rem;
}
.zj-bottom-btn.addAddress-edit-btn.del:active{
.active(#c9c9c9);
}
.addAddress-edit-main .mint-cell-value{
max-width:60%;
.text-overflow(1);
}
/*我的订单*/
.orderlist-loadmore{
.content-pos(1.68rem,0)
}
.page-loadmore-listitem{
height:30px;
}
.order-item-li{
padding:0 0.2rem;
margin-top:@jiange;
background: #fff;
}
.order-item-li .top,.order-item-li .order-count{
border-bottom:1px solid #eee;
height:0.6rem;
line-height:0.6rem;
font-size:@s-font*0.9;
}
.order-item-li .order-count{
color:#999;
text-align: right;
border-bottom:0px;
}
.order-item-li .top .left{
float:left;
color:@grayfont;
}
.order-item-li .top .right{
float:right;
color:@system-color;
}
.order-item-li .top .right.red{
color:#ff0000;
}
.order-item-li .bottom{
border-top:1px solid #eee;
padding:0.1rem 0;
text-align: right;
}
.order-item-li .bottom button{
width:1.8rem
}
.order-item-li .returnGoodsStatus{
text-align: right;
color:#ff0000;
}
.loadmore-end{
color:@grayfont;
text-align: center;
line-height:0.8rem;
}
/*订单详情*/
.orderDetail-mid{
.content-pos(0.88rem,0.88rem);
}
.orderDetail-no,.order-address,.order-Goods,.order-paytyper,.order-money{
padding:0.2rem;
background: #fff;
color:@grayfont
}
.orderDetail-no .top{
height:0.5rem;
line-height:0.5rem;
border-bottom:1px solid #eee;
}
.orderDetail-no .top span{
float:right;
color:@system-color;
}
.orderDetail-no .bottom{
padding-left:1.2rem;
padding-right:0.6rem;
padding-top:0.2rem;
position: relative;
}
.orderDetail-no .bottom span{
position: absolute;
top:0.2rem;
}
.orderDetail-no .bottom span:first-child{
left:0;
}
.orderDetail-no .bottom span:last-child{
top:0.5rem;
right:0;
}
.orderDetail-no .bottom span .mint-cell-allow-right:after{
width:12px;
height:12px;
right:0.2rem;
}
.orderDetail-no .bottom p{
color:#999;
line-height:0.4rem;
}
.order-address{
margin-top:@jiange;
}
.order-address-item{
display: table;
width:100%;
}
.order-address-item span{
display:table-cell;
vertical-align: middle;
}
.order-address-item span.left{
width:0.8rem;
text-align: center;
}
.order-address-item span.mid{
padding:0 0.4rem;
}
.order-address-item span.mid .top{
position: relative;
}
.order-address-item span.mid .top span{
position: absolute;
right:0px;
top:0px;
}
.order-address-item span.mid .bot{
padding-top:10px;
}
.order-address-item span.left img{
width:60%;
}
.order-address-item span.right{
width:0.5rem;
position: relative;
}
.order-address-item span.right i:after{
right:10px;
width:10px;
height:10px;
}
.order-Goods{
margin-top:@jiange;
padding-bottom:0px;
}
.order-Goods .top{
border-bottom:1px solid #eee;
height:0.6rem;
line-height:0.6rem;
}
.order-Goods .order-goods-li{
border-bottom:1px solid #eee;
padding-bottom:0.2rem;
}
.order-Goods .order-goods-li:last-child{
border-bottom:0px;
}
.order-Goods .component-piclist-li{
border:0px;
}
.order-returnGoodsStatus{
text-align: right;
padding-top:5px;
}
.order-paytyper{
margin-top:@jiange;
}
.order-cell-p{
position: relative;
line-height:0.6rem;
}
.order-cell-p > span{
position: absolute;
right:0rem;
dispaly:inline-block;
}
.order-money{
padding:0 0.2px;
margin-top:@jiange;
}
.order-money .typer{
padding:0.2rem;
border-bottom:1px solid #eee;
}
.order-money .count{
padding:0.2rem;
position: relative;
text-align: right;
}
.order-money .count .bigfont{
color:@system-color;
font-size:@m-font;
}
.order-money .count .smallfont{
line-height:0.6rem;
}
.orderDetail-bottom{
position: absolute;
height:0.88rem;
left:0px;
bottom:0px;
width:100%;
background: #fff;
padding-top:0.1rem;
text-align: right;
padding-right:0.2rem;
}
.orderDetail-bottom button{
width:1.8rem;
}
/*申请退货*/
.returnGood-div{
background: #fff;
padding:0 0.2rem;
}
.returnGood-mid-div{
margin-top:@jiange
}
.returnGood-mid-div .mint-cell-wrapper{
font-size:@m-font
}
.returnGood-mid-div .mint-cell::before,.mint-cell::after{
border:0px;
}
.returnGood-ps{
color:#ccc;
line-height:0.6rem;
}
/*退货详情*/
.returnGoodsDetail-main{
background: #fff;
padding:0 0.2rem;
}
.returnGoodsDetail-block{
border-bottom:1px solid #eee;
padding:0.2rem 0;
color:@grayfont;
}
.returnGoodsDetail-block:last-child{
border-bottom:0;
}
.bigfont{
font-size:@m-font;
}
.returnGoodsDetail-block .bigfont.left{
margin-bottom:0.2rem;
margin-left:-1.5rem;
}
.returnGoodsDetail-block > div{
position: relative;
padding-left:1.5rem;
line-height:0.5rem;
}
.returnGoodsDetail-block>div label{
position: absolute;
left:0px;
top:0px;
}
.returnGoodsDetail-block>div p{
padding-top:0.05rem;
line-height:0.4rem;
}
.returnGoodsDetail-edit{
margin-top:@jiange;
background: #fff;
padding:0 0.2rem;
}
.returnGoodsDetail-edit > div{
padding-top:0.2rem;
}
.purple{
color:@system-color
}
.returnGoodsDetail-edit .mint-cell:last-child:before{
color:#fff;
}
/*物流跟踪*/
.ems-top{
background: #fff;
padding:0.2rem;
}
.ems-mid{
margin-top:@jiange;
background: #fff;
.content-pos(1.88rem,0);
padding:0.4rem 0.2rem;
}
.ems-tab .line{
border-right:1px solid #eee;
width:0.4rem;
position: relative;
vertical-align: top;
}
.ems-tr:last-child .line{
border:0px;
}
.ems-tr .line span{
border-radius: 50%;
width:8px;
height:8px;
background: #ccc;
display:block;
position: absolute;
left: 0.329rem;
}
.ems-tr:first-child .line span{
width:11px;
height:11px;
background: @system-color;
left: 0.3rem;
}
.ems-tab .con{
padding:0 0.3rem 0.5rem 0.3rem;
}
.ems-tab .con-p{
color:#999;
}
.ems-tr:first-child .con-p{
color:#333;
}
/*发表评价*/
.evaluate-mid{
.content-pos(0.88rem,0);
}
.evaluate-item{
padding:0 0.2rem;
background: #fff;
margin-top:@jiange;
}
.evaluate-item:first-child{
margin-top:0px;
}
.evaluate-item .component-piclist-li{
border:0px;
}
.evaluate-item .component-piclist-li:active{
background: #fff;
}
.evaluate-item .mint-cell::after,.evaluate-item .mint-cell::before{
color:#fff;
}
.evaluate-item .mint-cell-wrapper{
padding:0px;
}
/*确认订单*/
.zj-count-mid{
.content-pos(0.88rem,0.88rem)
}
.zj-count-mid .order-money .order-cell-p .right{
padding-right:0.4rem;
}
.zj-count-mid .order-money .order-cell-p .right .mint-cell-allow-right::after{
right:0px;
}
.count-bottom{
background: #fff;
height:0.88rem;
position: absolute;
width:100%;
left:0px;
bottom:0px;
}
.count-bottom .right{
float:right;
}
.count-bottom .right p{
text-align: right;
color:#999;
}
.count-bottom .right .bigfont{
color:@system-color
}
.count-bottom .right button{
background: @system-color;
border:0px;
padding:0 20px;
height:0.88rem;
color:#fff;
}
.zj-count-mid .mint-actionsheet-list{
max-height:40vh;
overflow: auto;
}
.zj-count-mid .mint-actionsheet .mint-actionsheet-listitem{
text-align: left;
padding-left:0.2rem;
.clamp1;
}
.unactive-goods-li .component-piclist-li:active{
background:#fff ;
}
/*结算订单*/
.zj-pay-mid{
.content-pos(0.88rem,0)
}
.zj-pay-mid .pay-top{
background: #fff;
padding:0.2rem;
display: table;
width:100%;
}
.zj-pay-mid .pay-top .cell{
display:table-cell;
vertical-align: middle;
}
.zj-pay-mid .pay-top .cell.left{
width:1.5rem;
height:1.5rem;
}
.zj-pay-mid .pay-top .cell.right{
padding-left:0.2rem;
}
.zj-pay-mid .pay-top .cell.left img{
width:100%;
}
.zj-pay-mid .pay-top .cell.right p{
color:@grayfont;
line-height:0.4rem;
}
.zj-pay-mid .pay-top .cell.right p:last-child{
padding-top:10px;
}
.zj-pay-mid .pay-top .cell.right .samllerfont{
font-size:@s-font*0.9;
color:#999;
}
.zj-pay-mid .pay-mid{
background: #fff;
padding:0.2rem;
margin-top:@jiange
}
.zj-pay-mid .pay-bot{
background: #fff;
padding:0 0.2rem;
margin-top:@jiange
}
.pay-bot .typer{
padding:0.2rem 0;
}
.pay-bot .typer .order-cell-p{
border-bottom:1px solid #eee;
}
.pay-bot .typer .order-cell-p:first-child{
padding-bottom:0.1rem;
}
.pay-bot .typer .order-cell-p:last-child{
border:0px;
padding-top:0.1rem;
padding-bottom:0px;
}
.pay-button{
padding:0.2rem;
}
.system-btn{
background: @system-color;
color:#fff;
}
/*支付成功/失败*/
.fail-main{
text-align: center;
padding:1.5rem 0
}
.fail-typer{
margin:0 auto;
width:1.5rem;
height:1.5rem;
border-radius: 50%;
line-height:1.5rem;
background: #ff0000;
}
.fail-typer.cg{
background: @system-color;
}
.fail-text{
padding-top:15px;
}
.fail-btn{
width:80%;
margin:1rem auto;
text-align: center;
}
/*搜索页*/
.search-top{
position: absolute;
width:100%;
top:0px;
height:0.88rem;
}
.search-leftbtn{
float:left;
background: #d9d9d9;
width:20px;
height:44px;
position: fixed;
z-index: 1;
}
.search-leftbtn:before{
content: "\E600";
font-size:@b-font*0.9;
margin-left:5px;
line-height:44px;
}
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M1024 862.874791C1024 968.656372 766.428279 1024 512 1024 257.571721 1024 0 968.656372 0 862.874791 0 769.000186 198.394047 729.87386 283.719442 717.395349 296.364651 715.609302 308.152558 724.539535 309.962419 737.446698 311.796093 750.377674 302.98493 762.356093 290.292093 764.213581 112.616186 790.170791 46.413395 838.513116 46.413395 862.874791 46.413395 909.288186 227.780465 976.729302 512 976.729302 796.219535 976.729302 977.586605 909.288186 977.586605 862.874791 977.586605 838.322605 910.740837 789.718326 731.350326 763.880186 718.657488 762.046512 709.822512 750.068093 711.608558 737.16093 713.418419 724.229953 725.206326 715.323535 737.827721 717.061953 823.867535 729.469023 1024 768.476279 1024 862.874791L1024 862.874791ZM413.81507 301.246512C413.81507 246.093395 457.84707 201.227907 511.976186 201.227907 566.129116 201.227907 610.18493 246.093395 610.18493 301.246512 610.18493 356.399628 566.129116 401.28893 511.976186 401.28893 457.84707 401.28893 413.81507 356.399628 413.81507 301.246512L413.81507 301.246512ZM656.598326 301.246512C656.598326 220.017116 591.729116 153.933395 511.976186 153.933395 432.270884 153.933395 367.425488 220.017116 367.425488 301.246512 367.425488 382.475907 432.270884 448.559628 511.976186 448.559628 591.729116 448.559628 656.598326 382.475907 656.598326 301.246512L656.598326 301.246512ZM512 47.270698C654.764651 47.270698 770.929116 165.626047 770.929116 311.105488 770.929116 512.666791 570.391814 739.137488 511.809488 800.982326 453.060465 740.256744 253.070884 518.286884 253.070884 311.105488 253.070884 165.626047 369.211535 47.270698 512 47.270698L512 47.270698ZM496.139907 851.634605 512.190512 866.899349 528.050605 851.444093C539.862326 839.91814 817.342512 566.200558 817.342512 311.105488 817.342512 139.549767 680.364651 0 512 0 343.635349 0 206.657488 139.549767 206.657488 311.105488 206.657488 573.082791 484.328186 840.394419 496.139907 851.658419L496.139907 851.634605Z" fill="#333"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="42px" height="42px" viewBox="0 0 42 42" enable-background="new 0 0 42 42" xml:space="preserve">
<g>
<g transform="scale(0.041015625, 0.041015625)">
<path fill="#AAAAAA" d="M1023.991,862.873c0,105.785-257.569,161.118-511.995,161.118S0,968.658,0,862.873
c0-93.88,198.391-133.023,283.712-145.499c12.655-1.762,24.44,7.143,26.25,20.071c1.833,12.928-6.976,24.905-19.667,26.762
c-177.677,25.952-243.879,74.309-243.879,98.666c0,46.404,181.367,113.832,465.579,113.832s465.567-67.428,465.567-113.832
c0-24.547-66.833-73.166-246.236-98.999c-12.667-1.833-21.524-13.809-19.714-26.714c1.81-12.928,13.571-21.833,26.214-20.119
C823.85,729.469,1023.991,768.469,1023.991,862.873L1023.991,862.873z M413.806,301.247c0-55.154,44.035-100.023,98.166-100.023
c54.166,0,98.213,44.869,98.213,100.023s-44.047,100.035-98.213,100.035C457.841,401.282,413.806,356.401,413.806,301.247
L413.806,301.247z M656.589,301.247c0-81.237-64.88-147.32-144.618-147.32c-79.702,0-144.546,66.083-144.546,147.32
c0,81.225,64.845,147.308,144.546,147.308C591.709,448.555,656.589,382.473,656.589,301.247L656.589,301.247z M511.995,47.273
c142.761,0,258.926,118.356,258.926,263.831c0,201.558-200.546,428.032-259.117,489.865
c-58.749-60.714-258.736-282.688-258.736-489.865C253.069,165.629,369.211,47.273,511.995,47.273L511.995,47.273z
M496.138,851.611l16.047,15.286l15.857-15.476c11.809-11.524,289.283-285.236,289.283-540.317
C817.326,139.546,680.375,0,511.995,0C343.628,0,206.653,139.546,206.653,311.104c0,261.986,277.676,529.269,289.485,540.555
V851.611z"/>
</g>
</g>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="28" height="28" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.02734375, 0.02734375)"><path d="M767.707334 519.450692 308.065819 71.476915 256.054235 122.209366 663.627884 519.419993 256.085958 916.629597 308.060703 967.363072Z" fill="#666"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M773.128299 807.347658M401.291572 760.562099c-45.177945 0-82.008782 36.72032-82.008782 82.008782 0 45.288462 36.830837 82.008782 82.008782 82.008782 45.176922 0 81.897242-36.72032 81.897242-82.008782C483.188814 797.282419 446.468494 760.562099 401.291572 760.562099zM401.291572 885.188514c-23.479761 0-42.507116-19.027355-42.507116-42.507116 0-23.478737 19.027355-42.506093 42.507116-42.506093 23.367197 0 42.394552 19.027355 42.394552 42.506093C443.686125 866.161159 424.658769 885.188514 401.291572 885.188514zM945.975972 210.31296c-14.021342-20.919449-39.391149-24.146956-42.284035-24.480554-0.778736-0.110517-1.446955-0.110517-2.114151-0.110517L251.306606 185.721889c2.193968 11.383258 4.706185 24.656563 7.460925 39.390125l641.141242 0c3.227508 0.668219 10.125615 2.670829 13.019525 7.122211 2.78237 4.339842 1.557472 11.350512 0 16.58063-13.019525 44.175105-60.644195 221.768873-62.759369 229.668797-0.223081 1.224898-7.343245 28.597315-42.507116 28.597315L309.959447 507.080967c2.442632 13.646811 4.800329 26.838252 7.043417 39.391149l490.771513 0c52.632731 0 75.888388-38.389332 80.896448-58.084906 0.556679-1.892093 49.405223-184.491875 62.423725-228.222865C958.216761 235.906871 952.206884 219.660862 945.975972 210.31296zM309.959447 507.080967c-16.60519-92.774987-37.07643-206.472492-51.191916-281.96793l-7.460925-39.390125c-3.527336-18.298761-6.235005-31.709189-7.80271-38.389332-14.465456-55.970756-49.850361-60.310597-60.309574-60.310597l-99.813287 0c-10.904351 0-19.695574 8.791224-19.695574 19.695574s8.7902 19.806091 19.695574 19.806091l99.813287 0c6.78759 0 16.244986 8.011464 21.920242 30.266327 6.565533 28.04166 36.053124 189.498912 87.795579 479.923444l5.007037 27.595498c2.892887 15.690354 14.799054 41.950438 62.646805 41.950438l504.738619 0c10.904351 0 19.806091-8.791224 19.806091-19.806091 0-10.904351-8.791224-19.695574-19.695574-19.695574L360.565009 666.75869c-22.031782 0-23.367197-7.009647-23.812335-9.568936l-4.89652-27.484981c-3.710508-20.790512-8.868995-49.731658-14.853289-83.232656L309.959447 507.080967zM769.272481 760.562099c-45.176922 0-82.007759 36.72032-82.007759 82.008782 0 45.288462 36.830837 82.008782 82.007759 82.008782 45.177945 0 82.008782-36.72032 82.008782-82.008782C851.281263 797.282419 814.450427 760.562099 769.272481 760.562099zM769.272481 885.188514c-23.478737 0-42.506093-19.027355-42.506093-42.507116 0-23.478737 19.137873-42.506093 42.506093-42.506093s42.507116 19.027355 42.507116 42.506093C811.779597 866.161159 792.640702 885.188514 769.272481 885.188514z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
This diff could not be displayed because it is too large.
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="64" height="64" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0625, 0.0625)"><path d="M804.960797 173.503613c-11.93789-11.938913-31.475875-11.938913-43.415812 0l-227.840148 227.839125c-11.93789 11.939937-31.474852 11.939937-43.413765 0l-227.839125-227.839125c-11.938913-11.938913-31.475875-11.938913-43.414789 0l-45.534056 45.535079c-11.938913 11.938913-11.938913 31.475875 0 43.414789l227.840148 227.839125c11.938913 11.938913 11.938913 31.475875 0 43.414789l-227.840148 227.839125c-11.938913 11.93789-11.938913 31.475875 0 43.414789l45.534056 45.535079c11.938913 11.938913 31.475875 11.938913 43.414789 0l227.840148-227.839125c11.938913-11.938913 31.475875-11.938913 43.414789 0l227.840148 227.839125c11.938913 11.938913 31.475875 11.938913 43.415812 0l45.533033-45.533033c11.938913-11.938913 11.938913-31.476899 0-43.414789l-227.839125-227.841172c-11.939937-11.938913-11.939937-31.476899 0-43.414789l227.839125-227.839125c11.938913-11.938913 11.938913-31.475875 0-43.414789L804.960797 173.503613z" fill="#ffffff"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="64" height="64" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0625, 0.0625)"><path d="M512 2.580645C238.351337 2.580645 16.516129 224.415843 16.516129 498.064516 16.516129 771.713179 238.351337 993.548387 512 993.548387 785.648663 993.548387 1007.483871 771.713179 1007.483871 498.064516 1007.483871 224.415843 785.648663 2.580645 512 2.580645L512 2.580645 512 2.580645ZM512.000003 908.608297C285.647948 908.608297 101.456225 723.689525 101.456225 497.595854 101.456225 271.502204 285.647948 87.520751 512.000003 87.520751 738.352059 87.520751 922.543781 271.502204 922.543781 497.595854 922.543781 723.689525 738.352059 908.608297 512.000003 908.608297L512.000003 908.608297 512.000003 908.608297ZM688.735922 321.330804C676.639661 309.232343 657.04303 309.232343 644.944549 321.330804L512.00111 454.273156 379.05878 321.330804C366.96252 309.232343 347.364778 309.232343 335.267407 321.330804 323.17115 333.427084 323.17115 353.024826 335.267407 365.122197L468.20974 498.064516 335.267407 631.006846C323.17115 643.106436 323.17115 662.701958 335.267407 674.797109 341.317203 680.848014 349.239316 683.870135 357.162539 683.870135 365.086872 683.870135 373.010095 680.848014 379.057671 674.797109L512 541.853663 644.943439 674.797109C650.992125 680.848014 658.916458 683.870135 666.839681 683.870135 674.764014 683.870135 682.686127 680.848014 688.734812 674.797109 700.83218 662.701958 700.83218 643.105326 688.734812 631.006846L555.79026 498.064516 688.733703 365.122197C700.82996 353.024826 700.82996 333.428174 688.733703 321.330804L688.735922 321.330804Z" fill="#ffffff"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M991.744 374.784c0-153.088-124.416-278.016-276.992-278.016-76.288 0-147.456 30.72-198.656 84.48-51.712-53.76-122.88-84.48-198.656-84.48-152.576 0-276.992 124.928-276.992 278.016 0 71.168 26.624 138.24 75.264 189.952 1.024 1.024 1.536 2.048 2.56 3.072l2.56 2.56 1.536 1.536 350.72 336.896c11.264 11.264 26.624 17.408 43.008 17.408s32.256-6.656 44.032-17.92c11.264-10.24 287.232-273.408 350.72-336.384l1.024-1.024-0.512 0.512 2.56-2.56c50.176-52.224 77.824-121.344 77.824-194.048z m-673.792-138.24c-78.336 0-141.824 64-141.824 142.336 0 11.776-9.728 21.504-21.504 21.504-11.776 0-21.504-9.728-21.504-21.504 0-101.888 82.944-184.832 184.32-184.832 11.776 0 21.504 9.728 21.504 21.504 0 11.264-9.216 20.992-20.992 20.992z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M1002.191 374.594c0-153.243-124.312-277.936-277.103-277.936-76.229 0-147.271 30.739-198.876 84.342-51.581-53.389-122.528-84.033-198.59-84.033-152.791 0-277.103 124.693-277.103 277.936 0 70.971 26.647 138.373 75.087 190.12 0.833 1.023 1.737 1.999 2.688 2.95l2.784 2.784 1.332 1.356 350.644 336.678c11.111 11.111 26.671 17.558 43.182 17.558 16.535 0 32.095-6.448 43.801-18.129 11.016-10.468 287.334-273.32 350.501-336.535 0.357-0.357 0.714-0.714 1.071-1.071l-0.476 0.428c0.809-0.785 1.594-1.594 2.379-2.427 50.748-52.199 78.68-121.029 78.68-194.022zM891.963 539.876c0 0 0 0 0 0-0.309 0.333-0.666 0.714-0.975 1.023-0.024 0.024-0.048 0.024-0.071 0.048-62.454 62.62-350.929 337.011-350.929 337.011-3.807 3.783-8.779 5.686-13.752 5.686-4.972 0-9.945-1.903-13.752-5.686l-349.978-336.036c-0.476-0.476-0.928-0.952-1.404-1.404l-2.784-2.784c0 0 0.071-0.024 0.095-0.024-40.422-42.278-65.332-99.593-65.332-162.784 0-129.903 105.017-235.23 234.54-235.23 83.723 0 157.145 44.015 198.638 110.204 41.469-66.355 115.010-110.513 198.828-110.513 129.523 0 234.516 105.326 234.516 235.23 0.024 64.404-25.814 122.766-67.64 165.258zM328.026 193.824c-101.686 0-184.434 82.986-184.434 184.981 0 11.777 9.541 21.341 21.294 21.341 11.753 0 21.294-9.564 21.294-21.341 0-78.465 63.619-142.275 141.847-142.275 11.753 0 21.294-9.564 21.294-21.341s-9.541-21.365-21.294-21.365z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M1002.191 374.594c0-153.243-124.312-277.936-277.103-277.936-76.229 0-147.271 30.739-198.876 84.342-51.581-53.389-122.528-84.033-198.59-84.033-152.791 0-277.103 124.693-277.103 277.936 0 70.971 26.647 138.373 75.087 190.12 0.833 1.023 1.737 1.999 2.688 2.95l2.784 2.784 1.332 1.356 350.644 336.678c11.111 11.111 26.671 17.558 43.182 17.558 16.535 0 32.095-6.448 43.801-18.129 11.016-10.468 287.334-273.32 350.501-336.535 0.357-0.357 0.714-0.714 1.071-1.071l-0.476 0.428c0.809-0.785 1.594-1.594 2.379-2.427 50.748-52.199 78.68-121.029 78.68-194.022zM891.963 539.876c0 0 0 0 0 0-0.309 0.333-0.666 0.714-0.975 1.023-0.024 0.024-0.048 0.024-0.071 0.048-62.454 62.62-350.929 337.011-350.929 337.011-3.807 3.783-8.779 5.686-13.752 5.686-4.972 0-9.945-1.903-13.752-5.686l-349.978-336.036c-0.476-0.476-0.928-0.952-1.404-1.404l-2.784-2.784c0 0 0.071-0.024 0.095-0.024-40.422-42.278-65.332-99.593-65.332-162.784 0-129.903 105.017-235.23 234.54-235.23 83.723 0 157.145 44.015 198.638 110.204 41.469-66.355 115.010-110.513 198.828-110.513 129.523 0 234.516 105.326 234.516 235.23 0.024 64.404-25.814 122.766-67.64 165.258zM328.026 193.824c-101.686 0-184.434 82.986-184.434 184.981 0 11.777 9.541 21.341 21.294 21.341 11.753 0 21.294-9.564 21.294-21.341 0-78.465 63.619-142.275 141.847-142.275 11.753 0 21.294-9.564 21.294-21.341s-9.541-21.365-21.294-21.365z" fill="#333"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M910.86761 66.143935c-37.181964 0-361.169647 19.264981-361.169647 19.264981s-0.017-0.001-0.05-0.001c-0.247-0.005-0.495-0.007-0.742999-0.007-1.568998 0-3.136997 0.092-4.697995 0.276-5.692994 0.573999-14.501986 2.343998-19.902981 7.745992l0.153 0.319c-1.329999 1.029999-2.615997 2.143998-3.836996 3.364997L11.716489 605.010409c-15.620985 15.620985-15.620985 40.94796 0 56.568945l350.704658 350.704658c7.809992 7.809992 18.046982 11.715989 28.283972 11.715989s20.47398-3.904996 28.283972-11.715989l505.904506-505.904506c1.224999-1.224999 2.341998-2.514998 3.373997-3.848996l0.309 0.166c0 0 6.624994-10.788989 9.419991-26.405974 2.695997-15.062985 22.130978-364.582644 22.130978-364.582644s-1.767998-18.737982-14.123986-31.09497c-8.502992-8.502992-15.399985-12.950987-32.308968-14.395986C913.123608 66.167935 912.168609 66.143935 910.86761 66.143935L910.86761 66.143935zM390.705118 950.058072 73.941428 633.294382 555.999957 151.666852c0 0 278.633728-17.335983 329.380678-17.336983 3.144997 0 5.409995 0.066 6.683993 0.208C894.683626 156.517847 871.332649 468.999542 871.332649 468.999542l-3.544997 3.544997 0.008 0.007L390.705118 950.058072 390.705118 950.058072zM673.639842 315.359692c9.74999 0 18.914982 3.796996 25.808975 10.69099 14.230986 14.230986 14.230986 37.386963 0 51.61895-6.893993 6.893993-16.059984 10.69099-25.808975 10.69099s-18.914982-3.796996-25.808975-10.69099c-14.230986-14.230986-14.230986-37.386963 0-51.61895C654.724861 319.155688 663.890852 315.359692 673.639842 315.359692M673.640842 255.359751c-24.696976 0-49.392952 9.420991-68.235933 28.263972-37.685963 37.685963-37.685963 98.785904 0 136.471867 18.842982 18.842982 43.538957 28.263972 68.235933 28.263972 24.695976 0 49.392952-9.420991 68.235933-28.263972 37.685963-37.685963 37.685963-98.785904 0-136.471867C723.032794 264.780741 698.336818 255.359751 673.640842 255.359751L673.640842 255.359751z" fill="#333"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="32" height="32" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.03125, 0.03125)"><path d="M572.020736 721.714176l0-329.54368c0-38.404096 59.99616-38.404096 59.99616 0l0 329.54368C632.015872 760.121344 572.020736 760.121344 572.020736 721.714176L572.020736 721.714176 572.020736 721.714176zM391.97696 721.714176l0-329.54368c0-38.404096 60.023808-38.404096 60.023808 0l0 329.54368C452.000768 760.121344 391.97696 760.121344 391.97696 721.714176L391.97696 721.714176 391.97696 721.714176zM902.084608 242.369536 752.064512 242.369536l0-59.93984c0-49.624064-40.343552-89.860096-89.092096-89.860096l-300.99456 0c-49.703936 0-90.01984 40.236032-90.01984 89.860096l0 59.93984L121.936896 242.369536c-38.46144 0-38.46144 59.887616 0 59.887616l780.146688 0C940.516352 302.258176 940.516352 242.369536 902.084608 242.369536L902.084608 242.369536 902.084608 242.369536zM331.9808 182.43072c0-15.916032 14.057472-29.97248 29.996032-29.97248l300.99456 0c15.939584 0 29.068288 12.176384 29.068288 29.97248l0 59.93984L331.9808 242.37056 331.9808 182.43072 331.9808 182.43072zM722.039808 931.429376 301.953024 931.429376c-49.676288 0-89.992192-40.231936-89.992192-89.856L211.960832 392.169472c0-17.796096 14.057472-29.971456 29.996032-29.971456 15.942656 0 30.000128 12.17536 30.000128 29.971456l0 449.403904c0 15.884288 14.084096 29.939712 29.996032 29.939712l420.086784 0c15.939584 0 30.02368-14.056448 30.02368-29.939712L752.063488 393.09824c0-39.33184 59.99616-39.33184 59.99616 0l0 448.47616C812.060672 891.19744 771.743744 931.429376 722.039808 931.429376L722.039808 931.429376zM722.039808 931.429376" fill="#999"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="64" height="64" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0625, 0.0625)"><path d="M60.217477 633.910561c0 0 250.197342 104.557334 374.563838 330.628186 149.378146-279.762705 436.109566-540.713972 521.05012-560.013527 0-115.776863 0-163.394371 0-341.442486-342.237595 226.070852-506.576477 642.342604-506.576477 642.342604l-180.049702-191.614086L60.217477 633.910561z" fill="#ffffff"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="32" height="32" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.03125, 0.03125)"><path d="M767.515189 956.397323 192.565464 956.397323c-52.833417 0-95.826319-42.99114-95.826319-95.823416L96.739145 221.769896c0-52.826136 42.992902-95.817276 95.826319-95.817276l447.180618 0c17.661965 0 31.943812 14.308891 31.943812 31.937386 0 17.631566-14.281846 31.940456-31.943812 31.940456L192.565464 189.830463c-17.600564 0-31.943812 14.338566-31.943812 31.93841l0 638.805034c0 17.633612 14.343247 31.942503 31.943812 31.942503l574.950748 0c17.627171 0 31.938695-14.307867 31.938695-31.942503L799.454907 349.533768c0-17.632589 14.280823-31.94148 31.942788-31.94148 17.664012 0 31.939718 14.307867 31.939718 31.94148l0 511.041162C863.336391 913.407206 820.342466 956.397323 767.515189 956.397323L767.515189 956.397323zM579.854633 445.356161c-8.176552 0-16.35208-3.134387-22.580176-9.363252-12.492011-12.486382-12.492011-32.67212 0-45.159526l317.432356-317.423443c12.490987-12.491499 32.679599-12.491499 45.166493 0 12.492011 12.485359 12.492011 32.67212 0 45.164642L602.440949 435.992909C596.211829 442.256566 588.034254 445.356161 579.854633 445.356161L579.854633 445.356161zM448.098561 445.356161 256.447971 445.356161c-17.633312 0-31.943812-14.309914-31.943812-31.942503 0-17.631566 14.3105-31.94148 31.943812-31.94148l191.651614 0c17.629218 0 31.938695 14.309914 31.938695 31.94148C480.037256 431.046247 465.727779 445.356161 448.098561 445.356161L448.098561 445.356161zM639.746082 636.995829 256.447971 636.995829c-17.633312 0-31.943812-14.276145-31.943812-31.93841 0-17.667382 14.3105-31.942503 31.943812-31.942503l383.298111 0c17.661965 0 31.943812 14.275121 31.943812 31.942503C671.689894 622.718661 657.408047 636.995829 639.746082 636.995829L639.746082 636.995829zM639.746082 636.995829" fill="#999"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="64" height="64" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0625, 0.0625)"><path d="M949.210112 479.090688 545.09056 74.851328c-9.039872-9.029632-20.89984-13.489152-32.740352-13.40928-0.119808 0-0.239616 0.039936-0.360448 0.039936s-0.239616-0.039936-0.360448-0.039936c-11.840512-0.079872-23.70048 4.379648-32.740352 13.40928L74.77248 479.090688c-10.90048 10.88-15.040512 25.870336-12.699648 39.989248-0.079872 1.120256-0.320512 2.199552-0.320512 3.359744 0 28.300288 20.379648 51.250176 45.500416 51.250176l77.159424 0 0 321.299456c0 37.31968 30.27968 67.569664 67.659776 67.569664l131.099648 0c37.34016 0 67.618816-30.249984 67.618816-67.569664l0-94.099456c0-0.719872-0.19968-1.380352-0.19968-2.100224 0-33.92 27.49952-61.410304 61.400064-61.410304 33.900544 0 61.400064 27.490304 61.400064 61.410304 0 0.719872-0.19968 1.380352-0.19968 2.100224l0 94.099456c0 37.31968 30.260224 67.569664 67.61984 67.569664l131.099648 0c37.379072 0 67.658752-30.249984 67.658752-67.569664L839.569408 573.689856l77.160448 0c25.119744 0 45.500416-22.949888 45.500416-51.250176 0-1.160192-0.239616-2.240512-0.300032-3.359744C964.27008 504.96 960.109568 489.970688 949.210112 479.090688zM900.830208 532.670464l-102.320128 0 0 348.010496c0 22.608896-18.33984 40.938496-40.938496 40.938496l-102.320128 0c-22.59968 0-40.93952-18.3296-40.93952-40.938496l0-81.890304c0-56.52992-45.800448-102.349824-102.320128-102.349824-56.51968 0-102.319104 45.819904-102.319104 102.349824l0 81.890304c0 22.608896-18.33984 40.938496-40.93952 40.938496l-102.320128 0c-22.59968 0-40.93952-18.3296-40.93952-40.938496L225.473536 532.670464l-102.319104 0c-13.88032 0-37.95968-2.960384 0-40.93952l388.8384-388.948992 388.839424 388.948992C938.789888 529.71008 914.709504 532.670464 900.830208 532.670464z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M57.344 370.720768c0-16.748544 5.957632-30.921728 17.87904-42.514432 11.916288-11.598848 26.251264-17.394688 42.998784-17.394688l60.880896 0 0 271.53408-60.880896 0c-16.74752 0-31.082496-5.793792-42.998784-17.389568C63.301632 553.360384 57.344 539.184128 57.344 522.438656L57.344 370.720768 57.344 370.720768zM733.774848 121.407488c27.698176-26.412032 52.826112-40.904704 75.370496-43.483136 22.549504-2.576384 42.517504 3.382272 59.915264 17.87904 17.393664 14.495744 32.208896 35.753984 44.448768 63.776768 12.2368 28.023808 22.226944 59.268096 29.955072 93.734912 7.729152 34.466816 13.52704 70.539264 17.393664 108.22656 3.8656 37.687296 5.796864 73.602048 5.796864 107.746304 0 34.143232-2.413568 68.287488-7.245824 102.428672-4.832256 34.143232-11.921408 66.19648-21.262336 96.155648-9.340928 29.952-20.292608 56.201216-32.856064 78.75072-12.565504 22.545408-26.573824 39.30112-42.0352 50.249728-15.461376 10.952704-32.048128 14.815232-49.7664 11.594752-17.713152-3.223552-36.23424-15.783936-55.56224-37.68832-18.681856-21.899264-43.968512-40.100864-75.854848-54.592512-31.889408-14.495744-66.675712-26.735616-104.361984-36.722688-37.687296-9.982976-75.855872-18.035712-114.512896-24.15616-38.652928-6.120448-74.082304-11.595776-106.293248-16.428032-32.214016-4.834304-59.106304-9.50272-80.692224-14.012416-21.5808-4.508672-33.657856-9.981952-36.23424-16.42496L239.977472 305.982464c2.576384-9.018368 12.725248-16.425984 30.4384-22.226944 17.717248-5.797888 40.262656-11.275264 67.64544-16.427008 27.377664-5.154816 58.298368-10.788864 92.765184-16.909312 34.465792-6.119424 69.573632-14.496768 105.326592-25.124864 35.761152-10.62912 70.7072-24.160256 104.848384-40.585216C675.1488 168.274944 706.069504 147.17952 733.774848 121.407488L733.774848 121.407488zM385.895424 713.769984c3.221504 7.730176 7.084032 16.105472 11.597824 25.124864 3.863552 8.379392 9.018368 18.03776 15.461376 28.988416 6.438912 10.953728 14.175232 22.873088 23.191552 35.755008 10.95168 15.4624 22.065152 31.727616 33.335296 48.801792 11.275264 17.072128 19.813376 32.533504 25.609216 46.383104 5.796864 13.8496 7.569408 25.286656 5.312512 34.305024-2.251776 9.018368-11.431936 13.531136-27.538432 13.531136l-55.077888 0c-12.884992 0-24.8064-2.417664-35.75808-7.251968-10.947584-4.832256-21.419008-12.237824-31.403008-22.226944-9.987072-9.982976-20.291584-22.7072-30.920704-38.167552-10.633216-15.4624-22.066176-33.819648-34.306048-55.081984-14.819328-24.481792-25.124864-45.9008-30.925824-64.260096-5.797888-18.364416-9.660416-33.660928-11.593728-45.902848-2.57536-14.173184-2.57536-26.412032 0-36.717568 5.154816 0.641024 11.275264 1.929216 18.359296 3.864576 5.79584 1.288192 12.884992 2.895872 21.257216 4.832256 8.377344 1.934336 18.041856 3.864576 28.992512 5.793792 10.952704 2.582528 20.774912 4.996096 29.473792 7.252992 8.694784 2.249728 16.586752 4.671488 23.675904 7.245824C372.368384 708.614144 379.452416 711.1936 385.895424 713.769984L385.895424 713.769984z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M503.466667 0C300.373333 0 170.666667 163.84 170.666667 366.933333s283.306667 494.933333 332.8 494.933333S836.266667 570.026667 836.266667 366.933333 706.56 0 503.466667 0zM503.466667 477.866667c-80.213333 0-145.066667-64.853333-145.066667-145.066667s64.853333-145.066667 145.066667-145.066667 145.066667 64.853333 145.066667 145.066667S583.68 477.866667 503.466667 477.866667zM247.466667 742.4C126.293333 768 51.2 808.96 51.2 870.4c0 95.573333 204.8 153.6 460.8 153.6s460.8-58.026667 460.8-153.6c0-63.146667-80.213333-105.813333-209.92-131.413333-18.773333-3.413333-35.84 8.533333-39.253333 27.306667-3.413333 18.773333 8.533333 35.84 27.306667 39.253333 97.28 18.773333 155.306667 49.493333 155.306667 64.853333 0 3.413333-5.12 8.533333-18.773333 18.773333-18.773333 11.946667-46.08 23.893333-81.92 34.133333-76.8 22.186667-180.906667 34.133333-291.84 34.133333s-216.746667-11.946667-291.84-34.133333c-35.84-10.24-63.146667-22.186667-81.92-34.133333C124.586667 878.933333 119.466667 873.813333 119.466667 870.4c0-13.653333 52.906667-42.666667 141.653333-61.44 18.773333-3.413333 30.72-22.186667 25.6-40.96C285.013333 749.226667 266.24 737.28 247.466667 742.4z" fill="#6B44B5"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="128" height="128" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.125, 0.125)"><path d="M1024 862.874791C1024 968.656372 766.428279 1024 512 1024 257.571721 1024 0 968.656372 0 862.874791 0 769.000186 198.394047 729.87386 283.719442 717.395349 296.364651 715.609302 308.152558 724.539535 309.962419 737.446698 311.796093 750.377674 302.98493 762.356093 290.292093 764.213581 112.616186 790.170791 46.413395 838.513116 46.413395 862.874791 46.413395 909.288186 227.780465 976.729302 512 976.729302 796.219535 976.729302 977.586605 909.288186 977.586605 862.874791 977.586605 838.322605 910.740837 789.718326 731.350326 763.880186 718.657488 762.046512 709.822512 750.068093 711.608558 737.16093 713.418419 724.229953 725.206326 715.323535 737.827721 717.061953 823.867535 729.469023 1024 768.476279 1024 862.874791L1024 862.874791ZM413.81507 301.246512C413.81507 246.093395 457.84707 201.227907 511.976186 201.227907 566.129116 201.227907 610.18493 246.093395 610.18493 301.246512 610.18493 356.399628 566.129116 401.28893 511.976186 401.28893 457.84707 401.28893 413.81507 356.399628 413.81507 301.246512L413.81507 301.246512ZM656.598326 301.246512C656.598326 220.017116 591.729116 153.933395 511.976186 153.933395 432.270884 153.933395 367.425488 220.017116 367.425488 301.246512 367.425488 382.475907 432.270884 448.559628 511.976186 448.559628 591.729116 448.559628 656.598326 382.475907 656.598326 301.246512L656.598326 301.246512ZM512 47.270698C654.764651 47.270698 770.929116 165.626047 770.929116 311.105488 770.929116 512.666791 570.391814 739.137488 511.809488 800.982326 453.060465 740.256744 253.070884 518.286884 253.070884 311.105488 253.070884 165.626047 369.211535 47.270698 512 47.270698L512 47.270698ZM496.139907 851.634605 512.190512 866.899349 528.050605 851.444093C539.862326 839.91814 817.342512 566.200558 817.342512 311.105488 817.342512 139.549767 680.364651 0 512 0 343.635349 0 206.657488 139.549767 206.657488 311.105488 206.657488 573.082791 484.328186 840.394419 496.139907 851.658419L496.139907 851.634605Z" fill="#ccc"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="128" height="128" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.125, 0.125)"><path d="M512 1024C229.233778 1024 0 794.766222 0 512 0 229.233778 229.233778 0 512 0 794.766222 0 1024 229.233778 1024 512 1024 794.766222 794.766222 1024 512 1024ZM512 56.888889C260.636444 56.888889 56.888889 260.636444 56.888889 512 56.888889 763.363556 260.636444 967.111111 512 967.111111 763.363556 967.111111 967.111111 763.363556 967.111111 512 967.111111 260.636444 763.363556 56.888889 512 56.888889ZM483.555556 597.333333 483.555556 540.444444 483.555556 256 540.444444 256 540.444444 540.444444 768 540.444444 768 597.333333 540.444444 597.333333 483.555556 597.333333Z" fill="#ccc"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="128.125" height="128" viewBox="0 0 128.125 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.125, 0.125)"><path d="M1019.104483 384c-11.286261-32.01113-39.713391-55.05113-74.195478-60.126609L701.686744 288.233739l-105.627826-216.019478c-15.270957-31.276522-48.261565-51.489391-84.057043-51.489391-35.706435 0-68.652522 20.21287-83.968 51.489391l-105.672348 216.041739L79.161526 323.940174c-34.504348 4.964174-62.953739 27.981913-74.24 60.17113-11.264 32.50087-2.871652 67.806609 21.882435 92.137739l178.509913 175.638261-41.405217 243.378087c-5.810087 33.925565 9.282783 68.719304 38.555826 88.687304 28.627478 19.255652 67.005217 21.370435 97.836522 5.164522l211.745391-112.39513 211.878957 112.417391c13.712696 7.234783 29.094957 11.063652 44.521739 11.063652 19.010783 0 37.420522-5.609739 53.337043-16.317217 29.139478-19.878957 44.210087-54.650435 38.4-88.576l-41.382957-243.400348 178.532174-175.638261C1022.042918 451.917913 1030.435265 416.589913 1019.104483 384zM966.056831 444.527304l-195.094261 191.955478 45.278609 266.329043c2.938435 17.096348-4.585739 34.05913-19.478261 44.232348-15.248696 10.24-35.817739 11.330783-52.045913 2.782609L512.001874 826.323478l-232.537043 123.436522c-16.406261 8.637217-36.997565 7.479652-52.045913-2.671304-15.048348-10.262261-22.572522-27.247304-19.634087-44.343652l45.30087-266.284522-195.072-191.955478c-12.377043-12.154435-16.606609-29.718261-11.063652-45.723826 5.765565-16.384 20.524522-28.182261 38.622609-30.786783l266.48487-39.112348 115.97913-237.122783c7.880348-16.11687 25.154783-26.534957 43.987478-26.534957 18.899478 0 36.173913 10.395826 44.054261 26.512696l115.95687 237.122783 266.418087 39.023304c18.075826 2.671304 32.901565 14.514087 38.64487 30.809043C982.663439 414.786783 978.433874 432.328348 966.056831 444.527304zM509.041179 376.898783c-45.590261 0-82.320696 13.913043-109.122783 41.316174-44.744348 45.746087-43.78713 112.194783-43.720348 115.021913 0.26713 12.109913 10.173217 21.726609 22.238609 21.726609 0.133565 0 0.289391 0 0.422957 0 12.265739-0.222609 22.016-10.373565 21.837913-22.639304 0-0.512-0.400696-51.066435 31.254261-83.18887 18.098087-18.387478 44.054261-27.692522 77.06713-27.692522 12.288 0 22.26087-9.97287 22.26087-22.26087S521.329179 376.898783 509.041179 376.898783z" fill="#ccc"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3300" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"><![CDATA[
]]></style></defs><path d="M910.86761 66.143935c-37.181964 0-361.169647 19.264981-361.169647 19.264981s-0.017-0.001-0.05-0.001c-0.247-0.005-0.495-0.007-0.742999-0.007-1.568998 0-3.136997 0.092-4.697995 0.276-5.692994 0.573999-14.501986 2.343998-19.902981 7.745992l0.153 0.319c-1.329999 1.029999-2.615997 2.143998-3.836996 3.364997L11.716489 605.010409c-15.620985 15.620985-15.620985 40.94796 0 56.568945l350.704658 350.704658c7.809992 7.809992 18.046982 11.715989 28.283972 11.715989s20.47398-3.904996 28.283972-11.715989l505.904506-505.904506c1.224999-1.224999 2.341998-2.514998 3.373997-3.848996l0.309 0.166c0 0 6.624994-10.788989 9.419991-26.405974 2.695997-15.062985 22.130978-364.582644 22.130978-364.582644s-1.767998-18.737982-14.123986-31.09497c-8.502992-8.502992-15.399985-12.950987-32.308968-14.395986C913.123608 66.167935 912.168609 66.143935 910.86761 66.143935L910.86761 66.143935zM390.705118 950.058072 73.941428 633.294382 555.999957 151.666852c0 0 278.633728-17.335983 329.380678-17.336983 3.144997 0 5.409995 0.066 6.683993 0.208C894.683626 156.517847 871.332649 468.999542 871.332649 468.999542l-3.544997 3.544997 0.008 0.007L390.705118 950.058072 390.705118 950.058072zM673.639842 315.359692c9.74999 0 18.914982 3.796996 25.808975 10.69099 14.230986 14.230986 14.230986 37.386963 0 51.61895-6.893993 6.893993-16.059984 10.69099-25.808975 10.69099s-18.914982-3.796996-25.808975-10.69099c-14.230986-14.230986-14.230986-37.386963 0-51.61895C654.724861 319.155688 663.890852 315.359692 673.639842 315.359692M673.640842 255.359751c-24.696976 0-49.392952 9.420991-68.235933 28.263972-37.685963 37.685963-37.685963 98.785904 0 136.471867 18.842982 18.842982 43.538957 28.263972 68.235933 28.263972 24.695976 0 49.392952-9.420991 68.235933-28.263972 37.685963-37.685963 37.685963-98.785904 0-136.471867C723.032794 264.780741 698.336818 255.359751 673.640842 255.359751L673.640842 255.359751z" p-id="3301" fill="#ccc"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="42px" height="42px" viewBox="0 0 42 42" enable-background="new 0 0 42 42" xml:space="preserve">
<g>
<g transform="scale(0.041015625, 0.041015625)">
<path fill="#333333" d="M706.041,472.234H320.783c-11.821,0-21.405,10.059-21.405,22.452v11.167
c0,12.405,9.583,22.452,21.405,22.452h385.258c11.809,0,21.428-10.059,21.428-22.452v-11.167
C727.47,482.293,717.851,472.234,706.041,472.234z M504.198,674.47H319.854c-11.309,0-20.476,10.095-20.476,22.524v11.333
c0,12.428,9.167,22.524,20.476,22.524h184.344c11.321,0,20.488-10.047,20.488-22.524v-11.333
C524.686,684.565,515.519,674.47,504.198,674.47z M896.42,0H130.392c-24.893,0-45.059,20.893-45.059,46.666v929.706
c0,25.762,20.166,46.666,45.059,46.666h545.316c8.286-1.762,23-6.81,38.476-21.809L918.801,796.04
c0,0,17.762-17.143,22.714-45.619V46.654C941.515,20.893,921.325,0,896.42,0L896.42,0z M884.992,788.993
c0-0.571-0.095-1.143-0.143-1.667l0.143-0.19V788.993z M884.992,741.993H710.041c-40.166,0-50.095,12.095-50.095,50.428v115.57
v0.048v58.904H166.606c-13.678,0-24.762-11.476-24.762-25.571V81.69c0-14.155,11.083-25.607,24.762-25.607H860.23
c13.714,0,24.762,11.452,24.762,25.607V741.993L884.992,741.993z M706.041,258.426H320.783c-11.821,0-21.405,10.095-21.405,22.535
v11.345c0,12.44,9.583,22.535,21.405,22.535h385.258c11.809,0,21.428-10.083,21.428-22.535v-11.345
C727.47,268.521,717.851,258.426,706.041,258.426z"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="42px" height="42px" viewBox="0 0 42 42" enable-background="new 0 0 42 42" xml:space="preserve">
<g>
<g transform="scale(0.041015625, 0.041015625)">
<path fill="#AAAAAA" d="M706.041,472.234H320.783c-11.821,0-21.405,10.059-21.405,22.452v11.167
c0,12.405,9.583,22.452,21.405,22.452h385.258c11.809,0,21.428-10.059,21.428-22.452v-11.167
C727.47,482.293,717.851,472.234,706.041,472.234z M504.198,674.47H319.854c-11.309,0-20.476,10.095-20.476,22.524v11.333
c0,12.428,9.167,22.524,20.476,22.524h184.344c11.321,0,20.488-10.047,20.488-22.524v-11.333
C524.686,684.565,515.519,674.47,504.198,674.47z M896.42,0H130.392c-24.893,0-45.059,20.893-45.059,46.666v929.706
c0,25.762,20.166,46.666,45.059,46.666h545.316c8.286-1.762,23-6.81,38.476-21.809L918.801,796.04
c0,0,17.762-17.143,22.714-45.619V46.654C941.515,20.893,921.325,0,896.42,0L896.42,0z M884.992,788.993
c0-0.571-0.095-1.143-0.143-1.667l0.143-0.19V788.993z M884.992,741.993H710.041c-40.166,0-50.095,12.095-50.095,50.428v115.57
v0.048v58.904H166.606c-13.678,0-24.762-11.476-24.762-25.571V81.69c0-14.155,11.083-25.607,24.762-25.607H860.23
c13.714,0,24.762,11.452,24.762,25.607V741.993L884.992,741.993z M706.041,258.426H320.783c-11.821,0-21.405,10.095-21.405,22.535
v11.345c0,12.44,9.583,22.535,21.405,22.535h385.258c11.809,0,21.428-10.083,21.428-22.535v-11.345
C727.47,268.521,717.851,258.426,706.041,258.426z"/>
</g>
</g>
</svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="40" height="40" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0390625, 0.0390625)"><path d="M512 1024C229.233778 1024 0 794.766222 0 512 0 229.233778 229.233778 0 512 0 794.766222 0 1024 229.233778 1024 512 1024 794.766222 794.766222 1024 512 1024ZM512 56.888889C260.636444 56.888889 56.888889 260.636444 56.888889 512 56.888889 763.363556 260.636444 967.111111 512 967.111111 763.363556 967.111111 967.111111 763.363556 967.111111 512 967.111111 260.636444 763.363556 56.888889 512 56.888889ZM483.555556 597.333333 483.555556 540.444444 483.555556 256 540.444444 256 540.444444 540.444444 768 540.444444 768 597.333333 540.444444 597.333333 483.555556 597.333333Z" fill="#333"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="64" height="64" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.0625, 0.0625)"><path d="M279.488 280.512c-11.328 0-22.592 4.608-30.528 12.608C241.024 301.12 236.352 312.256 236.352 323.648c0 11.264 4.608 22.528 12.608 30.528C256.96 362.048 268.16 366.72 279.488 366.72c11.264 0 22.528-4.672 30.464-12.608C317.952 346.112 322.56 334.848 322.56 323.648c0-11.392-4.608-22.528-12.608-30.528C302.016 285.12 290.752 280.512 279.488 280.512zM605.952 512.832c-8.832 0-17.6 3.648-23.872 9.856S572.16 537.664 572.16 546.56s3.648 17.6 9.856 23.872S597.12 580.288 605.952 580.288s17.6-3.648 23.872-9.856S639.68 555.456 639.68 546.56 636.032 528.96 629.824 522.688 614.72 512.832 605.952 512.832zM499.456 366.72c11.264 0 22.528-4.672 30.528-12.608 7.936-8 12.544-19.264 12.544-30.528 0-11.392-4.608-22.528-12.544-30.528C521.92 285.12 510.656 280.512 499.456 280.512c-11.328 0-22.528 4.608-30.528 12.608S456.32 312.256 456.32 323.648c0 11.264 4.608 22.528 12.608 30.528C476.928 362.048 488.128 366.72 499.456 366.72zM857.984 0 166.016 0C74.368 0 0.128 74.496 0.128 166.464l0 691.136c0 91.968 74.24 166.464 165.888 166.464l692.032 0c91.648 0 165.888-74.496 165.888-166.464L1023.936 166.464C1023.872 74.496 949.632 0 857.984 0zM384.32 686.08c-38.72 0-69.952-7.936-108.736-15.552l-108.48 54.4 31.04-93.376c-77.696-54.336-124.16-124.288-124.16-209.472 0-147.776 139.776-264 310.4-264 152.64 0 286.336 92.864 313.152 217.984-9.856-1.152-19.84-1.856-29.888-1.856-147.456 0-263.872 110.08-263.872 245.632 0 22.656 3.52 44.288 9.536 65.088C403.712 685.568 394.048 686.08 384.32 686.08zM842.112 794.816l23.36 77.504-85.12-46.656c-31.04 7.808-62.272 15.616-93.184 15.616-147.648 0-263.936-100.928-263.936-225.28 0-124.096 116.288-225.28 263.936-225.28 139.52 0 263.68 101.12 263.68 225.28C950.848 686.08 904.448 748.032 842.112 794.816zM775.04 512.832c-8.832 0-17.6 3.648-23.872 9.856s-9.856 14.976-9.856 23.872 3.648 17.6 9.856 23.872 15.04 9.856 23.872 9.856 17.6-3.648 23.872-9.856 9.856-14.976 9.856-23.872-3.648-17.6-9.856-23.872S783.872 512.832 775.04 512.832z" fill="#38B035"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="128" height="128" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.125, 0.125)"><path d="M952.10506 745.922132l-71.638281 0c-8.678378-69.456219-67.816632-123.228108-139.616682-123.228108-71.793968 0-130.938303 53.773106-139.6106 123.228108l-54.030964 0c-29.167136 0-52.814653-23.657247-52.814653-52.815869L494.393881 217.785335c0-29.168352 23.647517-52.809788 52.814653-52.809788l404.897742 0c29.164703 0 52.815869 23.641435 52.815869 52.809788l0 475.320928C1004.920929 722.264885 981.274628 745.922132 952.10506 745.922132L952.10506 745.922132 952.10506 745.922132zM406.370676 745.922132l-36.421214 0c-8.678378-69.456219-67.815415-123.228108-139.621547-123.228108S99.394477 676.46713 90.711234 745.922132l-36.427296 0c-19.441514 0-35.20612-15.769471-35.20612-35.212201L19.077819 517.063502c0-70.348991 120.426944-246.457433 176.042761-246.457433l211.251313 0c19.441514 0 35.20612 15.764606 35.20612 35.20612l0 404.897742C441.578012 730.157527 425.813406 745.922132 406.370676 745.922132L406.370676 745.922132 406.370676 745.922132zM335.952356 358.621977c0 0-55.494186-2.559118-122.09329 0-28.422754 1.086166-106.766556 104.765725-106.766556 158.441526l0 17.603668 228.859846 0L335.952356 358.621977 335.952356 358.621977 335.952356 358.621977zM230.327915 675.503812c48.609866 0 88.020772 39.406041 88.020772 88.021989 0 48.600135-39.410906 88.021989-88.020772 88.021989-48.617164 0-88.029286-39.421853-88.029286-88.021989C142.299845 714.909853 181.710752 675.503812 230.327915 675.503812L230.327915 675.503812 230.327915 675.503812zM745.254359 675.503812c51.040055 0 92.418953 41.380114 92.418953 92.425034 0 51.041271-41.383763 92.420169-92.418953 92.420169-51.047353 0-92.420169-41.380114-92.420169-92.420169C652.832974 716.888791 694.213088 675.503812 745.254359 675.503812L745.254359 675.503812 745.254359 675.503812zM745.254359 675.503812" fill="#ccc"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="42" height="42" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[
@font-face { font-family: ifont; src: url("//at.alicdn.com/t/font_1442373896_4754455.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_1442373896_4754455.woff") format("woff"), url("//at.alicdn.com/t/font_1442373896_4754455.ttf") format("truetype"), url("//at.alicdn.com/t/font_1442373896_4754455.svg#ifont") format("svg"); }
]]></style></defs><g class="transform-group"><g transform="scale(0.041015625, 0.041015625)"><path d="M512 960C264.96 960 64 759.04 64 512S264.96 64 512 64s448 200.96 448 448S759.04 960 512 960zM512 128.288c-211.584 0-383.712 172.128-383.712 383.712 0 211.552 172.128 383.712 383.712 383.712 211.552 0 383.712-172.16 383.712-383.712C895.712 300.416 723.552 128.288 512 128.288zM557.056 513.376l138.368-136.864c12.576-12.416 12.672-32.672 0.256-45.248s-32.704-12.672-45.248-0.256l-138.56 137.024L375.424 331.168c-12.512-12.512-32.736-12.576-45.248-0.064-12.512 12.48-12.544 32.736-0.064 45.248l136.256 136.672L328.992 648.928c-12.576 12.448-12.672 32.672-0.256 45.248 6.272 6.336 14.496 9.504 22.752 9.504 8.128 0 16.256-3.104 22.496-9.248l137.568-136.064L650.24 697.504c6.24 6.272 14.432 9.408 22.656 9.408 8.192 0 16.352-3.136 22.592-9.344 12.512-12.48 12.544-32.704 0.064-45.248L557.056 513.376z" fill="#666"></path></g></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<path fill="#00AAEE" d="M63.803,43.684V12.265C63.803,5.499,58.306,0,51.528,0H12.265C5.499,0,0,5.499,0,12.265v39.264
c0,6.765,5.487,12.264,12.265,12.264h39.264c6.035,0,11.052-4.364,12.073-10.099c-3.255-1.402-17.359-7.496-24.697-11.008
c-5.59,6.765-11.446,10.839-20.266,10.839c-8.82,0-14.711-5.432-14.004-12.085c0.471-4.364,3.456-11.502,16.473-10.279
c6.856,0.64,9.998,1.919,15.585,3.77c1.449-2.648,2.65-5.565,3.559-8.673H15.463V23.8h12.264v-4.41H12.758v-2.704h14.958v-6.362
c0,0,0.134-0.999,1.234-0.999h6.138v7.361h15.956v2.704H35.089v4.41h13.017c-1.201,4.87-3.007,9.346-5.285,13.251
C46.602,38.422,63.803,43.684,63.803,43.684L63.803,43.684L63.803,43.684L63.803,43.684 M17.662,49.315
c-9.324,0-10.794-5.891-10.3-8.349c0.494-2.445,3.187-5.643,8.371-5.643c5.958,0,11.288,1.526,17.696,4.645
C28.939,45.827,23.407,49.315,17.662,49.315L17.662,49.315L17.662,49.315"/>
</svg>
/*!
* Clamp.js 0.5.1
*
* Copyright 2011-2013, Joseph Schmitt http://joe.sh
* Released under the WTFPL license
* http://sam.zoy.org/wtfpl/
*/
(function(){
/**
* Clamps a text node.
* @param {HTMLElement} element. Element containing the text node to clamp.
* @param {Object} options. Options to pass to the clamper.
*/
function clamp(element, options) {
options = options || {};
var self = this,
win = window,
opt = {
clamp: options.clamp || 2,
useNativeClamp: typeof(options.useNativeClamp) != 'undefined' ? options.useNativeClamp : true,
splitOnChars: options.splitOnChars || ['.', '-', '–', '—', ' '], //Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).
animate: options.animate || false,
truncationChar: options.truncationChar || '…',
truncationHTML: options.truncationHTML
},
sty = element.style,
originalText = element.innerHTML,
supportsNativeClamp = typeof(element.style.webkitLineClamp) != 'undefined',
clampValue = opt.clamp,
isCSSValue = clampValue.indexOf && (clampValue.indexOf('px') > -1 || clampValue.indexOf('em') > -1),
truncationHTMLContainer;
if (opt.truncationHTML) {
truncationHTMLContainer = document.createElement('span');
truncationHTMLContainer.innerHTML = opt.truncationHTML;
}
// UTILITY FUNCTIONS __________________________________________________________
/**
* Return the current style for an element.
* @param {HTMLElement} elem The element to compute.
* @param {string} prop The style property.
* @returns {number}
*/
function computeStyle(elem, prop) {
if (!win.getComputedStyle) {
win.getComputedStyle = function(el, pseudo) {
this.el = el;
this.getPropertyValue = function(prop) {
var re = /(\-([a-z]){1})/g;
if (prop == 'float') prop = 'styleFloat';
if (re.test(prop)) {
prop = prop.replace(re, function () {
return arguments[2].toUpperCase();
});
}
return el.currentStyle && el.currentStyle[prop] ? el.currentStyle[prop] : null;
}
return this;
}
}
return win.getComputedStyle(elem, null).getPropertyValue(prop);
}
/**
* Returns the maximum number of lines of text that should be rendered based
* on the current height of the element and the line-height of the text.
*/
function getMaxLines(height) {
var availHeight = height || element.clientHeight,
lineHeight = getLineHeight(element);
return Math.max(Math.floor(availHeight/lineHeight), 0);
}
/**
* Returns the maximum height a given element should have based on the line-
* height of the text and the given clamp value.
*/
function getMaxHeight(clmp) {
var lineHeight = getLineHeight(element);
return lineHeight * clmp;
}
/**
* Returns the line-height of an element as an integer.
*/
function getLineHeight(elem) {
var lh = computeStyle(elem, 'line-height');
if (lh == 'normal') {
// Normal line heights vary from browser to browser. The spec recommends
// a value between 1.0 and 1.2 of the font size. Using 1.1 to split the diff.
lh = parseInt(computeStyle(elem, 'font-size')) * 1.2;
}
return parseInt(lh);
}
// MEAT AND POTATOES (MMMM, POTATOES...) ______________________________________
var splitOnChars = opt.splitOnChars.slice(0),
splitChar = splitOnChars[0],
chunks,
lastChunk;
/**
* Gets an element's last child. That may be another node or a node's contents.
*/
function getLastChild(elem) {
//Current element has children, need to go deeper and get last child as a text node
if (elem.lastChild.children && elem.lastChild.children.length > 0) {
return getLastChild(Array.prototype.slice.call(elem.children).pop());
}
//This is the absolute last child, a text node, but something's wrong with it. Remove it and keep trying
else if (!elem.lastChild || !elem.lastChild.nodeValue || elem.lastChild.nodeValue == '' || elem.lastChild.nodeValue == opt.truncationChar) {
elem.lastChild.parentNode.removeChild(elem.lastChild);
return getLastChild(element);
}
//This is the last child we want, return it
else {
return elem.lastChild;
}
}
/**
* Removes one character at a time from the text until its width or
* height is beneath the passed-in max param.
*/
function truncate(target, maxHeight) {
if (!maxHeight) {return;}
/**
* Resets global variables.
*/
function reset() {
splitOnChars = opt.splitOnChars.slice(0);
splitChar = splitOnChars[0];
chunks = null;
lastChunk = null;
}
var nodeValue = target.nodeValue.replace(opt.truncationChar, '');
//Grab the next chunks
if (!chunks) {
//If there are more characters to try, grab the next one
if (splitOnChars.length > 0) {
splitChar = splitOnChars.shift();
}
//No characters to chunk by. Go character-by-character
else {
splitChar = '';
}
chunks = nodeValue.split(splitChar);
}
//If there are chunks left to remove, remove the last one and see if
// the nodeValue fits.
if (chunks.length > 1) {
// console.log('chunks', chunks);
lastChunk = chunks.pop();
// console.log('lastChunk', lastChunk);
applyEllipsis(target, chunks.join(splitChar));
}
//No more chunks can be removed using this character
else {
chunks = null;
}
//Insert the custom HTML before the truncation character
if (truncationHTMLContainer) {
target.nodeValue = target.nodeValue.replace(opt.truncationChar, '');
element.innerHTML = target.nodeValue + ' ' + truncationHTMLContainer.innerHTML + opt.truncationChar;
}
//Search produced valid chunks
if (chunks) {
//It fits
if (element.clientHeight <= maxHeight) {
//There's still more characters to try splitting on, not quite done yet
if (splitOnChars.length >= 0 && splitChar != '') {
applyEllipsis(target, chunks.join(splitChar) + splitChar + lastChunk);
chunks = null;
}
//Finished!
else {
return element.innerHTML;
}
}
}
//No valid chunks produced
else {
//No valid chunks even when splitting by letter, time to move
//on to the next node
if (splitChar == '') {
applyEllipsis(target, '');
target = getLastChild(element);
reset();
}
}
//If you get here it means still too big, let's keep truncating
if (opt.animate) {
setTimeout(function() {
truncate(target, maxHeight);
}, opt.animate === true ? 10 : opt.animate);
}
else {
return truncate(target, maxHeight);
}
}
function applyEllipsis(elem, str) {
elem.nodeValue = str + opt.truncationChar;
}
// CONSTRUCTOR ________________________________________________________________
if (clampValue == 'auto') {
clampValue = getMaxLines();
}
else if (isCSSValue) {
clampValue = getMaxLines(parseInt(clampValue));
}
var clampedText;
if (supportsNativeClamp && opt.useNativeClamp) {
sty.overflow = 'hidden';
sty.textOverflow = 'ellipsis';
sty.webkitBoxOrient = 'vertical';
sty.display = '-webkit-box';
sty.webkitLineClamp = clampValue;
if (isCSSValue) {
sty.height = opt.clamp + 'px';
}
}
else {
var height = getMaxHeight(clampValue);
if (height <= element.clientHeight) {
clampedText = truncate(getLastChild(element), height);
}
}
return {
'original': originalText,
'clamped': clampedText
}
}
window.$clamp = clamp;
})();
\ No newline at end of file
/*!
* Clamp.js 0.5.1
*
* Copyright 2011-2013, Joseph Schmitt http://joe.sh
* Released under the WTFPL license
* http://sam.zoy.org/wtfpl/
*/
(function(){window.$clamp=function(c,d){function s(a,b){n.getComputedStyle||(n.getComputedStyle=function(a,b){this.el=a;this.getPropertyValue=function(b){var c=/(\-([a-z]){1})/g;"float"==b&&(b="styleFloat");c.test(b)&&(b=b.replace(c,function(a,b,c){return c.toUpperCase()}));return a.currentStyle&&a.currentStyle[b]?a.currentStyle[b]:null};return this});return n.getComputedStyle(a,null).getPropertyValue(b)}function t(a){a=a||c.clientHeight;var b=u(c);return Math.max(Math.floor(a/b),0)}function x(a){return u(c)*
a}function u(a){var b=s(a,"line-height");"normal"==b&&(b=1.2*parseInt(s(a,"font-size")));return parseInt(b)}function l(a){if(a.lastChild.children&&0<a.lastChild.children.length)return l(Array.prototype.slice.call(a.children).pop());if(a.lastChild&&a.lastChild.nodeValue&&""!=a.lastChild.nodeValue&&a.lastChild.nodeValue!=b.truncationChar)return a.lastChild;a.lastChild.parentNode.removeChild(a.lastChild);return l(c)}function p(a,d){if(d){var e=a.nodeValue.replace(b.truncationChar,"");f||(h=0<k.length?
k.shift():"",f=e.split(h));1<f.length?(q=f.pop(),r(a,f.join(h))):f=null;m&&(a.nodeValue=a.nodeValue.replace(b.truncationChar,""),c.innerHTML=a.nodeValue+" "+m.innerHTML+b.truncationChar);if(f){if(c.clientHeight<=d)if(0<=k.length&&""!=h)r(a,f.join(h)+h+q),f=null;else return c.innerHTML}else""==h&&(r(a,""),a=l(c),k=b.splitOnChars.slice(0),h=k[0],q=f=null);if(b.animate)setTimeout(function(){p(a,d)},!0===b.animate?10:b.animate);else return p(a,d)}}function r(a,c){a.nodeValue=c+b.truncationChar}d=d||{};
var n=window,b={clamp:d.clamp||2,useNativeClamp:"undefined"!=typeof d.useNativeClamp?d.useNativeClamp:!0,splitOnChars:d.splitOnChars||[".","-","\u2013","\u2014"," "],animate:d.animate||!1,truncationChar:d.truncationChar||"\u2026",truncationHTML:d.truncationHTML},e=c.style,y=c.innerHTML,z="undefined"!=typeof c.style.webkitLineClamp,g=b.clamp,v=g.indexOf&&(-1<g.indexOf("px")||-1<g.indexOf("em")),m;b.truncationHTML&&(m=document.createElement("span"),m.innerHTML=b.truncationHTML);var k=b.splitOnChars.slice(0),
h=k[0],f,q;"auto"==g?g=t():v&&(g=t(parseInt(g)));var w;z&&b.useNativeClamp?(e.overflow="hidden",e.textOverflow="ellipsis",e.webkitBoxOrient="vertical",e.display="-webkit-box",e.webkitLineClamp=g,v&&(e.height=b.clamp+"px")):(e=x(g),e<=c.clientHeight&&(w=p(l(c),e)));return{original:y,clamped:w}}})();
\ No newline at end of file
/*
* jQuery JavaScript Library v1.3.2
* http://jquery.com/
*
* Copyright (c) 2009 John Resig
* Dual licensed under the MIT and GPL licenses.
* http://docs.jquery.com/License
*
* Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
* Revision: 6246
*/
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
* Sizzle CSS Selector Engine - v0.9.3
* Copyright 2009, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
/*
* BarCode Coder Library (BCC Library)
* BCCL Version 2.0
*
* Porting : jQuery barcode plugin
* Version : 2.0.2
*
* Date : March 01, 2011
* Author : DEMONTE Jean-Baptiste <jbdemonte@gmail.com>
* HOUREZ Jonathan
*
* Web site: http://barcode-coder.com/
* dual licence : http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html
* http://www.gnu.org/licenses/gpl.html
*/
(function(b){var a={settings:{barWidth:1,barHeight:50,moduleSize:5,showHRI:true,addQuietZone:true,marginHRI:5,bgColor:"#FFFFFF",color:"#000000",fontSize:10,output:"css",posX:0,posY:0},intval:function(d){var c=typeof(d);if(c=="string"){d=d.replace(/[^0-9-.]/g,"");d=parseInt(d*1,10);return isNaN(d)||!isFinite(d)?0:d}return c=="number"&&isFinite(d)?Math.floor(d):0},i25:{encoding:["NNWWN","WNNNW","NWNNW","WWNNN","NNWNW","WNWNN","NWWNN","NNNWW","WNNWN","NWNWN"],compute:function(g,j,f){if(!j){if(g.length%2!=0){g="0"+g}}else{if((f=="int25")&&(g.length%2==0)){g="0"+g}var h=true,c,e=0;for(var d=g.length-1;d>-1;d--){c=a.intval(g.charAt(d));if(isNaN(c)){return("")}e+=h?3*c:c;h=!h}g+=((10-e%10)%10).toString()}return(g)},getDigit:function(k,l,h){k=this.compute(k,l,h);if(k==""){return("")}result="";var f,d;if(h=="int25"){result+="1010";var g,e;for(f=0;f<k.length/2;f++){g=k.charAt(2*f);e=k.charAt(2*f+1);for(d=0;d<5;d++){result+="1";if(this.encoding[g].charAt(d)=="W"){result+="1"}result+="0";if(this.encoding[e].charAt(d)=="W"){result+="0"}}}result+="1101"}else{if(h=="std25"){result+="11011010";var m;for(f=0;f<k.length;f++){m=k.charAt(f);for(d=0;d<5;d++){result+="1";if(this.encoding[m].charAt(d)=="W"){result+="11"}result+="0"}}result+="11010110"}}return(result)}},ean:{encoding:[["0001101","0100111","1110010"],["0011001","0110011","1100110"],["0010011","0011011","1101100"],["0111101","0100001","1000010"],["0100011","0011101","1011100"],["0110001","0111001","1001110"],["0101111","0000101","1010000"],["0111011","0010001","1000100"],["0110111","0001001","1001000"],["0001011","0010111","1110100"]],first:["000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"],getDigit:function(h,g){var d=g=="ean8"?7:12;h=h.substring(0,d);if(h.length!=d){return("")}var k;for(var f=0;f<h.length;f++){k=h.charAt(f);if((k<"0")||(k>"9")){return("")}}h=this.compute(h,g);var j="101";if(g=="ean8"){for(var f=0;f<4;f++){j+=this.encoding[a.intval(h.charAt(f))][0]}j+="01010";for(var f=4;f<8;f++){j+=this.encoding[a.intval(h.charAt(f))][2]}}else{var e=this.first[a.intval(h.charAt(0))];for(var f=1;f<7;f++){j+=this.encoding[a.intval(h.charAt(f))][a.intval(e.charAt(f-1))]}j+="01010";for(var f=7;f<13;f++){j+=this.encoding[a.intval(h.charAt(f))][2]}}j+="101";return(j)},compute:function(f,e){var c=e=="ean13"?12:7;f=f.substring(0,c);var d=0,g=true;for(i=f.length-1;i>-1;i--){d+=(g?3:1)*a.intval(f.charAt(i));g=!g}return(f+((10-d%10)%10).toString())}},msi:{encoding:["100100100100","100100100110","100100110100","100100110110","100110100100","100110100110","100110110100","100110110110","110100100100","110100100110"],compute:function(c,d){if(typeof(d)=="object"){if(d.crc1=="mod10"){c=this.computeMod10(c)}else{if(d.crc1=="mod11"){c=this.computeMod11(c)}}if(d.crc2=="mod10"){c=this.computeMod10(c)}else{if(d.crc2=="mod11"){c=this.computeMod11(c)}}}else{if(typeof(d)=="boolean"){if(d){c=this.computeMod10(c)}}}return(c)},computeMod10:function(h){var d,g=h.length%2;var f=0,e=0;for(d=0;d<h.length;d++){if(g){f=10*f+a.intval(h.charAt(d))}else{e+=a.intval(h.charAt(d))}g=!g}var c=(2*f).toString();for(d=0;d<c.length;d++){e+=a.intval(c.charAt(d))}return(h+((10-e%10)%10).toString())},computeMod11:function(f){var e=0,c=2;for(var d=f.length-1;d>=0;d--){e+=c*a.intval(f.charAt(d));c=c==7?2:c+1}return(f+((11-e%11)%11).toString())},getDigit:function(e,g){var d="0123456789";var c=0;var f="";e=this.compute(e,false);f="110";for(i=0;i<e.length;i++){c=d.indexOf(e.charAt(i));if(c<0){return("")}f+=this.encoding[c]}f+="1001";return(f)}},code11:{encoding:["101011","1101011","1001011","1100101","1011011","1101101","1001101","1010011","1101001","110101","101101"],getDigit:function(d){var q="0123456789-";var g,l,o="",h="0";o="1011001"+h;for(g=0;g<d.length;g++){l=q.indexOf(d.charAt(g));if(l<0){return("")}o+=this.encoding[l]+h}var p=0,e=0,j=1,m=0;for(g=d.length-1;g>=0;g--){p=p==10?1:p+1;j=j==10?1:j+1;l=q.indexOf(d.charAt(g));e+=p*l;m+=j*l}var n=e%11;m+=n;var f=m%11;o+=this.encoding[n]+h;if(d.length>=10){o+=this.encoding[f]+h}o+="1011001";return(o)}},code39:{encoding:["101001101101","110100101011","101100101011","110110010101","101001101011","110100110101","101100110101","101001011011","110100101101","101100101101","110101001011","101101001011","110110100101","101011001011","110101100101","101101100101","101010011011","110101001101","101101001101","101011001101","110101010011","101101010011","110110101001","101011010011","110101101001","101101101001","101010110011","110101011001","101101011001","101011011001","110010101011","100110101011","110011010101","100101101011","110010110101","100110110101","100101011011","110010101101","100110101101","100100100101","100100101001","100101001001","101001001001","100101101101"],getDigit:function(f){var e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";var d,c,h="",g="0";if(f.indexOf("*")>=0){return("")}f=("*"+f+"*").toUpperCase();for(d=0;d<f.length;d++){c=e.indexOf(f.charAt(d));if(c<0){return("")}if(d>0){h+=g}h+=this.encoding[c]}return(h)}},code93:{encoding:["100010100","101001000","101000100","101000010","100101000","100100100","100100010","101010000","100010010","100001010","110101000","110100100","110100010","110010100","110010010","110001010","101101000","101100100","101100010","100110100","100011010","101011000","101001100","101000110","100101100","100010110","110110100","110110010","110101100","110100110","110010110","110011010","101101100","101100110","100110110","100111010","100101110","111010100","111010010","111001010","101101110","101110110","110101110","100100110","111011010","111010110","100110010","101011110"],getDigit:function(d,h){var o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%____*",l,m="";if(d.indexOf("*")>=0){return("")}d=d.toUpperCase();m+=this.encoding[47];for(i=0;i<d.length;i++){l=d.charAt(i);index=o.indexOf(l);if((l=="_")||(index<0)){return("")}m+=this.encoding[index]}if(h){var n=0,e=0,g=1,j=0;for(i=d.length-1;i>=0;i--){n=n==20?1:n+1;g=g==15?1:g+1;index=o.indexOf(d.charAt(i));e+=n*index;j+=g*index}var l=e%47;j+=l;var f=j%47;m+=this.encoding[l];m+=this.encoding[f]}m+=this.encoding[47];m+="1";return(m)}},code128:{encoding:["11011001100","11001101100","11001100110","10010011000","10010001100","10001001100","10011001000","10011000100","10001100100","11001001000","11001000100","11000100100","10110011100","10011011100","10011001110","10111001100","10011101100","10011100110","11001110010","11001011100","11001001110","11011100100","11001110100","11101101110","11101001100","11100101100","11100100110","11101100100","11100110100","11100110010","11011011000","11011000110","11000110110","10100011000","10001011000","10001000110","10110001000","10001101000","10001100010","11010001000","11000101000","11000100010","10110111000","10110001110","10001101110","10111011000","10111000110","10001110110","11101110110","11010001110","11000101110","11011101000","11011100010","11011101110","11101011000","11101000110","11100010110","11101101000","11101100010","11100011010","11101111010","11001000010","11110001010","10100110000","10100001100","10010110000","10010000110","10000101100","10000100110","10110010000","10110000100","10011010000","10011000010","10000110100","10000110010","11000010010","11001010000","11110111010","11000010100","10001111010","10100111100","10010111100","10010011110","10111100100","10011110100","10011110010","11110100100","11110010100","11110010010","11011011110","11011110110","11110110110","10101111000","10100011110","10001011110","10111101000","10111100010","11110101000","11110100010","10111011110","10111101110","11101011110","11110101110","11010000100","11010010000","11010011100","11000111010"],getDigit:function(d){var m=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";var n="";var k=0;var e=0;var h=0;var g=0;var o=0;for(h=0;h<d.length;h++){if(m.indexOf(d.charAt(h))==-1){return("")}}var f=d.length>1;var l="";for(h=0;h<3&&h<d.length;h++){l=d.charAt(h);f&=l>="0"&&l<="9"}k=f?105:104;n=this.encoding[k];h=0;while(h<d.length){if(!f){g=0;while((h+g<d.length)&&(d.charAt(h+g)>="0")&&(d.charAt(h+g)<="9")){g++}f=(g>5)||((h+g-1==d.length)&&(g>3));if(f){n+=this.encoding[99];k+=++e*99}}else{if((h==d.length)||(d.charAt(h)<"0")||(d.charAt(h)>"9")||(d.charAt(h+1)<"0")||(d.charAt(h+1)>"9")){f=false;n+=this.encoding[100];k+=++e*100}}if(f){o=a.intval(d.charAt(h)+d.charAt(h+1));h+=2}else{o=m.indexOf(d.charAt(h));h+=1}n+=this.encoding[o];k+=++e*o}n+=this.encoding[k%103];n+=this.encoding[106];n+="11";return(n)}},codabar:{encoding:["101010011","101011001","101001011","110010101","101101001","110101001","100101011","100101101","100110101","110100101","101001101","101100101","1101011011","1101101011","1101101101","1011011011","1011001001","1010010011","1001001011","1010011001"],getDigit:function(f){var e="0123456789-$:/.+";var d,c,h="",g="0";h+=this.encoding[16]+g;for(d=0;d<f.length;d++){c=e.indexOf(f.charAt(d));if(c<0){return("")}h+=this.encoding[c]+g}h+=this.encoding[16];return(h)}},datamatrix:{encoding:["101010011","101011001","101001011","110010101","101101001","110101001","100101011","100101101","100110101","110100101","101001101","101100101","1101011011","1101101011","1101101101","1011011011","1011001001","1010010011","1001001011","1010011001"],lengthRows:[10,12,14,16,18,20,22,24,26,32,36,40,44,48,52,64,72,80,88,96,104,120,132,144,8,8,12,12,16,16],lengthCols:[10,12,14,16,18,20,22,24,26,32,36,40,44,48,52,64,72,80,88,96,104,120,132,144,18,32,26,36,36,48],mappingRows:[8,10,12,14,16,18,20,22,24,28,32,36,40,44,48,56,64,72,80,88,96,108,120,132,6,6,10,10,14,14],mappingCols:[8,10,12,14,16,18,20,22,24,28,32,36,40,44,48,56,64,72,80,88,96,108,120,132,16,28,24,32,32,44],dataCWCount:[3,5,8,12,18,22,30,36,44,62,86,114,144,174,204,280,368,456,576,696,816,1050,1304,1558,5,10,16,22,32,49],solomonCWCount:[5,7,10,12,14,18,20,24,28,36,42,48,56,68,84,112,144,192,224,272,336,408,496,620,7,11,14,18,24,28],dataRegionRows:[8,10,12,14,16,18,20,22,24,14,16,18,20,22,24,14,16,18,20,22,24,18,20,22,6,6,10,10,14,14],dataRegionCols:[8,10,12,14,16,18,20,22,24,14,16,18,20,22,24,14,16,18,20,22,24,18,20,22,16,14,24,16,16,22],regionRows:[1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,4,4,4,4,4,4,6,6,6,1,1,1,1,1,1],regionCols:[1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,4,4,4,4,4,4,6,6,6,1,2,1,2,2,2],interleavedBlocks:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,4,4,4,4,6,6,8,8,1,1,1,1,1,1],logTab:[-255,255,1,240,2,225,241,53,3,38,226,133,242,43,54,210,4,195,39,114,227,106,134,28,243,140,44,23,55,118,211,234,5,219,196,96,40,222,115,103,228,78,107,125,135,8,29,162,244,186,141,180,45,99,24,49,56,13,119,153,212,199,235,91,6,76,220,217,197,11,97,184,41,36,223,253,116,138,104,193,229,86,79,171,108,165,126,145,136,34,9,74,30,32,163,84,245,173,187,204,142,81,181,190,46,88,100,159,25,231,50,207,57,147,14,67,120,128,154,248,213,167,200,63,236,110,92,176,7,161,77,124,221,102,218,95,198,90,12,152,98,48,185,179,42,209,37,132,224,52,254,239,117,233,139,22,105,27,194,113,230,206,87,158,80,189,172,203,109,175,166,62,127,247,146,66,137,192,35,252,10,183,75,216,31,83,33,73,164,144,85,170,246,65,174,61,188,202,205,157,143,169,82,72,182,215,191,251,47,178,89,151,101,94,160,123,26,112,232,21,51,238,208,131,58,69,148,18,15,16,68,17,121,149,129,19,155,59,249,70,214,250,168,71,201,156,64,60,237,130,111,20,93,122,177,150],aLogTab:[1,2,4,8,16,32,64,128,45,90,180,69,138,57,114,228,229,231,227,235,251,219,155,27,54,108,216,157,23,46,92,184,93,186,89,178,73,146,9,18,36,72,144,13,26,52,104,208,141,55,110,220,149,7,14,28,56,112,224,237,247,195,171,123,246,193,175,115,230,225,239,243,203,187,91,182,65,130,41,82,164,101,202,185,95,190,81,162,105,210,137,63,126,252,213,135,35,70,140,53,106,212,133,39,78,156,21,42,84,168,125,250,217,159,19,38,76,152,29,58,116,232,253,215,131,43,86,172,117,234,249,223,147,11,22,44,88,176,77,154,25,50,100,200,189,87,174,113,226,233,255,211,139,59,118,236,245,199,163,107,214,129,47,94,188,85,170,121,242,201,191,83,166,97,194,169,127,254,209,143,51,102,204,181,71,142,49,98,196,165,103,206,177,79,158,17,34,68,136,61,122,244,197,167,99,198,161,111,222,145,15,30,60,120,240,205,183,67,134,33,66,132,37,74,148,5,10,20,40,80,160,109,218,153,31,62,124,248,221,151,3,6,12,24,48,96,192,173,119,238,241,207,179,75,150,1],champGaloisMult:function(d,c){if(!d||!c){return 0}return this.aLogTab[(this.logTab[d]+this.logTab[c])%255]},champGaloisDoub:function(d,c){if(!d){return 0}if(!c){return d}return this.aLogTab[(this.logTab[d]+c)%255]},champGaloisSum:function(d,c){return d^c},selectIndex:function(c,d){if((c<1||c>1558)&&!d){return -1}if((c<1||c>49)&&d){return -1}var e=0;if(d){e=24}while(this.dataCWCount[e]<c){e++}return e},encodeDataCodeWordsASCII:function(f){var e=new Array();var h=0,d,g;for(d=0;d<f.length;d++){g=f.charCodeAt(d);if(g>127){e[h]=235;g=g-127;h++}else{if((g>=48&&g<=57)&&(d+1<f.length)&&(f.charCodeAt(d+1)>=48&&f.charCodeAt(d+1)<=57)){g=((g-48)*10)+((f.charCodeAt(d+1))-48);g+=130;d++}else{g++}}e[h]=g;h++}return e},addPadCW:function(d,g,f){if(g>=f){return}d[g]=129;var e,c;for(c=g+1;c<f;c++){e=((149*(c+1))%253)+1;d[c]=(129+e)%254}},calculSolFactorTable:function(c){var f=new Array();var e,d;for(e=0;e<=c;e++){f[e]=1}for(e=1;e<=c;e++){for(d=e-1;d>=0;d--){f[d]=this.champGaloisDoub(f[d],e);if(d>0){f[d]=this.champGaloisSum(f[d],f[d-1])}}}return f},addReedSolomonCW:function(c,g,l,m,h){var o=0;var n=c/h;var p=new Array();var f,e,d;for(d=0;d<h;d++){for(f=0;f<n;f++){p[f]=0}for(f=d;f<l;f=f+h){o=this.champGaloisSum(m[f],p[n-1]);for(e=n-1;e>=0;e--){if(!o){p[e]=0}else{p[e]=this.champGaloisMult(o,g[e])}if(e>0){p[e]=this.champGaloisSum(p[e-1],p[e])}}}e=l+d;for(f=n-1;f>=0;f--){m[e]=p[f];e=e+h}}return m},getBits:function(d){var e=new Array();for(var c=0;c<8;c++){e[c]=d&(128>>c)?1:0}return e},next:function(h,k,d,j,g,c){var f=0;var l=4;var e=0;do{if((l==k)&&(e==0)){this.patternShapeSpecial1(g,c,j[f],k,d);f++}else{if((h<3)&&(l==k-2)&&(e==0)&&(d%4!=0)){this.patternShapeSpecial2(g,c,j[f],k,d);f++}else{if((l==k-2)&&(e==0)&&(d%8==4)){this.patternShapeSpecial3(g,c,j[f],k,d);f++}else{if((l==k+4)&&(e==2)&&(d%8==0)){this.patternShapeSpecial4(g,c,j[f],k,d);f++}}}}do{if((l<k)&&(e>=0)&&(c[l][e]!=1)){this.patternShapeStandard(g,c,j[f],l,e,k,d);f++}l-=2;e+=2}while((l>=0)&&(e<d));l+=1;e+=3;do{if((l>=0)&&(e<d)&&(c[l][e]!=1)){this.patternShapeStandard(g,c,j[f],l,e,k,d);f++}l+=2;e-=2}while((l<k)&&(e>=0));l+=3;e+=1}while((l<k)||(e<d))},patternShapeStandard:function(g,f,h,j,e,d,c){this.placeBitInDatamatrix(g,f,h[0],j-2,e-2,d,c);this.placeBitInDatamatrix(g,f,h[1],j-2,e-1,d,c);this.placeBitInDatamatrix(g,f,h[2],j-1,e-2,d,c);this.placeBitInDatamatrix(g,f,h[3],j-1,e-1,d,c);this.placeBitInDatamatrix(g,f,h[4],j-1,e,d,c);this.placeBitInDatamatrix(g,f,h[5],j,e-2,d,c);this.placeBitInDatamatrix(g,f,h[6],j,e-1,d,c);this.placeBitInDatamatrix(g,f,h[7],j,e,d,c)},patternShapeSpecial1:function(f,e,g,d,c){this.placeBitInDatamatrix(f,e,g[0],d-1,0,d,c);this.placeBitInDatamatrix(f,e,g[1],d-1,1,d,c);this.placeBitInDatamatrix(f,e,g[2],d-1,2,d,c);this.placeBitInDatamatrix(f,e,g[3],0,c-2,d,c);this.placeBitInDatamatrix(f,e,g[4],0,c-1,d,c);this.placeBitInDatamatrix(f,e,g[5],1,c-1,d,c);this.placeBitInDatamatrix(f,e,g[6],2,c-1,d,c);this.placeBitInDatamatrix(f,e,g[7],3,c-1,d,c)},patternShapeSpecial2:function(f,e,g,d,c){this.placeBitInDatamatrix(f,e,g[0],d-3,0,d,c);this.placeBitInDatamatrix(f,e,g[1],d-2,0,d,c);this.placeBitInDatamatrix(f,e,g[2],d-1,0,d,c);this.placeBitInDatamatrix(f,e,g[3],0,c-4,d,c);this.placeBitInDatamatrix(f,e,g[4],0,c-3,d,c);this.placeBitInDatamatrix(f,e,g[5],0,c-2,d,c);this.placeBitInDatamatrix(f,e,g[6],0,c-1,d,c);this.placeBitInDatamatrix(f,e,g[7],1,c-1,d,c)},patternShapeSpecial3:function(f,e,g,d,c){this.placeBitInDatamatrix(f,e,g[0],d-3,0,d,c);this.placeBitInDatamatrix(f,e,g[1],d-2,0,d,c);this.placeBitInDatamatrix(f,e,g[2],d-1,0,d,c);this.placeBitInDatamatrix(f,e,g[3],0,c-2,d,c);this.placeBitInDatamatrix(f,e,g[4],0,c-1,d,c);this.placeBitInDatamatrix(f,e,g[5],1,c-1,d,c);this.placeBitInDatamatrix(f,e,g[6],2,c-1,d,c);this.placeBitInDatamatrix(f,e,g[7],3,c-1,d,c)},patternShapeSpecial4:function(f,e,g,d,c){this.placeBitInDatamatrix(f,e,g[0],d-1,0,d,c);this.placeBitInDatamatrix(f,e,g[1],d-1,c-1,d,c);this.placeBitInDatamatrix(f,e,g[2],0,c-3,d,c);this.placeBitInDatamatrix(f,e,g[3],0,c-2,d,c);this.placeBitInDatamatrix(f,e,g[4],0,c-1,d,c);this.placeBitInDatamatrix(f,e,g[5],1,c-3,d,c);this.placeBitInDatamatrix(f,e,g[6],1,c-2,d,c);this.placeBitInDatamatrix(f,e,g[7],1,c-1,d,c)},placeBitInDatamatrix:function(g,f,j,h,e,d,c){if(h<0){h+=d;e+=4-((d+4)%8)}if(e<0){e+=c;h+=4-((c+4)%8)}if(f[h][e]!=1){g[h][e]=j;f[h][e]=1}},addFinderPattern:function(h,m,d,n,c){var l=(n+2)*m;var k=(c+2)*d;var e=new Array();e[0]=new Array();for(var f=0;f<k+2;f++){e[0][f]=0}for(var g=0;g<l;g++){e[g+1]=new Array();e[g+1][0]=0;e[g+1][k+1]=0;for(var f=0;f<k;f++){if(g%(n+2)==0){if(f%2==0){e[g+1][f+1]=1}else{e[g+1][f+1]=0}}else{if(g%(n+2)==n+1){e[g+1][f+1]=1}else{if(f%(c+2)==c+1){if(g%2==0){e[g+1][f+1]=0}else{e[g+1][f+1]=1}}else{if(f%(c+2)==0){e[g+1][f+1]=1}else{e[g+1][f+1]=0;e[g+1][f+1]=h[g-1-(2*(parseInt(g/(n+2))))][f-1-(2*(parseInt(f/(c+2))))]}}}}}}e[l+1]=new Array();for(var f=0;f<k+2;f++){e[l+1][f]=0}return e},getDigit:function(m,u){var s=this.encodeDataCodeWordsASCII(m);var e=s.length;var h=this.selectIndex(e,u);var n=this.dataCWCount[h];var x=this.solomonCWCount[h];var c=n+x;var A=this.lengthRows[h];var z=this.lengthCols[h];var k=this.regionRows[h];var l=this.regionCols[h];var f=this.dataRegionRows[h];var y=this.dataRegionCols[h];var w=A-2*k;var j=z-2*l;var p=this.interleavedBlocks[h];var q=(x/p);var d=(n/p);this.addPadCW(s,e,n);var v=this.calculSolFactorTable(q);this.addReedSolomonCW(x,v,n,s,p);var t=new Array();for(var r=0;r<c;r++){t[r]=this.getBits(s[r])}var B=new Array();var o=new Array();for(var r=0;r<j;r++){B[r]=new Array();o[r]=new Array()}if(((w*j)%8)==4){B[w-2][j-2]=1;B[w-1][j-1]=1;B[w-1][j-2]=0;B[w-2][j-1]=0;o[w-2][j-2]=1;o[w-1][j-1]=1;o[w-1][j-2]=1;o[w-2][j-1]=1}this.next(0,w,j,t,B,o);B=this.addFinderPattern(B,k,l,f,y);return B}},lec:{cInt:function(e,f){var d="";for(var c=0;c<f;c++){d+=String.fromCharCode(e&255);e=e>>8}return d},cRgb:function(e,d,c){return String.fromCharCode(c)+String.fromCharCode(d)+String.fromCharCode(e)},cHexColor:function(h){var d=parseInt("0x"+h.substr(1));var c=d&255;d=d>>8;var f=d&255;var e=d>>8;return(this.cRgb(e,f,c))}},hexToRGB:function(h){var d=parseInt("0x"+h.substr(1));var c=d&255;d=d>>8;var f=d&255;var e=d>>8;return({r:e,g:f,b:c})},isHexColor:function(d){var c=new RegExp("#[0-91-F]","gi");return d.match(c)},base64Encode:function(o){var c="",h,f,e,n,m,l,j;var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var g=0;while(g<o.length){h=o.charCodeAt(g++);f=o.charCodeAt(g++);e=o.charCodeAt(g++);n=h>>2;m=((h&3)<<4)|(f>>4);l=((f&15)<<2)|(e>>6);j=e&63;if(isNaN(f)){l=j=64}else{if(isNaN(e)){j=64}}c+=d.charAt(n)+d.charAt(m)+d.charAt(l)+d.charAt(j)}return c},bitStringTo2DArray:function(f){var e=[];e[0]=[];for(var c=0;c<f.length;c++){e[0][c]=f.charAt(c)}return(e)},resize:function(d,c){d.css("padding","0px").css("overflow","auto").css("width",c+"px").html("");return d},digitToBmpRenderer:function(t,w,o,g,n,z){var e=o.length;var f=o[0].length;var u=0;var r=this.isHexColor(w.bgColor)?this.lec.cHexColor(w.bgColor):this.lec.cRgb(255,255,255);var q=this.isHexColor(w.color)?this.lec.cHexColor(w.color):this.lec.cRgb(0,0,0);var d="";var c="";for(u=0;u<n;u++){d+=r;c+=q}var p="";var C=(4-((n*f*3)%4))%4;var B=(n*f+C)*z*e;var v="";for(u=0;u<C;u++){v+="\0"}var A="BM"+this.lec.cInt(54+B,4)+"\0\0\0\0"+this.lec.cInt(54,4)+this.lec.cInt(40,4)+this.lec.cInt(n*f,4)+this.lec.cInt(z*e,4)+this.lec.cInt(1,2)+this.lec.cInt(24,2)+"\0\0\0\0"+this.lec.cInt(B,4)+this.lec.cInt(2835,4)+this.lec.cInt(2835,4)+this.lec.cInt(0,4)+this.lec.cInt(0,4);for(var h=e-1;h>=0;h--){var l="";for(var j=0;j<f;j++){l+=o[h][j]=="0"?d:c}l+=v;for(var s=0;s<z;s++){A+=l}}var m=document.createElement("object");m.setAttribute("type","image/bmp");m.setAttribute("data","data:image/bmp;base64,"+this.base64Encode(A));this.resize(t,n*f+C).append(m)},digitToBmp:function(g,f,j,d){var c=a.intval(f.barWidth);var e=a.intval(f.barHeight);this.digitToBmpRenderer(g,f,this.bitStringTo2DArray(j),d,c,e)},digitToBmp2D:function(f,e,g,c){var d=a.intval(e.moduleSize);this.digitToBmpRenderer(f,e,g,c,d,d)},digitToCssRenderer:function(q,d,m,e,p,g){var r=m.length;var c=m[0].length;var j="";var o='<div style="float: left; font-size: 0px; background-color: '+d.bgColor+"; height: "+g+'px; width: &Wpx"></div>';var l='<div style="float: left; font-size: 0px; width:0; border-left: &Wpx solid '+d.color+"; height: "+g+'px;"></div>';var f,h;for(var k=0;k<r;k++){f=0;h=m[k][0];for(var n=0;n<c;n++){if(h==m[k][n]){f++}else{j+=(h=="0"?o:l).replace("&W",f*p);h=m[k][n];f=1}}if(f>0){j+=(h=="0"?o:l).replace("&W",f*p)}}if(d.showHRI){j+='<div style="clear:both; width: 100%; background-color: '+d.bgColor+"; color: "+d.color+"; text-align: center; font-size: "+d.fontSize+"px; margin-top: "+d.marginHRI+'px;">'+e+"</div>"}this.resize(q,p*c).html(j)},digitToCss:function(g,f,j,d){var c=a.intval(f.barWidth);var e=a.intval(f.barHeight);this.digitToCssRenderer(g,f,this.bitStringTo2DArray(j),d,c,e)},digitToCss2D:function(f,e,g,c){var d=a.intval(e.moduleSize);this.digitToCssRenderer(f,e,g,c,d,d)},digitToSvgRenderer:function(q,s,n,f,l,t){var d=n.length;var e=n[0].length;var o=l*e;var u=t*d;if(s.showHRI){var g=a.intval(s.fontSize);u+=a.intval(s.marginHRI)+g}var m='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="'+o+'" height="'+u+'">';m+='<rect width="'+o+'" height="'+u+'" x="0" y="0" fill="'+s.bgColor+'" />';var c='<rect width="&W" height="'+t+'" x="&X" y="&Y" fill="'+s.color+'" />';var r,p;for(var h=0;h<d;h++){r=0;p=n[h][0];for(var j=0;j<e;j++){if(p==n[h][j]){r++}else{if(p=="1"){m+=c.replace("&W",r*l).replace("&X",(j-r)*l).replace("&Y",h*t)}p=n[h][j];r=1}}if((r>0)&&(p=="1")){m+=c.replace("&W",r*l).replace("&X",(e-r)*l).replace("&Y",h*t)}}if(s.showHRI){m+='<g transform="translate('+Math.floor(o/2)+' 0)">';m+='<text y="'+(u-Math.floor(g/2))+'" text-anchor="middle" style="font-family: Arial; font-size: '+g+'px;" fill="'+s.color+'">'+f+"</text>";m+="</g>"}m+="</svg>";var k=document.createElement("object");k.setAttribute("type","image/svg+xml");k.setAttribute("data","data:image/svg+xml,"+m);this.resize(q,o).append(k)},digitToSvg:function(g,f,j,d){var c=a.intval(f.barWidth);var e=a.intval(f.barHeight);this.digitToSvgRenderer(g,f,this.bitStringTo2DArray(j),d,c,e)},digitToSvg2D:function(f,e,g,c){var d=a.intval(e.moduleSize);this.digitToSvgRenderer(f,e,g,c,d,d)},digitToCanvasRenderer:function(s,d,o,f,m,e,q,k){var j=s.get(0);if(!j||!j.getContext){return}var t=o.length;var c=o[0].length;var r=j.getContext("2d");r.lineWidth=1;r.lineCap="butt";r.fillStyle=d.bgColor;r.fillRect(m,e,c*q,t*k);r.fillStyle=d.color;for(var n=0;n<t;n++){var h=0;var l=o[n][0];for(var p=0;p<c;p++){if(l==o[n][p]){h++}else{if(l=="1"){r.fillRect(m+(p-h)*q,e+n*k,q*h,k)}l=o[n][p];h=1}}if((h>0)&&(l=="1")){r.fillRect(m+(c-h)*q,e+n*k,q*h,k)}}if(d.showHRI){var g=r.measureText(f);r.fillText(f,m+Math.floor((c*q-g.width)/2),e+t*k+d.fontSize+d.marginHRI)}},digitToCanvas:function(j,g,l,e){var d=a.intval(g.barWidth);var f=a.intval(g.barHeight);var c=a.intval(g.posX);var k=a.intval(g.posY);this.digitToCanvasRenderer(j,g,this.bitStringTo2DArray(l),e,c,k,d,f)},digitToCanvas2D:function(g,f,j,d){var e=a.intval(f.moduleSize);var c=a.intval(f.posX);var h=a.intval(f.posY);this.digitToCanvasRenderer(g,f,j,d,c,h,e,e)}};b.fn.extend({barcode:function(h,m,f){var o="",g="",d="",k=true,n=false,j=false;if(typeof(h)=="string"){d=h}else{if(typeof(h)=="object"){d=typeof(h.code)=="string"?h.code:"";k=typeof(h.crc)!="undefined"?h.crc:true;n=typeof(h.rect)!="undefined"?h.rect:false}}if(d==""){return(false)}if(typeof(f)=="undefined"){f=[]}for(var c in a.settings){if(f[c]==undefined){f[c]=a.settings[c]}}switch(m){case"std25":case"int25":o=a.i25.getDigit(d,k,m);g=a.i25.compute(d,k,m);break;case"ean8":case"ean13":o=a.ean.getDigit(d,m);g=a.ean.compute(d,m);break;case"code11":o=a.code11.getDigit(d);g=d;break;case"code39":o=a.code39.getDigit(d);g=d;break;case"code93":o=a.code93.getDigit(d,k);g=d;break;case"code128":o=a.code128.getDigit(d);g=d;break;case"codabar":o=a.codabar.getDigit(d);g=d;break;case"msi":o=a.msi.getDigit(d,k);g=a.msi.compute(d,k);break;case"datamatrix":o=a.datamatrix.getDigit(d,n);g=d;j=true;break}if(o.length==0){return(b(this))}if(!j&&f.addQuietZone){o="0000000000"+o+"0000000000"}var l=b(this);var e="digitTo"+f.output.charAt(0).toUpperCase()+f.output.substr(1)+(j?"2D":"");if(typeof(a[e])=="function"){a[e](l,f,o,g)}return(l)}})}(jQuery));
\ No newline at end of file
var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c<a.length&&0==a[c];)c++;this.num=new Array(a.length-c+b);for(var d=0;d<a.length-c;d++)this.num[d]=a[d+c]}function j(a,b){this.totalCount=a,this.dataCount=b}function k(){this.buffer=[],this.length=0}function m(){return"undefined"!=typeof CanvasRenderingContext2D}function n(){var a=!1,b=navigator.userAgent;return/android/i.test(b)&&(a=!0,aMat=b.toString().match(/android ([0-9]\.[0-9])/i),aMat&&aMat[1]&&(a=parseFloat(aMat[1]))),a}function r(a,b){for(var c=1,e=s(a),f=0,g=l.length;g>=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=new Array(this.moduleCount);for(var e=0;e<this.moduleCount;e++)this.modules[d][e]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(a,c),this.typeNumber>=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f<this.modules.length;f++)for(var g=f*e,h=0;h<this.modules[f].length;h++){var i=h*e,j=this.modules[f][h];j&&(d.beginFill(0,100),d.moveTo(i,g),d.lineTo(i+e,g),d.lineTo(i+e,g+e),d.lineTo(i,g+e),d.endFill())}return d},setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(var b=8;b<this.moduleCount-8;b++)null==this.modules[6][b]&&(this.modules[6][b]=0==b%2)},setupPositionAdjustPattern:function(){for(var a=f.getPatternPosition(this.typeNumber),b=0;b<a.length;b++)for(var c=0;c<a.length;c++){var d=a[b],e=a[c];if(null==this.modules[d][e])for(var g=-2;2>=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g<a.length&&(j=1==(1&a[g]>>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h<d.length;h++){var i=d[h];g.put(i.mode,4),g.put(i.getLength(),f.getLengthInBits(i.mode,a)),i.write(g)}for(var l=0,h=0;h<e.length;h++)l+=e[h].dataCount;if(g.getLengthInBits()>8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j<b.length;j++){var k=b[j].dataCount,l=b[j].totalCount-k;d=Math.max(d,k),e=Math.max(e,l),g[j]=new Array(k);for(var m=0;m<g[j].length;m++)g[j][m]=255&a.buffer[m+c];c+=k;var n=f.getErrorCorrectPolynomial(l),o=new i(g[j],n.getLength()-1),p=o.mod(n);h[j]=new Array(n.getLength()-1);for(var m=0;m<h[j].length;m++){var q=m+p.getLength()-h[j].length;h[j][m]=q>=0?p.get(q):0}}for(var r=0,m=0;m<b.length;m++)r+=b[m].totalCount;for(var s=new Array(r),t=0,m=0;d>m;m++)for(var j=0;j<b.length;j++)m<g[j].length&&(s[t++]=g[j][m]);for(var m=0;e>m;m++)for(var j=0;j<b.length;j++)m<h[j].length&&(s[t++]=h[j][m]);return s};for(var c={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},d={L:1,M:0,Q:3,H:2},e={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},f={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var b=a<<10;f.getBCHDigit(b)-f.getBCHDigit(f.G15)>=0;)b^=f.G15<<f.getBCHDigit(b)-f.getBCHDigit(f.G15);return(a<<10|b)^f.G15_MASK},getBCHTypeNumber:function(a){for(var b=a<<12;f.getBCHDigit(b)-f.getBCHDigit(f.G18)>=0;)b^=f.G18<<f.getBCHDigit(b)-f.getBCHDigit(f.G18);return a<<12|b},getBCHDigit:function(a){for(var b=0;0!=a;)b++,a>>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<<h;for(var h=8;256>h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;c<this.getLength();c++)for(var d=0;d<a.getLength();d++)b[c+d]^=g.gexp(g.glog(this.get(c))+g.glog(a.get(d)));return new i(b,0)},mod:function(a){if(this.getLength()-a.getLength()<0)return this;for(var b=g.glog(this.get(0))-g.glog(a.get(0)),c=new Array(this.getLength()),d=0;d<this.getLength();d++)c[d]=this.get(d);for(var d=0;d<a.getLength();d++)c[d]^=g.gexp(g.glog(a.get(d))+b);return new i(c,0).mod(a)}},j.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],j.getRSBlocks=function(a,b){var c=j.getRsBlockTable(a,b);if(void 0==c)throw new Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+b);for(var d=c.length/3,e=[],f=0;d>f;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=['<table style="border:0;border-collapse:collapse;">'],h=0;d>h;h++){g.push("<tr>");for(var i=0;d>i;i++)g.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:'+e+"px;height:"+f+"px;background-color:"+(a.isDark(h,i)?b.colorDark:b.colorLight)+';"></td>');g.push("</tr>")}g.push("</table>"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */
!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t)}(this,function(t){var e=function(){function $(t){return null==t?String(t):S[C.call(t)]||"object"}function F(t){return"function"==$(t)}function k(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function R(t){return"object"==$(t)}function Z(t){return R(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function z(t){var e=!!t&&"length"in t&&t.length,n=r.type(t);return"function"!=n&&!k(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1></$2>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i<t.length;i++)n=e(t[i],i),null!=n&&r.push(n);else for(o in t)n=e(t[o],o),null!=n&&r.push(n);return H(r)},r.each=function(t,e){var n,r;if(z(t)){for(n=0;n<t.length;n++)if(e.call(t[n],n,t[n])===!1)return t}else for(r in t)if(e.call(t[r],r,t[r])===!1)return t;return t},r.grep=function(t,e){return a.call(t,e)},t.JSON&&(r.parseJSON=JSON.parse),r.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){S["[object "+e+"]"]=e.toLowerCase()}),r.fn={constructor:N.Z,length:0,forEach:o.forEach,reduce:o.reduce,push:o.push,sort:o.sort,splice:o.splice,indexOf:o.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=N.isZ(e)?e.toArray():e;return s.apply(N.isZ(this)?this.toArray():this,n)},map:function(t){return r(r.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return r(u.apply(this,arguments))},ready:function(t){return w.test(f.readyState)&&f.body?t(r):f.addEventListener("DOMContentLoaded",function(){t(r)},!1),this},get:function(t){return t===e?u.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("<div>").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e});
\ No newline at end of file
/**
* Created by shipfi on 2016/10/8.
*/
var cacheType = {
CA_MAIN_MENU: 'MAIN_MENU', /* 菜单数据 */
CA_USER_INFO: 'USER_INFO', /* 个人信息数据 */
CA_GROUP_INFO: 'GROUP_INFO', /* 集团配置信息 */
CA_SHOP_ENTRY: 'SHPO_ENTRY', /* 商城入口地址 */
CA_SHOP_ORDER_ENTRY: 'SHOP_ORDER_ENTRY', /* 商城订单入口地址 */
CA_COLUMN_LIST: 'COLUMN_LIST', /* 社区栏目*/
CA_INDEX_COLUMN_LIST: 'INDEX_COLUMN_LIST', /* 首页栏目列表 */
CA_INDEX_TOPIC_LIST: 'INDEX_TOPIC_LIST', /* 首页帖子列表 */
CA_BANNER_LIST: 'BANNER_LIST', /* 轮播广告列表 */
};
var cacheManager = {
/**
* 清除应用所有缓存
*/
clearAll: function () {
window.localStorage.clear();
},
clearItem: function (key) {
window.localStorage.removeItem(key);
return true;
},
/**
* 获得缓存信息
* @param key
* @returns {*}
*/
get: function (key) {
var d = new Date();
var currentTime = parseInt(d.getTime()); // millisecond
var storeData = window.localStorage.getItem(key);
if (!storeData) {
return false;
}
var storeDataFormat = JSON.parse(storeData);
if (typeof storeDataFormat != 'object' || typeof storeDataFormat.expireTime != 'number') {
return false;
}
console.log('====> Expire Time : ' + storeDataFormat.expireTime + '; CurrentTime : ' + currentTime);
if (storeDataFormat.expireTime != 0 && storeDataFormat.expireTime <= currentTime) {
window.localStorage.removeItem(key);
return false;
}
return storeDataFormat.saveValue;
},
/**
* 存储缓存数据
* @param key
* @param value
* @param expires
* @returns {boolean}
*/
set: function (key, value, expires = 3600) {
if (typeof value == 'undefined' || !value) {
return false;
}
var d = new Date();
var currentTime = parseInt(d.getTime()); // millisecond
var expireTime = (expires == 0) ? 0 : currentTime + (expires * 1000);
var storeData = {
saveTime: currentTime,
saveValue: value,
expireTime: expireTime
};
window.localStorage.setItem(key, JSON.stringify(storeData));
return true;
}
};
export {cacheType, cacheManager};
/**
* Created by shipfi on 2016/9/24.
*/
//import Uri from 'jsuri';
//import CMErrCode from '../exception/CMErrCode';
//import CMException from '../exception/CMException';
//import _ from 'lodash';
/**
* 管理URL,默认window.location.href
*/
//class URLManager {
// constructor(hostUrl=null) {
// this.hostUrl = hostUrl?hostUrl:window.location.href;
// this.uri = new Uri(this.hostUrl);
// }
//
// get uriObj() {
// return this.uri;
// }
//
// getQueryParamOrError(param) {
// if(this.uri.hasQueryParam(param)) {
// return this.uri.getQueryParamValue(param);
// }else {
// throw new CMException(CMErrCode.ERR_URL_PARAM_NOT_SET,'grpAppId Param Value Not defined.');
// }
// }
//
// getQueryParam(param) {
// if(this.uri.hasQueryParam(param)) {
// return this.uri.getQueryParamValue(param);
// }else {
// return null;
// }
// }
//
//
// /**
// * 根据参数生成URL地址
// * @param host
// * @param path
// * @param queryParams
// * @returns {*}
// */
// static generateURL(host,path,queryParams) {
// var uriObj = new Uri(host).setPath(path);
// _.forEach(queryParams,function(value,key){
// uriObj.addQueryParam(key,value);
// });
// return uriObj.toString();
// }
//
// static getUriObj(uri=null) {
// var hostUrl = uri?uri:window.location.href;
// return new Uri(hostUrl);
// }
//
// /**
// * 根据Router获得具体的URL地址,分享用
// * 如根据/postSquarePage 得到 http://community.qingger.com/#!/postSquarePage
// * @param routerPath
// * @returns {string}
// */
// static getUrlByRouter(routerPath,wxAppid='') {
// var uriObj = new Uri(window.location.href);
// uriObj.deleteQueryParam('openid'); // 去掉openid参数
// if(wxAppid && !uriObj.hasQueryParam('appid')) {
// uriObj.addQueryParam('appid',wxAppid);
// }
//
// return uriObj.protocol()
// +"://"+uriObj.host()
// +((uriObj.port())?(':'+uriObj.port()):'')
// +uriObj.path()
// +(uriObj.query()?(uriObj.query()):'')
// +'#!'
// +routerPath;
// }
//
// static getCurrentUrlWithoutOpenId() {
// var uriObj = new Uri(window.location.href);
// uriObj.deleteQueryParam('openid');
// return uriObj.toString();
// }
//}
/**
* 字符截取
*/
var sub = {
subtext : function(text,n){
var str=text;
var r=/[^\x00-\xff]/g;
if(str.replace(r,"mm").length<=n){return str;}
var m=Math.floor(n/2);
for(var i=m;i<str.length;i++){
if(str.substr(0,i).replace(r,"mm").length>=n){
return str.substr(0,i)+"...";
}
}
return str;
},
}
/*图片格式化*/
var formatImg={
formatSRC:function(src,w,h){
return src+'?imageView2/1/w/'+w+'/h/'+h;
}
}
/*链接跳转*/
var goto={
gotopage:function(self,type,url){
switch(type.type){
case 1:
console.log("1");
window.location.href=url;
break;
case 2:
console.log("2");
self.$router.push({ name: 'goodsDetail',params: { productId: type.id}})
break;
case 3:
console.log("3");
self.$router.push({ name: 'goodsGroup',params: {typer:'productGroup',productListId: type.id}})
break;
case 4:
console.log("4");
self.$router.push({ name: 'couponDetail',params: { cplId: type.id}})
break;
case 5:
console.log("5");
self.$router.push({ name: 'couponCenter'})
break;
case 6:
console.log("6");
self.$router.push({ name: 'personCenter'})
break;
case 7:
console.log("7");
self.$router.push({ name: 'carList'})
break;
case 8:
console.log("8");
self.$router.push({ name: '/pageId',params: { pageId: type.id}})
break;
default:
console.log("9");
self.$router.push({ name: 'goodsGroup',params: {typer:'productClass',productListId: type.id}})
}
}
}
/*全国省市区数据*/
const address = {
"北京":
[{
"北京":["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "平谷区", "怀柔区", "密云县", "延庆县"]
}],
"天津":
[{
"天津": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "宁河县", "静海县", "蓟 县"]
}],
"河北":
[{
"石家庄": ["长安区", "桥东区", "桥西区", "新华区", "郊 区", "井陉矿区", "井陉县", "正定县", "栾城县", "行唐县", "灵寿县", "高邑县", "深泽县", "赞皇县", "无极县", "平山县", "元氏县", "赵 县", "辛集市", "藁", "晋州市", "新乐市", "鹿泉市"],
"唐山": ["路南区", "路北区", "古冶区", "开平区", "新 区", "丰润县", "滦 县", "滦南县", "乐亭县", "迁西县", "玉田县", "唐海县", "遵化市", "丰南市", "迁安市"],
"秦皇岛": ["海港区", "山海关区", "北戴河区", "青龙满族自治县", "昌黎县", "抚宁县", "卢龙县"],
"邯郸": ["邯山区", "丛台区", "复兴区", "峰峰矿区", "邯郸县", "临漳县", "成安县", "大名县", "涉 县", "磁 县", "肥乡县", "永年县", "邱 县", "鸡泽县", "广平县", "馆陶县", "魏 县", "曲周县", "武安市"],
"邢台": ["桥东区", "桥西区", "邢台县", "临城县", "内丘县", "柏乡县", "隆尧县", "任 县", "南和县", "宁晋县", "巨鹿县", "新河县", "广宗县", "平乡县", "威 县", "清河县", "临西县", "南宫市", "沙河市"],
"保定": ["新市区", "北市区", "南市区", "满城县", "清苑县", "涞水县", "阜平县", "徐水县", "定兴县", "唐 县", "高阳县", "容城县", "涞源县", "望都县", "安新县", "易 县", "曲阳县", "蠡 县", "顺平县", "博野", "雄县", "涿州市", "定州市", "安国市", "高碑店市"],
"张家口": ["桥东区", "桥西区", "宣化区", "下花园区", "宣化县", "张北县", "康保县", "沽源县", "尚义县", "蔚 县", "阳原县", "怀安县", "万全县", "怀来县", "涿鹿县", "赤城县", "崇礼县"],
"承德": ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "兴隆县", "平泉县", "滦平县", "隆化县", "丰宁满族自治县", "宽城满族自治县", "围场满族蒙古族自治县"],
"沧州": ["新华区", "运河区", "沧 县", "青 县", "东光县", "海兴县", "盐山县", "肃宁县", "南皮县", "吴桥县", "献 县", "孟村回族自治县", "泊头市", "任丘市", "黄骅市", "河间市"],
"廊坊": ["安次区", "固安县", "永清县", "香河县", "大城县", "文安县", "大厂回族自治县", "霸州市", "三河市"],
"衡水": ["桃城区", "枣强县", "武邑县", "武强县", "饶阳县", "安平县", "故城县", "景 县", "阜城县", "冀州市", "深州市"]
}],
"山西":
[{
"太原": ["小店区", "迎泽区", "杏花岭区", "尖草坪区", "万柏林区", "晋源区", "清徐县", "阳曲县", "娄烦县", "古交市"],
"大同": ["城 区", "矿 区", "南郊区", "新荣区", "阳高县", "天镇县", "广灵县", "灵丘县", "浑源县", "左云县", "大同县"],
"阳泉": ["城 区", "矿 区", "郊 区", "平定县", "盂 县"],
"长治": ["城 区", "郊 区", "长治县", "襄垣县", "屯留县", "平顺县", "黎城县", "壶关县", "长子县", "武乡县", "沁 县", "沁源县", "潞城市"],
"晋城": ["城 区", "沁水县", "阳城县", "陵川县", "泽州县", "高平市"],
"朔州": ["朔城区", "平鲁区", "山阴县", "应 县", "右玉县", "怀仁县"],
"忻州": ["忻府区", "原平市", "定襄县", "五台县", "代 县", "繁峙县", "宁武县", "静乐县", "神池县", "五寨县", "岢岚县", "河曲县", "保德县", "偏关县"],
"吕梁": ["离石区", "孝义市", "汾阳市", "文水县", "交城县", "兴 县", "临 县", "柳林县", "石楼县", "岚 县", "方山县", "中阳县", "交口县"],
"晋中": ["榆次市", "介休市", "榆社县", "左权县", "和顺县", "昔阳县", "寿阳县", "太谷县", "祁 县", "平遥县", "灵石县"],
"临汾": ["临汾市", "侯马市", "霍州市", "曲沃县", "翼城县", "襄汾县", "洪洞县", "古 县", "安泽县", "浮山县", "吉 县", "乡宁县", "蒲 县", "大宁县", "永和县", "隰 县", "汾西县"],
"运城": ["运城市", "永济市", "河津市", "芮城县", "临猗县", "万荣县", "新绛县", "稷山县", "闻喜县", "夏 县", "绛 县", "平陆县", "垣曲县"]
}],
"内蒙古":
[{
"呼和浩特": ["新城区", "回民区", "玉泉区", "郊 区", "土默特左旗", "托克托县", "和林格尔县", "清水河县", "武川县"],
"包头": ["东河区", "昆都伦区", "青山区", "石拐矿区", "白云矿区", "郊 区", "土默特右旗", "固阳县", "达尔罕茂明安联合旗"],
"乌海": ["海勃湾区", "海南区", "乌达区"],
"赤峰": ["红山区", "元宝山区", "松山区", "阿鲁科尔沁旗", "巴林左旗", "巴林右旗", "林西县", "克什克腾旗", "翁牛特旗", "喀喇沁旗", "宁城县", "敖汉旗"],
"呼伦贝尔": ["海拉尔市", "满洲里市", "扎兰屯市", "牙克石市", "根河市", "额尔古纳市", "阿荣旗", "莫力达瓦达斡尔族自治旗", "鄂伦春自治旗", "鄂温克族自治旗", "新巴尔虎右旗", "新巴尔虎左旗", "陈巴尔虎旗"],
"兴安盟": ["乌兰浩特市", "阿尔山市", "科尔沁右翼前旗", "科尔沁右翼中旗", "扎赉特旗", "突泉县"],
"通辽": ["科尔沁区", "霍林郭勒市", "科尔沁左翼中旗", "科尔沁左翼后旗", "开鲁县", "库伦旗", "奈曼旗", "扎鲁特旗"],
"锡林郭勒盟": ["二连浩特市", "锡林浩特市", "阿巴嘎旗", "苏尼特左旗", "苏尼特右旗", "东乌珠穆沁旗", "西乌珠穆沁旗", "太仆寺旗", "镶黄旗", "正镶白旗", "正蓝旗", "多伦县"],
"乌兰察布盟": ["集宁市", "丰镇市", "卓资县", "化德县", "商都县", "兴和县", "凉城县", "察哈尔右翼前旗", "察哈尔右翼中旗", "察哈尔右翼后旗", "四子王旗"],
"伊克昭盟": ["东胜市", "达拉特旗", "准格尔旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗"],
"巴彦淖尔盟": ["临河市", "五原县", "磴口县", "乌拉特前旗", "乌拉特中旗", "乌拉特后旗", "杭锦后旗"],
"阿拉善盟": ["阿拉善左旗", "阿拉善右旗", "额济纳旗"]
}],
"辽宁":
[{
"沈阳": ["沈河区", "皇姑区", "和平区", "大东区", "铁西区", "苏家屯区", "东陵区", "于洪区", "新民市", "法库县", "辽中县", "康平县", "新城子区", "其他"],
"大连": ["西岗区", "中山区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "瓦房店市", "普兰店市", "庄河市", "长海县", "其他"],
"鞍山": ["铁东区", "铁西区", "立山区", "千山区", "海城市", "台安县", "岫岩满族自治县", "其他"],
"抚顺": ["顺城区", "新抚区", "东洲区", "望花区", "抚顺县", "清原满族自治县", "新宾满族自治县", "其他"],
"本溪": ["平山区", "明山区", "溪湖区", "南芬区", "本溪满族自治县", "桓仁满族自治县", "其他"],
"丹东": ["振兴区", "元宝区", "振安区", "东港市", "凤城市", "宽甸满族自治县", "其他"],
"锦州": ["太和区", "古塔区", "凌河区", "凌海市", "黑山县", "义县", "北宁市", "其他"],
"营口": ["站前区", "西市区", "鲅鱼圈区", "老边区", "大石桥市", "盖州市", "其他"],
"阜新": ["海州区", "新邱区", "太平区", "清河门区", "细河区", "彰武县", "阜新蒙古族自治县", "其他"],
"辽阳": ["白塔区", "文圣区", "宏伟区", "太子河区", "弓长岭区", "灯塔市", "辽阳县", "其他"],
"盘锦": ["双台子区", "兴隆台区", "盘山县", "大洼县", "其他"],
"铁岭": ["银州区", "清河区", "调兵山市", "开原市", "铁岭县", "昌图县", "西丰县", "其他"],
"朝阳": ["双塔区", "龙城区", "凌源市", "北票市", "朝阳县", "建平县", "喀喇沁左翼蒙古族自治县", "其他"],
"葫芦岛": ["龙港区", "南票区", "连山区", "兴城市", "绥中县", "建昌县", "其他"],
"其他": ["其他"]
}],
"吉林":
[{
"长春": ["朝阳区", "宽城区", "二道区", "南关区", "绿园区", "双阳区", "九台市", "榆树市", "德惠市", "农安县", "其他"],
"吉林": ["船营区", "昌邑区", "龙潭区", "丰满区", "舒兰市", "桦甸市", "蛟河市", "磐石市", "永吉县", "其他"],
"四平": ["铁西区", "铁东区", "公主岭市", "双辽市", "梨树县", "伊通满族自治县", "其他"],
"辽源": ["龙山区", "西安区", "东辽县", "东丰县", "其他"],
"通化": ["东昌区", "二道江区", "梅河口市", "集安市", "通化县", "辉南县", "柳河县", "其他"],
"白山": ["八道江区", "江源区", "临江市", "靖宇县", "抚松县", "长白朝鲜族自治县", "其他"],
"松原": ["宁江区", "乾安县", "长岭县", "扶余县", "前郭尔罗斯蒙古族自治县", "其他"],
"白城": ["洮北区", "大安市", "洮南市", "镇赉县", "通榆县", "其他"],
"延边朝鲜族自治州": ["延吉市", "图们市", "敦化市", "龙井市", "珲春市", "和龙市", "安图县", "汪清县", "其他"],
"其他": ["其他"]
}],
"黑龙江":
[{
"哈尔滨": ["松北区", "道里区", "南岗区", "平房区", "香坊区", "道外区", "呼兰区", "阿城区", "双城市", "尚志市", "五常市", "宾县", "方正县", "通河县", "巴彦县", "延寿县", "木兰县", "依兰县", "其他"],
"齐齐哈尔": ["龙沙区", "昂昂溪区", "铁锋区", "建华区", "富拉尔基区", "碾子山区", "梅里斯达斡尔族区", "讷河市", "富裕县", "拜泉县", "甘南县", "依安县", "克山县", "泰来县", "克东县", "龙江县", "其他"],
"鹤岗": ["兴山区", "工农区", "南山区", "兴安区", "向阳区", "东山区", "萝北县", "绥滨县", "其他"],
"双鸭山": ["尖山区", "岭东区", "四方台区", "宝山区", "集贤县", "宝清县", "友谊县", "饶河县", "其他"],
"鸡西": ["鸡冠区", "恒山区", "城子河区", "滴道区", "梨树区", "麻山区", "密山市", "虎林市", "鸡东县", "其他"],
"大庆": ["萨尔图区", "红岗区", "龙凤区", "让胡路区", "大同区", "林甸县", "肇州县", "肇源县", "杜尔伯特蒙古族自治县", "其他"],
"伊春": ["伊春区", "带岭区", "南岔区", "金山屯区", "西林区", "美溪区", "乌马河区", "翠峦区", "友好区", "上甘岭区", "五营区", "红星区", "新青区", "汤旺河区", "乌伊岭区", "铁力市", "嘉荫县", "其他"],
"牡丹江": ["爱民区", "东安区", "阳明区", "西安区", "绥芬河市", "宁安市", "海林市", "穆棱市", "林口县", "东宁县", "其他"],
"佳木斯": ["向阳区", "前进区", "东风区", "郊区", "同江市", "富锦市", "桦川县", "抚远县", "桦南县", "汤原县", "其他"],
"七台河": ["桃山区", "新兴区", "茄子河区", "勃利县", "其他"],
"黑河": ["爱辉区", "北安市", "五大连池市", "逊克县", "嫩江县", "孙吴县", "其他"],
"绥化": ["北林区", "安达市", "肇东市", "海伦市", "绥棱县", "兰西县", "明水县", "青冈县", "庆安县", "望奎县", "其他"],
"大兴安岭地区": ["呼玛县", "塔河县", "漠河县", "大兴安岭辖区", "其他"],
"其他": ["其他"]
}],
"上海":
[{
"上海": ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "宝山区", "闵行区", "嘉定区", "松江区", "金山区", "青浦区", "南汇区", "奉贤区", "浦东新区", "崇明县", "其他"]
}],
"江苏":
[{
"南京": ["玄武区", "白下区", "秦淮区", "建邺区", "鼓楼区", "下关区", "栖霞区", "雨花台区", "浦口区", "江宁区", "六合区", "溧水县", "高淳县", "其他"],
"苏州": ["金阊区", "平江区", "沧浪区", "虎丘区", "吴中区", "相城区", "常熟市", "张家港市", "昆山市", "吴江市", "太仓市", "其他"],
"无锡": ["崇安区", "南长区", "北塘区", "滨湖区", "锡山区", "惠山区", "江阴市", "宜兴市", "其他"],
"常州": ["钟楼区", "天宁区", "戚墅堰区", "新北区", "武进区", "金坛市", "溧阳市", "其他"],
"镇江": ["京口区", "润州区", "丹徒区", "丹阳市", "扬中市", "句容市", "其他"],
"南通": ["崇川区", "港闸区", "通州市", "如皋市", "海门市", "启东市", "海安县", "如东县", "其他"],
"泰州": ["海陵区", "高港区", "姜堰市", "泰兴市", "靖江市", "兴化市", "其他"],
"扬州": ["广陵区", "维扬区", "邗江区", "江都市", "仪征市", "高邮市", "宝应县", "其他"],
"盐城": ["亭湖区", "盐都区", "大丰市", "东台市", "建湖县", "射阳县", "阜宁县", "滨海县", "响水县", "其他"],
"连云港": ["新浦区", "海州区", "连云区", "东海县", "灌云县", "赣榆县", "灌南县", "其他"],
"徐州": ["云龙区", "鼓楼区", "九里区", "泉山区", "贾汪区", "邳州市", "新沂市", "铜山县", "睢宁县", "沛县", "丰县", "其他"],
"淮安": ["清河区", "清浦区", "楚州区", "淮阴区", "涟水县", "洪泽县", "金湖县", "盱眙县", "其他"],
"宿迁": ["宿城区", "宿豫区", "沭阳县", "泗阳县", "泗洪县", "其他"],
"其他": ["其他"]
}],
"浙江":
[{
"杭州": ["拱墅区", "西湖区", "上城区", "下城区", "江干区", "滨江区", "余杭区", "萧山区", "建德市", "富阳市", "临安市", "桐庐县", "淳安县", "其他"],
"宁波": ["海曙区", "江东区", "江北区", "镇海区", "北仑区", "鄞州区", "余姚市", "慈溪市", "奉化市", "宁海县", "象山县", "其他"],
"温州": ["鹿城区", "龙湾区", "瓯海区", "瑞安市", "乐清市", "永嘉县", "洞头县", "平阳县", "苍南县", "文成县", "泰顺县", "其他"],
"嘉兴": ["秀城区", "秀洲区", "海宁市", "平湖市", "桐乡市", "嘉善县", "海盐县", "其他"],
"湖州": ["吴兴区", "南浔区", "长兴县", "德清县", "安吉县", "其他"],
"绍兴": ["越城区", "诸暨市", "上虞市", "嵊州市", "绍兴县", "新昌县", "其他"],
"金华": ["婺城区", "金东区", "兰溪市", "义乌市", "东阳市", "永康市", "武义县", "浦江县", "磐安县", "其他"],
"衢州": ["柯城区", "衢江区", "江山市", "龙游县", "常山县", "开化县", "其他"],
"舟山": ["定海区", "普陀区", "岱山县", "嵊泗县", "其他"],
"台州": ["椒江区", "黄岩区", "路桥区", "临海市", "温岭市", "玉环县", "天台县", "仙居县", "三门县", "其他"],
"丽水": ["莲都区", "龙泉市", "缙云县", "青田县", "云和县", "遂昌县", "松阳县", "庆元县", "景宁畲族自治县", "其他"],
"其他": ["其他"]
}],
"安徽":
[{
"合肥": ["庐阳区", "瑶海区", "蜀山区", "包河区", "长丰县", "肥东县", "肥西县", "其他"],
"芜湖": ["镜湖区", "弋江区", "鸠江区", "三山区", "芜湖县", "南陵县", "繁昌县", "其他"],
"蚌埠": ["蚌山区", "龙子湖区", "禹会区", "淮上区", "怀远县", "固镇县", "五河县", "其他"],
"淮南": ["田家庵区", "大通区", "谢家集区", "八公山区", "潘集区", "凤台县", "其他"],
"马鞍山": ["雨山区", "花山区", "金家庄区", "当涂县", "其他"],
"淮北": ["相山区", "杜集区", "烈山区", "濉溪县", "其他"],
"铜陵": ["铜官山区", "狮子山区", "郊区", "铜陵县", "其他"],
"安庆": ["迎江区", "大观区", "宜秀区", "桐城市", "宿松县", "枞阳县", "太湖县", "怀宁县", "岳西县", "望江县", "潜山县", "其他"],
"黄山": ["屯溪区", "黄山区", "徽州区", "休宁县", "歙县", "祁门县", "黟县", "其他"],
"滁州": ["琅琊区", "南谯区", "天长市", "明光市", "全椒县", "来安县", "定远县", "凤阳县", "其他"],
"阜阳": ["颍州区", "颍东区", "颍泉区", "界首市", "临泉县", "颍上县", "阜南县", "太和县", "其他"],
"宿州": ["埇桥区", "萧县", "泗县", "砀山县", "灵璧县", "其他"],
"巢湖": ["居巢区", "含山县", "无为县", "庐江县", "和县", "其他"],
"六安": ["金安区", "裕安区", "寿县", "霍山县", "霍邱县", "舒城县", "金寨县", "其他"],
"亳州": ["谯城区", "利辛县", "涡阳县", "蒙城县", "其他"],
"池州": ["贵池区", "东至县", "石台县", "青阳县", "其他"],
"宣城": ["宣州区", "宁国市", "广德县", "郎溪县", "泾县", "旌德县", "绩溪县", "其他"],
"其他": ["其他"]
}],
"福建":
[{
"福州": ["鼓楼区", "台江区", "仓山区", "马尾区", "晋安区", "福清市", "长乐市", "闽侯县", "闽清县", "永泰县", "连江县", "罗源县", "平潭县", "其他"],
"厦门": ["思明区", "海沧区", "湖里区", "集美区", "同安区", "翔安区", "其他"],
"莆田": ["城厢区", "涵江区", "荔城区", "秀屿区", "仙游县", "其他"],
"三明": ["梅列区", "三元区", "永安市", "明溪县", "将乐县", "大田县", "宁化县", "建宁县", "沙县", "尤溪县", "清流县", "泰宁县", "其他"],
"泉州": ["鲤城区", "丰泽区", "洛江区", "泉港区", "石狮市", "晋江市", "南安市", "惠安县", "永春县", "安溪县", "德化县", "金门县", "其他"],
"漳州": ["芗城区", "龙文区", "龙海市", "平和县", "南靖县", "诏安县", "漳浦县", "华安县", "东山县", "长泰县", "云霄县", "其他"],
"南平": ["延平区", "建瓯市", "邵武市", "武夷山市", "建阳市", "松溪县", "光泽县", "顺昌县", "浦城县", "政和县", "其他"],
"龙岩": ["新罗区", "漳平市", "长汀县", "武平县", "上杭县", "永定县", "连城县", "其他"],
"宁德":["蕉城区", "福安市", "福鼎市", "寿宁县", "霞浦县", "柘荣县", "屏南县", "古田县", "周宁县", "其他"],
"其他": ["其他"]
}],
"江西":
[{
"南昌": ["东湖区", "西湖区", "青云谱区", "湾里区", "青山湖区", "新建县", "南昌县", "进贤县", "安义县", "其他"],
"景德镇": ["珠山区", "昌江区", "乐平市", "浮梁县", "其他"],
"萍乡": ["安源区", "湘东区", "莲花县", "上栗县", "芦溪县", "其他"],
"九江": ["浔阳区", "庐山区", "瑞昌市", "九江县", "星子县", "武宁县", "彭泽县", "永修县", "修水县", "湖口县", "德安县", "都昌县", "其他"],
"新余": ["渝水区", "分宜县", "其他"],
"鹰潭": ["月湖区", "贵溪市", "余江县", "其他"],
"赣州": ["章贡区", "瑞金市", "南康市", "石城县", "安远县", "赣县", "宁都县", "寻乌县", "兴国县", "定南县", "上犹县", "于都县", "龙南县", "崇义县", "信丰县", "全南县", "大余县", "会昌县", "其他"],
"吉安": ["吉州区", "青原区", "井冈山市", "吉安县", "永丰县", "永新县", "新干县", "泰和县", "峡江县", "遂川县", "安福县", "吉水县", "万安县", "其他"],
"宜春": ["袁州区", "丰城市", "樟树市", "高安市", "铜鼓县", "靖安县", "宜丰县", "奉新县", "万载县", "上高县", "其他"],
"抚州": ["临川区", "南丰县", "乐安县", "金溪县", "南城县", "东乡县", "资溪县", "宜黄县", "广昌县", "黎川县", "崇仁县", "其他"],
"上饶": ["信州区", "德兴市", "上饶县", "广丰县", "鄱阳县", "婺源县", "铅山县", "余干县", "横峰县", "弋阳县", "玉山县", "万年县", "其他"],
"其他": ["其他"]
}],
"山东":
[{
"济南": ["市中区", "历下区", "天桥区", "槐荫区", "历城区", "长清区", "章丘市", "平阴县", "济阳县", "商河县", "其他"],
"青岛": ["市南区", "市北区", "城阳区", "四方区", "李沧区", "黄岛区", "崂山区", "胶南市", "胶州市", "平度市", "莱西市", "即墨市", "其他"],
"淄博": ["张店区", "临淄区", "淄川区", "博山区", "周村区", "桓台县", "高青县", "沂源县", "其他"],
"枣庄":["市中区", "山亭区", "峄城区", "台儿庄区", "薛城区", "滕州市", "其他"],
"东营": ["东营区", "河口区", "垦利县", "广饶县", "利津县", "其他"],
"烟台": ["芝罘区", "福山区", "牟平区", "莱山区", "龙口市", "莱阳市", "莱州市", "招远市", "蓬莱市", "栖霞市", "海阳市", "长岛县", "其他"],
"潍坊": ["潍城区", "寒亭区", "坊子区", "奎文区", "青州市", "诸城市", "寿光市", "安丘市", "高密市", "昌邑市", "昌乐县", "临朐县", "其他"],
"济宁": ["市中区", "任城区", "曲阜市", "兖州市", "邹城市", "鱼台县", "金乡县", "嘉祥县", "微山县", "汶上县", "泗水县", "梁山县", "其他"],
"泰安": ["泰山区", "岱岳区", "新泰市", "肥城市", "宁阳县", "东平县", "其他"],
"威海": ["环翠区", "乳山市", "文登市", "荣成市", "其他"],
"日照": ["东港区", "岚山区", "五莲县", "莒县", "其他"],
"莱芜": ["莱城区", "钢城区", "其他"],
"临沂": ["兰山区", "罗庄区", "河东区", "沂南县", "郯城县", "沂水县", "苍山县", "费县", "平邑县", "莒南县", "蒙阴县", "临沭县", "其他"],
"德州": ["德城区", "乐陵市", "禹城市", "陵县", "宁津县", "齐河县", "武城县", "庆云县", "平原县", "夏津县", "临邑县", "其他"],
"聊城": ["东昌府区", "临清市", "高唐县", "阳谷县", "茌平县", "莘县", "东阿县", "冠县", "其他"],
"滨州": ["滨城区", "邹平县", "沾化县", "惠民县", "博兴县", "阳信县", "无棣县", "其他"],
"菏泽": ["牡丹区", "鄄城县", "单县", "郓城县", "曹县", "定陶县", "巨野县", "东明县", "成武县", "其他"],
"其他": ["其他"]
}],
"河南":
[{
"郑州": ["中原区", "金水区", "二七区", "管城回族区", "上街区", "惠济区", "巩义市", "新郑市", "新密市", "登封市", "荥阳市", "中牟县", "其他"],
"开封": ["鼓楼区", "龙亭区", "顺河回族区", "禹王台区", "金明区", "开封县", "尉氏县", "兰考县", "杞县", "通许县", "其他"],
"洛阳": ["西工区", "老城区", "涧西区", "瀍河回族区", "洛龙区", "吉利区", "偃师市", "孟津县", "汝阳县", "伊川县", "洛宁县", "嵩县", "宜阳县", "新安县", "栾川县", "其他"],
"平顶山": ["新华区", "卫东区", "湛河区", "石龙区", "汝州市", "舞钢市", "宝丰县", "叶县", "郏县", "鲁山县", "其他"],
"安阳": ["北关区", "文峰区", "殷都区", "龙安区", "林州市", "安阳县", "滑县", "内黄县", "汤阴县", "其他"],
"鹤壁": ["淇滨区", "山城区", "鹤山区", "浚县", "淇县", "其他"],
"新乡": ["卫滨区", "红旗区", "凤泉区", "牧野区", "卫辉市", "辉县市", "新乡县", "获嘉县", "原阳县", "长垣县", "封丘县", "延津县", "其他"],
"焦作": ["解放区", "中站区", "马村区", "山阳区", "沁阳市", "孟州市", "修武县", "温县", "武陟县", "博爱县", "其他"],
"濮阳": ["华龙区", "濮阳县", "南乐县", "台前县", "清丰县", "范县", "其他"],
"许昌": ["魏都区", "禹州市", "长葛市", "许昌县", "鄢陵县", "襄城县", "其他"],
"漯河": ["源汇区", "郾城区", "召陵区", "临颍县", "舞阳县", "其他"],
"三门峡": ["湖滨区", "义马市", "灵宝市", "渑池县", "卢氏县", "陕县", "其他"],
"南阳": ["卧龙区", "宛城区", "邓州市", "桐柏县", "方城县", "淅川县", "镇平县", "唐河县", "南召县", "内乡县", "新野县", "社旗县", "西峡县", "其他"],
"商丘": ["梁园区", "睢阳区", "永城市", "宁陵县", "虞城县", "民权县", "夏邑县", "柘城县", "睢县", "其他"],
"信阳": ["浉河区", "平桥区", "潢川县", "淮滨县", "息县", "新县", "商城县", "固始县", "罗山县", "光山县", "其他"],
"周口": ["川汇区", "项城市", "商水县", "淮阳县", "太康县", "鹿邑县", "西华县", "扶沟县", "沈丘县", "郸城县", "其他"],
"驻马店": ["驿城区", "确山县", "新蔡县", "上蔡县", "西平县", "泌阳县", "平舆县", "汝南县", "遂平县", "正阳县", "其他"],
"焦作": ["济源市", "其他"],
"其他": ["其他"]
}],
"湖北":
[{
"武汉": ["江岸区", "武昌区", "江汉区", "硚口区", "汉阳区", "青山区", "洪山区", "东西湖区", "汉南区", "蔡甸区", "江夏区", "黄陂区", "新洲区", "其他"],
"黄石": ["黄石港区", "西塞山区", "下陆区", "铁山区", "大冶市", "阳新县", "其他"],
"十堰": ["张湾区", "茅箭区", "丹江口市", "郧县", "竹山县", "房县", "郧西县", "竹溪县", "其他"],
"荆州": ["沙市区", "荆州区", "洪湖市", "石首市", "松滋市", "监利县", "公安县", "江陵县", "其他"],
"宜昌": ["西陵区", "伍家岗区", "点军区", "猇亭区", "夷陵区", "宜都市", "当阳市", "枝江市", "秭归县", "远安县", "兴山县", "五峰土家族自治县", "长阳土家族自治县", "其他"],
"襄樊": ["襄城区", "樊城区", "襄阳区", "老河口市", "枣阳市", "宜城市", "南漳县", "谷城县", "保康县", "其他"],
"鄂州": ["鄂城区", "华容区", "梁子湖区", "其他"],
"荆门": ["东宝区", "掇刀区", "钟祥市", "京山县", "沙洋县", "其他"],
"孝感": ["孝南区", "应城市", "安陆市", "汉川市", "云梦县", "大悟县", "孝昌县", "其他"],
"黄冈": ["黄州区", "麻城市", "武穴市", "红安县", "罗田县", "浠水县", "蕲春县", "黄梅县", "英山县", "团风县", "其他"],
"咸宁": ["咸安区", "赤壁市", "嘉鱼县", "通山县", "崇阳县", "通城县", "其他"],
"随州": ["曾都区", "广水市", "其他"],
"恩施土家族苗族自治州": ["恩施市", "利川市", "建始县", "来凤县", "巴东县", "鹤峰县", "宣恩县", "咸丰县", "其他"],
"仙桃": ["仙桃"],
"天门": ["天门"],
"潜江": ["潜江"],
"神农架林区": ["神农架林区"],
"其他": ["其他"]
}],
"湖南":
[{
"长沙": ["岳麓区", "芙蓉区", "天心区", "开福区", "雨花区", "浏阳市", "长沙县", "望城县", "宁乡县", "其他"],
"株洲": ["天元区", "荷塘区", "芦淞区", "石峰区", "醴陵市", "株洲县", "炎陵县", "茶陵县", "攸县", "其他"],
"湘潭": ["岳塘区", "雨湖区", "湘乡市", "韶山市", "湘潭县", "其他"],
"衡阳": ["雁峰区", "珠晖区", "石鼓区", "蒸湘区", "南岳区", "耒阳市", "常宁市", "衡阳县", "衡东县", "衡山县", "衡南县", "祁东县", "其他"],
"邵阳": ["双清区", "大祥区", "北塔区", "武冈市", "邵东县", "洞口县", "新邵县", "绥宁县", "新宁县", "邵阳县", "隆回县", "城步苗族自治县", "其他"],
"岳阳": ["岳阳楼区", "云溪区", "君山区", "临湘市", "汨罗市", "岳阳县", "湘阴县", "平江县", "华容县", "其他"],
"常德": ["武陵区", "鼎城区", "津市市", "澧县", "临澧县", "桃源县", "汉寿县", "安乡县", "石门县", "其他"],
"张家界": ["永定区", "武陵源区", "慈利县", "桑植县", "其他"],
"益阳": ["赫山区", "资阳区", "沅江市", "桃江县", "南县", "安化县", "其他"],
"郴州": ["北湖区", "苏仙区", "资兴市", "宜章县", "汝城县", "安仁县", "嘉禾县", "临武县", "桂东县", "永兴县", "桂阳县", "其他"],
"永州": ["冷水滩区", "零陵区", "祁阳县", "蓝山县", "宁远县", "新田县", "东安县", "江永县", "道县", "双牌县", "江华瑶族自治县", "其他"],
"怀化": ["鹤城区", "洪江市", "会同县", "沅陵县", "辰溪县", "溆浦县", "中方县", "新晃侗族自治县", "芷江侗族自治县", "通道侗族自治县", "靖州苗族侗族自治县", "麻阳苗族自治县", "其他"],
"娄底": ["娄星区", "冷水江市", "涟源市", "新化县", "双峰县", "其他"],
"湘西土家族苗族自治州": ["吉首市", "古丈县", "龙山县", "永顺县", "凤凰县", "泸溪县", "保靖县", "花垣县", "其他"],
"其他": ["其他"]
}],
"广东":
[{
"广州": ["越秀区", "荔湾区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "萝岗区", "增城市", "从化市", "其他"],
"深圳": ["福田区", "罗湖区", "南山区", "宝安区", "龙岗区", "盐田区", "其他"],
"东莞": ["莞城", "常平", "塘厦", "塘厦", "塘厦", "其他"],
"中山": ["中山"],
"潮州": ["湘桥区", "潮安县", "饶平县", "其他"],
"揭阳": ["榕城区", "揭东县", "揭西县", "惠来县", "普宁市", "其他"],
"云浮": ["云城区", "新兴县", "郁南县", "云安县", "罗定市", "其他"],
"珠海": ["香洲区", "斗门区", "金湾区", "其他"],
"汕头": ["金平区", "濠江区", "龙湖区", "潮阳区", "潮南区", "澄海区", "南澳县", "其他"],
"韶关": ["浈江区", "武江区", "曲江区", "乐昌市", "南雄市", "始兴县", "仁化县", "翁源县", "新丰县", "乳源瑶族自治县", "其他"],
"佛山": ["禅城区", "南海区", "顺德区", "三水区", "高明区", "其他"],
"江门": ["蓬江区", "江海区", "新会区", "恩平市", "台山市", "开平市", "鹤山市", "其他"],
"湛江": ["赤坎区", "霞山区", "坡头区", "麻章区", "吴川市", "廉江市", "雷州市", "遂溪县", "徐闻县", "其他"],
"茂名": ["茂南区", "茂港区", "化州市", "信宜市", "高州市", "电白县", "其他"],
"肇庆": ["端州区", "鼎湖区", "高要市", "四会市", "广宁县", "怀集县", "封开县", "德庆县", "其他"],
"惠州": ["惠城区", "惠阳区", "博罗县", "惠东县", "龙门县", "其他"],
"梅州": ["梅江区", "兴宁市", "梅县", "大埔县", "丰顺县", "五华县", "平远县", "蕉岭县", "其他"],
"汕尾": ["城区", "陆丰市", "海丰县", "陆河县", "其他"],
"河源": ["源城区", "紫金县", "龙川县", "连平县", "和平县", "东源县", "其他"],
"阳江": ["江城区", "阳春市", "阳西县", "阳东县", "其他"],
"清远": ["清城区", "英德市", "连州市", "佛冈县", "阳山县", "清新县", "连山壮族瑶族自治县", "连南瑶族自治县", "其他"]
}],
"广西":
[{
"南宁": ["青秀区", "兴宁区", "西乡塘区", "良庆区", "江南区", "邕宁区", "武鸣县", "隆安县", "马山县", "上林县", "宾阳县", "横县", "其他"],
"柳州": ["城中区", "鱼峰区", "柳北区", "柳南区", "柳江县", "柳城县", "鹿寨县", "融安县", "融水苗族自治县", "三江侗族自治县", "其他"],
"桂林": ["象山区", "秀峰区", "叠彩区", "七星区", "雁山区", "阳朔县", "临桂县", "灵川县", "全州县", "平乐县", "兴安县", "灌阳县", "荔浦县", "资源县", "永福县", "龙胜各族自治县", "恭城瑶族自治县", "其他"],
"梧州": ["万秀区", "蝶山区", "长洲区", "岑溪市", "苍梧县", "藤县", "蒙山县", "其他"],
"北海": ["海城区", "银海区", "铁山港区", "合浦县", "其他"],
"防城港": ["港口区", "防城区", "东兴市", "上思县", "其他"],
"钦州": ["钦南区", "钦北区", "灵山县", "浦北县", "其他"],
"贵港": ["港北区", "港南区", "覃塘区", "桂平市", "平南县", "其他"],
"玉林": ["玉州区", "北流市", "容县", "陆川县", "博白县", "兴业县", "其他"],
"百色": ["右江区", "凌云县", "平果县", "西林县", "乐业县", "德保县", "田林县", "田阳县", "靖西县", "田东县", "那坡县", "隆林各族自治县", "其他"],
"贺州": ["八步区", "钟山县", "昭平县", "富川瑶族自治县", "其他"],
"河池": ["金城江区", "宜州市", "天峨县", "凤山县", "南丹县", "东兰县", "都安瑶族自治县", "罗城仫佬族自治县", "巴马瑶族自治县", "环江毛南族自治县", "大化瑶族自治县", "其他"],
"来宾": ["兴宾区", "合山市", "象州县", "武宣县", "忻城县", "金秀瑶族自治县", "其他"],
"崇左": ["江州区", "凭祥市", "宁明县", "扶绥县", "龙州县", "大新县", "天等县", "其他"],
"其他": ["其他"]
}],
"海南":
[{
"海口": ["龙华区", "秀英区", "琼山区", "美兰区", "其他"],
"三亚": ["三亚市", "其他"],
"五指山": ["五指山"],
"琼海": ["琼海"],
"儋州": ["儋州"],
"文昌": ["文昌"],
"万宁": ["万宁"],
"东方": ["东方"],
"澄迈县": ["澄迈县"],
"定安县": ["定安县"],
"屯昌县": ["屯昌县"],
"临高县": ["临高县"],
"白沙黎族自治县": ["白沙黎族自治县"],
"昌江黎族自治县": ["昌江黎族自治县"],
"乐东黎族自治县": ["乐东黎族自治县"],
"陵水黎族自治县": ["陵水黎族自治县"],
"保亭黎族苗族自治县": ["保亭黎族苗族自治县"],
"琼中黎族苗族自治县": ["琼中黎族苗族自治县"],
"其他": ["其他"]
}],
"重庆":
[{
"重庆": ["渝中区", "大渡口区", "江北区", "南岸区", "北碚区", "渝北区", "巴南区", "长寿区", "双桥区", "沙坪坝区", "万盛区", "万州区", "涪陵区", "黔江区", "永川区", "合川区", "江津区", "九龙坡区", "南川区", "綦江县", "潼南县", "荣昌县", "璧山县", "大足县", "铜梁县", "梁平县", "开县", "忠县", "城口县", "垫江县", "武隆县", "丰都县", "奉节县", "云阳县", "巫溪县", "巫山县", "石柱土家族自治县", "秀山土家族苗族自治县", "酉阳土家族苗族自治县", "彭水苗族土家族自治县", "其他"]
}],
"四川":
[{
"成都": ["青羊区", "锦江区", "金牛区", "武侯区", "成华区", "龙泉驿区", "青白江区", "新都区", "温江区", "都江堰市", "彭州市", "邛崃市", "崇州市", "金堂县", "郫县", "新津县", "双流县", "蒲江县", "大邑县", "其他"],
"自贡": ["大安区", "自流井区", "贡井区", "沿滩区", "荣县", "富顺县", "其他"],
"攀枝花": ["仁和区", "米易县", "盐边县", "东区", "西区", "其他"],
"泸州": ["江阳区", "纳溪区", "龙马潭区", "泸县", "合江县", "叙永县", "古蔺县", "其他"],
"德阳": ["旌阳区", "广汉市", "什邡市", "绵竹市", "罗江县", "中江县", "其他"],
"绵阳": ["涪城区", "游仙区", "江油市", "盐亭县", "三台县", "平武县", "安县", "梓潼县", "北川羌族自治县", "其他"],
"广元": ["元坝区", "朝天区", "青川县", "旺苍县", "剑阁县", "苍溪县", "市中区", "其他"],
"遂宁": ["船山区", "安居区", "射洪县", "蓬溪县", "大英县", "其他"],
"内江": ["市中区", "东兴区", "资中县", "隆昌县", "威远县", "其他"],
"乐山": ["市中区", "五通桥区", "沙湾区", "金口河区", "峨眉山市", "夹江县", "井研县", "犍为县", "沐川县", "马边彝族自治县", "峨边彝族自治县", "其他"],
"南充": ["顺庆区", "高坪区", "嘉陵区", "阆中市", "营山县", "蓬安县", "仪陇县", "南部县", "西充县", "其他"],
"眉山": ["东坡区", "仁寿县", "彭山县", "洪雅县", "丹棱县", "青神县", "其他"],
"宜宾": ["翠屏区", "宜宾县", "兴文县", "南溪县", "珙县", "长宁县", "高县", "江安县", "筠连县", "屏山县", "其他"],
"广安": ["广安区", "华蓥市", "岳池县", "邻水县", "武胜县", "其他"],
"达州": ["通川区", "万源市", "达县", "渠县", "宣汉县", "开江县", "大竹县", "其他"],
"雅安": ["雨城区", "芦山县", "石棉县", "名山县", "天全县", "荥经县", "宝兴县", "汉源县", "其他"],
"巴中": ["巴州区", "南江县", "平昌县", "通江县", "其他"],
"资阳": ["雁江区", "简阳市", "安岳县", "乐至县", "其他"],
"阿坝藏族羌族自治州": ["马尔康县", "九寨沟县", "红原县", "汶川县", "阿坝县", "理县", "若尔盖县", "小金县", "黑水县", "金川县", "松潘县", "壤塘县", "茂县", "其他"],
"甘孜藏族自治州": ["康定县", "丹巴县", "炉霍县", "九龙县", "甘孜县", "雅江县", "新龙县", "道孚县", "白玉县", "理塘县", "德格县", "乡城县", "石渠县", "稻城县", "色达县", "巴塘县", "泸定县", "得荣县", "其他"],
"凉山彝族自治州": ["西昌市", "美姑县", "昭觉县", "金阳县", "甘洛县", "布拖县", "雷波县", "普格县", "宁南县", "喜德县", "会东县", "越西县", "会理县", "盐源县", "德昌县", "冕宁县", "木里藏族自治县", "其他"],
"其他": ["其他"]
}],
"贵州":
[{
"贵阳": ["南明区", "云岩区", "花溪区", "乌当区", "白云区", "小河区", "清镇市", "开阳县", "修文县", "息烽县", "其他"],
"六盘水": ["钟山区", "水城县", "盘县", "六枝特区", "其他"],
"遵义": ["红花岗区", "汇川区", "赤水市", "仁怀市", "遵义县", "绥阳县", "桐梓县", "习水县", "凤冈县", "正安县", "余庆县", "湄潭县", "道真仡佬族苗族自治县", "务川仡佬族苗族自治县", "其他"],
"安顺": ["西秀区", "普定县", "平坝县", "镇宁布依族苗族自治县", "紫云苗族布依族自治县", "关岭布依族苗族自治县", "其他"],
"铜仁地区": ["铜仁市", "德江县", "江口县", "思南县", "石阡县", "玉屏侗族自治县", "松桃苗族自治县", "印江土家族苗族自治县", "沿河土家族自治县", "万山特区", "其他"],
"毕节地区": ["毕节市", "黔西县", "大方县", "织金县", "金沙县", "赫章县", "纳雍县", "威宁彝族回族苗族自治县", "其他"],
"黔西南布依族苗族自治州": ["兴义市", "望谟县", "兴仁县", "普安县", "册亨县", "晴隆县", "贞丰县", "安龙县", "其他"],
"黔东南苗族侗族自治州": ["凯里市", "施秉县", "从江县", "锦屏县", "镇远县", "麻江县", "台江县", "天柱县", "黄平县", "榕江县", "剑河县", "三穗县", "雷山县", "黎平县", "岑巩县", "丹寨县", "其他"],
"黔南布依族苗族自治州": ["都匀市", "福泉市", "贵定县", "惠水县", "罗甸县", "瓮安县", "荔波县", "龙里县", "平塘县", "长顺县", "独山县", "三都水族自治县", "其他"],
"其他": ["其他"]
}],
"云南":
[{
"昆明": ["盘龙区", "五华区", "官渡区", "西山区", "东川区", "安宁市", "呈贡县", "晋宁县", "富民县", "宜良县", "嵩明县", "石林彝族自治县", "禄劝彝族苗族自治县", "寻甸回族彝族自治县", "其他"],
"曲靖": ["麒麟区", "宣威市", "马龙县", "沾益县", "富源县", "罗平县", "师宗县", "陆良县", "会泽县", "其他"],
"玉溪": ["红塔区", "江川县", "澄江县", "通海县", "华宁县", "易门县", "峨山彝族自治县", "新平彝族傣族自治县", "元江哈尼族彝族傣族自治县", "其他"],
"保山": ["隆阳区", "施甸县", "腾冲县", "龙陵县", "昌宁县", "其他"],
"昭通": ["昭阳区", "鲁甸县", "巧家县", "盐津县", "大关县", "永善县", "绥江县", "镇雄县", "彝良县", "威信县", "水富县", "其他"],
"丽江": ["古城区", "永胜县", "华坪县", "玉龙纳西族自治县", "宁蒗彝族自治县", "其他"],
"普洱": ["思茅区", "普洱哈尼族彝族自治县", "墨江哈尼族自治县", "景东彝族自治县", "景谷傣族彝族自治县", "镇沅彝族哈尼族拉祜族自治县", "江城哈尼族彝族自治县", "孟连傣族拉祜族佤族自治县", "澜沧拉祜族自治县", "西盟佤族自治县", "其他"],
"临沧": ["临翔区", "凤庆县", "云县", "永德县", "镇康县", "双江拉祜族佤族布朗族傣族自治县", "耿马傣族佤族自治县", "沧源佤族自治县", "其他"],
"德宏傣族景颇族自治州": ["潞西市", "瑞丽市", "梁河县", "盈江县", "陇川县", "其他"],
"怒江傈僳族自治州": ["泸水县", "福贡县", "贡山独龙族怒族自治县", "兰坪白族普米族自治县", "其他"],
"迪庆藏族自治州": ["香格里拉县", "德钦县", "维西傈僳族自治县", "其他"],
"大理白族自治州": ["大理市", "祥云县", "宾川县", "弥渡县", "永平县", "云龙县", "洱源县", "剑川县", "鹤庆县", "漾濞彝族自治县", "南涧彝族自治县", "巍山彝族回族自治县", "其他"],
"楚雄彝族自治州": ["楚雄市", "双柏县", "牟定县", "南华县", "姚安县", "大姚县", "永仁县", "元谋县", "武定县", "禄丰县", "其他"],
"红河哈尼族彝族自治州": ["蒙自县", "个旧市", "开远市", "绿春县", "建水县", "石屏县", "弥勒县", "泸西县", "元阳县", "红河县", "金平苗族瑶族傣族自治县", "河口瑶族自治县", "屏边苗族自治县", "其他"],
"文山壮族苗族自治州": ["文山县", "砚山县", "西畴县", "麻栗坡县", "马关县", "丘北县", "广南县", "富宁县", "其他"],
"西双版纳傣族自治州": ["景洪市", "勐海县", "勐腊县", "其他"],
"其他": ["其他"]
}],
"西藏":
[{
"拉萨": ["城关区", "林周县", "当雄县", "尼木县", "曲水县", "堆龙德庆县", "达孜县", "墨竹工卡县", "其他"],
"那曲地区": ["那曲县", "嘉黎县", "比如县", "聂荣县", "安多县", "申扎县", "索县", "班戈县", "巴青县", "尼玛县", "其他"],
"昌都地区": ["昌都县", "江达县", "贡觉县", "类乌齐县", "丁青县", "察雅县", "八宿县", "左贡县", "芒康县", "洛隆县", "边坝县", "其他"],
"林芝地区": ["林芝县", "工布江达县", "米林县", "墨脱县", "波密县", "察隅县", "朗县", "其他"],
"山南地区": ["乃东县", "扎囊县", "贡嘎县", "桑日县", "琼结县", "曲松县", "措美县", "洛扎县", "加查县", "隆子县", "错那县", "浪卡子县", "其他"],
"日喀则地区": ["日喀则市", "南木林县", "江孜县", "定日县", "萨迦县", "拉孜县", "昂仁县", "谢通门县", "白朗县", "仁布县", "康马县", "定结县", "仲巴县", "亚东县", "吉隆县", "聂拉木县", "萨嘎县", "岗巴县", "其他"],
"阿里地区": ["噶尔县", "普兰县", "札达县", "日土县", "革吉县", "改则县", "措勤县", "其他"],
"其他": ["其他"]
}],
"陕西":
[{
"西安": ["莲湖区", "新城区", "碑林区", "雁塔区", "灞桥区", "未央区", "阎良区", "临潼区", "长安区", "高陵县", "蓝田县", "户县", "周至县", "其他"],
"铜川": ["耀州区", "王益区", "印台区", "宜君县", "其他"],
"宝鸡": ["渭滨区", "金台区", "陈仓区", "岐山县", "凤翔县", "陇县", "太白县", "麟游县", "扶风县", "千阳县", "眉县", "凤县", "其他"],
"咸阳": ["秦都区", "渭城区", "杨陵区", "兴平市", "礼泉县", "泾阳县", "永寿县", "三原县", "彬县", "旬邑县", "长武县", "乾县", "武功县", "淳化县", "其他"],
"渭南": ["临渭区", "韩城市", "华阴市", "蒲城县", "潼关县", "白水县", "澄城县", "华县", "合阳县", "富平县", "大荔县", "其他"],
"延安": ["宝塔区", "安塞县", "洛川县", "子长县", "黄陵县", "延川县", "富县", "延长县", "甘泉县", "宜川县", "志丹县", "黄龙县", "吴起县", "其他"],
"汉中": ["汉台区", "留坝县", "镇巴县", "城固县", "南郑县", "洋县", "宁强县", "佛坪县", "勉县", "西乡县", "略阳县", "其他"],
"榆林": ["榆阳区", "清涧县", "绥德县", "神木县", "佳县", "府谷县", "子洲县", "靖边县", "横山县", "米脂县", "吴堡县", "定边县", "其他"],
"安康": ["汉滨区", "紫阳县", "岚皋县", "旬阳县", "镇坪县", "平利县", "石泉县", "宁陕县", "白河县", "汉阴县", "其他"],
"商洛": ["商州区", "镇安县", "山阳县", "洛南县", "商南县", "丹凤县", "柞水县", "其他"],
"其他": ["其他"]
}],
"甘肃":
[{
"兰州": ["城关区", "七里河区", "西固区", "安宁区", "红古区", "永登县", "皋兰县", "榆中县", "其他"],
"嘉峪关": ["嘉峪关市", "其他"],
"金昌": ["金川区", "永昌县", "其他"],
"白银": ["白银区", "平川区", "靖远县", "会宁县", "景泰县", "其他"],
"天水": ["清水县", "秦安县", "甘谷县", "武山县", "张家川回族自治县", "北道区", "秦城区", "其他"],
"武威": ["凉州区", "民勤县", "古浪县", "天祝藏族自治县", "其他"],
"酒泉": ["肃州区", "玉门市", "敦煌市", "金塔县", "肃北蒙古族自治县", "阿克塞哈萨克族自治县", "安西县", "其他"],
"张掖": ["甘州区", "民乐县", "临泽县", "高台县", "山丹县", "肃南裕固族自治县", "其他"],
"庆阳": ["西峰区", "庆城县", "环县", "华池县", "合水县", "正宁县", "宁县", "镇原县", "其他"],
"平凉": ["崆峒区", "泾川县", "灵台县", "崇信县", "华亭县", "庄浪县", "静宁县", "其他"],
"定西": ["安定区", "通渭县", "临洮县", "漳县", "岷县", "渭源县", "陇西县", "其他"],
"陇南": ["武都区", "成县", "宕昌县", "康县", "文县", "西和县", "礼县", "两当县", "徽县", "其他"],
"临夏回族自治州": ["临夏市", "临夏县", "康乐县", "永靖县", "广河县", "和政县", "东乡族自治县", "积石山保安族东乡族撒拉族自治县", "其他"],
"甘南藏族自治州": ["合作市", "临潭县", "卓尼县", "舟曲县", "迭部县", "玛曲县", "碌曲县", "夏河县", "其他"],
"其他": ["其他"]
}],
"青海":
[{
"西宁": ["城中区", "城东区", "城西区", "城北区", "湟源县", "湟中县", "大通回族土族自治县", "其他"],
"海东地区": ["平安县", "乐都县", "民和回族土族自治县", "互助土族自治县", "化隆回族自治县", "循化撒拉族自治县", "其他"],
"海北藏族自治州": ["海晏县", "祁连县", "刚察县", "门源回族自治县", "其他"],
"海南藏族自治州": ["共和县", "同德县", "贵德县", "兴海县", "贵南县", "其他"],
"黄南藏族自治州": ["同仁县", "尖扎县", "泽库县", "河南蒙古族自治县", "其他"],
"果洛藏族自治州": ["玛沁县", "班玛县", "甘德县", "达日县", "久治县", "玛多县", "其他"],
"玉树藏族自治州": ["玉树县", "杂多县", "称多县", "治多县", "囊谦县", "曲麻莱县", "其他"],
"海西蒙古族藏族自治州": ["德令哈市", "格尔木市", "乌兰县", "都兰县", "天峻县", "其他"],
"其他": ["其他"]
}],
"宁夏":
[{
"银川": ["兴庆区", "西夏区", "金凤区", "灵武市", "永宁县", "贺兰县", "其他"],
"石嘴山": ["大武口区", "惠农区", "平罗县", "其他"],
"吴忠": ["利通区", "青铜峡市", "盐池县", "同心县", "其他"],
"固原": ["原州区", "西吉县", "隆德县", "泾源县", "彭阳县", "其他"],
"中卫": ["沙坡头区", "中宁县", "海原县", "其他"],
"其他": ["其他"]
}],
"新疆":
[{
"乌鲁木齐": ["天山区", "沙依巴克区", "新市区", "水磨沟区", "头屯河区", "达坂城区", "东山区", "乌鲁木齐县", "其他"],
"克拉玛依": ["克拉玛依区", "独山子区", "白碱滩区", "乌尔禾区", "其他"],
"吐鲁番地区": ["吐鲁番市", "托克逊县", "鄯善县", "其他"],
"哈密地区": ["哈密市", "伊吾县", "巴里坤哈萨克自治县", "其他"],
"和田地区": ["和田市", "和田县", "洛浦县", "民丰县", "皮山县", "策勒县", "于田县", "墨玉县", "其他"],
"阿克苏地区": ["阿克苏市", "温宿县", "沙雅县", "拜城县", "阿瓦提县", "库车县", "柯坪县", "新和县", "乌什县", "其他"],
"喀什地区": ["喀什市", "巴楚县", "泽普县", "伽师县", "叶城县", "岳普湖县", "疏勒县", "麦盖提县", "英吉沙县", "莎车县", "疏附县", "塔什库尔干塔吉克自治县", "其他"],
"克孜勒苏柯尔克孜自治州": ["阿图什市", "阿合奇县", "乌恰县", "阿克陶县", "其他"],
"巴音郭楞蒙古自治州": ["库尔勒市", "和静县", "尉犁县", "和硕县", "且末县", "博湖县", "轮台县", "若羌县", "焉耆回族自治县", "其他"],
"昌吉回族自治州": ["昌吉市", "阜康市", "奇台县", "玛纳斯县", "吉木萨尔县", "呼图壁县", "木垒哈萨克自治县", "米泉市", "其他"],
"博尔塔拉蒙古自治州": ["博乐市", "精河县", "温泉县", "其他"],
"石河子": ["石河子"],
"阿拉尔": ["阿拉尔"],
"图木舒克": ["图木舒克"],
"五家渠": ["五家渠"],
"伊犁哈萨克自治州": ["伊宁市", "奎屯市", "伊宁县", "特克斯县", "尼勒克县", "昭苏县", "新源县", "霍城县", "巩留县", "察布查尔锡伯自治县", "塔城地区", "阿勒泰地区", "其他"],
"其他": ["其他"]
}],
"台湾":
[{
"台湾": ["台北市", "高雄市", "台北县", "桃园县", "新竹县", "苗栗县", "台中县", "彰化县", "南投县", "云林县", "嘉义县", "台南县", "高雄县", "屏东县", "宜兰县", "花莲县", "台东县", "澎湖县", "基隆市", "新竹市", "台中市", "嘉义市", "台南市", "其他"],
"其他": ["其他"]
}],
"澳门":
[{
"澳门": ["花地玛堂区", "圣安多尼堂区", "大堂区", "望德堂区", "风顺堂区", "嘉模堂区", "圣方济各堂区", "路凼", "其他"]
}],
"香港":
[{
"香港": ["中西区", "湾仔区", "东区", "南区", "深水埗区", "油尖旺区", "九龙城区", "黄大仙区", "观塘区", "北区", "大埔区", "沙田区", "西贡区", "元朗区", "屯门区", "荃湾区", "葵青区", "离岛区", "其他"]
}],
"钓鱼岛":
[{
"钓鱼岛": ["钓鱼岛"]
}]
}
/*订单支付时间倒计时*/
var countDown={
downTime:function(time){
console.log("时间:"+time);
var num=time;
function timeCount() {
num--;
if(num ==0){
console.log(num);
window.clearInterval(interavl);
return false;
}
console.log("时间2:"+num);
return num;
};
var interavl = setInterval(timeCount,1000);
}
}
export {sub,formatImg,goto,address,countDown};
\ No newline at end of file
/**
* Created by shipfi on 2016/9/23.
*/
import cookie from 'react-cookie';
import { CookieDomain} from '../config';
let cookieConfig = {};
if(CookieDomain) {
cookieConfig = { domain : CookieDomain };
}
export default {
saveCookie: function(name,value) {
cookie.save(name,value,cookieConfig);
},
getCookie : function(name) {
return cookie.load(name);
},
removeCookie : function(name) {
cookie.remove(name,cookieConfig);
},
signOut : function() {
cookie.remove('token',cookieConfig);
},
isLogin : function(){
return !!cookie.load('token');
}
}
/**
* Created by shipfi on 2016/9/24.
*/
import 'isomorphic-fetch';
import _ from 'lodash';
import {URLManager} from './commonUtil';
import {API_ROOT, MOBILE_ROOT} from '../config';
import cookieManager from './cookieManager';
import CMErrCode from '../exception/CMErrCode';
import CMException from '../exception/CMException';
var envConfig = require('../../config/envConfig');
//require('es6-promise').polyfill();
export default {
weixinDatas: {
WX_OPEN_APPID: 'wx8e88ab6154cbcd23'
},
weixinUrls: {
WX_OPEN_WEIXIN_URL: 'https://open.weixin.qq.com/connect/oauth2/authorize', /* in proxies */
WX_API_WEIXIN_URL: '/apiWeixin', /* in proxies */
COMMUNITY_API_URL: '/communityAPI', /* in proxies */
WX_PATH_OAUTH2_AUTHORIZER: '/connect/oauth2/authorize',
WX_PATH_API_OAUTH2_ACCESSTOKEN: '/sns/oauth2/component/access_token',
COMMUNITY_PATH_GET_DEFAULT_APPID: '/auth/defaultWxApp/',
COMMUNITY_PATH_GET_USERINFO: '/auth/wxUserInfo',
//ACCESS_TOKEN_PATH_GET : '/auth/wxAccessToken',
COMMUNITY_PATH_JSSDK_SIGN: '/auth/wxJSSDKSign',
COMMUNITY_PATH_CHECK_OPENID: '/auth/wxCheckOpenId',
COMMUNITY_PATH_WEIXIN_AUTH_CODE: '/auth/wxAuthCode'
},
/**
* URLManager对象
* @param host
* @returns {URLManager}
*/
urlManager: function (host = '') {
return new URLManager(host);
},
/**
* 判断是否微信浏览器
* @returns {boolean}
*/
isWeixin: function () {
var ua = window.navigator.userAgent.toLowerCase();
var matchs = ua.match(/MicroMessenger/i);
if (matchs && matchs.length > 0 && matchs[0] == 'micromessenger') {
return true;
} else {
return false;
}
},
getWxOpenId: function (grpAppId, forceReflesh = false) {
// https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318590&token=&lang=zh_CN
var _this = this;
var promise = new Promise(function (resolve, reject) {
_this.getDefaultWxAppId(grpAppId).then(function (response) {
let wxAppId = response.appid;
var wxOpenId = _this.urlManager().getQueryParam('openid');
console.log('================>' + wxOpenId);
// 参数中得不到wxOpenId,或者必须强制刷新
if (!wxOpenId || forceReflesh) {
// Step1 : 请求Code,重定向到api.community.qingger.com,获得openId
var redirectUrl = URLManager.generateURL(MOBILE_ROOT, null, {
grpAppId: grpAppId
});
redirectUrl = redirectUrl + "#" + URLManager.getUriObj().anchor(); // 加上router项
redirectUrl = encodeURI(redirectUrl);
var apiRedirectHref = URLManager.generateURL(API_ROOT,
_this.weixinUrls.COMMUNITY_PATH_WEIXIN_AUTH_CODE,
{
redirectUrl: redirectUrl
}
);
console.log(apiRedirectHref);
//apiRedirectHref = 'http://api.community.test.qingger.com/auth/wxAuthCode?redirectUrl=http%3A%2F%2Fcommunity.test.qingger.com%2F%3FgrpAppId%3DAUTO';
// 跳转到微信,得出Code信息,再由微信重定向到API处理后,回到本地
var wxAuthUrl = _this.getWxOauthForCodeURL(wxAppId, decodeURI(apiRedirectHref));
window.location.href = wxAuthUrl;
} else {
var ret = {
'wxOpenId': _this.urlManager().getQueryParam('openid'),
//'code' : _this.urlManager().getQueryParam('code'),
'wxAppId': _this.urlManager().getQueryParam('appid')
};
// 无刷新改变URL,去掉openId参数 (微信浏览器不支持)
//history.replaceState(null,document.title,URLManager.getCurrentUrlWithoutOpenId());
//console.log(ret);
resolve(ret);
}
}, function (error) {
reject(error);
});
});
return promise;
},
getOpenIdExist: function (grpAppId, wxAppId, wxOpenId) {
var _this = this;
let queryParam = {
appid: wxAppId,
openid: wxOpenId,
grpAppId: grpAppId
};
let checkOpenIdExistAPI = URLManager.generateURL(null,
this.weixinUrls.COMMUNITY_API_URL + this.weixinUrls.COMMUNITY_PATH_CHECK_OPENID,
queryParam
);
var promise = new Promise(function (resolve, reject) {
fetch(checkOpenIdExistAPI, {
method: 'GET',
headers: {"Content-Type": "application/x-www-form-urlencoded"}
})
.then(function (response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
reject(response);
}
response.json().then(function (data) {
resolve(data.data.exist);
});
}, function (error) {
reject(error);
})
});
return promise;
},
/**
* 获得默认的weixin APPID
* 1) 参数中带有appid参数,使用appid参数作为社区使用的appid
* 2) 如果没有带有appid参数,调用接口/auth/defaultWxApp/{grpAppId} 获得默认的appid
* @param grpAppId
* @returns {Promise}
* {
* appid : [weixinAppid]
* }
*/
getDefaultWxAppId: function (grpAppId) {
var _this = this;
var promise = new Promise(function (resolve, reject) {
let getDefaultWxAppIdAPI = _this.weixinUrls.COMMUNITY_API_URL + _this.weixinUrls.COMMUNITY_PATH_GET_DEFAULT_APPID + grpAppId;
let ret = {
appid: null
};
ret.appid = _this.urlManager().getQueryParam('appid');
if (ret.appid) {
resolve(ret);
} else {
console.log(getDefaultWxAppIdAPI);
fetch(getDefaultWxAppIdAPI, {
method: 'GET',
headers: {"Content-Type": "application/x-www-form-urlencoded"}
})
.then(function (response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
reject(response);
}
response.json().then(function (data) {
ret.appid = data.data.defaultWxAppId;
resolve(ret);
});
}, function (error) {
reject(error);
})
}
});
return promise;
},
/**
* 通过API获得第三方CompAcessToken/CompAppId
* @returns {Promise}
* data.compAppId = 第三方平台AppId
* data.compAccessToken = 第三方平台所使用的AccessToken
*/
// getWeixinCompAccessToken : function() {
// var _this = this;
// let ret = {
// accessToken : null,
// };
// let promise = new Promise(function(resolve,reject){
// let accessTokenURL = _this.weixinUrls.COMMUNITY_API_URL + _this.weixinUrls.ACCESS_TOKEN_PATH_GET;
// fetch(accessTokenURL,{
// method:'GET',
// headers:{"Content-Type": "application/x-www-form-urlencoded"}
// }).then(function(response){
// if (response.status !== 200) {
// console.log('Looks like there was a problem. Status Code: ' +
// response.status);
// reject(response);
// }
// response.json().then(function(data){
// ret = {
// 'compAppId' : data.compAppId,
// 'compAccessToken' : data.compAccessToken
// }
// resolve(ret);
// });
// },function(error){
// reject(error);
// })
// });
//
// return promise;
// },
/**
* 定位到微信提供的URL,通过微信获取code接口
* @param wxAppId
* @param redirectUrl
* @returns {*}
*/
getWxOauthForCodeURL: function (wxAppId, redirectUrl) {
let queryParam = {
appid: wxAppId,
redirect_uri: redirectUrl,
response_type: 'code',
scope: 'snsapi_userinfo',
state: 'STATE',
component_appid: this.weixinDatas.WX_OPEN_APPID,
};
let uriobj = new URLManager(this.weixinUrls.WX_OPEN_WEIXIN_URL)
.uriObj
.setPath(this.weixinUrls.WX_PATH_OAUTH2_AUTHORIZER);
_.forEach(queryParam, function (value, key) {
uriobj.addQueryParam(key, value);
});
return uriobj.toString() + "#wechat_redirect";
},
/**
* 获得Weixin openID接口URL
* @param wxAppId
* @param code
* @param accessToken
* @returns {*}
*/
getWXOAuthUrlForOpenId: function (wxAppId, code, accessToken) {
let queryParam = {
appid: wxAppId,
code: code,
grant_type: 'authorization_code',
component_appid: this.weixinDatas.WX_OPEN_APPID,
component_access_token: accessToken,
};
let uriobj = new URLManager(this.weixinUrls.WX_API_WEIXIN_URL)
.uriObj
.setPath(this.weixinUrls.WX_PATH_API_OAUTH2_ACCESSTOKEN);
_.forEach(queryParam, function (value, key) {
uriobj.addQueryParam(key, value);
});
return uriobj.toString();
},
/**
* 获取用户信息
* @param wxAppId
* @param wxOpenId
* @param grpAppId
* @returns {Promise}
*/
getWxUserInfoByOpenId: function (wxAppId, wxOpenId, grpAppId) {
let queryParam = {
appid: wxAppId,
openid: wxOpenId,
grpAppId: grpAppId
};
let queryWxUserInfoUrl = URLManager.generateURL(null,
this.weixinUrls.COMMUNITY_API_URL + this.weixinUrls.COMMUNITY_PATH_GET_USERINFO,
queryParam
);
var promise = new Promise(function (resolve, reject) {
fetch(queryWxUserInfoUrl, {
method: 'GET',
headers: {"Content-Type": "application/x-www-form-urlencoded"}
})
.then(function (response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
reject(response);
}
response.json().then(function (resData) {
resolve(resData.data);
});
}, function (error) {
reject(error);
})
});
return promise;
},
/**
* 获得用户信息
* @returns {Promise}
* respones = array( userId, cstId, cstType, userHeadImg, userNickName, userSex, wxAppId, wxOpenId, grpAppId )
*/
getUserInfo: function () {
let urlManager = new URLManager();
let cookieGrpAppid = cookieManager.getCookie('grpAppId');
let cookieWxAppid = cookieManager.getCookie('wxAppId');
let nowGrpAppId = urlManager.getQueryParam('grpAppId') ? urlManager.getQueryParam('grpAppId') : 'AUTO';
let nowWxAppid = urlManager.getQueryParam('appid') ? urlManager.getQueryParam('appid') : '';
//let wxOpenId = null;
let cookieWxOpenId = cookieManager.getCookie('wxOpenId');
let nowWxOpenId = urlManager.getQueryParam('openid') ? urlManager.getQueryParam('openid') : '';
var _this = this;
var promise = new Promise(function (resolve, reject) {
if (_this.isWeixin()) {
let $needReflesh = false;
if (cookieGrpAppid != nowGrpAppId || cookieWxAppid != nowWxAppid || cookieWxOpenId == undefined)
$needReflesh = true;
cookieManager.saveCookie('grpAppId', nowGrpAppId);
if ($needReflesh) {
// 取得openId
_this.getWxOpenId(nowGrpAppId).then(function (wxInfo) {
console.log(wxInfo);
if (wxInfo.hasOwnProperty('wxOpenId')) {
cookieManager.saveCookie('wxOpenId', wxInfo.wxOpenId);
cookieManager.saveCookie('wxAppId', wxInfo.wxAppId);
resolve({
'wxAppId': wxInfo.wxAppId,
'wxOpenId': wxInfo.wxOpenId,
'grpAppId': nowGrpAppId
});
} else {
reject('ERROR: API CANT RETURN OPENID ATTR');
}
}, function (error) {
//throw new CMException(CMErrCode.ERR_WEIXIN_OPENID_NOT_GET,'Get OpenId Error.')
reject('ERROR: API GET OPENID ERROR');
});
} else {
// has openId cache, so just use openid to get wxUserInfo
let wxAppId = cookieManager.getCookie('wxAppId');
let wxOpenId = cookieManager.getCookie('wxOpenId');
_this.getOpenIdExist(nowGrpAppId, wxAppId, wxOpenId).then(function (isExist) {
if (isExist) {
resolve({
'wxAppId': wxAppId,
'wxOpenId': wxOpenId,
'grpAppId': nowGrpAppId
});
} else {
// 因为缓存的原因,客户中存在openId/appId, 但是服务器API上却因为原因删除了,那么OpenID需要重新取得
cookieManager.removeCookie('wxOpenId');
cookieManager.removeCookie('wxAppId');
_this.getWxOpenId(nowGrpAppId, true).then(function (wxInfo) {
console.log(wxInfo);
if (wxInfo.hasOwnProperty('wxOpenId')) {
cookieManager.saveCookie('wxOpenId', wxInfo.wxOpenId);
cookieManager.saveCookie('wxAppId', wxInfo.wxAppId);
resolve({
'wxAppId': wxInfo.wxAppId,
'wxOpenId': wxInfo.wxOpenId,
'grpAppId': nowGrpAppId
});
} else {
reject('ERROR: API CANT RETURN OPENID ATTR');
}
}, function (error) {
reject('ERROR: API GET OPENID ERROR');
});
}
}, function (error) {
reject('ERROR:API GET OPENID ERROR');
});
}
} else {
if ((typeof envConfig.NODE_ENV) != 'undefined' && envConfig.NODE_ENV == 'testing') {
console.log("Not weixin browser,TEST FOR SHIPFI...");
cookieManager.saveCookie('grpAppId', nowGrpAppId);
cookieManager.saveCookie('wxOpenId', 'o2gsCwYq9ILxbE35ESH70uQEbVv4');
cookieManager.saveCookie('wxAppId', 'wx31f3126b561c79ed');
resolve({
userId: 28,
cstId: 200013578973,
cstType: 0,
userHeadImg: 'http://wx.qlogo.cn/mmopen/bBB6IHIYxgueY8BDPXHHpzagDazM7iaTGtBegd6N1TkcWKNiaqFVCZ0GAx6U51B0ObibKOnh8PuoKToMdozrMGHkk4CdZaNz6Zu/0',
userNickName: 'shipfi',
userSex: 1,
wxAppId: 'wx31f3126b561c79ed',
wxOpenId: 'o2gsCwYq9ILxbE35ESH70uQEbVv4',
grpAppId: 'AUTO'
});
} else {
reject('ERROR');
}
// not use weixin browser, use const value for test....
}
});
return promise;
},
// saveUserInfo : function(wxOpenId,wxUserInfo) {
// window.localStorage[wxOpenId] = wxUserInfo;
// cookieManager.saveCookie('userId', wxUserInfo.userId);
// },
// getUserinfo : function(wxOpenId) {
// return window.localStorage[wxOpenId];
// },
// clearUserInfo : function(wxOpenId) {
// window.localStorage[wxOpenId] = null;
// }
/**
* 获得JSSDK所必须的数据项
* @param wxAppId
* @param grpAppId
* @returns {Promise}
* array (wxAppId, nonceStr, timeStamp, url, signature, rawString)
*/
loadJSSDKSignPackage: function (wxAppId, grpAppId) {
let queryParam = {
appid: wxAppId,
grpAppId: grpAppId,
url: decodeURI(location.href)
};
let queryWxSignatureUrl = URLManager.generateURL(null,
this.weixinUrls.COMMUNITY_API_URL + this.weixinUrls.COMMUNITY_PATH_JSSDK_SIGN,
queryParam
);
var promise = new Promise(function (resolve, reject) {
fetch(queryWxSignatureUrl, {
method: 'GET',
headers: {"Content-Type": "application/x-www-form-urlencoded"}
})
.then(function (response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
reject(response);
}
response.json().then(function (resData) {
resolve(resData.data);
});
}, function (error) {
reject(error);
})
});
return promise;
},
/**
* 配置WXJSSDK
* @param wxAppId
* @param grpAppId
* @param options
*/
confixWxJSSDK: function (wxAppId, grpAppId, options) {
if (typeof options == 'object' && typeof options.readyFunction == 'function') {
this.readyFunction = options.readyFunction;
if ('readyFunctionParams' in options) {
this.readyFunctionParams = options.readyFunctionParams;
}
} else {
this.readyFunction = this.readyFunctionParams = null;
}
var _this = this;
var promise = new Promise(function (resolve, reject) {
/* 非微信浏览器的场合,返回正常数据,供测试用 */
if (!_this.isWeixin()) {
resolve({
wxError: 0,
wxObject: null,
wxTool: _this
});
}
_this.loadJSSDKSignPackage(wxAppId, grpAppId).then(function (signConfig) {
//微信配置注入
wx.config({
debug: false,
appId: signConfig.wxAppId,
timestamp: signConfig.timeStamp,
nonceStr: signConfig.nonceStr,
signature: signConfig.signature,
jsApiList: [
'checkJsApi',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone',
'getLatestAddress',
'hideOptionMenu',
'hideToolbar',
'hideMenuItems'
]
});
wx.ready(function () {
if (_this.readyFunction) {
_this.readyFunction(_this, _this.readyFunctionParams, wx);
}
resolve({
wxError: 0,
wxObject: wx,
wxTool: _this
});
});
wx.error(function (res) {
reject({
wxError: 1,
wxMessage: res
});
});
});
});
return promise;
},
getLocation: function () {
var ret = {
'retCode': 10001
};
return new Promise(function (resolve, reject) {
wx.checkJsApi({
jsApiList: ['getLocation'],
success: function (res) {
if (res.checkResult.getLocation == true) {
wx.getLocation({
success: function (res) {
ret.retCode = 20000;
ret.latitude = res.latitude;
ret.longitude = res.longitude;
resolve(ret);
},
cancel: function (res) {
// 用户取消
resolve(ret);
}
});
} else {
reject(ret);
}
},
});
});
},
/**
* 微信分享功能
*/
shareToOthers: function () {
}
};
/**
* Created by shipfi on 2016/9/30.
*/
import _ from 'lodash';
import cookieManager from './cookieManager';
import api from '../api/index';
let __instance = (function () {
let instance;
return (newInstance) => {
if (newInstance)
instance = newInstance;
return instance;
}
}());
class WxJsFunc {
constructor() {
if (__instance())
return __instance();
this.foo = 'bar';
this.wxObject = null;
this.wxTool = null;
__instance(this)
}
using(_wxObject, _wxTool) {
this.wxObject = _wxObject;
this.wxTool = _wxTool;
}
shareFriends() {
console.log(this.wxObject);
if (this.wxObject && typeof this.wxObject.onMenuShareAppMessage != 'undefined') {
self = this;
return function (options) {
self.wxObject.onMenuShareAppMessage({
title: options.title, // 分享标题
link: options.link, // 分享链接
imgUrl: options.imgUrl, // 分享图标
desc: options.desc, // 分享描述
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
},
success: function (res) {
},
cancel: function (res) {
},
fail: function (res) {
}
});
};
} else {
return null;
}
}
/**
* 分享接口
* @param options
*/
shareOthers(options) {
if (this.wxObject && typeof this.wxObject.onMenuShareAppMessage != 'undefined') {
var title = '[' + options.title.substr(0, 30) + ']';
var titleInShareOthers = options.title.substr(0, 30);
var descInShareOthers = options.desc.substr(0, 100);
if (options.shareType == 'TOPIC') {
title = '[' + options.grpName + ']' + titleInShareOthers;
descInShareOthers = '[' + options.grpName + ']' + descInShareOthers;
}
// 分享给朋友
this.wxObject.onMenuShareAppMessage({
title: titleInShareOthers, // 分享标题
link: options.link, // 分享链接
imgUrl: options.imgUrl, // 分享图标
desc: descInShareOthers, // 分享描述
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
},
success: function (res) {
if (options.notifyAPI && 'topicId' in options) {
api.postTopicShare(options.topicId, 2).then(function (shareRes) {
if (typeof options.success == 'function') {
options.success(shareRes);
}
}, function (shareError) {
if (typeof options.error == 'function') {
options.error(shareError);
}
});
} else {
if (typeof options.success == 'function') {
options.success(1);
}
}
},
cancel: function (res) {
},
fail: function (res) {
}
});
// 分享到朋友圈
this.wxObject.onMenuShareTimeline({
title: title, // 分享标题
link: options.link, // 分享链接
imgUrl: options.imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
if (options.notifyAPI && 'topicId' in options) {
api.postTopicShare(options.topicId, 1).then(function (shareRes) {
if (typeof options.success == 'function') {
options.success(shareRes);
}
}, function (shareError) {
if (typeof options.error == 'function') {
options.error(shareError);
}
});
} else {
if (typeof options.success == 'function') {
options.success(1);
}
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
// 分享到QQ
this.wxObject.onMenuShareQQ({
title: title, // 分享标题
link: options.link, // 分享链接
imgUrl: options.imgUrl, // 分享图标
desc: descInShareOthers, // 分享描述
success: function () {
// 用户确认分享后执行的回调函数
if (options.notifyAPI && 'topicId' in options) {
if (options.notifyAPI && 'topicId' in options) {
api.postTopicShare(options.topicId, 3).then(function (shareRes) {
if (typeof options.success == 'function') {
options.success(shareRes);
}
}, function (shareError) {
if (typeof options.error == 'function') {
options.error(shareError);
}
});
} else {
if (typeof options.success == 'function') {
options.success(1);
}
}
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
}
/**
* 隐藏菜单项接口
* @param options
*/
hideMenuItems() {
if (this.wxObject && typeof this.wxObject.hideMenuItems != 'undefined') {
this.wxObject.hideMenuItems({
menuList: [
'menuItem:copyUrl',
'menuItem:openWithQQBrowser',
'menuItem:openWithSafari'
]
});
}
}
}
let wxJsFunc = new WxJsFunc();
export {wxJsFunc}
\ No newline at end of file
/**
* Created by shipfi on 2016/5/28.
*/
import api from '../api/index';
import {cacheType, cacheManager} from '../utils/cacheManager';
import * as types from './mutationTypes';
//import {saveCookie,signOut} from '../utils/AuthService';
/**
*获取首页结构
* @param store
*/
export const getweiIndext = (store, pageId) => {
let promise = new Promise(function (resolve, reject) {
api.getweiIndext(pageId).then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
store.dispatch(types.WEI_INDEX, {weiIndex: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//获取个人信息
export const getpersonData = (store) => {
let promise = new Promise(function (resolve, reject) {
api.getpersonData().then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
store.dispatch(types.PERSON_DATA, {personData: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//获取个人信息订单数
export const getorderNum = (store) => {
let promise = new Promise(function (resolve, reject) {
api.getorderNum().then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
store.dispatch(types.ORDER_NUM, {orderNum: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//获取浏览记录
export const getbrowseRecordList = (store,page,pageNum) => {
let promise = new Promise(function (resolve, reject) {
// store.dispatch(types.BROWSE_RECORD_LIST, {page: page});
api.getbrowseRecordList(page, pageNum).then((response) => {
console.log("调浏览记录数据page:"+page)
// if (response.code != 20000) { // 获取数据失败
// reject(1);
if(response.content.length>=pageNum) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.BROWSE_RECORD_LIST, {browseRecordList: response.content});
// }
}, (response) => {
reject(1)
showMsg(store, response.message);
});
});
return promise;
};
//清除浏览记录
export const clearbrowseRecordList = (store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.BROWSE_RECORD_LIST_CLEAR,{browseRecordList:{}});
resolve(1)
}, (response) => {
reject(1);
showMsg(store, response.message);
});
return promise;
};
//获取我的收藏记录
export const getmyCollectionList = (store,page) => {
let promise = new Promise(function (resolve, reject) {
// store.dispatch(types.MY_COLLECTION_LIST, {page: page});
api.getmyCollectionList(page, 10).then((response) => {
console.log("调浏览记录数据page:"+page)
// if (response.code != 20000) { // 获取数据失败
// reject(1);
if(response.content.length>=10) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.MY_COLLECTION_LIST, {myCollectionList: response.content});
// }
}, (response) => {
reject(1);
showMsg(store, response.message);
});
});
return promise;
};
//清除收藏记录
export const clearmyCollectionList = (store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.MY_COLLECTION_LIST_CLEAR,{myCollectionList:{}});
resolve(1)
}, (response) => {
reject(1);
showMsg(store, response.message);
});
return promise;
};
/*添加/取消收藏*/
export const addCancelCollection = (store,id,type) => {
let promise = new Promise(function (resolve, reject) {
api.addCancelCollection(id,type).then((response) => {
if (response.code == 20000) { // 获取数据失败
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//获取我的优惠券列表
export const getmyCouponList = (store,page,pageNum) => {
let promise = new Promise(function (resolve, reject) {
// store.dispatch(types.MY_COUPON_LIST, {page: page});
api.getmyCouponList(page, pageNum).then((response) => {
console.log("调浏览记录数据page:"+page)
// if (response.code != 20000) { // 获取数据失败
// reject(1);
if(response.content.length>=pageNum) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.MY_COUPON_LIST, {myCouponList: response.content});
// }
}, (response) => {
reject(1)
showMsg(store, response.message);
});
});
return promise;
};
//清除我的优惠券列表
export const clearmyCouponList = (store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.MY_COUPON_LIST_CLEAR,{myCouponList:{}});
resolve(1)
}, (response) => {
reject(1);
showMsg(store, response.message);
});
return promise;
};
//获取我的优惠券详情
export const getmyCouponDetail = (store) => {
let promise = new Promise(function (resolve, reject) {
api.getmyCouponDetail().then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
store.dispatch(types.MY_COUPON_DETAIL, {myCouponDetail: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//获取优惠券中心列表
export const getcouponCenterList = (store,cplType,page,pageNum) => {
let promise = new Promise(function (resolve, reject) {
api.getmyCouponList(cplType,page, pageNum).then((response) => {
console.log("调浏览记录数据page:"+page);
if(response.content.length>=pageNum) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.COUPON_CENTER_LIST, {couponCenterList: response.content});
}, (response) => {
reject(1);
showMsg(store, response.message);
});
});
return promise;
};
//获取优惠券中心标题背景
export const getcouponTab = (store) => {
let promise = new Promise(function (resolve, reject) {
api.getcouponTab().then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
store.dispatch(types.COUPON_TAB, {couponTab: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
//清除优惠券中心列表
export const clearcouponCenterList = (store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.COUPON_CENTER_LIST_CLEAR,{couponCenterList:{}});
resolve(1)
}, (response) => {
reject(1);
showMsg(store, response.message);
});
return promise;
};
/**
* 获取底部导航
*
*/
export const getgroupNav = (store) => {
let promise = new Promise(function (resolve, reject) {
api.getgroupNav().then((response) => {
if (response.code != 20000) { // 获取数据失败
reject(1);
} else {
console.log(response.content);
store.dispatch(types.GROUP_NAV, {groupNav: response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/**
* 获取我的地址列表
*/
export const getmyAddressList = (store,page,pageNum) => {
let promise = new Promise(function (resolve, reject) {
api.getmyAddressList(page,pageNum).then((response) => {
console.log("page:"+page)
if(response.content.list.length>=pageNum) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.MY_ADDRESS_LIST, {myAddressList: response.content});
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*清除地址列表*/
export const ClearAddresslist = (store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.MY_ADDRESS_LIST_ClEAR,{myAddressList:[]});
resolve(1)
}, (response) => {
reject(1)
showMsg(store, response.message);
});
return promise;
};
/*设置默认地址*/
export const setDefaultAddress = (store,id) => {
let promise = new Promise(function (resolve, reject) {
api.setDefaultAddress(id).then((response) => {
if (response.code == 20000) { // 获取数据失败
resolve(1);
store.dispatch(types.SET_DEFAULT_ADDRESS,{buyerAddressId:id});
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*删除地址*/
export const deleteAddress = (store,id) => {
let promise = new Promise(function (resolve, reject) {
api.deleteAddress(id).then((response) => {
if (response.code == 20000) { // 获取数据失败
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*获取指定地址信息*/
export const getselectAddress = (store,id) => {
let promise = new Promise(function (resolve, reject) {
api.selectAddress(id).then((response) => {
if (response.code == 20000) { // 获取数据失败
resolve(1);
store.dispatch(types.SELECT_ADDRESS,{selectAddress:response.content});
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*保存编辑地址信息*/
export const posteditAddress = (store,data) => {
let promise = new Promise(function (resolve, reject) {
api.posteditAddress(data).then((response) => {
if (response.code == 20000) { // 提交成功
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*保存新增地址信息*/
export const postaddAddress= (store,data) => {
let promise = new Promise(function (resolve, reject) {
api.postaddAddress(data).then((response) => {
if (response.code == 20000) { // 提交成功
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*确认订单(结算)*/
export const postcheckOrder= (store,data) => {
console.log(data);
let promise = new Promise(function (resolve, reject) {
api.postcheckOrder(data).then((response) => {
if (response.code == 20000) { // 提交成功
store.dispatch(types.CHECK_ORDER,{checkOrder:response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*获取符合需求的优惠券列表*/
export const postmatchCouponList=(store,data) => {
console.log(data);
let promise = new Promise(function (resolve, reject) {
api.postmatchCouponList(data).then((response) => {
if (response.code == 20000) { // 提交成功
console.log(response.content);
store.dispatch(types.MATCH_COUPON_LIST,{matchCouponList:response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*确认下单*/
export const postconfirmOrder= (store,data) => {
console.log(data);
let promise = new Promise(function (resolve, reject) {
api.postconfirmOrder(data).then((response) => {
if (response.code == 20000) { // 提交成功
store.dispatch(types.CONFIRM_ORDER,{confirmOrder:response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*支付页面数据取得*/
export const getpushOrder= (store,orderId) => {
let promise = new Promise(function (resolve, reject) {
api.getpushOrder(orderId).then((response) => {
if (response.code == 20000) { // 提交成功
store.dispatch(types.PUSH_ORDER,{pushOrder:response.content});
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*支付订单*/
export const postpayOrder= (store,data) => {
let promise = new Promise(function (resolve, reject) {
api.postpayOrder(data).then((response) => {
if (response.code == 20000) { // 提交成功
resolve(1);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*获取订单列表*/
export const getOrderList = (store,orderState,evaluationState,page,pageNum) => {
let promise = new Promise(function (resolve, reject) {
api.getOrderList(orderState,evaluationState,page,pageNum).then((response) => {
if(response.content.list.length>=pageNum) {
resolve("continue");
}else {
resolve("stop");
}
store.dispatch(types.ORDER_LIST, {orderList: response.content});
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*获取订单列表数量*/
export const getOrderCount=(store) => {
let promise = new Promise(function (resolve, reject) {
api.getOrderCount().then((response) => {
if (response.code == 20000) { // 提交成功
resolve(response.content);
}
}, (response) => {
showMsg(store, response.message);
});
});
return promise;
};
/*清除订单列表*/
export const ClearOrderList=(store) => {
let promise = new Promise(function (resolve, reject) {
store.dispatch(types.ORDER_LIST_ClEAR,{orderList:[]});
resolve(1)
}, (response) => {
reject(1)
showMsg(store, response.message);
});
return promise;
};
/**
* Created by shipfi on 2016/6/2.
*/
import createLogger from 'vuex/logger'
export default process.env.NODE_ENV !== 'production'
? [createLogger()]
: [];
/*
* Created by shipfi on 2016/5/31.
*/
import {
MY_ADDRESS_LIST,
MY_ADDRESS_LIST_ClEAR,
SET_DEFAULT_ADDRESS,
SELECT_ADDRESS
} from '../mutationTypes';
const state = {
myAddressList:[],
myAddressCount:0,
selectAddress:{}
};
const mutations = {
[MY_ADDRESS_LIST](state,action){//获取我的地址列表
state.myAddressList = state.myAddressList.concat(action.myAddressList.list);
state.myAddressCount = action.myAddressList.count;
},
[MY_ADDRESS_LIST_ClEAR](state,action){//清除我的地址列表
state.myAddressList = [];
state.myAddressCount ='';
},
[SET_DEFAULT_ADDRESS](state,action){//设置默认地址
let index = state.myAddressList.findIndex(function(element) {
return element.buyerAddressId==action.buyerAddressId;
});
state.myAddressList.forEach(function(element){
element.isDefault=0;
});
state.myAddressList[index].isDefault=1;
},
[SELECT_ADDRESS](state,action){//获取指定地址信息
state.selectAddress = action.selectAddress;
},
};
export default {
state,
mutations
};
/*
* Created by shipfi on 2016/5/31.
*/
import {} from '../mutationTypes';
const state = {};
const mutations = {};
export default {
state,
mutations
};
/*
* Created by shipfi on 2016/5/31.
*/
import {
COUPON_CENTER_LIST,
COUPON_CENTER_DETAIL,
MATCH_NET_LIST,
COUPON_TAB,
COUPON_EXCHANGE,
COUPON_CENTER_LIST_CLEAR
} from '../mutationTypes';
const state = {
couponCenterList: [],
couponCenterDetail: {},
matchNetList: [],
couponTab: {},
couponExchange: {}
};
const mutations = {
//获取优惠券中心列表
[COUPON_CENTER_LIST](state, action){
state.couponCenterList = state.couponCenterList.concat(action.couponCenterList);
state.couponCenterCount = action.couponCenterList.count;
},
//获取优惠券详情
[COUPON_CENTER_DETAIL](state, action){
state.couponCenterDetail = action.couponCenterDetail;
},
//获取优惠券适用网点
[MATCH_NET_LIST](state, action){
state.matchNetList = state.matchNetList.concat(action.matchNetList);
state.matchNetCount = action.matchNetList.count;
},
//获取优惠券中心标题背景
[COUPON_TAB](state, action){
state.couponTab = action.couponTab;
},
//优惠券兑换
[COUPON_EXCHANGE](state, action){
state.couponExchange = action.couponExchange;
},
//清除优惠券中心列表
[COUPON_CENTER_LIST_CLEAR](state,action){
state.couponCenterList = [];
state.couponCenterCount ='';
}
};
export default {
state,
mutations
};
/**
* Created by yulongliu on 2016/11/22.
*/
/**
* Created by cyc on 2016/9/20.
*/
/*jshint esversion: 6 */
import {
CHECK_ORDER,
CONFIRM_ORDER,
PUSH_ORDER,
MATCH_COUPON_LIST,
ORDER_LIST,
ORDER_LIST_ClEAR,
} from '../mutationTypes';
//import { getCookie } from '../../utils/AuthService';
const state = {
checkOrder:{},
confirmOrder:{},
pushOrder:{},
matchCouponList:[],
orderList:[],
orderCount:0,
};
const mutations = {
[CHECK_ORDER](state,action){//确认订单结算
state.checkOrder = action.checkOrder;
},
[CONFIRM_ORDER](state,action){//确认订单
state.confirmOrder = action.confirmOrder;
},
[PUSH_ORDER](state,action){//支付订单页面
state.pushOrder = action.pushOrder;
},
[MATCH_COUPON_LIST](state,action){//支付订单页面
state.matchCouponList = [...action.matchCouponList];
},
[ORDER_LIST](state,action){//获取我的订单列表
state.orderList = state.orderList.concat(action.orderList.list);
state.orderCount = action.orderList.count;
},
[ORDER_LIST_ClEAR](state,action){//清除我的订单列表
state.orderList = [];
state.orderCount =0;
},
};
export default {
state,
mutations
};
\ No newline at end of file
/**
* Created by cyc on 2016/11/23.
*/
import {
PERSON_DATA,
ORDER_NUM,
BROWSE_RECORD_LIST,
MY_COLLECTION_LIST,
ADD_CANCEL_COLLECTION,
MY_COUPON_LIST,
MY_COUPON_DETAIL,
BROWSE_RECORD_LIST_CLEAR,
MY_COLLECTION_LIST_CLEAR,
MY_COUPON_LIST_CLEAR,
} from '../mutationTypes';
//import { getCookie } from '../../utils/AuthService';
const state = {
personData: {},
orderNum: {},
browseRecordList: [],
myBrowseCount:-1,
myCollectionList: [],
myCollectionCount:-1,
myCouponList:[],
myCouponCount:-1,
myCouponDetail:{}
};
const mutations = {
//获取个人信息
[PERSON_DATA](state, action){
state.personData = action.personData;
},
//获取订单数
[ORDER_NUM](state, action){
state.orderNum = action.orderNum;
},
//获取浏览记录
[BROWSE_RECORD_LIST](state, action){
state.browseRecordList = state.browseRecordList.concat(action.browseRecordList);
state.myBrowseCount = action.browseRecordList.count;
},
//清除浏览记录
[BROWSE_RECORD_LIST_CLEAR](state,action){
state.browseRecordList = [];
state.myBrowseCount ='';
},
//获取我的收藏记录
[MY_COLLECTION_LIST](state, action){
state.myCollectionList = state.myCollectionList.concat(action.myCollectionList);
state.myCollectionCount = action.myCollectionList.count;
},
//清除收藏记录
[MY_COLLECTION_LIST_CLEAR](state,action){
state.myCollectionList = [];
state.myCollectionCount ='';
},
//获取我的优惠券列表
[MY_COUPON_LIST](state, action){
state.myCouponList = state.myCouponList.concat(action.myCouponList);
state.myCouponCount = action.myCouponList.count;
},
//清除我的优惠券列表
[MY_COUPON_LIST_CLEAR](state,action){
state.myCouponList = [];
state.myCouponCount ='';
},
//获取优惠券详情
[MY_COUPON_DETAIL](state, action){
state.myCouponDetail = action.myCouponDetail;
},
};
export default {
state,
mutations
};
\ No newline at end of file
/*
* Created by shipfi on 2016/5/31.
*/
import {
WEI_INDEX,
GROUP_NAV
} from '../mutationTypes';
const state = {
weiIndex: {},
groupNav: {},
};
const mutations = {
[WEI_INDEX](state, action){//获取首页结构
state.weiIndex = action.weiIndex;
},
[GROUP_NAV](state, action){//获取底部导航
state.groupNav = action.groupNav;
}
};
export default {
state,
mutations
};
/*
created by cyc on 2016/11/22
*/
//微页面首页
export const WEI_INDEX = 'WEI_INDEX';
//集团信息导航
export const GROUP_NAV = 'GROUP_NAV';
//公告详情
export const NOTICE_DETAIL = 'NOTICE_DETAIL';
//购物车商品列表
export const CART_GOODS_LIST = 'CART_GOODS_LIST';
//向购物车添加商品
export const ADD_GOODS = 'ADD_GOODS';
//删除购物车商品
export const DELETE_GOODS = 'DELETE_GOODS';
//优惠券中心
export const COUPON_CENTER_LIST = 'COUPON_CENTER_LIST';
//优惠券详情
export const COUPON_CENTER_DETAIL = 'COUPON_CENTER_DETAIL';
//优惠券适用网点
export const MATCH_NET_LIST = 'MATCH_NET_LIST';
//优惠券中心标题及背景
export const COUPON_TAB = 'COUPON_TAB';
//优惠券兑换
export const COUPON_EXCHANGE = 'COUPON_EXCHANGE';
//获取买家订单数
export const ORDER_NUM = 'ORDER_NUM';
//订单列表
export const ORDER_LIST = 'ORDER_LIST';
//取消订单
export const CANCEL_ORDER = 'CANCEL_ORDER';
//确认收货
export const CONFIRM_GOODS = 'CONFIRM_GOODS';
//订单详情
export const ORDER_DETAIL = 'ORDER_DETAIL';
//退货详情
export const RETURN_DETAIL = 'RETURN_DETAIL';
//发表评论
export const SEND_COMMENT = 'SEND_COMMENT';
//申请退货
export const APPLY_RETURN_GOODS = 'APPLY_RETURN_GOODS';
//取消退货
export const CANCEL_RETURN_GOODS = 'CANCEL_RETURN_GOODS';
//添加物流明细
export const ADD_LOGISTICS = 'ADD_LOGISTICS';
//结算(确认订单)
export const CHECK_ORDER = 'CHECK_ORDER';
//确认下单
export const CONFIRM_ORDER = 'CONFIRM_ORDER';
//支付订单
export const PAY_ORDER = 'PAY_ORDER';
//申请退货页面显示内容
export const RETURN_GOODS_CONTENT = 'RETURN_GOODS_CONTENT';
//获取物流信息
export const LOGISTICS = 'LOGISTICS';
//提交订单页面
export const PUSH_ORDER = 'PUSH_ORDER';
//获取符合订单需求的优惠券列表
export const MATCH_COUPON_LIST = 'MATCH_COUPON_LIST';
//申请退款
export const RETURN_MONEY = 'RETURN_MONEY';
//取消退款
export const CANCEL_RETURN_MONEY = 'CANCEL_RETURN_MONEY';
//个人信息取得
export const PERSON_DATA = 'PERSON_DATA';
//浏览记录
export const BROWSE_RECORD_LIST = 'BROWSE_RECORD_LIST';
//我的收藏
export const MY_COLLECTION_LIST = 'MY_COLLECTION_LIST';
//添加/取消收藏
export const ADD_CANCEL_COLLECTION = 'ADD_CANCEL_COLLECTION';
//我的优惠券列表
export const MY_COUPON_LIST = 'MY_COUPON_LIST';
//优惠券详情
export const MY_COUPON_DETAIL = 'MY_COUPON_DETAIL';
//我的地址列表
export const MY_ADDRESS_LIST = 'MY_ADDRESS_LIST';
//获取指定地址信息
export const SELECT_ADDRESS = 'SELECT_ADDRESS';
//设为默认地址
export const SET_DEFAULT_ADDRESS = 'SET_DEFAULT_ADDRESS';
//添加地址
export const ADD_ADDRESS = 'ADD_ADDRESS';
//编辑地址
export const EDIT_ADDRESS = 'EDIT_ADDRESS';
//删除地址
export const DELETE_ADDRESS = 'DELETE_ADDRESS';
//商品组列表
export const GOODS_GROUP_LIST = 'GOODS_GROUP_LIST';
//商品详情
export const GOODS_DETAIL = 'GOODS_DETAIL';
//商品评论列表
export const GOODS_COMMENT_LIST = 'GOODS_COMMENT_LIST';
//获取某个规格明细
export const GOODS_SIZE = 'GOODS_SIZE';
//根据关键字获取关键字列表
export const SEARCH_WORDS_LIST = 'SEARCH_WORDS_LIST';
//根据关键字获取商品列表
export const SEARCH_GOODS_LIST = 'SEARCH_GOODS_LIST';
//loadmore
export const ALL_LOADED = 'ALL_LOADED';
//清除地址列表
export const MY_ADDRESS_LIST_ClEAR='MY_ADDRESS_LIST_ClEAR';
//清除浏览记录
export const BROWSE_RECORD_LIST_CLEAR='BROWSE_RECORD_LIST_CLEAR';
//清除收藏记录
export const MY_COLLECTION_LIST_CLEAR='MY_COLLECTION_LIST_CLEAR';
//清除我的优惠券记录
export const MY_COUPON_LIST_CLEAR='MY_COUPON_LIST_CLEAR';
//清除优惠券中心记录
export const COUPON_CENTER_LIST_CLEAR='COUPON_CENTER_LIST_CLEAR';
//清除订单列表
export const ORDER_LIST_ClEAR='MY_COLLECTION_LIST_CLEAR';
import Vue from 'vue';
import Vuex from 'vuex';
//import middlewares from './middlewares';
import weiPageData from './modules/weiPageData';
import cartData from './modules/cartData';
import couponCenterData from './modules/couponCenterData';
import orderData from './modules/orderData';
import personCenterData from './modules/personCenterData';
import addressData from './modules/addressData';
import goodsData from './modules/goodsData';
const debug = process.env.NODE_ENV !== 'production';
Vue.use(Vuex);
Vue.config.debug = debug;
Vue.config.warnExpressionErrors = false;
const mutations = {
CHANGEMSG(state, cname) {
state.msg = cname;
}
};
export default new Vuex.Store({
modules: {
weiPageData,
cartData,
couponCenterData,
orderData,
personCenterData,
addressData,
goodsData
},
strict: debug
});
// A custom Nightwatch assertion.
// the name of the method is the filename.
// can be used in tests like this:
//
// browser.assert.elementCount(selector, count)
//
// for how to write custom assertions see
// http://nightwatchjs.org/guide#writing-custom-assertions
exports.assertion = function (selector, count) {
this.message = 'Testing if element <' + selector + '> has count: ' + count
this.expected = count
this.pass = function (val) {
return val === this.expected
}
this.value = function (res) {
return res.value
}
this.command = function (cb) {
var self = this
return this.api.execute(function (selector) {
return document.querySelectorAll(selector).length
}, [selector], function (res) {
cb.call(self, res)
})
}
}
require('babel-register')
var config = require('../../config')
// http://nightwatchjs.org/guide#settings-file
module.exports = {
"src_folders": ["test/e2e/specs"],
"output_folder": "test/e2e/reports",
"custom_assertions_path": ["test/e2e/custom-assertions"],
"selenium": {
"start_process": true,
"server_path": "node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.1.jar",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": require('chromedriver').path
}
},
"test_settings": {
"default": {
"selenium_port": 4444,
"selenium_host": "localhost",
"silent": true,
"globals": {
"devServerURL": "http://localhost:" + (process.env.PORT || config.dev.port)
}
},
"chrome": {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"firefox": {
"desiredCapabilities": {
"browserName": "firefox",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
// 1. start the dev server using production config
process.env.NODE_ENV = 'testing'
var server = require('../../build/dev-server.js')
// 2. run the nightwatch test suite against it
// to run in additional browsers:
// 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings"
// 2. add it to the --env flag below
// or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
// For more information on Nightwatch's config file, see
// http://nightwatchjs.org/guide#settings-file
var opts = process.argv.slice(2)
if (opts.indexOf('--config') === -1) {
opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
}
if (opts.indexOf('--env') === -1) {
opts = opts.concat(['--env', 'chrome'])
}
var spawn = require('cross-spawn')
var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
runner.on('exit', function (code) {
server.close()
process.exit(code)
})
runner.on('error', function (err) {
server.close()
throw err
})
// For authoring Nightwatch tests, see
// http://nightwatchjs.org/guide#usage
module.exports = {
'default e2e tests': function (browser) {
// automatically uses dev Server port from /config.index.js
// default: http://localhost:8080
// see nightwatch.conf.js
const devServer = browser.globals.devServerURL
browser
.url(devServer)
.waitForElementVisible('#app', 5000)
.assert.elementPresent('.hello')
.assert.containsText('h1', 'Welcome to Your Vue.js App')
.assert.elementCount('img', 1)
.end()
}
}
{
"env": {
"mocha": true
},
"globals": {
"expect": true,
"sinon": true
}
}
// Polyfill fn.bind() for PhantomJS
/* eslint-disable no-extend-native */
Function.prototype.bind = require('function-bind')
// require all test files (files that ends with .spec.js)
const testsContext = require.context('./specs', true, /\.spec$/)
testsContext.keys().forEach(testsContext)
// require all src files except main.js for coverage.
// you can also change this to match only the subset of files that
// you want coverage for.
const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/)
srcContext.keys().forEach(srcContext)
// This is a karma config file. For more details see
// http://karma-runner.github.io/0.13/config/configuration-file.html
// we are also using it with karma-webpack
// https://github.com/webpack/karma-webpack
var path = require('path')
var merge = require('webpack-merge')
var baseConfig = require('../../build/webpack.base.conf')
var utils = require('../../build/utils')
var webpack = require('webpack')
var projectRoot = path.resolve(__dirname, '../../')
var webpackConfig = merge(baseConfig, {
// use inline sourcemap for karma-sourcemap-loader
module: {
loaders: utils.styleLoaders()
},
devtool: '#inline-source-map',
vue: {
loaders: {
js: 'isparta'
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../../config/test.env')
})
]
})
// no need for app entry during tests
delete webpackConfig.entry
// make sure isparta loader is applied before eslint
webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || []
webpackConfig.module.preLoaders.unshift({
test: /\.js$/,
loader: 'isparta',
include: path.resolve(projectRoot, 'src')
})
// only apply babel for test files when using isparta
webpackConfig.module.loaders.some(function (loader, i) {
if (loader.loader === 'babel') {
loader.include = path.resolve(projectRoot, 'test/unit')
return true
}
})
module.exports = function (config) {
config.set({
// to run in additional browsers:
// 1. install corresponding karma launcher
// http://karma-runner.github.io/0.13/config/browsers.html
// 2. add it to the `browsers` array below.
browsers: ['PhantomJS'],
frameworks: ['mocha', 'sinon-chai'],
reporters: ['spec', 'coverage'],
files: ['./index.js'],
preprocessors: {
'./index.js': ['webpack', 'sourcemap']
},
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true
},
coverageReporter: {
dir: './coverage',
reporters: [
{ type: 'lcov', subdir: '.' },
{ type: 'text-summary' }
]
}
})
}
import Vue from 'vue'
import Hello from 'src/components/Hello'
describe('Hello.vue', () => {
it('should render correct contents', () => {
const vm = new Vue({
el: document.createElement('div'),
render: (h) => h(Hello)
})
expect(vm.$el.querySelector('.hello h1').textContent)
.to.equal('Welcome to Your Vue.js App')
})
})