You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
346 lines
7.8 KiB
346 lines
7.8 KiB
<template> |
|
<view class="detail"> |
|
<view class="addDiver_card"> |
|
<view class="card_title"> |
|
<view class="tiao"></view> |
|
<view class="card_title_text">基础信息</view> |
|
</view> |
|
<uni-list> |
|
<uni-list-item> |
|
<view class="list_header" slot="header"> |
|
<image src="@/static/bt.png" style="width: 12rpx;position: absolute;left: -23rpx;" |
|
mode="widthFix"></image> |
|
用户手机号 |
|
</view> |
|
<view slot="body" class="list_right"> |
|
<input v-model="postData.phone" :disabled="!isAdd" placeholder="请输入用户手机号" |
|
class="list_right_input" /> |
|
</view> |
|
</uni-list-item> |
|
<uni-list-item> |
|
<view class="list_header" slot="header"> |
|
<image src="@/static/bt.png" style="width: 12rpx;position: absolute;left: -23rpx;" |
|
mode="widthFix"></image> |
|
用户姓名 |
|
</view> |
|
<view slot="body" class="list_right"> |
|
<input v-model="postData.customerName" :disabled="!wantUpdate" placeholder="请输入用户姓名" |
|
class="list_right_input" /> |
|
</view> |
|
</uni-list-item> |
|
</uni-list> |
|
<view class="card_title"> |
|
<view class="tiao"></view> |
|
<view class="card_title_text">用户权限信息</view> |
|
</view> |
|
<uni-list> |
|
<uni-list-item |
|
@tap="jump('/userManagement/yunSite/components/serviceStation',{siteId:postData.siteId}, isAdd)"> |
|
<view class="list_header" slot="header"> |
|
<image src="@/static/bt.png" style="width: 12rpx;position: absolute;left: -23rpx;" |
|
mode="widthFix"></image> |
|
油站渠道 |
|
</view> |
|
<view slot="body" class="list-frame site"> |
|
<view class="tips rel2rpx">{{postData.siteName}}</view> |
|
<view v-if="isAdd && !postData.siteName" class="tips">选择油站渠道</view> |
|
<uni-icons v-show="isAdd" color="#999" type="right" size="15"></uni-icons> |
|
</view> |
|
</uni-list-item> |
|
<uni-list-item direction="column" |
|
@tap="jump('/userManagement/yunSite/components/auth',postData.sysRoleList)"> |
|
<view class="list_header" slot="header"> |
|
<image src="@/static/bt.png" style="width: 12rpx;position: absolute;left: -23rpx;" |
|
mode="widthFix"></image> |
|
所属权限 |
|
</view> |
|
<view slot="body" class="list-frame"> |
|
<view> |
|
<text class="label" v-for="(item,index) in postData.sysRoleList" |
|
:key="index">{{item.roleName}}</text> |
|
</view> |
|
<view v-if="!postData.sysRoleList.length" class="tips">选择所属权限</view> |
|
<uni-icons v-show="wantUpdate || !postData.sysRoleList.length" color="#999" type="right" |
|
size="15"></uni-icons> |
|
</view> |
|
</uni-list-item> |
|
</uni-list> |
|
</view> |
|
<view class="button-group"> |
|
<view v-if="!wantUpdate" class="button orange" @tap="update">修改</view> |
|
<view v-else class="button blue" @tap="submit">保存</view> |
|
<view class="button special red" @tap="deleteData">删除</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import tool from '@/utils/tool' |
|
|
|
import serve from '@/api/userManagement/yunSite.js' |
|
|
|
export default { |
|
data() { |
|
return { |
|
isAdd: false, |
|
wantUpdate: false, |
|
postData: { |
|
phone: '', |
|
siteName: '', |
|
customerName: '', |
|
sysRoleList: [], |
|
}, |
|
} |
|
}, |
|
onLoad(options) { |
|
if (options.item) { |
|
this.postData = JSON.parse(decodeURI(options.item)) |
|
if (!this.postData.sysRoleList) { |
|
this.$set(this.postData, 'sysRoleList', []) |
|
} |
|
} else this.isAdd = this.wantUpdate = true |
|
|
|
uni.$on('yunSiteServiceStation', (item) => { |
|
this.postData.channelId = item.id |
|
this.postData.siteName = item.otherSiteName |
|
}) |
|
|
|
uni.$on('yunSiteAuth', (item) => { |
|
if (!item.isChecked) { |
|
let index = this.postData.sysRoleList.findIndex(secItem => secItem.id == item.id) |
|
if (index !== -1) { |
|
this.postData.sysRoleList.splice(index, 1) |
|
} |
|
return |
|
} |
|
this.postData.sysRoleList.push(item) |
|
}) |
|
}, |
|
methods: { |
|
deleteData() { |
|
uni.showModal({ |
|
title: '确定删除吗?', |
|
success: res => { |
|
if (res.confirm) { |
|
serve.removeCustomerRelationSite(this.postData).then(res => { |
|
if (res.code === 20000) { |
|
uni.showToast({ |
|
title: res.msg, |
|
icon: 'none' |
|
}) |
|
setTimeout(() => { |
|
uni.navigateBack() |
|
}, 1500) |
|
} |
|
}) |
|
} |
|
} |
|
}) |
|
}, |
|
submit() { |
|
let needCheckMap = { |
|
customerName: { |
|
tacitly: '', |
|
WrongText: '请输入用户姓名' |
|
}, |
|
phone: { |
|
custom: /^[1][3,4,5,7,8,9][0-9]{9}$/, |
|
WrongText: '请输入正确手机号码' |
|
}, |
|
siteName: { |
|
tacitly: '', |
|
WrongText: '请选择油站渠道' |
|
}, |
|
sysRoleList: { |
|
minLength: 1, |
|
WrongText: '请选择所属权限' |
|
} |
|
|
|
} |
|
let check = tool.checkFn(this.postData, [], needCheckMap) |
|
if (!check.result) { |
|
uni.showToast({ |
|
title: check.WrongText, |
|
icon: 'none' |
|
}) |
|
return |
|
} |
|
let ids = this.postData.sysRoleList.reduce((pre, cur) => { |
|
pre.push(cur.id) |
|
return pre |
|
}, []) |
|
this.postData.roleIds = ids |
|
this.judgeQuery().then(res => { |
|
if (res.code === 20000) { |
|
uni.showToast({ |
|
title: res.msg, |
|
icon: 'none' |
|
}) |
|
setTimeout(() => { |
|
uni.navigateBack() |
|
}, 1500) |
|
} |
|
}) |
|
}, |
|
judgeQuery() { |
|
if (this.isAdd) return serve.saveCustomerRelationSite(this.postData) |
|
else return serve.updateCustomerRelationSite(this.postData) |
|
}, |
|
update() { |
|
this.wantUpdate = true |
|
}, |
|
|
|
jump(path, item, banJump = true) { |
|
if (!banJump) return |
|
if (!this.wantUpdate) return |
|
let url = item ? `${path}?item=${encodeURI(JSON.stringify(item))}` : path |
|
uni.navigateTo({ |
|
url |
|
}) |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
.detail { |
|
padding: 0 40rpx; |
|
|
|
.addDiver_card { |
|
|
|
background: #FFFFFF; |
|
box-shadow: 0px 3px 9px 0px rgba(88, 88, 88, 0.2); |
|
border-radius: 20rpx; |
|
margin-top: 38rpx; |
|
overflow: hidden; |
|
padding: 20rpx; |
|
box-sizing: border-box; |
|
|
|
.card_title { |
|
display: flex; |
|
// border-bottom: 1px solid #F0F0F0; |
|
align-items: center; |
|
padding-bottom: 17rpx; |
|
height: 86rpx; |
|
} |
|
|
|
.card_title_text { |
|
font-size: 32rpx; |
|
font-family: PingFang SC; |
|
font-weight: 500; |
|
color: #333333; |
|
margin-left: 10rpx; |
|
} |
|
|
|
.tiao { |
|
width: 8rpx; |
|
height: 34rpx; |
|
background: #2866FF; |
|
} |
|
|
|
.list_header { |
|
font-size: 28rpx; |
|
font-family: PingFang SC; |
|
font-weight: 500; |
|
color: #333333; |
|
display: flex; |
|
align-items: center; |
|
// padding-left: 16px; |
|
position: relative; |
|
height: fit-content; |
|
} |
|
|
|
|
|
.list_right { |
|
flex: 1; |
|
display: flex; |
|
justify-content: flex-end; |
|
} |
|
|
|
.list_right_input { |
|
width: 100%; |
|
color: #333333; |
|
text-align: end !important; |
|
font-size: 28rpx; |
|
text-align: right !important; |
|
padding-left: 90rpx; |
|
box-sizing: border-box; |
|
} |
|
|
|
.list-frame { |
|
margin-top: 25rpx; |
|
position: relative; |
|
|
|
&.site { |
|
margin: 0; |
|
flex: 1 |
|
} |
|
|
|
uni-icons { |
|
position: absolute; |
|
top: 50%; |
|
transform: translateY(-51%); |
|
right: -30rpx; |
|
} |
|
|
|
.tips { |
|
font-size: 24rpx; |
|
color: #999; |
|
text-align: right; |
|
|
|
&.rel2rpx { |
|
position: relative; |
|
top: 5rpx |
|
} |
|
} |
|
} |
|
|
|
.single-label { |
|
color: #999; |
|
font-size: 24rpx; |
|
} |
|
|
|
.label { |
|
margin: 3rpx 1rpx; |
|
display: inline-block; |
|
padding: 10rpx 15rpx; |
|
color: #999; |
|
font-size: 24rpx; |
|
border: 1px solid #F0F0F0; |
|
border-radius: 5rpx; |
|
} |
|
} |
|
|
|
.button-group { |
|
position: absolute; |
|
left: 50%; |
|
bottom: 70rpx; |
|
transform: translateX(-50%); |
|
} |
|
|
|
.button { |
|
width: 670rpx; |
|
height: 100rpx; |
|
text-align: center; |
|
line-height: 100rpx; |
|
color: #fff; |
|
border-radius: 10rpx; |
|
|
|
&.special { |
|
margin-top: 35rpx; |
|
} |
|
|
|
&.orange { |
|
background: #FF8C00; |
|
} |
|
|
|
&.red { |
|
background: #EA0000; |
|
} |
|
|
|
&.blue { |
|
background: #2866FF; |
|
} |
|
} |
|
} |
|
</style>
|
|
|