@@ -0,0 +1,21 @@ | |||
# Logs | |||
logs | |||
*.log | |||
npm-debug.log* | |||
yarn-debug.log* | |||
yarn-error.log* | |||
pnpm-debug.log* | |||
lerna-debug.log* | |||
node_modules | |||
.DS_Store | |||
dist | |||
*.local | |||
# Editor directories and files | |||
.idea | |||
*.suo | |||
*.ntvs* | |||
*.njsproj | |||
*.sln | |||
*.sw? |
@@ -0,0 +1,16 @@ | |||
{ // 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": [{ | |||
"app-plus" : | |||
{ | |||
"launchtype" : "local" | |||
}, | |||
"default" : | |||
{ | |||
"launchtype" : "local" | |||
}, | |||
"type" : "uniCloud" | |||
} | |||
] | |||
} |
@@ -0,0 +1,20 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<script> | |||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
CSS.supports('top: constant(a)')) | |||
document.write( | |||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
(coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
</script> | |||
<title></title> | |||
<!--preload-links--> | |||
<!--app-context--> | |||
</head> | |||
<body> | |||
<div id="app"><!--app-html--></div> | |||
<script type="module" src="/src/main.ts"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,75 @@ | |||
{ | |||
"name": "uni-preset-vue", | |||
"version": "0.0.0", | |||
"scripts": { | |||
"dev:app": "uni -p app", | |||
"dev:app-android": "uni -p app-android", | |||
"dev:app-ios": "uni -p app-ios", | |||
"dev:custom": "uni -p", | |||
"dev:h5": "uni", | |||
"dev:h5:ssr": "uni --ssr", | |||
"dev:mp-alipay": "uni -p mp-alipay", | |||
"dev:mp-baidu": "uni -p mp-baidu", | |||
"dev:mp-jd": "uni -p mp-jd", | |||
"dev:mp-kuaishou": "uni -p mp-kuaishou", | |||
"dev:mp-lark": "uni -p mp-lark", | |||
"dev:mp-qq": "uni -p mp-qq", | |||
"dev:mp-toutiao": "uni -p mp-toutiao", | |||
"dev:mp-weixin": "uni -p mp-weixin", | |||
"dev:quickapp-webview": "uni -p quickapp-webview", | |||
"dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", | |||
"dev:quickapp-webview-union": "uni -p quickapp-webview-union", | |||
"build:app": "uni build -p app", | |||
"build:app-android": "uni build -p app-android", | |||
"build:app-ios": "uni build -p app-ios", | |||
"build:custom": "uni build -p", | |||
"build:h5": "uni build", | |||
"build:h5:ssr": "uni build --ssr", | |||
"build:mp-alipay": "uni build -p mp-alipay", | |||
"build:mp-baidu": "uni build -p mp-baidu", | |||
"build:mp-jd": "uni build -p mp-jd", | |||
"build:mp-kuaishou": "uni build -p mp-kuaishou", | |||
"build:mp-lark": "uni build -p mp-lark", | |||
"build:mp-qq": "uni build -p mp-qq", | |||
"build:mp-toutiao": "uni build -p mp-toutiao", | |||
"build:mp-weixin": "uni build -p mp-weixin", | |||
"build:quickapp-webview": "uni build -p quickapp-webview", | |||
"build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", | |||
"build:quickapp-webview-union": "uni build -p quickapp-webview-union", | |||
"type-check": "vue-tsc --noEmit" | |||
}, | |||
"dependencies": { | |||
"@dcloudio/uni-app": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-app-plus": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-components": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-h5": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-alipay": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-baidu": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-jd": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-kuaishou": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-lark": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-qq": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-quickapp-webview": "3.0.0-3081220230817001", | |||
"dayjs": "^1.10.4", | |||
"less": "^4.2.0", | |||
"less-loader": "^11.1.3", | |||
"mp-html": "^2.4.1", | |||
"vant": "^4.7.3", | |||
"vue": "^3.2.45", | |||
"vue-i18n": "^9.1.9" | |||
}, | |||
"devDependencies": { | |||
"@dcloudio/types": "^3.3.2", | |||
"@dcloudio/uni-automator": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-stacktracey": "3.0.0-3081220230817001", | |||
"@dcloudio/vite-plugin-uni": "3.0.0-3081220230817001", | |||
"@vue/runtime-core": "^3.2.45", | |||
"@vue/tsconfig": "^0.1.3", | |||
"typescript": "^4.9.4", | |||
"vite": "4.1.4", | |||
"vue-tsc": "^1.0.24" | |||
} | |||
} |
@@ -0,0 +1,10 @@ | |||
/// <reference types='@dcloudio/types' /> | |||
import 'vue' | |||
declare module '@vue/runtime-core' { | |||
type Hooks = App.AppInstance & Page.PageInstance; | |||
interface ComponentCustomOptions extends Hooks { | |||
} | |||
} |
@@ -0,0 +1,17 @@ | |||
.DS_Store | |||
node_modules/ | |||
platforms/ | |||
dist/ | |||
npm-debug.log* | |||
yarn-debug.log* | |||
yarn-error.log* | |||
package-lock.json | |||
unpackage/ | |||
# Editor directories and files | |||
.idea | |||
.vscode | |||
*.suo | |||
*.ntvs* | |||
*.njsproj | |||
*.sln |
@@ -0,0 +1,42 @@ | |||
<script> | |||
import promisifyAll from './lib/wx-promise-pro/index'; | |||
import config from './config/index'; | |||
import server from './utils/server'; | |||
import api from './api/index'; | |||
import util from './utils/util'; | |||
import upload from './utils/upload'; | |||
import './utils/share'; | |||
// 日志调试模式 | |||
if (config.debug) { | |||
// eslint-disable-next-line no-console | |||
console.log('小程序配置:', config); | |||
// eslint-disable-next-line no-console | |||
// console.log('微信全局配置:', __wxConfig); | |||
} | |||
// 微信API支持Promise风格 | |||
promisifyAll(); | |||
export default { | |||
globalData:{ | |||
config, | |||
env: config.env, | |||
api, | |||
util, | |||
userId: uni.getStorageSync('userInfoData').userId, | |||
login: server.login, | |||
register: server.register, | |||
upload | |||
}, | |||
data() { | |||
return { | |||
}; | |||
}, | |||
}; | |||
</script> | |||
<style lang="less"> | |||
@import 'style/theme.less'; | |||
@import 'style/normalize.less'; | |||
@import 'style/public.less'; | |||
</style> |
@@ -0,0 +1,21 @@ | |||
/** | |||
* @name 新闻咨询API | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 获取工作公告列表 | |||
* @param {*} data | |||
*/ | |||
const getNewAPI = function (data) { | |||
return request({ | |||
url: '/admin-api/people/news/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
export { getNewAPI }; |
@@ -0,0 +1,103 @@ | |||
/** | |||
* @name 企业API | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 获得企业分页 | |||
* @param {*} data | |||
*/ | |||
const getEnterpriseListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/enterprise/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 删除企业 | |||
* @param {*} data | |||
*/ | |||
const DeleteEnterpriseIdApi = function (id) { | |||
return request({ | |||
url: `/admin-api/people/enterprise/delete?id=${id}`, | |||
method: 'delete' | |||
}); | |||
}; | |||
/** | |||
* 创建企业 | |||
* @param {*} data | |||
*/ | |||
const createAffiliatedEnterprise = function (data) { | |||
return request({ | |||
url: '/admin-api/people/enterprise/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建诉求 | |||
* @param {*} data | |||
*/ | |||
const createAppealApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/appeal/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得诉求分页 | |||
* @param {*} data | |||
*/ | |||
const getAppealListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/appeal/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得诉求详情 | |||
* @param {*} data | |||
*/ | |||
const getAppealIdApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/appeal/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得优质回复 | |||
* @param {*} data | |||
*/ | |||
const getPerfectReplyApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/appeal/perfect/reply/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 更新企业 | |||
* @param {*} data | |||
*/ | |||
const getEnterpriseApi = function (id) { | |||
return request({ | |||
url: `/admin-api/people/enterprise/get?id=${id}`, | |||
method: 'get' | |||
}); | |||
}; | |||
export { getEnterpriseListApi, DeleteEnterpriseIdApi, createAffiliatedEnterprise, createAppealApi, getAppealListApi, getAppealIdApi, getPerfectReplyApi, getEnterpriseApi }; |
@@ -0,0 +1,23 @@ | |||
/** | |||
* @name API管理 | |||
* @description 导出所有的API模块 | |||
**/ | |||
import * as publicApi from './publicApi.js'; // 公共 API | |||
import * as consult from './consult'; // 咨询 | |||
import * as enterprise from './enterprise'; // 企业 | |||
import * as lifeApi from './lifeApi'; // 生活 | |||
import * as peopleApi from './peopleApi'; // 民生 | |||
import * as myApi from './myApi'; // 我的 | |||
export default { | |||
data() { | |||
return {}; | |||
}, | |||
consult, | |||
enterprise, | |||
publicApi, | |||
lifeApi, | |||
peopleApi, | |||
myApi | |||
}; |
@@ -0,0 +1,45 @@ | |||
/** | |||
* @name 生活API | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 生活对应栏目的分页查询 | |||
* @param {*} data | |||
*/ | |||
const lifeListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/life/list', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得商户分页 | |||
* @param {*} data | |||
*/ | |||
const merchantPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/merchant/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得商户详情 | |||
* @param {*} data | |||
*/ | |||
const merchantGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/merchant/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
export { lifeListApi, merchantPageApi, merchantGetApi }; |
@@ -0,0 +1,171 @@ | |||
/** | |||
* @name 我的 | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 获取工作公告列表 | |||
* @param {*} data | |||
*/ | |||
const nameAuthApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/auth/real/name/auth', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获取我的信息 | |||
* @param {*} data | |||
*/ | |||
const getUserInfoApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/user/profile/get/my/info', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得用户积分规则分页 | |||
* @param {*} data | |||
*/ | |||
const userIntegralRruleApi = function (data) { | |||
return request( | |||
{ | |||
url: '/admin-api/system/user-integral-rule/page', | |||
method: 'get', | |||
data: data | |||
}, | |||
false | |||
); | |||
}; | |||
/** | |||
* 获得用户积分明细分页 | |||
* @param {*} data | |||
*/ | |||
const userIntegralDetailApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/user-integral-detail/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得用户我的收藏分页 | |||
* @param {*} data | |||
*/ | |||
const myInfoPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/collection/myInfo/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 统计党员-群众点单数据 | |||
* @param {*} data | |||
*/ | |||
const myMasserCountApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help/count', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 党员认证 | |||
* @param {*} data | |||
*/ | |||
const myMemberAuthApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/auth/party/member/auth', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建群众点单回复 | |||
* @param {*} data | |||
*/ | |||
const replyCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help-reply/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得群众点单回复 | |||
* @param {*} data | |||
*/ | |||
const replyCreateGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help-reply/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 更新群众点单回复 | |||
* @param {*} data | |||
*/ | |||
const replyCreatUpdateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help-reply/update', | |||
method: 'PUT', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 查询优质回复 | |||
* @param {*} data | |||
*/ | |||
const replyGoodPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help-reply/good-page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
// 发送验证码 | |||
const sendSmSCodeApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/auth/send-sms-code', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
const systemAuthSmsLogin = function (data) { | |||
return request({ | |||
url: '/admin-api/system/auth/sms-login', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
export { | |||
nameAuthApi, | |||
getUserInfoApi, | |||
userIntegralRruleApi, | |||
userIntegralDetailApi, | |||
myInfoPageApi, | |||
myMasserCountApi, | |||
myMemberAuthApi, | |||
replyCreateApi, | |||
replyCreateGetApi, | |||
replyCreatUpdateApi, | |||
replyGoodPageApi, | |||
sendSmSCodeApi, | |||
systemAuthSmsLogin | |||
}; |
@@ -0,0 +1,526 @@ | |||
/** | |||
* @name 民生API | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 获得议事厅分页 | |||
* @param {*} data | |||
*/ | |||
const assemblyHallPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/assembly-hall/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得人民调解员分页 | |||
* @param {*} data | |||
*/ | |||
const mediatorPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/mediator/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得人民调解员详情 | |||
* @param {*} data | |||
*/ | |||
const mediatorGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/mediator/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得群众点单分页 | |||
* @param {*} data | |||
*/ | |||
const seekHelpPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建群众点单 | |||
* @param {*} data | |||
*/ | |||
const seekHelpCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得群众点单详情 | |||
* @param {*} data | |||
*/ | |||
const seekHelpGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
const massesDetailUpdate = function (data) { | |||
// 点单状态变化如:接单 | |||
return request({ | |||
url: '/admin-api/people/seek-help/update', | |||
method: 'put', | |||
data: data | |||
}); | |||
}; | |||
const seekHelpApi = function (data) { | |||
// 点单 进行帮助 | |||
return request({ | |||
url: `/admin-api/people/seek-help/help/${data.id}`, | |||
method: 'put', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得法律法规分页 | |||
* @param {*} data | |||
*/ | |||
const lawsRegulationPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/laws-regulation/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得法律法规详情 | |||
* @param {*} data | |||
*/ | |||
const lawsRegulationGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/laws-regulation/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得调解案件分页分页 | |||
* @param {*} data | |||
*/ | |||
const casesListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/cases/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得调解案件 | |||
* @param {*} data | |||
*/ | |||
const getCasesIdApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/cases/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建调解案件 | |||
* @param {*} data | |||
*/ | |||
const createCasesApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/cases/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得党建引领详情 | |||
* @param {*} data | |||
*/ | |||
const newsGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/news/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得医院分页 | |||
* @param {*} data | |||
*/ | |||
const hospitalPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/hospital/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得医院详情 | |||
* @param {*} data | |||
*/ | |||
const hospitalGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/hospital/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得医生分页 | |||
* @param {*} data | |||
*/ | |||
const doctorPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/doctor/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得议事厅分页 | |||
* @param {*} data | |||
*/ | |||
const assemblyIdApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/assemblymen/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得议事厅分页 | |||
* @param {*} data | |||
*/ | |||
const assemblyhallIdApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/assembly-hall/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得评论分页 | |||
* @param {*} data | |||
*/ | |||
const commentPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/comment/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建评论 | |||
* @param {*} data | |||
*/ | |||
const commentCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/comment/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得议事厅详情 | |||
* @param {*} data | |||
*/ | |||
const assemblyHallGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/assembly-hall/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 星级党支部 | |||
* @param {*} data | |||
*/ | |||
const partyBranchApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/party-branch/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得党建引领 - 获得新闻资讯及活动分页 | |||
* @param {*} data | |||
* @param {*} data.categoryId // 取字典新闻类型的键值 | |||
*/ | |||
const newsPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/news/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 星级党支部详情 | |||
* @param {*} data | |||
*/ | |||
const partyBranchGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/party-branch/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得优秀党员分页 - 五星党员 | |||
* @param {*} data | |||
*/ | |||
const excellentPartMemberPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/excellent-party-member/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获取部门列表 | |||
* @param {*} data | |||
*/ | |||
const deptListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/dept/list', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得优秀党员详情 | |||
* @param {*} data | |||
*/ | |||
const excellentPartMemberGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/excellent-party-member/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处分页 - 最美乡村 | |||
* @param {*} data | |||
*/ | |||
const agencyPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/agency/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得村务公开分页 | |||
* @param {*} data | |||
*/ | |||
const villageAffairsPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/village-affairs/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处分页 | |||
* @param {*} data | |||
*/ | |||
const agencyContentPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/agency-content/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得群众点单评论 | |||
* @param {*} data | |||
*/ | |||
const CrateAppraiseApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/seek-help/appraise', | |||
method: 'put', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处内容详情 | |||
* @param {*} data | |||
*/ | |||
const agencyContentGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/agency-content/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处分页详情 | |||
* @param {*} data | |||
*/ | |||
const agencyGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/agency/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处内容 + 根据部门id | |||
* @param {*} data | |||
*/ | |||
const agencyContentGetOrgIdApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/agency-content/getOrgId', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得办事处内容 + 根据部门id | |||
* @param {*} data | |||
*/ | |||
const villageAffairsGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/village-affairs/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得党活动事件分页 | |||
* @param {*} data | |||
*/ | |||
const partyEventPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/party-event/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得党活动事件分页详情 | |||
* @param {*} data | |||
*/ | |||
const partyEventGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/party-event/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建患者 - 申请签约家庭医生 | |||
* @param {*} data | |||
*/ | |||
const patientCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/patient/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获取网格列表 | |||
* @param {*} data | |||
*/ | |||
const getGridListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/grid/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获取网格成员列表 | |||
* @param {*} data | |||
*/ | |||
const getGridMemberListApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/grid-member/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
export { | |||
assemblyHallPageApi, | |||
mediatorPageApi, | |||
mediatorGetApi, | |||
seekHelpPageApi, | |||
seekHelpCreateApi, | |||
seekHelpGetApi, | |||
lawsRegulationPageApi, | |||
lawsRegulationGetApi, | |||
massesDetailUpdate, | |||
seekHelpApi, | |||
casesListApi, | |||
getCasesIdApi, | |||
createCasesApi, | |||
newsGetApi, | |||
hospitalPageApi, | |||
hospitalGetApi, | |||
doctorPageApi, | |||
commentPageApi, | |||
commentCreateApi, | |||
assemblyHallGetApi, | |||
newsPageApi, | |||
assemblyIdApi, | |||
assemblyhallIdApi, | |||
partyBranchApi, | |||
partyBranchGetApi, | |||
excellentPartMemberPageApi, | |||
deptListApi, | |||
excellentPartMemberGetApi, | |||
agencyPageApi, | |||
villageAffairsPageApi, | |||
agencyContentPageApi, | |||
CrateAppraiseApi, | |||
agencyContentGetApi, | |||
agencyGetApi, | |||
agencyContentGetOrgIdApi, | |||
villageAffairsGetApi, | |||
partyEventPageApi, | |||
partyEventGetApi, | |||
patientCreateApi, | |||
getGridListApi, | |||
getGridMemberListApi | |||
}; |
@@ -0,0 +1,209 @@ | |||
/** | |||
* @name 公共接口API | |||
* @description 请求示例 | |||
* @param {Object} data 请求参数 | |||
* @param {String} url 请求地址 | |||
* @param {String} method 请求类型 可以不设置,默认GET | |||
*/ | |||
import request from '../utils/request'; | |||
/** | |||
* 获得banner图分页 | |||
* @param {*} data | |||
*/ | |||
const getBannerApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/banner/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得字典类型的分页列表 | |||
* @param {*} data | |||
*/ | |||
const getDictDataApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/dict-data/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 上传文件 | |||
* @param {*} data | |||
*/ | |||
const uploadApi = function (data) { | |||
return request({ | |||
url: '/admin-api/infra/file/upload', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 分类树--查询下级分类 | |||
* @param {*} data | |||
* @param {*} data.bannerType // 字典TabBar模块 1民生、2生活... | |||
* @param {*} data.parentId // 根据上级列表id查询下级列表 | |||
*/ | |||
const recursionApi = function (data) { | |||
return request( | |||
{ | |||
url: '/admin-api/people/category/recursion', | |||
method: 'get', | |||
data: data | |||
}, | |||
false | |||
); | |||
}; | |||
/** | |||
* 创建点赞 | |||
* @param {*} data | |||
*/ | |||
const praiseCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/praise/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 取消点赞 | |||
* @param {*} data | |||
*/ | |||
const praiseCancelApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/praise/cancel', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建分享 | |||
* @param {*} data | |||
*/ | |||
const shareCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/share/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 创建用户收藏 | |||
* @param {*} data | |||
*/ | |||
const collectionCreateApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/collection/create', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 取消用户收藏 | |||
* @param {*} data | |||
*/ | |||
const collectionCancelApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/collection/cancel', | |||
method: 'post', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得案件处理过程分页 | |||
* @param {*} data | |||
*/ | |||
const casesProcessPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/cases-process/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获取部门树 | |||
* @param {*} data | |||
*/ | |||
const deptTreeApi = function (data) { | |||
return request({ | |||
url: '/admin-api/system/dept/tree', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得服务记录详情 | |||
* @param {*} data | |||
*/ | |||
const serveRecordGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/serve-record/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得服务记录分页 | |||
* @param {*} data | |||
*/ | |||
const serveRecordPageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/serve-record/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得线上问诊分页 | |||
* @param {*} data | |||
*/ | |||
const inquiriesOnlinePageApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/inquiries-online/page', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
/** | |||
* 获得线上问诊详情 | |||
* @param {*} data | |||
*/ | |||
const inquiriesOnlineGetApi = function (data) { | |||
return request({ | |||
url: '/admin-api/people/inquiries-online/get', | |||
method: 'get', | |||
data: data | |||
}); | |||
}; | |||
export { | |||
getBannerApi, | |||
getDictDataApi, | |||
uploadApi, | |||
recursionApi, | |||
praiseCreateApi, | |||
praiseCancelApi, | |||
shareCreateApi, | |||
collectionCreateApi, | |||
collectionCancelApi, | |||
casesProcessPageApi, | |||
deptTreeApi, | |||
serveRecordGetApi, | |||
serveRecordPageApi, | |||
inquiriesOnlineGetApi, | |||
inquiriesOnlinePageApi | |||
}; |
@@ -0,0 +1,160 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<view v-if="position === 'fixed'" :style="'height: calc(46px + 17rpx);'" /> | |||
<view | |||
:class="'custom-nav-bar ' + (position === 'fixed' ? 'custom-nav-bar__fixed' : '') + ' ' + (position === 'absolute' ? 'custom-nav-bar__absolute' : '')" | |||
:style=" | |||
'padding-top:0px;line-height:20px;z-index: ' + | |||
zIndex + | |||
';background-color: ' + | |||
(color === 'white' ? 'transparent' : '#ffffff') + | |||
';height:calc(46px + 17rpx);' | |||
"> | |||
<view :class="'custom-nav-bar-content__content ' + (border ? 'custom-nav-bar__border-bottom' : '')"> | |||
<view class="custom-nav-bar-content__left" @click="onClickLeft"> | |||
<block v-if="leftArrow || leftText"> | |||
<image v-if="leftArrow" class="custom-nav-bar-content__img" | |||
:src="color === 'white' ? '/static/images/ic-arrow-white.png' : '/static/images/ic-arrow-black.png'"> | |||
</image> | |||
<view v-if="leftText" | |||
:style="'color: ' + (color === 'white' ? '#FFFFFF' : color === 'black' ? '#333333' : color) + ';'" | |||
class="custom-nav-bar-content__text"> | |||
{{ leftText }} | |||
</view> | |||
</block> | |||
<slot v-else name="left" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
// import vanIcon from '@vant/weapp/icon/index'; | |||
// const app = getApp(); | |||
export default { | |||
components: { | |||
// vanIcon | |||
}, | |||
data() { | |||
return { | |||
// sysConfig: app.globalData.config, | |||
height: 46, | |||
top: 0 | |||
}; | |||
}, | |||
props: { | |||
leftText: { | |||
type: String, | |||
default: '' | |||
}, | |||
position: { | |||
type: String, | |||
default: 'absolute' | |||
}, | |||
leftArrow: { | |||
type: Boolean, | |||
default: false | |||
}, | |||
zIndex: { | |||
type: Number, | |||
default: 99 | |||
}, | |||
color: { | |||
type: String, | |||
default: 'white' | |||
}, | |||
border: { | |||
type: Boolean, | |||
default: false | |||
}, | |||
back: { | |||
type: Boolean, | |||
default: false | |||
} | |||
}, | |||
options: { | |||
virtualHost: true | |||
}, | |||
methods: { | |||
onClickLeft: function() { | |||
if (this.leftArrow && !this.back) { | |||
uni.navigateBack({ | |||
delta: 1 | |||
}); | |||
return; | |||
} | |||
this.$emit('customClickLeft'); | |||
} | |||
}, | |||
created: function() {} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.custom-nav-bar { | |||
width: 100%; | |||
height: var(--custom-nav-bar-height, 68rpx); | |||
height: 46px; | |||
background-color: var(--custom-nav-bar-background-color, #fff); | |||
box-sizing: initial; | |||
position: relative; | |||
text-align: center; | |||
-webkit-user-select: none; | |||
user-select: none; | |||
} | |||
.custom-nav-bar__fixed { | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
} | |||
.custom-nav-bar__absolute { | |||
position: absolute; | |||
left: 0; | |||
top: 0; | |||
} | |||
.custom-nav-bar-content__content { | |||
position: relative; | |||
height: 100%; | |||
padding: 0 40rpx; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.custom-nav-bar__border-bottom::before { | |||
content: ''; | |||
position: absolute; | |||
bottom: 0; | |||
left: 50%; | |||
width: var(--custom-nav-bar-bor-bottom-w, 670rpx); | |||
height: 1px; | |||
transform: translateX(-50%); | |||
background-color: #efefef; | |||
} | |||
.custom-nav-bar-content__left { | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
// position: absolute; | |||
// top: 0; | |||
// left: 44rpx; | |||
} | |||
.custom-nav-bar-content__img { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-bottom: 1px; | |||
margin-right: 18rpx; | |||
} | |||
.custom-nav-bar-content__text { | |||
font-size: 34rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
line-height: 34rpx; | |||
} | |||
</style> |
@@ -0,0 +1,50 @@ | |||
/** | |||
* @name 常量 | |||
* @description 多环境配置 | |||
* @param {Boolean} debug 是否开启debug模式 | |||
* @param {Object} env 当前的项目环境配置 | |||
* @param {Object} systemInfo 当前的系统信息 | |||
* @param {Boolean} isIPhone 判断机型是否是iPhone | |||
* @param {Boolean} isIPhoneX 判断机型是否是iPhoneX系列 | |||
* @param {Boolean} menu 小程序顶部胶囊按钮的信息 | |||
* @param {Object} locationInfo 用户的当前位置信息 | |||
*/ | |||
import env from './env'; | |||
import amap from "@/lib/wx-map-sdk/amap-wx.130.js"; | |||
function getLocationInfo() { | |||
const info = {}; | |||
uni.getLocation(function(res) { | |||
console.log('纬度:' + res.latitude); | |||
console.log('经度:' + res.longitude); | |||
}); | |||
const myAmapFun = new amap.AMapWX({ | |||
key: env.aMapKey | |||
}); | |||
myAmapFun.getRegeo({ | |||
success: function (res) { | |||
if (!res.length) { | |||
return; | |||
} | |||
Object.assign(info, res[0]); | |||
}, | |||
fail: function (info) { | |||
uni.showModal({ | |||
title: info.errMsg | |||
}); | |||
} | |||
}); | |||
return info; | |||
} | |||
export default { | |||
data() { | |||
return {}; | |||
}, | |||
debug: true, | |||
env, | |||
systemInfo: uni.getSystemInfoSync(), | |||
menu: uni.getSystemInfoSync(), | |||
isIPhone: uni.getSystemInfoSync().model.indexOf('iPhone') >= 0, | |||
isIPhoneX: uni.getSystemInfoSync().model.lastIndexOf('X') >= 0, | |||
locationInfo: getLocationInfo() | |||
}; |
@@ -0,0 +1,35 @@ | |||
/** | |||
* @name 小程序环境 | |||
* @description 多环境配置 | |||
*/ | |||
const envName = 'development'; | |||
const envs = [{ | |||
envName: 'production', | |||
appID: 'wx736395182f05a1b7', | |||
appName: '介休网格通', | |||
version: '1.0.0', | |||
baseUrl: 'https://jxwgtjm.xuqidata.com:8088', | |||
fileUrl: 'https://jiexiu.xuqidata.com:8083/jiexiujumin', | |||
loginPath: '/admin-api/system/auth/wechat/app/login', | |||
aMapKey: '29103dae675e5788eb011fb77ade8e3f', | |||
pubkey: 'Si9veMEER0LGTcLL6xwRWxUB7UCF7jjb00548e0ddc1501de0f' | |||
}, | |||
{ | |||
envName: 'development', | |||
appID: 'wxcee598c3eb71e48d', | |||
appName: '智慧旭奇', | |||
version: '1.0.0', | |||
baseUrl: 'http://47.92.245.35:5002', | |||
// 接口前缀 | |||
fileUrl: 'http://47.92.245.35:5009/xq-ssg', | |||
// 图片服务器 | |||
loginPath: '/admin-api/system/auth/wechat/app/login', | |||
// 登陆接口 | |||
aMapKey: '6e488a3ed079adbb01de2ecb88ca5905', | |||
// 高德地图key | |||
pubkey: 'O9eM4Cv5bpi30mgUw9GEkf19KVE8KE8D00a46a6e50bb9465b2' // 吾来对话机器人平台key | |||
} | |||
]; | |||
const isFind = envs.find((item) => item.envName === envName); | |||
export default isFind; |
@@ -0,0 +1,13 @@ | |||
/** | |||
* @name Config | |||
* @description 项目配置 | |||
*/ | |||
import env from './env'; | |||
import constant from './constant'; | |||
export default { | |||
data() { | |||
return {}; | |||
}, | |||
env, | |||
...constant | |||
}; |
@@ -0,0 +1,8 @@ | |||
/// <reference types="vite/client" /> | |||
declare module '*.vue' { | |||
import { DefineComponent } from 'vue' | |||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types | |||
const component: DefineComponent<{}, {}, any> | |||
export default component | |||
} |
@@ -0,0 +1,573 @@ | |||
<template> | |||
<view | |||
:class="'wux-class ' + wrapCls + ' ' + animateCss" | |||
@tap="onTap" | |||
@touchmove.stop.prevent="parseEventDynamicCode($event, disableScroll ? 'noop' : '')" | |||
@transitionend="onTransitionEnd" | |||
@animationend="onAnimationEnd" | |||
v-if="animateStatus !== 'unmounted'" | |||
:style="extStyle" | |||
> | |||
<slot></slot> | |||
</view> | |||
</template> | |||
<script> | |||
'use strict'; | |||
var _baseComponent = _interopRequireDefault(require('../helpers/baseComponent')); | |||
var _styleToCssString = _interopRequireDefault(require('../helpers/styleToCssString')); | |||
function _interopRequireDefault(t) { | |||
return t && t.__esModule | |||
? t | |||
: { | |||
default: t | |||
}; | |||
} | |||
function _typeof(t) { | |||
return (_typeof = | |||
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator | |||
? function (t) { | |||
return typeof t; | |||
} | |||
: function (t) { | |||
return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t; | |||
})(t); | |||
} | |||
var ENTER = 'enter'; | |||
var ENTERING = 'entering'; | |||
var ENTERED = 'entered'; | |||
var EXIT = 'exit'; | |||
var EXITING = 'exiting'; | |||
var EXITED = 'exited'; | |||
var UNMOUNTED = 'unmounted'; | |||
var TRANSITION = 'transition'; | |||
var ANIMATION = 'animation'; | |||
var TIMEOUT = 16.666666666666668; | |||
var defaultClassNames = { | |||
enter: '', | |||
enterActive: '', | |||
enterDone: '', | |||
exit: '', | |||
exitActive: '', | |||
exitDone: '' | |||
}; | |||
(0, _baseComponent.default)({ | |||
properties: { | |||
in: { | |||
type: Boolean, | |||
value: false, | |||
observer: function (t) { | |||
if (this.isMounting) { | |||
this.updated(t); | |||
} | |||
} | |||
}, | |||
classNames: { | |||
type: null, | |||
value: defaultClassNames | |||
}, | |||
duration: { | |||
type: null, | |||
value: null | |||
}, | |||
type: { | |||
type: String, | |||
value: TRANSITION | |||
}, | |||
appear: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
enter: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
exit: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
mountOnEnter: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
unmountOnExit: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
wrapCls: { | |||
type: String, | |||
value: '' | |||
}, | |||
wrapStyle: { | |||
type: [String, Object], | |||
value: '', | |||
observer: function (t) { | |||
this.setData({ | |||
extStyle: (0, _styleToCssString.default)(t) | |||
}); | |||
} | |||
}, | |||
disableScroll: { | |||
type: Boolean, | |||
value: false | |||
} | |||
}, | |||
data: { | |||
animateCss: '', | |||
animateStatus: EXITED, | |||
isMounting: false, | |||
extStyle: '' | |||
}, | |||
methods: { | |||
addEventListener: function () { | |||
var t = this.animateStatus; | |||
var e = this.getTimeouts(); | |||
var a = e.enter; | |||
var n = e.exit; | |||
if (t === ENTERING && !a && this.enter) { | |||
this.performEntered(); | |||
} | |||
if (t === EXITING && !n && this.exit) { | |||
this.performExited(); | |||
} | |||
}, | |||
onTransitionEnd: function () { | |||
if (this.type === TRANSITION) { | |||
this.addEventListener(); | |||
} | |||
}, | |||
onAnimationEnd: function () { | |||
if (this.type === ANIMATION) { | |||
this.addEventListener(); | |||
} | |||
}, | |||
updateStatus: function (t, e) { | |||
var a = 1 < arguments.length && void 0 !== e && e; | |||
if (null !== t) { | |||
this.cancelNextCallback(); | |||
this.isAppearing = a; | |||
t === ENTERING ? this.performEnter() : this.performExit(); | |||
} | |||
}, | |||
performEnter: function () { | |||
var that = this; | |||
var e = this.getClassNames(ENTER); | |||
var a = e.className; | |||
var n = e.activeClassName; | |||
var i = this.getTimeouts().enter; | |||
var s = { | |||
animateStatus: ENTER, | |||
animateCss: a | |||
}; | |||
var r = { | |||
animateStatus: ENTERING, | |||
animateCss: ''.concat(a, ' ').concat(n) | |||
}; | |||
if (!this.isAppearing && !this.enter) { | |||
return this.performEntered(); | |||
} | |||
this.safeSetData(s, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: ENTER | |||
} | |||
}); | |||
that.$emit(ENTER, { | |||
detail: { | |||
isAppearing: that.isAppearing | |||
} | |||
}); | |||
that.delayHandler(TIMEOUT, function () { | |||
that.safeSetData(r, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: ENTERING | |||
} | |||
}); | |||
that.$emit(ENTERING, { | |||
detail: { | |||
isAppearing: that.isAppearing | |||
} | |||
}); | |||
if (i) { | |||
that.delayHandler(i, that.performEntered); | |||
} | |||
}); | |||
}); | |||
}); | |||
}, | |||
performEntered: function () { | |||
var that = this; | |||
var e = this.getClassNames(ENTER).doneClassName; | |||
var a = { | |||
animateStatus: ENTERED, | |||
animateCss: e | |||
}; | |||
this.safeSetData(a, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: ENTERED | |||
} | |||
}); | |||
that.$emit(ENTERED, { | |||
detail: { | |||
isAppearing: that.isAppearing | |||
} | |||
}); | |||
}); | |||
}, | |||
performExit: function () { | |||
var that = this; | |||
var e = this.getClassNames(EXIT); | |||
var a = e.className; | |||
var n = e.activeClassName; | |||
var i = this.getTimeouts().exit; | |||
var s = { | |||
animateStatus: EXIT, | |||
animateCss: a | |||
}; | |||
var r = { | |||
animateStatus: EXITING, | |||
animateCss: ''.concat(a, ' ').concat(n) | |||
}; | |||
if (!this.exit) { | |||
return this.performExited(); | |||
} | |||
this.safeSetData(s, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: EXIT | |||
} | |||
}); | |||
that.$emit(EXIT); | |||
that.delayHandler(TIMEOUT, function () { | |||
that.safeSetData(r, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: EXITING | |||
} | |||
}); | |||
that.$emit(EXITING); | |||
if (i) { | |||
that.delayHandler(i, that.performExited); | |||
} | |||
}); | |||
}); | |||
}); | |||
}, | |||
performExited: function () { | |||
var that = this; | |||
var e = this.getClassNames(EXIT).doneClassName; | |||
var a = { | |||
animateStatus: EXITED, | |||
animateCss: e | |||
}; | |||
this.safeSetData(a, function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: EXITED | |||
} | |||
}); | |||
that.$emit(EXITED); | |||
if (that.unmountOnExit) { | |||
that.setData( | |||
{ | |||
animateStatus: UNMOUNTED | |||
}, | |||
function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: UNMOUNTED | |||
} | |||
}); | |||
} | |||
); | |||
} | |||
}); | |||
}, | |||
getClassNames: function (t) { | |||
var e = this.classNames; | |||
return { | |||
className: 'string' != typeof e ? e[t] : ''.concat(e, '-').concat(t), | |||
activeClassName: 'string' != typeof e ? e[''.concat(t, 'Active')] : ''.concat(e, '-').concat(t, '-active'), | |||
doneClassName: 'string' != typeof e ? e[''.concat(t, 'Done')] : ''.concat(e, '-').concat(t, '-done') | |||
}; | |||
}, | |||
getTimeouts: function () { | |||
var t = this.duration; | |||
return null !== t && 'object' === _typeof(t) | |||
? { | |||
enter: t.enter, | |||
exit: t.exit | |||
} | |||
: 'number' == typeof t | |||
? { | |||
enter: t, | |||
exit: t | |||
} | |||
: {}; | |||
}, | |||
updated: function (t) { | |||
var that = this; | |||
var a = (this.pendingData || this).animateStatus; | |||
var n = null; | |||
t | |||
? (a === UNMOUNTED && | |||
((a = EXITED), | |||
this.setData( | |||
{ | |||
animateStatus: EXITED | |||
}, | |||
function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: EXITED | |||
} | |||
}); | |||
} | |||
)), | |||
a !== ENTER && a !== ENTERING && a !== ENTERED && (n = ENTERING)) | |||
: (a !== ENTER && a !== ENTERING && a !== ENTERED) || (n = EXITING); | |||
this.updateStatus(n); | |||
}, | |||
delayHandler: function (t, e) { | |||
if (t) { | |||
this.setNextCallback(e); | |||
setTimeout(this.nextCallback, t); | |||
} | |||
}, | |||
onTap: function () { | |||
this.$emit('click'); | |||
}, | |||
noop: function () {} | |||
}, | |||
attached: function () { | |||
var that = this; | |||
var e = null; | |||
var a = null; | |||
this.in ? (this.appear ? ((e = EXITED), (a = ENTERING)) : (e = ENTERED)) : (e = this.unmountOnExit || this.mountOnEnter ? UNMOUNTED : EXITED); | |||
this.safeSetData( | |||
{ | |||
animateStatus: e, | |||
isMounting: true | |||
}, | |||
function () { | |||
that.$emit('change', { | |||
detail: { | |||
animateStatus: e | |||
} | |||
}); | |||
that.updateStatus(a, true); | |||
} | |||
); | |||
} | |||
}); | |||
</script> | |||
<style> | |||
.wux-animate--fadeIn-enter { | |||
transition: opacity 0.3s; | |||
opacity: 0; | |||
} | |||
.wux-animate--fadeIn-enter-active, | |||
.wux-animate--fadeIn-enter-done { | |||
opacity: 1; | |||
} | |||
.wux-animate--fadeIn-exit { | |||
transition: opacity 0.3s; | |||
opacity: 1; | |||
} | |||
.wux-animate--fadeIn-exit-active, | |||
.wux-animate--fadeIn-exit-done { | |||
opacity: 0; | |||
} | |||
.wux-animate--fadeInDown-enter { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 0; | |||
transform: translate3d(0, -100%, 0); | |||
} | |||
.wux-animate--fadeInDown-enter-active, | |||
.wux-animate--fadeInDown-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInDown-exit { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInDown-exit-active, | |||
.wux-animate--fadeInDown-exit-done { | |||
opacity: 0; | |||
transform: translate3d(0, -100%, 0); | |||
} | |||
.wux-animate--fadeInLeft-enter { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 0; | |||
transform: translate3d(-100%, 0, 0); | |||
} | |||
.wux-animate--fadeInLeft-enter-active, | |||
.wux-animate--fadeInLeft-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInLeft-exit { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInLeft-exit-active, | |||
.wux-animate--fadeInLeft-exit-done { | |||
opacity: 0; | |||
transform: translate3d(-100%, 0, 0); | |||
} | |||
.wux-animate--fadeInRight-enter { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 0; | |||
transform: translate3d(100%, 0, 0); | |||
} | |||
.wux-animate--fadeInRight-enter-active, | |||
.wux-animate--fadeInRight-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInRight-exit { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInRight-exit-active, | |||
.wux-animate--fadeInRight-exit-done { | |||
opacity: 0; | |||
transform: translate3d(100%, 0, 0); | |||
} | |||
.wux-animate--fadeInUp-enter { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 0; | |||
transform: translate3d(0, 100%, 0); | |||
} | |||
.wux-animate--fadeInUp-enter-active, | |||
.wux-animate--fadeInUp-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInUp-exit { | |||
transition: opacity 0.3s, transform 0.3s; | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--fadeInUp-exit-active, | |||
.wux-animate--fadeInUp-exit-done { | |||
opacity: 0; | |||
transform: translate3d(0, 100%, 0); | |||
} | |||
.wux-animate--slideInUp-enter { | |||
transition: transform 0.3s; | |||
transform: translate3d(0, 100%, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInUp-enter-active, | |||
.wux-animate--slideInUp-enter-done { | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInUp-exit { | |||
transition: transform 0.3s; | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInUp-exit-active, | |||
.wux-animate--slideInUp-exit-done { | |||
transform: translate3d(0, 100%, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInDown-enter { | |||
transition: transform 0.3s; | |||
transform: translate3d(0, -100%, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInDown-enter-active, | |||
.wux-animate--slideInDown-enter-done { | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInDown-exit { | |||
transition: transform 0.3s; | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInDown-exit-active, | |||
.wux-animate--slideInDown-exit-done { | |||
transform: translate3d(0, -100%, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInLeft-enter { | |||
transition: transform 0.3s; | |||
transform: translate3d(-100%, 0, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInLeft-enter-active, | |||
.wux-animate--slideInLeft-enter-done { | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInLeft-exit { | |||
transition: transform 0.3s; | |||
transform: translateZ(0); | |||
} | |||
.wux-animate--slideInLeft-exit-active, | |||
.wux-animate--slideInLeft-exit-done { | |||
transform: translate3d(-100%, 0, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInRight-enter { | |||
transition: transform 0.3s; | |||
transform: translate3d(100%, 0, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--slideInRight-enter-active, | |||
.wux-animate--slideInRight-enter-done { | |||
transform: none; | |||
} | |||
.wux-animate--slideInRight-exit { | |||
transition: transform 0.3s; | |||
transform: none; | |||
} | |||
.wux-animate--slideInRight-exit-active, | |||
.wux-animate--slideInRight-exit-done { | |||
transform: translate3d(100%, 0, 0); | |||
visibility: visible; | |||
} | |||
.wux-animate--zoom-enter { | |||
transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); | |||
opacity: 0.01; | |||
transform: scale(0.75); | |||
} | |||
.wux-animate--zoom-enter-active, | |||
.wux-animate--zoom-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--zoom-exit { | |||
transition: all 0.25s linear; | |||
transform: none; | |||
} | |||
.wux-animate--zoom-exit-active, | |||
.wux-animate--zoom-exit-done { | |||
opacity: 0.01; | |||
transform: scale(0.75); | |||
} | |||
.wux-animate--punch-enter { | |||
transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); | |||
opacity: 0.01; | |||
transform: scale(1.35); | |||
} | |||
.wux-animate--punch-enter-active, | |||
.wux-animate--punch-enter-done { | |||
opacity: 1; | |||
transform: none; | |||
} | |||
.wux-animate--punch-exit { | |||
transition: all 0.25s linear; | |||
transform: none; | |||
} | |||
.wux-animate--punch-exit-active, | |||
.wux-animate--punch-exit-done { | |||
opacity: 0.01; | |||
transform: scale(1.35); | |||
} | |||
</style> |
@@ -0,0 +1,87 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<wux-animation-group :wux-class="classes.wrap" :in="in" :classNames="classNames" @click="onClick" :wrapStyle="" disableScroll /> | |||
</view> | |||
</template> | |||
<script> | |||
'use strict'; | |||
import wuxAnimationGroup from '../animation-group/index'; | |||
var _baseComponent = _interopRequireDefault(require('../helpers/baseComponent')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
(0, _baseComponent.default)({ | |||
properties: { | |||
prefixCls: { | |||
type: String, | |||
value: 'wux-backdrop' | |||
}, | |||
transparent: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
zIndex: { | |||
type: Number, | |||
value: 1000 | |||
}, | |||
classNames: { | |||
type: null, | |||
value: 'wux-animate--fadeIn' | |||
} | |||
}, | |||
computed: { | |||
classes: [ | |||
'prefixCls, transparent', | |||
function (e, t) { | |||
return { | |||
wrap: t ? ''.concat(e, '--transparent') : e | |||
}; | |||
} | |||
] | |||
}, | |||
methods: { | |||
retain: function () { | |||
('number' == typeof this.backdropHolds && this.backdropHolds) || (this.backdropHolds = 0); | |||
this.backdropHolds = this.backdropHolds + 1; | |||
if (1 === this.backdropHolds) { | |||
this.setData({ | |||
in: true | |||
}); | |||
} | |||
}, | |||
release: function () { | |||
if (1 === this.backdropHolds) { | |||
this.setData({ | |||
in: false | |||
}); | |||
} | |||
this.backdropHolds = Math.max(0, this.backdropHolds - 1); | |||
}, | |||
onClick: function () { | |||
this.$emit('click'); | |||
} | |||
} | |||
}); | |||
</script> | |||
<style> | |||
.wux-backdrop { | |||
background: rgba(0, 0, 0, 0.4); | |||
} | |||
.wux-backdrop, | |||
.wux-backdrop--transparent { | |||
position: fixed; | |||
z-index: 1000; | |||
top: 0; | |||
right: 0; | |||
left: 0; | |||
bottom: 0; | |||
} | |||
.wux-backdrop--transparent { | |||
background: 0 0; | |||
} | |||
</style> |
@@ -0,0 +1,489 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<wux-popup position="bottom" :visible="visible" safeArea="bottom" @close="onPopupClose"> | |||
<view :class="'wux-class ' + classes.wrap"> | |||
<view :class="classes.hd"> | |||
<view :class="classes.title" v-if="title">{{ title }}</view> | |||
<view :class="classes.menus" v-if="activeOptions.length"> | |||
<block v-for="(item, index) in activeOptions" :key="index"> | |||
<view :class="classes.menu + ' ' + (activeIndex === index ? prefixCls + '__menu--active' : '')" :data-menu-index="index" @tap="onMenuClick"> | |||
{{ item[fieldNames['label']] }} | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
<view :class="classes.bd" :style="bodyStyle"> | |||
<block v-for="(option, optionIndex) in showOptions" :key="optionIndex"> | |||
<view :class="classes.inner"> | |||
<scroll-view scroll-y :class="'wux-scroll-view-class ' + classes.scrollView"> | |||
<view :class="classes.option"> | |||
<block v-for="(item, index) in option" :key="index"> | |||
<view | |||
:class=" | |||
classes.item + | |||
' ' + | |||
(activeValue[optionIndex] === item[fieldNames['value']] ? prefixCls + '__item--active' : '') + | |||
' ' + | |||
(item.disabled ? prefixCls + '__item--disabled' : '') | |||
" | |||
:data-option-index="optionIndex" | |||
:data-item="item" | |||
@tap="onItemSelect" | |||
> | |||
<text>{{ item[fieldNames['label']] }}</text> | |||
<icon | |||
:class="classes.icon" | |||
type="success_no_circle" | |||
size="16" | |||
color="#ef473a" | |||
v-if="activeValue[optionIndex] === item[fieldNames['value']]" | |||
/> | |||
</view> | |||
</block> | |||
</view> | |||
</scroll-view> | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
</wux-popup> | |||
</view> | |||
</template> | |||
<script> | |||
'use strict'; | |||
import wuxPopup from '../popup/index'; | |||
var _baseComponent = _interopRequireDefault(require('../helpers/baseComponent')); | |||
var _classNames = _interopRequireDefault(require('../helpers/classNames')); | |||
var _arrayTreeFilter = _interopRequireDefault(require('../helpers/arrayTreeFilter')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function _defineProperty(e, t, a) { | |||
t in e | |||
? Object.defineProperty(e, t, { | |||
value: a, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[t] = a); | |||
return e; | |||
} | |||
function _toConsumableArray(e) { | |||
return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread(); | |||
} | |||
function _nonIterableSpread() { | |||
throw new TypeError('Invalid attempt to spread non-iterable instance'); | |||
} | |||
function _iterableToArray(e) { | |||
if (Symbol.iterator in Object(e) || '[object Arguments]' === Object.prototype.toString.call(e)) { | |||
return Array.from(e); | |||
} | |||
} | |||
function _arrayWithoutHoles(e) { | |||
if (Array.isArray(e)) { | |||
for (t = 0, a = new Array(e.length), void 0; t < e.length; t++) { | |||
var t; | |||
var a; | |||
a[t] = e[t]; | |||
} | |||
return a; | |||
} | |||
} | |||
var WUX_CASCADER = 'wux-cascader'; | |||
var defaultFieldNames = { | |||
label: 'label', | |||
value: 'value', | |||
children: 'children' | |||
}; | |||
(0, _baseComponent.default)({ | |||
externalClasses: ['wux-scroll-view-class'], | |||
properties: { | |||
prefixCls: { | |||
type: String, | |||
value: 'wux-cascader' | |||
}, | |||
defaultValue: { | |||
type: Array, | |||
value: [] | |||
}, | |||
value: { | |||
type: Array, | |||
value: [] | |||
}, | |||
controlled: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
title: { | |||
type: String, | |||
value: '' | |||
}, | |||
options: { | |||
type: Array, | |||
value: [] | |||
}, | |||
chooseTitle: { | |||
type: String, | |||
value: '请选择' | |||
}, | |||
visible: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
defaultFieldNames: { | |||
type: Object, | |||
value: defaultFieldNames | |||
} | |||
}, | |||
data: { | |||
activeOptions: [], | |||
activeIndex: 0, | |||
bodyStyle: '', | |||
activeValue: [], | |||
showOptions: [], | |||
fieldNames: {} | |||
}, | |||
computed: { | |||
classes: [ | |||
'prefixCls', | |||
function (e) { | |||
return { | |||
wrap: (0, _classNames.default)(e), | |||
hd: ''.concat(e, '__hd'), | |||
title: ''.concat(e, '__title'), | |||
menus: ''.concat(e, '__menus'), | |||
menu: ''.concat(e, '__menu'), | |||
bd: ''.concat(e, '__bd'), | |||
inner: ''.concat(e, '__inner'), | |||
scrollView: ''.concat(e, '__scroll-view'), | |||
option: ''.concat(e, '__option'), | |||
item: ''.concat(e, '__item'), | |||
icon: ''.concat(e, '__icon'), | |||
ft: ''.concat(e, '__ft') | |||
}; | |||
} | |||
] | |||
}, | |||
observers: { | |||
value: function (e) { | |||
if (this.controlled) { | |||
this.setData({ | |||
activeValue: e | |||
}); | |||
this.getCurrentOptions(e); | |||
} | |||
}, | |||
options: function () { | |||
this.getCurrentOptions(this.activeValue); | |||
} | |||
}, | |||
methods: { | |||
getActiveOptions: function (a) { | |||
var e = this.options; | |||
var i = this.getFieldName('value'); | |||
var t = this.getFieldName('children'); | |||
return (0, _arrayTreeFilter.default)( | |||
e, | |||
function (e, t) { | |||
return e[i] === a[t]; | |||
}, | |||
{ | |||
childrenKeyName: t | |||
} | |||
); | |||
}, | |||
getShowOptions: function (e) { | |||
var t = this.options; | |||
var a = this.getFieldName('children'); | |||
var i = this.getActiveOptions(e) | |||
.map(function (e) { | |||
return e[a]; | |||
}) | |||
.filter(function (e) { | |||
return !!e; | |||
}); | |||
return [t].concat(_toConsumableArray(i)); | |||
}, | |||
getMenus: function (e, t) { | |||
if (0 < arguments.length && void 0 !== e) { | |||
var a = e; | |||
} else { | |||
var a = []; | |||
} | |||
if (1 < arguments.length) { | |||
var i = t; | |||
} else { | |||
var i = void 0; | |||
} | |||
var n = this; | |||
var r = (n.options, n.chooseTitle); | |||
var o = this.getActiveOptions(a); | |||
if (i) { | |||
var l; | |||
var s = this.getFieldName('value'); | |||
var u = this.getFieldName('label'); | |||
o.push((_defineProperty((l = {}), s, WUX_CASCADER), _defineProperty(l, u, r), l)); | |||
} | |||
return o; | |||
}, | |||
getNextActiveValue: function (e, t) { | |||
var a = this.activeValue; | |||
(a = a.slice(0, t + 1))[t] = e; | |||
return a; | |||
}, | |||
updated: function (e, t, a, i) { | |||
var n = this.getFieldName('value'); | |||
var r = this.getFieldName('children'); | |||
var o = e[r] && 0 < e[r].length; | |||
var l = this.getNextActiveValue(e[n], t); | |||
var s = this.getMenus(l, o); | |||
var u = s.length - 1; | |||
var c = this.getShowOptions(l); | |||
var d = { | |||
activeValue: l, | |||
activeOptions: s, | |||
activeIndex: u, | |||
showOptions: c | |||
}; | |||
if (o || (l.length === c.length && (t = Math.max(0, t - 1)))) { | |||
d.bodyStyle = 'transform: translate('.concat(-50 * t, '%)'); | |||
d.showOptions = c; | |||
} | |||
if (a) { | |||
this.setData(d); | |||
} | |||
if ('function' == typeof i) { | |||
i.call(this, e, s, !o); | |||
} | |||
}, | |||
getCurrentOptions: function (e) { | |||
var t = 0 < arguments.length && void 0 !== e ? e : this.activeValue; | |||
var a = Math.max(0, t.length - 1); | |||
var i = this.getActiveOptions(t); | |||
var n = i[a]; | |||
if (n) { | |||
this.updated(n, a, true); | |||
} else { | |||
var r; | |||
var o = this.getFieldName('value'); | |||
var l = this.getFieldName('label'); | |||
i.push((_defineProperty((r = {}), o, WUX_CASCADER), _defineProperty(r, l, this.chooseTitle), r)); | |||
var s = { | |||
showOptions: this.getShowOptions(t), | |||
activeOptions: i, | |||
activeIndex: i.length - 1, | |||
bodyStyle: '' | |||
}; | |||
this.setData(s); | |||
} | |||
}, | |||
onMenuClick: function (e) { | |||
var t = e.currentTarget.dataset.menuIndex; | |||
var a = 'transform: translate('.concat(-50 * (1 < t ? t - 1 : 0), '%)'); | |||
this.setData({ | |||
bodyStyle: a, | |||
activeIndex: t | |||
}); | |||
}, | |||
onItemSelect: function (e) { | |||
var t = e.currentTarget.dataset; | |||
var a = t.item; | |||
var i = t.optionIndex; | |||
if (a && !a.disabled) { | |||
this.updated(a, i, !this.controlled, this.onChange); | |||
} | |||
}, | |||
onPopupClose: function () { | |||
this.$emit('close'); | |||
}, | |||
onChange: function (e, t, a) { | |||
var that = this; | |||
var n = 0 < arguments.length && void 0 !== e ? e : {}; | |||
var r = 2 < arguments.length && void 0 !== a && a; | |||
var o = (1 < arguments.length && void 0 !== t ? t : []).filter(function (e) { | |||
return e[that.getFieldName('value')] !== WUX_CASCADER; | |||
}); | |||
var l = o.map(function (e) { | |||
return e[that.getFieldName('value')]; | |||
}); | |||
if (false === n.isLeaf && !n.children) { | |||
this.emitEvent({ | |||
value: l, | |||
options: o, | |||
done: false | |||
}); | |||
return void this.$emit('load', { | |||
detail: { | |||
value: l, | |||
options: o | |||
} | |||
}); | |||
} | |||
this.emitEvent({ | |||
value: l, | |||
options: o, | |||
done: r | |||
}); | |||
}, | |||
emitEvent: function (e) { | |||
var t = 0 < arguments.length && void 0 !== e ? e : {}; | |||
this.$emit('change', { | |||
detail: t | |||
}); | |||
if (t.done) { | |||
this.onPopupClose(); | |||
} | |||
}, | |||
getFieldName: function (e) { | |||
return this.fieldNames[e]; | |||
} | |||
}, | |||
attached: function () { | |||
var e = this; | |||
var t = e.defaultValue; | |||
var a = e.value; | |||
var i = e.controlled ? a : t; | |||
var n = Object.assign({}, defaultFieldNames, this.defaultFieldNames); | |||
this.setData({ | |||
activeValue: i, | |||
fieldNames: n | |||
}); | |||
this.getCurrentOptions(i); | |||
} | |||
}); | |||
</script> | |||
<style> | |||
.wux-cascader__hd { | |||
position: relative; | |||
width: 100%; | |||
font-size: 34rpx; | |||
line-height: 1.5; | |||
color: #444; | |||
} | |||
.wux-cascader__hd::after { | |||
content: ' '; | |||
position: absolute; | |||
left: 0; | |||
bottom: 0; | |||
right: 0; | |||
height: 1px; | |||
border-bottom: 1px solid #d9d9d9; | |||
color: #d9d9d9; | |||
transform-origin: 0 100%; | |||
transform: scaleY(0.5); | |||
} | |||
.wux-cascader__title { | |||
position: relative; | |||
height: 88rpx; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
text-align: center; | |||
box-sizing: border-box; | |||
} | |||
.wux-cascader__title::after { | |||
content: ' '; | |||
position: absolute; | |||
left: 0; | |||
bottom: 0; | |||
right: 0; | |||
height: 1px; | |||
border-bottom: 1px solid #d9d9d9; | |||
color: #d9d9d9; | |||
transform-origin: 0 100%; | |||
transform: scaleY(0.5); | |||
} | |||
.wux-cascader__menus { | |||
display: flex; | |||
height: 88rpx; | |||
padding: 0 20rpx; | |||
align-items: center; | |||
box-sizing: border-box; | |||
} | |||
.wux-cascader__menu { | |||
font-size: 26rpx; | |||
padding: 0 20rpx; | |||
max-width: 40%; | |||
width: auto; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
white-space: nowrap; | |||
word-wrap: normal; | |||
} | |||
.wux-cascader__menu--active { | |||
color: #ef473a; | |||
} | |||
.wux-cascader__bd { | |||
width: 100%; | |||
display: flex; | |||
transition: transform 0.3s; | |||
background-color: #f5f5f5; | |||
min-height: 540rpx; | |||
} | |||
.wux-cascader__inner { | |||
display: block; | |||
height: inherit; | |||
width: 50%; | |||
flex: 0 0 50%; | |||
background-color: #fff; | |||
} | |||
.wux-cascader__inner:nth-child(2n) { | |||
background-color: #f5f5f5; | |||
} | |||
.wux-cascader__scroll-view { | |||
max-height: 540rpx; | |||
} | |||
.wux-cascader__option { | |||
width: 100%; | |||
height: inherit; | |||
display: block; | |||
padding: 0 40rpx; | |||
box-sizing: border-box; | |||
} | |||
.wux-cascader__item { | |||
position: relative; | |||
z-index: 10; | |||
display: block; | |||
color: rgba(0, 0, 0, 0.85); | |||
font-size: 26rpx; | |||
/* height: 80rpx; */ | |||
padding: 25rpx 0; | |||
text-align: left; | |||
width: auto; | |||
/* overflow: hidden; */ | |||
/* white-space: nowrap; */ | |||
} | |||
.wux-cascader__item::after { | |||
content: ' '; | |||
position: absolute; | |||
left: 0; | |||
bottom: 0; | |||
right: 0; | |||
height: 1px; | |||
border-bottom: 1px solid #d9d9d9; | |||
color: #d9d9d9; | |||
transform-origin: 0 100%; | |||
transform: scaleY(0.5); | |||
} | |||
.wux-cascader__item--active { | |||
color: #ef473a; | |||
padding-right: 36rpx; | |||
} | |||
.wux-cascader__item--disabled { | |||
opacity: 0.3; | |||
} | |||
.wux-cascader__icon { | |||
position: absolute; | |||
top: 24rpx; | |||
right: 0; | |||
z-index: 20; | |||
font-size: 0; | |||
line-height: 1; | |||
} | |||
</style> |
@@ -0,0 +1,25 @@ | |||
'use strict'; | |||
function arrayTreeFilter(e, r, t) { | |||
(t = t || {}).childrenKeyName = t.childrenKeyName || 'children'; | |||
var a = e || []; | |||
var l = []; | |||
var i = 0; | |||
do { | |||
var d = a.filter(function (e) { | |||
return r(e, i); | |||
})[0]; | |||
if (!d) { | |||
break; | |||
} | |||
l.push(d); | |||
a = d[t.childrenKeyName] || []; | |||
i += 1; | |||
} while (0 < a.length); | |||
return l; | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _default = arrayTreeFilter; | |||
exports.default = _default; |
@@ -0,0 +1,141 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _computedBehavior = _interopRequireDefault(require('./computedBehavior')); | |||
var _relationsBehavior = _interopRequireDefault(require('./relationsBehavior')); | |||
var _safeAreaBehavior = _interopRequireDefault(require('./safeAreaBehavior')); | |||
var _safeSetDataBehavior = _interopRequireDefault(require('./safeSetDataBehavior')); | |||
var _funcBehavior = _interopRequireDefault(require('./funcBehavior')); | |||
var _compareVersion = _interopRequireDefault(require('./compareVersion')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function ownKeys(r, e) { | |||
var t = Object.keys(r); | |||
if (Object.getOwnPropertySymbols) { | |||
var o = Object.getOwnPropertySymbols(r); | |||
if (e) { | |||
o = o.filter(function (e) { | |||
return Object.getOwnPropertyDescriptor(r, e).enumerable; | |||
}); | |||
} | |||
t.push.apply(t, o); | |||
} | |||
return t; | |||
} | |||
function _objectSpread(r) { | |||
for (var e = 1; e < arguments.length; e++) { | |||
if (null != arguments[e]) { | |||
var t = arguments[e]; | |||
} else { | |||
} | |||
e % 2 | |||
? ownKeys(t, true).forEach(function (e) { | |||
_defineProperty(r, e, t[e]); | |||
}) | |||
: Object.getOwnPropertyDescriptors | |||
? Object.defineProperties(r, Object.getOwnPropertyDescriptors(t)) | |||
: ownKeys(t).forEach(function (e) { | |||
Object.defineProperty(r, e, Object.getOwnPropertyDescriptor(t, e)); | |||
}); | |||
} | |||
return r; | |||
} | |||
function _defineProperty(e, r, t) { | |||
r in e | |||
? Object.defineProperty(e, r, { | |||
value: t, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[r] = t); | |||
return e; | |||
} | |||
function _toConsumableArray(e) { | |||
return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread(); | |||
} | |||
function _nonIterableSpread() { | |||
throw new TypeError('Invalid attempt to spread non-iterable instance'); | |||
} | |||
function _iterableToArray(e) { | |||
if (Symbol.iterator in Object(e) || '[object Arguments]' === Object.prototype.toString.call(e)) { | |||
return Array.from(e); | |||
} | |||
} | |||
function _arrayWithoutHoles(e) { | |||
if (Array.isArray(e)) { | |||
for (r = 0, t = new Array(e.length), void 0; r < e.length; r++) { | |||
var r; | |||
var t; | |||
t[r] = e[r]; | |||
} | |||
return t; | |||
} | |||
} | |||
var _wx$getSystemInfoSync = uni.getSystemInfoSync(); | |||
var platform = _wx$getSystemInfoSync.platform; | |||
var SDKVersion = _wx$getSystemInfoSync.SDKVersion; | |||
var libVersion = '2.6.6'; | |||
if ('devtools' === platform && (0, _compareVersion.default)(SDKVersion, libVersion) < 0 && wx && uni.showModal) { | |||
uni.showModal({ | |||
title: '提示', | |||
content: '当前基础库版本('.concat(SDKVersion, ')过低,无法使用 Wux Weapp 组件库,请更新基础库版本 >=').concat(libVersion, ' 后重试。') | |||
}); | |||
} | |||
var baseComponent = function (e) { | |||
if (0 < arguments.length && void 0 !== e) { | |||
var t = e; | |||
} else { | |||
} | |||
t.externalClasses = ['wux-class', 'wux-hover-class'].concat(_toConsumableArray((t.externalClasses = t.externalClasses || []))); | |||
t.behaviors = [_relationsBehavior.default, _safeSetDataBehavior.default].concat(_toConsumableArray((t.behaviors = t.behaviors || [])), [_computedBehavior.default]); | |||
if (t.useSafeArea) { | |||
t.behaviors = [].concat(_toConsumableArray(t.behaviors), [_safeAreaBehavior.default]); | |||
delete t.useSafeArea; | |||
} | |||
if (t.useFunc) { | |||
t.behaviors = [].concat(_toConsumableArray(t.behaviors), [_funcBehavior.default]); | |||
delete t.useFunc; | |||
} | |||
if (t.useField) { | |||
t.behaviors = [].concat(_toConsumableArray(t.behaviors), ['wx://form-field']); | |||
delete t.useField; | |||
} | |||
if (t.useExport) { | |||
t.behaviors = [].concat(_toConsumableArray(t.behaviors), ['wx://component-export']); | |||
t.methods = _objectSpread( | |||
{ | |||
export: function () { | |||
return this; | |||
} | |||
}, | |||
t.methods | |||
); | |||
delete t.useExport; | |||
} | |||
t.options = _objectSpread( | |||
{ | |||
multipleSlots: true, | |||
addGlobalClass: true | |||
}, | |||
t.options | |||
); | |||
if (t.properties) { | |||
Object.keys(t.properties).forEach(function (e) { | |||
var r = t.properties[e]; | |||
if (Array.isArray(r.type)) { | |||
r.optionalTypes = r.type; | |||
} | |||
}); | |||
} | |||
return Component(t); | |||
}; | |||
var _default = baseComponent; | |||
exports.default = _default; |
@@ -0,0 +1,42 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.checkIPhoneX = exports.getSystemInfo = exports.safeAreaInset = void 0; | |||
var systemInfo = null; | |||
var safeAreaInset = { | |||
top: 88, | |||
left: 0, | |||
right: 0, | |||
bottom: 34 | |||
}; | |||
exports.safeAreaInset = safeAreaInset; | |||
var getSystemInfo = function (e) { | |||
if (!systemInfo || e) { | |||
try { | |||
systemInfo = uni.getSystemInfoSync(); | |||
} catch (e) { | |||
console.log('CatchClause', e); | |||
console.log('CatchClause', e); | |||
} | |||
try { | |||
safeAreaInset.top = systemInfo.statusBarHeight + systemInfo.safeArea.top; | |||
safeAreaInset.bottom = systemInfo.screenHeight - systemInfo.safeArea.bottom; | |||
} catch (e) { | |||
console.log('CatchClause', e); | |||
console.log('CatchClause', e); | |||
} | |||
} | |||
return systemInfo; | |||
}; | |||
exports.getSystemInfo = getSystemInfo; | |||
var isIPhoneX = function (e) { | |||
var t = e.model; | |||
var s = e.windowHeight; | |||
var o = e.windowWidth; | |||
return /iphone (x|12|13)/.test(t.toLowerCase()) || (812 <= s && 2 < s / o); | |||
}; | |||
var checkIPhoneX = function (e) { | |||
return isIPhoneX(getSystemInfo(e)); | |||
}; | |||
(exports.checkIPhoneX = checkIPhoneX)(); |
@@ -0,0 +1,42 @@ | |||
'use strict'; | |||
function _typeof(e) { | |||
return (_typeof = | |||
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator | |||
? function (e) { | |||
return typeof e; | |||
} | |||
: function (e) { | |||
return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e; | |||
})(e); | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var hasOwn = {}.hasOwnProperty; | |||
function classNames() { | |||
for (e = [], t = 0, void 0; t < arguments.length; t++) { | |||
var e; | |||
var t; | |||
var o = arguments[t]; | |||
if (o) { | |||
var r = _typeof(o); | |||
if ('string' === r || 'number' === r) e.push(o); | |||
else if (Array.isArray(o) && o.length) { | |||
var n = classNames.apply(null, o); | |||
if (n) { | |||
e.push(n); | |||
} | |||
} else if ('object' === r) { | |||
for (var s in o) { | |||
if (hasOwn.call(o, s) && o[s]) { | |||
e.push(s); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
return e.join(' '); | |||
} | |||
var _default = classNames; | |||
exports.default = _default; |
@@ -0,0 +1,21 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.isPresetColor = exports.colors = void 0; | |||
var colors = { | |||
light: '#ddd', | |||
stable: '#b2b2b2', | |||
positive: '#387ef5', | |||
calm: '#11c1f3', | |||
balanced: '#33cd5f', | |||
energized: '#ffc900', | |||
assertive: '#ef473a', | |||
royal: '#886aea', | |||
dark: '#444' | |||
}; | |||
exports.colors = colors; | |||
var isPresetColor = function (e) { | |||
return !!e && (colors[e] ? colors[e] : e); | |||
}; | |||
exports.isPresetColor = isPresetColor; |
@@ -0,0 +1,29 @@ | |||
'use strict'; | |||
function compareVersion(e, r) { | |||
for (t = e.split('.'), a = r.split('.'), n = Math.max(t.length, a.length), void 0; t.length < n; ) { | |||
var t; | |||
var a; | |||
var n; | |||
t.push('0'); | |||
} | |||
for (; a.length < n; ) { | |||
a.push('0'); | |||
} | |||
for (var o = 0; o < n; o++) { | |||
var s = parseInt(t[o]); | |||
var u = parseInt(a[o]); | |||
if (u < s) { | |||
return 1; | |||
} | |||
if (s < u) { | |||
return -1; | |||
} | |||
} | |||
return 0; | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _default = compareVersion; | |||
exports.default = _default; |
@@ -0,0 +1,178 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _isEmpty = _interopRequireDefault(require('./isEmpty')); | |||
var _shallowEqual = _interopRequireDefault(require('./shallowEqual')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function _toConsumableArray(e) { | |||
return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread(); | |||
} | |||
function _nonIterableSpread() { | |||
throw new TypeError('Invalid attempt to spread non-iterable instance'); | |||
} | |||
function _iterableToArray(e) { | |||
if (Symbol.iterator in Object(e) || '[object Arguments]' === Object.prototype.toString.call(e)) { | |||
return Array.from(e); | |||
} | |||
} | |||
function _arrayWithoutHoles(e) { | |||
if (Array.isArray(e)) { | |||
for (r = 0, t = new Array(e.length), void 0; r < e.length; r++) { | |||
var r; | |||
var t; | |||
t[r] = e[r]; | |||
} | |||
return t; | |||
} | |||
} | |||
function ownKeys(r, e) { | |||
var t = Object.keys(r); | |||
if (Object.getOwnPropertySymbols) { | |||
var n = Object.getOwnPropertySymbols(r); | |||
if (e) { | |||
n = n.filter(function (e) { | |||
return Object.getOwnPropertyDescriptor(r, e).enumerable; | |||
}); | |||
} | |||
t.push.apply(t, n); | |||
} | |||
return t; | |||
} | |||
function _objectSpread(r) { | |||
for (var e = 1; e < arguments.length; e++) { | |||
if (null != arguments[e]) { | |||
var t = arguments[e]; | |||
} else { | |||
var t = {}; | |||
} | |||
e % 2 | |||
? ownKeys(t, true).forEach(function (e) { | |||
_defineProperty(r, e, t[e]); | |||
}) | |||
: Object.getOwnPropertyDescriptors | |||
? Object.defineProperties(r, Object.getOwnPropertyDescriptors(t)) | |||
: ownKeys(t).forEach(function (e) { | |||
Object.defineProperty(r, e, Object.getOwnPropertyDescriptor(t, e)); | |||
}); | |||
} | |||
return r; | |||
} | |||
function _defineProperty(e, r, t) { | |||
r in e | |||
? Object.defineProperty(e, r, { | |||
value: t, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[r] = t); | |||
return e; | |||
} | |||
function _slicedToArray(e, r) { | |||
return _arrayWithHoles(e) || _iterableToArrayLimit(e, r) || _nonIterableRest(); | |||
} | |||
function _nonIterableRest() { | |||
throw new TypeError('Invalid attempt to destructure non-iterable instance'); | |||
} | |||
function _iterableToArrayLimit(e, r) { | |||
var t = []; | |||
var n = true; | |||
var o = false; | |||
var i = void 0; | |||
try { | |||
for (u = e[Symbol.iterator](), void 0; !(n = (a = u.next()).done) && (t.push(a.value), !r || t.length !== r); n = true) { | |||
var a; | |||
var u; | |||
} | |||
} catch (e) { | |||
console.log('CatchClause', e); | |||
console.log('CatchClause', e); | |||
o = true; | |||
i = e; | |||
} finally { | |||
try { | |||
n || null == u.return || u.return(); | |||
} finally { | |||
if (o) { | |||
throw i; | |||
} | |||
} | |||
} | |||
return t; | |||
} | |||
function _arrayWithHoles(e) { | |||
if (Array.isArray(e)) { | |||
return e; | |||
} | |||
} | |||
var ALL_DATA_KEY = '**'; | |||
var trim = function (e) { | |||
return (0 < arguments.length && void 0 !== e ? e : '').replace(/\s/g, ''); | |||
}; | |||
var _default = { | |||
lifetimes: { | |||
attached: function () { | |||
this.initComputed(); | |||
} | |||
}, | |||
definitionFilter: function (e) { | |||
var r = e.computed; | |||
if (void 0 === r) { | |||
var n = {}; | |||
} else { | |||
var n = r; | |||
} | |||
var a = Object.keys(n).reduce(function (e, i) { | |||
var r = _slicedToArray(Array.isArray(n[i]) ? n[i] : [ALL_DATA_KEY, n[i]], 2); | |||
var t = r[0]; | |||
var a = r[1]; | |||
return _objectSpread( | |||
{}, | |||
e, | |||
_defineProperty({}, t, function () { | |||
if ('function' == typeof a) { | |||
for (e = arguments.length, r = new Array(e), t = 0, void 0; t < e; t++) { | |||
var e; | |||
var r; | |||
var t; | |||
r[t] = arguments[t]; | |||
} | |||
var n = a.apply(this, r); | |||
var o = this[i]; | |||
(0, _isEmpty.default)(n) || (0, _shallowEqual.default)(n, o) || this.setData(_defineProperty({}, i, n)); | |||
} | |||
}) | |||
); | |||
}, {}); | |||
Object.assign((e.observers = e.observers || {}), a); | |||
Object.assign((e.methods = e.methods || {}), { | |||
initComputed: function (e, r) { | |||
var t = 0 < arguments.length && void 0 !== e ? e : {}; | |||
var n = 1 < arguments.length && void 0 !== r && r; | |||
if (!this.runInitComputed || n) { | |||
this.runInitComputed = false; | |||
var that = this; | |||
var i = _objectSpread({}, this, {}, t); | |||
Object.keys(a).forEach(function (e) { | |||
var r = trim(e) | |||
.split(',') | |||
.reduce(function (e, r) { | |||
return [].concat(_toConsumableArray(e), [i[r]]); | |||
}, []); | |||
a[e].apply(that, r); | |||
}); | |||
this.runInitComputed = true; | |||
} | |||
} | |||
}); | |||
} | |||
}; | |||
exports.default = _default; |
@@ -0,0 +1,170 @@ | |||
'use strict'; | |||
function ownKeys(t, e) { | |||
var r = Object.keys(t); | |||
if (Object.getOwnPropertySymbols) { | |||
var n = Object.getOwnPropertySymbols(t); | |||
if (e) { | |||
n = n.filter(function (e) { | |||
return Object.getOwnPropertyDescriptor(t, e).enumerable; | |||
}); | |||
} | |||
r.push.apply(r, n); | |||
} | |||
return r; | |||
} | |||
function _objectSpread(t) { | |||
for (var e = 1; e < arguments.length; e++) { | |||
if (null != arguments[e]) { | |||
var r = arguments[e]; | |||
} else { | |||
var r = {}; | |||
} | |||
if (e % 2) { | |||
ownKeys(r, true).forEach(function (e) { | |||
_defineProperty(t, e, r[e]); | |||
}); | |||
} else { | |||
Object.getOwnPropertyDescriptors | |||
? Object.defineProperties(t, Object.getOwnPropertyDescriptors(r)) | |||
: ownKeys(r).forEach(function (e) { | |||
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(r, e)); | |||
}); | |||
} | |||
} | |||
return t; | |||
} | |||
function _defineProperty(e, t, r) { | |||
t in e | |||
? Object.defineProperty(e, t, { | |||
value: r, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[t] = r); | |||
return e; | |||
} | |||
function _classCallCheck(e, t) { | |||
if (!(e instanceof t)) { | |||
throw new TypeError('Cannot call a class as a function'); | |||
} | |||
} | |||
function _defineProperties(e, t) { | |||
for (var r = 0; r < t.length; r++) { | |||
var n = t[r]; | |||
n.enumerable = n.enumerable || false; | |||
n.configurable = true; | |||
if ('value' in n) { | |||
n.writable = true; | |||
} | |||
Object.defineProperty(e, n.key, n); | |||
} | |||
} | |||
function _createClass(e, t, r) { | |||
if (t) { | |||
_defineProperties(e.prototype, t); | |||
} | |||
if (r) { | |||
_defineProperties(e, r); | |||
} | |||
return e; | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = createFieldsStore; | |||
var FieldsStore = (function () { | |||
function t() { | |||
if (0 < arguments.length && void 0 !== arguments[0]) { | |||
var e = arguments[0]; | |||
} else { | |||
var e = {}; | |||
} | |||
_classCallCheck(this, t); | |||
this.fields = e; | |||
} | |||
_createClass(t, [ | |||
{ | |||
key: 'setFields', | |||
value: function (e) { | |||
Object.assign(this.fields, e); | |||
} | |||
}, | |||
{ | |||
key: 'updateFields', | |||
value: function (e) { | |||
this.fields = e; | |||
} | |||
}, | |||
{ | |||
key: 'clearField', | |||
value: function (e) { | |||
delete this.fields[e]; | |||
} | |||
}, | |||
{ | |||
key: 'getValueFromFields', | |||
value: function (e, t) { | |||
var r = t[e]; | |||
return r && 'value' in r ? r.value : r.initialValue; | |||
} | |||
}, | |||
{ | |||
key: 'getAllFieldsName', | |||
value: function () { | |||
var e = this.fields; | |||
return e ? Object.keys(e) : []; | |||
} | |||
}, | |||
{ | |||
key: 'getField', | |||
value: function (e) { | |||
return _objectSpread({}, this.fields[e], { | |||
name: e | |||
}); | |||
} | |||
}, | |||
{ | |||
key: 'getFieldValuePropValue', | |||
value: function (e) { | |||
var t = e.name; | |||
var r = e.valuePropName; | |||
var n = this.getField(t); | |||
return _defineProperty({}, r, 'value' in n ? n.value : n.initialValue); | |||
} | |||
}, | |||
{ | |||
key: 'getFieldValue', | |||
value: function (e) { | |||
return this.getValueFromFields(e, this.fields); | |||
} | |||
}, | |||
{ | |||
key: 'getFieldsValue', | |||
value: function (e) { | |||
var that = this; | |||
return (e || this.getAllFieldsName()).reduce(function (e, t) { | |||
e[t] = that.getFieldValue(t); | |||
return e; | |||
}, {}); | |||
} | |||
}, | |||
{ | |||
key: 'resetFields', | |||
value: function (e) { | |||
var n = this.fields; | |||
return (e || this.getAllFieldsName()).reduce(function (e, t) { | |||
var r = n[t]; | |||
if (r) { | |||
e[t] = r.initialValue; | |||
} | |||
return e; | |||
}, {}); | |||
} | |||
} | |||
]); | |||
return t; | |||
})(); | |||
function createFieldsStore(e) { | |||
return new FieldsStore(e); | |||
} |
@@ -0,0 +1,41 @@ | |||
'use strict'; | |||
function debounce(t, o, i) { | |||
var n; | |||
var u; | |||
var r; | |||
var a; | |||
var c; | |||
function d() { | |||
var e = +new Date() - a; | |||
if (e < o && 0 <= e) { | |||
n = setTimeout(d, o - e); | |||
} else { | |||
n = void 0; | |||
i || ((c = t.apply(r, u)), n || (u = r = void 0)); | |||
} | |||
} | |||
function e() { | |||
r = this; | |||
u = arguments; | |||
a = +new Date(); | |||
var e = i && !n; | |||
n = n || setTimeout(d, o); | |||
if (e) { | |||
c = t.apply(r, u); | |||
u = r = void 0; | |||
} | |||
return c; | |||
} | |||
e.cancel = function () { | |||
if (void 0 !== n) { | |||
clearTimeout(n); | |||
n = void 0; | |||
} | |||
u = r = void 0; | |||
}; | |||
return e; | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = debounce; |
@@ -0,0 +1,56 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = eventsMixin; | |||
var defaultEvents = { | |||
onChange: function () {} | |||
}; | |||
function eventsMixin() { | |||
return { | |||
data() { | |||
return { | |||
inputEvents: defaultEvents | |||
}; | |||
}, | |||
lifetimes: { | |||
created: function () { | |||
this._oriTriggerEvent = this.triggerEvent; | |||
this.triggerEvent = this._triggerEvent; | |||
} | |||
}, | |||
props: { | |||
events: { | |||
type: Object, | |||
value: defaultEvents | |||
} | |||
}, | |||
definitionFilter: function (t) { | |||
Object.assign((t.data = t.data || {}), { | |||
inputEvents: Object.assign({}, defaultEvents, t.inputEvents) | |||
}); | |||
Object.assign((t.methods = t.methods || {}), { | |||
_triggerEvent: function (t, e, n, i) { | |||
var s = !(2 < arguments.length && void 0 !== n) || n; | |||
if (3 < arguments.length) { | |||
var a = i; | |||
} else { | |||
var a = void 0; | |||
} | |||
var r = this.inputEvents['on'.concat(t[0].toUpperCase()).concat(t.slice(1))]; | |||
if (s && 'function' == typeof r) { | |||
r.call(this, e); | |||
} | |||
this._oriTriggerEvent(t, e, a); | |||
} | |||
}); | |||
Object.assign((t.observers = t.observers || {}), { | |||
events: function (t) { | |||
this.setData({ | |||
inputEvents: Object.assign({}, defaultEvents, this.inputEvents, t) | |||
}); | |||
} | |||
}); | |||
} | |||
}; | |||
} |
@@ -0,0 +1,92 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var mergeOptionsToData = function (t) { | |||
if (0 < arguments.length && void 0 !== t) { | |||
var e = t; | |||
} else { | |||
var e = {}; | |||
} | |||
var n = Object.assign({}, e); | |||
for (var r in n) { | |||
if (n.hasOwnProperty(r) && 'function' == typeof n[r]) { | |||
delete n[r]; | |||
} | |||
} | |||
return n; | |||
}; | |||
var bind = function (r, i) { | |||
return function () { | |||
for (t = arguments.length, e = new Array(t), n = 0, void 0; n < t; n++) { | |||
var t; | |||
var e; | |||
var n; | |||
e[n] = arguments[n]; | |||
} | |||
return e.length ? r.apply(i, e) : r.call(i); | |||
}; | |||
}; | |||
var assign = function () { | |||
for (t = arguments.length, e = new Array(t), n = 0, void 0; n < t; n++) { | |||
var t; | |||
var e; | |||
var n; | |||
e[n] = arguments[n]; | |||
} | |||
return Object.assign.apply(Object, [{}].concat(e)); | |||
}; | |||
var _default = { | |||
definitionFilter: function (t) { | |||
t.data = mergeOptionsToData(t.data); | |||
t.data.in = false; | |||
t.data.visible = false; | |||
}, | |||
methods: { | |||
$mergeOptionsToData: mergeOptionsToData, | |||
$mergeOptionsAndBindMethods: function (t, e) { | |||
if (0 < arguments.length && void 0 !== t) { | |||
var n = t; | |||
} else { | |||
var n = {}; | |||
} | |||
var r = 1 < arguments.length && void 0 !== e ? e : this.fns; | |||
var i = Object.assign({}, n); | |||
for (var a in i) { | |||
if (i.hasOwnProperty(a) && 'function' == typeof i[a]) { | |||
r[a] = bind(i[a], this); | |||
delete i[a]; | |||
} | |||
} | |||
return i; | |||
}, | |||
$setData: function () { | |||
for (e = this, t = arguments.length, n = new Array(t), r = 0, void 0; r < t; r++) { | |||
var e; | |||
var t; | |||
var n; | |||
var r; | |||
n[r] = arguments[r]; | |||
} | |||
var i = assign.apply(void 0, [{}].concat(n)); | |||
return new Promise(function (t) { | |||
e.setData(i, t); | |||
}); | |||
}, | |||
$requestAnimationFrame: function (t, e) { | |||
var n = 0 < arguments.length && void 0 !== t ? t : function () {}; | |||
var r = 1 < arguments.length && void 0 !== e ? e : 16.666666666666668; | |||
return new Promise(function (t) { | |||
return setTimeout(t, r); | |||
}).then(n); | |||
} | |||
}, | |||
created: function () { | |||
this.fns = {}; | |||
}, | |||
destroyed: function () { | |||
this.fns = {}; | |||
} | |||
}; | |||
exports.default = _default; |
@@ -0,0 +1,49 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.getSwipeDirection = exports.getPointsDistance = exports.isNearbyPoints = exports.isEqualPoints = exports.getPointsNumber = exports.getTouchPoints = void 0; | |||
var getTouchPoints = function (t, e) { | |||
if (1 < arguments.length && void 0 !== e) { | |||
var s = e; | |||
} else { | |||
var s = 0; | |||
} | |||
var o = t.touches; | |||
var n = t.changedTouches; | |||
var i = o && 0 < o.length; | |||
var r = n && 0 < n.length; | |||
if (!i && r) { | |||
var a = n[s]; | |||
} else { | |||
var a = i ? o[s] : t; | |||
} | |||
return { | |||
x: a.pageX, | |||
y: a.pageY | |||
}; | |||
}; | |||
exports.getTouchPoints = getTouchPoints; | |||
var getPointsNumber = function (t) { | |||
return (t.touches && t.touches.length) || (t.changedTouches && t.changedTouches.length); | |||
}; | |||
exports.getPointsNumber = getPointsNumber; | |||
var isEqualPoints = function (t, e) { | |||
return t.x === e.x && t.y === e.y; | |||
}; | |||
exports.isEqualPoints = isEqualPoints; | |||
var isNearbyPoints = function (t, e, s) { | |||
var o = 2 < arguments.length && void 0 !== s ? s : 25; | |||
return (Math.abs(t.x - e.x) < o) & (Math.abs(t.y - e.y) < o); | |||
}; | |||
exports.isNearbyPoints = isNearbyPoints; | |||
var getPointsDistance = function (t, e) { | |||
var s = Math.abs(t.x - e.x); | |||
var o = Math.abs(t.y - e.y); | |||
return Math.sqrt(s * s + o * o); | |||
}; | |||
exports.getPointsDistance = getPointsDistance; | |||
var getSwipeDirection = function (t, e, s, o) { | |||
return Math.abs(t - e) >= Math.abs(s - o) ? (0 < t - e ? 'Left' : 'Right') : 0 < s - o ? 'Up' : 'Down'; | |||
}; | |||
exports.getSwipeDirection = getSwipeDirection; |
@@ -0,0 +1,31 @@ | |||
'use strict'; | |||
function _typeof(t) { | |||
return (_typeof = | |||
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator | |||
? function (t) { | |||
return typeof t; | |||
} | |||
: function (t) { | |||
return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t; | |||
})(t); | |||
} | |||
function isEmpty(t) { | |||
if (Array.isArray(t)) { | |||
return 0 === t.length; | |||
} | |||
if ('object' !== _typeof(t)) { | |||
return !t; | |||
} | |||
if (t) { | |||
for (var e in t) { | |||
return false; | |||
} | |||
} | |||
return true; | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _default = isEmpty; | |||
exports.default = _default; |
@@ -0,0 +1,21 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var mergeOptionsToData = function (e) { | |||
if (0 < arguments.length && void 0 !== e) { | |||
var t = e; | |||
} else { | |||
var t = {}; | |||
} | |||
var o = Object.assign({}, t); | |||
for (var r in o) { | |||
if (o.hasOwnProperty(r) && 'function' == typeof o[r]) { | |||
delete o[r]; | |||
} | |||
} | |||
return o; | |||
}; | |||
var _default = mergeOptionsToData; | |||
exports.default = _default; |
@@ -0,0 +1,338 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = popupMixin; | |||
var _classNames3 = _interopRequireDefault(require('./classNames')); | |||
var _eventsMixin = _interopRequireDefault(require('./eventsMixin')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function ownKeys(t, e) { | |||
var i = Object.keys(t); | |||
if (Object.getOwnPropertySymbols) { | |||
var n = Object.getOwnPropertySymbols(t); | |||
if (e) { | |||
n = n.filter(function (e) { | |||
return Object.getOwnPropertyDescriptor(t, e).enumerable; | |||
}); | |||
} | |||
i.push.apply(i, n); | |||
} | |||
return i; | |||
} | |||
function _objectSpread(t) { | |||
for (var e = 1; e < arguments.length; e++) { | |||
if (null != arguments[e]) { | |||
var i = arguments[e]; | |||
} else { | |||
var i = {}; | |||
} | |||
e % 2 | |||
? ownKeys(i, true).forEach(function (e) { | |||
_defineProperty(t, e, i[e]); | |||
}) | |||
: Object.getOwnPropertyDescriptors | |||
? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) | |||
: ownKeys(i).forEach(function (e) { | |||
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e)); | |||
}); | |||
} | |||
return t; | |||
} | |||
function _defineProperty(e, t, i) { | |||
t in e | |||
? Object.defineProperty(e, t, { | |||
value: i, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[t] = i); | |||
return e; | |||
} | |||
var DEFAULT_TRIGGER = 'onClick'; | |||
var CELL_NAME = '../cell/index'; | |||
var FIELD_NAME = '../field/index'; | |||
var defaultToolbar = { | |||
title: '请选择', | |||
cancelText: '取消', | |||
confirmText: '确定' | |||
}; | |||
var defaultEvents = { | |||
onChange: function () {}, | |||
onConfirm: function () {}, | |||
onCancel: function () {}, | |||
onVisibleChange: function () {}, | |||
onValueChange: function () {} | |||
}; | |||
var defaultPlatformProps = { | |||
labelPropName: 'label', | |||
format: function (e, t) { | |||
return Array.isArray(e.displayValue) ? e.displayValue.join(',') : e.displayValue; | |||
} | |||
}; | |||
var defaultFieldNames = { | |||
label: 'label', | |||
value: 'value', | |||
children: 'children' | |||
}; | |||
function popupMixin() { | |||
if (0 < arguments.length && void 0 !== arguments[0]) { | |||
var i = arguments[0]; | |||
} else { | |||
var i = '#wux-picker'; | |||
} | |||
var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : defaultPlatformProps; | |||
return { | |||
data() { | |||
return { | |||
mounted: false, | |||
popupVisible: false, | |||
inputValue: [] | |||
}; | |||
}, | |||
mixins: [ | |||
(0, _eventsMixin.default)({ | |||
defaultEvents: defaultEvents | |||
}) | |||
], | |||
props: { | |||
toolbar: { | |||
type: Object, | |||
value: defaultToolbar | |||
}, | |||
trigger: { | |||
type: String, | |||
value: DEFAULT_TRIGGER | |||
}, | |||
defaultVisible: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
visible: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
controlled: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
disabled: { | |||
type: Boolean, | |||
value: false | |||
} | |||
}, | |||
methods: { | |||
setVisibleState: function (t, e) { | |||
var that = this; | |||
var n = 1 < arguments.length && void 0 !== e ? e : function () {}; | |||
if (this.popupVisible !== t) { | |||
var a = { | |||
mounted: true, | |||
inputValue: this.value, | |||
popupVisible: t | |||
}; | |||
this.setData( | |||
t | |||
? a | |||
: { | |||
popupVisible: t | |||
}, | |||
function () { | |||
if (t && that.hasFieldDecorator) { | |||
var e = that.getFieldElem(); | |||
if (e) { | |||
e.changeValue(e.data.value); | |||
} | |||
} | |||
n(); | |||
} | |||
); | |||
} | |||
}, | |||
fireVisibleChange: function (e) { | |||
if (this.popupVisible !== e) { | |||
this.controlled || this.setVisibleState(e); | |||
this.setScrollValue(void 0); | |||
this.$emit('visibleChange', { | |||
detail: { | |||
visible: e | |||
} | |||
}); | |||
} | |||
}, | |||
open: function () { | |||
this.fireVisibleChange(true); | |||
}, | |||
close: function (e) { | |||
if ('function' == typeof e) { | |||
var t = this.getPickerValue(this.scrollValue || this.inputValue); | |||
e.call(this, this.formatPickerValue(t)); | |||
} | |||
this.fireVisibleChange(false); | |||
}, | |||
onClosed: function () { | |||
this.picker = null; | |||
this.setData({ | |||
mounted: false, | |||
inputValue: null | |||
}); | |||
}, | |||
onConfirm: function () { | |||
var that = this; | |||
this.close(function (e) { | |||
that.$emit('change', { | |||
detail: e | |||
}); | |||
that.$emit('confirm', { | |||
detail: e | |||
}); | |||
}); | |||
}, | |||
onCancel: function () { | |||
var that = this; | |||
this.close(function (e) { | |||
return that.$emit('cancel', { | |||
detail: e | |||
}); | |||
}); | |||
}, | |||
onValueChange: function (e) { | |||
if (this.mounted) { | |||
var t = e.detail.value; | |||
this.cascade ? this.setCasecadeScrollValue(t) : this.setScrollValue(t); | |||
this.updated(t, true); | |||
this.$emit('valueChange', { | |||
detail: this.formatPickerValue(e.detail) | |||
}); | |||
} | |||
}, | |||
getPickerValue: function (e) { | |||
var t = 0 < arguments.length && void 0 !== e ? e : this.inputValue; | |||
this.picker = this.picker || this.zpSelectComponent(i); | |||
return this.picker && this.picker.getValue(t); | |||
}, | |||
formatPickerValue: function (e) { | |||
return _objectSpread({}, e, _defineProperty({}, t.labelPropName, t.format(e, this))); | |||
}, | |||
getFieldElem: function () { | |||
return (this.field = this.field || this.getRelationNodes(FIELD_NAME)[0]); | |||
}, | |||
setChildProps: function () { | |||
var that = this; | |||
if (!this.disabled) { | |||
var e = this.getRelationNodes(CELL_NAME); | |||
var t = this.trigger; | |||
var a = void 0 === t ? DEFAULT_TRIGGER : t; | |||
if (0 < e.length) { | |||
e.forEach(function (e) { | |||
var t = e.data.inputEvents; | |||
var i = e.data.oriInputEvents || _objectSpread({}, t); | |||
t[a] = function () { | |||
if (i && i[a]) { | |||
i[a].apply(i, arguments); | |||
} | |||
that.onTriggerClick(); | |||
}; | |||
e.setData({ | |||
oriInputEvents: i, | |||
inputEvents: t | |||
}); | |||
}); | |||
} | |||
} | |||
}, | |||
onTriggerClick: function () { | |||
this.fireVisibleChange(!this.popupVisible); | |||
}, | |||
noop: function () {}, | |||
updated: function (e, t) { | |||
(this.hasFieldDecorator && !t) || | |||
(this.inputValue !== e && | |||
this.setData({ | |||
inputValue: e | |||
})); | |||
}, | |||
setScrollValue: function (e) { | |||
this.scrollValue = e; | |||
}, | |||
setCasecadeScrollValue: function (e) { | |||
if (e && this.scrollValue) { | |||
var t = this.scrollValue.length; | |||
if (t === e.length && this.scrollValue[t - 1] === e[t - 1]) { | |||
return; | |||
} | |||
} | |||
this.setScrollValue(e); | |||
} | |||
}, | |||
lifetimes: { | |||
ready: function () { | |||
var e = this; | |||
var t = e.defaultVisible; | |||
var i = e.visible; | |||
var n = e.controlled; | |||
var a = (e.value, n ? i : t); | |||
if ('defaultFieldNames' in this) { | |||
this.setData({ | |||
fieldNames: Object.assign({}, defaultFieldNames, this.defaultFieldNames) | |||
}); | |||
} | |||
this.mounted = true; | |||
this.scrollValue = void 0; | |||
this.setVisibleState(a); | |||
this.setChildProps(); | |||
}, | |||
detached: function () { | |||
this.mounted = false; | |||
} | |||
}, | |||
definitionFilter: function (e) { | |||
var t; | |||
Object.assign( | |||
(e.relations = e.relations || {}), | |||
(_defineProperty((t = {}), CELL_NAME, { | |||
type: 'child', | |||
observer: function () { | |||
this.setChildProps(); | |||
} | |||
}), | |||
_defineProperty(t, FIELD_NAME, { | |||
type: 'ancestor' | |||
}), | |||
t) | |||
); | |||
Object.assign((e.computed = e.computed || {}), { | |||
classes: [ | |||
'prefixCls', | |||
function (e) { | |||
return { | |||
wrap: (0, _classNames3.default)(e), | |||
toolbar: ''.concat(e, '__toolbar'), | |||
inner: ''.concat(e, '__inner'), | |||
cancel: (0, _classNames3.default)(''.concat(e, '__button'), _defineProperty({}, ''.concat(e, '__button--cancel'), true)), | |||
confirm: (0, _classNames3.default)(''.concat(e, '__button'), _defineProperty({}, ''.concat(e, '__button--confirm'), true)), | |||
hover: ''.concat(e, '__button--hover'), | |||
title: ''.concat(e, '__title') | |||
}; | |||
} | |||
] | |||
}); | |||
Object.assign((e.observers = e.observers || {}), { | |||
visible: function (e) { | |||
if (this.controlled) { | |||
this.setVisibleState(e); | |||
} | |||
}, | |||
value: function (e) { | |||
this.updated(e); | |||
} | |||
}); | |||
} | |||
}; | |||
} |
@@ -0,0 +1,93 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _isEmpty = _interopRequireDefault(require('./isEmpty')); | |||
var _debounce2 = _interopRequireDefault(require('./debounce')); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function _defineProperty(e, t, n) { | |||
t in e | |||
? Object.defineProperty(e, t, { | |||
value: n, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[t] = n); | |||
return e; | |||
} | |||
function bindFunc(e, t, n) { | |||
var i = e[t]; | |||
e[t] = function (e) { | |||
if (n) { | |||
n.call(this, e, _defineProperty({}, t, true)); | |||
} | |||
if (i) { | |||
i.call(this, e); | |||
} | |||
}; | |||
} | |||
var methods = ['linked', 'linkChanged', 'unlinked']; | |||
var extProps = ['observer']; | |||
var _default = { | |||
lifetimes: { | |||
created: function () { | |||
this._debounce = null; | |||
}, | |||
detached: function () { | |||
if (this._debounce && this._debounce.cancel) { | |||
this._debounce.cancel(); | |||
} | |||
} | |||
}, | |||
definitionFilter: function (e) { | |||
var n = e.relations; | |||
if (!(0, _isEmpty.default)(n)) { | |||
var t = function (e) { | |||
var t = n[e]; | |||
methods.forEach(function (e) { | |||
return bindFunc(t, e, t.observer); | |||
}); | |||
extProps.forEach(function (e) { | |||
return delete t[e]; | |||
}); | |||
}; | |||
for (var i in n) { | |||
t(i); | |||
} | |||
} | |||
Object.assign((e.methods = e.methods || {}), { | |||
getRelationsName: function (e) { | |||
if (0 < arguments.length && void 0 !== e) { | |||
var t = e; | |||
} else { | |||
var t = ['parent', 'child', 'ancestor', 'descendant']; | |||
} | |||
return Object.keys(n || {}) | |||
.map(function (e) { | |||
return n[e] && t.includes(n[e].type) ? e : null; | |||
}) | |||
.filter(function (e) { | |||
return !!e; | |||
}); | |||
}, | |||
debounce: function (e, t, n) { | |||
if (1 < arguments.length && void 0 !== t) { | |||
var i = t; | |||
} else { | |||
var i = 0; | |||
} | |||
var r = 2 < arguments.length && void 0 !== n && n; | |||
return (this._debounce = this._debounce || (0, _debounce2.default)(e.bind(this), i, r)).call(this); | |||
} | |||
}); | |||
} | |||
}; | |||
exports.default = _default; |
@@ -0,0 +1,71 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _checkIPhoneX = require('./checkIPhoneX'); | |||
function _defineProperty(e, t, o) { | |||
if (t in e) { | |||
Object.defineProperty(e, t, { | |||
value: o, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}); | |||
} else { | |||
e[t] = o; | |||
} | |||
return e; | |||
} | |||
function _typeof(e) { | |||
return (_typeof = | |||
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator | |||
? function (e) { | |||
return typeof e; | |||
} | |||
: function (e) { | |||
return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e; | |||
})(e); | |||
} | |||
var defaultSafeArea = { | |||
top: false, | |||
bottom: false | |||
}; | |||
var setSafeArea = function (e) { | |||
return 'boolean' == typeof e | |||
? Object.assign({}, defaultSafeArea, { | |||
top: e, | |||
bottom: e | |||
}) | |||
: null !== e && 'object' === _typeof(e) | |||
? Object.assign({}, defaultSafeArea) | |||
: 'string' == typeof e | |||
? Object.assign({}, defaultSafeArea, _defineProperty({}, e, true)) | |||
: defaultSafeArea; | |||
}; | |||
var _default = { | |||
props: { | |||
safeArea: { | |||
type: [Boolean, String, Object], | |||
optionalTypes: [Boolean, String, Object], | |||
value: false | |||
} | |||
}, | |||
watch: { | |||
safeArea: function (e) { | |||
this.setData({ | |||
safeAreaConfig: setSafeArea(e) | |||
}); | |||
} | |||
}, | |||
definitionFilter: function (e) { | |||
var t = ((0, _checkIPhoneX.getSystemInfo)() || {}).statusBarHeight; | |||
var o = (0, _checkIPhoneX.checkIPhoneX)(); | |||
Object.assign((e.data = e.data || {}), { | |||
safeAreaConfig: defaultSafeArea, | |||
statusBarHeight: t, | |||
isIPhoneX: o | |||
}); | |||
} | |||
}; | |||
exports.default = _default; |
@@ -0,0 +1,48 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var _default = { | |||
lifetimes: { | |||
created: function () { | |||
this.nextCallback = null; | |||
}, | |||
detached: function () { | |||
this.cancelNextCallback(); | |||
} | |||
}, | |||
methods: { | |||
safeSetData: function (t, a) { | |||
var that = this; | |||
this.pendingData = Object.assign({}, this, t); | |||
a = this.setNextCallback(a); | |||
this.setData(t, function () { | |||
that.pendingData = null; | |||
a(); | |||
}); | |||
}, | |||
setNextCallback: function (a) { | |||
var that = this; | |||
var l = true; | |||
this.nextCallback = function (t) { | |||
if (l) { | |||
l = false; | |||
that.nextCallback = null; | |||
a.call(that, t); | |||
} | |||
}; | |||
this.nextCallback.cancel = function () { | |||
l = false; | |||
}; | |||
return this.nextCallback; | |||
}, | |||
cancelNextCallback: function () { | |||
if (null !== this.nextCallback) { | |||
this.nextCallback.cancel(); | |||
this.nextCallback = null; | |||
} | |||
} | |||
} | |||
}; | |||
exports.default = _default; |
@@ -0,0 +1,40 @@ | |||
'use strict'; | |||
function _typeof(t) { | |||
return (_typeof = | |||
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator | |||
? function (t) { | |||
return typeof t; | |||
} | |||
: function (t) { | |||
return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t; | |||
})(t); | |||
} | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.default = void 0; | |||
var hasOwnProperty = Object.prototype.hasOwnProperty; | |||
function is(t, e) { | |||
return t === e ? 0 !== t || 0 !== e || 1 / t == 1 / e : t != t && e != e; | |||
} | |||
function shallowEqual(t, e) { | |||
if (is(t, e)) { | |||
return true; | |||
} | |||
if ('object' !== _typeof(t) || null === t || 'object' !== _typeof(e) || null === e) { | |||
return false; | |||
} | |||
var o = Object.keys(t); | |||
var r = Object.keys(e); | |||
if (o.length !== r.length) { | |||
return false; | |||
} | |||
for (var n = 0; n < o.length; n++) { | |||
if (!hasOwnProperty.call(e, o[n]) || !is(t[o[n]], e[o[n]])) { | |||
return false; | |||
} | |||
} | |||
return true; | |||
} | |||
var _default = shallowEqual; | |||
exports.default = _default; |
@@ -0,0 +1,83 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
var isUnitlessNumber = { | |||
boxFlex: !(exports.default = void 0), | |||
boxFlexGroup: true, | |||
columnCount: true, | |||
flex: true, | |||
flexGrow: true, | |||
flexPositive: true, | |||
flexShrink: true, | |||
flexNegative: true, | |||
fontWeight: true, | |||
lineClamp: true, | |||
lineHeight: true, | |||
opacity: true, | |||
order: true, | |||
orphans: true, | |||
widows: true, | |||
zIndex: true, | |||
zoom: true, | |||
fillOpacity: true, | |||
strokeDashoffset: true, | |||
strokeOpacity: true, | |||
strokeWidth: true | |||
}; | |||
function prefixKey(e, t) { | |||
return e + t.charAt(0).toUpperCase() + t.substring(1); | |||
} | |||
var prefixes = ['Webkit', 'ms', 'Moz', 'O']; | |||
Object.keys(isUnitlessNumber).forEach(function (t) { | |||
prefixes.forEach(function (e) { | |||
isUnitlessNumber[prefixKey(e, t)] = isUnitlessNumber[t]; | |||
}); | |||
}); | |||
var msPattern = /^ms-/; | |||
var _uppercasePattern = /([A-Z])/g; | |||
function hyphenate(e) { | |||
return e.replace(_uppercasePattern, '-$1').toLowerCase(); | |||
} | |||
function hyphenateStyleName(e) { | |||
return hyphenate(e).replace(msPattern, '-ms-'); | |||
} | |||
var isArray = Array.isArray; | |||
var keys = Object.keys; | |||
var unquotedContentValueRegex = /^(normal|none|(\b(url\([^)]*\)|chapter_counter|attr\([^)]*\)|(no-)?(open|close)-quote|inherit)((\b\s*)|$|\s+))+)$/; | |||
function buildRule(e, t) { | |||
if (isUnitlessNumber[e] || 'number' != typeof t) { | |||
'content' !== e || unquotedContentValueRegex.test(t) || (t = "'" + t.replace(/'/g, "\\'") + "'"); | |||
} else { | |||
t += 'px'; | |||
} | |||
return hyphenateStyleName(e) + ': ' + t + '; '; | |||
} | |||
function styleToCssString(e) { | |||
var t = ''; | |||
if ('string' == typeof e) { | |||
return ';' === (e = e.trim()).slice(-1) ? ''.concat(e, ' ') : ''.concat(e, '; '); | |||
} | |||
if (!e || 0 === keys(e).length) { | |||
return t; | |||
} | |||
for (r = keys(e), n = 0, s = r.length, void 0; n < s; n++) { | |||
var r; | |||
var n; | |||
var s; | |||
var o = r[n]; | |||
var i = e[o]; | |||
if (isArray(i)) { | |||
for (a = 0, u = i.length, void 0; a < u; a++) { | |||
var a; | |||
var u; | |||
t += buildRule(o, i[a]); | |||
} | |||
} else { | |||
t += buildRule(o, i); | |||
} | |||
} | |||
return t; | |||
} | |||
var _default = styleToCssString; | |||
exports.default = _default; |
@@ -0,0 +1,19 @@ | |||
'use strict'; | |||
Object.defineProperty(exports, '__esModule', { | |||
value: true | |||
}); | |||
exports.$wuxBackdrop = exports.version = exports.getCtx = void 0; | |||
var getCtx = function (e, t) { | |||
var r = (1 < arguments.length && void 0 !== t ? t : getCurrentPages()[getCurrentPages().length - 1].zpSelectComponent)(e); | |||
if (!r) { | |||
throw new Error('无法找到对应的组件,请按文档说明使用组件'); | |||
} | |||
return r; | |||
}; | |||
exports.getCtx = getCtx; | |||
var version = '3.8.9'; | |||
exports.version = version; | |||
var $wuxBackdrop = function (e, t) { | |||
return getCtx(0 < arguments.length && void 0 !== e ? e : '#wux-backdrop', 1 < arguments.length ? t : void 0); | |||
}; | |||
exports.$wuxBackdrop = $wuxBackdrop; |
@@ -0,0 +1,359 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<wux-backdrop id="wux-backdrop" v-if="mask" @click="onMaskClick($event, { tagId: 'wux-backdrop' })" :zIndex="zIndex" /> | |||
<view :class="'wux-class ' + classes.wrap" :style="extStyle"> | |||
<wux-animation-group | |||
:wux-class="prefixCls" | |||
:in="popupVisible" | |||
:classNames="transitionName" | |||
@exited="onExited" | |||
:wrapStyle="" | |||
:mountOnEnter="mountOnEnter" | |||
:unmountOnExit="unmountOnExit" | |||
> | |||
<view :class="'wux-content-class ' + classes.content"> | |||
<view :class="'wux-header-class ' + classes.hd" v-if="hasHeader"> | |||
<view :class="classes.title" v-if="title">{{ title }}</view> | |||
<block v-else> | |||
<slot name="header"></slot> | |||
</block> | |||
</view> | |||
<view :class="'wux-body-class ' + classes.bd"> | |||
<view v-if="content">{{ content }}</view> | |||
<slot></slot> | |||
</view> | |||
<view :class="'wux-footer-class ' + classes.ft" v-if="hasFooter"> | |||
<view :class="classes.extra" v-if="extra">{{ extra }}</view> | |||
<block v-else> | |||
<slot name="footer"></slot> | |||
</block> | |||
</view> | |||
<view :class="'wux-close-class ' + classes.close" v-if="closable" @tap="close"> | |||
<text :class="classes.x"></text> | |||
</view> | |||
</view> | |||
</wux-animation-group> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
'use strict'; | |||
import wuxAnimationGroup from '../animation-group/index'; | |||
import wuxBackdrop from '../backdrop/index'; | |||
var _baseComponent = _interopRequireDefault(require('../helpers/baseComponent')); | |||
var _classNames2 = _interopRequireDefault(require('../helpers/classNames')); | |||
var _styleToCssString = _interopRequireDefault(require('../helpers/styleToCssString')); | |||
var _index = require('../index'); | |||
function _interopRequireDefault(e) { | |||
return e && e.__esModule | |||
? e | |||
: { | |||
default: e | |||
}; | |||
} | |||
function _defineProperty(e, t, a) { | |||
t in e | |||
? Object.defineProperty(e, t, { | |||
value: a, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}) | |||
: (e[t] = a); | |||
return e; | |||
} | |||
(0, _baseComponent.default)({ | |||
useSafeArea: true, | |||
externalClasses: ['wux-content-class', 'wux-header-class', 'wux-body-class', 'wux-footer-class', 'wux-close-class'], | |||
properties: { | |||
prefixCls: { | |||
type: String, | |||
value: 'wux-popup' | |||
}, | |||
animationPrefixCls: { | |||
type: String, | |||
value: 'wux-animate' | |||
}, | |||
title: { | |||
type: String, | |||
value: '' | |||
}, | |||
content: { | |||
type: String, | |||
value: '' | |||
}, | |||
extra: { | |||
type: String, | |||
value: '' | |||
}, | |||
position: { | |||
type: String, | |||
value: 'center', | |||
observer: 'getTransitionName' | |||
}, | |||
wrapStyle: { | |||
type: [String, Object], | |||
value: '', | |||
observer: function (e) { | |||
this.setData({ | |||
extStyle: (0, _styleToCssString.default)(e) | |||
}); | |||
} | |||
}, | |||
closable: { | |||
type: Boolean, | |||
value: false | |||
}, | |||
mask: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
maskClosable: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
visible: { | |||
type: Boolean, | |||
value: false, | |||
observer: 'setPopupVisible' | |||
}, | |||
zIndex: { | |||
type: Number, | |||
value: 1000 | |||
}, | |||
hasHeader: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
hasFooter: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
mountOnEnter: { | |||
type: Boolean, | |||
value: true | |||
}, | |||
unmountOnExit: { | |||
type: Boolean, | |||
value: true | |||
} | |||
}, | |||
data: { | |||
transitionName: '', | |||
popupVisible: false, | |||
extStyle: '' | |||
}, | |||
computed: { | |||
classes: [ | |||
'prefixCls, position, safeAreaConfig, isIPhoneX', | |||
function (e, t, a, i) { | |||
var o; | |||
return { | |||
wrap: (0, _classNames2.default)( | |||
''.concat(e, '-position'), | |||
(_defineProperty((o = {}), ''.concat(e, '-position--').concat(t), t), _defineProperty(o, ''.concat(e, '-position--is-iphonex'), a.bottom && i), o) | |||
), | |||
content: ''.concat(e, '__content'), | |||
hd: ''.concat(e, '__hd'), | |||
title: ''.concat(e, '__title'), | |||
bd: ''.concat(e, '__bd'), | |||
ft: ''.concat(e, '__ft'), | |||
extra: ''.concat(e, '__extra'), | |||
close: ''.concat(e, '__close'), | |||
x: ''.concat(e, '__close-x') | |||
}; | |||
} | |||
] | |||
}, | |||
methods: { | |||
close: function () { | |||
this.$emit('close'); | |||
}, | |||
onMaskClick: function () { | |||
if (this.maskClosable) { | |||
this.close(); | |||
} | |||
}, | |||
onExited: function () { | |||
this.$emit('closed'); | |||
}, | |||
getTransitionName: function (e) { | |||
if (0 < arguments.length && void 0 !== e) { | |||
var t = e; | |||
} else { | |||
var t = this.position; | |||
} | |||
var a = this.animationPrefixCls; | |||
var i = ''; | |||
switch (t) { | |||
case 'top': | |||
i = ''.concat(a, '--slideInDown'); | |||
break; | |||
case 'right': | |||
i = ''.concat(a, '--slideInRight'); | |||
break; | |||
case 'bottom': | |||
i = ''.concat(a, '--slideInUp'); | |||
break; | |||
case 'left': | |||
i = ''.concat(a, '--slideInLeft'); | |||
break; | |||
default: | |||
i = ''.concat(a, '--fadeIn'); | |||
} | |||
this.setData({ | |||
transitionName: i | |||
}); | |||
}, | |||
setPopupVisible: function (e) { | |||
if (this.popupVisible !== e) { | |||
this.setData({ | |||
popupVisible: e | |||
}); | |||
this.setBackdropVisible(e); | |||
} | |||
}, | |||
setBackdropVisible: function (e) { | |||
if (this.mask && this.$wuxBackdrop) { | |||
this.$wuxBackdrop[e ? 'retain' : 'release'](); | |||
} | |||
} | |||
}, | |||
created: function () { | |||
if (this.mask) { | |||
this.$wuxBackdrop = (0, _index.$wuxBackdrop)('#wux-backdrop', this); | |||
} | |||
}, | |||
attached: function () { | |||
this.setPopupVisible(this.visible); | |||
this.getTransitionName(); | |||
} | |||
}); | |||
</script> | |||
<style> | |||
.wux-popup { | |||
position: fixed; | |||
z-index: 1000; | |||
width: 80%; | |||
max-width: 600rpx; | |||
} | |||
.wux-popup-position.wux-popup-position--center .wux-popup { | |||
top: 50%; | |||
left: 50%; | |||
transform: translate(-50%, -50%); | |||
} | |||
.wux-popup-position.wux-popup-position--center .wux-popup__content { | |||
border-radius: 8rpx; | |||
} | |||
.wux-popup-position.wux-popup-position--center .wux-popup__hd { | |||
padding: 1.3em 1.6em 0.5em; | |||
} | |||
.wux-popup-position.wux-popup-position--center .wux-popup__bd { | |||
padding: 0 1.6em 0.8em; | |||
} | |||
.wux-popup-position.wux-popup-position--center .wux-popup__ft::after { | |||
content: ' '; | |||
position: absolute; | |||
left: 0; | |||
top: 0; | |||
right: 0; | |||
height: 1px; | |||
border-top: 1px solid #d9d9d9; | |||
color: #d9d9d9; | |||
transform-origin: 0 0; | |||
transform: scaleY(0.5); | |||
} | |||
.wux-popup-position.wux-popup-position--top .wux-popup { | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
width: 100%; | |||
max-width: 100%; | |||
} | |||
.wux-popup-position.wux-popup-position--right .wux-popup { | |||
position: fixed; | |||
top: 0; | |||
right: 0; | |||
width: 80%; | |||
max-width: 100%; | |||
height: 100%; | |||
max-height: 100%; | |||
} | |||
.wux-popup-position.wux-popup-position--bottom .wux-popup { | |||
position: fixed; | |||
left: 0; | |||
bottom: 0; | |||
width: 100%; | |||
max-width: 100%; | |||
} | |||
.wux-popup-position.wux-popup-position--left .wux-popup { | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
width: 80%; | |||
max-width: 100%; | |||
height: 100%; | |||
max-height: 100%; | |||
} | |||
.wux-popup-position.wux-popup-position--is-iphonex .wux-popup__content { | |||
padding-bottom: 68rpx; | |||
} | |||
@supports (padding-bottom: constant(safe-area-inset-bottom)) { | |||
.wux-popup-position.wux-popup-position--is-iphonex .wux-popup__content { | |||
padding-bottom: constant(safe-area-inset-bottom); | |||
} | |||
} | |||
@supports (padding-bottom: env(safe-area-inset-bottom)) { | |||
.wux-popup-position.wux-popup-position--is-iphonex .wux-popup__content { | |||
padding-bottom: env(safe-area-inset-bottom); | |||
} | |||
} | |||
.wux-popup__content { | |||
position: relative; | |||
background-color: #fff; | |||
border: 0; | |||
background-clip: padding-box; | |||
height: 100%; | |||
text-align: center; | |||
overflow: hidden; | |||
} | |||
.wux-popup__title { | |||
font-weight: 400; | |||
font-size: 36rpx; | |||
color: rgba(0, 0, 0, 0.85); | |||
} | |||
.wux-popup__bd { | |||
min-height: 80rpx; | |||
font-size: 30rpx; | |||
line-height: 1.3; | |||
word-wrap: break-word; | |||
word-break: break-all; | |||
color: rgba(0, 0, 0, 0.45); | |||
} | |||
.wux-popup__ft { | |||
position: relative; | |||
line-height: 96rpx; | |||
font-size: 36rpx; | |||
display: flex; | |||
} | |||
.wux-popup__close { | |||
border: 0; | |||
padding: 6rpx; | |||
background-color: transparent; | |||
outline: 0; | |||
position: absolute; | |||
top: 12rpx; | |||
right: 12rpx; | |||
height: 42rpx; | |||
width: 42rpx; | |||
} | |||
.wux-popup__close-x { | |||
display: inline-block; | |||
width: 30rpx; | |||
height: 30rpx; | |||
background-repeat: no-repeat; | |||
background-size: cover; | |||
background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23888%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M1.414%200l28.284%2028.284-1.414%201.414L0%201.414z%22%2F%3E%3Cpath%20d%3D%22M28.284%200L0%2028.284l1.414%201.414L29.698%201.414z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E'); | |||
} | |||
</style> |
@@ -0,0 +1,583 @@ | |||
.wux-text--left { | |||
text-align: left !important; | |||
} | |||
.wux-text--right { | |||
text-align: right !important; | |||
} | |||
.wux-text--center { | |||
text-align: center !important; | |||
} | |||
.wux-text--justify { | |||
text-align: justify !important; | |||
} | |||
.wux-text--nowrap { | |||
text-align: nowrap !important; | |||
} | |||
.wux-text--lowercase { | |||
text-transform: lowercase !important; | |||
} | |||
.wux-text--uppercase { | |||
text-transform: uppercase !important; | |||
} | |||
.wux-text--capitalize { | |||
text-transform: capitalize !important; | |||
} | |||
.wux-light { | |||
color: #fff !important; | |||
} | |||
.wux-light--bg { | |||
background-color: #fff !important; | |||
} | |||
.wux-light--border { | |||
border-color: #fff !important; | |||
} | |||
.wux-stable { | |||
color: #f8f8f8 !important; | |||
} | |||
.wux-stable--bg { | |||
background-color: #f8f8f8 !important; | |||
} | |||
.wux-stable--border { | |||
border-color: #f8f8f8 !important; | |||
} | |||
.wux-positive { | |||
color: #387ef5 !important; | |||
} | |||
.wux-positive--bg { | |||
background-color: #387ef5 !important; | |||
} | |||
.wux-positive--border { | |||
border-color: #387ef5 !important; | |||
} | |||
.wux-calm { | |||
color: #11c1f3 !important; | |||
} | |||
.wux-calm--bg { | |||
background-color: #11c1f3 !important; | |||
} | |||
.wux-calm--border { | |||
border-color: #11c1f3 !important; | |||
} | |||
.wux-balanced { | |||
color: #33cd5f !important; | |||
} | |||
.wux-balanced--bg { | |||
background-color: #33cd5f !important; | |||
} | |||
.wux-balanced--border { | |||
border-color: #33cd5f !important; | |||
} | |||
.wux-energized { | |||
color: #ffc900 !important; | |||
} | |||
.wux-energized--bg { | |||
background-color: #ffc900 !important; | |||
} | |||
.wux-energized--border { | |||
border-color: #ffc900 !important; | |||
} | |||
.wux-assertive { | |||
color: #ef473a !important; | |||
} | |||
.wux-assertive--bg { | |||
background-color: #ef473a !important; | |||
} | |||
.wux-assertive--border { | |||
border-color: #ef473a !important; | |||
} | |||
.wux-royal { | |||
color: #886aea !important; | |||
} | |||
.wux-royal--bg { | |||
background-color: #886aea !important; | |||
} | |||
.wux-royal--border { | |||
border-color: #886aea !important; | |||
} | |||
.wux-dark { | |||
color: #444 !important; | |||
} | |||
.wux-dark--bg { | |||
background-color: #444 !important; | |||
} | |||
.wux-dark--border { | |||
border-color: #444 !important; | |||
} | |||
.wux-m--30, | |||
.wux-margin--30 { | |||
margin: 60rpx !important; | |||
} | |||
.wux-margin-top--30, | |||
.wux-mt--30 { | |||
margin-top: 60rpx !important; | |||
} | |||
.wux-margin-right--30, | |||
.wux-mr--30 { | |||
margin-right: 60rpx !important; | |||
} | |||
.wux-margin-bottom--30, | |||
.wux-mb--30 { | |||
margin-bottom: 60rpx !important; | |||
} | |||
.wux-margin-left--30, | |||
.wux-ml--30 { | |||
margin-left: 60rpx !important; | |||
} | |||
.wux-margin-vertical--30, | |||
.wux-mv--30 { | |||
margin: 60rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--30, | |||
.wux-mh--30 { | |||
margin: 0 60rpx !important; | |||
} | |||
.wux-p--30, | |||
.wux-padding--30 { | |||
padding: 60rpx !important; | |||
} | |||
.wux-padding-top--30, | |||
.wux-pt--30 { | |||
padding-top: 60rpx !important; | |||
} | |||
.wux-padding-right--30, | |||
.wux-pr--30 { | |||
padding-right: 60rpx !important; | |||
} | |||
.wux-padding-bottom--30, | |||
.wux-pb--30 { | |||
padding-bottom: 60rpx !important; | |||
} | |||
.wux-padding-left--30, | |||
.wux-pl--30 { | |||
padding-left: 60rpx !important; | |||
} | |||
.wux-padding-vertical--30, | |||
.wux-pv--30 { | |||
padding: 60rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--30, | |||
.wux-ph--30 { | |||
padding: 0 60rpx !important; | |||
} | |||
.wux-m--25, | |||
.wux-margin--25 { | |||
margin: 50rpx !important; | |||
} | |||
.wux-margin-top--25, | |||
.wux-mt--25 { | |||
margin-top: 50rpx !important; | |||
} | |||
.wux-margin-right--25, | |||
.wux-mr--25 { | |||
margin-right: 50rpx !important; | |||
} | |||
.wux-margin-bottom--25, | |||
.wux-mb--25 { | |||
margin-bottom: 50rpx !important; | |||
} | |||
.wux-margin-left--25, | |||
.wux-ml--25 { | |||
margin-left: 50rpx !important; | |||
} | |||
.wux-margin-vertical--25, | |||
.wux-mv--25 { | |||
margin: 50rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--25, | |||
.wux-mh--25 { | |||
margin: 0 50rpx !important; | |||
} | |||
.wux-p--25, | |||
.wux-padding--25 { | |||
padding: 50rpx !important; | |||
} | |||
.wux-padding-top--25, | |||
.wux-pt--25 { | |||
padding-top: 50rpx !important; | |||
} | |||
.wux-padding-right--25, | |||
.wux-pr--25 { | |||
padding-right: 50rpx !important; | |||
} | |||
.wux-padding-bottom--25, | |||
.wux-pb--25 { | |||
padding-bottom: 50rpx !important; | |||
} | |||
.wux-padding-left--25, | |||
.wux-pl--25 { | |||
padding-left: 50rpx !important; | |||
} | |||
.wux-padding-vertical--25, | |||
.wux-pv--25 { | |||
padding: 50rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--25, | |||
.wux-ph--25 { | |||
padding: 0 50rpx !important; | |||
} | |||
.wux-m--20, | |||
.wux-margin--20 { | |||
margin: 40rpx !important; | |||
} | |||
.wux-margin-top--20, | |||
.wux-mt--20 { | |||
margin-top: 40rpx !important; | |||
} | |||
.wux-margin-right--20, | |||
.wux-mr--20 { | |||
margin-right: 40rpx !important; | |||
} | |||
.wux-margin-bottom--20, | |||
.wux-mb--20 { | |||
margin-bottom: 40rpx !important; | |||
} | |||
.wux-margin-left--20, | |||
.wux-ml--20 { | |||
margin-left: 40rpx !important; | |||
} | |||
.wux-margin-vertical--20, | |||
.wux-mv--20 { | |||
margin: 40rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--20, | |||
.wux-mh--20 { | |||
margin: 0 40rpx !important; | |||
} | |||
.wux-p--20, | |||
.wux-padding--20 { | |||
padding: 40rpx !important; | |||
} | |||
.wux-padding-top--20, | |||
.wux-pt--20 { | |||
padding-top: 40rpx !important; | |||
} | |||
.wux-padding-right--20, | |||
.wux-pr--20 { | |||
padding-right: 40rpx !important; | |||
} | |||
.wux-padding-bottom--20, | |||
.wux-pb--20 { | |||
padding-bottom: 40rpx !important; | |||
} | |||
.wux-padding-left--20, | |||
.wux-pl--20 { | |||
padding-left: 40rpx !important; | |||
} | |||
.wux-padding-vertical--20, | |||
.wux-pv--20 { | |||
padding: 40rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--20, | |||
.wux-ph--20 { | |||
padding: 0 40rpx !important; | |||
} | |||
.wux-m--15, | |||
.wux-margin--15 { | |||
margin: 30rpx !important; | |||
} | |||
.wux-margin-top--15, | |||
.wux-mt--15 { | |||
margin-top: 30rpx !important; | |||
} | |||
.wux-margin-right--15, | |||
.wux-mr--15 { | |||
margin-right: 30rpx !important; | |||
} | |||
.wux-margin-bottom--15, | |||
.wux-mb--15 { | |||
margin-bottom: 30rpx !important; | |||
} | |||
.wux-margin-left--15, | |||
.wux-ml--15 { | |||
margin-left: 30rpx !important; | |||
} | |||
.wux-margin-vertical--15, | |||
.wux-mv--15 { | |||
margin: 30rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--15, | |||
.wux-mh--15 { | |||
margin: 0 30rpx !important; | |||
} | |||
.wux-p--15, | |||
.wux-padding--15 { | |||
padding: 30rpx !important; | |||
} | |||
.wux-padding-top--15, | |||
.wux-pt--15 { | |||
padding-top: 30rpx !important; | |||
} | |||
.wux-padding-right--15, | |||
.wux-pr--15 { | |||
padding-right: 30rpx !important; | |||
} | |||
.wux-padding-bottom--15, | |||
.wux-pb--15 { | |||
padding-bottom: 30rpx !important; | |||
} | |||
.wux-padding-left--15, | |||
.wux-pl--15 { | |||
padding-left: 30rpx !important; | |||
} | |||
.wux-padding-vertical--15, | |||
.wux-pv--15 { | |||
padding: 30rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--15, | |||
.wux-ph--15 { | |||
padding: 0 30rpx !important; | |||
} | |||
.wux-m--10, | |||
.wux-margin--10 { | |||
margin: 20rpx !important; | |||
} | |||
.wux-margin-top--10, | |||
.wux-mt--10 { | |||
margin-top: 20rpx !important; | |||
} | |||
.wux-margin-right--10, | |||
.wux-mr--10 { | |||
margin-right: 20rpx !important; | |||
} | |||
.wux-margin-bottom--10, | |||
.wux-mb--10 { | |||
margin-bottom: 20rpx !important; | |||
} | |||
.wux-margin-left--10, | |||
.wux-ml--10 { | |||
margin-left: 20rpx !important; | |||
} | |||
.wux-margin-vertical--10, | |||
.wux-mv--10 { | |||
margin: 20rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--10, | |||
.wux-mh--10 { | |||
margin: 0 20rpx !important; | |||
} | |||
.wux-p--10, | |||
.wux-padding--10 { | |||
padding: 20rpx !important; | |||
} | |||
.wux-padding-top--10, | |||
.wux-pt--10 { | |||
padding-top: 20rpx !important; | |||
} | |||
.wux-padding-right--10, | |||
.wux-pr--10 { | |||
padding-right: 20rpx !important; | |||
} | |||
.wux-padding-bottom--10, | |||
.wux-pb--10 { | |||
padding-bottom: 20rpx !important; | |||
} | |||
.wux-padding-left--10, | |||
.wux-pl--10 { | |||
padding-left: 20rpx !important; | |||
} | |||
.wux-padding-vertical--10, | |||
.wux-pv--10 { | |||
padding: 20rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--10, | |||
.wux-ph--10 { | |||
padding: 0 20rpx !important; | |||
} | |||
.wux-m--5, | |||
.wux-margin--5 { | |||
margin: 10rpx !important; | |||
} | |||
.wux-margin-top--5, | |||
.wux-mt--5 { | |||
margin-top: 10rpx !important; | |||
} | |||
.wux-margin-right--5, | |||
.wux-mr--5 { | |||
margin-right: 10rpx !important; | |||
} | |||
.wux-margin-bottom--5, | |||
.wux-mb--5 { | |||
margin-bottom: 10rpx !important; | |||
} | |||
.wux-margin-left--5, | |||
.wux-ml--5 { | |||
margin-left: 10rpx !important; | |||
} | |||
.wux-margin-vertical--5, | |||
.wux-mv--5 { | |||
margin: 10rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--5, | |||
.wux-mh--5 { | |||
margin: 0 10rpx !important; | |||
} | |||
.wux-p--5, | |||
.wux-padding--5 { | |||
padding: 10rpx !important; | |||
} | |||
.wux-padding-top--5, | |||
.wux-pt--5 { | |||
padding-top: 10rpx !important; | |||
} | |||
.wux-padding-right--5, | |||
.wux-pr--5 { | |||
padding-right: 10rpx !important; | |||
} | |||
.wux-padding-bottom--5, | |||
.wux-pb--5 { | |||
padding-bottom: 10rpx !important; | |||
} | |||
.wux-padding-left--5, | |||
.wux-pl--5 { | |||
padding-left: 10rpx !important; | |||
} | |||
.wux-padding-vertical--5, | |||
.wux-pv--5 { | |||
padding: 10rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--5, | |||
.wux-ph--5 { | |||
padding: 0 10rpx !important; | |||
} | |||
.wux-m--0, | |||
.wux-margin--0 { | |||
margin: 0rpx !important; | |||
} | |||
.wux-margin-top--0, | |||
.wux-mt--0 { | |||
margin-top: 0rpx !important; | |||
} | |||
.wux-margin-right--0, | |||
.wux-mr--0 { | |||
margin-right: 0rpx !important; | |||
} | |||
.wux-margin-bottom--0, | |||
.wux-mb--0 { | |||
margin-bottom: 0rpx !important; | |||
} | |||
.wux-margin-left--0, | |||
.wux-ml--0 { | |||
margin-left: 0rpx !important; | |||
} | |||
.wux-margin-vertical--0, | |||
.wux-mv--0 { | |||
margin: 0rpx 0 !important; | |||
} | |||
.wux-margin-horizontal--0, | |||
.wux-mh--0 { | |||
margin: 0 0rpx !important; | |||
} | |||
.wux-p--0, | |||
.wux-padding--0 { | |||
padding: 0rpx !important; | |||
} | |||
.wux-padding-top--0, | |||
.wux-pt--0 { | |||
padding-top: 0rpx !important; | |||
} | |||
.wux-padding-right--0, | |||
.wux-pr--0 { | |||
padding-right: 0rpx !important; | |||
} | |||
.wux-padding-bottom--0, | |||
.wux-pb--0 { | |||
padding-bottom: 0rpx !important; | |||
} | |||
.wux-padding-left--0, | |||
.wux-pl--0 { | |||
padding-left: 0rpx !important; | |||
} | |||
.wux-padding-vertical--0, | |||
.wux-pv--0 { | |||
padding: 0rpx 0 !important; | |||
} | |||
.wux-padding-horizontal--0, | |||
.wux-ph--0 { | |||
padding: 0 0rpx !important; | |||
} | |||
.wux-clearfix::after, | |||
.wux-clearfix::before { | |||
display: table; | |||
content: ' '; | |||
} | |||
.wux-clearfix::after { | |||
clear: both; | |||
} | |||
.wux-pull-right { | |||
float: right !important; | |||
} | |||
.wux-pull-left { | |||
float: left !important; | |||
} | |||
.wux-ellipsis { | |||
width: auto; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
white-space: nowrap; | |||
word-wrap: normal; | |||
} | |||
.wux-ellipsis--l2 { | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
display: -webkit-box; | |||
-webkit-line-clamp: 2; | |||
-webkit-box-orient: vertical; | |||
} | |||
.wux-ellipsis--l3 { | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
display: -webkit-box; | |||
-webkit-line-clamp: 3; | |||
-webkit-box-orient: vertical; | |||
} | |||
.wux-hairline, | |||
.wux-hairline--bottom, | |||
.wux-hairline--horizontal, | |||
.wux-hairline--left, | |||
.wux-hairline--right, | |||
.wux-hairline--surrounded, | |||
.wux-hairline--top, | |||
.wux-hairline--vertical { | |||
position: relative; | |||
} | |||
.wux-hairline--bottom::after, | |||
.wux-hairline--horizontal::after, | |||
.wux-hairline--left::after, | |||
.wux-hairline--right::after, | |||
.wux-hairline--surrounded::after, | |||
.wux-hairline--top::after, | |||
.wux-hairline--vertical::after, | |||
.wux-hairline::after { | |||
content: ' '; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
width: 200%; | |||
height: 200%; | |||
transform: scale(0.5); | |||
transform-origin: 0 0; | |||
pointer-events: none; | |||
box-sizing: border-box; | |||
border: 0 solid #d9d9d9; | |||
} | |||
.wux-hairline--top::after { | |||
border-top-width: 1px; | |||
} | |||
.wux-hairline--right::after { | |||
border-right-width: 1px; | |||
} | |||
.wux-hairline--bottom::after { | |||
border-bottom-width: 1px; | |||
} | |||
.wux-hairline--left::after { | |||
border-left-width: 1px; | |||
} | |||
.wux-hairline--horizontal::after { | |||
border-width: 1px 0; | |||
} | |||
.wux-hairline--vertical::after { | |||
border-width: 0 1px; | |||
} | |||
.wux-hairline--surrounded::after { | |||
border-width: 1px; | |||
} |
@@ -0,0 +1 @@ | |||
# PS:注意,cascader 存在源码级别更改,按业务要求改造过 |
@@ -0,0 +1,849 @@ | |||
function AMapWX(a) { | |||
this.key = a.key; | |||
this.requestConfig = { | |||
key: a.key, | |||
s: 'rsx', | |||
platform: 'WXJS', | |||
appname: a.key, | |||
sdkversion: '1.2.0', | |||
logversion: '2.0' | |||
}; | |||
this.MeRequestConfig = { | |||
key: a.key, | |||
serviceName: 'https://restapi.amap.com/rest/me' | |||
}; | |||
} | |||
AMapWX.prototype.getWxLocation = function (a, b) { | |||
uni.getLocation({ | |||
type: 'gcj02', | |||
success: function (c) { | |||
c = c.longitude + ',' + c.latitude; | |||
uni.setStorage({ | |||
key: 'userLocation', | |||
data: c | |||
}); | |||
b(c); | |||
}, | |||
fail: function (c) { | |||
uni.getStorage({ | |||
key: 'userLocation', | |||
success: function (d) { | |||
if (d.data) { | |||
b(d.data); | |||
} | |||
} | |||
}); | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getMEKeywordsSearch = function (a) { | |||
if (!a.options) { | |||
return a.fail({ | |||
errCode: '0', | |||
errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570' | |||
}); | |||
} | |||
var b = a.options; | |||
var c = this.MeRequestConfig; | |||
var d = { | |||
key: c.key, | |||
s: 'rsx', | |||
platform: 'WXJS', | |||
appname: a.key, | |||
sdkversion: '1.2.0', | |||
logversion: '2.0' | |||
}; | |||
if (b.layerId) { | |||
d.layerId = b.layerId; | |||
} | |||
if (b.keywords) { | |||
d.keywords = b.keywords; | |||
} | |||
if (b.city) { | |||
d.city = b.city; | |||
} | |||
if (b.filter) { | |||
d.filter = b.filter; | |||
} | |||
if (b.sortrule) { | |||
d.sortrule = b.sortrule; | |||
} | |||
if (b.pageNum) { | |||
d.pageNum = b.pageNum; | |||
} | |||
if (b.pageSize) { | |||
d.pageSize = b.pageSize; | |||
} | |||
if (b.sig) { | |||
d.sig = b.sig; | |||
} | |||
uni.request({ | |||
url: c.serviceName + '/cpoint/datasearch/local', | |||
data: d, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (e) { | |||
if ((e = e.data) && e.status && '1' === e.status && 0 === e.code) { | |||
a.success(e.data); | |||
} else { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e | |||
}); | |||
} | |||
}, | |||
fail: function (e) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getMEIdSearch = function (a) { | |||
if (!a.options) { | |||
return a.fail({ | |||
errCode: '0', | |||
errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570' | |||
}); | |||
} | |||
var b = a.options; | |||
var c = this.MeRequestConfig; | |||
var d = { | |||
key: c.key, | |||
s: 'rsx', | |||
platform: 'WXJS', | |||
appname: a.key, | |||
sdkversion: '1.2.0', | |||
logversion: '2.0' | |||
}; | |||
if (b.layerId) { | |||
d.layerId = b.layerId; | |||
} | |||
if (b.id) { | |||
d.id = b.id; | |||
} | |||
if (b.sig) { | |||
d.sig = b.sig; | |||
} | |||
uni.request({ | |||
url: c.serviceName + '/cpoint/datasearch/id', | |||
data: d, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (e) { | |||
if ((e = e.data) && e.status && '1' === e.status && 0 === e.code) { | |||
a.success(e.data); | |||
} else { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e | |||
}); | |||
} | |||
}, | |||
fail: function (e) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getMEPolygonSearch = function (a) { | |||
if (!a.options) { | |||
return a.fail({ | |||
errCode: '0', | |||
errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570' | |||
}); | |||
} | |||
var b = a.options; | |||
var c = this.MeRequestConfig; | |||
var d = { | |||
key: c.key, | |||
s: 'rsx', | |||
platform: 'WXJS', | |||
appname: a.key, | |||
sdkversion: '1.2.0', | |||
logversion: '2.0' | |||
}; | |||
if (b.layerId) { | |||
d.layerId = b.layerId; | |||
} | |||
if (b.keywords) { | |||
d.keywords = b.keywords; | |||
} | |||
if (b.polygon) { | |||
d.polygon = b.polygon; | |||
} | |||
if (b.filter) { | |||
d.filter = b.filter; | |||
} | |||
if (b.sortrule) { | |||
d.sortrule = b.sortrule; | |||
} | |||
if (b.pageNum) { | |||
d.pageNum = b.pageNum; | |||
} | |||
if (b.pageSize) { | |||
d.pageSize = b.pageSize; | |||
} | |||
if (b.sig) { | |||
d.sig = b.sig; | |||
} | |||
uni.request({ | |||
url: c.serviceName + '/cpoint/datasearch/polygon', | |||
data: d, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (e) { | |||
(e = e.data) && e.status && '1' === e.status && 0 === e.code | |||
? a.success(e.data) | |||
: a.fail({ | |||
errCode: '0', | |||
errMsg: e | |||
}); | |||
}, | |||
fail: function (e) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getMEaroundSearch = function (a) { | |||
if (!a.options) { | |||
return a.fail({ | |||
errCode: '0', | |||
errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570' | |||
}); | |||
} | |||
var b = a.options; | |||
var c = this.MeRequestConfig; | |||
var d = { | |||
key: c.key, | |||
s: 'rsx', | |||
platform: 'WXJS', | |||
appname: a.key, | |||
sdkversion: '1.2.0', | |||
logversion: '2.0' | |||
}; | |||
if (b.layerId) { | |||
d.layerId = b.layerId; | |||
} | |||
if (b.keywords) { | |||
d.keywords = b.keywords; | |||
} | |||
if (b.center) { | |||
d.center = b.center; | |||
} | |||
if (b.radius) { | |||
d.radius = b.radius; | |||
} | |||
if (b.filter) { | |||
d.filter = b.filter; | |||
} | |||
if (b.sortrule) { | |||
d.sortrule = b.sortrule; | |||
} | |||
if (b.pageNum) { | |||
d.pageNum = b.pageNum; | |||
} | |||
if (b.pageSize) { | |||
d.pageSize = b.pageSize; | |||
} | |||
if (b.sig) { | |||
d.sig = b.sig; | |||
} | |||
uni.request({ | |||
url: c.serviceName + '/cpoint/datasearch/around', | |||
data: d, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (e) { | |||
(e = e.data) && e.status && '1' === e.status && 0 === e.code | |||
? a.success(e.data) | |||
: a.fail({ | |||
errCode: '0', | |||
errMsg: e | |||
}); | |||
}, | |||
fail: function (e) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: e.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getGeo = function (a) { | |||
var b = this.requestConfig; | |||
var c = a.options; | |||
b = { | |||
key: this.key, | |||
extensions: 'all', | |||
s: b.s, | |||
platform: b.platform, | |||
appname: this.key, | |||
sdkversion: b.sdkversion, | |||
logversion: b.logversion | |||
}; | |||
if (c.address) { | |||
b.address = c.address; | |||
} | |||
if (c.city) { | |||
b.city = c.city; | |||
} | |||
if (c.batch) { | |||
b.batch = c.batch; | |||
} | |||
if (c.sig) { | |||
b.sig = c.sig; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/geocode/geo', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (d) { | |||
(d = d.data) && d.status && '1' === d.status | |||
? a.success(d) | |||
: a.fail({ | |||
errCode: '0', | |||
errMsg: d | |||
}); | |||
}, | |||
fail: function (d) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: d.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getRegeo = function (a) { | |||
function b(d) { | |||
var e = that.requestConfig; | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/geocode/regeo', | |||
data: { | |||
key: that.key, | |||
location: d, | |||
extensions: 'all', | |||
s: e.s, | |||
platform: e.platform, | |||
appname: that.key, | |||
sdkversion: e.sdkversion, | |||
logversion: e.logversion | |||
}, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (g) { | |||
if (g.data.status && '1' == g.data.status) { | |||
g = g.data.regeocode; | |||
var h = g.addressComponent; | |||
var f = []; | |||
var k = g.roads[0].name + '\u9644\u8FD1'; | |||
var m = d.split(',')[0]; | |||
var n = d.split(',')[1]; | |||
if (g.pois && g.pois[0]) { | |||
k = g.pois[0].name + '\u9644\u8FD1'; | |||
var l = g.pois[0].location; | |||
if (l) { | |||
m = parseFloat(l.split(',')[0]); | |||
n = parseFloat(l.split(',')[1]); | |||
} | |||
} | |||
if (h.provice) { | |||
f.push(h.provice); | |||
} | |||
if (h.city) { | |||
f.push(h.city); | |||
} | |||
if (h.district) { | |||
f.push(h.district); | |||
} | |||
h.streetNumber && h.streetNumber.street && h.streetNumber.number ? (f.push(h.streetNumber.street), f.push(h.streetNumber.number)) : f.push(g.roads[0].name); | |||
f = f.join(''); | |||
a.success([ | |||
{ | |||
iconPath: a.iconPath, | |||
width: a.iconWidth, | |||
height: a.iconHeight, | |||
name: f, | |||
desc: k, | |||
longitude: m, | |||
latitude: n, | |||
id: 0, | |||
regeocodeData: g | |||
} | |||
]); | |||
} else { | |||
a.fail({ | |||
errCode: g.data.infocode, | |||
errMsg: g.data.info | |||
}); | |||
} | |||
}, | |||
fail: function (g) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: g.errMsg || '' | |||
}); | |||
} | |||
}); | |||
} | |||
var that = this; | |||
a.location | |||
? b(a.location) | |||
: that.getWxLocation(a, function (d) { | |||
b(d); | |||
}); | |||
}; | |||
AMapWX.prototype.getWeather = function (a) { | |||
function b(g) { | |||
var h = 'base'; | |||
if (a.type && 'forecast' == a.type) { | |||
h = 'all'; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/weather/weatherInfo', | |||
data: { | |||
key: that.key, | |||
city: g, | |||
extensions: h, | |||
s: e.s, | |||
platform: e.platform, | |||
appname: that.key, | |||
sdkversion: e.sdkversion, | |||
logversion: e.logversion | |||
}, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (f) { | |||
if (f.data.status && '1' == f.data.status) { | |||
if (f.data.lives) { | |||
if ((f = f.data.lives) && 0 < f.length) { | |||
f = f[0]; | |||
var k = { | |||
city: { | |||
text: '\u57CE\u5E02', | |||
data: f.city | |||
}, | |||
weather: { | |||
text: '\u5929\u6C14', | |||
data: f.weather | |||
}, | |||
temperature: { | |||
text: '\u6E29\u5EA6', | |||
data: f.temperature | |||
}, | |||
winddirection: { | |||
text: '\u98CE\u5411', | |||
data: f.winddirection + '\u98CE' | |||
}, | |||
windpower: { | |||
text: '\u98CE\u529B', | |||
data: f.windpower + '\u7EA7' | |||
}, | |||
humidity: { | |||
text: '\u6E7F\u5EA6', | |||
data: f.humidity + '%' | |||
} | |||
}; | |||
k.liveData = f; | |||
a.success(k); | |||
} | |||
} else { | |||
if (f.data.forecasts && f.data.forecasts[0]) { | |||
a.success({ | |||
forecast: f.data.forecasts[0] | |||
}); | |||
} | |||
} | |||
} else { | |||
a.fail({ | |||
errCode: f.data.infocode, | |||
errMsg: f.data.info | |||
}); | |||
} | |||
}, | |||
fail: function (f) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: f.errMsg || '' | |||
}); | |||
} | |||
}); | |||
} | |||
function c(g) { | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/geocode/regeo', | |||
data: { | |||
key: that.key, | |||
location: g, | |||
extensions: 'all', | |||
s: e.s, | |||
platform: e.platform, | |||
appname: that.key, | |||
sdkversion: e.sdkversion, | |||
logversion: e.logversion | |||
}, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (h) { | |||
if (h.data.status && '1' == h.data.status) { | |||
h = h.data.regeocode; | |||
if (h.addressComponent) { | |||
var f = h.addressComponent.adcode; | |||
} else { | |||
if (h.aois && 0 < h.aois.length) { | |||
f = h.aois[0].adcode; | |||
} | |||
} | |||
b(f); | |||
} else { | |||
a.fail({ | |||
errCode: h.data.infocode, | |||
errMsg: h.data.info | |||
}); | |||
} | |||
}, | |||
fail: function (h) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: h.errMsg || '' | |||
}); | |||
} | |||
}); | |||
} | |||
var that = this; | |||
var e = that.requestConfig; | |||
a.city | |||
? b(a.city) | |||
: that.getWxLocation(a, function (g) { | |||
c(g); | |||
}); | |||
}; | |||
AMapWX.prototype.getPoiAround = function (a) { | |||
function b(e) { | |||
e = { | |||
key: that.key, | |||
location: e, | |||
s: d.s, | |||
platform: d.platform, | |||
appname: that.key, | |||
sdkversion: d.sdkversion, | |||
logversion: d.logversion | |||
}; | |||
if (a.querytypes) { | |||
e.types = a.querytypes; | |||
} | |||
if (a.querykeywords) { | |||
e.keywords = a.querykeywords; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/place/around', | |||
data: e, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (g) { | |||
if (g.data.status && '1' == g.data.status) { | |||
if ((g = g.data) && g.pois) { | |||
for (h = [], f = 0, void 0; f < g.pois.length; f++) { | |||
var h; | |||
var f; | |||
if (0 == f) { | |||
var k = a.iconPathSelected; | |||
} else { | |||
var k = a.iconPath; | |||
} | |||
h.push({ | |||
latitude: parseFloat(g.pois[f].location.split(',')[1]), | |||
longitude: parseFloat(g.pois[f].location.split(',')[0]), | |||
iconPath: k, | |||
width: 22, | |||
height: 32, | |||
id: f, | |||
name: g.pois[f].name, | |||
address: g.pois[f].address | |||
}); | |||
} | |||
a.success({ | |||
markers: h, | |||
poisData: g.pois | |||
}); | |||
} | |||
} else { | |||
a.fail({ | |||
errCode: g.data.infocode, | |||
errMsg: g.data.info | |||
}); | |||
} | |||
}, | |||
fail: function (g) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: g.errMsg || '' | |||
}); | |||
} | |||
}); | |||
} | |||
var that = this; | |||
var d = that.requestConfig; | |||
a.location | |||
? b(a.location) | |||
: that.getWxLocation(a, function (e) { | |||
b(e); | |||
}); | |||
}; | |||
AMapWX.prototype.getStaticmap = function (a) { | |||
function b(e) { | |||
c.push('location=' + e); | |||
if (a.zoom) { | |||
c.push('zoom=' + a.zoom); | |||
} | |||
if (a.size) { | |||
c.push('size=' + a.size); | |||
} | |||
if (a.scale) { | |||
c.push('scale=' + a.scale); | |||
} | |||
if (a.markers) { | |||
c.push('markers=' + a.markers); | |||
} | |||
if (a.labels) { | |||
c.push('labels=' + a.labels); | |||
} | |||
if (a.paths) { | |||
c.push('paths=' + a.paths); | |||
} | |||
if (a.traffic) { | |||
c.push('traffic=' + a.traffic); | |||
} | |||
e = 'https://restapi.amap.com/v3/staticmap?' + c.join('&'); | |||
a.success({ | |||
url: e | |||
}); | |||
} | |||
var c = []; | |||
c.push('key=' + this.key); | |||
var d = this.requestConfig; | |||
c.push('s=' + d.s); | |||
c.push('platform=' + d.platform); | |||
c.push('appname=' + d.appname); | |||
c.push('sdkversion=' + d.sdkversion); | |||
c.push('logversion=' + d.logversion); | |||
a.location | |||
? b(a.location) | |||
: this.getWxLocation(a, function (e) { | |||
b(e); | |||
}); | |||
}; | |||
AMapWX.prototype.getInputtips = function (a) { | |||
var b = Object.assign({}, this.requestConfig); | |||
if (a.location) { | |||
b.location = a.location; | |||
} | |||
if (a.keywords) { | |||
b.keywords = a.keywords; | |||
} | |||
if (a.type) { | |||
b.type = a.type; | |||
} | |||
if (a.city) { | |||
b.city = a.city; | |||
} | |||
if (a.citylimit) { | |||
b.citylimit = a.citylimit; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/assistant/inputtips', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (c) { | |||
if (c && c.data && c.data.tips) { | |||
a.success({ | |||
tips: c.data.tips | |||
}); | |||
} | |||
}, | |||
fail: function (c) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getDrivingRoute = function (a) { | |||
var b = Object.assign({}, this.requestConfig); | |||
if (a.origin) { | |||
b.origin = a.origin; | |||
} | |||
if (a.destination) { | |||
b.destination = a.destination; | |||
} | |||
if (a.strategy) { | |||
b.strategy = a.strategy; | |||
} | |||
if (a.waypoints) { | |||
b.waypoints = a.waypoints; | |||
} | |||
if (a.avoidpolygons) { | |||
b.avoidpolygons = a.avoidpolygons; | |||
} | |||
if (a.avoidroad) { | |||
b.avoidroad = a.avoidroad; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/direction/driving', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (c) { | |||
if (c && c.data && c.data.route) { | |||
a.success({ | |||
paths: c.data.route.paths, | |||
taxi_cost: c.data.route.taxi_cost || '' | |||
}); | |||
} | |||
}, | |||
fail: function (c) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getWalkingRoute = function (a) { | |||
var b = Object.assign({}, this.requestConfig); | |||
if (a.origin) { | |||
b.origin = a.origin; | |||
} | |||
if (a.destination) { | |||
b.destination = a.destination; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/direction/walking', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (c) { | |||
if (c && c.data && c.data.route) { | |||
a.success({ | |||
paths: c.data.route.paths | |||
}); | |||
} | |||
}, | |||
fail: function (c) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getTransitRoute = function (a) { | |||
var b = Object.assign({}, this.requestConfig); | |||
if (a.origin) { | |||
b.origin = a.origin; | |||
} | |||
if (a.destination) { | |||
b.destination = a.destination; | |||
} | |||
if (a.strategy) { | |||
b.strategy = a.strategy; | |||
} | |||
if (a.city) { | |||
b.city = a.city; | |||
} | |||
if (a.cityd) { | |||
b.cityd = a.cityd; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/direction/transit/integrated', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (c) { | |||
if (c && c.data && c.data.route) { | |||
c = c.data.route; | |||
a.success({ | |||
distance: c.distance || '', | |||
taxi_cost: c.taxi_cost || '', | |||
transits: c.transits | |||
}); | |||
} | |||
}, | |||
fail: function (c) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
AMapWX.prototype.getRidingRoute = function (a) { | |||
var b = Object.assign({}, this.requestConfig); | |||
if (a.origin) { | |||
b.origin = a.origin; | |||
} | |||
if (a.destination) { | |||
b.destination = a.destination; | |||
} | |||
uni.request({ | |||
url: 'https://restapi.amap.com/v3/direction/riding', | |||
data: b, | |||
method: 'GET', | |||
header: { | |||
'content-type': 'application/json' | |||
}, | |||
success: function (c) { | |||
if (c && c.data && c.data.route) { | |||
a.success({ | |||
paths: c.data.route.paths | |||
}); | |||
} | |||
}, | |||
fail: function (c) { | |||
a.fail({ | |||
errCode: '0', | |||
errMsg: c.errMsg || '' | |||
}); | |||
} | |||
}); | |||
}; | |||
export default { AMapWX }; |
@@ -0,0 +1,85 @@ | |||
# wx-promise-pro | |||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> | |||
[](#contributors-) | |||
<!-- ALL-CONTRIBUTORS-BADGE:END --> | |||
✨ 强大、优雅的微信小程序异步库 🚀 | |||
[](https://www.npmjs.com/package/wx-promise-pro) [](https://www.npmjs.com/package/wx-promise-pro) [](https://opencollective.com/wx-promise-pro) | |||
[](https://nodei.co/npm/wx-promise-pro/) | |||
## 优势 | |||
- 方便集成:一处引用,处处使用 | |||
- 把微信小程序所有异步 API promise 化并挂在到`wx.pro` 对象下 | |||
- 支持 ES2018 `finally` 特性 | |||
- 支持 TypeScript 开发 | |||
## 安装 | |||
> 你也可以直接把 `dist` 目录下的 `wx-promise-pro.js` 拷贝到项目里使用 | |||
```bash | |||
$ npm i wx-promise-pro -S | |||
# or | |||
$ yarn add wx-promise-pro | |||
``` | |||
## 初始化 | |||
```js | |||
import { promisifyAll, promisify } from 'wx-promise-pro'; | |||
// promisify all wx‘s api | |||
promisifyAll(); | |||
// promisify single api | |||
promisify(wx.getSystemInfo)().then(console.log); | |||
``` | |||
## 示例代码 | |||
```js | |||
wx.pro.showLoading({ | |||
title: '加载中', | |||
mask: true, | |||
}); | |||
wx.pro | |||
.request({ | |||
url: 'https://cnodejs.org/api/v1/topics', | |||
data: {}, | |||
method: 'GET', | |||
header: { 'content-type': 'application/json' }, | |||
}) | |||
.then((res) => { | |||
console.log(res); | |||
}) | |||
.catch((err) => { | |||
console.log(err); | |||
}) | |||
.finally(() => { | |||
wx.pro.hideLoading(); | |||
}); | |||
``` | |||
## 贡献者 ✨ | |||
感谢如下贡献者的贡献 ([emoji key](https://allcontributors.org/docs/en/emoji-key)): | |||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | |||
<!-- prettier-ignore-start --> | |||
<!-- markdownlint-disable --> | |||
<table> | |||
<tr> | |||
<td align="center"><a href="https://github.com/wss534857356"><img src="https://avatars0.githubusercontent.com/u/13204332?s=60&v=4" width="100px;" alt=""/><br /><sub><b>Shenshun Weng</b></sub></a><br /><a href="https://github.com/youngjuning/wx-promise-pro/commits?author=youngjuning" title="Code">💻</a></td> | |||
<td align="center"><a href="https://github.com/kala888"><img src="https://avatars2.githubusercontent.com/u/1215976?v=4" width="100px;" alt=""/><br /><sub><b>kala888</b></sub></a><br /><a href="https://github.com/youngjuning/wx-promise-pro/commits?author=kala888" title="Code">💻</a></td> | |||
<td align="center"><a href="https://upupming.site"><img src="https://avatars1.githubusercontent.com/u/24741764?v=4" width="100px;" alt=""/><br /><sub><b>Yiming Li</b></sub></a><br /><a href="https://github.com/youngjuning/wx-promise-pro/issues?q=author%3Aupupming" title="Bug reports">🐛</a></td> | |||
</tr> | |||
</table> | |||
<!-- markdownlint-enable --> | |||
<!-- prettier-ignore-end --> | |||
<!-- ALL-CONTRIBUTORS-LIST:END --> |
@@ -0,0 +1,39 @@ | |||
import { asyncMethods } from './methods'; | |||
// polyfill for finally | |||
if (!Promise.prototype.finally) { | |||
Promise.prototype.finally = function (callback) { | |||
const P = this.constructor; | |||
return this.then( | |||
(value) => P.resolve(callback()).then(() => value), | |||
(reason) => | |||
P.resolve(callback()).then(() => { | |||
throw reason; | |||
}) | |||
); | |||
}; | |||
} | |||
// core method | |||
export const promisify = (api) => { | |||
return (args = {}) => { | |||
return new Promise((resolve, reject) => { | |||
api({ | |||
fail: reject, | |||
success: resolve, | |||
...args | |||
}); | |||
}); | |||
}; | |||
}; | |||
export const promisifyAll = () => { | |||
uni.pro = {}; | |||
Object.keys(wx).forEach((key) => { | |||
if (asyncMethods.indexOf(key) >= 0) { | |||
uni.pro[key] = promisify(uni[key]); | |||
} else if (key !== 'createSignal') { | |||
uni.pro[key] = uni[key]; | |||
} | |||
}); | |||
}; | |||
export default promisifyAll; |
@@ -0,0 +1,2 @@ | |||
// 指定微信api支持Promise风格 | |||
export const asyncMethods = ['downloadFile', 'request', 'uploadFile', 'connectSocket']; |
@@ -0,0 +1,93 @@ | |||
import App from './App'; | |||
// 全局mixins,用于实现setData等功能,请勿删除!'; | |||
// import zpMixins from '@/uni_modules/zp-mixins/index.js'; | |||
// 2. 引入组件样式 | |||
import 'vant/lib/index.css'; | |||
import { | |||
Button, | |||
Tab, | |||
Tabs, | |||
Empty, | |||
Loading, | |||
Icon, | |||
CellGroup, | |||
Cell, | |||
NavBar, | |||
Popup, | |||
Picker, | |||
Rate, | |||
SwipeCell, | |||
Search, | |||
Uploader, | |||
NoticeBar, | |||
Checkbox, | |||
Cascader, | |||
Grid, | |||
GridItem, | |||
Dialog, | |||
Field, | |||
TimePicker, | |||
DatePicker, | |||
Form | |||
} from 'vant'; | |||
import share from '@/utils/share.js' | |||
import tootls from './utils/util.map.js' | |||
// #ifndef VUE3 | |||
import Vue from 'vue'; | |||
// Vue.prototype.$tootls = tootls | |||
// 导入并挂载全局的分享方法 | |||
Vue.config.productionTip = false; | |||
App.mpType = 'app'; | |||
const app = new Vue({ | |||
...App | |||
}); | |||
app.$mount(); | |||
// #endif | |||
// #ifdef VUE3 | |||
import { | |||
createSSRApp | |||
} from 'vue'; | |||
export function createApp() { | |||
const app = createSSRApp(App); | |||
app.config.globalProperties.$tootls = tootls; | |||
app.use(Button); | |||
app.use(Tab); | |||
app.use(Tabs); | |||
app.use(Empty); | |||
app.use(Loading); | |||
app.use(Icon); | |||
app.use(CellGroup); | |||
app.use(Cell); | |||
app.use(NavBar); | |||
app.use(Popup); | |||
app.use(Picker); | |||
app.use(Rate); | |||
app.use(SwipeCell); | |||
app.use(Search); | |||
app.use(Uploader); | |||
app.use(NoticeBar); | |||
app.use(Checkbox); | |||
app.use(Cascader); | |||
app.use(Grid); | |||
app.use(GridItem); | |||
app.use(Dialog); | |||
app.use(Field); | |||
app.use(TimePicker); | |||
app.use(DatePicker); | |||
app.use(Form); | |||
// app.mixin(zpMixins); | |||
return { | |||
app | |||
}; | |||
} | |||
// #endif |
@@ -0,0 +1,83 @@ | |||
{ | |||
"name" : "", | |||
"appid" : "", | |||
"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" : {} | |||
} | |||
}, | |||
/* 快应用特有相关 */ | |||
"quickapp" : {}, | |||
/* 小程序特有相关 */ | |||
"mp-weixin" : { | |||
"appid" : "", | |||
"setting" : { | |||
"urlCheck" : false | |||
}, | |||
"usingComponents" : true | |||
}, | |||
"mp-alipay" : { | |||
"usingComponents" : true | |||
}, | |||
"mp-baidu" : { | |||
"usingComponents" : true | |||
}, | |||
"mp-toutiao" : { | |||
"usingComponents" : true | |||
}, | |||
"uniStatistics" : { | |||
"enable" : false | |||
}, | |||
"vueVersion" : "3", | |||
"h5" : { | |||
"sdkConfigs" : { | |||
"maps" : { | |||
"amap" : { | |||
"key" : "29103dae675e5788eb011fb77ade8e3f", | |||
"securityJsCode" : "", | |||
"serviceHost" : "" | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,518 @@ | |||
module.exports = (function () { | |||
var __MODS__ = {}; | |||
var __DEFINE__ = function (modId, func, req) { | |||
var m = { | |||
exports: {}, | |||
_tempexports: {} | |||
}; | |||
__MODS__[modId] = { | |||
status: 0, | |||
func: func, | |||
req: req, | |||
m: m | |||
}; | |||
}; | |||
var __REQUIRE__ = function (modId, source) { | |||
if (!__MODS__[modId]) { | |||
return require(source); | |||
} | |||
if (!__MODS__[modId].status) { | |||
var m = __MODS__[modId].m; | |||
m._exports = m._tempexports; | |||
var desp = Object.getOwnPropertyDescriptor(m, 'exports'); | |||
if (desp && desp.configurable) { | |||
Object.defineProperty(m, 'exports', { | |||
set: function (val) { | |||
if (typeof val === 'object' && val !== m._exports) { | |||
m._exports.__proto__ = val.__proto__; | |||
Object.keys(val).forEach(function (k) { | |||
m._exports[k] = val[k]; | |||
}); | |||
} | |||
m._tempexports = val; | |||
}, | |||
get: function () { | |||
return m._tempexports; | |||
} | |||
}); | |||
} | |||
__MODS__[modId].status = 1; | |||
__MODS__[modId].func(__MODS__[modId].req, m, m.exports); | |||
} | |||
return __MODS__[modId].m.exports; | |||
}; | |||
__DEFINE__( | |||
1683361815807, | |||
function (require, module, exports) { | |||
!(function (t, e) { | |||
if ('object' == typeof exports && 'undefined' != typeof module) { | |||
module.exports = e(); | |||
} else { | |||
if ('function' == typeof define && define.amd) { | |||
define(e); | |||
} else { | |||
(t = 'undefined' != typeof globalThis ? globalThis : t || self).dayjs = e(); | |||
} | |||
} | |||
})(this, function () { | |||
var t = 1000; | |||
var e = 60000; | |||
var n = 3600000; | |||
var r = 'millisecond'; | |||
var i = 'second'; | |||
var s = 'minute'; | |||
var u = 'hour'; | |||
var a = 'day'; | |||
var o = 'week'; | |||
var f = 'month'; | |||
var h = 'quarter'; | |||
var c = 'year'; | |||
var d = 'date'; | |||
var l = 'Invalid Date'; | |||
var $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; | |||
var y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g; | |||
var M = { | |||
name: 'en', | |||
weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), | |||
months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), | |||
ordinal: function (t) { | |||
var e = ['th', 'st', 'nd', 'rd']; | |||
var n = t % 100; | |||
return '[' + t + (e[(n - 20) % 10] || e[n] || e[0]) + ']'; | |||
} | |||
}; | |||
var m = function (t, e, n) { | |||
var r = String(t); | |||
return !r || r.length >= e ? t : '' + Array(e + 1 - r.length).join(n) + t; | |||
}; | |||
var v = { | |||
s: m, | |||
z: function (t) { | |||
var e = -t.utcOffset(); | |||
var n = Math.abs(e); | |||
var r = Math.floor(n / 60); | |||
var i = n % 60; | |||
return (e <= 0 ? '+' : '-') + m(r, 2, '0') + ':' + m(i, 2, '0'); | |||
}, | |||
m: function t(e, n) { | |||
if (e.date() < n.date()) { | |||
return -t(n, e); | |||
} | |||
var r = 12 * (n.year() - e.year()) + (n.month() - e.month()); | |||
var i = e.clone().add(r, f); | |||
var s = n - i < 0; | |||
var u = e.clone().add(r + (s ? -1 : 1), f); | |||
return +(-(r + (n - i) / (s ? i - u : u - i)) || 0); | |||
}, | |||
a: function (t) { | |||
return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); | |||
}, | |||
p: function (t) { | |||
return ( | |||
{ | |||
M: f, | |||
y: c, | |||
w: o, | |||
d: a, | |||
D: d, | |||
h: u, | |||
m: s, | |||
s: i, | |||
ms: r, | |||
Q: h | |||
}[t] || | |||
String(t || '') | |||
.toLowerCase() | |||
.replace(/s$/, '') | |||
); | |||
}, | |||
u: function (t) { | |||
return void 0 === t; | |||
} | |||
}; | |||
var g = 'en'; | |||
var D = {}; | |||
D[g] = M; | |||
var p = function (t) { | |||
return t instanceof _; | |||
}; | |||
var S = function t(e, n, r) { | |||
var i; | |||
if (!e) { | |||
return g; | |||
} | |||
if ('string' == typeof e) { | |||
var s = e.toLowerCase(); | |||
if (D[s]) { | |||
i = s; | |||
} | |||
if (n) { | |||
D[s] = n; | |||
i = s; | |||
} | |||
var u = e.split('-'); | |||
if (!i && u.length > 1) { | |||
return t(u[0]); | |||
} | |||
} else { | |||
var a = e.name; | |||
D[a] = e; | |||
i = a; | |||
} | |||
if (!r && i) { | |||
g = i; | |||
} | |||
return i || (!r && g); | |||
}; | |||
var w = function (t, e) { | |||
if (p(t)) { | |||
return t.clone(); | |||
} | |||
if ('object' == typeof e) { | |||
var n = e; | |||
} else { | |||
var n = {}; | |||
} | |||
n.date = t; | |||
n.args = arguments; | |||
return new _(n); | |||
}; | |||
var O = v; | |||
O.l = S; | |||
O.i = p; | |||
O.w = function (t, e) { | |||
return w(t, { | |||
locale: e.$L, | |||
utc: e.$u, | |||
x: e.$x, | |||
$offset: e.$offset | |||
}); | |||
}; | |||
var _ = (function () { | |||
function M(t) { | |||
this.$L = S(t.locale, null, true); | |||
this.parse(t); | |||
} | |||
var m = M.prototype; | |||
m.parse = function (t) { | |||
this.$d = (function (t) { | |||
var e = t.date; | |||
var n = t.utc; | |||
if (null === e) { | |||
return new Date(NaN); | |||
} | |||
if (O.u(e)) { | |||
return new Date(); | |||
} | |||
if (e instanceof Date) { | |||
return new Date(e); | |||
} | |||
if ('string' == typeof e && !/Z$/i.test(e)) { | |||
var r = e.match($); | |||
if (r) { | |||
var i = r[2] - 1 || 0; | |||
var s = (r[7] || '0').substring(0, 3); | |||
return n | |||
? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) | |||
: new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s); | |||
} | |||
} | |||
return new Date(e); | |||
})(t); | |||
this.$x = t.x || {}; | |||
this.init(); | |||
}; | |||
m.init = function () { | |||
var t = this.$d; | |||
this.$y = t.getFullYear(); | |||
this.$M = t.getMonth(); | |||
this.$D = t.getDate(); | |||
this.$W = t.getDay(); | |||
this.$H = t.getHours(); | |||
this.$m = t.getMinutes(); | |||
this.$s = t.getSeconds(); | |||
this.$ms = t.getMilliseconds(); | |||
}; | |||
m.$utils = function () { | |||
return O; | |||
}; | |||
m.isValid = function () { | |||
return !(this.$d.toString() === l); | |||
}; | |||
m.isSame = function (t, e) { | |||
var n = w(t); | |||
return this.startOf(e) <= n && n <= this.endOf(e); | |||
}; | |||
m.isAfter = function (t, e) { | |||
return w(t) < this.startOf(e); | |||
}; | |||
m.isBefore = function (t, e) { | |||
return this.endOf(e) < w(t); | |||
}; | |||
m.$g = function (t, e, n) { | |||
return O.u(t) ? this[e] : this.set(n, t); | |||
}; | |||
m.unix = function () { | |||
return Math.floor(this.valueOf() / 1000); | |||
}; | |||
m.valueOf = function () { | |||
return this.$d.getTime(); | |||
}; | |||
m.startOf = function (t, e) { | |||
var that = this; | |||
var r = !!O.u(e) || e; | |||
var h = O.p(t); | |||
var l = function (t, e) { | |||
var i = O.w(that.$u ? Date.UTC(that.$y, e, t) : new Date(that.$y, e, t), that); | |||
return r ? i : i.endOf(a); | |||
}; | |||
var $ = function (t, e) { | |||
return O.w(that.toDate()[t].apply(that.toDate('s'), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), that); | |||
}; | |||
var y = this.$W; | |||
var M = this.$M; | |||
var m = this.$D; | |||
var v = 'set' + (this.$u ? 'UTC' : ''); | |||
switch (h) { | |||
case c: | |||
return r ? l(1, 0) : l(31, 11); | |||
case f: | |||
return r ? l(1, M) : l(0, M + 1); | |||
case o: | |||
var g = this.$locale().weekStart || 0; | |||
var D = (y < g ? y + 7 : y) - g; | |||
return l(r ? m - D : m + (6 - D), M); | |||
case a: | |||
case d: | |||
return $(v + 'Hours', 0); | |||
case u: | |||
return $(v + 'Minutes', 1); | |||
case s: | |||
return $(v + 'Seconds', 2); | |||
case i: | |||
return $(v + 'Milliseconds', 3); | |||
default: | |||
return this.clone(); | |||
} | |||
}; | |||
m.endOf = function (t) { | |||
return this.startOf(t, false); | |||
}; | |||
m.$set = function (t, e) { | |||
var n; | |||
var o = O.p(t); | |||
var h = 'set' + (this.$u ? 'UTC' : ''); | |||
var l = ((n = {}), | |||
(n[a] = h + 'Date'), | |||
(n[d] = h + 'Date'), | |||
(n[f] = h + 'Month'), | |||
(n[c] = h + 'FullYear'), | |||
(n[u] = h + 'Hours'), | |||
(n[s] = h + 'Minutes'), | |||
(n[i] = h + 'Seconds'), | |||
(n[r] = h + 'Milliseconds'), | |||
n)[o]; | |||
if (o === a) { | |||
var $ = this.$D + (e - this.$W); | |||
} else { | |||
var $ = e; | |||
} | |||
if (o === f || o === c) { | |||
var y = this.clone().set(d, 1); | |||
y.$d[l]($); | |||
y.init(); | |||
this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d; | |||
} else { | |||
if (l) { | |||
this.$d[l]($); | |||
} | |||
} | |||
this.init(); | |||
return this; | |||
}; | |||
m.set = function (t, e) { | |||
return this.clone().$set(t, e); | |||
}; | |||
m.get = function (t) { | |||
return this[O.p(t)](); | |||
}; | |||
m.add = function (r, h) { | |||
var d; | |||
var that = this; | |||
r = Number(r); | |||
var $ = O.p(h); | |||
var y = function (t) { | |||
var e = w(that); | |||
return O.w(e.date(e.date() + Math.round(t * r)), that); | |||
}; | |||
if ($ === f) { | |||
return this.set(f, this.$M + r); | |||
} | |||
if ($ === c) { | |||
return this.set(c, this.$y + r); | |||
} | |||
if ($ === a) { | |||
return y(1); | |||
} | |||
if ($ === o) { | |||
return y(7); | |||
} | |||
var M = ((d = {}), (d[s] = e), (d[u] = n), (d[i] = t), d)[$] || 1; | |||
var m = this.$d.getTime() + r * M; | |||
return O.w(m, this); | |||
}; | |||
m.subtract = function (t, e) { | |||
return this.add(-1 * t, e); | |||
}; | |||
m.format = function (t) { | |||
var that = this; | |||
var n = this.$locale(); | |||
if (!this.isValid()) { | |||
return n.invalidDate || l; | |||
} | |||
var r = t || 'YYYY-MM-DDTHH:mm:ssZ'; | |||
var i = O.z(this); | |||
var s = this.$H; | |||
var u = this.$m; | |||
var a = this.$M; | |||
var o = n.weekdays; | |||
var f = n.months; | |||
var h = function (t, n, i, s) { | |||
return (t && (t[n] || t(that, r))) || i[n].slice(0, s); | |||
}; | |||
var c = function (t) { | |||
return O.s(s % 12 || 12, t, '0'); | |||
}; | |||
var d = | |||
n.meridiem || | |||
function (t, e, n) { | |||
var r = t < 12 ? 'AM' : 'PM'; | |||
return n ? r.toLowerCase() : r; | |||
}; | |||
var $ = { | |||
YY: String(this.$y).slice(-2), | |||
YYYY: this.$y, | |||
M: a + 1, | |||
MM: O.s(a + 1, 2, '0'), | |||
MMM: h(n.monthsShort, a, f, 3), | |||
MMMM: h(f, a), | |||
D: this.$D, | |||
DD: O.s(this.$D, 2, '0'), | |||
d: String(this.$W), | |||
dd: h(n.weekdaysMin, this.$W, o, 2), | |||
ddd: h(n.weekdaysShort, this.$W, o, 3), | |||
dddd: o[this.$W], | |||
H: String(s), | |||
HH: O.s(s, 2, '0'), | |||
h: c(1), | |||
hh: c(2), | |||
a: d(s, u, true), | |||
A: d(s, u, false), | |||
m: String(u), | |||
mm: O.s(u, 2, '0'), | |||
s: String(this.$s), | |||
ss: O.s(this.$s, 2, '0'), | |||
SSS: O.s(this.$ms, 3, '0'), | |||
Z: i | |||
}; | |||
return r.replace(y, function (t, e) { | |||
return e || $[t] || i.replace(':', ''); | |||
}); | |||
}; | |||
m.utcOffset = function () { | |||
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); | |||
}; | |||
m.diff = function (r, d, l) { | |||
var $; | |||
var y = O.p(d); | |||
var M = w(r); | |||
var m = (M.utcOffset() - this.utcOffset()) * e; | |||
var v = this - M; | |||
var g = O.m(this, M); | |||
g = | |||
(($ = {}), | |||
($[c] = g / 12), | |||
($[f] = g), | |||
($[h] = g / 3), | |||
($[o] = (v - m) / 604800000), | |||
($[a] = (v - m) / 86400000), | |||
($[u] = v / n), | |||
($[s] = v / e), | |||
($[i] = v / t), | |||
$)[y] || v; | |||
return l ? g : O.a(g); | |||
}; | |||
m.daysInMonth = function () { | |||
return this.endOf(f).$D; | |||
}; | |||
m.$locale = function () { | |||
return D[this.$L]; | |||
}; | |||
m.locale = function (t, e) { | |||
if (!t) { | |||
return this.$L; | |||
} | |||
var n = this.clone(); | |||
var r = S(t, e, true); | |||
if (r) { | |||
n.$L = r; | |||
} | |||
return n; | |||
}; | |||
m.clone = function () { | |||
return O.w(this.$d, this); | |||
}; | |||
m.toDate = function () { | |||
return new Date(this.valueOf()); | |||
}; | |||
m.toJSON = function () { | |||
return this.isValid() ? this.toISOString() : null; | |||
}; | |||
m.toISOString = function () { | |||
return this.$d.toISOString(); | |||
}; | |||
m.toString = function () { | |||
return this.$d.toUTCString(); | |||
}; | |||
return M; | |||
})(); | |||
var T = _.prototype; | |||
w.prototype = T; | |||
[ | |||
['$ms', r], | |||
['$s', i], | |||
['$m', s], | |||
['$H', u], | |||
['$W', a], | |||
['$M', f], | |||
['$y', c], | |||
['$D', d] | |||
].forEach(function (t) { | |||
T[t[1]] = function (e) { | |||
return this.$g(e, t[0], t[1]); | |||
}; | |||
}); | |||
w.extend = function (t, e) { | |||
t.$i || (t(e, _, w), (t.$i = true)); | |||
return w; | |||
}; | |||
w.locale = S; | |||
w.isDayjs = p; | |||
w.unix = function (t) { | |||
return w(1000 * t); | |||
}; | |||
w.en = D[g]; | |||
w.Ls = D; | |||
w.p = {}; | |||
return w; | |||
}); | |||
}, | |||
function (modId) { | |||
var map = {}; | |||
return __REQUIRE__(map[modId], modId); | |||
} | |||
); | |||
return __REQUIRE__(1683361815807); | |||
})(); | |||
//miniprogram-npm-outsideDeps=[] | |||
//# sourceMappingURL=index.js.map |
@@ -0,0 +1,252 @@ | |||
<template> | |||
<view :class="'_root ' + (selectable ? '_select' : '')" :style="containerStyle"> | |||
<slot v-if="!nodes[0]" /> | |||
<node id="_root" :childs="nodes" :opts="[lazyLoad, loadingImg, errorImg, showImgMenu, selectable]" @add.stop.prevent="addFun($event, { tagId: '_root' })" /> | |||
</view> | |||
</template> | |||
<script> | |||
'use strict'; | |||
import node from './node/node'; | |||
function e(e, t, n) { | |||
if (t in e) { | |||
Object.defineProperty(e, t, { | |||
value: n, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}); | |||
} else { | |||
e[t] = n; | |||
} | |||
return e; | |||
} | |||
/*! | |||
* mp-html v2.4.1 | |||
* https://github.com/jin-yufeng/mp-html | |||
* | |||
* Released under the MIT license | |||
* Author: Jin Yufeng | |||
*/ | |||
var t = require('./parser'); | |||
var n = []; | |||
export default { | |||
components: { | |||
node | |||
}, | |||
data() { | |||
return { | |||
nodes: [] | |||
}; | |||
}, | |||
props: { | |||
containerStyle: String, | |||
content: { | |||
type: String, | |||
default: '' | |||
}, | |||
copyLink: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
domain: String, | |||
errorImg: String, | |||
lazyLoad: Boolean, | |||
loadingImg: String, | |||
pauseVideo: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
previewImg: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
scrollTable: Boolean, | |||
selectable: null, | |||
setTitle: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
showImgMenu: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
tagStyle: Object, | |||
useAnchor: null | |||
}, | |||
created: function () { | |||
this.plugins = []; | |||
for (var e = n.length; e--; ) { | |||
this.plugins.push(new n[e](this)); | |||
} | |||
}, | |||
destroyed: function () { | |||
this.hookFun('onDetached'); | |||
}, | |||
methods: { | |||
inFun: function (e, t, n) { | |||
if (e && t && n) { | |||
this._in = { | |||
page: e, | |||
selector: t, | |||
scrollTop: n | |||
}; | |||
} | |||
}, | |||
navigateTo: function (t, n) { | |||
var that = this; | |||
return new Promise(function (o, r) { | |||
if (!that.useAnchor) { | |||
return void r(Error('Anchor is disabled')); | |||
} | |||
var a = uni | |||
.createSelectorQuery() | |||
.in(that._in ? that._in.page : that) | |||
.select((that._in ? that._in.selector : '._root') + (t ? ''.concat('>>>', '#').concat(t) : '')) | |||
.boundingClientRect(); | |||
that._in ? a.select(that._in.selector).scrollOffset().select(that._in.selector).boundingClientRect() : a.selectViewport().scrollOffset(); | |||
a.exec(function (t) { | |||
if (!t[0]) { | |||
return void r(Error('Label not found')); | |||
} | |||
var a = t[1].scrollTop + t[0].top - (t[2] ? t[2].top : 0) + (n || parseInt(that.useAnchor) || 0); | |||
that._in | |||
? that._in.page.setData(e({}, that._in.scrollTop, a)) | |||
: uni.pageScrollTo({ | |||
scrollTop: a, | |||
duration: 300 | |||
}); | |||
o(); | |||
}); | |||
}); | |||
}, | |||
getText: function (e) { | |||
var t = ''; | |||
(function e(n) { | |||
for (var i = 0; i < n.length; i++) { | |||
var o = n[i]; | |||
if ('text' === o.type) t += o.text.replace(/&/g, '&'); | |||
else if ('br' === o.name) { | |||
t += '\n'; | |||
} else { | |||
var r = 'p' === o.name || 'div' === o.name || 'tr' === o.name || 'li' === o.name || ('h' === o.name[0] && o.name[1] > '0' && o.name[1] < '7'); | |||
if (r && t && '\n' !== t[t.length - 1]) { | |||
t += '\n'; | |||
} | |||
if (o.children) { | |||
e(o.children); | |||
} | |||
r && '\n' !== t[t.length - 1] ? (t += '\n') : ('td' !== o.name && 'th' !== o.name) || (t += '\t'); | |||
} | |||
} | |||
})(e || this.nodes); | |||
return t; | |||
}, | |||
getRect: function () { | |||
var that = this; | |||
return new Promise(function (t, n) { | |||
uni.createSelectorQuery() | |||
.in(that) | |||
.select('._root') | |||
.boundingClientRect() | |||
.exec(function (e) { | |||
return e[0] ? t(e[0]) : n(Error('Root label not found')); | |||
}); | |||
}); | |||
}, | |||
pauseMedia: function () { | |||
for (var e = (this._videos || []).length; e--; ) { | |||
this._videos[e].pause(); | |||
} | |||
}, | |||
setPlaybackRate: function (e) { | |||
this.playbackRate = e; | |||
for (var t = (this._videos || []).length; t--; ) { | |||
this._videos[t].playbackRate(e); | |||
} | |||
}, | |||
setContent: function (e, n) { | |||
var that = this; | |||
(this.imgList && n) || (this.imgList = []); | |||
this._videos = []; | |||
var o = {}; | |||
var r = new t(this).parse(e); | |||
if (n) { | |||
for (a = this.nodes.length, s = r.length, void 0; s--; ) { | |||
var a; | |||
var s; | |||
o['nodes['.concat(a + s, ']')] = r[s]; | |||
} | |||
} else { | |||
o.nodes = r; | |||
} | |||
this.setData(o, function () { | |||
that.hookFun('onLoad'); | |||
that.$emit('load'); | |||
}); | |||
if (this.lazyLoad || this.imgList._unloadimgs < this.imgList.length / 2) { | |||
var l = 0; | |||
var c = function e(t) { | |||
(t && t.height) || (t = {}); | |||
t.height === l | |||
? that.$emit('ready', { | |||
detail: t | |||
}) | |||
: ((l = t.height), | |||
setTimeout(function () { | |||
that.getRect().then(e).catch(e); | |||
}, 350)); | |||
}; | |||
this.getRect().then(c).catch(c); | |||
} else { | |||
this.imgList._unloadimgs || | |||
this.getRect() | |||
.then(function (e) { | |||
that.$emit('ready', { | |||
detail: e | |||
}); | |||
}) | |||
.catch(function () { | |||
that.$emit('ready', { | |||
detail: {} | |||
}); | |||
}); | |||
} | |||
}, | |||
hookFun: function (e) { | |||
for (var t = n.length; t--; ) { | |||
if (this.plugins[t][e]) { | |||
this.plugins[t][e](); | |||
} | |||
} | |||
}, | |||
addFun: function (e, _dataset) { | |||
/* ---处理dataset begin--- */ | |||
this.handleDataset(e, _dataset); | |||
/* ---处理dataset end--- */ | |||
e.detail.root = this; | |||
} | |||
}, | |||
watch: { | |||
content: { | |||
handler: function (e) { | |||
this.setContent(e); | |||
}, | |||
immediate: true | |||
} | |||
} | |||
}; | |||
</script> | |||
<style> | |||
._root { | |||
padding: 1px 0; | |||
overflow-x: auto; | |||
overflow-y: hidden; | |||
-webkit-overflow-scrolling: touch; | |||
} | |||
._select { | |||
-webkit-user-select: text; | |||
user-select: text; | |||
} | |||
</style> |
@@ -0,0 +1,124 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<template v-if="compName === 'el'"> | |||
<block v-if="n.name === 'img'"> | |||
<rich-text | |||
v-if="n.t" | |||
:style="'display:' + n.t" | |||
:nodes="'<img class='_img' style=''+(n.attrs.style)+'' src=''+(n.attrs.src)+''>'" | |||
:data-i="i" | |||
@tap.stop.prevent="imgTap" | |||
/> | |||
<block v-else> | |||
<image v-if="(opts[1] && !ctrl[i]) || ctrl[i] < 0" class="_img" :style="n.attrs.style" :src="ctrl[i] < 0 ? opts[2] : opts[1]" mode="widthFix" /> | |||
<image | |||
:id="n.attrs.id" | |||
:class="'_img ' + n.attrs.class" | |||
:style="(ctrl[i] === -1 ? 'display:none;' : '') + 'width:' + (ctrl[i] || 1) + 'px;height:1px;' + n.attrs.style" | |||
:src="n.attrs.src" | |||
:mode="!n.h ? 'widthFix' : !n.w ? 'heightFix' : ''" | |||
:lazy-load="opts[0]" | |||
:webp="n.webp" | |||
:show-menu-by-longpress="opts[3] && !n.attrs.ignore" | |||
:data-i="i" | |||
@load="imgLoad" | |||
@error="mediaError" | |||
@tap.stop.prevent="imgTap" | |||
@longpress="noop" | |||
/> | |||
</block> | |||
</block> | |||
<text v-else-if="n.text" :user-select="opts[4] == 'force' && isiOS" decode>{{ n.text }}</text> | |||
<text v-else-if="n.name === 'br'">\n</text> | |||
<view | |||
v-else-if="n.name === 'a'" | |||
:id="n.attrs.id" | |||
:class="(n.attrs.href ? '_a ' : '') + n.attrs.class" | |||
hover-class="_hover" | |||
:style="'display:inline;' + n.attrs.style" | |||
:data-i="i" | |||
@tap.stop.prevent="linkTap" | |||
> | |||
<node :childs="n.children" :opts="opts" style="display: inherit" /> | |||
</view> | |||
<video | |||
v-else-if="n.name === 'video'" | |||
:id="n.attrs.id" | |||
:class="n.attrs.class" | |||
:style="n.attrs.style" | |||
:autoplay="n.attrs.autoplay" | |||
:controls="n.attrs.controls" | |||
:loop="n.attrs.loop" | |||
:muted="n.attrs.muted" | |||
:object-fit="n.attrs['object-fit']" | |||
:poster="n.attrs.poster" | |||
:src="n.src[ctrl[i] || 0]" | |||
:data-i="i" | |||
@play="play" | |||
@error="mediaError" | |||
/> | |||
<audio | |||
v-else-if="n.name === 'audio'" | |||
:id="n.attrs.id" | |||
:class="n.attrs.class" | |||
:style="n.attrs.style" | |||
:author="n.attrs.author" | |||
:controls="n.attrs.controls" | |||
:loop="n.attrs.loop" | |||
:name="n.attrs.name" | |||
:poster="n.attrs.poster" | |||
:src="n.src[ctrl[i] || 0]" | |||
:data-i="i" | |||
@play="play" | |||
@error="mediaError" | |||
/> | |||
<rich-text v-else :id="n.attrs.id" :style="n.f" :user-select="opts[4]" :nodes="[n]" /> | |||
</template> | |||
</view> | |||
</template> | |||
<script> | |||
import node from './node'; | |||
export default { | |||
components: { | |||
node | |||
}, | |||
props: ['data', 'compName'], | |||
computed: { | |||
n() { | |||
return this.data.n; | |||
}, | |||
i() { | |||
return this.data.i; | |||
}, | |||
opts() { | |||
return this.data.opts; | |||
}, | |||
ctrl() { | |||
return this.data.ctrl; | |||
}, | |||
isiOS() { | |||
return this.data.isiOS; | |||
}, | |||
imgTap() { | |||
return this.data.imgTap; | |||
}, | |||
imgLoad() { | |||
return this.data.imgLoad; | |||
}, | |||
mediaError() { | |||
return this.data.mediaError; | |||
}, | |||
noop() { | |||
return this.data.noop; | |||
}, | |||
linkTap() { | |||
return this.data.linkTap; | |||
}, | |||
play() { | |||
return this.data.play; | |||
} | |||
} | |||
}; | |||
</script> | |||
<style></style> |
@@ -0,0 +1,479 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<block v-for="(n1, i1) in childs" :key="i1"> | |||
<El compName="el" :data="{ n: n1, i: '' + i1, opts: opts, ctrl: ctrl }" v-if="!n1.c && (!n1.children || n1.name === 'a' || !isInline(n1.name, n1.attrs.style))"></El> | |||
<view v-else :id="n1.attrs.id" :class="'_' + n1.name + ' ' + n1.attrs.class" :style="n1.attrs.style"> | |||
<block v-for="(n2, i2) in n1.children" :key="i2"> | |||
<El | |||
compName="el" | |||
:data="{ n: n2, i: i1 + '_' + i2, opts: opts, ctrl: ctrl }" | |||
v-if="!n2.c && (!n2.children || n2.name === 'a' || !isInline(n2.name, n2.attrs.style))" | |||
></El> | |||
<view v-else :id="n2.attrs.id" :class="'_' + n2.name + ' ' + n2.attrs.class" :style="n2.attrs.style"> | |||
<block v-for="(n3, i3) in n2.children" :key="i3"> | |||
<El | |||
compName="el" | |||
:data="{ n: n3, i: i1 + '_' + i2 + '_' + i3, opts: opts, ctrl: ctrl }" | |||
v-if="!n3.c && (!n3.children || n3.name === 'a' || !isInline(n3.name, n3.attrs.style))" | |||
></El> | |||
<view v-else :id="n3.attrs.id" :class="'_' + n3.name + ' ' + n3.attrs.class" :style="n3.attrs.style"> | |||
<block v-for="(n4, i4) in n3.children" :key="i4"> | |||
<El | |||
compName="el" | |||
:data="{ n: n4, i: i1 + '_' + i2 + '_' + i3 + '_' + i4, opts: opts, ctrl: ctrl }" | |||
v-if="!n4.c && (!n4.children || n4.name === 'a' || !isInline(n4.name, n4.attrs.style))" | |||
></El> | |||
<view v-else :id="n4.attrs.id" :class="'_' + n4.name + ' ' + n4.attrs.class" :style="n4.attrs.style"> | |||
<block v-for="(n5, i5) in n4.children" :key="i5"> | |||
<El | |||
compName="el" | |||
:data="{ n: n5, i: i1 + '_' + i2 + '_' + i3 + '_' + i4 + '_' + i5, opts: opts, ctrl: ctrl }" | |||
v-if="!n5.c && (!n5.children || n5.name === 'a' || !isInline(n5.name, n5.attrs.style))" | |||
></El> | |||
<node | |||
v-else | |||
:id="n5.attrs.id" | |||
:class="'_' + n5.name + ' ' + n5.attrs.class" | |||
:style="n5.attrs.style" | |||
:childs="n5.children" | |||
:opts="opts" | |||
/> | |||
</block> | |||
</view> | |||
</block> | |||
</view> | |||
</block> | |||
</view> | |||
</block> | |||
</view> | |||
</block> | |||
</view> | |||
</template> | |||
<script module="isInline" lang="wxs"> | |||
var e={abbr:!0,b:!0,big:!0,code:!0,del:!0,em:!0,i:!0,ins:!0,label:!0,q:!0,small:!0,span:!0,strong:!0,sub:!0,sup:!0};module.exports=function(n,i){return e[n]||-1!==(i||"").indexOf("inline")}; | |||
</script> | |||
<script> | |||
'use strict'; | |||
import node from './node'; | |||
import El from './node-el.vue'; | |||
function t(t, e, i) { | |||
if (e in t) { | |||
Object.defineProperty(t, e, { | |||
value: i, | |||
enumerable: true, | |||
configurable: true, | |||
writable: true | |||
}); | |||
} else { | |||
t[e] = i; | |||
} | |||
return t; | |||
} | |||
export default { | |||
components: { | |||
node, | |||
El | |||
}, | |||
data() { | |||
return { | |||
ctrl: {}, | |||
isiOS: uni.getSystemInfoSync().system.includes('iOS'), | |||
i1: '', | |||
n1: { | |||
c: '', | |||
children: '', | |||
name: '', | |||
attrs: { | |||
id: '', | |||
class: '', | |||
style: '' | |||
} | |||
}, | |||
i2: '', | |||
n2: { | |||
c: '', | |||
children: '', | |||
name: '', | |||
attrs: { | |||
id: '', | |||
class: '', | |||
style: '' | |||
} | |||
}, | |||
i3: '', | |||
n3: { | |||
c: '', | |||
children: '', | |||
name: '', | |||
attrs: { | |||
id: '', | |||
class: '', | |||
style: '' | |||
} | |||
}, | |||
i4: '', | |||
n4: { | |||
c: '', | |||
children: '', | |||
name: '', | |||
attrs: { | |||
id: '', | |||
class: '', | |||
style: '' | |||
} | |||
}, | |||
i5: '', | |||
n5: { | |||
c: '', | |||
children: '', | |||
name: '', | |||
attrs: { | |||
id: '', | |||
class: '', | |||
style: '' | |||
} | |||
} | |||
}; | |||
}, | |||
props: { | |||
childs: Array, | |||
opts: Array | |||
}, | |||
options: { | |||
addGlobalClass: true | |||
}, | |||
mounted() { | |||
// 处理小程序 attached 生命周期 | |||
this.attached(); | |||
}, | |||
methods: { | |||
attached: function () { | |||
this.$emit( | |||
'add', | |||
{ | |||
detail: this | |||
}, | |||
{ | |||
bubbles: true, | |||
composed: true | |||
} | |||
); | |||
}, | |||
noop: function () {}, | |||
getNode: function (t) { | |||
try { | |||
for (e = t.split('_'), i = this.childs[e[0]], r = 1, void 0; r < e.length; r++) { | |||
var e; | |||
var i; | |||
var r; | |||
i = i.children[e[r]]; | |||
} | |||
return i; | |||
} catch (t) { | |||
console.log('CatchClause', t); | |||
console.log('CatchClause', t); | |||
return { | |||
text: '', | |||
attrs: {}, | |||
children: [] | |||
}; | |||
} | |||
}, | |||
play: function (t) { | |||
this.root.$emit('play'); | |||
if (this.root.data.pauseVideo) { | |||
for (e = false, i = t.target.id, r = this.root._videos.length, void 0; r--; ) { | |||
var e; | |||
var i; | |||
var r; | |||
this.root._videos[r].id === i ? (e = true) : this.root._videos[r].pause(); | |||
} | |||
if (!e) { | |||
var o = uni.createVideoContext(i, this); | |||
o.id = i; | |||
if (this.root.playbackRate) { | |||
o.playbackRate(this.root.playbackRate); | |||
} | |||
this.root._videos.push(o); | |||
} | |||
} | |||
}, | |||
imgTap: function (t) { | |||
var e = this.getNode(t.target.dataset.i); | |||
if (e.a) { | |||
return this.linkTap(e.a); | |||
} | |||
if ( | |||
!e.attrs.ignore && | |||
(this.root.$emit('imgtap', { | |||
detail: e.attrs | |||
}), | |||
this.root.data.previewImg) | |||
) { | |||
var i = this.root.imgList[e.i]; | |||
uni.previewImage({ | |||
showmenu: this.root.data.showImgMenu, | |||
current: i, | |||
urls: this.root.imgList | |||
}); | |||
} | |||
}, | |||
imgLoad: function (e) { | |||
var i; | |||
var r = e.target.dataset.i; | |||
var o = this.getNode(r); | |||
o.w ? ((this.opts[1] && !this.ctrl[r]) || -1 === this.ctrl[r]) && (i = 1) : (i = e.detail.width); | |||
if (i) { | |||
this.setData(t({}, 'ctrl.' + r, i)); | |||
} | |||
this.checkReady(); | |||
}, | |||
checkReady: function () { | |||
var that = this; | |||
this.root.data.lazyLoad || | |||
((this.root.imgList._unloadimgs -= 1), | |||
this.root.imgList._unloadimgs || | |||
setTimeout(function () { | |||
that.root | |||
.getRect() | |||
.then(function (e) { | |||
that.root.$emit('ready', { | |||
detail: e | |||
}); | |||
}) | |||
.catch(function () { | |||
that.root.$emit('ready', { | |||
detail: {} | |||
}); | |||
}); | |||
}, 350)); | |||
}, | |||
linkTap: function (t) { | |||
if (t.currentTarget) { | |||
var e = this.getNode(t.currentTarget.dataset.i); | |||
} else { | |||
var e = {}; | |||
} | |||
var i = e.attrs || t; | |||
var r = i.href; | |||
this.root.$emit('linktap', { | |||
detail: Object.assign( | |||
{ | |||
innerText: this.root.getText(e.children || []) | |||
}, | |||
i | |||
) | |||
}); | |||
if (r) { | |||
'#' === r[0] | |||
? this.root.navigateTo(r.substring(1)).catch(function () {}) | |||
: r.split('?')[0].includes('://') | |||
? this.root.data.copyLink && | |||
uni.setClipboardData({ | |||
data: r, | |||
success: function () { | |||
return uni.showToast({ | |||
title: '链接已复制' | |||
}); | |||
} | |||
}) | |||
: uni.navigateTo({ | |||
url: r, | |||
fail: function () { | |||
uni.switchTab({ | |||
url: r, | |||
fail: function () {} | |||
}); | |||
} | |||
}); | |||
} | |||
}, | |||
mediaError: function (e) { | |||
var i = e.target.dataset.i; | |||
var r = this.getNode(i); | |||
if ('video' === r.name || 'audio' === r.name) { | |||
var o = (this.ctrl[i] || 0) + 1; | |||
if (o > r.src.length) { | |||
o = 0; | |||
} | |||
if (o < r.src.length) { | |||
return this.setData(t({}, 'ctrl.' + i, o)); | |||
} | |||
} else { | |||
if ('img' === r.name) { | |||
if (this.opts[2]) { | |||
this.setData(t({}, 'ctrl.' + i, -1)); | |||
} | |||
this.checkReady(); | |||
} | |||
} | |||
if (this.root) { | |||
this.root.$emit('error', { | |||
detail: { | |||
source: r.name, | |||
attrs: r.attrs, | |||
errMsg: e.detail.errMsg | |||
} | |||
}); | |||
} | |||
} | |||
}, | |||
created: function () {} | |||
}; | |||
</script> | |||
<style> | |||
._a { | |||
padding: 1.5px 0 1.5px 0; | |||
color: #366092; | |||
word-break: break-all; | |||
} | |||
._hover { | |||
text-decoration: underline; | |||
opacity: 0.7; | |||
} | |||
._img { | |||
max-width: 100%; | |||
-webkit-touch-callout: none; | |||
} | |||
._b, | |||
._strong { | |||
font-weight: 700; | |||
} | |||
._code { | |||
font-family: monospace; | |||
} | |||
._del { | |||
text-decoration: line-through; | |||
} | |||
._em, | |||
._i { | |||
font-style: italic; | |||
} | |||
._h1 { | |||
font-size: 2em; | |||
} | |||
._h2 { | |||
font-size: 1.5em; | |||
} | |||
._h3 { | |||
font-size: 1.17em; | |||
} | |||
._h5 { | |||
font-size: 0.83em; | |||
} | |||
._h6 { | |||
font-size: 0.67em; | |||
} | |||
._h1, | |||
._h2, | |||
._h3, | |||
._h4, | |||
._h5, | |||
._h6 { | |||
display: block; | |||
font-weight: 700; | |||
} | |||
._ins { | |||
text-decoration: underline; | |||
} | |||
._li { | |||
display: list-item; | |||
} | |||
._ol { | |||
list-style-type: decimal; | |||
} | |||
._ol, | |||
._ul { | |||
display: block; | |||
padding-left: 40px; | |||
margin: 1em 0; | |||
} | |||
._q::before { | |||
content: '"'; | |||
} | |||
._q::after { | |||
content: '"'; | |||
} | |||
._sub { | |||
font-size: smaller; | |||
vertical-align: sub; | |||
} | |||
._sup { | |||
font-size: smaller; | |||
vertical-align: super; | |||
} | |||
._tbody, | |||
._tfoot, | |||
._thead { | |||
display: table-row-group; | |||
} | |||
._tr { | |||
display: table-row; | |||
} | |||
._td, | |||
._th { | |||
display: table-cell; | |||
vertical-align: middle; | |||
} | |||
._th { | |||
font-weight: 700; | |||
text-align: center; | |||
} | |||
._ul { | |||
list-style-type: disc; | |||
} | |||
._ul ._ul { | |||
margin: 0; | |||
list-style-type: circle; | |||
} | |||
._ul ._ul ._ul { | |||
list-style-type: square; | |||
} | |||
._abbr, | |||
._b, | |||
._code, | |||
._del, | |||
._em, | |||
._i, | |||
._ins, | |||
._label, | |||
._q, | |||
._span, | |||
._strong, | |||
._sub, | |||
._sup { | |||
display: inline; | |||
} | |||
._blockquote, | |||
._div, | |||
._p { | |||
display: block; | |||
} | |||
</style> |
@@ -0,0 +1,410 @@ | |||
"use strict"; | |||
function t(t) { | |||
for (var i = Object.create(null), e = t.split(","), s = e.length; s--;) i[e[s]] = !0; | |||
return i; | |||
} | |||
function i(t, i) { | |||
for (var e = t.indexOf("&"); -1 !== e;) { | |||
var s = t.indexOf(";", e + 3), | |||
a = void 0; | |||
if (-1 === s) break; | |||
"#" === t[e + 1] ? (a = parseInt(("x" === t[e + 2] ? "0" : "") + t.substring(e + 2, s)), isNaN(a) || (t = t.substr(0, e) + String.fromCharCode(a) + t.substr(s + 1))) : (a = t.substring(e + 1, s), (n.entities[a] || "amp" === a && i) && (t = t.substr(0, e) + (n.entities[a] || "&") + t.substr(s + 1))), e = t.indexOf("&", e + 1); | |||
} | |||
return t; | |||
} | |||
function e(t) { | |||
for (var i = t.length - 1, e = i; e >= -1; e--) (-1 === e || t[e].c || !t[e].name || "div" !== t[e].name && "p" !== t[e].name && "h" !== t[e].name[0] || (t[e].attrs.style || "").includes("inline")) && (i - e >= 5 && t.splice(e + 1, i - e, { | |||
name: "div", | |||
attrs: {}, | |||
children: t.slice(e + 1, i + 1) | |||
}), i = e - 1); | |||
} | |||
function s(t) { | |||
this.options = t.data || {}, this.tagStyle = Object.assign({}, n.tagStyle, this.options.tagStyle), this.imgList = t.imgList || [], this.imgList._unloadimgs = 0, this.plugins = t.plugins || [], this.attrs = Object.create(null), this.stack = [], this.nodes = [], this.pre = (this.options.containerStyle || "").includes("white-space") && this.options.containerStyle.includes("pre") ? 2 : 0; | |||
} | |||
function a(t) { | |||
this.handler = t; | |||
} | |||
var n = { | |||
trustTags: t("a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,ruby,rt,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video"), | |||
blockTags: t("address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section"), | |||
ignoreTags: t("area,base,canvas,embed,frame,head,iframe,input,link,map,meta,param,rp,script,source,style,textarea,title,track,wbr"), | |||
voidTags: t("area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr"), | |||
entities: { | |||
lt: "<", | |||
gt: ">", | |||
quot: '"', | |||
apos: "'", | |||
ensp: " ", | |||
emsp: " ", | |||
nbsp: " ", | |||
semi: ";", | |||
ndash: "–", | |||
mdash: "—", | |||
middot: "·", | |||
lsquo: "‘", | |||
rsquo: "’", | |||
ldquo: "“", | |||
rdquo: "”", | |||
bull: "•", | |||
hellip: "…", | |||
larr: "←", | |||
uarr: "↑", | |||
rarr: "→", | |||
darr: "↓" | |||
}, | |||
tagStyle: { | |||
address: "font-style:italic", | |||
big: "display:inline;font-size:1.2em", | |||
caption: "display:table-caption;text-align:center", | |||
center: "text-align:center", | |||
cite: "font-style:italic", | |||
dd: "margin-left:40px", | |||
mark: "background-color:yellow", | |||
pre: "font-family:monospace;white-space:pre", | |||
s: "text-decoration:line-through", | |||
small: "display:inline;font-size:0.8em", | |||
strike: "text-decoration:line-through", | |||
u: "text-decoration:underline" | |||
}, | |||
svgDict: { | |||
animatetransform: "animateTransform", | |||
lineargradient: "linearGradient", | |||
viewbox: "viewBox", | |||
attributename: "attributeName", | |||
repeatcount: "repeatCount", | |||
repeatdur: "repeatDur" | |||
} | |||
}, | |||
r = {}, | |||
o = uni.getSystemInfoSync(), | |||
h = o.windowWidth, | |||
l = o.system, | |||
c = t(" ,\r,\n,\t,\f"), | |||
d = 0; | |||
s.prototype.parse = function (t) { | |||
for (var i = this.plugins.length; i--;) this.plugins[i].onUpdate && (t = this.plugins[i].onUpdate(t, n) || t); | |||
for (new a(this).parse(t); this.stack.length;) this.popNode(); | |||
return this.nodes.length > 50 && e(this.nodes), this.nodes; | |||
}, s.prototype.expose = function () { | |||
for (var t = this.stack.length; t--;) { | |||
var i = this.stack[t]; | |||
if (i.c || "a" === i.name || "video" === i.name || "audio" === i.name) return; | |||
i.c = 1; | |||
} | |||
}, s.prototype.hook = function (t) { | |||
for (var i = this.plugins.length; i--;) if (this.plugins[i].onParse && !1 === this.plugins[i].onParse(t, this)) return !1; | |||
return !0; | |||
}, s.prototype.getUrl = function (t) { | |||
var i = this.options.domain; | |||
return "/" === t[0] ? "/" === t[1] ? t = (i ? i.split("://")[0] : "http") + ":" + t : i && (t = i + t) : !i || t.includes("data:") || t.includes("://") || (t = i + "/" + t), t; | |||
}, s.prototype.parseStyle = function (t) { | |||
var i = t.attrs, | |||
e = (this.tagStyle[t.name] || "").split(";").concat((i.style || "").split(";")), | |||
s = {}, | |||
a = ""; | |||
i.id && !this.xml && (this.options.useAnchor ? this.expose() : "img" !== t.name && "a" !== t.name && "video" !== t.name && "audio" !== t.name && (i.id = void 0)), i.width && (s.width = parseFloat(i.width) + (i.width.includes("%") ? "%" : "px"), i.width = void 0), i.height && (s.height = parseFloat(i.height) + (i.height.includes("%") ? "%" : "px"), i.height = void 0); | |||
for (var n = 0, r = e.length; n < r; n++) { | |||
var o = e[n].split(":"); | |||
if (!(o.length < 2)) { | |||
var l = o.shift().trim().toLowerCase(), | |||
d = o.join(":").trim(); | |||
if ("-" === d[0] && d.lastIndexOf("-") > 0 || d.includes("safe")) a += ";".concat(l, ":").concat(d);else if (!s[l] || d.includes("import") || !s[l].includes("import")) { | |||
if (d.includes("url")) { | |||
var p = d.indexOf("(") + 1; | |||
if (p) { | |||
for (; '"' === d[p] || "'" === d[p] || c[d[p]];) p++; | |||
d = d.substr(0, p) + this.getUrl(d.substr(p)); | |||
} | |||
} else d.includes("rpx") && (d = d.replace(/[0-9.]+\s*rpx/g, function (t) { | |||
return parseFloat(t) * h / 750 + "px"; | |||
})); | |||
s[l] = d; | |||
} | |||
} | |||
} | |||
return t.attrs.style = a, s; | |||
}, s.prototype.onTagName = function (t) { | |||
this.tagName = this.xml ? t : t.toLowerCase(), "svg" === this.tagName && (this.xml = (this.xml || 0) + 1); | |||
}, s.prototype.onAttrName = function (t) { | |||
t = this.xml ? t : t.toLowerCase(), "data-" === t.substr(0, 5) ? "data-src" !== t || this.attrs.src ? "img" === this.tagName || "a" === this.tagName ? this.attrName = t : this.attrName = void 0 : this.attrName = "src" : (this.attrName = t, this.attrs[t] = "T"); | |||
}, s.prototype.onAttrVal = function (t) { | |||
var e = this.attrName || ""; | |||
"style" === e || "href" === e ? this.attrs[e] = i(t, !0) : e.includes("src") ? this.attrs[e] = this.getUrl(i(t, !0)) : e && (this.attrs[e] = t); | |||
}, s.prototype.onOpenTag = function (t) { | |||
var i = Object.create(null); | |||
i.name = this.tagName, i.attrs = this.attrs, this.attrs = Object.create(null); | |||
var e = i.attrs, | |||
s = this.stack[this.stack.length - 1], | |||
a = s ? s.children : this.nodes, | |||
o = this.xml ? t : n.voidTags[i.name]; | |||
if (r[i.name] && (e.class = r[i.name] + (e.class ? " " + e.class : "")), "embed" === i.name) { | |||
var l = e.src || ""; | |||
l.includes(".mp4") || l.includes(".3gp") || l.includes(".m3u8") || (e.type || "").includes("video") ? i.name = "video" : (l.includes(".mp3") || l.includes(".wav") || l.includes(".aac") || l.includes(".m4a") || (e.type || "").includes("audio")) && (i.name = "audio"), e.autostart && (e.autoplay = "T"), e.controls = "T"; | |||
} | |||
if ("video" !== i.name && "audio" !== i.name || ("video" !== i.name || e.id || (e.id = "v" + d++), e.controls || e.autoplay || (e.controls = "T"), i.src = [], e.src && (i.src.push(e.src), e.src = void 0), this.expose()), o) { | |||
if (!this.hook(i) || n.ignoreTags[i.name]) return void ("base" !== i.name || this.options.domain ? "source" === i.name && s && ("video" === s.name || "audio" === s.name) && e.src && s.src.push(e.src) : this.options.domain = e.href); | |||
var c = this.parseStyle(i); | |||
if ("img" === i.name) { | |||
if (e.src && (e.src.includes("webp") && (i.webp = "T"), e.src.includes("data:") && !e["original-src"] && (e.ignore = "T"), !e.ignore || i.webp || e.src.includes("cloud://"))) { | |||
for (var p = this.stack.length; p--;) { | |||
var u = this.stack[p]; | |||
"table" !== u.name || i.webp || e.src.includes("cloud://") || (!c.display || c.display.includes("inline") ? i.t = "inline-block" : i.t = c.display, c.display = void 0); | |||
var g = u.attrs.style || ""; | |||
if (!g.includes("flex:") || g.includes("flex:0") || g.includes("flex: 0") || c.width && !(parseInt(c.width) > 100)) { | |||
if (g.includes("flex") && "100%" === c.width) for (var f = p + 1; f < this.stack.length; f++) { | |||
var m = this.stack[f].attrs.style || ""; | |||
if (!m.includes(";width") && !m.includes(" width") && 0 !== m.indexOf("width")) { | |||
c.width = ""; | |||
break; | |||
} | |||
} else g.includes("inline-block") && (c.width && "%" === c.width[c.width.length - 1] ? (u.attrs.style += ";max-width:" + c.width, c.width = "") : u.attrs.style += ";max-width:100%"); | |||
} else { | |||
c.width = "100% !important", c.height = ""; | |||
for (var v = p + 1; v < this.stack.length; v++) this.stack[v].attrs.style = (this.stack[v].attrs.style || "").replace("inline-", ""); | |||
} | |||
"a" === u.name ? i.a = u.attrs : u.c = 1; | |||
} | |||
i.i = this.imgList.length; | |||
var y = e["original-src"] || e.src; | |||
if (this.imgList.includes(y)) { | |||
var x = y.indexOf("://"); | |||
if (-1 !== x) { | |||
x += 3; | |||
for (var b = y.substr(0, x); x < y.length && "/" !== y[x]; x++) b += Math.random() > .5 ? y[x].toUpperCase() : y[x]; | |||
b += y.substr(x), y = b; | |||
} | |||
} | |||
this.imgList.push(y), i.t || (this.imgList._unloadimgs += 1); | |||
} | |||
"inline" === c.display && (c.display = ""), e.ignore && (c["max-width"] = c["max-width"] || "100%", e.style += ";-webkit-touch-callout:none"), parseInt(c.width) > h && (c.height = void 0), isNaN(parseInt(c.width)) || (i.w = "T"), !isNaN(parseInt(c.height)) && (!c.height.includes("%") || s && (s.attrs.style || "").includes("height")) && (i.h = "T"); | |||
} else if ("svg" === i.name) return a.push(i), this.stack.push(i), void this.popNode(); | |||
for (var w in c) c[w] && (e.style += ";".concat(w, ":").concat(c[w].replace(" !important", ""))); | |||
e.style = e.style.substr(1) || void 0; | |||
} else ("pre" === i.name || (e.style || "").includes("white-space") && e.style.includes("pre")) && 2 !== this.pre && (this.pre = i.pre = 1), i.children = [], this.stack.push(i); | |||
a.push(i); | |||
}, s.prototype.onCloseTag = function (t) { | |||
t = this.xml ? t : t.toLowerCase(); | |||
var i; | |||
for (i = this.stack.length; i-- && this.stack[i].name !== t;); | |||
if (-1 !== i) for (; this.stack.length > i;) this.popNode();else if ("p" === t || "br" === t) { | |||
var e = this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes; | |||
e.push({ | |||
name: t, | |||
attrs: { | |||
class: r[t], | |||
style: this.tagStyle[t] | |||
} | |||
}); | |||
} | |||
}, s.prototype.popNode = function () { | |||
var t = this.stack.pop(), | |||
i = t.attrs, | |||
s = t.children, | |||
a = this.stack[this.stack.length - 1], | |||
r = a ? a.children : this.nodes; | |||
if (!this.hook(t) || n.ignoreTags[t.name]) return "title" === t.name && s.length && "text" === s[0].type && this.options.setTitle && uni.setNavigationBarTitle({ | |||
title: s[0].text | |||
}), void r.pop(); | |||
if (t.pre && 2 !== this.pre) { | |||
this.pre = t.pre = void 0; | |||
for (var o = this.stack.length; o--;) this.stack[o].pre && (this.pre = 1); | |||
} | |||
if ("svg" === t.name) { | |||
if (this.xml > 1) return void this.xml--; | |||
var l = "", | |||
c = i.style; | |||
return i.style = "", i.xmlns = "http://www.w3.org/2000/svg", function t(i) { | |||
if ("text" === i.type) return void (l += i.text); | |||
var e = n.svgDict[i.name] || i.name; | |||
l += "<" + e; | |||
for (var s in i.attrs) { | |||
var a = i.attrs[s]; | |||
a && (l += " ".concat(n.svgDict[s] || s, '="').concat(a, '"')); | |||
} | |||
if (i.children) { | |||
l += ">"; | |||
for (var r = 0; r < i.children.length; r++) t(i.children[r]); | |||
l += "</" + e + ">"; | |||
} else l += "/>"; | |||
}(t), t.name = "img", t.attrs = { | |||
src: "data:image/svg+xml;utf8," + l.replace(/#/g, "%23"), | |||
style: c, | |||
ignore: "T" | |||
}, t.children = void 0, void (this.xml = !1); | |||
} | |||
var d = {}; | |||
if (i.align && ("table" === t.name ? "center" === i.align ? d["margin-inline-start"] = d["margin-inline-end"] = "auto" : d.float = i.align : d["text-align"] = i.align, i.align = void 0), i.dir && (d.direction = i.dir, i.dir = void 0), "font" === t.name && (i.color && (d.color = i.color, i.color = void 0), i.face && (d["font-family"] = i.face, i.face = void 0), i.size)) { | |||
var p = parseInt(i.size); | |||
isNaN(p) || (p < 1 ? p = 1 : p > 7 && (p = 7), d["font-size"] = ["x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"][p - 1]), i.size = void 0; | |||
} | |||
if ((i.class || "").includes("align-center") && (d["text-align"] = "center"), Object.assign(d, this.parseStyle(t)), "table" !== t.name && parseInt(d.width) > h && (d["max-width"] = "100%", d["box-sizing"] = "border-box"), n.blockTags[t.name]) t.name = "div";else if (n.trustTags[t.name] || this.xml) { | |||
if ("a" === t.name || "ad" === t.name) this.expose();else if ("video" === t.name || "audio" === t.name) (d.height || "").includes("auto") && (d.height = void 0), t.children = void 0;else if ("ul" !== t.name && "ol" !== t.name || !t.c) { | |||
if ("table" === t.name) { | |||
var u = parseFloat(i.cellpadding), | |||
g = parseFloat(i.cellspacing), | |||
f = parseFloat(i.border), | |||
m = d["border-color"], | |||
v = d["border-style"]; | |||
if (t.c && (isNaN(u) && (u = 2), isNaN(g) && (g = 2)), f && (i.style += ";border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray")), t.flag && t.c) { | |||
t.flag = void 0, d.display = "grid", g ? (d["grid-gap"] = g + "px", d.padding = g + "px") : f && (i.style += ";border-left:0;border-top:0"); | |||
var y = [], | |||
x = [], | |||
b = [], | |||
w = {}; | |||
!function t(i) { | |||
for (var e = 0; e < i.length; e++) "tr" === i[e].name ? x.push(i[e]) : t(i[e].children || []); | |||
}(s); | |||
for (var k = 1; k <= x.length; k++) { | |||
for (var N = 1, T = 0; T < x[k - 1].children.length; T++) { | |||
var O = x[k - 1].children[T]; | |||
if ("td" === O.name || "th" === O.name) { | |||
for (; w[k + "." + N];) N++; | |||
O.c = 1; | |||
var C = O.attrs.style || "", | |||
S = C.indexOf("width") ? C.indexOf(";width") : 0; | |||
if (-1 !== S) { | |||
var I = C.indexOf(";", S + 6); | |||
-1 === I && (I = C.length), O.attrs.colspan || (y[N] = C.substring(S ? S + 7 : 6, I)), C = C.substr(0, S) + C.substr(I); | |||
} | |||
if (C += ";display:flex", -1 !== (S = C.indexOf("vertical-align"))) { | |||
var j = C.substr(S + 15, 10); | |||
j.includes("middle") ? C += ";align-items:center" : j.includes("bottom") && (C += ";align-items:flex-end"); | |||
} else C += ";align-items:center"; | |||
if (-1 !== (S = C.indexOf("text-align"))) { | |||
var A = C.substr(S + 11, 10); | |||
A.includes("center") ? C += ";justify-content: center" : A.includes("right") && (C += ";justify-content: right"); | |||
} | |||
if (C = (f ? ";border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray") + (g ? "" : ";border-right:0;border-bottom:0") : "") + (u ? ";padding:".concat(u, "px") : "") + ";" + C, O.attrs.colspan && (C += ";grid-column-start:".concat(N, ";grid-column-end:").concat(N + parseInt(O.attrs.colspan)), O.attrs.rowspan || (C += ";grid-row-start:".concat(k, ";grid-row-end:").concat(k + 1)), N += parseInt(O.attrs.colspan) - 1), O.attrs.rowspan) { | |||
C += ";grid-row-start:".concat(k, ";grid-row-end:").concat(k + parseInt(O.attrs.rowspan)), O.attrs.colspan || (C += ";grid-column-start:".concat(N, ";grid-column-end:").concat(N + 1)); | |||
for (var L = 1; L < O.attrs.rowspan; L++) for (var z = 0; z < (O.attrs.colspan || 1); z++) w[k + L + "." + (N - z)] = 1; | |||
} | |||
C && (O.attrs.style = C), b.push(O), N++; | |||
} | |||
} | |||
if (1 === k) { | |||
for (var q = "", U = 1; U < N; U++) q += (y[U] ? y[U] : "auto") + " "; | |||
d["grid-template-columns"] = q; | |||
} | |||
} | |||
t.children = b; | |||
} else t.c && (d.display = "table"), isNaN(g) || (d["border-spacing"] = g + "px"), (f || u || t.c) && function i(e) { | |||
for (var s = 0; s < e.length; s++) { | |||
var a = e[s]; | |||
t.c && (a.c = 1), "th" === a.name || "td" === a.name ? (f && (a.attrs.style = "border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray", ";").concat(a.attrs.style || "")), u && (a.attrs.style = "padding:".concat(u, "px;").concat(a.attrs.style || ""))) : a.children && i(a.children); | |||
} | |||
}(s); | |||
if (this.options.scrollTable && !(i.style || "").includes("inline")) { | |||
var F = Object.assign({}, t); | |||
t.name = "div", t.attrs = { | |||
style: "overflow-x:auto;padding:1px" | |||
}, t.children = [F], i = F.attrs; | |||
} | |||
} else if ("td" !== t.name && "th" !== t.name || !i.colspan && !i.rowspan) { | |||
if ("ruby" === t.name) { | |||
t.name = "span"; | |||
for (var V = 0; V < s.length - 1; V++) "text" === s[V].type && "rt" === s[V + 1].name && (s[V] = { | |||
name: "span", | |||
attrs: { | |||
style: "display:inline-block;text-align:center" | |||
}, | |||
children: [{ | |||
name: "div", | |||
attrs: { | |||
style: "font-size:50%;" + (s[V + 1].attrs.style || "") | |||
}, | |||
children: s[V + 1].children | |||
}, s[V]] | |||
}, s.splice(V + 1, 1)); | |||
} | |||
} else for (var D = this.stack.length; D--;) if ("table" === this.stack[D].name) { | |||
this.stack[D].flag = 1; | |||
break; | |||
} | |||
} else { | |||
var B = { | |||
a: "lower-alpha", | |||
A: "upper-alpha", | |||
i: "lower-roman", | |||
I: "upper-roman" | |||
}; | |||
B[i.type] && (i.style += ";list-style-type:" + B[i.type], i.type = void 0), t.c = 1; | |||
for (var P = s.length; P--;) "li" === s[P].name && (s[P].c = 1); | |||
} | |||
} else t.name = "span"; | |||
if ((d.display || "").includes("flex") && !t.c) for (var Z = s.length; Z--;) { | |||
var _ = s[Z]; | |||
_.f && (_.attrs.style = (_.attrs.style || "") + _.f, _.f = void 0); | |||
} | |||
var G = a && ((a.attrs.style || "").includes("flex") || (a.attrs.style || "").includes("grid")) && !t.c && !(d.display || "").includes("inline"); | |||
G && (t.f = ";max-width:100%"), s.length >= 50 && t.c && !(d.display || "").includes("flex") && e(s); | |||
for (var M in d) if (d[M]) { | |||
var W = ";".concat(M, ":").concat(d[M].replace(" !important", "")); | |||
G && (M.includes("flex") && "flex-direction" !== M || "align-self" === M || M.includes("grid") || "-" === d[M][0] || M.includes("width") && W.includes("%")) ? (t.f += W, "width" === M && (i.style += ";width:100%")) : i.style += W; | |||
} | |||
i.style = i.style.substr(1) || void 0; | |||
}, s.prototype.onText = function (t) { | |||
if (!this.pre) { | |||
for (var e, s = "", a = 0, n = t.length; a < n; a++) c[t[a]] ? (" " !== s[s.length - 1] && (s += " "), "\n" !== t[a] || e || (e = !0)) : s += t[a]; | |||
if (" " === s && e) return; | |||
t = s; | |||
} | |||
var r = Object.create(null); | |||
if (r.type = "text", r.text = i(t), this.hook(r)) { | |||
"force" === this.options.selectable && l.includes("iOS") && !uni.canIUse("rich-text.user-select") && this.expose(); | |||
(this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes).push(r); | |||
} | |||
}, a.prototype.parse = function (t) { | |||
this.content = t || "", this.i = 0, this.start = 0, this.state = this.text; | |||
for (var i = this.content.length; -1 !== this.i && this.i < i;) this.state(); | |||
}, a.prototype.checkClose = function (t) { | |||
var i = "/" === this.content[this.i]; | |||
return !!(">" === this.content[this.i] || i && ">" === this.content[this.i + 1]) && (t && this.handler[t](this.content.substring(this.start, this.i)), this.i += i ? 2 : 1, this.start = this.i, this.handler.onOpenTag(i), "script" === this.handler.tagName ? (this.i = this.content.indexOf("</", this.i), -1 !== this.i && (this.i += 2, this.start = this.i), this.state = this.endTag) : this.state = this.text, !0); | |||
}, a.prototype.text = function () { | |||
if (this.i = this.content.indexOf("<", this.i), -1 === this.i) return void (this.start < this.content.length && this.handler.onText(this.content.substring(this.start, this.content.length))); | |||
var t = this.content[this.i + 1]; | |||
if (t >= "a" && t <= "z" || t >= "A" && t <= "Z") this.start !== this.i && this.handler.onText(this.content.substring(this.start, this.i)), this.start = ++this.i, this.state = this.tagName;else if ("/" === t || "!" === t || "?" === t) { | |||
this.start !== this.i && this.handler.onText(this.content.substring(this.start, this.i)); | |||
var i = this.content[this.i + 2]; | |||
if ("/" === t && (i >= "a" && i <= "z" || i >= "A" && i <= "Z")) return this.i += 2, this.start = this.i, void (this.state = this.endTag); | |||
var e = "--\x3e"; | |||
"!" === t && "-" === this.content[this.i + 2] && "-" === this.content[this.i + 3] || (e = ">"), this.i = this.content.indexOf(e, this.i), -1 !== this.i && (this.i += e.length, this.start = this.i); | |||
} else this.i++; | |||
}, a.prototype.tagName = function () { | |||
if (c[this.content[this.i]]) { | |||
for (this.handler.onTagName(this.content.substring(this.start, this.i)); c[this.content[++this.i]];); | |||
this.i < this.content.length && !this.checkClose() && (this.start = this.i, this.state = this.attrName); | |||
} else this.checkClose("onTagName") || this.i++; | |||
}, a.prototype.attrName = function () { | |||
var t = this.content[this.i]; | |||
if (c[t] || "=" === t) { | |||
this.handler.onAttrName(this.content.substring(this.start, this.i)); | |||
for (var i = "=" === t, e = this.content.length; ++this.i < e;) if (t = this.content[this.i], !c[t]) { | |||
if (this.checkClose()) return; | |||
if (i) return this.start = this.i, void (this.state = this.attrVal); | |||
if ("=" !== this.content[this.i]) return this.start = this.i, void (this.state = this.attrName); | |||
i = !0; | |||
} | |||
} else this.checkClose("onAttrName") || this.i++; | |||
}, a.prototype.attrVal = function () { | |||
var t = this.content[this.i], | |||
i = this.content.length; | |||
if ('"' === t || "'" === t) { | |||
if (this.start = ++this.i, this.i = this.content.indexOf(t, this.i), -1 === this.i) return; | |||
this.handler.onAttrVal(this.content.substring(this.start, this.i)); | |||
} else for (; this.i < i; this.i++) { | |||
if (c[this.content[this.i]]) { | |||
this.handler.onAttrVal(this.content.substring(this.start, this.i)); | |||
break; | |||
} | |||
if (this.checkClose("onAttrVal")) return; | |||
} | |||
for (; c[this.content[++this.i]];); | |||
this.i < i && !this.checkClose() && (this.start = this.i, this.state = this.attrName); | |||
}, a.prototype.endTag = function () { | |||
var t = this.content[this.i]; | |||
if (c[t] || ">" === t || "/" === t) { | |||
if (this.handler.onCloseTag(this.content.substring(this.start, this.i)), ">" !== t && (this.i = this.content.indexOf(">", this.i), -1 === this.i)) return; | |||
this.start = ++this.i, this.state = this.text; | |||
} else this.i++; | |||
}, module.exports = s; |
@@ -0,0 +1,181 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" left-text="新增关联企业" left-arrow /> | |||
<scroll-view :scroll-y="true" :style="'height: ' + (windowHeight - 80 - 36 - 20) + 'px;'"> | |||
<view class="create-enterprise"> | |||
<view class="border"> | |||
<view class="create-enterprise-title"> | |||
企业名称 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<input class="create-enterprise-input" @input="headleInput" :value="form.enterpriseName" | |||
data-name="enterpriseName" type="text" placeholder="请输入企业名称" /> | |||
</view> | |||
<view class="border"> | |||
<view class="create-enterprise-title"> | |||
法人姓名 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<input class="create-enterprise-input" @input="headleInput" :value="form.legalName" data-name="legalName" | |||
type="text" placeholder="请输入法人姓名" /> | |||
</view> | |||
<view class="border"> | |||
<view class="create-enterprise-title"> | |||
企业社会统一信用代码 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<input class="create-enterprise-input" @input="headleInput" :value="form.identificationNumber" | |||
data-name="identificationNumber" type="text" placeholder="请输入企业社会统一信用代码" /> | |||
</view> | |||
</view> | |||
</scroll-view> | |||
<view class="enterprise-button"> | |||
<van-button v-if="isForm" @tap.native="submit" custom-style="height: 80rpx;" color="#E0383E" | |||
block>立即关联</van-button> | |||
<van-button v-if="!isForm" custom-style="height: 80rpx;" color="#C1C1C1" block>立即关联</van-button> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
// const app = getApp(); | |||
// const { enterprise } = app.globalData.api; | |||
import * as enterprise from '@/api/enterprise'; // 企业 | |||
export default { | |||
components: {}, | |||
data() { | |||
return { | |||
// env: app.globalData.env, | |||
// appName: app.globalData.env.appName, | |||
form: { | |||
enterpriseName: '', | |||
legalName: '', | |||
identificationNumber: '' | |||
}, | |||
isForm: false, | |||
windowHeight: null, | |||
name: '' | |||
}; | |||
}, | |||
async onLoad() { | |||
const res = uni.getSystemInfoSync(); | |||
this.setData({ | |||
windowHeight: res.windowHeight | |||
}); | |||
}, | |||
async onShow() {}, | |||
methods: { | |||
// 返回首页企业 | |||
onClickLeft() { | |||
uni.navigateTo({ | |||
url: '/packages/enterprise/pages/relation-enterprise/relation-enterprise' | |||
}); | |||
}, | |||
// 输入框重新赋值 | |||
headleInput(event) { | |||
let { | |||
value | |||
} = event.detail; | |||
const { | |||
name | |||
} = event.currentTarget.dataset; | |||
this.form[name] = value; | |||
this.setData({ | |||
...this.form, | |||
[name]: this[name] | |||
}); | |||
const { | |||
enterpriseName, | |||
identificationNumber, | |||
legalName | |||
} = this.form; | |||
if (enterpriseName !== '' && identificationNumber !== '' && legalName !== '') { | |||
this.setData({ | |||
isForm: true | |||
}); | |||
} else { | |||
this.setData({ | |||
isForm: false | |||
}); | |||
} | |||
}, | |||
async submit() { | |||
const { | |||
enterpriseName, | |||
identificationNumber, | |||
legalName | |||
} = this.form; | |||
if (enterpriseName === '' || identificationNumber === '' || legalName === '') { | |||
uni.showToast({ | |||
title: enterpriseName === '' ? | |||
'企业名称不能为空' : legalName === '' ? | |||
'法人姓名不能为空' : identificationNumber === '' ? | |||
'企业社会统一信用代码不能为空' : '其中一项不能为空', | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
let params = { | |||
enterpriseName, | |||
legalName, | |||
identificationNumber | |||
}; | |||
const res = await enterprise.createAffiliatedEnterprise(params); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: '添加关联企业失败', | |||
icon: 'none' | |||
}); | |||
return; | |||
} | |||
uni.showToast({ | |||
title: '添加企业成功', | |||
icon: 'none' | |||
}); | |||
uni.redirectTo({ | |||
url: '../relation-enterprise/relation-enterprise' | |||
}); | |||
//获取已经打开的页面的数组 | |||
var pages = getCurrentPages(); | |||
//获取上一个页面的所有的方法和data中的数据 | |||
var lastpage = pages[pages.length - 2]; | |||
lastpage.getEnterpriseList(); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.create-enterprise { | |||
padding: 136rpx 40rpx; | |||
} | |||
.border { | |||
padding: 42rpx 0; | |||
border-bottom: 1px solid #efefef; | |||
} | |||
.create-enterprise-title { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
.create-enterprise-input { | |||
margin-top: 24rpx; | |||
} | |||
.ml-10 { | |||
margin-left: 10px; | |||
} | |||
.enterprise-button { | |||
padding: 25rpx 36rpx; | |||
} | |||
</style> |
@@ -0,0 +1,340 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" left-text="诉求详情" left-arrow border /> | |||
<view class="myAppeal"> | |||
<!-- 内容部分 --> | |||
<view class="myAppeal-conent"> | |||
<view class="godd-replay-head"> | |||
<image src="/static/packages/enterprise/image/my-appeal.png" mode="aspectFill" /> | |||
<text class="myAppeal-head-title">{{ List.enterpriseName }}</text> | |||
</view> | |||
<view class="myAppeal-flex"> | |||
<block v-for="(type, index) in typeList" :key="index"> | |||
<view v-if="List.appealType + '' === type.value" class="myAppeal-type" | |||
:style="'background-color: ' + type.cssClass + ';'">{{ type.label }}</view> | |||
</block> | |||
<view> | |||
<text class="myAppeal-conent-block">{{ toods.getDateTime(List.createTime, 2) }}</text> | |||
<block v-for="(state, index) in statusList" :key="index"> | |||
<text v-if="List.appealProcessStatus + '' === state.value" | |||
class="myAppeal-conent-bg myAppeal-conent-block" :style="'background-color: ' + state.cssClass + ';'"> | |||
{{ state.label }} | |||
</text> | |||
</block> | |||
</view> | |||
</view> | |||
<view class="myAppeal-title mt-21 uniline">{{ List.appealTitle }}</view> | |||
<view class="myAppeal-subheading"> | |||
<rich-text :nodes="List.appealContent" /> | |||
</view> | |||
<view class="myAppeal-imgage" v-if="List.appealEnclosure"> | |||
<image mode="aspectFill" data-name="appealEnclosure" @tap="viewImage" :data-item="item" :src="item" | |||
v-for="(item, index) in List.appealEnclosure" :key="index"></image> | |||
</view> | |||
<view class="myAppeal-conent-block mt-21" v-if="List.appealCurrentLocation !== null"> | |||
{{ List.appealCurrentLocation }} | |||
</view> | |||
<!-- 判断是否有回复信息 --> | |||
<block v-if="List.perfectReplyFlag === 1"> | |||
<view class="good-reply-title"> | |||
<text>处理过程</text> | |||
</view> | |||
<view class="myAppeal-bg"> | |||
<view> | |||
<view class="flex flex-v-center"> | |||
<image src="/static/images/ic-success.png" mode="aspectFill"></image> | |||
<text>{{ List.nickName || '' }}</text> | |||
</view> | |||
</view> | |||
<view class="myAppeal-bg-conent"> | |||
<rich-text :nodes="List.appealReply || ''" /> | |||
<view class="myAppeal-conent-block mt-16">{{ toods.getDateTime(List.replyTime, 2) }}</view> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<!-- <script module="toods" lang="wxs" src="@/wxs/util.wxs"></script> --> | |||
<script> | |||
// TODO: 企业-我的诉求详情 + 民生-我的调解详情此页面复用 | |||
import * as enterprise from '@/api/enterprise'; | |||
import * as publicApi from '@/api/publicApi'; | |||
import * as peopleApi from '@/api/peopleApi'; | |||
export default { | |||
data() { | |||
return { | |||
option: {}, | |||
type: { | |||
value: '', | |||
cssClass: '', | |||
label: '' | |||
}, | |||
status: 'appeal_process_status', | |||
typeList: [], | |||
statusList: [], | |||
List: null, | |||
state: { | |||
value: '', | |||
cssClass: '', | |||
label: '' | |||
} | |||
}; | |||
}, | |||
async onLoad(option) { | |||
// TODO: key:是区分企业-我的诉求详情和民生-我的调解详情 key默认为 1:企业 | |||
this.setData({ | |||
option | |||
}); | |||
await this.getAppealApi(); | |||
await this.getTypeList(); | |||
await this.getStateList(); | |||
}, | |||
methods: { | |||
// 返回我的诉求 | |||
onClickLeft() { | |||
uni.navigateTo({ | |||
url: `/packages/enterprise/pages/my-appeal/my-appeal?name=${this.option.name}` | |||
}); | |||
}, | |||
// 获取类型字典 | |||
async getTypeList() { | |||
const res = await publicApi.getDictDataApi({ | |||
dictType: this.type | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
typeList: res.data.list | |||
}); | |||
} | |||
}, | |||
// 获取状态字典 | |||
async getStateList() { | |||
const res = await publicApi.getDictDataApi({ | |||
dictType: this.status | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
statusList: res.data.list | |||
}); | |||
} | |||
}, | |||
// 查看图片 | |||
viewImage(event) { | |||
const url = event.currentTarget.dataset.item; | |||
const name = event.currentTarget.dataset.name; | |||
uni.previewImage({ | |||
current: url, | |||
// 当前显示图片的http链接 | |||
urls: this.List[name] // 需要预览的图片http链接列表 | |||
}); | |||
}, | |||
// 获得诉求 | |||
async getAppealApi() { | |||
let res = await enterprise.getAppealIdApi({ | |||
id: this.option.id | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
List: res.data | |||
}); | |||
} | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
page { | |||
background-color: #fff; | |||
} | |||
.mt-16 { | |||
margin-top: 16rpx; | |||
} | |||
.mt-20 { | |||
margin-top: 40rpx; | |||
} | |||
.mt-21 { | |||
margin-top: 21rpx; | |||
} | |||
.myAppeal { | |||
padding: 37rpx 32rpx 40rpx 40rpx; | |||
} | |||
.myAppeal>.myAppeal-title { | |||
position: relative; | |||
width: 175rpx; | |||
height: 10rpx; | |||
background: #ffe5e9; | |||
border-radius: 2rpx; | |||
line-height: 0; | |||
margin-top: 10px; | |||
text { | |||
position: absolute; | |||
top: -5px; | |||
text-align: center; | |||
width: 100%; | |||
font-size: 36rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
} | |||
} | |||
.myAppeal-conent { | |||
height: 100%; | |||
&:not(:first-child) { | |||
margin-top: 37rpx; | |||
} | |||
.godd-replay-head { | |||
display: flex; | |||
.myAppeal-head-title { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #fe3b53; | |||
} | |||
image { | |||
width: 44rpx; | |||
height: 44rpx; | |||
border-radius: 50%; | |||
margin-right: 24rpx; | |||
} | |||
} | |||
.myAppeal-flex { | |||
margin-top: 32rpx; | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
.myAppeal-type { | |||
width: 88rpx; | |||
height: 38rpx; | |||
line-height: 38rpx; | |||
text-align: center; | |||
color: #fff; | |||
box-shadow: 2px 2px 2px 0px rgba(12, 181, 207, 0.1); | |||
border-radius: 8rpx; | |||
} | |||
.myAppeal-conent-title { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #fe3b53; | |||
} | |||
.myAppeal-conent-bg { | |||
padding: 5rpx 20rpx; | |||
height: 38rpx; | |||
text-align: center; | |||
color: #fff; | |||
line-height: 38rpx; | |||
box-shadow: 2px 2px 2px 0px rgba(254, 61, 85, 0.1); | |||
border-radius: 500rpx; | |||
margin-left: 39rpx; | |||
} | |||
} | |||
} | |||
.myAppeal-conent-block { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.myAppeal-title { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
} | |||
.myAppeal-subheading { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
margin-top: 24rpx; | |||
} | |||
.myAppeal-imgage { | |||
margin-top: 24rpx; | |||
display: grid; | |||
grid-template-columns: 1fr 1fr 1fr; | |||
image { | |||
width: 222rpx; | |||
height: 222rpx; | |||
border-radius: 10rpx; | |||
margin-right: 10rpx; | |||
} | |||
} | |||
.good-reply-title { | |||
position: relative; | |||
width: 175rpx; | |||
height: 10rpx; | |||
background: #ffced6; | |||
border-radius: 2rpx; | |||
line-height: 0; | |||
margin-top: 60rpx; | |||
text { | |||
position: absolute; | |||
top: -5px; | |||
text-align: center; | |||
width: 100%; | |||
font-size: 36rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
} | |||
} | |||
.myAppeal-bg { | |||
width: 678rpx; | |||
height: 232rpx; | |||
border-radius: 8px; | |||
margin-top: 50rpx; | |||
image { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-right: 8rpx; | |||
} | |||
text { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #fe3b53; | |||
} | |||
.myAppeal-bg-conent { | |||
margin-top: 16rpx; | |||
margin-left: 30rpx; | |||
padding: 20rpx 24rpx 20rpx 28rpx; | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
border-radius: 8rpx; | |||
background: #f7f7f7; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,72 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" :left-text="options.name" left-arrow border /> | |||
<view class="list flex flex-center flex-col"> | |||
<image class="qr" :src="recursionObj.icon" :show-menu-by-longpress="true"></image> | |||
<view class="qr-text">{{ recursionObj.remark }}</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import * as publicApi from '@/api/publicApi'; | |||
export default { | |||
data() { | |||
return { | |||
recursionObj: { | |||
icon: '', | |||
remark: '' | |||
}, | |||
options: { | |||
name: '' | |||
} | |||
}; | |||
} | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
, | |||
onLoad(options) { | |||
this.options = options | |||
this.recursionApi(); | |||
}, | |||
methods: { | |||
async recursionApi() { | |||
const { | |||
data | |||
} = await publicApi.recursionApi({ | |||
bannerType: this.options.bannerType, | |||
parentId: this.options.parentId | |||
}); | |||
if (data.length) { | |||
this.recursionObj = data[0] | |||
} | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.list { | |||
margin-top: 207rpx; | |||
width: 100%; | |||
.qr { | |||
width: 576rpx; | |||
height: 576rpx; | |||
} | |||
.qr-text { | |||
margin-top: 55rpx; | |||
width: 543rpx; | |||
font-size: 30rpx; | |||
font-weight: 400; | |||
color: #222222; | |||
line-height: 40rpx; | |||
text-align: justify; | |||
text-align-last: center; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,199 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<block v-if="options.name === '便民办事'"> | |||
<custom-nav-bar position="fixed" color="black" :left-text="options.name" left-arrow /> | |||
<view class="second-model"> | |||
<view class="second-line flex flex-v-center flex-between" :data-item="item" @tap="headleDetails" | |||
v-for="(item, index) in newsPageList" :key="index"> | |||
<view class="line-name flex1 line-text-1">{{ item.title }}</view> | |||
<image class="line-you" src="/static/images/ic-you.png"></image> | |||
</view> | |||
</view> | |||
</block> | |||
<block v-if="options.name === '政策推送'"> | |||
<custom-nav-bar :left-text="options.name" left-arrow /> | |||
<image class="second-header" :src="recursionObj.icon"></image> | |||
<view class="second-section"> | |||
<view class="section-item flex flex-between" :data-item="item" @tap="headleDetails" | |||
v-for="(item, index) in newsPageList" :key="index"> | |||
<view class="section-item-left flex1 flex flex-between flex-col"> | |||
<view class="consult-content-title text-line-2">{{ item.title }}</view> | |||
<view class="consult-content-block"> | |||
<text class="block-first">{{ toods.getDateTime(item.createTime) }}</text> | |||
<text>{{ item.publisher }}</text> | |||
</view> | |||
</view> | |||
<image class="section-item-right" :src="item.pics" mode="aspectFill"></image> | |||
</view> | |||
</view> | |||
</block> | |||
<!-- 此处归属于生活模块 --> | |||
<block v-if="options.pageType === '1'"> | |||
<custom-nav-bar position="fixed" color="black" :left-text="options.name" left-arrow /> | |||
<view class="second-model"> | |||
<view class="second-line flex flex-v-center flex-between" :data-item="item" @tap="headleDetails2" | |||
v-for="(item, index) in newsPageList" :key="index"> | |||
<view class="line-name flex1 line-text-1">{{ item.title }}</view> | |||
<image class="line-you" src="/static/images/ic-you.png"></image> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
</template> | |||
<!-- <script module="toods" lang="wxs" src="@/wxs/util.wxs"></script> --> | |||
<script> | |||
// const app = getApp(); | |||
// const { | |||
// peopleApi, | |||
// publicApi | |||
// } = app.globalData.api; | |||
import * as publicApi from '@/api/publicApi'; | |||
import * as peopleApi from '@/api/peopleApi'; | |||
export default { | |||
data() { | |||
return { | |||
options: { | |||
name: '', | |||
pageType: '' | |||
}, | |||
recursionObj: { | |||
icon: '' | |||
}, | |||
newsPageList: [] | |||
}; | |||
}, | |||
onLoad(options) { | |||
this.options = options | |||
this.newsPageApi(); | |||
if (this.options.name === '政策推送') { | |||
this.recursionApi(); | |||
} | |||
}, | |||
methods: { | |||
async newsPageApi() { | |||
const param = { | |||
pageNo: 1, | |||
pageSize: 99, | |||
categoryId: this.options.categoryId | |||
}; | |||
const { | |||
data: { | |||
list = [] | |||
} | |||
} = await peopleApi.newsPageApi(param); | |||
if (list.length) { | |||
this.newsPageList = list | |||
} | |||
}, | |||
async recursionApi() { | |||
const res = await publicApi.recursionApi({ | |||
bannerType: 3, | |||
parentId: this.options.parentId | |||
}); | |||
if (res.data) { | |||
this.recursionObj = res.data[0] | |||
} | |||
}, | |||
// 进入详情页 | |||
headleDetails(event) { | |||
const { | |||
item | |||
} = event.currentTarget.dataset; | |||
uni.navigateTo({ | |||
url: `/packages/public/pages/details/details-no-ops?name=${this.options.name}详情&referId=${item.id}` | |||
}); | |||
}, | |||
headleDetails2(event) { | |||
const { | |||
item | |||
} = event.currentTarget.dataset; | |||
uni.navigateTo({ | |||
url: `/packages/public/pages/details/details-no-ops?name=介休政务百科-详情&referId=${item.id}` | |||
}); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
// 办事指南 start | |||
.second-model { | |||
margin-top: 32rpx; | |||
width: 100%; | |||
height: 100%; | |||
padding: 0 12rpx; | |||
.second-line { | |||
height: 120rpx; | |||
border-bottom: 1px solid #efefef; | |||
position: relative; | |||
.line-name { | |||
font-size: 34rpx; | |||
font-weight: 400; | |||
color: #007bd7; | |||
line-height: 34rpx; | |||
margin-left: 42rpx; | |||
} | |||
.line-you { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
} | |||
// 政策推送 start | |||
.second-header { | |||
width: 100%; | |||
height: 330rpx; | |||
} | |||
.second-section { | |||
margin-top: 50rpx; | |||
padding: 0 40rpx 0; | |||
.section-item { | |||
padding: 24rpx 0; | |||
border-bottom: 1px solid #e1e1e1; | |||
&:first-child { | |||
padding-top: 0; | |||
} | |||
.section-item-left { | |||
margin-right: 50rpx; | |||
.consult-content-title { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
.consult-content-block { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
.block-first { | |||
margin-right: 18rpx; | |||
} | |||
} | |||
} | |||
.section-item-right { | |||
width: 200rpx; | |||
height: 150rpx; | |||
border-radius: 8rpx; | |||
} | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,228 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" :left-text="options.name" left-arrow /> | |||
<view class="second-model" v-if="options.name === '办事指南'"> | |||
<view class="second-line flex flex-v-center flex-between" :style="itemName.cssStyle" | |||
v-for="(itemName, idx) in recursionList" :key="idx"> | |||
<navigator v-if="itemName.clickUrl" class="line-navigator" :url="toods.updateQuery(itemName.clickUrl, itemName)" | |||
hover-class="none"></navigator> | |||
<image class="line-img" :src="itemName.icon"></image> | |||
<view class="line-name flex1">{{ itemName.name }}</view> | |||
<image class="line-you" src="/static/images/ic-you.png"></image> | |||
</view> | |||
</view> | |||
<view class="two-model flex flex-v-center flex-between" v-if="options.name === '事务办理'"> | |||
<view class="second-line flex flex-col line1" :style="itemName.cssStyle" v-for="(itemName, idx) in recursionList" | |||
:key="idx"> | |||
<navigator v-if="itemName.clickUrl" class="line-navigator" :url="toods.updateQuery(itemName.clickUrl, itemName)" | |||
hover-class="none"></navigator> | |||
<image class="line-bg" :src="itemName.icon"></image> | |||
<view class="line-title">{{ itemName.name }}</view> | |||
<view v-if="itemName.remark" class="line-msg">{{ itemName.remark }}</view> | |||
</view> | |||
</view> | |||
<view class="three-model" v-if="options.name === '便民小知识'"> | |||
<view class="second-line flex flex-v-center flex-between" :style="itemName.cssStyle" | |||
v-for="(itemName, idx) in recursionList" :key="idx"> | |||
<navigator v-if="itemName.clickUrl" class="line-navigator" :url="toods.updateQuery(itemName.clickUrl, itemName)" | |||
hover-class="none"></navigator> | |||
<view class="line-name flex1 line-text-1">{{ itemName.name }}</view> | |||
<image class="line-you" src="/static/images/ic-you.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<!-- <script module="toods" lang="wxs" src="@/wxs/util.wxs"></script> --> | |||
<script> | |||
// const app = getApp(); | |||
// const { | |||
// publicApi | |||
// } = app.globalData.api; | |||
import * as publicApi from '@/api/publicApi'; | |||
export default { | |||
data() { | |||
return { | |||
options: { | |||
name: '' | |||
}, | |||
recursionList: [] | |||
}; | |||
}, | |||
onLoad(options) { | |||
console.log(options) | |||
this.options = options | |||
this.recursionApi(); | |||
}, | |||
methods: { | |||
async recursionApi() { | |||
const { | |||
bannerType, | |||
parentId | |||
} = this.options; | |||
const res = await publicApi.recursionApi({ | |||
bannerType, | |||
parentId | |||
}); | |||
if (res.data) { | |||
this.recursionList = res.data | |||
} | |||
}, | |||
// 通用函数 | |||
generalFunction(res) { | |||
if (res.data && res.data.createTime) { | |||
// res.data.createTime = app.globalData.util.timeFormat(res.data.createTime); | |||
if (res.data.content) { | |||
res.data.content = res.data.content | |||
.replace(/<img/gi, '<img style="max-width:100%;height:auto;display:block" ') | |||
.replace(/</g, '<') | |||
.replace(/>/g, '>') | |||
.replace(/&nbsp;/g, ' ') | |||
.replace(/"/g, '"'); | |||
} | |||
return res.data; | |||
} | |||
return {}; | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.line-navigator { | |||
width: 100%; | |||
height: 100%; | |||
position: absolute; | |||
z-index: 10; | |||
top: 0; | |||
left: 0; | |||
} | |||
.second-model { | |||
margin-top: 32rpx; | |||
width: 100%; | |||
height: 100%; | |||
padding: 0 12rpx; | |||
.second-line { | |||
height: 120rpx; | |||
border-bottom: 1px solid #efefef; | |||
position: relative; | |||
.line-img { | |||
width: 70rpx; | |||
height: 70rpx; | |||
border-radius: 50%; | |||
} | |||
.line-bg { | |||
width: 100%; | |||
height: 100%; | |||
position: absolute; | |||
z-index: -1; | |||
top: 0; | |||
left: 0; | |||
} | |||
.line-name { | |||
font-size: 34rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
line-height: 34rpx; | |||
margin-left: 42rpx; | |||
} | |||
.line-you { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
} | |||
.two-model { | |||
margin-top: 29rpx; | |||
flex-wrap: wrap; | |||
.second-line { | |||
width: 343rpx; | |||
height: 110rpx; | |||
justify-content: center; | |||
padding-left: 39rpx; | |||
position: relative; | |||
&:not(:first-child) { | |||
margin-top: 16rpx; | |||
} | |||
.line-bg { | |||
width: 100%; | |||
height: 100%; | |||
position: absolute; | |||
z-index: -1; | |||
top: 0; | |||
left: 0; | |||
} | |||
.line-title { | |||
font-size: 40rpx; | |||
font-weight: 500; | |||
line-height: 32rpx; | |||
} | |||
.line-msg { | |||
margin-top: 21rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 26rpx; | |||
} | |||
} | |||
.line1 { | |||
width: 100%; | |||
height: 171rpx; | |||
.line-title { | |||
font-size: 40rpx; | |||
font-weight: 500; | |||
line-height: 40rpx; | |||
} | |||
} | |||
} | |||
.three-model { | |||
margin-top: 32rpx; | |||
width: 100%; | |||
height: 100%; | |||
padding: 0 12rpx; | |||
.second-line { | |||
height: 120rpx; | |||
border-bottom: 1px solid #efefef; | |||
position: relative; | |||
.line-name { | |||
font-size: 34rpx; | |||
font-weight: 400; | |||
color: #007bd7; | |||
line-height: 34rpx; | |||
margin-left: 42rpx; | |||
} | |||
.line-you { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,444 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" left-text="发布诉求" left-arrow /> | |||
<view class="line"></view> | |||
<van-notice-bar color="#FF7F34" background="#FEF9F5" text="* 属于必填项" /> | |||
<view class="card"> | |||
<view class="flex flex-between issue-pd"> | |||
<view class="card-title"> | |||
关联企业 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<view> | |||
<text v-if="appealDetails !== null">{{ appealDetails.enterpriseName }}</text> | |||
<block v-if="appealDetails === null"> | |||
<text class="card-placeholder">您未关联企业,去关联</text> | |||
<van-icon @tap.native="headleEnterprise" color="#FE3B53" class="ml-10" name="add-o" size="16px" /> | |||
</block> | |||
</view> | |||
</view> | |||
<view class="flex flex-between issue-pd"> | |||
<view class="card-title"> | |||
诉求类型 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<view class="flex"> | |||
<picker @change="bindPickerChange" data-name="appealType" data-index="appealTypeIndex" | |||
data-list="appealTypeList" range-key="label" :value="value" :range="appealTypeList"> | |||
<view class="picker"> | |||
<text v-if="form.appealType !== ''" class="card-placeholder" | |||
style="color: #000000">{{ appealTypeList[appealTypeIndex].label }}</text> | |||
<text v-if="form.appealType === ''" class="card-placeholder" style="color: #999">请选择诉求类型</text> | |||
<van-icon color="#FE3B53" class="ml-10" name="arrow-down" size="16px" /> | |||
</view> | |||
</picker> | |||
</view> | |||
</view> | |||
<view class="issue-pd"> | |||
<view class="card-title"> | |||
诉求标题 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<view class="mt-16"> | |||
<input class="card-content" type="text" @input="headleInput" :value="form.appealTitle" data-name="appealTitle" | |||
maxlength="30" placeholder="请输入诉求标题,文字不超过30字" /> | |||
</view> | |||
</view> | |||
<view class="issue-pd"> | |||
<view class="card-title"> | |||
诉求内容 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<view class="mt-16"> | |||
<textarea class="textarea card-content" :value="form.appealContent" @input="headleInput" | |||
data-name="appealContent" maxlength="200" placeholder="请输入诉求内容,文字不超过200字"></textarea> | |||
<view class="mt-16"> | |||
<van-uploader :file-list="fileList" :deletable="true" @after-read="afterRead" max-count="9" | |||
@delete="imageDelete"> | |||
<van-icon name="/packages/enterprise/image/camera.png" size="80px" /> | |||
</van-uploader> | |||
<view class="mt-16 card-block">附件不超过9个,每个大小不超过1M</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="issue-pd"> | |||
<view class="card-title"> | |||
姓名 | |||
<text class="red ml-10">*</text> | |||
</view> | |||
<view class="mt-16"> | |||
<input class="flex1 textarea-class" @input="headleInput" v-model="form.name" type="text" data-name="name" | |||
placeholder="请输入姓名" /> | |||
</view> | |||
</view> | |||
<view class="issue-pd"> | |||
<view class="card-title">当前位置</view> | |||
<view class="mt-16 flex flex-between"> | |||
<input style="width: 90%" class="card-content" type="text" :value="form.appealCurrentLocation" disabled | |||
maxlength="30" placeholder="请选择地址" /> | |||
<van-icon name="location-o" @click="headleAdress" color="#FE3B53" size="16px" /> | |||
</view> | |||
</view> | |||
<view class="flex flex-between issue-pd"> | |||
<view class="card-title">同意对外展示我的诉求</view> | |||
<view class="flex"> | |||
<picker @change="bindPickerChange" data-name="appealShowFlag" data-index="appealShowFlagIndex" | |||
data-list="agreeList" range-key="label" :value="value" :range="agreeList"> | |||
<view class="picker"> | |||
<text v-if="form.appealShowFlag !== ''" class="card-placeholder" | |||
style="color: #000000">{{ agreeList[appealShowFlagIndex].label }}</text> | |||
<text v-if="form.appealShowFlag === ''" class="card-placeholder" style="color: #999">请选择诉求类型</text> | |||
<van-icon color="#FE3B53" class="ml-10" name="arrow-down" size="16px" /> | |||
</view> | |||
</picker> | |||
</view> | |||
</view> | |||
<view class="mt-50"> | |||
<van-button @click="submit" block color="#FE3B53">提交信息</van-button> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
// const app = getApp(); | |||
// const { enterprise, publicApi } = app.globalData.api; | |||
import * as publicApi from '@/api/publicApi'; | |||
import * as enterprise from '@/api/enterprise'; | |||
export default { | |||
components: {}, | |||
data() { | |||
return { | |||
userInfoCount: null, | |||
userId: uni.getStorageSync('userInfoData').userId, | |||
fileList: [], | |||
appealEnclosure: [], | |||
appealTypeList: [], | |||
agreeList: [{ | |||
label: '是', | |||
value: 1 | |||
}, | |||
{ | |||
label: '否', | |||
value: 0 | |||
} | |||
], | |||
enterpriseList: [], | |||
enterpriseIndex: '', | |||
appealTypeIndex: '', | |||
appealShowFlagIndex: 0, | |||
appealDetails: null, | |||
form: { | |||
appealShowFlag: 1, | |||
enterpriseId: '', | |||
appealType: '', | |||
appealTitle: '', | |||
appealContent: '', | |||
// appealCurrentLocation: app.globalData.config.locationInfo.name, | |||
name: '' | |||
}, | |||
checked: false, | |||
name: '', | |||
value: '', | |||
label: '' | |||
}; | |||
}, | |||
async onLoad(optons) { | |||
if (Object.keys(optons).length) { | |||
this.getEnterprise(optons.id); | |||
} | |||
}, | |||
async onShow() { | |||
const userInfoCount = uni.getStorageSync('userInfoCount'); | |||
this.setData({ | |||
userInfoCount | |||
}); | |||
this.getEnterpriseList(); | |||
this.getAppelaTypeList(); | |||
const userInfoData = uni.getStorageSync('userInfoData'); | |||
this.setData({ | |||
userId: userInfoData.userId | |||
}); | |||
}, | |||
methods: { | |||
// 获取企业列表 | |||
async getEnterpriseList() { | |||
const res = await enterprise.getEnterpriseListApi({ | |||
userId: this.userId | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
enterpriseList: res.data.list | |||
}); | |||
} | |||
}, | |||
// 字典请求-诉求类型 | |||
async getAppelaTypeList() { | |||
const res = await publicApi.getDictDataApi({ | |||
dictType: 'appeal_type' | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
appealTypeList: res.data.list | |||
}); | |||
} | |||
}, | |||
// 跳转关联企业页面 | |||
headleEnterprise() { | |||
// 暂时去除跳转实名认证 | |||
// const { | |||
// userInfoCount | |||
// } = this.data; | |||
// if (userInfoCount.realNameAuthFlag === 1) { | |||
uni.navigateTo({ | |||
url: `/packages/enterprise/pages/relation-enterprise/relation-enterprise` | |||
}); | |||
// } else if (userInfoCount.realNameAuthFlag === 0) { | |||
// wx.navigateTo({ | |||
// url: `/packages/enterprise/pages/enterprise-certification/enterprise-certification`, | |||
// }); | |||
// } | |||
}, | |||
// 选择对应的诉求类型 | |||
bindPickerChange: function(e) { | |||
let { | |||
name | |||
} = e.target.dataset; | |||
const { | |||
index | |||
} = e.target.dataset; | |||
const Listname = e.target.dataset.list; | |||
const List = this[Listname]; | |||
name = `form.${name}`; | |||
this.setData({ | |||
[index]: e.detail.value, | |||
[name]: Listname === 'enterpriseList' ? List[e.detail.value].id : List[e.detail.value].value | |||
}); | |||
}, | |||
// 清楚对应的image图片 | |||
imageDelete(event) { | |||
const { | |||
index | |||
} = event.detail; | |||
const Image = this.fileList; | |||
Image.splice(index, 1); | |||
this.setData({ | |||
fileList: Image | |||
}); | |||
}, | |||
// 上传图片 | |||
async afterRead(event) { | |||
const { | |||
file | |||
} = event.detail; | |||
// const res = await app.globalData.upload({ | |||
// file | |||
// }); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: '上传图片失败', | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
const { | |||
fileList | |||
} = this; | |||
const { | |||
appealEnclosure | |||
} = this; | |||
const url = res.data; | |||
fileList.push({ | |||
url | |||
}); | |||
appealEnclosure.push(url); | |||
this.setData({ | |||
fileList, | |||
appealEnclosure | |||
}); | |||
}, | |||
// 输入框重新赋值 | |||
headleInput(event) { | |||
const { | |||
value | |||
} = event.detail; | |||
const { | |||
name | |||
} = event.currentTarget.dataset; | |||
this.form[name] = value; | |||
this.setData({ | |||
...this.form, | |||
[name]: this[name] | |||
}); | |||
console.log(this.form); | |||
}, | |||
// 选择地址 | |||
headleAdress() { | |||
this.setData({ | |||
form: { | |||
...this.form, | |||
// appealCurrentLocation: app.globalData.config.locationInfo.name | |||
} | |||
}); | |||
}, | |||
// 获得企业详情 | |||
async getEnterprise(id) { | |||
const res = await enterprise.getEnterpriseApi(id); | |||
if (res.data) { | |||
this.setData({ | |||
...this, | |||
appealDetails: res.data, | |||
form: { | |||
...this.form, | |||
enterpriseId: res.data.id | |||
} | |||
}); | |||
} | |||
}, | |||
// 提交form表单 | |||
async submit() { | |||
const { | |||
enterpriseId, | |||
appealType, | |||
appealTitle, | |||
appealContent, | |||
appealCurrentLocation, | |||
name | |||
} = this.form; | |||
const params = { | |||
enterpriseId, | |||
appealType, | |||
appealTitle, | |||
appealContent, | |||
appealCurrentLocation, | |||
appealProcessStatus: 1, | |||
appealShowFlag: 1, | |||
appealEnclosure: this.appealEnclosure, | |||
name | |||
}; | |||
if (enterpriseId === '' || appealType === '' || appealTitle === '' || appealContent === '') { | |||
/* eslint-disable*/ | |||
uni.showToast({ | |||
title: enterpriseId == '' ? | |||
'请选择关联企业' : appealType == '' ? | |||
'请选择选择诉求类型' : appealType == '' ? | |||
'请输入诉求标题' : appealType == '' ? | |||
'请输入诉求内容' : '带*属于必填项', | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
const res = await enterprise.createAppealApi(params); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: res.msg, | |||
icon: 'none' | |||
}); | |||
return; | |||
} | |||
uni.showToast({ | |||
title: '发布诉求成功', | |||
icon: 'none' | |||
}); | |||
uni.redirectTo({ | |||
url: '/packages/enterprise/pages/my-appeal/my-appeal' | |||
}); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.ml-10 { | |||
margin-left: 20rpx; | |||
} | |||
.mt-16 { | |||
margin-top: 16rpx; | |||
} | |||
.mt-50 { | |||
margin-top: 50rpx; | |||
} | |||
.mt-100 { | |||
margin-top: 100rpx; | |||
} | |||
page { | |||
background-color: #fff; | |||
} | |||
.van-notice-bar { | |||
--notice-bar-padding: 0 40rpx; | |||
} | |||
.line { | |||
width: 100%; | |||
height: 36rpx; | |||
} | |||
.card { | |||
padding: 0rpx 40rpx 40rpx 40rpx; | |||
} | |||
.issue-pd { | |||
align-items: center; | |||
padding: 42rpx 0; | |||
border-bottom: 1px solid #efefef; | |||
} | |||
.card-title { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
.card-content { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
.card-placeholder { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.card-block { | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.textarea { | |||
width: 100%; | |||
height: 180rpx; | |||
line-height: 40rpx; | |||
} | |||
.ic-check { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-right: 20rpx; | |||
} | |||
</style> |
@@ -0,0 +1,345 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" left-text="我的诉求" left-arrow border /> | |||
<scroll-view :scroll-y="true" :style="'height:' + (windowHeight + 'px')" @scrolltolower="headleTopLower"> | |||
<view class="myAppeal"> | |||
<!-- 内容部分 --> | |||
<view v-if="List.length !== 0" class="myAppeal-conent" @tap="details" :data-item="item" | |||
v-for="(item, index) in List" :key="index"> | |||
<view class="godd-replay-head"> | |||
<image src="/static/packages/enterprise/image/my-appeal.png" mode="aspectFill" /> | |||
<text class="myAppeal-head-title">{{ item.enterpriseName }}</text> | |||
</view> | |||
<view class="myAppeal-flex"> | |||
<block v-for="(type, index1) in typeList" :key="index1"> | |||
<view v-if="item.appealType + '' === type.value" class="myAppeal-type" | |||
:style="'background-color: ' + type.cssClass + ';'">{{ type.label }}</view> | |||
</block> | |||
<view> | |||
<text class="myAppeal-conent-block">{{ toods.getDateTime(item.createTime, 2) }}</text> | |||
<block v-for="(state, index1) in statusList" :key="index1"> | |||
<text v-if="item.appealProcessStatus + '' === state.value" | |||
class="myAppeal-conent-bg myAppeal-conent-block" :style="'background-color: ' + state.cssClass + ';'"> | |||
{{ state.label }} | |||
</text> | |||
</block> | |||
</view> | |||
</view> | |||
<view class="myAppeal-title mt-21 uniline">{{ item.appealTitle }}</view> | |||
<view class="myAppeal-subheading multi-line"> | |||
<rich-text :nodes="item.appealContent"></rich-text> | |||
</view> | |||
<view class="myAppeal-imgage" v-if="item.appealEnclosure"> | |||
<image v-if="key < 3" :src="url" v-for="(url, key) in item.appealEnclosure" :key="key"></image> | |||
</view> | |||
<view class="myAppeal-conent-block mt-21 uniline" v-if="item.appealCurrentLocation !== null"> | |||
<rich-text :nodes="item.appealCurrentLocation" /> | |||
</view> | |||
<view class="border"></view> | |||
<view class="myAppeal-bg" v-if="item.perfectReplyFlag === 1"> | |||
<view> | |||
<view> | |||
<image src="/static/images/ic-success.png" mode="aspectFill"></image> | |||
<text>{{ item.nickName }}</text> | |||
</view> | |||
<view class="myAppeal-conent-block">{{ toods.getDateTime(item.replyTime, 2) }}</view> | |||
</view> | |||
<view class="myAppeal-bg-conent"> | |||
<rich-text :nodes="item.appealReply"></rich-text> | |||
</view> | |||
</view> | |||
</view> | |||
<van-empty v-if="List.length === 0" description="暂时没有我的诉求" /> | |||
</view> | |||
</scroll-view> | |||
</view> | |||
</template> | |||
<!-- <script module="toods" lang="wxs" src="@/wxs/util.wxs"></script> --> | |||
<script> | |||
// const app = getApp(); | |||
// const { | |||
// enterprise, | |||
// publicApi | |||
// } = app.globalData.api; | |||
import * as publicApi from '@/api/publicApi'; | |||
import * as enterprise from '@/api/enterprise'; | |||
export default { | |||
data() { | |||
return { | |||
windowHeight: null, | |||
option: {}, | |||
type: { | |||
value: '', | |||
cssClass: '', | |||
label: '' | |||
}, | |||
status: 'appeal_process_status', | |||
typeList: [], | |||
statusList: [], | |||
List: [], | |||
params: { | |||
userId: uni.getStorageSync('userInfoData').userId, | |||
pageNo: 1, | |||
pageSize: 15 | |||
}, | |||
state: { | |||
value: '', | |||
cssClass: '', | |||
label: '' | |||
}, | |||
url: '' | |||
}; | |||
}, | |||
async onLoad(option) { | |||
const res = uni.getSystemInfoSync(); | |||
this.windowHeight = res.windowHeight | |||
this.option = option | |||
await this.getAppealList(); | |||
await this.getTypeList(); | |||
await this.getStateList(); | |||
}, | |||
methods: { | |||
// 详情页跳转 | |||
details(event) { | |||
const { | |||
item | |||
} = event.currentTarget.dataset; | |||
uni.navigateTo({ | |||
url: `/packages/enterprise/pages/details/details?id=${item.id}` | |||
}); | |||
}, | |||
// 获取我的企业列表 | |||
async getAppealList() { | |||
const res = await enterprise.getAppealListApi(this.params); | |||
if (res.data && res.data.list.length === 0) { | |||
uni.showToast({ | |||
title: '已经加载底部了', | |||
icon: 'none' | |||
}); | |||
return; | |||
} | |||
if (res.data) { | |||
this.List = this.List.concat(res.data.list) | |||
} | |||
}, | |||
// 获取类型字典 | |||
async getTypeList() { | |||
const res = await publicApi.getDictDataApi({ | |||
dictType: this.type | |||
}); | |||
if (res.data) { | |||
this.typeList = res.data.list | |||
} | |||
}, | |||
// 获取状态字典 | |||
async getStateList() { | |||
const res = await publicApi.getDictDataApi({ | |||
dictType: this.status | |||
}); | |||
if (res.data) { | |||
this.statusList = res.data.list | |||
} | |||
}, | |||
// 分页加载 | |||
headleTopLower() { | |||
const { | |||
userId, | |||
pageNo, | |||
pageSize | |||
} = this.params; | |||
this.params = { | |||
userId: userId, | |||
pageNo: pageNo + 1, | |||
pageSize: pageSize | |||
} | |||
this.getAppealList(); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
page { | |||
background-color: #fff; | |||
} | |||
.mt-20 { | |||
margin-top: 40rpx; | |||
} | |||
.mt-21 { | |||
margin-top: 21rpx; | |||
} | |||
.myAppeal { | |||
padding: 37rpx 40rpx 40rpx 40rpx; | |||
} | |||
.myAppeal>.myAppeal-title { | |||
position: relative; | |||
width: 175rpx; | |||
height: 10rpx; | |||
background: #ffe5e9; | |||
border-radius: 2rpx; | |||
line-height: 0; | |||
margin-top: 10px; | |||
text { | |||
position: absolute; | |||
top: -5px; | |||
text-align: center; | |||
width: 100%; | |||
font-size: 36rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
} | |||
} | |||
.myAppeal-conent { | |||
height: 100%; | |||
&:not(:first-child) { | |||
margin-top: 37rpx; | |||
} | |||
.godd-replay-head { | |||
display: flex; | |||
.myAppeal-head-title { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #fe3b53; | |||
} | |||
image { | |||
width: 44rpx; | |||
height: 44rpx; | |||
margin-right: 24rpx; | |||
} | |||
} | |||
.myAppeal-flex { | |||
margin-top: 32rpx; | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
.myAppeal-type { | |||
width: 88rpx; | |||
height: 38rpx; | |||
line-height: 38rpx; | |||
text-align: center; | |||
color: #fff; | |||
box-shadow: 2px 2px 2px 0px rgba(12, 181, 207, 0.1); | |||
border-radius: 8rpx; | |||
} | |||
.myAppeal-conent-title { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #fe3b53; | |||
} | |||
.myAppeal-conent-bg { | |||
padding: 5rpx 20rpx; | |||
height: 38rpx; | |||
text-align: center; | |||
color: #fff; | |||
line-height: 38rpx; | |||
box-shadow: 2px 2px 2px 0px rgba(254, 61, 85, 0.1); | |||
border-radius: 500rpx; | |||
margin-left: 39rpx; | |||
} | |||
} | |||
} | |||
.border { | |||
padding: 16rpx 0 18rpx 0; | |||
border-bottom: 1px solid #efefef; | |||
} | |||
.myAppeal-conent-block { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.myAppeal-title { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
} | |||
.myAppeal-subheading { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
margin-top: 24rpx; | |||
} | |||
.myAppeal-imgage { | |||
margin-top: 24rpx; | |||
display: grid; | |||
grid-template-columns: 1fr 1fr 1fr; | |||
image { | |||
width: 222rpx; | |||
height: 222rpx; | |||
border-radius: 10rpx; | |||
margin-right: 10rpx; | |||
} | |||
} | |||
.myAppeal-bg { | |||
width: 678rpx; | |||
background: #f7f7f7; | |||
border-radius: 8px; | |||
margin-top: 32rpx; | |||
padding: 28rpx 20rpx; | |||
view { | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
image { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-right: 8rpx; | |||
} | |||
text { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #fe3b53; | |||
} | |||
} | |||
.myAppeal-bg-conent { | |||
padding: 16rpx 0 0 40rpx; | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,211 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" left-text="关联企业" left-arrow /> | |||
<view class="enterprise" v-if="List.length !== 0"> | |||
<van-swipe-cell :right-width="80" async-close v-for="(item, index) in List" :key="index"> | |||
<view class="flex flex-v-center border" @tap="relationDetails" :data-item="item"> | |||
<image class="enterprise-icon" src="/static/packages/enterprise/image/my-appeal.png" mode="aspectFill"> | |||
</image> | |||
<view> | |||
<view class="enterprise-title">{{ item.enterpriseName }}</view> | |||
<view class="mt-24 enterprise-block"> | |||
<text class="">法人姓名:</text> | |||
<text class="red">{{ item.legalName }}</text> | |||
</view> | |||
</view> | |||
</view> | |||
<view slot="right" :data-item="item" :data-index="index" @tap="swipeCell" class="enterprise-right"> | |||
<view class="enterprise-circle"> | |||
<van-icon name="delete-o" size="28px" color="#fff" /> | |||
</view> | |||
</view> | |||
</van-swipe-cell> | |||
</view> | |||
<view class="custom-image" v-if="List.length === 0"> | |||
<view style="width: 100%"> | |||
<image class="image" src="/static/packages/enterprise/image/enterprise-none.png" mode="aspectFill"></image> | |||
<view class="custom-image-title">您还未关联任何企业</view> | |||
<van-button @tap.native="createEnterprise" custom-style="width:300rpx;height: 80rpx;" type="primary" | |||
color="#E0383E">新增关联企业</van-button> | |||
</view> | |||
</view> | |||
<view class="enterprise-button" v-if="List.length !== 0"> | |||
<van-button @tap.native="createEnterprise" custom-style="height: 80rpx;" color="#E0383E" block>新增关联企业</van-button> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
// const app = getApp(); | |||
// const { enterprise } = app.globalData.api; | |||
// import * as publicApi from '@/api/publicApi'; | |||
import * as enterprise from '@/api/enterprise'; | |||
export default { | |||
components: {}, | |||
data() { | |||
return { | |||
List: null | |||
}; | |||
}, | |||
async onLoad() { | |||
const res = uni.getSystemInfoSync(); | |||
this.getEnterpriseList(); | |||
}, | |||
methods: { | |||
// 返回上一步 | |||
onClickLeft() { | |||
uni.navigateTo({ | |||
url: '/packages/enterprise/pages/issue-appeal/issue-appeal' | |||
}); | |||
}, | |||
// 清楚对应的企业列表 | |||
async swipeCell(event) { | |||
const { | |||
item, | |||
index | |||
} = event.currentTarget.dataset; | |||
const res = await enterprise.DeleteEnterpriseIdApi(item.id); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: res.msg, | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
uni.showToast({ | |||
title: '移除成功', | |||
icon: 'none' | |||
}); | |||
const { | |||
List | |||
} = this; | |||
List.splice(index, 1); | |||
this.setData({ | |||
List: List | |||
}); | |||
}, | |||
// 跳转-添加企业 | |||
createEnterprise() { | |||
uni.navigateTo({ | |||
url: '/packages/enterprise/pages/create-enterprise/create-enterprise' | |||
}); | |||
}, | |||
// 获取企业列表 | |||
async getEnterpriseList() { | |||
const res = await enterprise.getEnterpriseListApi({ | |||
pageNo: 1, | |||
pageSize: 15, | |||
userId: uni.getStorageSync('userInfoData').userId | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
List: res.data.list | |||
}); | |||
} | |||
}, | |||
// 跳转我的诉求列表 | |||
relationDetails(event) { | |||
const { | |||
item | |||
} = event.currentTarget.dataset; | |||
uni.redirectTo({ | |||
url: `/packages/enterprise/pages/issue-appeal/issue-appeal?id=${item.id}` | |||
}); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.mt-78 { | |||
margin-top: 78rpx; | |||
} | |||
.enterprise { | |||
padding: 36rpx 36rpx 0rpx 36rpx; | |||
padding-bottom: 140rpx; | |||
} | |||
.border { | |||
padding: 23rpx 0; | |||
border-bottom: 1px solid #efefef; | |||
} | |||
.mt-24 { | |||
margin-top: 24rpx; | |||
} | |||
.enterprise-title { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
} | |||
.enterprise-block { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
} | |||
.enterprise-icon { | |||
width: 122rpx; | |||
height: 122rpx; | |||
margin-right: 23rpx; | |||
border-radius: 10rpx; | |||
} | |||
.enterprise-right { | |||
width: 160rpx; | |||
height: 100%; | |||
background: #f2f2f2; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.enterprise-circle { | |||
width: 90rpx; | |||
height: 90rpx; | |||
background-color: #e0383f; | |||
border-radius: 50%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.enterprise-button { | |||
padding: 25rpx 36rpx; | |||
position: fixed; | |||
bottom: 0; | |||
left: 0; | |||
width: 100%; | |||
background-color: #ffffff; | |||
} | |||
.custom-image { | |||
padding: 122rpx 25rpx 0 25rpx; | |||
text-align: center; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
.image { | |||
width: 100%; | |||
height: 241rpx; | |||
} | |||
.custom-image-title { | |||
margin: 78rpx 0 60rpx 0; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,243 @@ | |||
<template> | |||
<view style="height: 100%"> | |||
<custom-nav-bar position="fixed" color="black" left-text="精彩介休" left-arrow /> | |||
<view class="search"> | |||
<view> | |||
<view class="flex flex-between search-input"> | |||
<input class="input" type="text" placeholder-class="placeholder-style" placeholder="请输入你想查询的内容" /> | |||
<view class="search-icon flex flex-center"> | |||
<image class="imgage" | |||
src="https://zongzhi.xuqidata.com:5009/xq-ssg/d17f4b5125b293f8cf7ff1b633e4722c105ec1411347a9df1e0737c47300e535.png"> | |||
</image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="life-tabs"> | |||
<van-tabs :active="tabs.active" title-active-color="#FE3B53" line-width="40px" | |||
@change="onChange($event, { tagId: 'lifeListTabs' })" :ellipsis="false" id="lifeListTabs"> | |||
<van-tab :title="key.name" v-for="(key, index) in recursionList" :key="index"> | |||
<view class="life-tabs-flex"> | |||
<van-grid column-num="2" :border="false" :center="false"> | |||
<van-grid-item use-slot :url="item.clickUrl + '&name=' + item.name" | |||
v-for="(item, index1) in key.children" :key="index1"> | |||
<view class="flex flex-v-center"> | |||
<view class="life-tabs-icon flex flex-center"> | |||
<image class="icon" :src="item.icon" /> | |||
</view> | |||
<text class="life-iocn-title">{{ item.name }}</text> | |||
</view> | |||
</van-grid-item> | |||
</van-grid> | |||
</view> | |||
</van-tab> | |||
</van-tabs> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
// const app = getApp(); | |||
// const { publicApi } = app.globalData.api; | |||
import * as publicApi from '@/api/publicApi'; | |||
export default { | |||
components: {}, | |||
data() { | |||
return { | |||
// env: app.globalData.env, | |||
// appName: app.globalData.env.appName, | |||
tabs: { | |||
active: 0, | |||
list: [{ | |||
id: 1, | |||
title: '政务服务' | |||
}, | |||
{ | |||
id: 2, | |||
title: '公共服务' | |||
}, | |||
{ | |||
id: 3, | |||
title: '生活服务' | |||
}, | |||
{ | |||
id: 4, | |||
title: '企业服务' | |||
}, | |||
{ | |||
id: 5, | |||
title: '区级服务' | |||
}, | |||
{ | |||
id: 6, | |||
title: '全部' | |||
} | |||
], | |||
first: { | |||
title: '精彩介休', | |||
list: [{ | |||
bgColor: 'linear-gradient(180deg, #FC9D38 0%, #FE9153 100%)', | |||
icon: '/images/life/gourmet.png', | |||
name: '美食' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #FF5F7A 0%, #FE3B53 100%)', | |||
icon: '/images/life/market.png', | |||
name: '商场' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #FF95A7 0%, #FF6A7C 100%)', | |||
icon: '/images/life/film.png', | |||
name: '电影演出' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #F48BC0 0%, #EF6BA8 100%)', | |||
icon: '/images/life/park.png', | |||
name: '公园' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #B17DF3 0%, #A068F0 100%)', | |||
icon: '/images/life/scenic.png', | |||
name: '景点' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #22ACFB 0%, #1593F7 100%)', | |||
icon: '/images/life/hospital.png', | |||
name: '医院' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #329CF0 0%, #2789EC 100%)', | |||
icon: '/images/life/bus.png', | |||
name: '公交车' | |||
}, | |||
{ | |||
bgColor: 'linear-gradient(180deg, #8D8EFF 0%, #7375F6 100%)', | |||
icon: '/images/life/all.png', | |||
name: '全部' | |||
} | |||
] | |||
} | |||
}, | |||
recursionList: '' | |||
}; | |||
}, | |||
async onLoad() { | |||
this.recursionApi(); | |||
}, | |||
methods: { | |||
async recursionApi() { | |||
const res = await publicApi.recursionApi({ | |||
bannerType: 2, | |||
parentId: 15 | |||
}); | |||
if (res.data) { | |||
this.setData({ | |||
recursionList: res.data | |||
}); | |||
// 触发tabs重绘,解决tabs底部下划线位置错误 | |||
this.zpSelectComponent('#lifeListTabs').resize(); | |||
} | |||
}, | |||
onChange(e, _dataset) { | |||
/* ---处理dataset begin--- */ | |||
this.handleDataset(e, _dataset); | |||
/* ---处理dataset end--- */ | |||
console.log('占位:函数 onChange 未声明'); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
.right-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35px; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
border: 1px solid #e1e1e1; | |||
.icon { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.search { | |||
padding: 30rpx 30rpx 54rpx 30rpx; | |||
.search-input { | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
background: #f9f9f9; | |||
border-radius: 1000rpx; | |||
border: 1px solid #e1e1e1; | |||
.input { | |||
width: 87%; | |||
line-height: 64rpx; | |||
height: 60rpx; | |||
text-decoration: 20rpx; | |||
padding-left: 30rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
} | |||
.placeholder-style { | |||
text-align: center; | |||
color: #c1c1c1; | |||
} | |||
} | |||
.search-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 5000rpx; | |||
border: 1px solid #e1e1e1; | |||
.imgage { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.life-tabs { | |||
margin-top: 40rpx; | |||
.van-tabs__wrap { | |||
border-bottom: 1px solid #c1c1c1; | |||
} | |||
.life-tabs-flex { | |||
margin-top: 50rpx; | |||
.life-tabs-icon { | |||
width: 70rpx; | |||
height: 70rpx; | |||
box-shadow: 0px 6px 4px 0px rgba(254, 80, 107, 0.1); | |||
border-radius: 500rpx; | |||
.icon { | |||
width: 70rpx; | |||
height: 70rpx; | |||
} | |||
} | |||
.life-iocn-title { | |||
margin-left: 32rpx; | |||
font-size: 34rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
line-height: 34rpx; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,303 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" :left-text="optin.name" left-arrow /> | |||
<view class="search"> | |||
<view class="flex flex-between search-input"> | |||
<input class="input" :value="searchValue" type="text" confirm-type="search" | |||
placeholder-class="placeholder-style" placeholder="请输入搜索商户名称" @input="onSearch" @confirm="onChange" /> | |||
<view class="search-icon flex flex-center"> | |||
<image class="imgage" src="/static/images/search.png"></image> | |||
</view> | |||
</view> | |||
<view class="life-tabs" v-if="dataList.length !== 0"> | |||
<view class="life-conent" @tap="headleDetails" :data-item="item" v-for="(item, index) in dataList" :key="index"> | |||
<image class="life-conent-image" :src="item.merchantPhoto" mode="aspectFill"></image> | |||
<view class="life-conent-article flex flex-col flex-between"> | |||
<view class="life-conent-title text-line-1">{{ item.merchantName }}</view> | |||
<view class="life-conent-block text-line-2"> | |||
<rich-text :nodes="item.merchantIntroduce"></rich-text> | |||
</view> | |||
<view class="life-conent-rate flex flex-v-center flex-between"> | |||
<van-rate readonly icon="/images/void-icon2.png" void-icon="/images/rate-icon.png" | |||
:value="item.merchantGrade" /> | |||
<view> | |||
<text>距离</text> | |||
<!-- <text class="rate-loca-active">{{ $tootls.setMorKm(item.distance) }}</text> --> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<van-empty v-if="dataList.length === 0" :description="'暂无' + optin.name" /> | |||
</view> | |||
</view> | |||
</template> | |||
<!-- <script module="toods" lang="wxs" src="@/wxs/util.wxs"></script> --> | |||
<script> | |||
// const app = getApp(); | |||
// const { | |||
// lifeApi | |||
// } = app.globalData.api; | |||
import * as lifeApi from '@/api/lifeApi'; | |||
export default { | |||
components: {}, | |||
data() { | |||
return { | |||
searchValue: '', | |||
optin: { | |||
name: '' | |||
}, | |||
dataList: [], | |||
pageNo: 1, | |||
pageSize: 10, | |||
total: 0 | |||
}; | |||
}, | |||
onLoad(optin) { | |||
this.optin = optin | |||
this.merchantPageApi(); | |||
}, | |||
onReachBottom() { | |||
if (this.dataList.length === this.total) { | |||
return; | |||
} | |||
this.merchantPageApi(false); | |||
}, | |||
methods: { | |||
// 生活对应栏目的分页查询 | |||
async merchantPageApi(reset = true) { | |||
const params = this.generalQueryData(reset); | |||
const res = await lifeApi.merchantPageApi(params); | |||
let _goodsList = [] | |||
if (res.data) { | |||
const { | |||
list = [], total = 0 | |||
} = res.data; | |||
if (reset) { | |||
_goodsList = list; | |||
} else { | |||
_goodsList = this.dataList.concat(list); | |||
} | |||
this.pageNo = params.pageNo || 1; | |||
this.total = total; | |||
_goodsList.forEach((element) => { | |||
if (element.merchantIntroduce) { | |||
element.merchantIntroduce = element.merchantIntroduce.replace(/(\<img|\<p|src=null)/gi, function($0, | |||
$1) { | |||
console.log($0, $1); | |||
return { | |||
'<img': '<img style="width:100%;height:auto;display:block;" ', | |||
'<p': '<p', | |||
'<article': '<div', | |||
'</article': '</div', | |||
'<header': '<div', | |||
'</header': '</div' | |||
} [$1]; | |||
}); | |||
} | |||
}); | |||
console.log(_goodsList) | |||
this.dataList = _goodsList | |||
// this.setData({ | |||
// dataList: _goodsList | |||
// }); | |||
} | |||
}, | |||
onChange(e) { | |||
this.searchValue = e.detail.value | |||
// this.setData({ | |||
// searchValue: e.detail.value | |||
// }); | |||
this.merchantPageApi(); | |||
}, | |||
onSearch(e) { | |||
if (e.detail.value !== '') { | |||
return; | |||
} | |||
this.searchValue = e.detail.value | |||
// this.setData({ | |||
// searchValue: e.detail.value | |||
// }); | |||
this.merchantPageApi(); | |||
}, | |||
// 分页参数处理事件 | |||
generalQueryData(reset = false) { | |||
const { | |||
pageNo, | |||
pageSize, | |||
searchValue, | |||
optin | |||
} = this; | |||
// const { | |||
// latitude, | |||
// longitude | |||
// } = app.globalData.config.locationInfo; | |||
const params = { | |||
pageNo: 1, | |||
pageSize: 10 | |||
}; | |||
if (optin.type === '1') { | |||
params.latitude = latitude; | |||
params.longitude = longitude; | |||
// params.nearFlag = 1; | |||
} | |||
if (searchValue) { | |||
params.merchantName = searchValue; | |||
} | |||
if (optin.id) { | |||
params.merchantType = optin.id; | |||
} | |||
if (reset) { | |||
return params; | |||
} | |||
return { | |||
...params, | |||
pageNo: pageNo + 1, | |||
pageSize | |||
}; | |||
}, | |||
// 进入详情页 | |||
headleDetails(event) { | |||
const { | |||
id | |||
} = event.currentTarget.dataset.item; | |||
uni.navigateTo({ | |||
url: `/packages/public/pages/details/details?name=店铺详情&referId=${id}` | |||
}); | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="less"> | |||
page { | |||
--rate-icon-size: 26rpx; // 评分大小 | |||
--rate-icon-gutter: 8rpx; // 评分图标之前的距离 | |||
} | |||
.right-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35px; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
border: 1px solid #e1e1e1; | |||
.icon { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.search { | |||
padding: 30rpx 30rpx 54rpx 30rpx; | |||
.search-input { | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
background: #f9f9f9; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
text-align: center; | |||
position: relative; | |||
box-sizing: content-box; | |||
.input { | |||
width: 100%; | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
text-decoration: 20rpx; | |||
padding: 0 64rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
} | |||
.placeholder-style { | |||
text-align: center; | |||
color: #c1c1c1; | |||
} | |||
} | |||
.search-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
position: absolute; | |||
right: -1px; | |||
top: 0; | |||
z-index: 1; | |||
.imgage { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.life-tabs { | |||
margin-top: 40rpx; | |||
.van-tabs__wrap { | |||
border-bottom: 1px solid #c1c1c1; | |||
} | |||
.life-conent { | |||
margin-top: 37rpx; | |||
display: flex; | |||
justify-content: space-between; | |||
padding-bottom: 24rpx; | |||
border-bottom: 1px solid #efefef; | |||
.life-conent-image { | |||
width: 160rpx; | |||
height: 160rpx; | |||
border-radius: 10rpx; | |||
} | |||
.life-conent-article { | |||
flex: 1; | |||
margin-left: 24rpx; | |||
.life-conent-title { | |||
font-size: 30rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
line-height: 30rpx; | |||
} | |||
.life-conent-block { | |||
margin-top: 21rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 38rpx; | |||
height: 66rpx; | |||
} | |||
.life-conent-rate { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
line-height: 24rpx; | |||
margin-top: 9rpx; | |||
.rate-loca-active { | |||
color: #333333; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
</style> |