Compare commits

...

19 Commits

Author SHA1 Message Date
唐明明
ea4949e588 .. 2024-04-29 10:24:46 +08:00
唐明明
70c5d15d44 增加VIP会员 2024-04-09 17:29:23 +08:00
e520ff11d2 同步代码 2024-03-29 15:13:27 +08:00
7c70de5fe0 Merge branch 'master' of https://git.yuzhankeji.cn/zhangjing/douhuo-h5 2023-09-28 14:34:28 +08:00
8af51c5bb6 [抖火客户端H5] 2023-09-28 14:34:21 +08:00
唐明明
ed9de4abbb merge 2023-09-08 11:23:48 +08:00
唐明明
9ea40b74e7 同步 2023-09-08 11:22:13 +08:00
aaf1fafe8e Merge branch 'master' of https://git.yuzhankeji.cn/zhangjing/douhuo-h5 2023-07-28 16:56:40 +08:00
9c284ac715 修改抖火预估方案 2023-07-28 16:56:29 +08:00
唐明明
688e7f523c 移出待确认方案 2023-07-17 17:31:30 +08:00
唐明明
6277a1c29f 优化购买 2023-07-17 11:50:55 +08:00
唐明明
ad19d17644 正式环境 2023-07-12 14:05:18 +08:00
唐明明
4f9f3ae142 调整支付环境 2023-07-12 13:48:15 +08:00
唐明明
04fd83c21e 调整支付功能 2023-07-12 13:47:37 +08:00
唐明明
51297be16e Merge branch 'master' of https://git.yuzhankeji.cn/zhangjing/douhuo-h5 2023-07-12 10:38:57 +08:00
唐明明
a1e1e1d67e 调试支付 2023-07-12 10:38:55 +08:00
4422d72901 Merge branch 'master' of https://git.yuzhankeji.cn/zhangjing/douhuo-h5 2023-07-12 10:30:58 +08:00
9d6ba3efe0 最新代码,测试环境 2023-07-12 10:30:37 +08:00
850df0c9e6 测试环境 2023-07-11 14:53:48 +08:00
52 changed files with 12545 additions and 10011 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -1,16 +1,20 @@
{ // 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"
}
{
// 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"
},
{
"playground" : "standard",
"type" : "uni-app:app-android"
}
]
}

View File

