first commit

This commit is contained in:
编码猿
2024-09-27 01:32:49 +08:00
commit 28ebe05a64
7399 changed files with 1174529 additions and 0 deletions

View File

@@ -0,0 +1 @@
c277717d-6d81-4989-92ed-425db9fd8ef7

View File

@@ -0,0 +1,27 @@
<template>
<div class="content">
<HeaderTop page_title='关于我们'></HeaderTop>
<view class="padding-30">
<h2>测试</h2>
</view>
</div>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
export default {
comments: {
HeaderTop
},
data() {
return {
};
}
}
</script>
<style lang="less" scoped>
</style>

View File

@@ -0,0 +1,66 @@
<template>
<!-- 认证1 页面 -->
<view class="content"></view>
</template>
<script>
import verification from '../../common/verification.js' //正则验证
export default {
data() {
return {
get_code: false,
count_time: 60,
phone: '',
code: '',
new_password: '',
sure_password: '',
}
},
// 跳过按钮的回调函数
onNavigationBarButtonTap(e) {
},
methods: {
// 获取验证码
getCode() {
this.get_code = !this.get_code
this.timer();
},
// 验证码计时器
timer() {
if (this.count_time > 0) {
this.count_time--;
this.get_code = true
setTimeout(this.timer, 1000);
} else {
this.count_time = 60;
this.get_code = false
}
},
sure() {
verification.isNull(this.phone, this.code, this.new_password, this.sure_password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isPhone(this.phone); // 手机号格式验证
}
if (verification.isPhone.prototype.the_isPhone == true) {
verification.isSamePsd(this.new_password, this.sure_password); // 两次密码是否相同
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isPhone.prototype.the_isPhone == true &&
verification.isSamePsd.prototype.the_isSamePsd == true
) {
uni.navigateTo({
url: 'authentication'
});
}
}
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,77 @@
<template>
<!-- 绑定手机号 页面 -->
<view class="content">
<HeaderTop page_title='绑定手机号'></HeaderTop>
<view class="padding-30">
<view class="uni-form-item uni-column d-flex x_margin0auto padding-zy30 j-sb a-center border-bottom list">
<input class="uni-input h-100 flex-1" type="number" focus placeholder="请输入手机号" v-model="phone"/>
<view class="get_code x-text-red x-text-font24" v-if="get_code==false" @click="getCode()">获取验证码</view>
<view class="get_code x-text-red x-text-font24 w-50" v-else>{{count_time}}s后再次获取验证码</view>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto padding-zy30 j-sb a-center border-bottom list">
<input class="uni-input flex-1" type="number" placeholder="验证码" v-model="code" />
</view>
<view class="x_public_box x-bg-159 esc_login x-text-white" @click="sureBind()">确定</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import verification from '../../common/verification.js' //正则验证
export default{
data(){
return {
phone:'',
get_code: false, //判断是否点击了“获取验证码”按钮 是true false
code: '', // 验证码
count_time: 60,
}
},
comments: {
HeaderTop
},
methods:{
// 确认绑定手机号
sureBind(){
verification.isNull(this.phone, this.code) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
uni.navigateBack(2)
}
},
// 获取验证码
getCode() {
this.get_code = !this.get_code
this.timer();
},
// 验证码计时器
timer() {
if (this.count_time > 0) {
this.count_time--;
this.get_code = true
setTimeout(this.timer, 1000);
} else {
this.count_time = 60;
this.get_code = false
}
},
}
}
</script>
<style lang="scss">
.content {
position: relative;
.list{
height: 83upx;
}
.esc_login{
line-height: 82upx;
position: absolute;
bottom:100upx;
left: 34upx;
}
}
</style>

View File

@@ -0,0 +1,107 @@
<template>
<!-- 修改密码 页面 -->
<view class="content">
<HeaderTop page_title='修改密码'></HeaderTop>
<view class="padding-30">
<view class="padding-zy30 d-flex j-sb a-center border-bottom list">
<view class="">旧密码</view>
<input type="password" value="" placeholder="请输入旧密码" class="flex-1" v-if="is_seenOld==false" v-model="old_password"/>
<input type="text" value="" placeholder="请输入旧密码" class="flex-1" v-if="is_seenOld==true" v-model="old_password"/>
<image src="../../static/my/bukan.png" mode="" class="bukan" v-if="is_seenOld==false" @click="isChangeOld()"></image>
<image src="../../static/my/kan.png" mode="" class="kan" v-if="is_seenOld==true" @click="isChangeOld()"></image>
</view>
<view class="padding-zy30 d-flex j-sb a-center border-bottom list">
<view class="">新密码</view>
<input type="password" value="" placeholder="请输入新密码" class="flex-1" v-if="is_seenNew==false" v-model="new_password"/>
<input type="text" value="" placeholder="请输入新密码" class="flex-1" v-if="is_seenNew==true" v-model="new_password"/>
<image src="../../static/my/bukan.png" mode="" class="bukan" v-if="is_seenNew==false" @click="isChangeNew()"></image>
<image src="../../static/my/kan.png" mode="" class="kan" v-if="is_seenNew==true" @click="isChangeNew()"></image>
</view>
<view class="padding-zy30 d-flex j-sb a-center border-bottom list">
<view class="">确认密码</view>
<input type="password" value="" placeholder="请输入新密码" class="flex-1" ref='sure_pass' v-if="is_seenSure==false" v-model="sure_password"/>
<input type="text" value="" placeholder="请输入新密码" class="flex-1" ref='sure_pass' v-if="is_seenSure==true" v-model="sure_password"/>
<image src="../../static/my/bukan.png" mode="" class="bukan" v-if="is_seenSure==false" @click="isChangeSure()"></image>
<image src="../../static/my/kan.png" mode="" class="kan" v-if="is_seenSure==true" @click="isChangeSure()"></image>
</view>
<view class="x_public_box x-bg-159 esc_login x-text-white w-90" @click="surePassword()">确定</view>
</view>
</view>
</template>
<script>
import verification from '../../common/verification.js' //正则验证
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import X_login from '../../utils/models/x_login.js'
export default{
data(){
return {
old_password:'', //旧密码
new_password:'', //新密码
sure_password:'', //确认密码
is_seenOld:false,
is_seenNew:false,
is_seenSure:false
}
},
comments: {
HeaderTop
},
methods:{
isChangeOld(){
this.is_seenOld = ! this.is_seenOld
},
isChangeNew(){
this.is_seenNew = ! this.is_seenNew
},
isChangeSure(){
this.is_seenSure = ! this.is_seenSure
},
// 确认修改密码
async surePassword(){
verification.isNull(this.old_password, this.new_password, this.sure_password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isSamePsd(this.new_password,this.sure_password); // 两次密码是否相同
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isSamePsd.prototype.the_isSamePsd == true
) {
let res = await X_login.X_editphone(this.old_password,this.new_password)
uni.clearStorage();
uni.redirectTo({
url:'./x_login'
})
this.handleError(res, res => {
this.list = res.data
})
// uni.navigateBack(2)
// console.log('修改成功');
}
}
}
}
</script>
<style lang="scss">
.content {
position: relative;
.list{
height: 83upx;
.bukan{
height:15upx;
width:47upx;
}
.kan{
height:36upx;
width:47upx;
}
}
.esc_login{
line-height: 82upx;
margin-top:200upx;
}
}
</style>

View File

@@ -0,0 +1,320 @@
<template>
<!-- 购物车 页面 -->
<view class="content w-100 h-100">
<!-- <view>
<image src="../../static/font/search.png" mode=""></image>
</view> -->
<view class="header bg-linear-gradient x-text-white text-center">
<image src="../../static/my/left.png" mode="" class="goback" @click="back()"></image>
收藏商品
<view class="search">
<!-- <image src="../../static/font/search.png" mode=""></image> -->
</view>
<view class="edit_shoppingCar" @click="edit_shoppingCar()" v-if="isEdit==true">完成</view>
<view class="edit_shoppingCar" @click="edit_shoppingCar()" v-if="isEdit==false &&list.length>0">编辑</view>
</view>
<view class="list" v-if="list.length>0">
<view class="list_items" v-for="(item,index) in list" :key="index">
<checkbox-group class="block" style='padding:0 30upx 30upx'>
<view class=" d-flex a-center">
<view class="d-flex goods_items a-center w-100">
<checkbox-group @change="selected(item)" v-if="isEdit==true">
<checkbox class="xuanzhong" :checked="item.checked" />
</checkbox-group>
<view class="box_img" @click="goodsDetail(item)">
<image :src="'https://'+item.pc_thumb" mode="" class="h-100 w-100"></image>
</view>
<view class="goods_txt flex-1" @click="goodsDetail(item)">
<view class="font-weight">{{item.name}}</view>
<view class="">{{item.factory_name}}</view>
<view class="">{{item.spec_desc}}</view>
<view class="x-text-159">{{item.show_price}}</view>
</view>
<!-- <view class="goods_count d-flex">
<view class="bianji_cars_num bianji_cars_numJian" @click="reduse_goodsNum(index)">-</view>
<view class="bianji_cars_num bianji_cars_numAdd">{{goods_num}}</view>
<view class="bianji_cars_num bianji_cars_numAdd" @click="add_goodsNum(index)">+</view>
</view> -->
</view>
</view>
</checkbox-group>
<view class="line"></view>
</view>
</view>
<!-- <view class="settlement shadow d-flex a-center" v-if="isEdit==true">
</view> -->
<view class="settlement shadow d-flex a-center" v-if="isEdit==true">
<view class="all_choose">
<checkbox-group @change="selectedall()">
<checkbox class="quanxuananniu" :checked="allchecked" />全选
</checkbox-group>
</view>
<view class="x_textRight flex-1 d-flex text-right ml-5">
<view>已选:</view>
<view class="x-text-159"> {{jianshu}} </view>
<view></view>
</view>
<view class="x-bg-159 text-center del_goods bg-danger text-white" @click="del_goods()">删除</view>
</view>
<view class="no_list x_margin0auto" v-if="list.length<=0">
<image src="../../static/shoppingCart/nopic.png" mode="" class="no_list_img"></image>
</view>
</view>
</template>
<script>
import X_goods from '../../utils/models/goods.js'
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
// import {Config} from '@/utils/config'
export default {
data() {
return {
allchecked: false, //默认全选为true因为后台数据没有是否选中的信息
goods_num: 10, //商品当前数量
Stock: 20, //当前商品的总库存
isEdit: false, // 判断是否编辑购物车true为编辑false为不编辑
add_choose_checked: false,
list: [], // 数据
isChecked: false,
checkboxData: [{
'value': 0,
'label': '选项一'
}, {
'value': 1,
'label': '选项2'
}],
checkedArr: [], //复选框选中的值
allChecked: false, //是否全选
jianshu: 0, // 已选中的件数
goods_id: '',
goodsId_arr:[],
id: {}
}
},
comments: {
HeaderTop
},
onLoad() {
},
mounted() {
this.collectList();
},
methods: {
// 删除收藏的商品
async del_goods() {
var newArr = this.list.filter(function(obj) {
return obj.checked == true;
});
newArr.map((item,index)=>{
this.goods_id += item.goods_id+','
this.goodsId_arr.push({"goods_id":item.goods_id})
});
//this.goods_id = this.goods_id.substr(0, this.goods_id.length - 1);
// let res = await X_goods.X_addCollect_app(JSON.stringify(this.goodsId_arr), 2)
let res = await X_goods.X_addCollect_app(this.goods_id, 2)
this.handleError(res, res => {
this.isEdit = false
this.collectList();
})
},
// 单个商品前的勾选
selected(item) {
item.checked = !item.checked
if (!item.checked) {
this.allchecked = false
this.jianshu--
} else {
this.jianshu++
const test = this.list.every(item => {
return item.checked === true
})
if (test) {
this.allchecked = true
} else {
this.allchecked = false
}
}
},
// 全选按钮
selectedall() {
this.allchecked = !this.allchecked;
this.jianshu = 0;
if (this.allchecked) {
this.list.map(item => {
item.checked = true
})
this.jianshu = this.jianshu + this.list.length
} else {
this.list.map(item => {
item.checked = false
})
}
},
// 商品收藏列表
async collectList() {
let res = await X_goods.x_Collectlsit()
this.handleError(res, res => {
this.list = res.data.data.list
this.list.map(item => {
item.checked = false
})
})
},
//去结算
to_pay() {
uni.navigateTo({
url: './sureOrder'
})
},
// 管理购物车
edit_shoppingCar() {
this.isEdit = !this.isEdit
},
// 进入商品详情页
goodsDetail(item) {
console.log(item,2)
if (this.isEdit == false) {
uni.navigateTo({
url:'../home/search-list?keyword='+item.name
})
}
},
back(){
uni.navigateBack(1)
},
// 登录
to_login() {
uni.navigateTo({
url: 'x_login'
});
}
}
}
</script>
<style lang="scss">
.content {
.header {
height: 148upx;
font-size: 32upx;
position: relative;
line-height: 194upx;
.goback{
position: absolute;
bottom:29upx;
left:31upx;
height:30.9upx;
width:18upx;
}
.edit_shoppingCar {
position: absolute;
bottom: -48upx;
right: 31upx;
}
}
.list {
height: calc(100% - 248upx);
overflow-y: auto;
.list_items {
.box_img {
height: 153.3upx;
width: 270upx;
padding: 10upx 20upx;
margin: 0 10upx;
}
.goods_items {
position: relative;
.goods_count {
position: absolute;
bottom: -14upx;
right: 8upx;
}
}
.line {
height: 4upx;
background-color: #F2F2F2;
}
}
}
.no_list {
margin-top: 315upx;
text-align: center;
.no_list_img {
height: 198upx;
width: 395upx;
}
}
.settlement {
height: 100upx;
.all_choose {
width: 30%;
margin-left: 30upx;
}
.to_buy {
line-height: 100upx;
width: 260upx;
min-width: 224.6upx;
font-size: 34upx;
}
.add_toCollection {
border: 1upx solid #EDCA4A;
border-radius: 30upx;
line-height: 60upx;
width: 198.8upx;
color: #EDCA4A;
margin: 0 22px 0 30px;
}
.del_goods {
border: 1upx solid #EB5159;
// border-radius: 30upx;
width: 249.6upx;
height: 100upx;
line-height: 100upx;
color: #EB5159;
border: 1upx solid #EB5159;
background-color: #FFFFFF;
}
}
// .search{
// border: 1rpx solid #007AFF;
// width: 40.9upx;height: 40.9upx;
// position: absolute;
// bottom: -48upx;
// right: 150upx;
// }
}
</style>

View File

@@ -0,0 +1,76 @@
<template>
<!-- 医点医滴会员服务协议 -->
<view class="content">
<HeaderTop page_title='医点医滴会员服务协议'></HeaderTop>
<view class="padding-30">
<view class="font-weight font_28">医点医滴会员服务协议</view>
<view class="">欢迎使用医点医滴平台以下简称"平台"为维护市场交易秩序平台与会员指采购商会员达成以下服务协议:</view>
<view class="font-weight">遵守法律法规</view>
<view>采购商会员使用平台进行药品交易其行为必须遵循中华人民共和国药品管理法医疗器械监督管理条例中华人民共和国合同法中华人民共和国电子签名法药品经营质量管理规范药品流通监督管理办法互联网药品信息服务管理办法互联网药品交易服务审批暂行规定等有关法律法规</view>
<view class="font-weight">平台服务对象</view>
<view>平台服务对象是具有合法资质的医药医疗器械及保健品经营企业和医疗机构等平台服务对象必须成为平台注册会员才能使用平台平台服务对象通过线下资料认证后成为采购商会员可以在平台进行采购活动</view>
<view>平台服务对象要向平台提供真实准确的资质材料包括公司的名称地址联系电话法人代表银行账号和国家规定的相关证书和授权书等资质材料如发生变更应立即联系客服进行修改</view>
<view>如平台有合理理由怀疑服务对象资质材料不准确平台有权暂停或终止用户的注册身份及资料并拒绝用户在目前或将来对服务或其任何部分以任何形式使用</view>
<view>如服务对象的资质材料不真实不准确致使医点医滴平台或第三方受到任何直接或间接经济损失的本平台有权随时取消服务对象的会员资格所造成的损失应由服务对象全部承担</view>
<view>如因服务对象提供的资质材料不实或不准确而给自身造成任何性质的损失其后果由服务对象自行承担</view>
<view>如由于服务对象自身保管不当导致会员信息资料被他人窃用其后果均由服务对象自行承担</view>
<view class="font-weight">平台服务内容</view>
<view>提供医药相关产品信息服务帮助会员进行药品采购和提高经营效率</view>
<view>提供采购订单跟踪物流等服务平台记录交易履约全程保证交易可追溯</view>
<view>为医药企业产品品牌提供推广服务</view>
<view>平台提供的其他服务</view>
<view>平台提供的其他服务</view>
<view class="font-weight">采购商会员权利义务</view>
<view>采购商会员采购行为必须符合各项法律法规及平台的交易管理规则会员自行承担因产品的违规采购产生的法律责任并同意赔偿违反前述承诺给平台造成的损失包括合理的追索费用</view>
<view>采购商会员承诺通过交易平台从事医药电子商务符合国家有关法律法规的规定不利用平台进行任何非法交易活动否则本平台有权立即取消其会员资格所造成的后果应由当事人全部承担本平台不承担连带责任</view>
<view>采购商会员享受平台提供的一站式服务且应保证具备合法资质并提供相应证明材料会员资料应符合国家相关法律和规定并对其真实性负全部责任</view>
<view>采购商会员在平台采购应不超过经营范围采购商品并按国家规范采购商品并提供相应证明文件</view>
<view class="font-weight">平台权利义务</view>
<view>平台为交易双方提供产品展示信息沟通订单处理结算等服务如出现技术障碍及时告知会员并组织修复在此期间平台有权暂时停止以上服务直至故障消除</view>
<view>平台为会员提供的医药商品信息的版权和知识产权归平台所有未经许可任何单位和个人不得以任何形式复制转载出售出版传播信息资料否则本平台将追究其经济和法律责任</view>
<view>平台保留对服务相关功能例如药品信息管理结算流程变更升级的权利</view>
<view>根据法律法规及本平台交易的实际情况平台有权修改有关条款并于公示即时生效会员在平台修改服务条款后继续使用服务则被视作接受修改条款</view>
<view>会员若因违法违规侵害了第三方的合法权利而导致第三方或行政司法机关对金壶医药交易平台及金壶医药有限公司提出索赔或处罚要求包括但不限于诉讼费律师费差旅费等必须全额赔偿给金壶医药有限公司</view>
<view> 平台有权对会员使用平台服务的情况进行审查和监督包括但不限于对会员存储在平台的内容进行审核如会员在使用网络服务时违反任何本条款规定平台或其授权的人有权要求会员改正或直接采取一切必要的措施包括但不限于暂停或终止会员使用网络服务的权利以减轻会员不当行为造成的影响如会员有违反规定导致任何法律后果的发生会员应独立承担所有相应的法律责任</view>
<view class="font-weight">免责及责任的限制与排除</view>
<view>平台的会员名和密码只限会员使用会员对使用该账号的一切行为承担法律责任会员应采取一切合理安保措施保护其资料不被泄漏如用户发现其账号遭他人非法使用应立即通知平台因用户的保管疏忽而产生的风险损失由会员独自承担本平台不承担责任</view>
<view> 对于因不可抗力或平台不能控制的原因或其他意外事件包括但不限于任何间接偶然特殊及继起的损害造成的服务中断或其他缺陷使得本条款履行不能平台不承担任何责任但将尽力减少因此而给客户造成的损失和影响 不可抗力不能控制的原因意外事件是指不能预见不能克服并不能避免且对一方或双方当事人造成重大影响的客观事件包括但不限于自然灾害如洪水地震瘟疫流行等以及社会事件如战争动乱政府行为等</view>
<view class="font-weight">协议的中止和终止</view>
<view>会员违反本协议规定或本协议附属规定的情况下平台有权中止或终止本协议协议终止并不意味着终止前所发生的未完成交易指令的撤销也不能消除因终止前的交易所带来的任何法律后果</view>
<view class="font-weight">法律适用和争议解决</view>
<view>本协议一切事宜均适用中华人民共和国法律并依其解释</view>
<view>若履行本协议发生争议由双方友好协商解决协商不成时可向安徽金壶医药有限公司住所地人民法院提起诉讼</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
export default {
data() {
return {
}
},
comments: {
HeaderTop
},
onShow() {
},
mounted() {
},
onLoad(option) {
console.log(option,0)
},
methods: {
}
}
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,94 @@
<template>
<!-- 购物车 页面 -->
<view class="content w-100 h-100 position-relative">
<view class="header bg-linear-gradient x-text-white text-center ">
认证
<view class="edit_shoppingCar" @click="modification">修改</view>
</view>
<view class="img ">
<image class="Pview img" src="../../static/1000.jpg" mode=""></image>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
// import {Config} from '@/utils/config'
export default {
data() {
return {
isEdit: false, // 判断是否编辑购物车true为编辑false为不编辑
}
},
comments: {
HeaderTop
},
onLoad() {
},
mounted() {
},
methods: {
//去结算
to_updata(){
uni.navigateTo({
url:'./Eauthentication'
})
},
// 登录
to_login() {
uni.navigateTo({
url: 'x_login'
});
},
// 修改
modification(){
uni.navigateTo({
url:'Eauthentication'
})
}
}
}
</script>
<style lang="scss">
.content {
.header {
height: 148upx;
font-size: 32upx;
position: relative;
line-height: 194upx;
.edit_shoppingCar {
position: absolute;
bottom: -48upx;
right: 31upx;
}
}
.img{
position: absolute;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -100px;
width: 100px;
height: 100x;
background: green;
}
.Pview{
width: 585upx;
height: 322upx;
}
}
</style>

View File

@@ -0,0 +1,82 @@
<template>
<!-- 对公信息 页面 -->
<view class="content h-100">
<HeaderTop page_title='对公账户信息'></HeaderTop>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>单位名称</view>
<view>{{list.company_name}}</view>
</view>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>纳税人识别码</view>
<view>{{list.company_code}}</view>
</view>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>地址</view>
<view>{{list.address}}</view>
</view>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>电话</view>
<view>{{list.tel}}</view>
</view>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>开户行</view>
<view>{{list.bank_name}}</view>
</view>
<view class="message d-flex j-sb border-bottom margin-zy20" style="line-height: 90upx;">
<view>账号</view>
<view>{{list.account_number}}</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import X_login from '../../utils/models/x_login.js'
export default {
data() {
return {
list_flag:'',
list:''
}
},
onShow() {
this.messageList()
},
mounted() {
},
comments: {
HeaderTop
},
onLoad(option) {
this.list_flag = option.list_flag
},
methods: {
async messageList(){
let res = await X_login.X_accountInfo()
this.handleError(res, res => {
this.list = res.data;
})
},
//对公打款
gong(){
},
// 返回
goBack(){
public_function.goBack();
}
}
}
</script>
<style lang="scss">
.content {
}
</style>

View File

@@ -0,0 +1,108 @@
<template>
<!-- 消息 页面 -->
<view class="content">
<PublicTop page_title='消息'></PublicTop>
<!-- 占位 -->
<view class="place"></view>
<view>
<view v-if='messageList.length<=0' align="center">
<image src="../../static/no/u/carno.png" mode="" class="noCar_img"></image>
<view class="x_textCenter margin-shu20 font_28 x_text_hui">暂无消息</view>
</view>
<view class="padding-30" v-for="(item,index) of this.messageList" :key="index">
<view class="padding-zy30 d-flex j-sb a-center border-bottom">
<image src="../../static/my/mycar.png" mode="" class="" style="height:74upx; width:76upx;"></image>
<view class="font-weight margin-zy20">{{item.biz_type_text}}</view>
<view class="flex-1 x_text_hui">{{item.biz_title}}</view>
<view class="">{{item.create_time}}</view>
</view>
</view>
</view>
<view class="loading-text">{{loadingText}}</view>
</view>
</template>
<script>
import PublicTop from '../../components/HeaderTop/PublicTop.vue'
import message from '../../utils/models/message.js'
export default{
data(){
return {
cache:250,
messageList:[],
page:1,
isScroll:true,
loadingText:"",
}
},
components: {
PublicTop
},
//下拉刷新需要自己在page.json文件中配置开启页面下拉刷新 "enablePullDownRefresh": true
onPullDownRefresh() {
setTimeout(()=>{
this.reload();
uni.stopPullDownRefresh();
}, 1000);
},
//上拉加载需要自己在page.json文件中配置"onReachBottomDistance"
onReachBottom(){
if(!this.isScroll){
this.loadingText="到底了";
return false;
}else{
this.loadingText="正在加载...";
setTimeout(() => {
this.getList();
}, 500);
}
},
methods:{
async getList() {
let parames = {
page:this.page
}
let data = await message.getList(parames)
if(data.data.current_page == data.data.last_page){
this.isScroll = false
}
for (let i = 0; i < data.data.data.length; i++) {
this.messageList.push(data.data.data[i])
}
this.page++
this.handleError(data, res => {
})
},
},
created() {
if(this.page){
this.isScroll = true
this.serviceList = []
}
this.getList()
}
}
</script>
<style lang="scss">
.place{
background-color: #ffffff;
height: 148upx;
}
.noCar_img{
height:238upx;
width:350upx;
margin-top: 100upx;
}
.loading-text{
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 60upx;
color: #979797;
font-size: 24upx;
}
</style>

View File

@@ -0,0 +1,393 @@
<template>
<!-- 我的 页面 -->
<view class="content w-100 h-100 bg_F2F2F2">
<view class="info w-100 d-flex bg-linear-gradient">
<view class="head_portrait">
<!-- <img src="../../static/my/touxiang.png" alt="" class='h-100 w-100'> -->
<image src="../../static/my/touxiang.png" alt="" class='h-100 w-100'></image>
</view>
<view class="d-flex x-text-white info_txt">
<view class="" @click="to_login()" v-if="is_login==false">注册/登录</view>
<view class="" v-if="is_login==true">{{userPhone}}</view>
</view>
<image src="../../static/my/shezhi.png" mode="" class="set_up" @click="toSetting()"></image>
<image src="../../static/my/message.png" mode="" class="h-100 w-100 mes" @click="to_message()"></image>
</view>
<view class='padding-zy30'>
<view class="x_public_box info_item">
<!-- 我的订单 -->
<view class="my_order x_margin0auto ">
<view class="order_tip d-flex j-sb a-center x-border-hui padding-zy30" @click="to_order(0)">
<view class="">我的订单</view>
<image src="../../static/my/right.png" mode="" class="order_back"></image>
</view>
<view class="order_items d-flex j-around" style="padding-top: 30upx;">
<!-- // 1 待付款 2代发货 6待收货 3已完成 -->
<view @click="to_order(1)" class="order_item_box">
<image src="../../static/my/bag2.png" mode="" class="order_img"></image>
<view>待付款</view>
<!-- <view class="order_num" v-if='item.order_status==1'>{{item.count}}</view> -->
<view class="order_num" v-if='order_num[0].count'>{{order_num[0].count}}</view>
</view>
<view @click="to_order(2)" class="order_item_box">
<image src="../../static/my/bag1.png" mode="" class="order_img"></image>
<view>待发货</view>
<!-- <view class="order_num" v-if='item.order_status==2'>{{item.count}}</view> -->
<view class="order_num" v-if='order_num[1].count'>{{order_num[1].count}}</view>
</view>
<view @click="to_order(3)" class="order_item_box">
<image src="../../static/my/mycar.png" mode="" class="order_img"></image>
<view>待收货</view>
<view class="order_num" v-if='order_num[2].count'>{{order_num[2].count}}</view>
<!-- <view class="order_num" v-if='item.order_status==6'>{{item.count}}</view> -->
</view>
<view @click="to_order(4)" class="order_item_box">
<image src="../../static/my/dui.png" mode="" class="order_img"></image>
<view>已完成</view>
<view class="order_num" v-if='order_num[3].count'>{{order_num[3].count}}</view>
<!-- <view class="order_num" v-if='item.order_status==3'>{{item.count}}</view> -->
</view>
<!-- <view @click="to_refund()">
<image src="../../static/my/qian.png" mode="" class="order_img"></image>
<view>退款/售后</view>
</view> -->
</view>
</view>
</view>
<view class="x_public_box">
<!-- 我的服务 -->
<view class="my_order x_margin0auto my_service">
<view class="order_tip d-flex j-sb a-center x-border-hui padding-zy30">
<view class="">我的服务</view>
</view>
<view class="service_items d-flex j-around">
<view @click="Eauthentication()">
<image src="../../static/my/add.png" mode="" class="service_img"></image>
<view>企业认证</view>
</view>
<view @click="to_opinion()">
<image src="../../static/my/mykefu.png" mode="" class="service_img"></image>
<view>专属客服</view>
</view>
<view @click="pathList()">
<image src="../../static/my/location.png" mode="" class="service_img"></image>
<view>收货地址</view>
</view>
<view @click="go_collect()">
<image src="../../static/my/star.png" mode="" class="service_img"></image>
<view>我的收藏</view>
</view>
<view @click="duigong()">
<image src="../../static/my/gong.png" mode="" class="service_img"></image>
<view>对公信息</view>
</view>
</view>
</view>
</view>
</view>
<view class="Copyright text-center x_text_hui">
<view>Copyright©2014-2020</view>
<view>医点医滴平台 版权所有</view>
</view>
</view>
</template>
<script>
import {
Config
} from '../../utils/config.js'
import X_login from '../../utils/models/x_login.js'
import X_goods from '../../utils/models/goods.js'
export default {
data() {
return {
is_login: false,
userPhone: '',
order_num:[
{"order_status":1,"count":0},
{"order_status":2,"count":0},
{"order_status":6,"count":0},
{"order_status":3,"count":0}
]
}
},
onLoad() {
},
beforeCreate() {
},
created() {
},
mounted() {
this.istell();
},
onShow() {
this.istell();
this.get_order_count();
},
methods: {
// 获取订单数量
async get_order_count() {
let res = await X_goods.x_order_count()
this.order_num = res.data
this.handleError(res, res => {
})
},
// 对公信息
duigong() {
uni.navigateTo({
url: './gong_mes'
})
},
async istell() {
let res = await X_login.x_tell()
this.userPhone = res.data;
if(res.data){
this.is_login = true
}
this.handleError(res, res => {
// this.userPhone = res.data;
})
},
// 获取用户手机号
// async istell() {
// uni.getStorage({
// key: 'isAuthentication',
// success: function(res) {
// // console.log(res,'zheshi');
// if (res.data == '') {
// uni.navigateTo({
// url: './x_login'
// })
// }
// }
// });
// let res = await X_login.x_tell()
// this.handleError(res, res => {
// if (res.data == '') {
// uni.getStorage({
// key: 'isAuthentication',
// success: function(res) {
// if (res.data == '') {
// uni.navigateTo({
// url: './x_login'
// })
// }
// }
// });
// } else {
// this.userPhone = res.data;
// this.is_login = true
// if (this.userPhone == undefined || '') {
// uni.navigateTo({
// url: './x_login'
// })
// }
// }
// })
// },
// 认证
to_Authentication() {
uni.navigateTo({
url: 'authentication'
})
},
//意见反馈
to_opinion() {
uni.navigateTo({
url: 'opinion'
})
},
// 退款/售后
to_refund() {
uni.navigateTo({
url: '../refund/refund'
})
},
// 我的订单
to_order(index) {
uni.navigateTo({
url: '../order/index?is_index=' + index
})
},
// 消息
to_message() {
uni.navigateTo({
url: 'is_message'
})
},
// 设置
toSetting() {
uni.navigateTo({
url: './setting'
})
},
// 登录
to_login() {
uni.navigateTo({
url: 'x_login'
});
},
// 收藏
go_collect() {
uni.navigateTo({
url: './collect'
})
},
// 收获地址
pathList() {
uni.navigateTo({
url: '/pages/my/path-change'
})
},
// 企业认证
Eauthentication() {
uni.navigateTo({
url: '../auth/is_Authentication'
})
},
}
}
</script>
<style lang="scss">
.content {
.info {
position: relative;
height: 340upx;
padding: 0 10upx;
.head_portrait {
height: 128upx;
width: 128upx;
position: absolute;
top: 102upx;
left: 30upx;
}
.info_txt {
line-height: 122upx;
position: absolute;
top: 116upx;
left: 200upx;
font-size: 30upx;
}
.set_up {
position: absolute;
bottom: 233upx;
right: 127upx;
height: 41upx;
width: 45upx;
}
.mes {
width: 44upx;
height: 38upx;
position: absolute;
right: 43upx;
top: 72upx;
}
}
.info_item {
height: 248upx;
margin-top: -82upx;
position: relative;
z-index: 30;
.the_items {
padding-top: 10upx;
}
}
.my_order {
height: 200upx;
margin: 0 auto;
.order_tip {
line-height: 80upx;
border-bottom: 2upx solid #F4F4F4;
}
.order_items {
text-align: center;
padding-top: 15upx;
.order_item_box{
position: relative;
}
.order_img {
height: 52upx;
width: 61upx;
}
.order_num{
position: absolute;
top:-16upx;
right:-16upx;
// padding: 2upx 10upx;
height:40upx;
width:40upx;
line-height: 40upx;
color:#FFFFFF;
border-radius: 50%;
background-color: red;
}
}
.service_items {
text-align: center;
padding-top: 26upx;
}
.order_back {
height: 30upx;
width: 19upx;
}
}
.my_service {
height: 352upx;
.service_img {
height: 91upx;
width: 91upx;
}
}
.Copyright {
width: 100%;
position: absolute;
bottom: 30upx;
}
}
</style>

View File

@@ -0,0 +1,95 @@
<template>
<!-- 意见反馈 页面 -->
<view class="content bg_F2F2F2">
<HeaderTop page_title='专属客服'></HeaderTop>
<view class="list bg_F2F2F2">
<view class="top bg-linear-gradient w-100">
<!-- <img src="../../static/my/zhuanshukefu.png" alt="" class='kefu'> -->
<image src="../../static/my/zhuanshukefu.png" alt="" class='kefu'></image>
</view>
<view class="x-bg-white info" v-for="(item,index) in list" :key="index" >
<view class="d-flex border-bottom">
<view class="font-weight">客服名称</view>
<view class="margin-zy20">{{item.nickname}}</view>
</view>
<view class="d-flex j-sb a-center">
<view class="font-weight">联系方式</view>
<view class="margin-zy20 text-left flex-1" @tap='to_call(item)'>{{item.mobile}}</view>
<image src="../../static/my/dianhua.png" mode="" class="tell" @tap='to_call(item)'></image>
</view>
</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import X_goods from '../../utils/models/goods.js'
export default {
data() {
return {
list:''
}
},
comments: {
HeaderTop
},
onShow() {
this.the_custOmer()
},
components: {
},
methods: {
to_call(item){
uni.makePhoneCall({
phoneNumber: item.mobile //仅为示例
});
},
// x_custOmer
async the_custOmer() {
let res = await X_goods.x_custOmer()
console.log(res)
this.list = res.data
console.log(this.list)
this.handleError(res, res => {
})
},
}
}
</script>
<style lang="scss">
.content {
.list{
.top{
height:240upx;
text-align: center;
.kefu{
height:180upx;
width:180upx;
border-radius: 50%;
margin-top:126upx;
}
}
.info{
width:690upx;
border-radius: 30upx;
margin:100upx auto;
padding: 0 30upx;
line-height: 100upx;
.tell{
height:34upx;
width:28upx;
}
}
.other{
width:100%;
position: fixed;
bottom:50upx;
}
}
}
</style>

View File

@@ -0,0 +1,237 @@
<template>
<!-- 收货地址 -->
<view class="w-100 h-100 all">
<HeaderTop page_title='收货地址'></HeaderTop>
<view class="list">
<view class="list_item d-flex j-sb j-center a-center padding-30 border-bottom" v-for="(item,index) in dataList" :key="index">
<!-- <radio value="" :checked="item.checked" style="width:10%;" v-if="goods_id!=''" /> -->
<view class="items_info flex-1 padding-zy30">
<view class="d-flex">
<view>{{item.consignee}}</view>
<view class='margin-zy20'>{{item.tel}}</view>
<view class="is_choose margin-zy20" v-if='item.is_default!=0'>默认</view>
</view>
<view>
{{item.address}}
</view>
</view>
<image src="../../static/shoppingCart/edit1.png" mode="" style="height:40upx; width:40upx;margin-right: 30upx;" @click.stop="edit(index)"></image>
</view>
</view>
<!-- <block v-for="(item,index) in dataList" :key="index">
<uni-swipe-action :options="options"
@click="bindClick($event,index)">
<uni-list-item @click="choose(item)">
<view class="text-secondary text-dark">
<view class="d-flex a-center">
<text class="text-dark mr-2 font-weight">{{item.consignee}}</text>
{{item.tel}}
<text class="main-text-color ml-2"
v-if="item.isdefault">[默认]</text>
</view>
<view>{{item.area_name}} {{"("}}{{item.address}}{{")"}}</view>
</view>
</uni-list-item>
</uni-swipe-action>
</block> -->
<view class="x_public_box x-text-white x-bg-159 margin-shu20 shadow addBtn w-90" style="line-height: 80upx;" @click="addPath()">新增收货地址</view>
</view>
</template>
<script>
import store from '@/store/index.js'
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import uniListItem from "@/components/uni-ui/uni-list-item/uni-list-item.vue"
import uniSwipeAction from "@/components/uni-ui/uni-swipe-action/uni-swipe-action.vue"
import {mapState,mapMutations} from "vuex"
import shippingAddress from '../../utils/models/shop.js'
export default {
components: {
uniListItem,
uniSwipeAction,
HeaderTop
},
data() {
return {
address_id:'',
goods_id:'',
dataList:[], //数据列表
isChoose:false,
options: [{
text: '编辑',
style: {
backgroundColor: '#007aff'
}
}, {
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}],
}
},
computed: {
...mapState({
list:state=>state.path.list
}),
},
onLoad(option) {
if (option.type === '') {
this.isChoose = true
}
if(option.goods_id){
this.goods_id = option.goods_id
}
// 请求数据
this.getData()
},
methods: {
// 编辑地址
edit(index){
// console.log(this.goods_id)
uni.redirectTo({
url:'./user-path-edit?address_item='+JSON.stringify(this.dataList[index])
})
console.log(JSON.stringify(this.dataList[index]));
// {"id":286,
// "area_id":216,
// "address":"aeawef",
// "consignee":"天空",
// "tel":"1565654848",
// "is_default":0,
// "area_name":"河南省 - 洛阳市 - 嵩县",
// "short_consignee":"天空",
// "checked":fals,
// }
},
// 选择地址
// 地址列表
async getData(){
let res = await shippingAddress.addressList();
this.handleError(res, res => {
this.dataList = res.data.data.list
this.dataList.forEach(item=>{
item.checked = false
this.address_id = item.id
})
})
},
async deletelist(){
let res = await shippingAddress.deleteAddress(this.address_id);
this.handleError(res, res => {
if(res.code == 200){
uni.showToast({
title:'删除成功'
})
}else{
}
})
},
async bindClick(value,i) {
let res;
switch (value.index){
case 0: // 修改
let obj = JSON.stringify({
index:i,
item:this.address_id
})
setTimeout(()=> {
uni.redirectTo({
url: '../my/user-path-edit?data='+obj,
});
},50);
break;
case 1: // 删除
let res = await shippingAddress.deleteAddress(this.address_id);
this.handleError(res, res => {
if(res.code == 200){
uni.showModal({
content: '要删除该收货地址吗?',
success(res){
if(res.confirm){
uni.showToast({
title:'删除成功'
})
}
}
})
}else{
}
})
break;
}
},
// 选择收货地址
// choose(item){
// if (this.isChoose) {
// // 通知订单提交页修改收货地址
// uni.$emit('choosePath',item)
// // 关闭当前页面
// uni.navigateBack({
// delta: 1
// });
// }
// },
// 新增地址
addPath() {
uni.redirectTo({
url: '../my/user-path-add'
});
},
}
}
</script>
<style>
.is_choose{
background-color: #EDCA4A;
color: #FFFFFF;
height:50upx;
line-height: 50upx;
padding: 0 15upx;
font-size: 28upx;
border-radius: 20upx;
}
.list{
height:calc(100% - 300upx);
overflow-y: auto;
}
.addBtn{
position: absolute;
bottom:0upx;
left: 34upx;
}
</style>

View File

@@ -0,0 +1,190 @@
<template>
<!-- 支付成功 页面 -->
<view class="content h-100">
<view class="banner">
<!-- <image src="../../static/my/left.png" mode="" class="back" @click="goBack()"></image> -->
<view class="page_title text-center x-text-white">支付</view>
<view class="pay_state d-flex a-center j-center">
<image src="../../static/shoppingCart/dui.png" mode="" class="margin-zy20" style="height:84upx; width:92upx;"></image>
<view class="x-text-white" style="font-size: 34upx;" v-if='list_flag==4 || list_flag==5'>支付成功</view>
<view class="x-text-white" style="font-size: 34upx;" v-if='list_flag==1 || list_flag==2'>订单提交成功</view>
</view>
</view>
<view class="text-center margin-shu20" v-if='list_flag==1 || list_flag==2'>请尽快完成支付超时系统将取消订单</view>
<view class="text-center margin-shu20" v-if='list_flag==4 || list_flag==5'>感谢您的购买我们将尽快为您发货</view>
<view class="two_btn d-flex j-sb w-90" style="margin:50upx auto;">
<view class="x_public_box x-text-white x-bg-159" style="line-height: 80upx; width:45%;" @click="lookOrder()">查看订单</view>
<view class="x_public_box x-text-white" style="width:45%; background-color: #F4C91C; line-height:80upx;" v-if='list_flag==4 || list_flag==5' @click="gohome()">返回首页</view>
<view class="x_public_box x-text-white" style="width:45%; background-color: #F4C91C; line-height:80upx;" v-if='list_flag==1 || list_flag==2' @click="gong()">对公打款</view>
</view>
<view class="x-bg-white info" v-for="(item,index) in list" :key="index" >
<view class="d-flex border-bottom">
<view class="font-weight">客服名称</view>
<view class="margin-zy20">{{item.nickname}}</view>
</view>
<view class="d-flex j-sb a-center">
<view class="font-weight">联系方式</view>
<view class="margin-zy20 text-left flex-1" @tap='to_call(item)'>{{item.mobile}}</view>
<image src="../../static/my/dianhua.png" mode="" class="tell" @tap='to_call(item)'></image>
</view>
</view>
</view>
</template>
<script>
// import {Config} from '../../utils/config.js'
import {Config} from '../../utils/config.js'
import X_goods from '../../utils/models/goods.js'
export default {
data() {
return {
list_flag:'',
list:''
}
},
mounted() {
},
onLoad(option) {
//console.log(option)
//this.list_flag = option.list_flag
},
onShow() {
this.list_flag = Config.list_flag
this.the_custOmer()
},
methods: {
// 查看订单
lookOrder(){
uni.navigateTo({
url:'../../pages/order/index'
})
},
//对公打款
gong(){
uni.navigateTo({
url:'./gong_mes'
})
},
// 返回首页
gohome(){
uni.switchTab({
url: '../home/home'
})
},
// 返回
goBack(){
uni.navigateBack(1)
},
// 拨打电话
to_call(item){
uni.makePhoneCall({
phoneNumber: item.mobile //仅为示例
});
},
// x_custOmer
async the_custOmer() {
let res = await X_goods.x_custOmer()
console.log(res)
this.list = res.data
this.handleError(res, res => {
})
},
}
}
</script>
<style lang="scss">
.content {
.banner{
height:511upx;
position: relative;
background-image: url(../../static/shoppingCart/bgsucc.png);
background-position: 100% 100%;
background-size: cover;
padding-top:70upx;
.pay_state{
margin-top:50upx;
}
.page_title{
// line-height: 118upx;
font-size: 32upx;
}
.back{
position: absolute;
top:80upx;
left:33upx;
height:31upx;
width:19upx;
}
}
.login{
margin-top:60upx;
}
.my_form{
.my_form_menu{
.menu_items{
margin-right:44upx;
}
}
.menu_active{
color: #282828;
font-size: 32upx;
border-bottom:4upx solid #6B68DC;
font-weight: bold;
}
}
.my_input{
padding:100upx 64upx;
.two_input{
border-bottom:1upx solid #F2F2F2;
height:100upx;
}
}
.forget_password{
display: inline-block;
margin:15upx 0;
color: #6B6AD5;
border-bottom: 1upx solid #6B6AD5;
}
.agree {
display: -webkit-box;
overflow: hidden;
white-space: normal !important;
text-overflow: ellipsis;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical
}
.besthelp{
padding-left: 170upx;
color:#ff1c00eb;
font-size: 16px;
margin-top: 15upx;
.callphone{
display: inline-block;
width:35upx;
height:35upx;
margin-left:35upx;
}
}
.info{
background-color: #eeeeee6e;
width:690upx;
border-radius: 30upx;
margin:40upx auto;
padding: 0 30upx;
line-height: 100upx;
.tell{
height:34upx;
width:28upx;
}
}
}
</style>

View File

@@ -0,0 +1,201 @@
<template>
<!-- 支付订单 页面 -->
<view class="content bg_F2F2F2">
<HeaderTop page_title='支付订单'></HeaderTop>
<view class="x_text_hui text-center time">支付剩余时间{{list.deadline_time}}</view>
<view class="text-center"> <text class="font-weight money">{{list.total_amount}}</text></view>
<view class="pay_types x-bg-white w-90 " style="border-radius: 20upx; margin:100upx auto;">
<view class="d-flex padding-30 border-bottom" @click="radioChange(1)">
<!-- <image src="../../static/shoppingCart/weixin.png" mode=""></image> -->
<!-- <view style='height:50upx;width:50upx; border:1px solid red;' :style="{backgroundImage:'url(${zhifubao})',backgroundSize: 'cover'}">
<img src="../../static/shoppingCart/zhifubao.png" alt="">
</view> -->
<!-- <view style="background-image:url(../../static/shoppingCart/zhifubao.png);"></view>
<view :style="{backgroundImage:'url(../../static/shoppingCart/zhifubao.png)'}"></view> -->
<!-- <img src="../../static/shoppingCart/zhifubao.png" alt="" style='50upx;width:50upx;'> -->
<image src="../../static/shoppingCart/zhifubao.png" mode="" style='height:50upx;width:50upx;'></image>
<view class="flex-1 padding-zy30">支付宝支付</view>
<radio value="支付宝支付" :checked="current==1" style="width:10%;" />
</view>
<view class="d-flex padding-30 border-bottom" @click="radioChange(2)">
<image src="../../static/shoppingCart/weixin.png" mode="" style='height:50upx;width:50upx;'></image>
<view class="flex-1 padding-zy30">微信支付</view>
<radio value="微信支付" :checked="current==2" style="width:10%;" />
</view>
<view class="d-flex padding-30 border-bottom" @click="radioChange(3)">
<image src="../../static/shoppingCart/gong.png" mode="" style='height:50upx;width:50upx;'></image>
<view class="flex-1 padding-zy30">公对公打款</view>
<radio value="公对公打款" :checked="current==3" style="width:10%;" />
</view>
<view class="d-flex padding-30" @click="radioChange(4)" v-if="list.is_new_user === 1">
<image src="../../static/shoppingCart/huo.png" mode="" style='height:50upx;width:50upx;'></image>
<view class="flex-1 padding-zy30">货到付款</view>
<radio value="货到付款" :checked="current==4" style="width:10%;" />
</view>
</view>
<view class="x_public_box sureBtn x-bg-159 x-text-white w-90" @click="pay()">确定</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import X_goods from '../../utils/models/goods.js'
import {
Config
} from '../../utils/config.js'
import zhifubao from "../../static/shoppingCart/zhifubao.png"
export default {
data() {
return {
current: '',
order_id: '',
list: '',
list_flag: '' // 1货到付款值2线下支付值3小程序支付值4微信支付值5支付宝支付
}
},
onShow() {
this.isPay();
},
comments: {
HeaderTop
},
onLoad(option) {
this.order_id = option.order_id
},
onBackPress(options) {
if (options.from === 'backbutton') {
uni.redirectTo({
url: '../../pages/order/index?is_index=1',
});
}
return true
},
// onBackPress(options) {
// uni.navigateTo({
// url: '../../pages/order/index',
// });
// },
methods: {
// 支付
async isPay() {
let res = await X_goods.X_toPay(this.order_id)
this.handleError(res, res => {
this.list = res.data
})
},
// 调用支付 X_appPay
async pay() {
list_flag: '' // 1货到付款值2线下支付值3小程序支付值4微信支付值5支付宝支付
if (this.current == 1) { //支付宝支付
this.list_flag = 5
Config.list_flag = this.list_flag
let res = await X_goods.X_appPay(this.order_id, this.list_flag)
let orderInfo = res.data.aliPayInfo
uni.requestPayment({
provider: 'alipay',
orderInfo: orderInfo,
success: function(res) {
uni.redirectTo({
url: './pay_success'
})
uni.showToast({
title: '支付成功',
duration: 2000,
icon: 'none'
});
},
fail: function(err) {
uni.redirectTo({
url: '../order/index'
})
}
});
this.handleError(res, res => {
})
}
if (this.current == 2) { // 微信支付
this.list_flag = 4
Config.list_flag = this.list_flag
let res = await X_goods.X_appPay(this.order_id, this.list_flag)
this.handleError(res, res => {
})
let orderInfo = res.data.wxPayInfo
uni.requestPayment({
provider: 'wxpay',
orderInfo: orderInfo, //微信、支付宝订单数据
success: function(res) {
console.log('success:' + JSON.stringify(res));
uni.redirectTo({
url: './pay_success'
})
uni.showToast({
title: '支付成功',
duration: 2000,
icon: 'none'
});
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
console.log(res, 'shishi')
uni.redirectTo({
url: '../order/index'
})
}
});
}
if (this.current == 3) { // 线下支付
this.list_flag = 2
Config.list_flag = this.list_flag
let res = await X_goods.X_appPay(this.order_id, this.list_flag)
uni.redirectTo({
url: './pay_success'
})
this.handleError(res, res => {
})
}
if (this.current == 4) { // 货到付款
this.list_flag = 1
Config.list_flag = this.list_flag
let res = await X_goods.X_appPay(this.order_id, this.list_flag)
uni.redirectTo({
url: './pay_success'
})
this.handleError(res, res => {
})
}
},
//选择支付方式
radioChange(e) {
console.log(333)
this.current = e
}
}
}
</script>
<style lang="scss">
.content {
.time {
margin: 60upx 0;
}
.money {
font-size: 52upx;
}
.sureBtn {
line-height: 82upx;
}
}
</style>

View File

@@ -0,0 +1,57 @@
<template>
<!-- 个人中心 页面 -->
<view class="content">
<HeaderTop page_title='个人中心'></HeaderTop>
<view class="padding-30">
<view class="padding-zy30 d-flex j-sb a-center border-bottom list" @click="to_bind_phone()">
<view class="">手机号</view>
<image src="../../static/my/right.png" mode="" class="p_right"></image>
</view>
<view class="padding-zy30 d-flex j-sb a-center border-bottom list" @click="to_change_pass()">
<view class="">修改密码</view>
<image src="../../static/my/right.png" mode="" class="p_right"></image>
</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
export default{
data(){
return {
}
},
comments: {
HeaderTop
},
methods:{
to_bind_phone(){
uni.navigateTo({
url:'bind_phone'
})
},
to_change_pass(){
uni.navigateTo({
url:'change_password'
})
}
}
}
</script>
<style lang="scss">
.content {
position: relative;
.list{
height: 83upx;
}
.esc_login{
line-height: 82upx;
position: absolute;
bottom:100upx;
left: 34upx;
}
}
</style>

View File

@@ -0,0 +1,135 @@
<template>
<!-- 设置 页面 -->
<view class="content">
<HeaderTop page_title='设置'></HeaderTop>
<view class="padding-30">
<view class="padding-zy30 d-flex j-sb a-center border-bottom list" @click="to_editPassword()">
<view class="">修改密码</view>
<image src="../../static/my/right.png" mode="" class="p_right"></image>
</view>
<view class="padding-zy30 d-flex j-sb a-center border-bottom list" @click="phone_message()">
<view class="">消息提醒设置</view>
<image src="../../static/my/right.png" mode="" class="p_right"></image>
</view>
<view class="padding-zy30 d-flex j-sb a-center border-bottom list" @click="clear_cache()">
<view class="">清除缓存</view>
<view class="p_right cache_right">{{currentSize}}{{currentSizeText}}</view>
</view>
<view class="x_public_box x-bg-159 esc_login x-text-white w-90" style="line-height: 80upx;" @click="esc_login()">退出登录</view>
</view>
</view>
</template>
<script>
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import permission from '../../common/permission.js' //正则验证
import uploadImage from '@/common/ossutil/uploadFile.js';
export default{
data(){
return {
cache:250,
currentSize:0,
currentSizeText:'K'
}
},
comments: {
HeaderTop
},
methods:{
// 退出登录
esc_login(){
uni.navigateTo({
url:'./x_login'
})
uni.clearStorage();
},
// 清除缓存
clear_cache(){
let that = this;
uni.showModal({
title: '提示',
content: '确定清空缓存',
success: function (res) {
if (res.confirm) {
that.do_clear_cache()
} else if (res.cancel) {
}
}
});
},
do_clear_cache(){
try {
const value = uni.getStorageSync('isAuthentication');
if (value) {
let that = this
uni.clearStorage({
success: function (res) {
uni.setStorageSync('isAuthentication', value);
that.get_cache()
}
});
}
} catch (e) {
}
},
// 获取缓存
get_cache(){
let that = this
uni.getStorageInfo({
success: function (res) {
if(res.currentSize >= 1024 && res.currentSize/1024 < 1024){
that.currentSize = res.currentSize/1024
that.currentSizeText = 'M'
}
if(res.currentSize/1024 >= 1024){
that.currentSize = res.currentSize/1024/1024
that.currentSizeText = 'G'
}
if(res.currentSize < 1024 && res.currentSize > 3){
that.currentSize = res.currentSize
that.currentSizeText = 'K'
}
if(res.currentSize <= 3){
that.currentSize = '0'
that.currentSizeText = 'K'
}
}
});
},
// 个人信息
to_editPassword(){
uni.navigateTo({
url:'change_password'
})
},
phone_message(){
permission.gotoAppSetting()
}
},
created() {
this.get_cache()
}
}
</script>
<style lang="scss">
.content {
position: relative;
.list{
height: 83upx;
}
.esc_login{
line-height: 82upx;
position: absolute;
bottom:100upx;
left: 34upx;
}
}
.cache_right{
margin-right: 60upx;
}
</style>

View File

@@ -0,0 +1,312 @@
<template>
<!-- 新增地址 -->
<view class="content w-100 h-100">
<HeaderTop page_title='新增地址'></HeaderTop>
<view class="p-2 border-bottom d-flex a-center bg-white">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
收货人</view>
<input class="px-1 font-md flex-1" type="text" v-model="form.consignee" />
</view>
<view class="p-2 d-flex a-center bg-white border-bottom">
<view class="font-md text-secondary mr-1 flex-shrink text-dark ">
手机号码</view>
<input class="px-1 font-md flex-1" type="number" v-model="form.tel" />
</view>
<view class="p-2 d-flex a-center bg-white border-bottom" @click="chooseAera()">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
请选择{{all_area}}</view>
</view>
<view class="p-2 d-flex a-center bg-white border-bottom">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
详细地址</view>
<input class="px-1 font-md flex-1" type="text" v-model="form.address" />
</view>
<view class="p-2 d-flex a-center bg-white">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
设为默认地址</view>
<switch class="ml-auto" @change="switch2Change" />
</view>
<text class="pt-0 p-2 d-flex a-center bg-white text-danger">
每次下单默认推荐使用该地址</text>
<view class="x_public_box x-text-white x-bg-159 margin-shu20 editBtn w-90" style="line-height: 80upx;" @click="submit()">
确认
</view>
<!-- 选择地区遮挡层 -->
<view class="region w-100 h-100 " v-if='show_Aera==true'>
<view class="region_box w-100 padding-30">
<view class="d-flex j-sb region_top">
<view @click="cancel()">取消</view>
<view @click="sure()">确定</view>
</view>
<view class="region_list d-flex j-sb">
<view class="region_item">
<view v-for='(item,index) of sheng' :key='index' @click="choose_sheng(index)" :class="{active:sheng_index==index}">{{item.area_name}}</view>
</view>
<view class="region_item">
<view v-for='(item,index) of shi_arr' :key='index' @click="choose_shi(index)" :class="{active:shi_index==index}">{{item.area_name}}</view>
</view>
<view class="region_item">
<view v-for='(item,index) of qu_arr' :key='index' @click="choose_qu(index)" :class="{active:qu_index==index}">{{item.area_name}}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
mapActions
} from "vuex"
import verification from '../../common/verification.js' //正则验证
import shippingAddress from '../../utils/models/shop.js'
export default {
data() {
return {
all_area: '',
sheng: [],
shi: [],
shi_arr: [],
qu: [],
qu_arr: [],
sheng_index: 0,
shi_index: 0,
qu_index: 0,
is_show: false,
is_checked: false,
// 测试修改id,区县id
addAddress_id: '', //新增时传入默认地址
address_item: '', // 传参地址对象
area_id: '',
xian_id: '',
is_id: '',
isedit: true,
themeColor: '#007AFF',
pickerValue: [0, 0, 1],
index: -1,
show_Aera: false,
form: {
address: '',
id: '',
consignee: '',
tel: '',
}
}
},
onLoad(option) {
},
mounted() {
},
methods: {
// 是否选择默认
switch2Change(e) {
this.is_checked = e.target.value
},
// 选择县、区
choose_qu(index) {
this.qu_index = index
this.xian_id = this.qu_arr[index].id
},
// 选择市
choose_shi(index) {
this.shi_index = index
this.qu_arr = [];
this.qu.forEach(item => {
if (this.shi_arr[this.shi_index].id == item.parent_area_id) {
this.qu_arr.push(item)
}
})
},
// 选择省
choose_sheng(index) {
this.sheng_index = index
this.shi_arr = [];
this.shi.forEach(item => {
if (item.parent_area_id == this.sheng[index].id) {
this.shi_arr.push(item)
}
})
},
//选择地区
chooseAera() {
this.show_Aera = !this.show_Aera
this.chooseAeraList()
},
// 新增地址
sure() {
this.show_Aera = false
if (this.sheng[this.sheng_index].area_name == '' || this.shi_arr[this.shi_index].area_name == '' || this.qu_arr[
this.qu_index].area_name == '') {
uni.showToast({
title: '请选择所在地区'
});
} else {
this.area_id = this.qu_arr[this.qu_index].id
this.all_area = this.sheng[this.sheng_index].area_name + '-' + this.shi_arr[this.shi_index].area_name + '-' + this
.qu_arr[this.qu_index].area_name
}
},
// 取消
cancel() {
this.show_Aera = false
},
//地区列表
async chooseAeraList() {
let res = await shippingAddress.shippingAddress();
this.handleError(res, res => {
for (let i in res.data) {
var item = res.data[i]
if (item.id && !item.parent_area_id && !item.grand_pa_id) {
this.sheng.push(item)
}
if (item.id && item.parent_area_id && !item.grand_pa_id) {
this.shi.push(item)
}
if (item.id && item.parent_area_id && item.grand_pa_id) {
this.qu.push(item)
}
}
})
},
// 提交
// 增加地址数据
async submit() {
if(this.form.tel=='' || this.form.consignee=='' || this.all_area=='' || this.form.address==''){
uni.showToast({
title: '请完善信息',
duration: 2000,
icon: 'none'
});
return
}
verification.isPhone(this.form.tel); // 手机号格式验证
if (verification.isPhone.prototype.the_isPhone !== true) {
uni.showToast({
title: '请输入正确的手机号',
duration: 2000,
icon: 'none'
});
return
}
let res = await shippingAddress.makeChangeAddress(
this.area_id, //区县id
this.form.address,
this.form.id, //id地址id
this.form.consignee,
this.form.tel
);
this.is_id = res.data.data.id
if (this.is_checked == true) {
this.is_defaultAddress()
}
this.handleError(res, res => {
uni.showToast({
title: res.message,
duration: 2000,
icon: 'none'
});
setTimeout(function() {
uni.redirectTo({
url: './user-path-list'
})
}, 500);
})
},
// defaultAddress
async is_defaultAddress() {
let res = await shippingAddress.defaultAddress(this.is_id)
this.handleError(res, res => {
})
}
}
}
</script>
<style lang="scss">
page {
background: #F7F7F7;
}
.content {
.header {
height: 148upx;
font-size: 32upx;
position: relative;
line-height: 194upx;
.edit_shoppingCar {
position: absolute;
bottom: -48upx;
right: 31upx;
}
}
.editBtn {
position: absolute;
bottom: 100upx;
left: 34upx;
}
.region {
overflow: hidden;
position: absolute;
left: 0%;
top: 0%;
background-color: rgba(0, 0, 0, 0.2);
.region_box {
position: fixed;
bottom: 0;
left: 0;
background-color: #FFFFFF;
height: 600upx;
.region_top {
line-height: 70upx;
height: 70upx;
}
.region_list {
line-height: 90upx;
height: calc(100% - 70upx);
overflow-y: auto;
.region_item {
height: 100%;
overflow-y: auto;
color: #b2b2b2;
width: 33.3%;
text-align: center;
.active {
color: #6E67FF;
font-weight: bold;
}
}
}
}
}
}
</style>

