Merge branch 'lx-dev' of gitee.com:cabbage_qd/web-base-h5 into lx-online

This commit is contained in:
woody 2025-05-27 09:05:10 +08:00
commit 37a91fe8a5
27 changed files with 3417 additions and 2006 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

39
.eslintrc.js Normal file
View File

@ -0,0 +1,39 @@
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: ['eslint:recommended', '@vue/eslint-config-prettier'],
parserOptions: {
ecmaVersion: 2021,
sourceType: 'module',
},
globals: {
uni: 'readonly',
wx: 'readonly',
plus: 'readonly',
getCurrentPages: 'readonly',
getApp: 'readonly',
},
rules: {
// Vue规则
'vue/multi-word-component-names': 'off',
'vue/no-unused-vars': 'error',
'vue/valid-v-for': 'error',
'vue/require-v-for-key': 'error',
'vue/no-deprecated-filter': 'error',
// JavaScript规则
'no-unused-vars': 'warn',
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
// 代码风格
semi: ['error', 'never'],
quotes: ['error', 'single'],
'comma-dangle': ['error', 'only-multiline'],
indent: ['error', 2],
'eol-last': ['error', 'always'],
},
}

View File

@ -19,9 +19,21 @@ yarn.lock
# uni-app specific # uni-app specific
uni_modules/ uni_modules/
.hbuilderx/
# Logs # Logs
*.log *.log
# Docs # Docs
docs/ docs/
# IDE settings
.vscode/
.idea/
# Temporary files
*.tmp
*.temp
# Configuration files that shouldn't be formatted
manifest.json

24
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,24 @@
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": true
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.validate": ["javascript", "vue"],
"prettier.requireConfig": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true
}

View File

@ -1,275 +0,0 @@
<template>
<view class="main">
<!-- 推荐达人 -->
<u-popup :show="drShow" :round="10" mode="center" @close="closeShow" closeable>
<view class="uni-margin-wrap">
<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay"
:interval="interval" :duration="duration">
<swiper-item>
<view class="swiper-item">
<view class="title-con">{{ '推荐达人' }}</view>
<view class="screen">
<view class="screen-view" @click="screenTaps(index, item)"
v-for="(item, index) in screenList"
:style="remIndex == item.id ? 'font-weight:bold' : ''">
{{ item.name }}
</view>
</view>
<view class="tjClass" v-for="(item, index) in tjList">
<view class="styleColors">NO.0{{ item.rank }}</view>
<img class="avatar" v-if="item.headPath" :src="item.headPath" />
<image class="avatar" v-else src="@/static/images/avatar.png" />
<view class="user-name">{{ item.memberName }}</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item">
<view class="title-con">{{ '抗衰达人' }}</view>
<view class="screen">
<view class="screen-view" @click="screenTaps1(index, item)"
v-for="(item, index) in screenList1"
:style="remIndex1 == item.id ? 'font-weight:600' : ''">
{{ item.name }}
</view>
</view>
<view class="tjClass" v-for="(item, index) in ksList">
<view class="styleColors">NO.0{{ item.rank }}</view>
<img class="avatar" v-if="item.headPath" :src="item.headPath" />
<image class="avatar" v-else src="@/static/images/avatar.png" />
<view class="user-name">{{ item.memberName }}</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
</u-popup>
</view>
</template>
<script>
import * as my from '@/config/mine.js'
// import Swiper from "swiper";
export default {
name: "talentList",
props: {
drShow: {
type: Boolean,
default: false
}
},
data() {
return {
screenList: [{
name: '年度',
id: 6
},
{
name: '季度',
id: 5
},
{
name: '月度',
id: 4
},
],
screenList1: [{
name: '年度',
id: 9
},
{
name: '季度',
id: 8
},
{
name: '月度',
id: 7
},
],
remIndex: 6, //
remIndex1: 9, //
tjList: [],
ksList: [],
indicatorDots: true,
autoplay: false,
interval: 2000,
duration: 500
};
},
mounted() {
this.getUserTj();
this.getUserKs()
},
methods: {
closeShow(){
this.$emit('closeShow')
},
screenTaps(index, item) {
this.remIndex = item.id;
this.getUserTj();
},
screenTaps1(index, item) {
this.remIndex1 = item.id;
this.getUserKs();
},
getUserTj() {
my.recommend({
wallType: this.remIndex
}).then((res) => {
this.tjList = res.rows;
});
},
getUserKs() {
my.repurchase({
wallType: this.remIndex1
}).then((res) => {
this.ksList = res.rows;
});
},
}
}
</script>
<style lang="scss" scoped>
.uni-margin-wrap {
width: 690rpx;
height:800rpx;
.swiper {
height: 800rpx;
.swiper-item {
display: block;
text-align: center;
.title-con {
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #282828;
margin: 60rpx 0;
}
.screen {
display: flex;
align-items: center;
justify-content: center;
.screen-view {
margin: 0 50rpx;
cursor: pointer;
font-size: 30rpx;
font-family: Source Han Sans CN;
color: #282828;
}
}
.tjClass {
display: flex;
align-items: center;
margin-top: 30rpx;
justify-content: center;
.styleColors {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #005BAC;
}
.avatar {
width: 124rpx;
height: 124rpx;
border-radius: 50%;
margin-top: 10rpx;
margin: 0 30rpx;
}
.user-name {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #282828;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
}
}
.swiper-container {
.swiper-slide {
width: 650rpx;
padding-bottom: 40rpx;
background: #ffffff;
text-align: center;
.title-con {
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #282828;
margin: 60rpx 0;
}
.screen {
display: flex;
align-items: center;
justify-content: center;
.screen-view {
margin: 0 50rpx;
cursor: pointer;
font-size: 30rpx;
font-family: Source Han Sans CN;
color: #282828;
}
}
.tjClass {
display: flex;
align-items: center;
margin-top: 30rpx;
justify-content: center;
.styleColors {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #005BAC;
}
.avatar {
width: 124rpx;
height: 124rpx;
border-radius: 50%;
margin-top: 10rpx;
margin: 0 30rpx;
}
.user-name {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #282828;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
}
</style>

View File

@ -12,12 +12,5 @@ export const getMemberGift = (params) => http.get('/member/api/member-gift/membe
//全部荣誉墙 //全部荣誉墙
export const getMemberHonorWallAll = (params) => http.get('/member/api/member/member-honor-wall-all', { params }) export const getMemberHonorWallAll = (params) => http.get('/member/api/member/member-honor-wall-all', { params })
// 获取抗衰达人
export const repurchase =(params)=>http.post('/member/api/achieve/repurchase',params)
// 获取推荐达人
export const recommend =(params)=>http.post('/member/api/achieve/recommend',params)
//年度奖衔 //年度奖衔
export const yearAwards = (params) => http.get('/member/api/member/year-awards-list', { params }) export const yearAwards = (params) => http.get('/member/api/member/year-awards-list', { params })

1445
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,10 @@
"weixin-js-sdk": "^1.6.0" "weixin-js-sdk": "^1.6.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/eslint-config-prettier": "^8.0.0",
"eslint": "^8.57.1",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-vue": "^9.33.0",
"less": "^3.13.1", "less": "^3.13.1",
"less-loader": "^4.1.0", "less-loader": "^4.1.0",
"prettier": "^3.5.3" "prettier": "^3.5.3"
@ -25,7 +29,11 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"format": "prettier --write .", "format": "prettier --write .",
"check-format": "prettier --check ." "check-format": "prettier --check .",
"lint": "eslint --ext .js,.vue .",
"lint:fix": "eslint --ext .js,.vue . --fix",
"format:check": "prettier --check \"**/*.{js,vue,json,md}\"",
"format:write": "prettier --write \"**/*.{js,vue,json,md}\""
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",

View File

@ -171,13 +171,13 @@ export default {
message: "请输入手机号", message: "请输入手机号",
trigger: ["blur"], trigger: ["blur"],
}, },
// { {
// validator: (rule, value, callback) => { validator: (rule, value, callback) => {
// return this.$u.test.mobile(value); return this.$u.test.mobile(value);
// }, },
// message: "", message: "手机号格式不正确",
// trigger: ["blur"], trigger: ["blur"],
// }, },
], ],
}, },
}; };

View File