@@ -8,9 +8,9 @@ import store from '@/store'
import { router } from '@/router/index.js'
// 基础配置
const config = {
apiUrl : 'https://api.douhuotest.douhuofalv.com/api/', // 测试环境
// apiUrl : 'https://douhuo.douhuofalv.com/api/', // 正式环境
const config = {
apiUrl : 'https://douhuo.douhuofalv.com/api/',
// apiUrl : 'https://douhuo.demos.uzchain.tech/api/', //测试环境
timeout : 60000
}
@@ -34,7 +34,7 @@ const request = (parameter, hideLoding) => {
// 加载提示
if(!hideLoding) uni.showLoading({
title: '加载中',
title: '加载中...',
mask : true
});
@@ -47,11 +47,11 @@ const request = (parameter, hideLoding) => {
data : parameter.data || {},
method : parameter.method || 'GET',
success : res => {
uni.hideLoading()
if (res.header.Authorization){
updateToken('token', res.header.Authorization)
}
if(res.statusCode === 200){
uni.hideLoading()
const resolveData = res.data
if(resolveData.status_code === 200) {
resolve(resolveData.data)

View File

@@ -1,11 +1,11 @@
/**
* 手太欠
* 愿这世界都如故事里一样 美好而动人~
*/
import { request } from '../index'
*/
import { request } from '../index'
// 用户注册
const Register = (data) =>{
return request({
@@ -14,65 +14,74 @@ const Register = (data) =>{
data: data
})
}
// 获取短信前图形验证码
// 获取短信前图形验证码
const Captcha = (data) =>{
return request({
url: "user/auth/captcha",
method: 'POST',
data: data
})
}
// 需校验图形验证码
}
// 需校验图形验证码
const smsAuth = (data) =>{
return request({
url: "user/auth/verify_captcha",
method: 'POST',
data: data
})
}
// 用户账号密码登录
}
// 用户账号密码登录
const Login = (data) =>{
return request({
url: "user/auth/login",
method: 'POST',
data: data
})
}
// 重置密码
}
// 重置密码
const resetPassword = (data) =>{
return request({
url: "user/auth/reset_password",
method: 'POST',
data: data
})
}
// 修改密码
}
// 修改密码
const modifyPassword = (data) =>{
return request({
url: "user/setting/reset_password",
method: 'POST',
data: data
})
}
// 隐私+协议
}
// 隐私+协议
const registeragree = (website) =>{
return request({
url: "cms/pages/" + website
})
}
// 验证码登录
const authSms = (data) =>{
return request({
url: "user/auth/sms",
method: 'POST',
data: data
})
}
export {
Register,
Captcha,
smsAuth,
Login,
resetPassword,
export {
Register,
Captcha,
smsAuth,
Login,
resetPassword,
modifyPassword,
registeragree
registeragree,
authSms
}

View File

@@ -1,238 +1,312 @@
/**
* 手太欠
* 愿这世界都如故事里一样 美好而动人~
*/
import { request } from '../index'
*/
import { request } from '../index'
// 首页数据
const home = () =>{
return request({
url: "business/home"
})
}
}
// 文章分类
const articleSort = () =>{
return request({
url: "cms/categories"
})
}
}
// 文章列表
const articleList = (data) =>{
return request({
url: "cms/articles",
url: "cms/articles",
data: data
})
}
}
// 文章详情
const articleBrief = (article_id) =>{
return request({
url: "cms/articles/" + article_id
url: "cms/articles/" + article_id
})
}
}
// 文章收藏
const collect = (article_id) =>{
return request({
url: "cms/articles/favorite/" + article_id
url: "cms/articles/favorite/" + article_id
})
}
}
// 我的文章收藏
const myCollect = (data) =>{
return request({
url: "user/favorites",
data: data
url: "user/favorites",
data: data
})
}
}
// 精选律师列表
const lawyers = (data) =>{
return request({
url: "lawyers",
data: data
url: "lawyers",
data: data
})
}
}
// 精选律师详情
const lawyersdet = (lawyer_id) =>{
return request({
url: "lawyers/" + lawyer_id
url: "lawyers/" + lawyer_id
})
}
//律师业务
}
//律师业务
const lawyersBusiness = () =>{
return request({
url: "lawyers/businesses"
url: "lawyers/businesses"
})
}
//律师业务详情
}
//律师业务详情
const businessDet = (lawyer_business_id) =>{
return request({
url: "lawyers/businesses/" + lawyer_business_id
url: "lawyers/businesses/" + lawyer_business_id
})
}
//律师订单金额
}
//律师订单金额
const lawyerOrder = (lawyer_id) =>{
return request({
url: "lawyers/" + lawyer_id + "/order"
url: "lawyers/" + lawyer_id + "/order"
})
}
//律师业务-创建订单
}
//律师业务-创建订单
const businessOrder = (lawyer_business_id) =>{
return request({
url: "lawyers/businesses/" + lawyer_business_id + "/order"
url: "lawyers/businesses/" + lawyer_business_id + "/order"
})
}
}
// 获取主业务
const workIndex = () =>{
return request({
url: "business/index"
})
}
// 获取主业务机构
}
// 获取主业务机构
const workOne = (business_id) =>{
return request({
url: "business/" + business_id + "/institution"
})
}
}
// 获取二级业务类型
const workLevel = (business_id) =>{
return request({
url: "business/institution/" + business_id + "/type"
})
}
}
// 提交基础信息
const workStore = (data) =>{
return request({
url: "business/store",
method: 'POST',
url: "business/store",
method: 'POST',
data: data
})
}
}
// 9.9预约
const Apply = (business_order_id) =>{
return request({
url: "business/apply/" + business_order_id + "/info"
url: "business/apply/" + business_order_id + "/info"
})
}
// 9.9预约--微信支付
}
// 9.9预约--微信支付
const Wechat = (apply_order_no, data) =>{
return request({
url: "pay/apply/" + apply_order_no + "/wechat",
data: data
})
}
// 咨询服务费--微信支付
url: "pay/apply/" + apply_order_no + "/wechat",
data: data
})
}
// 咨询服务费--微信支付
const applyPay = (business_order_id, data) =>{
return request({
url: "pay/order/" + business_order_id + "/wechat",
data: data
})
}
// 补差价--微信支付
url: "pay/order/" + business_order_id + "/wechat",
data: data
})
}
// 补差价--微信支付
const diffPay = (business_order_diff_price_id, data) =>{
return request({
url: "pay/diff/" + business_order_diff_price_id + "/wechat",
data: data
})
}
// 获取公众号openid
const Openid = (data) =>{
url: "pay/diff/" + business_order_diff_price_id + "/wechat",
data: data
})
}
// 获取公众号openid
const Openid = (data) =>{
return request({
url: "user/auth/official/openid",
data: data
url: "user/auth/official/openid",
data: data
})
}
// 获取授权页面
const authFollow = (data) => {
return request({
url : 'user/auth/official/url',
data: data
})
}
// 获取授权页面
const authFollow = (data) => {
return request({
url : 'user/auth/official/url',
data: data
})
}
// 获取方案
const Schemes = (business_order_id) =>{
return request({
url: "business/" + business_order_id + "/schemes"
url: "business/" + business_order_id + "/schemes"
})
}
// h5入库用户数据
const wechatCode = (data) => {
return request({
url : 'user/auth/login/wechat/add',
method: 'POST',
data: data
})
}
// 校验分享用户
const Verify = (data) => {
return request({
url : 'user/relations/verify',
data: data
})
}
// 绑定分享用户
const Bind = (data) => {
return request({
url : 'user/relations/bind',
method: 'POST',
data: data
})
}
// 账户管理类
const accountManagement = () => {
return request({
url: "account_management/index"
})
}
// h5入库用户数据
const wechatCode = (data) => {
return request({
url : 'user/auth/login/wechat/add',
method: 'POST',
data: data
})
// 账户管理类 - 办理
const accountFrom = (data, id) => {
return request({
url : "account_management/" + id + "/store",
method : "POST",
data
})
}
// 校验分享用户
const Verify = (data) => {
return request({
url : 'user/relations/verify',
data: data
})
// 账户管理类 - 订单
const accountOrder = data => {
return request({
url : "account_management/order/lists",
data
})
}
// 绑定分享用户
const Bind = (data) => {
return request({
url : 'user/relations/bind',
method: 'POST',
data: data
})
// 账户管理类 - 取消订单
const accountCancel = id => {
return request({
url : "account_management/order/" + id + "/cancel",
method : "DELETE"
})
}
export {
home,
articleSort,
articleList,
articleBrief,
collect,
myCollect,
lawyers,
lawyersdet,
lawyersBusiness,
businessDet,
lawyerOrder,
businessOrder,
workIndex,
workOne,
workLevel,
workStore,
Apply,
Wechat,
applyPay,
diffPay,
Openid,
authFollow,
Schemes,
wechatCode,
Verify,
Bind
// 委托管理类
const delegation = () => {
return request({
url: "delegation/index"
})
}
// 委托管理类 - 办理
const delegationFrom = (data, id) => {
return request({
url : "delegation/" + id + "/store",
method : "POST",
data
})
}
// 委托管理类 - 订单
const delegationOrder = data => {
return request({
url : "delegation/order/lists",
method : "POST",
data
})
}
// 委托管理类 - 取消订单
const delegationCancel = id => {
return request({
url : "delegation/order/" + id + "/cancel",
method : "DELETE"
})
}
export {
home,
articleSort,
articleList,
articleBrief,
collect,
myCollect,
lawyers,
lawyersdet,
lawyersBusiness,
businessDet,
lawyerOrder,
businessOrder,
workIndex,
workOne,
workLevel,
workStore,
Apply,
Wechat,
applyPay,
diffPay,
Openid,
authFollow,
Schemes,
wechatCode,
Verify,
Bind,
accountManagement,
accountFrom,
accountOrder,
accountCancel,
delegation,
delegationFrom,
delegationOrder,
delegationCancel
}

View File

@@ -34,7 +34,7 @@ const umsDiff = (diffPriceId, data) =>{
const umsState = (trade_id) => {
return request({
url : 'payments/query/' + trade_id,
})
}, false)
}
// 斗拱支付 - 咨询单

View File

@@ -359,6 +359,37 @@ const userSubscribe = () => {
})
}
// 会员信息
const identity = () => {
return request({
url: 'identity'
})
}
// 开通会员
const vip = data => {
return request({
url: 'identity/open',
method: 'POST',
data
})
}
// 团队列表
const team = data => {
return request({
url: 'user/relations/wechat',
data
})
}
// 获取二维码
const userQrcode = () => {
return request({
url: 'user/client/qrcode'
})
}
export {
userIndex,
realName,
@@ -404,5 +435,9 @@ export {
cacheBankPut,
getSignLogs,
getFlows,
userSubscribe
userSubscribe,
identity,
vip,
team,
userQrcode
}

445
package-lock.json generated
View File

@@ -1,190 +1,443 @@
{
"name": "douhuo-h5",
"lockfileVersion": 3,
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"@babel/parser": {
"version": "7.21.8",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.8.tgz",
"integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA=="
"packages": {
"": {
"dependencies": {
"html2canvas": "^1.4.1",
"jweixin-module": "^1.6.0",
"uni-read-pages": "^1.0.5",
"uni-simple-router": "2.0.7",
"uview-ui": "^2.0.31",
"vconsole": "^3.15.0",
"vue-canvas-poster": "^1.2.1",
"vuex": "^4.1.0"
}
},
"@babel/runtime": {
"node_modules/@babel/parser": {
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz",
"integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==",
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
"version": "7.20.13",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz",
"integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
"requires": {
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
"engines": {
"node": ">=6.9.0"
}
},
"@vue/compiler-sfc": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
"integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
"requires": {
"@babel/parser": "^7.18.4",
"postcss": "^8.4.14",
"source-map": "^0.6.1"
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"peer": true
},
"node_modules/@vue/compiler-core": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.25.tgz",
"integrity": "sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.24.4",
"@vue/shared": "3.4.25",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"@vue/devtools-api": {
"node_modules/@vue/compiler-dom": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz",
"integrity": "sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.4.25",
"@vue/shared": "3.4.25"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz",
"integrity": "sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.24.4",
"@vue/compiler-core": "3.4.25",
"@vue/compiler-dom": "3.4.25",
"@vue/compiler-ssr": "3.4.25",
"@vue/shared": "3.4.25",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.10",
"postcss": "^8.4.38",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz",
"integrity": "sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.4.25",
"@vue/shared": "3.4.25"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.4.5",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
"integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
},
"base64-arraybuffer": {
"node_modules/@vue/reactivity": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.25.tgz",
"integrity": "sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==",
"peer": true,
"dependencies": {
"@vue/shared": "3.4.25"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.25.tgz",
"integrity": "sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.4.25",
"@vue/shared": "3.4.25"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz",
"integrity": "sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==",
"peer": true,
"dependencies": {
"@vue/runtime-core": "3.4.25",
"@vue/shared": "3.4.25",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.25.tgz",
"integrity": "sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.4.25",
"@vue/shared": "3.4.25"
},
"peerDependencies": {
"vue": "3.4.25"
}
},
"node_modules/@vue/shared": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz",
"integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==",
"peer": true
},
"node_modules/base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"engines": {
"node": ">= 0.6.0"
}
},
"copy-text-to-clipboard": {
"node_modules/copy-text-to-clipboard": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz",
"integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q=="
"integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"core-js": {
"node_modules/core-js": {
"version": "3.27.2",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.27.2.tgz",
"integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w=="
"integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"css-line-break": {
"node_modules/css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"requires": {
"dependencies": {
"utrie": "^1.0.2"
}
},
"csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"html2canvas": {
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"peer": true
},
"node_modules/html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"requires": {
"dependencies": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
},
"engines": {
"node": ">=8.0.0"
}
},
"jweixin-module": {
"node_modules/jweixin-module": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"mutation-observer": {
"node_modules/magic-string": {
"version": "0.30.10",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
"integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
}
},
"node_modules/mutation-observer": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
"integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
},
"nanoid": {
"version": "3.3.6",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"postcss": {
"version": "8.4.23",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz",
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
"requires": {
"nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"regenerator-runtime": {
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/postcss": {
"version": "8.4.38",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.2.0"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/prettier": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"optional": true,
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"source-map": {
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
"node": ">=0.10.0"
}
},
"source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
"node_modules/source-map-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": {
"node": ">=0.10.0"
}
},
"text-segmentation": {
"node_modules/text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"requires": {
"dependencies": {
"utrie": "^1.0.2"
}
},
"uni-read-pages": {
"node_modules/uni-read-pages": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz",
"integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA=="
"integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==",
"hasInstallScript": true
},
"uni-simple-router": {
"version": "2.0.8-beta.4",
"resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.8-beta.4.tgz",
"integrity": "sha512-ipTHhOaRvjV8qrt3HosX5pNMhwFYBnFOuKyV5joH0evfXubjrGI5tjdwpmwzfW5h3VBth3iAqScv+pW/QmIJXw=="
"node_modules/uni-simple-router": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz",
"integrity": "sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA=="
},
"utrie": {
"node_modules/utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"requires": {
"dependencies": {
"base64-arraybuffer": "^1.0.2"
}
},
"uview-ui": {
"node_modules/uview-ui": {
"version": "2.0.31",
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz",
"integrity": "sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw=="
"integrity": "sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw==",
"engines": {
"HBuilderX": "^3.1.0"
}
},
"vconsole": {
"node_modules/vconsole": {
"version": "3.15.0",
"resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.0.tgz",
"integrity": "sha512-8hq7wabPcRucSWQyN7/1tthMawP9JPvM95zgtMHpPknMMMCKj+abpoK7P7oKK4B0qw58C24Mdvo9+raUdpHyVQ==",
"requires": {
"dependencies": {
"@babel/runtime": "^7.17.2",
"copy-text-to-clipboard": "^3.0.1",
"core-js": "^3.11.0",
"mutation-observer": "^1.0.3"
}
},
"vue": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz",
"integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==",
"requires": {
"@vue/compiler-sfc": "2.7.14",
"csstype": "^3.1.0"
}
},
"vue-canvas-poster": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz",
"integrity": "sha512-YY5ygbeQSqhiJyj6QXYgSRZ6Ywhvi1gVsfcvBIoCx4Yq9E/gAV32uOhnZz45qsklP86uGc9ypKJAXiX6Dzrdxw==",
"requires": {
"core-js": "^2.6.5",
"vue": "^2.6.10"
},
"node_modules/vue": {
"version": "3.4.25",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz",
"integrity": "sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==",
"peer": true,
"dependencies": {
"core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
"@vue/compiler-dom": "3.4.25",
"@vue/compiler-sfc": "3.4.25",
"@vue/runtime-dom": "3.4.25",
"@vue/server-renderer": "3.4.25",
"@vue/shared": "3.4.25"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"vuex": {
"node_modules/vue-canvas-poster": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz",
"integrity": "sha512-YY5ygbeQSqhiJyj6QXYgSRZ6Ywhvi1gVsfcvBIoCx4Yq9E/gAV32uOhnZz45qsklP86uGc9ypKJAXiX6Dzrdxw==",
"dependencies": {
"core-js": "^2.6.5",
"vue": "^2.6.10"
}
},
"node_modules/vue-canvas-poster/node_modules/@vue/compiler-sfc": {
"version": "2.7.16",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
"dependencies": {
"@babel/parser": "^7.23.5",
"postcss": "^8.4.14",
"source-map": "^0.6.1"
},
"optionalDependencies": {
"prettier": "^1.18.2 || ^2.0.0"
}
},
"node_modules/vue-canvas-poster/node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/vue-canvas-poster/node_modules/vue": {
"version": "2.7.16",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
"dependencies": {
"@vue/compiler-sfc": "2.7.16",
"csstype": "^3.1.0"
}
},
"node_modules/vuex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"requires": {
"dependencies": {
"@vue/devtools-api": "^6.0.0-beta.11"
},
"peerDependencies": {
"vue": "^3.2.0"
}
}
}

View File

@@ -84,7 +84,16 @@
"aliasPath": "/login/login",
"name": "Login",
"style": {
"navigationBarTitleText": "抖火法律-登录"
"navigationBarTitleText": "抖火法律-验证码登录",
"navigationStyle": "custom"
}
}, {
"path": "pages/login/passwordLogin",
"aliasPath": "/login/passwordLogin",
"name": "PasswordLogin",
"style": {
"navigationBarTitleText": "抖火法律-密码登录",
"navigationStyle": "custom"
}
}, {
"path": "pages/login/agreement",
@@ -656,6 +665,69 @@
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},{
"path" : "pages/management/account",
"aliasPath": "/management/account",
"name" : "MagAccount",
"style" : {
"navigationBarTitleText" : "账户咨询办理",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/management/delegation",
"name" : "MagDelegation",
"aliasPath": "/management/delegation",
"style" : {
"navigationBarTitleText" : "委托管理办理",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/work/account",
"name" : "AccountWork",
"aliasPath": "/work/account",
"style" : {
"navigationBarTitleText" : "账户管理咨询类",
"enablePullDownRefresh" : false,
"navigationBarBackgroundColor": "#FFFFFF"
}
},{
"path" : "pages/work/delegation",
"name" : "DelegationWork",
"aliasPath": "/work/delegation",
"style" : {
"navigationBarTitleText" : "委托管理类",
"enablePullDownRefresh" : false,
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path" : "pages/user/vip",
"aliasPath": "/vip",
"name": "vip",
"style" : {
"navigationBarTitleText" : "会员中心",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/user/team",
"aliasPath": "/team",
"name": "Tema",
"style" : {
"navigationBarTitleText" : "团队",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/index/lawyers",
"aliasPath": "/lawyers",
"name": "Lawyers",
"style" : {
"navigationBarTitleText" : "金牌律师",
"enablePullDownRefresh" : false
}
}
],
"globalStyle": {

View File

@@ -116,8 +116,7 @@
params: {
orderId : order_id,
orderType : order_type,
price : this.allPrice
}
},
})
}).catch(err => {
uni.showToast({

View File

@@ -31,7 +31,7 @@
<rich-text :nodes="content"></rich-text>
<!-- 报名信息 -->
<view class="footer">
<view class="footer-btn" @click="onBuy">立即购买</view>
<view :class="['footer-btn', count.ing <= 0 ? 'in' : '']" @click="onBuy">立即购买</view>
</view>
</view>
</template>
@@ -72,6 +72,13 @@
},
methods: {
onBuy(){
if(this.count.ing <= 0){
uni.showToast({
title: '暂无可报名学期',
icon : 'none'
})
return
}
this.$Router.push({
name : 'EmpowerBuy',
params : { id: this.id }
@@ -131,5 +138,6 @@
background-color: white;
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, .04);
.footer-btn{ background: $mian-color; color: white; line-height: 100rpx; border-radius: 50rpx; flex: 1; text-align: center; font-weight: bold; font-size: 36rpx; }
.footer-btn.in{ opacity: .6; }
}
</style>

View File

@@ -7,11 +7,12 @@
<!-- logo -->
<view class="topCont-logo">
<image class="topCont-logo-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/fbd7ddba29e4ac81467b3d218233bb02.png" mode="widthFix"></image>
<view class="topCont-logo-go" @click="seekClick">
立即咨询
<view>
<view class="topCont-logo-btn" @click="seekClick">
立即咨询
</view>
</view>
</view>
<!-- 专业优质在线法律平台 -->
<view class="topCont-text">
<view class="topCont-text-name">
@@ -46,10 +47,16 @@
</block>
</swiper>
</view>
</view>
</view>
<!-- 开通会员 -->
<image
style="width: 100%; vertical-align: top;"
src="/static/vip.png"
mode="widthFix"
@click="$Router.push({name: 'vip'})" v-if="vip.name != ''"
></image>
<!-- 新增改版 - 协商调解类 -->
<view class="module">
<view class="module" style="display: none;">
<view class="module-title">
协商调解类
</view>
@@ -76,13 +83,53 @@
</view>
</view>
<!-- 账户管理咨询类 -->
<view class="module" v-if="accountData.length > 0" style="display: none;">
<view class="module-title">
账户管理咨询类
</view>
<scroll-view class="law" scroll-x="true" show-scrollbar="false">
<view class="law-label" v-for="(item, index) in accountData" :key="index" @click="onMagInfo('Account', item.id)">
<image class="law-label-img" :src="item.cover" mode="widthFix"></image>
<view class="law-label-cont">
<view class="nowrap law-label-name">
{{item.title}}
</view>
<view class="law-label-price">
{{item.price}}
</view>
</view>
</view>
</scroll-view>
</view>
<!-- 委托管理类 -->
<view class="module" v-if="delegation.length > 0" style="display: none;">
<view class="module-title">
委托管理类
</view>
<scroll-view class="law" scroll-x="true" show-scrollbar="false">
<view class="law-label" v-for="(item, index) in delegation" :key="index" @click="onMagInfo('Delegation', item.id)">
<image class="law-label-img" :src="item.cover" mode="widthFix"></image>
<view class="law-label-cont">
<view class="nowrap law-label-name">
{{item.title}}
</view>
<view class="law-label-price">
{{item.price}}
</view>
</view>
</view>
</scroll-view>
</view>
<!-- 新增改版 - 法律资讯类 -->
<view class="module">
<view class="module-title">
法律咨询类
企业法律顾问
</view>
<scroll-view class="law" scroll-x="true" show-scrollbar="false">
<view class="law-label" @click="clickBrief">
<!-- <view class="law-label" @click="clickBrief">
<image class="law-label-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/18/f3db072ac405edf2a3dc3fd6c3aae206.png" mode="widthFix"></image>
<view class="law-label-cont">
<view class="law-label-name">
@@ -95,7 +142,7 @@
365.00/
</view>
</view>
</view>
</view> -->
<view class="law-label" @click="$Router.push({name: 'StandBrief', params: {type: 2}})">
<image class="law-label-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/18/d813f30a393e6d50df8cc59a36e557c8.png" mode="widthFix"></image>
<view class="law-label-cont">
@@ -158,7 +205,7 @@
<!-- 新增改版 - 诉讼委托类 -->
<view class="module">
<view class="module-title">
诉讼委托
案件诉讼委托
</view>
<view class="topCont-tool">
<view class="topCont-tool-label redBlock" @click="$Router.push({name: 'EntrustBrief'})">
@@ -187,7 +234,7 @@
</view>
<!-- 新增改版 - 增收赋能类 -->
<view class="module">
<view class="module" style="display: none;">
<view class="module-title">
增收赋能类
</view>
@@ -232,7 +279,8 @@
<!-- 金牌律师 -->
<view class="list">
<view class="list-title">
金牌律师
金牌律师
<view class="list-title-sm" @click="$Router.push({ name: 'Lawyers' })">全部</view>
</view>
<view class="lawyer">
<view class="lawyer-item" v-for="(item, index) in lawyersArr" :key="index" @click="$Router.push({name: 'lawyerDetails', params: {id: item.lawyer_id}})">
@@ -349,7 +397,7 @@
</template>
<script>
import { workIndex, home, articleSort, articleList } from '@/apis/interfaces/index'
import { workIndex, home, articleSort, articleList, accountManagement, delegation } from '@/apis/interfaces/index'
import { judgeReal, userIndex, authFollow } from '@/apis/interfaces/user'
import { lists } from '@/apis/interfaces/empower.js'
export default {
@@ -357,7 +405,11 @@
return {
businessArr : [], // 协商调解数组
canBuy : '', // 是否有免费个人咨询
officialShow : false, // 公众号
officialShow : false, // 公众号
vip : {
name: ""
},
autoplay : true,
interval : 3000,
@@ -377,9 +429,14 @@
first : 1,
layadState : '',
layadImg : '',
haveimg : '',
haveimg : '',
// 增收赋能列表
empowerArr : []
empowerArr : [],
// 账户管理类
accountData : [],
// 委托管理类
delegation : []
}
},
onShow() {
@@ -403,7 +460,13 @@
this.articleItem();
// 增收赋能
this.getEmpower()
this.getEmpower();
// 账户管理类
this.getManagement();
// 委托管理类
this.getDelegation();
if(this.$store.getters.getToken) {
userIndex().then(res => {
@@ -417,7 +480,40 @@
}
},
methods: {
methods: {
// 获取账户管理类
getManagement(){
accountManagement().then(res => {
let accountData = res
this.accountData = accountData
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 获取委托管理类
getDelegation(){
delegation().then(res => {
let delegationData = res
this.delegation = delegationData
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 查看管理类业务
onMagInfo(type, id){
this.$Router.push({
name : 'Mag' + type,
params : { id }
})
},
// 增收赋能接口
getEmpower(){
lists().then(res => {
@@ -431,11 +527,10 @@
},
// 首页数据
homeInfo() {
home().then(res => {
home().then(res => {
if(res.layad.is_lay_ad) {
this.layadImg = res.layad.lay_ad_img
}
let times = Number(res.layad.times.padEnd(4, 0))
if(this.first === 1 && res.layad.is_lay_ad) {
this.haveimg = true
@@ -445,7 +540,8 @@
this.haveimg = false
},times);
}
}
this.vip = res.vip
this.homeList = res.categories
this.lawyersArr = res.lawyers
this.noticesArr = res.notices
@@ -716,7 +812,9 @@
position: relative;
.topCont-logo {
display: flex;
line-height: 58rpx;
line-height: 58rpx;
justify-content: space-between;
align-items: center;
.topCont-logo-img {
margin-right: 15rpx;
width: 190rpx;
@@ -725,19 +823,17 @@
font-weight: 600;
}
.topCont-logo-go {
.topCont-logo-btn {
background-color: #ffffff;
border-radius: $radius*5;
text-align: center;
color: $mian-color;
font-size: $title-size;
line-height: 72rpx;
line-height: 68rpx;
font-weight: 600;
display: inline-block;
position: absolute;
right: $margin;
top: $margin + 10;
padding: 0 $padding + 10;
padding: 0 $padding;
&:last-child{ margin-left: 20rpx; }
}
}
.topCont-text {
@@ -883,7 +979,11 @@
.list-title {
font-weight: 600;
margin-bottom: 10rpx;
color: $text-color;
color: $text-color;
display: flex;
align-items: center;
justify-content: space-between;
&-sm{ font-size: 30rpx; color: gray; font-weight: normal; }
}
.lawyer {
overflow: hidden;

View File

@@ -1,232 +1,232 @@
<template>
<view class="content">
<image @click="sheetClick" class="introduce-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/18/8110e4f3606a37358b60f39e026cc24f.jpg" mode="widthFix"></image>
<!-- <view class="introduce-number">
你有新的预约单
<view class="number">
3
</view>
</view>
<view class="introduce-btn" @click="$Router.push({name: 'sheetIdcard'})">
<view class="btn">
立即咨询 9.9
</view>
</view> -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
generalShow: false // 公众号
}
},
onLoad() {
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetFeerCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
// page {
// background-color: #446efe;
// }
.introduce-img {
width: 100%;
display: inline-block;
}
.introduce-number {
position: fixed;
right: $margin;
bottom: 180rpx;
z-index: 9;
background-color: #ffffff;
border-radius: $radius * 5;
color: $mian-color;
font-size: $title-size-m;
padding: 0 $padding;
line-height: 68rpx;
display: inline-block;
box-shadow: 0 2rpx 10rpx rgba(218, 43, 86, .3);
.number {
position: absolute;
z-index: 10;
top: -25rpx;
right: 0;
border-radius: 50%;
text-align: center;
background-color: $mian-color;
color: #ffffff;
width: 48rpx;
height: 48rpx;
line-height: 48rpx;
font-size: $title-size-sm;
text-align: center;
}
}
.introduce-btn {
position: fixed;
width: 100%;
left: 0;
bottom: 0;
text-align: center;
padding: $padding;
box-sizing: border-box;
.btn {
background-color: #ffffff;
color: $mian-color;
font-weight: 600;
border-radius: $radius-sm;
width: 100%;
line-height: 90rpx;
font-size: $title-size;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
<template>
<view class="content">
<image @click="sheetClick" class="introduce-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/18/8110e4f3606a37358b60f39e026cc24f.jpg" mode="widthFix"></image>
<!-- <view class="introduce-number">
你有新的预约单
<view class="number">
3
</view>
</view>
<view class="introduce-btn" @click="$Router.push({name: 'sheetIdcard'})">
<view class="btn">
立即咨询 9.9
</view>
</view> -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
generalShow: false // 公众号
}
},
onLoad() {
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetFeerCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
// page {
// background-color: #446efe;
// }
.introduce-img {
width: 100%;
display: inline-block;
}
.introduce-number {
position: fixed;
right: $margin;
bottom: 180rpx;
z-index: 9;
background-color: #ffffff;
border-radius: $radius * 5;
color: $mian-color;
font-size: $title-size-m;
padding: 0 $padding;
line-height: 68rpx;
display: inline-block;
box-shadow: 0 2rpx 10rpx rgba(218, 43, 86, .3);
.number {
position: absolute;
z-index: 10;
top: -25rpx;
right: 0;
border-radius: 50%;
text-align: center;
background-color: $mian-color;
color: #ffffff;
width: 48rpx;
height: 48rpx;
line-height: 48rpx;
font-size: $title-size-sm;
text-align: center;
}
}
.introduce-btn {
position: fixed;
width: 100%;
left: 0;
bottom: 0;
text-align: center;
padding: $padding;
box-sizing: border-box;
.btn {
background-color: #ffffff;
color: $mian-color;
font-weight: 600;
border-radius: $radius-sm;
width: 100%;
line-height: 90rpx;
font-size: $title-size;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
</style>

178
pages/index/lawyers.vue Normal file
View File

@@ -0,0 +1,178 @@
<template>
<view class="content">
<block v-if="lawyersArr.length > 0">
<view class="lawyer">
<view class="lawyer-item" v-for="(item, index) in lawyersArr" :key="index" @click="$Router.push({name: 'lawyerDetails', params: {id: item.lawyer_id}})">
<view class="lawyer-item-img">
<!-- 5:6 -->
<image :src="item.cover" mode="aspectFill"></image>
<view class="nowrap lawyer-item-name">
{{item.name}}
</view>
</view>
<view class="lawyer-item-cont">
<view class="nowrap lawyer-item-tips">
擅长
<block v-for="(items, itemsIndex) in item.tags" :key="itemsIndex">
{{items.name}},
</block>
</view>
<view class="lawyer-item-price">
<!-- <view class="lawyer-item-number">{{item.price}}</view> -->
<!-- <text>{{item.years}}+人咨询</text> -->
</view>
</view>
</view>
</view>
<!-- 分页 -->
<u-loadmore v-if="pagesShow" :status="status" />
</block>
<block v-else>
<view class="list-null">
<u-empty
mode="data"
icon="http://cdn.uviewui.com/uview/empty/data.png"
text="暂无律师数据"
>
</u-empty>
</view>
</block>
</view>
</template>
<script>
import { lawyers } from "@/apis/interfaces/index.js"
export default {
data() {
return {
lawyersArr : [],
// 分页
page : {
current : 1,
has_more: false,
},
pagesShow : false,
status : false,
};
},
created() {
this.getList()
},
methods: {
// 获取列表
getList(){
uni.showLoading({
title: '加载中...',
mask : true
})
lawyers({
larer : 1,
page : this.page.current,
}).then(res => {
console.log(res)
let { data, page } = res;
let atList = page.current == 1 ? [] : this.lawyersArr
this.lawyersArr = atList.concat(data)
this.page = page
this.pagesShow = false
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
onCallPhone(phone){
uni.makePhoneCall({
phoneNumber: phone
})
}
},
onReachBottom() {
this.pagesShow = true;
if(this.page.has_more){
this.status = 'loading';
this.page.current++
this.getList()
return
}
this.status = 'nomore';
}
}
</script>
<style lang="scss">
.content{
box-sizing: border-box;
background: white;
padding-top: 1rpx;
}
// 列表
.lawyer {
overflow: hidden;
margin: 20rpx 15rpx 0;
.lawyer-item {
background-color: #fff;
width: calc(50% - 30rpx);
float: left;
margin: 0 15rpx $margin;
border: 2rpx solid #f1f1f1;
box-sizing: border-box;
border-radius: $radius-m;
overflow: hidden;
.lawyer-item-img {
position: relative;
width: 100%;
padding-top: 55%;
overflow: hidden;
background-color: #515151;
image {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
.lawyer-item-name {
position: absolute;
width: 100%;
left: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .1);
line-height: 54rpx;
color: #ffffff;
padding: 0 $padding - 10;
box-sizing: border-box;
font-size: $title-size-lg;
}
}
.lawyer-item-cont {
padding: $padding - 10;
box-sizing: border-box;
.lawyer-item-tips {
font-size: $title-size-m;
color: $text-color;
}
.lawyer-item-price {
display: flex;
margin-top: 10rpx;
line-height: 44rpx;
.lawyer-item-number {
flex: 1;
color: $mian-color;
font-weight: 600;
font-size: $title-size;
}
text {
font-size: $title-size-sm;
color: #9d9d9d;
}
}
}
}
}
// 空页面
.list-null{ height: 60vh; display: flex; align-items: center; justify-content: center; }
</style>

View File

@@ -1,228 +1,228 @@
<template>
<view class="content">
<view class="sheet">
<rich-text :nodes="articleContent"></rich-text>
<!-- 立即咨询 -->
<view class="lawyerBtn">
<view class="lawyerBtn-name">您的心事我们</view>
<!-- @click="$Router.push({name: 'indexSortpay', params:{id: lawyersData.lawyer_business_id, type:'business'}})" -->
<image class="lawyerBtn-img lawyerBtn-go" @click="sheetClick" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e1323131217b0ca7e1ed2e89a55a0740.png" mode="widthFix"></image>
<image class="lawyerBtn-img lawyerBtn-see" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e4f37a76780df657cda85c242bfd792c.png" mode="widthFix"></image>
</view>
</view>
<!-- 关注 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
<template>
<view class="content">
<view class="sheet">
<rich-text :nodes="articleContent"></rich-text>
<!-- 立即咨询 -->
<view class="lawyerBtn">
<view class="lawyerBtn-name">您的心事我们</view>
<!-- @click="$Router.push({name: 'indexSortpay', params:{id: lawyersData.lawyer_business_id, type:'business'}})" -->
<image class="lawyerBtn-img lawyerBtn-go" @click="sheetClick" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e1323131217b0ca7e1ed2e89a55a0740.png" mode="widthFix"></image>
<image class="lawyerBtn-img lawyerBtn-see" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e4f37a76780df657cda85c242bfd792c.png" mode="widthFix"></image>
</view>
</view>
<!-- 关注 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { businessDet, authFollow } from '@/apis/interfaces/index'
import { judgeReal } from '@/apis/interfaces/user'
export default {
data() {
return {
lawyersData : '',
articleContent : '',
generalShow : false // 公众号
}
},
onShow() {
// 律师业务详情
this.lawyersInfo()
},
methods: {
// 业务详情
lawyersInfo() {
businessDet(this.$Route.query.id).then(res => {
this.lawyersData = res
this.articleContent= res.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"')
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
<script>
import { businessDet, authFollow } from '@/apis/interfaces/index'
import { judgeReal } from '@/apis/interfaces/user'
export default {
data() {
return {
lawyersData : '',
articleContent : '',
generalShow : false // 公众号
}
},
onShow() {
// 律师业务详情
this.lawyersInfo()
},
methods: {
// 业务详情
lawyersInfo() {
businessDet(this.$Route.query.id).then(res => {
this.lawyersData = res
this.articleContent= res.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"')
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
.sheet {
width: 100%;
height: 100%;
position: relative;
left: 0;
top: 0;
}
.lawyerBtn {
position: absolute;
z-index: 99;
left: 0;
bottom: $padding;
width: 100%;
padding: $padding - 10 $padding;
box-sizing: border-box;
text-align: center;
.lawyerBtn-name {
font-size: $title-size-sm - 2;
line-height: 60rpx;
opacity: .9;
color: #fff;
}
.lawyerBtn-img {
display: block;
margin: 0 auto;
}
.lawyerBtn-go {
width: 42%;
margin: 15rpx auto;
}
.lawyerBtn-see {
width: 60%;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
<style lang="scss" scoped>
.sheet {
width: 100%;
height: 100%;
position: relative;
left: 0;
top: 0;
}
.lawyerBtn {
position: absolute;
z-index: 99;
left: 0;
bottom: $padding;
width: 100%;
padding: $padding - 10 $padding;
box-sizing: border-box;
text-align: center;
.lawyerBtn-name {
font-size: $title-size-sm - 2;
line-height: 60rpx;
opacity: .9;
color: #fff;
}
.lawyerBtn-img {
display: block;
margin: 0 auto;
}
.lawyerBtn-go {
width: 42%;
margin: 15rpx auto;
}
.lawyerBtn-see {
width: 60%;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
</style>

View File

@@ -1,218 +1,341 @@
<template>
<view class="content">
<img class="loginBack" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5682d339246af0f44b4984c849288aa5.png">
<img class="loginBottom" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/caa46039d88517ee8ba22b6c32dd47a1.png">
<view class="title">
<view class="title-name">
用户登录
</view>
<view class="title-tips">
密码登录仅适用于已注册用户
</view>
</view>
<view class="info">
<view class="info-cont">
<!-- 输入手机号相关 -->
<view class="inputs">
<input type="number" placeholder="请输入手机号" maxlength="11" v-model="phone" />
</view>
<!-- 输入密码 -->
<view class="inputs">
<input type="text" :password="passwordState" placeholder="请输入密码" v-model="password" />
<image class="inputs-see" @click="seeClick" :src="seeState ? '../../static/icon/see_active.png' : '../../static/icon/see.png'" mode="aspectFill"></image>
</view>
<button class="btn" type="default" @click="LoginSms" :disabled="phone == '' || password == ''">立即登录</button>
<view class="forget">
<view class="forget-label" @click="$Router.push({name: 'Register'})">我要注册</view>
<view class="forget-label forget-after" @click="$Router.push({name: 'Forget'})">忘记密码?</view>
</view>
</view>
<!-- 用户登录注册协议 -->
<view class="agreement">
<checkbox-group @change="radioChange">
<checkbox color="#da2b56" :checked="checked" style="transform: scale(.55)" class="radioGroup" />
</checkbox-group>
<view class="agreement-text">
我已阅读并同意抖火法律<view @click="$Router.push({name: 'Agreement', params: {page : 3}})">隐私协议</view><view @click="$Router.push({name: 'Agreement', params: {page : 4}})">服务协议</view>
</view>
</view>
</view>
<img class="loginBack" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5682d339246af0f44b4984c849288aa5.png">
<img class="loginBottom" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/caa46039d88517ee8ba22b6c32dd47a1.png">
<view class="title">
<view class="title-name">
用户登录
</view>
<view class="title-tips">
手机验证码登录
</view>
</view>
<view class="info">
<view class="info-cont">
<!-- 输入手机号相关 -->
<view class="inputs">
<input type="number" placeholder="请输入手机号" maxlength="11" v-model="phone" />
</view>
<view class="captcha-inputs">
<view class="captcha-campus-inputs campus-inputs">
<input class="campus-form-input" type="text" placeholder="请输入图文验证码" v-model="newCaptcha" />
</view>
<image class="campus-form-graph" :src="captchaImg" mode="widthFix" @click="replaceClick"></image>
</view>
<view class="inputs captcha-inputs">
<input class="campus-form-input" type="number" placeholder="请输入验证码" v-model="code" maxlength="4"></input>
<button @click="checkCaptcha" class="campus-form-code ":disabled="phone == ''" type="default" size="mini">{{getSms ? '重新发送' + smsTime + 's': '发送验证码'}}</button>
</view>
<button class="btn" type="default" @click="LoginSms" :disabled="phone == '' || code == ''">立即登录</button>
<view class="forget">
<view class="forget-label" @click="$Router.push({name: 'Register'})">我要注册</view>
<view class="forget-label forget-after" @click="$Router.push({name: 'PasswordLogin'})">密码登录</view>
</view>
</view>
<!-- 用户登录注册协议 -->
<view class="agreement">
<checkbox-group @change="radioChange">
<checkbox color="#da2b56" :checked="checked" style="transform: scale(.55)" class="radioGroup" />
</checkbox-group>
<view class="agreement-text">
我已阅读并同意抖火法律<view @click="$Router.push({name: 'Agreement', params: {page : 3}})">隐私协议</view><view @click="$Router.push({name: 'Agreement', params: {page : 4}})">服务协议</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { Login } from '@/apis/interfaces/auth'
<script>
import { Login, Captcha, smsAuth, authSms } from '@/apis/interfaces/auth'
export default {
data() {
return {
phone : '', // 手机号码
password: '', // 登录密码
checked : false, // 勾选协议
seeState : false, //小眼睛
passwordState: true,
phone : '', // 手机号码
password : '', // 登录密码
checked : false, // 勾选协议
seeState : false, //小眼睛
passwordState: true,
disabled : false,
code : '', // 短信验证码
getSms : '',
smsTime : 60,
newCaptcha : '', // 填写图形码
captcha : '', // 输入图形码
captchaImg : '', // 图形码
}
},
methods: {
// 用户登录
LoginSms() {
if(this.checked) {
Login({
username : this.phone,
password : this.password
}).then(res => {
// 存储用户token
this.$store.commit('setToken', res.token_type + ' ' + res.access_token)
// 回到首页
this.$Router.replaceAll({name: 'Index'})
// this.$Router.back()
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
} else {
uni.showToast({
title: '请勾选用户隐私和服务协议',
icon: "none"
})
}
},
// 勾选协议
radioChange() {
this.checked = !this.checked
},
// 查看密码
seeClick() {
this.seeState = !this.seeState
this.passwordState = !this.passwordState
},
}
},
// 生命周期函数--监听页面显示
onShow() {
// 获取图形码
this.captchaInfo()
},
methods: {
// 图形码
captchaInfo() {
Captcha().then(res=>{
this.captchaImg = res.img
this.captchaKey = res.key
}).catch(err=>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 看不清,换一张 - 图形码数据
replaceClick() {
this.captchaInfo();
// 清除图形码数据
this.newCaptcha = ''
},
// 需校验图形验证码
checkCaptcha() {
if(this.phone) {
let outTime
smsAuth({
mobileNo : this.phone,
captcha : this.newCaptcha,
captcha_key: this.captchaKey
}).then(res => {
uni.showToast({
title: res.message,
icon: "none"
})
this.getSms = true
outTime = setInterval(() => {
if (this.smsTime <= 1) {
this.getSms = false
this.smsTime = 60
clearInterval('outTime')
}
this.smsTime -= 1
}, 1000)
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
return
}
uni.showToast({
title: '请输入手机号',
icon: "none"
})
},
// 勾选协议
radioChange() {
this.checked = !this.checked
},
// 验证码登录
LoginSms() {
if(this.checked) {
authSms({
mobileNo : this.phone,
parent_id : '',
code : this.code
}).then(res => {
// 存储用户token
this.$store.commit('setToken', res.token_type + ' ' + res.access_token)
// 回到首页
this.$Router.replaceAll({name: 'Index'})
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
} else {
uni.showToast({
title: '请勾选用户隐私和服务协议',
icon: "none"
})
}
}
}
}
</script>
<style lang="scss" scoped>
.loginBack {
width: 35%;
position: fixed;
top: 0;
right: 0;
}
.loginBottom {
width: 60%;
position: fixed;
bottom: 0;
left: 0;
}
.agreement {
padding: $padding 0 $padding - 20 $padding - 10;
box-sizing: border-box;
display: flex;
font-size: $title-size-sm;
width: 100%;
line-height: 60rpx;
color: #979797;
.radioGroup {
font-size: $title-size-sm;
}
.agreement-text {
display: flex;
width: 100%;
view {
color: $mian-color;
padding: 0 5rpx;
}
}
}
.title {
padding: $padding*4 $padding * 3 $padding*2;
box-sizing: border-box;
.title-name {
font-size: $title-size + 10;
margin-bottom: $margin - 10;
}
.title-tips {
color: #8e8e8e;
font-size: $title-size-m;
}
}
.info {
padding: $padding * 3 0;
box-sizing: border-box;
position: absolute;
z-index: 6;
width: 100%;
.info-cont {
padding: 0 $padding * 3;
box-sizing: border-box;
}
.inputs {
background-color: #f7f8fa;
height: 100rpx;
line-height: 100rpx;
margin-bottom: $margin + 20;
box-sizing: border-box;
color: #868686;
font-size: $title-size-m;
padding: 0 $padding + 10;
border-radius: $radius-m;
box-sizing: border-box;
position: relative;
.inputs-see {
position: absolute;
right: $padding;
top: $padding;
width: 38rpx;
height: 38rpx;
}
input {
font-weight: normal;
height: 100%;
}
}
.btn {
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
color: #ffffff;
border-radius: $radius-m;
font-size: $title-size;
height: 100rpx;
line-height: 100rpx;
padding: 0;
margin: $margin * 3 0 0;
&[disabled] {
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
}
}
.forget {
display: flex;
line-height: 120rpx;
font-size: $title-size-m;
.forget-label {
flex: 2;
text-align: center;
color: #7f8391;
}
.forget-after {
position: relative;
&::after {
position: absolute;
content: '';
left: 0;
bottom: calc(50% - 15rpx);
width: 2rpx;
height: 30rpx;
background-color: #f6f6f6;
}
}
}
<style lang="scss" scoped>
.loginBack {
width: 35%;
position: fixed;
top: 0;
right: 0;
}
.loginBottom {
width: 60%;
position: fixed;
bottom: 0;
left: 0;
}
.agreement {
padding: $padding 0 $padding - 20 $padding - 10;
box-sizing: border-box;
display: flex;
font-size: $title-size-sm;
width: 100%;
line-height: 60rpx;
color: #979797;
.radioGroup {
font-size: $title-size-sm;
}
.agreement-text {
display: flex;
width: 100%;
view {
color: $mian-color;
padding: 0 5rpx;
}
}
}
.title {
padding: $padding*4 $padding * 3 $padding*2;
box-sizing: border-box;
.title-name {
font-size: $title-size + 10;
margin-bottom: $margin - 10;
}
.title-tips {
color: #8e8e8e;
font-size: $title-size-m;
}
}
.info {
padding: $padding * 3 0;
box-sizing: border-box;
position: absolute;
z-index: 6;
width: 100%;
.info-cont {
padding: 0 $padding * 3;
box-sizing: border-box;
}
.inputs {
background-color: #f7f8fa;
height: 100rpx;
line-height: 100rpx;
margin-bottom: $margin + 20;
box-sizing: border-box;
color: #868686;
font-size: $title-size-m;
padding: 0 $padding + 10;
border-radius: $radius-m;
box-sizing: border-box;
position: relative;
.inputs-see {
position: absolute;
right: $padding;
top: $padding;
width: 38rpx;
height: 38rpx;
}
input {
font-weight: normal;
height: 100%;
}
}
.btn {
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
color: #ffffff;
border-radius: $radius-m;
font-size: $title-size;
height: 100rpx;
line-height: 100rpx;
padding: 0;
margin: $margin * 3 0 0;
&[disabled] {
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
}
}
.forget {
display: flex;
line-height: 120rpx;
font-size: $title-size-m;
.forget-label {
flex: 2;
text-align: center;
color: #000000;
}
.forget-after {
position: relative;
&::after {
position: absolute;
content: '';
left: 0;
bottom: calc(50% - 15rpx);
width: 2rpx;
height: 30rpx;
background-color: #f6f6f6;
}
}
}
}
.captcha-inputs {
height: 100rpx;
display: flex;
margin-top: $margin + 20;
.campus-form-graph {
width: 220rpx;
margin-top: 20rpx;
border-radius: 5rpx;
}
.captcha-campus-inputs{
flex: 1;
margin-right: 20rpx;
}
.campus-inputs {
background-color: #f7f8fa;
height: 100rpx;
line-height: 100rpx;
box-sizing: border-box;
color: #868686;
font-size: $title-size-m;
padding: 0 $padding + 10;
border-radius: $radius-m;
box-sizing: border-box;
position: relative;
input {
font-weight: normal;
height: 100%;
}
}
.campus-form-code{
position: absolute;
top: 0;
right: 30rpx;
padding: 0;
margin: 0;
background-color: transparent;
font-size: 30rpx;
height: 100rpx;
line-height: 100rpx;
color: #f25448;
&::after{
border: none;
}
&[disabled]{
color: rgba($color: #f25448, $alpha: .5);
}
}
}
</style>

View File

@@ -0,0 +1,220 @@
<template>
<view class="content">
<img class="loginBack" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5682d339246af0f44b4984c849288aa5.png">
<img class="loginBottom" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/caa46039d88517ee8ba22b6c32dd47a1.png">
<view class="title">
<view class="title-name">
用户登录
</view>
<view class="title-tips">
密码登录仅适用于已注册用户
</view>
</view>
<view class="info">
<view class="info-cont">
<!-- 输入手机号相关 -->
<view class="inputs">
<input type="number" placeholder="请输入手机号" maxlength="11" v-model="phone" />
</view>
<!-- 输入密码 -->
<view class="inputs">
<input type="text" :password="passwordState" placeholder="请输入密码" v-model="password" />
<image class="inputs-see" @click="seeClick" :src="seeState ? '../../static/icon/see_active.png' : '../../static/icon/see.png'" mode="aspectFill"></image>
</view>
<button class="btn" type="default" @click="LoginSms" :disabled="phone == '' || password == ''">立即登录</button>
<view class="forget-label forget-after" style="width: 100%; text-align: center; padding-top: 15rpx; font-size: 28rpx; color: #7f8391;" @click="$Router.push({name: 'Forget'})">忘记密码?</view>
<view class="forget">
<view class="forget-label" @click="$Router.push({name: 'Register'})">我要注册</view>
<view class="forget-label forget-after" @click="$Router.push({name: 'Login'})">验证码登录</view>
</view>
</view>
<!-- 用户登录注册协议 -->
<view class="agreement">
<checkbox-group @change="radioChange">
<checkbox color="#da2b56" :checked="checked" style="transform: scale(.55)" class="radioGroup" />
</checkbox-group>
<view class="agreement-text">
我已阅读并同意抖火法律<view @click="$Router.push({name: 'Agreement', params: {page : 3}})">隐私协议</view><view @click="$Router.push({name: 'Agreement', params: {page : 4}})">服务协议</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { Login } from '@/apis/interfaces/auth'
export default {
data() {
return {
phone : '', // 手机号码
password: '', // 登录密码
checked : false, // 勾选协议
seeState : false, //小眼睛
passwordState: true,
}
},
methods: {
// 用户登录
LoginSms() {
if(this.checked) {
Login({
username : this.phone,
password : this.password
}).then(res => {
// 存储用户token
this.$store.commit('setToken', res.token_type + ' ' + res.access_token)
// 回到首页
this.$Router.replaceAll({name: 'Index'})
// this.$Router.back()
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
} else {
uni.showToast({
title: '请勾选用户隐私和服务协议',
icon: "none"
})
}
},
// 勾选协议
radioChange() {
this.checked = !this.checked
},
// 查看密码
seeClick() {
this.seeState = !this.seeState
this.passwordState = !this.passwordState
},
}
}
</script>
<style lang="scss" scoped>
.loginBack {
width: 35%;
position: fixed;
top: 0;
right: 0;
}
.loginBottom {
width: 60%;
position: fixed;
bottom: 0;
left: 0;
}
.agreement {
padding: $padding 0 $padding - 20 $padding - 10;
box-sizing: border-box;
display: flex;
font-size: $title-size-sm;
width: 100%;
line-height: 60rpx;
color: #979797;
.radioGroup {
font-size: $title-size-sm;
}
.agreement-text {
display: flex;
width: 100%;
view {
color: $mian-color;
padding: 0 5rpx;
}
}
}
.title {
padding: $padding*4 $padding * 3 $padding*2;
box-sizing: border-box;
.title-name {
font-size: $title-size + 10;
margin-bottom: $margin - 10;
}
.title-tips {
color: #8e8e8e;
font-size: $title-size-m;
}
}
.info {
padding: $padding * 3 0;
box-sizing: border-box;
position: absolute;
z-index: 6;
width: 100%;
.info-cont {
padding: 0 $padding * 3;
box-sizing: border-box;
}
.inputs {
background-color: #f7f8fa;
height: 100rpx;
line-height: 100rpx;
margin-bottom: $margin + 20;
box-sizing: border-box;
color: #868686;
font-size: $title-size-m;
padding: 0 $padding + 10;
border-radius: $radius-m;
box-sizing: border-box;
position: relative;
.inputs-see {
position: absolute;
right: $padding;
top: $padding;
width: 38rpx;
height: 38rpx;
}
input {
font-weight: normal;
height: 100%;
}
}
.btn {
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
color: #ffffff;
border-radius: $radius-m;
font-size: $title-size;
height: 100rpx;
line-height: 100rpx;
padding: 0;
margin: $margin * 3 0 0;
&[disabled] {
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
}
}
.forget {
display: flex;
line-height: 120rpx;
font-size: $title-size-m;
.forget-label {
flex: 2;
text-align: center;
color: #000000;
}
.forget-after {
position: relative;
&::after {
position: absolute;
content: '';
left: 0;
bottom: calc(50% - 15rpx);
width: 2rpx;
height: 30rpx;
background-color: #f6f6f6;
}
}
}
}
</style>

View File

@@ -0,0 +1,135 @@
<template>
<view class="from-content">
<view class="from-block" v-if="pickerArr.length > 0" >
<view class="from-block-item">
<label>办理业务</label>
<picker class="from-block-val" :range="pickerArr" :value="pickerIndex" range-key="title" @change="pickerIndex = $event.detail.value">
<view class="from-block-picker nowrap">{{pickerArr[pickerIndex].title}}
<u-icon class="from-block-picker-icon" name="arrow-down" color="#555" size="15"></u-icon>
</view>
</picker>
</view>
<view class="from-block-item">
<label>业务价格</label>
<view class="from-block-val price">{{pickerArr[pickerIndex].price}}</view>
</view>
<view class="from-block-item">
<label>业务描述</label>
<view class="from-block-val">{{pickerArr[pickerIndex].subtitle}}</view>
</view>
</view>
<view class="from-block">
<view class="from-block-item">
<label>客户姓名</label>
<input class="from-block-val from-block-input" placeholder="请输入客户姓名" v-model="name" />
</view>
<view class="from-block-item">
<label>手机号码</label>
<input class="from-block-val from-block-input" type="number" placeholder="请输入客户手机号码" maxlength="11" v-model="phone" />
</view>
</view>
<button class="from-btn" @click="onSubmit">提交办理</button>
</view>
</template>
<script>
import { accountManagement, accountFrom } from '@/apis/interfaces/index.js'
export default {
data() {
return {
pickerArr : [],
pickerIndex : 0,
name : '',
phone : ''
};
},
onLoad() {
uni.showLoading({
title: '加载中...',
mask : true
})
accountManagement().then(res => {
uni.hideLoading()
this.pickerArr = res;
this.pickerIndex = res.findIndex(val => val.id == this.$Route.query.id)
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 提交表单
onSubmit(){
let { name, phone, pickerArr, pickerIndex } = this
console.log(pickerArr[pickerIndex])
if(name === ''){
uni.showToast({
title: '请输入客户姓名',
icon : 'none'
})
return
}
if(phone === ''){
uni.showToast({
title: '请输入客户手机号码',
icon : 'none'
})
return
}
uni.showLoading({
title: "提交中...",
mask : true
})
accountFrom({
name : name,
mobile : phone
}, pickerArr[pickerIndex].id).then(res => {
let { order_type, order_id, order_no, total } = res;
this.$Router.replace({name: 'FeePay', params: {id: order_id, orderType: order_type, price: total, payForm: 'synthesize'}})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss" scoped>
.from-content{
min-height: 100vh;
padding: 30rpx;
background: #f7f8f9;
}
.from-block{
background: white;
border-radius: 20rpx;
margin-bottom: 30rpx;
padding: 0 30rpx;
}
.from-block-item{
min-height: 70rpx;
display: flex;
font-size: 32rpx;
border-bottom: solid 1rpx #f3f3f3;
padding: 15rpx 0;
}
.from-block-item:last-child{ border: none; }
label{ width: 200rpx; line-height: 70rpx; }
.from-block-val{ width: calc(100% - 200rpx); text-align: right; line-height: 70rpx;}
.from-block-val.price{ color: #446EFE; font-weight: bold; }
.from-block-input{ height: 70rpx; font-size: 32rpx; }
.from-block-picker{ padding-right: 50rpx; position: relative; }
.from-block-picker-icon{ position: absolute; right: 0; top: 50%; margin-top: -15rpx; }
.from-btn{ width: 100%; background-color: #446EFE; color: white; line-height: 95rpx; height: 95rpx; border-radius: 45rpx; font-size: 32rpx; font-weight: bold;
&::after{ display: none; }
}
</style>

View File

@@ -0,0 +1,139 @@
<template>
<view class="from-content">
<view class="from-block" v-if="pickerArr.length > 0" >
<view class="from-block-item">
<label>办理业务</label>
<picker class="from-block-val" :range="pickerArr" :value="pickerIndex" range-key="title" @change="pickerIndex = $event.detail.value">
<view class="from-block-picker nowrap">{{pickerArr[pickerIndex].title}}
<u-icon class="from-block-picker-icon" name="arrow-down" color="#555" size="15"></u-icon>
</view>
</picker>
</view>
<view class="from-block-item">
<label>业务价格</label>
<view class="from-block-val price">{{pickerArr[pickerIndex].price}}</view>
</view>
<view class="from-block-item">
<label>业务描述</label>
<view class="from-block-val">{{pickerArr[pickerIndex].subtitle}}</view>
</view>
</view>
<view class="from-block">
<view class="from-block-item">
<label>客户姓名</label>
<input class="from-block-val from-block-input" placeholder="请输入客户姓名" v-model="name" />
</view>
<view class="from-block-item">
<label>手机号码</label>
<input class="from-block-val from-block-input" type="number" placeholder="请输入客户手机号码" maxlength="11" v-model="phone" />
</view>
</view>
<button class="from-btn" @click="onSubmit">提交办理</button>
</view>
</template>
<script>
import { delegation, delegationFrom } from '@/apis/interfaces/index.js'
export default {
data() {
return {
pickerArr : [],
pickerIndex : 0,
name : '',
phone : ''
};
},
onLoad() {
uni.showLoading({
title: '加载中...',
mask : true
})
delegation().then(res => {
uni.hideLoading()
this.pickerArr = res;
this.pickerIndex = res.findIndex(val => val.id == this.$Route.query.id)
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 提交表单
onSubmit(){
let { name, phone, pickerArr, pickerIndex } = this
if(name === ''){
uni.showToast({
title: '请输入客户姓名',
icon : 'none'
})
return
}
if(phone === ''){
uni.showToast({
title: '请输入客户手机号码',
icon : 'none'
})
return
}
uni.showLoading({
title: "提交中...",
mask : true
})
delegationFrom({
name : name,
mobile : phone
}, pickerArr[pickerIndex].id).then(res => {
let { order_type, order_id, order_no } = res;
this.$Router.replace({
name : 'Pay',
params : {
paytype : 'synthesize',
orderId : order_id,
orderType : order_type.replace(/\\/g, '-')
},
})
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss">
.from-content{
min-height: 100vh;
padding: 30rpx;
background: #f7f8f9;
}
.from-block{
background: white;
border-radius: 20rpx;
margin-bottom: 30rpx;
padding: 0 30rpx;
}
.from-block-item{
min-height: 70rpx;
display: flex;
font-size: 32rpx;
border-bottom: solid 1rpx #f3f3f3;
padding: 15rpx 0;
}
.from-block-item:last-child{ border: none; }
label{ width: 200rpx; line-height: 70rpx; }
.from-block-val{ width: calc(100% - 200rpx); text-align: right; line-height: 70rpx;}
.from-block-val.price{ color: #446EFE; font-weight: bold; }
.from-block-input{ height: 70rpx; font-size: 32rpx; }
.from-block-picker{ padding-right: 50rpx; position: relative; }
.from-block-picker-icon{ position: absolute; right: 0; top: 50%; margin-top: -15rpx; }
.from-btn{ width: 100%; background-color: #446EFE; color: white; line-height: 95rpx; height: 95rpx; border-radius: 45rpx; font-size: 32rpx; font-weight: bold;
&::after{ display: none; }
}
</style>

View File

@@ -18,14 +18,14 @@
<image class="paymentList-img" :src="Payment == 'wechat' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
</view>
</view>
<view class="paymentList-label" @click="payType('umsMp')">
<!-- <view class="paymentList-label" @click="payType('umsMp')">
<view class="paymentList-left">
<image class="paymentList-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/2a4ea8f9f714e39088648383d5c52f32.png" mode="widthFix"></image>微信银联商务
</view>
<view class="paymentList-right">
<image class="paymentList-img" :src="Payment == 'umsMp' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
</view>
</view>
</view> -->
<view class="paymentList-label" @click="payType('umsAli')">
<view class="paymentList-left">
<image class="paymentList-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/4aaf302e9d8a90c21c39b3d2f39cebc2.png" mode="widthFix"></image>支付宝银联商务
@@ -39,7 +39,7 @@
<!-- web.douhuotest.douhuofalv dev=0是线上 dev=1是线下 -->
<wx-open-launch-weapp
username="gh_918c81628d6f"
:path="'pages/pay/pay?type=h5&dev=0&trade_id=' + tradeId + '&token=' + token"
:path="'pages/pay/pay?type=h5&dev=1&trade_id=' + tradeId + '&token=' + token"
>
<script type="text/wxtag-template">
<style>
@@ -92,7 +92,7 @@
<script>
const jweixin = require('jweixin-module');
import { Apply, Wechat, authFollow } from '@/apis/interfaces/index'
import { payInfo, payWechat, payUms } from '@/apis/interfaces/pay'
import { payInfo, payWechat, payUms, umsState } from '@/apis/interfaces/pay'
export default {
data() {
return {
@@ -108,11 +108,12 @@
}
},
onShow() {
if(this.tradeId != ''){
this.onGetOrderPayState()
}
},
created() {
let { orderId, orderType } = this.$Route.query
uni.showLoading({
title: '加载中...',
mask : true
})
payInfo({
order_type : orderType,
order_id : orderId
@@ -131,6 +132,38 @@
})
},
methods: {
// 查询订单状态
onGetOrderPayState(){
uni.showLoading({
title: '查询支付',
mask : true
})
let outTime;
let resNumb = 0;
outTime = setInterval(() => {
if(resNumb >= 3){
clearInterval(outTime)
uni.showToast({
title: '暂未查询到你的支付订单',
icon : 'none'
})
return
}
umsState(this.tradeId).then(res => {
resNumb++
if(res.state === 'success'){
clearInterval(outTime)
this.payMakePop = true
}
}).catch(err => {
clearInterval(outTime)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}, 2000)
},
// 选择支付方式
payType(type) {
if(this.Payment === type) return
@@ -146,8 +179,7 @@
order_id : this.orderId,
openid : openId,
use_fire : 0,
fire : 0,
type : payType
fire : 0
}).then(res => {
let wxConfig = JSON.parse(res.wechat)
jweixin.config({
@@ -176,12 +208,18 @@
}
});
});
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
// 获取微信授权信息-获取oppid
authFollow({
url: 'https://web.douhuofalv.com/webWechat/index'
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index'
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index',
// url: 'http://web.douhuo.demos.uzchain.tech/webWechat/index' 最新
}).then(res => {
window.location.href = res
}).catch(err => {
@@ -202,13 +240,13 @@
type : payType
}).then(res => {
let { trade_id } = res;
this.tradeId = trade_id
this.tradeId = trade_id
switch (payType){
case 'mp':
this.tradeId = res.trade_id
this.tradeId = trade_id
break;
case 'mp_alipay':
this.tradeId = res.trade_id
this.tradeId = trade_id
window.location.href = res.alipay
break;
}

View File

@@ -1,209 +1,209 @@
<template>
<view class="content">
<view class="point">
<image class="point-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/280935db4a8ee4c0b17ddcb37f489b0f.png" mode="widthFix"></image>
<view class="point-text">
<view class="point-name">
认证成功
</view>
<view class="point-tips">
<text>恭喜您已完成认证</text>
<text>专享更多安全保障,可进行选择咨询类型</text>
</view>
<view class="point-btn">
<view class="btn" @click="sheetClick">
立即咨询
</view>
</view>
</view>
</view>
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
<template>
<view class="content">
<view class="point">
<image class="point-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/280935db4a8ee4c0b17ddcb37f489b0f.png" mode="widthFix"></image>
<view class="point-text">
<view class="point-name">
认证成功
</view>
<view class="point-tips">
<text>恭喜您已完成认证</text>
<text>专享更多安全保障,可进行选择咨询类型</text>
</view>
<view class="point-btn">
<view class="btn" @click="sheetClick">
立即咨询
</view>
</view>
</view>
</view>
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
generalShow: false // 公众号
}
},
onLoad() {
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到首页
this.$Router.replace({name: 'Index'})
}
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
generalShow: false // 公众号
}
},
onLoad() {
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到首页
this.$Router.replace({name: 'Index'})
}
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
.point {
text-align: center;
padding: 40% 0;
.point-img {
width: 50%;
margin: 0 auto 10rpx;
}
.point-text {
.point-name {
font-size: $title-size + 14;
}
.point-tips{
margin: $margin + 20 0 $margin*3;
line-height: 52rpx;
text {
display: block;
color: #999999;
}
}
}
.point-btn {
text-align: center;
.btn {
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
display: inline-block;
color: #ffffff;
border-radius: $radius-m;
padding: 0 $padding;
line-height: 90rpx;
width: 70%;
}
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
<style lang="scss" scoped>
.point {
text-align: center;
padding: 40% 0;
.point-img {
width: 50%;
margin: 0 auto 10rpx;
}
.point-text {
.point-name {
font-size: $title-size + 14;
}
.point-tips{
margin: $margin + 20 0 $margin*3;
line-height: 52rpx;
text {
display: block;
color: #999999;
}
}
}
.point-btn {
text-align: center;
.btn {
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
display: inline-block;
color: #ffffff;
border-radius: $radius-m;
padding: 0 $padding;
line-height: 90rpx;
width: 70%;
}
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
</style>

View File

@@ -1,446 +1,454 @@
<template>
<view class="content">
<view class="top">
<view class="top-text" v-if="userName">
您好{{userName.nickname}}
<!-- {{userName.parent.sex == '' ? '先生' : '女士'}} -->
</view>
以下是根据您的情况为您匹配的机构最佳方案由于银行政策实时变动该方案为预估方案仅供参考具体以协商为准感谢您的支持
</view>
<view class="white">
<view class="list" v-for="(item, index) in schemesArr" :key="index">
<view class="label" :class="{active : item.schemesShow}">
<view class="labelTop">
<view class="labelTop-name">
{{item.institution.title}}
</view>
<view class="labelTop-tips">
{{item.business_type.title}}
</view>
</view>
<view class="labelPlan-list">
<view class="labelPlan-item" v-for="(items, itemsIndex) in item.base" :key="itemsIndex">
<view class="labelPlan-item-name">{{items.title}}</view>
<view class="nowrap labelPlan-item-text">
<block v-if="items.key === 'price'">
{{items.value}}
</block>
<block v-else-if="items.key === 'overdue_day'">
{{items.value}}
</block>
<block v-else>
{{items.value}}
</block>
</view>
<block v-if="items.value">
<view v-if="items.key === 'rush' || items.key === 'remark'" class="labelPlan-item-btn" @click="seeTips(items.title, items.value)">查看</view>
</block>
</view>
</view>
<view class="labelPlan">
<view class="labelPlan-top">
<view class="labelPlan-name">
预估方案
</view>
<view class="labelPlan-tips">
YGFA
</view>
</view>
<view class="labelPlan-list">
<view class="labelPlan-item" v-for="(paramsItem, paramsIndex) in item.params" :key="paramsIndex">
<view class="labelPlan-item-name">{{paramsItem.title}}</view>
<view class="nowrap labelPlan-item-text">
{{paramsItem.value}}
</view>
<view class="labelPlan-item-btn" v-if="paramsItem.title == '协商方案' || paramsItem.title == '减免情况' || paramsItem.title == '关于减免结清减免政策'" @click="seeTips(paramsItem.title, paramsItem.value)">查看</view>
</view>
</view>
</view>
<view class="labelNotice" :class="{active : item.noticeShow}">
<view class="labelNotice-top">
<view class="labelNotice-name">
须知
</view>
<view class="labelNotice-text">
{{item.business_type.notic}}
</view>
</view>
<view class="labelNotice-btn" @click="noticeTap(index)">
<image class="labelNotice-img" :class="{active : item.noticeShow}" src="@/static/imgs/openArrow_grey.png" mode="widthFix"></image>{{item.noticeShow ? '收起' : '展开'}}
</view>
</view>
</view>
<view class="open" @click="recordTap(index)">
<view class="open-text">
<image :class="{active : item.schemesShow}" src="@/static/imgs/openArrow.png" mode="widthFix"></image>{{item.schemesShow ? '收起' : '展开'}}
</view>
</view>
</view>
<view class="reminder">
<image class="reminder-img" src="@/static/imgs/reminderIcon.png"></image>
<view class="reminder-text">
<text>温馨提示</text>
{{reminder}}
</view>
</view>
</view>
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
<template>
<view class="content">
<view class="top">
<view class="top-text" v-if="userName">
您好{{userName.nickname}}
<!-- {{userName.parent.sex == '' ? '先生' : '女士'}} -->
</view>
以下是根据您的情况为您匹配的机构最佳方案由于银行政策实时变动该方案为预估方案仅供参考具体以协商为准感谢您的支持
</view>
<view class="white">
<view class="list" v-for="(item, index) in schemesArr" :key="index">
<view class="label" :class="{active : item.schemesShow}">
<view class="labelTop">
<view class="labelTop-name">
{{item.institution.title}}
</view>
<view class="labelTop-tips">
{{item.business_type.title}}
</view>
</view>
<view class="labelPlan-list">
<view class="labelPlan-item" v-for="(items, itemsIndex) in item.base" :key="itemsIndex">
<view class="labelPlan-item-name">{{items.title}}</view>
<view class="nowrap labelPlan-item-text">
<block v-if="items.key === 'price'">
{{items.value}}
</block>
<block v-else-if="items.key === 'overdue_day'">
{{items.value}}
</block>
<block v-else>
{{items.value}}
</block>
</view>
<block v-if="items.value">
<view v-if="items.key === 'rush' || items.key === 'remark'" class="labelPlan-item-btn" @click="seeTips(items.title, items.value)">查看</view>
</block>
</view>
</view>
<view class="labelPlan">
<view class="labelPlan-top">
<view class="labelPlan-name">
预估方案
</view>
<view class="labelPlan-tips">
YGFA
</view>
</view>
<view class="labelPlan-list" v-if="item.type == 'one'">
<text class="labelPlan-item labelPlan-content">
{{item.content}}
</text>
</view>
<view class="labelPlan-list" v-else>
<view class="labelPlan-item" v-for="(paramsItem, paramsIndex) in item.params" :key="paramsIndex">
<view class="labelPlan-item-name">{{paramsItem.title}}</view>
<view class="nowrap labelPlan-item-text">
{{paramsItem.value}}
</view>
<view class="labelPlan-item-btn" v-if="paramsItem.title == '协商方案' || paramsItem.title == '减免情况' || paramsItem.title == '关于减免结清减免政策'" @click="seeTips(paramsItem.title, paramsItem.value)">查看</view>
</view>
</view>
</view>
<view class="labelNotice" :class="{active : item.noticeShow}">
<view class="labelNotice-top">
<view class="labelNotice-name">
须知
</view>
<text class="labelNotice-text">
{{item.business_type.notic}}
</text>
</view>
<view class="labelNotice-btn" @click="noticeTap(index)">
<image class="labelNotice-img" :class="{active : item.noticeShow}" src="@/static/imgs/openArrow_grey.png" mode="widthFix"></image>{{item.noticeShow ? '收起' : '展开'}}
</view>
</view>
</view>
<view class="open" @click="recordTap(index)">
<view class="open-text">
<image :class="{active : item.schemesShow}" src="@/static/imgs/openArrow.png" mode="widthFix"></image>{{item.schemesShow ? '收起' : '展开'}}
</view>
</view>
</view>
<view class="reminder">
<image class="reminder-img" src="@/static/imgs/reminderIcon.png"></image>
<view class="reminder-text">
<text>温馨提示</text>
{{reminder}}
</view>
</view>
</view>
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
</view>
</template>
<script>
import { Schemes } from '@/apis/interfaces/index'
import mouldTips from '@/components/mould-tips.vue'
export default {
components: {
mouldTips
},
data() {
return {
schemesArr : [], // 预估方案列表
reminder : '', // 温馨提示
userName : '', // 用户
// 查看提示组件
seeData : {
seeShow : false,
seeTitle: '',
seeText : '',
},
noticeShow : false, // 须知展开
baleShow : false, // 服务包弹出
}
},
onShow() {},
onLoad() {
// 获取方案
this.schemesInfo();
},
methods: {
// 方案
schemesInfo() {
// this.$Route.query.id
Schemes(this.$Route.query.id).then(res => {
this.reminder = res.tips
let esArr = res.schemes
esArr.forEach((item, index) => {
index == 0 ? item.schemesShow = true : item.schemesShow = false
index == 0 ? item.noticeShow = true : item.noticeShow = false
})
this.schemesArr = esArr
this.userName = res.user
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 提示组件 -- 赋值
seeTips(title, text) {
this.seeData.seeShow = true
this.seeData.seeTitle = title
this.seeData.seeText = text
},
// 列表展开
recordTap(index) {
var listData = this.schemesArr
var helpFlag = this.schemesArr[index].schemesShow
listData.forEach((item) => {
item.schemesShow = false
})
listData[index].schemesShow = !helpFlag
this.schemesArr = listData
},
// 须知展开
noticeTap(index) {
var listData = this.schemesArr
var helpFlag = this.schemesArr[index].noticeShow
listData.forEach((item) => {
item.noticeShow = false
})
listData[index].noticeShow = !helpFlag
this.schemesArr = listData
}
}
<script>
import { Schemes } from '@/apis/interfaces/index'
import mouldTips from '@/components/mould-tips.vue'
export default {
components: {
mouldTips
},
data() {
return {
schemesArr : [], // 预估方案列表
reminder : '', // 温馨提示
userName : '', // 用户
// 查看提示组件
seeData : {
seeShow : false,
seeTitle: '',
seeText : '',
},
noticeShow : false, // 须知展开
baleShow : false, // 服务包弹出
}
},
onShow() {},
onLoad() {
// 获取方案
this.schemesInfo();
},
methods: {
// 方案
schemesInfo() {
// this.$Route.query.id
Schemes(this.$Route.query.id).then(res => {
this.reminder = res.tips
let esArr = res.schemes
esArr.forEach((item, index) => {
index == 0 ? item.schemesShow = true : item.schemesShow = false
index == 0 ? item.noticeShow = true : item.noticeShow = false
})
this.schemesArr = esArr
this.userName = res.user
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 提示组件 -- 赋值
seeTips(title, text) {
this.seeData.seeShow = true
this.seeData.seeTitle = title
this.seeData.seeText = text
},
// 列表展开
recordTap(index) {
var listData = this.schemesArr
var helpFlag = this.schemesArr[index].schemesShow
listData.forEach((item) => {
item.schemesShow = false
})
listData[index].schemesShow = !helpFlag
this.schemesArr = listData
},
// 须知展开
noticeTap(index) {
var listData = this.schemesArr
var helpFlag = this.schemesArr[index].noticeShow
listData.forEach((item) => {
item.noticeShow = false
})
listData[index].noticeShow = !helpFlag
this.schemesArr = listData
}
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #f6f6f6;
overflow-y: scroll;
height: 100vh;
// height: calc(100vh - 44px);
}
.top {
background-color: $mian-color;
color: #ffffff;
padding: $padding * 2 $padding 280rpx;
box-sizing: border-box;
font-size: $title-size-m;
line-height: 42rpx;
opacity: .9;
text-align: justify;
.top-text {
margin-bottom: $margin;
}
}
.white {
position: relative;
top: -200rpx;
left: 0;
width: 100%;
padding: $padding;
box-sizing: border-box;
z-index: 9;
border-bottom: transparent 40rpx solid;
.list {
padding: $padding;
box-sizing: border-box;
background-color: #ffffff;
border-radius: $radius - 4;
position: relative;
margin-top: $margin * 3;
box-shadow: 0 0 20rpx rgba(0, 0, 0, .05);
&::after,
&::before {
position: absolute;
content: '';
background-color: rgba(255, 255, 255, .4);
left: 20rpx;
border-radius: $radius - 4 $radius - 4 0 0;
}
&::after {
z-index: 2;
width: calc(100% - 40rpx);
left: 20rpx;
top: -25rpx;
height: 25px;
}
&::before {
z-index: 1;
width: calc(100% - 80rpx);
left: 40rpx;
top: -50rpx;
height: 50rpx;
}
&:first-child {
margin-top: 0;
}
.label {
position: relative;
height: 84rpx;
overflow: hidden;
&.active {
height: auto;
}
&::after,
&::before {
position: absolute;
content: '';
width: 30rpx;
height: 30rpx;
border-radius: 50%;
background-color: #f6f6f6;
top: 33%;
}
&::after {
left: -45rpx;
}
&::before {
right: -45rpx;
}
.labelTop {
line-height: 80rpx;
margin-bottom: $margin - 20;
display: flex;
.labelTop-name {
flex: 1;
font-size: $title-size + 2;
font-weight: 600;
}
.labelTop-tips {
margin-left: 20rpx;
background-color: #FBE7EE;
color: $mian-color;
font-size: $title-size-sm;
font-weight: normal;
padding: 0 15rpx;
border: 2rpx solid $mian-color;
border-radius: $radius * 2;
height: 44rpx;
line-height: 44rpx;
display: inline-block;
margin-top: 18rpx;
}
}
.labelPlan {
border-top: 2rpx dotted #e7e7e7;
padding-top: $padding;
margin-top: $margin;
.labelPlan-top {
display: flex;
line-height: 54rpx;
color: $mian-color;
margin-bottom: $margin;
.labelPlan-name {
flex: 1;
font-size: $title-size + 4;
font-weight: 600;
}
.labelPlan-tips {
opacity: .2;
font-size: $title-size + 2;
}
}
}
.labelPlan-item {
line-height: 40rpx;
margin-bottom: $margin + 10;
display: flex;
font-size: $title-size-m;
color: #111111;
&:last-child {
margin-bottom: 10rpx;
}
.labelPlan-item-name {
color: #999999;
flex: 1;
margin-right: $margin;
}
.labelPlan-item-text {
width: 30%;
text-align: right;
}
.labelPlan-item-btn {
color: $mian-color;
border: $mian-color 2rpx solid;
width: 80rpx;
text-align: center;
border-radius: $radius-m;
height: 40rpx;
line-height: 40rpx;
margin-left: 20rpx;
font-size: $title-size-sm - 2;
}
}
.labelNotice {
font-size: $title-size-m;
background-color: #F6F6F6;
border-radius: $radius-m;
margin-top: $margin;
height: 240rpx;
overflow: hidden;
position: relative;
&.active {
height: auto;
}
.labelNotice-top {
padding: $padding $padding 0;
box-sizing: border-box;
.labelNotice-name {
color: #111111;
margin-bottom: $margin - 10;
font-weight: 600;
}
.labelNotice-text {
color: #666666;
line-height: 52rpx;
text-align: justify;
margin-bottom: 100rpx;
}
}
.labelNotice-btn {
text-align: center;
line-height: 100rpx;
color: #999999;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: #F6F6F6;
.labelNotice-img {
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
transition: .2s;
&.active {
transform:rotate(180deg)
}
}
}
}
}
.open {
text-align: center;
margin-top: $margin - 10;
width: 100%;
background-color: #ffffff;
.open-text {
background-color: #FBE7EE;
display: inline-block;
color: $mian-color;
padding: 0 $padding - 10;
line-height: 58rpx;
font-size: $title-size-m;
border-radius: $radius-sm;
image {
width: 22rpx;
height: 22rpx;
margin-right: 10rpx;
transition: .2s;
&.active {
transform:rotate(180deg)
}
}
}
}
}
}
.reminder {
position: fixed;
left: 0;
bottom: 0;
background-color: #f6f6f6;
z-index: 10;
width: 100%;
height: 240rpx;
overflow: hidden;
padding: $padding;
box-sizing: border-box;
display: flex;
color: #FEA044;
font-size: $title-size-m;
border-bottom: 2rpx solid #f5f5f5;
.reminder-img {
width: 32rpx;
height: 32rpx;
margin-top: 8rpx;
}
.reminder-text {
overflow-y: scroll;
height: 200rpx;
width: calc(100% - 52rpx);
margin-left: 20rpx;
line-height: 40rpx;
text-align: justify;
font-size: $title-size-sm;
text {
display: block;
}
}
}
<style lang="scss" scoped>
.content {
background-color: #f6f6f6;
overflow-y: scroll;
height: 100vh;
// height: calc(100vh - 44px);
}
.top {
background-color: $mian-color;
color: #ffffff;
padding: $padding * 2 $padding 280rpx;
box-sizing: border-box;
font-size: $title-size-m;
line-height: 42rpx;
opacity: .9;
text-align: justify;
.top-text {
margin-bottom: $margin;
}
}
.white {
position: relative;
top: -200rpx;
left: 0;
width: 100%;
padding: $padding;
box-sizing: border-box;
z-index: 9;
border-bottom: transparent 40rpx solid;
.list {
padding: $padding;
box-sizing: border-box;
background-color: #ffffff;
border-radius: $radius - 4;
position: relative;
margin-top: $margin * 3;
box-shadow: 0 0 20rpx rgba(0, 0, 0, .05);
&::after,
&::before {
position: absolute;
content: '';
background-color: rgba(255, 255, 255, .4);
left: 20rpx;
border-radius: $radius - 4 $radius - 4 0 0;
}
&::after {
z-index: 2;
width: calc(100% - 40rpx);
left: 20rpx;
top: -25rpx;
height: 25px;
}
&::before {
z-index: 1;
width: calc(100% - 80rpx);
left: 40rpx;
top: -50rpx;
height: 50rpx;
}
&:first-child {
margin-top: 0;
}
.label {
position: relative;
height: 84rpx;
overflow: hidden;
&.active {
height: auto;
}
&::after,
&::before {
position: absolute;
content: '';
width: 30rpx;
height: 30rpx;
border-radius: 50%;
background-color: #f6f6f6;
top: 33%;
}
&::after {
left: -45rpx;
}
&::before {
right: -45rpx;
}
.labelTop {
line-height: 80rpx;
margin-bottom: $margin - 20;
display: flex;
.labelTop-name {
flex: 1;
font-size: $title-size + 2;
font-weight: 600;
}
.labelTop-tips {
margin-left: 20rpx;
background-color: #FBE7EE;
color: $mian-color;
font-size: $title-size-sm;
font-weight: normal;
padding: 0 15rpx;
border: 2rpx solid $mian-color;
border-radius: $radius * 2;
height: 44rpx;
line-height: 44rpx;
display: inline-block;
margin-top: 18rpx;
}
}
.labelPlan {
border-top: 2rpx dotted #e7e7e7;
padding-top: $padding;
margin-top: $margin;
.labelPlan-top {
display: flex;
line-height: 54rpx;
color: $mian-color;
margin-bottom: $margin;
.labelPlan-name {
flex: 1;
font-size: $title-size + 4;
font-weight: 600;
}
.labelPlan-tips {
opacity: .2;
font-size: $title-size + 2;
}
}
}
.labelPlan-item {
line-height: 40rpx;
margin-bottom: $margin + 10;
display: flex;
font-size: $title-size-m;
color: #111111;
&:last-child {
margin-bottom: 10rpx;
}
.labelPlan-item-name {
color: #999999;
flex: 1;
margin-right: $margin;
}
.labelPlan-item-text {
width: 30%;
text-align: right;
}
.labelPlan-item-btn {
color: $mian-color;
border: $mian-color 2rpx solid;
width: 80rpx;
text-align: center;
border-radius: $radius-m;
height: 40rpx;
line-height: 40rpx;
margin-left: 20rpx;
font-size: $title-size-sm - 2;
}
&.labelPlan-content {
line-height: 52rpx;
}
}
.labelNotice {
font-size: $title-size-m;
background-color: #F6F6F6;
border-radius: $radius-m;
margin-top: $margin;
height: 240rpx;
overflow: hidden;
position: relative;
&.active {
height: auto;
}
.labelNotice-top {
padding: $padding $padding 0;
box-sizing: border-box;
.labelNotice-name {
color: #111111;
margin-bottom: $margin - 10;
font-weight: 600;
}
.labelNotice-text {
color: #666666;
line-height: 52rpx;
text-align: justify;
margin-bottom: 100rpx;
}
}
.labelNotice-btn {
text-align: center;
line-height: 100rpx;
color: #999999;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: #F6F6F6;
.labelNotice-img {
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
transition: .2s;
&.active {
transform:rotate(180deg)
}
}
}
}
}
.open {
text-align: center;
margin-top: $margin - 10;
width: 100%;
background-color: #ffffff;
.open-text {
background-color: #FBE7EE;
display: inline-block;
color: $mian-color;
padding: 0 $padding - 10;
line-height: 58rpx;
font-size: $title-size-m;
border-radius: $radius-sm;
image {
width: 22rpx;
height: 22rpx;
margin-right: 10rpx;
transition: .2s;
&.active {
transform:rotate(180deg)
}
}
}
}
}
}
.reminder {
position: fixed;
left: 0;
bottom: 0;
background-color: #f6f6f6;
z-index: 10;
width: 100%;
height: 240rpx;
overflow: hidden;
padding: $padding;
box-sizing: border-box;
display: flex;
color: #FEA044;
font-size: $title-size-m;
border-bottom: 2rpx solid #f5f5f5;
.reminder-img {
width: 32rpx;
height: 32rpx;
margin-top: 8rpx;
}
.reminder-text {
overflow-y: scroll;
height: 200rpx;
width: calc(100% - 52rpx);
margin-left: 20rpx;
line-height: 40rpx;
text-align: justify;
font-size: $title-size-sm;
text {
display: block;
}
}
}
</style>

View File

@@ -1,188 +1,199 @@
<template>
<view class="content">
<view class="create-type">
<view class="create-type-title">
选择咨询类型
</view>
<block v-for="(item, index) in synthesisArr" :key="index+'synthesis'">
<view class="create-type-item" :class="{'active': item.self_type + item.synthesis_id == businessName}" @click="onBusiness(item.self_type, item.synthesis_id)">
<image class="create-type-icon" :src="item.cover" mode="aspectFill"></image>
<view class="create-type-text">
<view class="title nowrap">{{item.title || '-'}}</view>
<view class="submit nowrap">免费咨询一次</view>
</view>
<image class="create-type-check" :src="item.self_type + item.synthesis_id == businessName ? '/static/icon/Check_active.png' : '/static/icon/Check.png'" mode="aspectFill"></image>
</view>
</block>
</view>
<view class="create-btn">
<button size="default" @click="onNext()">下一步</button>
</view>
<template>
<view class="content">
<view class="create-type">
<view class="create-type-title">
选择咨询类型
</view>
<block v-for="(item, index) in synthesisArr" :key="index+'synthesis'">
<view class="create-type-item" :class="{'active': item.self_type + item.synthesis_id == businessName}" @click="onBusiness(item.self_type, item.synthesis_id)">
<image class="create-type-icon" :src="item.cover" mode="aspectFill"></image>
<view class="create-type-text">
<view class="title nowrap">{{item.title || '-'}}</view>
<!-- <view class="submit nowrap">免费咨询一次</view> -->
</view>
<image class="create-type-check" :src="item.self_type + item.synthesis_id == businessName ? '/static/icon/Check_active.png' : '/static/icon/Check.png'" mode="aspectFill"></image>
</view>
</block>
</view>
<view class="create-btn">
<button size="default" @click="onNext()">下一步</button>
</view>
</view>
</template>
<script>
import { workIndex } from '@/apis/interfaces/index'
import { synthList } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
businessArr : [],
businessType: '',
businessName: '',
businessId : '',
synthesisArr: []
};
},
created() {
// 业务类型列表
workIndex().then(res => {
this.businessArr = res
this.businessType= res[0].self_type
this.businessName= res[0].self_type + res[0].business_id
this.businessId = res[0].business_id
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
// 综法类型列表
synthList().then(res => {
this.synthesisArr = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 选择业务类型
onBusiness(type, id){
this.businessName = type + id
this.businessType = type
this.businessId = id
},
// 创建业务单
<script>
import { workIndex } from '@/apis/interfaces/index'
import { synthList } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
businessArr : [],
businessType: '',
businessName: '',
businessId : '',
synthesisArr: []
};
},
created() {
// 业务类型列表
// workIndex().then(res => {
// console.log(res)
// this.businessArr = res
// this.businessType= res[0].self_type
// this.businessName= res[0].self_type + res[0].business_id
// this.businessId = res[0].business_id
// }).catch(err => {
// uni.showToast({
// title: err.message,
// icon : 'none'
// })
// })
// 综法类型列表
synthList().then(res => {
this.synthesisArr = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 选择业务类型
onBusiness(type, id){
this.businessName = type + id
this.businessType = type
this.businessId = id
},
// 创建业务单
onNext(){
// 信用卡/贷款
if(this.businessType == 'business') {
let busines = this.businessArr.find(val => val.business_id === this.businessId)
this.$Router.replace({
name : 'sheetBasic',
params : {
businessTitle : busines.title,
businessId : busines.business_id,
}
console.log(this.businessType)
// 信用卡/贷款
// if(this.businessType == 'business') {
// let busines = this.businessArr.find(val => val.business_id === this.businessId)
// this.$Router.replace({
// name : 'sheetBasic',
// params : {
// businessTitle : busines.title,
// businessId : busines.business_id,
// }
// })
// return
// }
if(this.businessType != 'synthesis'){
uni.showToast({
title: '请选择咨询类型',
icon : 'none'
})
return
}
// 综法
let synthesis = this.synthesisArr.find(val => val.synthesis_id === this.businessId)
if(synthesis.can.buy) {
this.$Router.push({
name : 'FeeWrite',
params : {
synthesisId: synthesis.synthesis_id
}
})
} else {
this.$Router.replace({
name : 'PersonBrief',
params : {
synthesisId: synthesis.synthesis_id,
type: 1
}
})
}
}
},
}
// 综法
let synthesis = this.synthesisArr.find(val => val.synthesis_id === this.businessId)
if(synthesis.can.buy) {
this.$Router.push({
name : 'FeeWrite',
params : {
synthesisId: synthesis.synthesis_id
}
})
} else {
this.$Router.replace({
name : 'PersonBrief',
params : {
synthesisId: synthesis.synthesis_id,
type: 1
}
})
}
}
},
}
</script>
</script>
<style lang="scss" scoped>
.content {
padding: 50rpx;
box-sizing: border-box;
height: 100vh;
// height: calc(100vh - 44px);
background-color: #fcfcfc;
}
// 选择业务类型
.create-type{
padding-top: 50rpx;
.create-type-title{
line-height: 50rpx;
text-align: center;
font-size: $title-size + 4;
margin-bottom: 70rpx;
font-weight: 600;
text {
font-weight: normal;
color: gray;
display: block;
font-size: $title-size-m;
}
}
.create-type-item{
background: #ffffff;
border-radius: $radius-m;
padding: 35rpx 30rpx;
margin-top: 30rpx;
border:solid 1rpx #f8f8f8;
box-sizing: border-box;
display: flex;
align-items: center;
box-shadow: 0 0 5rpx rgba(0, 0, 0, .05);
position: relative;
.create-type-icon{
width: 88rpx;
height: 88rpx;
margin-right: $margin;
background-color: white;
border-radius: $radius;
}
.create-type-text{
line-height: 50rpx;
.title{
font-size: 30rpx;
}
.submit{
color: gray;
font-size: 26rpx;
}
}
.create-type-check {
width: 38rpx;
height: 38rpx;
position: absolute;
top: 44rpx;
right: 30rpx;
}
&.active{
border:solid 1rpx #ff9fb1;
}
}
}
// 按钮
.create-btn{
margin-top: 100rpx;
button[size="default"]{
height: 90rpx;
line-height: 90rpx;
background: $mian-color;
font-size: 32rpx;
color: white;
font-weight: bold;
&::after{
border: none;
}
}
}
<style lang="scss" scoped>
.content {
padding: 50rpx;
box-sizing: border-box;
height: 100vh;
// height: calc(100vh - 44px);
background-color: #fcfcfc;
}
// 选择业务类型
.create-type{
padding-top: 50rpx;
.create-type-title{
line-height: 50rpx;
text-align: center;
font-size: $title-size + 4;
margin-bottom: 70rpx;
font-weight: 600;
text {
font-weight: normal;
color: gray;
display: block;
font-size: $title-size-m;
}
}
.create-type-item{
background: #ffffff;
border-radius: $radius-m;
padding: 35rpx 30rpx;
margin-top: 30rpx;
border:solid 1rpx #f8f8f8;
box-sizing: border-box;
display: flex;
align-items: center;
box-shadow: 0 0 5rpx rgba(0, 0, 0, .05);
position: relative;
.create-type-icon{
width: 88rpx;
height: 88rpx;
margin-right: $margin;
background-color: white;
border-radius: $radius;
}
.create-type-text{
line-height: 50rpx;
.title{
font-size: 30rpx;
}
.submit{
color: gray;
font-size: 26rpx;
}
}
.create-type-check {
width: 38rpx;
height: 38rpx;
position: absolute;
top: 60rpx;
right: 30rpx;
}
&.active{
border:solid 1rpx #ff9fb1;
}
}
}
// 按钮
.create-btn{
margin-top: 100rpx;
button[size="default"]{
height: 90rpx;
line-height: 90rpx;
background: $mian-color;
font-size: 32rpx;
color: white;
font-weight: bold;
&::after{
border: none;
}
}
}
</style>

View File

@@ -1,251 +1,251 @@
<template>
<view class="content">
<view class="idcard">
<view class="idcardTitle">
<view class="idcardTitle-name">
身份认证
</view>
<view class="idcardTitle-tips">
应监管要求请先进行身份认证
</view>
</view>
<view class="idcardImg">
<view class="idcardImg-label" @click="updImg('frontCard')">
<image class="idcardImg-img" mode="widthFix" :src="frontCard.showpath ? frontCard.showpath : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5ed55d77ed9c1e818a943cd7b4b7d28a.png'"></image>
<view class="idcardImg-text">
点击上传正面
</view>
</view>
<view class="idcardImg-label" @click="updImg('backCard')">
<image class="idcardImg-img" mode="widthFix" :src="backCard.showpath ? backCard.showpath : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/4a266e0dec95a3b15cf50ac58e37c478.png'"></image>
<view class="idcardImg-text">
点击上传反面
</view>
</view>
</view>
<view class="idcardInfo">
<view class="idcardInfo-label">
<view class="idcardInfo-name">
姓名
</view>
<view class="idcardInfo-input active">
{{realData.name ? realData.name : '待自动输入'}}
</view>
</view>
<view class="idcardInfo-label">
<view class="idcardInfo-name">
身份证号
</view>
<view class="idcardInfo-input">
{{realData.id_card ? realData.id_card : '身份证号'}}
</view>
</view>
<view class="idcardInfo-label">
<view class="idcardInfo-name">
有效期限
</view>
<view class="idcardInfo-input">
{{realData.expiration_date ? realData.expiration_date : '待自动输入'}}
</view>
</view>
</view>
</view>
<view class="idcardBtn">
<view class="idcardBtn-tips">
<img src="@/static/imgs/card_ensure.png">个人信息安全保障中
</view>
<button class="idcardBtn-go" type="default" :disabled="realData == ''" @click="faceClick">立即认证</button>
</view>
<!-- <view @click="$Router.push({name: 'Authsuccess'})">认证成功后会-临时跳转</view> -->
<template>
<view class="content">
<view class="idcard">
<view class="idcardTitle">
<view class="idcardTitle-name">
身份认证
</view>
<view class="idcardTitle-tips">
应监管要求请先进行身份认证
</view>
</view>
<view class="idcardImg">
<view class="idcardImg-label" @click="updImg('frontCard')">
<image class="idcardImg-img" mode="widthFix" :src="frontCard.showpath ? frontCard.showpath : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5ed55d77ed9c1e818a943cd7b4b7d28a.png'"></image>
<view class="idcardImg-text">
点击上传正面
</view>
</view>
<view class="idcardImg-label" @click="updImg('backCard')">
<image class="idcardImg-img" mode="widthFix" :src="backCard.showpath ? backCard.showpath : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/4a266e0dec95a3b15cf50ac58e37c478.png'"></image>
<view class="idcardImg-text">
点击上传反面
</view>
</view>
</view>
<view class="idcardInfo">
<view class="idcardInfo-label">
<view class="idcardInfo-name">
姓名
</view>
<view class="idcardInfo-input active">
{{realData.name ? realData.name : '待自动输入'}}
</view>
</view>
<view class="idcardInfo-label">
<view class="idcardInfo-name">
身份证号
</view>
<view class="idcardInfo-input">
{{realData.id_card ? realData.id_card : '身份证号'}}
</view>
</view>
<view class="idcardInfo-label">
<view class="idcardInfo-name">
有效期限
</view>
<view class="idcardInfo-input">
{{realData.expiration_date ? realData.expiration_date : '待自动输入'}}
</view>
</view>
</view>
</view>
<view class="idcardBtn">
<view class="idcardBtn-tips">
<img src="@/static/imgs/card_ensure.png">个人信息安全保障中
</view>
<button class="idcardBtn-go" type="default" :disabled="realData == ''" @click="faceClick">立即认证</button>
</view>
<!-- <view @click="$Router.push({name: 'Authsuccess'})">认证成功后会-临时跳转</view> -->
</view>
</template>
<script>
import { realName, faceUrl } from '@/apis/interfaces/user'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
// 身份证正面
frontCard:{
showpath: '',
path : ''
},
// 身份证反面
backCard:{
showpath: '',
path : ''
},
realData : '', // 个人信息
authShortUrl: '' // 人脸识别地址-第三方
}
},
onLoad() {},
onShow() {
},
methods: {
// 认证信息
realInfo() {
realName({
front_card: this.frontCard.path,
back_card : this.backCard.path,
redirect_url: "https://web.douhuofalv.com/sheet/authSuccess",
// redirect_url: "https://web.douhuotest.douhuofalv.com/sheet/authSuccess"
}).then(res => {
this.realData = res.certification
this.authShortUrl = res.sign.authShortUrl
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 上传图片
updImg(type){
uni.chooseImage({
count : 1,
success : path => {
uploads([{
uri : path.tempFilePaths[0]
}], {
driver: "private-oss"
}).then(res => {
this[type].showpath = res.url[0]
this[type].path = res.path[0]
if(this.frontCard.path !=='' && this.backCard.path !=='') {
// 获取认证信息
this.realInfo();
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
})
},
// 人脸识别
faceClick() {
window.location.href = this.authShortUrl
// const newUrl = this.authShortUrl
// let faceUrl= encodeURIComponent(newUrl)
// uni.navigateTo({
// url: '/webview/webview?faceUrl=' + faceUrl
// });
}
}
<script>
import { realName, faceUrl } from '@/apis/interfaces/user'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
// 身份证正面
frontCard:{
showpath: '',
path : ''
},
// 身份证反面
backCard:{
showpath: '',
path : ''
},
realData : '', // 个人信息
authShortUrl: '' // 人脸识别地址-第三方
}
},
onLoad() {},
onShow() {
},
methods: {
// 认证信息
realInfo() {
realName({
front_card: this.frontCard.path,
back_card : this.backCard.path,
redirect_url: "https://web.douhuofalv.com/sheet/authSuccess",
// redirect_url: "https://web.douhuotest.douhuofalv.com/sheet/authSuccess"
}).then(res => {
this.realData = res.certification
this.authShortUrl = res.sign.authShortUrl
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 上传图片
updImg(type){
uni.chooseImage({
count : 1,
success : path => {
uploads([{
uri : path.tempFilePaths[0]
}], {
driver: "private-oss"
}).then(res => {
this[type].showpath = res.url[0]
this[type].path = res.path[0]
if(this.frontCard.path !=='' && this.backCard.path !=='') {
// 获取认证信息
this.realInfo();
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
})
},
// 人脸识别
faceClick() {
window.location.href = this.authShortUrl
// const newUrl = this.authShortUrl
// let faceUrl= encodeURIComponent(newUrl)
// uni.navigateTo({
// url: '/webview/webview?faceUrl=' + faceUrl
// });
}
}
}
</script>
<style lang="scss" scoped>
.content {
padding: $padding;
box-sizing: border-box;
height: 100vh;
overflow-y: scroll;
}
.idcard {
background-color: #ffffff;
border-radius: $radius;
box-sizing: border-box;
}
.idcardTitle {
margin: 0 0 $margin + 20;
line-height: 60rpx;
.idcardTitle-name {
color: $text-color;
font-size: $title-size + 16;
font-weight: 600;
}
.idcardTitle-tips {
color: #7c8495;
font-size: $title-size-lg;
}
}
.idcardImg {
display: flex;
margin: $margin -15rpx;
.idcardImg-label {
flex: 2;
text-align: center;
background-color: #fdf4f5;
padding: $padding $padding + 10 $padding + 58;
margin: 0 15rpx;
position: relative;
border-radius: $radius-sm;
overflow: hidden;
.idcardImg-img {
width: 100%;
}
.idcardImg-text {
text-align: center;
position: absolute;
width: 100%;
background-color: $mian-color;
color: #ffffff;
left: 0;
bottom: 0;
line-height: 68rpx;
font-size: $title-size-m;
opacity: .9;
}
}
}
.idcardInfo-label {
display: flex;
line-height: 120rpx;
border-bottom: 2rpx solid #f5f5f5;
&:last-child {
border: none;
}
.idcardInfo-name {
flex: 1;
color: #637392;
}
.idcardInfo-input {
color: #d2d5dd;
&.active {
color: #000000;
}
}
}
.idcardBtn {
margin-top: $margin * 4;
text-align: center;
padding: 0 $padding;
box-sizing: border-box;
.idcardBtn-tips {
color: #8091aa;
line-height: 90rpx;
font-size: $title-size-m;
img {
width: 40rpx;
height: 40rpx;
vertical-align: -10rpx;
margin-right: 5rpx;
}
}
.idcardBtn-go {
background-color: $mian-color;
color: #ffffff;
border-radius: $radius * 3;
line-height: 90rpx;
font-size: $title-size + 2;
&[disabled] {
background-color: #fdc5d3;
}
}
<style lang="scss" scoped>
.content {
padding: $padding;
box-sizing: border-box;
height: 100vh;
overflow-y: scroll;
}
.idcard {
background-color: #ffffff;
border-radius: $radius;
box-sizing: border-box;
}
.idcardTitle {
margin: 0 0 $margin + 20;
line-height: 60rpx;
.idcardTitle-name {
color: $text-color;
font-size: $title-size + 16;
font-weight: 600;
}
.idcardTitle-tips {
color: #7c8495;
font-size: $title-size-lg;
}
}
.idcardImg {
display: flex;
margin: $margin -15rpx;
.idcardImg-label {
flex: 2;
text-align: center;
background-color: #fdf4f5;
padding: $padding $padding + 10 $padding + 58;
margin: 0 15rpx;
position: relative;
border-radius: $radius-sm;
overflow: hidden;
.idcardImg-img {
width: 100%;
}
.idcardImg-text {
text-align: center;
position: absolute;
width: 100%;
background-color: $mian-color;
color: #ffffff;
left: 0;
bottom: 0;
line-height: 68rpx;
font-size: $title-size-m;
opacity: .9;
}
}
}
.idcardInfo-label {
display: flex;
line-height: 120rpx;
border-bottom: 2rpx solid #f5f5f5;
&:last-child {
border: none;
}
.idcardInfo-name {
flex: 1;
color: #637392;
}
.idcardInfo-input {
color: #d2d5dd;
&.active {
color: #000000;
}
}
}
.idcardBtn {
margin-top: $margin * 4;
text-align: center;
padding: 0 $padding;
box-sizing: border-box;
.idcardBtn-tips {
color: #8091aa;
line-height: 90rpx;
font-size: $title-size-m;
img {
width: 40rpx;
height: 40rpx;
vertical-align: -10rpx;
margin-right: 5rpx;
}
}
.idcardBtn-go {
background-color: $mian-color;
color: #ffffff;
border-radius: $radius * 3;
line-height: 90rpx;
font-size: $title-size + 2;
&[disabled] {
background-color: #fdc5d3;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,217 +1,217 @@
<template>
<view class="content">
<view class="sheet">
<image class="sheet-img" v-if="type == 1" src="https://cdn.douhuofalv.com/images/2022/11/30/cb0654de804d11905d2bb539e2fb5f24.jpg" mode="widthFix"></image>
<image class="sheet-img" v-else-if="type == 2" src="https://cdn.douhuofalv.com/images/2022/11/30/365f75baeaa1b4c5d041dce7f5ad6867.jpg" mode="widthFix"></image>
<image class="sheet-img" v-else src="https://cdn.douhuofalv.com/images/2022/11/30/007cf45b7138a2552f6a80ffa390c3ad.jpg" mode="widthFix"></image>
<!-- 立即咨询 -->
<view class="lawyerBtn">
<view class="lawyerBtn-name">您的心事我们</view>
<image class="lawyerBtn-img lawyerBtn-go" @click="sheetClick" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e1323131217b0ca7e1ed2e89a55a0740.png" mode="widthFix"></image>
<image class="lawyerBtn-img lawyerBtn-see" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e4f37a76780df657cda85c242bfd792c.png" mode="widthFix"></image>
</view>
</view>
<!-- 关注 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
type : '',
generalShow: false // 公众号
}
},
onShow() {
this.type = this.$Route.query.type
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
.sheet {
width: 100%;
height: 100%;
position: relative;
left: 0;
top: 0;
.sheet-img {
width: 100%;
}
}
.lawyerBtn {
position: absolute;
z-index: 99;
left: 0;
bottom: $padding;
width: 100%;
padding: $padding - 10 $padding;
box-sizing: border-box;
text-align: center;
.lawyerBtn-name {
font-size: $title-size-sm - 2;
line-height: 60rpx;
opacity: .9;
color: #fff;
}
.lawyerBtn-img {
display: block;
margin: 0 auto;
}
.lawyerBtn-go {
width: 42%;
margin: 15rpx auto;
}
.lawyerBtn-see {
width: 60%;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
<template>
<view class="content">
<view class="sheet">
<image class="sheet-img" v-if="type == 1" src="https://cdn.douhuofalv.com/images/2022/11/30/cb0654de804d11905d2bb539e2fb5f24.jpg" mode="widthFix"></image>
<image class="sheet-img" v-else-if="type == 2" src="https://cdn.douhuofalv.com/images/2022/11/30/365f75baeaa1b4c5d041dce7f5ad6867.jpg" mode="widthFix"></image>
<image class="sheet-img" v-else src="https://cdn.douhuofalv.com/images/2022/11/30/007cf45b7138a2552f6a80ffa390c3ad.jpg" mode="widthFix"></image>
<!-- 立即咨询 -->
<view class="lawyerBtn">
<view class="lawyerBtn-name">您的心事我们</view>
<image class="lawyerBtn-img lawyerBtn-go" @click="sheetClick" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e1323131217b0ca7e1ed2e89a55a0740.png" mode="widthFix"></image>
<image class="lawyerBtn-img lawyerBtn-see" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/e4f37a76780df657cda85c242bfd792c.png" mode="widthFix"></image>
</view>
</view>
<!-- 关注 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
export default {
data() {
return {
type : '',
generalShow: false // 公众号
}
},
onShow() {
this.type = this.$Route.query.type
},
methods: {
// 判断是否认证
sheetClick() {
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询单
this.$Router.replace({name: 'sheetCreate'})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
<style lang="scss" scoped>
.sheet {
width: 100%;
height: 100%;
position: relative;
left: 0;
top: 0;
.sheet-img {
width: 100%;
}
}
.lawyerBtn {
position: absolute;
z-index: 99;
left: 0;
bottom: $padding;
width: 100%;
padding: $padding - 10 $padding;
box-sizing: border-box;
text-align: center;
.lawyerBtn-name {
font-size: $title-size-sm - 2;
line-height: 60rpx;
opacity: .9;
color: #fff;
}
.lawyerBtn-img {
display: block;
margin: 0 auto;
}
.lawyerBtn-go {
width: 42%;
margin: 15rpx auto;
}
.lawyerBtn-see {
width: 60%;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,422 +1,423 @@
<template>
<view class="content">
<view class="paymentTop">
<!-- v-if="applyData.status" -->
<view class="paymentTop-name">
订单支付
<text>与人方便,与己方便,珍惜时间,请先付款</text>
</view>
<img class="paymentTop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/d9c965766807a6e1c57da11e069c8686.png">
</view>
<view class="paymentShow">
<img class="paymentShow-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5ccd7b6473095bf0e55c21240ca2eb90.png">
<view class="paymentShow-text">
<view class="paymentShow-top">
<view class="paymentShow-top-name">订单名称<text>{{style == 'chajia' ? '补差价' : '咨询服务费'}}</text></view>
<view class="paymentShow-top-price">{{price}}</view>
</view>
<view class="paymentShow-tips">
订单描述{{remark ? remark : '暂无描述'}}
</view>
<view class="paymentShow-top-name" style="margin-bottom: 10px; color: #9a9a9a;">支付方式</view>
<view @click="payTypeVal = 'alipay'" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'alipay' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>支付宝银联商务
</view>
<view @click="onUmsPay('mp')" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'umsWx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>微信支付银联商务
</view>
<view @click="payTypeVal = 'dgwxalipay'" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'dgwxalipay' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>支付宝汇付
</view>
<view @click="dgwxPay('mp')" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'dgwx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>微信支付(汇付)
</view>
</view>
</view>
<view class="paymentBtn" v-if="payTypeVal == 'umsWx'">
<!-- douhuotest dev=0是线上 dev=1是线下 -->
<wx-open-launch-weapp
username="gh_918c81628d6f"
:path="'pages/pay/pay?type=h5&dev=0&trade_id=' + tradeId + '&token=' + token"
>
<script type="text/wxtag-template">
<style>
.gobtn {
width: 280px;
background-color: #da2b56;
color: #ffffff;
border-radius: 5px;
height: 50px;
line-height: 50px;
font-size: 18px;
border: none;
}
</style>
<button type="default" class="gobtn">打开小程序收银台</button>
</script>
</wx-open-launch-weapp>
</view>
<view class="paymentBtn" v-else-if="payTypeVal == 'dgwx'">
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChickDg">
打开小程序收银台
</button>
</view>
<view class="paymentBtn" v-else>
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChick">
立即支付
</button>
</view>
<template>
<view class="content">
<view class="paymentTop">
<!-- v-if="applyData.status" -->
<view class="paymentTop-name">
订单支付
<text>与人方便,与己方便,珍惜时间,请先付款</text>
</view>
<img class="paymentTop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/d9c965766807a6e1c57da11e069c8686.png">
</view>
<view class="paymentShow">
<img class="paymentShow-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5ccd7b6473095bf0e55c21240ca2eb90.png">
<view class="paymentShow-text">
<view class="paymentShow-top">
<view class="paymentShow-top-name">订单名称<text>{{style == 'chajia' ? '补差价' : '咨询服务费'}}</text></view>
<view class="paymentShow-top-price">{{price}}</view>
</view>
<view class="paymentShow-tips">
订单描述{{remark ? remark : '暂无描述'}}
</view>
<view class="paymentShow-top-name" style="margin-bottom: 10px; color: #9a9a9a;">支付方式</view>
<view @click="payTypeVal = 'alipay'" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'alipay' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>支付宝银联商务
</view>
<view @click="onUmsPay('mp')" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'umsWx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>微信支付银联商务
</view>
<view @click="payTypeVal = 'dgwxalipay'" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'dgwxalipay' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>支付宝汇付
</view>
<view @click="dgwxPay('mp')" class="paymentList-label">
<image class="paymentList-img" :src="payTypeVal == 'dgwx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>微信支付(汇付)
</view>
</view>
</view>
<view class="paymentBtn" v-if="payTypeVal == 'umsWx'">
<!-- douhuotest dev=0是线上 dev=1是线下 -->
<wx-open-launch-weapp
username="gh_918c81628d6f"
:path="'pages/pay/pay?type=h5&dev=0&trade_id=' + tradeId + '&token=' + token"
>
<script type="text/wxtag-template">
<style>
.gobtn {
width: 280px;
background-color: #da2b56;
color: #ffffff;
border-radius: 5px;
height: 50px;
line-height: 50px;
font-size: 18px;
border: none;
}
</style>
<button type="default" class="gobtn">打开小程序收银台</button>
</script>
</wx-open-launch-weapp>
</view>
<view class="paymentBtn" v-else-if="payTypeVal == 'dgwx'">
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChickDg">
打开小程序收银台
</button>
</view>
<view class="paymentBtn" v-else>
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChick">
立即支付
</button>
</view>
</view>
</template>
<script>
import VConsole from 'vconsole';
const jweixin = require('jweixin-module');
import { applyPay, diffPay, authFollow } from '@/apis/interfaces/index'
import { umsDiff, umsOrder, umsState, dgPay, diffDgPay } from '@/apis/interfaces/pay.js'
export default {
data() {
return {
payTypeVal : 'alipay', // 支付方式
tradeId : '', // 查询id
jumpUrlDg : '', // 抖巩支付
getState : false, // 查询支付结果
token : '', // 用户token
style : '', // 支付类型
price : '', // 价格
disabled : false // 按钮状态
}
},
onLoad() {
// new VConsole();
},
onShow() {
if(this.getState && this.tradeId != ''){
this.getUmsState(this.tradeId)
}
this.token = this.$store.getters.getToken
this.style = this.$Route.query.style
this.price = this.$Route.query.price
this.remark = this.$Route.query.remark
},
methods: {
// 查询支付结果
getUmsState(tradeId){
uni.showLoading({
title: '查询支付结果...',
mask : true
})
let outTime;
let resNumb = 0;
outTime = setInterval(() => {
if(resNumb >= 3){
clearInterval(outTime)
uni.showToast({
title: "查询支付结果失败",
icon : "none",
mask : true
})
return
}
umsState(tradeId).then(res => {
resNumb++
if(res.state === 'success'){
clearInterval(outTime)
uni.hideLoading()
this.$Router.replace({name: 'sheetPoint'})
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}, 2000)
},
// 支付
payChick(){
switch(this.payTypeVal){
case '':
uni.showToast({
title: '请选择支付方式',
icon : 'none'
})
break;
case 'wxpay':
this.payClick()
break;
case 'alipay':
this.onUmsPay('mp_alipay')
break;
case 'dgwxalipay':
this.dgwxPay('mp_alipay')
break;
}
this.showPayMenu = false
},
// 抖供支付
payChickDg() {
window.location.href = this.jumpUrlDg.scheme_code
},
// 第三方差价支付
onUmsPay(type){
let umsFun = this.style == 'chajia' ? umsDiff : umsOrder
umsFun(this.$Route.query.id, {type}).then(res => {
this.getState = true
switch (type){
case 'mp':
this.tradeId = res.trade_id
this.payTypeVal = 'umsWx'
break;
case 'mp_alipay':
this.tradeId = res.trade_id
window.location.href = res.alipay
break;
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 斗拱支付
dgwxPay(type){
uni.showLoading({
title: '加载中...',
mask : true
})
let umsFun = this.style == 'chajia' ? dgPay : diffDgPay
dgPay(this.$Route.query.id, {type, app_schema: 'weixin://'}).then(res => {
let { params, trade_id } = res;
this.getState = true
uni.hideLoading()
switch (type){
case 'mp':
this.tradeId = trade_id
this.jumpUrlDg = JSON.parse(params.miniapp_data)
this.payTypeVal = 'dgwx'
break;
case 'mp_alipay':
this.tradeId = trade_id
// window.location.href = 'https://ds.alipay.com/?scheme=' + encodeURIComponent(params.jump_url)
window.location.href = `https://ds.alipay.com/?scheme=` + encodeURIComponent(params.jump_url)
this.payTypeVal = 'dgwxalipay'
break;
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
//咨询服务费 - 微信支付
payClick() {
let newOpenId = uni.getStorageSync('openId')
if(newOpenId) {
let NewUrl = ''
if(this.$Route.query.style == 'daijiao') {
NewUrl = applyPay
} else {
NewUrl = diffPay
}
NewUrl(this.$Route.query.id, {
openid : newOpenId
}).then(res => {
let wxConfig = JSON.parse(res.wechat)
jweixin.config({
appId: wxConfig.appId,
debug: false,
jsApiList: ['chooseWXPay'],
signature: wxConfig.signature,
nonceStr: wxConfig.nonceStr,
timestamp: wxConfig.timestamp,
})
jweixin.ready(() => {
jweixin.chooseWXPay({
timestamp: wxConfig.timeStamp,
nonceStr: wxConfig.nonceStr,
package: wxConfig.package,
signType: wxConfig.signType,
paySign: wxConfig.paySign,
success: payRes => {
// 先跳支付成功
uni.showToast({
title: '支付成功',
icon: "none"
})
this.disabled = true
setTimeout(()=>{
this.$Router.replace({name: 'sheetPoint'})
},3000)
},
cancel: payCancel => {
// 跳到咨询单
this.$Router.replace({name: 'sheetIndex'})
},
fail: payfail => {
// 取消支付
uni.showToast({
title: '取消支付',
icon: 'none'
})
this.disabled = true
setTimeout(()=>{
this.$Router.replace({name: 'User'})
},1000)
}
});
});
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
return
}
// 获取微信授权信息-获取oppid
authFollow({
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
url: 'https://web.douhuofalv.com/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
}
}
<script>
import VConsole from 'vconsole';
const jweixin = require('jweixin-module');
import { applyPay, diffPay, authFollow } from '@/apis/interfaces/index'
import { umsDiff, umsOrder, umsState, dgPay, diffDgPay } from '@/apis/interfaces/pay.js'
export default {
data() {
return {
payTypeVal : 'alipay', // 支付方式
tradeId : '', // 查询id
jumpUrlDg : '', // 抖巩支付
getState : false, // 查询支付结果
token : '', // 用户token
style : '', // 支付类型
price : '', // 价格
disabled : false // 按钮状态
}
},
onLoad() {
// new VConsole();
},
onShow() {
if(this.getState && this.tradeId != ''){
this.getUmsState(this.tradeId)
}
this.token = this.$store.getters.getToken
this.style = this.$Route.query.style
this.price = this.$Route.query.price
this.remark = this.$Route.query.remark
},
methods: {
// 查询支付结果
getUmsState(tradeId){
uni.showLoading({
title: '查询支付结果...',
mask : true
})
let outTime;
let resNumb = 0;
outTime = setInterval(() => {
if(resNumb >= 3){
clearInterval(outTime)
uni.showToast({
title: "查询支付结果失败",
icon : "none",
mask : true
})
return
}
umsState(tradeId).then(res => {
resNumb++
if(res.state === 'success'){
clearInterval(outTime)
uni.hideLoading()
this.$Router.replace({name: 'sheetPoint'})
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}, 2000)
},
// 支付
payChick(){
switch(this.payTypeVal){
case '':
uni.showToast({
title: '请选择支付方式',
icon : 'none'
})
break;
case 'wxpay':
this.payClick()
break;
case 'alipay':
this.onUmsPay('mp_alipay')
break;
case 'dgwxalipay':
this.dgwxPay('mp_alipay')
break;
}
this.showPayMenu = false
},
// 抖供支付
payChickDg() {
window.location.href = this.jumpUrlDg.scheme_code
},
// 第三方差价支付
onUmsPay(type){
let umsFun = this.style == 'chajia' ? umsDiff : umsOrder
umsFun(this.$Route.query.id, {type}).then(res => {
this.getState = true
switch (type){
case 'mp':
this.tradeId = res.trade_id
this.payTypeVal = 'umsWx'
break;
case 'mp_alipay':
this.tradeId = res.trade_id
window.location.href = res.alipay
break;
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 斗拱支付
dgwxPay(type){
uni.showLoading({
title: '加载中...',
mask : true
})
let umsFun = this.style == 'chajia' ? dgPay : diffDgPay
dgPay(this.$Route.query.id, {type, app_schema: 'weixin://'}).then(res => {
let { params, trade_id } = res;
this.getState = true
uni.hideLoading()
switch (type){
case 'mp':
this.tradeId = trade_id
this.jumpUrlDg = JSON.parse(params.miniapp_data)
this.payTypeVal = 'dgwx'
break;
case 'mp_alipay':
this.tradeId = trade_id
// window.location.href = 'https://ds.alipay.com/?scheme=' + encodeURIComponent(params.jump_url)
window.location.href = `https://ds.alipay.com/?scheme=` + encodeURIComponent(params.jump_url)
this.payTypeVal = 'dgwxalipay'
break;
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
//咨询服务费 - 微信支付
payClick() {
let newOpenId = uni.getStorageSync('openId')
if(newOpenId) {
let NewUrl = ''
if(this.$Route.query.style == 'daijiao') {
NewUrl = applyPay
} else {
NewUrl = diffPay
}
NewUrl(this.$Route.query.id, {
openid : newOpenId
}).then(res => {
let wxConfig = JSON.parse(res.wechat)
jweixin.config({
appId: wxConfig.appId,
debug: false,
jsApiList: ['chooseWXPay'],
signature: wxConfig.signature,
nonceStr: wxConfig.nonceStr,
timestamp: wxConfig.timestamp,
})
jweixin.ready(() => {
jweixin.chooseWXPay({
timestamp: wxConfig.timeStamp,
nonceStr: wxConfig.nonceStr,
package: wxConfig.package,
signType: wxConfig.signType,
paySign: wxConfig.paySign,
success: payRes => {
// 先跳支付成功
uni.showToast({
title: '支付成功',
icon: "none"
})
this.disabled = true
setTimeout(()=>{
this.$Router.replace({name: 'sheetPoint'})
},3000)
},
cancel: payCancel => {
// 跳到咨询单
this.$Router.replace({name: 'sheetIndex'})
},
fail: payfail => {
// 取消支付
uni.showToast({
title: '取消支付',
icon: 'none'
})
this.disabled = true
setTimeout(()=>{
this.$Router.replace({name: 'User'})
},1000)
}
});
});
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
return
}
// 获取微信授权信息-获取oppid
authFollow({
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
// url: 'http://web.douhuo.demos.uzchain.tech/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price 最新
url: 'https://web.douhuofalv.com/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
}
}
}
</script>
<style lang="scss" scoped>
.paymentTop {
background-color: #dc7f8b;
padding: $padding * 2 $padding * 2 $padding * 4;
box-sizing: border-box;
display: flex;
color: #ffffff;
.paymentTop-name {
flex: 1;
font-size: $title-size + 10;
text {
margin-top: 20rpx;
display: block;
font-size: $title-size-sm;
}
}
.paymentTop-img {
width: 100rpx;
height: 100rpx;
}
}
.paymentShow {
position: relative;
top: -80rpx;
left: 0;
width: 100%;
.paymentShow-img,
.paymentShow-text{
position: absolute;
left: 30rpx;
top: 0;
width: calc(100% - 60rpx);
}
.paymentShow-text {
padding: $padding $padding * 2 0;
box-sizing: border-box;
}
.paymentShow-top {
display: flex;
font-size: $title-size + 2;
line-height: 130rpx;
.paymentShow-top-name {
flex: 1;
display: flex;
color: #9a9a9a;
text {
color: #000000;
}
}
.paymentShow-top-price {
color: $mian-color;
}
}
.paymentShow-tips {
margin-bottom: $margin + 10;
color: #9a9a9a;
font-size: $title-size-lg;
}
.paymentShow-coupon {
display: flex;
.paymentTop-icon {
width: 42rpx;
height: 42rpx;
}
.paymentTop-usable {
flex: 1;
margin-left: 20rpx;
text {
display: block;
color: #9a9a9a;
font-size: $title-size-sm;
line-height: 48rpx;
}
}
}
}
.paymentList-label {
line-height: 80rpx;
display: flex;
}
.paymentList-icon {
width: 40rpx;
height: 40rpx;
margin-right: $margin - 10;
}
.paymentList-img {
width: 34rpx;
height: 34rpx;
margin-top: 22rpx;
margin-right: $margin - 10;
}
.paymentBtn {
position: fixed;
bottom: $margin * 2;
left: 0;
text-align: center;
padding: 0 $padding 100rpx;
box-sizing: border-box;
width: 100%;
.paymentBtn-go {
width: 70% !important;
background-color: $mian-color;
color: #ffffff;
border-radius: 10rpx;
line-height: 94rpx;
font-size: $title-size + 2;
&[disabled] {
background-color: #eba5a5;
}
}
<style lang="scss" scoped>
.paymentTop {
background-color: #dc7f8b;
padding: $padding * 2 $padding * 2 $padding * 4;
box-sizing: border-box;
display: flex;
color: #ffffff;
.paymentTop-name {
flex: 1;
font-size: $title-size + 10;
text {
margin-top: 20rpx;
display: block;
font-size: $title-size-sm;
}
}
.paymentTop-img {
width: 100rpx;
height: 100rpx;
}
}
.paymentShow {
position: relative;
top: -80rpx;
left: 0;
width: 100%;
.paymentShow-img,
.paymentShow-text{
position: absolute;
left: 30rpx;
top: 0;
width: calc(100% - 60rpx);
}
.paymentShow-text {
padding: $padding $padding * 2 0;
box-sizing: border-box;
}
.paymentShow-top {
display: flex;
font-size: $title-size + 2;
line-height: 130rpx;
.paymentShow-top-name {
flex: 1;
display: flex;
color: #9a9a9a;
text {
color: #000000;
}
}
.paymentShow-top-price {
color: $mian-color;
}
}
.paymentShow-tips {
margin-bottom: $margin + 10;
color: #9a9a9a;
font-size: $title-size-lg;
}
.paymentShow-coupon {
display: flex;
.paymentTop-icon {
width: 42rpx;
height: 42rpx;
}
.paymentTop-usable {
flex: 1;
margin-left: 20rpx;
text {
display: block;
color: #9a9a9a;
font-size: $title-size-sm;
line-height: 48rpx;
}
}
}
}
.paymentList-label {
line-height: 80rpx;
display: flex;
}
.paymentList-icon {
width: 40rpx;
height: 40rpx;
margin-right: $margin - 10;
}
.paymentList-img {
width: 34rpx;
height: 34rpx;
margin-top: 22rpx;
margin-right: $margin - 10;
}
.paymentBtn {
position: fixed;
bottom: $margin * 2;
left: 0;
text-align: center;
padding: 0 $padding 100rpx;
box-sizing: border-box;
width: 100%;
.paymentBtn-go {
width: 70% !important;
background-color: $mian-color;
color: #ffffff;
border-radius: 10rpx;
line-height: 94rpx;
font-size: $title-size + 2;
&[disabled] {
background-color: #eba5a5;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,499 +1,499 @@
<template>
<view class="content">
<image class="expandImg" src="https://cdn.douhuofalv.com/images/2023/04/19/df2ecf6ece3e59de1d51c4ad09aa68f3.jpg" mode="widthFix"></image>
<view class="list">
<view class="list-title">
<view class="list-title-number">expand</view>
<view class="list-title-name">法律服务拓展包</view>
<view class="list-title-trim"></view>
</view>
<view class="list-item">
<!-- @click="seekClick(item.expand_id)" -->
<view class="list-label" v-for="(item, index) in entrustArr" :key="index">
<view class="list-label-name">
{{item.title}}
</view>
<view class="list-label-price"><rich-text :nodes="item.content"></rich-text></view>
<!-- <view class="list-label-go">购买</view> -->
<!-- data[0].order.status -->
<view class="list-label-go" :class="{'hide': item.button_status === 2}" @click="onBtn(index)">
<text v-if="item.button_status === 0">购买</text>
<text v-if="item.button_status === 1">等待支付</text>
<text v-if="item.button_status === 2">待审核</text>
<text v-if="item.button_status === 3">审核驳回</text>
</view>
</view>
</view>
</view>
<image class="expandBttom" src="https://cdn.douhuofalv.com/images/2023/04/17/fc4cad00a630e3d69b3f486e9d2937e9.png" mode="widthFix"></image>
<!-- 关注公众号 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
<!-- 打款凭证弹出 -->
<view class="voucherBack" :class="{active : voucherState}"></view>
<view class="voucherPop" :class="{active : voucherState}">
<view class="tipsWhite">
<image class="voucherPop-img" src="https://cdn.douhuofalv.com/images/2023/04/17/f4a3c45fe9aa7db143a362fc5b13b31d.png" mode="widthFix"></image>
<view class="voucherPop-title">
<view class="voucherPop-name">支付提示</view>
<view class="voucherPop-text">抱歉此订单不支持线上支付请上传打款凭证</view>
<view class="voucherPop-btn">
<!-- @click="cancelPay" -->
<view class="voucherPop-go" @click="voucherState = false">
暂不支付
</view>
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
上传凭证
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
import { expandsList } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
entrustArr : [], //案件委托列表
generalShow : false,
voucherState : false, // 上传凭证弹出// 公众号
orderId : '', // 订单 ID
orderType : '', // 订单类型
orderPrice : '', // 订单金额
}
},
created() {},
onShow() {
// 获取-案件委托-列表
this.yearServe();
},
methods: {
// 案件委托-列表
yearServe(){
expandsList().then(res => {
this.entrustArr = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 点击开通按钮
onBtn(index){
let obj = this.entrustArr[index]
if(obj.order === null){
this.seekClick(obj.expand_id)
return
}
// 0 购买 1 待支付 2 待审核 3 驳回
switch (obj.button_status){
case 0:
this.seekClick(obj.expand_id)
break;
case 1:
this.expressSheet(obj.order.expand_order_id, obj.order.order_type, obj.order.can, obj.order.price)
break;
case 2:
uni.showToast({
title: '打款凭证审核中,请耐心等待',
icon : 'none'
})
break;
case 3:
this.$Router.push({
name : 'VoucherOpen',
params : {
payId : obj.order.offline_pays.offline_pay_id,
type : 'edit',
orderId : obj.order.order_id,
orderType : obj.order.order_type.replace(/\\/g, '-'),
price : obj.price
}
})
break;
}
},
// 选择支付方式
expressSheet(id, type, can, price) {
this.orderId = id
this.orderType = type
this.orderPrice = price
uni.showActionSheet({
itemList: ['线上支付', '线下支付'],
success: sheetRes => {
if(sheetRes.tapIndex == 0) {
if(can.online) {
this.$Router.push({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
return
}
this.voucherState = true
} else if (sheetRes.tapIndex == 1) {
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type, price: price}})
}
},
fail: sheetFail => {}
})
},
// 上传凭证
clickOpen() {
this.voucherState = false
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType, price: this.orderPrice}})
},
// 立即咨询
seekClick(entrustId) {
// 判断是否认证
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询表单页
this.$Router.push({
name: 'ExpandWrite',
params: {
entrustId
}
})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
},
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #121d4c;
}
.expandImg,
.expandBttom{
width: 100%;
display: block;
}
.list {
padding: 0 30rpx 30rpx;
box-sizing: border-box;
background-color: #121d4c;
.list-title {
font-size: 36rpx;
margin-bottom: 40rpx;
color: #ffffff;
.list-title-trim {
position: relative;
left: 390rpx;
bottom: 28rpx;
background-color: #2f3aae;
width: 35%;
height: 4rpx;
padding-left: 40rpx;
box-sizing: border-box;
&::after {
position: absolute;
content: '';
left: -50rpx;
top: -10rpx;
width: 20rpx;
height: 20rpx;
transform:rotate(45deg);
background-color: #2f3aae;
}
}
.list-title-number {
font-weight: 600;
font-size: 58rpx;
background-image: -webkit-linear-gradient(top,#ffffff 40%, transparent 70%);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
text-transform: uppercase;
}
.list-title-name {
font-size: 44rpx;
margin-top: -20rpx;
width: 390rpx;
}
}
.list-item {
position: relative;
padding-left: 100rpx;
box-sizing: border-box;
&::after {
position: absolute;
content: '';
left: 10rpx;
top: 0;
border-left: 4rpx dashed #3b46d6;
width: 0;
height: calc(100% - 64rpx);
}
.list-label {
background-image: linear-gradient(to right,#3d48dd, #1f2a6f);
padding: 15rpx 40rpx 15rpx 90rpx;
box-sizing: border-box;
border-radius: 80rpx 15rpx 15rpx 80rpx;
margin-bottom: 30rpx;
color: #ffffff;
position: relative;
&::before {
position: absolute;
content: '';
left: -88rpx;
top: calc(50% - 1rpx);
border-bottom: 4rpx dashed #3b46d6;
width: 60rpx;
height: 0;
}
&::after {
position: absolute;
content: '';
left: 40rpx;
top: calc(50% - 9rpx);
background-color: #091443;
width: 18rpx;
height: 18rpx;
border-radius: 50%;
}
.list-label-name {
margin-bottom: 5rpx;
}
.list-label-price {
line-height: 48rpx;
}
.list-label-go {
position: absolute;
right: 30rpx;
top: 35rpx;
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
color: #12053d;
display: inline-block;
line-height: 54rpx;
padding: 0 30rpx;
border-radius: 54rpx;
font-size: 26rpx;
font-weight: 600;
&.hide{
opacity: .7;
}
}
}
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
// 打款凭证弹出
.voucherBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 99;
background-color: rgba(0, 0, 0, .6);
display: none;
&.active {
display: block;
}
}
.voucherPop {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
padding: 0 10%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
position: relative;
.voucherPop-img {
position: absolute !important;
top: -80rpx;
right: calc(50% - 100rpx);
width: 200rpx;
}
.voucherPop-title {
box-sizing: border-box;
padding: 50rpx 70rpx;
margin-top: 100rpx;
text-align: center;
.voucherPop-name {
font-weight: 600;
font-size: 38rpx;
}
.voucherPop-text {
padding: 30rpx 0 35rpx;
line-height: 44rpx;
}
.voucherPop-btn {
display: flex;
.voucherPop-go {
flex: 2;
text-align: center;
border: 2rpx solid #da2b56;
color: #da2b56;
margin: 0 15rpx;
line-height: 74rpx;
border-radius: 10rpx;
background-color: #ffffff;
&.voucherPop-up {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
}
}
<template>
<view class="content">
<image class="expandImg" src="https://cdn.douhuofalv.com/images/2023/04/19/df2ecf6ece3e59de1d51c4ad09aa68f3.jpg" mode="widthFix"></image>
<view class="list">
<view class="list-title">
<view class="list-title-number">expand</view>
<view class="list-title-name">法律服务拓展包</view>
<view class="list-title-trim"></view>
</view>
<view class="list-item">
<!-- @click="seekClick(item.expand_id)" -->
<view class="list-label" v-for="(item, index) in entrustArr" :key="index">
<view class="list-label-name">
{{item.title}}
</view>
<view class="list-label-price"><rich-text :nodes="item.content"></rich-text></view>
<!-- <view class="list-label-go">购买</view> -->
<!-- data[0].order.status -->
<view class="list-label-go" :class="{'hide': item.button_status === 2}" @click="onBtn(index)">
<text v-if="item.button_status === 0">购买</text>
<text v-if="item.button_status === 1">等待支付</text>
<text v-if="item.button_status === 2">待审核</text>
<text v-if="item.button_status === 3">审核驳回</text>
</view>
</view>
</view>
</view>
<image class="expandBttom" src="https://cdn.douhuofalv.com/images/2023/04/17/fc4cad00a630e3d69b3f486e9d2937e9.png" mode="widthFix"></image>
<!-- 关注公众号 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
请您先关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
<!-- 打款凭证弹出 -->
<view class="voucherBack" :class="{active : voucherState}"></view>
<view class="voucherPop" :class="{active : voucherState}">
<view class="tipsWhite">
<image class="voucherPop-img" src="https://cdn.douhuofalv.com/images/2023/04/17/f4a3c45fe9aa7db143a362fc5b13b31d.png" mode="widthFix"></image>
<view class="voucherPop-title">
<view class="voucherPop-name">支付提示</view>
<view class="voucherPop-text">抱歉此订单不支持线上支付请上传打款凭证</view>
<view class="voucherPop-btn">
<!-- @click="cancelPay" -->
<view class="voucherPop-go" @click="voucherState = false">
暂不支付
</view>
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
上传凭证
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
import { expandsList } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
entrustArr : [], //案件委托列表
generalShow : false,
voucherState : false, // 上传凭证弹出// 公众号
orderId : '', // 订单 ID
orderType : '', // 订单类型
orderPrice : '', // 订单金额
}
},
created() {},
onShow() {
// 获取-案件委托-列表
this.yearServe();
},
methods: {
// 案件委托-列表
yearServe(){
expandsList().then(res => {
this.entrustArr = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 点击开通按钮
onBtn(index){
let obj = this.entrustArr[index]
if(obj.order === null){
this.seekClick(obj.expand_id)
return
}
// 0 购买 1 待支付 2 待审核 3 驳回
switch (obj.button_status){
case 0:
this.seekClick(obj.expand_id)
break;
case 1:
this.expressSheet(obj.order.expand_order_id, obj.order.order_type, obj.order.can, obj.order.price)
break;
case 2:
uni.showToast({
title: '打款凭证审核中,请耐心等待',
icon : 'none'
})
break;
case 3:
this.$Router.push({
name : 'VoucherOpen',
params : {
payId : obj.order.offline_pays.offline_pay_id,
type : 'edit',
orderId : obj.order.order_id,
orderType : obj.order.order_type.replace(/\\/g, '-'),
price : obj.price
}
})
break;
}
},
// 选择支付方式
expressSheet(id, type, can, price) {
this.orderId = id
this.orderType = type
this.orderPrice = price
uni.showActionSheet({
itemList: ['线上支付', '线下支付'],
success: sheetRes => {
if(sheetRes.tapIndex == 0) {
if(can.online) {
this.$Router.push({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
return
}
this.voucherState = true
} else if (sheetRes.tapIndex == 1) {
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type, price: price}})
}
},
fail: sheetFail => {}
})
},
// 上传凭证
clickOpen() {
this.voucherState = false
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType, price: this.orderPrice}})
},
// 立即咨询
seekClick(entrustId) {
// 判断是否认证
judgeReal().then(res => {
if(res.has_sign) {
if(!res.has_subscribe) {
// 弹出公众号
this.generalShow = true
} else {
// 跳到咨询表单页
this.$Router.push({
name: 'ExpandWrite',
params: {
entrustId
}
})
}
return
}
// 跳到认证页面
this.$Router.replace({name: 'sheetIdcard'})
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
},
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #121d4c;
}
.expandImg,
.expandBttom{
width: 100%;
display: block;
}
.list {
padding: 0 30rpx 30rpx;
box-sizing: border-box;
background-color: #121d4c;
.list-title {
font-size: 36rpx;
margin-bottom: 40rpx;
color: #ffffff;
.list-title-trim {
position: relative;
left: 390rpx;
bottom: 28rpx;
background-color: #2f3aae;
width: 35%;
height: 4rpx;
padding-left: 40rpx;
box-sizing: border-box;
&::after {
position: absolute;
content: '';
left: -50rpx;
top: -10rpx;
width: 20rpx;
height: 20rpx;
transform:rotate(45deg);
background-color: #2f3aae;
}
}
.list-title-number {
font-weight: 600;
font-size: 58rpx;
background-image: -webkit-linear-gradient(top,#ffffff 40%, transparent 70%);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
text-transform: uppercase;
}
.list-title-name {
font-size: 44rpx;
margin-top: -20rpx;
width: 390rpx;
}
}
.list-item {
position: relative;
padding-left: 100rpx;
box-sizing: border-box;
&::after {
position: absolute;
content: '';
left: 10rpx;
top: 0;
border-left: 4rpx dashed #3b46d6;
width: 0;
height: calc(100% - 64rpx);
}
.list-label {
background-image: linear-gradient(to right,#3d48dd, #1f2a6f);
padding: 15rpx 40rpx 15rpx 90rpx;
box-sizing: border-box;
border-radius: 80rpx 15rpx 15rpx 80rpx;
margin-bottom: 30rpx;
color: #ffffff;
position: relative;
&::before {
position: absolute;
content: '';
left: -88rpx;
top: calc(50% - 1rpx);
border-bottom: 4rpx dashed #3b46d6;
width: 60rpx;
height: 0;
}
&::after {
position: absolute;
content: '';
left: 40rpx;
top: calc(50% - 9rpx);
background-color: #091443;
width: 18rpx;
height: 18rpx;
border-radius: 50%;
}
.list-label-name {
margin-bottom: 5rpx;
}
.list-label-price {
line-height: 48rpx;
}
.list-label-go {
position: absolute;
right: 30rpx;
top: 35rpx;
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
color: #12053d;
display: inline-block;
line-height: 54rpx;
padding: 0 30rpx;
border-radius: 54rpx;
font-size: 26rpx;
font-weight: 600;
&.hide{
opacity: .7;
}
}
}
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
// 打款凭证弹出
.voucherBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 99;
background-color: rgba(0, 0, 0, .6);
display: none;
&.active {
display: block;
}
}
.voucherPop {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
padding: 0 10%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
position: relative;
.voucherPop-img {
position: absolute !important;
top: -80rpx;
right: calc(50% - 100rpx);
width: 200rpx;
}
.voucherPop-title {
box-sizing: border-box;
padding: 50rpx 70rpx;
margin-top: 100rpx;
text-align: center;
.voucherPop-name {
font-weight: 600;
font-size: 38rpx;
}
.voucherPop-text {
padding: 30rpx 0 35rpx;
line-height: 44rpx;
}
.voucherPop-btn {
display: flex;
.voucherPop-go {
flex: 2;
text-align: center;
border: 2rpx solid #da2b56;
color: #da2b56;
margin: 0 15rpx;
line-height: 74rpx;
border-radius: 10rpx;
background-color: #ffffff;
&.voucherPop-up {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<template>
<view class="content">
<view id="poster" class="poster">
<view id="poster" :class="['poster', {'vip_bg': seekData.is_vip}]">
<view class="top">
<view class="top-cont">
<image class="top-cont-img" src="https://cdn.douhuofalv.com/images/2023/04/24/a45643fc33ca42b7a430aee573a93da4.png" mode="widthFix"></image>
@@ -13,6 +13,9 @@
<view class="confirm-white">
<view class="confirm-top">订单号 {{seekData.order_no}}</view>
<view class="confirm-list">
<view class="confirm-item" style="color: #CD7F32; font-weight: bold;" v-if="seekData.is_vip">
<view class="confirm-item-label">VIP订单</view>
</view>
<view class="confirm-item" v-for="(item, index) in seekData.params">
<view class="confirm-item-label">{{item.title}}</view>
<view class="confirm-item-text" v-if="item.key == 'address'">{{item.value_text.province_name}}{{item.value_text.city}}</view>
@@ -115,10 +118,16 @@
height: 100%;
overflow-y: scroll;
position: fixed;
&.vip_bg{
background: linear-gradient(to bottom,#bf9960, #f9cd9e);
}
}
.poster {
background-image: linear-gradient(to bottom,#041f79, #111e4b);
&.vip_bg{
background: linear-gradient(to bottom,#582700, #f9cd9e);
}
}
.top {

View File

@@ -61,7 +61,7 @@
<!-- web.douhuotest.douhuofalv dev=0是线上 dev=1是线下 -->
<wx-open-launch-weapp
username="gh_918c81628d6f"
:path="'pages/pay/pay?type=h5&dev=0&trade_id=' + tradeId + '&token=' + token"
:path="'pages/pay/pay?type=h5&dev=1&trade_id=' + tradeId + '&token=' + token"
>
<script type="text/wxtag-template">
<style>
@@ -116,7 +116,7 @@
const jweixin = require('jweixin-module');
import { Apply, Wechat, authFollow } from '@/apis/interfaces/index'
import { ums, umsState } from '@/apis/interfaces/pay'
import { servicePay, serviceUms, serviceDg, expandPay, expandUms, expandDg, entrustPay, entrustUms, entrustDg, synDiffPay, synDiffUms, synDiffDg } from '@/apis/interfaces/pay'
import { servicePay, serviceUms, serviceDg, expandPay, expandUms, expandDg, entrustPay, entrustUms, entrustDg, synDiffPay, synDiffUms, synDiffDg, payWechat, payUms, payDg } from '@/apis/interfaces/pay'
export default {
data() {
return {
@@ -133,7 +133,7 @@
payForm : '', // 支付类型
}
},
onShow() {
onShow() {
this.token = this.$store.getters.getToken
this.payPrice = this.$Route.query.price
this.payForm = this.$Route.query.payForm
@@ -174,6 +174,8 @@
apiUrl = expandDg
} else if (this.payForm == 'entrust') {
apiUrl = entrustDg
} else if (this.payForm == 'synthesize') {
apiUrl = payDg
}
NewUrl = apiUrl
}
@@ -213,6 +215,8 @@
apiUrl = serviceUms
} else if (this.payForm == 'expand') {
apiUrl = expandUms
} else if (this.payForm == 'synthesize') {
apiUrl = payUms
} else {
apiUrl = entrustUms
}
@@ -265,6 +269,8 @@
apiUrl = servicePay
} else if (this.payForm == 'expand') {
apiUrl = expandPay
} else if (this.payForm == 'synthesize') {
apiUrl = payWechat
} else {
apiUrl = entrustPay
}
@@ -307,6 +313,9 @@
} else if (this.payForm == 'expand') {
// 跳到拓展单
this.$Router.replace({name: 'ExpandOrder'})
} else if (this.payForm == 'synthesize') {
// 个人中心
this.$Router.replace({name: 'User'})
} else {
// 跳到委托单
this.$Router.replace({name: 'EntrustOrder'})
@@ -329,6 +338,11 @@
setTimeout(()=>{
this.$Router.replace({name: 'ExpandOrder'})
},1000)
} else if (this.payForm == 'synthesize') {
// 个人中心
setTimeout(()=>{
this.$Router.replace({name: 'User'})
},1000)
} else {
// 跳到委托单
setTimeout(()=>{
@@ -350,7 +364,8 @@
// 获取微信授权信息-获取oppid
authFollow({
url: 'https://web.douhuofalv.com/webWechat/index?id=' + this.$Route.query.id + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index?id=' + this.orderId + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
// url: 'https://web.douhuotest.douhuofalv.com/webWechat/index?id=' + this.orderId + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price
// url: 'http://web.douhuo.demos.uzchain.tech/webWechat/index?id=' + this.orderId + '&style=' + this.$Route.query.style + '&price=' + this.$Route.query.price 最新
}).then(res => {
window.location.href = res
}).catch(err => {
@@ -370,6 +385,9 @@
} else if (this.payForm == 'expand') {
// 跳到拓展单
this.$Router.replace({name: 'ExpandOrder'})
} else if (this.payForm == 'synthesize') {
// 个人中心
this.$Router.replace({name: 'User'})
} else {
// 跳到委托单
this.$Router.replace({name: 'EntrustOrder'})

View File

@@ -1,416 +1,425 @@
<template>
<view class="content">
<view class="top">
<view class="top-cont">
<view class="top-cont-name">个人法律咨询</view>
<view class="top-cont-text">请仔细填写以下信息</view>
</view>
<image class="top-img" src="https://cdn.douhuofalv.com/images/2023/04/20/2ea5fc20ffc90e7feec7ba2650b81c99.png" mode="widthFix"></image>
</view>
<view class="idcardBorder">
<!-- 表单部分 -->
<view class="idcardAdd-block">
<block v-for="(item, keyIndex) in paramsArr" :key="keyIndex">
<block v-if="item.pre_key == null || isShow(item)">
<view class="idcardAdd-block-name">
<view class="idcardAdd-block-see">
<text v-if="item.is_required == 1">*</text>{{item.title}}
</view>
</view>
<!-- 单输入框 -->
<view class="idcardAdd-block-write" v-if="item.type === 'price' || item.type === 'number' || item.type === 'text' || item.type === 'password' || item.type === 'mobile' || item.type === 'day'">
<block v-if="item.key === 'name' || item.type === 'mobile'">
<input class="idcardAdd-input" v-model="item.value" :placeholder="item.value_text" v-if="item.value_text">
<mouldInput v-else class="idcardAdd-input" :blur-value="item.value" :input-type="item.type" :input-title="item.title" :input-key="item.key" @onValue="($event) => {item.value = $event}"></mouldInput>
</block>
<block v-else>
<mouldInput class="idcardAdd-input" :blur-value="item.value" :input-type="item.type" :input-title="item.title" :input-key="item.key" @onValue="($event) => {item.value = $event}"></mouldInput>
</block>
</view>
<!-- 下拉框 -->
<view class="idcardAdd-block-write" v-if="item.type === 'select'">
<picker class="idcardAdd-picker" :range="item.options" :value="item.value" @change="item.value = $event.detail.value">
<view class="nowrap">
<!-- {{item.options[item.value]}} -->
{{item.options[item.value]}}
</view>
<image class="idcardAdd-picke-image" src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
</picker>
</view>
<!-- 多选 -->
<view class="idcardAdd-aline" v-if="item.type === 'checkbox'">
<checkbox-group @change="item.value = $event.detail.value">
<label class="checkbox-item" v-for="(checkboxItem, checkboxIndex) in item.options">
<checkbox class="checkbox-input" :value="checkboxIndex" color="#446EFE"></checkbox>{{checkboxItem}}
</label>
</checkbox-group>
</view>
<!-- 单选 -->
<view class="idcardAdd-aline" v-if="item.type === 'radio'">
<radio-group @change="item.value = $event.detail.value">
<label class="idcardAdd-aline-write" v-for="(radioItem, radioIndex) in item.options" :key="radioIndex">
<radio :value="radioIndex" color="#446EFE" style="transform:scale(.65)" :checked="item.value === radioIndex" /><text>{{radioItem}}</text>
</label>
</radio-group>
</view>
<!-- 描述 -->
<view class="idcardAdd-depict-textarea" v-if="item.type === 'textarea'">
<textarea maxlength="500" class="textarea" :placeholder="'请输入' + item.title" v-model="item.value"></textarea>
<text>500字以内</text>
</view>
<!-- 被告所在地 -->
<block v-if="item.type === 'pro_city' && item.key === 'defendant_address'">
<view class="idcardAdd-block-write">
<uni-data-picker
:localdata="cityPicker"
:border="false"
split="-"
placeholder="选择城市"
@change="defendantPicker"
></uni-data-picker>
</view>
</block>
<!-- 目前所在地 -->
<block v-if="item.type === 'pro_city' && item.key === 'address'">
<view class="idcardAdd-block-write">
<uni-data-picker
:localdata="cityPicker"
:border="false"
split="-"
placeholder="选择城市"
@change="addressPicker"
></uni-data-picker>
</view>
</block>
</block>
</block>
</view>
</view>
<view class="idcardBtn">
<button class="idcardBtn-go" type="default" @click="onSubmit" :disabled="disabled">{{disabled ? '数据正在提交中' : '确认提交'}}</button>
</view>
</view>
</template>
<script>
import { synthDet, synthPost } from '@/apis/interfaces/synthesis'
import { createCity } from '@/apis/interfaces/user'
import mouldInput from '@/components/mould-input.vue'
export default {
components: {
mouldInput
},
data() {
return {
paramsArr : [], // 信息
cityPicker : [], // 地址
// 目前所在地
address : {},
disabled : false
}
},
created() {
uni.showLoading({
title: '加载中...',
mask : true
})
// 获取综法咨询-详情
this.getBusiness();
// 省市区
createCity().then(res => {
this.cityPicker = res;
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
computed: {
isShow(){
return (item) => {
if(item.pre_key != null){
let index = this.paramsArr.findIndex(val => val.key == item.pre_key)
return item.pre_value == this.paramsArr[index].value
}
return false
}
}
},
methods: {
// 综法咨询-详情
getBusiness(){
<template>
<view class="content">
<view class="top">
<view class="top-cont">
<view class="top-cont-name">个人法律咨询</view>
<view class="top-cont-text">请仔细填写以下信息</view>
</view>
<image class="top-img" src="https://cdn.douhuofalv.com/images/2023/04/20/2ea5fc20ffc90e7feec7ba2650b81c99.png" mode="widthFix"></image>
</view>
<view class="idcardBorder">
<!-- 表单部分 -->
<view class="idcardAdd-block">
<block v-for="(item, keyIndex) in paramsArr" :key="keyIndex">
<block v-if="item.pre_key == null || isShow(item)">
<view class="idcardAdd-block-name">
<view class="idcardAdd-block-see">
<text v-if="item.is_required == 1">*</text>{{item.title}}
</view>
</view>
<!-- 单输入框 -->
<view class="idcardAdd-block-write" v-if="item.type === 'price' || item.type === 'number' || item.type === 'text' || item.type === 'password' || item.type === 'mobile' || item.type === 'day'">
<block v-if="item.key === 'name' || item.type === 'mobile'">
<input class="idcardAdd-input" v-model="item.value" :placeholder="item.value_text" v-if="item.value_text">
<mouldInput v-else class="idcardAdd-input" :blur-value="item.value" :input-type="item.type" :input-title="item.title" :input-key="item.key" @onValue="($event) => {item.value = $event}"></mouldInput>
</block>
<block v-else>
<mouldInput class="idcardAdd-input" :blur-value="item.value" :input-type="item.type" :input-title="item.title" :input-key="item.key" @onValue="($event) => {item.value = $event}"></mouldInput>
</block>
</view>
<!-- 下拉框 -->
<view class="idcardAdd-block-write" v-if="item.type === 'select'">
<picker class="idcardAdd-picker" :range="item.options" :value="item.value" @change="item.value = $event.detail.value">
<view class="nowrap">
<!-- {{item.options[item.value]}} -->
{{item.options[item.value]}}
</view>
<image class="idcardAdd-picke-image" src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
</picker>
</view>
<!-- 多选 -->
<view class="idcardAdd-aline" v-if="item.type === 'checkbox'">
<checkbox-group @change="item.value = $event.detail.value">
<label class="checkbox-item" v-for="(checkboxItem, checkboxIndex) in item.options">
<checkbox class="checkbox-input" :value="checkboxIndex" color="#446EFE"></checkbox>{{checkboxItem}}
</label>
</checkbox-group>
</view>
<!-- 单选 -->
<view class="idcardAdd-aline" v-if="item.type === 'radio'">
<radio-group @change="item.value = $event.detail.value">
<label class="idcardAdd-aline-write" v-for="(radioItem, radioIndex) in item.options" :key="radioIndex">
<radio :value="radioIndex" color="#446EFE" style="transform:scale(.65)" :checked="item.value === radioIndex" /><text>{{radioItem}}</text>
</label>
</radio-group>
</view>
<!-- 描述 -->
<view class="idcardAdd-depict-textarea" v-if="item.type === 'textarea'">
<textarea maxlength="500" class="textarea" :placeholder="'请输入' + item.title" v-model="item.value"></textarea>
<text>500字以内</text>
</view>
<!-- 被告所在地 -->
<block v-if="item.type === 'pro_city' && item.key === 'defendant_address'">
<view class="idcardAdd-block-write">
<uni-data-picker
:localdata="cityPicker"
:border="false"
split="-"
placeholder="选择城市"
@change="defendantPicker"
></uni-data-picker>
</view>
</block>
<!-- 目前所在地 -->
<block v-if="item.type === 'pro_city' && item.key === 'address'">
<view class="idcardAdd-block-write">
<uni-data-picker
:localdata="cityPicker"
:border="false"
split="-"
placeholder="选择城市"
@change="addressPicker"
></uni-data-picker>
</view>
</block>
</block>
</block>
</view>
</view>
<view class="idcardBtn">
<button class="idcardBtn-go" type="default" @click="onSubmit" :disabled="disabled">{{disabled ? '数据正在提交中' : '确认提交'}}</button>
</view>
</view>
</template>
<script>
import { synthDet, synthPost } from '@/apis/interfaces/synthesis'
import { createCity } from '@/apis/interfaces/user'
import mouldInput from '@/components/mould-input.vue'
export default {
components: {
mouldInput
},
data() {
return {
paramsArr : [], // 信息
cityPicker : [], // 地址
// 目前所在地
address : {},
disabled : false
}
},
created() {
uni.showLoading({
title: '加载中...',
mask : true
})
// 获取综法咨询-详情
this.getBusiness();
// 省市区
createCity().then(res => {
this.cityPicker = res;
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
computed: {
isShow(){
return (item) => {
if(item.pre_key != null){
let index = this.paramsArr.findIndex(val => val.key == item.pre_key)
return item.pre_value == this.paramsArr[index].value
}
return false
}
}
},
methods: {
// 综法咨询-详情
getBusiness(){
synthDet(this.$Route.query.synthesisId).then(res => {
let froms = res.synthesis.params
froms.map(val => {
if(val.type === 'checkbox'){
val.value = []
}else if(val.type === 'select'){
val.value = 0
}else{
val.value = ""
}
})
this.paramsArr = froms
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 目前所在地-选择城市
addressPicker(e){
let { value } = e.detail
let dataArr = {
province_id: value[0].value,
city_id: value[1].value
}
this.address = dataArr
},
// 提交订单数据
onSubmit(){
uni.showLoading({
title: '提交中...',
mask : true
})
let subData = {};
let dataArr = []
for(let val of this.paramsArr){
if(val.type === 'pro_city'){
subData[val.key] = this.address
}else{
subData[val.key] = val.value
}
}
for(let key in subData){
dataArr.push({
key,
value: subData[key]
})
}
synthPost(this.$Route.query.synthesisId, {
data: dataArr,
type: 'self',
channel: 'h5',
user_id: ''
}).then(res => {
this.disabled = true
uni.showToast({
title: '提交成功',
icon: "none"
})
setTimeout(()=>{
this.$Router.replace({name: 'FeeConfirm', params: {synthesisId: res.synthesis_order_id}})
},3000)
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #111e4b;
width: 100vw;
height: 100%;
overflow-y: scroll;
position: fixed;
}
.top {
position: relative;
height: 180rpx;
.top-img {
position: absolute;
right: 0;
top: 0;
width: 30%;
}
.top-cont {
position: absolute;
left: 0;
top: 0;
width: 100%;
padding: 40rpx 30rpx;
box-sizing: border-box;
.top-cont-name {
font-weight: 600;
font-size: 44rpx;
background-image: linear-gradient(to right,#f1c694, #fffbf6 42%);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
margin-bottom: 10rpx;
}
.top-cont-text {
font-size: 34rpx;
color: #ffffff;
}
}
}
.idcardBorder {
padding: 30rpx;
box-sizing: border-box;
}
.idcardAdd-block {
padding: $padding + 20 $padding;
box-sizing: border-box;
background-color: #ffffff;
border-radius: $radius;
position: relative;
}
.idcardAdd-depict-textarea {
background-color: #f7faff;
line-height: 90rpx;
border-radius: $radius-sm;
padding: 0 30rpx;
box-sizing: border-box;
position: relative;
width: 100%;
margin-bottom: 40rpx;
.textarea {
width: 100%;
padding: $padding 0;
box-sizing: border-box;
}
text {
width: 100%;
text-align: right;
font-size: 28rpx;
color: #999999;
display: block;
}
}
.idcardAdd-block-write {
background-color: #f7faff;
height: 90rpx;
line-height: 90rpx;
border-radius: $radius-sm;
padding: 0 30rpx;
box-sizing: border-box;
position: relative;
display: flex;
width: 100%;
margin-bottom: 40rpx;
&:last-child {
margin-bottom: 0;
}
.idcardAdd-input {
width: 100%;
height: 100%;
display: flex;
border: none;
background-color: transparent;
font-size: 30rpx;
}
}
.idcardAdd-picker {
position: relative;
width: 100%;
}
.idcardAdd-picke-image {
width: 24rpx;
height: 24rpx;
position: absolute;
top: $margin;
right: $margin;
}
.idcardAdd-block-name {
margin-bottom: $margin;
display: flex;
.idcardAdd-block-see {
color: $text-color;
margin-right: $margin;
font-size: 30rpx;
text {
color: $mian-color;
padding-right: 10rpx;
}
}
}
// checkbox
.checkbox-item{
display: inline-block;
margin-right: 20rpx;
color: #999999;
line-height: 70rpx;
&:last-child {
margin-right: 0;
}
.checkbox-input{
transform:scale(0.6);
}
}
.idcardAdd-aline {
position: relative;
display: flex;
width: 100%;
margin-bottom: 40rpx;
.idcardAdd-aline-write {
margin-right: 30rpx;
color: #999999;
}
}
// 按钮
.idcardBtn {
background-color: #111e4b;
width: 100%;
padding: 20rpx 60rpx 140rpx;
box-sizing: border-box;
display: flex;
.idcardBtn-go {
width: 100%;
background-image: linear-gradient(to bottom, #fff2d2, #f9cd9e);
color: #582700;
font-weight: 600;
font-size: 36rpx;
border-radius: $radius * 3;
height: 94rpx;
line-height: 94rpx;
box-shadow: 0 6rpx 10rpx rgba(0, 0, 0, .5);
text-align: center;
&[disabled] {
background-color: #f9f9f9;
border-color: #e2e2e2;
color: #959595;
}
&::after {
display: none;
}
}
}
let froms = res.synthesis.params
froms.map(val => {
if(val.type === 'checkbox'){
val.value = []
}else if(val.type === 'select'){
val.value = 0
}else{
val.value = ""
}
})
this.paramsArr = froms
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 目前所在地-选择城市
addressPicker(e){
let { value } = e.detail
let dataArr = {
province_id: value[0].value,
city_id: value[1].value
}
this.address = dataArr
},
// 提交订单数据
onSubmit(){
uni.showLoading({
title: '提交中...',
mask : true
})
let subData = {};
let dataArr = []
for(let val of this.paramsArr){
if(val.type === 'pro_city'){
subData[val.key] = this.address
}else{
subData[val.key] = val.value
}
}
for(let key in subData){
dataArr.push({
key,
value: subData[key]
})
}
synthPost(this.$Route.query.synthesisId, {
data: dataArr,
type: 'self',
channel: 'h5',
user_id: ''
}).then(res => {
this.disabled = true
uni.showToast({
title: '提交成功',
icon: "none"
})
// 若价格大于0,要去支付
let number = Number(res.price)
if(number > 0) {
this.$Router.replace({name: 'Pay', params: {orderId: res.order_id, orderType: res.order_type}})
return
}
// 否则直接跳转详情
setTimeout(()=>{
this.$Router.replace({name: 'FeeConfirm', params: {synthesisId: res.synthesis_order_id}})
},3000)
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #111e4b;
width: 100vw;
height: 100%;
overflow-y: scroll;
position: fixed;
}
.top {
position: relative;
height: 180rpx;
.top-img {
position: absolute;
right: 0;
top: 0;
width: 30%;
}
.top-cont {
position: absolute;
left: 0;
top: 0;
width: 100%;
padding: 40rpx 30rpx;
box-sizing: border-box;
.top-cont-name {
font-weight: 600;
font-size: 44rpx;
background-image: linear-gradient(to right,#f1c694, #fffbf6 42%);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
margin-bottom: 10rpx;
}
.top-cont-text {
font-size: 34rpx;
color: #ffffff;
}
}
}
.idcardBorder {
padding: 30rpx;
box-sizing: border-box;
}
.idcardAdd-block {
padding: $padding + 20 $padding;
box-sizing: border-box;
background-color: #ffffff;
border-radius: $radius;
position: relative;
}
.idcardAdd-depict-textarea {
background-color: #f7faff;
line-height: 90rpx;
border-radius: $radius-sm;
padding: 0 30rpx;
box-sizing: border-box;
position: relative;
width: 100%;
margin-bottom: 40rpx;
.textarea {
width: 100%;
padding: $padding 0;
box-sizing: border-box;
}
text {
width: 100%;
text-align: right;
font-size: 28rpx;
color: #999999;
display: block;
}
}
.idcardAdd-block-write {
background-color: #f7faff;
height: 90rpx;
line-height: 90rpx;
border-radius: $radius-sm;
padding: 0 30rpx;
box-sizing: border-box;
position: relative;
display: flex;
width: 100%;
margin-bottom: 40rpx;
&:last-child {
margin-bottom: 0;
}
.idcardAdd-input {
width: 100%;
height: 100%;
display: flex;
border: none;
background-color: transparent;
font-size: 30rpx;
}
}
.idcardAdd-picker {
position: relative;
width: 100%;
}
.idcardAdd-picke-image {
width: 24rpx;
height: 24rpx;
position: absolute;
top: $margin;
right: $margin;
}
.idcardAdd-block-name {
margin-bottom: $margin;
display: flex;
.idcardAdd-block-see {
color: $text-color;
margin-right: $margin;
font-size: 30rpx;
text {
color: $mian-color;
padding-right: 10rpx;
}
}
}
// checkbox
.checkbox-item{
display: inline-block;
margin-right: 20rpx;
color: #999999;
line-height: 70rpx;
&:last-child {
margin-right: 0;
}
.checkbox-input{
transform:scale(0.6);
}
}
.idcardAdd-aline {
position: relative;
display: flex;
width: 100%;
margin-bottom: 40rpx;
.idcardAdd-aline-write {
margin-right: 30rpx;
color: #999999;
}
}
// 按钮
.idcardBtn {
background-color: #111e4b;
width: 100%;
padding: 20rpx 60rpx 140rpx;
box-sizing: border-box;
display: flex;
.idcardBtn-go {
width: 100%;
background-image: linear-gradient(to bottom, #fff2d2, #f9cd9e);
color: #582700;
font-weight: 600;
font-size: 36rpx;
border-radius: $radius * 3;
height: 94rpx;
line-height: 94rpx;
box-shadow: 0 6rpx 10rpx rgba(0, 0, 0, .5);
text-align: center;
&[disabled] {
background-color: #f9f9f9;
border-color: #e2e2e2;
color: #959595;
}
&::after {
display: none;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,226 +1,230 @@
<template>
<view class="content">
<view class="list" v-if="yearArr.length > 0">
<view class="listItem" v-for="(item, index) in yearArr" :key="index">
<view class="listItem-no">
订单号{{item.order_no}}
</view>
<view class="listItem-cont">
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单类型
</view>
<view class="listItem-cont-text listItem-cont-status">
{{item.synthesis.title}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
业务联系人
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.user.parent.nickname}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.lawyer">
<view class="listItem-cont-name">
所属律师
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.lawyer.name}}
</view>
</view>
<!-- <view class="listItem-cont-label" v-if="item.lawyer">
<view class="listItem-cont-name">
律师电话
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.lawyer.username}}
</view>
</view> -->
</view>
<view class="listItem-labor">
<view class="listItem-labor-time">
{{item.created_at}}
</view>
<view class="listItem-labor-btn">
<view @click="$Router.push({name: 'FeeConfirm', params: {synthesisId: item.synthesis_order_id}})" class="listItem-labor-go yellow">
查看详情
</view>
</view>
</view>
</view>
</view>
<view class="pack-center pages-hint" v-else>
<image src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/7ad417d0c215db601b8e1bead05c3a5e.png"></image>
<view>暂无订单</view>
</view>
<template>
<view class="content">
<view class="list" v-if="yearArr.length > 0">
<view class="listItem" v-for="(item, index) in yearArr" :key="index">
<view class="listItem-no">
订单号{{item.order_no}}
</view>
<view class="listItem-cont">
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单类型
</view>
<view class="listItem-cont-text listItem-cont-status">
{{item.synthesis.title}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
业务联系人
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.user.parent.nickname}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.lawyer">
<view class="listItem-cont-name">
所属律师
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.lawyer.name}}
</view>
</view>
<!-- <view class="listItem-cont-label" v-if="item.lawyer">
<view class="listItem-cont-name">
律师电话
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.lawyer.username}}
</view>
</view> -->
</view>
<view class="listItem-labor">
<view class="listItem-labor-time">
{{item.created_at}}
</view>
<view class="listItem-labor-btn">
<view @click="$Router.push({name: 'Pay', params: {orderId: item.order_id, orderType: item.order_type}})" class="listItem-labor-go yellow" v-if="item.can.pay">
去支付
</view>
<view @click="$Router.push({name: 'FeeConfirm', params: {synthesisId: item.synthesis_order_id}})" class="listItem-labor-go yellow" v-if="item.can.look">
查看详情
</view>
</view>
</view>
</view>
</view>
<view class="pack-center pages-hint" v-else>
<image src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/7ad417d0c215db601b8e1bead05c3a5e.png"></image>
<view>暂无订单</view>
</view>
</view>
</template>
<script>
import { seekOrder } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
yearStatus : 0, // 0 未付款 1 2
yearArr : [], // 咨询单列表
page : {}, // 分页信息
lodingStats : false, // 加载状态
}
},
created() {
// 获取-咨询单-列表
this.yearServe();
},
methods: {
// 咨询单-列表
yearServe(page){
seekOrder({
status : this.yearStatus,
page : page || 1
}).then(res => {
let esArr = res.data
let list = this.yearArr,
newData = []
if(page == 1 || page == undefined) list = []
newData = list.concat(esArr)
this.yearArr = newData
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 状态选择
stateClick(state) {
this.yearStatus = state
// 获取-咨询单列表
this.yearServe();
},
// 订单支付
canClick(e) {
// pay_status == 1可支付
if(e.can.pay_status == 1) {
// pay_way为1的时线上支付, 为2时线下支付
if(e.service.pay_way == 1) {
this.$Router.push({name: 'FeePay', params: {orderId: e.service_order_id}})
}
}
},
// 选择支付方式
expressSheet(item) {
uni.showActionSheet({
itemList: ['微信支付', '打款凭证'],
success: sheetRes => {
console.log(sheetRes)
},
fail: sheetFail => {}
})
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取-咨询单-列表
this.yearServe();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取-咨询单-列表
this.yearServe(pageNumber);
}
}
}
<script>
import { seekOrder } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
yearStatus : 0, // 0 未付款 1 2
yearArr : [], // 咨询单列表
page : {}, // 分页信息
lodingStats : false, // 加载状态
}
},
created() {
// 获取-咨询单-列表
this.yearServe();
},
methods: {
// 咨询单-列表
// status : this.yearStatus,
yearServe(page){
seekOrder({
page : page || 1
}).then(res => {
let esArr = res.data
let list = this.yearArr,
newData = []
if(page == 1 || page == undefined) list = []
newData = list.concat(esArr)
this.yearArr = newData
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 状态选择
stateClick(state) {
this.yearStatus = state
// 获取-咨询单列表
this.yearServe();
},
// 订单支付
canClick(e) {
// pay_status == 1可支付
if(e.can.pay_status == 1) {
// pay_way为1的时线上支付, 为2时线下支付
if(e.service.pay_way == 1) {
this.$Router.push({name: 'FeePay', params: {orderId: e.service_order_id}})
}
}
},
// 选择支付方式
expressSheet(item) {
uni.showActionSheet({
itemList: ['微信支付', '打款凭证'],
success: sheetRes => {
console.log(sheetRes)
},
fail: sheetFail => {}
})
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取-咨询单-列表
this.yearServe();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取-咨询单-列表
this.yearServe(pageNumber);
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
overflow-y: scroll;
height: 100%;
position: absolute;
width: 100%;
}
.list {
padding: 30rpx;
box-sizing: border-box;
.listItem {
background-color: #ffffff;
border-radius: 10rpx;
margin-bottom: 30rpx;
.listItem-no {
line-height: 90rpx;
padding: 0 30rpx;
box-sizing: border-box;
border-bottom: 2rpx solid #eeeeee;
}
.listItem-cont {
padding: 15rpx 30rpx;
box-sizing: border-box;
.listItem-cont-label {
display: flex;
line-height: 60rpx;
color: #666666;
font-size: 28rpx;
.listItem-cont-name {
flex: 1;
}
.listItem-cont-text {
color: #000000;
&.listItem-cont-status {
color: #da2b56;
}
&.listItem-cont-price {
font-weight: 600;
}
}
}
}
.listItem-labor {
border-top: 2rpx solid #eeeeee;
line-height: 50rpx;
padding: 25rpx 30rpx;
box-sizing: border-box;
font-size: 26rpx;
display: flex;
.listItem-labor-time {
flex: 1;
color: #999999;
}
.listItem-labor-go {
display: inline-block;
border: 2rpx solid #da2b56;
color: #da2b56;
border-radius: 80rpx;
padding: 0 20rpx;
&.active {
border-color: #999999;
color: #666666;
}
&.yellow {
border-color: #ec7647;
color: #ec7647;
}
}
}
}
}
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
overflow-y: scroll;
height: 100%;
position: absolute;
width: 100%;
}
.list {
padding: 30rpx;
box-sizing: border-box;
.listItem {
background-color: #ffffff;
border-radius: 10rpx;
margin-bottom: 30rpx;
.listItem-no {
line-height: 90rpx;
padding: 0 30rpx;
box-sizing: border-box;
border-bottom: 2rpx solid #eeeeee;
}
.listItem-cont {
padding: 15rpx 30rpx;
box-sizing: border-box;
.listItem-cont-label {
display: flex;
line-height: 60rpx;
color: #666666;
font-size: 28rpx;
.listItem-cont-name {
flex: 1;
}
.listItem-cont-text {
color: #000000;
&.listItem-cont-status {
color: #da2b56;
}
&.listItem-cont-price {
font-weight: 600;
}
}
}
}
.listItem-labor {
border-top: 2rpx solid #eeeeee;
line-height: 50rpx;
padding: 25rpx 30rpx;
box-sizing: border-box;
font-size: 26rpx;
display: flex;
.listItem-labor-time {
flex: 1;
color: #999999;
}
.listItem-labor-go {
display: inline-block;
border: 2rpx solid #da2b56;
color: #da2b56;
border-radius: 80rpx;
padding: 0 20rpx;
&.active {
border-color: #999999;
color: #666666;
}
&.yellow {
border-color: #ec7647;
color: #ec7647;
}
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,492 +1,492 @@
<template>
<view class="content">
<view class="orderFixed">
<view class="orderTab">
<view class="orderTab-item" :class="{active : yearType == 1}" @click="tabClick('1')">
<text>个人年费单</text>
</view>
<view class="orderTab-item" :class="{active : yearType == 2}" @click="tabClick('2')">
<text>企业年费单</text>
</view>
</view>
<view class="orderState">
<view class="orderState-item" :class="{active : yearStatus == 0}" @click="stateClick('0')">
<text>待支付</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 1}" @click="stateClick('1')">
<text>待签约</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 2}" @click="stateClick('2')">
<text>已签约</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 4}" @click="stateClick('4')">
<text>已退款</text>
</view>
</view>
</view>
<view class="list" v-if="yearArr.length > 0">
<view class="listItem" v-for="(item, index) in yearArr" :key="index">
<view class="listItem-no">
订单号{{item.order_no}}
</view>
<view class="listItem-cont">
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单状态
</view>
<view class="listItem-cont-text listItem-cont-status">
{{item.status.text}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单金额
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.total}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.can.lawyer_status != 0">
<view class="listItem-cont-name">
律师匹配
</view>
<view class="listItem-cont-text listItem-cont-price">
<block v-if="item.can.lawyer_status == 1">待匹配律师</block>
<block v-else-if="item.can.lawyer_status == 2">已匹配律师</block>
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
下单时间
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.created_at}}
</view>
</view>
</view>
<view class="listItem-labor">
<view class="listItem-labor-time">
<view @click="operateMore(item.order_id)" v-if="item.can.cancel">更多</view>
</view>
<view class="listItem-labor-btn">
<view v-if="item.can.sign" @click="esignClick(item.order_id, item.order_type)" class="listItem-labor-go">
去签约
</view>
<view v-if="item.can.pay_status == 1" @click="expressSheet(item.service_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
去支付
</view>
<view class="listItem-labor-go active" v-else-if="item.can.pay_status == 2">等待审核</view>
<view class="listItem-labor-go" v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.service_order_id, price: item.price, orderType: item.order_type, type: 'edit'}})">审核驳回</view>
<view @click="$Router.push({name: 'YearConfirm', params: {servicesId: item.service_order_id}})" class="listItem-labor-go yellow">
查看详情
</view>
</view>
</view>
</view>
</view>
<view class="pack-center pages-hint" v-else>
<image src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/7ad417d0c215db601b8e1bead05c3a5e.png"></image>
<view>暂无订单</view>
</view>
<!-- 打款凭证弹出 -->
<view class="voucherBack" :class="{active : voucherState}"></view>
<view class="voucherPop" :class="{active : voucherState}">
<view class="tipsWhite">
<image class="voucherPop-img" src="https://cdn.douhuofalv.com/images/2023/04/17/f4a3c45fe9aa7db143a362fc5b13b31d.png" mode="widthFix"></image>
<view class="voucherPop-title">
<view class="voucherPop-name">支付提示</view>
<view class="voucherPop-text">抱歉此订单不支持线上支付请上传打款凭证</view>
<view class="voucherPop-btn">
<view class="voucherPop-go" @click="voucherState = false">
暂不支付
</view>
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
上传凭证
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { yearOrder, esignUrl, yearCancel } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
yearType : 1, // 1 个人 2 企业
yearStatus : 0, // 0 未付款 1 2
yearArr : [], // 年费咨询单列表
orderId : '', // 订单 ID
orderType : '', // 订单类型
orderPrice : '', // 订单金额
page : {}, // 分页信息
lodingStats : false, // 加载状态
voucherState : false, // 上传凭证弹出
}
},
created() {
this.yearType = this.$Route.query.yearType || 1
},
onShow() {
// 获取-年费咨询单列表
this.yearServe();
},
methods: {
// 年费咨询单列表
yearServe(page){
yearOrder({
type : this.yearType,
status : this.yearStatus,
page: page || 1
}).then(res => {
let esArr = res.data
let list = this.yearArr,
newData = []
if(page == 1 || page == undefined) list = []
newData = list.concat(esArr)
this.yearArr = newData
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 类型选择
tabClick(type) {
this.yearType = type
// 获取-年费咨询单列表
this.yearServe();
},
// 状态选择
stateClick(state) {
this.yearStatus = state
// 获取-年费咨询单列表
this.yearServe();
},
// 选择支付方式
expressSheet(id, type, can, price) {
this.orderId = id
this.orderType = type
this.orderPrice = price
uni.showActionSheet({
itemList: ['线上支付', '线下支付'],
success: sheetRes => {
if(sheetRes.tapIndex == 0) {
if(can.online) {
this.$Router.push({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
return
}
this.voucherState = true
} else if (sheetRes.tapIndex == 1) {
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type, price: price}})
}
},
fail: sheetFail => {
uni.showToast({
title: '取消支付',
icon : 'none'
})
}
})
},
// 上传凭证
clickOpen() {
this.voucherState = false
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType, price: this.orderPrice}})
},
// 去签约
esignClick(id,type) {
esignUrl({
order_id : id,
order_type: type,
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {
window.location.href= res.sign_url
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 更多操作
operateMore(id) {
wx.showActionSheet({
itemList: ['取消订单'],
success: ()=> {
wx.showModal({
title : '提示',
content : '是否取消订单',
success : res=> {
if (res.confirm) {
yearCancel(id).then(res => {
wx.showToast({
title:'取消成功',
icon:'none'
})
// 获取-年费咨询单列表
this.yearServe();
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
})
},
fail: err=> {}
})
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取-年费咨询单列表
this.yearServe();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取-年费咨询单列表
this.yearServe(pageNumber);
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
overflow-y: scroll;
height: 100%;
position: absolute;
width: 100%;
}
.orderFixed {
position: fixed;
top: 44px;
left: 0;
width: 100%;
z-index: 9;
.orderTab {
height: 90rpx;
line-height: 90rpx;
background-color: white;
display: flex;
.orderTab-item {
flex: 2;
text-align: center;
position: relative;
color: #000000;
&::after {
position: absolute;
content: '';
left: calc(50% - 25rpx);
bottom: 0;
width: 50rpx;
height: 8rpx;
background-color: #da2b56;
display: none;
border-radius: 90rpx;
}
&.active {
font-weight: 600;
}
&.active::after {
display: block;
}
}
}
.orderState {
display: flex;
padding: 30rpx;
box-sizing: border-box;
background-color: #f7f9fa;
.orderState-item {
background-color: white;
line-height: 54rpx;
padding: 0 25rpx;
border-radius: 54rpx;
font-size: 28rpx;
margin-right: 30rpx;
&.active {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
.list {
margin-top: 44px;
padding: 130rpx 30rpx 0;
box-sizing: border-box;
.listItem {
background-color: #ffffff;
border-radius: 10rpx;
margin-bottom: 30rpx;
.listItem-no {
line-height: 90rpx;
padding: 0 30rpx;
box-sizing: border-box;
border-bottom: 2rpx solid #eeeeee;
}
.listItem-cont {
padding: 15rpx 30rpx;
box-sizing: border-box;
.listItem-cont-label {
display: flex;
line-height: 60rpx;
color: #666666;
font-size: 28rpx;
.listItem-cont-name {
flex: 1;
}
.listItem-cont-text {
color: #000000;
&.listItem-cont-status {
color: #da2b56;
}
&.listItem-cont-price {
font-weight: 600;
}
}
}
}
.listItem-labor {
border-top: 2rpx solid #eeeeee;
line-height: 50rpx;
padding: 25rpx 30rpx;
box-sizing: border-box;
font-size: 26rpx;
display: flex;
.listItem-labor-time {
flex: 1;
color: #999999;
}
.listItem-labor-go {
display: inline-block;
border: 2rpx solid #da2b56;
color: #da2b56;
border-radius: 80rpx;
padding: 0 20rpx;
margin-left: 20rpx;
&.active {
border-color: #dadada;
color: #868686;
}
&.yellow {
border-color: #ec7647;
color: #ec7647;
}
}
}
}
}
// 打款凭证弹出
.voucherBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 99;
background-color: rgba(0, 0, 0, .6);
display: none;
&.active {
display: block;
}
}
.voucherPop {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
padding: 0 10%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
position: relative;
.voucherPop-img {
position: absolute !important;
top: -80rpx;
right: calc(50% - 100rpx);
width: 200rpx;
}
.voucherPop-title {
box-sizing: border-box;
padding: 50rpx 70rpx;
margin-top: 100rpx;
text-align: center;
.voucherPop-name {
font-weight: 600;
font-size: 38rpx;
}
.voucherPop-text {
padding: 30rpx 0 35rpx;
line-height: 44rpx;
}
.voucherPop-btn {
display: flex;
.voucherPop-go {
flex: 2;
text-align: center;
border: 2rpx solid #da2b56;
color: #da2b56;
margin: 0 15rpx;
line-height: 74rpx;
border-radius: 10rpx;
background-color: #ffffff;
&.voucherPop-up {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
}
}
<template>
<view class="content">
<view class="orderFixed">
<view class="orderTab">
<view class="orderTab-item" :class="{active : yearType == 1}" @click="tabClick('1')">
<text>个人年费单</text>
</view>
<view class="orderTab-item" :class="{active : yearType == 2}" @click="tabClick('2')">
<text>企业年费单</text>
</view>
</view>
<view class="orderState">
<view class="orderState-item" :class="{active : yearStatus == 0}" @click="stateClick('0')">
<text>待支付</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 1}" @click="stateClick('1')">
<text>待签约</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 2}" @click="stateClick('2')">
<text>已签约</text>
</view>
<view class="orderState-item" :class="{active : yearStatus == 4}" @click="stateClick('4')">
<text>已退款</text>
</view>
</view>
</view>
<view class="list" v-if="yearArr.length > 0">
<view class="listItem" v-for="(item, index) in yearArr" :key="index">
<view class="listItem-no">
订单号{{item.order_no}}
</view>
<view class="listItem-cont">
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单状态
</view>
<view class="listItem-cont-text listItem-cont-status">
{{item.status.text}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单金额
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.total}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.can.lawyer_status != 0">
<view class="listItem-cont-name">
律师匹配
</view>
<view class="listItem-cont-text listItem-cont-price">
<block v-if="item.can.lawyer_status == 1">待匹配律师</block>
<block v-else-if="item.can.lawyer_status == 2">已匹配律师</block>
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
下单时间
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.created_at}}
</view>
</view>
</view>
<view class="listItem-labor">
<view class="listItem-labor-time">
<view @click="operateMore(item.order_id)" v-if="item.can.cancel">更多</view>
</view>
<view class="listItem-labor-btn">
<view v-if="item.can.sign" @click="esignClick(item.order_id, item.order_type)" class="listItem-labor-go">
去签约
</view>
<view v-if="item.can.pay_status == 1" @click="expressSheet(item.service_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
去支付
</view>
<view class="listItem-labor-go active" v-else-if="item.can.pay_status == 2">等待审核</view>
<view class="listItem-labor-go" v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.service_order_id, price: item.price, orderType: item.order_type, type: 'edit'}})">审核驳回</view>
<view @click="$Router.push({name: 'YearConfirm', params: {servicesId: item.service_order_id}})" class="listItem-labor-go yellow">
查看详情
</view>
</view>
</view>
</view>
</view>
<view class="pack-center pages-hint" v-else>
<image src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/7ad417d0c215db601b8e1bead05c3a5e.png"></image>
<view>暂无订单</view>
</view>
<!-- 打款凭证弹出 -->
<view class="voucherBack" :class="{active : voucherState}"></view>
<view class="voucherPop" :class="{active : voucherState}">
<view class="tipsWhite">
<image class="voucherPop-img" src="https://cdn.douhuofalv.com/images/2023/04/17/f4a3c45fe9aa7db143a362fc5b13b31d.png" mode="widthFix"></image>
<view class="voucherPop-title">
<view class="voucherPop-name">支付提示</view>
<view class="voucherPop-text">抱歉此订单不支持线上支付请上传打款凭证</view>
<view class="voucherPop-btn">
<view class="voucherPop-go" @click="voucherState = false">
暂不支付
</view>
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
上传凭证
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { yearOrder, esignUrl, yearCancel } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
yearType : 1, // 1 个人 2 企业
yearStatus : 0, // 0 未付款 1 2
yearArr : [], // 年费咨询单列表
orderId : '', // 订单 ID
orderType : '', // 订单类型
orderPrice : '', // 订单金额
page : {}, // 分页信息
lodingStats : false, // 加载状态
voucherState : false, // 上传凭证弹出
}
},
created() {
this.yearType = this.$Route.query.yearType || 1
},
onShow() {
// 获取-年费咨询单列表
this.yearServe();
},
methods: {
// 年费咨询单列表
yearServe(page){
yearOrder({
type : this.yearType,
status : this.yearStatus,
page: page || 1
}).then(res => {
let esArr = res.data
let list = this.yearArr,
newData = []
if(page == 1 || page == undefined) list = []
newData = list.concat(esArr)
this.yearArr = newData
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 类型选择
tabClick(type) {
this.yearType = type
// 获取-年费咨询单列表
this.yearServe();
},
// 状态选择
stateClick(state) {
this.yearStatus = state
// 获取-年费咨询单列表
this.yearServe();
},
// 选择支付方式
expressSheet(id, type, can, price) {
this.orderId = id
this.orderType = type
this.orderPrice = price
uni.showActionSheet({
itemList: ['线上支付', '线下支付'],
success: sheetRes => {
if(sheetRes.tapIndex == 0) {
if(can.online) {
this.$Router.push({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
return
}
this.voucherState = true
} else if (sheetRes.tapIndex == 1) {
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type, price: price}})
}
},
fail: sheetFail => {
uni.showToast({
title: '取消支付',
icon : 'none'
})
}
})
},
// 上传凭证
clickOpen() {
this.voucherState = false
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType, price: this.orderPrice}})
},
// 去签约
esignClick(id,type) {
esignUrl({
order_id : id,
order_type: type,
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {
window.location.href= res.sign_url
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 更多操作
operateMore(id) {
wx.showActionSheet({
itemList: ['取消订单'],
success: ()=> {
wx.showModal({
title : '提示',
content : '是否取消订单',
success : res=> {
if (res.confirm) {
yearCancel(id).then(res => {
wx.showToast({
title:'取消成功',
icon:'none'
})
// 获取-年费咨询单列表
this.yearServe();
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
})
},
fail: err=> {}
})
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取-年费咨询单列表
this.yearServe();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取-年费咨询单列表
this.yearServe(pageNumber);
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
overflow-y: scroll;
height: 100%;
position: absolute;
width: 100%;
}
.orderFixed {
position: fixed;
top: 44px;
left: 0;
width: 100%;
z-index: 9;
.orderTab {
height: 90rpx;
line-height: 90rpx;
background-color: white;
display: flex;
.orderTab-item {
flex: 2;
text-align: center;
position: relative;
color: #000000;
&::after {
position: absolute;
content: '';
left: calc(50% - 25rpx);
bottom: 0;
width: 50rpx;
height: 8rpx;
background-color: #da2b56;
display: none;
border-radius: 90rpx;
}
&.active {
font-weight: 600;
}
&.active::after {
display: block;
}
}
}
.orderState {
display: flex;
padding: 30rpx;
box-sizing: border-box;
background-color: #f7f9fa;
.orderState-item {
background-color: white;
line-height: 54rpx;
padding: 0 25rpx;
border-radius: 54rpx;
font-size: 28rpx;
margin-right: 30rpx;
&.active {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
.list {
margin-top: 44px;
padding: 130rpx 30rpx 0;
box-sizing: border-box;
.listItem {
background-color: #ffffff;
border-radius: 10rpx;
margin-bottom: 30rpx;
.listItem-no {
line-height: 90rpx;
padding: 0 30rpx;
box-sizing: border-box;
border-bottom: 2rpx solid #eeeeee;
}
.listItem-cont {
padding: 15rpx 30rpx;
box-sizing: border-box;
.listItem-cont-label {
display: flex;
line-height: 60rpx;
color: #666666;
font-size: 28rpx;
.listItem-cont-name {
flex: 1;
}
.listItem-cont-text {
color: #000000;
&.listItem-cont-status {
color: #da2b56;
}
&.listItem-cont-price {
font-weight: 600;
}
}
}
}
.listItem-labor {
border-top: 2rpx solid #eeeeee;
line-height: 50rpx;
padding: 25rpx 30rpx;
box-sizing: border-box;
font-size: 26rpx;
display: flex;
.listItem-labor-time {
flex: 1;
color: #999999;
}
.listItem-labor-go {
display: inline-block;
border: 2rpx solid #da2b56;
color: #da2b56;
border-radius: 80rpx;
padding: 0 20rpx;
margin-left: 20rpx;
&.active {
border-color: #dadada;
color: #868686;
}
&.yellow {
border-color: #ec7647;
color: #ec7647;
}
}
}
}
}
// 打款凭证弹出
.voucherBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 99;
background-color: rgba(0, 0, 0, .6);
display: none;
&.active {
display: block;
}
}
.voucherPop {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
padding: 0 10%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
position: relative;
.voucherPop-img {
position: absolute !important;
top: -80rpx;
right: calc(50% - 100rpx);
width: 200rpx;
}
.voucherPop-title {
box-sizing: border-box;
padding: 50rpx 70rpx;
margin-top: 100rpx;
text-align: center;
.voucherPop-name {
font-weight: 600;
font-size: 38rpx;
}
.voucherPop-text {
padding: 30rpx 0 35rpx;
line-height: 44rpx;
}
.voucherPop-btn {
display: flex;
.voucherPop-go {
flex: 2;
text-align: center;
border: 2rpx solid #da2b56;
color: #da2b56;
margin: 0 15rpx;
line-height: 74rpx;
border-radius: 10rpx;
background-color: #ffffff;
&.voucherPop-up {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
}
}
</style>

View File

@@ -14,9 +14,10 @@
{{userData.nickname}} <image v-if="userData.certification" class="userTop-icon" src="@/static/imgs/user_attestation.png"></image>
</view>
<view class="userTop-identity-tips">
普通用户 <image class="userTop-arrow" src="@/static/imgs/use_arrow.png"></image>
{{userData.identity.name}}<image class="userTop-arrow" src="@/static/imgs/use_arrow.png"></image>
</view>
</view>
</view>
<view class="user-vip" @click="$Router.push({name: 'vip'})">{{!userData.identity.can_open_vip && !userData.identity.can_renew_vip ? '会员权益': ''}}{{userData.identity.can_open_vip ? '开通会员': ''}}{{userData.identity.can_renew_vip ? '开通会员': ''}}</view>
</view>
<view class="userTop-height" v-else @click="$Router.push({name: 'Login'})">
<view class="userTop-head">
@@ -30,7 +31,7 @@
</view>
<!-- 临时 style="display: none;" -->
<view class="userTop-see" v-if="userLogin">
<view class="userTop-label" @click="$Router.push({name: 'sheetIndex'})">
<!-- <view class="userTop-label" @click="$Router.push({name: 'sheetIndex'})">
<view class="userSee-name">
协商调解类
</view>
@@ -46,6 +47,31 @@
</view>
</block>
<img class="userSee-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/2823f7c9ed144df424ca8ee6c47b0ff6.png">
</view> -->
<view class="userTop-label" @click="$Router.push({name: 'AccountWork'})" style="display: none;">
<view class="userSee-name">
账户管理资讯类
</view>
<view class="userSee-number">
<!-- {{ userData.business_orders_count.all ? userData.business_orders_count.all : '0'}}<text></text> -->
</view>
<view class="userSee-tips">
客户账户管理资讯类订单
</view>
<img class="userSee-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/2823f7c9ed144df424ca8ee6c47b0ff6.png">
</view>
<view class="userTop-label" @click="$Router.push({name: 'DelegationWork'})" style="display: none;">
<view class="userSee-name">
委托管理类
</view>
<view class="userSee-number">
<!-- {{ userData.business_orders_count.all ? userData.business_orders_count.all : '0'}}<text></text> -->
</view>
<view class="userSee-tips">
客户委托管理类订单
</view>
<img class="userSee-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/2823f7c9ed144df424ca8ee6c47b0ff6.png">
</view>
<view class="userTop-label" @click="$Router.push({name: 'synthesisOrder', params: {type: 'legal'}})">
@@ -56,7 +82,8 @@
{{synthesisAll.legal_consulting ? synthesisAll.legal_consulting : '0'}}<text></text>
</view>
<view class="userSee-tips">
个人企业法律
<!-- 个人 -->
企业法律
</view>
<img class="userSee-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/84e573c04d3dcb7fa1cccefbde9bf851.png">
</view>
@@ -72,7 +99,7 @@
</view>
<img class="userSee-icon" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/19/08e5c39f136d84e9754d4ac4d16af181.png">
</view>
<view class="userTop-label" @click="$Router.push({name: 'EmpowerOrder'})">
<view class="userTop-label" @click="$Router.push({name: 'EmpowerOrder'})" style="display: none;">
<view class="userSee-name">
增收赋能类
</view>
@@ -88,7 +115,7 @@
</view>
</view>
<!-- 临时 style="display: none;" -->
<view class="board" v-if="userLogin">
<view class="board" v-if="userLogin" style="display: none;">
<view class="board-title">
数据看板
</view>
@@ -109,7 +136,19 @@
<view class="board-number">{{userData.business_orders_count.diff_count}}</view>
</view>
</view>
</view>
</view>
<view class="block-flex" v-if="userData.salesman" @click="onCallPhone(userData.salesman.username)">
<view class="block-flex-title">业务联系人</view>
<view>{{userData.salesman.nickname || '-'}}</view>
</view>
<view class="block-flex" @click="$Router.push({name: 'Tema'})" v-if="userData.identity.id > 1">
<view class="block-flex-title">我的推荐</view>
<u-icon name="arrow-right"></u-icon>
</view>
<view class="block-flex" @click="qrcodeShow = true">
<view class="block-flex-title">我的邀请码</view>
<u-icon name="arrow-right"></u-icon>
</view>
<view class="tool">
<view class="tool-title">
其他工具
@@ -168,23 +207,44 @@
</view>
</view>
</view>
</view>
</view>
<!-- 邀请码 -->
<u-popup mode="center" closeable :show="qrcodeShow" @close="qrcodeShow = false">
<view class="qrcode">
<image class="qrcode-bg" src="/static/qrcode_bg.png" mode="widthFix"></image>
<view class="qrcode-content">
<image class="qrcode-src" :src="qrcode.qrcode" mode="aspectFit"></image>
<view class="qrcode-footer">
<view class="qrcode-code">{{qrcode.invite}}</view>
<view class="qrcode-text">邀请码</view>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import { articleList } from '@/apis/interfaces/index'
import { userIndex } from '@/apis/interfaces/user'
import { userIndex, userQrcode } from '@/apis/interfaces/user'
import { synthesisCount } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
userLogin : false, //登录状态
userData : {}, //用户数据
userData : {
identity: {
can_open_vip : false,
can_renew_vip : false
}
}, //用户数据
synthesisAll : '', // 综法数量
listArr : [], // 文章列表
page : {}, // 分页信息
lodingStats : false, // 加载状态
lodingStats : false, // 加载状态
qrcodeShow : false, // 弹出层
qrcode : ''
};
},
@@ -204,23 +264,29 @@
methods:{
// 用户信息
userInfo() {
userIndex().then(res => {
this.userData = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
userInfo() {
Promise.all([userIndex(), userQrcode()]).then(res => {
this.userData = res[0]
this.qrcode = res[1]
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 拨打电话
onCallPhone(e){
wx.makePhoneCall({
phoneNumber: e,
fail: () => {}
})
},
// 综法订单数据数量
synthesisInfo() {
synthesisCount({channel: 'self'}).then(res => {
console.log(res)
this.synthesisAll = res
}).catch(err => {
uni.showToast({
@@ -255,7 +321,31 @@
}
</script>
<style lang="scss" scoped>
<style lang="scss" scoped>
.qrcode{
width: 600rpx;
position: relative;
.qrcode-bg{ width: 100%; vertical-align: top; }
.qrcode-content{
position: absolute;
top: 290rpx;
left: 0;
right: 0;
width: 100%;
text-align: center;
.qrcode-src{ width: 220rpx; height: 220rpx; background: #333; }
.qrcode-footer{ width: 100%; padding-top: 30rpx; text-align: center; }
.qrcode-code{ font-weight: bold; font-size: 34rpx; }
.qrcode-text{ font-size: 28rpx; color: gray; line-height: 30rpx; }
}
}
.block-flex{
display: flex; color: gray; font-size: 32rpx; align-items: center; justify-content: space-between; padding: 20rpx 30rpx; line-height: 60rpx;
&-title{ color: #333; }
}
.userTop {
position: relative;
width: 100%;
@@ -274,7 +364,10 @@
padding: $padding;
box-sizing: border-box;
.userTop-height {
height: 110rpx;
height: 110rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
.userTop-head {
width: 110rpx;
height: 110rpx;
@@ -291,7 +384,7 @@
}
}
.userTop-text {
width: calc(100% - 150rpx);
width: calc(100% - 310rpx);
float: left;
margin-left: 30rpx;
padding-top: $padding - 20;
@@ -328,7 +421,18 @@
margin-left: 4rpx;
}
}
}
}
.user-vip{
background: $mian-color;
color: white;
position: relative;
z-index: 1;
width: 170rpx;
font-size: 28rpx;
line-height: 70rpx;
border-radius: 35rpx;
text-align: center;
}
}
.userTop-see {
margin: 0 -10rpx;

View File

@@ -1,432 +1,432 @@
<template>
<view class="content">
<view class="setupItem">
<view class="label" @click="albumClick">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_01.png" mode="aspectFill"></image>
<view class="label-name-text">修改头像</view>
</view>
<view class="label-tips">
<image class="label-name-head" :src="avatar ? avatar : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5641d82e94651198a0a2236f368ff9ba.png'" mode="aspectFill"></image>
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'Modify'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_02.png" mode="aspectFill"></image>
<view class="label-name-text">修改密码</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'Authsuccess'})" v-if="certification">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">实名认证</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'sheetIdcard'})" v-else>
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">实名认证</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<!-- <view class="label" @click="$Router.push({name: 'Invite'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">邀请码</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view> -->
</view>
<view class="setupItem">
<view class="label" @click="$Router.push({name: 'Referee'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_04.png" mode="aspectFill"></image>
<view class="label-name-text">我的伙伴</view>
</view>
<view class="label-tips">
<view class="label-name-number" v-if="childrenCount">{{childrenCount}}</view>
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'SignLog'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_08.png" mode="aspectFill"></image>
<view class="label-name-text">合同查看</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'Parent'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_05.png" mode="aspectFill"></image>
<view class="label-name-text">业务联系人</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="delSubscribe" v-if="hasSubscribe">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_07.png" mode="aspectFill"></image>
<view class="label-name-text">{{hasTitle}}</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="followSubscribe" v-else>
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_07.png" mode="aspectFill"></image>
<view class="label-name-text">{{hasTitle}}</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="setupItem">
<view class="label" @click="$Router.push({name: 'AppDown'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_06.png" mode="aspectFill"></image>
<view class="label-name-text">APP下载</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="setupItem">
<view class="signOut" @click="outLogin">
退出登录
</view>
</view>
<!-- 关注公众号弹出 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
<template>
<view class="content">
<view class="setupItem">
<view class="label" @click="albumClick">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_01.png" mode="aspectFill"></image>
<view class="label-name-text">修改头像</view>
</view>
<view class="label-tips">
<image class="label-name-head" :src="avatar ? avatar : 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/5641d82e94651198a0a2236f368ff9ba.png'" mode="aspectFill"></image>
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'Modify'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_02.png" mode="aspectFill"></image>
<view class="label-name-text">修改密码</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'Authsuccess'})" v-if="certification">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">实名认证</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="$Router.push({name: 'sheetIdcard'})" v-else>
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">实名认证</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<!-- <view class="label" @click="$Router.push({name: 'Invite'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_03.png" mode="aspectFill"></image>
<view class="label-name-text">邀请码</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view> -->
</view>
<view class="setupItem">
<!-- <view class="label" @click="$Router.push({name: 'Referee'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_04.png" mode="aspectFill"></image>
<view class="label-name-text">我的伙伴</view>
</view>
<view class="label-tips">
<view class="label-name-number" v-if="childrenCount">{{childrenCount}}</view>
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view> -->
<view class="label" @click="$Router.push({name: 'SignLog'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_08.png" mode="aspectFill"></image>
<view class="label-name-text">合同查看</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<!-- <view class="label" @click="$Router.push({name: 'Parent'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_05.png" mode="aspectFill"></image>
<view class="label-name-text">业务联系人</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view> -->
<view class="label" @click="delSubscribe" v-if="hasSubscribe">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_07.png" mode="aspectFill"></image>
<view class="label-name-text">{{hasTitle}}</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
<view class="label" @click="followSubscribe" v-else>
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_07.png" mode="aspectFill"></image>
<view class="label-name-text">{{hasTitle}}</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="setupItem">
<view class="label" @click="$Router.push({name: 'AppDown'})">
<view class="label-name">
<image class="label-name-img" src="/static/imgs/zK_06.png" mode="aspectFill"></image>
<view class="label-name-text">APP下载</view>
</view>
<view class="label-tips">
<image class="label-name-arrow" src="/static/imgs/zK_arrow.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="setupItem">
<view class="signOut" @click="outLogin">
退出登录
</view>
</view>
<!-- 关注公众号弹出 -->
<view class="tipsBack" v-if="generalShow"></view>
<view class="tipsCont" v-if="generalShow">
<view class="tipsWhite">
<image class="tipsCont-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/6b1485847b45273618f8d922ceee889c.png" mode="widthFix"></image>
<view class="tipsWhite-top">
<view class="tipsWhite-name">
关注抖火法律咨询公众号
</view>
<view class="tipsWhite-text">
关注后可立即下单
</view>
</view>
<view class="tipsWhite-btn">
<view class="tipsWhite-btn-go" @click="generalShow = false">
稍后关注
</view>
<view class="tipsWhite-btn-go" @click="judgeGeneral">
马上关注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { userIndex, setting, userSubscribe, judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
avatar : '', //用户头像
childrenCount: '', // 下级人数
certification: '', // 是否认证
hasSubscribe : '', // 是否关注公众号
hasTitle : '', // 是否关注公众号-标题
generalShow : false ,// 公众号
};
},
onShow() {
// 获取用户信息
this.userInfo();
// 判断是否认证
this.sheetClick();
},
methods:{
// 用户信息
userInfo() {
userIndex().then(res => {
this.avatar = res.avatar
this.childrenCount = res.children_count.one
this.certification = res.certification
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 判断是否认证
sheetClick(){
// 获取微信授权信息
judgeReal().then(res => {
if(res.has_subscribe) {
this.hasTitle = '解除公众号'
} else {
this.hasTitle = '关注公众号'
}
this.hasSubscribe = res.has_subscribe
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 相册选择图片
albumClick() {
var _this = this
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album','camera'], // way是点击时传入的打开方式相机或相册
success: path=> {
uploads([{
uri : path.tempFilePaths[0]
}]).then(res => {
this.avatar = res.url[0]
// 上传头像
this.settingInfo('avatar', res.path[0])
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
});
},
// 上传用户信息
settingInfo(key, value) {
setting(key, {
value: value
}).then(res => {
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 退出登录
outLogin(){
this.$store.commit('setToken', '')
this.$Router.replaceAll({name: 'Index'})
},
// 删除用户微信数据和关注
delSubscribe() {
uni.showModal({
title: '温馨提示',
content: '是否解除公众号?',
confirmColor: '#da2b56',
success: res=> {
if (res.confirm) {
userSubscribe().then(res => {
// 判断是否认证
this.sheetClick();
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 绑定用户微信数据和关注
followSubscribe(){
// 弹出公众号
this.generalShow = true
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
<script>
import { userIndex, setting, userSubscribe, judgeReal } from '@/apis/interfaces/user'
import { authFollow } from '@/apis/interfaces/index'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
avatar : '', //用户头像
childrenCount: '', // 下级人数
certification: '', // 是否认证
hasSubscribe : '', // 是否关注公众号
hasTitle : '', // 是否关注公众号-标题
generalShow : false ,// 公众号
};
},
onShow() {
// 获取用户信息
this.userInfo();
// 判断是否认证
this.sheetClick();
},
methods:{
// 用户信息
userInfo() {
userIndex().then(res => {
this.avatar = res.avatar
this.childrenCount = res.children_count.one
this.certification = res.certification
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 判断是否认证
sheetClick(){
// 获取微信授权信息
judgeReal().then(res => {
if(res.has_subscribe) {
this.hasTitle = '解除公众号'
} else {
this.hasTitle = '关注公众号'
}
this.hasSubscribe = res.has_subscribe
}).catch( err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 相册选择图片
albumClick() {
var _this = this
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album','camera'], // way是点击时传入的打开方式相机或相册
success: path=> {
uploads([{
uri : path.tempFilePaths[0]
}]).then(res => {
this.avatar = res.url[0]
// 上传头像
this.settingInfo('avatar', res.path[0])
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
});
},
// 上传用户信息
settingInfo(key, value) {
setting(key, {
value: value
}).then(res => {
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 退出登录
outLogin(){
this.$store.commit('setToken', '')
this.$Router.replaceAll({name: 'Index'})
},
// 删除用户微信数据和关注
delSubscribe() {
uni.showModal({
title: '温馨提示',
content: '是否解除公众号?',
confirmColor: '#da2b56',
success: res=> {
if (res.confirm) {
userSubscribe().then(res => {
// 判断是否认证
this.sheetClick();
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 绑定用户微信数据和关注
followSubscribe(){
// 弹出公众号
this.generalShow = true
},
// 状态
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
// 关闭公众号
this.generalShow = false
}
}
}
</script>
</script>
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
height: 100vh;
overflow-y: scroll;
}
.setupItem {
margin-bottom: $margin;
background-color: #ffffff;
.label {
line-height: 60rpx;
display: flex;
padding: $padding;
box-sizing: border-box;
border-bottom: 2rpx solid #f7f9fa;
&:last-child {
border: none;
}
.label-name {
display: flex;
flex: 1;
.label-name-img {
width: 34rpx;
height: 34rpx;
margin-top: 12rpx;
margin-right: 20rpx;
}
}
.label-tips {
display: flex;
.label-name-head {
width: 54rpx;
height: 54rpx;
border-radius: 50%;
margin-right: 20rpx;
}
.label-name-arrow {
width: 24rpx;
height: 24rpx;
margin-top: 18rpx;
}
.label-name-number {
display: inline-block;
background-color: $mian-color;
color: #ffffff;
border-radius: $radius * 3;
height: 36rpx;
line-height: 36rpx;
padding: 0 $padding - 10;
font-size: $title-size-sm;
margin: 12rpx 20rpx 0 0;
}
}
}
.signOut {
text-align: center;
line-height: 60rpx;
padding: $padding - 5 0;
color: $mian-color;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
height: 100vh;
overflow-y: scroll;
}
.setupItem {
margin-bottom: $margin;
background-color: #ffffff;
.label {
line-height: 60rpx;
display: flex;
padding: $padding;
box-sizing: border-box;
border-bottom: 2rpx solid #f7f9fa;
&:last-child {
border: none;
}
.label-name {
display: flex;
flex: 1;
.label-name-img {
width: 34rpx;
height: 34rpx;
margin-top: 12rpx;
margin-right: 20rpx;
}
}
.label-tips {
display: flex;
.label-name-head {
width: 54rpx;
height: 54rpx;
border-radius: 50%;
margin-right: 20rpx;
}
.label-name-arrow {
width: 24rpx;
height: 24rpx;
margin-top: 18rpx;
}
.label-name-number {
display: inline-block;
background-color: $mian-color;
color: #ffffff;
border-radius: $radius * 3;
height: 36rpx;
line-height: 36rpx;
padding: 0 $padding - 10;
font-size: $title-size-sm;
margin: 12rpx 20rpx 0 0;
}
}
}
.signOut {
text-align: center;
line-height: 60rpx;
padding: $padding - 5 0;
color: $mian-color;
}
}
// 关注
.tipsBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 9;
background-color: rgba(0, 0, 0, .8);
}
.tipsCont {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 10;
padding: 0 10%;
box-sizing: border-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
overflow: hidden;
}
.tipsWhite-top {
padding: $padding;
box-sizing: border-box;
text-align: center;
}
.tipsCont-img {
width: 100%;
}
.tipsWhite-name {
text-align: center;
color: #111111;
font-size: 34rpx;
font-weight: 600;
margin-bottom: 15rpx;
}
.tipsWhite-text {
font-size: 30rpx;
color: #666666;
line-height: 48rpx;
}
.tipsWhite-btn {
display: flex;
padding: $padding 10rpx;
box-sizing: border-box;
.tipsWhite-btn-go {
flex: 2;
color: #fff;
margin: 0 15rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #F6F6F6;
background-color: #007df5;
border-radius: $radius-m;
&:first-child {
color: #333333;
background-color: #ffffff;
border: 2rpx solid #cccccc;
}
}
}
</style>

215
pages/user/team.vue Normal file
View File

@@ -0,0 +1,215 @@
<template>
<view class="content">
<block v-if="users.length > 0">
<view class="team-item" v-for="(item, index) in users" :key="index" @click="onCallPhone(item.real_username)">
<u-avatar :src="item.avatar" size="48"></u-avatar>
<view class="team-content">
<view class="nowrap name">{{item.nickname}}</view>
<view class="nowrap identitys">
<text class="identity certification-y" v-if="item.certification"><image src="@/static/icon/user_nav_03.png"></image>已实名</text>
<text class="identity identity-2" v-if="item.identity.order == 2">实习顾问</text>
<text class="identity identity-1" v-if="item.identity.order == 1">普通用户</text>
<text class="identity identity-3" v-if="item.identity.order == 3">顾问</text>
</view>
<view class="nowrap submit">联系电话{{item.username}}</view>
<view class="nowrap submit">注册时间{{item.created_at}}</view>
</view>
<view class="mobile">
<uni-icons class="mobile-icon" type="phone-filled" size="18" color="white"></uni-icons>
</view>
</view>
<!-- 分页 -->
<u-loadmore v-if="pagesShow" :status="status" />
</block>
<block v-else>
<view class="list-null">
<u-empty
mode="data"
icon="http://cdn.uviewui.com/uview/empty/data.png"
text="暂无客户数据"
>
</u-empty>
</view>
</block>
</view>
</template>
<script>
import { team } from '@/apis/interfaces/user.js'
export default {
data() {
return {
tabs : [],
tabVal : 0,
users : [],
count : {
all: 0
},
// 分页
page : {
current : 1,
has_more: false,
},
pagesShow : false,
status : false,
};
},
created() {
this.getList()
},
methods: {
// 获取列表
getList(){
uni.showLoading({
title: '加载中...',
mask : true
})
team({
larer : 1,
page : this.page.current,
}).then(res => {
console.log(res)
let { lists, count } = res;
let atList = lists.page.current == 1 ? [] : this.lists
this.count = count
this.users = atList.concat(lists.data)
this.page = lists.page
this.pagesShow = false
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
onCallPhone(phone){
uni.makePhoneCall({
phoneNumber: phone
})
}
},
onReachBottom() {
this.pagesShow = true;
if(this.page.has_more){
this.status = 'loading';
this.page.current++
this.getList()
return
}
this.status = 'nomore';
}
}
</script>
<style lang="scss">
.content{
box-sizing: border-box;
background: white;
padding-top: 30rpx;
}
// 统计数据
.total{
margin: 30rpx 30rpx 0;
background: linear-gradient(to top left, #446EFE, #0f36bb);
box-shadow: 10rpx 0 15rpx 15rpx rgba(0, 0, 0, .03);
border-radius: 20rpx;
padding: 50rpx;
color: white;
display: flex;
justify-content: space-between;
align-items: center;
.total-title{
font-size: 28rpx;
opacity: .8;
padding-top: 10rpx;
}
.total-number{
text-align: right;
font-weight: bold;
}
}
// 团队列表
.team-item{
background: white;
display: flex;
justify-content: space-between;
padding: 30rpx;
border-radius: 20rpx;
margin: 0 30rpx 30rpx 30rpx;
box-shadow: 10rpx 0 15rpx 15rpx rgba(0, 0, 0, .03);
position: relative;
overflow: hidden;
&::after{
width: 30rpx;
height: 30rpx;
border-radius: 15rpx;
background: linear-gradient(to top left, #446EFE, #0f36bb);
position: absolute;
left: -15rpx;
top: 30rpx;
content: " ";
}
.team-content{
width: calc( 100% - 48px - 100rpx );
padding-left: 30rpx;
box-sizing: border-box;
.name{
font-weight: bold;
font-size: 34rpx;
}
.submit{
line-height: 40rpx;
font-size: 26rpx;
color: gray;
}
.identitys{
margin-bottom: 10rpx;
.identity{
font-size: 24rpx;
border-radius: 15rpx;
line-height: 30rpx;
padding: 0 10rpx;
color: white;
margin-right: 20rpx;
&.identity-2{
background: #443DE2;
}
&.identity-1{
background: #e1e1e1;
}
&.identity-3{
background: #FEAD45;
}
&.certification-y{
background: #FFF7EC;
border-color: #FEAD45;
color: #FEAD45;
image{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
margin-bottom: 5rpx;
}
}
}
}
}
.mobile{
width: 100rpx;
border-radius: 35rpx;
margin-top: 9px;
height: 30px;
line-height: 30px;
color: white;
background: #446EFE;
text-align: center;
.mobile-icon{
display: inline-block;
}
}
}
// 空页面
.list-null{ height: 60vh; display: flex; align-items: center; justify-content: center; }
</style>

129
pages/user/vip.vue Normal file
View File

@@ -0,0 +1,129 @@
<template>
<view>
<view v-if="identity != null" :style="(identity.open || identity.renew) ? 'padding-bottom:230rpx': 'padding-bottom:110rpx'">
<image class="vip-cover" :src="identity.cover" mode="widthFix"></image>
<view class="vip-footer">
<view class="vip-text">
<text class="vip-text-item">{{identity.identity_name}}</text>
<text class="vip-text-item">到期时间: {{identity.end_at || '长期'}}</text>
</view>
<button class="vip-btn" v-if="identity.open || identity.renew" @click="vipShow = true">{{identity.open ? '开通': ''}}{{identity.renew ? '续费': ''}} ({{identity.price}}/{{identity.years}})</button>
</view>
</view>
<!-- 弹出层 -->
<u-popup :show="vipShow" mode="center" :round="10" closeable @close="vipShow = false">
<view class="vip-tips" v-if="identity != null">
<view class="vip-tips-title">开通会员</view>
<view class="vip-tips-price"><text class="vip-tips-price-sm"></text>{{identity.price}}</view>
<view class="vip-tips-text">年限{{identity.years}}</view>
<input class="vip-tips-input" placeholder="请输入真实姓名" v-model="nickname" />
<button class="vip-tips-btn" @click="onOpen">去支付</button>
</view>
</u-popup>
</view>
</template>
<script>
import { identity, vip } from '@/apis/interfaces/user'
export default {
data() {
return {
vipShow : false,
identity: null,
nickname: ""
};
},
onShow(){
uni.showLoading({
title: '加载中...',
mask : true
})
identity().then(res => {
this.identity = res;
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
onOpen(){
if(this.nickname == ''){
uni.showToast({
title: '请输入真实姓名',
icon : 'none'
})
return
}
uni.showLoading({
title: "获取支付...",
mask : true
})
vip({ real_name: this.nickname }).then(res => {
uni.hideLoading()
let { order_type, order_id } = res
this.$Router.push({
name: "Pay",
params: {
orderId : order_id,
orderType : order_type
}
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss">
.vip-cover{ width: 100%; vertical-align: top; }
.vip-footer{
padding: 30rpx;
background: #d2382c;
position: fixed;
bottom: 0;
left: 0;
right: 0;
.vip-text{
color: #fff5e9;
font-size: 30rpx;
text-align: center;
line-height: 50rpx;
.vip-text-item{ padding: 0 15rpx; }
}
.vip-btn{
margin-top: 30rpx;
background: linear-gradient(to right, #fffefc, #fff0d9);
color: #d2382c;
font-weight: bold;
font-size: 34rpx;
border-radius: 45rpx;
line-height: 90rpx;
&::after{ display: none; }
}
}
// 开通会员弹出层
.vip-tips{
width: 75vw;
padding: 50rpx;
box-sizing: border-box;
.vip-tips-title{ text-align: center; font-weight: bold; font-size: 36rpx; padding-bottom: 30rpx; }
.vip-tips-price{
text-align: center;
font-weight: bold;
font-size: 50rpx;
color: #d2382c;
&-sm{ font-size: 80%; }
}
.vip-tips-text{ font-size: 30rpx; color: gray; padding-bottom: 50rpx; text-align: center; }
.vip-tips-input{ background: #f7f8f9; border-radius: 45rpx; height: 90rpx; margin-bottom: 30rpx; padding: 0 30rpx; text-align: center; font-size: 32rpx; }
.vip-tips-btn{ background: #d2382c; color: white; line-height: 90rpx; border-radius: 45rpx; font-weight: bold; font-size: 34rpx; }
}
</style>

319
pages/work/account.vue Normal file
View File

@@ -0,0 +1,319 @@
<template>
<view class="content">
<!-- tabs -->
<u-sticky bgColor="#FFF" zIndex="9" >
<u-tabs
:current="tabsCurrent"
:list="tabs"
keyName="value"
lineColor="#446EFE"
:scrollable="tabs.length > 5"
:activeStyle="{
color: '#111',
fontWeight: 'bold',
fontSize: '32rpx'
}"
:inactiveStyle="{
color: '#606266',
fontSize: '30rpx'
}"
@click="onTabs"
></u-tabs>
</u-sticky>
<!-- 订单列表 -->
<view class="orders" v-if="orders.length > 0">
<view class="orders-item" v-for="(item, index) in orders" :key="index">
<view class="orders-flex">
<view class="no nowrap" @click="copyNo(item.order_no)">
{{item.order_no}}
</view>
<view class="state">{{item.status.text}}</view>
</view>
<view class="orders-content">
<view class="orders-content-item">
<label>业务名称</label>
<view class="nowrap">{{item.item.title}}</view>
</view>
<view class="orders-content-item">
<label>客户姓名</label>
<view class="nowrap">{{item.name}}</view>
</view>
<view class="orders-content-item">
<label>手机号码</label>
<view class="nowrap">{{item.mobile}}</view>
</view>
<view class="orders-content-item">
<label>创建时间</label>
<view class="nowrap">{{item.created_at}}</view>
</view>
<view class="orders-content-item" v-if="item.paid_at != ''">
<label>支付时间</label>
<view class="nowrap">{{item.paid_at}}</view>
</view>
</view>
<view class="orders-flex">
<view class="price">{{item.item.price}}</view>
<view class="btns">
<view class="btns-item border" v-if="item.can.cancel" @click="onCancel(item)">取消订单</view>
<view class="btns-item" v-if="item.can.pay" @click="onPay(item)">立即支付</view>
</view>
</view>
</view>
<!-- 分页 -->
<u-loadmore v-if="pagesShow" :status="status" />
</view>
<!-- 订单是空的 -->
<view class="order-null" v-else>
<u-empty
mode="order"
icon="http://cdn.uviewui.com/uview/empty/order.png"
text="暂无相关订单"
>
</u-empty>
</view>
</view>
</template>
<script>
import { accountOrder, accountCancel } from '@/apis/interfaces/index.js'
export default {
data() {
return {
tabs : [{ id: '', value: '全部' }],
tabsCurrent : 0,
tabsId : '',
orders : [],
pagesShow : false,
page : {
current : 1,
has_more: false,
},
status : ''
};
},
onShow() {
this.getOrder()
},
methods: {
// 筛选分类
onTabs(e){
let { id, index } = e;
this.tabsCurrent = index
this.tabsId = id
this.page = { current: 1, has_more: false }
this.getOrder()
},
// 获取订单列表
getOrder(){
let { tabsId, tabs, orders, page } = this
accountOrder({
manager: 1,
status : tabsId,
page : page.current
}).then(res => {
let { status, lists } = res;
this.tabs = [{ id: '', value: '全部' }].concat(status)
this.orders = lists.page.current == 1 ? lists.data : this.orders.concat(lists.data)
this.page = lists.page
this.pagesShow = false
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 取消订单
onCancel(e){
let { order_id } = e;
uni.showModal({
title : "提示",
content : "确认取消当前订单嘛?",
cancelText : "取消",
confirmColor: "#446EFE",
success : modalRes => {
if(modalRes.confirm){
uni.showLoading({
title: "加载中...",
mask : true
})
accountCancel(order_id).then(res => {
uni.showToast({
title: '订单已取消',
icon : 'none'
})
this.page = { current: 1, has_more: false }
this.getOrder()
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
})
},
// 复制订单号码
copyNo(no){
uni.setClipboardData({
data : no,
success : res => {
uni.showToast({
title: '订单号已复制',
icon : 'none'
})
}
})
},
// 去支付
onPay(obj){
let { order_id, order_type, paid_at } = obj
if(paid_at == ''){
this.$Router.replace({name: 'FeePay', params: {id: order_id, orderType: order_type, price: obj.item.price, payForm: 'synthesize'}})
}
}
},
onReachBottom() {
this.pagesShow = true;
if(this.page.has_more){
this.status = 'loading';
this.page.current++
this.getOrder()
return
}
this.status = 'nomore';
}
}
</script>
<style lang="scss">
.content{ background: #f7f8f9; min-height: calc(100vh - 44px); }
// 订单列表
.orders{
padding: 30rpx 0 10rpx;
.orders-item{
margin: 0 30rpx 20rpx;
background-color: white;
border-radius: $radius;
}
.orders-content{
padding: 20rpx 30rpx;
.orders-content-item{
line-height: 70rpx;
display: flex;
justify-content: space-between;
font-size: 30rpx;
color: #111111;
label{
color: #999999;
}
.orders-content-btn{
color: #446EFE;
}
.orders-content-bottom{
padding-right: 40rpx;
position: relative;
.orders-content-icon{
position: absolute;
right: 0;
top: 0;
}
}
}
.orders-content-type{
text{
margin-right: 30rpx;
position: relative;
display: inline-block;
&::after{
position: absolute;
content: "/";
width: 30rpx;
text-align: center;
font-size: 30rpx;
top: 0;
right: -30rpx;
}
&:last-child{
margin-right: 0;
&::after{
display: none;
}
}
}
}
.orders-content-block{
background: rgba(68, 110, 254, .03);
padding: 20rpx;
font-size: 28rpx;
border-radius: 10rpx;
margin: 10rpx 0;
.item-flex{
display: flex;
justify-content: space-between;
line-height: 50rpx;
}
}
}
.orders-flex{
border-bottom: solid 1rpx #F6F6F6;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 30rpx;
&:last-child{
border-top: solid 1rpx #F6F6F6;
border-bottom: none;
}
.no{
font-size: 30rpx;
color: #111;
line-height: 60rpx;
width: calc(100% - 150rpx);
}
.state{
color: #446EFE;
font-weight: bold;
font-size: 30rpx;
line-height: 60rpx;
width: 150rpx;
text-align: right;
}
.price{
font-weight: bold;
color: #446EFE;
}
.btns{
width: 400rpx;
text-align: right;
.btns-item{
display: inline-block;
height: 70rpx;
line-height: 70rpx;
background: #446EFE;
color: white;
border-radius: 35rpx;
padding: 0 30rpx;
font-size: 30rpx;
&.border{
border: solid 1rpx #446EFE;
color: #446EFE;
background: white;
height: 68rpx;
line-height: 68rpx;
&::after{ display: none;}
}
&:last-child{ margin-left: 30rpx; }
}
}
}
}
// 订单为空
.order-null{
height: 80vh;
display: flex;
justify-content: center;
align-items: center;
}
</style>

313
pages/work/delegation.vue Normal file
View File

@@ -0,0 +1,313 @@
<template>
<view class="content">
<!-- tabs -->
<u-sticky bgColor="#FFF" zIndex="9" >
<u-tabs
:current="tabsCurrent"
:list="tabs"
keyName="value"
lineColor="#446EFE"
:scrollable="tabs.length > 5"
:activeStyle="{
color: '#111',
fontWeight: 'bold',
fontSize: '32rpx'
}"
:inactiveStyle="{
color: '#606266',
fontSize: '30rpx'
}"
@click="onTabs"
></u-tabs>
</u-sticky>
<!-- 订单列表 -->
<view class="orders" v-if="orders.length > 0">
<view class="orders-item" v-for="(item, index) in orders" :key="index">
<view class="orders-flex">
<view class="no nowrap" @click="copyNo(item.order_no)">
{{item.order_no}}
</view>
<view class="state">{{item.status.text}}</view>
</view>
<view class="orders-content">
<view class="orders-content-item">
<label>业务名称</label>
<view class="nowrap">{{item.item.title}}</view>
</view>
<view class="orders-content-item">
<label>客户姓名</label>
<view class="nowrap">{{item.name}}</view>
</view>
<view class="orders-content-item">
<label>手机号码</label>
<view class="nowrap">{{item.mobile}}</view>
</view>
<view class="orders-content-item">
<label>创建时间</label>
<view class="nowrap">{{item.created_at}}</view>
</view>
<view class="orders-content-item" v-if="item.paid_at != ''">
<label>支付时间</label>
<view class="nowrap">{{item.paid_at}}</view>
</view>
</view>
<view class="orders-flex">
<view class="price">{{item.item.price}}</view>
<view class="btns">
<view class="btns-item border" v-if="item.can.cancel" @click="onCancel(item)">取消订单</view>
<view class="btns-item" v-if="item.can.pay" @click="onPay(item)">立即支付</view>
</view>
</view>
</view>
<!-- 分页 -->
<u-loadmore v-if="pagesShow" :status="status" />
</view>
<!-- 订单是空的 -->
<view class="order-null" v-else>
<u-empty
mode="order"
icon="http://cdn.uviewui.com/uview/empty/order.png"
text="暂无相关订单"
>
</u-empty>
</view>
</view>
</template>
<script>
import { delegationOrder, delegationCancel } from '@/apis/interfaces/index.js'
export default {
data() {
return {
tabs : [{ id: '', value: '全部' }],
tabsCurrent : 0,
tabsId : '',
orders : [],
pagesShow : false,
page : {
current : 1,
has_more: false,
},
status : ''
};
},
onShow() {
this.getOrder()
},
methods: {
// 筛选分类
onTabs(e){
let { id, index } = e;
this.tabsCurrent = index
this.tabsId = id
this.page = { current: 1, has_more: false }
this.getOrder()
},
// 获取订单列表
getOrder(){
let { tabsId, tabs, orders, page } = this
delegationOrder({
manager: 1,
status : tabsId,
page : page.current
}).then(res => {
let { status, lists } = res;
this.tabs = [{ id: '', value: '全部' }].concat(status)
this.orders = lists.page.current == 1 ? lists.data : this.orders.concat(lists.data)
this.page = lists.page
this.pagesShow = false
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 取消订单
onCancel(e){
let { order_id } = e;
uni.showModal({
title : "提示",
content : "确认取消当前订单嘛?",
cancelText : "取消",
confirmColor: "#446EFE",
success : modalRes => {
if(modalRes.confirm){
uni.showLoading({
title: "加载中...",
mask : true
})
delegationCancel(order_id).then(res => {
uni.showToast({
title: '订单已取消',
icon : 'none'
})
this.page = { current: 1, has_more: false }
this.getOrder()
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
})
},
// 复制订单号码
copyNo(no){
uni.setClipboardData({
data : no,
success : res => {
uni.showToast({
title: '订单号已复制',
icon : 'none'
})
}
})
},
// 去支付
onPay(obj){
let { order_id, order_type, paid_at } = obj
if(paid_at == ''){
this.$Router.replace({name: 'FeePay', params: {id: order_id, orderType: order_type, price: obj.item.price, payForm: 'synthesize'}})
}
}
},
onReachBottom() {
this.pagesShow = true;
if(this.page.has_more){
this.status = 'loading';
this.page.current++
this.getOrder()
return
}
this.status = 'nomore';
}
}
</script>
<style lang="scss">
.content{ background: #f7f8f9; min-height: calc(100vh - 44px); }
// 订单列表
.orders{
padding: 30rpx 0 10rpx;
.orders-item{
margin: 0 30rpx 20rpx;
background-color: white;
border-radius: $radius;
}
.orders-content{
padding: 20rpx 30rpx;
.orders-content-item{
line-height: 70rpx;
display: flex;
justify-content: space-between;
font-size: 30rpx;
color: #111111;
label{
color: #999999;
}
.orders-content-btn{
color: #446EFE;
}
&.orders-content-bottom{
padding-right: 40rpx;
position: relative;
.orders-content-icon{
position: absolute;
right: 0;
top: 0;
}
}
}
.orders-content-type{
text{
margin-right: 30rpx;
position: relative;
display: inline-block;
&::after{
position: absolute;
content: "/";
width: 30rpx;
text-align: center;
font-size: 30rpx;
top: 0;
right: -30rpx;
}
&:last-child{
margin-right: 0;
&::after{
display: none;
}
}
}
}
.orders-content-block{
background: rgba(68, 110, 254, .03);
padding: 20rpx;
font-size: 28rpx;
border-radius: 10rpx;
margin: 10rpx 0;
.item-flex{
display: flex;
justify-content: space-between;
line-height: 50rpx;
}
}
}
.orders-flex{
border-bottom: solid 1rpx #F6F6F6;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx $padding;
&:last-child{
border-top: solid 1rpx #F6F6F6;
border-bottom: none;
}
.no{
font-size: 30rpx;
color: #111;
line-height: 60rpx;
width: calc(100% - 150rpx);
}
.state{
color: #446EFE;
font-weight: bold;
font-size: 30rpx;
line-height: 60rpx;
width: 150rpx;
text-align: right;
}
.price{
font-weight: bold;
color: #446EFE;
}
.btns{
width: 400rpx;
text-align: right;
.btns-item{
display: inline-block;
height: 70rpx;
line-height: 70rpx;
background: #446EFE;
color: white;
border-radius: 35rpx;
padding: 0 30rpx;
font-size: 30rpx;
&.border{ border: solid 1rpx #446EFE; color: #446EFE; background: white; height: 68rpx; &::after{ display: none; } }
&:last-child{ margin-left: 30rpx; }
}
}
}
}
// 订单为空
.order-null{
height: 80vh;
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@@ -30,20 +30,20 @@ router.beforeEach((to, from, next) => {
return
}
// 检查用户是否授权了微信
// if(to.name != 'webWechatIndex' && openId === ''){
// authFollow({
// // url: 'https://web.douhuotest.douhuofalv.com/webWechat/index'
// url: 'https://web.douhuofalv.com/webWechat/index'
// }).then(res => {
// window.location.href = res
// }).catch(err => {
// uni.showToast({
// title: err.message,
// icon: "none"
// })
// })
// return
// }
if(to.name != 'webWechatIndex' && openId === ''){
authFollow({
// url: 'https://web.douhuo.demos.uzchain.tech/webWechat/index',
url: 'https://web.douhuofalv.com/webWechat/index'
}).then(res => {
window.location.href = res
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
return
}
// 检查是否需要登录
if(to.auth && token === ''){

BIN
static/.DS_Store vendored

Binary file not shown.

BIN
static/icon/user_nav_03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
static/qrcode_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
static/vip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

119
yarn.lock
View File

@@ -2,67 +2,69 @@
# yarn lockfile v1
"@babel/parser@^7.18.4":
version "7.21.4"
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
"@babel/parser@^7.23.5":
version "7.24.4"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz"
integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==
"@babel/runtime@^7.17.2":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
version "7.20.13"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz"
integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==
dependencies:
regenerator-runtime "^0.13.11"
"@vue/compiler-sfc@2.7.14":
version "2.7.14"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd"
integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==
"@vue/compiler-sfc@2.7.16":
version "2.7.16"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz"
integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
dependencies:
"@babel/parser" "^7.18.4"
"@babel/parser" "^7.23.5"
postcss "^8.4.14"
source-map "^0.6.1"
optionalDependencies:
prettier "^1.18.2 || ^2.0.0"
"@vue/devtools-api@^6.0.0-beta.11":
version "6.4.5"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz#d54e844c1adbb1e677c81c665ecef1a2b4bb8380"
resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz"
integrity sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==
base64-arraybuffer@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
resolved "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
copy-text-to-clipboard@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
resolved "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz"
integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==
core-js@^2.6.5:
version "2.6.12"
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.11.0:
version "3.27.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.1.tgz#23cc909b315a6bb4e418bf40a52758af2103ba46"
integrity sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==
version "3.27.2"
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.27.2.tgz"
integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==
css-line-break@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
resolved "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz"
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
dependencies:
utrie "^1.0.2"
csstype@^3.1.0:
version "3.1.2"
resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
version "3.1.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
html2canvas@^1.4.1:
version "1.4.1"
resolved "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
resolved "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz"
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
dependencies:
css-line-break "^2.1.0"
@@ -70,80 +72,85 @@ html2canvas@^1.4.1:
jweixin-module@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/jweixin-module/-/jweixin-module-1.6.0.tgz#4a7ea614083e3c9c3f49e2fdc2bb882cfa58dfcd"
resolved "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz"
integrity sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==
mutation-observer@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0"
resolved "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz"
integrity sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==
nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
nanoid@^3.3.7:
version "3.3.7"
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
postcss@^8.4.14:
version "8.4.23"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab"
integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==
version "8.4.38"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
dependencies:
nanoid "^3.3.6"
nanoid "^3.3.7"
picocolors "^1.0.0"
source-map-js "^1.0.2"
source-map-js "^1.2.0"
"prettier@^1.18.2 || ^2.0.0":
version "2.8.8"
resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
text-segmentation@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
resolved "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz"
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
dependencies:
utrie "^1.0.2"
uni-read-pages@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/uni-read-pages/-/uni-read-pages-1.0.5.tgz#452c8dcaa8977bbaef600909be926c8d9704387c"
resolved "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz"
integrity sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==
uni-simple-router@2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/uni-simple-router/-/uni-simple-router-2.0.7.tgz#04e0b5be6cd733a1ecb9d35a3dbe82f27f48204e"
resolved "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz"
integrity sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA==
utrie@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz"
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
dependencies:
base64-arraybuffer "^1.0.2"
uview-ui@^2.0.31:
version "2.0.35"
resolved "https://registry.yarnpkg.com/uview-ui/-/uview-ui-2.0.35.tgz#b0e7916382e533402cfb2e86c10f2cacca22a9b4"
integrity sha512-OfMttN3XkHvQosXfd8bjz8ASTvypPoGzBWmQZBJ871bYMCA7t2bDFPlzjbxUj/5ykAjKnZ8zMUapSwSisVt99g==
version "2.0.31"
resolved "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz"
integrity sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw==
vconsole@^3.15.0:
version "3.15.0"
resolved "https://registry.yarnpkg.com/vconsole/-/vconsole-3.15.0.tgz#2383482b0a4106204090046ec128071284e04a90"
resolved "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.0.tgz"
integrity sha512-8hq7wabPcRucSWQyN7/1tthMawP9JPvM95zgtMHpPknMMMCKj+abpoK7P7oKK4B0qw58C24Mdvo9+raUdpHyVQ==
dependencies:
"@babel/runtime" "^7.17.2"
@@ -153,23 +160,23 @@ vconsole@^3.15.0:
vue-canvas-poster@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz#1a0cb97d7daa76442f724a685ce5578a97a6b557"
resolved "https://registry.npmmirror.com/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz"
integrity sha512-YY5ygbeQSqhiJyj6QXYgSRZ6Ywhvi1gVsfcvBIoCx4Yq9E/gAV32uOhnZz45qsklP86uGc9ypKJAXiX6Dzrdxw==
dependencies:
core-js "^2.6.5"
vue "^2.6.10"
vue@^2.6.10:
version "2.7.14"
resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17"
integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==
version "2.7.16"
resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz"
integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
dependencies:
"@vue/compiler-sfc" "2.7.14"
"@vue/compiler-sfc" "2.7.16"
csstype "^3.1.0"
vuex@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c"
resolved "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
dependencies:
"@vue/devtools-api" "^6.0.0-beta.11"