提交 75ba2d50 编写于 作者: huangwensu's avatar huangwensu

接口联调

上级 d6171dda
###### 使用说明
> h5登录成功后判断是否签署协议
###### 1. 使用
```javascript
import PicaH5Agreement from 'pica-h5-agreement';
// if for global use
Vue.use(PicaH5Agreement);
```
package Features
```
\ No newline at end of file
```html
// template need popup
<van-popup v-model="show">
<pica-h5-agreement
:close="true"
:base-url="baseUrl"
/>
</van-popup>
```
###### 2. options
| 参数 | 说明 | 类型 | 默认值 |
| --------- | ---------------------- | -------- | -------- |
| baseUrl | 接口域名 | string | 空 |
| close | 是否显示 close 符号 | boolean | false |
> baseUrl:
> dev : http://dev-sc.yunqueyi.com
> test1: http://test1-sc.yunqueyi.com
> uat: http://uat-sc.yunqueyi.com
import axios from 'axios';
import { getItem } from '../utils/index.js';
let axiosInstance = axios.create();
axiosInstance.interceptors.request.use(
config => {
if (config.withCredentials) {
config.headers.token = getItem('token');
}
return config;
}
);
axiosInstance.interceptors.response.use(
response => {
let data =
response.data == undefined
? response.request.responseText
: response.data;
return data;
}
);
export default function request(options) {
const axiosConfig = {
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json;charset=UTF-8'
},
timeout: 10000,
withCredentials: true,
responseType: 'json',
method: 'get'
};
options = Object.assign(axiosConfig, options);
return new Promise((resolve, reject) => {
axiosInstance(options)
.then(res => {
resolve(res);
})
.catch(error => {
reject(error);
});
});
}
......@@ -10,8 +10,30 @@
//
//
//
//
var script = {
name: 'PicaH5Agreement'
name: 'PicaH5Agreement',
props: {
baseUrl: {
type: String,
default: ''
},
close: {
type: Boolean,
default: false
}
},
data() {
return {};
},
created() {},
methods: {
readAndAgree() {}
}
};
function styleInject(css, ref) {
......@@ -43,7 +65,7 @@ function styleInject(css, ref) {
}
}
var css = ".pica-h5-agreement-container[data-v-6bdf8c47] {\n width: 8rem;\n background: #fff;\n border-radius: 0.08rem;\n font-family: PingFangSC-Semibold;\n box-shadow: 0 0 0.13333rem #ededed;\n -webkit-user-select: none;\n user-select: none;\n}\n.pica-h5-agreement-container .agreement-title[data-v-6bdf8c47] {\n color: #333;\n font-size: 0.48rem;\n padding: 0.8rem 0 0.37333rem;\n text-align: center;\n}\n.pica-h5-agreement-container .agreement-content[data-v-6bdf8c47] {\n color: #676869;\n font-size: 0.37333rem;\n padding: 0 0.8rem 0.21333rem;\n line-height: 0.56rem;\n}\n.pica-h5-agreement-container .agreement-content span[data-v-6bdf8c47] {\n color: #449284;\n}\n.pica-h5-agreement-container .agreement-btn[data-v-6bdf8c47] {\n color: #449284;\n font-size: 0.45333rem;\n text-align: center;\n padding: 0.32rem 2.4rem;\n border: 1PX solid #F0F1F2;\n}\n";
var css = ".pica-h5-agreement-container[data-v-3f269335] {\n width: 8rem;\n background: #fff;\n border-radius: 0.08rem;\n font-family: PingFangSC-Semibold;\n box-shadow: 0 0 0.13333rem #ededed;\n -webkit-user-select: none;\n user-select: none;\n}\n.pica-h5-agreement-container .agreement-title[data-v-3f269335] {\n color: #333;\n font-size: 0.48rem;\n padding: 0.8rem 0 0.37333rem;\n text-align: center;\n}\n.pica-h5-agreement-container .agreement-content[data-v-3f269335] {\n color: #676869;\n font-size: 0.37333rem;\n padding: 0 0.8rem 0.21333rem;\n line-height: 0.56rem;\n}\n.pica-h5-agreement-container .agreement-content span[data-v-3f269335] {\n color: #449284;\n}\n.pica-h5-agreement-container .agreement-btn[data-v-3f269335] {\n color: #449284;\n font-size: 0.45333rem;\n text-align: center;\n padding: 0.32rem 2.4rem;\n border: 1PX solid #F0F1F2;\n}\n";
styleInject(css);
function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier
......@@ -140,7 +162,16 @@ var __vue_render__ = function () {
var _c = _vm._self._c || _h;
return _vm._m(0);
return _c("div", {
staticClass: "pica-h5-agreement-container"
}, [_c("div", {
staticClass: "agreement-title"
}, [_vm._v("云鹊医隐私协议")]), _vm._v(" "), _vm._m(0), _vm._v(" "), _c("div", {
staticClass: "agreement-btn",
on: {
click: _vm.readAndAgree
}
}, [_vm._v("我已阅读并同意")])]);
};
var __vue_staticRenderFns__ = [function () {
......@@ -151,14 +182,8 @@ var __vue_staticRenderFns__ = [function () {
var _c = _vm._self._c || _h;
return _c("div", {
staticClass: "pica-h5-agreement-container"
}, [_c("div", {
staticClass: "agreement-title"
}, [_vm._v("云鹊医隐私协议")]), _vm._v(" "), _c("div", {
staticClass: "agreement-content"
}, [_vm._v("\n 开启健康知识漫画领取后,您将免费获取来自云鹊医平台和医生的健康知识漫画分享内容,需要同意"), _c("span", [_vm._v("《云鹊医平台隐私协议》")])]), _vm._v(" "), _c("div", {
staticClass: "agreement-btn"
}, [_vm._v("我已阅读并同意")])]);
}, [_vm._v("\n 开启健康知识漫画领取后,您将免费获取来自云鹊医平台和医生的健康知识漫画分享内容,需要同意\n "), _c("span", [_vm._v("《云鹊医平台隐私协议》")])]);
}];
__vue_render__._withStripped = true;
/* style */
......@@ -166,7 +191,7 @@ __vue_render__._withStripped = true;
const __vue_inject_styles__ = undefined;
/* scoped */
const __vue_scope_id__ = "data-v-6bdf8c47";
const __vue_scope_id__ = "data-v-3f269335";
/* module identifier */
const __vue_module_identifier__ = undefined;
......
{
"name": "pica-topic-comment",
"version": "1.0.2",
"name": "pica-h5-agreement",
"version": "1.0.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......@@ -6010,6 +6010,15 @@
"rollup-pluginutils": "^2.8.1"
}
},
"rollup-plugin-json": {
"version": "4.0.0",
"resolved": "http://192.168.110.93:4873/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz",
"integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==",
"dev": true,
"requires": {
"rollup-pluginutils": "^2.5.0"
}
},
"rollup-plugin-node-resolve": {
"version": "5.2.0",
"resolved": "http://192.168.110.93:4873/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
......
......@@ -24,7 +24,7 @@
"license": "MIT",
"bugs": {},
"dependencies": {
"axios": "^0.18.0"
"axios": "^0.18.1"
},
"devDependencies": {
"@babel/core": "^7.4.4",
......@@ -38,6 +38,7 @@
"rollup-plugin-commonjs": "^10.0.0",
"rollup-plugin-image": "^1.0.2",
"rollup-plugin-imagemin": "^0.4.0",
"rollup-plugin-json": "^4.0.0",
"rollup-plugin-node-resolve": "^5.0.0",
"rollup-plugin-postcss": "^2.0.3",
"rollup-plugin-terser": "^4.0.1",
......
import request from '../api/api.js';
/* eslint-disable-next-line */
/**
* 签署最新版协议
* @return {[type]} 协议类型 2:云鹊医用户协议 3:云鹊医隐私协议
*/
export const signAgreementApi = async data => {
return request({
method: 'post',
headers: {
token: data.token
},
data: {
type: data.type
},
url: `${data.baseUrl}smartcontract/protocol/sign`
})
}
......@@ -2,26 +2,51 @@
<div class="pica-h5-agreement-container">
<div class="agreement-title">云鹊医隐私协议</div>
<div class="agreement-content">
开启健康知识漫画领取后,您将免费获取来自云鹊医平台和医生的健康知识漫画分享内容,需要同意<span>《云鹊医平台隐私协议》</span>
开启健康知识漫画领取后,您将免费获取来自云鹊医平台和医生的健康知识漫画分享内容,需要同意
<span>《云鹊医平台隐私协议》</span>
</div>
<div class="agreement-btn" @click="readAndAgree">我已阅读并同意</div>
</div>
</template>
<script>
import {
signAgreementApi
} from '../service/index.js';
export default {
name: 'PicaH5Agreement',
props: {
baseUrl: {
type: String,
default: ''
},
agreementToken: {
type: String,
default: ''
},
close: {
type: Boolean,
default: false
}
},
data() {
return {
}
},
created() {
},
methods: {
readAndAgree() {
const data = {
baseUrl: this.baseUrl,
token: this.agreementToken,
type: 3
}
signAgreementApi(data).then(res => {
alert(res)
})
}
}
}
......
// 时间处理
Date.prototype.format = function(fmt) {
// author: meizz
let o = {
'M+': this.getMonth() + 1, // 月份
'd+': this.getDate(), // 日
'h+': this.getHours(), // 小时
'm+': this.getMinutes(), // 分
's+': this.getSeconds(), // 秒
'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
S: this.getMilliseconds()
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(this.getFullYear() + '').substr(4 - RegExp.$1.length)
);
for (let k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
};
/**
* 根据 URL key 获取 value
* @param {[type]} name [description]
* @return {[type]} [description]
*/
export const getSearchByName = name => {
const match = RegExp(`[?&]${name}=([^&]*)`).exec(window.location.href);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
};
export const getItem = name => {
if (!name) return;
const v = localStorage.getItem(name);
let val = null;
try {
val = JSON.parse(v);
} catch (e) {
// JSON.parse 失败 后 直接赋v给val;
val = v;
}
return val;
};
export const setItem = (name, value) => {
if (!name) return;
if (typeof value !== 'string') {
value = JSON.stringify(value);
}
localStorage.setItem(name, value);
};
export const removeItem = name => {
if (!name) return;
localStorage.removeItem(name);
};
export const isIos = () => {
var u = navigator.userAgent;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
return isiOS;
};
export const isAndroid = () => {
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
return isAndroid;
};
const REG_NO_BIAOQING = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/gi;
/** @type {RegExp} 拒绝键盘表情 */
export const rnBiaoQing = v => {
return v.replace(REG_NO_BIAOQING, '');
};
/**
* 校验对象是否为空
* */
export const isNotEmptyUtils = obj => {
if ('' == obj || null == obj || undefined == obj || 'null' == obj) {
return false;
}
return true;
};
/**
* 校验对象是否为空
* */
export const isEmptyUtils = obj => {
return !isNotEmptyUtils(obj);
};
/**
* 获取时间戳
* @param {Date} [date]日期对象,为空时,返回当前时间戳
* @return {String} timeStamp时间戳 格式:yyyyMMddhhmmssS
*/
export const timeStamp = date => {
if (isEmptyUtils(date)) {
return new Date().format('yyyyMMddhhmmssS');
}
return date.format('yyyyMMddhhmmssS');
};
//截位
export const subString = (obj, int) => {
if (isEmptyUtils(obj) || isEmptyUtils(int)) {
return '';
}
if (obj.length <= int) {
return obj;
} else {
obj = obj.substring(0, int);
}
return obj;
};
/**
* 获取全局唯一标识符(GUID,Globally Unique Identifier)
* @return {String} guid
*/
export const guid = () => {
/**
* @return {String}
*/
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
return (
S4() +
S4() +
'-' +
S4() +
'-' +
S4() +
'-' +
S4() +
'-' +
S4() +
S4() +
S4()
);
};
/**
* 设置图片
* @param {[type]} action [description]
* @param {[type]} url [description]
* @return {[type]} [description]
*/
export function setImage(action, url) {
// action : add / del
console.log('hhahahahaha', this);
const { imagesObject } = this;
if ('add' == action) {
imagesObject[url] = url;
} else {
delete imagesObject[url];
}
this.imagesObject = imagesObject;
this.images = Object.keys(imagesObject);
}
export const isApp = () => {
// if (['test', 'uat', 'prod'].indexOf(process.env.VUE_APP_ENV)) return true;
if (window.__isAndroid || window.__isIOS) return true;
return false;
};
export const setCookie = (name, value, time) => {
var expires = 30 * 24 * 60 * 60 * 1000; //一天
var date = new Date(+new Date() + expires);
if (time) {
document.cookie =
name +
'=' +
escape(value) +
'; path=/' +
';expires=' +
date.toUTCString();
} else {
document.cookie = name + '=' + escape(value) + '; path=/';
}
};
export const removeCookie = key => {
var expires = -1 * 24 * 60 * 60 * 1000; //一天
var date = new Date(+new Date() + expires);
document.cookie =
key + '=' + escape('') + '; path=/' + ';expires=' + date.toUTCString(); //这里只需要把Cookie保质期退回一天便可以删除
};
export const getCookie = key => {
var cookieArr = document.cookie.split('; ');
for (var i = 0; i < cookieArr.length; i++) {
var arr = cookieArr[i].split('=');
if (arr[0] === key) {
return arr[1];
}
}
return '';
};
/**
* iPhone X、iPhone XS
*/
export const isIPhoneX = () => {
return (
/iphone/gi.test(window.navigator.userAgent) &&
window.devicePixelRatio &&
window.devicePixelRatio === 3 &&
window.screen.width === 375 &&
window.screen.height === 812
);
};
/**
* iPhone XS Max
*/
export const isIPhoneXSMax = () => {
return (
/iphone/gi.test(window.navigator.userAgent) &&
window.devicePixelRatio &&
window.devicePixelRatio === 3 &&
window.screen.width === 414 &&
window.screen.height === 896
);
};
/**
* iPhone XR
*/
export const isIPhoneXR = () => {
return (
/iphone/gi.test(window.navigator.userAgent) &&
window.devicePixelRatio &&
window.devicePixelRatio === 2 &&
window.screen.width === 414 &&
window.screen.height === 896
);
};
/**
* 时间戳转化为年 月 日 时 分 秒
*/
export const formatTime = timeStamp => {
let time = new Date(timeStamp),
y = time.getFullYear(),
m = time.getMonth() + 1,
d = time.getDate(),
h = time.getHours(),
mm = time.getMinutes();
// s = time.getSeconds();
return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm);
};
//数据转化
function add0(m) {
return m < 10 ? '0' + m : m;
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册