@ -637,15 +637,18 @@
message: '请输入', message: '请输入',
trigger: "blur" trigger: "blur"
}, ], }, ],
storePhone: [{ storePhone: [
{
required: true, required: true,
message: '请输入联系方式', message: '请输入手机号',
trigger: 'blur', trigger: ['blur'],
}, },
{ {
min: 11, validator: (rule, value, callback) => {
message: '请输入正确的手机号', return this.$u.test.mobile(value)
trigger: 'blur' },
message: '手机号格式不正确',
trigger: ['blur'],
}, },
], ],
storeSign: [{ storeSign: [{

View File

@ -696,10 +696,16 @@ export default {
storePhone: [ storePhone: [
{ {
required: true, required: true,
message: '请输入联系方式', message: '请输入手机号',
trigger: 'blur', trigger: ['blur'],
},
{
validator: (rule, value, callback) => {
return this.$u.test.mobile(value)
},
message: '手机号格式不正确',
trigger: ['blur'],
}, },
{ min: 11, message: '请输入正确的手机号', trigger: 'blur' },
], ],
storeSign: [ storeSign: [
{ required: true, message: " ", trigger: "blur" }, { required: true, message: " ", trigger: "blur" },

View File

@ -134,7 +134,7 @@
this.tips = text; this.tips = text;
}, },
getCode() { getCode() {
if (this.dataForm.phone) { if (this.dataForm.phone && this.$u.test.mobile(this.dataForm.phone)) {
if (this.$refs.uCode.canGetCode) { if (this.$refs.uCode.canGetCode) {
// //
uni.showLoading({ uni.showLoading({
@ -153,7 +153,7 @@
uni.$u.toast('倒计时结束后再发送'); uni.$u.toast('倒计时结束后再发送');
} }
} else { } else {
uni.$u.toast('请先输入手机号') uni.$u.toast(this.dataForm.phone ? '手机号格式不正确' : '请先输入手机号')
return return
} }
}, },

View File

@ -125,13 +125,13 @@ export default {
message: '请输入手机号', message: '请输入手机号',
trigger: ['blur'], trigger: ['blur'],
}, },
// { {
// validator: (rule, value, callback) => { validator: (rule, value, callback) => {
// return this.$u.test.mobile(value); return this.$u.test.mobile(value);
// }, },
// message: "", message: "手机号格式不正确",
// trigger: ["blur"], trigger: ["blur"],
// }, },
], ],
}, },
} }

View File

@ -13,34 +13,27 @@
<!-- <view class="clearFilter" @click="clearFilter"> <!-- <view class="clearFilter" @click="clearFilter">
清除筛选 清除筛选
</view> --> </view> -->
<view <view class="shareImg" @click="rightOpen">
class="shareImg" <img src="@/static/images/serach_999.png" alt="" />
@click="rightOpen"
>
<img
src="@/static/images/serach_999.png"
alt=""
/>
</view> </view>
<view class="zhan1"></view> <view class="zhan1"></view>
<view class="con_top"> <view class="con_top">
<view class="tab"> <view class="tab">
<view v-for="(item, index) in orderStatusList" <view
v-for="(item, index) in orderStatusList"
:key="index" :key="index"
@click="isTab = item.value" @click="isTab = item.value"
class="tab_i"> class="tab_i"
>
<view>{{ item.label }}</view> <view>{{ item.label }}</view>
<view :class="isTab===item.value?'heng':'heng1'"> <view :class="isTab === item.value ? 'heng' : 'heng1'"> </view>
</view>
</view> </view>
</view> </view>
<view class="hui"></view> <view class="hui"></view>
</view> </view>
<view class="zhan"></view> <view class="zhan"></view>
<view v-for="(item, index) in orderLists" <view v-for="(item, index) in orderLists" :key="index" class="orderList_i">
:key="index"
class="orderList_i">
<view @click.stop="getDetails(item)"> <view @click.stop="getDetails(item)">
<view class="disFlex atm just mbt10"> <view class="disFlex atm just mbt10">
<view class="disFlex atm"> <view class="disFlex atm">
@ -51,12 +44,13 @@
{{ item.orderStatusVal }} {{ item.orderStatusVal }}
</view> </view>
</view> </view>
<view v-for="ctem,cndex in item.itemList" <view
v-for="(ctem, cndex) in item.itemList"
:key="cndex" :key="cndex"
class="disFlex atm just mbt10"> class="disFlex atm just mbt10"
>
<view class="disFlex atm"> <view class="disFlex atm">
<img :src="ctem.cover" <img :src="ctem.cover" alt="" />
alt="">
<view class="tit3"> <view class="tit3">
{{ ctem.productName }} {{ ctem.productName }}
</view> </view>
@ -65,73 +59,82 @@
<view class="tit4"> <view class="tit4">
{{ ctem.price | numberToCurrency | isLocal }} {{ ctem.price | numberToCurrency | isLocal }}
</view> </view>
<view class="tit5"> <view class="tit5"> x{{ ctem.quantity }} </view>
x{{ ctem.quantity }}
</view> </view>
</view> </view>
<view class="tit1"> {{ '创建时间' }}{{ item.creationTime }} </view>
</view>
<view class="tit1">
{{'创建时间'}}{{ item.creationTime }}
</view>
</view> </view>
<view class="xian"></view> <view class="xian"></view>
<view class="disFlex"> <view class="disFlex">
<view style="flex: 1;"></view> <view style="flex: 1"></view>
<view class="disFlex"> <view class="disFlex">
<u-button type="primary" <u-button
type="primary"
class="lBtn" class="lBtn"
:plain="true" :plain="true"
shape="circle" shape="circle"
text="备注" text="备注"
@click="openRemark(item)" @click="openRemark(item)"
v-if="item.remark" v-if="item.remark"
color="#999"></u-button> color="#999"
<u-button type="primary" ></u-button>
<u-button
type="primary"
v-if="item.orderStatus == 0" v-if="item.orderStatus == 0"
class="lBtn" class="lBtn"
:plain="true" :plain="true"
shape="circle" shape="circle"
:text="'撤销订单'" :text="'撤销订单'"
@click="cancelPay(item)" @click="cancelPay(item)"
color="#999"></u-button> color="#999"
<u-button type="primary" ></u-button>
<u-button
type="primary"
v-if="item.orderStatus == 0" v-if="item.orderStatus == 0"
shape="circle" shape="circle"
@click="goPay(item)" @click="goPay(item)"
:text="'支付'" :text="'支付'"
color="#005BAC"></u-button> color="#005BAC"
<u-button type="primary" ></u-button>
<u-button
type="primary"
v-if="item.orderStatus == 3 || item.orderStatus == 5" v-if="item.orderStatus == 3 || item.orderStatus == 5"
@click="openWl(item)" @click="openWl(item)"
shape="circle" shape="circle"
:text="'查看物流'" :text="'查看物流'"
color="#E03030"></u-button> color="#E03030"
></u-button>
</view> </view>
</view> </view>
</view> </view>
<view class="timePicker"> <view class="timePicker">
<u-datetime-picker :closeOnClickOverlay="true" <u-datetime-picker
:closeOnClickOverlay="true"
@close="dataShow = false" @close="dataShow = false"
@cancel="dataShow = false" @cancel="dataShow = false"
@confirm="getDate" @confirm="getDate"
:show="dataShow" :show="dataShow"
v-model="value1" v-model="value1"
mode="date"></u-datetime-picker> mode="date"
<u-datetime-picker :closeOnClickOverlay="true" ></u-datetime-picker>
<u-datetime-picker
:closeOnClickOverlay="true"
@close="dataShow1 = false" @close="dataShow1 = false"
@cancel="dataShow1 = false" @cancel="dataShow1 = false"
@confirm="getDate1" @confirm="getDate1"
:show="dataShow1" :show="dataShow1"
v-model="value2" v-model="value2"
mode="date"></u-datetime-picker> mode="date"
></u-datetime-picker>
</view> </view>
<u-popup class="pop" <u-popup
class="pop"
:show="detailsShow" :show="detailsShow"
closeable closeable
:round="10" :round="10"
mode="center" mode="center"
@close="detailsShow= false"> @close="detailsShow = false"
>
<view class="pop_a"> <view class="pop_a">
<view class="t_tit"> <view class="t_tit">
{{ '订单详情' }} {{ '订单详情' }}
@ -139,21 +142,25 @@
<view class="pop_t">{{ '商品信息' }}</view> <view class="pop_t">{{ '商品信息' }}</view>
<view class="xian"></view> <view class="xian"></view>
<view class="orderList_a"> <view class="orderList_a">
<view v-for="ctem,cndex in details.itemList" <view
v-for="(ctem, cndex) in details.itemList"
:key="cndex" :key="cndex"
class="disFlex atm just mbt10"> class="disFlex atm just mbt10"
<view class="disFlex just" >
style="flex:1"> <view class="disFlex just" style="flex: 1">
<img :src="ctem.cover" <img :src="ctem.cover" alt="" />
alt="">
<view style="flex: 1"> <view style="flex: 1">
<view class="disFlex atm just"> <view class="disFlex atm just">
<view class="tit3"> <view class="tit3">
{{ ctem.productName }} {{ ctem.productName }}
</view> </view>
<view class="tit5"> <view class="tit5"> x{{ ctem.quantity }} </view>
x{{ ctem.quantity }}
</view> </view>
<view
class="tit3"
style="color: #999; font-size: 24rpx; margin-top: 6rpx"
>
{{ ctem.specsName }}
</view> </view>
<view class="tit4"> <view class="tit4">
{{ ctem.price | numberToCurrency | isLocal }} {{ ctem.price | numberToCurrency | isLocal }}
@ -171,9 +178,7 @@
</view> </view>
</view> </view>
<view class="disFlex atm just mbt10"> <view class="disFlex atm just mbt10">
<view class="tit1"> <view class="tit1"> {{ '订单业绩' }}(PV) </view>
{{'订单业绩'}}(PV)
</view>
<view class="tit6"> <view class="tit6">
{{ details.orderAchieve | toThousandthAndKeepDecimal }} {{ details.orderAchieve | toThousandthAndKeepDecimal }}
</view> </view>
@ -199,37 +204,43 @@
</view> </view>
</view> </view>
<view class="mbt10 tit1"> <view class="mbt10 tit1">
{{ details.recProvince }} {{ details.recCity }} {{ details.recCounty }} {{ details.address }} {{ details.recProvince }} {{ details.recCity }}
{{ details.recCounty }} {{ details.address }}
</view> </view>
</view> </view>
</u-popup> </u-popup>
<u-modal :show="cancleOrder" <u-modal
:show="cancleOrder"
showConfirmButton showConfirmButton
showCancelButton showCancelButton
:content='content' :content="content"
confirmColor='#DE3932' confirmColor="#DE3932"
@confirm="toCancel" @confirm="toCancel"
@cancel="cancleOrder = false" @cancel="cancleOrder = false"
ref="uModal" ref="uModal"
:asyncClose="true"></u-modal> :asyncClose="true"
></u-modal>
<u-modal :show="isRemark" <u-modal
:show="isRemark"
showConfirmButton showConfirmButton
:content='remarkEd' :content="remarkEd"
confirmColor='#DE3932' confirmColor="#DE3932"
@confirm="isRemark = false" @confirm="isRemark = false"
ref="uModal" ref="uModal"
:asyncClose="true"></u-modal> :asyncClose="true"
></u-modal>
<view class="contain"> <view class="contain">
<u-popup :show="rightShow" <u-popup
:show="rightShow"
mode="right" mode="right"
@close="rightShow = false" @close="rightShow = false"
:closeOnClickOverlay="false"> :closeOnClickOverlay="false"
>
<view class="rightPopup"> <view class="rightPopup">
<view class="popup_top"> <view class="popup_top">
<view>{{ '筛选' }}</view> <view>{{ '筛选' }}</view>
<view class="top_red" <view class="top_red" @click="rightShow = false">{{ '返回' }}</view>
@click="rightShow = false">{{'返回'}}</view>
</view> </view>
<view class="typesBox"> <view class="typesBox">
<view class="typeTitle"> <view class="typeTitle">
@ -237,9 +248,11 @@
</view> </view>
<view class="choiceBox"> <view class="choiceBox">
<view class="flex_btn"> <view class="flex_btn">
<u--input :placeholder="'请输入'" <u--input
:placeholder="'请输入'"
v-model="select.orderCode" v-model="select.orderCode"
border="none"></u--input> border="none"
></u--input>
</view> </view>
</view> </view>
</view> </view>
@ -249,9 +262,11 @@
</view> </view>
<view class="choiceBox"> <view class="choiceBox">
<view class="flex_btn"> <view class="flex_btn">
<u--input :placeholder="'请输入'" <u--input
:placeholder="'请输入'"
v-model="select.memberCode" v-model="select.memberCode"
border="none"></u--input> border="none"
></u--input>
</view> </view>
</view> </view>
</view> </view>
@ -260,14 +275,15 @@
{{ '订单类型' }} {{ '订单类型' }}
</view> </view>
<view class="choiceBox1"> <view class="choiceBox1">
<view class="flex_btn" <view
class="flex_btn"
@click="clickType(item)" @click="clickType(item)"
v-for="(item, index) in orderTypes" v-for="(item, index) in orderTypes"
:key="index" :key="index"
:class="select.orderType==item.value?'selectbtn':''"> :class="select.orderType == item.value ? 'selectbtn' : ''"
>
{{ item.label }} {{ item.label }}
</view> </view>
</view> </view>
</view> </view>
<view class="typesBox"> <view class="typesBox">
@ -275,28 +291,25 @@
{{ '日期区间' }} {{ '日期区间' }}
</view> </view>
<view class="choiceBox1"> <view class="choiceBox1">
<view class="flex_btn" <view class="flex_btn" style="flex: 1" @click="openDate">
style="flex:1" {{
@click="openDate"> select.creationTimeStart
{{select.creationTimeStart?select.creationTimeStart:'开始时间'}} ? select.creationTimeStart
: '开始时间'
}}
</view> </view>
<view style="color: #666;"> <view style="color: #666"> </view>
<view class="flex_btn" style="flex: 1" @click="openDate1">
</view> {{
<view class="flex_btn" select.creationTimeEnd ? select.creationTimeEnd : '结束时间'
style="flex:1" }}
@click="openDate1">
{{select.creationTimeEnd?select.creationTimeEnd:'结束时间'}}
</view> </view>
</view> </view>
</view> </view>
<view class="footer"> <view class="footer">
<view class="footer_l" <view class="footer_l" @tap="reset">{{ '清空筛选条件' }}</view>
@tap="reset">{{'清空筛选条件'}}</view> <view class="footer_r" @tap="getDataList(1)">{{ '确定' }}</view>
<view class="footer_r"
@tap="getDataList(1)">{{'确定'}}</view>
</view> </view>
</view> </view>
</u-popup> </u-popup>
</view> </view>
@ -378,7 +391,7 @@ export default {
this.select.orderType = item.value this.select.orderType = item.value
}, },
getOrderType() { getOrderType() {
api.orderType().then((res) => { api.orderType().then(res => {
res.data.unshift({ res.data.unshift({
label: '全部', label: '全部',
value: '', value: '',
@ -400,7 +413,7 @@ export default {
}, },
goPay(item) { goPay(item) {
let orderItemsParams = [] let orderItemsParams = []
item.itemList.forEach((ctem) => { item.itemList.forEach(ctem => {
if (ctem.waresCode) { if (ctem.waresCode) {
orderItemsParams.push({ orderItemsParams.push({
waresCode: ctem.waresCode, waresCode: ctem.waresCode,
@ -411,7 +424,7 @@ export default {
specialArea: item.orderType, specialArea: item.orderType,
orderItemsParams: orderItemsParams, orderItemsParams: orderItemsParams,
} }
api.payCheck(item.orderCode).then((res) => { api.payCheck(item.orderCode).then(res => {
if (res.code == 200) { if (res.code == 200) {
uni.navigateTo({ uni.navigateTo({
url: url:
@ -435,7 +448,7 @@ export default {
// }) // })
}, },
toCancel() { toCancel() {
api.cancelOrder(this.cancelCode).then((res) => { api.cancelOrder(this.cancelCode).then(res => {
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ uni.showToast({
title: '订单已取消', title: '订单已取消',
@ -454,9 +467,10 @@ export default {
this.cancleOrder = true this.cancleOrder = true
}, },
getDetails(item) { getDetails(item) {
api.orderDetails(item.orderCode).then((res) => { api.orderDetails(item.orderCode).then(res => {
this.details = res.data this.details = res.data
this.detailsShow = true this.detailsShow = true
console.log(this.details, '....this.details')
}) })
}, },
getDate(e) { getDate(e) {
@ -474,7 +488,7 @@ export default {
this.dataShow1 = true this.dataShow1 = true
}, },
getOrderStatus() { getOrderStatus() {
api.orderStatus().then((res) => { api.orderStatus().then(res => {
res.data.unshift({ res.data.unshift({
label: '全部', label: '全部',
value: '', value: '',
@ -490,7 +504,7 @@ export default {
this.rightShow = false this.rightShow = false
api api
.orderList(Object.assign({}, this.queryParams, this.select)) .orderList(Object.assign({}, this.queryParams, this.select))
.then((res) => { .then(res => {
this.orderLists = this.orderLists.concat(res.rows) this.orderLists = this.orderLists.concat(res.rows)
this.total = res.total this.total = res.total
}) })
@ -503,7 +517,9 @@ export default {
.index_header { .index_header {
background: #fff; background: #fff;
font-size: 18px; font-size: 18px;
font-family: PingFang SC-Semibold, PingFang SC; font-family:
PingFang SC-Semibold,
PingFang SC;
font-weight: 600; font-weight: 600;
color: #333333; color: #333333;
text-align: center; text-align: center;
@ -554,7 +570,7 @@ export default {
background: #f5f6f8; // margin-right: 40rpx; background: #f5f6f8; // margin-right: 40rpx;
} }
.seatch_r { .seatch_r {
background: #005BAC; background: #005bac;
border-radius: 50%; border-radius: 50%;
padding: 8rpx; padding: 8rpx;
margin-left: 24rpx; margin-left: 24rpx;
@ -610,7 +626,7 @@ export default {
.heng { .heng {
width: 24px; width: 24px;
height: 2px; height: 2px;
background: #005BAC; background: #005bac;
border-radius: 1px 1px 1px 1px; border-radius: 1px 1px 1px 1px;
margin-top: 4rpx; margin-top: 4rpx;
} }
@ -767,7 +783,7 @@ export default {
width: 645rpx; width: 645rpx;
.popup_top { .popup_top {
padding: 25rpx; padding: 25rpx;
background-color: rgba(176, 196, 222, .45); background-color: rgba(176, 196, 222, 0.45);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@ -777,7 +793,7 @@ export default {
color: #333333; color: #333333;
border-bottom: 2rpx solid #eeeeee; border-bottom: 2rpx solid #eeeeee;
.top_red { .top_red {
color: #005BAC; color: #005bac;
} }
} }
.typesBox { .typesBox {
@ -809,7 +825,7 @@ export default {
width: 100%; width: 100%;
} }
.selectbtn { .selectbtn {
background-color: #005BAC; background-color: #005bac;
color: #ffffff; color: #ffffff;
} }
} }
@ -820,7 +836,7 @@ export default {
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
.flex_btn { .flex_btn {
background-color: rgba(176, 196, 222, .45); background-color: rgba(176, 196, 222, 0.45);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -833,7 +849,7 @@ export default {
margin: 17rpx 5rpx; margin: 17rpx 5rpx;
} }
.selectbtn { .selectbtn {
background-color: #005BAC; background-color: #005bac;
color: #ffffff; color: #ffffff;
} }
} }
@ -854,7 +870,7 @@ export default {
.footer_r { .footer_r {
width: 327rpx; width: 327rpx;
text-align: center; text-align: center;
background: #005BAC; background: #005bac;
height: 100rpx; height: 100rpx;
line-height: 100rpx; line-height: 100rpx;
color: #fff; color: #fff;

View File

@ -252,7 +252,7 @@
this.tips = text; this.tips = text;
}, },
getCode() { getCode() {
if (this.dataForm.phone) { if (this.dataForm.phone && this.$u.test.mobile(this.dataForm.phone)) {
if (this.$refs.uCode.canGetCode) { if (this.$refs.uCode.canGetCode) {
// //
uni.showLoading({ uni.showLoading({
@ -271,7 +271,7 @@
uni.$u.toast('倒计时结束后再发送'); uni.$u.toast('倒计时结束后再发送');
} }
} else { } else {
uni.$u.toast('请先输入手机号') uni.$u.toast(this.dataForm.phone ? '手机号格式不正确' : '请先输入手机号')
return return
} }
}, },

View File

@ -112,8 +112,15 @@ export default {
phone: [ phone: [
{ {
required: true, required: true,
message: '请输入联系方式', message: '请输入手机号',
trigger: ['change', 'blur'], trigger: ['blur'],
},
{
validator: (rule, value, callback) => {
return this.$u.test.mobile(value)
},
message: '手机号格式不正确',
trigger: ['blur'],
}, },
], ],
name: [ name: [

View File

@ -671,7 +671,21 @@ export default {
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
phone: [{ validator: this.phonePass, trigger: ["blur"] }], phone: [
{
required: true,
message: "请输入手机号",
trigger: ["blur"],
},
{
validator: (rule, value, callback) => {
return this.$u.test.mobile(value);
},
message: "手机号格式不正确",
trigger: ["blur"],
}
],
recName: [ recName: [
{ {
required: true, required: true,

View File

@ -1,135 +1,143 @@
<!-- <!--
* @Descripttion: * @Descripttion: 订单撤销页面
* @version: * @version: 1.0.0
* @Author: kBank * @Author: kBank
* @Date: 2022-11-21 15:11:22 * @Date: 2022-11-21 15:11:22
--> -->
<template> <template>
<view class="content"> <view class="content">
<view v-for="(item, index) in orderLists" <view
class="orderList_i"> v-for="(item, index) in orderLists"
:key="`order-${item.orderCode || index}`"
class="orderList_i"
>
<view @click.stop="getDetails(item)"> <view @click.stop="getDetails(item)">
<view class="disFlex atm just mbt10"> <view class="disFlex atm just mbt10">
<view class="disFlex atm"> <view class="disFlex atm">
<view class="quan">{{ item.orderTypeVal }}</view> <view class="quan">{{ item.orderTypeVal }}</view>
<view class="tit1">{{'订单编号'}}{{ item.orderCode }}</view> <view class="tit1">订单编号{{ item.orderCode }}</view>
</view> </view>
<view class="tit2"> <view class="tit2">
{{ item.orderStatusVal }} {{ item.orderStatusVal }}
</view> </view>
</view> </view>
<view v-for="ctem,cndex in item.itemList"
:key="cndex" <view
class="disFlex atm just mbt10"> v-for="(ctem, cndex) in item.itemList"
:key="`item-${ctem.productName || cndex}`"
class="disFlex atm just mbt10"
>
<view class="disFlex atm"> <view class="disFlex atm">
<img :src="ctem.cover" <img :src="ctem.cover" alt="商品图片" />
alt="">
<view class="tit3"> <view class="tit3">
{{ ctem.productName }} {{ ctem.productName }}
</view> </view>
</view> </view>
<view style="text-align: right"> <view style="text-align: right">
<view class="tit4"> <view class="tit4">
{{ ctem.price | numberToCurrency | isLocal}} {{ formatPrice(ctem.price) }}
</view> </view>
<view class="tit5"> <view class="tit5">x{{ ctem.quantity }}</view>
x{{ ctem.quantity }}
</view> </view>
</view> </view>
<view class="tit1">创建时间{{ item.creationTime }}</view>
</view> </view>
<view class="tit1">
{{'创建时间'}}{{ item.creationTime }}
</view>
</view>
<view class="xian"></view> <view class="xian"></view>
<view class="disFlex"> <view class="disFlex">
<view style="flex: 1;"></view> <view style="flex: 1"></view>
<view class="disFlex"> <view class="disFlex">
<u-button type="primary" <u-button
type="primary"
class="lBtn" class="lBtn"
:plain="true" :plain="true"
shape="circle" shape="circle"
:text="'撤销订单'" text="撤销订单"
color="#999"
@click="cancleOrder(item)" @click="cancleOrder(item)"
color="#999"></u-button> ></u-button>
</view> </view>
</view> </view>
</view> </view>
<u-popup class="pop"
:show="detailsShow" <!-- 订单详情弹窗 -->
<u-popup
v-model="detailsShow"
class="pop"
closeable closeable
:round="10" :round="10"
mode="center" mode="center"
@close="detailsShow= false"> @close="detailsShow = false"
>
<view class="pop_a"> <view class="pop_a">
<view class="t_tit"> <view class="t_tit">订单详情</view>
{{'订单详情'}} <view class="pop_t">商品信息</view>
</view>
<view class="pop_t">{{'商品信息'}}</view>
<view class="xian"></view> <view class="xian"></view>
<view class="orderList_a"> <view class="orderList_a">
<view v-for="ctem,cndex in details.itemList" <view
:key="cndex" v-for="(ctem, cndex) in details.itemList"
class="disFlex atm just mbt10"> :key="`detail-item-${ctem.productName || cndex}`"
<view class="disFlex just" class="disFlex atm just mbt10"
style="flex:1"> >
<img :src="ctem.cover" <view class="disFlex just" style="flex: 1">
alt=""> <img :src="ctem.cover" alt="商品图片" />
<view style="flex: 1"> <view style="flex: 1">
<view class="disFlex atm just"> <view class="disFlex atm just">
<view class="tit3"> <view class="tit3">
{{ ctem.productName }} {{ ctem.productName }}
</view> </view>
<view class="tit5"> <view class="tit5">x{{ ctem.quantity }}</view>
x{{ ctem.quantity }}
</view> </view>
<view
class="tit3"
style="color: #999; font-size: 24rpx; margin-top: 6rpx"
>
{{ ctem.specsName }}
</view> </view>
<view class="tit4"> <view class="tit4">
{{ ctem.price | numberToCurrency | isLocal}} {{ formatPrice(ctem.price) }}
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="disFlex atm just mbt10"> <view class="disFlex atm just mbt10">
<view class="tit1"> <view class="tit1">订单金额</view>
{{'订单金额'}}
</view>
<view class="tit6"> <view class="tit6">
{{ details.orderAmount |toThousandthAndKeepDecimal}} {{ formatCurrency(details.orderAmount) }}
</view> </view>
</view> </view>
<view class="disFlex atm just mbt10"> <view class="disFlex atm just mbt10">
<view class="tit1"> <view class="tit1">订单业绩(PV)</view>
{{'订单业绩'}}(PV)
</view>
<view class="tit6"> <view class="tit6">
{{ details.orderAchieve |toThousandthAndKeepDecimal}} {{ formatCurrency(details.orderAchieve) }}
</view> </view>
</view> </view>
<!-- <view class="disFlex atm just mbt10">
<view class="tit1"> <!-- 暂时注释的订单业绩(BV)
{{'订单业绩'}}(BV) <view class="disFlex atm just mbt10">
</view> <view class="tit1">订单业绩(BV)</view>
<view class="tit6"> <view class="tit6">
{{ details.orderAssAchieve |toThousandthAndKeepDecimal}} {{ formatCurrency(details.orderAssAchieve) }}
</view> </view>
</view> --> </view>
-->
<view class="xian"></view> <view class="xian"></view>
<view class="pop_t mbt10">
{{'收货人信息'}} <view class="pop_t mbt10">收货人信息</view>
</view>
<view class="disFlex atm mbt10 tit6"> <view class="disFlex atm mbt10 tit6">
<view> <view>{{ details.recName }}</view>
{{ details.recName }} <view>{{ details.recPhone }}</view>
</view>
<view>
{{ details.recPhone }}
</view>
</view> </view>
<view class="mbt10 tit1"> <view class="mbt10 tit1">
{{ details.recProvince }} {{ details.recCity }} {{ details.recCounty }} {{ details.address }} {{ details.recProvince }} {{ details.recCity }}
{{ details.recCounty }} {{ details.address }}
</view> </view>
</view> </view>
</u-popup> </u-popup>
@ -138,7 +146,9 @@
<script> <script>
import * as api from '@/config/order.js' import * as api from '@/config/order.js'
export default { export default {
name: 'CancelOrder',
data() { data() {
return { return {
orderTypes: [], orderTypes: [],
@ -147,7 +157,7 @@ export default {
content: '确认取消订单?', content: '确认取消订单?',
isRemark: false, isRemark: false,
cancelCode: '', cancelCode: '',
details: '', details: {},
orderStatusList: [], orderStatusList: [],
detailsShow: false, detailsShow: false,
isTab: -1, isTab: -1,
@ -166,22 +176,76 @@ export default {
onLoad() { onLoad() {
this.getDataList() this.getDataList()
}, },
onShow() {}, onShow() {},
onReachBottom() { onReachBottom() {
this.queryParams.pageNum++ this.queryParams.pageNum++
this.getDataList() this.getDataList()
}, },
methods: { methods: {
/**
* 格式化价格显示
*/
formatPrice(price) {
if (!price && price !== 0) return ''
//
return this.numberToCurrency(this.isLocal(price))
},
/**
* 格式化货币显示
*/
formatCurrency(amount) {
if (!amount && amount !== 0) return ''
return this.toThousandthAndKeepDecimal(amount)
},
/**
* 数字转货币格式 - 替代原来的filter
*/
numberToCurrency(num) {
// filter
if (!num && num !== 0) return ''
return parseFloat(num).toFixed(2)
},
/**
* 本地化处理 - 替代原来的filter
*/
isLocal(value) {
// filter
return value
},
/**
* 千分位格式化 - 替代原来的filter
*/
toThousandthAndKeepDecimal(num) {
if (!num && num !== 0) return '0.00'
return parseFloat(num)
.toFixed(2)
.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
},
/**
* 撤销订单
*/
cancleOrder(item) { cancleOrder(item) {
let that = this const that = this
uni.showModal({ uni.showModal({
title: '确定撤销订单?', title: '确定撤销订单?',
success: function (response) { success: function (response) {
if (response.confirm) { if (response.confirm) {
api.selfRevokeListCheck(item).then((res) => { api
if (res.code == 200) { .selfRevokeListCheck(item)
api.selfRevokeOrder(item).then((res) => { .then(res => {
if (res.code == 200) { if (res.code === 200) {
api
.selfRevokeOrder(item)
.then(res => {
if (res.code === 200) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none', icon: 'none',
@ -197,6 +261,14 @@ export default {
}) })
} }
}) })
.catch(error => {
console.error('撤销订单失败:', error)
uni.showToast({
title: '撤销订单失败',
icon: 'none',
duration: 1500,
})
})
} else { } else {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -205,30 +277,75 @@ export default {
}) })
} }
}) })
.catch(error => {
console.error('检查撤销条件失败:', error)
uni.showToast({
title: '操作失败,请重试',
icon: 'none',
duration: 1500,
})
})
} }
}, },
}) })
}, },
/**
* 获取订单详情
*/
getDetails(item) { getDetails(item) {
api.orderDetails(item.orderCode).then((res) => { api
this.details = res.data .orderDetails(item.orderCode)
.then(res => {
this.details = res.data || {}
this.detailsShow = true this.detailsShow = true
}) })
.catch(error => {
console.error('获取订单详情失败:', error)
uni.showToast({
title: '获取订单详情失败',
icon: 'none',
duration: 1500,
})
})
}, },
/**
* 获取订单状态列表
*/
getOrderStatus() { getOrderStatus() {
api.orderStatus().then((res) => { api
.orderStatus()
.then(res => {
res.data.unshift({ res.data.unshift({
label: '全部', label: '全部',
value: '', value: '',
}) })
this.orderStatusList = res.data this.orderStatusList = res.data
}) })
.catch(error => {
console.error('获取订单状态失败:', error)
})
}, },
getDataList(index) {
api.selfRevokeList(Object.assign({}, this.queryParams)).then((res) => { /**
this.orderLists = this.orderLists.concat(res.rows) * 获取数据列表
*/
getDataList() {
api
.selfRevokeList(Object.assign({}, this.queryParams))
.then(res => {
this.orderLists = this.orderLists.concat(res.rows || [])
this.total = res.total this.total = res.total
}) })
.catch(error => {
console.error('获取订单列表失败:', error)
uni.showToast({
title: '获取订单列表失败',
icon: 'none',
duration: 1500,
})
})
}, },
}, },
} }
@ -238,7 +355,9 @@ export default {
.index_header { .index_header {
background: #fff; background: #fff;
font-size: 18px; font-size: 18px;
font-family: PingFang SC-Semibold, PingFang SC; font-family:
PingFang SC-Semibold,
PingFang SC;
font-weight: 600; font-weight: 600;
color: #333333; color: #333333;
text-align: center; text-align: center;
@ -254,6 +373,7 @@ export default {
z-index: 1000000000; z-index: 1000000000;
right: 10rpx; right: 10rpx;
top: 10rpx; top: 10rpx;
img { img {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
@ -273,15 +393,16 @@ export default {
align-items: center; align-items: center;
position: relative; position: relative;
border-bottom: 2rpx solid #eee; border-bottom: 2rpx solid #eee;
.seach_i { .seach_i {
padding: 0 20rpx; padding: 0 20rpx;
border-radius: 34rpx; border-radius: 34rpx;
background: #fff; background: #f5f6f8;
flex: 1; flex: 1;
background: #f5f6f8; // margin-right: 40rpx;
} }
.seatch_r { .seatch_r {
background: #005BAC; background: #005bac;
border-radius: 50%; border-radius: 50%;
padding: 8rpx; padding: 8rpx;
margin-left: 24rpx; margin-left: 24rpx;
@ -292,14 +413,16 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 38rpx 26rpx; padding: 38rpx 26rpx;
.timeA { .timeA {
font-size: 26rpx; font-size: 26rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #333; color: #333;
margin-right: 46rpx; margin-right: 46rpx;
border-bottom: 2rpx solid #fff; // padding-bottom: 10rpx; border-bottom: 2rpx solid #fff;
} }
.timeB { .timeB {
width: 158rpx; width: 158rpx;
font-size: 24rpx; font-size: 24rpx;
@ -307,7 +430,7 @@ export default {
font-weight: 400; font-weight: 400;
color: #999999; color: #999999;
margin-right: 46rpx; margin-right: 46rpx;
border-bottom: 2rpx solid #eee; // padding-bottom: 10rpx; border-bottom: 2rpx solid #eee;
text-align: center; text-align: center;
} }
} }
@ -322,12 +445,11 @@ export default {
} }
.tab_i { .tab_i {
// width: 120rpx;
text-align: center; text-align: center;
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 400; font-weight: 400;
color: #333333; // margin-right: 28rpx; color: #333333;
white-space: nowrap; white-space: nowrap;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -386,6 +508,7 @@ export default {
padding: 25rpx; padding: 25rpx;
border-bottom: 22rpx solid #eee; border-bottom: 22rpx solid #eee;
background: #fff; background: #fff;
img { img {
width: 124rpx; width: 124rpx;
height: 124rpx; height: 124rpx;
@ -439,7 +562,7 @@ export default {
font-size: 24rpx; font-size: 24rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #005BAC; color: #005bac;
} }
.tit5 { .tit5 {
@ -482,19 +605,20 @@ export default {
color: #333333; color: #333333;
} }
::v-deep .u-popup__content { :deep(.u-popup__content) {
// width: 90%; // width: 90%;
} }
.pop ::v-deep .u-popup__content { .pop :deep(.u-popup__content) {
width: 90%; width: 90%;
} }
.rightPopup { .rightPopup {
width: 645rpx; width: 645rpx;
.popup_top { .popup_top {
padding: 25rpx; padding: 25rpx;
background-color: rgba(176, 196, 222, .45); background-color: rgba(176, 196, 222, 0.45);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@ -503,12 +627,15 @@ export default {
font-weight: 400; font-weight: 400;
color: #333333; color: #333333;
border-bottom: 2rpx solid #eeeeee; border-bottom: 2rpx solid #eeeeee;
.top_red { .top_red {
color: #005BAC; color: #005bac;
} }
} }
.typesBox { .typesBox {
margin-top: 40rpx; margin-top: 40rpx;
.typeTitle { .typeTitle {
padding: 0 24rpx; padding: 0 24rpx;
font-size: 30rpx; font-size: 30rpx;
@ -516,11 +643,13 @@ export default {
font-weight: bold; font-weight: bold;
color: #333333; color: #333333;
} }
.choiceBox { .choiceBox {
padding: 0 12rpx; padding: 0 12rpx;
display: flex; display: flex;
margin-top: 17rpx; margin-top: 17rpx;
align-items: center; // flex-wrap: wrap; align-items: center;
.flex_btn { .flex_btn {
background-color: #f4f4f4; background-color: #f4f4f4;
display: flex; display: flex;
@ -535,19 +664,22 @@ export default {
margin: 17rpx 5rpx; margin: 17rpx 5rpx;
width: 100%; width: 100%;
} }
.selectbtn { .selectbtn {
background-color: #005BAC; background-color: #005bac;
color: #ffffff; color: #ffffff;
} }
} }
.choiceBox1 { .choiceBox1 {
padding: 0 12rpx; padding: 0 12rpx;
display: flex; display: flex;
margin-top: 17rpx; margin-top: 17rpx;
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
.flex_btn { .flex_btn {
background-color: rgba(176, 196, 222, .45); background-color: rgba(176, 196, 222, 0.45);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -559,18 +691,21 @@ export default {
color: #333333; color: #333333;
margin: 17rpx 5rpx; margin: 17rpx 5rpx;
} }
.selectbtn { .selectbtn {
background-color: #005BAC; background-color: #005bac;
color: #ffffff; color: #ffffff;
} }
} }
} }
.footer { .footer {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;
.footer_l { .footer_l {
width: 327rpx; width: 327rpx;
text-align: center; text-align: center;
@ -578,10 +713,11 @@ export default {
height: 100rpx; height: 100rpx;
line-height: 100rpx; line-height: 100rpx;
} }
.footer_r { .footer_r {
width: 327rpx; width: 327rpx;
text-align: center; text-align: center;
background: #005BAC; background: #005bac;
height: 100rpx; height: 100rpx;
line-height: 100rpx; line-height: 100rpx;
color: #fff; color: #fff;
@ -589,11 +725,11 @@ export default {
} }
} }
.contain ::v-deep .u-transition { .contain :deep(.u-transition) {
top: 45px !important; top: 45px !important;
} }
.timePicker ::v-deep .u-transition { .timePicker :deep(.u-transition) {
z-index: 10076 !important; z-index: 10076 !important;
} }
</style> </style>

View File

@ -1,26 +1,26 @@
<template> <template>
<view class="content"> <view class="content">
<view @click="goRouter(item.path)" <view
@click="goRouter(item.path)"
class="kuaibox" class="kuaibox"
v-for="(item, index) in theselfHeader" v-for="(item, index) in theselfHeader"
:key="index"> :key="index"
>
<view class=""> <view class="">
{{ item.name }} {{ item.name }}
</view> </view>
<image class="kuaiimg" <image class="kuaiimg" :src="item.url" mode=""></image>
:src="item.url"
mode=""></image>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import * as sel from '@/config/selfService.js' import * as sel from '@/config/selfService.js'
import { mapGetters } from "vuex"; import { mapGetters } from 'vuex'
export default { export default {
computed: { computed: {
...mapGetters(["user"]), ...mapGetters(['user']),
}, },
data() { data() {
return { return {
@ -43,12 +43,6 @@ export default {
path: '/pages/selfService/updateDomicile/updateDomicile', path: '/pages/selfService/updateDomicile/updateDomicile',
id: '3', id: '3',
}, },
{
name: '经销商认证',
url: '../../static/images/zz_jxs.png',
path: '/pages/delear/index',
id: '4',
},
// { // {
// name: '', // name: '',
// url: '../../static/images/zz_thhdd.png', // url: '../../static/images/zz_thhdd.png',
@ -69,97 +63,12 @@ export default {
}, },
], ],
theselfHeader: [], theselfHeader: [],
userInfo:'' userInfo: '',
} }
}, },
onLoad() { onShow() {
this.userInfo = uni.getStorageSync("User"); this.userInfo = uni.getStorageSync('User')
this.checkIfShow() this.checkIfShow()
if(this.userInfo.makerSpaceShow == 1||this.userInfo.makerSpaceShow==undefined) {
this.selfServiceList= [
{
name: '修改地址',
url: '../../static/images/zz_dz.png',
path: '/pages/selfService/updateAdress/updateAdress',
id: '1',
},
// {
// name: '',
// url: '../../static/images/zz_tjbb.png',
// path: '/pages/selfService/orderPick/orderPick',
// id: '2',
// },
{
name: '户籍变更',
url: '../../static/images/zz_gxbg.png',
path: '/pages/selfService/updateDomicile/updateDomicile',
id: '3',
},
// {
// name: '',
// url: '../../static/images/zz_thhdd.png',
// path: '/pages/selfService/monthlyHistory/monthlyHistory',
// id: '7',
// },
{
name: '自助撤单',
url: '../../static/images/zz_gzs.png',
path: '/pages/selfService/cancleOrder/index',
id: '8',
},
{
name: '实名认证',
url: '../../static/images/zz_jxs.png',
path: '/pages/selfService/realName/realName',
id: '9',
},
]
}else{
this.selfServiceList= [
{
name: '修改地址',
url: '../../static/images/zz_dz.png',
path: '/pages/selfService/updateAdress/updateAdress',
id: '1',
},
// {
// name: '',
// url: '../../static/images/zz_tjbb.png',
// path: '/pages/selfService/orderPick/orderPick',
// id: '2',
// },
{
name: '户籍变更',
url: '../../static/images/zz_gxbg.png',
path: '/pages/selfService/updateDomicile/updateDomicile',
id: '3',
},
{
name: '体验中心发起人认证',
url: '../../static/images/zz_cxlj.png',
path: '/pages/makerspace/index',
id: '6',
},
// {
// name: '',
// url: '../../static/images/zz_thhdd.png',
// path: '/pages/selfService/monthlyHistory/monthlyHistory',
// id: '7',
// },
{
name: '自助撤单',
url: '../../static/images/zz_gzs.png',
path: '/pages/selfService/cancleOrder/index',
id: '8',
},
{
name: '实名认证',
url: '../../static/images/zz_jxs.png',
path: '/pages/selfService/realName/realName',
id: '9',
},
]
}
}, },
methods: { methods: {
goRouter(path) { goRouter(path) {
@ -168,8 +77,8 @@ export default {
}) })
}, },
checkIfShow() { checkIfShow() {
sel.checkIfShow().then((res) => { sel.checkIfShow().then(res => {
this.selfServiceList.forEach((ele) => { this.selfServiceList.forEach(ele => {
if (ele.id == 1) { if (ele.id == 1) {
ele.ifshow = res.data.existAddress ele.ifshow = res.data.existAddress
} else if (ele.id == 2) { } else if (ele.id == 2) {
@ -192,8 +101,7 @@ export default {
} }
}) })
const theselfHeader = [] const theselfHeader = []
this.selfServiceList.forEach((element) => { this.selfServiceList.forEach(element => {
if (element.ifshow == 0) { if (element.ifshow == 0) {
theselfHeader.push(element) theselfHeader.push(element)
} }

View File

@ -13,29 +13,27 @@
:rules="rules" :rules="rules"
ref="uForm" ref="uForm"
> >
<u-form-item required <u-form-item required label-width="180rpx" :label="'证件(正面)'">
label-width="180rpx" <uploadImg
:label="'证件(正面)'"> :ifsfz="true"
<uploadImg :ifsfz='true' @imageUploaded="imageUploaded1"
@imageUploaded='imageUploaded1'
prop="idFront" prop="idFront"
ref="uploadImg1" ref="uploadImg1"
style="margin-right: 30rpx;" style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard1.png`" :bgimg="`../../../static/images/idCard1.png`"
v-model="dataForm.idFront"></uploadImg> v-model="dataForm.idFront"
></uploadImg>
</u-form-item> </u-form-item>
<u-form-item required <u-form-item required label-width="180rpx" :label="'证件(反面)'">
label-width="180rpx" <uploadImg
:label="'证件(反面)'"> :ifsfz="true"
<uploadImg :ifsfz='true' @imageUploaded="imageUploaded2"
@imageUploaded='imageUploaded2'
prop="idBack" prop="idBack"
ref="uploadImg2" ref="uploadImg2"
style="margin-right: 30rpx;" style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard2.png`" :bgimg="`../../../static/images/idCard2.png`"
v-model="dataForm.idBack"></uploadImg> v-model="dataForm.idBack"
></uploadImg>
</u-form-item> </u-form-item>
<u-form-item <u-form-item
required required
@ -197,7 +195,6 @@
</u--input> </u--input>
</u-form-item> </u-form-item>
<u-code <u-code
:seconds="seconds" :seconds="seconds"
@end="end" @end="end"
@ -228,7 +225,7 @@
<view class="tit2" <view class="tit2"
@click="toAgree"> 推广人员服务协议</view> @click="toAgree"> 推广人员服务协议</view>
</view> --> </view> -->
<view class="btnbox" style="padding-bottom: 180rpx;"> <view class="btnbox" style="padding-bottom: 180rpx">
<u-button class="subbtn" @click="submit">{{ '确定' }}</u-button> <u-button class="subbtn" @click="submit">{{ '确定' }}</u-button>
</view> </view>
</view> </view>
@ -517,7 +514,7 @@ export default {
this.tips = text this.tips = text
}, },
getCode() { getCode() {
if (this.dataForm.phone) { if (this.dataForm.phone && this.$u.test.mobile(this.dataForm.phone)) {
if (this.$refs.uCode.canGetCode) { if (this.$refs.uCode.canGetCode) {
// //
uni.showLoading({ uni.showLoading({
@ -538,7 +535,9 @@ export default {
uni.$u.toast('倒计时结束后再发送') uni.$u.toast('倒计时结束后再发送')
} }
} else { } else {
uni.$u.toast('请先输入手机号') uni.$u.toast(
this.dataForm.phone ? '手机号格式不正确' : '请先输入手机号'
)
return return
} }
}, },
@ -624,7 +623,7 @@ export default {
padding: 0 20rpx; padding: 0 20rpx;
.subbtn { .subbtn {
background: #005BAC; background: #005bac;
border-radius: 46rpx; border-radius: 46rpx;
font-size: 30rpx; font-size: 30rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
@ -656,7 +655,7 @@ export default {
font-size: 26rpx; font-size: 26rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: bold; font-weight: bold;
color: #005BAC; color: #005bac;
} }
.tit3 { .tit3 {

View File

@ -4,52 +4,62 @@
<!-- <view class="top_text"> <!-- <view class="top_text">
{{'注:修改地址后,若涉及运费问题,系统将自动扣除请在原订单基础上填写新的收货人信息'}} {{'注:修改地址后,若涉及运费问题,系统将自动扣除请在原订单基础上填写新的收货人信息'}}
</view> --> </view> -->
<u-form :model="addressForm" <u-form :model="addressForm" labelWidth="auto" ref="uForm">
labelWidth="auto"
ref="uForm">
<view class="view-class"> <view class="view-class">
<u-form-item :label="'订单编号'" <u-form-item
:label="'订单编号'"
label-width="150rpx" label-width="150rpx"
prop="orderCode"> prop="orderCode"
<u--input v-model="addressForm.orderCode" >
<u--input
v-model="addressForm.orderCode"
disabled disabled
disabledColor="#ffffff" disabledColor="#ffffff"
placeholder="请选择" placeholder="请选择"
border="none"></u--input> border="none"
></u--input>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'收货人'" <u-form-item :label="'收货人'" label-width="150rpx" prop="newRecName">
label-width="150rpx" <u-input
prop="newRecName"> v-model="addressForm.newRecName"
<u-input v-model="addressForm.newRecName"
placeholder-class="place-class" placeholder-class="place-class"
class="border-color" class="border-color"
:placeholder="'请输入'" /> :placeholder="'请输入'"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'联系方式'" <u-form-item
:label="'联系方式'"
label-width="150rpx" label-width="150rpx"
prop="newRecPhone"> prop="newRecPhone"
<u-input v-model="addressForm.newRecPhone" >
<u-input
v-model="addressForm.newRecPhone"
placeholder-class="place-class" placeholder-class="place-class"
:maxlength="userInfo.pkSettleCountry == 1 ? 11 : 20" :maxlength="userInfo.pkSettleCountry == 1 ? 11 : 20"
class="border-color" class="border-color"
:placeholder="'请输入'" /> :placeholder="'请输入'"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class" <view class="view-class" @click="getDiqu">
@click="getDiqu"> <u-form-item :label="'收货地址'" label-width="150rpx" prop="address">
<u-form-item :label="'收货地址'" <view
label-width="150rpx" v-if="address"
prop="address"> style="font-size: 28rpx; color: #333; margin-left: 20rpx"
<view v-if="address" >{{ address }}</view
style="font-size: 28rpx;color: #333;margin-left: 20rpx;">{{address}}</view> >
<view style="margin-left: 20rpx;font-size: 28rpx;color: rgb(192, 196, 204);" <view
v-else>请选择收货地址 style="
margin-left: 20rpx;
font-size: 28rpx;
color: rgb(192, 196, 204);
"
v-else
>请选择收货地址
</view> </view>
</u-form-item> </u-form-item>
<view class="drop"> <view class="drop">
@ -57,106 +67,81 @@
</view> </view>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'详细地址'" <u-form-item
:label="'详细地址'"
class="label-style" class="label-style"
label-width="150rpx" label-width="150rpx"
prop="newRecAddress"> prop="newRecAddress"
<u-textarea v-model="addressForm.newRecAddress" >
<u-textarea
v-model="addressForm.newRecAddress"
placeholder-class="place-class" placeholder-class="place-class"
maxlength="200" maxlength="200"
class="border-color" class="border-color"
:placeholder="'请输入详细地址'" /> :placeholder="'请输入详细地址'"
/>
</u-form-item> </u-form-item>
<view class="lis_address" <view class="lis_address" v-if="addressList.length > 0">
v-if="addressList.length>0">
<view class="lis_title">{{ '历史地址' }}</view> <view class="lis_title">{{ '历史地址' }}</view>
<view class=""> <view class="">
<u-radio-group @change="groupChange" <u-radio-group
@change="groupChange"
placement="column" placement="column"
v-model="choiceValue" v-model="choiceValue"
iconPlacement="left"> iconPlacement="left"
<div v-for="(item, index) in addressList" >
<div
v-for="(item, index) in addressList"
:key="index" :key="index"
class="custom-radio-label"> class="custom-radio-label"
<u-radio :name="item.pkId" >
activeColor="#005BAC"></u-radio> <u-radio :name="item.pkId" activeColor="#005BAC"></u-radio>
<div class="custom-label-content"> <div class="custom-label-content">
<view class="label_name">{{ item.recName }}</view> <view class="label_name">{{ item.recName }}</view>
<view class="label_phone">{{ item.recPhone }}</view> <view class="label_phone">{{ item.recPhone }}</view>
<view class="label_address">{{ item.recArea }}</view> <view class="label_address">{{ item.recArea }}</view>
</div> </div>
</div> </div>
</u-radio-group> </u-radio-group>
</view> </view>
</view> </view>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'邮费扣除'" <u-form-item
:label="'邮费扣除'"
label-width="150rpx" label-width="150rpx"
prop="newPostage"> prop="newPostage"
<u--input v-model="addressForm.newPostage" >
<u--input
v-model="addressForm.newPostage"
disabled disabled
disabledColor="#ffffff" disabledColor="#ffffff"
placeholder="" placeholder=""
border="none"></u--input> border="none"
></u--input>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'备注'" <u-form-item :label="'备注'" label-width="150rpx" prop="selfRemark">
label-width="150rpx" <u-input
prop="selfRemark"> v-model="addressForm.selfRemark"
<u-input v-model="addressForm.selfRemark"
placeholder-class="place-class" placeholder-class="place-class"
class="border-color" class="border-color"
:placeholder="'请输入'" /> :placeholder="'请输入'"
/>
</u-form-item> </u-form-item>
</view> </view>
</u-form> </u-form>
</view> </view>
<v-address ref="address" <v-address
ref="address"
@getAddressData="AddressData" @getAddressData="AddressData"
:defaultCode="defaultCode" :defaultCode="defaultCode"
@addressData="addressData"></v-address> @addressData="addressData"
<u-button type="success" ></v-address>
shape="circle" <u-button type="success" shape="circle" class="btn" @click="submit">{{
class="btn" '确定'
@click="submit">{{'确定'}}</u-button> }}</u-button>
<u-popup class="thePopup"
:show="successShow"
mode="center"
@close="successShow = false">
<view class="successPopup">
<view class="poupTop">
<view class="theiconbox">
<u-icon name="checkbox-mark"
color="#ffffff"
size="26"></u-icon>
</view>
<view class="theicontitle">
{{'提交成功'}}
</view>
</view>
<view class="poupContent">
{{'我们将在24小时内完成业务受理具体进度将会以通知形式发送给您请注意查收'}}
<!-- <view>
{{'售后电话'}}400-111-2818
</view> -->
</view>
<!-- <view class="poupContent">
{{'我们将在24小时内完成业务受理具体进度将会以通知形式发送给您请注意查收'}}</br>
{{'售后电话'}}400-111-2818
</view> -->
<view class="poupBtn"
@click="sureBtn">
{{'确定'}}
</view>
</view>
</u-popup>
</view> </view>
</template> </template>
@ -217,14 +202,14 @@ export default {
newRecPhone: [ newRecPhone: [
{ {
required: true, required: true,
message: '请输入', message: '请输入手机号',
trigger: ['blur'], trigger: ['blur'],
}, },
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
return this.$u.test.mobile(value) return this.$u.test.mobile(value)
}, },
message: '请先输入手机号', message: '手机号格式不正确',
trigger: ['blur'], trigger: ['blur'],
}, },
], ],
@ -243,7 +228,7 @@ export default {
this.address = query.recProvinceVal + query.recCityVal this.address = query.recProvinceVal + query.recCityVal
} }
this.addressForm.newRecName = query.recName this.addressForm.newRecName = query.recName
this.addressForm.newRecPhone = query.recPhone this.$set(this.addressForm, 'newRecPhone', query.recPhone)
this.addressForm.newRecAddress = query.recAddress this.addressForm.newRecAddress = query.recAddress
this.addressForm.newRecProvince = query.recProvince this.addressForm.newRecProvince = query.recProvince
this.addressForm.newRecCity = query.recCity this.addressForm.newRecCity = query.recCity
@ -261,7 +246,7 @@ export default {
}, },
methods: { methods: {
groupChange(value) { groupChange(value) {
this.addressList.forEach((ele) => { this.addressList.forEach(ele => {
if (value == ele.pkId) { if (value == ele.pkId) {
this.$set(this.addressForm, 'newRecName', ele.recName) this.$set(this.addressForm, 'newRecName', ele.recName)
this.$set(this.addressForm, 'newRecPhone', ele.recPhone) this.$set(this.addressForm, 'newRecPhone', ele.recPhone)
@ -290,13 +275,13 @@ export default {
tranType: this.addressForm.tranType, tranType: this.addressForm.tranType,
orderItemsParams: this.addressForm.orderItemsParams, orderItemsParams: this.addressForm.orderItemsParams,
} }
sel.queryAdressPostage(postageData).then((res) => { sel.queryAdressPostage(postageData).then(res => {
this.$set(this.addressForm, 'newPostage', res.data.postage) this.$set(this.addressForm, 'newPostage', res.data.postage)
this.$forceUpdate() this.$forceUpdate()
}) })
}, },
getAddressList() { getAddressList() {
sel.addressList({}).then((res) => { sel.addressList({}).then(res => {
this.addressList = res.data this.addressList = res.data
}) })
}, },
@ -304,17 +289,20 @@ export default {
this.address = name this.address = name
}, },
submit() { submit() {
this.$refs.uForm.validate().then((res) => { this.$refs.uForm.validate().then(res => {
sel.saveSelfAddress(this.addressForm).then((res) => { sel.saveSelfAddress(this.addressForm).then(res => {
if (res.code == '200') { if (res.code == '200') {
// uni.showToast({ uni.showToast({
// title: res.msg, title: '修改成功',
// icon: 'none', icon: 'none',
// success() { success() {
setTimeout(() => {
uni.navigateBack()
}, 600)
},
})
// } // this.successShow = true
// })
this.successShow = true
} }
}) })
}) })
@ -438,7 +426,7 @@ export default {
font-size: 28rpx; font-size: 28rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #005BAC; color: #005bac;
} }
} }
@ -482,7 +470,7 @@ page {
} }
.btn { .btn {
background-color: #005BAC; background-color: #005bac;
border: none; border: none;
height: 92rpx; height: 92rpx;
line-height: 92rpx; line-height: 92rpx;
@ -528,7 +516,7 @@ page {
} }
.poupBtn { .poupBtn {
background: #005BAC; background: #005bac;
border-radius: 39rpx; border-radius: 39rpx;
padding: 26rpx 0; padding: 26rpx 0;
display: flex; display: flex;

View File

@ -3,9 +3,14 @@
<view class="con_top"> <view class="con_top">
<view class="seach"> <view class="seach">
<view class="seach_i"> <view class="seach_i">
<u--input prefixIcon="search" v-model="queryParams.orderCode" <u--input
prefixIconStyle="font-size: 22px;color: #909399;height:32px" border="none" placeholder="请输入订单编号" prefixIcon="search"
suffixIconStyle="color: #909399"></u--input> v-model="queryParams.orderCode"
prefixIconStyle="font-size: 22px;color: #909399;height:32px"
border="none"
placeholder="请输入订单编号"
suffixIconStyle="color: #909399"
></u--input>
</view> </view>
<view class="seatch_r" @click="getDataList"> <view class="seatch_r" @click="getDataList">
<u-icon name="search" size="22" color="#fff"></u-icon> <u-icon name="search" size="22" color="#fff"></u-icon>
@ -18,7 +23,9 @@
<view class="list_flex"> <view class="list_flex">
<view class="top_flex"> <view class="top_flex">
<view class="zc_btn">{{ item.orderTypeVal }}</view> <view class="zc_btn">{{ item.orderTypeVal }}</view>
<view class="code_text">{{'订单编号'}}{{item.orderCode}}</view> <view class="code_text"
>{{ '订单编号' }}{{ item.orderCode }}</view
>
</view> </view>
<view class="top_status"> <view class="top_status">
{{ item.orderStatusVal }} {{ item.orderStatusVal }}
@ -27,14 +34,20 @@
<view class="list_flex"> <view class="list_flex">
<view class="center_price">{{ item.orderAmount }}</view> <view class="center_price">{{ item.orderAmount }}</view>
</view> </view>
<view class="list_flex" style="margin-top: 10rpx;"> <!-- <view class="list_flex" style="margin-top: 10rpx">
<view class="top_flex"> <view class="top_flex">
<view class="code_text">{{'审核状态'}}{{item.approveStatusVal}}</view> <view class="code_text"
>{{ '审核状态' }}{{ item.approveStatusVal }}</view
>
</view> </view>
<view v-if="item.approveStatus==3" class="top_status" @click="findWhy(item)"> <view
v-if="item.approveStatus == 3"
class="top_status"
@click="findWhy(item)"
>
{{ '驳回原因' }} {{ '驳回原因' }}
</view> </view>
</view> </view> -->
<view class="btm_time"> <view class="btm_time">
{{ '创建时间' }}:{{ item.creationTime }} {{ '创建时间' }}:{{ item.creationTime }}
</view> </view>
@ -54,27 +67,32 @@
</view> </view>
</template> </template>
<template v-else> <template v-else>
<view class="theListbox" style="background-color: #f2f2f2;"> <view class="theListbox" style="background-color: #f2f2f2">
<u-empty mode="list"> <u-empty mode="list"> </u-empty>
</u-empty>
</view> </view>
</template> </template>
<u-popup :show="rejectShow" closeable mode="center" round='10' @close="rejectShow=false">\ <u-popup
:show="rejectShow"
closeable
mode="center"
round="10"
@close="rejectShow = false"
>\
<view class="popview"> <view class="popview">
<view class="email_neir " @click="clickhtml(rejectContent)" v-html="rejectContent"> <view
class="email_neir"
@click="clickhtml(rejectContent)"
v-html="rejectContent"
>
</view> </view>
</view> </view>
</u-popup> </u-popup>
</view> </view>
</template> </template>
<script> <script>
import * as sel from '@/config/selfService.js' import * as sel from '@/config/selfService.js'
import { import { formatMsToDate } from '@/util/index'
formatMsToDate
} from '@/util/index'
export default { export default {
data() { data() {
return { return {
@ -85,21 +103,18 @@
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 50, pageSize: 50,
orderCode: "", orderCode: '',
}, },
orderLists: [], orderLists: [],
timeIndex: 0, timeIndex: 0,
rejectShow: false, rejectShow: false,
rejectContent: "" rejectContent: '',
} }
}, },
watch: { watch: {},
onShow() {
},
onLoad() {
this.getDataList() this.getDataList()
}, },
onShow() {},
methods: { methods: {
findWhy(item) { findWhy(item) {
this.rejectContent = item.rejectMsg this.rejectContent = item.rejectMsg
@ -108,55 +123,77 @@
clickhtml(content) { clickhtml(content) {
this.rejectShow = false this.rejectShow = false
// handleImageClick // handleImageClick
const parser = new DOMParser(); const parser = new DOMParser()
const doc = parser.parseFromString(content, "text/html"); const doc = parser.parseFromString(content, 'text/html')
const imgElements = doc.getElementsByTagName("img"); const imgElements = doc.getElementsByTagName('img')
if (imgElements.length > 0) { if (imgElements.length > 0) {
const firstImageUrl = imgElements[0].src; const firstImageUrl = imgElements[0].src
this.handleImageClick(firstImageUrl, content); this.handleImageClick(firstImageUrl, content)
} }
}, },
handleImageClick(url, content) { handleImageClick(url, content) {
uni.previewImage({ uni.previewImage({
urls: this.getUrls(content), urls: this.getUrls(content),
current: url current: url,
}); })
}, },
getUrls(content) { getUrls(content) {
const parser = new DOMParser(); const parser = new DOMParser()
const doc = parser.parseFromString(content, "text/html"); const doc = parser.parseFromString(content, 'text/html')
const imgElements = doc.getElementsByTagName("img"); const imgElements = doc.getElementsByTagName('img')
const urls = []; const urls = []
for (let i = 0; i < imgElements.length; i++) { for (let i = 0; i < imgElements.length; i++) {
urls.push(imgElements[i].src); urls.push(imgElements[i].src)
} }
return urls; return urls
}, },
getDataList() { getDataList() {
// loading
uni.showLoading({
title: '加载中...',
mask: true,
})
sel sel
.getOderSelfList(this.queryParams) .getOderSelfList(this.queryParams)
.then((res) => { .then(res => {
this.orderLists = res.rows this.orderLists = res.rows
}) })
.catch(err => {
console.error('获取订单列表失败:', err)
//
uni.showToast({
title: '获取数据失败',
icon: 'none',
})
})
.finally(() => {
// loading
uni.hideLoading()
})
}, },
updateAdress(item) { updateAdress(item) {
let params = item let params = item
console.log('%c [ params ]-144', 'font-size:13px; background:#f37aa1; color:#ffbee5;', params) console.log(
'%c [ params ]-144',
'font-size:13px; background:#f37aa1; color:#ffbee5;',
params
)
// let queryString = Object.keys(params).map(key => // let queryString = Object.keys(params).map(key =>
// `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&') // `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&')
// let paramsString = encodeURIComponent(JSON.stringify(params)) // let paramsString = encodeURIComponent(JSON.stringify(params))
uni.navigateTo({ uni.navigateTo({
url: '/pages/selfService/updateAdress/addAdress?obj=' + JSON.stringify(params), url:
'/pages/selfService/updateAdress/addAdress?obj=' +
JSON.stringify(params),
}) })
} },
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep img { ::v-deep img {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
@ -172,8 +209,6 @@
} }
} }
.con_top { .con_top {
position: fixed; position: fixed;
background: #fff; background: #fff;
@ -202,7 +237,7 @@
} }
.seatch_r { .seatch_r {
background: #005BAC; background: #005bac;
border-radius: 50%; border-radius: 50%;
padding: 8rpx; padding: 8rpx;
margin-left: 24rpx; margin-left: 24rpx;
@ -212,9 +247,8 @@
.theListbox { .theListbox {
padding-top: 90rpx; padding-top: 90rpx;
.orderList_i { .orderList_i {
background-color: #FFFFFF; background-color: #ffffff;
padding: 22rpx; padding: 22rpx;
margin-top: 22rpx; margin-top: 22rpx;
@ -231,8 +265,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: #3D3D3D; background: #3d3d3d;
color: #FFFFFF; color: #ffffff;
border-radius: 30rpx; border-radius: 30rpx;
padding: 7rpx 23rpx; padding: 7rpx 23rpx;
margin-right: 8rpx; margin-right: 8rpx;
@ -253,7 +287,7 @@
font-size: 24rpx; font-size: 24rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #69A35B; color: #69a35b;
} }
.center_left { .center_left {
@ -291,11 +325,8 @@
color: #666666; color: #666666;
} }
} }
} }
.center_price { .center_price {
font-size: 32rpx; font-size: 32rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
@ -310,7 +341,7 @@
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #999999; color: #999999;
border-bottom: 1rpx solid #EEEEEE; border-bottom: 1rpx solid #eeeeee;
} }
.list_btn { .list_btn {
@ -324,7 +355,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 30rpx; border-radius: 30rpx;
background: #005BAC; background: #005bac;
color: #ffffff; color: #ffffff;
padding: 15rpx 28rpx; padding: 15rpx 28rpx;
font-size: 24rpx; font-size: 24rpx;
@ -333,8 +364,6 @@
} }
} }
.list_top { .list_top {
// background-color: pink; // background-color: pink;
padding: 30rpx 0; padding: 30rpx 0;
@ -354,7 +383,6 @@
color: #999999; color: #999999;
margin: 18rpx 0; margin: 18rpx 0;
} }
} }
} }
</style> </style>

View File

@ -1,144 +1,227 @@
<template> <template>
<view class="main"> <view class="main">
<view class="contents"> <view class="contents">
<u-form :model="dataForm" labelWidth="auto" ref="uForm"> <u-form :model="dataForm" labelWidth="auto" ref="uForm">
<view class="view-class"> <view class="view-class">
<u-form-item :label="'会员姓名'" label-width="200rpx" prop="memberName"> <u-form-item
<u-input v-model="dataForm.memberName" disabled placeholder-class="place-class" :label="'会员姓名'"
class="border-color" placeholder="请输入收货人姓名" /> label-width="200rpx"
prop="memberName"
>
<u-input
v-model="dataForm.memberName"
disabled
placeholder-class="place-class"
class="border-color"
placeholder="请输入收货人姓名"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item :label="'联系方式'" label-width="200rpx" prop="phone"> <u-form-item :label="'联系方式'" label-width="200rpx" prop="phone">
<u-input v-model="dataForm.phone" disabled placeholder-class="place-class" class="border-color" <u-input
placeholder="请输入联系方式" /> v-model="dataForm.phone"
disabled
placeholder-class="place-class"
class="border-color"
placeholder="请输入联系方式"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item label="新会员姓名" label-width="200rpx" prop="changeMemberName"> <u-form-item
<u-input v-model="dataForm.changeMemberName" placeholder-class="place-class" label="新会员姓名"
class="border-color" placeholder="请输入收货人姓名" /> label-width="200rpx"
prop="changeMemberName"
>
<u-input
v-model="dataForm.changeMemberName"
placeholder-class="place-class"
class="border-color"
placeholder="请输入收货人姓名"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item label="新联系方式" label-width="200rpx" prop="changePhone"> <u-form-item
<u-input v-model="dataForm.changePhone" placeholder-class="place-class" class="border-color" label="新联系方式"
placeholder="请输入联系方式" /> label-width="200rpx"
prop="changePhone"
>
<u-input
v-model="dataForm.changePhone"
placeholder-class="place-class"
class="border-color"
placeholder="请输入联系方式"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item label-width="200rpx" :label="'验证码'" prop="verificationCode" borderBottom ref="item1"> <u-form-item
<u--input v-model="dataForm.verificationCode" placeholder="请输入" border="none"></u--input> label-width="200rpx"
<u-button @tap='getCode' class="getcodes" type="primary" shape="circle" :text="tips" :label="'验证码'"
color="#2FBC42"></u-button> prop="verificationCode"
borderBottom
ref="item1"
>
<u--input
v-model="dataForm.verificationCode"
placeholder="请输入"
border="none"
></u--input>
<u-button
@tap="getCode"
class="getcodes"
type="primary"
shape="circle"
:text="tips"
color="#2FBC42"
></u-button>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <view class="view-class">
<u-form-item label="情况说明" class="label-style" label-width="200rpx" prop="description"> <u-form-item
<u-textarea v-model="dataForm.description" placeholder-class="place-class" class="border-color" label="情况说明"
placeholder="请输入情况说明" /> class="label-style"
label-width="200rpx"
prop="description"
>
<u-textarea
v-model="dataForm.description"
placeholder-class="place-class"
class="border-color"
placeholder="请输入情况说明"
/>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class" style="display: flex; align-items: center;justify-content: space-between;"> <view
<u-form-item labelPosition='top' required label-width="200rpx" label="原证件(正面)"> class="view-class"
<uploadImg :ifsfz='true' @imageUploaded='imageUploaded3' prop="idFront" style="
style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard1.png`" display: flex;
v-model="dataForm.idFront"></uploadImg> align-items: center;
justify-content: space-between;
"
>
<u-form-item
labelPosition="top"
required
label-width="200rpx"
label="原证件(正面)"
>
<uploadImg
:ifsfz="true"
@imageUploaded="imageUploaded3"
prop="idFront"
style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard1.png`"
v-model="dataForm.idFront"
></uploadImg>
</u-form-item> </u-form-item>
<u-form-item labelPosition='top' required label-width="200rpx" label="原证件(反面)"> <u-form-item
<uploadImg :ifsfz='true' @imageUploaded='imageUploaded4' prop="idBack" labelPosition="top"
style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard2.png`" required
v-model="dataForm.idBack"></uploadImg> label-width="200rpx"
label="原证件(反面)"
>
<uploadImg
:ifsfz="true"
@imageUploaded="imageUploaded4"
prop="idBack"
style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard2.png`"
v-model="dataForm.idBack"
></uploadImg>
</u-form-item> </u-form-item>
<!-- <u-form-item labelPosition='top' label="原会员证件照片" prop="remark"> <!-- <u-form-item labelPosition='top' label="原会员证件照片" prop="remark">
<image class="idImages" style="margin-right: 20rpx;" :src="dataForm.idFront" mode=""></image> <image class="idImages" style="margin-right: 20rpx;" :src="dataForm.idFront" mode=""></image>
<image class="idImages" :src="dataForm.idBack" mode=""></image> <image class="idImages" :src="dataForm.idBack" mode=""></image>
</u-form-item> --> </u-form-item> -->
</view> </view>
<view class="view-class" style="display: flex; align-items: center;justify-content: space-between;"> <view
class="view-class"
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- <u-form-item labelPosition='top' label="新会员证件照片" prop="changeIdFront"> <!-- <u-form-item labelPosition='top' label="新会员证件照片" prop="changeIdFront">
<uploadImg style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard1.png`" <uploadImg style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard1.png`"
v-model="dataForm.changeIdFront"></uploadImg> v-model="dataForm.changeIdFront"></uploadImg>
<uploadImg :bgimg="`../../../static/images/idCard2.png`" v-model="dataForm.changeIdBack"> <uploadImg :bgimg="`../../../static/images/idCard2.png`" v-model="dataForm.changeIdBack">
</uploadImg> </uploadImg>
</u-form-item> --> </u-form-item> -->
<u-form-item labelPosition='top' required label-width="180rpx" label="证件(正面)"> <u-form-item
<uploadImg :ifsfz='true' @imageUploaded='imageUploaded1' prop="changeIdFront" labelPosition="top"
style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard1.png`" required
v-model="dataForm.changeIdFront"></uploadImg> label-width="180rpx"
label="证件(正面)"
>
<uploadImg
:ifsfz="true"
@imageUploaded="imageUploaded1"
prop="changeIdFront"
style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard1.png`"
v-model="dataForm.changeIdFront"
></uploadImg>
</u-form-item> </u-form-item>
<u-form-item labelPosition='top' required label-width="180rpx" label="证件(反面)"> <u-form-item
<uploadImg :ifsfz='true' @imageUploaded='imageUploaded2' prop="changeIdBack" labelPosition="top"
style="margin-right: 30rpx;" :bgimg="`../../../static/images/idCard2.png`" required
v-model="dataForm.changeIdBack"></uploadImg> label-width="180rpx"
label="证件(反面)"
>
<uploadImg
:ifsfz="true"
@imageUploaded="imageUploaded2"
prop="changeIdBack"
style="margin-right: 30rpx"
:bgimg="`../../../static/images/idCard2.png`"
v-model="dataForm.changeIdBack"
></uploadImg>
</u-form-item> </u-form-item>
</view> </view>
<view class="view-class"> <!-- <view class="view-class">
<u-form-item label="业务扣费(¥)" label-width="200rpx" prop="amount"> <u-form-item label="业务扣费(¥)" label-width="200rpx" prop="amount">
<u-input v-model="dataForm.amount" disabled placeholder-class="place-class" class="border-color" <u-input v-model="dataForm.amount" disabled placeholder-class="place-class" class="border-color"
placeholder="请输入" /> placeholder="请输入" />
</u-form-item> </u-form-item>
</view> </view> -->
<view class="view-class"> <view class="view-class">
<u-form-item :label="'备注'" label-width="200rpx" prop="remark"> <u-form-item :label="'备注'" label-width="200rpx" prop="remark">
<u-input v-model="dataForm.remark" placeholder-class="place-class" class="border-color" <u-input
placeholder="请输入" /> v-model="dataForm.remark"
placeholder-class="place-class"
class="border-color"
placeholder="请输入"
/>
</u-form-item> </u-form-item>
</view> </view>
<u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code> <u-code
:seconds="seconds"
@end="end"
@start="start"
ref="uCode"
@change="codeChange"
></u-code>
</u-form> </u-form>
</view> </view>
<u-button type="success" shape="circle" class="btn" @click="submit">{{'确定'}}</u-button> <u-button type="success" shape="circle" class="btn" @click="submit">{{
<u-popup class="thePopup" :show="successShow" mode="center" @close="successShow = false"> '确定'
<view class="successPopup"> }}</u-button>
<view class="poupTop">
<view class="theiconbox">
<u-icon name="checkbox-mark" color="#ffffff" size="26"></u-icon>
</view>
<view class="theicontitle">
提交成功
</view>
</view>
<view class="poupContent">
我们将在24小时内完成业务受理具体进度将会以
短信通知形式发送您请注意查收</br>
<!-- 售后电话400-111-2818 -->
</view>
<view class="poupBtn" @click="sureBtn">
确定
</view>
</view>
</u-popup>
</view> </view>
</template> </template>
<script> <script>
import * as sel from '@/config/selfService.js' import * as sel from '@/config/selfService.js'
import * as ban from "@/config/balance.js" import * as ban from '@/config/balance.js'
import uploadImg from '@/components/uploadImg.vue' import uploadImg from '@/components/uploadImg.vue'
import { import { setToken } from '@/config/auth.js'
setToken
} from '@/config/auth.js'
export default { export default {
components: { components: {
uploadImg uploadImg,
}, },
data() { data() {
return { return {
@ -148,75 +231,85 @@
defaultCode: [], defaultCode: [],
urls: '/member/api/maker-space/update-file', urls: '/member/api/maker-space/update-file',
dataForm: { dataForm: {
memberName: "", memberName: '',
phone: "", phone: '',
changeMemberName: "", changeMemberName: '',
changePhone: "", changePhone: '',
description: "", description: '',
amount: "", amount: '',
remark: "", remark: '',
idFront:"", idFront: '',
idBack:"", idBack: '',
changeIdFront: "", changeIdFront: '',
changeIdBack: "" changeIdBack: '',
}, },
choiceValue: "", choiceValue: '',
successShow: false, successShow: false,
addressList: [], addressList: [],
rules: { rules: {
changeMemberName: [{ changeMemberName: [
{
// //
required: true, required: true,
// u-form-item // u-form-item
message: "姓名不能为空", message: '姓名不能为空',
}],
changeIdFront: [{
//
required: true,
// u-form-item
message: "证件照片不能为空",
}],
changeIdBack: [{
//
required: true,
// u-form-item
message: "证件照片不能为空",
}],
description: [{
//
required: true,
// u-form-item
message: "情况说明不能为空",
trigger: ["change"],
}],
changePhone: [{
required: true,
message: "请输入手机号",
trigger: ["blur"],
}, },
// {
// validator: (rule, value, callback) => {
// return this.$u.test.mobile(value);
// },
// message: "",
// trigger: ["blur"],
// },
], ],
idFront: [{
changeIdFront: [
{
// //
required: true, required: true,
// u-form-item // u-form-item
message: "原证件照片不能为空", message: '证件照片不能为空',
}], },
idBack: [{ ],
changeIdBack: [
{
// //
required: true, required: true,
// u-form-item // u-form-item
message: "原证件照片不能为空", message: '证件照片不能为空',
}], },
],
// description: [{
// //
// required: true,
// // u-form-item
// message: "",
// trigger: ["change"],
// }],
changePhone: [
{
required: true,
message: '请输入手机号',
trigger: ['blur'],
},
{
validator: (rule, value, callback) => {
return this.$u.test.mobile(value)
},
message: '手机号格式不正确',
trigger: ['blur'],
},
],
idFront: [
{
//
required: true,
// u-form-item
message: '原证件照片不能为空',
},
],
idBack: [
{
//
required: true,
// u-form-item
message: '原证件照片不能为空',
},
],
}, },
tips: '', tips: '',
seconds: 60, seconds: 60,
@ -224,12 +317,10 @@
}, },
onLoad() { onLoad() {
this.applyChange() this.applyChange()
}, },
onReady() { onReady() {
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules)
}, },
methods: { methods: {
@ -246,35 +337,36 @@
this.dataForm.idBack = url this.dataForm.idBack = url
}, },
applyChange() { applyChange() {
sel.showChangeDomicile().then((res) => { sel.showChangeDomicile().then(res => {
this.dataForm = res.data; this.dataForm = res.data
})
});
}, },
codeChange(text) { codeChange(text) {
this.tips = text; this.tips = text
}, },
getCode() { getCode() {
if (this.dataForm.changePhone) { if (this.dataForm.changePhone) {
if (this.$refs.uCode.canGetCode) { if (this.$refs.uCode.canGetCode) {
// //
uni.showLoading({ uni.showLoading({
title: '正在获取验证码' title: '正在获取验证码',
}) })
ban.getVerification({ ban
phone: this.dataForm.changePhone .getVerification({
}).then((res) => { phone: this.dataForm.changePhone,
uni.hideLoading(); })
.then(res => {
uni.hideLoading()
// this.start() // this.start()
uni.$u.toast('验证码已发送'); uni.$u.toast('验证码已发送')
// //
this.$refs.uCode.start(); this.$refs.uCode.start()
}) })
} else { } else {
uni.$u.toast('倒计时结束后再发送'); uni.$u.toast('倒计时结束后再发送')
} }
} else { } else {
uni.$u.toast("请先输入手机号") uni.$u.toast('请先输入手机号')
return return
} }
}, },
@ -286,17 +378,19 @@
}, },
submit() { submit() {
this.$refs.uForm.validate().then((res) => { this.$refs.uForm.validate().then(res => {
sel.saveChangeDomicile(this.dataForm).then((res) => { sel.saveChangeDomicile(this.dataForm).then(res => {
if (res.code == '200') { if (res.code == '200') {
// uni.showToast({ uni.showToast({
// title: res.msg, title: '修改成功',
// icon: 'none', icon: 'none',
// success() { success() {
setTimeout(() => {
// } uni.navigateBack()
// }) }, 600)
this.successShow = true },
})
// this.successShow = true
} }
}) })
}) })
@ -304,9 +398,6 @@
sureBtn() { sureBtn() {
uni.navigateBack() uni.navigateBack()
}, },
}, },
} }
</script> </script>
@ -363,7 +454,7 @@
view { view {
width: 36rpx; width: 36rpx;
height: 36rpx; height: 36rpx;
border: 1rpx solid #DDDDDD; border: 1rpx solid #dddddd;
border-radius: 50%; border-radius: 50%;
margin-top: 25rpx; margin-top: 25rpx;
} }
@ -387,7 +478,7 @@
font-size: 28rpx; font-size: 28rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #005BAC; color: #005bac;
} }
} }
@ -412,7 +503,6 @@
.border-color { .border-color {
border: none; border: none;
} }
page { page {
@ -426,11 +516,10 @@
width: 316rpx; width: 316rpx;
height: 192rpx; height: 192rpx;
} }
} }
.btn { .btn {
background-color: #005BAC; background-color: #005bac;
border: none; border: none;
height: 92rpx; height: 92rpx;
line-height: 92rpx; line-height: 92rpx;
@ -441,7 +530,7 @@
.successPopup { .successPopup {
width: 560rpx; width: 560rpx;
background: #FFFFFF; background: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
padding: 26rpx 60rpx; padding: 26rpx 60rpx;
@ -476,13 +565,13 @@
} }
.poupBtn { .poupBtn {
background: #005BAC; background: #005bac;
border-radius: 39rpx; border-radius: 39rpx;
padding: 26rpx 0; padding: 26rpx 0;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: #FFFFFF; color: #ffffff;
margin-top: 70rpx; margin-top: 70rpx;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
@ -495,7 +584,7 @@
.getcodes { .getcodes {
width: 197rpx; width: 197rpx;
// height: 76rpx; // height: 76rpx;
background: #2FBC42; background: #2fbc42;
border-radius: 38rpx; border-radius: 38rpx;
color: #fff; color: #fff;
} }

View File

@ -1,107 +1,127 @@
<template> <template>
<view class="content"> <view class="content">
<view class="tab"> <!-- <view class="tab">
<view v-for="(item, index) in tabList" :key="index" @click="isTab = item.value" class="tab_i" <view
:class="[isTab===item.value?'heng':'heng1']"> v-for="(item, index) in tabList"
:key="index"
@click="isTab = item.value"
class="tab_i"
:class="[isTab === item.value ? 'heng' : 'heng1']"
>
{{ item.label }} {{ item.label }}
</view> </view>
</view> </view> -->
<template v-if="tableData.length > 0"> <template v-if="tableData.length > 0">
<view class="thecontent" v-for='(item,index) in tableData' :key="index"> <view class="thecontent" v-for="(item, index) in tableData" :key="index">
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'会员编号'}}</view> <view class="line1">{{ '会员编号' }}</view>
<view class='line2'>{{item.memberCode}}</view> <view class="line2">{{ item.memberCode }}</view>
</view> </view>
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'变更前会员姓名'}}</view> <view class="line1">{{ '变更前会员姓名' }}</view>
<view class='line2'>{{item.memberName}}</view> <view class="line2">{{ item.memberName }}</view>
</view> </view>
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'变更前联系方式'}}</view> <view class="line1">{{ '变更前联系方式' }}</view>
<view class='line2'>{{item.phone}}</view> <view class="line2">{{ item.phone }}</view>
</view> </view>
<view class="line_box bgrightBox" v-if="queryParams.assessType == 0"> <view class="line_box bgrightBox" v-if="queryParams.assessType == 0">
<view class=""> </view>
<view class=""> <view class="">
<u-button
</view> shape="circle"
<view class=""> color="#005BAC"
<u-button shape="circle" color="#005BAC" size="small" :text="'申请变更'" size="small"
@click="updateDomicile(item)"></u-button> :text="'申请变更'"
@click="updateDomicile(item)"
></u-button>
</view> </view>
</view> </view>
<template v-if="queryParams.assessType == 1"> <template v-if="queryParams.assessType == 1">
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'变更后会员姓名'}}</view> <view class="line1">{{ '变更后会员姓名' }}</view>
<view class='line3'>{{item.changeMemberName}}</view> <view class="line3">{{ item.changeMemberName }}</view>
</view> </view>
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'变更后联系方式'}}</view> <view class="line1">{{ '变更后联系方式' }}</view>
<view class='line3'>{{item.changePhone}}</view> <view class="line3">{{ item.changePhone }}</view>
</view> </view>
<view class="line_box"> <!-- <view class="line_box">
<view class='line1'>{{'业务扣费'}}(¥)</view> <view class='line1'>{{'业务扣费'}}(¥)</view>
<view class='line3'>{{item.amount}}</view> <view class='line3'>{{item.amount}}</view>
</view> -->
<view class="line_box">
<view class="line1">{{ '申请时间' }}</view>
<view class="line3">{{ item.creationTime }}</view>
</view>
<!-- <view class="line_box">
<view class="line1">{{ '审核时间' }}</view>
<view class="line3">{{ item.approveTime }}</view>
</view> </view>
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'申请时间'}}</view> <view class="line1">{{ '审核状态' }}</view>
<view class='line3'>{{item.creationTime}}</view> <view class="line3">{{ item.approveStatusVal }}</view>
</view> </view> -->
<view class="line_box"> <view class="line_box">
<view class='line1'>{{'审核时间'}}</view> <view class="line1">{{ '备注' }}</view>
<view class='line3'>{{item.approveTime}}</view> <view class="line3">{{ item.remark }}</view>
</view> </view>
<view class="line_box"> <!-- <view class="list_btn" v-if="item.approveStatus == 3">
<view class='line1'>{{'审核状态'}}</view>
<view class='line3'>{{item.approveStatusVal}}</view>
</view>
<view class="line_box">
<view class='line1'>{{'备注'}}</view>
<view class='line3'>{{item.remark}}</view>
</view>
<view class="list_btn" v-if="item.approveStatus==3">
<view class="sub_btn" @click="findWhy(item)"> <view class="sub_btn" @click="findWhy(item)">
{{ '驳回原因' }} {{ '驳回原因' }}
</view> </view>
</view> </view> -->
</template> </template>
</view> </view>
</template> </template>
<u-empty v-else mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png"> <u-empty
v-else
mode="list"
icon="http://cdn.uviewui.com/uview/empty/list.png"
>
</u-empty> </u-empty>
<u-popup :show="rejectShow" closeable mode="center" round='10' @close="rejectShow=false">\ <u-popup
:show="rejectShow"
closeable
mode="center"
round="10"
@close="rejectShow = false"
>\
<view class="popview"> <view class="popview">
<view class="email_neir " @click="clickhtml(rejectContent)" v-html="rejectContent"> <view
class="email_neir"
@click="clickhtml(rejectContent)"
v-html="rejectContent"
>
</view> </view>
</view> </view>
</u-popup> </u-popup>
</view> </view>
</template> </template>
<script> <script>
import * as sel from "@/config/selfService.js" import * as sel from '@/config/selfService.js'
export default { export default {
data() { data() {
return { return {
tabList: [{ tabList: [
{
value: 0, value: 0,
label: '可申请信息' label: '可变更信息',
}, { },
{
value: 1, value: 1,
label: '已申请信息' label: '变更记录',
}], },
],
isTab: 0, isTab: 0,
queryParams: { queryParams: {
assessType: 0, assessType: 0,
}, },
tableData: [], tableData: [],
rejectShow: false, rejectShow: false,
rejectContent: "" rejectContent: '',
} }
}, },
watch: { watch: {
@ -111,9 +131,7 @@
}, },
}, },
onLoad() { onLoad() {
this.getDataList() this.getDataList()
}, },
methods: { methods: {
findWhy(item) { findWhy(item) {
@ -123,49 +141,49 @@
clickhtml(content) { clickhtml(content) {
this.rejectShow = false this.rejectShow = false
// handleImageClick // handleImageClick
const parser = new DOMParser(); const parser = new DOMParser()
const doc = parser.parseFromString(content, "text/html"); const doc = parser.parseFromString(content, 'text/html')
const imgElements = doc.getElementsByTagName("img"); const imgElements = doc.getElementsByTagName('img')
if (imgElements.length > 0) { if (imgElements.length > 0) {
const firstImageUrl = imgElements[0].src; const firstImageUrl = imgElements[0].src
this.handleImageClick(firstImageUrl, content); this.handleImageClick(firstImageUrl, content)
} }
}, },
handleImageClick(url, content) { handleImageClick(url, content) {
uni.previewImage({ uni.previewImage({
urls: this.getUrls(content), urls: this.getUrls(content),
current: url current: url,
}); })
}, },
getUrls(content) { getUrls(content) {
const parser = new DOMParser(); const parser = new DOMParser()
const doc = parser.parseFromString(content, "text/html"); const doc = parser.parseFromString(content, 'text/html')
const imgElements = doc.getElementsByTagName("img"); const imgElements = doc.getElementsByTagName('img')
const urls = []; const urls = []
for (let i = 0; i < imgElements.length; i++) { for (let i = 0; i < imgElements.length; i++) {
urls.push(imgElements[i].src); urls.push(imgElements[i].src)
} }
return urls; return urls
}, },
updateDomicile(item) { updateDomicile(item) {
if (this.queryParams.assessType == 0) { if (this.queryParams.assessType == 0) {
item.assessType = this.queryParams.assessType item.assessType = this.queryParams.assessType
let params = item let params = item
let queryString = Object.keys(params).map(key => let queryString = Object.keys(params)
`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&') .map(
key =>
`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`
)
.join('&')
// let paramsString = encodeURIComponent(JSON.stringify(params)) // let paramsString = encodeURIComponent(JSON.stringify(params))
uni.navigateTo({ uni.redirectTo({
url: '/pages/selfService/updateDomicile/addDomicile?' + queryString, url: '/pages/selfService/updateDomicile/addDomicile?' + queryString,
}) })
} }
}, },
getDataList() { getDataList() {
if (this.queryParams.assessType == 0) { if (this.queryParams.assessType == 0) {
// //
sel.getApplicationInfoList(this.queryParams).then(res => { sel.getApplicationInfoList(this.queryParams).then(res => {
@ -177,10 +195,8 @@
this.tableData = res.data this.tableData = res.data
}) })
} }
},
},
}
}
} }
</script> </script>
@ -200,7 +216,7 @@
} }
} }
.list_btn { .list_btn {
border-top: 1rpx solid #EEEEEE; border-top: 1rpx solid #eeeeee;
margin-top: 20rpx; margin-top: 20rpx;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
@ -211,7 +227,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 30rpx; border-radius: 30rpx;
background: #005BAC; background: #005bac;
color: #ffffff; color: #ffffff;
padding: 15rpx 28rpx; padding: 15rpx 28rpx;
font-size: 24rpx; font-size: 24rpx;
@ -220,7 +236,7 @@
} }
} }
.content { .content {
background: #F2F2F2; background: #f2f2f2;
padding-bottom: 20rpx; padding-bottom: 20rpx;
.tab { .tab {
@ -228,7 +244,7 @@
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
margin-bottom: 6rpx; margin-bottom: 6rpx;
background-color: #FFFFFF; background-color: #ffffff;
.tab_i { .tab_i {
text-align: center; text-align: center;
@ -242,26 +258,20 @@
align-items: center; align-items: center;
padding: 24rpx 0; padding: 24rpx 0;
// background-color: pink; // background-color: pink;
} }
.heng { .heng {
border-bottom: 6rpx solid #005BAC; border-bottom: 6rpx solid #005bac;
color: #005BAC; color: #005bac;
} }
.heng { .heng {
color: #333333; color: #333333;
} }
} }
.thecontent { .thecontent {
background-color: #FFFFFF; background-color: #ffffff;
// margin-bottom: 21rpx; // margin-bottom: 21rpx;
margin-top: 20rpx; margin-top: 20rpx;
padding: 10rpx 23rpx 30rpx 23rpx; padding: 10rpx 23rpx 30rpx 23rpx;
@ -300,9 +310,7 @@
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
border-top: 1rpx solid #eeeeee; border-top: 1rpx solid #eeeeee;
} }
} }
} }
</style> </style>

View File

@ -683,11 +683,16 @@ export default {
storePhone: [ storePhone: [
{ {
required: true, required: true,
message: '请输入', message: '请输入手机号',
trigger: ['blur'],
trigger: 'blur', },
{
validator: (rule, value, callback) => {
return this.$u.test.mobile(value)
},
message: '手机号格式不正确',
trigger: ['blur'],
}, },
{ min: 11, message: '请输入正确的手机号',trigger: 'blur', },
], ],
storeSign: [ storeSign: [
{ required: true, message: " ", trigger: "blur" }, { required: true, message: " ", trigger: "blur" },

View File

@ -215,13 +215,13 @@ export default {
message: '请输入手机号', message: '请输入手机号',
trigger: ['blur'], trigger: ['blur'],
}, },
// { {
// validator: (rule, value, callback) => { validator: (rule, value, callback) => {
// return this.$u.test.mobile(value); return this.$u.test.mobile(value);
// }, },
// message: "", message: "手机号格式不正确",
// trigger: ["blur"], trigger: ["blur"],
// }, },
], ],
}, },
allData: [], allData: [],

View File

@ -9,7 +9,7 @@ function email(value) {
* 验证手机格式 * 验证手机格式
*/ */
function mobile(value) { function mobile(value) {
return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value) return /^1\d{10}$/.test(value)
} }
/** /**