Files
dvcp_v2_wxcp_app/library/project/caw/AppCountryAlbum/PersonnelSetting.vue
2024-10-31 14:34:57 +08:00

239 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="PersonnelSetting">
<div class="title">
<h2>拍摄人</h2>
<span>*选择拍摄人后相册只能上传该拍摄人照片</span>
</div>
<div class="cell-group">
<div class="cell-item" hover-class="bg-hover" @click="userList = [], currIndex = 0">
<div class="cell-item__left">
<h2>不限</h2>
</div>
<div class="cell-item__check" :class="[currIndex === 0 ? 'active' : '']"></div>
</div>
<div class="cell-item" hover-class="bg-hover" @click="toChoose">
<div class="cell-item__left">
<h2>根据条件选择</h2>
</div>
<div class="cell-item__check" :class="[currIndex === 1 ? 'active' : '']"></div>
</div>
</div>
<div class="user-wrapper" v-if="userList.length">
<div class="user" v-for="(item, index) in userList" :key="index">
<h2 class="user-left">
<AiOpenData v-if="item" type="userName" :openid="item"></AiOpenData>
</h2>
<image src="./images/remove.png" @click="remove(index)" />
</div>
</div>
<div class="tips">如选中人员未展示可能是未授权该成员应用权限需要先对这些成员进行应用授权 </div>
<div class="form-btn" hover-class="text-hover" @click="save">保存</div>
</div>
</template>
<script>
import { mapActions } from 'vuex'
export default {
name: 'PersonnelSetting',
appName: '拍摄人选择',
data () {
return {
currIndex: 0,
userList: [],
ticket: '',
count: 0
}
},
onLoad (query) {
this.getInfo(query.id)
},
methods: {
...mapActions(['selectPrivilegedContact']),
linkTo (url) {
uni.navigateTo({
url
})
},
remove (index) {
this.userList.splice(index, 1)
},
save () {
if (this.currIndex === 1 && !this.userList.length) {
return this.$u.toast('请选择人员')
}
uni.$emit('watermarkChange', {
type: 'personnel',
value: this.userList.length ? this.userList : []
})
uni.navigateBack({
delta: 1
})
},
getInfo (id) {
this.$http.post(`/api/appalbum/queryDetailById?id=${id}`).then(res => {
if (res.code === 0) {
this.userList = res.data.albumUserList || []
this.currIndex = (res.data.albumUserList && res.data.albumUserList.length) ? 1 : 0
}
})
},
toChoose () {
this.$loading()
this.currIndex = 1
this.selectPrivilegedContact({
fromDepartmentId: 0,
selectedTickets: this.ticket ? [this.ticket] : [],
selectedOpenUserIds: this.userList
}).then(res => {
uni.hideLoading()
this.userList = res.userList.map(e => e.openUserId) || []
this.ticket = res.selectedTicket || ''
console.log(res)
}).catch(() => {
uni.hideLoading()
})
}
}
}
</script>
<style lang="scss" scoped>
.PersonnelSetting {
padding-bottom: 130px;
* {
box-sizing: border-box;
}
.user-wrapper {
background: #fff;
.user {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 32px;
border-bottom: 1px solid #DDDDDD;
.user-left {
color: #333333;
font-size: 28px;
font-weight: 600;
}
image {
width: 32px;
height: 32px;
}
}
}
.form-btn {
position: fixed;
bottom: 0;
left: 0;
z-index: 1;
width: 100%;
height: 112px;
line-height: 112px;
text-align: center;
color: #fff;
font-size: 32px;
background: #1365DD;
&:active {
opacity: 0.8;
}
}
.tips {
line-height: 44px;
margin: 32px;
font-size: 28px;
color: #999999;
white-space: pre-line;
}
.title {
display: flex;
padding: 20px 32px;
line-height: 1.3;
h2 {
font-weight: normal;
color: #666666;
font-size: 32px;
}
span {
flex: 1;
margin-left: 16px;
color: #999999;
font-size: 30px;
text-align: justify;
}
}
.cell-group {
.cell-item {
display: flex;
align-items: center;
justify-content: space-between;
height: 108px;
margin-bottom: 16px;
padding: 0 32px;
background: #FFFFFF;
&:active {
background: #eee;
}
image {
width: 32px;
height: 32px;
}
&:last-child {
margin-bottom: 0;
}
h2 {
margin-bottom: 12px;
color: #333333;
font-size: 32px;
}
p {
color: #999999;
font-size: 28px;
}
.cell-item__check {
flex-shrink: 1;
width: 32px;
height: 32px;
border-radius: 50%;
border: 4px solid #CCCCCC;
transition: all ease 0.3s;
&.active {
border: 10px solid #1365DD;
}
}
}
}
}
</style>