Commit b23aa49d authored by 李智书's avatar 李智书

提交更新

parent 3535b1ce
Pipeline #187 failed with stages
.DS_Store
node_modules/
unpackage/
dist/
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.project
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"type": "uniCloud",
"default": {
"launchtype": "remote"
}
}
]
}
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
/*每个页面公共css */
@import url("./common/css/weui.min.css");
</style>
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
const baseUrl = 'https://szcf.superbest.wang/API' //稳定版本环境
let UrlReg = /^http:\/\/.*/i
let UrlReg2 = /^https:\/\/.*/i
function uploadFile(params) {
var _this = this,
url = params.url,
filePath = params.filePath,
name = params.name ? params.name : 'file',
data = params.data;
console.log('uploadFile', params)
//fileType String 见平台差异说明 文件类型,image/video/audio
uni.uploadFile({
url: url, //仅为示例,非真实的接口地址
filePath: filePath,
name: name,
formData: data,
success: (uploadFileRes) => {
if (params.success) {
console.log("uploadFile成功", uploadFileRes)
params.success(uploadFileRes)
}
}
});
}
function downloadFile(params) {
uni.downloadFile({
url: 'https://www.example.com/file/test', //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功');
}
}
});
}
/**
* 方法说明
* @url 请求地址
* @method 请求方式
* @dataType 请求类型
* @data 参数
* @header {参数类型} 额外头部信息
* @return {返回值类型} 返回值说明
*
*/
function request(params, data) {
return new Promise((resolve, reject) => {
uni.request({
url: (UrlReg.test(params.url) || UrlReg2.test(params.url)) ? params.url : baseUrl + params.url,
method: params.method,
dataType: params.dataType,
data,
header: Object.assign({
"Content-Type": "application/json;charset=utf-8",
}, params.header),
success: function(res) {
resolve(res)
},
fail: function(fail) {
reject(fail)
}
});
})
}
/**
* 方法说明
* @url 请求地址
* @parms 参数
* @header {参数类型} 额外头部信息
* @return {返回值类型} 返回值说明
*
*/
function postRequest(params, data = {}) {
return new Promise((resolve, reject) => {
uni.showLoading({
title: params.Ltitle ? params.Ltitle : "加载中..."
});
try {
//登录错误提示
let duration;
if(params.url == '/user/login/pwd'){
duration = 20000
}else{
duration = 3000
}
//token
let token = uni.getStorageSync("token")
//用户id
let userId = uni.getStorageSync("userId")
data.userId = data.userId || userId;
params.header = {
"token": token || ""
};
params.method = "POST";
params.dataType = "JSON"
if (!params.url) {
uni.showToast({
icon: "none",
title: "url不能为空",
duration
})
uni.hideLoading();
reject("url不能为空")
}
request(params, data).then(reslt => {
try {
reslt.data = JSON.parse(reslt.data)
} catch (e) {
reslt.data = reslt.data
//TODO handle the exception
}
if (reslt.data.code != 200) {
//token失效或者错误 ----401
//账号已在其他地方登录! -----1006
if (reslt.data.code == 401 || reslt.data.code == 1006) {
uni.showToast({
icon: "none",
title: reslt.data.message,
duration
})
uni.hideLoading();
//401跳转登录
uni.redirectTo({
// url: "/pages/notecheck/notecheck?phone=13428967050",
// url: "/pages/notecheck/notecheck",
url: "/pages/login/login"
})
reject(reslt.data.message)
}
uni.showToast({
icon: "none",
title: reslt.data.message,
duration
})
uni.hideLoading();
reject(reslt.data.message)
}
console.log(reslt);
uni.hideLoading();
resolve(reslt.data)
}).catch(e => {
reject(e.message)
})
} catch (e) {
console.log(e);
uni.hideLoading();
reject(e.message)
//TODO handle the exception
}
})
}
/**
* 方法说明
* @url 请求地址
* @parms 参数
* @header {参数类型} 额外头部信息
* @return {返回值类型} 返回值说明
*
*/
function getRequest(params, data) {
return new Promise((resolve, reject) => {
uni.showLoading({
title: params.Ltitle ? params.Ltitle : "加载中..."
});
try {
//token
let token = uni.getStorageSync("token")
//用户id
let userId = uni.getStorageSync("userId")
data.userId = data.userId || userId;
params.header = {
"token": token || ""
};
params.method = "GET";
params.dataType = "JSON"
if (!params.url) {
uni.showToast({
icon: "none",
title: "url不能为空",
duration:3000
})
uni.hideLoading();
reject("url不能为空")
}
request(params, data).then(reslt => {
try {
reslt.data = JSON.parse(reslt.data)
} catch (e) {
reslt.data = reslt.data
//TODO handle the exception
}
if (reslt.data.code != 200) {
//token失效或者错误
if (reslt.data.code == 401) {
uni.showToast({
icon: "none",
title: reslt.data.message,
duration:3000
})
uni.hideLoading();
//401跳转登录
uni.redirectTo({
// url: "/pages/notecheck/notecheck?phone=13428967050",
// url: "/pages/notecheck/notecheck",
url: "/pages/login/login"
})
reject(reslt.data.message)
}
uni.showToast({
icon: "none",
title: reslt.data.message,
duration:3000
})
uni.hideLoading();
reject(reslt.data.message)
}
console.log(reslt);
uni.hideLoading();
resolve(reslt.data)
}).catch(e => {
reject(e.message)
})
} catch (e) {
console.log(e);
uni.hideLoading();
reject(e.message)
//TODO handle the exception
}
})
}
/**
* 方法说明
* @url 请求地址
* @parms 参数
* @header {参数类型} 额外头部信息
* @return {返回值类型} 返回值说明
*
*/
async function Login(params, data) {
try {
await uni.showLoading({
title: params.Ltitle ? params.Ltitle : "加载中..."
});
params.method = "POST";
params.dataType = "JSON"
if (!params.url) {
await uni.showToast({
icon: "none",
title: "url不能为空",
duration:3000
})
await uni.hideLoading();
throw Error("url不能为空")
}
//获取验证码
let [err, reslt] = await request(params, data);
try {
reslt.data = JSON.parse(reslt.data)
} catch (e) {
reslt.data = reslt.data
//TODO handle the exception
}
if (err) {
await uni.showToast({
icon: "none",
title: JSON.stringify(err),
duration:3000
})
await uni.hideLoading();
throw Error(JSON.stringify(err))
}
if (reslt.data.code != 200) {
await uni.showToast({
icon: "none",
title: reslt.data.message,
duration:3000
})
await uni.hideLoading();
throw Error(reslt.data.message)
}
//获取token 用户信息
let [LoginErr, LoginInfo] = await request({
method: "POST",
url: '/user/login/to_login'
}, {
phone: reslt.data.data.phone,
verifyCode: reslt.data.data.verifyCode
});
try {
reslt.data = JSON.parse(reslt.data)
} catch (e) {
reslt.data = reslt.data
//TODO handle the exception
}
if (LoginErr) {
await uni.showToast({
icon: "none",
title: JSON.stringify(LoginErr),
duration:3000
})
await uni.hideLoading();
throw Error(JSON.stringify(LoginErr))
}
if (LoginInfo.data.code != 200) {
await uni.showToast({
icon: "none",
title: LoginInfo.data.message,
duration:3000
})
await uni.hideLoading();
throw Error(LoginInfo.data.message)
}
//缓存用户信息
uni.setStorageSync("token", LoginInfo.data.data.token)
uni.setStorageSync("userId", LoginInfo.data.data.userId)
await uni.hideLoading();
return true
} catch (e) {
console.log(e);
await uni.hideLoading();
throw Error(e)
//TODO handle the exception
}
}
module.exports = {
post: postRequest,
get: getRequest,
upload: uploadFile,
download: downloadFile,
Login,
//接口地址
baseUrl
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>本地网页</title>
<style type="text/css">
.btn {
display: block;
margin: 20px auto;
padding: 5px;
background-color: #007aff;
border: 0;
color: #ffffff;
height: 40px;
width: 200px;
}
.btn-red {
background-color: #dd524d;
}
.btn-yellow {
background-color: #f0ad4e;
}
.desc {
padding: 10px;
color: #999999;
}
</style>
</head>
<body>
<p class="desc">web-view 组件加载本地 html 示例,仅在 App 环境下生效。点击下列按钮,跳转至其它页面。</p>
<div class="btn-list">
<button class="btn" type="button" data-action="navigateTo">navigateTo</button>
<button class="btn" type="button" data-action="redirectTo">redirectTo</button>
<button class="btn" type="button" data-action="navigateBack">navigateBack</button>
<button class="btn" type="button" data-action="reLaunch">reLaunch</button>
<button class="btn" type="button" data-action="switchTab">switchTab</button>
</div>
<p class="desc">网页向应用发送消息。注意:小程序端应用会在此页面后退时接收到消息。</p>
<div class="btn-list">
<button class="btn btn-red" type="button" id="postMessage">postMessage</button>
</div>
<!-- uni 的 SDK -->
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
<script type="text/javascript">
document.addEventListener('UniAppJSBridgeReady', function() {
document.querySelector('.btn-list').addEventListener('click', function(evt) {
var target = evt.target;
if (target.tagName === 'BUTTON') {
var action = target.getAttribute('data-action');
switch (action) {
case 'switchTab':
uni.switchTab({
url: '/pages/tabBar/API/API'
});
break;
case 'reLaunch':
uni.reLaunch({
url: '/pages/tabBar/API/API'
});
break;
case 'navigateBack':
uni.navigateBack({
delta: 1
});
break;
default:
uni[action]({
url: '/pages/component/button/button'
});
break;
}
}
});
document.querySelector("#postMessage").addEventListener('click', function() {
uni.postMessage({
data: {
action: 'message'
}
});
})
});
</script>
</body>
</html>
<!--
THIS EXAMPLE WAS DOWNLOADED FROM https://echarts.apache.org/examples/zh/editor.html?c=pie-doughnut
-->
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
<meta name=viewport
content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
<!-- Uncomment this line if you want to dataTool extension
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/dataTool.min.js"></script>
-->
<!-- Uncomment this line if you want to use gl extension
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
-->
<!-- Uncomment this line if you want to echarts-stat extension
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>
-->
<!-- Uncomment this line if you want to use map
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/china.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/world.js"></script>
-->
<!-- Uncomment these two lines if you want to use bmap extension
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/bmap.min.js"></script>
-->
<script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [{
name: '访问来源',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [{
value: 1048,
name: '搜索引擎'
},
{
value: 735,
name: '直接访问'
},
{
value: 580,
name: '邮件营销'
},
{
value: 484,
name: '联盟广告'
},
{
value: 300,
name: '视频广告'
}
]
}]
};
if (option && typeof option === 'object') {
myChart.setOption(option);
}
</script>
</body>
</html>
import Vue from 'vue'
import App from './App'
// OSS静态资源
Vue.prototype.$iImgUrl = 'https://szcf.superbest.wang/xcxImages/'
//http请求
import http from '@/common/js/http.js'
Vue.prototype.$http = http
// 时间处理模块
import dayjs from 'dayjs'
Vue.prototype.$day = dayjs
// #ifdef H5
// echarts图标
// var echarts = require('echarts')
// Vue.prototype.$echarts = echarts
// console.log(echarts);
// 微信JSSDK
// import jweixin from 'jweixin-module'
// Vue.prototype.$jweixin = jweixin
// console.log(jweixin);
//加载es5>>js
function loadJs(path, callback) {
let secScript = document.createElement("script");
secScript.setAttribute("src", path);
secScript.setAttribute("async", "async");
document.body.insertBefore(secScript, document.body.lastChild);
secScript.onload = callback;
if (secScript.readyState) {
// IE
secScript.onreadystatechange = function() {
if (secScript.readyState === 'loaded' || secScript.readyState === 'complete') {
secScript.onreadystatechange = null;
callback();
}
};
} else {
//其他浏览器
secScript.onload = callback;
}
}
// //JQ
// loadJs("//s1.pstatp.com/cdn/expire-1-M/jquery/1.8.0/jquery-1.8.0.min.js")
// // 微信-WEUI框架
// loadJs("//res.wx.qq.com/open/libs/weuijs/1.2.1/weui.min.js")
// // 公众号js-sdk
// loadJs("//res.wx.qq.com/open/js/jweixin-1.6.0.js")
// // 二维码生成
// loadJs("//static.runoob.com/assets/qrcode/qrcode.min.js")
// #endif
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
{
"name" : "az-wechat-web",
"appid" : "__UNI__6500A3F",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* 模块配置 */
"modules" : {},
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios打包配置 */
"ios" : {},
/* SDK配置 */
"sdkConfigs" : {}
},
"uniStatistics" : {
"enable" : true
}
},
/* 快应用特有相关 */
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true,
"uniStatistics" : {
"enable" : true
}
},
"mp-alipay" : {
"usingComponents" : true,
"uniStatistics" : {
"enable" : true
}
},
"mp-baidu" : {
"usingComponents" : true,
"uniStatistics" : {
"enable" : true
}
},
"mp-toutiao" : {
"usingComponents" : true,
"uniStatistics" : {
"enable" : true
}
},
"uniStatistics" : {
"enable" : true
},
"h5" : {
"router" : {
"mode" : "hash",
"base" : "/"
},
"title" : "安智教育",
"optimization" : {
"treeShaking" : {
"enable" : false
}
},
"uniStatistics" : {
"enable" : true
},
"template" : "template.h5.html"
},
"mp-qq" : {
"uniStatistics" : {
"enable" : true
}
}
}
{
"name": "az-wechat-web",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"dayjs": {
"version": "1.10.4",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz",
"integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw=="
},
"echarts": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.1.0.tgz",
"integrity": "sha512-/X2nnN5BXW2tuA/Hv9YY279rDfwcXaBAjK9Azi//llshbKyUXXxBknsug21GJRpwTmLZbE8rjjbhchdm01bZtw==",
"requires": {
"tslib": "2.0.3",
"zrender": "5.1.0"
}
},
"jweixin-module": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"tslib": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
},
"zrender": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.0.tgz",
"integrity": "sha512-c+8VRx52ycbmqwHeHLlo/BAfIHBl/JZNLM6cfDQFgzIH05yb+f5J9F/fbRsP+zGc8dW9XHuhdt8/iqukgMZSeg==",
"requires": {
"tslib": "2.0.3"
}
}
}
}
{
"name": "az-wechat-web",
"version": "1.0.0",
"description": "",
"main": "main.js",
"dependencies": {
"dayjs": "^1.10.4",
"echarts": "^5.1.0",
"jweixin-module": "^1.6.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
{
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "校智付电子校园卡",
"navigationStyle": "custom",
"usingComponents": {
},
"h5": {
"titleNView": "transparent"
}
}
}, {
"path": "pages/WxworkTearch/WxworkTearch",
"style": {
"navigationBarTitleText": "企业微信教职工采集签约助手",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/wxWorkAuth/wxWorkAuth",
"style": {
"navigationBarTitleText": "校智付",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/assignDeposit/assignDeposit",
"style": {
"navigationBarTitleText": "电子校园卡",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/confirmQrCode/confirmQrCode",
"style": {
"navigationBarTitleText": "识别二维码确认采集信息",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/CreditRefund/CreditRefund",
"style": {
"navigationBarTitleText": "信用金退款",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/ClsWeekReport/ClsWeekReport",
"style": {
"navigationBarTitleText": "周消费报告",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"usingComponents": {
},
"h5": {
"titleNView": "transparent"
}
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "校智付",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
}
}
This diff is collapsed.
This diff is collapsed.
<template>
<view class="container">
<view>
<image style="width: 100%;display: none;" src="../../static/img/123456.png" mode="aspectFit"></image>
</view>
<view id="showTips">
<image src="../../static/img/shareImg.png" mode="aspectFit"></image>
</view>
<view id="qrcode" ref="qrcode">
<image class="bg" src="../../static/img/qrcode_bg.png" mode="aspectFill">
</image>
<view class="main">
<h5 id="school_name">安智教育学校</h5>
<view class="info" style="padding-top: 50rpx;">
<view class="top_tip">(二维码仅限教职工使用)</view>
<view class="class_name">企业微信教职工采集签约助手</view>
<view class="qrcode_box">
<view id="comFirmCode"></view>
<image src="../../static/img/logo.png" class="sub" mode="aspectFit"></image>
</view>
<view class="tip">扫码或长按识别二维码<br />登录校智付小程序</view>
<view class="top_tip" id="DateTime">过期</view>
</view>
</view>
</view>
</view>
</template>
<script>
console.log(location.href)
var HOST = location.host;
var fromApp = ''; //校智付还是光海 wxwork / ghwxwork
export default {
name: "WxworkTearch",
data() {
return {
}
},
created: function() {
},
mounted: function() {
let {
screenHeight
} = uni.getSystemInfoSync()
console.log(screenHeight / 750);
if (this.WxWordBro()) { //企微
$('#showTips').css('display', 'block');
weui.topTips('请在微信中打开');
return
}
if (!this.getQueryParams('hex')) {
weui.topTips('跳转参数hex不能为空');
return
}
if (!this.getQueryParams('app')) {
weui.topTips('跳转参数app不能为空');
return
}
let this_ = this;
this.$nextTick(function() {
$('#qrcode').css('display', 'block');
$('#school_name').html(decodeURI(this_.getQueryParams('schoolname')));
fromApp = this_.getQueryParams('app');
setTimeout(function() {
this_.CreateQrCode(screenHeight / 750);
this_.getDate();
}, 300)
})
},
methods: {
//获取参数
getQueryParams(params) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == params) {
return pair[1];
}
}
return (false);
},
//生成二维码
CreateQrCode(pit) {
var qrCode = new QRCode(document.getElementById("comFirmCode"), {
width: 201 * pit,
height: 201 * pit
})
var url = `https://${HOST}/wechat/qr/${fromApp}?hex=${this.getQueryParams('hex')}&et=123456`;
console.log('url = ' + url)
qrCode.makeCode(url);
},
//判断是否企微浏览器
WxWordBro() {
var agent = navigator.userAgent.toLowerCase();
if (agent.match(/WxWork/i) == "wxwork") {
return true;
} else {
return false;
}
},
//设置二维码有效期为1个月
getDate() {
let addZero = (num) => (num < 10 ? '0' + num : num),
date = new Date(),
m = date.getMonth();
date.setMonth(m + 1);
let endTime = date.getFullYear() + '' + addZero(date.getMonth() + 1) + '' + addZero(date.getDate()) +
'';
document.getElementById('DateTime').innerText = endTime + '过期';
}
}
}
</script>
<style scoped lang="scss">
body {
margin: 0;
overflow: hidden;
}
#qrcode {
top: 20vh;
display: none;
position: relative;
text-align: center;
}
.top_tip {
color: #AAAAAA;
font-size: 14rpx;
margin-top: 5rpx;
}
#showTips {
text-align: center;
display: none;
overflow: hidden;
width: 100vw;
height: 100vh;
background: #F9F9F9;
}
#showTips>image {
margin-top: 40rpx;
}
.qrcode_box {
position: relative;
}
.class_name {
font-size: 14rpx;
margin-bottom: 10rpx;
}
.main {
position: absolute;
top: 0;
width: 70vw;
margin-left: 15vw;
}
.bg {
width: 70%;
height: 750rpx;
}
.tip {
margin: 10rpx 0;
font-size: 14rpx;
}
#comFirmCode {
margin-left: 80rpx;
}
.sub {
position: absolute;
width: 50rpx;
height: 50rpx;
left: 31vw;
top: 20vw;
}
#school_name {
font-size: 25rpx;
line-height: 47rpx;
color: #FFFFFF;
white-space: nowrap;
text-overflow: ellipsis;
margin-top: 30rpx;
}
@media screen and (min-width: 900rpx) {
#qrcode {
top: 0;
position: relative;
margin: 10vh auto;
}
.bg {
width: 360rpx;
height: 490rpx;
margin: 0;
}
#school_name {
line-height: 65rpx;
}
.top_tip {
color: #AAAAAA;
font-size: 16rpx;
margin: 10rpx 5rpx;
}
.main {
width: 360rpx;
margin-left: 0;
left: calc(50vw - 180rpx);
}
.sub {
position: absolute;
width: 40rpx;
height: 40rpx;
left: 160rpx;
top: 80rpx;
}
}
</style>
This diff is collapsed.
<template>
<view class="container">
<view id="comFirmCode"></view>
<p>请使用微信扫码识别二维码,确认采集信息</p>
</view>
</template>
<script>
export default {
name:"confirmQrCode",
data() {
return {
}
},
created: function() {
},
mounted: function() {
let this_ = this;
this.$nextTick(function() {
setTimeout(function() {
var qrCode = new QRCode(document.getElementById("comFirmCode"), {
width: 201,
height: 201
})
console.log(location.href)
var myCode = location.href.split('mpwechat/confirmQrCode.html?');
var url = `${myCode[0]}wechat/qr/qrreacquire?${myCode[1]}`;
console.log('url = ' + url)
qrCode.makeCode(url.replace("invitation", "main"));
$("#comFirmCode").find('img').css({
"width": "50vw",
"height": "50vw",
"padding": "3vw",
"border": "4px solid #39ddb0"
})
}, 100)
})
},
methods: {
}
}
</script>
<style scoped>
body {
margin: 0;
}
#comFirmCode {
width: 50vw;
height: 50vw;
margin: 10vh 0 0 21vw;
}
img {
width: 50vw;
height: 50vw;
padding: 3vw;
border: 4px solid #39ddb0;
}
p {
font-size: 14px;
color: gray;
margin-top: 50px;
text-align: center;
}
</style>
<template>
<view class="container">
</view>
</template>
<script>
export default {
data() {
return {
}
},
onLoad() {
uni.showLoading({
mask: true,
title: "请稍后......."
})
uni.navigateTo({
url: "/pages/ClsWeekReport/ClsWeekReport",
success: function() {
uni.hideLoading()
}
})
},
created: function() {
// console.log(this.$echarts);
},
methods: {
},
mounted: function() {}
}
</script>
<style scoped>
</style>
<template>
<view class="container">
<view class="logonBox" id="Login1">
<p>请确认是否登录【校智付平台】</p>
<view id="inputDiv" onclick="InputClick()">
点击上传通讯录
</view>
<input id="inputBox" type="file" @input="upload(this)" accept=".txt" />
<button onclick="LoginTo()">登录</button>
</view>
<view id="Login2">
<p>API同步设置<img class="imgBox" src="../../static/img/question.png" title="通过API同步通讯录可获取到应用中的通讯录可见范围内全部数据"
alt=""></p>
<view style="display: flex;justify-content: space-between;margin:30rpx 0;">
<view style="line-height: 40rpx;">
<span style="color: red;font-size: 18rpx;">*</span>
<span>secret:</span>
</view>
<input id="inputBox2" onkeyup="this.value=this.value.replace(/\s+/g,'')" type="text" />
</view>
<view class="btngroup" style='display:flex;width: 60%;margin-left: 20%;justify-content: space-between;'>
<view class="cancel" @click='windowClose'>取消</view>
<view class="enture" @click="handleSecret">确定</view>
</view>
</view>
<view class="copyRight">
<p>湖南校智付网络科技有限公司All Rights Reserved 湘ICP备 17004139号-1 Copyright ©<span id="NowYear"></span></p>
</view>
</view>
</template>
<script>
let Host = '',
Token = '',
authUrl = '',
JsonList = [],
upLoadSuccess = false,
syncMode = 1; //采集流程区分
let AuthCode, HostService;
export default {
name:"wxWorkAuth",
data() {
return {
}
},
created: function() {
},
mounted: function() {
let this_ = this;
AuthCode = this_.getQueryParams('auth_code');
HostService = this_.getQueryParams('app');
this.$nextTick(function() {
if (AuthCode === undefined || AuthCode == '') {
uni.showToast({
icon: "none",
title: "auth_code参数确失"
})
return
};
$('#NowYear').html(new Date().getFullYear())
this_.wxLogin();
$("#inputDiv").click(function() {
$("#inputBox").click();
});
})
},
methods: {
//获取参数
getQueryParams(params) {
let href = window.location.href
let query = href.substring(href.indexOf('?') + 1);
let vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
let pair = vars[i].split("=");
if (pair[0] == params) {
return pair[1];
}
}
return (false);
},
//企微单点登录
wxLogin() {
// $('#Login2').css('display', 'block');
// Token = "res.results.token";
// syncMode = 2;
// return
$.ajax({
url: `${Host}/${HostService}/admin/code2Token`,
data: JSON.stringify({
authCode: AuthCode
}),
type: "POST",
// contentType: "application/json",
dataType: "json",
success: function(res) {
if (res.code == 10000) {
if (res.results.syncMode == 2) { //secret 流程2
$('#Login2').css('display', 'block');
Token = res.results.token;
syncMode = 2;
} else { //默认流程
syncMode = 1;
$('#Login1').css('display', 'block');
Token = res.results.token;
getTxtUrl();
}
} else {
alert(res.message);
}
}
})
},
//提交secret
handleSecret() {
if ($('#inputBox2').val() == '') {
alert('请先填写secret')
return
}
$.ajax({
url: `${Host}/${HostService}/admin/SubmitContactSecret`,
data: JSON.stringify({
secret: $('#inputBox2').val()
}),
type: "POST",
// contentType: "application/json",
dataType: "json",
success: function(res) {
if (res.code == 10000) {
alert('提交成功');
window.location = location.href.split('mpwechat/wxWorkAuth.html')[0];
} else {
alert(res.msg);
}
},
beforeSend: function(xhr) {
xhr.setRequestHeader("token", Token);
}
})
},
//获取转义后的下载地址
getTxtUrl() {
$.ajax({
url: `${Host}/${HostService}/admin/getIdTranslateFileUrl`,
data: {},
type: "GET",
contentType: "application/json",
dataType: "json",
success: function(res) {
if (res.code == 10000) {
authUrl = res.results.url;
download()
// alert('链接='+authUrl)
} else {
alert(res.message);
}
},
beforeSend: function(xhr) {
xhr.setRequestHeader("token", Token);
}
})
},
//下载
download() {
this.$nextTick(function() {
let a = document.createElement('a');
let event = new MouseEvent('click');
a.href = authUrl;
console.log('导出路径 = ' + authUrl)
a.dispatchEvent(event);
})
},
//上传转义内容
sendTXTContent() {
console.log(JsonList);
if (JsonList && JSON.parse(JsonList) != '' && JSON.parse(JsonList).length && JSON.parse(JsonList)[0]
.corp_id) {} else {
$("#inputDiv").html('点击上传通讯录');
return alert('上传文件有误,请重新上传');
}
$.ajax({
url: `${Host}/${HostService}/admin/uploadIdTranslateFileContent`,
data: JSON.stringify({
fileContent: JsonList
}),
contentType: "application/json",
type: "POST",
dataType: "json",
success: function(res) {
if (res.code == 10000) {
upLoadSuccess = true;
} else {
upLoadSuccess = false;
alert(res.message);
}
},
beforeSend: function(xhr) {
xhr.setRequestHeader("token", Token);
}
})
},
//跳转
LoginTo() {
if (!upLoadSuccess) {
alert('通讯录未导入,请导入通讯录!');
return
}
window.location = location.href.split('mpwechat/wxWorkAuth.html')[0];
},
windowClose() {
window.close();
},
//本地文件的内容
upload(input) { //支持chrome IE10
if (window.FileReader) {
var file = input.files[0];
event.target.value = ''; //解决同一个文件不能二次上传
$("#inputDiv").html(file.name);
filename = file.name.split(".")[0];
var reader = new FileReader();
reader.onload = function() {
JsonList = this.result;
sendTXTContent()
// alert(this.result);
}
reader.readAsText(file);
}
//支持IE 7 8 9 10
else if (typeof window.ActiveXObject != 'undefined') {
var xmlDoc;
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load(input.value);
JsonList = xmlDoc.xml;
sendTXTContent()
// alert(xmlDoc.xml);
}
// //支持FF
else if (document.implementation && document.implementation.createDocument) {
var xmlDoc;
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.async = false;
xmlDoc.load(input.value);
JsonList = xmlDoc.xml;
sendTXTContent()
// alert(xmlDoc.xml);
} else {
alert('error');
}
console.log(JsonList)
}
}
}
</script>
<style scoped>
page {
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
background-image: url(../../static/img/loginBg.png);
}
.imgBox {
display: inline-block;
width: 17rpx;
margin-left: 5rpx;
vertical-align: middle;
}
.logonBox {
margin: 20vh auto;
text-align: center;
background: #fff;
width: 300rpx;
display: none;
border-radius: 5rpx;
padding: 20rpx 50rpx 30rpx 50rpx;
}
#Login2 {
margin: 20vh auto;
text-align: center;
background: #fff;
width: 100%;
display: none;
border-radius: 5rpx;
padding: 20rpx 20rpx 30rpx 20rpx;
}
#Login2>p {
text-align: left;
margin: 0;
padding-bottom: 10rpx;
border-bottom: 1rpx solid #e6e6e6;
}
#inputBox2 {
height: 40rpx;
border: 1rpx solid #e6e6e6;
width: 75%;
padding: 0 2%;
outline: none;
}
#Login2>div>button {
width: 45% !important;
height: 40rpx !important;
cursor: pointer;
font-size: 15rpx;
}
#Login2>div>button:hover {
opacity: 0.8;
}
.btngroup view{
width: 300rpx;
height: 60rpx;
text-align: center;
line-height: 60rpx;
margin: 0 auto;
border: 2rpx solid #ccc;
}
.cancel {
background: #fff;
color: #888;
}
.enture {
background: linear-gradient(to top, #0BC5B7, #2FDE97);
}
.logonBox>p {
font-size: 18rpx;
font-weight: bold;
}
button {
width: 90%;
height: 45rpx;
outline: none;
border-radius: 5rpx;
margin-top: 15rpx;
border: none;
line-height: 0;
color: #fff;
font-size: 20rpx;
background: -webkit-linear-gradient(left, #0BC5B7, #2FDE97);
}
.copyRight {
position: fixed;
bottom: 20rpx;
}
.copyRight>p {
text-align: center;
font-size: 14rpx;
width: 100vw;
color: #3BBDB1;
}
#inputBox {
height: 100%;
width: 100%;
opacity: 0;
}
#inputDiv {
background: #fff;
border: 1rpx dashed #2FDE97;
text-align: center;
width: 200rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 15rpx;
color: #2FDE97;
height: 35rpx;
margin-left: 50rpx;
border-radius: 2rpx;
line-height: 35rpx;
margin-top: 30rpx;
}
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index",
"van-loading": "../loading/index"
}
}
This diff is collapsed.
This diff is collapsed.
@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;line-height:20px;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background-color:#fff;background-color:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:1px solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background-color:#07c160;background-color:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:1px solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background-color:#1989fa;background-color:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:1px solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background-color:#ee0a24;background-color:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:1px solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background-color:#ff976a;background-color:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:1px solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background-color:#fff;background-color:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0}
\ No newline at end of file
export declare const RED = "#ee0a24";
export declare const BLUE = "#1989fa";
export declare const WHITE = "#fff";
export declare const GREEN = "#07c160";
export declare const ORANGE = "#ff976a";
export declare const GRAY = "#323233";
export declare const GRAY_DARK = "#969799";
export const RED = '#ee0a24';
export const BLUE = '#1989fa';
export const WHITE = '#fff';
export const GREEN = '#07c160';
export const ORANGE = '#ff976a';
export const GRAY = '#323233';
export const GRAY_DARK = '#969799';
This diff is collapsed.
This diff is collapsed.
.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{display:table;clear:both;content:""}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #eee;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment