list.vue 4.11 KB
<template>
	<view>
		<view class="searchbar">
			<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
				v-model="query.name" @blur="getList" @clear="getList" placeholder="搜索姓名">
			</uni-easyinput>

		</view>

		<uni-swipe-action>
			<uni-swipe-action-item class="personitem" v-for="n in list">
				<view class="content-box" @click="handleInfo(n)">
					<view class="flexbox">
						<view class="photobox">
							<image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
							<view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
						</view>
						<view>
							{{n.name}} ({{n.perCode}})
						</view>
					</view>
					<view class="flexbox">
						<text v-if="n.certStage==0" class="text-green">
							新会员
						</text>
						<text v-if="n.certStage==1" class="text-warning">
							待提交
						</text>
						<text v-if="n.certStage==2" class="text-red">
							缴费中
						</text>
						<text v-if="n.certStage==3">
							正常
						</text>
						<text v-if="n.certStage==4" class="text-gray">
							过期
						</text>
					</view>

				</view>
<!-- 				<template v-slot:right>
					<view class="slot-button">
						<view class="edit-button" @click="handleUpdate(n)">
							<uni-icons type="compose" color="#fff" size="20"></uni-icons>
							<text class="slot-button-text">编辑</text>
						</view>
						<view class="danger-button" v-if="n.certStage==0" @click="handleDelete(n)">
							<uni-icons type="trash" color="#fff" size="20"></uni-icons>
							<text class="slot-button-text">删除</text>
						</view>
					</view>
				</template> -->
			</uni-swipe-action-item>
		</uni-swipe-action>

		<view class="nodata" v-if="list.length==0">
			<image mode="aspectFit" src="/static/nodata.png"></image>
			<button class="btn-red" v-if="userType=='4'" @click="goVipList">+ 添加会员</button>
			<text v-else>暂无数据</text>
		</view>
	</view>
</template>

<script setup>
	import * as api from '@/common/api.js'
	import config from '@/config.js'
	import {
		onMounted,
		ref
	} from 'vue'
	import {
		onLoad
	} from '@dcloudio/uni-app'
	const query = ref({
		pageNum: 1,
		pageSize: 20,
		showMyPersonFlag: null,
		multiDeptFlag: 1,
		perType: 1,
		checkPaymentCommit: 1
	})
	const userType = ref('1')
	const list = ref([])
	const total = ref(0)
	const app = getApp();
	onLoad(()=>{
		userType.value = app.globalData.userType
	})
	onMounted(() => {
		getList()
	})

	function getList() {
		  if (app.globalData.userType == '4') {
			  // 道馆
		    query.value.multiDeptFlag = null
		    query.value.showMyPersonFlag = 1
		  }
		api.selectPageList(query.value).then(res => {
			for (var p of res.rows) {
				if (p.photo) {
					p.photo = config.fileUrl_api + p.photo
					console.log(p.photo)
				}
			}
			list.value = res.rows
			total.value = res.total
		})
	}

	function handleDelete(item) {
		uni.showModal({
			content: `是否确认删除${item.name}`,
			success: function(res) {
				if (res.confirm) {
					api.delInfo(item.perId).then(response => {
						uni.showToast({
							title: '删除成功',
							icon: 'none'
						})
						getList()
					})
				}
			}
		})
	}
function handleUpdate(n) {
	uni.navigateTo({
		url: `/pages/personalVip/editVip?perId=${n.perId}&perType=${n.perType}`
	})
}
	function handleInfo(n) {
		uni.navigateTo({
			url: `/pages/personalVip/detail?perId=${n.perId}`
		})
	}

	function goVipList() {
		let path = '/pages/personalVip/addVip';
		uni.navigateTo({
			url: path
		});
	}
</script>

<style scoped lang="scss">
	.searchbar {
		display: flex;
		align-items: center;
		padding: 25rpx;
		box-sizing: border-box;

		.invertedbtn-red {
			margin-left: 15rpx;
			font-size: 30rpx;
			padding: 16rpx 20rpx;
			box-sizing: border-box;
			border-radius: 50rpx;
			background-color: #fff;
		}

		:deep(.uni-easyinput .uni-easyinput__content) {
			border-radius: 35rpx;
			border: none;
			height: 70rpx;
		}

		:deep(.uni-easyinput__content-input) {
			font-size: 26rpx;
		}
	}



</style>