e17cf320 by 杨炀

no message

1 parent bb678af5
......@@ -236,7 +236,7 @@ function commit(rangeIds) {
// 调动审批
function mobilizeAudit(data) {
return request({
url: `/person/transferRange/audit/${data.rangeIds}`,
url: `/person/transferRange/audit/${data.rangeIds}?flag=${data.flag}&reason=${data.reason}`,
method: 'post',
params: data
})
......@@ -639,7 +639,12 @@ function getMySonList(data) {
params: data
})
}
function getGroupMemberInfoById(memId) {
return request({
url: '/member/info/' + memId,
method: 'get'
})
}
function addGroupPaymentGroup(data) {
return request({
url: `/member/certifiedRange/addRangeMulti/${data.memIds}/${data.rangeId}`,
......@@ -949,6 +954,14 @@ function extractInfoFromChinaIdCard(data) {
params: data
})
}
function getRemindCount(params) {
return request({
url: '/system/remindCount/getCounts',
method: 'get',
params: params
})
}
export {
getMessage,
......@@ -1045,5 +1058,5 @@ export {
getMemberInfoModRange,commitGroupChange,delGroupChange,
getChangeGroupByRangeId,groupInfoMod,addGroupInfoModeToRange,
groupChangeEditMod,groupChangeAudit,extractInfoFromChinaIdCard
,certifiedwithDraw,certifiedunMerge
,certifiedwithDraw,certifiedunMerge,getRemindCount,getGroupMemberInfoById
}
\ No newline at end of file
......
page {
height: 100vh;
overflow: auto;
background: #f5f7f9;
background: #ecf0f6;
}
.wBox{box-sizing: border-box;}
.h3 {font-weight: bold;line-height: 2;}
......@@ -52,7 +52,7 @@ page {
.nodata{padding:10vh 0; box-sizing: border-box; text-align: center;
image{width: 300rpx;height: 300rpx;display: block; margin:0 auto 40rpx;}
image{width: 300rpx;height: 300rpx;display: block; margin:0 auto;}
text{font-size: 24rpx; text-align: center; display: inline-block;color: #a8b3c7;}
button{display: inline;border-radius: 35rpx;padding:10rpx 30rpx;box-sizing: border-box;font-size: 30rpx;
border: none!important;}
......@@ -382,9 +382,9 @@ background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAOsCAYAAABQx3
background-size: cover;position: relative;}
.girdBox{display: flex;flex-wrap: wrap;padding:20rpx 0;box-sizing: border-box;
background: #FFFFFF;position: relative;top: -30rpx;border-radius: 20rpx 20rpx 0rpx 0rpx;
view{width: 25%;text-align: center; box-sizing: border-box; padding: 2% 0;
view{width: 25%;text-align: center; box-sizing: border-box; padding: 2% 0;position: relative;
font-size: 24rpx;
color: #434343;
color: #777;
image{width: 70rpx;height: 70rpx;display: block;margin: auto;}
}
}
......
......@@ -3,7 +3,7 @@ import {
h5LoginAuto
} from './login'
const excludeUrls = ['pages/index/login', 'pages/index/register']
const excludeUrls = ['login/login', 'login/register']
// 获取Token
function getToken() {
......@@ -25,6 +25,7 @@ function getHeaders() {
const header = {
'Authorization': token,
'Content-Type': 'application/json', // 根据自己的数据类型
'Content-Language': 'zh_CN',
// "Content-Type":"application/x-www-form-urlencoded",
'Ztx-Per-Id': uni.getStorageSync('perId') || '-1'
}
......
......@@ -5,14 +5,11 @@
// staging 会员系统
// const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
// const baseUrl_api = "http://123.60.96.243/stage-api/";
const baseUrl_api = 'http://192.168.1.11:8787'
// const baseUrl_api = 'http://192.168.1.131:8787'
// const baseUrl_api = 'https://ztx.itechtop.cn/stage-api'
// const baseUrl_api = 'https://tkcn.19wk.cn:8001/stage-api'
// const baseUrl_api = 'https://newsystem.taekwondo.org.cn/stage-api/'
// const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api'
// train
// const baseUrl_api = 'http://192.168.1.25:8686'
const baseUrl_api = 'https://newsystem.taekwondo.org.cn/stage-api'
export default {
baseUrl_api
}
......
<template>
<view>
<view class="text-center" v-if="userType=='2'">
<view class="text-center whitebg" v-if="userType=='2'">
<view class="cardNav">
<view class="active">会员审核</view>
<view @click="goMerge">审核合并</view>
......
<template>
<view class="hasfixedbottom">
<view class="text-center">
<view class="text-center whitebg">
<view class="cardNav">
<view @click="goApply">会员审核</view>
<view class="active">审核合并</view>
......
<template>
<view>
<view class="text-center">
<view class="text-center whitebg">
<view class="cardNav">
<view @click="goApply">会员审核</view>
<view @click="goMerge">审核合并</view>
......
<template>
<view class="hasfixedbottom">
<view class="wBox">
<view class="tt">{{form.content.certName}}</view>
<view class="tt">{{form.content?.certName}}</view>
<view>
<view class="date" v-if="form.content.commitTime">提交日期:<text>{{ form.content.commitTime }}</text>
<view class="date" v-if="form.content?.commitTime">提交日期:<text>{{ form.content?.commitTime }}</text>
</view>
<view class="date">提交单位:<text>{{ form.content.memberName }}</text> </view>
<view class="date">提交单位:<text>{{ form.content?.memberName }}</text> </view>
</view>
<view class="vipData mt30" style="flex-wrap: wrap;">
<view class="w50">
团队会员合计:
<text>{{ form.content.allCount }}</text>
<text>{{ form.content?.allCount }}</text>
</view>
<view class="w50">
新会员合计:
<text>{{ form.content.newCount }}</text>
<text>{{ form.content?.newCount }}</text>
</view>
<view class="w50">
年限合计:
<text>{{ form.content.renewYear }}</text>
<text>{{ form.content?.renewYear }}</text>
</view>
<view class="w50">
费用合计:
<text>{{ (form.content.allFee*1).toFixed(2) }}</text>
<text>{{ (form.content?.allFee*1).toFixed(2) }}</text>
</view>
</view>
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="(n,index) in list" :key="n.index">
<view class="item" v-for="(n,index) in list" :key="n.index" @click="goGroupInfo(n)">
<view style="width: 100%">
<view class="name">{{n.memberName}}</view>
<view class="date">单位类型:
......@@ -54,7 +54,7 @@
<text>{{n.renewYear}}</text>
<view v-if="deptType==1">
会员证
<text v-if="form.content.sendJiaoFeiFlag==1" class="text-success">已下发</text>
<text v-if="form.content?.sendJiaoFeiFlag==1" class="text-success">已下发</text>
<text v-else class="text-warning">未下发</text>
</view>
</view>
......@@ -225,6 +225,11 @@
})
uni.navigateBack()
})
}
function goGroupInfo(row){
uni.navigateTo({
url: `/group/groupInfo?memId=${row.memId}`
})
}
</script>
......
......@@ -12,7 +12,7 @@
</view>
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="n in list">
<view class="item" v-for="n in list" :key="n.rangeId">
<view class="w100">
<view class="name">{{n.certName}}</view>
<view class="date" v-if="n.validityTime">{{n.validityTime?.slice(0,10)}}</view>
......
<template>
<view>
<view class="mainbox">
<uni-list>
<uni-list-item title="所属协会">
<template v-slot:footer>
<view style="width: 60%;text-align: right;">{{form.firstName}} {{form.parentDeptName}}</view>
</template>
</uni-list-item>
<uni-list-item title="会员编号" v-if="form.menCode" :rightText="form.menCode" />
<uni-list-item title="机构名称" :rightText="form.name" />
<uni-list-item title="所属省份">
<template v-slot:footer>{{form.provinceStr}}</template>
</uni-list-item>
<uni-list-item title="社会信用代码" :rightText="form.creditCode" />
<uni-list-item v-if="form.siteContact" title="联系人" :rightText="form.siteContact" />
<uni-list-item v-else title="联系人" :rightText="form.contact" />
<uni-list-item v-if="form.siteTel" title="联系方式" :rightText="form.siteTel" />
<uni-list-item v-else title="联系方式" :rightText="form.phone" />
<uni-list-item v-if="form.validityDate" title="有效期" :rightText="form.validityDate?.slice(0,10)" />
<uni-list-item title="认证地址">
<template v-slot:footer>
{{form.provinceStr}}{{form.cityName}}{{form.regionStr}}
</template>
</uni-list-item>
<uni-list-item title="认证详细地址" :rightText="form.adress" />
<uni-list-item title="法人姓名" :rightText="form.legal||'--'" />
<uni-list-item v-if="form.deptType==6" title="是否为考点" :rightText="form.applyPoints==1?'是':'否'" />
<uni-list-item title="法人身份证" clickable>
<template v-slot:footer>
<view v-if="form.legalIdcPhotoArr&&form.legalIdcPhotoArr?.length>0">
<image class="ylImage" mode="aspectFit" @click="showImage(form.legalIdcPhotoArr,index)"
v-for="(item,index) in form.legalIdcPhotoArr" :key="item" :src="item">
</image>
</view>
</template>
</uni-list-item>
<uni-list-item title="营业执照" clickable >
<template v-slot:footer>
<view @click="download(form.businessLicenseArr[0]?.url)" v-if="form.businessLicenseArr&&form.businessLicenseArr?.length>0">
<text class="text-primary">{{form.businessLicenseArr[0]?.name}}</text>
</view>
</template>
</uni-list-item>
<uni-list-item title="机构照片" clickable>
<template v-slot:footer>
<view v-if="form.picturesArr&&form.picturesArr?.length>0" class="photoBook" @click="showImage(form.picturesArr,0)">
<image mode="aspectFit" class="ylImage"
:src="form.picturesArr[0]">
</image>
<text>{{form.picturesArr?.length}}</text>
</view>
</template>
</uni-list-item>
</uni-list>
</view>
<view class="height1"></view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'lodash'
import {
onMounted,
ref
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
const app = getApp()
const form = ref({
legalIdcPhotoArr: [],
picturesArr: [],
businessLicenseArr:[]
})
onLoad(option => {
console.log(option)
if ('form' in option) {
form.value = JSON.parse(decodeURIComponent(option.form))
getForm()
}
if (option.memId) {
getForm(option.memId)
}
})
function getForm(memId){
if(memId){
api.getGroupMemberInfoById(memId).then(res => {
form.value = res.data
init()
})
}else{
init()
}
}
function init() {
console.log(form.value)
if (form.value.businessLicense) {
form.value.businessLicenseArr = []
try{
form.value.businessLicenseArr = JSON.parse(form.value.businessLicense) || []
}catch(e){
form.value.businessLicenseArr=[{url:form.value.businessLicense,name:'营业执照'}]
}
console.log('营业执照',form.value.businessLicenseArr)
}
if (form.value.certLegalIdcPhoto && form.value.certLegalIdcPhoto!=null) {
form.value.legalIdcPhotoArr = []
var arr = form.value.certLegalIdcPhoto?.split(',') || []
if (arr.length > 0) {
arr = _.map(arr, (p) => {
if(p.indexOf('http')==-1){
console.log(p)
p = config.baseUrl_api + p
}
return p
})
form.value.legalIdcPhotoArr = arr
}
console.log('法人身份证',form.value.legalIdcPhotoArr)
}
if (form.value.certPictures) {
form.value.picturesArr = []
var arr = form.value.certPictures.split(',') || []
if (arr.length > 0) {
arr = _.map(arr, (p) => {
if(p.indexOf('http')==-1){
p = config.baseUrl_api + p
}
return p
})
form.value.picturesArr = arr
}
console.log(form.value.picturesArr)
}
}
function showImage(arr, index) {
uni.previewImage({
urls: arr,
current: index,
success: function(res) {
}
})
}
function download(url) {
console.log(url)
if (url.indexOf('.png') > -1 || url.indexOf('.jpg') > -1) {
if(url.indexOf('http')>-1){
uni.previewImage({
urls: [url],
success: function(res) {
}
})
} else {
uni.previewImage({
urls: [config.baseUrl_api + url],
success: function(res) {
}
})
}
} else {
if(url.indexOf('http')>-1){
goWebView(url)
} else {
goWebView(config.baseUrl_api + url)
}
}
}
function goWebView(url) {
url = url.replace("http://", "https://")
uni.showLoading({
title: '下载中'
});
uni.downloadFile({
url: url,
success: function(res) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.showLoading({
title: '正在打开'
});
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
uni.hideLoading();
},
fail: function(err) {
uni.hideLoading();
uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
}
});
},
fail: function(error) {
uni.hideLoading();
uni.showToast({
title: `下载失败`,
icon: 'none',
duration: 2000
});
}
});
}
</script>
<style scoped lang="scss">
.height1 {
height: 1rpx
}
.ylImage {
width: 300rpx;
height: 200rpx;
display: block;
box-shadow: 0 0 10rpx #ddd;
border-radius: 8rpx;
}
.mainbox {
margin: 30rpx 25rpx 60rpx;
padding: 1px;
background: #FFFFFF;
border-radius: 15rpx;
:deep(.uni-list-item__content-title) {
color: #4C5359;
font-size: 30rpx;
font-weight: 300;
}
:deep(.uni-list-item__extra-text) {
color: #000;
font-size: 30rpx;
}
}
.photobox {
position: relative;
margin: 30rpx auto;
.photo {
width: 210rpx;
height: 280rpx;
background-color: #f4f4f4;
display: block;
margin: auto;
}
}
.colorful {
background-color: #007BDA;
width: 200rpx;
margin: auto;
height: 200rpx;
line-height: 200rpx;
font-size: 44rpx;
color: #fff;
text-align: center;
border-radius: 50%;
}
:deep(.uni-list-item__extra) {
width: 60%;
}
.photoBook{position: relative;border-radius: 10rpx; overflow: hidden;
&::after{content: '';position: absolute;width: 100%;height: 100%;top: 0;left: 0;
background: linear-gradient(180deg,rgba(0, 0, 0, 0),rgba(0, 0, 0, 0.7));
}
text{ position: absolute;z-index: 1;
font-size: 24rpx;
color: #fff;
bottom: 4rpx;
right: 8rpx;}
}
</style>
\ No newline at end of file
<template>
<view>
<z-paging ref="paging" v-model="infoList" @query="getQuery" emptyViewImg="/static/nodata.png">
<view :slot="top">
<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="query.name" placeholder="搜索团队会员名称" @blur="getList" @clear="getList">
</uni-easyinput>
<view>
<z-paging ref="paging" v-model="infoList" @query="getQuery" emptyViewImg="/static/nodata.png">
<view :slot="top">
<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="query.name" placeholder="搜索团队会员名称" @blur="getList" @clear="getList">
</uni-easyinput>
</view>
<view class="vipData">
<view>共计 <text>{{ forms?.total }}</text></view>
<view>有效会员 <text>{{ forms?.effective }}</text></view>
<view>过期会员 <text>{{ forms?.expired }}</text></view>
<view>即将过期会员 <text>{{ forms?.soon }}</text></view>
</view>
</view>
<view class="vipData">
<view>共计 <text>{{ forms?.total }}</text></view>
<view>有效会员 <text>{{ forms?.effective }}</text></view>
<view>过期会员 <text>{{ forms?.expired }}</text></view>
<view>即将过期会员 <text>{{ forms?.soon }}</text></view>
</view>
</view>
<view class="indexboxre">
<view class="userlist mt30">
<view class="item" v-for="n in infoList" :key="n.memId">
<view @click="handleInfo(n)">
<view class="name">{{n.name}}
<!-- <text v-if="n.memCode"> ({{n.memCode}}) </text> -->
<view class="indexboxre">
<view class="userlist mt30">
<view class="item" v-for="n in infoList" :key="n.memId">
<view @click="godetail(n)">
<view class="name">{{n.name}}
<!-- <text v-if="n.memCode"> ({{n.memCode}}) </text> -->
</view>
<view class="date">到期时间:{{n.validityDate?.slice(0,10)||'--'}}</view>
</view>
<view class="status" style="top: 10rpx;" @click="handleInfo(n)">
<text class="text-success" v-if="n.valiStr=='正常'">{{n.valiStr}}</text>
<text class="text-warning" v-if="n.valiStr=='已过期'">{{n.valiStr}}</text>
<text class="text-primary" v-if="n.valiStr=='即将过期'">{{n.valiStr}}</text>
</view>
<view class="status" style="bottom: 20rpx;" @click="handleInfo(n)">
<text class="text-success">{{n.validityMemberCount}}</text>/{{n.allMemberCount}}
</view>
<view class="date">到期时间:{{n.validityDate?.slice(0,10)||'--'}}</view>
</view>
<view class="status" style="top: 10rpx;">
<text class="text-success" v-if="n.valiStr=='正常'">{{n.valiStr}}</text>
<text class="text-warning" v-if="n.valiStr=='已过期'">{{n.valiStr}}</text>
<text class="text-primary" v-if="n.valiStr=='即将过期'">{{n.valiStr}}</text>
</view>
<view class="status" style="bottom: 20rpx;">
<text class="text-success">{{n.validityMemberCount}}</text>/{{n.allMemberCount}}
</view>
</view>
<view class="nodata" v-if="infoList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
<view class="nodata" v-if="infoList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</z-paging>
</view>
</template>
......@@ -57,16 +57,16 @@
proxy
} = getCurrentInstance()
const app = getApp();
const query = ref({
pageNum:1,
pageSize:8,
const query = ref({
pageNum: 1,
pageSize: 8,
fromList: 1,
dType: 4,
dType: 4,
status: 2
})
const navs = ref(['道馆', '三级协会', '二级协会', '一级协会'])
const list = ref([])
const paging = ref(null)
const list = ref([])
const paging = ref(null)
const forms = ref({})
const infoList = ref([])
const total = ref(0)
......@@ -92,39 +92,46 @@
title: '加载中'
})
console.log(current.value, currentTabName.value, query.value.dType)
api.getGroupVipList(query.value).then(res => {
query.value.pageNum = 1
infoList.value = []
if (paging.value) {
paging.value.clear()
}
api.getGroupVipList(query.value).then(res => {
// infoList.value = res.rows
paging.value.complete(res.rows);
total.value = res.total
uni.hideLoading()
})
}
function getQuery(pageNum,pageSize){
query.value.pageNum = pageNum
query.value.pageSize = pageSize
api.getGroupVipList(query.value).then(res => {
// infoList.value = res.rows
paging.value.complete(res.rows);
total.value = res.total
uni.hideLoading()
})
function getQuery(pageNum, pageSize) {
query.value.pageNum = pageNum
query.value.pageSize = pageSize
api.getGroupVipList(query.value).then(res => {
// infoList.value = res.rows
paging.value.complete(res.rows);
total.value = res.total
uni.hideLoading()
})
}
function getGroupInfo() {
uni.showLoading({
title: '加载中'
function getGroupInfo() {
uni.showLoading({
title: '加载中'
})
api.getMemberCountInfo({
dType: query.value.dType,
fromList: 1
}).then(res => {
forms.value = res
forms.value = res
uni.hideLoading()
})
}
function onClickItem(e) {
uni.showLoading({
title: '加载中'
function onClickItem(e) {
uni.showLoading({
title: '加载中'
})
current.value = e.currentIndex
currentTabName.value = navs.value[e.currentIndex]
......@@ -141,7 +148,20 @@
getGroupInfo()
}
function godetail(n) {
const form = encodeURIComponent(JSON.stringify(n))
// uni.navigateTo({
// url: `/group/groupInfo?form=${form}`
// })
uni.navigateTo({
url: `/group/groupInfo?memId=${n.memId}`
})
}
function handleInfo(n) {
if (n.allMemberCount == 0) {
return
}
uni.navigateTo({
url: `/group/detail?deptId=${n.deptId}`
})
......
<template>
<view class="hasfixedbottom">
<view class="h3-padding">成员信息</view>
<view class="wBox">
<view class="wBox" style="padding: 0;">
<view class="userlist">
<view class="item" v-for="n in list">
<view class="item" v-for="(n,index) in list" :key="index" @click="goGroupInfo(n)">
<view style="width: 100%">
<view class="status">
<view v-if="n.status==0" class="text-primary">
......@@ -34,7 +34,7 @@
续费年限
<text>{{n.renewYear}}</text>
</view>
<view>
<view :class="n.validityTime?'':'w50'">
总价
<text>¥{{n.allPrice}}</text>
</view>
......@@ -126,6 +126,11 @@
uni.hideLoading()
feelList.value = res.data
})
}
function goGroupInfo(row){
uni.navigateTo({
url: `/group/groupInfo?memId=${row.memId}`
})
}
</script>
......@@ -156,7 +161,7 @@
position: relative;
.date {
margin-top: 10rpx;
margin: 10rpx 0;
}
.name {
......
......@@ -239,7 +239,7 @@
font-size: 30rpx;
}
.ddd{font-size: 28rpx;color: #333;
.ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx;
.lab{color: #999;display: inline-block;text-align: justify;}
}
}
......
<template>
<view>
<view class="text-center" v-if="userType=='2'">
<view class="text-center whitebg" v-if="userType=='2'">
<view class="cardNav">
<view class="active">会员审核</view>
<view @click="goMerge">审核合并</view>
......
<template>
<view class="hasfixedbottom">
<view class="text-center">
<view class="text-center whitebg">
<view class="cardNav">
<view @click="goApproval">会员审核</view>
<view class="active">审核合并</view>
......
<template>
<view>
<view class="text-center">
<view class="text-center whitebg">
<view class="cardNav">
<view @click="goApproval">会员审核</view>
<view @click="goMerge">审核合并</view>
......
......@@ -80,8 +80,8 @@
let rangeId = ''
onLoad((option) => {
if ('form' in option) {
form.value = JSON.parse(option.form)
// console.log(111,form.value)
form.value = JSON.parse(decodeURIComponent(option.form))
console.log(111,form.value)
}
type.value = option.type
// console.log(222,form.value)
......@@ -142,7 +142,7 @@ function goDetail(item){
font-size: 30rpx;
}
.ddd{font-size: 28rpx;color: #333;
.ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx;
.lab{color: #999;display: inline-block;text-align: justify;
text{word-break: break-all;}
}
......
......@@ -28,7 +28,7 @@
<view>{{item.totalNum}}/<text class="text-danger">{{item.pass}}</text></view>
</view>
</view>
<view class="func" v-if="item.certStatus != '2'">
<view class="func" v-if="item.isCert != '2'">
<button @click="send(item)">一键生成</button>
</view>
</view>
......
This diff could not be displayed because it is too large.
......@@ -38,7 +38,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx523ee37fff4fea9d",
"appid" : "wx523ee37fff4fea9d",
"setting" : {
"urlCheck" : false,
"minified" : false,
......@@ -62,5 +62,7 @@
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "3"
"vueVersion" : "3",
"fallbackLocale" : "zh-Hans",
"locale" : "zh-Hans"
}
......
......@@ -427,6 +427,14 @@
"navigationBarTitleText" : "新建团体信息变更",
"enablePullDownRefresh" : false
}
},
{
"path" : "groupInfo",
"style" :
{
"navigationBarTitleText" : "机构资料",
"enablePullDownRefresh" : false
}
}]
},{
"root": "level",
......@@ -529,9 +537,6 @@
"enablePullDownRefresh": false
}
}]
},{
"root": "training",
"pages":[]
}],
"preloadRule": {
"pages/index/index": {
......
......@@ -204,7 +204,7 @@ function getTablePersonInfo() {
font-size: 30rpx;
}
.ddd{font-size: 28rpx;color: #333;
.ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx;
.lab{color: #999;display: inline-block;text-align: justify;}
}
}
......
......@@ -13,9 +13,9 @@
v-model="baseFormData.name" placeholder="请输入姓名" />
</uni-forms-item>
<uni-forms-item label="证件类型" required name="idcType">
<uni-data-select v-model="baseFormData.idcType" :clearable="false" :disabled="current === 0" :localdata="idcTypeList"></uni-data-select>
<uni-data-select v-model="baseFormData.idcType" @change="changeIdcType" :clearable="false" :disabled="current === 0" :localdata="idcTypeList"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="证件照" required name="picUrl" v-show="current === 1">
<uni-forms-item label="证件照" required name="card" v-show="current === 1">
<view class="upCard">
<uni-file-picker :class="baseFormData.card?'':'op0'" v-model="baseFormData.cardObj"
@delete="delimgFont" return-type="object" limit="1" @select="upIdCardImgFront"
......@@ -52,7 +52,7 @@
:placeholderStyle="placeholderStyle" v-model="baseFormData.address"
placeholder="请输入详细地址" /></uni-forms-item>
<uni-forms-item label="头像" required name="photo">
<uni-forms-item label="头像" required>
<uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1"
@select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker>
</uni-forms-item>
......@@ -131,7 +131,7 @@
const infoConfirm = ref(null)
const agree = ref(false)
const perId = ref()
const photoArr = ref([])
const photoArr = ref({})
const regionsList = ref([])
const baseFormData = ref({
photo: '',
......@@ -201,6 +201,13 @@
if (current.value != e.currentIndex) {
current.value = e.currentIndex
}
baseFormData.value = {
photo: '',
sex: '0',
idcType: '0',
perType: '1'
}
photoArr.value = {}
if(current.value==0){
baseFormData.value.idcType = '0'
}
......@@ -222,8 +229,17 @@
baseFormData.value.birth = res.data.birth
baseFormData.value.idcCode = res.data.code
baseFormData.value.cityId = res.data.cityId
baseFormData.value.address = res.data.address
baseFormData.value.photo = res.data.photo
baseFormData.value.address = res.data.address
photoArr.value = {}
if(res.data.photo){
baseFormData.value.photo = res.data.photo
let obj = {
url: config.baseUrl_api + res.data.photo,
name:'头像',
extname:'jpg'
}
photoArr.value=obj
}
baseFormData.value.name = res.data.name
baseFormData.value.picUUid = res.data.picUUid
})
......@@ -232,10 +248,26 @@
// });
}
function upPhoto(e) {
api.uploadImg(e).then(data => {
baseFormData.value.photo = data.msg;
});
function upPhoto(e) {
const tempFilePaths = e.tempFilePaths;
const imgUrl = tempFilePaths[0]
wx.cropImage({
src: imgUrl,
cropScale: '4:5',
success: function(resp) {
uni.showLoading({
title: '加载中'
});
api.uploadImg(e).then(data => {
baseFormData.value.photo = data.msg;
});
},
fail: function(err) {
photoArr.value = {}
}
})
}
function delimgFont(n) {
......@@ -243,7 +275,7 @@
}
function delPhoto(n) {
photoArr.value = [];
photoArr.value = {};
baseFormData.value.photo = '';
}
......@@ -293,7 +325,7 @@
baseFormData.value.phone = res.data.phone
baseFormData.value.cityId = res.data.cityId
baseFormData.value.address = res.data.address
photoArr.value = []
photoArr.value = {}
if(res.data.photo){
baseFormData.value.photo = res.data.photo
let obj = {
......@@ -301,10 +333,11 @@
name:'头像',
extname:'jpg'
}
photoArr.value.push(obj)
photoArr.value=obj
}
baseFormData.value.name = res.data.name
baseFormData.value.perId = res.data.perId
console.log(res.data.photo,baseFormData.value.photo)
})
}
......@@ -336,7 +369,16 @@
agree.value = true
popup.value.close()
}
function changeIdcType(e){
console.log(e)
// 切换证件照类型把当前页面数据清空
// baseFormData.value = {
// photo: '',
// sex: '0',
// idcType: '0',
// perType: '1',
// }
}
function goSubmit() {
if (!agree.value) {
uni.showToast({
......@@ -395,8 +437,11 @@
}
if (res.data * 1 < 0) {
// 会员调入弹出
perId.value = res.data.slice(1)
getUserInfo()
uni.showModal({
content:'该会员已存在其他道馆,如需添加,请发起会员调动',
title:'提示',
success: function(res) {}
})
return
}
let msg = '保存成功'
......@@ -423,8 +468,8 @@
function getUserInfo() {
api.getInfo(perId.value).then(res => {
forms.value = res.data
if (forms.areaAssName) forms.ancestorNameList = forms.value.ancestorNameList.join(',').replaceAll(',',
baseFormData.value = res.data
if (baseFormData.areaAssName) baseFormData.ancestorNameList = baseFormData.value.ancestorNameList.join(',').replaceAll(',',
'/')
})
}
......
<template>
<view class="mainbox">
<view class="photobox">
<image class="photo" v-if="form.photo" :src="form.photo" mode='widthFix'></image>
<view class="colorful" v-else>{{form.name?.slice(0,1)}}</view>
<view class="mainbox">
<view class="topBg">
<view class="photobox">
<image class="photo" v-if="form.photo" :src="form.photo" mode='aspectFit'></image>
<view class="colorful" v-else>{{form.name?.slice(0,1)}}</view>
</view>
<view class="infoBox">
<view class="name">
{{form.name}}
</view>
<view class="flexbox">
<label>证件号:</label>
<text>{{ form.idcCode}}</text>
</view>
<view class="flexbox">
<label>会员编号:</label>
<text>{{ form.perCode}}</text>
</view>
<view class="flexbox">
<label>有效期:</label>
<text>{{ form.idcType==3?'--': form.validityDate?.slice(0,10)||'--' }}</text>
</view>
</view>
</view>
<uni-list>
<uni-list-item title="姓名" :rightText="form.name"/>
<uni-list-item title="证件类型" :rightText="cardType?.[form?.idcType]?.label" />
<uni-list-item title="证件号" :rightText="form.idcCode"/>
<uni-list-item title="性别" :rightText="form.sex==0?'男':'女'"/>
<uni-list-item title="会员编号" :rightText="form.perCode"/>
<uni-list-item title="所属一级协会" :rightText="form.topAssName"/>
<uni-list-item title="所属地区协会" :rightText="form.areaAssName"/>
<uni-list-item title="注册团体会员" :rightText="form.memName"/>
<uni-list-item title="缴费日期" :rightText="form.payDate||'--'"/>
<uni-list-item title="出生日期" :rightText="form.birth?.slice(0,10)"/>
<uni-list-item title="手机号码" :rightText="form.phone"/>
<uni-list-item title="所在地区" :rightText="form.cityStr"/>
<uni-list-item title="详细地址" :rightText="form.address||'--'"/>
<uni-list-item title="姓名" :rightText="form.name" />
<uni-list-item title="证件类型" :rightText="cardType?.[form?.idcType]?.label" />
<uni-list-item title="证件号" :rightText="form.idcCode" />
<uni-list-item title="性别" :rightText="form.sex==0?'男':'女'" />
<uni-list-item title="会员编号" :rightText="form.perCode" />
<uni-list-item title="所属一级协会" :rightText="form.topAssName" />
<uni-list-item title="所属地区协会" :rightText="form.areaAssName" />
<uni-list-item title="注册团体会员" :rightText="form.memName" />
<uni-list-item title="缴费日期" :rightText="form.payDate||'--'" />
<uni-list-item title="出生日期" :rightText="form.birth?.slice(0,10)" />
<uni-list-item title="手机号码" :rightText="form.phone" />
<uni-list-item title="所在地区" :rightText="form.cityStr" />
<uni-list-item title="详细地址" :rightText="form.address||'--'" />
</uni-list>
</view>
</view>
<view class="height1"></view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
onLoad,onShow
} from '@dcloudio/uni-app';
import {ref } from 'vue'
const cardType = ref([
{ label: '身份证', value: '0' },
{ label: '港澳台通行证 ', value: '1' },
{ label: '中国护照', value: '2' },
{ label: '外国护照', value: '3' },
{ label: '其它', value: '4' }
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
onLoad,
onShow
} from '@dcloudio/uni-app';
import {
ref
} from 'vue'
const cardType = ref([{
label: '身份证',
value: '0'
},
{
label: '港澳台通行证 ',
value: '1'
},
{
label: '中国护照',
value: '2'
},
{
label: '外国护照',
value: '3'
},
{
label: '其它',
value: '4'
}
])
const form = ref({})
onLoad((option)=>{
console.log(option)
api.getInfo(option.perId).then(res=>{
form.value = res.data
form.value.topAssName = form.value?.ancestorNameList?.[0]
form.value.areaAssName = form.value?.ancestorNameList?.[1]
form.value.memName = res.data.memName
if(form.value.cityId){
getRegionsList(form.value.cityId)
}
if(form.value.photo&&form.value.photo.indexOf('http')==-1){
form.value.photo = config.baseUrl_api + form.value.photo
}
})
})
function getRegionsList(cityId){
api.regionsList().then(res=>{
for(var m of res.data){
for(var n of m.children){
for(var o of n.children){
if(o.value == cityId){
form.value.cityStr = m.text + n.text + o.text
}
}
}
}
})
const form = ref({})
onLoad((option) => {
console.log(option)
api.getInfo(option.perId).then(res => {
form.value = res.data
form.value.topAssName = form.value?.ancestorNameList?.[0]
form.value.areaAssName = form.value?.ancestorNameList?.[1]
form.value.memName = res.data.memName
if (form.value.cityId) {
getRegionsList(form.value.cityId)
}
if (form.value.photo && form.value.photo.indexOf('http') == -1) {
form.value.photo = config.baseUrl_api + form.value.photo
}
})
})
function getRegionsList(cityId) {
api.regionsList().then(res => {
for (var m of res.data) {
for (var n of m.children) {
for (var o of n.children) {
if (o.value == cityId) {
form.value.cityStr = m.text + n.text + o.text
}
}
}
}
})
}
</script>
<style scoped lang="scss">
.height1{height:1rpx}
.mainbox{margin: 30rpx 25rpx 60rpx;padding: 1px;
background: #FFFFFF;
border-radius: 15rpx;
:deep(.uni-list-item__content-title){color: #4C5359;font-size: 30rpx;
font-weight: 300;}
:deep(.uni-list-item__extra-text){color: #000;
font-size: 30rpx;}
}
.photobox{position: relative;margin: 30rpx auto;
.photo{width: 210rpx;height: 280rpx;background-color: #f4f4f4;display: block;margin: auto;}
}
.colorful {background-color: #007BDA;
.flexbox{width: 60%;margin:10rpx auto;font-size: 28rpx;align-items: center;
label{color: #7b7f83;width: 5em;font-size: 24rpx;}
}
.topBg{background: #f5f5f5;}
.infoBox{padding: 1rpx 1rpx 30rpx;
.name{font-size: 34rpx;text-align: center;}
}
.photobox {
position: relative;
padding: 30rpx 0 30rpx;
.photo {
width: 255rpx;
height: 318rpx;
background-color: #f4f4f4;
display: block;
margin: auto;
}
}
.height1 {
height: 1rpx
}
.mainbox {
margin: 30rpx 25rpx 60rpx;box-shadow:0 0 8rpx #ddd;
background: #FFFFFF;
border-radius: 15rpx;
:deep(.uni-list-item__content-title) {
color: #4C5359;
font-size: 30rpx;
font-weight: 300;
}
:deep(.uni-list-item__extra-text) {
color: #000;
font-size: 30rpx;
}
}
.colorful {
background-color: #007BDA;
width: 200rpx;
margin: auto;
height: 200rpx;
......
......@@ -13,7 +13,7 @@
</view>
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="n in list">
<view class="item" v-for="n in list" :key="n.memId" @click="goPersonInfo(n)">
<view class="photobox">
<view class="colorful">{{n.personName?.slice(0,1)}}</view>
</view>
......@@ -22,7 +22,7 @@
<view class="date">原有效期至{{n.originValidityDate?.slice(0,10)||'--'}}</view>
</view>
<view class="nian">
总价 ¥{{n.allPrice}}
¥{{n.allPrice}}
</view>
</view>
</view>
......@@ -74,6 +74,11 @@
// arr.value = JSON.parse(JSON.stringify(list.value))
form.value = res.data
})
}
function goPersonInfo(n){
uni.navigateTo({
url: `/personalVip/detail?perId=${n.perId}`
})
}
</script>
......@@ -100,7 +105,7 @@
.item {
border-bottom: 1px dashed #e5e5e5;
position: relative;padding: 20rpx 0;
.photobox{margin-right:20rpx;}
.date {
margin-top: 10rpx;
}
......
......@@ -6,52 +6,62 @@
v-model="query.name" @blur="getList" @clear="getList" placeholder="搜索姓名">
</uni-easyinput>
</view>
<uni-swipe-action>
<uni-swipe-action-item class="personitem" v-for="(n,index) in list" :key="index">
<view class="content-box" @click="handleInfo(n)">
<view class="flexbox">
<view class="photobox">
<image class="photo" v-if="n.photo" :src="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-primary">
新会员
</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" class="text-success">
正常
</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>
<view class="pdbox">
<view class="personitem" v-for="(n,index) in list" :key="index">
<uni-swipe-action>
<uni-swipe-action-item>
<view class="content-box" @click="handleInfo(n)">
<view class="flexbox" style="flex: 1 1 auto;">
<view class="photobox">
<image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
<view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
</view>
<view>
{{n.name}} <text class="date">({{n.perCode}})</text>
</view>
</view>
<view class="flexbox" style="flex:0 0 auto">
<text v-if="n.certStage==0" class="text-primary">
新会员
</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" class="text-success">
正常
</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 class="danger-button" v-else @click="handleDelete(n)" style="opacity: 0.5;">
<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>
</view>
</z-paging>
<view class="nodata" v-if="list.length==0">
<!-- <image mode="aspectFit" src="/static/nodata.png"></image> -->
......@@ -131,7 +141,10 @@
})
}
function handleDelete(item) {
function handleDelete(item) {
if(item.certStage!=0){
return
}
uni.showModal({
content: `是否确认删除${item.name}`,
success: function(res) {
......@@ -168,7 +181,8 @@
}
</script>
<style scoped lang="scss">
<style scoped lang="scss">
.personitem{margin: 0 0 30rpx;}
.searchbar {
display: flex;
align-items: center;
......@@ -196,6 +210,9 @@
}
.content-box {
background: #fff;
}
background: #fff;
.photobox{margin-right: 20rpx;
}
}
.pdbox{padding: 0 20rpx;}
</style>
\ No newline at end of file
......
......@@ -12,7 +12,7 @@
</view>
<view class="appList">
<view class="appItem" v-for="item in list">
<view class="appItem" v-for="(item,index) in list" :key="index">
<view class="status" @click="goDetail(item)">
<view v-if="deptType == 1">
<text v-if="item.ztxRes == 0">审核中</text>
......@@ -102,9 +102,6 @@
const total = ref(0)
const deptType = ref('')
onLoad(() => {
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
......@@ -114,6 +111,9 @@
};
}
})
onShow(() => {
getList()
})
function init() {
uni.showLoading({
......@@ -158,7 +158,10 @@
getList()
}
function getList() {
function getList() {
uni.showLoading({
title: '加载中'
})
api.getMobilizelist(queryParams.value).then(res => {
uni.hideLoading()
list.value = res.rows
......
......@@ -5,7 +5,7 @@
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="n in list">
<view class="item" v-for="n in list" :key="n.id" @click="goPersonDetail(n)">
<view class="photobox">
<view class="colorful">{{n.perName?.slice(0,1)}}</view>
</view>
......@@ -21,7 +21,7 @@
<view class="h3-padding">审核流程</view>
<view class="wBox">
<view class="stepItem" v-for="(n,index) in auditLog">
<view class="stepItem" v-for="(n,index) in auditLog" :key="index">
<view class="time">{{n.auditTime||'待审批'}}</view>
<view class="content">
<view class="status">
......@@ -157,6 +157,11 @@
})
uni.navigateBack()
})
}
function goPersonDetail(row){
uni.navigateTo({
url: `/personalVip/detail?perId=${row.perId}`
})
}
</script>
......
......@@ -141,7 +141,7 @@ function goDetail(item){
font-size: 30rpx;
}
.ddd{font-size: 28rpx;color: #333;
.ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx;
.lab{color: #999;display: inline-block;text-align: justify;
text{word-break: break-all;}
}
......
......@@ -88,7 +88,7 @@
</script>
<style lang="scss" scoped>
.segmented-control {
.segmented-control { background: #fff;
/* #ifndef APP-NVUE */
display: flex;
box-sizing: border-box;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!