同步代码

This commit is contained in:
2024-03-29 15:13:27 +08:00
parent 7c70de5fe0
commit e520ff11d2
36 changed files with 2797 additions and 1280 deletions

View File

@@ -49,7 +49,7 @@
</view>
<!-- 新增改版 - 协商调解类 -->
<view class="module">
<view class="module" style="display: none;">
<view class="module-title">
协商调解类
</view>
@@ -76,13 +76,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 +135,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 +198,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 +227,7 @@
</view>
<!-- 新增改版 - 增收赋能类 -->
<view class="module">
<view class="module" style="display: none;">
<view class="module-title">
增收赋能类
</view>
@@ -349,7 +389,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 {
@@ -377,9 +417,14 @@
first : 1,
layadState : '',
layadImg : '',
haveimg : '',
haveimg : '',
// 增收赋能列表
empowerArr : []
empowerArr : [],
// 账户管理类
accountData : [],
// 委托管理类
delegation : []
}
},
onShow() {
@@ -403,7 +448,13 @@
this.articleItem();
// 增收赋能
this.getEmpower()
this.getEmpower();
// 账户管理类
this.getManagement();
// 委托管理类
this.getDelegation();
if(this.$store.getters.getToken) {
userIndex().then(res => {
@@ -417,7 +468,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 => {
@@ -579,8 +663,8 @@
officialGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -78,8 +78,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -95,8 +95,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -1,218 +1,342 @@
<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=>{
console.log(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

@@ -217,8 +217,9 @@
}
// 获取微信授权信息-获取oppid
authFollow({
// url: 'https://web.douhuofalv.com/webWechat/index'
url: 'https://web.douhuotest.douhuofalv.com/webWechat/index'
url: 'https://web.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 => {

View File

@@ -78,8 +78,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode',
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -1,188 +1,188 @@
<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
},
// 创建业务单
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,
}
})
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
}
})
}
}
},
<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
},
// 创建业务单
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,
}
})
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
}
})
}
}
},
}
</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

@@ -94,8 +94,8 @@
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"
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

View File

@@ -558,8 +558,8 @@
// 去签约
contractClick(id) {
contractGo(id, {
// redirect_url: "https://web.douhuofalv.com/user/index",
redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
app_scheme : ''
}).then(res => {
// let faceUrl = encodeURIComponent(res.sign_url)

View File

@@ -81,8 +81,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode',
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode',
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -289,8 +289,9 @@
// 获取微信授权信息-获取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
// 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 => {

View File

@@ -436,8 +436,8 @@
// 去签约
contractClick() {
contractGo(this.$Route.query.id, {
// redirect_url: "https://web.douhuofalv.com/user/index",
redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
app_scheme : ''
}).then(res => {
// let faceUrl = encodeURIComponent(res.sign_url)

View File

@@ -231,8 +231,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -240,8 +240,8 @@
esignUrl({
order_id : id,
order_type: type,
// redirect_url: "https://web.douhuofalv.com/user/index",
redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {

View File

@@ -210,8 +210,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -219,8 +219,8 @@
esignUrl({
order_id : id,
order_type: type,
// redirect_url: "https://web.douhuofalv.com/user/index",
redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {

View File

@@ -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(()=>{
@@ -349,8 +363,9 @@
// 获取微信授权信息-获取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.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: '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(){
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;
}
}
}
<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"
})
// 若价格大于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>

View File

@@ -243,8 +243,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

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>

View File

@@ -268,8 +268,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

View File

@@ -218,8 +218,8 @@
esignUrl({
order_id : id,
order_type: type,
// redirect_url: "https://web.douhuofalv.com/user/index",
redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {

View File

@@ -30,7 +30,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 +46,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 +81,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 +98,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 +114,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>

View File

@@ -273,8 +273,8 @@
judgeGeneral(){
// 获取微信授权信息
authFollow({
// url: 'https://web.douhuofalv.com/webview/webCode'
url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
url: 'https://web.douhuofalv.com/webview/webCode'
// url: 'https://web.douhuotest.douhuofalv.com/webview/webCode'
}).then(res => {
window.location.href = res
}).catch(err => {

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>