View File

@@ -0,0 +1,356 @@
<template>
<!-- 修改地址 -->
<view class="content w-100 h-100">
<HeaderTop page_title='修改地址'></HeaderTop>
<view class="p-2 border-bottom d-flex a-center bg-white">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
收货人</view>
<input class="px-1 font-md flex-1" type="text" v-model="form.consignee" />
</view>
<view class="p-2 d-flex a-center bg-white border-bottom">
<view class="font-md text-secondary mr-1 flex-shrink text-dark ">
手机号码</view>
<input class="px-1 font-md flex-1" type="number" v-model="form.tel" />
</view>
<view class="p-2 d-flex a-center bg-white border-bottom" @click="chooseAera()">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
请选择{{all_area}}</view>
</view>
<!-- <view class="p-2 border-bottom d-flex a-center bg-white">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
所在地区</view>
<input class="px-1 font-md flex-1" type="text" disabled
@click="showMulLinkageThreePicker" placeholder="请选择所在地区"
:value="form.path"/>
<mpvue-city-picker :themeColor="themeColor" ref="mpvueCityPicker" :pickerValueDefault="pickerValue" @onConfirm="onConfirm"></mpvue-city-picker>
</view> -->
<view class="p-2 d-flex a-center bg-white border-bottom">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
详细地址</view>
<input class="px-1 font-md flex-1" type="text" v-model="form.address" />
</view>
<view class="p-2 d-flex a-center bg-white">
<view class="font-md text-secondary mr-1 flex-shrink text-dark">
设为默认地址</view>
<switch class="ml-auto" @change="switch2Change" :checked="is_checked" />
</view>
<text class="pt-0 p-2 d-flex a-center bg-white text-danger">
每次下单默认推荐使用该地址</text>
<view class="x_public_box x-text-white x-bg-159 margin-shu20 editBtn w-90" style="line-height: 80upx;" @click="submit()">确认</view>
<!-- <view class="x_public_box x-text-white x-bg-159 margin-shu20" style="line-height: 80upx;" @click="del_address()">删除地址</view> -->
<!-- <view class="p-3">
<view class="text-center w-100 bg-danger text-white font-md rounded py-2" hover-class="main-bg-hover-color" @click="submit">
确认
</view>
<view class="text-center w-100 bg-danger text-white font-md rounded py-2 margin-shu20" hover-class="main-bg-hover-color" @click="del_address()">
删除地址
</view>
</view> -->
<!-- 选择地区遮挡层 -->
<view class="region w-100 h-100 " v-if='show_Aera==true'>
<view class="region_box w-100 padding-30">
<view class="d-flex j-sb region_top">
<view @click="cancel()">取消</view>
<view @click="sure()">确定</view>
</view>
<view class="region_list d-flex j-sb">
<view class="region_item">
<view v-for='(item,index) of sheng' :key='index' @click="choose_sheng(index)" :class="{active:sheng_index==index}">{{item.area_name}}</view>
</view>
<view class="region_item">
<view v-for='(item,index) of shi_arr' :key='index' @click="choose_shi(index)" :class="{active:shi_index==index}">{{item.area_name}}</view>
</view>
<view class="region_item">
<view v-for='(item,index) of qu_arr' :key='index' @click="choose_qu(index)" :class="{active:qu_index==index}">{{item.area_name}}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
mapActions
} from "vuex"
import verification from '../../common/verification.js' //正则验证
import shippingAddress from '../../utils/models/shop.js'
export default {
data() {
return {
all_area:'',
sheng: [],
shi: [],
shi_arr:[],
qu: [],
qu_arr:[],
sheng_index :0,
shi_index:0,
qu_index:0,
is_show:false,
is_checked:false,
// 测试修改id,区县id
addAddress_id: '', //新增时传入默认地址
address_item: '', // 传参地址对象
area_id: 2,
xian_id:'',
isedit: true,
themeColor: '#007AFF',
pickerValue: [0, 0, 1],
index: -1,
show_Aera: false,
form: ''
}
},
onLoad(option) {
this.form = option.address_item
if(JSON.parse(option.address_item).is_default!=0){
this.is_checked = true
}else{
this.is_checked = false
}
if(this.form==''){
}else{
this.form = JSON.parse(this.form)
this.all_area = this.form.area_name
this.id = this.form.id
}
},
// 监听返回
onBackPress() {
},
mounted() {
},
methods: {
...mapActions(['updatePathAction', 'createPathAction']),
// 是否选择默认
switch2Change(e){
this.is_checked = e.target.value
},
// 删除地址
async del_address(){
let res = await shippingAddress.deleteAddress(this.form.id);
this.handleError(res, res => {
})
uni.showToast({
title: res.message,
duration: 2000,
icon: 'none'
});
setTimeout(function() {
uni.redirectTo({
url:'./user-path-list'
})
}, 1000);
},
// id_moren
id_moren(){
this.is_show = !this.is_show
},
// 选择县、区
choose_qu(index){
this.qu_index = index
this.xian_id = this.qu_arr[index].id
},
// 选择市
choose_shi(index){
this.shi_index = index
this.qu_arr = [];
this.qu.forEach(item=>{
if(this.shi_arr[this.shi_index].id == item.parent_area_id){
this.qu_arr.push(item)
}
})
},
// 选择省
choose_sheng(index){
this.sheng_index = index
this.shi_arr = [];
this.shi.forEach(item=>{
if(item.parent_area_id == this.sheng[index].id){
this.shi_arr.push(item)
// console.log(this.shi_arr,'shi')
}
})
},
//选择地区
chooseAera() {
this.show_Aera = !this.show_Aera
this.chooseAeraList()
},
sure(){
this.show_Aera = false
if(this.sheng[this.sheng_index].area_name=='' || this.shi_arr[this.shi_index].area_name=='' || this.qu_arr[this.qu_index].area_name==''){
uni.showToast({
title: '请选择所在地区',
duration: 2000,
icon: 'none'
});
}else{
this.all_area = this.sheng[this.sheng_index].area_name + '-' +this.shi_arr[this.shi_index].area_name + '-' + this.qu_arr[this.qu_index].area_name
}
},
// 取消
cancel(){
this.show_Aera = false
},
//地区列表
async chooseAeraList() {
let res = await shippingAddress.shippingAddress();
this.handleError(res, res => {
for (let i in res.data) {
var item = res.data[i]
if (item.id && !item.parent_area_id && !item.grand_pa_id) {
this.sheng.push(item)
}
if (item.id && item.parent_area_id && !item.grand_pa_id) {
this.shi.push(item)
}
if (item.id && item.parent_area_id && item.grand_pa_id) {
this.qu.push(item)
}
}
})
},
// defaultAddress 是否设置成默认地址
async is_defaultAddress(){
let res = await shippingAddress.defaultAddress(this.is_id)
this.handleError(res, res => {
})
},
// 增加地址数据
async submit() {
verification.isPhone(this.form.tel); // 手机号格式验证
if (verification.isPhone.prototype.the_isPhone !== true) {
uni.showToast({
title: '请输入正确的手机号',
duration: 2000,
icon: 'none'
});
return
}
let res = await shippingAddress.makeChangeAddress(
this.form.area_id, //区县id
this.form.address,
this.form.id, //id地址id
this.form.consignee,
this.form.tel
);
this.is_id = res.data.data.id
if(this.is_checked==true){
this.is_defaultAddress()
}
setTimeout(function() {
uni.redirectTo({
url:'./user-path-list'
})
// uni.navigateTo({
// url:'./user-path-list'
// })
}, 500);
this.handleError(res, res => {
this.addAddress_id = res.data.data.id
})
},
// 三级联动确定
onConfirm(e) {
this.form.path = e.label
this.pickerValue = e.value
},
// 显示三级联动选择
showMulLinkageThreePicker() {
this.$refs.mpvueCityPicker.show()
},
}
}
</script>
<style lang="scss">
page {
background: #F7F7F7;
}
.content {
.header {
height: 148upx;
font-size: 32upx;
position: relative;
line-height: 194upx;
.edit_shoppingCar {
position: absolute;
bottom: -48upx;
right: 31upx;
}
}
.region {
overflow: hidden;
position: absolute;
left: 0%;
top: 0%;
background-color: rgba(0, 0, 0, 0.2);
.region_box {
position: fixed;
bottom: 0;
left: 0;
background-color: #FFFFFF;
height: 600upx;
.region_top {
line-height: 70upx;
height: 70upx;
}
.region_list {
line-height: 90upx;
height: calc(100% - 70upx);
overflow-y: auto;
.region_item {
height: 100%;
overflow-y: auto;
color: #b2b2b2;
width: 33.3%;
text-align: center;
.active{
color:#6E67FF;
font-weight: bold;
}
}
}
}
}
.editBtn{
position: absolute;
bottom:100upx;
left: 34upx;
}
}
</style>

