This commit is contained in:
2022-12-30 16:34:13 +08:00
36 changed files with 1109 additions and 199 deletions

View File

@@ -31,8 +31,24 @@ const submitExpresses = (id, data) => {
})
}
// 获取订单邮寄列表
const getExpresses = id => {
return request({
url : 'business/' + id + '/expresses'
})
}
// 查看物流
const getLogistic = id => {
return request({
url : 'business/' + id + '/logistic'
})
}
export {
express,
orderAddress,
submitExpresses
submitExpresses,
getExpresses,
getLogistic
}

View File

@@ -134,6 +134,14 @@ const getSchemes = id => {
})
}
// 退款单列表
const refunds = data => {
return request({
url: 'app/refunds',
data
})
}
// 支付订单
export {
lists,
@@ -151,5 +159,6 @@ export {
ordersEditorders,
orderSign,
getOrderSignStatus,
getSchemes
getSchemes,
refunds
}

View File

@@ -79,6 +79,37 @@ const eSigns = data => {
})
}
// 账户信息 - 基础资料
const userInfoBase = () => {
return request({
url : 'user/base',
})
}
// 账户信息 - 机构列表
const userInfoBanks = () => {
return request({
url : 'user/base/banks',
})
}
// 账户信息 - 机构详情
const userInfoBank = id => {
return request({
url : 'user/base/' + id + '/bank',
})
}
// 获取省市区
const getRegion = id => {
return request({
url : 'region',
data : {
parent_id: id || ''
}
})
}
export {
relations,
code,
@@ -88,5 +119,9 @@ export {
certified,
certification,
identityOcr,
eSigns
eSigns,
userInfoBase,
userInfoBanks,
userInfoBank,
getRegion
}

View File

@@ -2,7 +2,7 @@
"name" : "抖火",
"appid" : "__UNI__C305C03",
"description" : "",
"versionName" : "1.0.4",
"versionName" : "1.0.6",
"versionCode" : "100",
"transformPx" : false,
/* 5+App */
@@ -24,27 +24,29 @@
/* */
"modules" : {
"Barcode" : {},
"Camera" : {}
"Camera" : {},
"Share" : {}
},
/* */
"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\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<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_NETWORK_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.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"schemes" : "doufire"
@@ -55,7 +57,13 @@
},
/* SDK */
"sdkConfigs" : {
"ad" : {}
"ad" : {},
"share" : {
"weixin" : {
"appid" : "wx9ca2a763085ab4b6",
"UniversalLinks" : ""
}
}
},
"icons" : {
"android" : {

0
new_file.json Normal file
View File

View File

@@ -6,34 +6,46 @@
"navigationBarTitleText": "抖火法务咨询服务",
"navigationBarBackgroundColor": "#FFFFFF"
}
},
{
"path": "pages/index/introduces",
"name": "Introduces",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "金法服务包介绍",
"app-plus": {
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
}
},{
"path": "pages/index/free",
"name": "FreeService",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "自由服务包介绍",
"app-plus": {
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
}
},{
}, {
"path": "pages/index/introduces",
"name": "Introduces",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "金法服务包介绍",
"app-plus": {
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
}
}, {
"path": "pages/index/free",
"name": "FreeService",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "自由服务包介绍",
"app-plus": {
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
}
}, {
"path": "pages/index/introduces",
"name": "Introduces",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "介绍",
"app-plus": {
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
}
}, {
"path": "pages/college/index",
"name": "College",
"style": {
@@ -88,7 +100,6 @@
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/richText/richText",
"name": "RichText",
@@ -311,7 +322,17 @@
"navigationBarTitleText": "机构信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#446EFE",
"navigationBarTextStyle": "white"
"navigationBarTextStyle": "white",
"app-plus": {
"titleNView": {
"buttons": [{
"text": "使用账户信息",
"color": "#ffffff",
"fontSize": "30rpx",
"width": "180rpx"
}]
}
}
}
}, {
"path": "pages/work/perfectBasis",
@@ -321,7 +342,17 @@
"navigationBarTitleText": "基础信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#446EFE",
"navigationBarTextStyle": "white"
"navigationBarTextStyle": "white",
"app-plus": {
"titleNView": {
"buttons": [{
"text": "使用账户信息",
"color": "#ffffff",
"fontSize": "30rpx",
"width": "180rpx"
}]
}
}
}
}, {
"path": "pages/transfers/lists",
@@ -372,14 +403,6 @@
"navigationBarBackgroundColor": "#446EFE",
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/work/mailedInfo",
"auth": true,
"name": "MailedOrderInfo",
"style": {
"navigationBarTitleText": "邮寄信息",
"enablePullDownRefresh": false
}
}, {
"path": "pages/work/schemes",
"auth": true,
@@ -391,21 +414,66 @@
"navigationBarTextStyle": "white"
}
}, {
"path": "pages/work/perfectBasisInfo",
"auth": true,
"path": "pages/work/perfectBasisInfo",
"auth": true,
"name": "OrderPerfectBasisInfo",
"style": {
"navigationBarTitleText": "基础资料信息",
"enablePullDownRefresh": false,
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/work/perfectInstitutionsInfo",
"auth": true,
"path": "pages/work/perfectInstitutionsInfo",
"auth": true,
"name": "OrderPerfectInstitutionsInfo",
"style": {
"navigationBarTitleText": "机构资料信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/user/userdata",
"auth": true,
"name": "UserData",
"style": {
"navigationBarTitleText": "账户信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/user/userdataBase",
"auth": true,
"name": "UserDataBase",
"style": {
"navigationBarTitleText": "账户信息 - 基础信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/user/userdataBanks",
"auth": true,
"name": "UserDataBank",
"style": {
"navigationBarTitleText": "账户信息 - 机构信息",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/work/express",
"auth": true,
"name": "WorkExpress",
"style": {
"navigationBarTitleText": "邮寄状态",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/work/expressInfo",
"auth": true,
"name": "WorkExpressInfo",
"style": {
"navigationBarTitleText": "快递详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}

View File

@@ -22,10 +22,10 @@
<block v-if="list.length > 0">
<view class="log-flex" v-for="(item, index) in list" :key="index">
<view class="text">
<view class="type nowrap">xxx奖金收益</view>
<view class="time nowrap">2022-12-12 10:18</view>
<view class="type nowrap">{{item.remark || '-'}}</view>
<view class="time nowrap">{{item.created_at}}</view>
</view>
<view class="price nowrap">+50000</view>
<view class="price nowrap">{{item.amount}}</view>
</view>
</block>
<block v-else>

View File

@@ -9,7 +9,7 @@
<!-- 账户余额 -->
<view class="total" :style="'background-image: url(' + require('@/static/imgs/cash_back.png') + ');'">
<view class="total-value nowrap">{{total}}</view>
<view class="total-text">个人总业绩</view>
<view class="total-text">{{type == 'self' ? '个人总业绩': '团队总业绩'}}</view>
</view>
<!-- 账户记录 -->
<view class="logs">
@@ -88,13 +88,14 @@
// 获取列表
getLog(){
cash({
day : this.type,
type: this.dayType,
day : this.dayType,
type: this.type,
page: this.page.current
}).then(res => {
let { total, lists } = res;
let atList = lists.page.current == 1 ? [] : this.list
this.list = atList.concat(lists.data)
this.total = total
this.page = lists.page
this.pagesShow = false
}).catch(err => {

View File

@@ -46,7 +46,7 @@
export default {
data() {
return {
username : '18245180131',
username : '',
password : '',
confirmation: '',
code : '',
@@ -115,6 +115,7 @@
})
let smsTime = 60;
verifyCaptcha({
type : 'register',
mobileNo : this.username,
captcha : this.captcha,
captcha_key : this.captchaKey

View File

@@ -1,6 +1,6 @@
<template>
<view class="registered-content">
<view class="title">重置账户登录密码</view>
<view class="title">{{type == 'userSet' ? '修改' : '找回'}}账户登录密码</view>
<view class="submit-title">请填写账号信息</view>
<view class="from">
<view class="from-inpus from-input-phoen">
@@ -46,6 +46,7 @@
export default {
data() {
return {
type : '',
username : '',
password : '',
confirmation: '',
@@ -58,6 +59,14 @@
captchaShow : false
};
},
created() {
if(this.$Route.query.type == 'userSet'){
uni.setNavigationBarTitle({
title: '修改密码'
})
this.type = this.$Route.query.type
}
},
methods: {
// 提交修改信息
onRegistered(){
@@ -77,7 +86,7 @@
clearInterval(outTime);
uni.showModal({
title : "提示",
content : "登录密码已重置",
content : "登录密码已变更",
showCancel : false,
confirmColor: "#446EFE",
success : modalRes => {

View File

@@ -101,7 +101,7 @@
<u-icon class="footer-icon" name="order" size="48rpx" color="#111"></u-icon>
<view>答题卡</view>
</view>
<button class="footer-next" :disabled="answerArr[questionsIndex].option_ids == ''" @click="answerNext">{{(this.questionsIndex + 1) == this.questions.length ? '提交': '下一题'}}</button>
<button class="footer-next" :disabled="answerArr[questionsIndex].option_ids == '' || !isShowAnswer" @click="answerNext">{{(this.questionsIndex + 1) == this.questions.length ? '提交': '下一题'}}</button>
</view>
</view>
</template>

View File

@@ -144,7 +144,6 @@
// 获取综法列表
getZf(){
zf().then(res=>{
// console.log(res)
// this.jfList = res
}).catch(err=>{
uni.showToast({

View File

@@ -11,7 +11,7 @@
data() {
return {
loaded:false,
content: '<p><img src=\"https://douhuo-storage.oss-cn-beijing.aliyuncs.com/uploads/images/2022/12/26/2aa1387f7bf0eac7ae861c9ca69a730a.png\" title=\"/uploads/images/2022/12/26/2aa1387f7bf0eac7ae861c9ca69a730a.png\" alt=\"2级页面-补差价类服务包.png\"/></p>'
content: ''
}
},
onLoad(e) {

View File

@@ -101,7 +101,6 @@
title: '支付中...',
mask : true
})
console.log(this.orderId)
coinPay(this.orderId).then(res => {
wx.showModal({
title : '提示',
@@ -113,7 +112,6 @@
}
})
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'

View File

@@ -1,20 +1,37 @@
<template>
<view>
<view class="content">
<block v-if="!eSign">
<!-- 上传身份证 -->
<view class="identity-title">请拍摄并上传你的身份证照片</view>
<view class="identity-flex">
<view class="identity-item" @click="updImg('frontCard')">
<view class="upd" style="background-image: url('/static/imgs/card_front.png');">
<image v-if="frontCard.showpath != ''" :src="frontCard.showpath" class="idcardImg-img" mode="aspectFit"></image>
<view class="identity-from">
<view class="identity-title">请拍摄并上传你的身份证照片</view>
<view class="identity-flex">
<view class="identity-item" @click="updImg('frontCard')">
<view class="upd" style="background-image: url('/static/imgs/card_front.png');">
<image v-if="frontCard.showpath != ''" :src="frontCard.showpath" class="idcardImg-img" mode="aspectFit"></image>
</view>
<view class="text">拍摄正面</view>
</view>
<view class="identity-item" @click="updImg('backCard')">
<view class="upd" style="background-image: url('/static/imgs/card_verso.png');">
<image v-if="backCard.showpath != ''" :src="backCard.showpath" class="idcardImg-img" mode="aspectFit"></image>
</view>
<view class="text">拍摄反面</view>
</view>
<view class="text">拍摄正面</view>
</view>
<view class="identity-item" @click="updImg('backCard')">
<view class="upd" style="background-image: url('/static/imgs/card_verso.png');">
<image v-if="backCard.showpath != ''" :src="backCard.showpath" class="idcardImg-img" mode="aspectFit"></image>
</view>
<view class="text">拍摄反面</view>
</view>
<view class="identity-from">
<!-- 经营省份 -->
<view class="identity-inpus" v-if="provinces.length > 0">
<label>经营省份</label>
<picker class="city-picker" :value="provincesVal" :range="provinces" range-key="name" @change="onPickerChange($event, 'provincesVal')">
<view class="city-picker-text">{{provinces[provincesVal].name}}<uni-icons class="city-icon" type="bottom" color="gray"></uni-icons></view>
</picker>
</view>
<view class="identity-inpus" v-if="citys.length > 0">
<label>经营城市</label>
<picker class="city-picker" :value="citysVal" :range="citys" range-key="name" @change="onPickerChange($event, 'citysVal')">
<view class="city-picker-text">{{citys[citysVal].name}}<uni-icons class="city-icon" type="bottom" color="gray"></uni-icons></view>
</picker>
</view>
</view>
</block>
@@ -33,6 +50,14 @@
<input type="idcard" placeholder="-" v-model="realData.organ" disabled>
</view>
</view>
<!-- 经营地址 -->
<view class="identity-from" v-if="eSign">
<view class="identity-inpus">
<label>经营城市</label>
<view class="identity-inpus-text">{{province}} {{city}}</view>
<!-- <input type="text" placeholder="-" v-model="city" disabled> -->
</view>
</view>
<!-- 按钮 -->
<view class="btn" v-if="!eSign">
<button size="default" @click="idCard && !isPathChange ? getSignUrl(): realInfo()">{{idCard && !isPathChange ? '人脸认证': '提交身份信息'}}</button>
@@ -41,7 +66,7 @@
</template>
<script>
import { certification, identityOcr, certified, eSigns } from '@/apis/interfaces/user'
import { certification, identityOcr, certified, eSigns, getRegion } from '@/apis/interfaces/user'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
@@ -57,7 +82,14 @@
organ : ''
}, // 个人信息
signUrl : '',
isRefresh : false
isRefresh : false,
province : '',
city : '',
// 省市区选择
provinces : [],
provincesVal: 0,
citys : [],
citysVal : 0
}
},
onShow(){
@@ -67,7 +99,16 @@
}
},
created() {
this.getCertified()
getRegion().then(res => {
this.provinces = res
this.getCity()
this.getCertified()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 检查实名结果
@@ -92,6 +133,36 @@
})
})
},
// 选择省市
onPickerChange(e, key){
let index = e.detail.value
this[key] = index
this.isPathChange = true
if(key === 'provincesVal'){
this.getCity()
}
},
// 获取城市
getCity(id){
uni.showLoading({
title: '获取城市',
mask : true
})
getRegion(this.provinces[this.provincesVal].id).then(res => {
this.citys = res
if(id){
this.citysVal = this.citys.findIndex(val => val.id === id)
}else{
this.citysVal = 0
}
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 提交真实信息
getInfo(){
uni.showLoading({
@@ -99,8 +170,22 @@
mask : true
})
identityOcr().then(res => {
this.frontCard.showpath = res.front_card
this.backCard.showpath = res.back_card
this.frontCard = {
showpath: res.front_card,
path : res.front_card_path
}
this.backCard = {
showpath: res.back_card,
path : res.back_card_path
}
if(res.province.id != 0){
this.province = res.province.name
this.provincesVal = this.provinces.findIndex(val => val.id === res.province.id)
}
if(res.city.id != 0){
this.getCity(res.city.id)
this.city = res.city.name
}
this.realData = res;
uni.hideLoading()
}).catch(err => {
@@ -116,24 +201,29 @@
uni.showLoading({
title: '提交中信息...',
mask : true
})
certification({
})
certification({
province_id: this.provinces[this.provincesVal].id,
city_id: this.citys[this.citysVal].id,
front_card: this.frontCard.path,
back_card : this.backCard.path,
redirect_url: 'http://web.douhuofalv.com/app/e-sign?sign_type=personal',
app_scheme: 'doufire://'
}).then(res => {
console.log(res)
let certificationData = res;
this.idCard = true
this.isPathChange = false
this.realData = certificationData.certification
this.signUrl = certificationData.sign.authShortUrl
wx.showModal({
title : '提示',
content : '您的身份信息已上传,请完成人脸识别以确认您是本人',
showCancel : false,
success : () => {
this.isPathChange = false
this.realData = certificationData.certification
this.signUrl = certificationData.sign.authShortUrl
this.getSignUrl()
content : '您的身份信息已上传,请尽快完成人脸识别以确认您是本人',
cancelText : '稍后认证',
confirmText : '立即认证',
success : ModalRes => {
if(ModalRes.confirm){
this.getSignUrl()
}
}
})
}).catch(err => {
@@ -148,7 +238,13 @@
getSignUrl(){
if(this.signUrl != ''){
this.isRefresh = true
plus.runtime.openURL(this.signUrl)
this.$Router.push({
name: 'ESign',
params: {
url: this.signUrl
}
})
// plus.runtime.openURL(this.signUrl)
return
}
uni.showLoading({
@@ -160,7 +256,12 @@
app_scheme: 'doufire://'
}).then(res => {
this.isRefresh = true
plus.runtime.openURL(res.authShortUrl)
this.$Router.push({
name: 'ESign',
params: {
url: res.authShortUrl
}
})
uni.hideLoading()
}).catch(err => {
uni.showToast({
@@ -191,7 +292,7 @@
})
}
})
}
},
}
}
</script>
@@ -199,7 +300,8 @@
<style lang="scss" scoped>
// 身份信息
.identity-from{
border-bottom: 30rpx solid #f8f8f8;
border-top: 30rpx solid #f8f8f8;
background-color: white;
.identity-inpus{
display: flex;
border-bottom: solid 1rpx #F6F6F6;
@@ -220,6 +322,23 @@
width: calc(100% - 180rpx);
text-align: right;
}
.identity-inpus-text{
font-size: 32rpx;
width: calc(100% - 180rpx);
text-align: right;
}
.city-picker{
width: calc(100% - 180rpx);
.city-picker-text{
padding-right: 50rpx;
position: relative;
text-align: right;
.city-icon{
position: absolute;
right: 0;
}
}
}
}
}
// 身份证上传
@@ -227,11 +346,10 @@
padding: 0 30rpx;
line-height: 90rpx;
font-size: 30rpx;
color: #111111;
border-top: 30rpx solid #f8f8f8;
color: gray;
}
.identity-flex{
background: white;
display: flex;
padding: 0 20rpx 30rpx;
.identity-item{
@@ -262,7 +380,6 @@
font-size: 28rpx;
}
}
border-bottom: 30rpx solid #f8f8f8;
}
// 身份认证按钮
.btn{

View File

@@ -13,12 +13,12 @@
<l-painter class="qrcode-src">
<l-painter-qrcode
:text="'http://web.douhuofalv.com/login/register?invite_code=' + invite"
css="width: 260rpx; height: 260rpx; background-color:white; padding: 20rpx; border-radius: 10rpx;"
css="width: 130px; height: 130px; background-color:white; padding: 10px; border-radius: 10rpx;"
/>
</l-painter>
<view class="qrcode-text">邀请码{{invite}}</view>
<view class="qrcode-text" @click="copyInvite">邀请码{{invite}}</view>
</view>
<image class="btn" src="@/static/code/code_btn.png" mode="widthFix"></image>
<image class="btn" src="@/static/code/code_btn.png" mode="widthFix" @click="onWx"></image>
</view>
<image class="footer" src="@/static/code/code_footer.png" mode="widthFix"></image>
</view>
@@ -43,6 +43,36 @@
icon : 'none'
})
})
},
methods: {
copyInvite(){
uni.setClipboardData({
data: this.invite,
success() {
uni.showToast({
title: '邀请码已复制',
icon : 'none'
})
}
})
},
onWx(){
uni.share({
title : "抖火法律",
provider: "weixin",
scene : "WXSceneSession",
imageUrl: require('@/static/logo.png'),
href : "http://web.douhuofalv.com/login/register?invite_code=" + this.invite,
type : 0,
summary: "法律问题我们'抖'懂",
fail: err => {
uni.showToast({
title: err.message,
icon : 'none'
})
}
});
}
}
}
</script>
@@ -102,23 +132,24 @@
.block {
text-align: center;
margin-bottom: 30rpx;
margin-bottom: 30rpx;
width: 100%;
.qrcode {
display: inline-block;
border: solid 2rpx #ECC997;
background: #0E2660;
border-radius: 20rpx;
padding: 30rpx;
.qrcode-src {
width: 300rpx;
height: 300rpx;
}
.qrcode-src{
width: 150px;
height: 150px;
}
.qrcode-text {
text-align: center;
color: #FFF5C6;
line-height: 50rpx;
padding-top: 30rpx;
padding-top: 30rpx;
font-size: 30rpx;
}
}
.btn {

View File

@@ -1,6 +1,6 @@
<template>
<view>
<web-view :src="webUrl"></web-view>
<web-view :src="webUrl" @message="onMessage"></web-view>
</view>
</template>
@@ -13,6 +13,17 @@
},
created() {
this.webUrl = this.$Route.query.url
},
methods: {
onMessage(e){
let { data } = e.detail
data.map(val => {
if(val.type === 'back'){
this.$Route.back()
return
}
})
}
}
}
</script>

View File

@@ -16,14 +16,14 @@
</view>
</view>
<view class="set-nav-block">
<view class="set-nav" @click="onNav('ResetPassword')">
<view class="set-nav" @click="onNav('ResetPassword', { type: 'userSet' })">
<label>修改密码</label>
<view class="value nowrap">
<uni-icons type="right" color="gray"></uni-icons>
</view>
</view>
<view class="border-solid-empty"></view>
<view class="set-nav" @click="onNav()">
<view class="set-nav" @click="onNav('UserData')">
<label>账户信息</label>
<view class="value nowrap">
<uni-icons type="right" color="gray"></uni-icons>
@@ -75,8 +75,9 @@
name: 'Auth'
})
},
onNav(name){
this.$Router.push({name})
onNav(name, p){
let params = p || {}
this.$Router.push({name, params})
}
}
}

View File

@@ -2,7 +2,7 @@
<view class="content">
<view class="header">
客户列表
<text>{{count.all}}客户</text>
<text>{{count.one}}</text>
</view>
<block v-if="users.length > 0">
<view class="team-item" v-for="(item, index) in users" :key="index">
@@ -44,6 +44,7 @@
relations({
larer: 1
}).then(res => {
console.log(res)
let { users, count } = res;
this.users = users.data
this.count = count

106
pages/user/userdata.vue Normal file
View File

@@ -0,0 +1,106 @@
<template>
<view class="content">
<view class="content-label">基础资料</view>
<view class="content-block">
<view class="content-item" @click="onNav('UserDataBase', {})">
<view class="title nowrap">基础信息</view>
<uni-icons type="right" color="gray"></uni-icons>
</view>
</view>
<view class="content-label">机构资料</view>
<view class="content-block" v-if="banks.length > 0">
<view class="content-item" v-for="(item, index) in banks" :key="index" @click="onNav('UserDataBank', {id: item.user_bank_id})">
<view class="text">
<view class="text-title nowrap">{{item.institution.title || '-'}}</view>
<view class="text-time nowrap">更新时间{{item.created_at || '-'}}</view>
</view>
<uni-icons type="right" color="gray"></uni-icons>
</view>
</view>
<view v-else class="content-null">
<u-empty
mode="data"
icon="http://cdn.uviewui.com/uview/empty/data.png"
text="暂无机构资料数据"
>
</u-empty>
</view>
</view>
</template>
<script>
import { userInfoBanks } from '@/apis/interfaces/user.js'
export default {
data() {
return {
banks: []
};
},
created() {
uni.showLoading({
title: '加载中...',
mask : true
})
userInfoBanks().then(res => {
this.banks = res;
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
onNav(name, params){
this.$Router.push({
name,
params
})
}
}
}
</script>
<style lang="scss">
.content-label{
padding: 15rpx 30rpx;
font-size: 30rpx;
color: gray;
}
.content-block{
background: white;
.content-item{
display: flex;
justify-content: space-between;
align-items: center;
line-height: 40rpx;
padding: 30rpx;
font-size: 32rpx;
.text{
width: 80%;
.text-title{
font-size: 32rpx;
}
.text-time{
font-size: 28rpx;
color: gray
}
}
@extend .border-solid;
&::after{
left: 30rpx;
}
&:last-child::after{
display: none;
}
}
}
.content-null{
background-color: white;
height: 50vh;
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@@ -0,0 +1,73 @@
<template>
<view class="content">
<view class="content-block" v-if="params.length > 0">
<view class="content-item" v-for="(item, index) in params" :key="index">
<view class="text-title nowrap">{{item.title || '-'}}</view>
<view class="text-value">{{item.value_text || '-'}}</view>
</view>
</view>
</view>
</template>
<script>
import { userInfoBank } from '@/apis/interfaces/user.js'
export default {
data() {
return {
params: []
};
},
created() {
uni.showLoading({
title: '加载中...',
mask : true
})
userInfoBank(this.$Route.query.id).then(res => {
let { params, institution } = res;
this.params = params;
uni.setNavigationBarTitle({
title: institution.title + '-机构资料'
})
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
</script>
<style lang="scss">
.content{
padding: 30rpx 0;
box-sizing: border-box;
.content-block{
background: white;
.content-item{
display: flex;
justify-content: space-between;
align-items: center;
line-height: 40rpx;
padding: 30rpx;
font-size: 30rpx;
.text-title{
width: 300rpx;
color: gray;
}
.text-value{
width: calc( 100% - 300rpx);
text-align: right;
}
@extend .border-solid;
&::after{
left: 30rpx;
}
&:last-child::after{
display: none;
}
}
}
}
</style>

113
pages/user/userdataBase.vue Normal file
View File

@@ -0,0 +1,113 @@
<template>
<view class="content" v-if="info.name">
<view class="content-block">
<view class="content-item">
<view class="text-title nowrap">姓名</view>
<view class="text-value">{{info.name || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">性别</view>
<view class="text-value">{{info.sex || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">年龄</view>
<view class="text-value">{{info.age || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">手机号码</view>
<view class="text-value">{{info.mobile || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">属相</view>
<view class="text-value">{{info.zodiak || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">身份证号</view>
<view class="text-value">{{info.id_card || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">婚姻状况</view>
<view class="text-value">{{info.marriages[info.marriage] || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">配偶姓名</view>
<view class="text-value">{{info.mate || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">学历</view>
<view class="text-value">{{info.educations[info.education] || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">毕业院校</view>
<view class="text-value">{{info.school || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">身份证地址</view>
<view class="text-value">{{info.address || '-'}}</view>
</view>
<view class="content-item">
<view class="text-title nowrap">联系地址</view>
<view class="text-value">{{info.contact_address || '-'}}</view>
</view>
</view>
</view>
</template>
<script>
import { userInfoBase } from '@/apis/interfaces/user.js'
export default {
data() {
return {
info: {}
};
},
created() {
uni.showLoading({
title: '加载中...',
mask : true
})
userInfoBase().then(res => {
this.info = res;
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
</script>
<style lang="scss">
.content{
padding: 30rpx 0;
box-sizing: border-box;
.content-block{
background: white;
.content-item{
display: flex;
justify-content: space-between;
align-items: center;
line-height: 40rpx;
padding: 30rpx;
font-size: 30rpx;
.text-title{
width: 200rpx;
color: gray;
}
.text-value{
width: calc( 100% - 200rpx);
text-align: right;
}
@extend .border-solid;
&::after{
left: 30rpx;
}
&:last-child::after{
display: none;
}
}
}
}
</style>

87
pages/work/express.vue Normal file
View File

@@ -0,0 +1,87 @@
<template>
<view class="content">
<view class="express-item" v-for="(item, index) in express" :key="index" @click="onNav('WorkExpressInfo', {id: item.business_order_express_id})">
<view class="express-text">
<view class="express-flex">
<label>邮寄物品</label>
<view class="express-value">{{item.type}}</view>
</view>
<view class="express-flex">
<label>快递公司</label>
<view class="express-value">{{item.express}}</view>
</view>
<view class="express-flex">
<label>快递单号</label>
<view class="express-value">{{item.number}}</view>
</view>
<view class="express-flex">
<label>快递状态</label>
<view class="express-value">{{item.status}}</view>
</view>
</view>
<uni-icons type="right" color="gray"></uni-icons>
</view>
</view>
</template>
<script>
import { getExpresses } from '@/apis/interfaces/mailed.js'
export default {
data() {
return {
express: []
};
},
created() {
getExpresses(this.$Route.query.orderId).then(res => {
this.express = res;
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
onNav(name, params){
this.$Router.push({
name,
params
})
}
}
}
</script>
<style lang="scss">
.content{
padding-top: 1rpx;
box-sizing: border-box;
}
.express-item{
display: flex;
background: white;
padding: 20rpx 30rpx;
margin-top: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
.express-text{
width: calc(100% - 50rpx);
}
.express-flex{
line-height: 50rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
label{
color: gray;
width: 150rpx;
}
.express-value{
width: calc(100% - 150rpx);
}
}
}
</style>

120
pages/work/expressInfo.vue Normal file
View File

@@ -0,0 +1,120 @@
<template>
<view class="content" v-if="express.express_number">
<view class="express">
<image class="express-logo" :src="express.cover"></image>
<view class="express-text">
<view class="title">物流公司{{express.express_name}}</view>
<view class="no">订单号码{{express.express_number}}</view>
</view>
</view>
<view class="block-title">物流信息</view>
<view class="logistic">
<view class="logistic-item" v-for="(item, index) in logistics" :key="index">
<view class="context"><text>[{{item.status}}]</text>{{item.context}}</view>
<view class="time">{{item.time}}</view>
</view>
</view>
</view>
</template>
<script>
import { getLogistic } from '@/apis/interfaces/mailed.js'
export default {
data() {
return {
express : {},
logistics : []
};
},
created() {
getLogistic(this.$Route.query.id).then(res => {
let { orderExpress, logistics } = res;
this.express = orderExpress
this.logistics = logistics
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
</script>
<style lang="scss">
// 物流公司
.express{
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
background: white;
.express-logo{
width: 88rpx;
height: 88rpx;
}
.express-text{
width: calc( 100% - 118rpx);
font-size: 30rpx;
line-height: 44rpx;
.title{
font-weight: bold;
}
.no{
color: gray;
}
}
}
// title
.block-title{
padding: 20rpx 30rpx;
font-size: 28rpx;
color: gray;
line-height: 50rpx;
}
// 订单记录
.logistic{
position: relative;
background: white;
padding: 15rpx 0;
&::after{
position: absolute;
left: 30rpx;
top: 0;
bottom: 0;
width: 1rpx;
content: " ";
background: #ddd;
}
.logistic-item{
padding: 15rpx 30rpx 15rpx 70rpx;
font-size: 30rpx;
position: relative;
&::after{
position: absolute;
left: 19rpx;
top: 50%;
margin-top: -12rpx;
content: " ";
height: 20rpx;
width: 20rpx;
border-radius: 50%;
background: #ddd;
border: solid 4rpx white;
}
.status{
color: gray;
}
.context{
padding: 10rpx 0;
line-height: 40rpx;
text{
color: $main-color;
}
}
.time{
color: gray;
}
}
}
</style>

View File

@@ -35,7 +35,7 @@
:key="formIndex"
v-if="item.subVal[formItem.pre_key] == formItem.pre_value"
>
<block v-if="formItem.type == 'price' || formItem.type == 'number'">
<block v-if="formItem.type == 'price' || formItem.type == 'number' || formItem.type == 'day'">
<label class="block-item-label"><text v-if="formItem.is_required == 1">*</text>{{formItem.title}}</label>
<view class="inputs-flex">
<input
@@ -45,7 +45,7 @@
:placeholder="'请输入' + formItem.title"
>
<text class="unit" v-if="formItem.type == 'price'"></text>
<text class="unit" v-if="formItem.type == 'number'"></text>
<text class="unit" v-if="formItem.type == 'number' || formItem.type == 'day'"></text>
</view>
</block>
<block v-if="formItem.type == 'radio'">
@@ -66,6 +66,15 @@
</label>
</checkbox-group>
</block>
<block v-if="formItem.type == 'select'">
<label class="block-item-label"><text v-if="formItem.is_required == 1">*</text>{{formItem.title}}</label>
<picker :range="formItem.options" :value="item.subVal[formItem.key]" @change="item.subVal[formItem.key] = $event.detail.value">
<view class="institution-picker">
<view class="institution-picker-text nowrap" :class="{'institution-picker-gray': item.subVal[formItem.key] == 0}">{{formItem.options[item.subVal[formItem.key]]}}</view>
<u-icon size="12" color="#999" name="arrow-down-fill"></u-icon>
</view>
</picker>
</block>
<block v-if="formItem.type == 'textarea'">
<label class="block-item-label"><text v-if="formItem.is_required == 1">*</text>{{formItem.title}}</label>
<textarea
@@ -156,7 +165,13 @@
}
})
froms.map(val => {
fromsVal[val.key] = val.type === 'checkbox' ? [] : ''
if(val.type === 'checkbox'){
fromsVal[val.key] = []
}else if(val.type === 'select'){
fromsVal[val.key] = 0
}else {
fromsVal[val.key] = ''
}
})
// 新增卡片
this.serviceArr.push({
@@ -197,7 +212,13 @@
})
// 提交字段
params.map(val => {
paramsVal[val.key] = val.type === 'checkbox' ? [] : ''
if(val.type === 'checkbox'){
paramsVal[val.key] = []
}else if(val.type === 'select'){
paramsVal[val.key] = 0
}else {
paramsVal[val.key] = ''
}
})
// 更新数据
newObj.allInstitution = institutionVal;
@@ -222,11 +243,15 @@
let newObj = old
let params = allInstitution[value].params
let paramsVal = {}
params.map(val => {
paramsVal[val.key] = val.type === 'checkbox' ? [] : ''
if(val.type === 'checkbox'){
paramsVal[val.key] = []
}else if(val.type === 'select'){
paramsVal[val.key] = 0
}else {
paramsVal[val.key] = ''
}
})
newObj.fromIndex = value;
newObj.froms = params;
newObj.subVal = {
@@ -352,6 +377,9 @@
&-text{
width: calc( 100% - 60rpx );
}
&-gray{
color: gray;
}
}
// input
.inputs-flex{

View File

@@ -63,32 +63,32 @@
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_00.png"></image>
<view class="title">预约咨询单</view>
<view class="number">-<text></text></view>
<view class="number">{{orderCount.init_payed}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">-<text></text></view>
<view class="number">{{orderCount.service_payed}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_02.png"></image>
<view class="title">办理完成</view>
<view class="number">-<text></text></view>
<view class="number">{{orderCount.b_complete}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">退款</view>
<view class="number">-<text></text></view>
<view class="title">退款</view>
<view class="number">{{orderCount.refund}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_04.png"></image>
<view class="title">完成结</view>
<view class="number">-<text></text></view>
<view class="title">完成结</view>
<view class="number">{{orderCount.settlement_count}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">金额</view>
<view class="number">-<text></text></view>
<view class="title">金额</view>
<view class="number">{{orderCount.settlement_price}}<text></text></view>
</view>
</view>
</view>
@@ -241,7 +241,6 @@
Promise.all([rights(), index()]).then(res => {
let rightsData = res[0],
indexData = res[1]
let { nickname, avatar, business_orders_count, isCertification, certification, isManager, isAnswer, identity } = indexData
this.rightsArr = rightsData
this.userInfo = {
@@ -254,6 +253,7 @@
this.isAnswer = isAnswer
this.orderCount = business_orders_count
this.identity = identity
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
@@ -446,14 +446,16 @@
.title{
font-size: 28rpx;
color: #111;
line-height: 40rpx;
@extend .nowrap;
}
.number{
padding-top: 5rpx;
font-weight: bold;
font-size: 40rpx;
font-size: 34rpx;
color: #111;
font-family: Arial, Helvetica, sans-serif;
line-height: 40rpx;
@extend .nowrap;
text{
font-size: 80%;

View File

@@ -38,7 +38,7 @@
<view class="from-flex">
<label>物流公司</label>
<view class="from-inputs">
<picker :range="expressArr" range-key="name" @change="onPicker">
<picker :range="expressArr" range-key="name" :value="expressIndex" @change="onPicker">
<view class="from-inputs-input" :class="{ 'hide': expressIndex == null }">{{expressIndex == null ? '请选择': expressArr[expressIndex].name}}</view>
</picker>
<uni-icons type="right" color="#999999" size="36rpx"></uni-icons>
@@ -92,6 +92,7 @@
this.expressArr = expressData
this.deliverCount = deliverOption
this.address = addressData.address
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
@@ -124,7 +125,7 @@
})
return
}
if(this.expressIndex != ''){
if(this.expressIndex == null){
uni.showToast({
title: '请选择物流公司',
icon : 'none'
@@ -145,9 +146,7 @@
content : '材料已邮寄',
showCancel : false,
success : () => {
if(this.deliverCount.length <= 1){
this.$store.commit('setOrderId', this.$Route.query.orderId)
}
this.$store.commit('setOrderId', this.$Route.query.orderId)
this.$Router.back()
}
})
@@ -160,6 +159,7 @@
},
// 选择物流公司
onPicker(e){
console.log(e)
this.expressIndex = e.detail.value
},
// 扫码

View File

@@ -1,19 +0,0 @@
<template>
<view class="content">
邮寄信息详情
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss">
</style>

View File

@@ -3,7 +3,7 @@
<view class="order-header"></view>
<!-- 订单主要信息 -->
<view class="order-back order-flex order-info">
<view class="order-state">{{statusText}}</view>
<view class="order-state">{{statusText.text}}</view>
<view class="order-item">
<label>服务类型</label>
<view class="order-value nowrap">
@@ -59,12 +59,24 @@
</view>
<view class="order-btn" @click="onCallPhone(user.username)">联系客户</view>
</view>
<!-- 老师与助理 -->
<view class="order-back order-flex" v-if="statusText.value > 5">
<view class="order-title">法务老师与助理</view>
<view class="order-item">
<label>法务老师</label>
<view class="order-value nowrap">{{teachers || '-'}}</view>
</view>
<view class="order-item">
<label>法务助理</label>
<view class="order-value nowrap">{{tutor || '-'}}</view>
</view>
</view>
<!-- 订单其他信息 -->
<view class="order-back order-flex">
<view class="order-title">订单信息</view>
<view class="order-item">
<view class="order-item" @click="copyNo(order_no)">
<label>订单编号</label>
<view class="order-value nowrap">{{order_no || '-'}}</view>
<view class="order-value nowrap">{{order_no || '-'}}<u-icon class="order-value-icon" name="file-text" color="gray" size="18"></u-icon></view>
</view>
<view class="order-item">
<label>创建时间</label>
@@ -96,7 +108,9 @@
item_type : [],
items : [],
services : [],
serviceTotal: ''
serviceTotal: '',
tutor : '',
teachers : ''
};
},
onShow() {
@@ -107,8 +121,8 @@
// 订单详情
getInfo(){
info(this.orderId).then(res => {
let { status, created_at, total, order_no, user, item_type, items, services, service_prices } = res
this.statusText = status.text
let { status, created_at, total, order_no, user, item_type, items, services, service_prices, tutor, teachers } = res
this.statusText = status
this.created_at = created_at
this.total = total
this.order_no = order_no
@@ -117,6 +131,8 @@
this.items = items
this.services = services
this.serviceTotal = service_prices
this.tutor = tutor
this.teachers = teachers
}).catch(err => {
uni.showToast({
title: err.message,
@@ -132,14 +148,20 @@
onCallPhone(phone){
uni.makePhoneCall({
phoneNumber: phone,
fail(err) {
})
},
// 复制订单号码
copyNo(no){
uni.setClipboardData({
data : no,
success : res => {
uni.showToast({
title: err.message,
title: '订单号已复制',
icon : 'none'
})
}
})
}
},
}
}
</script>
@@ -211,6 +233,11 @@
}
}
}
.order-value-icon{
display: inline-block;
vertical-align: middle;
margin-bottom: 10rpx;
}
&.order-value-price{
color: red;
font-weight: bold;

View File

@@ -22,7 +22,7 @@
<view class="orders" v-if="orders.length > 0">
<view class="orders-item" v-for="(item, index) in orders" :key="index">
<view class="orders-flex">
<view class="no nowrap">
<view class="no nowrap" @click="copyNo(item.order_no)">
<text class="orders-tag" v-if="!item.is_my">客户</text>
<text class="orders-tag order-tag-my" v-else>个人</text>
{{item.order_no}}
@@ -30,13 +30,14 @@
<view class="state">{{item.status.text}}</view>
</view>
<view class="orders-content">
<view class="orders-content-item">
<view class="orders-content-item orders-content-bottom" @click="item.is_show_type = !item.is_show_type">
<label>业务类型</label>
<view class="nowrap orders-content-type">
<text v-for="(itemType, indexType) in item.item_type" :key="indexType" v-if="itemType.number > 0">{{itemType.title}}x{{itemType.number}}</text>
</view>
<uni-icons class="orders-content-icon" :type="item.is_show_type ? 'top': 'bottom'" size="14" color="gray"></uni-icons>
</view>
<view class="orders-content-block">
<view class="orders-content-block" v-show="item.is_show_type">
<view class="item-flex" v-for="(citem, cindex) in item.items" :key="cindex">
<view class="item-flex-title">{{citem.institution.title}}({{citem.business_type.title}})</view>
<view class="item-flex-value">{{citem.price}}</view>
@@ -46,18 +47,29 @@
<label>咨询服务费</label>
<view class="nowrap">{{item.total}}</view>
</view>
<view class="orders-content-item" v-if="item.diff_prices_pays > 0">
<label>补差价金额</label>
<view class="nowrap">{{item.diff_prices_pays}}</view>
</view>
<view class="orders-content-item" v-if="item.deliver_count.can && item.deliver_count.num < item.deliver_count.all" @click="$Router.push({name: 'MailedOrder', params: {orderId: item.business_order_id}})">
<label>邮寄资料</label>
<view class="nowrap orders-content-btn">({{item.deliver_count.num}}/{{item.deliver_count.all}})去邮寄<uni-icons type="right" size="32rpx" color="#446EFE"></uni-icons></view>
</view>
<view class="orders-content-item" v-if="item.deliver_count.num > 0" @click="$Router.push({name: 'WorkExpress', params: {orderId: item.business_order_id}})">
<label>邮寄状态</label>
<view class="nowrap orders-content-btn">查看<uni-icons type="right" size="32rpx" color="#446EFE"></uni-icons></view>
</view>
<view class="orders-content-item">
<label>下单时间</label>
<view class="nowrap">{{item.created_at}}</view>
</view>
</view>
<view class="orders-flex">
<view class="user">
<view class="user" @click="makePhone(item.user.username)">
<image class="user-cover" :src="item.user.avatar" mode="aspectFill"></image>
<view class="user-name">{{item.user.nickname}}</view>
</view>
<view class="btns">
<view class="btns-item btns-border" v-if="item.deliver_count.can && item.deliver_count.num < item.deliver_count.all" @click="$Router.push({name: 'MailedOrder', params: {orderId: item.business_order_id}})">{{item.deliver_count.num}}/{{item.deliver_count.all}})邮寄材料</view>
<view class="btns-item btns-border" v-if="item.can.transfer" @click="onTransfers(index, item)">转让</view>
<view class="btns-item btns-border" v-if="item.status.value == 2" @click="onOrdersService(item.business_order_id)">匹配</view>
<view class="btns-item btns-border" v-if="item.status.value == 4 && item.is_my" @click="onSign(item.business_order_id)">签约</view>
@@ -168,6 +180,9 @@
status: this.tabType
}).then(res => {
let { data } = res;
data.map(val => {
val.is_show_type = false
})
this.orders = data
}).catch(err => {
uni.showToast({
@@ -242,7 +257,13 @@
}).then(res => {
this.$store.commit('setOrderId', id)
this.getSignState = true
plus.runtime.openURL(res.sign_url)
this.$Router.push({
name: 'ESign',
params: {
url: res.sign_url
}
})
// plus.runtime.openURL(res.sign_url)
uni.hideLoading()
}).catch(err => {
uni.showToast({
@@ -270,6 +291,24 @@
icon : 'none'
})
})
},
// 复制订单号码
copyNo(no){
uni.setClipboardData({
data : no,
success : res => {
uni.showToast({
title: '订单号已复制',
icon : 'none'
})
}
})
},
// 拨打电话
makePhone(phone){
uni.makePhoneCall({
phoneNumber: phone
})
}
}
}
@@ -302,6 +341,18 @@
label{
color: #999999;
}
.orders-content-btn{
color: $main-color;
}
&.orders-content-bottom{
padding-right: 40rpx;
position: relative;
.orders-content-icon{
position: absolute;
right: 0;
top: 0;
}
}
}
&-type{
text{

View File

@@ -1,5 +1,5 @@
<template>
<view v-if="base.name">
<view class="content" v-if="base.name">
<view class="item-flex">
<label>姓名</label>
<view class="value">{{base.name || '-'}}</view>
@@ -79,6 +79,9 @@
</script>
<style lang="scss">
.content{
padding: 30rpx 0;
}
.item-flex{
display: flex;
justify-content: space-between;
@@ -86,6 +89,7 @@
position: relative;
line-height: 40rpx;
align-items: center;
background: white;
label{
width: 200rpx;
font-size: 30rpx;
@@ -97,14 +101,12 @@
width: calc( 100% - 200rpx );
font-size: 30rpx;
}
@extend .border-solid;
&::after{
position: absolute;
left: 30rpx;
right: 0;
bottom: 0;
height: 1rpx;
content: " ";
background: #f6f6f6;
}
&:last-child::after{
display: none;
}
}
</style>

View File

@@ -24,7 +24,7 @@
<input class="from-input" v-model="item.value" :type="item.type" :placeholder="item.placeholder || '请输入'">
</block>
<!-- mobile -->
<block v-if="item.type == 'price' || item.type == 'number' || item.type == 'mobile'">
<block v-if="item.type == 'price' || item.type == 'number' || item.type == 'mobile' || item.type == 'day'">
<label>
<text v-if="item.is_required === 1">*</text>{{item.title}}
<uni-icons v-if="item.reason.description" class="from-icon" type="info" size="18" color="red" @click="modifyToast(item.reason.description)"></uni-icons>
@@ -218,6 +218,7 @@
})
return
}
uni.hideLoading()
// 提交数据提示
uni.showModal({
title : '提示',
@@ -240,6 +241,7 @@
updBaseBase(this.submitId, {
data: dataArr
}).then(res => {
uni.hideLoading()
uni.showModal({
title : '提示',
content : '机构资料已保存',
@@ -249,7 +251,6 @@
this.$Router.back()
}
})
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,

View File

@@ -1,5 +1,5 @@
<template>
<view>
<view class="content">
<view class="item-flex" v-for="(item, index) in params" :key="index">
<label>{{item.title}}</label>
<view class="value">{{item.value_text || '-'}}</view>
@@ -35,6 +35,9 @@
</script>
<style lang="scss">
.content{
padding: 30rpx 0;
}
.item-flex{
display: flex;
justify-content: space-between;
@@ -42,6 +45,7 @@
position: relative;
line-height: 40rpx;
align-items: center;
background: white;
label{
width: 300rpx;
font-size: 30rpx;
@@ -53,14 +57,12 @@
width: calc( 100% - 300rpx );
font-size: 30rpx;
}
@extend .border-solid;
&::after{
position: absolute;
left: 30rpx;
right: 0;
bottom: 0;
height: 1rpx;
content: " ";
background: #f6f6f6;
}
&:last-child::after{
display: none;
}
}
</style>

View File

@@ -52,7 +52,7 @@
</template>
<script>
import { lists } from '@/apis/interfaces/order.js'
import { refunds } from '@/apis/interfaces/order.js'
export default {
data() {
return {
@@ -65,8 +65,8 @@
methods:{
// 获取列表
getList(){
lists({
status: 11
refunds({
status: ''
}).then(res => {
let { data } = res;
this.orders = data

View File

@@ -83,6 +83,18 @@
let { scheme, user } = res;
this.scheme = scheme
this.user = user
if(scheme == ''){
uni.showModal({
title : '提示',
content : '暂未生成预约方案,请稍后再试',
showCancel : false,
success : ModalRes => {
if(ModalRes.confirm){
this.$Router.back()
}
}
})
}
}).catch(err => {
uni.showToast({
title: err.message,

BIN
static/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB