123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- "use strict";
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
- var utils = require('../../api/utils');
- var processDataSet = require('../utils/processDataSet');
- Component({
- data: {
- isUpdating: false,
- scope: '',
- getAuthorize: '',
- styleV2: my.styleV2
- },
- props: {
- size: 'default',
- type: '',
- plain: false,
- disabled: false,
- loading: false,
- 'form-type': '',
- 'open-type': '',
- 'app-parameter': '',
- 'hover-class': 'button-hover',
- 'hover-stop-propagation': false,
- 'hover-start-time': false,
- className: '',
- onTap: function onTap() {},
- onGetUserInfo: '',
- onGetPhoneNumber: ''
- },
- onInit: function onInit() {
- this.updateData();
- },
- deriveDataFromProps: function deriveDataFromProps(nextProps) {
- var size = nextProps.size,
- type = nextProps.type,
- plain = nextProps.plain,
- disabled = nextProps.disabled,
- loading = nextProps.loading,
- formType = nextProps.formType,
- openType = nextProps.openType,
- hoverClass = nextProps.hoverClass,
- hoverStopPropagation = nextProps.hoverStopPropagation,
- hoverStartTime = nextProps.hoverStartTime,
- appParameter = nextProps.appParameter;
- var opentype = this.getOpenType(openType);
- var scope = this.getScope(openType);
- var params = {
- size: size,
- type: type,
- plain: plain,
- disabled: disabled,
- loading: loading,
- formType: formType,
- opentype: opentype,
- scope: scope,
- hoverClass: hoverClass,
- hoverStopPropagation: hoverStopPropagation,
- hoverStartTime: hoverStartTime,
- appParameter: appParameter
- };
- Object.keys(params).forEach(function (key) {
- return params[key] === undefined && delete params[key];
- });
- this.setData(params);
- },
- methods: {
- updateData: function updateData() {
- var _this = this;
- if (this.data.isUpdating) {
- return;
- }
- this.setData({
- isUpdating: true
- });
- for (var key in this.props) {
- if (this.props.hasOwnProperty(key)) {
- typeof this.props[key] === 'string' && (this.props[key] = this.props[key].replace(/(^\s*)|(\s*$)/g, ''));
- }
- }
- var _this$props = this.props,
- size = _this$props.size,
- type = _this$props.type,
- plain = _this$props.plain,
- disabled = _this$props.disabled,
- loading = _this$props.loading,
- formType = _this$props.formType,
- hoverClass = _this$props.hoverClass,
- hoverStopPropagation = _this$props.hoverStopPropagation,
- hoverStartTime = _this$props.hoverStartTime,
- appParameter = _this$props.appParameter,
- openType = _this$props.openType;
- this.getSystem(function () {
- var opentype = _this.getOpenType(openType);
- var scope = _this.getScope(openType);
- _this.setData({
- isUpdating: false,
- size: size,
- type: type,
- plain: plain,
- disabled: disabled,
- loading: loading,
- formType: formType,
- opentype: opentype,
- hoverClass: hoverClass,
- hoverStopPropagation: hoverStopPropagation,
- hoverStartTime: hoverStartTime,
- appParameter: appParameter,
- scope: scope
- });
- });
- },
- getSystem: function getSystem(cb) {
- var that = this;
- my.getSystemInfo({
- success: function success(res) {
- var app = '';
- if (res.app && res.app === 'amap') {
- app = 'amap';
- } else {
- app = 'alipay';
- }
- that.setData({
- app: app
- });
- cb();
- }
- });
- },
- getOpenType: function getOpenType(opentype) {
- var transformList = {
- getPhoneNumber: 'getAuthorize',
- getUserInfo: 'getAuthorize'
- };
- if (transformList[opentype]) {
- return transformList[opentype];
- }
- var allowList = ['share', 'launchApp', 'getAuthorize', 'openSetting'];
- if (this.data.app === 'amap') {
- allowList = ['share', 'getAuthorize', 'openSetting'];
- }
- if (opentype) {
- if (allowList.indexOf(opentype) !== -1) {
- return opentype;
- } else {
- utils.warn("\u5C0F\u7A0B\u5E8Fopen-type\u503C\u4E0D\u652F\u6301".concat(opentype), {
- apiName: "button/open-type/".concat(opentype),
- errorType: 0,
- type: 'component'
- });
- }
- }
- return '';
- },
- getScope: function getScope(opentype) {
- var scopeMap = {
- getPhoneNumber: 'phoneNumber',
- getUserInfo: 'userInfo'
- };
- return scopeMap[opentype] || '';
- },
- onError: function onError(err) {
- if (this.props.onError === 'function') {
- this.props.onError(err);
- }
- },
- getAuthorize: function getAuthorize() {
- var that = this;
- var resObj = {};
- if (this.data.opentype === 'getAuthorize' && this.data.scope === 'phoneNumber') {
- my.getPhoneNumber({
- success: function success(res) {
- if (typeof that.props.onGetPhoneNumber === 'function') {
- resObj.detail = res;
- resObj.type = 'getphonenumber';
- that.props.onGetPhoneNumber(resObj);
- }
- },
- fail: function fail(res) {
- if (typeof that.props.onGetPhoneNumber === 'function') {
- resObj.detail = res;
- resObj.type = 'getphonenumber';
- that.props.onGetPhoneNumber(resObj);
- }
- }
- });
- }
- if (this.data.opentype === 'getAuthorize' && this.data.scope === 'userInfo') {
- my.getOpenUserInfo({
- success: function success(res) {
- if (typeof that.props.onGetUserInfo === 'function') {
- var _res = JSON.parse(res.response).response;
- _res.gender && _res.gender === 'm' ? _res.gender = 1 : _res.gender = 2;
- _res.avatarUrl = _res.avatar;
- delete _res.avatar;
- resObj.detail = {};
- resObj.detail.userInfo = _res;
- resObj.type = 'getuserinfo';
- that.props.onGetUserInfo(resObj);
- }
- },
- fail: function fail(res) {
- if (typeof that.props.onGetUserInfo === 'function') {
- resObj.detail = res;
- resObj.type = 'getuserinfo';
- that.props.onGetUserInfo(resObj);
- }
- }
- });
- }
- },
- stopEvent: function stopEvent() {},
- btnOnTap: function btnOnTap(e) {
- var that = this;
- var tapEvent = processDataSet(e, this.props);
- if (this.props.openType === 'openSetting') {
- my.openSetting({
- success: function success(res) {
- if (typeof that.props.onOpenSetting === 'function') {
- that.props.onOpenSetting(_objectSpread(_objectSpread({}, tapEvent), {}, {
- type: 'opensetting',
- detail: {
- authSetting: utils.mapAuthSetting(res.authSetting)
- }
- }));
- }
- }
- });
- }
- this.props.catchTap && this.props.catchTap(tapEvent);
- this.props.onTap && this.props.onTap(tapEvent);
- },
- getPhone: function getPhone(e) {
- var _this2 = this;
- var eve = _objectSpread({}, e);
- my.getPhoneNumber({
- success: function success(res) {
- if (typeof res.response === 'string') {
- var response = JSON.parse(res.response);
- if (response.response.code === '40001') {
- utils.warn('请去小程序开发管理后台的功能列表中添加获取电话功能', {
- apiName: 'button/bindgetphonenumber',
- errorType: 1,
- type: 'component'
- });
- }
- return false;
- }
- eve.detail = res.response;
- if (typeof _this2.props.onGetPhoneNumber === 'function') {
- _this2.props.onGetPhoneNumber(eve);
- }
- },
- fail: function fail(err) {
- throw err;
- }
- });
- },
- getUserInfo: function getUserInfo(e) {
- var that = this; // 获取用户信息
- var eve = _objectSpread({}, e);
- my.getAuthCode({
- scopes: 'auth_user',
- success: function success() {
- my.getOpenUserInfo({
- success: function success(userInfo) {
- eve.detail = {
- userInfo: {},
- rawData: ''
- };
- if (typeof userInfo.response === 'string') {
- var response = JSON.parse(userInfo.response);
- if (response.response.code === '40006') {
- utils.warn('请去小程序开发管理后台的功能列表中添加会员信息功能', {
- apiName: 'button/bindgetuserinfo',
- errorType: 1,
- type: 'component'
- });
- }
- return false;
- }
- eve.detail.userInfo = _objectSpread({}, userInfo.response);
- eve.detail.userInfo.avatarUrl = eve.detail.userInfo.avatar;
- delete eve.detail.userInfo.avatar;
- eve.detail.rawData = JSON.stringify(eve.detail.userInfo);
- if (typeof that.props.onGetUserInfo === 'function') {
- that.props.onGetUserInfo(eve);
- }
- },
- fail: function fail(err) {
- throw err;
- }
- });
- }
- });
- }
- }
- });
|