View File

@@ -0,0 +1,260 @@
<template>
<!-- 收货地址 -->
<view class="w-100 h-100 all">
<HeaderTop page_title='收货地址'></HeaderTop>
<view class="list">
<view class="list_item d-flex j-sb j-center a-center padding-30 border-bottom" v-for="(item,index) in dataList" :key="index" @click="chooseadd(index)">
<!-- <radio value="" :checked="item.checked" style="width:10%;" v-if="goods_id!=''" /> -->
<view class="items_info flex-1 padding-zy30">
<view class="d-flex">
<view>{{item.consignee}}</view>
<view class='margin-zy20'>{{item.tel}}</view>
<view class="is_choose margin-zy20" v-if='item.is_default!=0'>默认</view>
</view>
<view>
{{item.address}}
</view>
</view>
<!-- <view style="10%;" @click.stop="edit(index)">编辑</view> -->
<image src="../../static/shoppingCart/edit1.png" mode="" style="height:40upx; width:40upx;margin-right: 30upx;" @click.stop="edit(index)"></image>
</view>
</view>
<!-- <block v-for="(item,index) in dataList" :key="index">
<uni-swipe-action :options="options"
@click="bindClick($event,index)">
<uni-list-item @click="choose(item)">
<view class="text-secondary text-dark">
<view class="d-flex a-center">
<text class="text-dark mr-2 font-weight">{{item.consignee}}</text>
{{item.tel}}
<text class="main-text-color ml-2"
v-if="item.isdefault">[默认]</text>
</view>
<view>{{item.area_name}} {{"("}}{{item.address}}{{")"}}</view>
</view>
</uni-list-item>
</uni-swipe-action>
</block> -->
<view class="x_public_box x-text-white x-bg-159 margin-shu20 shadow addBtn w-90" style="line-height: 80upx;" @click="addPath()">新增收货地址</view>
</view>
</template>
<script>
import store from '@/store/index.js'
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import uniListItem from "@/components/uni-ui/uni-list-item/uni-list-item.vue"
import uniSwipeAction from "@/components/uni-ui/uni-swipe-action/uni-swipe-action.vue"
import {mapState,mapMutations} from "vuex"
import shippingAddress from '../../utils/models/shop.js'
export default {
components: {
uniListItem,
uniSwipeAction,
HeaderTop
},
data() {
return {
address_id:'',
goods_id:'',
dataList:[], //数据列表
isChoose:false,
options: [{
text: '编辑',
style: {
backgroundColor: '#007aff'
}
}, {
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}],
}
},
computed: {
...mapState({
list:state=>state.path.list
}),
},
// // 监听导航栏按钮点击
// onNavigationBarButtonTap(e) {
// if(e.index === 0){
// uni.navigateTo({
// url: '../my/user-path-edit'
// });
// }
// },
onLoad(option) {
if (option.type === '') {
this.isChoose = true
}
if(option.goods_id){
this.goods_id = option.goods_id
}
// 请求数据
this.getData()
},
// 默认返回
onBackPress(options) {
if (options.from === 'backbutton') {
uni.navigateTo({
url: '../../pages/order/index?is_index=1',
});
}
return true
},
methods: {
// 编辑地址
edit(index){
// console.log(this.goods_id)
uni.redirectTo({
url:'./user-path-edit?address_item='+JSON.stringify(this.dataList[index])
})
console.log(JSON.stringify(this.dataList[index]));
// {"id":286,
// "area_id":216,
// "address":"aeawef",
// "consignee":"天空",
// "tel":"1565654848",
// "is_default":0,
// "area_name":"河南省 - 洛阳市 - 嵩县",
// "short_consignee":"天空",
// "checked":fals,
// }
},
// 选择地址
chooseadd(index){
this.goods_id = this.$store.state.goods_id;
if(this.goods_id ==''){
console.log(1111)
}else{
this.dataList[index].checked = !this.dataList[index].checked
uni.navigateTo({
url:'../shoppingCart/sureOrder?goods_id='+this.goods_id+'&address='+JSON.stringify(this.dataList[index])
})
}
},
// 地址列表
async getData(){
let res = await shippingAddress.addressList();
this.handleError(res, res => {
this.dataList = res.data.data.list
this.dataList.forEach(item=>{
item.checked = false
this.address_id = item.id
})
})
},
async deletelist(){
let res = await shippingAddress.deleteAddress(this.address_id);
this.handleError(res, res => {
if(res.code == 200){
uni.showToast({
title:'删除成功'
})
}else{
}
})
},
async bindClick(value,i) {
let res;
switch (value.index){
case 0: // 修改
let obj = JSON.stringify({
index:i,
item:this.address_id
})
setTimeout(()=> {
uni.redirectTo({
url: '../my/user-path-edit?data='+obj,
});
},50);
break;
case 1: // 删除
let res = await shippingAddress.deleteAddress(this.address_id);
this.handleError(res, res => {
if(res.code == 200){
uni.showModal({
content: '要删除该收货地址吗?',
success(res){
if(res.confirm){
uni.showToast({
title:'删除成功'
})
}
}
})
}else{
}
})
break;
}
},
// 选择收货地址
choose(item){
if (this.isChoose) {
// 通知订单提交页修改收货地址
uni.$emit('choosePath',item)
// 关闭当前页面
uni.navigateBack({
delta: 1
});
}
},
// 新增地址
addPath() {
uni.redirectTo({
url: '../my/user-path-add'
});
},
}
}
</script>
<style>
.is_choose{
background-color: #EDCA4A;
color: #FFFFFF;
height:50upx;
line-height: 50upx;
padding: 0 15upx;
font-size: 28upx;
border-radius: 20upx;
}
.list{
height:calc(100% - 300upx);
overflow-y: auto;
}
.addBtn{
position: absolute;
bottom:0upx;
left: 34upx;
}
</style>

