[抖火客户端]
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/unpackage
|
||||
/node_modules
|
||||
154
App.vue
Normal file
154
App.vue
Normal file
@@ -0,0 +1,154 @@
|
||||
<script>
|
||||
import { getWxJsdk } from '@/apis/interfaces/public.js'
|
||||
export default {
|
||||
onLaunch() {
|
||||
getWxJsdk({
|
||||
url: window.location.href
|
||||
}).then(res => {
|
||||
let wxconfig = JSON.parse(res)
|
||||
this.$wx.config({
|
||||
appId : wxconfig.appId,
|
||||
debug : false,
|
||||
jsApiList : ['chooseWXPay', 'chooseImage', 'previewImage'],
|
||||
signature : wxconfig.signature,
|
||||
nonceStr : wxconfig.nonceStr,
|
||||
timestamp : wxconfig.timestamp,
|
||||
openTagList : ['wx-open-launch-weapp']
|
||||
})
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
onShow: function() {
|
||||
console.log('App Show')
|
||||
},
|
||||
onHide: function() {
|
||||
console.log('App Hide')
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* 水平居中 */
|
||||
.pack-center {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
/* 下拉刷新 */
|
||||
.refresh{
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.refresh-icon{
|
||||
width: 32rpx;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
/* 页面信息提醒 */
|
||||
.pages-hint,
|
||||
.pages-loding{
|
||||
text-align: center;
|
||||
color: #747788;
|
||||
font-size: 28rpx;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.pages-hint image {
|
||||
width: 188rpx;
|
||||
height: 188rpx;
|
||||
}
|
||||
|
||||
.pages-loding image {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
}
|
||||
|
||||
.pages-hint-text {
|
||||
margin: 30rpx 0;
|
||||
}
|
||||
|
||||
/* 上拉加载 */
|
||||
.pagesLoding {
|
||||
text-align: center;
|
||||
color: gray;
|
||||
line-height: 90rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.pagesLodingIcon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
vertical-align: middle;
|
||||
margin-right: 10rpx;
|
||||
margin-bottom: 6rpx;
|
||||
}
|
||||
|
||||
/* 文字截取 */
|
||||
.nowrap {
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.nowrap-multi {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
/* 全选样式 */
|
||||
checkbox.allCheckbox .uni-checkbox-input {
|
||||
border-radius: 100upx;
|
||||
height: 32rpx;
|
||||
width: 32rpx;
|
||||
}
|
||||
|
||||
checkbox.allCheckbox.checked .uni-checkbox-input {
|
||||
background-color: #446EFE !important;
|
||||
border-color: #446EFE !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
checkbox.allCheckbox .uni-checkbox-input.uni-checkbox-input-checked:before {
|
||||
color: #446EFE !important;
|
||||
transform: translate(-50%,-48%) scale(.5);
|
||||
-webkit-transform: translate(-50%,-48%) scale(.5);
|
||||
}
|
||||
|
||||
|
||||
/* 单选样式 */
|
||||
checkbox.singleCheckbox .uni-checkbox-input {
|
||||
border-radius: 100upx;
|
||||
height: 32rpx;
|
||||
width: 32rpx;
|
||||
}
|
||||
|
||||
checkbox.singleCheckbox.checked .uni-checkbox-input {
|
||||
background-color: #446EFE !important;
|
||||
border-color: #446EFE !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
checkbox.singleCheckbox .uni-checkbox-input.uni-checkbox-input-checked:before {
|
||||
color: #446EFE !important;
|
||||
transform: translate(-50%,-48%) scale(.5);
|
||||
-webkit-transform: translate(-50%,-48%) scale(.5);
|
||||
}
|
||||
|
||||
</style>
|
||||
160
apis/index.js
Normal file
160
apis/index.js
Normal file
@@ -0,0 +1,160 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import store from '@/store'
|
||||
|
||||
// 基础配置
|
||||
const config = {
|
||||
apiUrl : 'https://api.douhuotest.douhuofalv.com/api/', // 测试环境
|
||||
// apiUrl : 'https://douhuo.douhuofalv.com/api/', // 正式环境
|
||||
timeout : 60000
|
||||
}
|
||||
|
||||
let loginHintState = false
|
||||
|
||||
// 网络请求
|
||||
const request = (parameter, hideLoding) => {
|
||||
// 检查url配置
|
||||
if(parameter.url === 'undefined' || parameter.url === ''){
|
||||
uni.showToast({
|
||||
title: '请求地址不能为空',
|
||||
icon : 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
// 注入header
|
||||
config.header = {
|
||||
'Accept': 'application/json',
|
||||
'Authorization': store.getters.getToken || ''
|
||||
}
|
||||
|
||||
// 加载提示
|
||||
if(!hideLoding) uni.showLoading({
|
||||
title: '加载中',
|
||||
mask : true
|
||||
});
|
||||
|
||||
// 请求实例
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url : config.apiUrl + parameter.url,
|
||||
timeout : config.timeout,
|
||||
header : config.header || {},
|
||||
data : parameter.data || {},
|
||||
method : parameter.method || 'GET',
|
||||
success : res => {
|
||||
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)
|
||||
return
|
||||
}
|
||||
if(resolveData.status_code === 401) {
|
||||
loginHint()
|
||||
return
|
||||
}
|
||||
reject(resolveData)
|
||||
return
|
||||
}
|
||||
errToast(res.statusCode)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 文件上传
|
||||
const uploading = (paths, driver) => {
|
||||
|
||||
uni.showLoading({
|
||||
title: '上传中',
|
||||
mask : true
|
||||
});
|
||||
// 注入header
|
||||
config.header = {
|
||||
'Accept': 'application/json',
|
||||
'Authorization': store.getters.getToken || ''
|
||||
}
|
||||
// 上传图片
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url : config.apiUrl + 'storage/uploads',
|
||||
files : paths,
|
||||
header : config.header || {},
|
||||
formData: driver || {},
|
||||
success : res=>{
|
||||
if(res.statusCode === 200){
|
||||
uni.hideLoading()
|
||||
let updData = JSON.parse(res.data)
|
||||
if(updData.status_code === 200){
|
||||
resolve(updData.data)
|
||||
return
|
||||
}
|
||||
reject(updData)
|
||||
return
|
||||
}
|
||||
errToast(res.statusCode)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 处理一些http请求错误提示
|
||||
const errToast = (code) => {
|
||||
switch (code){
|
||||
case 404:
|
||||
uni.showToast({
|
||||
title: code + '接口不存在,请联系系统管理员',
|
||||
icon : 'none'
|
||||
})
|
||||
break;
|
||||
case 405:
|
||||
uni.showToast({
|
||||
title: code + '请检查接口请求方式错误',
|
||||
icon : 'none'
|
||||
})
|
||||
break;
|
||||
case 500:
|
||||
uni.showToast({
|
||||
title: code + '服务端错误,请检查服务器信息',
|
||||
icon : 'none'
|
||||
})
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 更新token
|
||||
const updateToken = (token) => {
|
||||
store.commit('setToken', token)
|
||||
}
|
||||
|
||||
// 处理登录提示
|
||||
const loginHint = () => {
|
||||
if( loginHintState ) return
|
||||
if(!loginHintState) loginHintState = true
|
||||
updateToken('')
|
||||
uni.showModal({
|
||||
title: '登录提示',
|
||||
content: '您的登录信息已过期,请重新登录',
|
||||
confirmColor: '#8b64fd',
|
||||
showCancel:false,
|
||||
success: res=> {
|
||||
loginHintState = false
|
||||
if (res.confirm) uni.reLaunch({
|
||||
url: '/login/login'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
request,
|
||||
uploading,
|
||||
config
|
||||
}
|
||||
78
apis/interfaces/auth.js
Normal file
78
apis/interfaces/auth.js
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 用户注册
|
||||
const Register = (data) =>{
|
||||
return request({
|
||||
url: "user/auth/register",
|
||||
method: 'POST',
|
||||
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
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
Register,
|
||||
Captcha,
|
||||
smsAuth,
|
||||
Login,
|
||||
resetPassword,
|
||||
modifyPassword,
|
||||
registeragree
|
||||
}
|
||||
238
apis/interfaces/index.js
Normal file
238
apis/interfaces/index.js
Normal file
@@ -0,0 +1,238 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
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",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 文章详情
|
||||
const articleBrief = (article_id) =>{
|
||||
return request({
|
||||
url: "cms/articles/" + article_id
|
||||
})
|
||||
}
|
||||
|
||||
// 文章收藏
|
||||
const collect = (article_id) =>{
|
||||
return request({
|
||||
url: "cms/articles/favorite/" + article_id
|
||||
})
|
||||
}
|
||||
|
||||
// 我的文章收藏
|
||||
const myCollect = (data) =>{
|
||||
return request({
|
||||
url: "user/favorites",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 精选律师列表
|
||||
const lawyers = (data) =>{
|
||||
return request({
|
||||
url: "lawyers",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 精选律师详情
|
||||
const lawyersdet = (lawyer_id) =>{
|
||||
return request({
|
||||
url: "lawyers/" + lawyer_id
|
||||
})
|
||||
}
|
||||
|
||||
//律师业务
|
||||
const lawyersBusiness = () =>{
|
||||
return request({
|
||||
url: "lawyers/businesses"
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//律师业务详情
|
||||
const businessDet = (lawyer_business_id) =>{
|
||||
return request({
|
||||
url: "lawyers/businesses/" + lawyer_business_id
|
||||
})
|
||||
}
|
||||
|
||||
//律师订单金额
|
||||
const lawyerOrder = (lawyer_id) =>{
|
||||
return request({
|
||||
url: "lawyers/" + lawyer_id + "/order"
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
//律师业务-创建订单
|
||||
const businessOrder = (lawyer_business_id) =>{
|
||||
return request({
|
||||
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',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 9.9预约
|
||||
const Apply = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/apply/" + business_order_id + "/info"
|
||||
})
|
||||
}
|
||||
|
||||
// 9.9预约--微信支付
|
||||
const Wechat = (apply_order_no, data) =>{
|
||||
return request({
|
||||
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
|
||||
})
|
||||
}
|
||||
|
||||
// 补差价--微信支付
|
||||
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) =>{
|
||||
return request({
|
||||
url: "user/auth/official/openid",
|
||||
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"
|
||||
})
|
||||
}
|
||||
|
||||
// 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
|
||||
})
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
181
apis/interfaces/pay.js
Normal file
181
apis/interfaces/pay.js
Normal file
@@ -0,0 +1,181 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 银联9.9商务支付
|
||||
const ums = (applyNo, data) =>{
|
||||
return request({
|
||||
url : 'pay/apply/' + applyNo + '/ums',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 银联服务包支付
|
||||
const umsOrder = (applyNo, data) =>{
|
||||
return request({
|
||||
url : 'pay/order/' + applyNo + '/ums',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 银联补差价支付
|
||||
const umsDiff = (diffPriceId, data) =>{
|
||||
return request({
|
||||
url : 'pay/diff/' + diffPriceId + '/ums',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 查询支付结果
|
||||
const umsState = (trade_id) => {
|
||||
return request({
|
||||
url : 'payments/query/' + trade_id,
|
||||
})
|
||||
}
|
||||
|
||||
// 斗拱支付 - 咨询单
|
||||
const dgPay = (orderId, data) => {
|
||||
return request({
|
||||
url : 'pay/order/' + orderId + '/dg',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 斗拱支付补差价 - 咨询单
|
||||
const diffDgPay = (orderId, data) => {
|
||||
return request({
|
||||
url: 'pay/diff/' + orderId + '/dg',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 斗拱支付 - 预约单
|
||||
const umsDg = (applyNo, data) => {
|
||||
return request({
|
||||
url : 'pay/apply/' + applyNo + '/dg',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法订单支付 //
|
||||
// 年费单--微信支付
|
||||
const servicePay = (service_order_id, data) =>{
|
||||
return request({
|
||||
url: "pay/service_order/" + service_order_id + "/wechat",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 年费单--银联商务
|
||||
const serviceUms = (service_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/service_order/' + service_order_id + '/ums',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 年费单--汇付斗拱支付
|
||||
const serviceDg = (service_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/service_order/' + service_order_id + '/dg',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 拓展单--微信支付
|
||||
const expandPay = (expand_order_id, data) =>{
|
||||
return request({
|
||||
url: "pay/expand_order/" + expand_order_id + "/wechat",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 拓展单--银联商务
|
||||
const expandUms = (expand_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/expand_order/' + expand_order_id + '/ums',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 拓展单--汇付斗拱支付
|
||||
const expandDg = (expand_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/expand_order/' + expand_order_id + '/dg',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 委托单--微信支付
|
||||
const entrustPay = (entrust_order_id, data) =>{
|
||||
return request({
|
||||
url: "pay/entrust_order/" + entrust_order_id + "/wechat",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 委托单--银联商务
|
||||
const entrustUms = (entrust_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/entrust_order/' + entrust_order_id + '/ums',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 委托单--汇付斗拱支付
|
||||
const entrustDg = (entrust_order_id, data) =>{
|
||||
return request({
|
||||
url : 'pay/entrust_order/' + entrust_order_id + '/dg',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法订单差价--微信支付
|
||||
const synDiffPay = (diff_price_id, data) =>{
|
||||
return request({
|
||||
url: "pay/diff_price/" + diff_price_id + "/wechat",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 综法订单差价--三方支付
|
||||
const synDiffUms = (diff_price_id, data) =>{
|
||||
return request({
|
||||
url: "pay/diff_price/" + diff_price_id + "/ums",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// 综法订单差价--汇付斗拱
|
||||
const synDiffDg = (diff_price_id, data) =>{
|
||||
return request({
|
||||
url: "pay/diff_price/" + diff_price_id + "/dg",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export {
|
||||
ums,
|
||||
umsOrder,
|
||||
umsDiff,
|
||||
umsState,
|
||||
dgPay,
|
||||
diffDgPay,
|
||||
umsDg,
|
||||
|
||||
// 综法
|
||||
servicePay,
|
||||
serviceUms,
|
||||
serviceDg,
|
||||
expandPay,
|
||||
expandUms,
|
||||
expandDg,
|
||||
entrustPay,
|
||||
entrustUms,
|
||||
entrustDg,
|
||||
synDiffPay,
|
||||
synDiffUms,
|
||||
synDiffDg
|
||||
}
|
||||
|
||||
20
apis/interfaces/public.js
Normal file
20
apis/interfaces/public.js
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 获取微信支付
|
||||
const getWxJsdk = data =>{
|
||||
return request({
|
||||
url : 'user/auth/official/jssdk',
|
||||
data : data
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
getWxJsdk
|
||||
}
|
||||
|
||||
277
apis/interfaces/synthesis.js
Normal file
277
apis/interfaces/synthesis.js
Normal file
@@ -0,0 +1,277 @@
|
||||
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 获取综法订单数据数量
|
||||
const synthesisCount = (data) =>{
|
||||
return request({
|
||||
url: "synthesis/data/orders_count",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-一次免费列表
|
||||
const synthList = () =>{
|
||||
return request({
|
||||
url: "synthesis/index"
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-一次免费详情
|
||||
const synthDet = (synthesis_id) =>{
|
||||
return request({
|
||||
url: "synthesis/index/" + synthesis_id
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-一次免费创建单
|
||||
const synthPost = (synthesis_id, data) =>{
|
||||
return request({
|
||||
url: "synthesis/index/" + synthesis_id + "/order",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-年费服务包列表
|
||||
const yearSynthList = data =>{
|
||||
return request({
|
||||
url: "synthesis/services",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-年费服务包详情
|
||||
const yearSynthInfo = (service_id) =>{
|
||||
return request({
|
||||
url: "synthesis/services/" + service_id
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-年费服务包创建单
|
||||
const yearSynthPost = (service_id, data) =>{
|
||||
return request({
|
||||
url: "synthesis/services/" + service_id + "/buy",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-案件委托列表
|
||||
const entrustList = () =>{
|
||||
return request({
|
||||
url: "synthesis/entrusts"
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-案件委托子分类
|
||||
const entrustSon = data =>{
|
||||
return request({
|
||||
url: "synthesis/entrust/all",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-案件委托详情
|
||||
const entrustInfo = (entrust_id) =>{
|
||||
return request({
|
||||
url: "synthesis/entrust/" + entrust_id
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-案件委托创建单
|
||||
const entrustPost = (entrust_id, data) =>{
|
||||
return request({
|
||||
url: "synthesis/entrust/" + entrust_id + "/order",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-拓展服务列表
|
||||
const expandsList = () =>{
|
||||
return request({
|
||||
url: "synthesis/expands",
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 综法咨询-拓展服务详情
|
||||
const expandsInfo = (expand_id) =>{
|
||||
return request({
|
||||
url: "synthesis/expand/" + expand_id
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-拓展服务创建单
|
||||
const expandsPost = (expand_id, data) =>{
|
||||
return request({
|
||||
url: "synthesis/expand/" + expand_id + "/order",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 综法咨询-年费服务包微信支付
|
||||
const yearSynthPay = (service_order_id, data) =>{
|
||||
return request({
|
||||
url: "pay/service_order/" + service_order_id + "/wechat",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 年费订单-列表
|
||||
const yearOrder = data =>{
|
||||
return request({
|
||||
url: "synthesis/services/orders",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 年费订单-详情
|
||||
const yearOrderSee = (order_id) =>{
|
||||
return request({
|
||||
url: "synthesis/services/order/" + order_id
|
||||
})
|
||||
}
|
||||
|
||||
// 咨询单-列表
|
||||
const seekOrder = data =>{
|
||||
return request({
|
||||
url: "synthesis/orders",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 咨询订单-详情
|
||||
const seekOrderSee = (synthesis_order_id) =>{
|
||||
return request({
|
||||
url: "synthesis/order/" + synthesis_order_id
|
||||
})
|
||||
}
|
||||
|
||||
// 委托单-列表
|
||||
const entrustOrder = data =>{
|
||||
return request({
|
||||
url: "synthesis/entrust/orders",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 拓展单-列表
|
||||
const expandOrder = data =>{
|
||||
return request({
|
||||
url: "synthesis/expand/orders",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 年费费--线下打款
|
||||
const offlineOpen = (data) =>{
|
||||
return request({
|
||||
url: "pay/offline/pay",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 查看打款凭证-查看提交信息
|
||||
const bankSee = (pay_id, data) =>{
|
||||
return request({
|
||||
url: "pay/offline/" + pay_id + "/show",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 编辑打款凭证
|
||||
const bankEdit = (pay_id, data) =>{
|
||||
return request({
|
||||
url: "pay/offline/" + pay_id + "/edit",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 获取线下打款银行
|
||||
const bankInfo = (data) =>{
|
||||
return request({
|
||||
url: "pay/offline/bank"
|
||||
})
|
||||
}
|
||||
|
||||
// 咨询单-补差价列表
|
||||
const diffPrices = data =>{
|
||||
return request({
|
||||
url: "synthesis/diff_prices",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 咨询单-创建补差价
|
||||
const entrustPay = data =>{
|
||||
return request({
|
||||
url: "synthesis/diff_prices/create",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 咨询单-取消补差价
|
||||
const cancelPrices = (diff_price_id) =>{
|
||||
return request({
|
||||
url: "synthesis/diff_prices/" + diff_price_id,
|
||||
method: 'DELETE'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取签约地址
|
||||
const esignUrl = (data) =>{
|
||||
return request({
|
||||
url: "synthesis/esign/sign_url",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
synthesisCount,
|
||||
synthList,
|
||||
synthDet,
|
||||
synthPost,
|
||||
yearSynthList,
|
||||
yearSynthInfo,
|
||||
yearSynthPost,
|
||||
entrustList,
|
||||
entrustSon,
|
||||
entrustInfo,
|
||||
entrustPost,
|
||||
expandsList,
|
||||
expandsInfo,
|
||||
expandsPost,
|
||||
yearSynthPay,
|
||||
yearOrder,
|
||||
yearOrderSee,
|
||||
seekOrder,
|
||||
seekOrderSee,
|
||||
entrustOrder,
|
||||
expandOrder,
|
||||
offlineOpen,
|
||||
bankSee,
|
||||
bankEdit,
|
||||
bankInfo,
|
||||
diffPrices,
|
||||
entrustPay,
|
||||
cancelPrices,
|
||||
esignUrl
|
||||
}
|
||||
17
apis/interfaces/uploading.js
Normal file
17
apis/interfaces/uploading.js
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 上传图片
|
||||
*/
|
||||
|
||||
import { uploading as upd } from '../index'
|
||||
|
||||
const uploads = (paths, driver) => {
|
||||
return upd(paths, driver)
|
||||
}
|
||||
|
||||
export {
|
||||
uploads
|
||||
}
|
||||
408
apis/interfaces/user.js
Normal file
408
apis/interfaces/user.js
Normal file
@@ -0,0 +1,408 @@
|
||||
/**
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 获取用户信息
|
||||
const userIndex = () =>{
|
||||
return request({
|
||||
url: "user"
|
||||
})
|
||||
}
|
||||
|
||||
// 实名认证
|
||||
const realName = (data) =>{
|
||||
return request({
|
||||
url: "user/certification",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 是否实名认证
|
||||
const judgeReal = () =>{
|
||||
return request({
|
||||
url: "user/certified"
|
||||
})
|
||||
}
|
||||
|
||||
// 人脸识别
|
||||
const faceUrl = () =>{
|
||||
return request({
|
||||
url: "e-signs/authorize/psn"
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 获取签约地址
|
||||
const contractGo = (business_order_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + '/sign_url',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改用户资料
|
||||
const setting = (key, data) =>{
|
||||
return request({
|
||||
url: "user/setting/" + key,
|
||||
method: 'PUT',
|
||||
data: data
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 我的伙伴
|
||||
const Relations = (data) =>{
|
||||
return request({
|
||||
url: "user/relations",
|
||||
data: data
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 我的推荐
|
||||
const Parent = () =>{
|
||||
return request({
|
||||
url: "user/parent"
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 邀请码
|
||||
const inviteCode = () =>{
|
||||
return request({
|
||||
url: "user/invite"
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 我的咨询单基础信息
|
||||
const userBase = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/user/base"
|
||||
})
|
||||
}
|
||||
|
||||
// 我的咨询单详细信息-银行
|
||||
const userBank = (business_order_item_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_item_id + "/user/bank"
|
||||
})
|
||||
}
|
||||
|
||||
// 修改基础信息-提交
|
||||
const basePut = (business_order_user_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_id + "/user/base",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改银行和其他信息-提交
|
||||
const bankPut = (business_order_user_bank_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_bank_id + "/user/bank",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 我的咨询单基础信息 - 首次提交
|
||||
const BaseFirst = (business_order_user_id, user_base_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_id + "/user/base/" + user_base_id,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
// 修改银行和其他信息--通过之前数据
|
||||
const BankFirst = (business_order_user_bank_id, user_bank_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_bank_id + "/user/bank/" + user_bank_id,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
// 省市区选择
|
||||
const create = (data) =>{
|
||||
return request({
|
||||
url: "region",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取所有省市区数据
|
||||
const createAll = (data) =>{
|
||||
return request({
|
||||
url: "region/all",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取所有省市数据
|
||||
const createCity = (data) =>{
|
||||
return request({
|
||||
url: "region/pro_city",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 机构列表
|
||||
const bankIns = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/ins"
|
||||
})
|
||||
}
|
||||
|
||||
// 基本信息查看-个人中心
|
||||
const BaseSee = () =>{
|
||||
return request({
|
||||
url: "user/base"
|
||||
})
|
||||
}
|
||||
|
||||
// 机构详情查看-个人中心
|
||||
const BankSee = (user_bank_id) =>{
|
||||
return request({
|
||||
url: "user/base/" + user_bank_id + "/bank"
|
||||
})
|
||||
}
|
||||
|
||||
// 机构详情查看-个人中心
|
||||
const BankIns = (business_institution_id) =>{
|
||||
return request({
|
||||
url: "user/base/" + business_institution_id + "/bank_by_ins"
|
||||
})
|
||||
}
|
||||
|
||||
// 机构列表查看-个人中心
|
||||
const BankList = () =>{
|
||||
return request({
|
||||
url: "user/base/banks"
|
||||
})
|
||||
}
|
||||
|
||||
// 我的咨询单
|
||||
const myOrders = (data) =>{
|
||||
return request({
|
||||
url: "business/orders",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 进度
|
||||
const StepsUrl = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/steps"
|
||||
})
|
||||
}
|
||||
|
||||
// 服务包查看
|
||||
const baleSee = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/order_services"
|
||||
})
|
||||
}
|
||||
|
||||
// 获取物流公司
|
||||
const getExpress = () =>{
|
||||
return request({
|
||||
url: "express"
|
||||
})
|
||||
}
|
||||
|
||||
// 发件
|
||||
const Send = (business_order_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/expresses",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 优惠券
|
||||
const coupons = (data) =>{
|
||||
return request({
|
||||
url: "coupons/user/coupons",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 需要修改的订单资料
|
||||
const myAffirm = (data) =>{
|
||||
return request({
|
||||
url: "business/modify/data",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 需要补差价
|
||||
const myDiff = (data) =>{
|
||||
return request({
|
||||
url: "business/diff_prices",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 需要确认方案数
|
||||
const myModify = (data) =>{
|
||||
return request({
|
||||
url: "business/close_schemes",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 确认方案详情
|
||||
const myModifyInfo = (business_order_scheme_id) =>{
|
||||
return request({
|
||||
url: "business/close_schemes/" + business_order_scheme_id
|
||||
})
|
||||
}
|
||||
|
||||
// 确认方案详情 - 同意方案
|
||||
const modifyYes = (business_order_close_scheme_id, data) =>{
|
||||
return request({
|
||||
url: "business/close_schemes/" + business_order_close_scheme_id + "/agree",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 确认方案详情 - 不同意方案
|
||||
const modifyNo = (business_order_close_scheme_id, data) =>{
|
||||
return request({
|
||||
url: "business/close_schemes/" + business_order_close_scheme_id + "/refuse",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取用户姓名手机号性别
|
||||
const userBasic = () =>{
|
||||
return request({
|
||||
url: "user/basic"
|
||||
})
|
||||
}
|
||||
|
||||
// 获取邮寄列表
|
||||
const expressList = (business_order_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_id + "/expresses"
|
||||
})
|
||||
}
|
||||
|
||||
// 查看物流
|
||||
const logistic = (business_order_express_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_express_id + "/logistic"
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 退款完成
|
||||
const myRefund = (data) =>{
|
||||
return request({
|
||||
url: "business/refunds",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 展示法务老师操作记录
|
||||
const doLogs = (order_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + order_id + "/do_logs",
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 缓存信息-信用卡展示
|
||||
const cacheBank = (business_order_user_bank_id) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_bank_id + "/cache/bank"
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 缓存信息-信用卡
|
||||
const cacheBankPut = (business_order_user_bank_id, data) =>{
|
||||
return request({
|
||||
url: "business/" + business_order_user_bank_id + "/cache/bank",
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 签约记录
|
||||
const getSignLogs = data => {
|
||||
return request({
|
||||
url: 'business/flows',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取签约合同
|
||||
const getFlows = id => {
|
||||
return request({
|
||||
url: 'e-signs/flows/' + id
|
||||
})
|
||||
}
|
||||
|
||||
// 删除用户微信数据和关注
|
||||
const userSubscribe = () => {
|
||||
return request({
|
||||
url: 'user/auth/wechat/subscribe',
|
||||
method: 'DELETE'
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
userIndex,
|
||||
realName,
|
||||
judgeReal,
|
||||
faceUrl,
|
||||
contractGo,
|
||||
setting,
|
||||
Relations,
|
||||
Parent,
|
||||
inviteCode,
|
||||
userBase,
|
||||
userBank,
|
||||
basePut,
|
||||
bankPut,
|
||||
BaseFirst,
|
||||
BankFirst,
|
||||
create,
|
||||
createAll,
|
||||
createCity,
|
||||
bankIns,
|
||||
BaseSee,
|
||||
BankSee,
|
||||
BankIns,
|
||||
BankList,
|
||||
myOrders,
|
||||
StepsUrl,
|
||||
baleSee,
|
||||
getExpress,
|
||||
Send,
|
||||
coupons,
|
||||
myAffirm,
|
||||
myDiff,
|
||||
myModify,
|
||||
myModifyInfo,
|
||||
modifyYes,
|
||||
modifyNo,
|
||||
userBasic,
|
||||
expressList,
|
||||
logistic,
|
||||
myRefund,
|
||||
doLogs,
|
||||
cacheBank,
|
||||
cacheBankPut,
|
||||
getSignLogs,
|
||||
getFlows,
|
||||
userSubscribe
|
||||
}
|
||||
58
components/mould-checkbox.vue
Normal file
58
components/mould-checkbox.vue
Normal file
@@ -0,0 +1,58 @@
|
||||
<template>
|
||||
<view>
|
||||
<checkbox-group @change="checkboxChange">
|
||||
<view class="idcardAdd-multi-write" v-for="(letterItem, letterIndex) in checkboxList" :key="letterIndex">
|
||||
<checkbox :value="letterIndex.toString()" :checked="isChecked(letterIndex)" color="#4e7bfe" style="transform:scale(.6); margin-top: -3rpx;"/>
|
||||
<text>{{letterItem}}</text>
|
||||
</view>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
name: 'mouldCheckbox',
|
||||
data(){
|
||||
return {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isChecked(){
|
||||
return (index) => {
|
||||
return this.checkboxVlaue.findIndex(val => val == index) >= 0
|
||||
}
|
||||
}
|
||||
},
|
||||
props: {
|
||||
checkboxVlaue: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
checkboxList: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
|
||||
},
|
||||
methods: {
|
||||
checkboxChange(e){
|
||||
this.$emit('onCheckbox', e.detail.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.idcardAdd-multi-write {
|
||||
line-height: 70rpx;
|
||||
margin-top: $margin;
|
||||
display: flex;
|
||||
color: #999999;
|
||||
}
|
||||
</style>
|
||||
62
components/mould-date.vue
Normal file
62
components/mould-date.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<picker mode="date" :value="valueDate" :start="startDate" :end="endDate" @change="bindDateChange">
|
||||
<view class="uni-input">{{valueDate}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'mouldDate',
|
||||
props: {
|
||||
bankList: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
valueDate: {
|
||||
type : String,
|
||||
default : ''
|
||||
}
|
||||
},
|
||||
data(){
|
||||
const currentDate = this.getDate({
|
||||
format: true
|
||||
})
|
||||
return {}
|
||||
},
|
||||
computed: {
|
||||
startDate() {
|
||||
return this.getDate('start');
|
||||
},
|
||||
endDate() {
|
||||
return this.getDate('end');
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
bindDateChange(e){
|
||||
this.$emit('onDate', e.detail.value)
|
||||
},
|
||||
getDate(type) {
|
||||
const date = new Date();
|
||||
let year = date.getFullYear();
|
||||
let month = date.getMonth() + 1;
|
||||
let day = date.getDate();
|
||||
|
||||
if (type === 'start') {
|
||||
year = year - 60;
|
||||
} else if (type === 'end') {
|
||||
year = year + 2;
|
||||
}
|
||||
month = month > 9 ? month : '0' + month;
|
||||
day = day > 9 ? day : '0' + day;
|
||||
return `${year}-${month}-${day}`;
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
67
components/mould-input.vue
Normal file
67
components/mould-input.vue
Normal file
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<view>
|
||||
<block v-if="inputType == 'price'">
|
||||
<input type="digit" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
<text>元</text>
|
||||
</block>
|
||||
<block v-else-if="inputType == 'number'">
|
||||
<input type="number" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
</block>
|
||||
<block v-else-if="inputType == 'day'">
|
||||
<input type="number" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
<text>天</text>
|
||||
</block>
|
||||
<block v-else-if="inputType == 'password'">
|
||||
<input type="text" password :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
</block>
|
||||
<block v-else-if="inputType == 'mobile'">
|
||||
<input type="number" maxlength="11" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
</block>
|
||||
<block v-else>
|
||||
<input v-if="inputKey == 'card_no'" type="number" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
<input v-else type="text" :placeholder="'请输入' + inputTitle" placeholder-class="placeholderClass" :value="blurValue" @blur="blurInput"/>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
name: 'mouldInput',
|
||||
data(){
|
||||
return {
|
||||
workIndex: 0
|
||||
}
|
||||
},
|
||||
props: {
|
||||
inputKey: {
|
||||
type : String,
|
||||
default : ''
|
||||
},
|
||||
inputType: {
|
||||
type : String,
|
||||
default : ''
|
||||
},
|
||||
blurValue: {
|
||||
type : String,
|
||||
default : ''
|
||||
},
|
||||
inputTitle: {
|
||||
type : String,
|
||||
default : ''
|
||||
}
|
||||
},
|
||||
onLoad() {},
|
||||
methods: {
|
||||
blurInput(e){
|
||||
this.$emit('onValue', e.detail.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
55
components/mould-picker.vue
Normal file
55
components/mould-picker.vue
Normal file
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<view>
|
||||
<picker
|
||||
v-if="bankList.length > 0"
|
||||
:range="bankList"
|
||||
range-key="title"
|
||||
:value="bankValue"
|
||||
@change="bindPickerChange"
|
||||
>
|
||||
<view class="uni-input">{{bankList[bankIndex].title}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'mouldPicker',
|
||||
props: {
|
||||
bankList: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
bankValue: {
|
||||
type: Number,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
bankIndex: 0
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
bankList(e, old){
|
||||
this.bankIndex = 0;
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
},
|
||||
methods: {
|
||||
bindPickerChange(e){
|
||||
this.bankIndex = e.detail.value
|
||||
this.$emit('bankPicker', this.bankList[e.detail.value].institution_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
53
components/mould-radio.vue
Normal file
53
components/mould-radio.vue
Normal file
@@ -0,0 +1,53 @@
|
||||
<template>
|
||||
<view>
|
||||
<radio-group @change="radioChange">
|
||||
<label class="idcardAdd-aline-write" v-for="(limitItem, limitIndex) in radioList" :key="limitIndex">
|
||||
<!-- <radio :value="limitIndex.toString()" :checked="checkboxVlaue.toString() == limitIndex.toString()" color="#4e7bfe" style="transform:scale(.65)"/> -->
|
||||
<radio :value="limitIndex.toString()" :checked="radioVlaue == limitIndex.toString()" color="#4e7bfe" style="transform:scale(.65)"/>
|
||||
<text>{{limitItem}}</text>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
name: 'mouldRadio',
|
||||
data(){
|
||||
return {
|
||||
radioVlaue: null // 选中的会员卡ID
|
||||
}
|
||||
},
|
||||
props: {
|
||||
radioList: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
// radioVlaue: {
|
||||
// type : String,
|
||||
// default : ''
|
||||
// },
|
||||
},
|
||||
watch:{
|
||||
radioList(e, old){
|
||||
this.radioVlaue = null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
radioChange(e){
|
||||
this.radioVlaue = e.detail.value
|
||||
this.$emit('onRadio', e.detail.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.idcardAdd-aline-write {
|
||||
display: inline-block;
|
||||
font-size: $title-size-lg;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
</style>
|
||||
48
components/mould-text.vue
Normal file
48
components/mould-text.vue
Normal file
@@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" maxlength="500" :value="blurValue" :placeholder="blurPlaceholder" @input="blurInput"/>
|
||||
<view class="idcardAdd-depict-number">500字以内</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
name: 'mouldText',
|
||||
data(){
|
||||
return {}
|
||||
},
|
||||
props: {
|
||||
blurValue : {
|
||||
type : String,
|
||||
default : ''
|
||||
},
|
||||
blurPlaceholder: {
|
||||
type : String,
|
||||
default : ''
|
||||
},
|
||||
depictNumber: {
|
||||
type : String,
|
||||
default : ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
},
|
||||
methods: {
|
||||
blurInput(e){
|
||||
this.$emit('onTextarea', e.detail.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.idcardAdd-depict-number {
|
||||
text-align: right;
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
98
components/mould-tips.vue
Normal file
98
components/mould-tips.vue
Normal file
@@ -0,0 +1,98 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="tipsBack" v-if="seeData.seeShow"></view>
|
||||
<view class="tipsCont" v-if="seeData.seeShow">
|
||||
<view class="tipsWhite">
|
||||
<view class="tipsWhite-top">
|
||||
<view class="tipsWhite-name">
|
||||
{{seeData.seeTitle}}
|
||||
</view>
|
||||
<view class="tipsWhite-text">
|
||||
{{seeData.seeText}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="tipsWhite-btn" @click="tipsClick">
|
||||
知道了
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default{
|
||||
name: 'mouldTips',
|
||||
data(){
|
||||
return {}
|
||||
},
|
||||
props: {
|
||||
seeData: {
|
||||
type : Object,
|
||||
default : ''
|
||||
},
|
||||
},
|
||||
onLoad() {
|
||||
},
|
||||
methods: {
|
||||
tipsClick(){
|
||||
this.$emit('tipsClose', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.tipsBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
}
|
||||
.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;
|
||||
}
|
||||
|
||||
.tipsWhite-top {
|
||||
padding: 30rpx 50rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tipsWhite-name {
|
||||
text-align: center;
|
||||
color: #111111;
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.tipsWhite-text {
|
||||
font-size: 30rpx;
|
||||
color: #666666;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
|
||||
.tipsWhite-btn {
|
||||
color: #446EFE;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
border-top: 2rpx solid #F6F6F6;
|
||||
}
|
||||
</style>
|
||||
43
components/mould_select.vue
Normal file
43
components/mould_select.vue
Normal file
@@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<view>
|
||||
<picker
|
||||
v-if="selectList.length > 0"
|
||||
:range="selectList"
|
||||
:value="selectValue"
|
||||
@change="bindPickerChange"
|
||||
>
|
||||
<view class="uni-input">{{selectList[selectValue]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'mouldSelect',
|
||||
props: {
|
||||
selectList: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
selectValue: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data(){
|
||||
return {}
|
||||
},
|
||||
onShow() {},
|
||||
methods: {
|
||||
bindPickerChange(e){
|
||||
this.$emit('bankPicker', e.detail.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
25
index.html
Normal file
25
index.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<!--app-html-->
|
||||
|
||||
<!--组件引用-->
|
||||
<go-back></go-back>
|
||||
</div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
49
main.js
Normal file
49
main.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import App from './App'
|
||||
|
||||
// #ifndef VUE3
|
||||
import Vue from 'vue';
|
||||
import { router, RouterMount } from './router';
|
||||
import webUni from '@/static/uni.webview.js'
|
||||
|
||||
import store from './store';
|
||||
import uView from "uview-ui";
|
||||
Vue.use(uView);
|
||||
Vue.use(router)
|
||||
|
||||
// 页面转成JPG
|
||||
import html2canvas from 'html2canvas';
|
||||
Vue.use(html2canvas)
|
||||
|
||||
// 导入组件库-海报
|
||||
import VueCanvasPoster from 'vue-canvas-poster'
|
||||
// 注册组件库-海报
|
||||
Vue.use(VueCanvasPoster)
|
||||
|
||||
//微信支付
|
||||
Vue.prototype.$wx = require('jweixin-module')
|
||||
Vue.prototype.$store = store
|
||||
Vue.prototype.$webUni = webUni
|
||||
// Vue.prototype.$urlName = 'https://web.douhuofalv.com/webWechat/index'
|
||||
// Vue.prototype.$urlName = 'https://web.douhuotest.douhuofalv.com/webWechat/index'
|
||||
Vue.config.ignoredElements = [...Vue.config.ignoredElements, 'wx-open-launch-weapp']
|
||||
Vue.config.productionTip = false
|
||||
App.mpType = 'app'
|
||||
const app = new Vue({
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
RouterMount(app,router,'#app')
|
||||
// #endif
|
||||
// #ifdef VUE3
|
||||
import {
|
||||
createSSRApp
|
||||
} from 'vue'
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
return {
|
||||
app
|
||||
}
|
||||
}
|
||||
// #endif
|
||||
89
manifest.json
Normal file
89
manifest.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"name" : "douhuo",
|
||||
"appid" : "__UNI__21B714A",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "2",
|
||||
"h5" : {
|
||||
"router" : {
|
||||
"mode" : "history"
|
||||
},
|
||||
"title" : "抖火法律",
|
||||
"devServer" : {
|
||||
"https" : true
|
||||
},
|
||||
"sdkConfigs" : {
|
||||
"maps" : {}
|
||||
},
|
||||
"optimization" : {
|
||||
"treeShaking" : {
|
||||
"enable" : true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
191
package-lock.json
generated
Normal file
191
package-lock.json
generated
Normal file
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"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=="
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.20.13",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.13.tgz",
|
||||
"integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.11"
|
||||
}
|
||||
},
|
||||
"@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"
|
||||
}
|
||||
},
|
||||
"@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": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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": {
|
||||
"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=="
|
||||
},
|
||||
"html2canvas": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
||||
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
|
||||
"requires": {
|
||||
"css-line-break": "^2.1.0",
|
||||
"text-segmentation": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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": {
|
||||
"utrie": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"utrie": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
|
||||
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
|
||||
"requires": {
|
||||
"base64-arraybuffer": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"vconsole": {
|
||||
"version": "3.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.0.tgz",
|
||||
"integrity": "sha512-8hq7wabPcRucSWQyN7/1tthMawP9JPvM95zgtMHpPknMMMCKj+abpoK7P7oKK4B0qw58C24Mdvo9+raUdpHyVQ==",
|
||||
"requires": {
|
||||
"@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"
|
||||
},
|
||||
"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=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"vuex": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
|
||||
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
|
||||
"requires": {
|
||||
"@vue/devtools-api": "^6.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
package.json
Normal file
17
package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"main": "main.js",
|
||||
"dependencies": {
|
||||
"html2canvas": "^1.4.1",
|
||||
"jweixin-module": "^1.6.0",
|
||||
"uni-read-pages": "^1.0.5",
|
||||
"uni-simple-router": "^2.0.8-beta.4",
|
||||
"uview-ui": "^2.0.31",
|
||||
"vconsole": "^3.15.0",
|
||||
"vue-canvas-poster": "^1.2.1",
|
||||
"vuex": "^4.1.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "张慢慢"
|
||||
}
|
||||
617
pages.json
Normal file
617
pages.json
Normal file
@@ -0,0 +1,617 @@
|
||||
{
|
||||
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"aliasPath": "/index",
|
||||
"name": "Index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/details",
|
||||
"aliasPath": "/index/details",
|
||||
"name": "indexDetails",
|
||||
"style": {
|
||||
"navigationBarTitleText": "法律常识"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/collect",
|
||||
"aliasPath": "/index/collect",
|
||||
"name": "indexCollect",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "文章收藏"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/lawyerDet",
|
||||
"aliasPath": "/index/lawyerDet",
|
||||
"name": "lawyerDetails",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "律师详情"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/introduce",
|
||||
"aliasPath": "/index/introduce",
|
||||
"auth": true,
|
||||
"name": "indexIntroduce",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律咨询服务"
|
||||
}
|
||||
|
||||
}, {
|
||||
"path": "pages/index/sortInfo",
|
||||
"aliasPath": "/index/sortInfo",
|
||||
"auth": true,
|
||||
"name": "indexSort",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/sortPay",
|
||||
"aliasPath": "/index/sortPay",
|
||||
"name": "indexSortpay",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "支付"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/sortPoint",
|
||||
"aliasPath": "/index/sortPoint",
|
||||
"name": "sortPoint",
|
||||
"style": {
|
||||
"navigationBarTitleText": "支付成功"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/general",
|
||||
"aliasPath": "/index/general",
|
||||
"name": "indexGeneral",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "关注公众号"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/index/workSearch",
|
||||
"aliasPath": "/index/workSearch",
|
||||
"name": "indexWork",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "绑定业务员"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/login",
|
||||
"aliasPath": "/login/login",
|
||||
"name": "Login",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律-登录"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/agreement",
|
||||
"aliasPath": "/login/agreement",
|
||||
"name": "Agreement",
|
||||
"style": {
|
||||
"navigationBarTitleText": "用户协议"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/forget",
|
||||
"aliasPath": "/login/forget",
|
||||
"name": "Forget",
|
||||
"style": {
|
||||
"navigationBarTitleText": "找回密码"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/modify",
|
||||
"aliasPath": "/login/modify",
|
||||
"name": "Modify",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改密码"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/login/register",
|
||||
"aliasPath": "/login/register",
|
||||
"name": "Register",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律-注册"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/index",
|
||||
"aliasPath": "/user/index",
|
||||
"name": "User",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人中心",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/coupon",
|
||||
"aliasPath": "/user/coupon",
|
||||
"name": "Coupon",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "优惠券"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/setup",
|
||||
"aliasPath": "/user/setup",
|
||||
"name": "Setup",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "其他功能"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/manage",
|
||||
"aliasPath": "/user/manage",
|
||||
"name": "Manage",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "信息管理"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/manageBase",
|
||||
"aliasPath": "/user/manageBase",
|
||||
"name": "userBase",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "基础信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/manageBank",
|
||||
"aliasPath": "/user/manageBank",
|
||||
"name": "userBank",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "银行信息管理"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/manageOther",
|
||||
"aliasPath": "/user/manageOther",
|
||||
"name": "userOther",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "银行其他管理"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/manageIns",
|
||||
"aliasPath": "/user/manageIns",
|
||||
"name": "Ins",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "机构列表"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/referee",
|
||||
"aliasPath": "/user/referee",
|
||||
"name": "Referee",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "我的伙伴"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/parent",
|
||||
"aliasPath": "/user/parent",
|
||||
"name": "Parent",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "业务联系人"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/appDown",
|
||||
"aliasPath": "/user/appDown",
|
||||
"name": "AppDown",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "APP下载"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/orderAffirm",
|
||||
"aliasPath": "/user/orderAffirm",
|
||||
"name": "OrderAffirm",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改订单资料"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/orderMake",
|
||||
"aliasPath": "/user/orderMake",
|
||||
"name": "OrderMake",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "补交服务费"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/orderModify",
|
||||
"aliasPath": "/user/orderModify",
|
||||
"name": "OrderModify",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "待确认方案"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/orderModifyInfo",
|
||||
"aliasPath": "/user/orderModifyInfo",
|
||||
"name": "OrderModifyInfo",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "结案方案"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/invite",
|
||||
"aliasPath": "/user/invite",
|
||||
"name": "Invite",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "邀请码"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/signLog",
|
||||
"aliasPath": "/user/signLog",
|
||||
"name": "SignLog",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "合同列表"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/contract",
|
||||
"aliasPath": "/user/contract",
|
||||
"name": "Contract",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "合同查看"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/filePreview",
|
||||
"aliasPath": "/pages/filePreview",
|
||||
"name": "FilePreview",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "合同查看"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/modify/modify-bank",
|
||||
"aliasPath": "/modify/modify-bank",
|
||||
"name": "ModifyBank",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "银行信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/modify/modify-other",
|
||||
"aliasPath": "/modify/modify-other",
|
||||
"name": "ModifyOther",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "银行信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/modify/modify-base",
|
||||
"aliasPath": "/modify/modify-base",
|
||||
"name": "ModifyBase",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "基础信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/index",
|
||||
"aliasPath": "/sheet/index",
|
||||
"name": "sheetIndex",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "咨询单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/create",
|
||||
"aliasPath": "/sheet/create",
|
||||
"name": "sheetCreate",
|
||||
"style": {
|
||||
"navigationBarTitleText": "选择咨询类型"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/basic",
|
||||
"aliasPath": "/sheet/basic",
|
||||
"name": "sheetBasic",
|
||||
"style": {
|
||||
"navigationBarTitleText": "基本信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/loan",
|
||||
"aliasPath": "/sheet/loan",
|
||||
"name": "sheetLoan",
|
||||
"style": {
|
||||
"navigationBarTitleText": "抖火法律"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/payment",
|
||||
"aliasPath": "/sheet/payment",
|
||||
"name": "sheetPayment",
|
||||
"style": {
|
||||
"navigationBarTitleText": "支付"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/estimate",
|
||||
"aliasPath": "/sheet/estimate",
|
||||
"name": "sheetEstimate",
|
||||
"style": {
|
||||
"navigationBarTitleText": "预估方案"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/idcard",
|
||||
"aliasPath": "/sheet/idcard",
|
||||
"name": "sheetIdcard",
|
||||
"style": {
|
||||
"navigationBarTitleText": "实名认证"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/pay",
|
||||
"aliasPath": "/sheet/pay",
|
||||
"name": "sheetPay",
|
||||
"style": {
|
||||
"navigationBarTitleText": "预约咨询订单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/point",
|
||||
"aliasPath": "/sheet/point",
|
||||
"name": "sheetPoint",
|
||||
"style": {
|
||||
"navigationBarTitleText": "认证成功"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/authSuccess",
|
||||
"aliasPath": "/sheet/authSuccess",
|
||||
"name": "Authsuccess",
|
||||
"style": {
|
||||
"navigationBarTitleText": "认证成功"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/speed",
|
||||
"aliasPath": "/sheet/speed",
|
||||
"name": "sheetSpeed",
|
||||
"style": {
|
||||
"navigationBarTitleText": "咨询单进度"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/express",
|
||||
"aliasPath": "/sheet/express",
|
||||
"name": "sheetExpress",
|
||||
"style": {
|
||||
"navigationBarTitleText": "快递邮寄"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/process",
|
||||
"aliasPath": "/sheet/process",
|
||||
"name": "sheetProcess",
|
||||
"style": {
|
||||
"navigationBarTitleText": "审核中"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/handle",
|
||||
"aliasPath": "/sheet/handle",
|
||||
"name": "sheetHandle",
|
||||
"style": {
|
||||
"navigationBarTitleText": "记录列表"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/bale",
|
||||
"aliasPath": "/sheet/bale",
|
||||
"name": "sheetBale",
|
||||
"style": {
|
||||
"navigationBarTitleText": "服务包"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/sheet/logistic",
|
||||
"aliasPath": "/sheet/logistic",
|
||||
"name": "sheetLogistic",
|
||||
"style": {
|
||||
"navigationBarTitleText": "物流信息"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/webview/webview",
|
||||
"aliasPath": "/webview/webview",
|
||||
"name": "webviewIndex",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
}, {
|
||||
"path": "pages/webview/webCode",
|
||||
"aliasPath": "/webview/webCode",
|
||||
"name": "webCodeIndex",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
}, {
|
||||
"path": "pages/webWechat/index",
|
||||
"aliasPath": "/webWechat/index",
|
||||
"name": "webWechatIndex",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
}, {
|
||||
"path": "pages/app/eSigna",
|
||||
"aliasPath": "/app/e-sign",
|
||||
"name": "appESign",
|
||||
"style": {
|
||||
"navigationBarTitleText": "结果",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/feeWrite",
|
||||
"aliasPath": "/synthesis/feeWrite",
|
||||
"name": "FeeWrite",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人法律咨询"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/feeConfirm",
|
||||
"aliasPath": "/synthesis/feeConfirm",
|
||||
"name": "FeeConfirm",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人法律咨询-咨询详单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/standBrief",
|
||||
"aliasPath": "/synthesis/standBrief",
|
||||
"name": "StandBrief",
|
||||
"style": {
|
||||
"navigationBarTitleText": "企业全年法律"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/standWrite",
|
||||
"aliasPath": "/synthesis/standWrite",
|
||||
"name": "StandWrite",
|
||||
"style": {
|
||||
"navigationBarTitleText": "企业全年法律-咨询"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/personBrief",
|
||||
"aliasPath": "/synthesis/personBrief",
|
||||
"name": "PersonBrief",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人法律咨询365服务包"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/personWrite",
|
||||
"aliasPath": "/synthesis/personWrite",
|
||||
"name": "PersonWrite",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人法律咨询365服务包"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/feePay",
|
||||
"aliasPath": "/synthesis/feePay",
|
||||
"name": "FeePay",
|
||||
"style": {
|
||||
"navigationBarTitleText": "订单支付"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/payPoint",
|
||||
"aliasPath": "/synthesis/payPoint",
|
||||
"name": "PayPoint",
|
||||
"style": {
|
||||
"navigationBarTitleText": "支付成功"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/entrustBrief",
|
||||
"aliasPath": "/synthesis/entrustBrief",
|
||||
"name": "EntrustBrief",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "案件委托"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/entrustWrite",
|
||||
"aliasPath": "/synthesis/entrustWrite",
|
||||
"name": "EntrustWrite",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "案件委托-咨询"
|
||||
}
|
||||
|
||||
}, {
|
||||
"path": "pages/synthesis/entrustCivil",
|
||||
"aliasPath": "/synthesis/entrustCivil",
|
||||
"name": "EntrustCivil",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "案件委托-咨询"
|
||||
}
|
||||
|
||||
}, {
|
||||
"path": "pages/synthesis/expandBrief",
|
||||
"aliasPath": "/synthesis/expandBrief",
|
||||
"name": "ExpandBrief",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "拓展服务"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/expandWrite",
|
||||
"aliasPath": "/synthesis/expandWrite",
|
||||
"name": "ExpandWrite",
|
||||
"auth": true,
|
||||
"style": {
|
||||
"navigationBarTitleText": "拓展服务-咨询"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/order",
|
||||
"aliasPath": "/synthesis/order",
|
||||
"name": "synthesisOrder",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法咨询单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/seekOrder",
|
||||
"aliasPath": "/synthesis/seekOrder",
|
||||
"name": "SeekOrder",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-咨询单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/yearOrder",
|
||||
"aliasPath": "/synthesis/yearOrder",
|
||||
"name": "YearOrder",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-年费单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/yearConfirm",
|
||||
"aliasPath": "/synthesis/yearConfirm",
|
||||
"name": "YearConfirm",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-咨询单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/entrustOrder",
|
||||
"aliasPath": "/synthesis/entrustOrder",
|
||||
"name": "EntrustOrder",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-委托单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/expandOrder",
|
||||
"aliasPath": "/synthesis/expandOrder",
|
||||
"name": "ExpandOrder",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-拓展单"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/voucherOpen",
|
||||
"aliasPath": "/synthesis/voucherOpen",
|
||||
"name": "VoucherOpen",
|
||||
"style": {
|
||||
"navigationBarTitleText": "综法-上传凭证"
|
||||
}
|
||||
}, {
|
||||
"path": "pages/synthesis/diffList",
|
||||
"aliasPath": "/synthesis/diffList",
|
||||
"name": "DiffList",
|
||||
"style": {
|
||||
"navigationBarTitleText": "补差列表"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarBackgroundColor": "#ffffff",
|
||||
"navigationBarTextStyle": "black",
|
||||
"backgroundColor": "#f3f4f6",
|
||||
"navigationStyle": "default"
|
||||
},
|
||||
"uniIdRouter": {},
|
||||
"tabBar": {
|
||||
"color": "#9b9f9f",
|
||||
"selectedColor": "#da2b56",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"borderStyle": "#ddd",
|
||||
"list": [{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "抖火法律",
|
||||
"iconPath": "static/tabBar/tabBar_icon_00.png",
|
||||
"selectedIconPath": "static/tabBar/tabBar_show_00.png"
|
||||
}, {
|
||||
"pagePath": "pages/user/index",
|
||||
"text": "个人中心",
|
||||
"iconPath": "static/tabBar/tabBar_icon_01.png",
|
||||
"selectedIconPath": "static/tabBar/tabBar_show_01.png"
|
||||
}]
|
||||
}
|
||||
}
|
||||
46
pages/404/404.vue
Normal file
46
pages/404/404.vue
Normal file
@@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<view class="content vertical">
|
||||
<image src="@/static/404/404.png" mode="widthFix"></image>
|
||||
<view class="text">出错了</view>
|
||||
<view class="text">你访问的页面以离开了地球~!</view>
|
||||
<button type="default" size="mini" @click="$Router.replaceAll({name: 'Index'})">返回首页</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content{
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
text-align: center;
|
||||
padding-bottom: 20vh;
|
||||
background: #2e065f;
|
||||
.text{
|
||||
color: #dbb6ec;
|
||||
line-height: 60rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
button{
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
width: 60vw;
|
||||
font-size: $title-size-lg;
|
||||
border-radius: 0;
|
||||
margin-top: $margin*2;
|
||||
background: white;
|
||||
color: #2e065f;
|
||||
&::after{
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
105
pages/app/eSigna.vue
Normal file
105
pages/app/eSigna.vue
Normal file
@@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="point">
|
||||
<image class="point-img" src="/static/imgs/signsSuccess.jpg" mode="widthFix"></image>
|
||||
<view class="point-text">
|
||||
<view class="point-name">
|
||||
{{title}}
|
||||
</view>
|
||||
<view class="point-tips">
|
||||
<text>{{content}}</text>
|
||||
</view>
|
||||
<!-- <view class="point-btn">
|
||||
<view class="btn" @click="onBack">
|
||||
返回
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
title: '未知',
|
||||
content: '-'
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
if(this.$Route.query.sign_type === 'personal') {
|
||||
this.title = "认证成功"
|
||||
this.content = "实名认证成功"
|
||||
}
|
||||
if(this.$Route.query.sign_type === 'order') {
|
||||
this.title = "签约成功"
|
||||
this.content = "恭喜您已完成签约"
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onBack(){
|
||||
this.$webUni.postMessage({
|
||||
data: {
|
||||
type: 'back',
|
||||
val : this.$Route.query.sign_type
|
||||
}
|
||||
})
|
||||
|
||||
// try{
|
||||
|
||||
// window.location = "doufire://"
|
||||
// if(uni.getSystemInfoSync().platform == 'android'){
|
||||
// let ifr = document.createElement('iframe');
|
||||
// ifr.src = "doufire://";
|
||||
// ifr.style.display = 'none';
|
||||
// document.body.appendChild(ifr);
|
||||
// }else{
|
||||
|
||||
// }
|
||||
// }catch(e){
|
||||
// uni.showToast({
|
||||
// title: e,
|
||||
// icon : 'none'
|
||||
// })
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.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-color: #446EFE;
|
||||
display: inline-block;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
padding: 0 $padding;
|
||||
line-height: 90rpx;
|
||||
width: 70%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
64
pages/filePreview.vue
Normal file
64
pages/filePreview.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="pack-center pages-hint grey" v-if="loading">
|
||||
<image src="/static/imgs/loadingGif.gif" ></image>
|
||||
<view>疯狂加载中...</view>
|
||||
</view>
|
||||
|
||||
<web-view :src="pdfUrl"></web-view>
|
||||
<!-- <web-view src="https://uniapp.dcloud.io/static/web-view.html"></web-view> -->
|
||||
<!-- <web-view src="/static/hybrid/web/viewer.html" :webview-styles="{height:'100%'}"></web-view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
viewerUrl : '/static/hybrid/web/viewer.html',
|
||||
pdfUrl : '',
|
||||
loading : true
|
||||
};
|
||||
},
|
||||
onLoad(params){
|
||||
let that = this
|
||||
setTimeout(function() {
|
||||
that.loading = false
|
||||
const urlStr = params.url; // 这里是获取的url值
|
||||
that.pdfUrl = `${that.viewerUrl}?file=${decodeURIComponent(urlStr)}`;
|
||||
}, 2000);
|
||||
},
|
||||
onBackPress(){}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
.pack-center {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.pages-hint {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
color: #747788;
|
||||
font-size: 28rpx;
|
||||
background: white;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.pages-hint image {
|
||||
width: 220rpx;
|
||||
height: 220rpx;
|
||||
}
|
||||
|
||||
</style>
|
||||
200
pages/index/collect.vue
Normal file
200
pages/index/collect.vue
Normal file
@@ -0,0 +1,200 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="list-tabs">
|
||||
<scroll-view class="list-classify" scroll-x="true" show-scrollbar="false" scroll-with-animation>
|
||||
<view v-for="(item, index) in articleArr" :key="index" class="list-tabs-item" :class="{show : categoryId == item.category_id}" @click="onTabs(item.category_id)">{{item.title}}</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<view class="list-item" v-if="listArr.length > 0">
|
||||
<view class="list-item-label" v-for="(item, index) in listArr" :key="index" @click="$Router.push({name: 'indexDetails', params: {id: item.favoriteable.article_id}})">
|
||||
<view class="list-item-img">
|
||||
<!-- 5:6 -->
|
||||
<image :src="item.favoriteable.cover" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="list-item-cont">
|
||||
<view class="nowrap list-item-name">
|
||||
{{item.favoriteable.title}}
|
||||
</view>
|
||||
<view class="list-item-see">
|
||||
<image class="list-item-icon" src="@/static/imgs/indexSee.png"></image>{{item.favoriteable.clicks}} 游览
|
||||
</view>
|
||||
<view class="list-item-tips" v-for="(items, itemsIndex) in item.favoriteable.categories" :key="itemsIndex">
|
||||
{{items.title}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无数据</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { myCollect } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
articleArr : '', // 分类
|
||||
categoryId : 1, // 分类id
|
||||
listArr : '', // 列表
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取我的收藏
|
||||
this.collectInfo();
|
||||
},
|
||||
methods: {
|
||||
// 获取我的收藏
|
||||
collectInfo(page) {
|
||||
myCollect({
|
||||
category_id: this.categoryId,
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let list = this.listArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(res.favorites.data)
|
||||
this.articleArr = res.categories
|
||||
this.listArr = newData
|
||||
this.page = res.favorites.page
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章分类筛选
|
||||
onTabs(e) {
|
||||
this.categoryId = e
|
||||
// 获取我的收藏
|
||||
this.collectInfo();
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 获取我的收藏
|
||||
this.collectInfo()
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 获取我的收藏
|
||||
this.collectInfo(pageNumber)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #f6f6f6;
|
||||
overflow-y: scroll;
|
||||
height: 100vh;
|
||||
// height: calc(100vh - 44px);
|
||||
}
|
||||
|
||||
.list-classify {
|
||||
background-color: #fff;
|
||||
white-space: nowrap;
|
||||
padding: 20rpx $padding;
|
||||
box-sizing: border-box;
|
||||
position: fixed;
|
||||
top: 44px;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
.list-tabs-item {
|
||||
display: inline-block;
|
||||
font-size: $title-size-m;
|
||||
color: #a5a5a5;
|
||||
margin-right: 40rpx;
|
||||
line-height: 54rpx;
|
||||
position: relative;
|
||||
background-color: #f6f6f6;
|
||||
color: #000;
|
||||
padding: 0 20rpx;
|
||||
border-radius: $radius * 3;
|
||||
&.show {
|
||||
background-color: $mian-color;
|
||||
color: #fff;
|
||||
}
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
::-webkit-scrollbar{
|
||||
width: 0;
|
||||
height: 0;
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
// 列表
|
||||
.list-item {
|
||||
margin-top: 110rpx;
|
||||
.list-item-label {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
position: relative;
|
||||
background-color: #ffffff;
|
||||
.list-item-img {
|
||||
width: 200rpx;
|
||||
height: 150rpx;
|
||||
border:1px solid #d2d2d2;
|
||||
border-radius: $radius - 10;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
vertical-align:middle;
|
||||
}
|
||||
}
|
||||
.list-item-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding: $padding $padding $padding 250rpx;
|
||||
box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
.list-item-name {
|
||||
color: $text-color;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.list-item-see {
|
||||
font-size: $title-size-sm - 4;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
line-height: 30rpx;
|
||||
.list-item-icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.list-item-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
color: #a1a1a1;
|
||||
padding-left: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
165
pages/index/details.vue
Normal file
165
pages/index/details.vue
Normal file
@@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="title">
|
||||
{{articleData.title}}
|
||||
</view>
|
||||
<view class="see">
|
||||
<view class="seeTips" v-for="(item, index) in articleData.categories" :key="index">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="seeTime">
|
||||
{{articleData.created_at}}
|
||||
</view>
|
||||
<view class="seeName">
|
||||
<image src="@/static/imgs/collect.png" mode="widthFix"></image><text>{{articleData.clicks}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="brief" v-if="articleData.sub_title">
|
||||
<image src="@/static/imgs/detailsImg.png" mode="widthFix"></image>{{articleData.sub_title}}
|
||||
</view>
|
||||
<view class="subject">
|
||||
<rich-text :nodes="articleContent"></rich-text>
|
||||
</view>
|
||||
<view class="collect">
|
||||
<view class="collect-btn" :class="{active : articleData.isFavorite}" @click="favoriteClick">
|
||||
<image :src="articleData.isFavorite ? '/static/imgs/collect_active.png' : '/static/imgs/collect.png'" mode="widthFix"></image>
|
||||
<text>{{articleData.isFavorite ? '已收藏' : '收藏'}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { articleBrief, collect } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
articleData : '', // 文章详情
|
||||
articleContent: '', // 文章内容
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取文章列详情
|
||||
this.articleInfo();
|
||||
},
|
||||
methods: {
|
||||
// 文章列详情
|
||||
articleInfo(page) {
|
||||
articleBrief(this.$Route.query.id).then(res => {
|
||||
this.articleData = 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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 收藏
|
||||
favoriteClick() {
|
||||
collect(this.$Route.query.id).then(res => {
|
||||
// 获取文章列详情
|
||||
this.articleInfo();
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: $title-size + 8;
|
||||
line-height: 58rpx;
|
||||
}
|
||||
|
||||
.see {
|
||||
margin: $margin 0 $margin + 10;
|
||||
display: flex;
|
||||
font-size: $title-size-sm - 2;
|
||||
line-height: 40rpx;
|
||||
position: relative;
|
||||
.seeTips {
|
||||
color: #686868;
|
||||
background-color: #ececec;
|
||||
padding: 0 10rpx;
|
||||
border-radius: $radius-sm - 4;
|
||||
margin-right: $margin;
|
||||
}
|
||||
.seeName {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin: 7rpx 10rpx 0 0;
|
||||
}
|
||||
}
|
||||
.seeTime {
|
||||
color: #cfcfcf;
|
||||
}
|
||||
}
|
||||
.brief {
|
||||
font-size: $title-size-sm;
|
||||
margin: $margin 0;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: $radius-sm - 4;
|
||||
padding: $padding $padding + 10;
|
||||
box-sizing: border-box;
|
||||
line-height: 42rpx;
|
||||
text-align: justify;
|
||||
display: flex;
|
||||
image {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
margin-right: 20rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
}
|
||||
.subject {
|
||||
font-size: $title-size-lg;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
.collect {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 30rpx;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.collect-btn {
|
||||
background-color: #f5f5f5;
|
||||
border-radius: $radius * 3;
|
||||
height: 80rpx;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
padding: 0 $padding + 10;
|
||||
line-height: 80rpx;
|
||||
font-size: $title-size-m;
|
||||
color: #000000;
|
||||
&.active {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
}
|
||||
image {
|
||||
width: 36rpx;
|
||||
height: 36rpx;
|
||||
margin: 0 10rpx 0 0;
|
||||
vertical-align: -6rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
62
pages/index/general.vue
Normal file
62
pages/index/general.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<image class="code-img" src="@/static/imgs/code_back.jpg" mode="widthFix"></image>
|
||||
<view class="code-btn">
|
||||
<image class="code-btn-go" src="/static/imgs/code_btn.png" mode="widthFix" @click="$Router.push({name: 'Index'})"></image>
|
||||
</view>
|
||||
<image class="code-back" src="../../static/imgs/code_bottom.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { wechatCode } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
// 获取微信code
|
||||
wechatCode({
|
||||
code: this.$Route.query.code
|
||||
}).then(res => {}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #1f25ae;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.code-img {
|
||||
width: 100%;
|
||||
}
|
||||
.code-back {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.code-btn {
|
||||
position: relative;
|
||||
bottom: 20%;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
.code-btn-go {
|
||||
width: 50%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
890
pages/index/index-老版.vue
Normal file
890
pages/index/index-老版.vue
Normal file
@@ -0,0 +1,890 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- top -->
|
||||
<view class="top">
|
||||
<view class="topBack"></view>
|
||||
<view class="topCont">
|
||||
<!-- logo -->
|
||||
<view class="topCont-logo">
|
||||
<image class="topCont-logo-img" src="@/static/imgs/logo_title.png" mode="widthFix"></image>
|
||||
<view class="topCont-logo-go" @click="seekClick">
|
||||
立即咨询
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 专业优质在线法律平台 -->
|
||||
<view class="topCont-text">
|
||||
<view class="topCont-text-name">
|
||||
专业优质在线法律平台
|
||||
</view>
|
||||
<view class="topCont-text-tips">
|
||||
<text v-if="homeData.attorney">
|
||||
{{homeData.attorney.value}}+{{homeData.attorney.name}}
|
||||
</text>
|
||||
<block v-if="homeData.use_count">{{homeData.use_count.value}}+{{homeData.use_count.name}}</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 平台公告 -->
|
||||
<view class="topCont-notice">
|
||||
<view class="topCont-notice-name"><image src="@/static/imgs/noticeArrow.png" mode="widthFix"></image>平台公告</view>
|
||||
<view class="topCont-notice-cont">
|
||||
<view class="topCont-notice-title">今日</view>
|
||||
<swiper class="topCont-notice-swiper" circular :autoplay="autoplay" :interval="interval"
|
||||
:duration="duration" vertical="y">
|
||||
<block v-for="(item, index) in noticesArr" :key="index">
|
||||
<swiper-item>
|
||||
<view class="topCont-swiper-item">
|
||||
<view class="topCont-swiper-name nowrap" v-if="item.user">
|
||||
{{item.user.name}} {{item.user.text}}
|
||||
</view>
|
||||
<view class="topCont-swiper-name nowrap" v-else>
|
||||
今日暂无信息
|
||||
</view>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</block>
|
||||
</swiper>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 按钮链接 -->
|
||||
<view class="topCont-tool">
|
||||
<view class="topCont-tool-left">
|
||||
<view class="topCont-tool-cont" @click="seekClick('other', 1)">
|
||||
<!-- @click="$Router.push({name: 'sheetLoan', params: {type: 1}}) -->
|
||||
<view class="topCont-whole-name">
|
||||
经济纠纷
|
||||
</view>
|
||||
<view class="topCont-whole-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-whole-img" src="@/static/imgs/toolImg_00.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="topCont-tool-right">
|
||||
<view class="topCont-tool-label" @click="seekClick('other', 2)">
|
||||
<view class="topCont-tool-cont">
|
||||
<view class="topCont-tool-name">
|
||||
刑事辩护
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_03.png" alt=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="topCont-tool-label" @click="seekClick('other', 3)">
|
||||
<view class="topCont-tool-cont">
|
||||
<view class="topCont-tool-name">
|
||||
合同纠纷
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_02.png" alt=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 数据展示 -->
|
||||
<view class="topCont-data">
|
||||
<view class="topCont-data-label" v-if="homeData.consult">
|
||||
{{homeData.consult.name}}<text>{{homeData.consult.value}}</text>人
|
||||
</view>
|
||||
<view class="topCont-data-label" v-if="homeData.sucess_count">
|
||||
{{homeData.sucess_count.name}}<text>{{homeData.sucess_count.value}}</text>单
|
||||
</view>
|
||||
<view class="topCont-data-label" v-if="homeData.success_rate">
|
||||
{{homeData.success_rate.name}}<text>{{homeData.success_rate.value}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 工具 -->
|
||||
<!-- <view class="tool">
|
||||
<scroll-view class="tool-lable" scroll-x="true" show-scrollbar="false">
|
||||
<view class="tool-lable-item" v-for="(item, index) in lawyersWork" :key="index" @click="$Router.push({name: 'indexSort', params: {id: item.lawyer_business_id}})">
|
||||
<image :src="item.cover" class="tool-lable-img"></image>
|
||||
<view class="tool-lable-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view> -->
|
||||
|
||||
<!-- 金牌律师 -->
|
||||
<view class="list">
|
||||
<view class="list-title">
|
||||
金牌律师
|
||||
</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}})">
|
||||
<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>
|
||||
</view>
|
||||
|
||||
<!-- 法律常识 -->
|
||||
<view class="list">
|
||||
<view class="list-title">
|
||||
法律常识
|
||||
</view>
|
||||
<view class="list-tabs">
|
||||
<scroll-view class="list-classify" scroll-x="true" show-scrollbar="false">
|
||||
<view v-for="(item, index) in articleArr" :key="index" class="list-tabs-item" :class="{show : categoryId == item.category_id}" @click="onTabs(item.category_id)">{{item.title}}</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="list-item">
|
||||
<view class="list-item-label" v-for="(item, index) in listArr" :key="index" @click="$Router.push({name: 'indexDetails', params: {id: item.article_id}})">
|
||||
<view class="list-item-img">
|
||||
<!-- 5:6 -->
|
||||
<image :src="item.cover" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="list-item-cont">
|
||||
<view class="nowrap list-item-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="list-item-see">
|
||||
<image class="list-item-icon" src="@/static/imgs/indexSee.png" mode="widthFix"></image>{{item .clicks}} 游览
|
||||
</view>
|
||||
<view class="list-item-tips" v-for="(items, itemsIndex) in item.categories" :key="itemsIndex">
|
||||
{{items.title}}
|
||||
</view>
|
||||
</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="@/static/imgs/seek_back.jpg" 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="haveBack" v-if="haveimg"></view>
|
||||
<view class="haveCont" v-if="haveimg">
|
||||
<image class="haveCont-img" :src="layadImg" mode="widthFix"></image>
|
||||
<image class="haveCont-close" src="@/static/imgs/close.png" mode="widthFix" @click="haveHIde"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { home, articleSort, articleList } from '@/apis/interfaces/index'
|
||||
import { userIndex } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
autoplay : true,
|
||||
interval : 3000,
|
||||
duration : 500,
|
||||
homeData : {}, // 首页数据
|
||||
homeList : '', // 首页分类
|
||||
lawyersArr : [], // 精选律师
|
||||
noticesArr : [], // 公告列表
|
||||
articleArr : [], // 文章分类
|
||||
categoryId : 1, // 文章分类id
|
||||
listArr : [], // 文章列表
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
generalShow : false, // 是否有上级弹出
|
||||
parentData : '',
|
||||
|
||||
first : 1,
|
||||
layadState : '',
|
||||
layadImg : '',
|
||||
haveimg : ''
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取首页数据
|
||||
this.homeInfo();
|
||||
|
||||
// 获取文章分类
|
||||
this.articleInfo();
|
||||
|
||||
// 获取文章列表
|
||||
this.articleItem();
|
||||
|
||||
if(this.$store.getters.getToken) {
|
||||
userIndex().then(res => {
|
||||
this.parentData = res.parent
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 首页数据
|
||||
homeInfo() {
|
||||
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
|
||||
// 定时器
|
||||
let timer = setInterval(() => {
|
||||
clearInterval(timer)
|
||||
this.haveimg = false
|
||||
},times);
|
||||
|
||||
}
|
||||
this.homeList = res.categories
|
||||
this.lawyersArr = res.lawyers
|
||||
this.noticesArr = res.notices
|
||||
let newObj = {}
|
||||
res.configs.map(item => newObj[item.slug] = {name: item.name, value: item.value})
|
||||
this.homeData = newObj
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章分类
|
||||
articleInfo() {
|
||||
articleSort().then(res => {
|
||||
this.articleArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章分类筛选
|
||||
onTabs(e) {
|
||||
this.categoryId = e
|
||||
// 获取文章列表
|
||||
this.articleItem();
|
||||
},
|
||||
|
||||
// 文章列表
|
||||
articleItem(page) {
|
||||
articleList({
|
||||
category_id: this.categoryId,
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let list = this.listArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(res.data)
|
||||
this.listArr = newData
|
||||
this.page = res.page
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 立即咨询判断
|
||||
seekClick(e, type) {
|
||||
if(this.$store.getters.getToken) {
|
||||
if(this.parentData) {
|
||||
if(e != 'other') {
|
||||
// 跳到立即咨询
|
||||
this.$Router.push({name: 'indexIntroduce'})
|
||||
} else {
|
||||
// 跳到其他立即咨询
|
||||
this.$Router.push({name: 'sheetLoan', params: {type: type}})
|
||||
}
|
||||
return
|
||||
}
|
||||
// 业务员弹出
|
||||
this.generalShow = true
|
||||
return
|
||||
}
|
||||
|
||||
// 去登录
|
||||
this.$Router.push({name: 'Login'})
|
||||
},
|
||||
|
||||
// 状态
|
||||
judgeGeneral(){
|
||||
// 跳到业务员搜索
|
||||
this.$Router.push({name: 'indexWork'})
|
||||
|
||||
// 关闭业务员弹出
|
||||
this.generalShow = false
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 获取文章列表
|
||||
this.articleItem()
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 获取文章列表
|
||||
this.articleItem(pageNumber)
|
||||
}
|
||||
},
|
||||
|
||||
// 关闭弹出
|
||||
haveHIde() {
|
||||
this.first = 0
|
||||
this.haveimg = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
body {
|
||||
background-color: #f2f6f8;
|
||||
}
|
||||
.top {
|
||||
position: relative;
|
||||
.topBack {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
padding-top: 37%;
|
||||
background-image: linear-gradient(to right, #d51a59, #ed7646);
|
||||
border-radius: 0 0 $radius*4 $radius*4;
|
||||
}
|
||||
.topCont {
|
||||
width: 100%;
|
||||
position: inherit;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.topCont-logo {
|
||||
display: flex;
|
||||
line-height: 58rpx;
|
||||
.topCont-logo-img {
|
||||
margin-right: 15rpx;
|
||||
width: 190rpx;
|
||||
}
|
||||
.topCont-logo-name {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.topCont-logo-go {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius*5;
|
||||
text-align: center;
|
||||
color: $mian-color;
|
||||
font-size: $title-size;
|
||||
line-height: 72rpx;
|
||||
font-weight: 600;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
right: $margin;
|
||||
top: $margin + 10;
|
||||
padding: 0 $padding + 10;
|
||||
}
|
||||
}
|
||||
.topCont-text {
|
||||
margin-top: $margin;
|
||||
color: #ffffff;
|
||||
.topCont-text-name {
|
||||
font-size: $title-size + 6;
|
||||
font-weight: 600;
|
||||
}
|
||||
.topCont-text-tips {
|
||||
font-size: $title-size-sm;
|
||||
margin: $margin - 10 0 $margin;
|
||||
text {
|
||||
padding-right: $padding * 2;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-notice {
|
||||
width: 100%;
|
||||
height: 74rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius - 5;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
.topCont-notice-name {
|
||||
color: $mian-color;
|
||||
font-size: $title-size-lg;
|
||||
font-weight: 600;
|
||||
width: 190rpx;
|
||||
line-height: 74rpx;
|
||||
display: flex;
|
||||
image {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
margin-top: 19rpx;
|
||||
margin-right: 10rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
.topCont-notice-cont {
|
||||
height: 74rpx;
|
||||
width: calc(100% - 190rpx);
|
||||
display: flex;
|
||||
.topCont-notice-title {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
height: 34rpx;
|
||||
line-height: 32rpx;
|
||||
margin-top: 20rpx;
|
||||
width: 60rpx;
|
||||
text-align: center;
|
||||
border-radius: $radius - 10;
|
||||
margin-right: $margin - 10;
|
||||
}
|
||||
.topCont-notice-swiper {
|
||||
height: 74rpx;
|
||||
width: calc(100% - 60rpx);
|
||||
.topCont-swiper-item {
|
||||
display: flex;
|
||||
font-size: $title-size-sm - 2;
|
||||
line-height: 74rpx;
|
||||
.topCont-swiper-name {
|
||||
color: $text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-tool {
|
||||
display: flex;
|
||||
.topCont-tool-left {
|
||||
width: calc(50% - 20rpx);
|
||||
position: relative;
|
||||
background-color: #554ca7;
|
||||
background-image: linear-gradient(to bottom right, #544df1, #8283ff);
|
||||
padding-top: calc(50% - 20rpx);
|
||||
margin-right: $margin - 10;
|
||||
border-radius: $radius;
|
||||
overflow: hidden;
|
||||
.topCont-whole-name {
|
||||
margin: 15rpx 0;
|
||||
font-size: $title-size + 6;
|
||||
}
|
||||
.topCont-whole-tips {
|
||||
line-height: 35rpx;
|
||||
font-size: $title-size-sm - 2;
|
||||
opacity: .9;
|
||||
}
|
||||
.topCont-whole-img {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.topCont-tool-right {
|
||||
width: 50%;
|
||||
}
|
||||
.topCont-tool-label {
|
||||
position: relative;
|
||||
padding-top: calc(50% - 20rpx);
|
||||
border-radius: $radius;
|
||||
overflow: hidden;
|
||||
&:nth-child(1) {
|
||||
margin-bottom: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #f46049, #fe8479);
|
||||
}
|
||||
&:nth-child(2) {
|
||||
margin-top: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #32c4c2, #50ecc7);
|
||||
}
|
||||
}
|
||||
.topCont-tool-cont {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
overflow: hidden;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
.topCont-tool-name {
|
||||
margin-bottom: $margin - 15;
|
||||
}
|
||||
.topCont-tool-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
opacity: .7;
|
||||
}
|
||||
.topCont-tool-img {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
position: absolute;
|
||||
right: 25rpx;
|
||||
top: calc(50% - 40rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-data {
|
||||
background-color: #f6f6f8;
|
||||
line-height: 70rpx;
|
||||
display: flex;
|
||||
margin-top: 30rpx;
|
||||
border-radius: $radius - 10;
|
||||
font-size: $title-size-sm - 2;
|
||||
.topCont-data-label {
|
||||
flex: 3;
|
||||
text-align: center;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding: 0 5rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 法律常识
|
||||
.list {
|
||||
padding:0 $padding;
|
||||
box-sizing: border-box;
|
||||
.list-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 10rpx;
|
||||
color: $text-color;
|
||||
}
|
||||
.lawyer {
|
||||
overflow: hidden;
|
||||
margin: 20rpx -15rpx 0;
|
||||
.lawyer-item {
|
||||
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-tabs {
|
||||
background-color: #f0f0f0;
|
||||
border-radius: $radius-m;
|
||||
padding: 5rpx $padding 15rpx;
|
||||
box-sizing: border-box;
|
||||
margin-top: $margin - 10;
|
||||
}
|
||||
|
||||
.list-classify {
|
||||
white-space: nowrap;
|
||||
.list-tabs-item {
|
||||
display: inline-block;
|
||||
font-size: $title-size-m;
|
||||
color: $text-color;
|
||||
padding-right: 50rpx;
|
||||
line-height: 54rpx;
|
||||
position: relative;
|
||||
border-bottom: 6rpx solid #e5e5e5;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
bottom: -6rpx;
|
||||
background-color: transparent;
|
||||
border-radius: $radius*3;
|
||||
width: calc(100% - 50rpx);
|
||||
height: 6rpx;
|
||||
z-index: 9;
|
||||
}
|
||||
&:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
&.show {
|
||||
color: #000000;
|
||||
}
|
||||
&.show::after {
|
||||
background-color: $mian-color;
|
||||
}
|
||||
}
|
||||
::-webkit-scrollbar{
|
||||
width: 0;
|
||||
height: 0;
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
.list-item {
|
||||
margin-top: $margin;
|
||||
.list-item-label {
|
||||
margin-bottom: $margin;
|
||||
position: relative;
|
||||
.list-item-img {
|
||||
width: 200rpx;
|
||||
height: 150rpx;
|
||||
display:table-cell;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
border:1px solid #d2d2d2;
|
||||
border-radius: $radius - 10;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
vertical-align:middle;
|
||||
}
|
||||
}
|
||||
.list-item-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding-left: 220rpx;
|
||||
box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
.list-item-name {
|
||||
color: $text-color;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.list-item-see {
|
||||
font-size: $title-size-sm - 4;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
line-height: 30rpx;
|
||||
.list-item-icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.list-item-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
color: #a1a1a1;
|
||||
padding-left: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 是否有上级
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 图片弹出
|
||||
.haveBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .7);
|
||||
}
|
||||
.haveCont {
|
||||
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;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.haveCont-img {
|
||||
width: 75%;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.haveCont-close {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
margin-top: 10px;
|
||||
opacity: .8;
|
||||
}
|
||||
</style>
|
||||
891
pages/index/index.vue
Normal file
891
pages/index/index.vue
Normal file
@@ -0,0 +1,891 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- top -->
|
||||
<view class="top">
|
||||
<view class="topBack"></view>
|
||||
<view class="topCont">
|
||||
<!-- logo -->
|
||||
<view class="topCont-logo">
|
||||
<image class="topCont-logo-img" src="@/static/imgs/logo_title.png" mode="widthFix"></image>
|
||||
<view class="topCont-logo-go" @click="seekClick">
|
||||
立即咨询
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 专业优质在线法律平台 -->
|
||||
<view class="topCont-text">
|
||||
<view class="topCont-text-name">
|
||||
专业优质在线法律平台
|
||||
</view>
|
||||
<view class="topCont-text-tips">
|
||||
<text v-if="homeData.attorney">
|
||||
{{homeData.attorney.value}}+{{homeData.attorney.name}}
|
||||
</text>
|
||||
<block v-if="homeData.use_count">{{homeData.use_count.value}}+{{homeData.use_count.name}}</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 平台公告 -->
|
||||
<view class="topCont-notice">
|
||||
<view class="topCont-notice-name"><image src="@/static/imgs/noticeArrow.png" mode="widthFix"></image>平台公告</view>
|
||||
<view class="topCont-notice-cont">
|
||||
<view class="topCont-notice-title">今日</view>
|
||||
<swiper class="topCont-notice-swiper" circular :autoplay="autoplay" :interval="interval"
|
||||
:duration="duration" vertical="y">
|
||||
<block v-for="(item, index) in noticesArr" :key="index">
|
||||
<swiper-item>
|
||||
<view class="topCont-swiper-item">
|
||||
<view class="topCont-swiper-name nowrap" v-if="item.user">
|
||||
{{item.user.name}} {{item.user.text}}
|
||||
</view>
|
||||
<view class="topCont-swiper-name nowrap" v-else>
|
||||
今日暂无信息
|
||||
</view>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</block>
|
||||
</swiper>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 按钮链接 -->
|
||||
<view class="topCont-tool">
|
||||
<view class="topCont-tool-left topCont-tool-right">
|
||||
<view class="topCont-tool-label blueBlock" @click="$Router.push({name: 'PersonBrief', params: {type: 1}})">
|
||||
<view class="topCont-tool-cont">
|
||||
<!-- @click="$Router.push({name: 'indexEntrust'}) -->
|
||||
<view class="topCont-tool-name">
|
||||
个人全年法律
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_01.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="topCont-tool-label redBlock" @click="$Router.push({name: 'EntrustBrief'})">
|
||||
<view class="topCont-tool-cont">
|
||||
<view class="topCont-tool-name">
|
||||
案件委托
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_03.png" alt=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="topCont-tool-right">
|
||||
<view class="topCont-tool-label purpleBlock" @click="$Router.push({name: 'StandBrief', params: {type: 2}})">
|
||||
<view class="topCont-tool-cont">
|
||||
<view class="topCont-tool-name">
|
||||
企业全年法律
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_04.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="topCont-tool-label greenBlock" @click="$Router.push({name: 'ExpandBrief'})">
|
||||
<view class="topCont-tool-cont">
|
||||
<view class="topCont-tool-name">
|
||||
拓展服务
|
||||
</view>
|
||||
<view class="topCont-tool-tips">
|
||||
咨询服务 抖火法律
|
||||
</view>
|
||||
<image class="topCont-tool-img" src="@/static/imgs/toolImg_02.png" alt=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 数据展示 -->
|
||||
<view class="topCont-data">
|
||||
<view class="topCont-data-label" v-if="homeData.consult">
|
||||
{{homeData.consult.name}}<text>{{homeData.consult.value}}</text>人
|
||||
</view>
|
||||
<view class="topCont-data-label" v-if="homeData.sucess_count">
|
||||
{{homeData.sucess_count.name}}<text>{{homeData.sucess_count.value}}</text>单
|
||||
</view>
|
||||
<view class="topCont-data-label" v-if="homeData.success_rate">
|
||||
{{homeData.success_rate.name}}<text>{{homeData.success_rate.value}}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 工具 -->
|
||||
<!-- <view class="tool">
|
||||
<scroll-view class="tool-lable" scroll-x="true" show-scrollbar="false">
|
||||
<view class="tool-lable-item" v-for="(item, index) in lawyersWork" :key="index" @click="$Router.push({name: 'indexSort', params: {id: item.lawyer_business_id}})">
|
||||
<image :src="item.cover" class="tool-lable-img"></image>
|
||||
<view class="tool-lable-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view> -->
|
||||
|
||||
<!-- 金牌律师 -->
|
||||
<view class="list">
|
||||
<view class="list-title">
|
||||
金牌律师
|
||||
</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}})">
|
||||
<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>
|
||||
</view>
|
||||
|
||||
<!-- 法律常识 -->
|
||||
<view class="list">
|
||||
<view class="list-title">
|
||||
法律常识
|
||||
</view>
|
||||
<view class="list-tabs">
|
||||
<scroll-view class="list-classify" scroll-x="true" show-scrollbar="false">
|
||||
<view v-for="(item, index) in articleArr" :key="index" class="list-tabs-item" :class="{show : categoryId == item.category_id}" @click="onTabs(item.category_id)">{{item.title}}</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="list-item">
|
||||
<view class="list-item-label" v-for="(item, index) in listArr" :key="index" @click="$Router.push({name: 'indexDetails', params: {id: item.article_id}})">
|
||||
<view class="list-item-img">
|
||||
<!-- 5:6 -->
|
||||
<image :src="item.cover" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="list-item-cont">
|
||||
<view class="nowrap list-item-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="list-item-see">
|
||||
<image class="list-item-icon" src="@/static/imgs/indexSee.png" mode="widthFix"></image>{{item .clicks}} 游览
|
||||
</view>
|
||||
<view class="list-item-tips" v-for="(items, itemsIndex) in item.categories" :key="itemsIndex">
|
||||
{{items.title}}
|
||||
</view>
|
||||
</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="@/static/imgs/seek_back.jpg" 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="haveBack" v-if="haveimg"></view>
|
||||
<view class="haveCont" v-if="haveimg">
|
||||
<image class="haveCont-img" :src="layadImg" mode="widthFix"></image>
|
||||
<image class="haveCont-close" src="@/static/imgs/close.png" mode="widthFix" @click="haveHIde"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { home, articleSort, articleList } from '@/apis/interfaces/index'
|
||||
import { userIndex } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
autoplay : true,
|
||||
interval : 3000,
|
||||
duration : 500,
|
||||
homeData : {}, // 首页数据
|
||||
homeList : '', // 首页分类
|
||||
lawyersArr : [], // 精选律师
|
||||
noticesArr : [], // 公告列表
|
||||
articleArr : [], // 文章分类
|
||||
categoryId : 1, // 文章分类id
|
||||
listArr : [], // 文章列表
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
generalShow : false, // 是否有上级弹出
|
||||
parentData : '',
|
||||
|
||||
first : 1,
|
||||
layadState : '',
|
||||
layadImg : '',
|
||||
haveimg : ''
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取首页数据
|
||||
this.homeInfo();
|
||||
|
||||
// 获取文章分类
|
||||
this.articleInfo();
|
||||
|
||||
// 获取文章列表
|
||||
this.articleItem();
|
||||
|
||||
if(this.$store.getters.getToken) {
|
||||
userIndex().then(res => {
|
||||
this.parentData = res.parent
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 首页数据
|
||||
homeInfo() {
|
||||
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
|
||||
// 定时器
|
||||
let timer = setInterval(() => {
|
||||
clearInterval(timer)
|
||||
this.haveimg = false
|
||||
},times);
|
||||
|
||||
}
|
||||
this.homeList = res.categories
|
||||
this.lawyersArr = res.lawyers
|
||||
this.noticesArr = res.notices
|
||||
let newObj = {}
|
||||
res.configs.map(item => newObj[item.slug] = {name: item.name, value: item.value})
|
||||
this.homeData = newObj
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章分类
|
||||
articleInfo() {
|
||||
articleSort().then(res => {
|
||||
this.articleArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章分类筛选
|
||||
onTabs(e) {
|
||||
this.categoryId = e
|
||||
// 获取文章列表
|
||||
this.articleItem();
|
||||
},
|
||||
|
||||
// 文章列表
|
||||
articleItem(page) {
|
||||
articleList({
|
||||
category_id: this.categoryId,
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let list = this.listArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(res.data)
|
||||
this.listArr = newData
|
||||
this.page = res.page
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 立即咨询判断
|
||||
seekClick(e, type) {
|
||||
if(this.$store.getters.getToken) {
|
||||
if(this.parentData) {
|
||||
if(e != 'other') {
|
||||
// 跳到立即咨询
|
||||
this.$Router.push({name: 'indexIntroduce'})
|
||||
} else {
|
||||
// 跳到其他立即咨询
|
||||
this.$Router.push({name: 'sheetLoan', params: {type: type}})
|
||||
}
|
||||
return
|
||||
}
|
||||
// 业务员弹出
|
||||
this.generalShow = true
|
||||
return
|
||||
}
|
||||
|
||||
// 去登录
|
||||
this.$Router.push({name: 'Login'})
|
||||
},
|
||||
|
||||
// 状态
|
||||
judgeGeneral(){
|
||||
// 跳到业务员搜索
|
||||
this.$Router.push({name: 'indexWork'})
|
||||
|
||||
// 关闭业务员弹出
|
||||
this.generalShow = false
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 获取文章列表
|
||||
this.articleItem()
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 获取文章列表
|
||||
this.articleItem(pageNumber)
|
||||
}
|
||||
},
|
||||
|
||||
// 关闭弹出
|
||||
haveHIde() {
|
||||
this.first = 0
|
||||
this.haveimg = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
body {
|
||||
background-color: #f2f6f8;
|
||||
}
|
||||
.top {
|
||||
position: relative;
|
||||
.topBack {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
padding-top: 37%;
|
||||
background-image: linear-gradient(to right, #d51a59, #ed7646);
|
||||
border-radius: 0 0 $radius*4 $radius*4;
|
||||
}
|
||||
.topCont {
|
||||
width: 100%;
|
||||
position: inherit;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.topCont-logo {
|
||||
display: flex;
|
||||
line-height: 58rpx;
|
||||
.topCont-logo-img {
|
||||
margin-right: 15rpx;
|
||||
width: 190rpx;
|
||||
}
|
||||
.topCont-logo-name {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.topCont-logo-go {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius*5;
|
||||
text-align: center;
|
||||
color: $mian-color;
|
||||
font-size: $title-size;
|
||||
line-height: 72rpx;
|
||||
font-weight: 600;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
right: $margin;
|
||||
top: $margin + 10;
|
||||
padding: 0 $padding + 10;
|
||||
}
|
||||
}
|
||||
.topCont-text {
|
||||
margin-top: $margin;
|
||||
color: #ffffff;
|
||||
.topCont-text-name {
|
||||
font-size: $title-size + 6;
|
||||
font-weight: 600;
|
||||
}
|
||||
.topCont-text-tips {
|
||||
font-size: $title-size-sm;
|
||||
margin: $margin - 10 0 $margin;
|
||||
text {
|
||||
padding-right: $padding * 2;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-notice {
|
||||
width: 100%;
|
||||
height: 74rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius - 5;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
.topCont-notice-name {
|
||||
color: $mian-color;
|
||||
font-size: $title-size-lg;
|
||||
font-weight: 600;
|
||||
width: 190rpx;
|
||||
line-height: 74rpx;
|
||||
display: flex;
|
||||
image {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
margin-top: 19rpx;
|
||||
margin-right: 10rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
.topCont-notice-cont {
|
||||
height: 74rpx;
|
||||
width: calc(100% - 190rpx);
|
||||
display: flex;
|
||||
.topCont-notice-title {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
height: 34rpx;
|
||||
line-height: 32rpx;
|
||||
margin-top: 20rpx;
|
||||
width: 60rpx;
|
||||
text-align: center;
|
||||
border-radius: $radius - 10;
|
||||
margin-right: $margin - 10;
|
||||
}
|
||||
.topCont-notice-swiper {
|
||||
height: 74rpx;
|
||||
width: calc(100% - 60rpx);
|
||||
.topCont-swiper-item {
|
||||
display: flex;
|
||||
font-size: $title-size-sm - 2;
|
||||
line-height: 74rpx;
|
||||
.topCont-swiper-name {
|
||||
color: $text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-tool {
|
||||
display: flex;
|
||||
.topCont-tool-left {
|
||||
width: calc(50% - 20rpx);
|
||||
margin-right: $margin - 10;
|
||||
overflow: hidden;
|
||||
}
|
||||
.topCont-tool-right {
|
||||
width: 50%;
|
||||
}
|
||||
.topCont-tool-label {
|
||||
position: relative;
|
||||
padding-top: calc(50% - 20rpx);
|
||||
border-radius: $radius;
|
||||
overflow: hidden;
|
||||
&.blueBlock {
|
||||
margin-bottom: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #097df5, #71b9ff);
|
||||
}
|
||||
&.redBlock {
|
||||
margin-top: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #f46049, #fe8479);
|
||||
}
|
||||
&.purpleBlock {
|
||||
margin-bottom: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #9c78fe, #a892ff);
|
||||
}
|
||||
&.greenBlock {
|
||||
margin-top: 20rpx;
|
||||
background-image: linear-gradient(to bottom right, #32c4c2, #50ecc7);
|
||||
}
|
||||
}
|
||||
.topCont-tool-cont {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
overflow: hidden;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
.topCont-tool-name {
|
||||
margin-bottom: $margin - 15;
|
||||
}
|
||||
.topCont-tool-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
opacity: .7;
|
||||
}
|
||||
.topCont-tool-img {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
position: absolute;
|
||||
right: 25rpx;
|
||||
top: calc(50% - 40rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
.topCont-data {
|
||||
background-color: #f6f6f8;
|
||||
line-height: 70rpx;
|
||||
display: flex;
|
||||
margin-top: 30rpx;
|
||||
border-radius: $radius - 10;
|
||||
font-size: $title-size-sm - 2;
|
||||
.topCont-data-label {
|
||||
flex: 3;
|
||||
text-align: center;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding: 0 5rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 法律常识
|
||||
.list {
|
||||
padding:0 $padding;
|
||||
box-sizing: border-box;
|
||||
.list-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 10rpx;
|
||||
color: $text-color;
|
||||
}
|
||||
.lawyer {
|
||||
overflow: hidden;
|
||||
margin: 20rpx -15rpx 0;
|
||||
.lawyer-item {
|
||||
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-tabs {
|
||||
background-color: #f0f0f0;
|
||||
border-radius: $radius-m;
|
||||
padding: 5rpx $padding 15rpx;
|
||||
box-sizing: border-box;
|
||||
margin-top: $margin - 10;
|
||||
}
|
||||
|
||||
.list-classify {
|
||||
white-space: nowrap;
|
||||
.list-tabs-item {
|
||||
display: inline-block;
|
||||
font-size: $title-size-m;
|
||||
color: $text-color;
|
||||
padding-right: 50rpx;
|
||||
line-height: 54rpx;
|
||||
position: relative;
|
||||
border-bottom: 6rpx solid #e5e5e5;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
bottom: -6rpx;
|
||||
background-color: transparent;
|
||||
border-radius: $radius*3;
|
||||
width: calc(100% - 50rpx);
|
||||
height: 6rpx;
|
||||
z-index: 9;
|
||||
}
|
||||
&:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
&.show {
|
||||
color: #000000;
|
||||
}
|
||||
&.show::after {
|
||||
background-color: $mian-color;
|
||||
}
|
||||
}
|
||||
::-webkit-scrollbar{
|
||||
width: 0;
|
||||
height: 0;
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
.list-item {
|
||||
margin-top: $margin;
|
||||
.list-item-label {
|
||||
margin-bottom: $margin;
|
||||
position: relative;
|
||||
.list-item-img {
|
||||
width: 200rpx;
|
||||
height: 150rpx;
|
||||
display:table-cell;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
border:1px solid #d2d2d2;
|
||||
border-radius: $radius - 10;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
vertical-align:middle;
|
||||
}
|
||||
}
|
||||
.list-item-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding-left: 220rpx;
|
||||
box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
.list-item-name {
|
||||
color: $text-color;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.list-item-see {
|
||||
font-size: $title-size-sm - 4;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
line-height: 30rpx;
|
||||
.list-item-icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.list-item-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
color: #a1a1a1;
|
||||
padding-left: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 是否有上级
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 图片弹出
|
||||
.haveBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .7);
|
||||
}
|
||||
.haveCont {
|
||||
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;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.haveCont-img {
|
||||
width: 75%;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.haveCont-close {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
margin-top: 10px;
|
||||
opacity: .8;
|
||||
}
|
||||
</style>
|
||||
233
pages/index/introduce.vue
Normal file
233
pages/index/introduce.vue
Normal file
@@ -0,0 +1,233 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<image @click="sheetClick" class="introduce-img" src="https://cdn.douhuofalv.com/images/2023/01/06/0754c34caabe9c5d316ced9f9b710335.jpg" mode="widthFix"></image>
|
||||
<!-- <img class="introduce-img" src="@/static/cs/1200.png">
|
||||
<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="@/static/imgs/general_back.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: '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>
|
||||
// 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>
|
||||
320
pages/index/lawyerDet.vue
Normal file
320
pages/index/lawyerDet.vue
Normal file
@@ -0,0 +1,320 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="lawyerBack">
|
||||
<image src="/static/imgs/lawyerBack.png" mode="widthFix"></image>
|
||||
</view>
|
||||
|
||||
<view class="lawyerCont">
|
||||
<view class="white">
|
||||
<view class="basics-top">
|
||||
<!-- 4:3 -->
|
||||
<image class="basics-head" :src="lawyersData.photo" mode="aspectFill"></image>
|
||||
<view class="basics-top-info">
|
||||
<view class="basics-top-name">{{lawyersData.name}}</view>
|
||||
<view class="basics-top-lingo">精英律师</view>
|
||||
<view class="basics-top-lingo">1对1专项咨询解决</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="basics-data">
|
||||
<!-- <view class="basics-data-item">
|
||||
<view class="basics-data-number basics-score">
|
||||
<text>¥</text>{{lawyersData.price}}
|
||||
</view>
|
||||
<view class="basics-data-name">咨询费用</view>
|
||||
</view> -->
|
||||
<view class="basics-data-item">
|
||||
<view class="basics-data-number">100<text>人</text></view>
|
||||
<view class="basics-data-name">服务人数</view>
|
||||
</view>
|
||||
<view class="basics-data-item">
|
||||
<view class="basics-data-number">{{lawyersData.years}}<text>年</text></view>
|
||||
<view class="basics-data-name">职业年限</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="basics-good">
|
||||
<view class="basics-good-name">擅长</view>
|
||||
<view class="basics-good-text">
|
||||
<block v-for="(item, index) in lawyersData.tags" :key="index">
|
||||
<text>{{item.name}}</text>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="white">
|
||||
<view class="white-title">律师档案</view>
|
||||
<view class="brief">
|
||||
<view class="brief-label">
|
||||
<image class="brief-icon" src="/static/icon/lawyerIcon_01.png" mode="aspectFill"></image>
|
||||
<view class="brief-cont">
|
||||
<view class="brief-name">
|
||||
执照认证
|
||||
</view>
|
||||
<view class="brief-text">
|
||||
-
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="brief-label">
|
||||
<image class="brief-icon" src="/static/icon/lawyerIcon_03.png" mode="aspectFill"></image>
|
||||
<view class="brief-cont">
|
||||
<view class="brief-name">
|
||||
律所认证
|
||||
</view>
|
||||
<view class="brief-text">
|
||||
精英律师
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="brief-label">
|
||||
<image class="brief-icon" src="/static/icon/lawyerIcon_05.png" mode="aspectFill"></image>
|
||||
<view class="brief-cont">
|
||||
<view class="brief-name">
|
||||
荣誉奖项
|
||||
</view>
|
||||
<view class="brief-text">
|
||||
-
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="brief-label">
|
||||
<image class="brief-icon" src="/static/icon/lawyerIcon_04.png" mode="aspectFill"></image>
|
||||
<view class="brief-cont">
|
||||
<view class="brief-name">
|
||||
简介
|
||||
</view>
|
||||
<view class="brief-text">
|
||||
{{lawyersData.description}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="brief-label">
|
||||
<image class="brief-icon" src="/static/icon/lawyerIcon_02.png" mode="aspectFill"></image>
|
||||
<view class="brief-cont">
|
||||
<view class="brief-name">
|
||||
详情
|
||||
</view>
|
||||
<view class="brief-text">
|
||||
<rich-text :nodes="articleContent"></rich-text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 立即咨询 -->
|
||||
<!-- <view class="lawyerBtn">
|
||||
<view class="btn" @click="$Router.push({name: 'indexSortpay', params:{id: lawyersData.lawyer_id, type:'lawyer'}})">
|
||||
立即咨询 ¥{{lawyersData.price}}
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { lawyersdet } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
lawyersData : '',
|
||||
articleContent : ''
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取精选律师详情
|
||||
this.lawyersInfo()
|
||||
},
|
||||
methods: {
|
||||
lawyersInfo() {
|
||||
lawyersdet(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"
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background: #f5f5f7;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.lawyerBack{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
image{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
&::after,
|
||||
&::before{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
content: " ";
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
&::after{
|
||||
background-image: linear-gradient(to top, #fff, rgba(255,255,255,.0));
|
||||
z-index: 1;
|
||||
}
|
||||
&::before{
|
||||
z-index: 2;
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
}
|
||||
|
||||
.lawyerCont {
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
padding: $padding * 2 $padding $padding;
|
||||
box-sizing: border-box;
|
||||
// border-bottom: 100rpx solid transparent;
|
||||
.white {
|
||||
background-color: #fff;
|
||||
border-radius: 10rpx;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
}
|
||||
.basics-top {
|
||||
display: flex;
|
||||
margin-bottom: 20rpx;
|
||||
.basics-top-info {
|
||||
width: calc(100% - 130rpx);
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.basics-top-name {
|
||||
font-size: $title-size-sm + 8;
|
||||
font-weight: 600;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.basics-top-lingo {
|
||||
margin-top: 8rpx;
|
||||
color: #85888f;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
}
|
||||
.basics-head {
|
||||
flex: 1;
|
||||
width: 120rpx;
|
||||
height: 160rpx;
|
||||
border-radius: $radius-m;
|
||||
}
|
||||
}
|
||||
.basics-data {
|
||||
display: flex;
|
||||
.basics-data-item {
|
||||
flex: 3;
|
||||
text-align: center;
|
||||
.basics-data-number {
|
||||
font-weight: 600;
|
||||
line-height: 54rpx;
|
||||
text {
|
||||
font-weight: normal;
|
||||
font-size: $title-size-sm - 2;
|
||||
padding-left: 5rpx;
|
||||
}
|
||||
&.basics-score {
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
.basics-data-name {
|
||||
font-size: $title-size-sm - 2;
|
||||
line-height: 32rpx;
|
||||
color: $text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.basics-good {
|
||||
font-size: $title-size-m;
|
||||
display: flex;
|
||||
margin-top: $margin + 10;
|
||||
.basics-good-name {
|
||||
line-height: 42rpx;
|
||||
width: 70rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.basics-good-text {
|
||||
color: #85888f;
|
||||
width: calc(100% - 90rpx);
|
||||
text{
|
||||
font-size: 24rpx;
|
||||
background-color: #f5f5f5;
|
||||
color: #9f9f9f;
|
||||
display: inline-block;
|
||||
margin: 0 0 15rpx 20rpx;
|
||||
padding: 0 15rpx;
|
||||
border-radius: 10rpx;
|
||||
line-height: 42rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.white-title {
|
||||
font-size: 32rpx;
|
||||
margin-bottom: 20rpx;
|
||||
font-weight: 600;
|
||||
color: $text-color;
|
||||
}
|
||||
.brief-label {
|
||||
display: flex;
|
||||
margin: $margin + 10 0 10rpx;
|
||||
width: 100%;
|
||||
.brief-icon {
|
||||
width: 54rpx;
|
||||
height: 54rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.brief-cont {
|
||||
font-size: $title-size-m;
|
||||
width: 100%;
|
||||
.brief-name {
|
||||
margin-bottom: 10rpx;
|
||||
color: $text-color;
|
||||
}
|
||||
.brief-text {
|
||||
font-size: $title-size-sm;
|
||||
line-height: 44rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lawyerBtn {
|
||||
background-color: #ffffff;
|
||||
position: fixed;
|
||||
z-index: 99;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 130rpx;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
text-align: center;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
228
pages/index/sortInfo.vue
Normal file
228
pages/index/sortInfo.vue
Normal file
@@ -0,0 +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="../../static/imgs/consult_btn.png" mode="widthFix"></image>
|
||||
<image class="lawyerBtn-img lawyerBtn-see" src="../../static/imgs/consult_text.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="@/static/imgs/general_back.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>
|
||||
|
||||
<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>
|
||||
162
pages/index/sortPay.vue
Normal file
162
pages/index/sortPay.vue
Normal file
@@ -0,0 +1,162 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="paymentTop">
|
||||
<view class="paymentTop-name">
|
||||
需支付金额(元)
|
||||
</view>
|
||||
<view class="paymentTop-price">
|
||||
<text>¥</text>{{total}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList">
|
||||
<view class="paymentList-label">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/payWechat.png" mode="widthFix"></image>微信支付
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" src="@/static/imgs/payCheck.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentBtn">
|
||||
<view class="paymentBtn-go" @click="$Router.replace({name: 'sortPoint'})">
|
||||
去支付 ¥{{total}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { lawyerOrder, businessOrder } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
total: '', //支付金额
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取订单
|
||||
this.payInfo()
|
||||
},
|
||||
methods: {
|
||||
payInfo () {
|
||||
// 律师订单
|
||||
if(this.$Route.query.type == 'lawyer') {
|
||||
lawyerOrder(this.$Route.query.id).then(res => {
|
||||
this.total = res.total
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
//律师业务订单
|
||||
businessOrder(this.$Route.query.id).then(res => {
|
||||
this.total = res.total
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content{
|
||||
background: #f4f4f4;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.paymentTop {
|
||||
padding: $padding * 4 $padding $padding * 3;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
color: #666666;
|
||||
.paymentTop-name {
|
||||
padding-left: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.paymentTop-price {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 40;
|
||||
font-weight: 600;
|
||||
margin: $margin - 10 0;
|
||||
text {
|
||||
font-size: $title-size + 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentList {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.paymentList-label {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
padding: $padding + 10 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin + 10;
|
||||
display: flex;
|
||||
.paymentList-left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
line-height: 40rpx;
|
||||
.paymentList-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: $margin - 10;
|
||||
}
|
||||
}
|
||||
.paymentList-right {
|
||||
display: flex;
|
||||
.paymentList-tips {
|
||||
background-image: linear-gradient(to left, #FF4646, #FF7676);
|
||||
height: 44rpx;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: #ffffff;
|
||||
opacity: .9;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.paymentList-arrow {
|
||||
width: 14rpx;
|
||||
margin: 10rpx 0 0 20rpx;
|
||||
}
|
||||
.paymentList-img {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-top: 4rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentBtn {
|
||||
position: fixed;
|
||||
bottom: $margin * 2;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
.paymentBtn-go {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
line-height: 100rpx;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
75
pages/index/sortPoint.vue
Normal file
75
pages/index/sortPoint.vue
Normal file
@@ -0,0 +1,75 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="point">
|
||||
<img class="point-img" src="@/static/imgs/payImg.png">
|
||||
<view class="point-text">
|
||||
<view class="point-name">
|
||||
支付成功
|
||||
</view>
|
||||
<view class="point-tips">
|
||||
<text>尊敬的客户,已经成功支付咨询费用,请保持电话畅通,相关负责人将会与您联系,感谢您的支持</text>
|
||||
</view>
|
||||
<view class="point-btn">
|
||||
<view class="btn" @click="$Router.push({name: 'User'})">
|
||||
我知道了
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.point {
|
||||
text-align: center;
|
||||
padding: 40% 0;
|
||||
.point-img {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
margin: 0 auto 10rpx;
|
||||
}
|
||||
.point-text {
|
||||
.point-name {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 14;
|
||||
}
|
||||
.point-tips{
|
||||
margin: $margin + 20 0 $margin*3;
|
||||
padding: 0 $padding * 4;
|
||||
box-sizing: border-box;
|
||||
line-height: 52rpx;
|
||||
font-size: $title-size-m;
|
||||
text {
|
||||
display: block;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
}
|
||||
.point-btn {
|
||||
text-align: center;
|
||||
.btn {
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
border-radius: $radius * 4;
|
||||
padding: 0 $padding * 2.5;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
207
pages/index/workSearch.vue
Normal file
207
pages/index/workSearch.vue
Normal file
@@ -0,0 +1,207 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="workTitle">
|
||||
<view class="workTitle-name">
|
||||
{{index == 0 ? '手机号' : '邀请码'}}
|
||||
</view>
|
||||
<view class="workTitle-text">
|
||||
{{index == 0 ? '请输入好友的手机号' : '请输入好友的邀请码'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="workCont">
|
||||
<view class="workPicker">
|
||||
<picker class="workPicker-picker" @change="bindPickerChange" :value="index" :range="array" range-key="name">
|
||||
<view class="uni-input">{{array[index].name}}</view>
|
||||
</picker>
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="workPicker">
|
||||
<input class="workPicker-input" type="tel" maxlength="11" :placeholder="placeholder" v-model="invite" v-if="index == 0">
|
||||
<input class="workPicker-input" type="text" :placeholder="placeholder" v-model="invite" v-else>
|
||||
</view>
|
||||
<button class="idcardBtn" @click="basicSubmit">
|
||||
{{index == 0 ? '校验手机号' : '校验邀请码'}}
|
||||
</button>
|
||||
<view class="workUser" v-if="userData">
|
||||
<image class="workUser-head" :src="userData.avatar ? userData.avatar : '/static/imgs/default_myHead.png'" mode="aspectFill"></image>
|
||||
<view class="workUser-cont">
|
||||
<view class="workUser-cont-name">{{userData.nickname}}</view>
|
||||
<view class="workUser-cont-btn" @click="binding">
|
||||
立即绑定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Verify, Bind } from '@/apis/interfaces/index'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
array: [
|
||||
{
|
||||
name: '手机号',
|
||||
type: 'mobile'
|
||||
},
|
||||
{
|
||||
name: '邀请码',
|
||||
type: 'verify'
|
||||
}
|
||||
],
|
||||
index: 0,
|
||||
placeholder: '输入手机号',
|
||||
invite : '',
|
||||
userData: ''
|
||||
}
|
||||
},
|
||||
onShow() {},
|
||||
methods: {
|
||||
bindPickerChange(e) {
|
||||
this.index = e.detail.value
|
||||
if(e.detail.value == 0) {
|
||||
this.placeholder = '输入手机号'
|
||||
} else {
|
||||
this.placeholder = '输入邀请码'
|
||||
}
|
||||
},
|
||||
|
||||
// 提交
|
||||
basicSubmit() {
|
||||
Verify({
|
||||
invite : this.invite,
|
||||
type : this.array[this.index].type
|
||||
}).then(res => {
|
||||
this.userData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 立即绑定
|
||||
binding() {
|
||||
Bind({
|
||||
invite : this.invite,
|
||||
type : this.array[this.index].type
|
||||
}).then(res => {
|
||||
uni.showToast({
|
||||
title: '绑定成功',
|
||||
icon : 'none'
|
||||
})
|
||||
|
||||
setTimeout(()=>{
|
||||
// 跳到业务员搜索
|
||||
this.$Router.push({name: 'Index'})
|
||||
},3000)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
padding: $padding*4 $padding*3;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.workTitle {
|
||||
text-align: center;
|
||||
.workTitle-name {
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 6;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
.workTitle-text {
|
||||
color: $text-color;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
|
||||
.workCont {
|
||||
margin: $margin * 2 0;
|
||||
.workPicker {
|
||||
background-color: #fbfbfb;
|
||||
border-radius: $radius-m;
|
||||
padding: 0 $padding;
|
||||
margin-bottom: $margin + 10;
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
image {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: $padding - 5;
|
||||
}
|
||||
picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.workPicker-input {
|
||||
height: 88rpx;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.workUser {
|
||||
background-color: #fbfbfb;
|
||||
border-radius: $radius-m;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
margin-top: $margin * 2;
|
||||
.workUser-head {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.workUser-cont {
|
||||
line-height: 80rpx;
|
||||
width: calc(100% - 80rpx);
|
||||
padding-left: $padding;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.workUser-cont-name {
|
||||
font-size: $title-size-m;
|
||||
flex: 1;
|
||||
font-weight: 600;
|
||||
}
|
||||
.workUser-cont-btn {
|
||||
font-size: $title-size-sm;
|
||||
padding: 0 20rpx;
|
||||
background-color: #007df5;
|
||||
display: inline-block;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 62rpx;
|
||||
line-height: 62rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.idcardBtn {
|
||||
margin: $margin*2 0 0;
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-lg;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
28
pages/login/agreement.vue
Normal file
28
pages/login/agreement.vue
Normal file
@@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<view class="agreement-content">
|
||||
<view v-html="content"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { registeragree } from '@/apis/interfaces/auth'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
content: ''
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
registeragree(this.$Route.query.page).then(res=> {
|
||||
this.content = res.content
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.agreement-content{
|
||||
padding: $padding * 2;
|
||||
font-size: $title-size;
|
||||
}
|
||||
</style>
|
||||
408
pages/login/forget.vue
Normal file
408
pages/login/forget.vue
Normal file
@@ -0,0 +1,408 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="loginBack" src="@/static/imgs/login_back.png">
|
||||
<img class="loginBottom" src="@/static/imgs/login_bottom.png">
|
||||
<view class="title">
|
||||
<view class="title-name">
|
||||
找回密码
|
||||
</view>
|
||||
<view class="title-tips">
|
||||
请输入新密码并验证手机号,密码规则:密码+数字
|
||||
</view>
|
||||
</view>
|
||||
<view class="info">
|
||||
<!-- 输入手机号相关 -->
|
||||
<view class="inputs">
|
||||
<input type="number" placeholder="请输入手机号" maxlength="11" v-model="phone" />
|
||||
</view>
|
||||
<!-- 获取验证码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" placeholder="请输入验证码" maxlength="4" v-model="code" />
|
||||
<button @click="getPhoneCode" class="sms-btn ":disabled="phone == ''" type="default" size="mini">{{getSms ? '重新发送' + smsTime + 's': '发送验证码'}}</button>
|
||||
</view>
|
||||
<!-- 输入密码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" placeholder="请输入新密码" password v-model="password" />
|
||||
</view>
|
||||
<!-- 再次确认密码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" placeholder="再次输入新密码" password v-model="confirmation" />
|
||||
</view>
|
||||
<button class="btn" type="default" :disabled="phone == '' || getSms == ''" @click="gainSms">确认修改</button>
|
||||
<view class="forget">
|
||||
<view class="forget-label" @click="$Router.push({name: 'Login'})">密码登录</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 图文验证码 -->
|
||||
<view class="graphBack" v-if="graphState"></view>
|
||||
<view class="graphCont" v-if="graphState">
|
||||
<view class="graphWhite">
|
||||
<view class="graphWhite-title">
|
||||
请完成验证码
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<input class="inputs-input" type="text" placeholder="输入图片中的字符" v-model="newCaptcha" />
|
||||
<view class="graph-img" @click="replaceClick">
|
||||
<image :src="graphImg" mode="widthFix"></image>
|
||||
<view class="graph-tips">看不清?换一张</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="graphBtn">
|
||||
<view class="graphBtn-lable" @click="graphState = false">
|
||||
取消
|
||||
</view>
|
||||
<view class="graphBtn-lable" @click="checkCaptcha">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 修改成功弹出框 -->
|
||||
<view class="modifyBack" v-if="modifyPop"></view>
|
||||
<view class="modifyCont" v-if="modifyPop">
|
||||
<view class="modifyWhite">
|
||||
<image class="modifyWhite-img" src="@/static/imgs/modifySuccess.png" mode="aspectFill"></image>
|
||||
<view class="modifyWhite-title">
|
||||
修改成功
|
||||
</view>
|
||||
<view class="modifyWhite-text">
|
||||
您的密码已经修改生效,请重新登录
|
||||
</view>
|
||||
<view class="modifyWhite-btn" @click="loginClick">
|
||||
去登录
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Captcha, smsAuth, resetPassword } from '@/apis/interfaces/auth'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
graphImg : '', // 图形码
|
||||
captchaKey : '', // 校验图形码传回去的值
|
||||
newCaptcha : '', // 填写图形码
|
||||
phone : '', // 手机号码
|
||||
password : '', // 密码
|
||||
confirmation: '', // 再次输入密码
|
||||
code : '', // 短信验证码
|
||||
getSms : '',
|
||||
smsTime : 60,
|
||||
graphState : false, // 图文弹出层
|
||||
modifyPop : false // 修改成功弹出框
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 第一步 获取图形码
|
||||
getPhoneCode() {
|
||||
if(this.phone) {
|
||||
this.CaptchaData();
|
||||
this.graphState = true
|
||||
return
|
||||
}
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: "none"
|
||||
})
|
||||
},
|
||||
|
||||
// 图形码数据
|
||||
CaptchaData() {
|
||||
Captcha().then(res => {
|
||||
this.graphImg = res.img
|
||||
this.captchaKey= res.key
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 看不清,换一张 - 图形码数据
|
||||
replaceClick() {
|
||||
this.CaptchaData();
|
||||
|
||||
// 清除图形码数据
|
||||
this.newCaptcha = ''
|
||||
},
|
||||
|
||||
// 需校验图形验证码
|
||||
checkCaptcha() {
|
||||
let outTime
|
||||
smsAuth({
|
||||
mobileNo : this.phone,
|
||||
captcha : this.newCaptcha,
|
||||
captcha_key: this.captchaKey
|
||||
}).then(res => {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: "none"
|
||||
})
|
||||
// 关闭弹框
|
||||
this.graphState = false
|
||||
|
||||
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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 重置密码并登录
|
||||
gainSms() {
|
||||
resetPassword({
|
||||
username : this.phone,
|
||||
password : this.password,
|
||||
password_confirmation: this.confirmation,
|
||||
code : this.code
|
||||
}).then(res => {
|
||||
// 修改成功弹出框
|
||||
this.modifyPop = true
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 去登录
|
||||
loginClick() {
|
||||
this.$Router.replaceAll({name: 'Login'})
|
||||
// 修改成功弹出框
|
||||
this.modifyPop = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.loginBack {
|
||||
width: 35%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
.loginBottom {
|
||||
width: 60%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
.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;
|
||||
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;
|
||||
overflow: hidden;
|
||||
input {
|
||||
font-weight: normal;
|
||||
height: 100%;
|
||||
}
|
||||
.sms-btn {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background-color: #da2b56;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
color: #ffffff;
|
||||
border-radius: 0;
|
||||
font-size: $title-size-lg;
|
||||
border: none !important;
|
||||
&[disabled] {
|
||||
background-color: #ff8da9;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
padding: 0;
|
||||
margin: $margin * 3 0 0;
|
||||
&[disabled] {
|
||||
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
|
||||
}
|
||||
}
|
||||
.forget {
|
||||
line-height: 120rpx;
|
||||
font-size: $title-size-m;
|
||||
text-align: right;
|
||||
color: #7f8391;
|
||||
}
|
||||
}
|
||||
// 图文
|
||||
.graphBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
}
|
||||
.graphCont {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
padding: 0 $padding*2.5;
|
||||
box-sizing: border-box;
|
||||
.graphWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
.graphWhite-title {
|
||||
text-align: center;
|
||||
line-height: 110rpx;
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
.inputs {
|
||||
display: flex;
|
||||
padding: 10rpx $padding $padding;
|
||||
box-sizing: border-box;
|
||||
.inputs-input {
|
||||
border: 2rpx solid #d2d2d2;
|
||||
border-radius: $radius-m;
|
||||
height: 82rpx;
|
||||
line-height: 82rpx;
|
||||
padding: 0 $padding - 10;
|
||||
box-sizing: border-box;
|
||||
font-size: $title-size-lg;
|
||||
width: calc(100% - 230rpx);
|
||||
}
|
||||
.graph-img {
|
||||
width: 200rpx;
|
||||
margin-left: 30rpx;
|
||||
image {
|
||||
width: 100%;
|
||||
}
|
||||
.graph-tips {
|
||||
font-size: $title-size-sm;
|
||||
color: #9a9a9a;
|
||||
text-align: center;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.graphBtn {
|
||||
display: flex;
|
||||
line-height: 90rpx;
|
||||
border-top: 2rpx solid #d2d2d2;
|
||||
.graphBtn-lable {
|
||||
text-align: center;
|
||||
flex: 2;
|
||||
border-right: 2rpx solid #d2d2d2;
|
||||
font-size: $title-size-lg;
|
||||
color: $mian-color;
|
||||
&:last-child {
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 修改成功弹出框
|
||||
.modifyBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .8);
|
||||
}
|
||||
.modifyCont {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
padding: 0 $padding*2.5;
|
||||
box-sizing: border-box;
|
||||
.modifyWhite {
|
||||
padding: $padding + 10 $padding * 2;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
text-align: center;
|
||||
.modifyWhite-img {
|
||||
width: 260rpx;
|
||||
height: 260rpx;
|
||||
margin: 0 atuo;
|
||||
}
|
||||
.modifyWhite-title {
|
||||
line-height: 80rpx;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
.modifyWhite-text {
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.modifyWhite-btn {
|
||||
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding: 0;
|
||||
margin: $margin * 2 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
218
pages/login/login.vue
Normal file
218
pages/login/login.vue
Normal file
@@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="loginBack" src="@/static/imgs/login_back.png">
|
||||
<img class="loginBottom" src="@/static/imgs/login_bottom.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>
|
||||
</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: #7f8391;
|
||||
}
|
||||
.forget-after {
|
||||
position: relative;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
bottom: calc(50% - 15rpx);
|
||||
width: 2rpx;
|
||||
height: 30rpx;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
422
pages/login/modify.vue
Normal file
422
pages/login/modify.vue
Normal file
@@ -0,0 +1,422 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="loginBack" src="@/static/imgs/login_back.png">
|
||||
<img class="loginBottom" src="@/static/imgs/login_bottom.png">
|
||||
<view class="title">
|
||||
<view class="title-name">
|
||||
修改密码
|
||||
</view>
|
||||
<view class="title-tips">
|
||||
{{nextState ? '密码格式可以是字母与数字的组合' : '请先输入手机号并填写验证码'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="info" v-if="!nextState">
|
||||
<!-- 输入手机号相关 -->
|
||||
<view class="inputs">
|
||||
<input type="number" placeholder="请输入手机号" maxlength="11" v-model="phone" />
|
||||
</view>
|
||||
<!-- 获取验证码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" placeholder="请输入验证码" maxlength="4" v-model="code" />
|
||||
<button @click="getPhoneCode" class="sms-btn ":disabled="phone == ''" type="default" size="mini">{{getSms ? '重新发送' + smsTime + 's': '发送验证码'}}</button>
|
||||
</view>
|
||||
<!-- 输入密码 -->
|
||||
<view class="inputs" style="display: block;">
|
||||
<input type="text" placeholder="请输入新密码" password v-model="password" />
|
||||
</view>
|
||||
<!-- 输入密码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" placeholder="请再次输入密码" password v-model="confirmation" />
|
||||
</view>
|
||||
<button class="btn" type="default" :disabled="password == '' || confirmation == ''" @click="modifyClick">确认修改</button>
|
||||
<!-- <button class="btn" type="default" :disabled="phone == '' || getSms == ''" @click="nextStep">下一步</button> -->
|
||||
</view>
|
||||
|
||||
<!-- <block v-else>
|
||||
<view class="info">
|
||||
|
||||
</view>
|
||||
</block>
|
||||
-->
|
||||
<!-- 图文验证码 -->
|
||||
<view class="graphBack" v-if="graphState"></view>
|
||||
<view class="graphCont" v-if="graphState">
|
||||
<view class="graphWhite">
|
||||
<view class="graphWhite-title">
|
||||
请完成验证码
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<input class="inputs-input" type="text" placeholder="输入图片中的字符" v-model="newCaptcha" />
|
||||
<view class="graph-img" @click="replaceClick">
|
||||
<image :src="graphImg" mode="widthFix"></image>
|
||||
<view class="graph-tips">看不清?换一张</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="graphBtn">
|
||||
<view class="graphBtn-lable" @click="graphState = false">
|
||||
取消
|
||||
</view>
|
||||
<view class="graphBtn-lable" @click="checkCaptcha">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 修改成功弹出框 -->
|
||||
<view class="modifyBack" v-if="modifyPop"></view>
|
||||
<view class="modifyCont" v-if="modifyPop">
|
||||
<view class="modifyWhite">
|
||||
<image class="modifyWhite-img" src="@/static/imgs/modifySuccess.png" mode="aspectFill"></image>
|
||||
<view class="modifyWhite-title">
|
||||
修改成功
|
||||
</view>
|
||||
<view class="modifyWhite-text">
|
||||
您的密码已经修改生效,请重新登录
|
||||
</view>
|
||||
<view class="modifyWhite-btn" @click="loginClick">
|
||||
去登录
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Captcha, smsAuth, modifyPassword } from '@/apis/interfaces/auth'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
graphImg : '', // 图形码
|
||||
captchaKey : '', // 校验图形码传回去的值
|
||||
newCaptcha : '', // 填写图形码
|
||||
phone : '', // 手机号码
|
||||
password : '', // 密码
|
||||
confirmation: '', // 再次输入密码
|
||||
code : '', // 短信验证码
|
||||
getSms : '',
|
||||
smsTime : 60,
|
||||
graphState : false, // 图文弹出层
|
||||
nextState : false, // 是否进行下一步
|
||||
modifyPop : false // 修改成功弹出框
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 第一步 获取图形码
|
||||
getPhoneCode() {
|
||||
if(this.phone) {
|
||||
this.CaptchaData();
|
||||
this.graphState = true
|
||||
return
|
||||
}
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: "none"
|
||||
})
|
||||
},
|
||||
|
||||
// 图形码数据
|
||||
CaptchaData() {
|
||||
Captcha().then(res => {
|
||||
this.graphImg = res.img
|
||||
this.captchaKey= res.key
|
||||
|
||||
// 清除图形码数据
|
||||
this.newCaptcha = ''
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 看不清,换一张 - 图形码数据
|
||||
replaceClick() {
|
||||
this.CaptchaData();
|
||||
|
||||
// 清除图形码数据
|
||||
this.newCaptcha = ''
|
||||
},
|
||||
|
||||
// 需校验图形验证码
|
||||
checkCaptcha() {
|
||||
let outTime
|
||||
smsAuth({
|
||||
mobileNo : this.phone,
|
||||
captcha : this.newCaptcha,
|
||||
captcha_key: this.captchaKey
|
||||
}).then(res => {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: "none"
|
||||
})
|
||||
// 关闭弹框
|
||||
this.graphState = false
|
||||
|
||||
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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 下一步
|
||||
nextStep() {
|
||||
this.nextState = true
|
||||
},
|
||||
|
||||
// 修改密码
|
||||
modifyClick() {
|
||||
modifyPassword({
|
||||
password : this.password,
|
||||
password_confirmation: this.confirmation,
|
||||
code : this.code
|
||||
}).then(res => {
|
||||
// 修改成功弹出框
|
||||
this.modifyPop = true
|
||||
|
||||
// 清除数据,退出登录
|
||||
this.$store.commit('setToken', '')
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 去登录
|
||||
loginClick() {
|
||||
this.$Router.replace({name: 'Login'})
|
||||
// 修改成功弹出框
|
||||
this.modifyPop = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.loginBack {
|
||||
width: 30%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
.loginBottom {
|
||||
width: 60%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
.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;
|
||||
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;
|
||||
overflow: hidden;
|
||||
input {
|
||||
font-weight: normal;
|
||||
height: 100%;
|
||||
}
|
||||
.sms-btn {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background-color: #da2b56;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
color: #ffffff;
|
||||
border-radius: 0;
|
||||
font-size: $title-size-lg;
|
||||
border: none !important;
|
||||
&[disabled] {
|
||||
background-color: #ff8da9;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
padding: 0;
|
||||
margin: $margin * 3 0 0;
|
||||
&[disabled] {
|
||||
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
|
||||
}
|
||||
}
|
||||
.forget {
|
||||
line-height: 120rpx;
|
||||
font-size: $title-size-m;
|
||||
text-align: right;
|
||||
color: #7f8391;
|
||||
}
|
||||
}
|
||||
|
||||
// 图文
|
||||
.graphBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
}
|
||||
.graphCont {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
padding: 0 $padding*2.5;
|
||||
box-sizing: border-box;
|
||||
.graphWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
.graphWhite-title {
|
||||
text-align: center;
|
||||
line-height: 110rpx;
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
.inputs {
|
||||
display: flex;
|
||||
padding: 10rpx $padding $padding;
|
||||
box-sizing: border-box;
|
||||
.inputs-input {
|
||||
border: 2rpx solid #d2d2d2;
|
||||
border-radius: $radius-m;
|
||||
height: 82rpx;
|
||||
line-height: 82rpx;
|
||||
padding: 0 $padding - 10;
|
||||
box-sizing: border-box;
|
||||
font-size: $title-size-lg;
|
||||
width: calc(100% - 230rpx);
|
||||
}
|
||||
.graph-img {
|
||||
width: 200rpx;
|
||||
margin-left: 30rpx;
|
||||
image {
|
||||
width: 100%;
|
||||
}
|
||||
.graph-tips {
|
||||
font-size: $title-size-sm;
|
||||
color: #9a9a9a;
|
||||
text-align: center;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.graphBtn {
|
||||
display: flex;
|
||||
line-height: 90rpx;
|
||||
border-top: 2rpx solid #d2d2d2;
|
||||
.graphBtn-lable {
|
||||
text-align: center;
|
||||
flex: 2;
|
||||
border-right: 2rpx solid #d2d2d2;
|
||||
font-size: $title-size-lg;
|
||||
color: $mian-color;
|
||||
&:last-child {
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 修改成功弹出框
|
||||
.modifyBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .8);
|
||||
}
|
||||
.modifyCont {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
padding: 0 $padding*2.5;
|
||||
box-sizing: border-box;
|
||||
.modifyWhite {
|
||||
padding: $padding + 10 $padding * 2;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
text-align: center;
|
||||
.modifyWhite-img {
|
||||
width: 260rpx;
|
||||
height: 260rpx;
|
||||
margin: 0 atuo;
|
||||
}
|
||||
.modifyWhite-title {
|
||||
line-height: 80rpx;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
.modifyWhite-text {
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.modifyWhite-btn {
|
||||
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding: 0;
|
||||
margin: $margin * 2 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
419
pages/login/register.vue
Normal file
419
pages/login/register.vue
Normal file
@@ -0,0 +1,419 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="loginBack" src="@/static/imgs/login_back.png">
|
||||
<img class="loginBottom" src="@/static/imgs/login_bottom.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="number" placeholder="请输入验证码" maxlength="4" v-model="code" />
|
||||
<button @click="getPhoneCode" class="sms-btn" :disabled="phone == '' || getSms != ''" type="default" size="mini">{{getSms ? '重新发送' + smsTime + 's': '发送验证码'}}</button>
|
||||
</view>
|
||||
<!-- 输入密码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" :password="passwordState" placeholder="密码须包含大小写,最少8位" v-model="password" />
|
||||
<image class="inputs-see" @click="seeClick" :src="seeState ? '../../static/icon/see_active.png' : '../../static/icon/see.png'" mode="aspectFill"></image>
|
||||
</view>
|
||||
<!-- 输入密码 -->
|
||||
<view class="inputs">
|
||||
<input type="text" :password="passwordAgain" placeholder="请再次输入密码" v-model="confirmation" />
|
||||
<image class="inputs-see" @click="seeAgain" :src="againState ? '../../static/icon/see_active.png' : '../../static/icon/see.png'" mode="aspectFill"></image>
|
||||
</view>
|
||||
<!-- 输入邀請碼 -->
|
||||
<view class="inputs" v-if="newUser">
|
||||
<input type="text" placeholder="请输入邀请码" v-model="parentId" />
|
||||
</view>
|
||||
<button class="btn" type="default" :disabled="phone == '' || code == ''" @click="gainSms">立即注册</button>
|
||||
<view class="forget">
|
||||
<view class="forget-label" @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: {name : 'secret'}})">《隐私协议》</view>和<view @click="$Router.push({name: 'Agreement', params: {name : 'protocol'}})">《服务协议》</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 图文验证码 -->
|
||||
<view class="graphBack" v-if="graphState"></view>
|
||||
<view class="graphCont" v-if="graphState">
|
||||
<view class="graphWhite">
|
||||
<view class="graphWhite-title">
|
||||
请完成验证码
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<input class="inputs-input" type="text" placeholder="输入图片中的字符" v-model="newCaptcha" />
|
||||
<view class="graph-img" @click="replaceClick">
|
||||
<image :src="graphImg" mode="widthFix"></image>
|
||||
<view class="graph-tips">看不清?换一张</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="graphBtn">
|
||||
<view class="graphBtn-lable" @click="graphState = false">
|
||||
取消
|
||||
</view>
|
||||
<view class="graphBtn-lable" @click="checkCaptcha">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Captcha, smsAuth, Register } from '@/apis/interfaces/auth'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
graphImg : '', // 图形码
|
||||
newCaptcha : '', // 填写图形码
|
||||
captchaKey : '', // 校验图形码传回去的值
|
||||
phone : '', // 手机号码
|
||||
password : '', // 密码
|
||||
confirmation: '', // 再次输入密码
|
||||
code : '', // 短信验证码
|
||||
parentId : '', // 是否有上级id 邀请码
|
||||
checked : false, // 勾选协议
|
||||
getSms : '',
|
||||
smsTime : 60,
|
||||
graphState : false, // 图文弹出层
|
||||
newUser : '',
|
||||
seeState : false, //小眼睛
|
||||
againState : false, //小眼睛-再次输入密码
|
||||
passwordState: true,
|
||||
passwordAgain: true
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
this.parentId = this.$Route.query.invite_code || ''
|
||||
},
|
||||
methods: {
|
||||
// 第一步 获取图形码
|
||||
getPhoneCode() {
|
||||
if(this.phone) {
|
||||
this.CaptchaData();
|
||||
this.graphState = true
|
||||
return
|
||||
}
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: "none"
|
||||
})
|
||||
},
|
||||
|
||||
// 图形码数据
|
||||
CaptchaData() {
|
||||
Captcha().then(res => {
|
||||
this.graphImg = res.img
|
||||
this.captchaKey= res.key
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 看不清,换一张 - 图形码数据
|
||||
replaceClick() {
|
||||
this.CaptchaData();
|
||||
|
||||
// 清除图形码数据
|
||||
this.newCaptcha = ''
|
||||
},
|
||||
|
||||
// 需校验图形验证码
|
||||
checkCaptcha() {
|
||||
let outTime
|
||||
smsAuth({
|
||||
mobileNo : this.phone,
|
||||
captcha : this.newCaptcha,
|
||||
captcha_key: this.captchaKey,
|
||||
type : 'register'
|
||||
}).then(res => {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: "none"
|
||||
})
|
||||
// 关闭弹框
|
||||
this.graphState = false
|
||||
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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 用户注册
|
||||
gainSms() {
|
||||
if(this.checked) {
|
||||
Register({
|
||||
username : this.phone,
|
||||
password : this.password,
|
||||
password_confirmation: this.confirmation,
|
||||
code : this.code,
|
||||
parent_id : this.parentId
|
||||
}).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
|
||||
},
|
||||
|
||||
// 查看密码-再次
|
||||
seeAgain() {
|
||||
this.againState = !this.againState
|
||||
this.passwordAgain = !this.passwordAgain
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.loginBack {
|
||||
width: 35%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
.loginBottom {
|
||||
width: 60%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
.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;
|
||||
overflow: hidden;
|
||||
.inputs-see {
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: $padding;
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
}
|
||||
input {
|
||||
font-weight: normal;
|
||||
height: 100%;
|
||||
}
|
||||
.sms-btn {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background-color: #da2b56;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
color: #ffffff;
|
||||
border-radius: 0;
|
||||
font-size: $title-size-lg;
|
||||
border: none !important;
|
||||
&[disabled] {
|
||||
background-color: #ff8da9;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
background-image: linear-gradient(to right, #da2b56, #FBAF3B);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
padding: 0;
|
||||
margin: $margin * 3 0 0;
|
||||
&[disabled] {
|
||||
background-image: linear-gradient(to right, #ff8da9, #ffd0a2);
|
||||
}
|
||||
}
|
||||
.forget {
|
||||
line-height: 120rpx;
|
||||
font-size: $title-size-m;
|
||||
text-align: right;
|
||||
color: #7f8391;
|
||||
}
|
||||
}
|
||||
.graphBack {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
}
|
||||
.graphCont {
|
||||
position: absolute;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
padding: 0 $padding*2.5;
|
||||
box-sizing: border-box;
|
||||
.graphWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
.graphWhite-title {
|
||||
text-align: center;
|
||||
line-height: 110rpx;
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
.inputs {
|
||||
display: flex;
|
||||
padding: 10rpx $padding $padding;
|
||||
box-sizing: border-box;
|
||||
.inputs-input {
|
||||
border: 2rpx solid #d2d2d2;
|
||||
border-radius: $radius-m;
|
||||
height: 82rpx;
|
||||
line-height: 82rpx;
|
||||
padding: 0 $padding - 10;
|
||||
box-sizing: border-box;
|
||||
font-size: $title-size-lg;
|
||||
width: calc(100% - 230rpx);
|
||||
}
|
||||
.graph-img {
|
||||
width: 200rpx;
|
||||
margin-left: 30rpx;
|
||||
image {
|
||||
width: 100%;
|
||||
}
|
||||
.graph-tips {
|
||||
font-size: $title-size-sm;
|
||||
color: #9a9a9a;
|
||||
text-align: center;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.graphBtn {
|
||||
display: flex;
|
||||
line-height: 90rpx;
|
||||
border-top: 2rpx solid #d2d2d2;
|
||||
.graphBtn-lable {
|
||||
text-align: center;
|
||||
flex: 2;
|
||||
border-right: 2rpx solid #d2d2d2;
|
||||
font-size: $title-size-lg;
|
||||
color: $mian-color;
|
||||
&:last-child {
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
657
pages/modify/modify-bank.vue
Normal file
657
pages/modify/modify-bank.vue
Normal file
@@ -0,0 +1,657 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="base">
|
||||
<view class="base-tab">
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon//bankIcon_01_active.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
银行信息
|
||||
</view>
|
||||
<view class="base-tab-tips">
|
||||
待完善
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-tab-spot">
|
||||
<text></text>
|
||||
<text></text>
|
||||
<text></text>
|
||||
</view>
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon/bankIcon_02.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
其他信息
|
||||
</view>
|
||||
<view @click="nextStep" class="base-tab-tips">
|
||||
去完善 >
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
<!-- <view class="base-number">
|
||||
6/12
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<!-- items.type === 'text' || items.type === 'textarea' -->
|
||||
<view class="base-block" :class="{baseAline : items.flex == 100, radioAline : items.type == 'radio'}" v-for="(items, itemsIndex) in backParams" :key="itemsIndex" v-if="items.pre_key != null ? isShowBlock(backParams, items): true">
|
||||
<view class="base-block-name" v-if="items.label == 1">
|
||||
<text>*</text>{{items.title}}
|
||||
<image class="base-notesIcon" v-if="items.reason != ''" @click="seeTips('驳回原因', items.reason.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<!-- 单输入框 -->
|
||||
<view class="base-block-write" v-if="items.type === 'price' || items.type === 'number' || items.type === 'text' || items.type === 'password' || items.type === 'mobile' || items.type === 'day'">
|
||||
<mouldInput class="idcardAdd-input" :blur-value="items.value" :input-type="items.type" :input-key="items.key" @onValue="($event) => {items.value = $event}"></mouldInput>
|
||||
</view>
|
||||
|
||||
<!-- 单选 -->
|
||||
|
||||
|
||||
<!-- 单选 -->
|
||||
<view class="idcardAdd-aline" v-if="items.type === 'radio'">
|
||||
<radio-group @change="items.value = parseFloat($event.detail.value)">
|
||||
<label class="idcardAdd-aline-write" v-for="(limitItem, limitIndex) in items.options" :key="limitIndex">
|
||||
<radio :value="String(limitIndex)" :checked="items.value === limitIndex" color="#4e7bfe" style="transform:scale(.65)"/>
|
||||
<text>{{limitItem}}</text>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
|
||||
<!-- 多选 -->
|
||||
<block v-if="items.type === 'checkbox'">
|
||||
<mouldCheckbox :checkbox-list="items.options" :checkboxVlaue="items.value || []" @onCheckbox="($event) => {items.value = $event}"></mouldCheckbox>
|
||||
</block>
|
||||
|
||||
<!-- 办卡城市 -->
|
||||
<view class="base-block-write" v-if="items.type === 'city'">
|
||||
<mouldInput class="idcardAdd-input" :blur-value="items.value" :input-type="items.type" :input-key="items.key" @onValue="($event) => {items.value = $event}"></mouldInput>
|
||||
</view>
|
||||
|
||||
<!-- 描述 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
||||
<mouldText class="idcardAdd-depict-textarea" :blur-value="items.value" @onTextarea="($event) => {items.value = $event}"></mouldText>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 下拉框 -->
|
||||
<view class="base-block-write" v-if="items.type === 'select'">
|
||||
<mouldSelect class="idcardAdd-picker" :select-value="items.value.toString()" :select-list="items.options" @bankPicker="($event) => {items.value = $event}"></mouldSelect>
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<!-- 日期选择 -->
|
||||
<view class="base-block-write" v-if="items.type === 'date'">
|
||||
<!-- <picker mode="date" :value-date="values[items.key]" :start="startDate" :end="endDate" @change="($event) => {values[items.key] = $event.detail.value}">
|
||||
<view class="uni-input">{{values[items.key]}}</view>
|
||||
</picker> -->
|
||||
<mouldDate :value-date="items.value || '请选择日期'" class="idcardAdd-picker" @onDate="($event) => {items.value = $event}"></mouldDate>
|
||||
<image src="@/static/imgs/basic_date.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="introduce-btn">
|
||||
<button class="btn" size="mini" @click="cacheSave">暂时保存</button>
|
||||
<!-- -->
|
||||
<view @click="nextStep" class="btn" size="mini">下一步</view>
|
||||
</view>
|
||||
|
||||
<!-- 驳回提示 -->
|
||||
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
|
||||
|
||||
<!-- 是否使用首次录入信息 -->
|
||||
<view class="backFirst" v-if="popFirst"></view>
|
||||
<view class="contFirst" v-if="popFirst">
|
||||
<view class="tipsWhite">
|
||||
<view class="tipsWhite-top">
|
||||
<view class="tipsWhite-name">
|
||||
温馨提示
|
||||
</view>
|
||||
<view class="tipsWhite-text">
|
||||
是否使用首次录入信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="tipsWhite-btn">
|
||||
<view class="idcardBtn-go active" @click="popFirst = false">
|
||||
暂不使用
|
||||
</view>
|
||||
<view class="idcardBtn-go" @click="goFirst">
|
||||
立即使用
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { userBank, cacheBank, cacheBankPut } from '@/apis/interfaces/user'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldSelect from '@/components/mould_select.vue'
|
||||
import mouldDate from '@/components/mould-date.vue'
|
||||
import mouldTips from '@/components/mould-tips.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldSelect,
|
||||
mouldDate,
|
||||
mouldTips
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
popFirst : false, // 首次录入信息状态
|
||||
disabled : false, // 按钮状态
|
||||
bankData : '', // 基础信息
|
||||
backParams: [], // 字段数组
|
||||
|
||||
// 查看提示组件
|
||||
seeData : {
|
||||
seeShow : false,
|
||||
seeTitle: '',
|
||||
seeText : '',
|
||||
},
|
||||
|
||||
values : '',
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
|
||||
userId : '', // 第二个id
|
||||
baseId : '' ,// 第二个id
|
||||
|
||||
institutionId: '',
|
||||
|
||||
cacheData: '' //缓存数据
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// isChecked(){
|
||||
// return (val, vals) => {
|
||||
// let valsArr = vals || []
|
||||
// return valsArr.findIndex(v => v == val) >= 0
|
||||
// }
|
||||
// },
|
||||
isShowBlock(){
|
||||
return (backParams, items) => {
|
||||
if(items.pre_key != null){
|
||||
let paramsValue = backParams.find(v => v.key == items.pre_key)
|
||||
return paramsValue.value == items.pre_value
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
userBank(this.$Route.query.id).then(res => {
|
||||
// 是否使用首次录入信息
|
||||
// if(res.is_finish == 0 && res.user_bank) {
|
||||
// this.popFirst = true
|
||||
// this.baseId = res.user_bank.user_bank_id
|
||||
// }
|
||||
|
||||
let { item, params, business_order_user_bank_id } = res;
|
||||
cacheBank(business_order_user_bank_id).then(StorageRes => {
|
||||
this.userId = res.business_order_user_bank_id
|
||||
uni.hideLoading()
|
||||
if(StorageRes === ''){
|
||||
this.backParams = params
|
||||
return
|
||||
}
|
||||
let storageParams = []
|
||||
storageParams = params.map(val => {
|
||||
if(val.type == 'checkbox' && StorageRes[val.key].length > 0){
|
||||
val.value = StorageRes[val.key]
|
||||
return val
|
||||
}
|
||||
if(val.type == 'select' && StorageRes[val.key] === null){
|
||||
val.value = 0
|
||||
return val
|
||||
}
|
||||
val.value = StorageRes[val.key] === null ? "" : StorageRes[val.key]
|
||||
return val;
|
||||
})
|
||||
this.backParams = storageParams
|
||||
}).catch(StorageErr => {
|
||||
uni.showToast({
|
||||
title: StorageErr.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 线上保存 - 缓存
|
||||
cacheSave() {
|
||||
let SaveArr = new Object;
|
||||
this.backParams.map(val => {
|
||||
SaveArr[val.key] = val.value
|
||||
})
|
||||
|
||||
cacheBankPut(this.$Route.query.id, {...SaveArr}).then(res => {
|
||||
uni.showToast({
|
||||
title: '保存成功',
|
||||
icon: "none"
|
||||
})
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 下一步
|
||||
nextStep(){
|
||||
// 本地保存备份
|
||||
// let newSaveArr = this.backParams.map(val => {
|
||||
// return {
|
||||
// key: val.key,
|
||||
// value: val.value == null ? '' : val.value
|
||||
// }
|
||||
// })
|
||||
|
||||
let newSaveArr = new Object;
|
||||
this.backParams.map(val => {
|
||||
newSaveArr[val.key] = val.value
|
||||
// 本地保存备份
|
||||
// SaveArr.push({
|
||||
// key: val.key,
|
||||
// value: val.value
|
||||
})
|
||||
|
||||
// 线上保存
|
||||
cacheBankPut(this.$Route.query.id, {...newSaveArr}).then(res => {
|
||||
// 跳转
|
||||
this.$router.push({
|
||||
name: 'ModifyOther',
|
||||
params: {
|
||||
id: this.$Route.query.id
|
||||
}
|
||||
})
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 提示组件 -- 赋值
|
||||
seeTips(title, text) {
|
||||
this.seeData.seeShow = true
|
||||
this.seeData.seeTitle = title
|
||||
this.seeData.seeText = text
|
||||
},
|
||||
|
||||
// 跳转新页面-首次录入信息
|
||||
goFirst() {
|
||||
this.popFirst = false
|
||||
this.$Router.replace({name: 'userBank', params: {userId: this.userId, id: this.baseId, type: 'first'}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: transparent 140rpx solid;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.base-tab {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
padding: 0 $padding 20rpx 10rpx;
|
||||
position: relative;
|
||||
.base-tab-item {
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.base-tab-img {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
.base-tab-cont {
|
||||
padding-top: $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.base-tab-name {
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.base-tab-tips {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid #ffeaea;
|
||||
border-radius: $radius * 4;
|
||||
width: 110rpx;
|
||||
text-align: center;
|
||||
opacity: .8;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.base-tab-spot {
|
||||
text-align: center;
|
||||
width: 180rpx;
|
||||
float: left;
|
||||
margin-top: $margin;
|
||||
text {
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
display: inline-block;
|
||||
margin-left: 15rpx;
|
||||
&:nth-child(1) {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
opacity: .5;
|
||||
}
|
||||
&:nth-child(2) {
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
opacity: .8;
|
||||
}
|
||||
&:nth-child(3) {
|
||||
width: 16rpx;
|
||||
height: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.white {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 0 -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
width: calc(50% - 20rpx);
|
||||
// width: calc(100% - 20rpx);
|
||||
margin: 20rpx 10rpx;
|
||||
float: left;
|
||||
.base-block-name {
|
||||
// margin: $margin + 20 0 $margin - 10;
|
||||
color: #111111;
|
||||
display: flex;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
.base-notesIcon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 6rpx 0 0 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-m;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
margin-top: $margin - 10;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
font-size: $title-size-m;
|
||||
color: #999999;
|
||||
.idcardAdd-aline-write {
|
||||
margin-right: $margin;
|
||||
}
|
||||
}
|
||||
&.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
&.radioAline {
|
||||
display: flex;
|
||||
.base-block-name {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding $padding - 20;
|
||||
box-sizing: border-box;
|
||||
z-index: 9;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
border: 2rpx solid transparent;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: calc(50% - 30rpx);
|
||||
margin: 0 15rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
float: left;
|
||||
&:first-child {
|
||||
background-color: transparent;
|
||||
border-color: $mian-color;
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backFirst {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
z-index: 99;
|
||||
background-color: rgba(0, 0, 0, .6);
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.contFirst {
|
||||
display: -webkit-box;
|
||||
-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;
|
||||
.tipsWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tipsWhite-top {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tipsWhite-name {
|
||||
text-align: center;
|
||||
color: #111111;
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 30rpx;
|
||||
padding-bottom: $padding;
|
||||
border-bottom: solid #F6F6F6 2rpx;
|
||||
}
|
||||
|
||||
.tipsWhite-text {
|
||||
font-size: 30rpx;
|
||||
color: #666666;
|
||||
line-height: 48rpx;
|
||||
text-align: center;
|
||||
padding: $padding + 10 0;
|
||||
}
|
||||
|
||||
.tipsWhite-btn {
|
||||
line-height: 90rpx;
|
||||
border-top: 2rpx solid #F6F6F6;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
.idcardBtn-go {
|
||||
width: 50%;
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
text-align: center;
|
||||
&.active {
|
||||
background-color: #ffffff;
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
927
pages/modify/modify-base.vue
Normal file
927
pages/modify/modify-base.vue
Normal file
@@ -0,0 +1,927 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="base">
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
<view class="base-number">
|
||||
<!-- 6/12 -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>姓名
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.name}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>性别
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.sex}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>年龄
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.age}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>属相
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.zodiak}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证号
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.id_card}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证地址
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>婚姻<image v-if="baseData.check_params.marriage" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.marriage.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<picker class="idcardAdd-picker" @change="marriageChange($event)" :range="marriage">
|
||||
<view class="uni-input">{{marriage[marriageIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.marriage">
|
||||
<picker class="idcardAdd-picker" @change="marriageChange($event)" :range="marriage">
|
||||
<view class="uni-input">{{marriage[marriageIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</block>
|
||||
<view class="idcardAdd-picker" v-else>
|
||||
<view class="uni-input grey">{{marriage[marriageIndex]}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block" v-if="marriageIndex == 1">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>配偶 <image v-if="baseData.check_params.mate" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.mate.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="mate" maxlength="4" type="text" placeholder="请输入配偶姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'mate')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.mate">
|
||||
<input class="base-block-input" :value="mate" maxlength="4" type="text" placeholder="请输入配偶姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'mate')"/>
|
||||
</block>
|
||||
<block v-else-if="marriageIndex == 1 && baseData.check_params.marriage">
|
||||
<input class="base-block-input" :value="mate" maxlength="4" type="text" placeholder="请输入配偶姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'mate')"/>
|
||||
</block>
|
||||
<view class="idcardAdd-picker" v-else>
|
||||
<input class="base-block-input grey" disabled :value="mate" maxlength="4" type="text" placeholder="请输入配偶姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'mate')"/>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block" :class="{baseAline : marriageIndex == 1}">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>学历 <image v-if="baseData.check_params.education" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.education.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<picker class="idcardAdd-picker" @change="educationChange($event)" :range="education">
|
||||
<view class="uni-input">{{education[educationIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.education">
|
||||
<picker class="idcardAdd-picker" @change="educationChange($event)" :range="education">
|
||||
<view class="uni-input">{{education[educationIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</block>
|
||||
<view class="idcardAdd-picker" v-else>
|
||||
<view class="grey">{{education[educationIndex]}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>毕业学院 <image v-if="baseData.check_params.school" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.school.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" type="text" :value="school" placeholder="请输入毕业学院" placeholder-class="placeholderClass" @input="blurInput($event, 'school')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.school">
|
||||
<input class="base-block-input" type="text" :value="school" placeholder="请输入毕业学院" placeholder-class="placeholderClass" @input="blurInput($event, 'school')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" type="text" :value="school" placeholder="请输入毕业学院" placeholder-class="placeholderClass" @input="blurInput($event, 'school')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系电话 <image v-if="baseData.check_params.mobile" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.mobile.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" maxlength="11" :value="mobile" type="tel" placeholder="请输入联系电话" placeholder-class="placeholderClass" @input="blurInput($event, 'mobile')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.mobile">
|
||||
<input class="base-block-input" maxlength="11" :value="mobile" type="tel" placeholder="请输入联系电话" placeholder-class="placeholderClass" @input="blurInput($event, 'mobile')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" maxlength="11" :value="mobile" type="tel" placeholder="请输入联系电话" placeholder-class="placeholderClass" @input="blurInput($event, 'mobile')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系地址 <image v-if="baseData.check_params.contact_address" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.contact_address.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<view class="base-block-write from-city-picker">
|
||||
<uni-data-picker
|
||||
:localdata="cityPicker"
|
||||
:border="false"
|
||||
split="-"
|
||||
placeholder="选择城市"
|
||||
v-model="baseData.province_id"
|
||||
@change="onCityPicker"
|
||||
></uni-data-picker>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<view class="base-block-write from-city-picker" v-if="baseData.check_params.contact_address">
|
||||
<uni-data-picker
|
||||
:localdata="cityPicker"
|
||||
:border="false"
|
||||
split="-"
|
||||
placeholder="选择城市"
|
||||
v-model="baseData.province_id"
|
||||
@change="onCityPicker"
|
||||
></uni-data-picker>
|
||||
</view>
|
||||
<view class="base-block-textarea" style="color: #999;" v-else>
|
||||
<textarea disabled placeholder-style="font-size: 30rpx; color: #999999" maxlength="500" :value="baseData.contact_address"/>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-textarea" v-if="baseData.is_finish == 0">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" maxlength="500" :value="address" @input="blurInput($event, 'address')" placeholder="请填写详细地址..."/>
|
||||
</view>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<view class="base-block-textarea" v-if="baseData.check_params.contact_address">
|
||||
<textarea placeholder-style="font-size: 30rpx; color: #999999" maxlength="500" :value="address" @input="blurInput($event, 'address')" placeholder="请填写详细地址..."/>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 现单位名称 -->
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>现单位名称 <image v-if="baseData.check_params.now_company_name" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.now_company_name.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<view class="base-block-textarea">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" :value="companyName" @input="blurInput($event, 'companyName')" placeholder="请填写现单位名称"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.now_company_name">
|
||||
<textarea placeholder-style="font-size: 30rpx; color: #999999" :value="companyName" @input="blurInput($event, 'companyName')" placeholder="请填写现单位名称"/>
|
||||
</block>
|
||||
<textarea v-else disabled style="color: #999999" placeholder-style="font-size: 30rpx; color: #999999" :value="companyName" @input="blurInput($event, 'companyName')" placeholder="请填写现单位名称"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 现单位地址 -->
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>现单位地址 <image v-if="baseData.check_params.now_company_address" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.now_company_address.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<view class="base-block-textarea">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" :value="companyAddress" @input="blurInput($event, 'companyAddress')" placeholder="请填写现单位地址"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.now_company_address">
|
||||
<textarea placeholder-style="font-size: 30rpx; color: #999999" :value="companyAddress" @input="blurInput($event, 'companyAddress')" placeholder="请填写现单位地址"/>
|
||||
</block>
|
||||
<textarea v-else disabled style="color: #999999" placeholder-style="font-size: 30rpx; color: #999999" :value="companyAddress" @input="blurInput($event, 'companyAddress')" placeholder="请填写现单位地址"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 现居住地址 -->
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>现居住地址 <image v-if="baseData.check_params.now_domicile" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.now_domicile.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<view class="base-block-textarea">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" :value="domicile" @input="blurInput($event, 'domicile')" placeholder="请填写现居住地址"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.now_domicile">
|
||||
<textarea placeholder-style="font-size: 30rpx; color: #999999" :value="domicile" @input="blurInput($event, 'domicile')" placeholder="请填写现居住地址"/>
|
||||
</block>
|
||||
<textarea v-else disabled style="color: #999999" placeholder-style="font-size: 30rpx; color: #999999" :value="domicile" @input="blurInput($event, 'domicile')" placeholder="请填写现居住地址"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 新增联系人 2021-04-12 -->
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系人1<image v-if="baseData.check_params.one_contact" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.one_contact.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="oneContact" type="text" placeholder="预留联系人1姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.one_contact">
|
||||
<input class="base-block-input" :value="oneContact" type="text" placeholder="预留联系人1姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="oneContact" type="text" placeholder="预留联系人1姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>关系<image v-if="baseData.check_params.one_contact_relation" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.one_contact_relation.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="oneContactRelation" type="text" placeholder="预留联系人1关系" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact_relation')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.one_contact_relation">
|
||||
<input class="base-block-input" :value="oneContactRelation" type="text" placeholder="预留联系人1关系" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact_relation')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="oneContactRelation" type="text" placeholder="预留联系人关系" placeholder-class="placeholderClass" @input="blurInput($event, 'one_contact_relation')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>联系人2<image v-if="baseData.check_params.two_contact" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.two_contact.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="twoContact" type="text" placeholder="预留联系人2姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.two_contact">
|
||||
<input class="base-block-input" :value="twoContact" type="text" placeholder="预留联系人2姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="twoContact" type="text" placeholder="预留联系人2姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>关系<image v-if="baseData.check_params.two_contact_relation" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.two_contact_relation.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="twoContactRelation" type="text" placeholder="预留联系人2关系" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact_relation')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.two_contact_relation">
|
||||
<input class="base-block-input" :value="twoContactRelation" type="text" placeholder="预留联系人2关系" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact_relation')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="twoContactRelation" type="text" placeholder="预留联系人2关系" placeholder-class="placeholderClass" @input="blurInput($event, 'two_contact_relation')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>联系人3<image v-if="baseData.check_params.three_contact" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.three_contact.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="threeContact" type="text" placeholder="预留联系人3姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.three_contact">
|
||||
<input class="base-block-input" :value="threeContact" type="text" placeholder="预留联系人3姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="threeContact" type="text" placeholder="预留联系人3姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>关系<image v-if="baseData.check_params.three_contact_relation" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.three_contact_relation.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="threeContactRelation" type="text" placeholder="预留联系人3关系" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact_relation')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.three_contact_relation">
|
||||
<input class="base-block-input" :value="threeContactRelation" type="text" placeholder="预留联系人3关系" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact_relation')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="threeContactRelation" type="text" placeholder="预留联系人3关系" placeholder-class="placeholderClass" @input="blurInput($event, 'three_contact_relation')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>联系人4<image v-if="baseData.check_params.four_contact" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.four_contact.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="fourContact" type="text" placeholder="预留联系人4姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.four_contact">
|
||||
<input class="base-block-input" :value="fourContact" type="text" placeholder="预留联系人4姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="fourContact" type="text" placeholder="预留联系人4姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text></text>关系<image v-if="baseData.check_params.four_contact_relation" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.four_contact_relation.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<block v-if="baseData.is_finish == 0">
|
||||
<input class="base-block-input" :value="fourContactRelation" type="text" placeholder="预留联系人4关系" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact_relation')"/>
|
||||
</block>
|
||||
<block v-else-if="baseData.is_finish == 2">
|
||||
<block v-if="baseData.check_params.four_contact_relation">
|
||||
<input class="base-block-input" :value="fourContactRelation" type="text" placeholder="预留联系人4关系" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact_relation')"/>
|
||||
</block>
|
||||
<input v-else disabled class="base-block-input grey" :value="fourContactRelation" type="text" placeholder="预留联系人4关系" placeholder-class="placeholderClass" @input="blurInput($event, 'four_contact_relation')"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="introduce-btn">
|
||||
<button class="btn" size="mini" :disabled="disabled" @click="infoSubmit">提交审核</button>
|
||||
</view>
|
||||
|
||||
<!-- 驳回提示 -->
|
||||
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
|
||||
|
||||
<!-- 是否使用首次录入信息 -->
|
||||
<view class="backFirst" v-if="popFirst"></view>
|
||||
<view class="contFirst" v-if="popFirst">
|
||||
<view class="tipsWhite">
|
||||
<view class="tipsWhite-top">
|
||||
<view class="tipsWhite-name">
|
||||
温馨提示
|
||||
</view>
|
||||
<view class="tipsWhite-text">
|
||||
是否使用首次录入信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="tipsWhite-btn">
|
||||
<view class="idcardBtn-go active" @click="popFirst = false">
|
||||
暂不使用
|
||||
</view>
|
||||
<view class="idcardBtn-go" @click="goFirst">
|
||||
立即使用
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js';
|
||||
import mouldTips from '@/components/mould-tips.vue'
|
||||
import { userBase, basePut, create, createAll } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
components: {
|
||||
mouldTips
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
popFirst: false, // 首次录入信息状态
|
||||
disabled: false, // 按钮状态
|
||||
baseData: '', // 基础信息
|
||||
mobile : '', // 联系方式
|
||||
mate : '', // 配偶名称
|
||||
school : '', // 毕业学院
|
||||
address : '', // 联系地址
|
||||
companyName : '', // 现单位名称
|
||||
companyAddress : '', // 现单位地址
|
||||
domicile : '', // 现居住地址
|
||||
|
||||
oneContact : '', // 预留联系人1姓名
|
||||
oneContactRelation : '', // 预留联系人1姓名-关系
|
||||
twoContact :'', // 预留联系人2姓名
|
||||
twoContactRelation : '', // 预留联系人2姓名-关系
|
||||
threeContact : '', // 预留联系人3姓名
|
||||
threeContactRelation : '', // 预留联系人4姓名-关系
|
||||
fourContact : '', // 预留联系人4姓名
|
||||
fourContactRelation : '', // 预留联系人4姓名-关系
|
||||
|
||||
// 查看提示组件
|
||||
seeData : {
|
||||
seeShow : false,
|
||||
seeTitle: '',
|
||||
seeText : '',
|
||||
},
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
|
||||
cityPicker : [],
|
||||
}
|
||||
},
|
||||
onLoad() {},
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
|
||||
createAll().then(res => {
|
||||
this.cityPicker = res;
|
||||
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
userBase(this.$Route.query.id).then(res => {
|
||||
this.userId = res.base.business_order_user_id
|
||||
this.baseData = res.base
|
||||
this.education = res.base.educations
|
||||
this.marriage = res.base.marriages
|
||||
this.mobile = res.base.mobile || '' // 联系方式
|
||||
this.mate = res.base.mate || '' // 配偶名称
|
||||
this.school = res.base.school || '' // 毕业学院
|
||||
this.address = res.base.tmp_address || '' // 联系地址
|
||||
this.companyName = res.base.now_company_name || '' // 现单位名称
|
||||
this.companyAddress = res.base.now_company_address || '' // 现单位地址
|
||||
this.domicile = res.base.now_domicile || '' // 现居住地址
|
||||
|
||||
this.oneContact = res.base.one_contact || '' // 预留联系人1姓名
|
||||
this.oneContactRelation = res.base.one_contact_relation || '' // 预留联系人1姓名-关系
|
||||
this.twoContact = res.base.two_contact || '' // 预留联系人2姓名
|
||||
this.twoContactRelation = res.base.two_contact_relation || '' // 预留联系人2姓名-关系
|
||||
this.threeContact = res.base.three_contact || '' // 预留联系人3姓名
|
||||
this.threeContactRelation = res.base.three_contact_relation || '' // 预留联系人4姓名-关系
|
||||
this.fourContact = res.base.four_contact || '' // 预留联系人4姓名
|
||||
this.fourContactRelation = res.base.four_contact_relation || '' // 预留联系人4姓名-关系
|
||||
|
||||
|
||||
this.marriageIndex = res.base.marriage // 婚姻选择index
|
||||
this.educationIndex = res.base.education // 婚姻选择index
|
||||
|
||||
// 是否使用首次录入信息
|
||||
// if(res.base.is_finish == 0 && res.userBase) {
|
||||
// this.popFirst = true
|
||||
// this.baseId = res.userBase.user_base_id
|
||||
// }
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 跳转新页面-首次录入信息
|
||||
goFirst() {
|
||||
this.popFirst = false
|
||||
this.$Router.replace({name: 'userBase', params: {userId: this.userId, baseId: this.baseId, type: 'first'}})
|
||||
},
|
||||
|
||||
// 婚姻选择
|
||||
marriageChange(e) {
|
||||
this.marriageIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 学历选择
|
||||
educationChange(e) {
|
||||
this.educationIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 输入框
|
||||
blurInput(e, name) {
|
||||
let value = e.detail.value
|
||||
switch(name)
|
||||
{
|
||||
case 'mobile':{
|
||||
this.mobile = value
|
||||
break;
|
||||
}
|
||||
case 'mate':{
|
||||
this.mate = value
|
||||
break;
|
||||
}
|
||||
case 'school':{
|
||||
this.school = value
|
||||
break;
|
||||
}
|
||||
case 'address':{
|
||||
this.address = value
|
||||
break;
|
||||
}
|
||||
case 'companyName':{
|
||||
this.companyName = value
|
||||
break;
|
||||
}
|
||||
case 'companyAddress':{
|
||||
this.companyAddress = value
|
||||
break;
|
||||
}
|
||||
case 'domicile':{
|
||||
this.domicile = value
|
||||
break;
|
||||
}
|
||||
case 'one_contact':{
|
||||
this.oneContact = value
|
||||
break;
|
||||
}
|
||||
case 'one_contact_relation':{
|
||||
this.oneContactRelation = value
|
||||
break;
|
||||
}
|
||||
case 'two_contact':{
|
||||
this.twoContact = value
|
||||
break;
|
||||
}
|
||||
case 'two_contact_relation':{
|
||||
this.twoContactRelation = value
|
||||
break;
|
||||
}
|
||||
case 'three_contact':{
|
||||
this.threeContact = value
|
||||
break;
|
||||
}
|
||||
case 'three_contact_relation':{
|
||||
this.threeContactRelation = value
|
||||
break;
|
||||
}
|
||||
case 'four_contact':{
|
||||
this.fourContact = value
|
||||
break;
|
||||
}
|
||||
case 'four_contact_relation':{
|
||||
this.fourContactRelation = value
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 选择城市
|
||||
onCityPicker(e){
|
||||
let { value } = e.detail
|
||||
this.baseData.district_id = value[0].value
|
||||
this.baseData.city_id = value[1].value
|
||||
this.baseData.province_id = value[2].value
|
||||
this.btnSee = false
|
||||
},
|
||||
|
||||
// 修改基础信息 - 提交
|
||||
infoSubmit() {
|
||||
let data = {
|
||||
mobile : this.mobile, //联系方式
|
||||
mate : this.mate, //配偶姓名
|
||||
school : this.school, //毕业学院
|
||||
tmp_address : this.address, //联系地址
|
||||
now_company_name: this.companyName, // 现单位名称
|
||||
now_company_address: this.companyAddress, // 现单位地址
|
||||
now_domicile : this.domicile, // 现居住地址
|
||||
province_id : this.baseData.province_id,
|
||||
city_id : this.baseData.city_id,
|
||||
district_id : this.baseData.district_id,
|
||||
education : this.educationIndex, //学历
|
||||
marriage : this.marriageIndex ,//婚姻状态
|
||||
|
||||
one_contact : this.oneContact, // 预留联系人1姓名
|
||||
one_contact_relation : this.oneContactRelation, // 预留联系人1姓名-关系
|
||||
two_contact : this.twoContact, // 预留联系人2姓名
|
||||
two_contact_relation : this.twoContactRelation, // 预留联系人2姓名-关系
|
||||
three_contact : this.threeContact, // 预留联系人3姓名
|
||||
three_contact_relation : this.threeContactRelation,// 预留联系人4姓名-关系
|
||||
four_contact : this.fourContact, // 预留联系人4姓名
|
||||
four_contact_relation : this.fourContactRelation // 预留联系人4姓名-关系
|
||||
}
|
||||
basePut(this.baseData.business_order_user_id,data).then(res=>{
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: res,
|
||||
icon: "none"
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1)
|
||||
uni.hideLoading()
|
||||
}, 1500)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 提示组件 -- 赋值
|
||||
seeTips(title, text) {
|
||||
this.seeData.seeShow = true
|
||||
this.seeData.seeTitle = title
|
||||
this.seeData.seeText = text
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: transparent 140rpx solid;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.white {
|
||||
padding: $padding $padding 0;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 40rpx -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
width: calc(50% - 20rpx);
|
||||
margin: 0 10rpx $margin + 10;
|
||||
float: left;
|
||||
.base-block-name {
|
||||
margin-bottom: $margin - 10;
|
||||
color: #111111;
|
||||
display: flex;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
.base-notesIcon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 6rpx 0 0 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 44rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.grey {
|
||||
color: #999999;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
/deep/ .uni-data-tree-dialog {
|
||||
bottom: 150rpx;
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
z-index: 2;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backFirst {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
z-index: 99;
|
||||
background-color: rgba(0, 0, 0, .6);
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.contFirst {
|
||||
display: -webkit-box;
|
||||
-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;
|
||||
.tipsWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tipsWhite-top {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tipsWhite-name {
|
||||
text-align: center;
|
||||
color: #111111;
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 30rpx;
|
||||
padding-bottom: $padding;
|
||||
border-bottom: solid #F6F6F6 2rpx;
|
||||
}
|
||||
|
||||
.tipsWhite-text {
|
||||
font-size: 30rpx;
|
||||
color: #666666;
|
||||
line-height: 48rpx;
|
||||
text-align: center;
|
||||
padding: $padding + 10 0;
|
||||
}
|
||||
|
||||
.tipsWhite-btn {
|
||||
line-height: 90rpx;
|
||||
border-top: 2rpx solid #F6F6F6;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
.idcardBtn-go {
|
||||
width: 50%;
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
text-align: center;
|
||||
&.active {
|
||||
background-color: #ffffff;
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
480
pages/modify/modify-other.vue
Normal file
480
pages/modify/modify-other.vue
Normal file
@@ -0,0 +1,480 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="base">
|
||||
<view class="base-tab">
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon//bankIcon_01_active.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
银行信息
|
||||
</view>
|
||||
<view class="base-tab-tips" @click="$Router.replace({name: 'ModifyBank', params: {id: baseId}})">
|
||||
去完善 >
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-tab-spot">
|
||||
<text></text>
|
||||
<text></text>
|
||||
<text></text>
|
||||
</view>
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon/bankIcon_02.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
其他信息
|
||||
</view>
|
||||
<view class="base-tab-tips">
|
||||
待完善
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
<!-- <view class="base-number">
|
||||
6/12
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block" :class="{baseAline : items.type === 'text' || items.type === 'textarea' }" v-for="(items, itemsIndex) in backParams" :key="itemsIndex">
|
||||
<view class="base-block-name" v-if="items.label == 2">
|
||||
<text>*</text>{{items.title}}
|
||||
<image class="base-notesIcon" v-if="items.reason != ''" @click="seeTips('驳回原因', items.reason.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<!-- 描述 -->
|
||||
<block v-if="items.label == 2">
|
||||
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
||||
<mouldText class="idcardAdd-depict-textarea" :blur-placeholder="items.placeholder" :blur-value="items.value" @onTextarea="($event) => {items.value = $event}"></mouldText>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="introduce-btn">
|
||||
<view @click="$Router.replace({name: 'ModifyBank', params: {id: baseId}})" class="btn" size="mini">上一步</view>
|
||||
<button class="btn" size="mini" :disabled="disabled" @click="infoSubmit">提交审核</button>
|
||||
</view>
|
||||
|
||||
<!-- 驳回提示 -->
|
||||
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { userBank, cacheBank, bankPut, cacheBankPut } from '@/apis/interfaces/user'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldSelect from '@/components/mould_select.vue'
|
||||
import mouldDate from '@/components/mould-date.vue'
|
||||
import mouldTips from '@/components/mould-tips.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldSelect,
|
||||
mouldDate,
|
||||
mouldTips
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
baseId : '', // 银行id
|
||||
businessId: '',
|
||||
disabled : false, // 按钮状态
|
||||
backParams: '', // 基础信息
|
||||
|
||||
// 查看提示组件
|
||||
seeData : {
|
||||
seeShow : false,
|
||||
seeTitle: '',
|
||||
seeText : '',
|
||||
},
|
||||
|
||||
values : '',
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
|
||||
cacheData: [] ,//缓存数据
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.baseId = this.$Route.query.id
|
||||
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
userBank(this.$Route.query.id).then(res => {
|
||||
// 是否使用首次录入信息
|
||||
// if(res.is_finish == 0 && res.user_bank) {
|
||||
// this.popFirst = true
|
||||
// this.baseId = res.user_bank.user_bank_id
|
||||
// }
|
||||
|
||||
let { item, params, business_order_user_bank_id } = res;
|
||||
cacheBank(business_order_user_bank_id).then(StorageRes => {
|
||||
this.userId = res.business_order_user_bank_id
|
||||
uni.hideLoading()
|
||||
if(StorageRes === ''){
|
||||
this.backParams = params
|
||||
return
|
||||
}
|
||||
let storageParams = []
|
||||
storageParams = params.map(val => {
|
||||
if(val.type == 'checkbox' && StorageRes[val.key].length > 0){
|
||||
val.value = StorageRes[val.key]
|
||||
return val
|
||||
}
|
||||
if(val.type == 'select' && StorageRes[val.key] === null){
|
||||
val.value = 0
|
||||
return val
|
||||
}
|
||||
val.value = StorageRes[val.key] === null ? "" : StorageRes[val.key]
|
||||
return val;
|
||||
})
|
||||
this.backParams = storageParams
|
||||
|
||||
}).catch(StorageErr => {
|
||||
uni.showToast({
|
||||
title: StorageErr.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 线上保存 - 缓存
|
||||
cacheSave() {
|
||||
let SaveArr = new Object;
|
||||
this.backParams.map(val => {
|
||||
SaveArr[val.key] = val.value
|
||||
})
|
||||
|
||||
cacheBankPut(this.$Route.query.id, {...SaveArr}).then(res => {}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 提交信息
|
||||
infoSubmit() {
|
||||
let SaveArr = this.backParams.map(val => {
|
||||
return {
|
||||
key: val.key,
|
||||
value: val.value
|
||||
}
|
||||
})
|
||||
|
||||
bankPut(this.$Route.query.id, {
|
||||
data: SaveArr
|
||||
}).then(res => {
|
||||
// 保存
|
||||
this.cacheSave();
|
||||
|
||||
uni.showToast({
|
||||
title: res,
|
||||
icon: "none"
|
||||
})
|
||||
this.disabled = true
|
||||
setTimeout(() => {
|
||||
this.$Router.replace({name: 'User'})
|
||||
uni.hideLoading()
|
||||
// uni.removeStorage({//通过key(键值名)来删除对应数据
|
||||
// key:"saveArr" + this.$Route.query.id,
|
||||
// success() {}
|
||||
// })
|
||||
}, 1500)
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 提示组件 -- 赋值
|
||||
seeTips(title, text) {
|
||||
this.seeData.seeShow = true
|
||||
this.seeData.seeTitle = title
|
||||
this.seeData.seeText = text
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: transparent 140rpx solid;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.base-tab {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
padding: 0 $padding 20rpx 10rpx;
|
||||
position: relative;
|
||||
.base-tab-item {
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.base-tab-img {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
.base-tab-cont {
|
||||
padding-top: $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.base-tab-name {
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.base-tab-tips {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid #ffeaea;
|
||||
border-radius: $radius * 4;
|
||||
width: 110rpx;
|
||||
text-align: center;
|
||||
opacity: .8;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.base-tab-spot {
|
||||
text-align: center;
|
||||
width: 180rpx;
|
||||
float: left;
|
||||
margin-top: $margin;
|
||||
text {
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
display: inline-block;
|
||||
margin-left: 15rpx;
|
||||
&:nth-child(1) {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
opacity: .5;
|
||||
}
|
||||
&:nth-child(2) {
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
opacity: .8;
|
||||
}
|
||||
&:nth-child(3) {
|
||||
width: 16rpx;
|
||||
height: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.white {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 0 -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
// width: calc(50% - 20rpx);
|
||||
width: calc(100% - 20rpx);
|
||||
margin: 0 10rpx 0;
|
||||
float: left;
|
||||
.base-block-name {
|
||||
margin: $margin + 20 0 $margin - 10;
|
||||
color: #111111;
|
||||
display: flex;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
.base-notesIcon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 6rpx 0 0 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-m;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
font-size: $title-size-m;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding $padding - 20;
|
||||
box-sizing: border-box;
|
||||
z-index: 9;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
border: 2rpx solid transparent;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: calc(50% - 30rpx);
|
||||
margin: 0 15rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
float: left;
|
||||
&:first-child {
|
||||
background-color: transparent;
|
||||
border-color: $mian-color;
|
||||
color: $mian-color;
|
||||
}
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
209
pages/sheet/authSuccess.vue
Normal file
209
pages/sheet/authSuccess.vue
Normal file
@@ -0,0 +1,209 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="point">
|
||||
<image class="point-img" src="/static/imgs/authSuccess.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="@/static/imgs/general_back.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>
|
||||
|
||||
<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>
|
||||
207
pages/sheet/bale.vue
Normal file
207
pages/sheet/bale.vue
Normal file
@@ -0,0 +1,207 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- 推荐 -->
|
||||
<view class="recommend">
|
||||
<view class="item">
|
||||
<image class="loanBack" src="@/static/imgs/loanBack.png" mode="widthFix"></image>
|
||||
<image class="loanIcon" src="@/static/imgs/loanIcon.png" mode="widthFix"></image>
|
||||
<view class="loanTips">
|
||||
优选推荐
|
||||
</view>
|
||||
<block v-for="(item, index) in baleData" :key="index">
|
||||
<view class="title">
|
||||
<view class="title-left">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="title-right">
|
||||
<view class="title-price">
|
||||
<text>¥</text>{{item.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="exhibition">
|
||||
<view class="label" v-for="(items, itemsIndex) in item.items" :key="itemsIndex">
|
||||
<view class="label-title">
|
||||
<view class="label-name">
|
||||
{{items.business}}
|
||||
</view>
|
||||
<view class="label-tips">
|
||||
<text>{{items.title}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="label-text">
|
||||
<view class="nowrap label-show">
|
||||
{{items.type}}
|
||||
</view>
|
||||
<view class="label-price">
|
||||
¥{{items.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { baleSee } from '@/apis/interfaces/user'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baleData: [], // 服务包列表
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取服务包
|
||||
this.baleInfo()
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 服务包
|
||||
baleInfo(){
|
||||
baleSee(this.$Route.query.id).then(res => {
|
||||
this.baleData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #f6f6f6;
|
||||
height: 100vh;
|
||||
// height: calc(100vh - 44px);
|
||||
overflow-y: scroll;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.item {
|
||||
background-color: #ffffff;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius;
|
||||
margin-bottom: $margin;
|
||||
box-shadow: 0 0 10rpx rgba(0, 0, 0, .05);
|
||||
.title {
|
||||
display: flex;
|
||||
line-height: 48rpx;
|
||||
font-size: $title-size + 2;
|
||||
font-weight: 600;
|
||||
margin: $margin 0 $margin - 15;
|
||||
.title-left {
|
||||
flex: 1;
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
}
|
||||
.title-right {
|
||||
display: flex;
|
||||
color: #111111;
|
||||
text {
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.title-price {
|
||||
font-size: $title-size + 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
.exhibition {
|
||||
background: #FFF5F9;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius;
|
||||
.label {
|
||||
margin-bottom: $margin + 25;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.label-title {
|
||||
display: flex;
|
||||
margin-bottom: $margin - 10;
|
||||
.label-name {
|
||||
line-height: 38rpx;
|
||||
color: #111111;
|
||||
}
|
||||
.label-tips {
|
||||
display: flex;
|
||||
text {
|
||||
display: flex;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
font-size: $title-size-sm - 2;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 10rpx;
|
||||
margin-left: 10rpx;
|
||||
height: 38rpx;
|
||||
line-height: 38rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.label-text {
|
||||
display: flex;
|
||||
font-size: $title-size-m;
|
||||
.label-show {
|
||||
color: #999999;
|
||||
flex: 1;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.label-price {
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 推荐位
|
||||
.recommend {
|
||||
.item {
|
||||
padding-top: $padding * 3;
|
||||
position: relative;
|
||||
border: 4rpx solid $mian-color;
|
||||
box-shadow: 0 0 10rpx rgba(3, 55, 190, .05);
|
||||
.loanBack {
|
||||
width: 220rpx;
|
||||
position: absolute;
|
||||
left: -16rpx;
|
||||
top: 30rpx;
|
||||
}
|
||||
.loanTips {
|
||||
width: 180rpx;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 30rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
z-index: 2;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.loanIcon {
|
||||
width: 74rpx;
|
||||
position: absolute;
|
||||
top: 30rpx;
|
||||
right: 30rpx;
|
||||
}
|
||||
.title-right {
|
||||
color: $mian-color !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
630
pages/sheet/basic-备份.vue
Normal file
630
pages/sheet/basic-备份.vue
Normal file
@@ -0,0 +1,630 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="idcard">
|
||||
<view class="idcardInfo-name">
|
||||
张曼曼
|
||||
</view>
|
||||
<view class="idcardInfo-label">
|
||||
13836142496
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="idcardBorder">
|
||||
<view class="idcardTitle">
|
||||
添加基本信息
|
||||
</view>
|
||||
<!-- 信用卡信息 -->
|
||||
<block v-if="publicArr.length > 0">
|
||||
<view class="idcardAdd" v-for="(item, index) in publicArr" :key="index">
|
||||
<!-- :class="{active : item.openState}" -->
|
||||
<view class="idcardBottom active">
|
||||
<view class="idcardAdd-block">
|
||||
<view class="idcardAdd-block-name" @click="lsa">
|
||||
<text>*</text>银行
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
<picker class="idcardAdd-picker" @change="bankChange($event, index)" :range="workOneArr" range-key="title">
|
||||
<view class="uni-input">{{workOneArr[workOneIndex].title}}</view>
|
||||
</picker>
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardAdd-block" v-if="item.institution.length > 0">
|
||||
<view class="idcardAdd-block-name">
|
||||
<text>*</text>业务类型
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
<mouldPicker class="idcardAdd-picker" ref="child" :bank-list="item.institution" @bankPicker="workChange($event, index)"></mouldPicker>
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
<block v-for="(keyItem, keyIndex) in item.rootData" :key="keyIndex">
|
||||
<view class="idcardAdd-block">
|
||||
<view class="idcardAdd-block-name" v-if="keyItem.pre_key == null || keyItem.pre_value == item.subVal[keyItem.pre_key]">
|
||||
<text>*</text>{{keyItem.title}}
|
||||
</view>
|
||||
|
||||
<!-- 单输入框 -->
|
||||
<block v-if="keyItem.pre_key == null || keyItem.pre_value == item.subVal[keyItem.pre_key]">
|
||||
<view class="idcardAdd-block-write" v-if="keyItem.type === 'price' || keyItem.type === 'number'">
|
||||
<!-- <mouldInput class="idcardAdd-input" @onValue="($event) => {item.subVal[keyItem.key] = $event.detail.value}"></mouldInput> -->
|
||||
<mouldInput class="idcardAdd-input" :input-type="keyItem.type" @onValue="($event) => {item.subVal[keyItem.key] = $event}"></mouldInput>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 单选 -->
|
||||
<view class="idcardAdd-aline" v-if="keyItem.type === 'radio'">
|
||||
<mouldRadio :radio-list="keyItem.options" @onRadio="($event) => {item.subVal[keyItem.key] = $event}"></mouldRadio>
|
||||
</view>
|
||||
|
||||
<!-- 多选 -->
|
||||
<block v-if="keyItem.type === 'checkbox'">
|
||||
<mouldCheckbox :checkbox-list="keyItem.options" @onCheckbox="($event) => {item.subVal[keyItem.key] = $event}"></mouldCheckbox>
|
||||
</block>
|
||||
|
||||
<!-- 描述 -->
|
||||
<view class="idcardAdd-block-write idcardAdd-depict" v-if="keyItem.type === 'textarea'">
|
||||
<mouldText class="idcardAdd-depict-textarea" @onTextarea="($event) => {item.subVal[keyItem.key] = $event}"></mouldText>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="open">
|
||||
<view class="open-text" @click="recordTap(index)">
|
||||
<image src="@/static/imgs/openArrow.png" mode="widthFix" :class="{active : item.openState}"></image>{{item.openState ? '收起' : '展开'}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="noContent">
|
||||
<image class="noContent-img" src="@/static/imgs/basic_tips.png" mode="widthFix"></image>
|
||||
<view class="noContent-name">
|
||||
什么都没有,好无聊......
|
||||
</view>
|
||||
<view class="noContent-btn" @click="addTypePop = true">
|
||||
添加新信息
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="reminder">
|
||||
<image class="reminder-img" src="@/static/imgs/reminderIcon.png"></image>
|
||||
<view class="reminder-text">温馨提示:为给您匹配最准确方案,请您如实填写以上信息!</view>
|
||||
</view>
|
||||
<view class="idcardBtn">
|
||||
<view class="idcardBtn-go active" @click="addTypePop = true">
|
||||
添加新信息
|
||||
</view>
|
||||
<view class="idcardBtn-go" @click="basicSubmit">
|
||||
确认提交
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 选择添加类型 -->
|
||||
<view class="addType-back" v-if="addTypePop"></view>
|
||||
<view class="addType-cont" v-if="addTypePop">
|
||||
<view class="addType-white">
|
||||
<view class="addType-title">
|
||||
请选择业务类型
|
||||
</view>
|
||||
<scroll-view class="addType-list" scroll-x="true" show-scrollbar="false">
|
||||
<view class="addType-item" :class="{active : workId == item.business_id}" @click="addClick(item.business_id)" v-for="(item, index) in workArr" :key="index">
|
||||
<image class="addType-img" :src="item.business_id == 1 ? '/static/imgs/addType_icon1.png' : '/static/imgs/addType_icon2.png'" mode="widthFix"></image>
|
||||
<view class="addType-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="addType-btn">
|
||||
<view class="addType-labor" @click="addTypePop = false">
|
||||
取消
|
||||
</view>
|
||||
<view class="addType-labor" @click="addCard">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { workIndex, workOne, workLevel, workStore } from '@/apis/interfaces/index'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldPicker from '@/components/mould-picker.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldPicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
workArr : [], // 主业务数组
|
||||
workId : 1, // 主业务类型 1为信用卡 2为网贷
|
||||
addTypePop : false, // 业务类型弹框
|
||||
wayState : false, // 催收状况是否显示
|
||||
// 主业务机构选项
|
||||
workOneArr : [],
|
||||
workOneIndex : 0,
|
||||
|
||||
// 二级业务类型选项
|
||||
workTwoIndex : 0,
|
||||
|
||||
// 添加信息卡片数组
|
||||
publicArr : [],
|
||||
|
||||
business_orderId: '' // 临时方案id
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// 获取主业务
|
||||
this.workData();
|
||||
},
|
||||
methods: {
|
||||
// 主业务数据
|
||||
workData() {
|
||||
workIndex().then(res => {
|
||||
this.workArr = res
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择主业务类型 -- 弹出
|
||||
addClick(e) {
|
||||
this.workId = e
|
||||
},
|
||||
|
||||
// 添加业务卡片
|
||||
addCard(){
|
||||
// 获取主业务机构
|
||||
this.oneData();
|
||||
},
|
||||
|
||||
// 主业务机构
|
||||
oneData(){
|
||||
workOne(this.workId).then(res => {
|
||||
// res.unshift({
|
||||
// institution_id: 0,
|
||||
// title: "请选择"
|
||||
// })
|
||||
this.addTypePop = false;
|
||||
this.workOneArr = res;
|
||||
const dataArrItem = res[this.workOneIndex]
|
||||
this.twoData(dataArrItem.institution_id);
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 二级业务类型
|
||||
twoData(id) {
|
||||
workLevel(id).then(res => {
|
||||
const dataArrItem = res[this.workTwoIndex].params
|
||||
let dataKeys = {
|
||||
rootData : dataArrItem,
|
||||
subVal : {}, // 活数据 -填写
|
||||
institution : res,// 业务列表
|
||||
typeId : res[this.workTwoIndex].type_id, // 业务类型id
|
||||
bankId : this.workOneArr[this.workOneIndex].institution_id, // 银行/机构-类型
|
||||
businessId : this.workId
|
||||
}
|
||||
dataArrItem.map(val => {
|
||||
dataKeys.subVal[val.key] = '';
|
||||
})
|
||||
this.publicArr.push(dataKeys)
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 业务选择
|
||||
bankChange(e, index) {
|
||||
this.workTwoIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 机构/银行选择 子组件返回值
|
||||
bankShow(e, index) {
|
||||
let { detail } = e;
|
||||
|
||||
},
|
||||
|
||||
// 删除卡片
|
||||
removeCard(index){
|
||||
if(index === 0) return
|
||||
this.symptomsArr.splice(index, 1)
|
||||
},
|
||||
|
||||
// 展开全部
|
||||
recordTap(index){
|
||||
// let itemObj = this.symptomsArr[index]
|
||||
// itemObj.recordShow = !itemObj.recordShow
|
||||
},
|
||||
|
||||
// 提交信息
|
||||
basicSubmit(){
|
||||
let newArr = this.publicArr.map(val => {
|
||||
val.subVal.institution_id = val.bankId
|
||||
val.subVal.type_id = val.typeId
|
||||
val.subVal.business_id = val.businessId
|
||||
return val.subVal
|
||||
})
|
||||
|
||||
workStore({
|
||||
type: 'self',
|
||||
data: newArr
|
||||
}).then(res => {
|
||||
// 临时的id,为了做跳转
|
||||
this.$Router.push({name: 'sheetEstimate', params: {id: res.business_order_id}})
|
||||
// this.business_orderId = res.business_order_id
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
// this.$Router.push({name: 'sheetEstimate'})
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.idcardBorder {
|
||||
border-bottom: 200rpx solid transparent;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius * 2 $radius * 2 0 0;
|
||||
position: relative;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
top: -100rpx;
|
||||
}
|
||||
.idcard {
|
||||
margin-bottom: $margin * 2;
|
||||
background-color: #446EFE;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
padding: $padding * 2 $padding $padding * 3;
|
||||
.idcardInfo-name {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
.idcardTitle {
|
||||
color: #446EFE;
|
||||
font-size: $title-size + 4;
|
||||
font-weight: 600;
|
||||
margin-bottom: $margin;
|
||||
}
|
||||
.idcardAdd {
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 0 20rpx rgba(0, 0, 0, .1);
|
||||
border-radius: $radius;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.idcardAdd-title {
|
||||
display: flex;
|
||||
.idcardAdd-name {
|
||||
flex: 1;
|
||||
color: #446EFE;
|
||||
font-weight: 600;
|
||||
}
|
||||
.idcardAdd-tel {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
background-color: #ffeded;
|
||||
color: #FF0000;
|
||||
border-radius: $radius;
|
||||
padding: 0 15rpx 0 10rpx;
|
||||
line-height: 44rpx;
|
||||
.idcardAdd-btn {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 7rpx 6rpx 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardBottom {
|
||||
height: 340rpx;
|
||||
transition: .5s;
|
||||
border-bottom: 100rpx solid transparent;
|
||||
&.active {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.idcardAdd-block {
|
||||
margin-top: $margin + 10;
|
||||
position: relative;
|
||||
.idcardAdd-block-name {
|
||||
margin-bottom: $margin - 10;
|
||||
color: #111111;
|
||||
text {
|
||||
color: #FF0000;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.idcardAdd-block-write {
|
||||
background-color: #F6F6F6;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
.open {
|
||||
text-align: center;
|
||||
margin-top: $margin;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
background-color: #ffffff;
|
||||
z-index: 2;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
padding: $padding 0;
|
||||
.open-text {
|
||||
background-color: #ecf0ff;
|
||||
display: inline-block;
|
||||
color: #446EFE;
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.idcardAdd-aline-name {
|
||||
flex: 1;
|
||||
text {
|
||||
color: #FF0000;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.idcardAdd-depict {
|
||||
line-height: 28rpx !important;
|
||||
height: auto !important;
|
||||
position: relative;
|
||||
.idcardAdd-depict-number {
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
bottom: $padding;
|
||||
right: $padding;
|
||||
color: #999999;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.idcardAdd-depict-textarea {
|
||||
padding: $padding 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.noContent {
|
||||
text-align: center;
|
||||
padding-top: $padding * 5;
|
||||
.noContent-img {
|
||||
width: 43%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.noContent-name {
|
||||
line-height: 60rpx;
|
||||
color: #999999;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.noContent-btn {
|
||||
display: inline-block;
|
||||
background-color: #FEA044;
|
||||
color: #ffffff;
|
||||
border-radius: $radius * 5;
|
||||
text-align: center;
|
||||
font-size: $title-size-lg;
|
||||
padding: 0 $padding + 10;
|
||||
line-height: 78rpx;
|
||||
margin-top: $margin + 10;
|
||||
}
|
||||
}
|
||||
|
||||
.reminder {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 150rpx;
|
||||
background-color: #ffffff;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
height: 140rpx;
|
||||
box-sizing: border-box;
|
||||
padding: 25rpx $padding;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
color: #FEA044;
|
||||
font-size: $title-size-lg;
|
||||
border-bottom: 2rpx solid #f5f5f5;
|
||||
.reminder-img {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
.reminder-text {
|
||||
width: calc(100% - 52rpx);
|
||||
margin-left: 20rpx;
|
||||
line-height: 42rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.idcardBtn {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #ffffff;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
padding: 0 20rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.idcardBtn-go {
|
||||
width: calc(50% - 20rpx);
|
||||
margin: $margin 10rpx;
|
||||
background-color: #446EFE;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-lg;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
text-align: center;
|
||||
border: 2rpx solid #ffffff;
|
||||
&.active {
|
||||
background-color: #ffffff;
|
||||
border-color: #446EFE;
|
||||
color: #446EFE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 业务类型
|
||||
.addType-back {
|
||||
background-color: rgba(0, 0, 0, .6);
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
.addType-cont {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 100;
|
||||
padding: 0 $padding * 2;
|
||||
box-sizing: border-box;
|
||||
.addType-white {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
padding: $padding 0;
|
||||
.addType-title {
|
||||
line-height: 60rpx;
|
||||
text-align: center;
|
||||
margin-bottom: $margin;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.addType-list {
|
||||
background-color: #fafafa;
|
||||
padding: $padding + 10 $padding + 10 $padding;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
.addType-item {
|
||||
display: inline-block;
|
||||
border: 2rpx solid #f2f2f2;
|
||||
overflow: hidden;
|
||||
padding: $padding $padding + 10;
|
||||
border-radius: $radius-m;
|
||||
background-color: #ffffff;
|
||||
margin-right: $margin + 10;
|
||||
&.active {
|
||||
border-color: #FEA044;
|
||||
}
|
||||
.addType-img {
|
||||
width: 140rpx;
|
||||
}
|
||||
.addType-name {
|
||||
margin-top: 10rpx;
|
||||
color: #787878;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
&.active {
|
||||
.addType-name {
|
||||
color: #FEA044;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.addType-btn {
|
||||
display: flex;
|
||||
padding: $padding + 10 $padding - 10 10rpx;
|
||||
box-sizing: border-box;
|
||||
.addType-labor {
|
||||
flex: 2;
|
||||
margin: 0 $margin - 10;
|
||||
text-align: center;
|
||||
background-color: #FEA044;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
line-height: 74rpx;
|
||||
font-size: $title-size-lg;
|
||||
border: 2rpx solid #FEA044;
|
||||
&:first-child {
|
||||
background-color: #ffffff;
|
||||
color: #FEA044;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
827
pages/sheet/basic.vue
Normal file
827
pages/sheet/basic.vue
Normal file
@@ -0,0 +1,827 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="idcard">
|
||||
<view class="idcardInfo-name">
|
||||
{{userData.nickname}}
|
||||
</view>
|
||||
<view class="idcardInfo-label">
|
||||
{{userData.username}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="idcardBorder">
|
||||
<view class="idcardTitle">
|
||||
添加基本信息
|
||||
</view>
|
||||
<!-- 信用卡信息 -->
|
||||
<block v-if="serviceArr.length > 0">
|
||||
<view class="idcardAdd" v-for="(item, index) in serviceArr" :key="index">
|
||||
<view class="idcardBottom" :class="{active : item.openState}">
|
||||
<!-- 机构 -->
|
||||
<view class="idcardAdd-block">
|
||||
<view class="idcardAdd-block-name">
|
||||
<view class="idcardAdd-block-see">
|
||||
<text>*</text>{{item.subVal.business_id == 1 ? '信用卡' : '贷款'}}
|
||||
</view>
|
||||
<view class="locationActive" v-if="!item.openState">
|
||||
<text>{{item.institution[item.institutionIndex].title}}</text>
|
||||
<text>{{item.fromType[item.fromIndex].title}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
|
||||
<!-- 新筛选 带搜索 -->
|
||||
<view class="idcardAdd-picker" style="width: 100%;" @click="onShowInstitution(item.institution, item, index)">
|
||||
<view class="institution-picker-text nowrap">{{item.institution[item.institutionIndex].title}}</view>
|
||||
<u-icon size="12" color="#999" name="arrow-down-fill"></u-icon>
|
||||
</view>
|
||||
|
||||
<!-- 老筛选备份 -->
|
||||
<!-- <picker :value="item.institutionIndex" @change="institutionChange($event, item, index)" :range="item.institution" range-key="title">
|
||||
<view class="uni-input">{{item.institution[item.institutionIndex].title}}</view>
|
||||
</picker> -->
|
||||
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="idcardAdd-block-remove" @click="onRemove(index)" v-if="serviceArr.length > 1">
|
||||
<image src="@/static/imgs/removeIcon.png" mode="widthFix"></image>移出
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 业务类型 -->
|
||||
<view class="idcardAdd-block">
|
||||
<view class="idcardAdd-block-name">
|
||||
<view class="idcardAdd-block-see">
|
||||
<text>*</text>业务类型
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
<picker class="idcardAdd-picker" :range="item.fromType" range-key="title" :value="item.fromIndex" @change="businessChange($event, item, index)">
|
||||
<view class="institution-picker-text nowrap">{{item.fromType[item.fromIndex].title}}</view>
|
||||
</picker>
|
||||
<!-- <mouldPicker class="idcardAdd-picker" ref="child" :bank-list="item.fromType" :bank-value="item.fromIndex" @bankPicker="businessChange($event, item, index)"></mouldPicker> -->
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 表单部分 -->
|
||||
<block v-for="(keyItem, keyIndex) in item.froms" :key="keyIndex" v-if="item.subVal[keyIndex.pre_key] == keyIndex.pre_value">
|
||||
<view class="idcardAdd-block" v-if="keyItem.pre_key == null || keyItem.pre_value == item.subVal[keyItem.pre_key]">
|
||||
<view class="idcardAdd-block-name">
|
||||
<view class="idcardAdd-block-see">
|
||||
<text>*</text>{{keyItem.title}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 单输入框 -->
|
||||
<view class="idcardAdd-block-write" v-if="keyItem.type === 'price' || keyItem.type === 'number' || keyItem.type === 'day' || keyItem.type === 'text'">
|
||||
<mouldInput :blur-value="item.subVal[keyItem.key]" class="idcardAdd-input" :input-type="keyItem.type" @onValue="($event) => {item.subVal[keyItem.key] = $event}"></mouldInput>
|
||||
</view>
|
||||
|
||||
<!-- 单选 -->
|
||||
<view class="idcardAdd-aline" v-if="keyItem.type === 'radio'">
|
||||
<radio-group @change="item.subVal[keyItem.key] = $event.detail.value">
|
||||
<label class="idcardAdd-aline-write" v-for="(radioItem, radioIndex) in keyItem.options" :key="radioIndex">
|
||||
<radio class="radio-input" color="#446EFE" style="transform:scale(.65)" :checked="radioIndex === item.subVal[keyItem.key]" :value="radioIndex"/>{{radioItem}}
|
||||
</label>
|
||||
</radio-group>
|
||||
<!-- <mouldRadio :radio-list="keyItem.options" @onRadio="($event) => {item.subVal[keyItem.key] = $event}"></mouldRadio> -->
|
||||
</view>
|
||||
|
||||
<!-- 多选 -->
|
||||
<block v-if="keyItem.type === 'checkbox'">
|
||||
<!-- <checkbox-group @change="item.subVal[keyItem.key] = $event.detail.value">
|
||||
<view class="idcardAdd-multi-write" v-for="(letterItem, letterIndex) in keyItem.options" :key="letterIndex">
|
||||
<checkbox :value="letterIndex.toString()" color="#4e7bfe" style="transform:scale(.6); margin-top: -3rpx;"/>
|
||||
<text>{{letterItem}}</text>
|
||||
</view>
|
||||
</checkbox-group> -->
|
||||
<mouldCheckbox :checkbox-list="keyItem.options" :checkbox-vlaue="item.subVal[keyItem.key] || []" @onCheckbox="($event) => {item.subVal[keyItem.key] = $event}"></mouldCheckbox>
|
||||
</block>
|
||||
|
||||
<!-- 下拉框 -->
|
||||
<view class="idcardAdd-block-write" v-if="keyItem.type === 'select'">
|
||||
<picker class="idcardAdd-picker" :value="item.subVal[keyItem.key] ? item.subVal[keyItem.key] : '0'" :range="keyItem.options" @change="item.subVal[keyItem.key] = $event.detail.value">
|
||||
<view class="uni-input" v-if="item.subVal[keyItem.key]">{{keyItem.options[item.subVal[keyItem.key]]}}</view>
|
||||
<view class="uni-input" v-else>{{keyItem.options[0]}}</view>
|
||||
</picker>
|
||||
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<!-- 描述 -->
|
||||
<view class="idcardAdd-block-write idcardAdd-depict" v-if="keyItem.type === 'textarea'">
|
||||
<mouldText class="idcardAdd-depict-textarea" :blur-value="item.subVal[keyItem.key]" @onTextarea="($event) => {item.subVal[keyItem.key] = $event}"></mouldText>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="open">
|
||||
<view class="open-text" @click="recordTap(index)">
|
||||
<image src="@/static/imgs/openArrow.png" mode="widthFix" :class="{active : item.openState}"></image>{{item.openState ? '收起' : '展开'}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="noContent">
|
||||
<image class="noContent-img" src="@/static/imgs/basic_tips.png" mode="widthFix"></image>
|
||||
<view class="noContent-name">
|
||||
什么都没有,好无聊......
|
||||
</view>
|
||||
<view class="noContent-btn" @click="addTypePop = true">
|
||||
添加新信息
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="reminder">
|
||||
<image class="reminder-img" src="@/static/imgs/reminderIcon.png"></image>
|
||||
<view class="reminder-text">温馨提示:为了匹配最准确方案,请如实填写信息</view>
|
||||
</view>
|
||||
<view class="idcardBtn">
|
||||
<view class="idcardBtn-go active" @click="addTypePop = true">
|
||||
添加新信息
|
||||
</view>
|
||||
<view class="idcardBtn-go" @click="onSubmit">
|
||||
确认提交
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 选择添加类型 -->
|
||||
<view class="addType-back" v-if="addTypePop"></view>
|
||||
<view class="addType-cont" v-if="addTypePop">
|
||||
<view class="addType-title">
|
||||
请选择业务类型
|
||||
</view>
|
||||
<block v-for="(item, index) in businessArr" :key="index">
|
||||
<view class="create-type-item" :class="{'active': item.business_id == businessId}" @click="onAdd(item.business_id, item.title)">
|
||||
<image class="create-type-icon" :src="item.cover_url" mode="aspectFill"></image>
|
||||
<view class="create-type-text">
|
||||
<view class="title nowrap">{{item.title || '-'}}</view>
|
||||
<view class="submit nowrap">{{item.subtitle || '-'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<image class="addType-close" src="/static/imgs/payClose.png" mode="aspectFill" @click="addTypePop = false"></image>
|
||||
</view>
|
||||
|
||||
<!-- 机构筛选弹出层 -->
|
||||
<oct-mechanism-picker
|
||||
ref="institutionPicker"
|
||||
title="选择办理机构"
|
||||
:columns="columns"
|
||||
@choose="institutionChange"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { workIndex, workOne, workLevel, workStore } from '@/apis/interfaces/index'
|
||||
import { userBasic } from '@/apis/interfaces/user'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldPicker from '@/components/mould-picker.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldPicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
businessArr: [],
|
||||
businessId : '',
|
||||
serviceArr : [],
|
||||
addTypePop : false,
|
||||
userData : '',
|
||||
reminder : '', // 温馨提示
|
||||
|
||||
// 新增部分-机构筛选
|
||||
columns : [],
|
||||
old : {},
|
||||
cIndex : 0
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let { businessId, businessTitle } = this.$Route.query
|
||||
this.getInstitution(businessId, businessTitle)
|
||||
this.getBusiness()
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取用户姓名手机号性别
|
||||
userBasic().then(res => {
|
||||
this.userData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
// 显示选择机构 -- 带搜索
|
||||
onShowInstitution(e, item, index){
|
||||
console.log(this.$refs.institutionPicker)
|
||||
this.columns = e
|
||||
this.old = item
|
||||
this.cIndex = index
|
||||
this.$refs.institutionPicker.open()
|
||||
},
|
||||
|
||||
// 获取主业务
|
||||
getBusiness(){
|
||||
workIndex().then(res => {
|
||||
this.businessArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取主业务机构
|
||||
getInstitution(businessId, businessTitle){
|
||||
uni.showLoading({
|
||||
title: '加载中...'
|
||||
})
|
||||
workOne(businessId).then(institutionArr => {
|
||||
let forms = this.getForms(institutionArr[0].institution_id)
|
||||
forms.then(val => {
|
||||
this.servicePush( val, institutionArr, businessTitle, businessId )
|
||||
})
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 获取业务类型
|
||||
async getForms(businessId){
|
||||
return await workLevel(businessId)
|
||||
},
|
||||
|
||||
// 组织业务表单数据
|
||||
servicePush( vals, institutionArr, businessTitle, businessId ){
|
||||
let fromType = [],
|
||||
fromsVal = {},
|
||||
froms = vals[0].params
|
||||
|
||||
fromType = vals.map((val) => {
|
||||
return {
|
||||
type_id: val.type_id,
|
||||
title : val.title
|
||||
}
|
||||
})
|
||||
froms.map(val => {
|
||||
fromsVal[val.key] = ''
|
||||
})
|
||||
|
||||
// 新增卡片
|
||||
this.serviceArr.push({
|
||||
title : businessTitle,
|
||||
institution : institutionArr,
|
||||
allInstitution : vals,
|
||||
institutionIndex: 0,
|
||||
fromType : fromType,
|
||||
openState : false,
|
||||
fromIndex : 0,
|
||||
froms : froms,
|
||||
subVal : {
|
||||
business_id : Number(businessId),
|
||||
institution_id : institutionArr[0].institution_id,
|
||||
type_id : fromType[0].type_id,
|
||||
...fromsVal
|
||||
}
|
||||
})
|
||||
this.serviceArr.forEach((item, index) => {
|
||||
return index == (this.serviceArr.length - 1) ? item.openState = true : item.openState = false
|
||||
})
|
||||
},
|
||||
|
||||
// 机构变更更新业务
|
||||
institutionChange(e){
|
||||
|
||||
let index = this.cIndex
|
||||
let old = this.old
|
||||
let value = old.institution.findIndex(val => val.institution_id === e.val.institution_id);
|
||||
let businessId = old.subVal.business_id
|
||||
|
||||
// 获取机构的子业务类型
|
||||
let forms = this.getForms(old.institution[value].institution_id)
|
||||
forms.then(institutionVal => {
|
||||
let newObj = old
|
||||
let fromType = []
|
||||
let params = institutionVal[0].params
|
||||
let paramsVal = []
|
||||
|
||||
// 业务类型
|
||||
fromType = institutionVal.map(val => {
|
||||
return {
|
||||
type_id: val.type_id,
|
||||
title : val.title
|
||||
}
|
||||
})
|
||||
// 提交字段
|
||||
params.map(val => {
|
||||
paramsVal[val.key] = ''
|
||||
})
|
||||
// 更新数据
|
||||
newObj.allInstitution = institutionVal;
|
||||
newObj.institutionIndex = value;
|
||||
newObj.fromType = fromType;
|
||||
newObj.fromIndex = 0;
|
||||
newObj.froms = params;
|
||||
newObj.subVal = {
|
||||
business_id : old.subVal.business_id,
|
||||
institution_id : old.institution[value].institution_id,
|
||||
type_id : fromType[0].type_id,
|
||||
...paramsVal
|
||||
}
|
||||
this.$set(this.serviceArr, index, newObj)
|
||||
})
|
||||
},
|
||||
|
||||
// 业务变更
|
||||
businessChange(e, old, index){
|
||||
let { value } = e.detail;
|
||||
let businessId = old.subVal.business_id;
|
||||
let allInstitution = old.allInstitution
|
||||
let newObj = old
|
||||
let params = allInstitution[value].params
|
||||
let paramsVal = {}
|
||||
|
||||
params.map(val => {
|
||||
paramsVal[val.key] = ''
|
||||
})
|
||||
|
||||
newObj.fromIndex = value;
|
||||
newObj.froms = params;
|
||||
newObj.subVal = {
|
||||
business_id : old.subVal.business_id,
|
||||
institution_id : old.subVal.institution_id,
|
||||
type_id : allInstitution[value].type_id,
|
||||
...paramsVal
|
||||
}
|
||||
this.$set(this.serviceArr, index, newObj)
|
||||
},
|
||||
|
||||
// 添加主业务
|
||||
onAdd(id, title){
|
||||
this.addTypePop = false
|
||||
this.getInstitution(id, title)
|
||||
},
|
||||
|
||||
// 列表展开
|
||||
recordTap(index) {
|
||||
var listData = this.serviceArr
|
||||
var helpFlag = this.serviceArr[index].openState
|
||||
listData.forEach((item) => {
|
||||
item.openState = false
|
||||
})
|
||||
listData[index].openState = !helpFlag
|
||||
this.serviceArr = listData
|
||||
},
|
||||
|
||||
// 移出选项
|
||||
onRemove(index){
|
||||
this.serviceArr.splice(index, 1)
|
||||
},
|
||||
|
||||
// 提交订单数据
|
||||
onSubmit(){
|
||||
let dataVal = this.serviceArr.map(val => {
|
||||
return val.subVal
|
||||
})
|
||||
workStore({
|
||||
type : 'self',
|
||||
data : dataVal,
|
||||
channel: 'h5'
|
||||
}).then(res => {
|
||||
this.$Router.push({name: 'sheetPay', params: {id: res.business_order_id}})
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 多选
|
||||
checkboxChange() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.idcardBorder {
|
||||
border-bottom: 200rpx solid transparent;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius * 2 $radius * 2 0 0;
|
||||
position: relative;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
top: -100rpx;
|
||||
}
|
||||
.idcard {
|
||||
margin-bottom: $margin * 2;
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
padding: $padding * 2 $padding $padding * 3;
|
||||
.idcardInfo-name {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
.idcardTitle {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 4;
|
||||
font-weight: 600;
|
||||
margin-bottom: $margin;
|
||||
}
|
||||
.idcardAdd {
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 0 20rpx rgba(0, 0, 0, .1);
|
||||
border-radius: $radius;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.idcardAdd-title {
|
||||
display: flex;
|
||||
.idcardAdd-name {
|
||||
flex: 1;
|
||||
color: #446EFE;
|
||||
font-weight: 600;
|
||||
}
|
||||
.idcardAdd-tel {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
background-color: #ffeded;
|
||||
color: #FF0000;
|
||||
border-radius: $radius;
|
||||
padding: 0 15rpx 0 10rpx;
|
||||
line-height: 44rpx;
|
||||
.idcardAdd-btn {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 7rpx 6rpx 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardBottom {
|
||||
height: 45rpx;
|
||||
transition: .5s;
|
||||
border-bottom: 100rpx solid transparent;
|
||||
&.active {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.idcardAdd-block {
|
||||
margin-bottom: $margin + 10;
|
||||
position: relative;
|
||||
.idcardAdd-block-name {
|
||||
margin-bottom: $margin;
|
||||
display: flex;
|
||||
.idcardAdd-block-see {
|
||||
color: $text-color;
|
||||
font-weight: 600;
|
||||
margin-right: $margin;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-block-write {
|
||||
background-color: #F6F6F6;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
picker {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.idcardAdd-block-remove {
|
||||
background-color: #FBE7EE;
|
||||
display: inline-block;
|
||||
color: $mian-color;
|
||||
position: absolute;
|
||||
font-size: $title-size-sm;
|
||||
padding: 0 $padding - 10;
|
||||
line-height: 44rpx;
|
||||
border-radius: 50rpx;
|
||||
top: 0;
|
||||
right: 0;
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
margin-right: 10rpx;
|
||||
vertical-align: -2rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.open {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
background-color: #ffffff;
|
||||
z-index: 2;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
padding: $padding 0;
|
||||
.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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline-name {
|
||||
flex: 1;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.idcardAdd-depict {
|
||||
line-height: 28rpx !important;
|
||||
height: auto !important;
|
||||
position: relative;
|
||||
.idcardAdd-depict-number {
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
bottom: $padding;
|
||||
right: $padding;
|
||||
color: #999999;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.idcardAdd-depict-textarea {
|
||||
padding: $padding 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.noContent {
|
||||
text-align: center;
|
||||
padding-top: $padding * 5;
|
||||
.noContent-img {
|
||||
width: 43%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.noContent-name {
|
||||
line-height: 60rpx;
|
||||
color: #999999;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.noContent-btn {
|
||||
display: inline-block;
|
||||
background-color: #ff7331;
|
||||
color: #ffffff;
|
||||
border-radius: $radius * 5;
|
||||
text-align: center;
|
||||
font-size: $title-size-lg;
|
||||
padding: 0 $padding + 10;
|
||||
line-height: 78rpx;
|
||||
margin-top: $margin + 10;
|
||||
}
|
||||
}
|
||||
|
||||
.reminder {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 150rpx;
|
||||
background-color: #ffffff;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 25rpx $padding;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
color: #FEA044;
|
||||
font-size: $title-size-lg;
|
||||
border-bottom: 2rpx solid #f5f5f5;
|
||||
.reminder-img {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
.reminder-text {
|
||||
width: calc(100% - 52rpx);
|
||||
font-size: $title-size-m;
|
||||
margin-left: 20rpx;
|
||||
line-height: 42rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.idcardBtn {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #ffffff;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
padding: 0 20rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.idcardBtn-go {
|
||||
width: calc(50% - 20rpx);
|
||||
margin: $margin 10rpx;
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-lg;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
text-align: center;
|
||||
border: 2rpx solid #ffffff;
|
||||
&.active {
|
||||
background-color: #ffffff;
|
||||
border-color: $mian-color;
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 业务类型
|
||||
.addType-back {
|
||||
background-color: rgba(0, 0, 0, .6);
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
.addType-cont {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 100;
|
||||
width: 100%;
|
||||
background-color: #ffffff;
|
||||
padding: $padding $padding + 10;
|
||||
box-sizing: border-box;
|
||||
transition: .2s;
|
||||
.addType-close {
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
top: 40rpx;
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
}
|
||||
.addType-title {
|
||||
line-height: 60rpx;
|
||||
margin-bottom: $margin + 10;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.addType-type {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.create-type-item {
|
||||
border-radius: $radius-m;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
.addType-btn {
|
||||
display: flex;
|
||||
padding: $padding + 10 $padding - 10 10rpx;
|
||||
box-sizing: border-box;
|
||||
.addType-labor {
|
||||
flex: 2;
|
||||
margin: 0 $margin - 10;
|
||||
text-align: center;
|
||||
background-color: #FEA044;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
line-height: 74rpx;
|
||||
font-size: $title-size-lg;
|
||||
border: 2rpx solid #FEA044;
|
||||
&:first-child {
|
||||
background-color: #ffffff;
|
||||
color: #FEA044;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 收起定位样式
|
||||
.locationActive {
|
||||
display: inline-block;
|
||||
text {
|
||||
display: inline-block;
|
||||
background-color: #FFF7EB;
|
||||
color: #FBAF3B !important;
|
||||
font-weight: normal;
|
||||
font-size: $title-size-sm;
|
||||
margin-left: $margin - 10;
|
||||
border-radius: $radius*3;
|
||||
padding: 0 $padding - 10 !important;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
148
pages/sheet/create-老版.vue
Normal file
148
pages/sheet/create-老版.vue
Normal file
@@ -0,0 +1,148 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="create-type">
|
||||
<view class="create-type-title">
|
||||
选择咨询类型
|
||||
<text>点击咨询进行选择咨询类型(信用卡/贷款)</text>
|
||||
</view>
|
||||
<block v-for="(item, index) in businessArr" :key="index">
|
||||
<view class="create-type-item" :class="{'active': item.business_id == businessId}" @click="onBusiness(item.business_id)">
|
||||
<image class="create-type-icon" :src="item.cover_url" mode="aspectFill"></image>
|
||||
<view class="create-type-text">
|
||||
<view class="title nowrap">{{item.title || '-'}}</view>
|
||||
<view class="submit nowrap">{{item.subtitle || '-'}}</view>
|
||||
</view>
|
||||
<image class="create-type-check" :src="item.business_id == businessId ? '/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'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
businessArr: [],
|
||||
businessId : '',
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// 业务类型列表
|
||||
workIndex().then(res => {
|
||||
this.businessArr = res
|
||||
this.businessId = res[0].business_id
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 选择业务类型
|
||||
onBusiness(id){
|
||||
this.businessId = id
|
||||
},
|
||||
|
||||
// 创建业务单
|
||||
onNext(){
|
||||
let busines = this.businessArr.find(val => val.business_id === this.businessId)
|
||||
this.$Router.replace({
|
||||
name : 'sheetBasic',
|
||||
params : {
|
||||
businessTitle : busines.title,
|
||||
businessId : busines.business_id,
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</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>
|
||||
200
pages/sheet/create.vue
Normal file
200
pages/sheet/create.vue
Normal file
@@ -0,0 +1,200 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="create-type">
|
||||
<view class="create-type-title">
|
||||
选择咨询类型
|
||||
<text>点击咨询进行选择咨询类型(信用卡/贷款/综法业务)</text>
|
||||
<!-- /综法业务 -->
|
||||
</view>
|
||||
<block v-for="(item, businessIndex) in businessArr" :key="businessIndex">
|
||||
<view class="create-type-item" :class="{'active': item.self_type + item.business_id == businessName}" @click="onBusiness(item.self_type, item.business_id)">
|
||||
<image class="create-type-icon" :src="item.cover_url" mode="aspectFill"></image>
|
||||
<view class="create-type-text">
|
||||
<view class="title nowrap">{{item.title || '-'}}</view>
|
||||
<view class="submit nowrap">{{item.subtitle || '-'}}</view>
|
||||
</view>
|
||||
<image class="create-type-check" :src="item.self_type + item.business_id == businessName ? '/static/icon/Check_active.png' : '/static/icon/Check.png'" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
446
pages/sheet/estimate.vue
Normal file
446
pages/sheet/estimate.vue
Normal file
@@ -0,0 +1,446 @@
|
||||
<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>
|
||||
</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>
|
||||
|
||||
<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>
|
||||
338
pages/sheet/express.vue
Normal file
338
pages/sheet/express.vue
Normal file
@@ -0,0 +1,338 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="expressImg" src="@/static/imgs/express-img.png">
|
||||
<view class="expressCont">
|
||||
<view class="express-write">
|
||||
<view class="express-block express-adderss">
|
||||
<view class="express-block-name">
|
||||
邮寄地址
|
||||
</view>
|
||||
<view class="express-block-write express-block-grey">
|
||||
{{adderss.full_address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="express-block">
|
||||
<view class="express-block-name">
|
||||
物流公司
|
||||
</view>
|
||||
<view class="express-block-write">
|
||||
<picker @change="companyChange" :value="companyIndex" :range="companyArray" range-key="name">
|
||||
<view class="uni-input" v-if="companyArray[companyIndex]">{{companyArray[companyIndex].name}}</view>
|
||||
</picker>
|
||||
<img src="@/static/imgs/basic_down.png">
|
||||
</view>
|
||||
</view>
|
||||
<view class="express-block">
|
||||
<view class="express-block-name">
|
||||
订单类型
|
||||
</view>
|
||||
<checkbox-group @change="typeChange" class="express-check">
|
||||
<view class="express-block-check" v-for="(letterItem, typeIndex) in typeArray" :key="typeIndex">
|
||||
<checkbox :value="letterItem.type.toString()" color="#4e7bfe" style="transform:scale(.6); margin-top: -3rpx;"/>
|
||||
<text>{{letterItem.name}}</text>
|
||||
</view>
|
||||
</checkbox-group>
|
||||
<!-- <view class="express-block-write">
|
||||
<picker @change="typeChange" :value="typeIndex" :range="typeArray" range-key="name">
|
||||
<view class="uni-input" v-if="typeArray[typeIndex]">{{typeArray[typeIndex].name}}</view>
|
||||
</picker>
|
||||
<img src="@/static/imgs/basic_down.png">
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="express-block">
|
||||
<view class="express-block-name">
|
||||
物流单号
|
||||
</view>
|
||||
<input class="express-block-write" v-model="number" type="text" placeholder="填写物流单号" placeholder-class="placeholderClass"/>
|
||||
</view>
|
||||
<view class="express-block">
|
||||
<view class="express-block-name">
|
||||
备注信息
|
||||
</view>
|
||||
<view class="express-block-textarea">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" maxlength="500" name="remark" placeholder="可将您的详细情况及诉求进行描述..." @input="remarkInput"/>
|
||||
<text>{{cursor}}/500</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="express-block">
|
||||
<view class="express-block-name">
|
||||
上传凭证
|
||||
</view>
|
||||
<view class="express-photo">
|
||||
<img class="camera" src="@/static/icon/cameraImg.png">
|
||||
<view class="express-tips">上传图片</view>
|
||||
</view>
|
||||
</view>
|
||||
-->
|
||||
<!-- <view class="album-list">
|
||||
<view class="album-list-li">
|
||||
<image class="album-list-img" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic17.997788.com%2F_pic_search%2F00%2F04%2F13%2F26%2F4132653.jpg&refer=http%3A%2F%2Fpic17.997788.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670402044&t=c3a80087befa0d7db313ca904c870f23" mode="aspectFill"></image>
|
||||
<view class="album-remove">删除
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<button class="idcardBtn" :disabled="disabled" @click="basicSubmit" >
|
||||
确认提交
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getExpress, Send } from '@/apis/interfaces/user'
|
||||
import { config } from '../../apis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
disabled : false, // 按钮状态
|
||||
companyArray : [],
|
||||
companyIndex : 0,
|
||||
typeArray : [],
|
||||
typeIndex : [],
|
||||
number : '',
|
||||
remark : '',
|
||||
cursor : 0,
|
||||
adderss : '',
|
||||
newMobile : '',
|
||||
newmetarial : ''
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取物流公司
|
||||
this.expressInfo()
|
||||
this.adderss = this.$Route.query.adderss
|
||||
this.newMobile = this.$Route.query.mobile
|
||||
this.newmetarial = this.$Route.query.metarial
|
||||
|
||||
let newtypeArray = []
|
||||
if(!this.$Route.query.mobile){
|
||||
newtypeArray.push({
|
||||
type: 1,
|
||||
name: '电话卡'
|
||||
})
|
||||
}
|
||||
if(!this.$Route.query.metarial){
|
||||
newtypeArray.push({
|
||||
type: 2,
|
||||
name: '征信资料'
|
||||
})
|
||||
}
|
||||
this.typeArray = newtypeArray
|
||||
},
|
||||
methods: {
|
||||
// 物流公司选择
|
||||
companyChange(e) {
|
||||
this.companyIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 订单类型选择
|
||||
typeChange(e) {
|
||||
this.typeIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 备注信息
|
||||
remarkInput(val) {
|
||||
this.remark = val.detail.value
|
||||
this.cursor = val.detail.cursor
|
||||
},
|
||||
|
||||
// 物流公司
|
||||
expressInfo(){
|
||||
getExpress().then(res => {
|
||||
this.companyArray = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 提交
|
||||
basicSubmit() {
|
||||
let data = {
|
||||
business_order_id: this.$Route.query.id,
|
||||
express_id : this.companyArray[this.companyIndex].express_id,
|
||||
staff_address_id : this.adderss.address_id,
|
||||
number : this.number,
|
||||
type : this.typeIndex,
|
||||
remark : this.remark
|
||||
}
|
||||
Send(this.$Route.query.id, data).then(res => {
|
||||
uni.showToast({
|
||||
title: '提交成功',
|
||||
icon: "none"
|
||||
})
|
||||
this.disabled = true
|
||||
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1)
|
||||
uni.hideLoading()
|
||||
}, 1500)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #f4f6fa;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.expressImg {
|
||||
width: 100%;
|
||||
}
|
||||
.expressCont {
|
||||
padding: 0 $padding $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin-top: -($margin + 10);
|
||||
.express-write {
|
||||
background-color: #ffffff;
|
||||
padding: $padding + 10 $padding + 20;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius;
|
||||
}
|
||||
}
|
||||
.express-block {
|
||||
margin-bottom: $margin + 20;
|
||||
.express-block-name {
|
||||
margin-bottom: $margin;
|
||||
font-weight: 600;
|
||||
}
|
||||
.express-check {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
.express-block-check {
|
||||
margin-right: $margin + 10;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
display: flex;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.express-block-write {
|
||||
background-color: #ffffff;
|
||||
display: flex;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding: 0 $padding;
|
||||
border: 2rpx solid #ededed;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-sm;
|
||||
position: relative;
|
||||
img {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: $padding;
|
||||
}
|
||||
picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.express-block-grey {
|
||||
color: $text-gray;
|
||||
height: auto;
|
||||
line-height: 44rpx;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
font-size: $title-size-m;
|
||||
text-align: justify;
|
||||
}
|
||||
.express-block-textarea {
|
||||
background-color: #ffffff;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
border: 2rpx solid #ededed;
|
||||
border-radius: $radius-sm;
|
||||
textarea {
|
||||
width: 100%;
|
||||
font-size: $title-size-m;
|
||||
text-align: justify;
|
||||
}
|
||||
text {
|
||||
color: #999999;
|
||||
font-size: $title-size-sm;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
display: block;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.express-photo {
|
||||
border-radius: $radius-sm;
|
||||
border: 2rpx solid #ededed;
|
||||
padding: 0 $padding;
|
||||
position: relative;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
display: flex;
|
||||
img {
|
||||
width: 46rpx;
|
||||
height: 46rpx;
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
.express-tips {
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: 0;
|
||||
font-size: $title-size-m;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.album-list {
|
||||
margin: $margin -10rpx 0;
|
||||
display: flex;
|
||||
.album-list-li {
|
||||
position: relative;
|
||||
width: calc(33.33% - 20rpx);
|
||||
padding-top: calc(33.33% - 20rpx);
|
||||
margin: 0 10rpx;
|
||||
box-sizing: border-box;
|
||||
.album-list-img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f5f5f5;
|
||||
border-radius: 6rpx;
|
||||
}
|
||||
.album-remove{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
color: white;
|
||||
font-size: 28rpx;
|
||||
text-align: center;
|
||||
line-height: 50rpx;
|
||||
width: 100%;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardBtn {
|
||||
margin: $margin*2 0 0;
|
||||
background-image: linear-gradient(to right, #ff660b, #ff4330);
|
||||
color: #ffffff;
|
||||
border-radius: $radius-lg;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
310
pages/sheet/handle.vue
Normal file
310
pages/sheet/handle.vue
Normal file
@@ -0,0 +1,310 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- <view class="handleTop">
|
||||
<view class="handleTop-label">
|
||||
<view class="handleTop-number">1</view>
|
||||
<view class="handleTop-text">提交成功</view>
|
||||
</view>
|
||||
<view class="handleTop-label handleTop-label-active">
|
||||
<view class="handleTop-number-active"></view>
|
||||
<view class="handleTop-text-active">办理中</view>
|
||||
</view>
|
||||
<view class="handleTop-label">
|
||||
<view class="handleTop-number">3</view>
|
||||
<view class="handleTop-text">办理完成</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pack-white">
|
||||
<view class="pack-cont">
|
||||
<img class="process-img" src="@/static/imgs/handleImg.png">
|
||||
<view class="process-text">
|
||||
<view class="process-name">
|
||||
正在办理中...
|
||||
</view>
|
||||
<view class="process-tips">
|
||||
请您耐心等待,我们会尽快进行办理
|
||||
</view>
|
||||
</view>
|
||||
<view class="process-btn">
|
||||
<view class="btn" @click="clickBack">
|
||||
知道了
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<!-- 列表 -->
|
||||
<view class="list" v-if="logsArr.length > 0">
|
||||
<view class="item" v-for="(items, index) in logsArr" :key="index">
|
||||
<view class="itemName" v-if="items.operate">
|
||||
{{items.operate.name}}
|
||||
<view class="itemName-tips">
|
||||
{{items.operate.type}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="itemLabel">
|
||||
<view class="label">
|
||||
<view class="label-name">
|
||||
所属机构
|
||||
</view>
|
||||
<view class="label-text">
|
||||
{{items.item}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="label">
|
||||
<view class="label-name">
|
||||
备注信息
|
||||
</view>
|
||||
<view class="label-text">
|
||||
{{items.description}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="label">
|
||||
<view class="label-name">
|
||||
操作时间
|
||||
</view>
|
||||
<view class="label-text">
|
||||
{{items.do_at}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pagesLoding" v-if="lodingStats">
|
||||
<block v-if="page.has_more">
|
||||
<image class="pagesLodingIcon" src="/static/icons/refresh_loding.gif" mode="widthFix"></image>加载中...
|
||||
</block>
|
||||
<block v-else>
|
||||
没有更多了~
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无数据</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { doLogs } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
logsArr : [],
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取列表信息
|
||||
this.logsInfo();
|
||||
},
|
||||
methods: {
|
||||
// 返回上一页
|
||||
// clickBack() {
|
||||
// uni.navigateBack(1)
|
||||
// }
|
||||
|
||||
// 列表信息
|
||||
logsInfo(page) {
|
||||
doLogs(this.$Route.query.id, {
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let esArr = res.data
|
||||
let list = this.logsArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(esArr)
|
||||
this.logsArr = newData
|
||||
this.page = res.page
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 获取列表信息
|
||||
this.logsInfo();
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 获取列表信息
|
||||
this.logsInfo(pageNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// .content {
|
||||
// background-image: linear-gradient(to top, #f5f6f7, #e5f2ff);
|
||||
// padding: $padding * 3 0 $padding;
|
||||
// box-sizing: border-box;
|
||||
// height: 100vh;
|
||||
// overflow-y: scroll;
|
||||
// }
|
||||
|
||||
.content {
|
||||
background-color: #f4f6f7;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.item {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius;
|
||||
background-color: #ffffff;
|
||||
margin-bottom: $margin;
|
||||
.itemName {
|
||||
display: flex;
|
||||
font-weight: 600;
|
||||
.itemName-tips {
|
||||
font-weight: normal;
|
||||
font-size: $title-size-sm - 2;
|
||||
background-color: #da2b56;
|
||||
color: #ffffff;
|
||||
border-radius: 8rpx;
|
||||
line-height: 40rpx;
|
||||
padding: 0 10rpx;
|
||||
margin-left: $margin - 10;
|
||||
}
|
||||
}
|
||||
.itemLabel {
|
||||
border-top: 2rpx solid #f4f6f7;
|
||||
padding-top: $padding - 10;
|
||||
margin-top: $padding;
|
||||
.label {
|
||||
color: #8b8b8b;
|
||||
font-size: $title-size-m;
|
||||
display: flex;
|
||||
line-height: 46rpx;
|
||||
padding: 10rpx 0;
|
||||
.label-name {
|
||||
flex: 1;
|
||||
}
|
||||
.label-text {
|
||||
width: 70%;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.handleTop {
|
||||
display: flex;
|
||||
.handleTop-label {
|
||||
text-align: center;
|
||||
flex: 3;
|
||||
.handleTop-number {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
line-height: 28rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #7a88a1;
|
||||
border: 15rpx solid #7a88a1;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
margin: 5rpx auto 20rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.handleTop-text {
|
||||
font-size: $title-size-lg;
|
||||
color: #6b7894;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
.handleTop-label-active {
|
||||
position: relative;
|
||||
&::after,
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: calc(25% - 5rpx);
|
||||
background-color: #d5e4f8;
|
||||
width: 50%;
|
||||
height: 10rpx;
|
||||
border-radius: $radius;
|
||||
}
|
||||
&::after {
|
||||
left: -25%;
|
||||
}
|
||||
&::before {
|
||||
right: -25%;
|
||||
}
|
||||
.handleTop-number-active {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
line-height: 28rpx;
|
||||
border-radius: 50%;
|
||||
background-color: $mian-color;
|
||||
border: 20rpx solid #ffe8e5;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
margin: 0 auto 20rpx;
|
||||
}
|
||||
.handleTop-text-active {
|
||||
font-size: $title-size-lg;
|
||||
color: #25345a;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pack-white {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-top: $margin * 2;
|
||||
.pack-cont {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
overflow: hidden;
|
||||
padding: $padding * 3;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.process-img {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.process-name {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 8;
|
||||
margin-bottom: $margin;
|
||||
}
|
||||
.process-tips {
|
||||
font-size: $title-size;
|
||||
color: #99a5b4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.process-btn {
|
||||
text-align: center;
|
||||
margin-top: $margin * 2;
|
||||
width: 100%;
|
||||
.btn {
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
border-radius: $radius-m;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
251
pages/sheet/idcard.vue
Normal file
251
pages/sheet/idcard.vue
Normal file
@@ -0,0 +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 : '/static/imgs/card_front.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 : '/static/imgs/card_verso.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>
|
||||
|
||||
<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>
|
||||
961
pages/sheet/index.vue
Normal file
961
pages/sheet/index.vue
Normal file
@@ -0,0 +1,961 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- @click="$Router.push({name: 'sheetSpeed'})" -->
|
||||
<view class="model">
|
||||
<image class="model-back" src="@/static/imgs/01@3x.png" mode="aspectFill"></image>
|
||||
<view class="model-list">
|
||||
<view class="model-label">
|
||||
<view class="model-number">
|
||||
{{count.all}}<text>单</text>
|
||||
</view>
|
||||
<view class="model-name">
|
||||
预约咨询
|
||||
</view>
|
||||
</view>
|
||||
<view class="model-label">
|
||||
<view class="model-number">
|
||||
{{count.b_complete}}<text>单</text>
|
||||
</view>
|
||||
<view class="model-name">
|
||||
成功办理
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 筛选 -->
|
||||
<view class="screen" :class="{active : dropDown == true}">
|
||||
<view class="screen-lable">
|
||||
<view class="screen-lable-item" :class="{active : status == ''}" @click="screenClick('')">
|
||||
<text>全部订单</text>
|
||||
</view>
|
||||
<view class="screen-lable-item" :class="{active : status == '0'}" @click="screenClick('0')">
|
||||
<text>待预约</text>
|
||||
</view>
|
||||
<view class="screen-lable-item" :class="{active : status == '2'}" @click="screenClick('2')" v-if="dropDownSee">
|
||||
<text>已预约</text>
|
||||
</view>
|
||||
<block v-else>
|
||||
<!-- <view v-if="status == '1'" class="screen-lable-item" :class="{active : status == '1'}" @click="screenClick('2')">
|
||||
<text>待评估</text>
|
||||
</view> -->
|
||||
<view v-if="status == '2'" class="screen-lable-item" :class="{active : status == '2'}" @click="screenClick('2')">
|
||||
<text>已预约</text>
|
||||
</view>
|
||||
<view v-else-if="status == '3'" class="screen-lable-item" :class="{active : status == '3'}" @click="screenClick('3')">
|
||||
<text>待缴服务费</text>
|
||||
</view>
|
||||
<view v-else-if="status == '4'" class="screen-lable-item" :class="{active : status == '4'}" @click="screenClick('4')">
|
||||
<text>待签约</text>
|
||||
</view>
|
||||
<view v-else-if="status == '5'" class="screen-lable-item" :class="{active : status == '5'}" @click="screenClick('5')">
|
||||
<text>待完善资料</text>
|
||||
</view>
|
||||
<view v-else-if="status == '6'" class="screen-lable-item" :class="{active : status == '6'}" @click="screenClick('6')">
|
||||
<text>初审中</text>
|
||||
</view>
|
||||
<view v-else-if="status == '7'" class="screen-lable-item" :class="{active : status == '7'}" @click="screenClick('7')">
|
||||
<text>复审中</text>
|
||||
</view>
|
||||
<view v-else-if="status == '8'" class="screen-lable-item" :class="{active : status == '8'}" @click="screenClick('8')">
|
||||
<text>办理中</text>
|
||||
</view>
|
||||
<view v-else-if="status == '9'" class="screen-lable-item" :class="{active : status == '9'}" @click="screenClick('9')">
|
||||
<text>待确认</text>
|
||||
</view>
|
||||
<view v-else-if="status == '10'" class="screen-lable-item" :class="{active : status == '10'}" @click="screenClick('10')">
|
||||
<text>办理完成</text>
|
||||
</view>
|
||||
<view v-else-if="status == '11'" class="screen-lable-item" :class="{active : status == '11'}" @click="refundClick">
|
||||
<text>退款完成</text>
|
||||
</view>
|
||||
</block>
|
||||
<view class="screen-lable-item" @click="screenDrop">
|
||||
<text>其他选项</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <image class="screen-arrow" src="/static/imgs/basic_down_black.png" mode="aspectFill"></image> -->
|
||||
<view class="screen-drop" v-if="dropDown">
|
||||
<view class="screen-list">
|
||||
<view class="screen-list-item" :class="{active : status == '0'}" @click="screenClick('0')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.a_init > 0">{{ordersCount.a_init}}</view>
|
||||
<image src="/static/icon/dropDown_01.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待预约
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="screen-list-item" :class="{active : status == '1'}" @click="screenClick('1')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.a_payed > 0">{{ordersCount.a_payed}}</view>
|
||||
<image src="/static/icon/dropDown_02.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待评估
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="screen-list-item" :class="{active : status == '2'}" @click="screenClick('2')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.a_service > 0">{{ordersCount.a_service}}</view>
|
||||
<image src="/static/icon/dropDown_03.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
已预约
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '3'}" @click="screenClick('3')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.a_serviced > 0">{{ordersCount.a_serviced}}</view>
|
||||
<image src="/static/icon/dropDown_04.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待缴服务费
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '4'}" @click="screenClick('4')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.b_sign > 0">{{ordersCount.b_sign}}</view>
|
||||
<image src="/static/icon/dropDown_06.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待签约
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '5'}" @click="screenClick('5')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.a_bank > 0">{{ordersCount.a_bank}}</view>
|
||||
<image src="/static/icon/dropDown_10.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待完善资料
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '6'}" @click="screenClick('6')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.b_check > 0">{{ordersCount.b_check}}</view>
|
||||
<image src="/static/icon/dropDown_05.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
初审中
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="screen-list-item" :class="{active : status == '7'}" @click="screenClick('7')">
|
||||
<image class="screen-list-img" src="/static/icon/dropDown_07.png" mode="aspectFill"></image>
|
||||
<view class="screen-list-name">
|
||||
待邮寄资料
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="screen-list-item" :class="{active : status == '7'}" @click="screenClick('7')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.b_recheck > 0">{{ordersCount.b_recheck}}</view>
|
||||
<image src="/static/icon/dropDown_08.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
复审中
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '8'}" @click="screenClick('8')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.b_process > 0">{{ordersCount.b_process}}</view>
|
||||
<image src="/static/icon/dropDown_09.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
办理中
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '9'}" @click="screenClick('9')">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.b_confirm > 0">{{ordersCount.b_confirm}}</view>
|
||||
<image src="/static/icon/dropDown_10.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
待确认
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '10'}" @click="screenClick('10')">
|
||||
<view class="screen-list-img">
|
||||
<!-- <view class="screen-list-number" v-if="ordersCount.b_complete > 0">{{ordersCount.b_complete}}</view> -->
|
||||
<image src="/static/icon/dropDown_11.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
办理完成
|
||||
</view>
|
||||
</view>
|
||||
<view class="screen-list-item" :class="{active : status == '11'}" @click="refundClick()">
|
||||
<view class="screen-list-img">
|
||||
<view class="screen-list-number" v-if="ordersCount.refund > 0">{{ordersCount.refund}}</view>
|
||||
<image src="/static/icon/dropDown_07.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="screen-list-name">
|
||||
退款完成
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="screen-btn">
|
||||
<view class="screen-btn-handle" @click="dropDown = false">
|
||||
取消
|
||||
</view>
|
||||
<!-- <view class="screen-btn-handle screen-btn-go">
|
||||
确定
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 弹出背景 -->
|
||||
<view class="screen-back" v-if="dropDown"></view>
|
||||
|
||||
<!-- 列表 -->
|
||||
<view class="reveal">
|
||||
<block v-if="orderArr.length > 0">
|
||||
<view class="list" v-for="(item, index) in orderArr" :key="index">
|
||||
<view class="item borderBottom">
|
||||
<view class="item-name">
|
||||
<!-- 订单号 -->
|
||||
{{item.order_no}}
|
||||
</view>
|
||||
<view class="item-status">
|
||||
<block v-if="status == '11'">
|
||||
<block v-if="item.refund_status">{{item.refund_status.text}}</block>
|
||||
</block>
|
||||
<block v-else>
|
||||
{{item.status.text}}
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- start 待判断 -->
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
业务类型
|
||||
</view>
|
||||
<view class="item-text" @click="typeState(index)">
|
||||
<block v-for="(typeItem, index) in item.item_type">
|
||||
<block v-if="typeItem.number > 0">
|
||||
{{typeItem.title}}x{{typeItem.number}}
|
||||
</block>
|
||||
</block>
|
||||
<image class="item-text-arrow" src="@/static/imgs/openArrow_grey.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="baleShow" v-if="item.typeShow">
|
||||
<view class="baleColor">
|
||||
<view class="baleShow-label" v-for="(businessItem, index) in item.items">
|
||||
<view class="baleShow-name">
|
||||
{{businessItem.institution.title}}({{businessItem.business_type.title}})
|
||||
</view>
|
||||
<view class="baleShow-number">
|
||||
¥{{businessItem.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="item" v-if="item.service_count > 0">
|
||||
<view class="item-label">
|
||||
服务包
|
||||
</view>
|
||||
<view class="item-text">
|
||||
<view class="item-text-go" @click="$Router.push({name: 'sheetBale', params: {id: item.business_order_id}})">查看</view>
|
||||
<text>x</text>{{item.service_count}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" v-if="item.pay.service_pay">
|
||||
<view class="item-label">
|
||||
咨询服务费
|
||||
</view>
|
||||
<view class="item-quantity" :class="{ gery : item.pay.service_pay}">
|
||||
{{item.pay.service_pay ? '已缴' : '未缴'}}
|
||||
</view>
|
||||
<view class="item-text">
|
||||
<text>¥</text>{{item.total}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="item" v-if="item.diff_prices > 0">
|
||||
<view class="item-label">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-quantity">
|
||||
未缴
|
||||
</view>
|
||||
<view class="item-text">
|
||||
<text>¥</text>{{item.diff_prices}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" v-if="item.diff_prices_pays > 0">
|
||||
<view class="item-label">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-quantity gery">
|
||||
已缴
|
||||
</view>
|
||||
<view class="item-text">
|
||||
<text>¥</text>{{item.diff_prices_pays}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 邮寄 -->
|
||||
<block v-if="item.deliver_count.can">
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
邮寄材料
|
||||
</view>
|
||||
<block v-if="item.deliver_count">
|
||||
<view class="item-express" v-if="item.deliver_count.num < item.deliver_count.all" @click="$Router.push({name: 'sheetExpress', params: {id: item.business_order_id, adderss: item.adderss, metarial: item.deliver_count.metarial, mobile: item.deliver_count.mobile}})">
|
||||
去邮寄({{item.deliver_count.num}}/{{item.deliver_count.all}})
|
||||
</view>
|
||||
<view class="item-express active" v-else>
|
||||
已邮寄({{item.deliver_count.num}}/{{item.deliver_count.all}})
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="item" v-if="item.deliver_count.num > 0">
|
||||
<view class="item-label">
|
||||
物流信息
|
||||
</view>
|
||||
<view class="item-express" v-if="item.deliver_count.num > 0" @click="expressSheet(item.business_order_id)">
|
||||
去查看
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- end 待判断 -->
|
||||
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
下单日期
|
||||
</view>
|
||||
<view class="item-text">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn">
|
||||
<view class="btn-user" @click="callPhone(item.manager.username)">
|
||||
|
||||
<image class="btn-user-head" :src="item.manager.avatar ? item.manager.avatar : '/static/imgs/default_myHead.png'" mode="aspectFill"></image>
|
||||
<view class="btn-user-cont">
|
||||
<view class="btn-user-name">{{item.manager.nickname}}</view>
|
||||
<view class="btn-user-tips">业务咨询</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn-lable">
|
||||
<view class="btn-lable-go" @click="$Router.push({name: 'sheetSpeed', params: {id: item.business_order_id}})">
|
||||
查看进度
|
||||
</view>
|
||||
<view class="btn-lable-go" v-if="item.status.value == 2" @click="$Router.push({name: 'sheetEstimate', params: {id: item.business_order_id}})">
|
||||
预估方案
|
||||
</view>
|
||||
<view class="btn-lable-go" v-else-if="item.status.value == 3" @click="$Router.push({name: 'sheetPayment', params: {id: item.business_order_id, price: item.total, style: 'daijiao'}})">
|
||||
去缴费
|
||||
</view>
|
||||
<view class="btn-lable-go" v-else-if="item.status.value == 4" @click="contractClick(item.business_order_id)">
|
||||
去签约
|
||||
</view>
|
||||
<view class="btn-lable-go" v-else-if="item.status.value == 5" @click="$Router.push({name: 'sheetSpeed', params: {id: item.business_order_id}})">
|
||||
去完善
|
||||
</view>
|
||||
<block v-else-if="item.status.value == 6 || item.status.value == 8">
|
||||
<view class="btn-lable-go" v-if="item.can.diff" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, remark: item.diff.remark, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
<block v-else>
|
||||
<view class="btn-lable-go" v-if="item.status.value == 8" @click="$Router.push({name: 'sheetHandle', params: {id: item.business_order_id}})">
|
||||
查看记录
|
||||
</view>
|
||||
<view class="btn-lable-go active" v-else>{{item.status.text}}</view>
|
||||
</block>
|
||||
</block>
|
||||
<view class="btn-lable-go active" v-else-if="item.status.value == 7">
|
||||
{{item.status.text}}
|
||||
</view>
|
||||
<block v-else-if="item.status.value == 9">
|
||||
<view class="btn-lable-go" v-if="item.can.confirm" @click="$Router.push({name: 'OrderModify', params: {id: item.business_order_id}})">
|
||||
去确认
|
||||
</view>
|
||||
</block>
|
||||
<!-- <view class="btn-lable-go" v-else-if="item.status.value == 8" @click="$Router.push({name: 'sheetHandle'})">
|
||||
{{item.status.text}}
|
||||
</view> -->
|
||||
|
||||
<block v-else-if="item.status.value == 10">
|
||||
<view class="btn-lable-go" v-if="item.can.diff" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, remark: item.diff.remark, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
<view class="btn-lable-go active" v-else>{{item.status.text}}</view>
|
||||
</block>
|
||||
|
||||
<view v-else class="btn-lable-go" @click="$Router.push({name: 'sheetSpeed', params: {id: item.business_order_id}})">
|
||||
{{item.status.text}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pagesLoding" v-if="lodingStats">
|
||||
<block v-if="page.has_more">
|
||||
<image class="pagesLodingIcon" src="/static/icons/refresh_loding.gif" mode="widthFix"></image>加载中...
|
||||
</block>
|
||||
<block v-else>
|
||||
没有更多了~
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<view class="reveal-no pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无订单</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { myOrders, contractGo, userIndex, expressList, myRefund } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
count : '', // 订单数量
|
||||
dropDown : false, // 订单下拉
|
||||
status : '', // 订单状态 0 待预约 1 待评估 2待匹配服务包 3 待缴服务费 4 待完善资料 5 待初审
|
||||
orderArr : [], // 订单列表
|
||||
baleState : false, // 展开收起
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
dropDownSee : '0',
|
||||
ordersCount : '', // 数字
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取用户信息
|
||||
this.userInfo();
|
||||
|
||||
if(this.status == '11') {
|
||||
// 退款列表
|
||||
this.refundClick()
|
||||
} else {
|
||||
// 获取基础信息
|
||||
this.orderInfo();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 用户信息
|
||||
userInfo() {
|
||||
userIndex().then(res => {
|
||||
this.ordersCount = res.business_orders_count
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 基础信息
|
||||
orderInfo(page) {
|
||||
myOrders({
|
||||
status: this.status || null,
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let esArr = res.lists.data
|
||||
esArr.forEach((item, index) => {
|
||||
item.typeShow = false
|
||||
})
|
||||
|
||||
let list = this.orderArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(esArr)
|
||||
this.orderArr = newData
|
||||
this.page = res.lists.page
|
||||
this.count = res.count
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
//tab更改
|
||||
screenClick(e) {
|
||||
this.status = e
|
||||
this.dropDown = false
|
||||
|
||||
// 获取基础信息
|
||||
this.orderInfo();
|
||||
if(e == 0) {
|
||||
this.dropDownSee = '0'
|
||||
return
|
||||
}
|
||||
this.dropDownSee = ''
|
||||
},
|
||||
|
||||
//退款成功
|
||||
refundClick(page) {
|
||||
this.dropDown = false
|
||||
this.status = '11'
|
||||
|
||||
if(this.status == 0) {
|
||||
this.dropDownSee = '0'
|
||||
return
|
||||
}
|
||||
this.dropDownSee = ''
|
||||
|
||||
myRefund({
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let esArr = res.data
|
||||
esArr.forEach((item, index) => {
|
||||
item.typeShow = false
|
||||
})
|
||||
|
||||
let list = this.orderArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(esArr)
|
||||
this.orderArr = newData
|
||||
this.page = res.page
|
||||
// this.count = res.count
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//查看更多
|
||||
screenDrop() {
|
||||
this.dropDown = true
|
||||
},
|
||||
|
||||
// 列表展开
|
||||
typeState(index) {
|
||||
var listData = this.orderArr
|
||||
var helpFlag = this.orderArr[index].typeShow
|
||||
listData.forEach((item) => {
|
||||
item.typeShow = false
|
||||
})
|
||||
listData[index].typeShow = !helpFlag
|
||||
this.orderArr = listData
|
||||
},
|
||||
|
||||
// 拨打电话
|
||||
callPhone(e) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: e
|
||||
})
|
||||
},
|
||||
|
||||
// 去签约
|
||||
contractClick(id) {
|
||||
contractGo(id, {
|
||||
// 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)
|
||||
window.location.href= res.sign_url
|
||||
// uni.navigateTo({
|
||||
// url: '/webview/webview?faceUrl=' + faceUrl
|
||||
// });
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取邮寄列表弹出
|
||||
expressSheet(id) {
|
||||
expressList(id).then(res => {
|
||||
let nameArr = []
|
||||
nameArr = res.map(val => {
|
||||
return val.type
|
||||
})
|
||||
uni.showActionSheet({
|
||||
itemList: nameArr,
|
||||
success: sheetRes => {
|
||||
this.$Router.push({name: 'sheetLogistic', params: {express: res[sheetRes.tapIndex].business_order_express_id}})
|
||||
},
|
||||
fail: sheetFail => {}
|
||||
})
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 获取基础信息
|
||||
this.orderInfo();
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 获取基础信息
|
||||
this.orderInfo(pageNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.content{
|
||||
background: #f4f4f4;
|
||||
// height: calc(100vh - 44px);
|
||||
overflow: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.model {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
height: 280rpx;
|
||||
.model-back,
|
||||
.model-list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.model-back {
|
||||
height: 100%;
|
||||
}
|
||||
.model-list {
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
padding-top: $padding * 3;
|
||||
color: #ffffff;
|
||||
.model-label {
|
||||
flex: 2;
|
||||
text-align: center;
|
||||
.model-number {
|
||||
font-size: $title-size + 18;
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding-left: 5rpx;
|
||||
}
|
||||
}
|
||||
.model-name {
|
||||
opacity: .9;
|
||||
font-size: $title-size-lg;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 弹出背景
|
||||
.screen-back {
|
||||
position: fixed;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.screen {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
height: 100rpx;
|
||||
transition: .2s;
|
||||
z-index: 99;
|
||||
top: 188px;
|
||||
left: 0;
|
||||
position: fixed;
|
||||
background: #f4f4f4;
|
||||
padding: 20rpx 0;
|
||||
box-sizing: border-box;
|
||||
&.active {
|
||||
background-color: #ffffff;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
}
|
||||
.screen-drop {
|
||||
border-top: 2rpx solid #f7f7f7;
|
||||
position: absolute;
|
||||
top: 100rpx;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
background-color: #ffffff;
|
||||
box-sizing: border-box;
|
||||
border-radius: 0 0 $radius $radius;
|
||||
overflow: hidden;
|
||||
.screen-list {
|
||||
padding: $padding 0 $padding - 20;
|
||||
overflow: hidden;
|
||||
.screen-list-item {
|
||||
width: 25%;
|
||||
float: left;
|
||||
text-align: center;
|
||||
font-size: $title-size-sm;
|
||||
color: #111111;
|
||||
margin-bottom: $margin;
|
||||
.screen-list-img {
|
||||
position: relative;
|
||||
image {
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
.screen-list-number {
|
||||
position: absolute;
|
||||
top: -10rpx;
|
||||
right: 25%;
|
||||
background-color: $mian-color;
|
||||
border-radius: $radius;
|
||||
color: #ffffff;
|
||||
padding: 0 10rpx;
|
||||
font-size: $title-size-sm - 2;
|
||||
}
|
||||
}
|
||||
&.active {
|
||||
color: $mian-color;
|
||||
}
|
||||
|
||||
&.active .screen-list-img image {
|
||||
-webkit-filter: grayscale(0%);
|
||||
filter: grayscale(0%);
|
||||
}
|
||||
}
|
||||
}
|
||||
.screen-btn {
|
||||
display: flex;
|
||||
.screen-btn-handle {
|
||||
flex: 2;
|
||||
text-align: center;
|
||||
line-height: 90rpx;
|
||||
background-color: #FBE7EE;
|
||||
color: $mian-color;
|
||||
&.screen-btn-go {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.screen-lable {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
.screen-lable-item {
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
font-size: $title-size-m;
|
||||
color: #999999;
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
text {
|
||||
background-color: transparent;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
padding: 0 $padding - 10;
|
||||
border-radius: $radius * 2;
|
||||
}
|
||||
&.active text {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
}
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.screen-arrow {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-top: 16rpx;
|
||||
-moz-transform:rotate(-180deg);
|
||||
-webkit-transform:rotate(-180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.reveal {
|
||||
padding: 0 $padding $padding;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin-top: 380rpx;
|
||||
.list {
|
||||
border-radius: $radius-lg;
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 30rpx;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.borderBottom {
|
||||
border-bottom: 2rpx solid #f7f7f7;
|
||||
}
|
||||
.baleShow {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.baleColor {
|
||||
background-color: #FFF5F9;
|
||||
padding: 10rpx $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-m;
|
||||
.baleShow-label {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
line-height: 54rpx;
|
||||
color: #111111;
|
||||
.baleShow-name {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.item {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
padding-bottom: $padding;
|
||||
display: flex;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 44rpx;
|
||||
.item-name {
|
||||
font-size: $title-size-lg;
|
||||
flex: 1;
|
||||
}
|
||||
.item-status {
|
||||
color: $mian-color;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.item-label {
|
||||
flex: 1;
|
||||
color: #999999;
|
||||
}
|
||||
.item-express {
|
||||
font-size: $title-size-m;
|
||||
color: $mian-color;
|
||||
border-radius: $radius-m;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
text-align: right;
|
||||
&.active {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.item-quantity {
|
||||
background-color: #FFF5EA;
|
||||
color: #FFA031;
|
||||
font-size: $title-size-sm;
|
||||
padding: 0 20rpx;
|
||||
border-radius: $radius;
|
||||
&.gery {
|
||||
background-color: #f5f5f5;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.item-text {
|
||||
text-align: right;
|
||||
display: flex;
|
||||
.item-text-go {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
padding: 0 10rpx;
|
||||
border-radius: $radius-m;
|
||||
margin: 3rpx 10rpx 0 0;
|
||||
height: 38rpx;
|
||||
line-height: 38rpx;
|
||||
}
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
}
|
||||
.item-text-arrow {
|
||||
width: 22rpx;
|
||||
margin-left: 10rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
display: flex;
|
||||
padding: $padding $padding - 10;
|
||||
box-sizing: border-box;
|
||||
border-top: 2rpx solid #f7f7f7;
|
||||
.btn-user {
|
||||
flex: 1;
|
||||
line-height: 54rpx;
|
||||
display: flex;
|
||||
.btn-user-head {
|
||||
width: 54rpx;
|
||||
height: 54rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.btn-user-cont {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
.btn-user-name {
|
||||
padding: 0 $padding - 10;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
.btn-user-tips {
|
||||
background-color: #FBE7EE;
|
||||
color: $mian-color;
|
||||
height: 44rpx;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-sm - 2;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 15rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn-lable {
|
||||
font-size: $title-size-sm;
|
||||
display: flex;
|
||||
.btn-lable-go {
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
text-align: center;
|
||||
background-color: #FBAF3B;
|
||||
border: 2rpx solid transparent;
|
||||
color: #ffffff;
|
||||
border-radius: $radius * 2;
|
||||
width: 140rpx;
|
||||
&:first-child {
|
||||
background-color: #ffffff;
|
||||
color: #111111;
|
||||
border-color: #999999;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
&.active {
|
||||
background-color: #ededed;
|
||||
color: #727272;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 暂无内容
|
||||
.reveal-no {
|
||||
padding: 200rpx 0;
|
||||
}
|
||||
</style>
|
||||
217
pages/sheet/loan.vue
Normal file
217
pages/sheet/loan.vue
Normal file
@@ -0,0 +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="../../static/imgs/consult_btn.png" mode="widthFix"></image>
|
||||
<image class="lawyerBtn-img lawyerBtn-see" src="../../static/imgs/consult_text.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="@/static/imgs/general_back.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>
|
||||
206
pages/sheet/logistic.vue
Normal file
206
pages/sheet/logistic.vue
Normal file
@@ -0,0 +1,206 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<block v-if="logisticArr.length > 0">
|
||||
<view class="top">
|
||||
<view class="top-logo">
|
||||
<image :src="orderExpress.cover ? orderExpress.cover : '/static/imgs/Nologistic.png'" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="top-cont">
|
||||
<view class="top-name">
|
||||
{{orderExpress.express_name}}
|
||||
<view class="top-no">
|
||||
{{orderExpress.express_number}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="top-type">
|
||||
[邮寄资料] <text>{{orderExpress.type}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="white">
|
||||
<view class="address">
|
||||
<view class="address-tips">
|
||||
收
|
||||
</view>
|
||||
<view class="address-text">
|
||||
{{address.full_address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="item" v-for="(item, index) in logisticArr" :key="index">
|
||||
<view class="item-name">
|
||||
<view class="item-status">
|
||||
{{item.status}}
|
||||
</view>
|
||||
<view class="item-time">
|
||||
{{item.time}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="item-text">
|
||||
{{item.context}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Nologistic.png"></image>
|
||||
<view>暂无物流信息</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { logistic } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
logisticArr: [], // 物流列表
|
||||
orderExpress: '',
|
||||
address: ''
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取物流列表
|
||||
this.logisticInfo()
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 物流列表
|
||||
logisticInfo(){
|
||||
logistic(this.$Route.query.express).then(res => {
|
||||
this.logisticArr = res.logistics
|
||||
this.orderExpress = res.orderExpress
|
||||
this.address = res.address
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: $mian-color;
|
||||
padding: $padding + 10 $padding $padding * 2;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.top-logo {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
padding: 10rpx;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.top-cont {
|
||||
color: #ffffff;
|
||||
width: calc(100% - 130rpx);
|
||||
margin-left: 30rpx;
|
||||
.top-name {
|
||||
display: flex;
|
||||
padding: 10rpx 0;
|
||||
.top-no {
|
||||
font-size: $title-size-m;
|
||||
padding-left: $padding;
|
||||
opacity: .9;
|
||||
}
|
||||
}
|
||||
.top-type {
|
||||
font-size: $title-size-m;
|
||||
text {
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.address {
|
||||
color: #333333;
|
||||
font-size: $title-size-m;
|
||||
display: flex;
|
||||
padding: $padding $padding 0;
|
||||
.address-tips {
|
||||
width: 54rpx;
|
||||
text-align: center;
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #EEEEEE;
|
||||
margin-left: -15rpx;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.address-text {
|
||||
width: calc(100% - 74rpx);
|
||||
margin-left: 20rpx;
|
||||
padding-top: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.white {
|
||||
margin-top: -30rpx;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.item {
|
||||
padding-bottom: $padding + 10;
|
||||
padding-left: $padding + 10;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
&:first-child {
|
||||
padding-top: $padding;
|
||||
}
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
background-color: #DDDDDD;
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
border-radius: 50%;
|
||||
left: 0;
|
||||
top: calc(50% - 6rpx);
|
||||
z-index: 3;
|
||||
border: 2rpx solid #ffffff;
|
||||
}
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
background-color: #F0F0F0;
|
||||
width: 2rpx;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
left: 8rpx;
|
||||
top: 0;
|
||||
}
|
||||
.item-name {
|
||||
display: flex;
|
||||
.item-status {
|
||||
font-weight: 600;
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
.item-time {
|
||||
color: #868686;
|
||||
}
|
||||
}
|
||||
.item-text {
|
||||
color: #868686;
|
||||
font-size: $title-size-sm;
|
||||
line-height: 40rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
618
pages/sheet/pay.vue
Normal file
618
pages/sheet/pay.vue
Normal file
@@ -0,0 +1,618 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="paymentTop">
|
||||
<view class="paymentTop-name">
|
||||
需支付金额(元)
|
||||
</view>
|
||||
<view class="paymentTop-price">
|
||||
<text>¥</text>{{applyData.price}}
|
||||
</view>
|
||||
<view class="paymentTop-text">
|
||||
与人方便,与己方便,珍惜时间,请先付款
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList">
|
||||
<view class="paymentList-label" v-if="couponData" @click="payType('coupon')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/payCoupon.png" mode="widthFix"></image>抵值券
|
||||
</view>
|
||||
<view class="paymentList-right" @click="couponState = true">
|
||||
<view class="paymentList-tips" v-if="Payment == 'wechat'">
|
||||
使用优惠券
|
||||
</view>
|
||||
<view class="paymentList-price" v-else>{{couponData.price}}元</view>
|
||||
<image class="paymentList-img" :src="Payment == 'coupon' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList-label" @click="payType('wechat')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/payWechat.png" mode="widthFix"></image>微信支付
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<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-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/minPay.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 class="paymentList-label" @click="payType('dgwx')" >
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/minPay.png" mode="widthFix"></image>微信支付(汇付)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'dgwx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="paymentList-label" @click="payType('umsAli')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/aliPay.png" mode="widthFix"></image>支付宝(银联商务)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'umsAli' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList-label" @click="payType('dgAli')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/aliPay.png" mode="widthFix"></image>支付宝(汇付)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'dgAli' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentBtn" v-if="Payment == 'umsMp'">
|
||||
<!-- web.douhuotest.douhuofalv dev=0是线上 dev=1是线下 -->
|
||||
<wx-open-launch-weapp
|
||||
username="gh_918c81628d6f"
|
||||
:path="'pages/pay/pay?type=h5&dev=1&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="Payment == 'dgwx'">
|
||||
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChickDg">
|
||||
打开小程序收银台
|
||||
</button>
|
||||
</view>
|
||||
|
||||
<view class="paymentBtn" v-else>
|
||||
<button class="paymentBtn-go" type="default" @click="payClick" :disabled="disabled">立即支付</button>
|
||||
</view>
|
||||
|
||||
<!-- 抵值券选择 -->
|
||||
<view class="couponPop" v-if="couponState"></view>
|
||||
<view class="couponEject" :class="{active: couponState}">
|
||||
<image class="couponClose" src="@/static/imgs/payClose.png" mode="widthFix" @click="couponState = false"></image>
|
||||
<view class="couponEject-title">
|
||||
抵值券选择
|
||||
</view>
|
||||
<scroll-view class="couponEject-list" scroll-y="true" show-scrollbar="false">
|
||||
<view class="couponEject-label" v-for="(item, index) in couponArr" :key="index" @click="selectClick(index)">
|
||||
<image class="couponSelect" :src="!item.state ? '/static/imgs/paySelect.png' : '/static/imgs/paySelect_active.png'" mode="aspectFill"></image>
|
||||
<view class="couponEject-top">
|
||||
<view class="couponEject-number">
|
||||
{{item.price}}<text>元</text>
|
||||
</view>
|
||||
<view class="couponEject-head">
|
||||
{{item.title}}
|
||||
<view class="couponEject-clue">{{item.price_text}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="couponEject-bottom">
|
||||
<view class="couponEject-tips">
|
||||
抵值券
|
||||
</view>
|
||||
<view class="couponEject-time">
|
||||
{{item.time.interval}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="couponBtn" @click="couponGo">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Apply, Wechat } from '@/apis/interfaces/index'
|
||||
import { ums, umsState, umsDg } from '@/apis/interfaces/pay'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
token : '', // 登录token
|
||||
tradeId : '', // 微信支付id
|
||||
jumpUrlDg : '', // 抖巩支付
|
||||
Payment : 'wechat', // 支付类型
|
||||
applyData : '', // 支付数据
|
||||
orderNo : '', // 订单
|
||||
couponState : false, // 优惠券弹出层
|
||||
couponData : '', // 优惠券
|
||||
couponArr : [], // 优惠券列表
|
||||
disabled : false, // 按钮状态
|
||||
getState : false, // 获取订单状态
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
if(this.getState && this.tradeId != ''){
|
||||
this.getUmsState(this.tradeId)
|
||||
}
|
||||
this.token = this.$store.getters.getToken
|
||||
this.applyInfo();
|
||||
},
|
||||
methods: {
|
||||
// 查询支付状态
|
||||
getUmsState(tradeId){
|
||||
uni.showLoading({
|
||||
title: '查询支付结果...',
|
||||
mask : true
|
||||
})
|
||||
let outTime;
|
||||
let resNumb = 0;
|
||||
outTime = setInterval(() => {
|
||||
if(resNumb >= 3){
|
||||
clearInterval(outTime)
|
||||
uni.hideLoading()
|
||||
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 => {
|
||||
clearInterval(outTime)
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}, 2000)
|
||||
},
|
||||
// 获取9.9预约
|
||||
applyInfo() {
|
||||
Apply(this.$Route.query.id).then(res => {
|
||||
let newCoupons = res.coupons
|
||||
newCoupons.forEach((item, index) => {
|
||||
item.state = false
|
||||
})
|
||||
this.couponData = res.coupon
|
||||
this.couponArr = newCoupons
|
||||
this.applyData = res.apply
|
||||
this.orderNo = res.apply.order_no
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
payType(type) {
|
||||
if(this.Payment === type) return
|
||||
this.Payment = type
|
||||
if(type === 'umsMp'){
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
this.UMSPay()
|
||||
} else if(type === 'dgwx') {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
this.dgwxPay()
|
||||
}
|
||||
},
|
||||
|
||||
// 斗拱微信支付
|
||||
dgwxPay(){
|
||||
let payType = this.Payment == 'dgwx' ? 'mp' : 'mp_alipay'
|
||||
umsDg(this.orderNo, {type: payType, app_schema: 'weixin://'}).then(res => {
|
||||
let { params, trade_id } = res;
|
||||
this.getState = true
|
||||
switch (payType){
|
||||
case 'mp':
|
||||
this.tradeId = trade_id
|
||||
this.jumpUrlDg = JSON.parse(params.miniapp_data)
|
||||
this.Payment = 'dgwx'
|
||||
break;
|
||||
case 'mp_alipay':
|
||||
this.tradeId = trade_id
|
||||
window.location.href = `https://ds.alipay.com/?scheme=` + encodeURIComponent(params.jump_url)
|
||||
this.Payment = 'dgwxalipay'
|
||||
break;
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 新银联商务支付
|
||||
UMSPay(){
|
||||
let payType = this.Payment == 'umsMp' ? 'mp' : 'mp_alipay'
|
||||
ums(this.orderNo, {type: payType}).then(res => {
|
||||
this.getState = true
|
||||
switch (payType){
|
||||
case 'mp':
|
||||
this.tradeId = res.trade_id
|
||||
break;
|
||||
case 'mp_alipay':
|
||||
this.tradeId = res.trade_id
|
||||
window.location.href = res.alipay
|
||||
break;
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 抖供支付
|
||||
payChickDg() {
|
||||
window.location.href = this.jumpUrlDg.scheme_code
|
||||
},
|
||||
|
||||
// 微信支付
|
||||
payClick() {
|
||||
if(this.Payment === 'umsMp' || this.Payment === 'umsAli'){
|
||||
this.UMSPay()
|
||||
return
|
||||
} else if (this.Payment === 'dgwx' || this.Payment === 'dgAli') {
|
||||
this.dgwxPay()
|
||||
return
|
||||
}
|
||||
let newCouponid
|
||||
if(this.Payment == 'coupon') {
|
||||
newCouponid = this.couponData.coupon_grant_id
|
||||
} else {
|
||||
newCouponid = ''
|
||||
}
|
||||
Wechat(this.orderNo, {
|
||||
coupon_grant_id : newCouponid,
|
||||
openid : this.$store.getters.getOpenId
|
||||
}).then(res => {
|
||||
// 直接跳到列表
|
||||
if(res.canPay == false) {
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: '支付成功',
|
||||
icon: "none"
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'User'})
|
||||
},3000)
|
||||
return
|
||||
}
|
||||
// 跳支付
|
||||
let wxConfig = JSON.parse(res.wechat)
|
||||
this.$wx.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'})
|
||||
},2000)
|
||||
},
|
||||
cancel: payCancel => {
|
||||
// 跳到个人中心
|
||||
this.$Router.replace({name: 'User'})
|
||||
this.disabled = true
|
||||
},
|
||||
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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 优惠券-点击
|
||||
selectClick(index) {
|
||||
var listData = this.couponArr
|
||||
var helpFlag = this.couponArr[index].state
|
||||
listData.forEach((item) => {
|
||||
item.state = false
|
||||
})
|
||||
listData[index].state = !helpFlag
|
||||
this.couponArr = listData
|
||||
this.couponIndex = index
|
||||
},
|
||||
|
||||
// 选择优惠券
|
||||
couponGo() {
|
||||
if(this.couponArr[this.couponIndex]) {
|
||||
this.couponData = this.couponArr[this.couponIndex]
|
||||
this.couponState = false
|
||||
return
|
||||
}
|
||||
uni.showToast({
|
||||
title: '请选择抵值券',
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content{
|
||||
background: #f4f4f4;
|
||||
height: 100vh;
|
||||
// height: calc(100vh - 44px);
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.paymentTop {
|
||||
padding: $padding * 4 $padding;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
color: #666666;
|
||||
.paymentTop-name {
|
||||
padding-left: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.paymentTop-price {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 40;
|
||||
font-weight: 600;
|
||||
margin: $margin - 10 0;
|
||||
text {
|
||||
font-size: $title-size + 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentList {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.paymentList-label {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
padding: $padding + 10 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin + 10;
|
||||
display: flex;
|
||||
.paymentList-left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
line-height: 40rpx;
|
||||
.paymentList-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: $margin - 10;
|
||||
}
|
||||
}
|
||||
.paymentList-right {
|
||||
display: flex;
|
||||
.paymentList-price {
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
}
|
||||
.paymentList-tips {
|
||||
background-image: linear-gradient(to left, #FF4646, #FF7676);
|
||||
height: 44rpx;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: #ffffff;
|
||||
opacity: .9;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.paymentList-arrow {
|
||||
width: 14rpx;
|
||||
margin: 10rpx 0 0 20rpx;
|
||||
}
|
||||
.paymentList-img {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-top: 4rpx;
|
||||
margin-left: $margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentBtn {
|
||||
text-align: center;
|
||||
padding: 0 $padding 100rpx;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
.paymentBtn-go {
|
||||
position: relative;
|
||||
width: 280px;
|
||||
background-color: #da2b56;
|
||||
color: #ffffff;
|
||||
border-radius: 5px;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
font-size: 18px;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 弹出层
|
||||
.couponPop {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.couponEject {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 70vh;
|
||||
left: 0;
|
||||
bottom: -1000%;
|
||||
background-color: #ffffff;
|
||||
z-index: 12;
|
||||
padding: $padding $padding + 20;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius + 10 $radius + 10 0 0;
|
||||
transition: .2s;
|
||||
&.active {
|
||||
bottom: 0;
|
||||
}
|
||||
.couponClose {
|
||||
position: absolute;
|
||||
right: $margin + 10;
|
||||
top: $margin + 10;
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
.couponEject-title {
|
||||
text-align: center;
|
||||
font-size: $title-size + 4;
|
||||
height: 60rpx;
|
||||
}
|
||||
.couponEject-list {
|
||||
height: calc(100% - 200rpx);
|
||||
overflow-y: scroll;
|
||||
overflow: hidden;
|
||||
margin-top: $margin;
|
||||
.couponEject-label {
|
||||
background-color: #FFF5EA;
|
||||
border-radius: $radius;
|
||||
margin-bottom: $margin;
|
||||
position: relative;
|
||||
&::after,
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
bottom: 80rpx;
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
&::after {
|
||||
left: -15rpx;
|
||||
}
|
||||
&::before {
|
||||
right: -15rpx;
|
||||
}
|
||||
.couponSelect {
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
top: 20%;
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
}
|
||||
.couponEject-top,
|
||||
.couponEject-bottom {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.couponEject-top {
|
||||
padding: $padding 0;
|
||||
box-sizing: border-box;
|
||||
.couponEject-number {
|
||||
width: 220rpx;
|
||||
text-align: center;
|
||||
font-size: $title-size + 25;
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding-left: 5rpx;
|
||||
}
|
||||
}
|
||||
.couponEject-head {
|
||||
width: calc(100% - 220rpx);
|
||||
padding-left: $padding + 10;
|
||||
box-sizing: border-box;
|
||||
border-left: 2rpx dashed #fffdf7;
|
||||
.couponEject-clue {
|
||||
color: #FFA031;
|
||||
font-size: $title-size-m;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.couponEject-bottom {
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
font-size: $title-size-m;
|
||||
color: #e17900;
|
||||
border-top: 2rpx dashed #fffdf7;
|
||||
.couponEject-tips {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.couponBtn {
|
||||
height: 94rpx;
|
||||
line-height: 94rpx;
|
||||
margin: 30rpx 0;
|
||||
background-color: #FFA031;
|
||||
color: #ffffff;
|
||||
border-radius: $radius * 4;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
422
pages/sheet/payment.vue
Normal file
422
pages/sheet/payment.vue
Normal file
@@ -0,0 +1,422 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="paymentTop">
|
||||
<!-- v-if="applyData.status" -->
|
||||
<view class="paymentTop-name">
|
||||
订单支付
|
||||
<text>与人方便,与己方便,珍惜时间,请先付款</text>
|
||||
</view>
|
||||
<img class="paymentTop-img" src="@/static/imgs/payment.png">
|
||||
</view>
|
||||
<view class="paymentShow">
|
||||
<img class="paymentShow-img" src="@/static/imgs/payment_back.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=1&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>
|
||||
|
||||
<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>
|
||||
74
pages/sheet/point.vue
Normal file
74
pages/sheet/point.vue
Normal file
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="point">
|
||||
<img class="point-img" src="@/static/imgs/payImg.png">
|
||||
<view class="point-text">
|
||||
<view class="point-name">
|
||||
支付成功
|
||||
</view>
|
||||
<view class="point-tips">
|
||||
<text>您已完成支付</text>
|
||||
<text>谢谢您对抖火的支持</text>
|
||||
</view>
|
||||
<view class="point-btn">
|
||||
<!-- @click="$Router.push({name: 'sheetHandle'})" -->
|
||||
<view class="btn" @click="$Router.push({name: 'sheetIndex'})">
|
||||
查看订单
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.point {
|
||||
text-align: center;
|
||||
padding: 40% 0;
|
||||
.point-img {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
margin: 0 auto 10rpx;
|
||||
}
|
||||
.point-text {
|
||||
.point-name {
|
||||
color: $mian-color;
|
||||
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 {
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
border-radius: $radius * 4;
|
||||
padding: 0 $padding * 2.5;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
74
pages/sheet/process.vue
Normal file
74
pages/sheet/process.vue
Normal file
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- 提示 -->
|
||||
<view class="pack-center process-pack">
|
||||
<img class="process-img" src="@/static/imgs/processGif.gif">
|
||||
<view class="process-text">
|
||||
<view class="process-name">
|
||||
资料正在审核中...
|
||||
</view>
|
||||
<view class="process-tips">
|
||||
请您耐心等待,我们会尽快进行审核
|
||||
</view>
|
||||
</view>
|
||||
<view class="process-btn">
|
||||
<view class="btn" @click="clickBack">
|
||||
知道了
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
onLoad() {},
|
||||
methods: {
|
||||
// 返回上一页
|
||||
clickBack() {
|
||||
uni.navigateBack(1)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.process-pack {
|
||||
padding: 0 $padding * 4;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.process-img {
|
||||
width: 100%;
|
||||
}
|
||||
.process-text {
|
||||
text-align: center;
|
||||
line-height: 68rpx;
|
||||
margin-top: $margin;
|
||||
.process-name {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 8;
|
||||
}
|
||||
.process-tips {
|
||||
font-size: $title-size;
|
||||
color: #99a5b4;
|
||||
}
|
||||
}
|
||||
|
||||
.process-btn {
|
||||
text-align: center;
|
||||
margin-top: $margin * 2;
|
||||
.btn {
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
border-radius: $radius-m;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
629
pages/sheet/speed.vue
Normal file
629
pages/sheet/speed.vue
Normal file
@@ -0,0 +1,629 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<img class="speedBack" src="@/static/imgs/speed_back.png">
|
||||
<view class="speedFrame">
|
||||
<view class="speedCont">
|
||||
<view class="item" :class="{active: !item.over && !item.status}" v-for="(item, index) in stepArr" :key="index">
|
||||
<view class="item-circular">{{item.order}}</view>
|
||||
<img class="item-img" :src="item.icon">
|
||||
<view class="item-text">
|
||||
<view class="item-top">
|
||||
<view class="item-name">
|
||||
{{item.name}}
|
||||
<block v-if="item.key == 'b_complete'">
|
||||
<block v-if="item.refund_status.value > 0">({{item.refund_status.text}})</block>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 去支付待预约 -->
|
||||
<block v-if="item.key == 'a_init'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetPay', params: {id: infoData.id}})">
|
||||
去支付
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 查看预估方案 -->
|
||||
<block v-else-if="item.key == 'a_service'">
|
||||
<block v-if="!item.status && item.over">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetEstimate', params: {id: infoData.id}})">
|
||||
去查看
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 去缴费服务费 -->
|
||||
<block v-else-if="item.key == 'a_serviced'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetPayment', params: {id: infoData.id, price: infoData.total, style: 'daijiao'}})">
|
||||
去缴费
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 待签约 -->
|
||||
<block v-else-if="item.key == 'b_sign'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="contractClick">
|
||||
去签约
|
||||
<image class="item-more active" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 初审中 -->
|
||||
<block v-else-if="item.key == 'b_check'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetProcess'})">
|
||||
查看进度
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 复审中 -->
|
||||
<block v-else-if="item.key == 'b_recheck'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetProcess'})">
|
||||
查看进度
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 办理中 -->
|
||||
<block v-else-if="item.key == 'b_process'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'sheetHandle', params: {id: infoData.id}})">
|
||||
查看记录
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 办理中 -->
|
||||
<block v-else-if="item.key == 'b_confirm'">
|
||||
<block v-if="item.status">
|
||||
<view class="item-btn active" @click="$Router.push({name: 'OrderModify', params: {id: infoData.id}})">
|
||||
去确认
|
||||
<image class="item-more" src="/static/imgs/speedMore.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 其他显示 -->
|
||||
<block v-else>
|
||||
<view class="item-btn">
|
||||
{{item.buttonText}}
|
||||
<image class="item-more" src="/static/imgs/speedOver.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- start 补充详细资料 -->
|
||||
<view class="item-see" v-if="item.key == 'a_bank' && item.status == true">
|
||||
<!-- 基础信息 -->
|
||||
<view class="item-see-label">
|
||||
<view class="item-see-name">
|
||||
基础信息
|
||||
</view>
|
||||
<!-- orderId -->
|
||||
<view v-if="!item.base" class="item-see-go" @click="$Router.push({name: 'ModifyBase', params: {id: infoData.id}})">
|
||||
去补充
|
||||
</view>
|
||||
<view v-else class="item-see-go active">
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 机构信息 -->
|
||||
<view v-if="item.status">
|
||||
<block v-if="item.items.length > 0">
|
||||
<view class="item-see-label" v-for="(items, itemsIndex) in item.items" :key="itemsIndex">
|
||||
<view class="item-see-name">
|
||||
{{items.institution.title}}({{items.business_type.title}})
|
||||
</view>
|
||||
<view class="item-see-go" v-if="items.is_finish != 1" @click="$Router.push({name: 'ModifyBank', params: {id: items.business_order_item_id}})">
|
||||
去补充
|
||||
</view>
|
||||
<view class="item-see-go active" v-else>
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 邮寄资料 -->
|
||||
<view class="item-see-label" v-if="infoData.deliver_count.can">
|
||||
<view class="item-see-name">
|
||||
邮寄资料({{infoData.deliver_count.num}}/{{infoData.deliver_count.all}})
|
||||
</view>
|
||||
<view class="item-see-go" v-if="item.deliver.status" @click="$Router.push({name: 'sheetExpress', params: {id: infoData.id, adderss: infoData.adderss, metarial: infoData.deliver_count.metarial, mobile: infoData.deliver_count.mobile}})">
|
||||
去邮寄
|
||||
</view>
|
||||
<view class="item-see-go active" v-else>
|
||||
已邮寄
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<!-- end 补充详细资料 -->
|
||||
|
||||
<!-- start 待签约 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_sign' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 待签约 -->
|
||||
|
||||
<!-- start 进行中 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_process' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 进行中 -->
|
||||
|
||||
<!-- start 办理中 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_confirm' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 办理中 -->
|
||||
|
||||
<!-- start 办理完成 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_complete' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 办理完成 -->
|
||||
|
||||
<!-- start 初审中 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_check' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia',remark: item.diff.remark}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 基础信息 -->
|
||||
<view class="item-see-label" v-if="item.user.status">
|
||||
<view class="item-see-name">
|
||||
基础信息
|
||||
</view>
|
||||
<view v-if="!item.base" class="item-see-go" @click="$Router.push({name: 'ModifyBase', params: {id: infoData.id}})">
|
||||
去修改
|
||||
</view>
|
||||
<view v-else class="item-see-go active">
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 机构信息 -->
|
||||
<block v-if="item.items.status">
|
||||
<block v-if="item.items.lists.length > 0">
|
||||
<view class="item-see-label" v-for="(items, index) in item.items.lists" :key="index">
|
||||
<view class="item-see-name">
|
||||
{{items.institution.title}}({{items.business_type.title}})
|
||||
</view>
|
||||
<view class="item-see-go" v-if="items.is_finish != 1" @click="$Router.push({name: 'ModifyBank', params: {id: items.business_order_item_id}})">
|
||||
去补充
|
||||
</view>
|
||||
<view class="item-see-go active" v-else>
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<!-- 邮寄资料 -->
|
||||
<view class="item-see-label" v-if="infoData.deliver_count.can">
|
||||
<view class="item-see-name">
|
||||
邮寄资料
|
||||
</view>
|
||||
<view class="item-see-go" v-if="item.deliver.status" @click="$Router.push({name: 'sheetExpress', params: {id: infoData.id, adderss: infoData.adderss, metarial: infoData.deliver_count.metarial, mobile: infoData.deliver_count.mobile}})">
|
||||
去邮寄({{infoData.deliver_count.num}}/{{infoData.deliver_count.all}})
|
||||
</view>
|
||||
<view class="item-see-go active" v-else>
|
||||
已邮寄
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 初审中 -->
|
||||
|
||||
<!-- start 复审中 -->
|
||||
<block v-if="item.is_show">
|
||||
<view class="item-see" v-if="item.key == 'b_recheck' && item.status == true">
|
||||
<view class="item-see-label" v-if="item.diff.status">
|
||||
<view class="item-see-name">
|
||||
补差价
|
||||
</view>
|
||||
<view class="item-see-go" @click="$Router.push({name: 'sheetPayment', params: {id: item.diff.business_order_diff_price_id, price: item.diff.price, style: 'chajia'}})">
|
||||
补差价
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 基础信息 -->
|
||||
<view class="item-see-label" v-if="item.user.status">
|
||||
<view class="item-see-name">
|
||||
基础信息
|
||||
</view>
|
||||
<view v-if="!item.base" class="item-see-go" @click="$Router.push({name: 'ModifyBase', params: {id: infoData.id}})">
|
||||
去修改
|
||||
</view>
|
||||
<view v-else class="item-see-go active">
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 机构信息 -->
|
||||
<block v-if="item.items.status">
|
||||
<block v-if="item.items.lists.length > 0">
|
||||
<view class="item-see-label" v-for="(items, index) in item.items.lists" :key="index">
|
||||
<view class="item-see-name">
|
||||
{{items.institution.title}}
|
||||
</view>
|
||||
<view class="item-see-go" v-if="items.is_finish != 1" @click="$Router.push({name: 'ModifyBank', params: {id: items.business_order_item_id}})">
|
||||
去补充
|
||||
</view>
|
||||
<view class="item-see-go active" v-else>
|
||||
已完善
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 复审中 -->
|
||||
|
||||
<!-- start 初审中 -->
|
||||
<block v-if="item.key == 'b_confirm'">
|
||||
<view class="item-see" v-if="item.items.length > 0">
|
||||
<view class="item-see-label" v-for="(itemsIndex, index) in item.items" :key="index">
|
||||
<view class="item-see-name">
|
||||
{{itemsIndex.institution.title}}({{itemsIndex.business_type.title}})
|
||||
</view>
|
||||
<view class="item-see-go" :class="{greenColor: itemsIndex.status.text == '方案通过'}">
|
||||
{{itemsIndex.status.text}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- end 初审中 -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="speedCont speedWarm">
|
||||
<view class="speedWarm-title">
|
||||
如果疑惑,可联系相关人员进行咨询
|
||||
</view>
|
||||
<view class="speedWarm-label">
|
||||
电话:1888-888888
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { StepsUrl, contractGo } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
infoData: '', // 其他信息
|
||||
stepArr : '', // 列表
|
||||
orderId : ''
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.stepsInfo();
|
||||
},
|
||||
methods: {
|
||||
// 基础信息
|
||||
stepsInfo() {
|
||||
StepsUrl(this.$Route.query.id).then(res => {
|
||||
this.infoData= res.info
|
||||
this.stepArr = res.steps
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 去签约
|
||||
contractClick() {
|
||||
contractGo(this.$Route.query.id, {
|
||||
// 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)
|
||||
window.location.href= res.sign_url
|
||||
// uni.navigateTo({
|
||||
// url: '/webview/webview?faceUrl=' + faceUrl
|
||||
// });
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #448acf;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.speedBack {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.speedFrame {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.speedCont {
|
||||
border-radius: $radius;
|
||||
background-color: #ffffff;
|
||||
border: 4rpx solid #185caf;
|
||||
padding: 10rpx $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin;
|
||||
.item {
|
||||
display: flex;
|
||||
padding: $padding 0;
|
||||
position: relative;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
height: 100%;
|
||||
width: 0;
|
||||
left: 26rpx;
|
||||
top: 80rpx;
|
||||
border-left-width: 2rpx;
|
||||
border-left-style: solid;
|
||||
border-left-color: $mian-color;
|
||||
}
|
||||
&:last-child::after {
|
||||
display: none;
|
||||
}
|
||||
&.active::after {
|
||||
border-left-color: #d9d9d9;
|
||||
}
|
||||
.item-circular {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
line-height: 38rpx;
|
||||
border-radius: 50%;
|
||||
font-size: $title-size-sm;
|
||||
background-color: $mian-color;
|
||||
border: 6rpx solid #FBE7EE;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
}
|
||||
&.active .item-circular {
|
||||
background-color: #e5e5e5;
|
||||
border: 6rpx solid #f3f3f3;
|
||||
color: $text-gray;
|
||||
}
|
||||
.item-img {
|
||||
margin: 8rpx 20rpx 0;
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
-webkit-filter: grayscale(0%);
|
||||
filter: grayscale(0%);
|
||||
}
|
||||
&.active .item-img {
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
.item-text {
|
||||
width: calc(100% - 120rpx);
|
||||
.item-top {
|
||||
display: flex;
|
||||
line-height: 52rpx;
|
||||
.item-name {
|
||||
flex: 1;
|
||||
font-size: $title-size-lg;
|
||||
color: $mian-color;
|
||||
}
|
||||
.item-btn {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
display: flex;
|
||||
.item-more {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-left: 5rpx;
|
||||
margin-top: 6rpx;
|
||||
}
|
||||
&.active {
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-see {
|
||||
background-color: #f7f8fb;
|
||||
padding: 5rpx $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-sm;
|
||||
position: relative;
|
||||
margin-top: $margin - 10;
|
||||
&::after {
|
||||
content: '';
|
||||
width:0;
|
||||
height:0;
|
||||
border-width: 14rpx;
|
||||
border-style:solid;
|
||||
border-color:transparent transparent #f7f8fb transparent;
|
||||
position: absolute;
|
||||
left: 40rpx;
|
||||
top: -27rpx;
|
||||
}
|
||||
.item-see-title {
|
||||
margin: 10rpx 0;
|
||||
}
|
||||
.item-see-label {
|
||||
font-size: $title-size-sm;
|
||||
display: flex;
|
||||
line-height: 48rpx;
|
||||
padding: $padding - 10 0;
|
||||
.item-see-name {
|
||||
flex: 1;
|
||||
}
|
||||
.item-see-go {
|
||||
color: $mian-color;
|
||||
&.active {
|
||||
color: $text-gray;
|
||||
}
|
||||
&.greenColor {
|
||||
color: green;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&.active .item-name {
|
||||
color: $text-gray !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.speedWarm {
|
||||
padding: $padding + 20 $padding $padding + 10;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
color: #5f6d7a;
|
||||
&::after,
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
width: 14rpx;
|
||||
height: 80rpx;
|
||||
top: -60rpx;
|
||||
border-radius: $radius;
|
||||
background-image: linear-gradient(to top, #a7d5fe, #ffffff, #a7d5fe);
|
||||
}
|
||||
&::after {
|
||||
left: $padding + 10;
|
||||
}
|
||||
&::before {
|
||||
right: $padding + 10;
|
||||
}
|
||||
.speedWarm-title {
|
||||
font-weight: 600;
|
||||
}
|
||||
.speedWarm-label {
|
||||
font-weight: 600;
|
||||
margin-top: $margin - 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
641
pages/sheet/地址-分开三块.vue
Normal file
641
pages/sheet/地址-分开三块.vue
Normal file
@@ -0,0 +1,641 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="base">
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
<view class="base-number">
|
||||
<!-- 6/12 -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>姓名
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.name}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>性别
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.sex}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>年龄
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.age}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>属相
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.zodiak}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证号
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.id_card}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证地址
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>婚姻 <image v-if="baseData.check_params.marriage" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.marriage.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<picker class="idcardAdd-picker" @change="marriageChange($event)" :range="marriage">
|
||||
<view class="uni-input">{{marriage[marriageIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block" v-if="marriageIndex == 1">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>配偶 <image v-if="baseData.check_params.mate" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.mate.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<input class="base-block-input" :value="mate" maxlength="4" type="text" placeholder="请输入配偶姓名" placeholder-class="placeholderClass" @input="blurInput($event, 'mate')"/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block" :class="{baseAline : marriageIndex == 1}">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>学历 <image v-if="baseData.check_params.education" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.education.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<picker class="idcardAdd-picker" @change="educationChange($event)" :range="education">
|
||||
<view class="uni-input">{{education[educationIndex]}}</view>
|
||||
</picker>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>毕业学院 <image v-if="baseData.check_params.school" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.school.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<input class="base-block-input" type="text" :value="school" placeholder="请输入毕业学院" placeholder-class="placeholderClass" @input="blurInput($event, 'school')"/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系电话 <image v-if="baseData.check_params.mobile" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.mobile.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-write">
|
||||
<input class="base-block-input" maxlength="11" :value="mobile" type="tel" placeholder="请输入联系电话" placeholder-class="placeholderClass" @input="blurInput($event, 'mobile')"/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系地址
|
||||
</view>
|
||||
<view class="base-block-write from-city-picker">
|
||||
<uni-data-picker
|
||||
:localdata="cityPicker"
|
||||
:border="false"
|
||||
split="-"
|
||||
placeholder="选择城市"
|
||||
v-model="baseData.district_id"
|
||||
@change="onCityPicker"
|
||||
></uni-data-picker>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="base-block baseAline">
|
||||
<view class="base-block-name" v-if="baseData.check_params">
|
||||
<text>*</text>联系地址 <image v-if="baseData.check_params.contact_address" class="base-notesIcon" @click="seeTips('驳回原因', baseData.check_params.contact_address.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="base-block-site">
|
||||
<view class="base-site-white">
|
||||
<picker @change="areasChange" :value="area.areaIndex" :range="area.areasArr" :range-key="'name'">
|
||||
<view class="nowrap picker" v-if="area.areasArr[area.areaIndex]">
|
||||
{{ area.areasArr[area.areaIndex].name }}
|
||||
</view>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="base-site-white">
|
||||
<picker @change="cityDrop" :value="city.cityIndex" :range="city.cityArr" :range-key="'name'" class="conneColor">
|
||||
<view class="nowrap picker" v-if="city.cityArr[city.cityIndex]">
|
||||
{{ city.cityArr[city.cityIndex].name }}
|
||||
</view>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="base-site-white">
|
||||
<picker @change="regiDrop" :value="regi.regiIndex" :range="regi.regiArr" :range-key="'name'" class="conneColor">
|
||||
<view class="nowrap picker" v-if="regi.regiArr[regi.regiIndex]">
|
||||
{{ regi.regiArr[regi.regiIndex].name }}
|
||||
</view>
|
||||
<image src="/static/imgs/basic_down.png"></image>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-textarea">
|
||||
<textarea placeholder-style="color:#999999; font-size: 30rpx" maxlength="500" :value="address" @input="blurInput($event, 'address')" placeholder="请填写详细地址..."/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="introduce-btn">
|
||||
<button class="btn" size="mini" :disabled="disabled" @click="infoSubmit">提交审核</button>
|
||||
</view>
|
||||
|
||||
<!-- 驳回提示 -->
|
||||
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import uniDataPicker from '@/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js';
|
||||
import mouldTips from '@/components/mould-tips.vue'
|
||||
import { BaseFirst, userBase, basePut, create, createAll } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
components: {
|
||||
mouldTips
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
disabled: false, // 按钮状态
|
||||
baseData: '', // 基础信息
|
||||
mobile : '', // 联系方式
|
||||
mate : '', // 配偶名称
|
||||
school : '', // 毕业学院
|
||||
address : '', // 联系地址
|
||||
|
||||
// 查看提示组件
|
||||
seeData : {
|
||||
seeShow : false,
|
||||
seeTitle: '',
|
||||
seeText : '',
|
||||
},
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
|
||||
cityPicker : [],
|
||||
|
||||
// 省份选择
|
||||
area: {
|
||||
areasArr : [],
|
||||
areaId : '',
|
||||
areaIndex : 0,
|
||||
areaName : ''
|
||||
},
|
||||
|
||||
// 市级选择
|
||||
city: {
|
||||
cityArr : [],
|
||||
cityId : '',
|
||||
cityIndex : 0,
|
||||
cityName : ''
|
||||
},
|
||||
|
||||
// 区域选择
|
||||
regi: {
|
||||
regiArr : [],
|
||||
regiId : '',
|
||||
regiIndex : 0,
|
||||
regiName : ''
|
||||
},
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// 先获取是否添加过信息
|
||||
// this.baseFirst();
|
||||
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
},
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
createAll().then(res => {
|
||||
this.cityPicker = res;
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 首次信息
|
||||
baseFirst() {
|
||||
BaseFirst(this.$Route.query.id).then(res => {
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
userBase(this.$Route.query.id).then(res => {
|
||||
// let areasValue = res.province.findIndex(val=> val.id == res.base.province_id),
|
||||
// cityValue = res.city.findIndex(val=> val.id == res.base.city_id),
|
||||
// regiValue = res.district.findIndex(val=> val.id == res.base.district_id)
|
||||
|
||||
// 当编辑资料后
|
||||
// this.area.areaIndex = areasValue > 0 ? areasValue : 0
|
||||
// this.city.cityIndex = cityValue > 0 ? cityValue : 0
|
||||
// this.regi.regiIndex = regiValue > 0 ? regiValue : 0
|
||||
this.baseData = res.base
|
||||
this.education = res.base.educations
|
||||
this.marriage = res.base.marriages
|
||||
|
||||
this.mobile = res.base.mobile || '' // 联系方式
|
||||
this.mate = res.base.mate || '' // 配偶名称
|
||||
this.school = res.base.school || '' // 毕业学院
|
||||
this.address = res.base.tmp_address || '' // 联系地址
|
||||
this.marriageIndex = res.base.marriage // 婚姻选择index
|
||||
this.educationIndex = res.base.education // 婚姻选择index
|
||||
|
||||
// 获取省市区列表
|
||||
// this.createInfo();
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 婚姻选择
|
||||
marriageChange(e) {
|
||||
this.marriageIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 学历选择
|
||||
educationChange(e) {
|
||||
this.educationIndex = e.detail.value
|
||||
},
|
||||
|
||||
// 输入框
|
||||
blurInput(e, name) {
|
||||
let value = e.detail.value
|
||||
switch(name)
|
||||
{
|
||||
case 'mobile':{
|
||||
this.mobile = value
|
||||
break;
|
||||
}
|
||||
case 'mate':{
|
||||
this.mate = value
|
||||
break;
|
||||
}
|
||||
case 'school':{
|
||||
this.school = value
|
||||
break;
|
||||
}
|
||||
case 'address':{
|
||||
this.address = value
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 选择城市
|
||||
onCityPicker(e){
|
||||
let { value } = e.detail
|
||||
this.baseData.district_id = value[0].value
|
||||
this.baseData.city_id = value[1].value
|
||||
this.baseData.province_id = value[2].value
|
||||
},
|
||||
|
||||
// 修改基础信息 - 提交
|
||||
infoSubmit() {
|
||||
let data = {
|
||||
mobile : this.mobile, //联系方式
|
||||
mate : this.mate, //配偶姓名
|
||||
school : this.school, //毕业学院
|
||||
tmp_address : this.address,
|
||||
province_id : this.baseData.district_id,
|
||||
city_id : this.baseData.city_id,
|
||||
district_id : this.baseData.province_id,
|
||||
education : this.educationIndex, //学历
|
||||
marriage : this.marriageIndex //婚姻状态
|
||||
}
|
||||
basePut(this.baseData.business_order_user_id,data).then(res=>{
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: res,
|
||||
icon: "none"
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1)
|
||||
uni.hideLoading()
|
||||
}, 1500)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 省市区列表
|
||||
createInfo() {
|
||||
create().then(res => {
|
||||
let areas = res,
|
||||
areaIndex = this.area.areaIndex
|
||||
this.area.areaId = areas[areaIndex].id
|
||||
this.area.areaName= areas[areaIndex].name
|
||||
this.area.areasArr= areas
|
||||
this.citylist(areas[areaIndex].id)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 所在省份-下拉
|
||||
areasChange(e) {
|
||||
let area = this.area.areasArr,
|
||||
index = e.detail.value,
|
||||
atcode = area[index].id,
|
||||
atname = area[index].name
|
||||
if (index != this.area.areaIndex) {
|
||||
this.area.areaIndex = index
|
||||
this.area.areaId = atcode
|
||||
this.area.areaName = atname
|
||||
// 获取市级列表
|
||||
this.citylist(atcode)
|
||||
}
|
||||
},
|
||||
|
||||
// 市级列表
|
||||
citylist(cityId) {
|
||||
create({
|
||||
parent_id: cityId
|
||||
}).then(res=>{
|
||||
let cityArr = res
|
||||
let cityIndex = ''
|
||||
let index = res.find((branchValve) => {
|
||||
return branchValve.id == this.baseData.city_id;
|
||||
});
|
||||
if (index) {
|
||||
cityIndex = this.city.cityIndex
|
||||
} else {
|
||||
cityIndex = 0
|
||||
}
|
||||
this.city.cityId = cityArr[cityIndex].id
|
||||
this.city.cityName = cityArr[cityIndex].name
|
||||
this.city.cityArr = cityArr
|
||||
this.city.cityIndex = cityIndex
|
||||
this.regilist(cityArr[cityIndex].id)
|
||||
})
|
||||
},
|
||||
|
||||
// 市级下拉筛选
|
||||
cityDrop(e) {
|
||||
let city = this.city.cityArr,
|
||||
index = e.detail.value,
|
||||
citycode = city[index].id,
|
||||
cityname = city[index].name
|
||||
if (index != this.area.areaIndex) {
|
||||
this.city.cityIndex = index
|
||||
this.city.cityId = citycode
|
||||
this.city.cityName = cityname
|
||||
|
||||
// 获取市级列表
|
||||
this.regilist(citycode)
|
||||
}
|
||||
},
|
||||
|
||||
// 区列表
|
||||
regilist(areaId) {
|
||||
create({
|
||||
parent_id: areaId
|
||||
}).then(res=>{
|
||||
let regiIndex = ''
|
||||
let index = res.find((branchValve) => {
|
||||
return branchValve.id == this.baseData.district_id;
|
||||
});
|
||||
if (index) {
|
||||
regiIndex = this.regi.regiIndex
|
||||
} else {
|
||||
regiIndex = 0
|
||||
}
|
||||
this.regi.regiArr = res
|
||||
this.regi.regiId = res[regiIndex].id
|
||||
this.regi.regiName = res[regiIndex].name
|
||||
this.regi.regiIndex = regiIndex
|
||||
})
|
||||
},
|
||||
|
||||
// 区下拉筛选
|
||||
regiDrop(e) {
|
||||
let newIndex = e.detail.value
|
||||
this.regi.regiIndex = newIndex
|
||||
this.regi.regiId = this.regi.regiArr[newIndex].id
|
||||
this.regi.regiName = this.regi.regiArr[newIndex].name
|
||||
},
|
||||
|
||||
// 提示组件 -- 赋值
|
||||
seeTips(title, text) {
|
||||
this.seeData.seeShow = true
|
||||
this.seeData.seeTitle = title
|
||||
this.seeData.seeText = text
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: transparent 140rpx solid;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.white {
|
||||
padding: $padding $padding 0;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 40rpx -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
width: calc(50% - 20rpx);
|
||||
margin: 0 10rpx $margin + 10;
|
||||
float: left;
|
||||
.base-block-name {
|
||||
margin-bottom: $margin - 10;
|
||||
color: #111111;
|
||||
display: flex;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
.base-notesIcon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin: 6rpx 0 0 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
z-index: 2;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
346
pages/synthesis/diffList.vue
Normal file
346
pages/synthesis/diffList.vue
Normal file
@@ -0,0 +1,346 @@
|
||||
<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.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">
|
||||
{{item.order.order_business}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label">
|
||||
<view class="listItem-cont-name">
|
||||
补差价金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-price">
|
||||
¥{{item.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-labor">
|
||||
<view class="listItem-labor-time">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
<view class="listItem-labor-btn">
|
||||
<view v-if="item.can.pay_status == 1" @click="cancelSheet(item)" class="listItem-labor-go active">
|
||||
取消支付
|
||||
</view>
|
||||
<view v-if="item.can.pay_status == 1" @click="expressSheet(item)" class="listItem-labor-go">
|
||||
去支付
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 2" class="listItem-labor-go active">
|
||||
审核中
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.expand_order_id, orderType: item.order_type, type: 'edit'}})" class="listItem-labor-go">
|
||||
审核驳回
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.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 { diffPrices, cancelPrices } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearStatus : 0, // 0 未付款 1 2
|
||||
yearArr : [], // 委托单列表
|
||||
page : {}, // 分页信息
|
||||
voucherState : false, // 上传凭证弹出
|
||||
lodingStats : false, // 加载状态
|
||||
orderType : '', // 委托单列表-类型
|
||||
orderId : '', // 委托单列表-id
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取-委托单-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 委托单-列表
|
||||
yearServe(page){
|
||||
diffPrices({
|
||||
order_type : this.$Route.query.orderType,
|
||||
order_id : this.$Route.query.orderId,
|
||||
page : page || ''
|
||||
}).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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(item) {
|
||||
this.orderId = item.synthesis_diff_price_id
|
||||
this.orderType = item.order_type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(item.can.online) {
|
||||
this.$Router.push({name: 'FeePay', params: {id: item.synthesis_diff_price_id, orderType: item.order_type, price: item.price, style: 'diff', payForm: this.$Route.query.payForm}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: item.synthesis_diff_price_id, orderType: item.order_type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {}
|
||||
})
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
|
||||
// 取消订单
|
||||
cancelSheet(item) {
|
||||
uni.showModal({
|
||||
title : '温馨提示',
|
||||
content : '是否取消订单?',
|
||||
cancelText : "取消", // 取消按钮的文字
|
||||
confirmText : "确认", // 确认按钮的文字
|
||||
showCancel : true, // 是否显示取消按钮,默认为 true
|
||||
confirmColor: '#D4155A',
|
||||
cancelColor : '#999999',
|
||||
success: res => {
|
||||
if(res.confirm) {
|
||||
cancelPrices(item.synthesis_diff_price_id).then(() => {
|
||||
uni.showToast({
|
||||
title: '取消成功',
|
||||
icon : 'none'
|
||||
})
|
||||
// 获取-委托单-列表
|
||||
this.yearServe();
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
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;
|
||||
}
|
||||
|
||||
.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: 54rpx;
|
||||
color: #666666;
|
||||
font-size: 28rpx;
|
||||
padding: 10rpx 0;
|
||||
.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 {
|
||||
color: #272727;
|
||||
border-color: #999999;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
465
pages/synthesis/entrustBrief.vue
Normal file
465
pages/synthesis/entrustBrief.vue
Normal file
@@ -0,0 +1,465 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="orderTab">
|
||||
<view class="orderTab-item" :class="{active : entrustId == item.entrust_id}" @click="tabClick(item.entrust_id, item.title)" v-for="(item, index) in entrustArr" :key="index">
|
||||
<text>{{item.title}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="module">
|
||||
<view class="entrustTop">
|
||||
<image class="entrustTop-img" :src="entrustData.cover" mode="widthFix"></image>
|
||||
<view class="entrustTop-btn" @click="seekClick">立即咨询 ></view>
|
||||
</view>
|
||||
<view class="entrustCont">
|
||||
<block v-if="title == '民事诉讼'">
|
||||
<view class="entrustCivil">
|
||||
<view class="entrustCivil-top">
|
||||
<view class="entrustCivil-top-name">民事诉讼阶段:</view>
|
||||
<view class="entrustCivil-top-text">一审、二审、再审(注:劳动争议案件存在劳动仲裁阶段)</view>
|
||||
</view>
|
||||
<view class="entrustCivil-list" v-for="(item, index) in sonArr" :key="index">
|
||||
<view class="entrustCivil-list-title">
|
||||
<view class="entrustCivil-list-number">0{{index + 1}}</view>
|
||||
<view class="entrustCivil-list-name">{{item.text}}</view>
|
||||
<view class="entrustCivil-list-trim"></view>
|
||||
</view>
|
||||
<view class="entrustCivil-list-item">
|
||||
<view class="entrustCivil-list-label" v-for="(items, sonIndex) in item.children" :key="sonIndex">{{items.text}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else-if="title == '刑事辩护'">
|
||||
<view class="entrustBrief">
|
||||
<view class="entrustBrief-title">
|
||||
<image class="entrustBrief-title-img" src="https://cdn.douhuofalv.com/images/2023/04/18/4d57907913a7d9ca5f3c7417421c894d.png" mode="aspectFill"></image>
|
||||
<view class="entrustBrief-title-name">{{entrustData.title}}</view>
|
||||
</view>
|
||||
<view class="entrustBrief-list">
|
||||
<view class="entrustBrief-list-item">
|
||||
<text>1</text><view class="entrustBrief-list-text">代理受害人(代写报案材料、提供法律咨询、代理刑事附带民事诉讼、代理提出法律意见、代理参加庭审活动、一审、二审)</view>
|
||||
</view>
|
||||
<view class="entrustBrief-list-item">
|
||||
<text>2</text><view class="entrustBrief-list-text">代理犯罪嫌疑人/被告人:(侦查阶段、审查起诉阶段、一审阶段、二审阶段、再审阶段)</view>
|
||||
</view> </view>
|
||||
<image class="entrustBrief-logo" src="https://cdn.douhuofalv.com/images/2023/04/18/5037800b0abd01d828890a2b6386c38a.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<image class="entrustBrief-text" src="https://cdn.douhuofalv.com/images/2023/04/18/e0dbc0ce562b479b9ff3ad3820971612.png" mode="widthFix"></image>
|
||||
</block>
|
||||
<block v-else-if="title == '行政诉讼'">
|
||||
<view class="entrustPolitics">
|
||||
<view class="entrustPolitics-item">
|
||||
<view class="entrustPolitics-back">
|
||||
<view class="entrustPolitics-item-tips">stage</view>
|
||||
<view class="entrustPolitics-item-name">诉讼阶段</view>
|
||||
<view class="entrustPolitics-item-label">
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>1</text>一审
|
||||
</view>
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>2</text>二审
|
||||
</view>
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>3</text>再审
|
||||
</view>
|
||||
</view>
|
||||
<image class="entrustPolitics-item-logo" src="https://cdn.douhuofalv.com/images/2023/04/18/f7804d7c91c2389dd62ce10c19e26bec.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="entrustPolitics-item">
|
||||
<view class="entrustPolitics-back">
|
||||
<view class="entrustPolitics-item-tips">type</view>
|
||||
<view class="entrustPolitics-item-name">常见类型</view>
|
||||
<view class="entrustPolitics-item-label">
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>1</text>强制拆迁
|
||||
</view>
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>2</text>行政不作为
|
||||
</view>
|
||||
<view class="entrustPolitics-item-list">
|
||||
<text>3</text>征收补偿 等
|
||||
</view>
|
||||
</view>
|
||||
<image class="entrustPolitics-item-logo" src="https://cdn.douhuofalv.com/images/2023/04/18/f7804d7c91c2389dd62ce10c19e26bec.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<image class="entrustBottom" src="https://cdn.douhuofalv.com/images/2023/04/18/f08e45875d7dba6c3116690978a8a999.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { entrustList, entrustInfo, entrustSon } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
title : '',
|
||||
entrustId : '',
|
||||
sonArr : [], // 民事子分类
|
||||
entrustData: '', // 案件委托详情
|
||||
entrustArr : [], // 案件委托列表
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取-案件委托-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 案件委托-列表
|
||||
yearServe(){
|
||||
entrustList().then(res => {
|
||||
this.entrustArr = res
|
||||
if(this.entrustId == '') {
|
||||
this.entrustId = res[0].entrust_id
|
||||
this.title = res[0].title
|
||||
}
|
||||
|
||||
// 获取-案件委托-详情
|
||||
this.yearInfo();
|
||||
if(this.title == '民事诉讼') {
|
||||
// 获取-案件委托子分类
|
||||
this.yearSon();
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 案件委托-详情
|
||||
yearInfo(){
|
||||
entrustInfo(this.entrustId).then(res => {
|
||||
this.entrustData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取-案件委托子分类
|
||||
yearSon(){
|
||||
entrustSon({parent_id: this.entrustId}).then(res => {
|
||||
this.sonArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 顶级
|
||||
tabClick(id, title) {
|
||||
this.entrustId = id
|
||||
this.title = title
|
||||
if(title == '民事诉讼') {
|
||||
// 获取-案件委托子分类
|
||||
this.yearSon();
|
||||
}
|
||||
|
||||
// 获取-案件委托-详情
|
||||
this.yearInfo();
|
||||
},
|
||||
|
||||
// 立即咨询
|
||||
seekClick() {
|
||||
if(this.title == '民事诉讼') {
|
||||
this.$Router.push({name: 'EntrustCivil', params: {entrustId: this.entrustId}})
|
||||
return
|
||||
}
|
||||
this.$Router.push({name: 'EntrustWrite', params: {entrustId: this.entrustId}})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #171c54;
|
||||
}
|
||||
|
||||
.orderTab {
|
||||
position: fixed;
|
||||
top: 44px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 9;
|
||||
height: 100rpx;
|
||||
background-color: white;
|
||||
display: flex;
|
||||
.orderTab-item {
|
||||
flex: 3;
|
||||
text-align: center;
|
||||
margin-top: 20rpx;
|
||||
text {
|
||||
display: inline-block;
|
||||
color: #000000;
|
||||
background-image: linear-gradient(to right, #ffffff, #ffffff);
|
||||
height: 64rpx;
|
||||
line-height: 64rpx;
|
||||
border-radius: 80rpx;
|
||||
padding: 0 30rpx;
|
||||
}
|
||||
&.active text {
|
||||
color: #ffffff;
|
||||
background-image: linear-gradient(to right, #f8a53d, #dd3554);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.module {
|
||||
padding-top: 100rpx;
|
||||
}
|
||||
|
||||
.entrustCont {
|
||||
background-color: #171c54;
|
||||
padding: 30rpx 30rpx 0;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
.entrustCivil {
|
||||
.entrustCivil-top {
|
||||
background-color: #111f6e;
|
||||
border-radius: 15rpx;
|
||||
padding: 30rpx 10rpx;
|
||||
box-sizing: border-box;
|
||||
color: #ffebbf;
|
||||
text-align: center;
|
||||
.entrustCivil-top-name {
|
||||
margin-bottom: 10rpx;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
.entrustCivil-top-text {
|
||||
font-size: 26rpx;
|
||||
}
|
||||
}
|
||||
.entrustCivil-list {
|
||||
margin-top: 30rpx;
|
||||
color: #ffffff;
|
||||
.entrustCivil-list-title {
|
||||
font-size: 36rpx;
|
||||
margin-bottom: 40rpx;
|
||||
.entrustCivil-list-trim {
|
||||
position: relative;
|
||||
left: 290rpx;
|
||||
bottom: 20rpx;
|
||||
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;
|
||||
}
|
||||
}
|
||||
.entrustCivil-list-number {
|
||||
font-weight: 600;
|
||||
font-size: 68rpx;
|
||||
background-image: -webkit-linear-gradient(top,#ffffff 40%, transparent 70%);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.entrustCivil-list-name {
|
||||
margin-top: -20rpx;
|
||||
width: 280rpx;
|
||||
}
|
||||
}
|
||||
.entrustCivil-list-item {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 0 -20rpx;
|
||||
.entrustCivil-list-label {
|
||||
text-align: center;
|
||||
flex: 1;
|
||||
min-width: calc((100% - 64rpx) / 2);
|
||||
margin: 0 15rpx 30rpx;
|
||||
background-image: linear-gradient(to right, #3653cf, #1922a0);
|
||||
border-radius: 10rpx;
|
||||
line-height: 84rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.entrustPolitics {
|
||||
margin-bottom: 40rpx;
|
||||
display: flex;
|
||||
.entrustPolitics-item {
|
||||
flex: 2;
|
||||
margin: 0 15rpx;
|
||||
background-color: #0e1e58;
|
||||
border-radius: 40rpx 15rpx 15rpx 15rpx;
|
||||
padding: 20rpx;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
.entrustPolitics-back {
|
||||
padding: 30rpx 30rpx 80rpx;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
border-radius: 40rpx 15rpx 15rpx 15rpx;
|
||||
background-color: #002087;
|
||||
position: relative;
|
||||
.entrustPolitics-item-logo {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
width: 120rpx;
|
||||
}
|
||||
.entrustPolitics-item-name {
|
||||
background-image: -webkit-linear-gradient(top,#fdf7ce, #e29c68);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
font-weight: 600;
|
||||
font-size: 36rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.entrustPolitics-item-tips {
|
||||
font-size: 38rpx;
|
||||
font-weight: 600;
|
||||
background-image: -webkit-linear-gradient(top,#8090c3, transparent 85%);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.entrustPolitics-item-label {
|
||||
color: #ffffff;
|
||||
font-size: 28rpx;
|
||||
line-height: 80rpx;
|
||||
.entrustPolitics-item-list {
|
||||
display: flex;
|
||||
text {
|
||||
font-size: 22rpx;
|
||||
display: block;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
line-height: 28rpx;
|
||||
border: 2rpx solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
margin-right: 20rpx;
|
||||
margin-top: 26rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.entrustBrief {
|
||||
background-color: #09216e;
|
||||
border-radius: 20rpx;
|
||||
padding: 0 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
.entrustBrief-title {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.entrustBrief-title-img,
|
||||
.entrustBrief-title-name {
|
||||
position: absolute;
|
||||
top: -16rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
.entrustBrief-title-img {
|
||||
width: 400rpx;
|
||||
left: calc(50% - 200rpx);
|
||||
display: block;
|
||||
}
|
||||
.entrustBrief-title-name {
|
||||
width: 100%;
|
||||
z-index: 9;
|
||||
left: 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
.entrustBrief-list {
|
||||
padding: 90rpx 10rpx 20rpx;
|
||||
line-height: 48rpx;
|
||||
font-size: 28rpx;
|
||||
.entrustBrief-list-item {
|
||||
margin-bottom: 30rpx;
|
||||
display: flex;
|
||||
text {
|
||||
font-size: 22rpx;
|
||||
display: block;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
line-height: 28rpx;
|
||||
border: 2rpx solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
margin-right: 20rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.entrustBrief-list-text {
|
||||
width: calc(100% - 48rpx);
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
.entrustBrief-logo {
|
||||
position: absolute;
|
||||
bottom: -30rpx;
|
||||
right: 30rpx;
|
||||
width: 240rpx;
|
||||
z-index: 5;
|
||||
}
|
||||
}
|
||||
.entrustBrief-text {
|
||||
width: 100%;
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.entrustTop {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
padding-top: 60%;
|
||||
.entrustTop-img,.entrustTop-btn {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
}
|
||||
.entrustTop-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
}
|
||||
.entrustTop-btn {
|
||||
z-index: 4;
|
||||
bottom: 15%;
|
||||
left: 45rpx;
|
||||
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
|
||||
color: #12053d;
|
||||
display: inline-block;
|
||||
line-height: 74rpx;
|
||||
padding: 0 40rpx;
|
||||
font-size: 34rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.entrustBottom {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
640
pages/synthesis/entrustCivil.vue
Normal file
640
pages/synthesis/entrustCivil.vue
Normal file
@@ -0,0 +1,640 @@
|
||||
<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">
|
||||
<!-- 民事诉讼 -->
|
||||
<view class="idcardAdd-types">
|
||||
<view class="idcardAdd-block-name">
|
||||
<view class="idcardAdd-block-see">
|
||||
<text>*</text>民事诉讼
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
<picker class="idcardAdd-picker" @change="bindPickerChange" :value="indexValue" :range="sonArr" :range-key="'text'">
|
||||
<view class="nowrap">{{ sonArr[indexValue].text }}</view>
|
||||
<image class="idcardAdd-picke-image" src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 纠纷类型 -->
|
||||
<view class="idcardAdd-types">
|
||||
<view class="idcardAdd-block-name">
|
||||
<view class="idcardAdd-block-see">
|
||||
<text>*</text>纠纷类型
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardAdd-block-write">
|
||||
<picker class="idcardAdd-picker" @change="childrenChange" :value="childrenValue" :range="childrenArr" :range-key="'text'">
|
||||
<view class="nowrap">{{ childrenArr[childrenValue].text }}</view>
|
||||
<image class="idcardAdd-picke-image" src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<!-- {{submitObj}} -->
|
||||
<!-- <input type="text" v-model="submitObj" placeholder="请输入"> -->
|
||||
|
||||
<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'">
|
||||
<mouldInput class="idcardAdd-input" :input-type="item.type" :input-title="item.title" :input-key="item.key" @onValue="($event) => { item.value = $event }"></mouldInput>
|
||||
</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]}}
|
||||
</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 class="voucherBack" :class="{active : voucherState}"></view>
|
||||
<view class="voucherPop" :class="{active : voucherState}">
|
||||
<view class="tipsWhite">
|
||||
<image class="voucherPop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.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="cancelPay">
|
||||
暂不支付
|
||||
</view>
|
||||
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
|
||||
上传凭证
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { entrustSon, entrustInfo, entrustPost } from '@/apis/interfaces/synthesis'
|
||||
import { createCity } from '@/apis/interfaces/user'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
submitObj : {}, // 提交数据
|
||||
sonArr : [], // 民事二级类型
|
||||
childrenArr : [], // 纠纷类型
|
||||
paramsArr : [], // 信息
|
||||
cityPicker : [], // 地址
|
||||
indexValue : 0, // 民事类型下标
|
||||
childrenValue : 0, // 纠纷类型下标
|
||||
|
||||
entrustId : '', // 表单详情
|
||||
|
||||
// 被告所在地
|
||||
defendant : {},
|
||||
// 目前所在地
|
||||
address : {},
|
||||
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
voucherState : false, // 上传凭证弹出
|
||||
disabled : false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
|
||||
// 获取-案件委托子分类
|
||||
this.yearSon();
|
||||
|
||||
// 省市区
|
||||
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: {
|
||||
// 民事类型列表
|
||||
yearSon(){
|
||||
entrustSon({parent_id: this.$Route.query.entrustId}).then(res => {
|
||||
let froms = res
|
||||
froms.map(val => {
|
||||
val.indexValue = 0
|
||||
})
|
||||
this.sonArr = froms
|
||||
|
||||
let newChildren = froms[this.indexValue].children
|
||||
newChildren.map(val => {
|
||||
val.childrenValue = 0
|
||||
})
|
||||
this.childrenArr = newChildren
|
||||
this.entrustId = newChildren[this.childrenValue].value
|
||||
|
||||
// // 获取综法咨询-详情
|
||||
this.getBusiness();
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择民事类型
|
||||
bindPickerChange(e){
|
||||
this.indexValue = e.detail.value
|
||||
this.childrenValue = 0
|
||||
|
||||
// 获取-案件委托子分类
|
||||
this.yearSon();
|
||||
},
|
||||
|
||||
// 选择纠纷类型
|
||||
childrenChange(e){
|
||||
this.childrenValue = e.detail.value
|
||||
this.entrustId = this.childrenArr[e.detail.value].value
|
||||
},
|
||||
|
||||
// 综法咨询-详情
|
||||
getBusiness(){
|
||||
entrustInfo(this.entrustId).then(res => {
|
||||
let froms = res.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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 被告所在地-选择城市
|
||||
defendantPicker(e){
|
||||
let { value } = e.detail
|
||||
let dataArr = {
|
||||
province_id: value[0].value,
|
||||
city_id: value[1].value
|
||||
}
|
||||
this.defendant = dataArr
|
||||
},
|
||||
|
||||
// 目前所在地-选择城市
|
||||
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]
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
entrustPost(this.entrustId, {...dataArr}).then(res => {
|
||||
this.disabled = true
|
||||
this.expressSheet(res.entrust_order_id, res.order_type, res.can, res.price)
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(can.online) {
|
||||
this.$Router.replace({name: 'FeePay', params: {orderId: id, orderType: type, price: price, payForm: 'entrust'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'EntrustOrder', params: {yearStatus: 0}})
|
||||
},3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消支付
|
||||
cancelPay() {
|
||||
this.voucherState = false
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'EntrustOrder', params: {yearStatus: 0}})
|
||||
},3000)
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</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: 40%;
|
||||
}
|
||||
.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: 54rpx;
|
||||
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-types {
|
||||
margin-bottom: 40rpx;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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: 0;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
591
pages/synthesis/entrustOrder.vue
Normal file
591
pages/synthesis/entrustOrder.vue
Normal file
@@ -0,0 +1,591 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="orderFixed">
|
||||
<scroll-view class="orderTab" scroll-x="true">
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 0}" @click="stateClick('0')">待支付</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 1}" @click="stateClick('1')">待审核</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 2}" @click="stateClick('2')">待签约</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 3}" @click="stateClick('3')">已签约</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 4}" @click="stateClick('4')">已完成</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 5}" @click="stateClick('5')">已驳回</view>
|
||||
</scroll-view>
|
||||
<view class="orderState">
|
||||
<view class="orderState-item" :class="{active : refundStatus == 0}" @click="refundClick('0')">
|
||||
<text>未退款</text>
|
||||
</view>
|
||||
<view class="orderState-item" :class="{active : refundStatus == 1}" @click="refundClick('1')">
|
||||
<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">
|
||||
{{item.entrust.title}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label">
|
||||
<view class="listItem-cont-name">
|
||||
订单金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-price">
|
||||
¥{{item.price}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label" v-if="item.need_pay_diff_prices != 0">
|
||||
<view class="listItem-cont-name">
|
||||
补差价金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-diff" @click="diffClick(item)">
|
||||
¥{{item.need_pay_diff_prices}}
|
||||
<view class="listItem-cont-btn">去支付</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-labor">
|
||||
<view class="listItem-labor-time">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
<view class="listItem-labor-btn">
|
||||
<view v-if="item.can.pay_status == 1" @click="expressSheet(item.entrust_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
|
||||
去支付
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 2" class="listItem-labor-go active">
|
||||
审核中
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.entrust_order_id, orderType: item.order_type, type: 'edit'}})" class="listItem-labor-go">
|
||||
审核驳回
|
||||
</view>
|
||||
<view v-if="item.can.sign" @click="returnGo(item.entrust_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go yellow">
|
||||
去签约
|
||||
</view>
|
||||
<view v-if="item.can.diff_price" @click="returnGo(item.entrust_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
|
||||
去缴费
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无订单</view>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- 支付弹出 -->
|
||||
<view class="namePop" :class="{active: payStatus}"></view>
|
||||
<view class="nameCont" :class="{active: payStatus}">
|
||||
<view class="nameCont-white">
|
||||
<view class="nameCont-top">
|
||||
<view class="nameCont-title">缴费金额</view>
|
||||
<view class="nameCont-input">
|
||||
¥<input type="numeric" v-model="price" placeholder="输入缴费金额" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="nameCont-btn">
|
||||
<view class="nameCont-btn-go" @click="returnGo">取消</view>
|
||||
<view class="nameCont-btn-go" @click="issueForm">确定</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">
|
||||
<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 { entrustOrder, entrustPay } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearStatus : 0, // 0 未付款 1 2
|
||||
refundStatus : 0, // 0 退款 0 1
|
||||
yearArr : [], // 委托单列表
|
||||
orderType : '', // 委托单列表-类型
|
||||
orderId : '', // 委托单列表-id
|
||||
orderCan : '', // 委托单列表-操作
|
||||
price : '', // 缴费金额
|
||||
payStatus : false, // 缴费弹出
|
||||
voucherState : false, // 上传凭证弹出
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.yearStatus = this.$Route.query.yearStatus || 0
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取-委托单-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 委托单-列表
|
||||
yearServe(page){
|
||||
entrustOrder({
|
||||
status : this.yearStatus,
|
||||
refund_status : this.refundStatus,
|
||||
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();
|
||||
},
|
||||
|
||||
// 退款状态选择
|
||||
refundClick(state) {
|
||||
this.refundStatus = state
|
||||
|
||||
// 获取-委托单列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
// 手动支付弹出
|
||||
returnGo(id, type, can) {
|
||||
this.payStatus = !this.payStatus
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
this.orderCan = can
|
||||
},
|
||||
|
||||
// 手动支付提交
|
||||
issueForm() {
|
||||
entrustPay({
|
||||
order_type : this.orderType,
|
||||
order_id : this.orderId,
|
||||
price : this.price
|
||||
}).then(res => {
|
||||
this.payStatus = false
|
||||
|
||||
// 选择支付方式
|
||||
this.expressSheet(res.synthesis_diff_price_id, res.order_type, res.can)
|
||||
}).catch(err => {
|
||||
this.payStatus = false
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
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: 'entrust'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
|
||||
this.price = ''
|
||||
},
|
||||
fail: sheetFail => {}
|
||||
})
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
|
||||
// 后台-补差价
|
||||
diffClick(e) {
|
||||
this.$Router.push({name: 'DiffList', params: {orderId: e.entrust_order_id, orderType:e.order_type, payForm: 'entrust'}})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
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;
|
||||
white-space: nowrap;
|
||||
.orderTab-item {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
padding: 0 40rpx;
|
||||
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;
|
||||
padding: 10rpx 0;
|
||||
.listItem-cont-name {
|
||||
flex: 1;
|
||||
}
|
||||
.listItem-cont-text {
|
||||
&.listItem-cont-status {
|
||||
color: #da2b56;
|
||||
}
|
||||
&.listItem-cont-price {
|
||||
font-weight: 600;
|
||||
}
|
||||
&.listItem-cont-diff {
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
.listItem-cont-btn {
|
||||
display: inline-block;
|
||||
font-size: 26rpx;
|
||||
color: #f49441;
|
||||
border: 2rpx solid #f49441;
|
||||
margin-left: 20rpx;
|
||||
padding: 0 10rpx;
|
||||
height: 42rpx;
|
||||
line-height: 42rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 8rpx;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.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: #999999;
|
||||
color: #666666;
|
||||
}
|
||||
&.yellow {
|
||||
border-color: #ec7647;
|
||||
color: #ec7647;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 支付弹出 */
|
||||
.namePop {
|
||||
position: fixed;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
z-index: 100000;
|
||||
display: none;
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.nameCont {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 100000;
|
||||
padding: 0 15%;
|
||||
box-sizing: border-box;
|
||||
display: none;
|
||||
&.active {
|
||||
display: -webkit-box;
|
||||
}
|
||||
.nameCont-white {
|
||||
background-color: #ffffff;
|
||||
border-radius: 15rpx;
|
||||
overflow: hidden;
|
||||
.nameCont-top {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
.nameCont-title {
|
||||
font-size: 34rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.nameCont-input {
|
||||
background-color: #f3f3f3;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 0 25rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
input {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding-left: 20rpx;
|
||||
box-sizing: border-box;
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.nameCont-btn {
|
||||
line-height: 100rpx;
|
||||
background-color: #f3f3f3;
|
||||
display: flex;
|
||||
margin-top: 30rpx;
|
||||
border-top: 2rpx solid #dfdfdf;
|
||||
.nameCont-btn-go {
|
||||
text-align: center;
|
||||
flex: 2;
|
||||
&:last-child {
|
||||
position: relative;
|
||||
color: #da2b56;
|
||||
}
|
||||
&:last-child::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 2rpx;
|
||||
height: 100%;
|
||||
background-color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
346
pages/synthesis/entrustPrice.vue
Normal file
346
pages/synthesis/entrustPrice.vue
Normal file
@@ -0,0 +1,346 @@
|
||||
<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.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">
|
||||
{{item.order.order_business}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label">
|
||||
<view class="listItem-cont-name">
|
||||
补差价金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-price">
|
||||
¥{{item.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-labor">
|
||||
<view class="listItem-labor-time">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
<view class="listItem-labor-btn">
|
||||
<view v-if="item.can.pay_status == 1" @click="cancelSheet(item)" class="listItem-labor-go active">
|
||||
取消支付
|
||||
</view>
|
||||
<view v-if="item.can.pay_status == 1" @click="expressSheet(item)" class="listItem-labor-go">
|
||||
去支付
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 2" class="listItem-labor-go active">
|
||||
审核中
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.expand_order_id, orderType: item.order_type, type: 'edit'}})" class="listItem-labor-go">
|
||||
审核驳回
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.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 { diffPrices, cancelPrices } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearStatus : 0, // 0 未付款 1 2
|
||||
yearArr : [], // 委托单列表
|
||||
page : {}, // 分页信息
|
||||
voucherState : false, // 上传凭证弹出
|
||||
lodingStats : false, // 加载状态
|
||||
orderType : '', // 委托单列表-类型
|
||||
orderId : '', // 委托单列表-id
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取-委托单-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 委托单-列表
|
||||
yearServe(page){
|
||||
diffPrices({
|
||||
order_type : this.$Route.query.orderType,
|
||||
order_id : this.$Route.query.orderId,
|
||||
page : page || ''
|
||||
}).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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(item) {
|
||||
this.orderId = item.synthesis_diff_price_id
|
||||
this.orderType = item.order_type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(item.can.online) {
|
||||
this.$Router.push({name: 'FeePay', params: {id: item.synthesis_diff_price_id, orderType: item.order_type, price: item.price, style: 'diff', payForm: 'entrust'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: item.synthesis_diff_price_id, orderType: item.order_type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {}
|
||||
})
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
|
||||
// 取消订单
|
||||
cancelSheet(item) {
|
||||
uni.showModal({
|
||||
title : '温馨提示',
|
||||
content : '是否取消订单?',
|
||||
cancelText : "取消", // 取消按钮的文字
|
||||
confirmText : "确认", // 确认按钮的文字
|
||||
showCancel : true, // 是否显示取消按钮,默认为 true
|
||||
confirmColor: '#D4155A',
|
||||
cancelColor : '#999999',
|
||||
success: res => {
|
||||
if(res.confirm) {
|
||||
cancelPrices(item.synthesis_diff_price_id).then(() => {
|
||||
uni.showToast({
|
||||
title: '取消成功',
|
||||
icon : 'none'
|
||||
})
|
||||
// 获取-委托单-列表
|
||||
this.yearServe();
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
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;
|
||||
}
|
||||
|
||||
.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: 54rpx;
|
||||
color: #666666;
|
||||
font-size: 28rpx;
|
||||
padding: 10rpx 0;
|
||||
.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 {
|
||||
color: #272727;
|
||||
border-color: #999999;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
557
pages/synthesis/entrustWrite.vue
Normal file
557
pages/synthesis/entrustWrite.vue
Normal file
@@ -0,0 +1,557 @@
|
||||
<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'">
|
||||
<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>
|
||||
</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 class="voucherBack" :class="{active : voucherState}"></view>
|
||||
<view class="voucherPop" :class="{active : voucherState}">
|
||||
<view class="tipsWhite">
|
||||
<image class="voucherPop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.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="cancelPay">
|
||||
暂不支付
|
||||
</view>
|
||||
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
|
||||
上传凭证
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { entrustInfo, entrustPost } 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 : [], // 地址
|
||||
|
||||
// 被告所在地
|
||||
defendant : {},
|
||||
|
||||
// 目前所在地
|
||||
address : {},
|
||||
|
||||
disabled : false,
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
voucherState : 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(){
|
||||
entrustInfo(this.$Route.query.entrustId).then(res => {
|
||||
let froms = res.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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 被告所在地-选择城市
|
||||
defendantPicker(e){
|
||||
let { value } = e.detail
|
||||
let dataArr = {
|
||||
province_id: value[0].value,
|
||||
city_id: value[1].value
|
||||
}
|
||||
this.defendant = dataArr
|
||||
},
|
||||
|
||||
// 目前所在地-选择城市
|
||||
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]
|
||||
})
|
||||
}
|
||||
|
||||
entrustPost(this.$Route.query.entrustId, {...dataArr}).then(res => {
|
||||
this.disabled = true
|
||||
this.expressSheet(res.entrust_order_id, res.order_type, res.can, res.price )
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(can.online) {
|
||||
this.$Router.replace({name: 'FeePay', params: {orderId: id, orderType: type, price: price, payForm: 'entrust'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
},3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消支付
|
||||
cancelPay() {
|
||||
this.voucherState = false
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
},3000)
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
170
pages/synthesis/expandBrief.vue
Normal file
170
pages/synthesis/expandBrief.vue
Normal file
@@ -0,0 +1,170 @@
|
||||
<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">
|
||||
<view class="list-label" v-for="(item, index) in entrustArr" :key="index" @click="$Router.push({name: 'ExpandWrite', params: {entrustId: item.expand_id}})">
|
||||
<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>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<image class="expandBttom" src="https://cdn.douhuofalv.com/images/2023/04/17/fc4cad00a630e3d69b3f486e9d2937e9.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { expandsList } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
entrustArr: [], //案件委托列表
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取-案件委托-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 案件委托-列表
|
||||
yearServe(){
|
||||
expandsList().then(res => {
|
||||
console.log(res)
|
||||
this.entrustArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</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 35rpx;
|
||||
border-radius: 54rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
547
pages/synthesis/expandOrder.vue
Normal file
547
pages/synthesis/expandOrder.vue
Normal file
@@ -0,0 +1,547 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="orderTab">
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 0}" @click="stateClick('0')">
|
||||
<text>未付款</text>
|
||||
</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 1}" @click="stateClick('1')">
|
||||
<text>已付款</text>
|
||||
</view>
|
||||
<view class="orderTab-item" :class="{active : yearStatus == 2}" @click="stateClick('2')">
|
||||
<text>已退款</text>
|
||||
</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">
|
||||
{{item.expand.title}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label">
|
||||
<view class="listItem-cont-name">
|
||||
订单金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-price">
|
||||
¥{{item.price}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-cont-label" v-if="item.need_pay_diff_prices != 0">
|
||||
<view class="listItem-cont-name">
|
||||
补差价金额
|
||||
</view>
|
||||
<view class="listItem-cont-text listItem-cont-diff" @click="diffClick(item)">
|
||||
¥{{item.need_pay_diff_prices}}
|
||||
<view class="listItem-cont-btn">去支付</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-labor">
|
||||
<view class="listItem-labor-time">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
<view class="listItem-labor-btn">
|
||||
<view v-if="item.can.pay_status == 1" @click="expressSheet(item.expand_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
|
||||
去支付
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 2" class="listItem-labor-go active">
|
||||
审核中
|
||||
</view>
|
||||
<view v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.expand_order_id, orderType: item.order_type, type: 'edit'}})" class="listItem-labor-go">
|
||||
审核驳回
|
||||
</view>
|
||||
<view v-if="item.can.diff_price" @click="returnGo(item.expand_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
|
||||
去缴费
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无订单</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付弹出 -->
|
||||
<view class="namePop" :class="{active: payStatus}"></view>
|
||||
<view class="nameCont" :class="{active: payStatus}">
|
||||
<view class="nameCont-white">
|
||||
<view class="nameCont-top">
|
||||
<view class="nameCont-title">缴费金额</view>
|
||||
<view class="nameCont-input">
|
||||
¥<input type="numeric" v-model="price" placeholder="输入缴费金额" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="nameCont-btn">
|
||||
<view class="nameCont-btn-go" @click="returnGo">取消</view>
|
||||
<view class="nameCont-btn-go" @click="issueForm">确定</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">
|
||||
<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 { expandOrder, entrustPay } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearStatus : 0, // 0 未付款 1 2
|
||||
yearArr : [], // 拓展单列表
|
||||
price : '', // 缴费金额
|
||||
payStatus : false, // 缴费弹出
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
voucherState : false, // 上传凭证弹出
|
||||
orderType : '', // 委托单列表-类型
|
||||
orderId : '', // 委托单列表-id
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
|
||||
// 获取-拓展单-列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 拓展单-列表
|
||||
yearServe(page){
|
||||
expandOrder({
|
||||
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();
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType }})
|
||||
},
|
||||
|
||||
// 后台-补差价
|
||||
diffClick(e) {
|
||||
this.$Router.push({name: 'DiffList', params: {orderId: e.expand_order_id, orderType:e.order_type, payForm: 'expand'}})
|
||||
},
|
||||
|
||||
// 手动支付弹出
|
||||
returnGo(id, type, can) {
|
||||
this.payStatus = !this.payStatus
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
this.orderCan = can
|
||||
},
|
||||
|
||||
// 手动支付提交
|
||||
issueForm() {
|
||||
entrustPay({
|
||||
order_type : this.orderType,
|
||||
order_id : this.orderId,
|
||||
price : this.price
|
||||
}).then(res => {
|
||||
this.payStatus = false
|
||||
|
||||
this.price = ''
|
||||
|
||||
// 选择支付方式
|
||||
this.expressSheet(res.synthesis_diff_price_id, res.order_type, res.can)
|
||||
}).catch(err => {
|
||||
this.payStatus = false
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
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: 'expand'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
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%;
|
||||
|
||||
}
|
||||
|
||||
.orderTab {
|
||||
position: fixed;
|
||||
top: 44px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 9;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
background-color: white;
|
||||
display: flex;
|
||||
.orderTab-item {
|
||||
flex: 3;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: 120rpx 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;
|
||||
padding: 10rpx 0;
|
||||
.listItem-cont-name {
|
||||
flex: 1;
|
||||
}
|
||||
.listItem-cont-text {
|
||||
color: #000000;
|
||||
&.listItem-cont-status {
|
||||
color: #da2b56;
|
||||
}
|
||||
&.listItem-cont-price {
|
||||
font-weight: 600;
|
||||
}
|
||||
&.listItem-cont-diff {
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
.listItem-cont-btn {
|
||||
display: inline-block;
|
||||
font-size: 26rpx;
|
||||
color: #f49441;
|
||||
border: 2rpx solid #f49441;
|
||||
margin-left: 20rpx;
|
||||
padding: 0 10rpx;
|
||||
height: 42rpx;
|
||||
line-height: 42rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 8rpx;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 支付弹出 */
|
||||
.namePop {
|
||||
position: fixed;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
z-index: 100000;
|
||||
display: none;
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.nameCont {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-pack: center;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 100000;
|
||||
padding: 0 15%;
|
||||
box-sizing: border-box;
|
||||
display: none;
|
||||
&.active {
|
||||
display: -webkit-box;
|
||||
}
|
||||
.nameCont-white {
|
||||
background-color: #ffffff;
|
||||
border-radius: 15rpx;
|
||||
overflow: hidden;
|
||||
.nameCont-top {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
.nameCont-title {
|
||||
font-size: 34rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.nameCont-input {
|
||||
background-color: #f3f3f3;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 0 25rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
input {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding-left: 20rpx;
|
||||
box-sizing: border-box;
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.nameCont-btn {
|
||||
line-height: 100rpx;
|
||||
background-color: #f3f3f3;
|
||||
display: flex;
|
||||
margin-top: 30rpx;
|
||||
border-top: 2rpx solid #dfdfdf;
|
||||
.nameCont-btn-go {
|
||||
text-align: center;
|
||||
flex: 2;
|
||||
&:last-child {
|
||||
position: relative;
|
||||
color: #da2b56;
|
||||
}
|
||||
&:last-child::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 2rpx;
|
||||
height: 100%;
|
||||
background-color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
503
pages/synthesis/expandWrite.vue
Normal file
503
pages/synthesis/expandWrite.vue
Normal file
@@ -0,0 +1,503 @@
|
||||
<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'">
|
||||
<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>
|
||||
</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 class="voucherBack" :class="{active : voucherState}"></view>
|
||||
<view class="voucherPop" :class="{active : voucherState}">
|
||||
<view class="tipsWhite">
|
||||
<image class="voucherPop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.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="cancelPay">
|
||||
暂不支付
|
||||
</view>
|
||||
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
|
||||
上传凭证
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { expandsInfo, expandsPost } 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,
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
voucherState : false, // 上传凭证弹出
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
|
||||
// 获取综法咨询-详情
|
||||
this.getBusiness();
|
||||
|
||||
// 省市区
|
||||
createCity().then(res => {
|
||||
this.cityPicker = res;
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-详情
|
||||
getBusiness(){
|
||||
expandsInfo(this.$Route.query.entrustId).then(res => {
|
||||
let froms = res.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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 被告所在地-选择城市
|
||||
defendantPicker(e){
|
||||
let { value } = e.detail
|
||||
let dataArr = {
|
||||
province_id: value[0].value,
|
||||
city_id: value[1].value
|
||||
}
|
||||
this.defendant = dataArr
|
||||
},
|
||||
|
||||
// 目前所在地-选择城市
|
||||
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]
|
||||
})
|
||||
}
|
||||
|
||||
expandsPost(this.$Route.query.entrustId, {...dataArr}).then(res => {
|
||||
this.disabled = true
|
||||
this.expressSheet(res.expand_order_id, res.order_type, res.can, res.price )
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(can.online) {
|
||||
this.$Router.replace({name: 'FeePay', params: {orderId: id, orderType: type, price: price, payForm: 'expand'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
},3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消支付
|
||||
cancelPay() {
|
||||
this.voucherState = false
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
},3000)
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</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-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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
326
pages/synthesis/feeConfirm.vue
Normal file
326
pages/synthesis/feeConfirm.vue
Normal file
@@ -0,0 +1,326 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view id="poster" class="poster">
|
||||
<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>
|
||||
<!-- <view class="top-cont-name">法律咨询服务包</view> -->
|
||||
</view>
|
||||
<image class="top-img" src="https://cdn.douhuofalv.com/images/2023/04/20/2ea5fc20ffc90e7feec7ba2650b81c99.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<!-- <image class="backImg" src="https://cdn.douhuofalv.com/55a3e41ea916f770bb1be3864af.png" mode="widthFix"></image> -->
|
||||
<view class="confirm">
|
||||
<view class="confirm-white">
|
||||
<view class="confirm-top">订单号 {{seekData.order_no}}</view>
|
||||
<view class="confirm-list">
|
||||
<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>
|
||||
<view class="confirm-item-text" v-else><text v-if="item.key == 'price'">¥</text> {{item.value_text}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="confirm-user">
|
||||
<view class="confirm-user-text"><image src="https://cdn.douhuofalv.com/images/2023/04/20/c359f2fa277e6658157c7108f37d0d44.png" mode="widthFix"></image> 业务联系人</view>
|
||||
<view class="confirm-user-name">{{parent.nickname}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="idcardBtn">
|
||||
<view class="idcardBtn-go" @click="shareClick">保存图片</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 打卡海报 -->
|
||||
<view class="postertBack" v-if="isImgLay"></view>
|
||||
<view class="postert" v-if="isImgLay">
|
||||
<view class="poster-Cont">
|
||||
<image class="poster-Cont-img" :src="posterImg" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="sign-btn">
|
||||
<view class="remove-btn">长按图片保存</view>
|
||||
<view class="sign-img-block">
|
||||
<button class="sign-img-btn" size="mini" @click="isImgLay = false">取消</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { VueCanvasPoster } from 'vue-canvas-poster'
|
||||
import { seekOrderSee } from '@/apis/interfaces/synthesis'
|
||||
import html2canvas from 'html2canvas';
|
||||
export default {
|
||||
components: {
|
||||
VueCanvasPoster
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
seekData : '', // 咨询详情数据
|
||||
parent : '', // 联系人
|
||||
isImgLay : false,
|
||||
posterImg: "", //生成的海报图片路径
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取综法咨询-咨询详情
|
||||
this.getBusiness();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-咨询详情
|
||||
getBusiness(){
|
||||
seekOrderSee(this.$Route.query.synthesisId).then(res => {
|
||||
this.seekData = res
|
||||
this.parent = res.user.parent
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 保存图片
|
||||
shareClick() {
|
||||
html2canvas(document.querySelector("#poster"), {
|
||||
allowTaint: true,
|
||||
backgroundColor: "white",
|
||||
useCORS: true, //支持图片跨域
|
||||
scale: 1,
|
||||
}).then((canvas) => {
|
||||
this.isImgLay = true
|
||||
this.posterImg = canvas.toDataURL('image/png')
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-image: linear-gradient(to bottom,#041f79, #111e4b);
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.poster {
|
||||
background-image: linear-gradient(to bottom,#041f79, #111e4b);
|
||||
}
|
||||
|
||||
.top {
|
||||
position: relative;
|
||||
height: 320rpx;
|
||||
z-index: 4;
|
||||
.top-img {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 35%;
|
||||
}
|
||||
.top-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding: 80rpx 30rpx 0;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.top-cont-name {
|
||||
font-weight: 600;
|
||||
font-size: 74rpx;
|
||||
background-image: linear-gradient(to right,#f1c694, #fffbf6 70%);
|
||||
background-image: -webkit-linear-gradient(to right,#f1c694, #fffbf6 70%);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.top-cont-img {
|
||||
width: 90%;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backImg {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.confirm {
|
||||
padding: 0 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
.confirm-white {
|
||||
border-radius: 15rpx;
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 80rpx);
|
||||
height: 60rpx;
|
||||
background-color: rgba(255, 255, 255, .3);
|
||||
bottom: -30rpx;
|
||||
left: 40rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 160rpx);
|
||||
height: 120rpx;
|
||||
background-color: rgba(255, 255, 255, .1);
|
||||
bottom: -60rpx;
|
||||
left: 80rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
.confirm-top {
|
||||
background-color: #f7faff;
|
||||
border-radius: 15rpx 15rpx 0 0;
|
||||
line-height: 110rpx;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
.confirm-list {
|
||||
padding: 10rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
.confirm-item {
|
||||
display: flex;
|
||||
line-height: 40rpx;
|
||||
padding: 20rpx 0;
|
||||
.confirm-item-label {
|
||||
flex: 1;
|
||||
width: 200rpx;
|
||||
}
|
||||
.confirm-item-text {
|
||||
text-align: right;
|
||||
width: calc(100% - 200rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
.confirm-user {
|
||||
border-top: 2rpx solid #eeeeee;
|
||||
line-height: 110rpx;
|
||||
display: flex;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
color: #041f79;
|
||||
.confirm-user-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
image {
|
||||
width: 32rpx;
|
||||
margin: 40rpx 15rpx 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 按钮
|
||||
.idcardBtn {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
margin-top: 120rpx;
|
||||
padding-bottom: 100rpx;
|
||||
.idcardBtn-go {
|
||||
flex: 2;
|
||||
margin: 0 15rpx;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.postertBack {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
background-color: rgba(0,0,0,.6);
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9990;
|
||||
}
|
||||
.postert {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9999;
|
||||
.poster-Cont {
|
||||
background-color: #111e4b;
|
||||
width: 80vw;
|
||||
height: 55vh;
|
||||
top: 20vh;
|
||||
left: 10vw;
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.poster-Cont-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.poster-Cont-code {
|
||||
position: absolute;
|
||||
bottom: 250px;
|
||||
left: 46px;
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sign-btn {
|
||||
position: absolute;
|
||||
top: 78vh;
|
||||
width: 80%;
|
||||
left: 10%;
|
||||
z-index: 9999;
|
||||
.remove-btn {
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
background-color: #bf9960;
|
||||
color: #FFFFFF;
|
||||
border-radius: $radius-m;
|
||||
margin-top: $margin - 10;
|
||||
text-align: center;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.sign-img-block {
|
||||
display: flex;
|
||||
margin: 30rpx -10rpx 0;
|
||||
.sign-img-btn {
|
||||
flex: 2;
|
||||
line-height: 90rpx;
|
||||
background-color: #ffeeda;
|
||||
border-radius: $radius-m;
|
||||
text-align: center;
|
||||
font-size: $title-size;
|
||||
margin: 0 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
550
pages/synthesis/feePay.vue
Normal file
550
pages/synthesis/feePay.vue
Normal file
@@ -0,0 +1,550 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="paymentTop">
|
||||
<view class="paymentTop-name">
|
||||
需支付金额(元)
|
||||
</view>
|
||||
<view class="paymentTop-price">
|
||||
<text>¥</text>{{payPrice}}
|
||||
</view>
|
||||
<view class="paymentTop-text">
|
||||
与人方便,与己方便,珍惜时间,请先付款
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList">
|
||||
<view class="paymentList-label" @click="payType('wechat')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/payWechat.png" mode="widthFix"></image>微信支付
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<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('umsAli')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/aliPay.png" mode="widthFix"></image>支付宝(银联商务)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'umsAli' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList-label" @click="payType('umsMp')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/minPay.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 class="paymentList-label" @click="payType('dgAli')">
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/aliPay.png" mode="widthFix"></image>支付宝(汇付)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'dgAli' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="paymentList-label" @click="payType('dgwx')" >
|
||||
<view class="paymentList-left">
|
||||
<image class="paymentList-icon" src="@/static/imgs/minPay.png" mode="widthFix"></image>微信(汇付)
|
||||
</view>
|
||||
<view class="paymentList-right">
|
||||
<image class="paymentList-img" :src="Payment == 'dgwx' ? '/static/imgs/payCheck_active.png' : '/static/imgs/payCheck.png'" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<view class="paymentBtn" v-if="Payment == 'umsMp'">
|
||||
<!-- web.douhuotest.douhuofalv dev=0是线上 dev=1是线下 -->
|
||||
<wx-open-launch-weapp
|
||||
username="gh_918c81628d6f"
|
||||
:path="'pages/pay/pay?type=h5&dev=1&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="Payment == 'dgwx'">
|
||||
<button type="default" class="paymentBtn-go" :disabled="disabled" @click="payChickDg">
|
||||
打开小程序收银台
|
||||
</button>
|
||||
</view>
|
||||
|
||||
<view class="paymentBtn" v-else>
|
||||
<button class="paymentBtn-go" type="default" @click="payClick" :disabled="disabled">立即支付</button>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- 支付成功弹出 -->
|
||||
<view class="payMakeBack" :class="{active: payMakePop}" catchtouchmove='true'></view>
|
||||
<view class="payMakeCont" :class="{active: payMakePop}" catchtouchmove='true'>
|
||||
<image class="payMakeCont-img" src="@/static/imgs/payMakeCont_icon.png" mode="widthFix"></image>
|
||||
<view class="payMakeCont-title">
|
||||
支付成功
|
||||
</view>
|
||||
<view class="payMakeCont-price">
|
||||
<text>¥</text>{{payPrice}}
|
||||
</view>
|
||||
<view class="payMakeCont-tips">
|
||||
微信支付
|
||||
</view>
|
||||
<view class="payMakeCont-btn">
|
||||
<view class="payMakeCont-go" @click="payMakeSkip">完成</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
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'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
token : '', // 登录token
|
||||
orderId : '', // 微信支付id
|
||||
jumpUrlDg : '', // 抖巩支付
|
||||
tradeId : '', // 微信支付id
|
||||
Payment : 'wechat', // 支付类型
|
||||
applyData : '', // 支付数据
|
||||
disabled : false, // 按钮状态
|
||||
getState : false, // 获取订单状态
|
||||
payMakePop : false, // 支付成功弹框
|
||||
payPrice : '', // 支付金额
|
||||
payForm : '', // 支付类型
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.token = this.$store.getters.getToken
|
||||
this.payPrice = this.$Route.query.price
|
||||
this.payForm = this.$Route.query.payForm
|
||||
this.orderId = this.$Route.query.id
|
||||
},
|
||||
methods: {
|
||||
// 选择支付方式
|
||||
payType(type) {
|
||||
|
||||
if(this.Payment === type) return
|
||||
this.Payment = type
|
||||
if(type === 'umsMp'){
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
this.UMSPay()
|
||||
} else if(type === 'dgwx') {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
this.dgwxPay()
|
||||
}
|
||||
},
|
||||
|
||||
// 斗拱支付
|
||||
dgwxPay(){
|
||||
let payType = this.Payment == 'dgwx' ? 'mp' : 'mp_alipay'
|
||||
|
||||
let NewUrl = ''
|
||||
// 是否是补差价订单
|
||||
if(this.$Route.query.style == 'diff') {
|
||||
NewUrl = synDiffDg
|
||||
} else {
|
||||
let apiUrl = ''
|
||||
if(this.payForm == 'service') {
|
||||
apiUrl = serviceDg
|
||||
} else if (this.payForm == 'expand') {
|
||||
apiUrl = expandDg
|
||||
} else if (this.payForm == 'entrust') {
|
||||
apiUrl = entrustDg
|
||||
}
|
||||
NewUrl = apiUrl
|
||||
}
|
||||
NewUrl(this.orderId, {type: payType, app_schema: 'weixin://'}).then(res => {
|
||||
let { params, trade_id } = res;
|
||||
this.getState = true
|
||||
switch (payType){
|
||||
case 'mp':
|
||||
this.tradeId = trade_id
|
||||
this.jumpUrlDg = JSON.parse(params.miniapp_data)
|
||||
this.Payment = 'dgwx'
|
||||
break;
|
||||
case 'mp_alipay':
|
||||
this.tradeId = trade_id
|
||||
window.location.href = `https://ds.alipay.com/?scheme=` + encodeURIComponent(params.jump_url)
|
||||
this.Payment = 'dgwxalipay'
|
||||
break;
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 新银联商务支付
|
||||
UMSPay(){
|
||||
let payType = this.Payment == 'umsMp' ? 'mp' : 'mp_alipay'
|
||||
let NewUrl = ''
|
||||
// 是否是补差价订单
|
||||
if(this.$Route.query.style == 'diff') {
|
||||
NewUrl = synDiffUms
|
||||
} else {
|
||||
let apiUrl = ''
|
||||
if(this.payForm == 'service') {
|
||||
apiUrl = serviceUms
|
||||
} else if (this.payForm == 'expand') {
|
||||
apiUrl = expandUms
|
||||
} else {
|
||||
apiUrl = entrustUms
|
||||
}
|
||||
NewUrl = apiUrl
|
||||
}
|
||||
|
||||
NewUrl(this.orderId, {type: payType}).then(res => {
|
||||
this.getState = true
|
||||
switch (payType){
|
||||
case 'mp':
|
||||
this.tradeId = res.trade_id
|
||||
break;
|
||||
case 'mp_alipay':
|
||||
this.tradeId = res.trade_id
|
||||
window.location.href = res.alipay
|
||||
break;
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 抖供支付
|
||||
payChickDg() {
|
||||
window.location.href = this.jumpUrlDg.scheme_code
|
||||
},
|
||||
|
||||
// 微信支付
|
||||
payClick() {
|
||||
let newOpenId = uni.getStorageSync('openId')
|
||||
if(this.Payment === 'umsMp' || this.Payment === 'umsAli'){
|
||||
this.UMSPay()
|
||||
return
|
||||
} else if (this.Payment === 'dgwx' || this.Payment === 'dgAli') {
|
||||
this.dgwxPay()
|
||||
return
|
||||
}
|
||||
|
||||
if(newOpenId) {
|
||||
let NewUrl = ''
|
||||
// 是否是补差价订单
|
||||
if(this.$Route.query.style == 'diff') {
|
||||
NewUrl = synDiffPay
|
||||
} else {
|
||||
let apiUrl = ''
|
||||
if(this.payForm == 'service') {
|
||||
apiUrl = servicePay
|
||||
} else if (this.payForm == 'expand') {
|
||||
apiUrl = expandPay
|
||||
} else {
|
||||
apiUrl = entrustPay
|
||||
}
|
||||
NewUrl = apiUrl
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
this.payMakePop = true
|
||||
},
|
||||
cancel: payCancel => {
|
||||
if(this.payForm == 'service') {
|
||||
// 跳到年费单
|
||||
this.$Router.replace({name: 'YearOrder'})
|
||||
} else if (this.payForm == 'expand') {
|
||||
// 跳到拓展单
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
} else {
|
||||
// 跳到委托单
|
||||
this.$Router.replace({name: 'EntrustOrder'})
|
||||
}
|
||||
},
|
||||
fail: payfail => {
|
||||
// 取消支付
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon: 'none'
|
||||
})
|
||||
this.disabled = true
|
||||
if(this.payForm == 'service') {
|
||||
// 跳到年费单
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'YearOrder'})
|
||||
},1000)
|
||||
} else if (this.payForm == 'expand') {
|
||||
// 跳到拓展单
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
},1000)
|
||||
} else {
|
||||
// 跳到委托单
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'EntrustOrder'})
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 获取微信授权信息-获取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.$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"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 支付成功弹出
|
||||
payMakeSkip() {
|
||||
this.payMakePop = false
|
||||
if(this.payForm == 'service') {
|
||||
// 跳到年费单
|
||||
this.$Router.replace({name: 'YearOrder'})
|
||||
} else if (this.payForm == 'expand') {
|
||||
// 跳到拓展单
|
||||
this.$Router.replace({name: 'ExpandOrder'})
|
||||
} else {
|
||||
// 跳到委托单
|
||||
this.$Router.replace({name: 'EntrustOrder'})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content{
|
||||
background: #f4f4f4;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.paymentTop {
|
||||
padding: $padding * 4 $padding;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
color: #666666;
|
||||
.paymentTop-name {
|
||||
padding-left: $padding;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.paymentTop-price {
|
||||
color: $mian-color;
|
||||
font-size: $title-size + 40;
|
||||
font-weight: 600;
|
||||
margin: $margin - 10 0;
|
||||
text {
|
||||
font-size: $title-size + 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentList {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.paymentList-label {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
padding: $padding + 10 $padding;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: $margin + 10;
|
||||
display: flex;
|
||||
.paymentList-left {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
line-height: 40rpx;
|
||||
.paymentList-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: $margin - 10;
|
||||
}
|
||||
}
|
||||
.paymentList-right {
|
||||
display: flex;
|
||||
.paymentList-price {
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
}
|
||||
.paymentList-tips {
|
||||
background-image: linear-gradient(to left, #FF4646, #FF7676);
|
||||
height: 44rpx;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: #ffffff;
|
||||
opacity: .9;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.paymentList-arrow {
|
||||
width: 14rpx;
|
||||
margin: 10rpx 0 0 20rpx;
|
||||
}
|
||||
.paymentList-img {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-top: 4rpx;
|
||||
margin-left: $margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.paymentBtn {
|
||||
text-align: center;
|
||||
padding: 0 $padding 100rpx;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
.paymentBtn-go {
|
||||
position: relative;
|
||||
width: 280px;
|
||||
background-color: #da2b56;
|
||||
color: #ffffff;
|
||||
border-radius: 5px;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
font-size: 18px;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 支付成功弹出
|
||||
.payMakeBack {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, .6);
|
||||
display: none;
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.payMakeCont {
|
||||
position: fixed;
|
||||
z-index: 1001;
|
||||
left: 0;
|
||||
bottom: -10000%;
|
||||
height: 70vh;
|
||||
width: 100vw;
|
||||
background-color: #f7f7f7;
|
||||
border-radius: 40rpx 40rpx 0 0;
|
||||
padding-top: 100rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
transition: .2;
|
||||
&.active {
|
||||
bottom: 0;
|
||||
}
|
||||
.payMakeCont-img {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
.payMakeCont-title {
|
||||
margin: 5rpx 0 30rpx 40rpx;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
.payMakeCont-price {
|
||||
font-size: 78rpx;
|
||||
font-weight: 600;
|
||||
text {
|
||||
font-size: 36rpx;
|
||||
width: 40rpx;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
.payMakeCont-tips {
|
||||
font-size: 28rpx;
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
.payMakeCont-btn {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
padding: 80rpx 30rpx 100rpx;
|
||||
box-sizing: border-box;
|
||||
.payMakeCont-go {
|
||||
background-color: #da2b56;
|
||||
line-height: 98rpx;
|
||||
border-radius: 20rpx;
|
||||
color: #ffffff;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
411
pages/synthesis/feeWrite.vue
Normal file
411
pages/synthesis/feeWrite.vue
Normal file
@@ -0,0 +1,411 @@
|
||||
<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, {...dataArr}).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;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
85
pages/synthesis/order.vue
Normal file
85
pages/synthesis/order.vue
Normal file
@@ -0,0 +1,85 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="topItem">
|
||||
<view class="topItem-label" @click="$Router.push({name: 'SeekOrder'})">
|
||||
<view class="topItem-name" v-if="synthesisData.synthesis">
|
||||
咨询单({{synthesisData.synthesis.all}})
|
||||
</view>
|
||||
<image class="topItem-arrow" src="@/static/imgs/payArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="topItem-label" @click="$Router.push({name: 'YearOrder'})">
|
||||
<view class="topItem-name" v-if="synthesisData.service">
|
||||
年费单({{synthesisData.service.all}})
|
||||
</view>
|
||||
<image class="topItem-arrow" src="@/static/imgs/payArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="topItem-label" @click="$Router.push({name: 'EntrustOrder'})">
|
||||
<view class="topItem-name" v-if="synthesisData.entrust">
|
||||
委托单({{synthesisData.entrust.all}})
|
||||
</view>
|
||||
<image class="topItem-arrow" src="@/static/imgs/payArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="topItem-label" @click="$Router.push({name: 'ExpandOrder'})">
|
||||
<view class="topItem-name" v-if="synthesisData.expand">
|
||||
拓展单({{synthesisData.expand.all}})
|
||||
</view>
|
||||
<image class="topItem-arrow" src="@/static/imgs/payArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { synthesisCount } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userLogin : '', // 登录状态
|
||||
synthesisData : '', // 综法数量
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
if(this.$store.getters.getToken) {
|
||||
this.userLogin = true
|
||||
|
||||
// 获取综法订单数据数量
|
||||
this.synthesisInfo();
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法订单数据数量
|
||||
synthesisInfo() {
|
||||
synthesisCount({channel: 'self'}).then(res => {
|
||||
this.synthesisData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.topItem-label {
|
||||
display: flex;
|
||||
line-height: 110rpx;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2rpx solid #e8e8e8;
|
||||
}
|
||||
|
||||
.topItem-name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.topItem-arrow {
|
||||
width: 18rpx;
|
||||
height: 18rpx;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
</style>
|
||||
73
pages/synthesis/payPoint.vue
Normal file
73
pages/synthesis/payPoint.vue
Normal file
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="point">
|
||||
<img class="point-img" src="@/static/imgs/payImg.png">
|
||||
<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="$Router.push({name: 'synthesisOrder'})">
|
||||
查看订单
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.point {
|
||||
text-align: center;
|
||||
padding: 40% 0;
|
||||
.point-img {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
margin: 0 auto 10rpx;
|
||||
}
|
||||
.point-text {
|
||||
.point-name {
|
||||
color: $mian-color;
|
||||
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 {
|
||||
display: inline-block;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
border-radius: $radius * 4;
|
||||
padding: 0 $padding * 2.5;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
197
pages/synthesis/personBrief.vue
Normal file
197
pages/synthesis/personBrief.vue
Normal file
@@ -0,0 +1,197 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<image class="yearImg" src="https://cdn.douhuofalv.com/images/2023/04/17/85db0728f2bae879ecbe561eed100549.png" mode="widthFix"></image>
|
||||
<view class="list">
|
||||
<view class="title">
|
||||
<view class="title-name"><text>个人法律咨询365服务包</text></view>
|
||||
<image class="title-img" src="https://cdn.douhuofalv.com/images/2023/04/17/79426f8fe9395c1c1f5be41d0a6f2eb8.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="item" v-for="(item, index) in synthesisArr" :key="index">
|
||||
<view class="item-back">
|
||||
<view class="item-title">{{item.title}}</view>
|
||||
<view class="range">
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">针对群体:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.audiences}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">咨询收费:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.price}}元/年/人
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">服务期限:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.day}}天
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label scope" v-if="index == 0">
|
||||
<view class="range-label-title">服务范围:</view>
|
||||
<view class="range-label-text">
|
||||
<text v-for="(items, scopeIndex) in item.scope" :key="scopeIndex">{{scopeIndex + 1}}、{{items}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<image class="shapeWhite-back" src="https://cdn.douhuofalv.com/images/2023/04/17/705af638ddaed151ce5bc5ead85f604d.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="btn">
|
||||
<view class="btn-go" @click="$Router.push({name: 'PersonWrite', params: {serveId: item.synthesis_service_id}})">
|
||||
{{item.is_open ? '立即续费' : '立即开通'}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<image class="yearBttom" src="https://cdn.douhuofalv.com/images/2023/04/17/fc4cad00a630e3d69b3f486e9d2937e9.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { yearSynthList } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
synthesisArr: [], //个人-年费服务包
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取-个人-年费服务包列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 个人-年费服务包列表
|
||||
yearServe(){
|
||||
yearSynthList({
|
||||
type: this.$Route.query.type
|
||||
}).then(res => {
|
||||
this.synthesisArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
width: 100vw;
|
||||
background-color: #121d4c;
|
||||
}
|
||||
|
||||
.yearImg,
|
||||
.yearBttom{
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
background-color: #032e9e;
|
||||
border-radius: 0 0 60rpx 60rpx;
|
||||
.title {
|
||||
margin-bottom: 40rpx;
|
||||
display: flex;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
.title-name {
|
||||
flex: 1;
|
||||
text {
|
||||
padding: 0 70rpx 0 30rpx;
|
||||
font-size: 36rpx;
|
||||
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
|
||||
display: inline-block;
|
||||
color: #2c3c66;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
&:after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-width: 40rpx;
|
||||
border-style: solid;
|
||||
border-color: transparent #03339e transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
.title-img {
|
||||
width: 110rpx;
|
||||
}
|
||||
}
|
||||
.item {
|
||||
margin-bottom: 30rpx;
|
||||
.item-back {
|
||||
background-color: #002088;
|
||||
border-radius: 20rpx;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.item-title {
|
||||
font-weight: 600;
|
||||
font-size:36rpx;
|
||||
background-image: -webkit-linear-gradient(top,#fdf6ca, #e29c68);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
flex: 1;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.range {
|
||||
color: #ffffff;
|
||||
font-size: 28rpx;
|
||||
.range-label {
|
||||
line-height: 40rpx;
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
.range-label-title {
|
||||
width: 160rpx;
|
||||
}
|
||||
.range-label-text {
|
||||
width: calc(100% - 160rpx);
|
||||
text {
|
||||
display: block;
|
||||
margin-bottom: 20rpx;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.shapeWhite-back {
|
||||
width: 50%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
padding: 40rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.btn-go {
|
||||
display: inline-block;
|
||||
background-image: -webkit-linear-gradient(top,#fff8da,#f3c796);
|
||||
color: #582700;
|
||||
width: 50%;
|
||||
font-weight: 600;
|
||||
font-size: 36rpx;
|
||||
line-height: 88rpx;
|
||||
border-radius: 50rpx;
|
||||
box-shadow: 0 8rpx 6rpx rgba(0, 0, 0, .3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
460
pages/synthesis/personWrite.vue
Normal file
460
pages/synthesis/personWrite.vue
Normal file
@@ -0,0 +1,460 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="top-cont">
|
||||
<view class="top-cont-name">个人法律咨询365服务包</view>
|
||||
<view class="top-cont-text">请仔细填写以下信息</view>
|
||||
</view>
|
||||
<image class="top-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.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">
|
||||
<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'">
|
||||
<mouldInput class="idcardAdd-input" :blur-value="item.value" :input-title="item.title" :input-type="item.type" :input-key="item.key" @onValue="($event) => {item.value = $event}"></mouldInput>
|
||||
</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]}}
|
||||
</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 === '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="#db3254" style="transform:scale(.65)" :checked="item.value === radioIndex" /><text>{{radioItem}}</text>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
|
||||
<!-- 目前所在地 -->
|
||||
<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>
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardBtn">
|
||||
<button class="idcardBtn-go" type="default" @click="onSubmit" :disabled="disabled">{{disabled ? '数据正在提交中' : '确认提交'}}</button>
|
||||
</view>
|
||||
|
||||
<!-- 打款凭证弹出 -->
|
||||
<view class="voucherBack" :class="{active : voucherState}"></view>
|
||||
<view class="voucherPop" :class="{active : voucherState}">
|
||||
<view class="tipsWhite">
|
||||
<image class="voucherPop-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.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="cancelPay">
|
||||
暂不支付
|
||||
</view>
|
||||
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
|
||||
上传凭证
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { yearSynthInfo, yearSynthPost } 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,
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
voucherState : false, // 上传凭证弹出
|
||||
}
|
||||
},
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
|
||||
// 获取综法咨询-详情
|
||||
this.getBusiness();
|
||||
|
||||
// 省市区
|
||||
createCity().then(res => {
|
||||
this.cityPicker = res;
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-详情
|
||||
getBusiness(){
|
||||
yearSynthInfo(this.$Route.query.serveId).then(res => {
|
||||
let froms = res.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]
|
||||
})
|
||||
}
|
||||
yearSynthPost(this.$Route.query.serveId, {...dataArr}).then(res => {
|
||||
this.disabled = true
|
||||
this.expressSheet(res.service_order_id, res.order_type, res.can, res.price )
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(can.online) {
|
||||
this.$Router.replace({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'YearOrder', params: {yearType: 1}})
|
||||
},3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消支付
|
||||
cancelPay() {
|
||||
this.voucherState = false
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'YearOrder', params: {yearType: 1}})
|
||||
},3000)
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</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-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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
211
pages/synthesis/seekOrder.vue
Normal file
211
pages/synthesis/seekOrder.vue
Normal file
@@ -0,0 +1,211 @@
|
||||
<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>
|
||||
<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="/static/imgs/Noevaluate.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) {
|
||||
console.log(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>
|
||||
271
pages/synthesis/standBrief.vue
Normal file
271
pages/synthesis/standBrief.vue
Normal file
@@ -0,0 +1,271 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<image class="yearImg" src="https://cdn.douhuofalv.com/images/2023/04/17/80a076d77afdbe716e29f2ea56f9b103.png" mode="widthFix"></image>
|
||||
<view class="list">
|
||||
<view class="title">
|
||||
<view class="title-name"><text>企业法律咨询服务包</text></view>
|
||||
<view class="title-text">legal advice</view>
|
||||
</view>
|
||||
<view class="item" :class="{active : item.service_order != null}" v-for="(item, index) in synthesisArr" :key="index">
|
||||
<view class="endedAt" v-if="item.service_order">
|
||||
<view class="endedAt-time">到期时间:{{item.service_order.ended_at}}</view>
|
||||
</view>
|
||||
<view class="top">
|
||||
<view class="top-title">{{item.title}}</view>
|
||||
<view class="top-btn" @click="$Router.push({name: 'StandWrite', params: {serveId: item.synthesis_service_id}})">{{item.is_open ? '续费' : '开通'}}</view>
|
||||
</view>
|
||||
<view class="range">
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">针对群体:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.audiences}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">咨询收费:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.price}}元/年
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label">
|
||||
<view class="range-label-title">服务期限:</view>
|
||||
<view class="range-label-text">
|
||||
{{item.day}}天
|
||||
</view>
|
||||
</view>
|
||||
<view class="range-label scope" v-if="index == 0">
|
||||
<view class="range-label-title">服务范围:</view>
|
||||
<view class="range-label-text">
|
||||
<text v-for="(items, scopeIndex) in item.scope" :key="scopeIndex">{{scopeIndex + 1}}、{{items}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="shape" v-if="index >= 1">
|
||||
<view class="shapeBack"></view>
|
||||
<view class="shapeCont">
|
||||
<view class="shapeWhite">
|
||||
<view class="shapeWhite-title">
|
||||
服务范围
|
||||
</view>
|
||||
<view class="shapeWhite-label" v-for="(items, scopeIndex) in item.scope" :key="scopeIndex">
|
||||
{{scopeIndex + 1}}、{{items}}
|
||||
</view>
|
||||
<image class="shapeWhite-back" src="https://cdn.douhuofalv.com/images/2023/04/17/893b41e87c2bdfca62c4936a880c79cd.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<image class="yearBttom" src="https://cdn.douhuofalv.com/images/2023/04/17/fc4cad00a630e3d69b3f486e9d2937e9.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { yearSynthList } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
synthesisArr: [], //企业-年费服务包列表
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取-个人-年费服务包列表
|
||||
this.yearServe();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 个人-年费服务包列表
|
||||
yearServe(){
|
||||
yearSynthList({
|
||||
type: this.$Route.query.type
|
||||
}).then(res => {
|
||||
this.synthesisArr = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
width: 100vw;
|
||||
background-color: #121d4c;
|
||||
}
|
||||
|
||||
.yearImg,
|
||||
.yearBttom{
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
background-color: #121d4c;
|
||||
.title {
|
||||
margin-bottom: 40rpx;
|
||||
display: flex;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
.title-name {
|
||||
flex: 1;
|
||||
text {
|
||||
padding: 0 70rpx 0 30rpx;
|
||||
font-size: 36rpx;
|
||||
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
|
||||
display: inline-block;
|
||||
color: #2c3c66;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
&:after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-width: 40rpx;
|
||||
border-style: solid;
|
||||
border-color: transparent #121d4c transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
.title-text {
|
||||
font-size: 36rpx;
|
||||
text-transform: uppercase;
|
||||
background-image: -webkit-linear-gradient(top,#86716b, #8e8f9c);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
}
|
||||
}
|
||||
.item {
|
||||
background-color: #002088;
|
||||
border-radius: 20rpx;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 30rpx;
|
||||
position: relative;
|
||||
&.active {
|
||||
padding-top: 70rpx;
|
||||
}
|
||||
.endedAt {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: inline-block;
|
||||
color: #2c3c66;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.endedAt-time {
|
||||
background-image: -webkit-linear-gradient(40deg,#f1c593, #fef9f2);
|
||||
margin: 0 auto;
|
||||
display: inline-block;
|
||||
padding: 0 20rpx;
|
||||
line-height: 52rpx;
|
||||
font-size: 26rpx;
|
||||
border-radius: 0 0 5rpx 5rpx;
|
||||
color: #582700;
|
||||
}
|
||||
}
|
||||
.top {
|
||||
display: flex;
|
||||
font-weight: 600;
|
||||
line-height: 54rpx;
|
||||
margin-bottom: 20rpx;
|
||||
.top-title {
|
||||
font-size:36rpx;
|
||||
background-image: -webkit-linear-gradient(top,#fdf6ca, #e29c68);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
flex: 1;
|
||||
}
|
||||
.top-btn {
|
||||
background-image: -webkit-linear-gradient(top,#fff8da,#f3c796);
|
||||
color: #582700;
|
||||
padding: 0 30rpx;
|
||||
border-radius: 50rpx;
|
||||
box-shadow: 0 8rpx 6rpx rgba(0, 0, 0, .3);
|
||||
}
|
||||
}
|
||||
.range {
|
||||
color: #ffffff;
|
||||
font-size: 28rpx;
|
||||
.range-label {
|
||||
line-height: 40rpx;
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
.range-label-title {
|
||||
width: 160rpx;
|
||||
}
|
||||
.range-label-text {
|
||||
width: calc(100% - 160rpx);
|
||||
text {
|
||||
display: block;
|
||||
margin-bottom: 20rpx;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.shape {
|
||||
position: relative;
|
||||
margin-top: 30rpx;
|
||||
font-size: 28rpx;
|
||||
.shapeBack {
|
||||
background-color: #0d245b;
|
||||
height: 20rpx;
|
||||
width: 100%;
|
||||
border: 4rpx solid #e8c595;
|
||||
border-radius: 80rpx;
|
||||
}
|
||||
.shapeCont {
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
margin-top: -18rpx;
|
||||
.shapeWhite {
|
||||
background-color: #ffffff;
|
||||
border-radius: 0 0 20rpx 20rpx;
|
||||
padding: 40rpx 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
color: #0e2660;
|
||||
position: relative;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 20rpx;
|
||||
background-image: -webkit-linear-gradient(top, #a7a8ad, transparent);
|
||||
}
|
||||
.shapeWhite-title {
|
||||
font-size: 38rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.shapeWhite-label {
|
||||
padding: 10rpx 0;
|
||||
line-height: 44rpx;
|
||||
}
|
||||
.shapeWhite-back {
|
||||
width: 85%;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
484
pages/synthesis/standWrite.vue
Normal file
484
pages/synthesis/standWrite.vue
Normal file
@@ -0,0 +1,484 @@
|
||||
<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">
|
||||
<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'">
|
||||
<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>
|
||||
</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 === '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>
|
||||
|
||||
<!-- 被告所在地 -->
|
||||
<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>
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardBtn">
|
||||
<button class="idcardBtn-go" type="default" @click="onSubmit" :disabled="disabled">{{disabled ? '数据正在提交中' : '确认提交'}}</button>
|
||||
</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="cancelPay">
|
||||
暂不支付
|
||||
</view>
|
||||
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
|
||||
上传凭证
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { yearSynthInfo, yearSynthPost } 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 : [], // 地址
|
||||
|
||||
// 被告所在地
|
||||
defendant : {},
|
||||
|
||||
// 目前所在地
|
||||
address : {},
|
||||
disabled : false,
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
voucherState : false, // 上传凭证弹出
|
||||
}
|
||||
},
|
||||
created() {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
|
||||
// 获取综法咨询-详情
|
||||
this.getBusiness();
|
||||
|
||||
// 省市区
|
||||
createCity().then(res => {
|
||||
this.cityPicker = res;
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-详情
|
||||
getBusiness(){
|
||||
yearSynthInfo(this.$Route.query.serveId).then(res => {
|
||||
let froms = res.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'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 被告所在地-选择城市
|
||||
defendantPicker(e){
|
||||
let { value } = e.detail
|
||||
let dataArr = {
|
||||
province_id: value[0].value,
|
||||
city_id: value[1].value
|
||||
}
|
||||
this.defendant = dataArr
|
||||
},
|
||||
|
||||
// 目前所在地-选择城市
|
||||
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]
|
||||
})
|
||||
}
|
||||
|
||||
yearSynthPost(this.$Route.query.serveId, {...dataArr}).then(res => {
|
||||
this.disabled = true
|
||||
this.expressSheet(res.service_order_id, res.order_type, res.can, res.price )
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
expressSheet(id, type, can, price) {
|
||||
this.orderId = id
|
||||
this.orderType = type
|
||||
uni.showActionSheet({
|
||||
itemList: ['线上支付', '线下支付'],
|
||||
success: sheetRes => {
|
||||
if(sheetRes.tapIndex == 0) {
|
||||
if(can.online) {
|
||||
this.$Router.replace({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'service'}})
|
||||
return
|
||||
}
|
||||
this.voucherState = true
|
||||
} else if (sheetRes.tapIndex == 1) {
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: id, orderType: type}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'YearOrder', params: {yearType: 2}})
|
||||
},3000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消支付
|
||||
cancelPay() {
|
||||
this.voucherState = false
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
this.$Router.replace({name: 'YearOrder', params: {yearType: 2}})
|
||||
},3000)
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.replace({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #111e4b;
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
position: fixed;
|
||||
|
||||
}
|
||||
|
||||
.top {
|
||||
position: relative;
|
||||
height: 150rpx;
|
||||
.top-img {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 35%;
|
||||
}
|
||||
.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-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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.idcardAdd-aline {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
// 按钮
|
||||
.idcardBtn {
|
||||
background-color: #111e4b;
|
||||
width: 100%;
|
||||
padding: 20rpx 60rpx 60rpx;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打款凭证弹出
|
||||
.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>
|
||||
357
pages/synthesis/voucherOpen.vue
Normal file
357
pages/synthesis/voucherOpen.vue
Normal file
@@ -0,0 +1,357 @@
|
||||
<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>
|
||||
|
||||
<form @submit="issueForm" class="take">
|
||||
<view class="take-label">
|
||||
<view class="remarkText" v-if="type == 'edit'">
|
||||
<view class="remarkText-name">驳回原因</view>
|
||||
<view class="remarkText-text">{{remark}}</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="name">
|
||||
<image src="@/static/icon/takeIcon_01.png" mode="widthFix"></image>收款银行
|
||||
</view>
|
||||
<view class="time">{{bankData.name}}</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="name">
|
||||
<image src="@/static/icon/takeIcon_02.png" mode="widthFix"></image>收款银行帐号
|
||||
</view>
|
||||
<view class="time">{{bankData.no}}</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="name">
|
||||
<image src="@/static/icon/takeIcon_03.png" mode="widthFix"></image>打款金额
|
||||
</view>
|
||||
<view class="entry">
|
||||
<text>¥</text>
|
||||
<input type="digit" :value="price" name="price" placeholder-style="color: #000000" placeholder="请输入打款金额" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="name">
|
||||
<image src="@/static/icon/takeIcon_04.png" mode="widthFix"></image>转款账户
|
||||
</view>
|
||||
<input class="entry" type="text" :value="name" name="name" placeholder-style="color: #000000" placeholder="请输入转款人账户名" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="name">
|
||||
<image src="@/static/icon/takeIcon_05.png" mode="widthFix"></image>打款凭证
|
||||
</view>
|
||||
<view class="issueNew" @click="albumClick">
|
||||
<image class="issueNew-icon" :src="showpath || '/static/imgs/cover_img.png'" mode="aspectFill"></image>
|
||||
<view class="issueNew-text">请上传转款电子回单</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="idcardBtn">
|
||||
<button class="idcardBtn-go" form-type="submit" :disabled="disabled">{{disabled ? '数据正在提交中' : '确认提交'}}</button>
|
||||
</view>
|
||||
</form>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { uploads } from '@/apis/interfaces/uploading'
|
||||
import { bankInfo, offlineOpen, bankSee, bankEdit } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
orderType: '', // 订单类型
|
||||
bankData : '', // 账户信息
|
||||
price : '', // 打款金额
|
||||
name : '', // 打卡账户
|
||||
showpath : '', // 凭证图片
|
||||
type : '', // 是否为编辑
|
||||
remark : '', // 驳回原因
|
||||
disabled : false, // 按钮状态
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.type = this.$Route.query.type
|
||||
|
||||
// 查看打款凭证-查看提交信息
|
||||
this.yearServe();
|
||||
|
||||
// 查看提交信息
|
||||
if(this.$Route.query.type == 'edit') {
|
||||
bankSee(this.$Route.query.payId,{
|
||||
order_type : this.$Route.query.orderType,
|
||||
order_id : this.$Route.query.orderId
|
||||
}).then(res => {
|
||||
this.price = res.price
|
||||
this.name = res.name
|
||||
this.showpath = res.cover
|
||||
this.remark = res.remark
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 查看打款凭证
|
||||
yearServe(page){
|
||||
bankInfo().then(res => {
|
||||
this.bankData = res
|
||||
}).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.showpath = res.url[0]
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
// 表单提交
|
||||
issueForm(e) {
|
||||
let value = e.detail.value;
|
||||
let data = {
|
||||
order_type : this.$Route.query.orderType,
|
||||
order_id : this.$Route.query.orderId,
|
||||
name : value.name,
|
||||
price : value.price,
|
||||
cover : this.showpath
|
||||
}
|
||||
if(this.$Route.query.type == 'edit') {
|
||||
bankEdit(this.$Route.query.payId,data).then(res => {
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: '提交成功,请等待审核',
|
||||
icon: "none"
|
||||
})
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
uni.navigateBack()
|
||||
},2000)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
offlineOpen(data).then(res => {
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: '提交成功,请等待审核',
|
||||
icon: "none"
|
||||
})
|
||||
|
||||
setTimeout(()=>{
|
||||
uni.navigateBack()
|
||||
},2000)
|
||||
}).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: 40%;
|
||||
}
|
||||
.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: 54rpx;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.take {
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.take-label {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.remarkText {
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffefef;
|
||||
color: #dc3454;
|
||||
border-radius: 15rpx;
|
||||
margin: 20rpx;
|
||||
width: calc(100% - 40rpx);
|
||||
.remarkText-name {
|
||||
margin-bottom: 10rpx;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.item {
|
||||
padding:25rpx 20rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
line-height: 44rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.name image {
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.time {
|
||||
width: 100%;
|
||||
color: #9d9d99;
|
||||
background-color: #f4f4f4;
|
||||
padding: 0 16px;
|
||||
height: 46px;
|
||||
line-height: 46px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.entry {
|
||||
width: 100%;
|
||||
background-color: #f4f4f4;
|
||||
font-size: 30rpx;
|
||||
padding: 0 30rpx;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10rpx;
|
||||
display: flex;
|
||||
input {
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
display: inline-block;
|
||||
}
|
||||
text {
|
||||
padding-right: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.issueNew {
|
||||
background-color: #f4f4f4;
|
||||
text-align: center;
|
||||
margin: 30rpx auto 0;
|
||||
width: 400rpx;
|
||||
height: 400rpx;
|
||||
padding-top: 80rpx;
|
||||
box-sizing: border-box;
|
||||
border-radius: 15rpx;
|
||||
}
|
||||
|
||||
.issueNew-icon {
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
}
|
||||
|
||||
.issueNew-text {
|
||||
font-size: 28rpx;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
|
||||
/* 按钮 */
|
||||
// 按钮
|
||||
.idcardBtn {
|
||||
background-color: #111e4b;
|
||||
width: 100%;
|
||||
padding: 40rpx 0 120rpx;
|
||||
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>
|
||||
206
pages/synthesis/yearConfirm.vue
Normal file
206
pages/synthesis/yearConfirm.vue
Normal file
@@ -0,0 +1,206 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view id="poster" class="poster">
|
||||
<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>
|
||||
</view>
|
||||
<image class="top-img" src="https://cdn.douhuofalv.com/images/2023/04/20/2ea5fc20ffc90e7feec7ba2650b81c99.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="confirm">
|
||||
<view class="confirm-white">
|
||||
<view class="confirm-top">订单号 {{seekData.order_no}}</view>
|
||||
<view class="confirm-list">
|
||||
<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>
|
||||
<view class="confirm-item-text" v-else><text v-if="item.key == 'price'">¥</text> {{item.value_text}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="confirm-user">
|
||||
<view class="confirm-user-text"><image src="https://cdn.douhuofalv.com/images/2023/04/20/c359f2fa277e6658157c7108f37d0d44.png" mode="widthFix"></image> 业务联系人</view>
|
||||
<view class="confirm-user-name">{{parent.nickname}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { VueCanvasPoster } from 'vue-canvas-poster'
|
||||
import { yearOrderSee } from '@/apis/interfaces/synthesis'
|
||||
import html2canvas from 'html2canvas';
|
||||
export default {
|
||||
components: {
|
||||
VueCanvasPoster
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
seekData : '', // 咨询详情数据
|
||||
parent : '', // 联系人
|
||||
isImgLay : false,
|
||||
posterImg: "", //生成的海报图片路径
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
// 获取综法咨询-咨询详情
|
||||
this.getBusiness();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-咨询详情
|
||||
getBusiness(){
|
||||
yearOrderSee(this.$Route.query.servicesId).then(res => {
|
||||
this.seekData = res
|
||||
this.parent = res.user.parent
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-image: linear-gradient(to bottom,#041f79, #111e4b);
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.poster {
|
||||
background-image: linear-gradient(to bottom,#041f79, #111e4b);
|
||||
}
|
||||
|
||||
.top {
|
||||
position: relative;
|
||||
height: 320rpx;
|
||||
z-index: 4;
|
||||
.top-img {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 35%;
|
||||
}
|
||||
.top-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding: 80rpx 30rpx 0;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.top-cont-name {
|
||||
font-weight: 600;
|
||||
font-size: 74rpx;
|
||||
background-image: linear-gradient(to right,#f1c694, #fffbf6 70%);
|
||||
background-image: -webkit-linear-gradient(to right,#f1c694, #fffbf6 70%);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.top-cont-img {
|
||||
width: 90%;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backImg {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.confirm {
|
||||
padding: 0 30rpx 100rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
.confirm-white {
|
||||
border-radius: 15rpx;
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 80rpx);
|
||||
height: 60rpx;
|
||||
background-color: rgba(255, 255, 255, .3);
|
||||
bottom: -30rpx;
|
||||
left: 40rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 160rpx);
|
||||
height: 120rpx;
|
||||
background-color: rgba(255, 255, 255, .1);
|
||||
bottom: -60rpx;
|
||||
left: 80rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
.confirm-top {
|
||||
background-color: #f7faff;
|
||||
border-radius: 15rpx 15rpx 0 0;
|
||||
line-height: 110rpx;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
.confirm-list {
|
||||
padding: 10rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
.confirm-item {
|
||||
line-height: 40rpx;
|
||||
padding: 20rpx 0;
|
||||
.confirm-item-label {
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
.confirm-item-text {
|
||||
color: #666666;
|
||||
background-color: #f6f6f6;
|
||||
padding: 25rpx;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10rpx;
|
||||
text-align: justify;
|
||||
line-height: 44rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.confirm-user {
|
||||
border-top: 2rpx solid #eeeeee;
|
||||
line-height: 110rpx;
|
||||
display: flex;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
color: #041f79;
|
||||
.confirm-user-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
image {
|
||||
width: 32rpx;
|
||||
margin: 40rpx 15rpx 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
440
pages/synthesis/yearOrder.vue
Normal file
440
pages/synthesis/yearOrder.vue
Normal file
@@ -0,0 +1,440 @@
|
||||
<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 == 3}" @click="stateClick('3')">
|
||||
<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.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="listItem-labor">
|
||||
<view class="listItem-labor-time">
|
||||
{{item.created_at}}
|
||||
</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, 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="/static/imgs/Noevaluate.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 } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
yearType : 1, // 1 个人 2 企业
|
||||
yearStatus : 0, // 0 未付款 1 2
|
||||
yearArr : [], // 年费咨询单列表
|
||||
orderId : '', // 订单 ID
|
||||
orderType : '', // 订单类型
|
||||
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
|
||||
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}})
|
||||
}
|
||||
},
|
||||
fail: sheetFail => {
|
||||
uni.showToast({
|
||||
title: '取消支付',
|
||||
icon : 'none'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 上传凭证
|
||||
clickOpen() {
|
||||
this.voucherState = false
|
||||
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType}})
|
||||
},
|
||||
|
||||
// 去签约
|
||||
esignClick(id,type) {
|
||||
esignUrl({
|
||||
order_id : id,
|
||||
order_type: type,
|
||||
// redirect_url: "https://web.douhuofalv.com/synthesis/yearOrder",
|
||||
redirect_url: "https://web.douhuotest.douhuofalv.com/synthesis/yearOrder",
|
||||
channel : 'h5',
|
||||
app_scheme : ''
|
||||
}).then(res => {
|
||||
window.location.href= res.sign_url
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
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>
|
||||
436
pages/synthesis/海报保存.vue
Normal file
436
pages/synthesis/海报保存.vue
Normal file
@@ -0,0 +1,436 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view id="poster">
|
||||
<view class="top">
|
||||
<view class="top-cont">
|
||||
<image class="top-cont-img" src="https://cdn.douhuofalv.com/images/2023/04/20/00d2121139a3ff56077a82ae6677e052.png" mode="widthFix"></image>
|
||||
<view class="top-cont-name">法律咨询服务包</view>
|
||||
</view>
|
||||
<image class="top-img" src="https://cdn.douhuofalv.com/images/2023/04/20/2ea5fc20ffc90e7feec7ba2650b81c99.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<!-- <image class="backImg" src="https://cdn.douhuofalv.com/images/2023/04/20/7d3fc55a3e41ea916f770bb1be3864af.png" mode="widthFix"></image> -->
|
||||
<view class="confirm">
|
||||
<view class="confirm-white">
|
||||
<view class="confirm-top">订单号 {{seekData.order_no}}</view>
|
||||
<view class="confirm-list">
|
||||
<view class="confirm-item" v-for="(item, index) in seekData.params">
|
||||
<view class="confirm-item-label">{{item.title}}</view>
|
||||
<view class="confirm-item-text"><text v-if="item.key == 'price'">¥</text> {{item.value_text}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="confirm-user">
|
||||
<view class="confirm-user-text"><image src="https://cdn.douhuofalv.com/images/2023/04/20/c359f2fa277e6658157c7108f37d0d44.png" mode="widthFix"></image> 业务联系人</view>
|
||||
<view class="confirm-user-name">{{parent.nickname}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="idcardBtn">
|
||||
<!-- <view class="idcardBtn-go active">立即咨询</view> -->
|
||||
<!-- <view class="idcardBtn-go" @click="shareClick">保存图片</view> -->
|
||||
<view class="idcardBtn-go" @click="toImg">保存图片</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 打卡海报 -->
|
||||
<view class="postertBack" v-if="isImgLay"></view>
|
||||
<view class="postert" v-if="isImgLay">
|
||||
<view class="poster-Cont">
|
||||
<image class="poster-Cont-img" :src="base64" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="sign-btn">
|
||||
<view class="remove-btn">长按图片保存</view>
|
||||
<view class="sign-img-block">
|
||||
<button class="sign-img-btn" size="mini" @click="isImgLay = false">取消</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 海报canvas -->
|
||||
<vue-canvas-poster :widthPixels="1000" :painting="paintings" @success="saveSuccess" @fail="saveFail"></vue-canvas-poster>
|
||||
|
||||
<!-- <image :src="base64" mode=""></image> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { VueCanvasPoster } from 'vue-canvas-poster'
|
||||
import { seekOrderSee } from '@/apis/interfaces/synthesis'
|
||||
import html2canvas from 'html2canvas';
|
||||
export default {
|
||||
components: {
|
||||
VueCanvasPoster
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
seekData : '', // 咨询详情数据
|
||||
parent : '', // 联系人
|
||||
base64 : '',
|
||||
isImgLay : false,
|
||||
paintings : {
|
||||
width: "375px",
|
||||
height: "553px",
|
||||
borderRadius: "10px",
|
||||
background: "#111e4b",
|
||||
views: [
|
||||
//海报背景
|
||||
{
|
||||
type: "image",
|
||||
url: "",
|
||||
css: {
|
||||
top: "0",
|
||||
left: "0",
|
||||
width: "375px",
|
||||
height: "553px",
|
||||
mode: 'aspectFill'
|
||||
},
|
||||
},
|
||||
|
||||
//订单号
|
||||
{
|
||||
type: "text",
|
||||
text: '',
|
||||
css: {
|
||||
top: "172px",
|
||||
left: "40px",
|
||||
width: "375px",
|
||||
fontWeight: "600",
|
||||
fontSize: "16px",
|
||||
color: "#000000"
|
||||
},
|
||||
},
|
||||
|
||||
// 文本一
|
||||
{
|
||||
type: "text",
|
||||
text: '',
|
||||
css: {
|
||||
top: "220px",
|
||||
left: "40px",
|
||||
width: "375px",
|
||||
fontSize: "16px",
|
||||
color: "#000000"
|
||||
},
|
||||
},
|
||||
|
||||
// 文本二
|
||||
{
|
||||
type: "text",
|
||||
text: '',
|
||||
css: {
|
||||
top: "255px",
|
||||
left: "40px",
|
||||
width: "375px",
|
||||
fontSize: "16px",
|
||||
color: "#000000"
|
||||
},
|
||||
},
|
||||
|
||||
// 文本二
|
||||
{
|
||||
type: "text",
|
||||
text: '',
|
||||
css: {
|
||||
top: "290px",
|
||||
left: "40px",
|
||||
width: "375px",
|
||||
fontSize: "16px",
|
||||
color: "#000000"
|
||||
},
|
||||
},
|
||||
|
||||
// 文本二
|
||||
{
|
||||
type: "text",
|
||||
text: '',
|
||||
css: {
|
||||
top: "325px",
|
||||
left: "40px",
|
||||
width: "375px",
|
||||
fontSize: "16px",
|
||||
color: "#000000"
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
posterImg: "", //生成的海报图片路径
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
|
||||
// 获取综法咨询-咨询详情
|
||||
this.getBusiness();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 综法咨询-咨询详情
|
||||
getBusiness(){
|
||||
// this.$Route.query.synthesisId
|
||||
seekOrderSee(1).then(res => {
|
||||
// console.log(res)
|
||||
this.seekData = res
|
||||
this.parent = res.user.parent
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
toImg() {
|
||||
html2canvas(document.querySelector("#poster"), {
|
||||
allowTaint: true,
|
||||
backgroundColor: "white",
|
||||
useCORS: true, //支持图片跨域
|
||||
scale: 1,
|
||||
}).then((canvas) => {
|
||||
this.isImgLay = true
|
||||
this.base64 = canvas.toDataURL('image/png')
|
||||
});
|
||||
},
|
||||
|
||||
// 保存图片
|
||||
shareClick() {
|
||||
this.paintings.views[0].url = "/static/imgs/shareBack.jpg"
|
||||
this.paintings.views[1].text = "订单号:" + this.seekData.order_no
|
||||
this.paintings.views[2].text = this.seekData.params[0].title + ':' + this.seekData.params[0].value_text
|
||||
this.paintings.views[3].text = this.seekData.params[1].title + ':' + this.seekData.params[1].value_text
|
||||
this.paintings.views[4].text = this.seekData.params[2].title + ':' + this.seekData.params[2].value_text
|
||||
this.paintings.views[5].text = this.seekData.params[3].title + ':' + this.seekData.params[3].value_text
|
||||
this.isImgLay = true
|
||||
},
|
||||
saveSuccess(src) {
|
||||
// console.log(src)
|
||||
this.posterImg = src;
|
||||
},
|
||||
saveFail(err) {
|
||||
console.log('-----------')
|
||||
console.log(err)
|
||||
console.log('-----------')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-image: linear-gradient(to bottom,#041f79, #111e4b);
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.top {
|
||||
position: relative;
|
||||
height: 320rpx;
|
||||
z-index: 4;
|
||||
.top-img {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 35%;
|
||||
}
|
||||
.top-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding: 80rpx 30rpx 0;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.top-cont-name {
|
||||
font-weight: 600;
|
||||
font-size: 74rpx;
|
||||
background-image: linear-gradient(to right,#f1c694, #fffbf6 70%);
|
||||
-webkit-background-clip:text;
|
||||
-webkit-text-fill-color:transparent;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.top-cont-img {
|
||||
width: 30%;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backImg {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.confirm {
|
||||
padding: 0 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
.confirm-white {
|
||||
border-radius: 15rpx;
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 80rpx);
|
||||
height: 60rpx;
|
||||
background-color: rgba(255, 255, 255, .3);
|
||||
bottom: -30rpx;
|
||||
left: 40rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: calc(100% - 160rpx);
|
||||
height: 120rpx;
|
||||
background-color: rgba(255, 255, 255, .1);
|
||||
bottom: -60rpx;
|
||||
left: 80rpx;
|
||||
border-radius: 0 0 15rpx 15rpx;
|
||||
}
|
||||
.confirm-top {
|
||||
background-color: #f7faff;
|
||||
border-radius: 15rpx 15rpx 0 0;
|
||||
line-height: 110rpx;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
.confirm-list {
|
||||
padding: 10rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
.confirm-item {
|
||||
display: flex;
|
||||
line-height: 40rpx;
|
||||
padding: 20rpx 0;
|
||||
.confirm-item-label {
|
||||
flex: 1;
|
||||
width: 200rpx;
|
||||
}
|
||||
.confirm-item-text {
|
||||
text-align: right;
|
||||
width: calc(100% - 200rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
.confirm-user {
|
||||
border-top: 2rpx solid #eeeeee;
|
||||
line-height: 110rpx;
|
||||
display: flex;
|
||||
padding: 0 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 600;
|
||||
font-size: 34rpx;
|
||||
color: #041f79;
|
||||
.confirm-user-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
image {
|
||||
width: 32rpx;
|
||||
margin: 40rpx 15rpx 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 按钮
|
||||
.idcardBtn {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
margin-top: 120rpx;
|
||||
padding-bottom: 100rpx;
|
||||
.idcardBtn-go {
|
||||
flex: 2;
|
||||
margin: 0 15rpx;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.postertBack {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
background-color: rgba(0,0,0,.6);
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9990;
|
||||
}
|
||||
.postert {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 9999;
|
||||
.poster-Cont {
|
||||
background-color: #111e4b;
|
||||
width: 80vw;
|
||||
height: 55vh;
|
||||
top: 20vh;
|
||||
left: 10vw;
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.poster-Cont-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.poster-Cont-code {
|
||||
position: absolute;
|
||||
bottom: 250px;
|
||||
left: 46px;
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sign-btn {
|
||||
position: absolute;
|
||||
top: 78vh;
|
||||
width: 80%;
|
||||
left: 10%;
|
||||
z-index: 9999;
|
||||
.remove-btn {
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
background-color: #bf9960;
|
||||
color: #FFFFFF;
|
||||
border-radius: $radius-m;
|
||||
margin-top: $margin - 10;
|
||||
text-align: center;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.sign-img-block {
|
||||
display: flex;
|
||||
margin: 30rpx -10rpx 0;
|
||||
.sign-img-btn {
|
||||
flex: 2;
|
||||
line-height: 90rpx;
|
||||
background-color: #ffeeda;
|
||||
border-radius: $radius-m;
|
||||
text-align: center;
|
||||
font-size: $title-size;
|
||||
margin: 0 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
54
pages/user/appDown.vue
Normal file
54
pages/user/appDown.vue
Normal file
@@ -0,0 +1,54 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<image class="appDown-img" src="https://cdn.douhuofalv.com/images/2022/12/16/de62e7029d9297d3d053bf4de45566a7.png" mode="widthFix"></image>
|
||||
<view class="appDown-btn">
|
||||
<view class="appDown-btn-go">下载抖火APP</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
|
||||
onShow() {},
|
||||
|
||||
methods:{
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #fed2da;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.appDown-img {
|
||||
width: 100vw;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.appDown-btn {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 10%;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
text-align: center;
|
||||
height: 100rpx;
|
||||
.appDown-btn-go {
|
||||
background-image: linear-gradient(to bottom, #f69341, #d72158);
|
||||
border-radius: $radius;
|
||||
color: #fff;
|
||||
width: 65%;
|
||||
margin: 0 auto;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
156
pages/user/contract.vue
Normal file
156
pages/user/contract.vue
Normal file
@@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- 合同信息 -->
|
||||
<view class="block">
|
||||
<view class="block-flex">
|
||||
<label>合同ID</label>
|
||||
<view class="block-val">{{id}}</view>
|
||||
</view>
|
||||
<view class="block-flex">
|
||||
<label>合同数量</label>
|
||||
<view class="nowrap block-val">{{files.length}}</view>
|
||||
</view>
|
||||
<view class="block-flex">
|
||||
<label>附件数量</label>
|
||||
<view class="nowrap block-val">{{attachments.length}}</view>
|
||||
</view>
|
||||
<view class="block-flex">
|
||||
<label>创建时间</label>
|
||||
<view class="nowrap block-val">{{created_at || '-'}}</view>
|
||||
</view>
|
||||
<view class="block-flex">
|
||||
<label>更新时间</label>
|
||||
<view class="nowrap block-val">{{updated_at || '-'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 合同文件 -->
|
||||
<view class="files-title">合同文件列表</view>
|
||||
<view class="files">
|
||||
<view class="files-flex" v-for="(item, index) in files" :key="index" @click="onPdf(item.fileName, item.downloadUrl)">
|
||||
<view class="files-flex-title">{{item.fileName}}</view>
|
||||
<view class="files-flex-id">{{item.fileId}}</view>
|
||||
<image src="@/static/imgs/payArrow.png" class="files-flex-icon" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 附件文件 -->
|
||||
<view class="files-title">附件文件列表</view>
|
||||
<view class="files">
|
||||
<view class="files-flex" v-for="(item, index) in attachments" :key="index" @click="onPdf(item.fileName, item.downloadUrl)">
|
||||
<view class="files-flex-title">{{item.fileName}}</view>
|
||||
<view class="files-flex-id">{{item.fileId}}</view>
|
||||
<image src="@/static/imgs/payArrow.png" class="files-flex-icon" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import { getFlows } from '@/apis/interfaces/user.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
user : { name: '', mobile: '' },
|
||||
id : '',
|
||||
created_at : '',
|
||||
updated_at : '',
|
||||
files : [],
|
||||
attachments : [],
|
||||
urlGo : ''
|
||||
};
|
||||
},
|
||||
onLoad() {},
|
||||
created() {
|
||||
// 获取合同数据
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
getFlows(this.$Route.query.id).then(res => {
|
||||
const { sign_flow_id, files, attachments, created_at, updated_at, user } = res
|
||||
this.user = user
|
||||
this.id = sign_flow_id
|
||||
this.created_at = created_at
|
||||
this.updated_at = updated_at
|
||||
this.files = files
|
||||
this.attachments = attachments
|
||||
uni.hideLoading()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onPdf(name, url){
|
||||
uni.downloadFile({
|
||||
url: url,
|
||||
success: res => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/filePreview?url=' + encodeURIComponent(res.tempFilePath)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/filePreview?url=' + encodeURIComponent(url)
|
||||
// })
|
||||
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/filePreview?url=' + encodeURIComponent(url)
|
||||
// })
|
||||
// this.$Router.push({
|
||||
// url: "/pages/filePreview",
|
||||
// params: {
|
||||
// url: url
|
||||
// },
|
||||
// })
|
||||
// this.$Router.push({name: 'FilePreview', params: {url: url}})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.content {
|
||||
background-color: #f7f9fa;
|
||||
overflow-y: scroll;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
// 合同信息统计
|
||||
.block {
|
||||
background: white;
|
||||
margin-bottom: 30rpx;
|
||||
margin-top: 20rpx;
|
||||
padding: 30rpx;
|
||||
border-radius: $radius;
|
||||
&-flex{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 30rpx;
|
||||
line-height: 60rpx;
|
||||
label{ color: gray; }
|
||||
.block-val{ width: calc(100% - 200rpx); text-align: right; word-break:break-all; word-wrap: break-word; }
|
||||
}
|
||||
}
|
||||
|
||||
// 合同列表
|
||||
.files{
|
||||
background: white;
|
||||
margin-bottom: 30rpx;
|
||||
padding: 30rpx;
|
||||
border-radius: $radius;
|
||||
&-flex{
|
||||
position: relative;
|
||||
padding-right: 40rpx;
|
||||
.files-flex-title{ font-weight: bold; font-size: 32rpx; }
|
||||
.files-flex-id{ font-size: 28rpx; color: gray; }
|
||||
.files-flex-icon{ position: absolute; right: 0; top: 50%; margin-top: -14rpx; width: 16rpx;}
|
||||
}
|
||||
}
|
||||
.files-title{ padding-bottom: 20rpx; color: gray; font-size: 28rpx; }
|
||||
</style>
|
||||
237
pages/user/coupon.vue
Normal file
237
pages/user/coupon.vue
Normal file
@@ -0,0 +1,237 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="tab">
|
||||
<view class="tab-item" :class="{active : status == 'init'}" @click="tabClick('init')">
|
||||
未使用
|
||||
</view>
|
||||
<view class="tab-item" :class="{active : status == 'used'}" @click="tabClick('used')">
|
||||
已使用
|
||||
</view>
|
||||
<view class="tab-item" :class="{active : status == 'overdue'}" @click="tabClick('overdue')">
|
||||
已过期
|
||||
</view>
|
||||
</view>
|
||||
<view class="list" v-if="listsArr.length > 0">
|
||||
<view class="list-item" :class="{active : status != 'init'}" v-for="(item, index) in listsArr" :key="index">
|
||||
<view class="list-number" :class="{active : status != 'init'}">
|
||||
{{item.price}}<text>元</text>
|
||||
</view>
|
||||
<view class="list-text">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="list-btn">
|
||||
<image v-if="status == 'init'" class="list-img" src="@/static/imgs/couponImg.png" mode="heightFix"></image>
|
||||
<view class="list-see">
|
||||
<view class="list-go" :class="{active : status != 'init'}">
|
||||
<text @click="$Router.push({name: 'indexIntroduce'})" v-if="status == 'init'">去使用</text>
|
||||
<text v-else-if="status == 'used'">已使用</text>
|
||||
<text v-else>已过期</text>
|
||||
</view>
|
||||
<view class="list-time" :class="{active : status != 'init'}">
|
||||
<block v-if="status == 'overdue'">已过期</block>
|
||||
<block v-else>{{item.time.end_at}} 过期</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="list-item active">
|
||||
<view class="list-number active">
|
||||
9.9<text>元</text>
|
||||
</view>
|
||||
<view class="list-text active">
|
||||
抵扣券
|
||||
</view>
|
||||
<view class="list-btn">
|
||||
<view class="list-see">
|
||||
<view class="list-go active">
|
||||
已使用
|
||||
</view>
|
||||
<view class="list-time active">
|
||||
2022-11-10过期
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无优惠券</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { coupons } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
status : 'init', // tab状态 init 未使用 used 已使用 overdue 已过期
|
||||
listsArr: [], // 列表
|
||||
};
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.couponsInfo();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 基础信息
|
||||
couponsInfo() {
|
||||
coupons({
|
||||
type : 2,
|
||||
status : this.status
|
||||
}).then(res => {
|
||||
this.listsArr = res.lists
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// tab选择
|
||||
tabClick(e) {
|
||||
this.status = e
|
||||
// 获取基础信息
|
||||
this.couponsInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #f7f9fa;
|
||||
// height: calc(100vh - 44px);
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.tab {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 44px;
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
z-index: 99;
|
||||
display: flex;
|
||||
background-color: #ffffff;
|
||||
.tab-item {
|
||||
flex: 2;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
font-size: $title-size-lg;
|
||||
color: #80818e;
|
||||
position: relative;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: calc(50% - 20rpx);
|
||||
bottom: 0;
|
||||
background-color: transparent;
|
||||
width: 40rpx;
|
||||
height: 6rpx;
|
||||
}
|
||||
&.active {
|
||||
color: #0e1a2f;
|
||||
}
|
||||
&.active::after {
|
||||
background-color: #0e1a2f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
margin-top: 90rpx;
|
||||
.list-item {
|
||||
box-sizing: border-box;
|
||||
background-color: #ff4835;
|
||||
color: #ffffff;
|
||||
border-radius: $radius;
|
||||
margin-bottom: $margin;
|
||||
display: flex;
|
||||
height: 180rpx;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
&.active {
|
||||
background-color: #fceff1;
|
||||
color: #eb4e3d;
|
||||
}
|
||||
.list-number {
|
||||
font-size: $title-size + 20;
|
||||
width: 200rpx;
|
||||
line-height: 180rpx;
|
||||
text-align: center;
|
||||
border-right: 2rpx dashed #f09789;
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
&.active {
|
||||
border-color: #f3b0a8;
|
||||
}
|
||||
}
|
||||
.list-text {
|
||||
line-height: 180rpx;
|
||||
font-weight: 600;
|
||||
width: calc(100% - 440rpx);
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
&.active {
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
.list-btn {
|
||||
text-align: center;
|
||||
width: 320rpx;
|
||||
height: 180rpx;
|
||||
position: relative;
|
||||
.list-img {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 180rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.list-see {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 2;
|
||||
padding-left: $padding;
|
||||
box-sizing: border-box;
|
||||
.list-go {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
color: #ff4835;
|
||||
display: inline-block;
|
||||
font-size: $title-size-m;
|
||||
font-weight: 600;
|
||||
line-height: 58rpx;
|
||||
padding: 0 $padding;
|
||||
margin: $margin + 10 0 15rpx;
|
||||
border: 2rpx solid #e54d37;
|
||||
&.active {
|
||||
border-color: #c9c9c9;
|
||||
color: #c9c9c9;
|
||||
}
|
||||
}
|
||||
.list-time {
|
||||
color: #f4c745;
|
||||
font-size: $title-size-sm;
|
||||
&.active {
|
||||
color: #aca9aa;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
506
pages/user/index.vue
Normal file
506
pages/user/index.vue
Normal file
@@ -0,0 +1,506 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- 临时 style="padding-top: 22%;" -->
|
||||
<view class="userTop" :class="{active : !userLogin}">
|
||||
<img class="userTop-back" src="@/static/imgs/userTop.png">
|
||||
<view class="userTop-cont">
|
||||
<view class="userTop-height" v-if="userLogin">
|
||||
<view class="userTop-head">
|
||||
<image :src="userData.avatar ? userData.avatar : '/static/imgs/default_myHead.png'" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="userTop-text">
|
||||
<view class="userTop-name">
|
||||
{{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>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="userTop-height" v-else @click="$Router.push({name: 'Login'})">
|
||||
<view class="userTop-head">
|
||||
<image src="@/static/imgs/default_myHead.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="userTop-text">
|
||||
<view class="userTop-login">
|
||||
请先登录
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 临时 style="display: none;" -->
|
||||
<view class="userTop-see" v-if="userLogin">
|
||||
<view class="userTop-label" @click="$Router.push({name: 'sheetIndex'})">
|
||||
<view class="userSee-name">
|
||||
金法咨询单
|
||||
</view>
|
||||
<view class="userSee-number" v-if="userData.business_orders_count">
|
||||
{{ userData.business_orders_count.all}}<text>单</text>
|
||||
</view>
|
||||
<view class="userSee-tips">
|
||||
精选专业法规大全
|
||||
</view>
|
||||
<block v-if="userData.business_orders_count">
|
||||
<view class="userSee-new" v-if="userData.business_orders_count.all">
|
||||
新订单
|
||||
</view>
|
||||
</block>
|
||||
<img class="userSee-icon" src="@/static/imgs/userIcon_01.png">
|
||||
</view>
|
||||
|
||||
<!-- @click="$Router.push({name: 'synthesisOrder'})" -->
|
||||
<view class="userTop-label" @click="$Router.push({name: 'synthesisOrder'})">
|
||||
<view class="userSee-name">
|
||||
综法咨询单
|
||||
</view>
|
||||
|
||||
<!-- v-if="userData.business_orders_count" -->
|
||||
<view class="userSee-number" v-if="userData.business_orders_count">
|
||||
{{synthesisAll}}<text>单</text>
|
||||
</view>
|
||||
<view class="userSee-tips">
|
||||
支持精准匹配索引
|
||||
</view>
|
||||
<img class="userSee-icon" src="@/static/imgs/userIcon_02.png">
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 临时 style="display: none;" -->
|
||||
<view class="board" v-if="userLogin">
|
||||
<view class="board-title">
|
||||
数据看板
|
||||
</view>
|
||||
<view class="board-item" v-if="userData.business_orders_count">
|
||||
<view class="board-lable" :class="{active : userData.business_orders_count.confirm_count}" @click="$Router.push({name: 'OrderModify'})">
|
||||
<img class="board-icon" src="@/static/imgs/userBoard_01.png">
|
||||
<view class="board-name">待确认方案</view>
|
||||
<view class="board-number">{{userData.business_orders_count.confirm_count}}</view>
|
||||
</view>
|
||||
<view class="board-lable" :class="{active : userData.business_orders_count.modify_count}" @click="$Router.push({name: 'OrderAffirm'})">
|
||||
<img class="board-icon" src="@/static/imgs/userBoard_02.png">
|
||||
<view class="board-name active">修改订单资料</view>
|
||||
<view class="board-number active">{{userData.business_orders_count.modify_count}}</view>
|
||||
</view>
|
||||
<view class="board-lable" :class="{active : userData.business_orders_count.diff_count}" @click="$Router.push({name: 'OrderMake'})">
|
||||
<img class="board-icon" src="@/static/imgs/userBoard_03.png">
|
||||
<view class="board-name">补交服务费</view>
|
||||
<view class="board-number">{{userData.business_orders_count.diff_count}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tool">
|
||||
<view class="tool-title">
|
||||
其他工具
|
||||
</view>
|
||||
<view class="tool-item">
|
||||
<view class="tool-lable" @click="$Router.push({name: 'indexCollect'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_01.png">
|
||||
<view class="tool-name">我的收藏</view>
|
||||
</view>
|
||||
<!-- style="display: none;" -->
|
||||
<view class="tool-lable" @click="$Router.push({name: 'Manage'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_03.png">
|
||||
<view class="tool-name">信息管理</view>
|
||||
</view>
|
||||
<view class="tool-lable" @click="$Router.push({name: 'Coupon'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_02.png">
|
||||
<view class="tool-name">优惠券</view>
|
||||
</view>
|
||||
<view class="tool-lable" @click="$Router.push({name: 'Setup'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_04.png">
|
||||
<view class="tool-name">其他功能</view>
|
||||
</view>
|
||||
<!-- <view class="tool-lable" @click="$Router.push({name: 'Modify'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_03.png">
|
||||
<view class="tool-name">修改密码</view>
|
||||
</view>
|
||||
<view class="tool-lable" @click="$Router.push({name: 'Modify'})">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_05.png">
|
||||
<view class="tool-name">基本信息</view>
|
||||
</view>
|
||||
<view class="tool-lable" @click="outLogin" v-if="userLogin">
|
||||
<img class="tool-icon" src="@/static/imgs/userTool_04.png">
|
||||
<view class="tool-name">退出登录</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="tool" v-if="listArr.length > 0">
|
||||
<view class="tool-title">
|
||||
常识推荐
|
||||
</view>
|
||||
<view class="list-item" >
|
||||
<view class="list-item-label" v-for="(item, index) in listArr" :key="index" @click="$Router.push({name: 'indexDetails', params: {id: item.article_id}})" v-if="index<4">
|
||||
<view class="list-item-img">
|
||||
<!-- 5:6 -->
|
||||
<image :src="item.cover" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="list-item-cont">
|
||||
<view class="nowrap list-item-name">
|
||||
{{item.title}}
|
||||
</view>
|
||||
<view class="list-item-see">
|
||||
<image class="list-item-icon" src="@/static/imgs/indexSee.png"></image>{{item .clicks}} 游览
|
||||
</view>
|
||||
<view class="list-item-tips" v-for="(items, itemsIndex) in item.categories" :key="itemsIndex">
|
||||
{{items.title}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { articleList } from '@/apis/interfaces/index'
|
||||
import { userIndex } from '@/apis/interfaces/user'
|
||||
import { synthesisCount } from '@/apis/interfaces/synthesis'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userLogin : '', //登录状态
|
||||
userData : {}, //用户数据
|
||||
synthesisAll : '', // 综法数量
|
||||
listArr : [], // 文章列表
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
};
|
||||
},
|
||||
|
||||
onShow() {
|
||||
if(this.$store.getters.getToken) {
|
||||
this.userLogin = true
|
||||
|
||||
// 获取用户信息
|
||||
this.userInfo();
|
||||
|
||||
// 获取综法订单数据数量
|
||||
this.synthesisInfo();
|
||||
}
|
||||
|
||||
// 获取文章列表
|
||||
this.articleItem();
|
||||
},
|
||||
|
||||
methods:{
|
||||
// 用户信息
|
||||
userInfo() {
|
||||
userIndex().then(res => {
|
||||
this.userData = res
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 综法订单数据数量
|
||||
synthesisInfo() {
|
||||
synthesisCount({channel: 'self'}).then(res => {
|
||||
this.synthesisAll = res.all
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 文章列表
|
||||
articleItem(page) {
|
||||
articleList({
|
||||
category_id: 1,
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let list = this.listArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) list = []
|
||||
newData = list.concat(res.data)
|
||||
this.listArr = newData
|
||||
this.page = res.page
|
||||
this.lodingStats = false
|
||||
uni.stopPullDownRefresh()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.userTop {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
padding-top: 50%;
|
||||
&.active {
|
||||
padding-top: 22%;
|
||||
}
|
||||
.userTop-back,
|
||||
.userTop-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.userTop-cont {
|
||||
z-index: 2;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.userTop-height {
|
||||
height: 110rpx;
|
||||
.userTop-head {
|
||||
width: 110rpx;
|
||||
height: 110rpx;
|
||||
float: left;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
background-color: #fdeff0;
|
||||
padding: 10rpx;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
.userTop-text {
|
||||
width: calc(100% - 150rpx);
|
||||
float: left;
|
||||
margin-left: 30rpx;
|
||||
padding-top: $padding - 20;
|
||||
box-sizing: border-box;
|
||||
.userTop-login {
|
||||
line-height: 90rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
.userTop-name {
|
||||
display: flex;
|
||||
font-weight: 600;
|
||||
margin-bottom: 8rpx;
|
||||
.userTop-icon {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
margin: 3rpx 0 0 10rpx;
|
||||
}
|
||||
}
|
||||
.userTop-identity-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
background-color: #fbe0e2;
|
||||
border-radius: $radius-m;
|
||||
padding: 0 10rpx;
|
||||
line-height: 34rpx;
|
||||
color: $mian-color;
|
||||
.userTop-arrow {
|
||||
width: 26rpx;
|
||||
height: 26rpx;
|
||||
vertical-align: -6rpx;
|
||||
margin-left: 4rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.userTop-see {
|
||||
margin: $margin -15rpx;
|
||||
display: flex;
|
||||
.userTop-label {
|
||||
flex: 2;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-lg;
|
||||
margin: 0 15rpx;
|
||||
padding: $padding - 10 $padding - 10 $padding - 5;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
.userSee-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
background-color: #fff6ea;
|
||||
color: $yellow-color;
|
||||
display: inline-block;
|
||||
padding: 0 15rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: $radius-m - 4;
|
||||
}
|
||||
.userSee-number {
|
||||
margin: 10rpx 0;
|
||||
font-weight: 600;
|
||||
text {
|
||||
font-weight: normal;
|
||||
font-size: $title-size-sm - 4;
|
||||
padding-left: 5rpx;
|
||||
}
|
||||
}
|
||||
&:last-child .userSee-tips {
|
||||
background-color: #fff2f2;
|
||||
color: $mian-color;
|
||||
}
|
||||
.userSee-icon {
|
||||
width: 130rpx;
|
||||
height: 130rpx;
|
||||
position: absolute;
|
||||
right: -20rpx;
|
||||
bottom: -10rpx;
|
||||
}
|
||||
.userSee-new {
|
||||
position: absolute;
|
||||
top: -2rpx;
|
||||
right: 20rpx;
|
||||
font-size: $title-size-sm - 4;
|
||||
transform: scale(.9);
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
padding: 0 10rpx;
|
||||
line-height: 36rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 看板
|
||||
.board {
|
||||
padding: $padding $padding $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.board-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.board-item {
|
||||
display: flex;
|
||||
margin: 0 -15rpx;
|
||||
.board-lable {
|
||||
width: calc(33.33% - 30rpx);
|
||||
box-shadow: 0 0 8rpx rgba(0, 0, 0, .05);
|
||||
padding: $padding - 10 $padding - 5 $padding + 10;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
border-radius: $radius-sm;
|
||||
position: relative;
|
||||
color: #969696;
|
||||
margin: 0 15rpx;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
right: 15rpx;
|
||||
top: 15rpx;
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
}
|
||||
&.active::after {
|
||||
background-color: $mian-color;
|
||||
}
|
||||
.board-name {
|
||||
margin-bottom: 20rpx;
|
||||
font-size: $title-size-sm;
|
||||
&.active {
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
.board-number {
|
||||
font-weight: 600;
|
||||
color: #000000;
|
||||
font-size: $title-size + 4;
|
||||
&.active {
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
.board-icon {
|
||||
width: 74rpx;
|
||||
height: 74rpx;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 工具
|
||||
.tool {
|
||||
padding: $padding $padding $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.tool-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 20rpx;
|
||||
color: $text-color;
|
||||
}
|
||||
.tool-item {
|
||||
padding: $padding 0;
|
||||
border-radius: $radius-sm;
|
||||
display: flex;
|
||||
.tool-lable {
|
||||
flex: 4;
|
||||
text-align: center;
|
||||
font-size: 24rpx;
|
||||
.tool-icon {
|
||||
width: 56rpx;
|
||||
height: 56rpx;
|
||||
margin-bottom: 5rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 常识推荐
|
||||
.list-item {
|
||||
margin-top: $margin;
|
||||
.list-item-label {
|
||||
margin-bottom: $margin;
|
||||
position: relative;
|
||||
.list-item-img {
|
||||
width: 200rpx;
|
||||
height: 150rpx;
|
||||
border:1px solid #d2d2d2;
|
||||
border-radius: $radius - 10;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
image {
|
||||
width: 100%;
|
||||
vertical-align:middle;
|
||||
}
|
||||
}
|
||||
.list-item-cont {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
padding-left: 220rpx;
|
||||
box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
.list-item-name {
|
||||
color: $text-color;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.list-item-see {
|
||||
font-size: $title-size-sm - 4;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
line-height: 30rpx;
|
||||
.list-item-icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.list-item-tips {
|
||||
font-size: $title-size-sm - 4;
|
||||
display: inline-block;
|
||||
color: #a1a1a1;
|
||||
padding-left: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
33
pages/user/invite.vue
Normal file
33
pages/user/invite.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inviteCode } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
onShow() {
|
||||
// 获取邀请码
|
||||
this.inviteInfo();
|
||||
},
|
||||
methods: {
|
||||
// 邀请码
|
||||
inviteInfo(page) {
|
||||
inviteCode().then(res => {
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
</style>
|
||||
71
pages/user/manage.vue
Normal file
71
pages/user/manage.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="setupItem">
|
||||
<view class="label" @click="$Router.push({name: 'userBase'})">
|
||||
<view class="label-name">
|
||||
<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: 'Ins'})">
|
||||
<view class="label-name">
|
||||
<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>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
},
|
||||
|
||||
onShow() {},
|
||||
|
||||
methods:{}
|
||||
}
|
||||
</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-tips {
|
||||
display: flex;
|
||||
.label-name-arrow {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
margin-top: 18rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
466
pages/user/manageBank.vue
Normal file
466
pages/user/manageBank.vue
Normal file
@@ -0,0 +1,466 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top" :class="{active : type}">
|
||||
<view class="base">
|
||||
<view class="base-tab">
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon//bankIcon_01_active.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
银行信息
|
||||
</view>
|
||||
<view class="base-tab-tips">
|
||||
已完善 √
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-tab-spot">
|
||||
<text></text>
|
||||
<text></text>
|
||||
<text></text>
|
||||
</view>
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon/bankIcon_02_active.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
其他信息
|
||||
</view>
|
||||
<view class="base-tab-tips">
|
||||
已完善 √
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
银行信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block" :class="{baseAline : items.type === 'text' || items.type === 'textarea' }" v-for="(items, itemsIndex) in backParams" :key="itemsIndex">
|
||||
<view class="base-block-name" v-if="items.label == 1">
|
||||
<text>*</text>{{items.title}}
|
||||
</view>
|
||||
|
||||
<!-- 单输入框 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-write" v-if="items.type === 'price' || items.type === 'number' || items.type === 'text' || items.type === 'password' || items.type === 'mobile' || items.type === 'day'">
|
||||
{{items.value || '--'}}
|
||||
<text v-if="items.type === 'price'">元</text>
|
||||
<text v-else-if="items.type === 'day'">天</text>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 日期 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-write" v-if="items.type === 'date'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 城市地址 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-write" v-if="items.type === 'region'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 办卡城市 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-write" v-if="items.type === 'city'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 单选 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="idcardAdd-aline" v-if="items.type === 'radio'">
|
||||
{{items.value_text || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 多选 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="idcardAdd-aline-more" v-if="items.type === 'checkbox'">
|
||||
{{items.value_text || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 描述 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- 下拉框 -->
|
||||
<block v-if="items.label == 1">
|
||||
<view class="base-block-write" v-if="items.type === 'select'">
|
||||
{{items.value_text || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
其他信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block">
|
||||
<block v-for="(items, itemsIndex) in backParams" :key="itemsIndex">
|
||||
<view class="base-block-name" v-if="items.label == 2">
|
||||
<text>*</text>{{items.title}}
|
||||
</view>
|
||||
<!-- 描述 -->
|
||||
<block v-if="items.label == 2">
|
||||
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="introduce-btn" v-if="type">
|
||||
<button class="btn" size="mini" :disabled="disabled" @click="infoSubmit">提交审核</button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { BankSee, BankFirst } from '@/apis/interfaces/user'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldSelect from '@/components/mould_select.vue'
|
||||
import mouldDate from '@/components/mould-date.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldSelect,
|
||||
mouldDate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
disabled : false, // 按钮状态
|
||||
bankData : '', // 基础信息
|
||||
backParams: [], // 字段数组
|
||||
|
||||
values : '',
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
|
||||
type : '',
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
this.type = this.$Route.query.type
|
||||
},
|
||||
methods: {
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
BankSee(this.$Route.query.id).then(res => {
|
||||
this.bankData = res
|
||||
this.backParams = res.params
|
||||
this.values = res.values
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 首次信息
|
||||
infoSubmit() {
|
||||
BankFirst(this.$Route.query.userId, this.$Route.query.id).then(res => {
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: res,
|
||||
icon: "none"
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
uni.hideLoading()
|
||||
}, 1500)
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
&.active {
|
||||
border-bottom: 140rpx solid transparent;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.base-tab {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
padding: 0 $padding 10rpx 10rpx;
|
||||
position: relative;
|
||||
.base-tab-item {
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.base-tab-img {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
.base-tab-cont {
|
||||
padding-top: $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.base-tab-name {
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.base-tab-tips {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid #ffeaea;
|
||||
border-radius: $radius * 4;
|
||||
width: 110rpx;
|
||||
text-align: center;
|
||||
opacity: .8;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.base-tab-spot {
|
||||
text-align: center;
|
||||
width: 180rpx;
|
||||
float: left;
|
||||
margin-top: $margin;
|
||||
text {
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
display: inline-block;
|
||||
margin-left: 15rpx;
|
||||
&:nth-child(1) {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
opacity: .5;
|
||||
}
|
||||
&:nth-child(2) {
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
opacity: .8;
|
||||
}
|
||||
&:nth-child(3) {
|
||||
width: 16rpx;
|
||||
height: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.white {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
margin-bottom: $margin;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 0 -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
// width: calc(50% - 20rpx);
|
||||
width: calc(100% - 20rpx);
|
||||
float: left;
|
||||
position: relative;
|
||||
.base-block-name {
|
||||
margin: $margin + 20 0 $margin - 10;
|
||||
color: #111111;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-m;
|
||||
line-height: 48rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
text {
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: $padding - 10;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
font-size: $title-size-m;
|
||||
color: $mian-color;
|
||||
position: absolute;
|
||||
top: $padding + 20;
|
||||
right: 0;
|
||||
}
|
||||
.idcardAdd-aline-more {
|
||||
color: $mian-color;
|
||||
font-size: $title-size-m;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
z-index: 2000;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
433
pages/user/manageBase.vue
Normal file
433
pages/user/manageBase.vue
Normal file
@@ -0,0 +1,433 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view v-if="baseData != ''">
|
||||
<view class="top" :class="{active : type}">
|
||||
<view class="base">
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>姓名
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.name}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>性别
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.sex}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>年龄
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.age}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>属相
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.zodiak}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证号
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.id_card}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>身份证地址
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>婚姻
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{marriage}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block" v-if="baseData.mate">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>配偶
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.mate}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>学历
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{education}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>毕业学院
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.school}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>联系电话
|
||||
</view>
|
||||
<view class="base-block-write prohibit">
|
||||
{{baseData.mobile}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>联系地址
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.contact_address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>现单位名称
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.now_company_name}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>现单位地址
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.now_company_address}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block baseAline">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>现居住地址
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.now_domicile}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人1姓名
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.one_contact}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人1关系
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.one_contact_relation}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人2姓名
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.two_contact}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人2关系
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.two_contact_relation}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人3姓名
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.three_contact}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人3关系
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.three_contact_relation}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人4姓名
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.four_contact}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-block">
|
||||
<view class="base-block-name">
|
||||
<text>*</text>预留联系人4关系
|
||||
</view>
|
||||
<view class="base-block-textarea">
|
||||
{{baseData.four_contact_relation}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="introduce-btn" v-if="type">
|
||||
<button class="btn" size="mini" :disabled="disabled" @click="infoSubmit">提交审核</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无数据</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { BaseSee, BaseFirst } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
disabled : false, // 按钮状态
|
||||
baseData : '', // 基础信息
|
||||
education : '', // 学历
|
||||
marriage : '', // 婚姻
|
||||
type : '',
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
this.type = this.$Route.query.type
|
||||
},
|
||||
methods: {
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
BaseSee().then(res => {
|
||||
this.baseData = res
|
||||
if(res != ''){
|
||||
this.education = res.educations[res.education]
|
||||
this.marriage = res.marriages[res.marriage]
|
||||
}
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 首次信息
|
||||
infoSubmit() {
|
||||
BaseFirst(this.$Route.query.userId, this.$Route.query.baseId).then(res => {
|
||||
this.disabled = true
|
||||
uni.showToast({
|
||||
title: res,
|
||||
icon: "none"
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
uni.hideLoading()
|
||||
}, 1500)
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
&.active {
|
||||
border-bottom: 140rpx solid transparent;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.white {
|
||||
padding: $padding $padding 0;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 40rpx -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
width: calc(50% - 20rpx);
|
||||
margin: 0 10rpx $margin + 10;
|
||||
float: left;
|
||||
.base-block-name {
|
||||
margin-bottom: $margin - 10;
|
||||
color: #111111;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #999999;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 48rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.introduce-btn {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
z-index: 2000;
|
||||
.btn {
|
||||
background-color: $mian-color;
|
||||
color: #ffffff;
|
||||
border-radius: $radius-sm;
|
||||
width: 100%;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
&[disabled] {
|
||||
background-color: #eba5a5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
142
pages/user/manageIns.vue
Normal file
142
pages/user/manageIns.vue
Normal file
@@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="list" v-if="insArr.length > 0">
|
||||
<view class="label" v-for="(items, index) in insArr" :key="index" @click="$Router.push({name: 'userBank', params: {id: items.user_bank_id}})">
|
||||
<view class="label-top">
|
||||
<image class="label-logo" :src="items.institution.cover ? items.institution.cover : '/static/imgs/default_myBank.png'" mode="aspectFill"></image>
|
||||
<view class="label-name">
|
||||
{{items.institution.title}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="label-number">
|
||||
<block v-if="items.card_no">尾号{{items.card_no.substr(-4)}}</block>
|
||||
<block v-else>网贷信贷协商业务</block>
|
||||
</view>
|
||||
<view class="label-cont">
|
||||
<view class="label-see">
|
||||
<view class="label-see-text">
|
||||
过期天数(天)
|
||||
</view>
|
||||
<view class="label-see-number">
|
||||
{{items.overdue_time ? items.overdue_time : '--'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="label-see">
|
||||
<view class="label-see-text">
|
||||
待还金额(元)
|
||||
</view>
|
||||
<view class="label-see-number label-see-red">
|
||||
¥{{items.price ? items.price : '--'}}
|
||||
</view>
|
||||
<!-- <view class="label-see-write" v-if="items.canDo.bank">
|
||||
需完善
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无数据</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { BankList } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
insArr: [] // 机构列表
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取机构列表
|
||||
this.insInfo();
|
||||
},
|
||||
methods: {
|
||||
// 机构列表
|
||||
insInfo() {
|
||||
BankList().then(res => {
|
||||
this.insArr = res
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
background-color: #f7f9fa;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.label {
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius;
|
||||
margin-bottom: $margin;
|
||||
.label-top {
|
||||
display: flex;
|
||||
line-height: 54rpx;
|
||||
border-bottom: 2rpx solid #F6F6F6;
|
||||
padding: $padding - 10 $padding;
|
||||
box-sizing: border-box;
|
||||
.label-logo {
|
||||
width: 54rpx;
|
||||
height: 54rpx;
|
||||
border-radius: 50%;
|
||||
border: 2rpx solid #ededed;
|
||||
}
|
||||
.label-name {
|
||||
margin-left: 20rpx;
|
||||
color: #858585;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
}
|
||||
.label-number {
|
||||
font-weight: 600;
|
||||
padding: $padding $padding $padding $padding + 64rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.label-cont {
|
||||
padding: 0 $padding $padding $padding + 64rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.label-see {
|
||||
flex: 2;
|
||||
.label-see-text {
|
||||
font-size: $title-size-sm - 2;
|
||||
color: #858585;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.label-see-number {
|
||||
font-size: $title-size + 2;
|
||||
font-weight: 600;
|
||||
&.label-see-red {
|
||||
color: $mian-color;
|
||||
}
|
||||
}
|
||||
.label-see-write {
|
||||
font-size: $title-size-sm - 2;
|
||||
background-color: #ffede3;
|
||||
color: #e39b7f;
|
||||
display: inline-block;
|
||||
border-radius: $radius-m;
|
||||
padding: 0 15rpx;
|
||||
line-height: 42rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
327
pages/user/manageOther.vue
Normal file
327
pages/user/manageOther.vue
Normal file
@@ -0,0 +1,327 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="top">
|
||||
<view class="base">
|
||||
<view class="base-tab">
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon//bankIcon_01.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
银行信息
|
||||
</view>
|
||||
<view class="base-tab-tips" @click="$Router.replace({name: 'userBank'})">
|
||||
去查看 >
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-tab-spot">
|
||||
<text></text>
|
||||
<text></text>
|
||||
<text></text>
|
||||
</view>
|
||||
<view class="base-tab-item">
|
||||
<image class="base-tab-img" src="/static/icon/bankIcon_02_active.png" mode="aspectFill"></image>
|
||||
<view class="base-tab-cont">
|
||||
<view class="base-tab-name">
|
||||
其他信息
|
||||
</view>
|
||||
<view class="base-tab-tips">
|
||||
已完善 √
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="white">
|
||||
<view class="base-title">
|
||||
<view class="base-name">
|
||||
基本信息
|
||||
</view>
|
||||
</view>
|
||||
<view class="base-list">
|
||||
<view class="base-block">
|
||||
<block v-for="(items, itemsIndex) in backParams" :key="itemsIndex">
|
||||
<view class="base-block-name" v-if="items.label == 2">
|
||||
<text>*</text>{{items.title}}
|
||||
</view>
|
||||
<!-- 描述 -->
|
||||
<block v-if="items.label == 2">
|
||||
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
||||
{{items.value || '--'}}
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { userBank, bankPut } from '@/apis/interfaces/user'
|
||||
|
||||
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
||||
import mouldInput from '@/components/mould-input.vue'
|
||||
import mouldRadio from '@/components/mould-radio.vue'
|
||||
import mouldText from '@/components/mould-text.vue'
|
||||
import mouldSelect from '@/components/mould_select.vue'
|
||||
import mouldDate from '@/components/mould-date.vue'
|
||||
export default {
|
||||
components: {
|
||||
mouldCheckbox,
|
||||
mouldInput,
|
||||
mouldRadio,
|
||||
mouldText,
|
||||
mouldSelect,
|
||||
mouldDate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
disabled : false, // 按钮状态
|
||||
bankData : '', // 基础信息
|
||||
backParams: [], // 字段数组
|
||||
|
||||
values : '',
|
||||
|
||||
marriage: [],
|
||||
marriageIndex : 0, // 婚姻选择index
|
||||
|
||||
education: [],
|
||||
educationIndex: 0, // 学历选择index
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取基础信息
|
||||
this.baseInfo();
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 基础信息
|
||||
baseInfo() {
|
||||
userBank(this.$Route.query.id).then(res => {
|
||||
this.bankData = res
|
||||
this.backParams = res.params
|
||||
this.values = res.values
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 提交信息
|
||||
infoSubmit() {
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
background-color: #f5f5f5;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: $mian-color;
|
||||
border-radius: 0 0 $radius*5 $radius*5;
|
||||
width: 100%;
|
||||
height: 260rpx;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.base {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
padding: $padding + 20 $padding;
|
||||
box-sizing: border-box;
|
||||
.base-tab {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
padding: 0 $padding 10rpx 10rpx;
|
||||
position: relative;
|
||||
.base-tab-item {
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.base-tab-img {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
.base-tab-cont {
|
||||
padding-top: $padding - 15;
|
||||
box-sizing: border-box;
|
||||
.base-tab-name {
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.base-tab-tips {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid #ffeaea;
|
||||
border-radius: $radius * 4;
|
||||
width: 110rpx;
|
||||
text-align: center;
|
||||
opacity: .8;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.base-tab-spot {
|
||||
text-align: center;
|
||||
width: 180rpx;
|
||||
float: left;
|
||||
margin-top: $margin;
|
||||
text {
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
display: inline-block;
|
||||
margin-left: 15rpx;
|
||||
&:nth-child(1) {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
opacity: .5;
|
||||
}
|
||||
&:nth-child(2) {
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
opacity: .8;
|
||||
}
|
||||
&:nth-child(3) {
|
||||
width: 16rpx;
|
||||
height: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.white {
|
||||
padding: $padding $padding 0;
|
||||
box-sizing: border-box;
|
||||
background-color: #ffffff;
|
||||
border-radius: $radius-m;
|
||||
overflow: hidden;
|
||||
.base-title {
|
||||
display: flex;
|
||||
line-height: 38rpx;
|
||||
.base-name {
|
||||
flex: 1;
|
||||
color: $mian-color;
|
||||
font-weight: 600;
|
||||
font-size: $title-size + 2;
|
||||
}
|
||||
.base-number {
|
||||
color: #999999;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.base-list {
|
||||
margin: 0 -10rpx 0;
|
||||
overflow: hidden;
|
||||
.base-block {
|
||||
// width: calc(50% - 20rpx);
|
||||
width: calc(100% - 20rpx);
|
||||
margin: 0 10rpx $margin + 10;
|
||||
float: left;
|
||||
position: relative;
|
||||
.base-block-name {
|
||||
margin: $margin + 20 0 $margin - 10;
|
||||
color: #111111;
|
||||
text {
|
||||
color: $mian-color;
|
||||
padding-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.base-block-textarea {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: $padding;
|
||||
font-size: $title-size-lg;
|
||||
color: #111111;
|
||||
}
|
||||
.base-block-write {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: #111111;
|
||||
font-size: $title-size-m;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
&.prohibit {
|
||||
color: #999999;
|
||||
}
|
||||
.idcardAdd-picker {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.base-block-input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.base-block-textarea {
|
||||
padding: $padding 0;
|
||||
}
|
||||
.idcardAdd-input {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
.placeholderClass {
|
||||
color: #999999;
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: $margin;
|
||||
}
|
||||
}
|
||||
.base-block-site {
|
||||
display: flex;
|
||||
margin: 0 -5rpx;
|
||||
.base-site-white {
|
||||
background-color: #F6F6F6;
|
||||
border-radius: $radius-sm;
|
||||
flex: 3;
|
||||
color: #111111;
|
||||
font-size: $title-size-lg;
|
||||
height: 84rpx;
|
||||
line-height: 84rpx;
|
||||
padding: 0 $padding - 10 0 $padding;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
margin: 0 5rpx;
|
||||
width: 100%;
|
||||
.picker {
|
||||
width: calc(100% - 30rpx)
|
||||
}
|
||||
image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
position: absolute;
|
||||
top: $margin;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.idcardAdd-aline {
|
||||
font-size: $title-size-m;
|
||||
color: $mian-color;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
.baseAline {
|
||||
width: calc(100% - 20rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
372
pages/user/orderAffirm.vue
Normal file
372
pages/user/orderAffirm.vue
Normal file
@@ -0,0 +1,372 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<block v-if="modifyList.length > 0">
|
||||
<view class="backTop">
|
||||
<!-- <view class="backTop-search">
|
||||
<image class="search-img" src="/static/icon/searchIcon.png" mode="aspectFill"></image>
|
||||
<input class="search-input" confirm-type="search" placeholder-class= "phsy" placeholder="搜索" />
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="backBottom">
|
||||
<view class="list" v-for="(item, index) in modifyList" :key="index">
|
||||
<view class="item borderBottom">
|
||||
<view class="item-name">
|
||||
<!-- 订单号 -->
|
||||
{{item.order.order_no}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- start 待判断 -->
|
||||
<view class="item" v-if="item.order.service_count">
|
||||
<view class="item-label">
|
||||
业务类型
|
||||
</view>
|
||||
<view class="item-text" @click="typeState(index)">
|
||||
<block v-for="(typeItem, index) in item.order.item_type">
|
||||
<block v-if="typeItem.number > 0">
|
||||
{{typeItem.title}}x{{typeItem.number}}
|
||||
</block>
|
||||
</block>
|
||||
<image class="item-text-arrow" src="@/static/imgs/openArrow_grey.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="baleShow" v-if="item.typeShow">
|
||||
<view class="baleColor">
|
||||
<view class="baleShow-label" v-for="(businessItem, index) in item.order.items">
|
||||
<view class="baleShow-name">
|
||||
{{businessItem.institution.title}}({{businessItem.business_type.title}})
|
||||
</view>
|
||||
<view class="baleShow-number">
|
||||
¥{{businessItem.price}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- end 待判断 -->
|
||||
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
下单日期
|
||||
</view>
|
||||
<view class="item-text">
|
||||
{{item.created_at}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
修改内容
|
||||
</view>
|
||||
<view class="item-text">
|
||||
{{item.item_type_text}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
修改数量
|
||||
</view>
|
||||
<view class="item-text">
|
||||
{{item.count}}处
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-label">
|
||||
修改类型
|
||||
</view>
|
||||
<view class="item-text" v-if="item.item_type_value == 1">
|
||||
{{item.item_type_content}}
|
||||
</view>
|
||||
<view class="item-text" v-else>
|
||||
{{item.item_type_content.institution}}
|
||||
<view class="item-text-tips">
|
||||
{{item.item_type_content.type}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn">
|
||||
<view class="btn-user" @click="callPhone(item.order.manager.username)">
|
||||
<image class="btn-user-head" :src="item.order.manager.avatar ? item.order.manager.avatar : '/static/imgs/default_myHead.png'" mode="aspectFill"></image>
|
||||
<view class="btn-user-cont">
|
||||
<view class="btn-user-name">{{item.order.manager.nickname}}</view>
|
||||
<view class="btn-user-tips">业务咨询</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn-lable">
|
||||
<view class="btn-lable-go" @click="$Router.push({name: 'sheetSpeed', params: {id: item.order.business_order_id}})">
|
||||
去修改
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pagesLoding" v-if="lodingStats">
|
||||
<block v-if="page.has_more">
|
||||
<image class="pagesLodingIcon" src="/static/icons/refresh_loding.gif" mode="widthFix"></image>加载中...
|
||||
</block>
|
||||
<block v-else>
|
||||
没有更多了~
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="pack-center pages-hint" v-else>
|
||||
<image src="/static/imgs/Noevaluate.png"></image>
|
||||
<view>暂无订单</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { myAffirm } from '@/apis/interfaces/user'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
modifyList : [], // 列表
|
||||
page : {}, // 分页信息
|
||||
lodingStats : false, // 加载状态
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// 获取需要修改的订单
|
||||
this.modifyInfo();
|
||||
},
|
||||
methods: {
|
||||
// 需要修改的订单
|
||||
modifyInfo(page) {
|
||||
myAffirm({
|
||||
page : page || 1
|
||||
}).then(res => {
|
||||
let esArr = res
|
||||
esArr.forEach((item, index) => {
|
||||
item.typeShow = false
|
||||
})
|
||||
this.modifyList = esArr
|
||||
}).catch( err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon: "none"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 拨打电话
|
||||
callPhone(e) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: e
|
||||
})
|
||||
},
|
||||
|
||||
// 列表展开
|
||||
typeState(index) {
|
||||
var listData = this.modifyList
|
||||
var helpFlag = this.modifyList[index].typeShow
|
||||
listData.forEach((item) => {
|
||||
item.typeShow = false
|
||||
})
|
||||
listData[index].typeShow = !helpFlag
|
||||
this.modifyList = listData
|
||||
},
|
||||
|
||||
// 页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh() {
|
||||
// 需要修改的订单
|
||||
this.modifyInfo();
|
||||
},
|
||||
|
||||
// 上拉加载
|
||||
onReachBottom(){
|
||||
this.lodingStats = true
|
||||
let pageNumber = this.page.current
|
||||
if(this.page.has_more){
|
||||
pageNumber++
|
||||
// 需要修改的订单
|
||||
this.modifyInfo(pageNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.content{
|
||||
background: #f4f4f4;
|
||||
height: 100vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.backTop {
|
||||
height: 120rpx;
|
||||
background-color: $mian-color;
|
||||
padding: $padding * 2 $padding $padding;
|
||||
border-radius: 0 0 $radius * 2 $radius * 2;
|
||||
box-sizing: border-box;
|
||||
.backTop-search {
|
||||
background-color: #dd447b;
|
||||
line-height: 90rpx;
|
||||
height: 90rpx;
|
||||
border-radius: $radius * 2;
|
||||
padding: 10rpx $padding;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
.search-img {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.search-input {
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
width: calc(100% - 34rpx);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
.phsy {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.backBottom {
|
||||
margin-top: -80rpx;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.list {
|
||||
border-radius: $radius-lg;
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 30rpx;
|
||||
.borderBottom {
|
||||
border-bottom: 2rpx solid #f7f7f7;
|
||||
}
|
||||
.baleShow {
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.baleColor {
|
||||
background-color: #FFF3F7;
|
||||
padding: 10rpx $padding;
|
||||
box-sizing: border-box;
|
||||
border-radius: $radius-m;
|
||||
.baleShow-label {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
line-height: 54rpx;
|
||||
color: #111111;
|
||||
.baleShow-name {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.item {
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
padding-bottom: $padding;
|
||||
display: flex;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 44rpx;
|
||||
.item-name {
|
||||
font-size: $title-size-lg;
|
||||
flex: 1;
|
||||
}
|
||||
.item-label {
|
||||
flex: 1;
|
||||
color: #999999;
|
||||
}
|
||||
.item-quantity {
|
||||
background-color: #FFF5EA;
|
||||
color: #FFA031;
|
||||
font-size: $title-size-sm;
|
||||
padding: 0 20rpx;
|
||||
border-radius: $radius;
|
||||
&.gery {
|
||||
background-color: #f5f5f5;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.item-text {
|
||||
text-align: right;
|
||||
display: flex;
|
||||
.item-text-go {
|
||||
font-size: $title-size-sm - 2;
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
padding: 0 10rpx;
|
||||
border-radius: $radius-m;
|
||||
margin: 3rpx 10rpx 0 0;
|
||||
height: 38rpx;
|
||||
line-height: 38rpx;
|
||||
}
|
||||
text {
|
||||
font-size: $title-size-m;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
.item-text-tips {
|
||||
border: 2rpx solid $mian-color;
|
||||
color: $mian-color;
|
||||
height: 32rpx;
|
||||
line-height: 32rpx;
|
||||
font-size: $title-size-sm - 2;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 15rpx;
|
||||
margin: 6rpx 0 0 15rpx;
|
||||
}
|
||||
}
|
||||
.item-text-arrow {
|
||||
width: 22rpx;
|
||||
margin-left: 10rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
display: flex;
|
||||
padding: $padding $padding - 10;
|
||||
box-sizing: border-box;
|
||||
border-top: 2rpx solid #f7f7f7;
|
||||
.btn-user {
|
||||
flex: 1;
|
||||
line-height: 54rpx;
|
||||
display: flex;
|
||||
.btn-user-head {
|
||||
width: 54rpx;
|
||||
height: 54rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.btn-user-cont {
|
||||
display: flex;
|
||||
font-size: $title-size-sm;
|
||||
.btn-user-name {
|
||||
padding: 0 $padding - 10;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
.btn-user-tips {
|
||||
background-color: #FBE7EE;
|
||||
color: $mian-color;
|
||||
height: 44rpx;
|
||||
line-height: 44rpx;
|
||||
font-size: $title-size-sm - 2;
|
||||
border-radius: $radius * 2;
|
||||
padding: 0 15rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn-lable {
|
||||
font-size: $title-size-sm;
|
||||
display: flex;
|
||||
.btn-lable-go {
|
||||
height: 54rpx;
|
||||
line-height: 54rpx;
|
||||
text-align: center;
|
||||
background-color: #FBAF3B;
|
||||
border: 2rpx solid transparent;
|
||||
color: #ffffff;
|
||||
border-radius: $radius * 2;
|
||||
width: 140rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.reveal-no {
|
||||
padding: 40% 0;
|
||||
}
|
||||
</style>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user