View File

@@ -0,0 +1,390 @@
<template>
<!-- 登录 页面 -->
<view class="content h-100">
<view class="banner">
<!-- <image src="../../static/my/left.png" mode="" class="back" @click="goBack()"></image> -->
<view v-if="login_flag" class="page_title text-center x-text-white" >登录</view>
<view v-if="!login_flag" class="page_title text-center x-text-white">注册</view>
</view>
<view class="my_form padding-zy64">
<view class="my_form_menu d-flex">
<view class="menu_items" @click="chooseMenu(index)" :class="{menu_active: menu_index==index}" v-for="(item,index) of form_menu" :key='index'>{{item.name}}</view>
</view>
</view>
<!-- 登录表单 -->
<view class="uni-common-mt my_input" v-if="menu_index==0">
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/phone.png" mode="" class="w-36 h-41"></image>
<input class="uni-input h-100 flex-1" type="text" cursor-spacing="20" focus placeholder="请输入手机号" v-model="phone"/>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/suo.png" mode="" class="w-36 h-41"></image>
<input class="uni-input flex-1 mima" cursor-spacing="20" :type="is_type" placeholder="请输入密码" v-model="password"/>
<image src="../../static/my/bukan.png" mode="" class="is_seen" v-if="seen==false" @tap='change_seen()'></image>
<image src="../../static/my/kan.png" mode="" class="is_seen1" v-if="seen==true" @tap='change_seen()'></image>
</view>
<button class="public_blue_btn login" @click="toLogin()">登录</button>
<text class="forget_password" @click="forget_password()">忘记密码?</text>
</view>
<!-- 注册表单 -->
<view class="uni-common-mt my_input" v-if="menu_index==1">
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/phone.png" mode="" class="w-36 h-41"></image>
<input class="uni-input h-100 flex-1" type="number" focus placeholder="请输入手机号" v-model="phone"/>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/loginadd.png" mode="" class="w-36 h-41"></image>
<input class="uni-input flex-1" type="number" placeholder="验证码" v-model="code" />
<view class="get_code x-text-red x-text-font24 text-right" v-if="get_code==false" @click="getCode()">获取验证码</view>
<view class="get_code x-text-red x-text-font24 w-50 text-right" v-else>{{count_time}}s后再次获取验证码</view>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center j-sb">
<image src="../../static/my/suo.png" mode="" class="w-36 h-41"></image>
<input class="uni-input flex-1" :type="is_RseenType" placeholder="请设置密码" v-model="new_password" />
<image src="../../static/my/bukan.png" mode="" class="is_seen" v-if="Rseen==false" @tap='change_Rseen()'></image>
<image src="../../static/my/kan.png" mode="" class="is_seen1" v-if="Rseen==true" @tap='change_Rseen()'></image>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center j-sb">
<image src="../../static/my/suo.png" mode="" class="w-36 h-41"></image>
<input class="uni-input flex-1" :type="is_rseenType" placeholder="确认密码" v-model="sure_password" />
<image src="../../static/my/bukan.png" mode="" class="is_seen" v-if="rseen==false" @tap='change_rseen()'></image>
<image src="../../static/my/kan.png" mode="" class="is_seen1" v-if="rseen==true" @tap='change_rseen()'></image>
</view>
<!-- <view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/phone.png" mode="" class="w-36 h-41"></image>
<input class="uni-input h-100 flex-1" type="number" focus placeholder="客服编号(选填)" v-model="kefu_num"/>
</view> -->
<button class="public_blue_btn login" @click="the_register()">注册</button>
<view class="agree d-flex">
<view>点击注册即表示您已阅读并同意</view>
<view class="x-text-red" @tap='look_Explain()'>医点医滴会员服务协议</view>
</view>
</view>
</view>
</template>
<script>
import verification from '../../common/verification.js' //正则验证
import public_function from '../../common/public_function.js' //公用方法
import X_login from '../../utils/models/x_login.js'
import {http_use,http_post} from '../../utils/http.js'
import {Config} from '../../utils/config.js'
import md5 from '../../common/ossutil/md5.min.js'
let Base64 = require('../../common/ossutil/base64.js');
export default {
data() {
return {
seen:false,
Rseen:false,
rseen:false,
login_flag:true,
is_type:'password',
is_RseenType:'password',
is_rseenType:'password',
Base64:'',
phone:'',
password:'',
form_menu:[{
name:'登录',
id:0
},{
name:'注册',
id:1
}],
menu_index:0,
get_code: false, //判断是否点击了“获取验证码”按钮 是true false
code: '', // 验证码
new_password: '',
sure_password: '',
count_time: 60,
now_time:'',// 当前时间戳
is_sign:'' //签名
}
},
mounted() {
this.Base64 = Base64;
},
methods: {
// look_Explain
look_Explain(){
uni.navigateTo({
url:'./explain'
})
},
// 返回
goBack(){
uni.switchTab({
url: '/pages/home/home'
});
},
change_rseen(){
this.rseen = !this.rseen
if(this.rseen == true){
this.is_rseenType = 'text'
}else{
this.is_rseenType = 'password'
}
},
change_Rseen(){
this.Rseen = !this.Rseen
if(this.Rseen == true){
this.is_RseenType = 'text'
}else{
this.is_RseenType = 'password'
}
},
// 密码内容是否可见
change_seen(){
this.seen = !this.seen
if(this.seen == true){
this.is_type = 'text'
}else{
this.is_type = 'password'
}
},
// 注册
async the_register(){
verification.isNull(this.phone, this.code, this.new_password, this.sure_password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isPhone(this.phone); // 手机号格式验证
}
if (verification.isPhone.prototype.the_isPhone == true) {
verification.isSamePsd(this.new_password, this.sure_password); // 两次密码是否相同
}
if(this.new_password.length<6){
uni.showToast({
title: '请输入至少6位密码',
duration: 2000,
icon: 'none'
});
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isPhone.prototype.the_isPhone == true &&
verification.isSamePsd.prototype.the_isSamePsd == true &&
this.new_password.length>=6
) {
let res = await X_login.x_register(this.phone, this.code,this.new_password)
if(res.code ==200){
uni.showToast({
title: res.message,
duration: 2000,
icon: 'none'
});
this.password = this.new_password
this.toLogin();
// setTimeout(function() {
// this.menu_index = 0
// }, 1000);
}
this.handleError(res, res => {
})
return
uni.navigateTo({
url: 'authentication'
});
}
},
// 获取验证码
async getCode() {
verification.isPhone(this.phone);
if(verification.isPhone.prototype.the_isPhone == true){
let res = await X_login.phonecode_app(this.phone, this.code,1)
if(res.data.errcode==-1){
uni.showToast({
title: res.data.errmsg,
duration: 2000,
icon: 'none'
});
}else{
this.get_code = !this.get_code
this.timer();
}
this.handleError(res, res => {
})
}
},
// 验证码计时器
timer() {
if (this.count_time > 0) {
this.count_time--;
this.get_code = true
setTimeout(this.timer, 1000);
} else {
this.count_time = 60;
this.get_code = false
}
},
// 选择菜单(登录或者注册)
chooseMenu(index){
// 解决登录 或 注册 重复点击标题切换
if (this.menu_index != index){
this.menu_index = index;
this.login_flag = !this.login_flag
}
},
// 登录
async toLogin(){
verification.isNull(this.phone, this.password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isUniCode(this.phone); // 判断是否出现汉字
}
if(this.password.length<6){
uni.showToast({
title: '请输入至少6位密码',
duration: 2000,
icon: 'none'
});
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isUniCode.prototype.the_isUniCode == true &&
this.password.length>=6
) {
this.now_time = (Date.parse(new Date()))/1000; //获取当前时间戳
this.is_sign = md5('123456' + 'test' + this.phone + md5(this.password) + this.now_time) //签名
let res = await X_login.login(this.phone, this.password,'test',this.now_time,this.is_sign)
this.handleError(res, res => {
uni.showToast({
title: res.message,
duration: 2000,
icon: 'none'
});
Config.appid = res.data.client.appid; // appid
Config.uid = res.data.client.id; // uid
Config.access_token = res.data.access_token; // access_token
Config.refresh_token = res.data.refresh_token; // refresh_token
// 使用base64把字符串加密
Config.authentication = "USERID " + Base64.encode(Config.appid + '-' + Config.uid + '-' + Config.access_token + '-' + Config.refresh_token);
uni.setStorage({
key: 'isAuthentication',
data: Config.authentication,
success: function () {
}
});
setTimeout(function() {
uni.switchTab({
url: '../home/home'
})
}, 500);
})
}
},
// 忘记密码
forget_password(){
uni.navigateTo({
url: 'x_reset_assword'
});
}
},
onShow() {
}
}
</script>
<style lang="scss">
.content {
.banner{
height:404upx;
padding-top:60upx;
position: relative;
background-image: url(../../static/my/login.png);
background-position: 100% 100%;
background-size: cover;
border:none;
outline: none;
.page_title{
font-size: 32upx;
}
.back{
position: absolute;
top:100upx;
left:33upx;
height:31upx;
width:19upx;
}
}
.login{
margin-top:60upx;
}
.my_form{
.my_form_menu{
.menu_items{
margin-right:44upx;
}
}
.menu_active{
color: #282828;
font-size: 32upx;
border-bottom:4upx solid #6B68DC;
font-weight: bold;
}
}
.my_input{
padding:100upx 64upx;
.two_input{
border-bottom:1upx solid #F2F2F2;
height:100upx;
.uni-input{
border:none;
outline: none;
padding-left:20upx;
}
.is_seen{
height:20upx;
width:47upx;
}
.is_seen1{
height:30upx;
width:47upx;
}
}
}
.forget_password{
display: inline-block;
margin:15upx 0;
color: #6B6AD5;
border-bottom: 1upx solid #6B6AD5;
}
.agree {
display: -webkit-box;
overflow: hidden;
white-space: normal !important;
text-overflow: ellipsis;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical
}
}
</style>

View File

@@ -0,0 +1,123 @@
<template>
<!-- 注册 页面 -->
<view class="content">
<HeaderTop page_title='注cc册'></HeaderTop>
<view class="uni-common-mt">
<view class="uni-form-item uni-column d-flex w-526 x_margin0auto">
<image src="../../static/1000.jpg" mode="" class="w-38 h-38"></image>
<input class="uni-input" type="number" focus placeholder="请输入手机号" v-model="phone" />
</view>
<view class="uni-form-item uni-column d-flex w-526 x_margin0auto">
<image src="../../static/1000.jpg" mode="" class="w-38 h-38"></image>
<input class="uni-input flex-1" type="number" placeholder="验证码" v-model="code" />
<view class="get_code x-text-red x-text-font24" v-if="get_code==false" @click="getCode()">获取验证码</view>
<view class="get_code x-text-red x-text-font24 w-50" v-else>{{count_time}}s后再次获取验证码</view>
</view>
<view class="uni-form-item uni-column d-flex w-526 x_margin0auto">
<image src="../../static/1000.jpg" mode="" class="w-38 h-38"></image>
<input class="uni-input" type="password" placeholder="请设置密码" v-model="new_password" />
</view>
<view class="uni-form-item uni-column d-flex w-526 x_margin0auto">
<image src="../../static/1000.jpg" mode="" class="w-38 h-38"></image>
<input class="uni-input" type="password" placeholder="确认密码" v-model="sure_password" />
</view>
</view>
<button class="public_blue_btn sure w-90 bg-linear-gradient" @click="sure()">注册</button>
<view class="agree">点击注册即表示您已阅读并同意<text class="x-text-red">医点医滴会员服务协议</text></view>
</view>
</template>
<script>
import verification from '../../common/verification.js' //正则验证
import HeaderTop from '../../components/HeaderTop/HeaderTop.vue'
import {http_use,http_post} from '../../utils/http.js'
export default {
data() {
return {
get_code: false,
count_time: 60,
phone: '',
code: '',
new_password: '',
sure_password: '',
}
},
comments:{
HeaderTop
},
methods: {
// 获取验证码
getCode() {
this.get_code = !this.get_code
this.timer();
},
// 验证码计时器
timer() {
if (this.count_time > 0) {
this.count_time--;
this.get_code = true
setTimeout(this.timer, 1000);
} else {
this.count_time = 60;
this.get_code = false
}
},
sure() {
verification.isNull(this.phone, this.code, this.new_password, this.sure_password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isPhone(this.phone); // 手机号格式验证
}
if (verification.isPhone.prototype.the_isPhone == true) {
verification.isSamePsd(this.new_password, this.sure_password); // 两次密码是否相同
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isPhone.prototype.the_isPhone == true &&
verification.isSamePsd.prototype.the_isSamePsd == true
) {
uni.navigateTo({
url: 'authentication'
});
}
}
}
}
</script>
<style lang="scss">
.content {
.uni-common-mt {
padding: 138upx 100upx 0 ;
.uni-form-item {
border-bottom: 2upx solid #ECE4E4;
padding-top: 60upx;
.login_icon {
margin-right: 40upx;
}
}
}
.sure {
margin-top: 70upx;
}
.agree {
display: -webkit-box;
overflow: hidden;
white-space: normal !important;
text-overflow: ellipsis;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical
}
}
</style>

View File

@@ -0,0 +1,190 @@
<template>
<!-- 重置密码 页面 -->
<view class="content h-100">
<view class="banner">
<image src="../../static/my/left.png" mode="" class="back" @click="goback()"></image>
<view class="page_title text-center x-text-white">重置密码</view>
</view>
<view class="uni-common-mt my_input">
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/phone.png" mode="" class="w-36 h-41"></image>
<input class="uni-input h-100 flex-1" type="number" focus placeholder="请输入手机号" v-model="phone"/>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/loginadd.png" mode="" class="w-36 h-41"></image>
<input class="uni-input flex-1" type="number" placeholder="验证码" v-model="code" />
<view class="get_code x-text-red x-text-font24 text-right" v-if="get_code==false" @click="getCode()">获取验证码</view>
<view class="get_code x-text-red x-text-font24 w-50 text-right" v-else>{{count_time}}s后再次获取验证码</view>
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/suo.png" mode="" class="w-36 h-41"></image>
<input class="uni-input" type="password" placeholder="请设置密码" v-model="new_password" />
</view>
<view class="uni-form-item uni-column d-flex x_margin0auto two_input a-center">
<image src="../../static/my/suo.png" mode="" class="w-36 h-41"></image>
<input class="uni-input" type="password" placeholder="确认密码" v-model="sure_password" />
</view>
<button class="public_blue_btn login" @click="sure()">确认修改</button>
</view>
</view>
</template>
<script>
import X_login from '../../utils/models/x_login.js'
import verification from '../../common/verification.js' //正则验证
export default {
data() {
return {
get_code: false,
count_time: 60,
phone: '',
code: '',
new_password: '',
sure_password: '',
}
},
methods: {
// 获取验证码
async getCode() {
verification.isPhone(this.phone);
if(verification.isPhone.prototype.the_isPhone == true){
let res = await X_login.phonecode_app(this.phone,this.code,2)
if(res.data.errcode==-14){
uni.showToast({
title: res.data.errmsg,
duration: 2000,
icon: 'none'
});
return
}
this.get_code = !this.get_code
this.timer();
this.handleError(res, res => {
})
}
},
goback(){
uni.navigateBack(1)
},
// getCode() {
// this.get_code = !this.get_code
// this.timer();
// },
// 验证码计时器
timer() {
if (this.count_time > 0) {
this.count_time--;
this.get_code = true
setTimeout(this.timer, 1000);
} else {
this.count_time = 60;
this.get_code = false
}
},
// 确认修改
async sure() {
verification.isNull(this.phone, this.code, this.new_password, this.sure_password) // 非空验证
if (verification.isNull.prototype.the_Null == true) {
verification.isPhone(this.phone); // 手机号格式验证
}
if (verification.isPhone.prototype.the_isPhone == true) {
verification.isSamePsd(this.new_password, this.sure_password); // 两次密码是否相同
}
if (
verification.isNull.prototype.the_Null == true &&
verification.isPhone.prototype.the_isPhone == true &&
verification.isSamePsd.prototype.the_isSamePsd == true
) {
let res = await X_login.forgetPassword_app(this.phone, this.code,this.new_password)
this.handleError(res, res => {
uni.navigateTo({
url: 'x_login'
});
})
}
}
}
}
</script>
<style lang="scss">
.content {
.banner{
height:404upx;
padding-top:60upx;
position: relative;
background-image: url(../../static/my/login.png);
background-position: 100% 100%;
background-size: cover;
.page_title{
// line-height: 118upx;
font-size: 32upx;
}
.back{
position: absolute;
top:100upx;
left:33upx;
height:31upx;
width:19upx;
}
}
.login{
margin-top:60upx;
}
.my_form{
.my_form_menu{
.menu_items{
margin-right:44upx;
}
}
.menu_active{
color: #282828;
font-size: 32upx;
border-bottom:4upx solid #6B68DC;
font-weight: bold;
}
}
.my_input{
padding:100upx 64upx;
.two_input{
border-bottom:1upx solid #F2F2F2;
height:100upx;
}
}
.forget_password{
display: inline-block;
margin:15upx 0;
color: #6B6AD5;
border-bottom: 1upx solid #6B6AD5;
}
.agree {
display: -webkit-box;
overflow: hidden;
white-space: normal !important;
text-overflow: ellipsis;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical
}
}
</style>