f9c6474d by 杨炀

no message

1 parent 759d9885
......@@ -321,6 +321,56 @@ function addLevelInfo(data) {
params: data
})
}
function chooseStudentsList(query) {
return request({
url: '/person/info/chooseStudentsList',
method: 'get',
params: query
})
}
function batchChoose(data) {
return request({
url: '/exam/person/batch/choose',
method: 'post',
params: data
})
}
function editLevel(data) {
return request({
url: '/exam/person/editLevel',
method: 'put',
params: data
})
}
function getVerityList(params) {
return request({
url: '/exam/info/verityList',
method: 'get',
params: params
})
}
function getGroupHistoryByRelateId(id) {
return request({
url: `/member/certified/getHistoryByRelateId/${id}`,
method: 'get'
})
}
// 创建自己的团队
function createMyMember(data) {
return request({
url: '/member/info/createMyMember',
method: 'post',
params:data
})
}
function doVerity(data) {
return request({
url: `/exam/info/verity`,
method: 'put',
params: data
})
}
export {
getMessage,
......@@ -357,5 +407,8 @@ export {
getLevelApplyInfo,
getStudentList,getApprovalRecord,submitVerity,
getCoachList,
updateLevelInfo,addLevelInfo
updateLevelInfo,addLevelInfo,
chooseStudentsList,batchChoose,getVerityList,
getGroupHistoryByRelateId,
createMyMember,doVerity
}
\ No newline at end of file
......
......@@ -5,6 +5,7 @@ page {
}
.esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
.flexbox{display: flex;}
.mt30{margin-top: 30rpx;}
.mt40{margin-top: 40rpx;}
.mt50{margin-top: 50rpx;}
.align-forms-item-placeHolder{color: #999;line-height: 2.6;}
......@@ -55,7 +56,11 @@ font-size: 24rpx;}
}
.btn-red-kx{background-color: #fff;
border: 1px solid #AD181F;
color: #AD181F;}
color: #AD181F;
}
.btn-red-kx.mini{font-size: 30rpx; line-height: 2;
border-radius: 30px;}
/* 底部固定按钮 */
.fixedBottom {background: #fff;height: 150rpx;
box-shadow: 0px -2rpx 10rpx 0px #e8e8e8; padding: 30rpx 0 0;
......@@ -325,3 +330,24 @@ color: #7D8592;}
display: block;
font-size: 14px;
}
.bgbg{padding:0 0 60rpx;
color: #fff;
background: #C40F18;
}
.girdBox{display: flex;flex-wrap: wrap;padding: 0 0 40rpx;
background: #FFFFFF;position: relative;top: -30rpx;
border-radius: 20rpx 20rpx 0rpx 0rpx;
view{width: 25%;text-align: center;
font-size: 24rpx;
color: #434343;
image{width: 20vw;height: 20vw;display: block;margin: auto;}
}
}
......
......@@ -3,7 +3,7 @@
// staging
const baseUrl_api = "http://192.168.1.96:8787";
const baseUrl_api = "http://192.168.1.97:8787";
const fileUrl_api = "http://192.168.1.11:8787";
export default {
......
......@@ -288,7 +288,7 @@
}
,{
"path" : "pages/group/applyList",
"path" : "pages/group/apply/applyList",
"style" :
{
"navigationBarTitleText": "团体会员审核",
......@@ -341,6 +341,24 @@
}
}
,{
"path" : "pages/group/apply/applyDetail",
"style" :
{
"navigationBarTitleText": "团体会员审核详情",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/group/apply/record",
"style" :
{
"navigationBarTitleText": "审核记录",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationStyle": "custom",
......
<template>
<view class="hasfixedbottom">
<view class="wBox">
<view class="tt">{{form.name}}</view>
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="n in list">
<view class="photobox">
<view class="colorful">{{n.perName?.slice(0,1)}}</view>
</view>
<view>
<view class="name">{{n.perName}}</view>
<view class="date">申请调入一级协会 {{n.sourceShenDeptName||'--'}}</view>
<view class="date">申请调入单位 {{n.targetDeptName||'--'}}</view>
</view>
</view>
</view>
</view>
<view class="h3-padding">审核流程</view>
<view class="wBox">
<view class="stepItem" v-for="(n,index) in auditLog">
<view class="time">{{n.auditTime||'待审批'}}</view>
<view class="content">
<view class="status">
<text v-if="n.auditResult==1" class="text-success">审核通过</text>
<text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
<text v-if="n.auditResult==0" class="text-primary"> 审核中</text>
</view>
<!-- <view class="name">{{index+1}}</view> -->
<view class="deptName">{{n.auditDeptName}}</view>
<view v-if="n.auditResult==2">
备注:{{n.auditMsg||'/' }}
</view>
</view>
</view>
</view>
<view class="fixedBottom" v-if="(deptType == 1)&&form.ztxRes == 0">
<button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
<button class="btn-red" @click="audit(form.id,'1')">同意</button>
</view>
<view class="fixedBottom" v-if="(deptType == 2 || deptType == 3)&&form.shenRes == 0">
<button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
<button class="btn-red" @click="audit(form.id,'1')">同意</button>
</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 app = getApp();
const queryParams = ref({})
const form = ref({})
const list = ref([])
const auditLog = ref([])
const feelList = ref([])
const total = ref(0)
const totalYear = ref(0)
const deptType = ref()
let rangeId = ''
onLoad((option) => {
rangeId = option.rangeId
if ('auditLog' in option) {
auditLog.value = JSON.parse(decodeURIComponent(option.auditLog))
}
if ('form' in option) {
form.value = JSON.parse(decodeURIComponent(option.form))
}
console.log(form.value)
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
deptType.value = app.globalData.deptType
getForm()
}
function getForm() {
uni.showLoading({
title: '加载中'
})
api.getTransferList({
rangeId: rangeId
}).then(res => {
uni.hideLoading()
list.value = res.rows
})
}
function audit(rangeId, flag) {
if (flag == '2') {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
} else {
doApproval(rangeId, flag, res.content)
}
}
}
})
} else if (flag == '1') {
// 二次确认
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
if (res.confirm) {
doApproval(rangeId, flag)
}
}
})
}
}
function doApproval(rangeId, flag, reason) {
var obj = {
flag: flag,
reason: reason || '',
rangeIds: rangeIds
}
console.log(obj)
api.mobilizeAudit(obj).then((res) => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
uni.navigateBack()
})
}
</script>
<style scoped lang="scss">
.wBox {
width: 700rpx;
padding: 30rpx;
margin: 20rpx auto 0;
background: #FFFFFF;
box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
border-radius: 15rpx;
.tt {
color: #0A1629;
font-size: 30rpx;
}
}
.userlist {
.item {
border-bottom: 1px dashed #e5e5e5;
position: relative;
.date {
margin-top: 10rpx;
}
.name {
text {
margin-left: 1em;
color: #4C5359;
font-size: 26rpx;
}
}
.nian {
position: absolute;
right: 0;
font-size: 30rpx;
color: #AD181F;
}
}
}
.info {
display: flex;
margin: 30rpx 0 20rpx;
font-size: 28rpx;
view {
color: #7D8592;
margin-right: 20rpx;
}
}
.fixedBottom {
justify-content: center;
button {
margin: 0 20rpx;
width: 286rpx;
}
.btn-red {
width: 286rpx;
}
}
</style>
\ No newline at end of file
......@@ -19,15 +19,19 @@
缴费单位
<view>{{ item.content.memberName }}</view>
</view>
<view>
会员合计
<view>{{item.content.allCount}}</view>
<view v-if="userType = '3'">
所属省份
<view>{{item.content.province}}</view>
</view>
<view>
新会员合计
年限
<view>{{item.content.renewYear}}</view>
</view>
<view>
<view v-if="deptType == 1">
团体会员/新会员
<view>{{item.content.allCount}}/{{item.content.newCount}}</view>
</view>
<view v-if="deptType == 1">
费用合计
<view> {{ (item?.content?.allFee*1).toFixed(2) }}</view>
</view>
......@@ -71,7 +75,8 @@
const current = ref()
const list = ref([])
const total = ref(0)
const deptType = ref('')
const deptType = ref('')
const userType = ref('')
onLoad(() => {
if (app.globalData.isLogin) {
init()
......@@ -84,7 +89,8 @@
})
function init() {
deptType.value = app.globalData.deptType
deptType.value = app.globalData.deptType
userType.value = app.globalData.userType
getList()
}
......@@ -171,11 +177,22 @@
function goDetail(item) {
const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
const form = encodeURIComponent(JSON.stringify(item))
let path = `/pages/personalVip/mobilizeDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}`
uni.navigateTo({
url: path
});
if(userType.value=='1'){
// 查看
let path = `/pages/group/apply/applyDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}`
uni.navigateTo({
url: path
});
} else if(userType.value=='3'){
// 审核记录
let path = `/pages/group/apply/record?certId=${item.content.certId}`
uni.navigateTo({
url: path
});
}
}
</script>
......
<template>
<view class="hasfixedbottom">
<view class="h3-padding">审核记录</view>
<view class="wBox">
<view class="stepItem" v-for="(n,index) in list">
<view class="time">{{n.handleDate||'待审批'}}</view>
<view class="content">
<view class="status">
<text v-if="n.auditStatus==0" class="text-primary">审核中</text>
<text v-if="n.auditStatus==1" class="text-success">审核通过</text>
<text v-if="n.auditStatus==2" class="text-danger">审核拒绝</text>
<text v-if="n.auditStatus==3" class="text-warning">已撤回</text>
<text v-if="n.auditStatus==100" class="text-primary">审核中</text>
</view>
<!-- <view class="name">{{index+1}}</view> -->
<view class="deptName">{{n.handlerDeptName}}</view>
<view v-if="n.reason">
备注:{{n.reason}}
</view>
</view>
</view>
</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 app = getApp();
const list = ref([])
const total = ref(0)
const deptType = ref()
let certId = ''
onLoad((option) => {
certId = option.certId
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
deptType.value = app.globalData.deptType
getList()
}
function getList() {
uni.showLoading({
title: '加载中'
})
api.getGroupHistoryByRelateId(certId).then(res => {
uni.hideLoading()
list.value = res.data
})
}
</script>
<style scoped lang="scss">
.wBox {
width: 700rpx;
padding: 30rpx;
margin: 20rpx auto 0;
background: #FFFFFF;
box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
border-radius: 15rpx;
.tt {
color: #0A1629;
font-size: 30rpx;
}
}
.userlist {
.item {
border-bottom: 1px dashed #e5e5e5;
position: relative;
.date {
margin-top: 10rpx;
}
.name {
text {
margin-left: 1em;
color: #4C5359;
font-size: 26rpx;
}
}
.nian {
position: absolute;
right: 0;
font-size: 30rpx;
color: #AD181F;
}
}
}
.info {
display: flex;
margin: 30rpx 0 20rpx;
font-size: 28rpx;
view {
color: #7D8592;
margin-right: 20rpx;
}
}
.fixedBottom {
justify-content: center;
button {
margin: 0 20rpx;
width: 286rpx;
}
.btn-red {
width: 286rpx;
}
}
</style>
\ No newline at end of file
<template>
<view class="page">
<view>
<view class="welcome">您好!<br />欢迎使用中跆协会员管理系统</view>
<view class="bgbg">
<view class="welcome">您好!
<!-- {{memberInfo.name}} -->
<br />欢迎使用中跆协会员管理系统</view>
<view class="flexbox">
<!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
<!-- 4 -->
......@@ -9,24 +11,35 @@
<view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">会员缴费</view>
<view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">会员缴费单</view>
<!-- 3 2 1-->
<view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view>
<view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view>
<!-- 都有 -->
<view @click="goPath('/pages/personalVip/list')">会员查询</view>
</view>
</view>
<view>
<view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
会员调动
</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/list')">团体会员查询</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/applyList')">团体会员审核</view>
<view v-if="userType=='2'" @click="goPath('/pages/group/pay')">团体会员认证</view>
<view v-if="userType=='4'" @click="goPath('/pages/level/apply')">级位考试申请</view>
<view v-if="userType!='4'" @click="goPath('/pages/level/approval')">级位考试审核</view>
<view class="girdBox">
<view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
<image />
会员调动
</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/list')">
<image />团体会员查询
</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
<image />团体会员审核
</view>
<view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
<image />团体会员认证
</view>
<view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
<image />级位考试申请
</view>
<view v-if="userType!='4'" @click="goPath('/pages/level/approval')">
<image />级位考试审核
</view>
</view>
<uni-section title="待办提醒" padding>
<template v-slot:right>
......@@ -37,10 +50,10 @@
<text class="dot" :class="n.readFlag=='1'?'done':''"></text>
<view class="tt esp">{{n.name}}</view>
<view class="date">{{n.createTime}}</view>
</view>
<view class="nodata" v-if="messageList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<view class="nodata" v-if="messageList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</uni-section>
......@@ -67,46 +80,27 @@
} = getCurrentInstance()
const app = getApp();
const userType = ref('1')
const memberInfo = ref({})
let proId;
const svId = ref(null);
const list = ref([
{
url: '',
text: '段位考试申请'
},
{
url: '',
text: '段位考试审核'
},
{
url: '',
text: '级位证书发送'
},
{
url: '',
text: '段位证书发送'
}
]);
const messageList = ref([])
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
onLoad(option => {
if (option.scene) {
proId = decodeURIComponent(option.scene);
} else {
proId = option.proId;
}
});
function goPath(path) {
......@@ -144,78 +138,83 @@
});
}
function init() {
uni.showLoading({
title: '加载中'
function init() {
uni.showLoading({
title: '加载中'
});
loginServer.getMyOwnMemberInfo().then(res=>{
userType.value = app.globalData.userType
if (userType.value!='1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != '4'){
// 注册引导
uni.navigateTo({
url: '/pages/index/perfect'
});
} else {
getMes()
}
uni.hideLoading();
})
// loginServer.getMyOwnMemberInfo().then(res=>{
userType.value = app.globalData.userType
memberInfo.value = app.globalData.memberInfo
console.log(userType.value,app.globalData.authenticationStatus)
if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus !=
'4') {
// 注册引导
// uni.navigateTo({
// url: '/pages/index/perfect'
// });
} else {
getMes()
}
uni.hideLoading();
// })
}
function getMes(){
api.getMessage({
pageNum: 1,
pageSize: 10
}).then(res => {
if (res.rows && res.rows.length > 0)
for (var d of res.rows) {
switch (d.type) {
case 30001:
d.name = '你有一条会员缴费等待审批,点击去处理!'
d.path = '/personalVip/audit'
break
case 30002:
d.name = '你有一条级位考试等待审批,点击去处理!'
d.path = '/level/approval'
break
case 30003:
d.name = '你有一条段位考试等待审批,点击去处理!'
d.path = '/rank/approval'
break
case 30004:
d.name = '你有一条会员调动等待审批,点击去处理!'
d.path = '/personalVip/mobillize'
break
case 30005:
d.name = '你有一条团体会员认证等待审批,点击去处理!'
d.path = '/group/authentication'
break
case 30006:
d.name = '你有一条段位成绩等待审批,点击去处理!'
d.path = '/rank/scoreApproval'
break
case 40001:
d.name = '你有一条级位申请待提交,点击去处理!'
d.path = `/level/apply/modify?id=${d.eventId}`
break
case 40002:
d.name = '你有一条段位申请待提交,点击去处理!'
d.path = `/rank/apply/modify?id=${d.eventId}`
break
case 40003:
d.name = '你有一条成绩维护的数据待提交,点击去处理!'
d.path = `/rank/score/modify?id=${d.eventId}`
break
case 50001:
d.name = '你有一条新的个人会员申请,点击去处理!'
d.path = '/personalVip/approvalList'
break
}
}
messageList.value = res.rows
})
}
function getMes() {
api.getMessage({
pageNum: 1,
pageSize: 10
}).then(res => {
if (res.rows && res.rows.length > 0)
for (var d of res.rows) {
switch (d.type) {
case 30001:
d.name = '你有一条会员缴费等待审批,点击去处理!'
d.path = '/pages/personalVip/audit'
break
case 30002:
d.name = '你有一条级位考试等待审批,点击去处理!'
d.path = '/pages/level/approval'
break
case 30003:
d.name = '你有一条段位考试等待审批,点击去处理!'
d.path = '/pages/rank/approval'
break
case 30004:
d.name = '你有一条会员调动等待审批,点击去处理!'
d.path = '/pages/personalVip/mobillize'
break
case 30005:
d.name = '你有一条团体会员认证等待审批,点击去处理!'
d.path = '/pages/group/authentication'
break
case 30006:
d.name = '你有一条段位成绩等待审批,点击去处理!'
d.path = '/pages/rank/scoreApproval'
break
case 40001:
d.name = '你有一条级位申请待提交,点击去处理!'
d.path = `/pages/level/apply/modify?id=${d.eventId}`
break
case 40002:
d.name = '你有一条段位申请待提交,点击去处理!'
d.path = `/pages/rank/apply/modify?id=${d.eventId}`
break
case 40003:
d.name = '你有一条成绩维护的数据待提交,点击去处理!'
d.path = `/pages/rank/score/modify?id=${d.eventId}`
break
case 50001:
d.name = '你有一条新的个人会员申请,点击去处理!'
d.path = '/pages/personalVip/approvalList'
break
}
}
messageList.value = res.rows
})
}
function readMessage(item) {
uni.navigateTo({
url: item.path
......
<template>
<view>
<view class="pd30">
<uni-steps :options="list1" :active="active" />
<view>
<uni-forms ref="baseForm" :modelValue="baseFormData" label-width="100">
<uni-forms-item label="所属协会" required><uni-easyinput v-model="baseFormData.name"
:disabled="!editIng" placeholder="所属协会" /></uni-forms-item>
<uni-forms-item label="机构名称" required><uni-easyinput v-model="baseFormData.name"
:disabled="!editIng" placeholder="机构名称" /></uni-forms-item>
<uni-forms-item label="单位类型" required>
<uni-data-select :disabled="!editIng" v-model="baseFormData.type"
:localdata="typeList"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="联系人" required>
<uni-easyinput v-model="baseFormData.contactPerson" :disabled="!editIng"
placeholder="请输入联系人姓名" />
</uni-forms-item>
<uni-forms-item label="联系方式" required>
<uni-easyinput v-model="baseFormData.contactTelno" :disabled="!editIng" placeholder="请输入联系方式" />
<view class="pd30" style="padding: 30rpx 30rpx 180rpx;">
<uni-steps :options="list1" :active="active" />
<view class="wBox" v-if="active == 0">
<uni-forms ref="baseForm" :modelValue="form" label-width="100">
<uni-forms-item label="单位名称" required>
<uni-easyinput v-model="form.baseName" :disabled="!editIng"
placeholder="单位名称" /></uni-forms-item>
<uni-forms-item label="单位类型" required>
<uni-data-select :disabled="!editIng" v-model="form.type"
:localdata="typeList"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="联系人" required>
<uni-easyinput v-model="form.contact" :disabled="!editIng" placeholder="请输入联系人姓名" />
</uni-forms-item>
<uni-forms-item label="联系方式" required>
<uni-easyinput v-model="form.phone" :disabled="!editIng" placeholder="请输入联系方式" />
</uni-forms-item>
<uni-forms-item label="所属省份" required>
<uni-data-select v-if="editIng" v-model="form.belongProvinceId"
:localdata="options"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="地址" required>
<uni-data-select v-if="editIng" v-model="form.coordinates1"
:localdata="options"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="详细地址" required><uni-easyinput v-model="form.siteAddress" :disabled="!editIng"
placeholder="请输入详细地址" type='textarea' /></uni-forms-item>
<uni-forms-item label="机构介绍" required><uni-easyinput v-model="form.introduce" placeholder="请输入机构介绍"
:disabled="!editIng" type='textarea' /></uni-forms-item>
</uni-forms>
<view class="fixedBottom">
<button class="btn-red" @click="submit()">提交,下一步</button>
</view>
</view>
<view class="wBox" v-if="active == 1">
<view>
<view>认证状态:
<text v-if="authenticationStatusa == 0 ||!authenticationStatusa" class="text-danger">未认证</text>
<text v-if="authenticationStatusa == 1" class="text-success">认证中</text>
<text v-if="authenticationStatusa == 2" class="text-success">已认证</text>
<text v-if="authenticationStatusa == 3" class="text-danger">认证未通过</text>
<text v-if="authenticationStatusa == 4" class="text-danger">即将过期</text>
<text v-if="authenticationStatusa == 5" class="text-danger">已过期</text>
</view>
<view>
<button v-if="authenticationStatusa==2" type="primary" :disabled="!result"
@click="audioFN1">去缴费</button>
<button v-if="authenticationStatusa!=2" type="primary" :disabled="!result"
@click="audioFN2">去认证</button>
<button v-if="form.deptType!=2" type="primary" @click="auditEditFN">审核详情</button>
</view>
</view>
<uni-forms>
<uni-forms-item label="选择所属协会" required>
<uni-data-select :disabled="!editIng" v-model="form.parentId"
:localdata="typeList" @change="changCase"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="所在地区" required>
<uni-data-picker v-if="editIng" class="fixUniFormItemStyle" :clear-icon="!editIng"
v-model="regionArr" @change="onchangeRegionId" :localdata="regionsList"
popup-title="请选择所在地区"></uni-data-picker>
<uni-easyinput v-model="baseFormData.regionStr" v-else disabled />
<uni-forms-item label="机构名称" required>
<uni-easyinput v-model="form.name" :disabled="!editIng" placeholder="请输入机构名称" />
</uni-forms-item>
<uni-forms-item label="详细地址" required><uni-easyinput v-model="baseFormData.address"
:disabled="!editIng" placeholder="请输入详细地址" /></uni-forms-item>
</uni-forms>
<view class="fixedBottom">
<button class="btn-red" @click="saveMyteam()">下一步</button>
</view>
</uni-forms>
</view>
</view>
</view>
......@@ -48,18 +81,26 @@
onLoad,
onShow
} from '@dcloudio/uni-app';
import {
tagList,
typeList,
comList
} from '@/static/js/data';
import config from '@/config.js'
const app = getApp();
const baseFormData = ref({
const form = ref({
type: '1'
});
const dataList = ref([]);
const memberList = ref([]);
const typeList = ref([{
value: '1',
text: '企业'
}, {
value: '1',
text: '国家组织'
}, {
value: '1',
text: '社会组织'
}, {
value: '1',
text: '其他'
}])
const options = ref([])
const regionArr = ref();
const regionsList = ref([]);
const ranksList = ref([]);
......@@ -74,184 +115,129 @@
type: 0
});
const active = ref(0)
const memberInfo = ref({})
const authenticationStatus = ref()
const list1 = ref([{
title: '完善信息'
}, {
title: '会员认证'
}])
title: '完善信息'
}, {
title: '会员认证'
}])
onLoad(option => {
console.log(option)
getRegionsList();
getDetail()
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
});
function getDetail(){
api.getMyOwnMemberInfo().then(res=>{
if (!res.data.memberInfo) res.data.memberInfo = {}
baseFormData.value = res.data.memberInfo
baseFormData.value.coordinates1 = []
authenticationStatusa.value = res.data.authenticationStatus
if (baseFormData.value.siteProvinceId)baseFormData.value.coordinates1.push(baseFormData.value.siteProvinceId)
if (baseFormData.value.siteCityId) baseFormData.value.coordinates1.push(baseFormData.value.siteCityId)
if (baseFormData.value.siteRegionId) baseFormData.value.coordinates1.push(baseFormData.value.siteRegionId)
})
function init() {
getDetail()
getRegionsList()
}
function getDetail() {
api.getMyOwnMemberInfo().then(res => {
if (res.data.memberInfo) {
form.value = res.data.memberInfo
}
form.value.coordinates1 = []
authenticationStatus.value = res.data.authenticationStatus
if (form.value.siteProvinceId) {
form.value.coordinates1.push(form.value.siteProvinceId)
}
if (form.value.siteCityId) {
form.value.coordinates1.push(form.value.siteCityId)
}
if (form.value.siteRegionId) {
form.value.coordinates1.push(form.value.siteRegionId)
}
})
}
function getRegionsList() {
api.regionsList().then(res => {
regionsList.value = res.data;
options.value = res.data;
});
}
function onchangeRegionId(e) {
console.log(e.detail.value)
baseFormData.value.regionId = regionArr.value
}
function saveMyteam() {
function submit() {
// 验证必填项
if (baseFormData.value.imgUrl == '') {
uni.showToast({
title: '请上传logo',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.name == '') {
if (form.value.baseName == '') {
uni.showToast({
title: '请填写团体名称',
title: '请填写单位名称',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.abreviations == '') {
if (form.value.contact == '') {
uni.showToast({
title: '请填写简称',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.type == '') {
uni.showToast({
title: '请选择参赛队类型',
title: '请填写联系人',
duration: 2000,
icon: 'none'
})
return
}
// if(baseFormData.value.type=='3'&&!baseFormData.value.ctype){
// uni.showToast({
// title: '请选择企业性质',
// duration: 2000,
// icon:'none'
// })
// return
// }
if (baseFormData.value.contactPerson == '') {
if (form.value.phone == '') {
uni.showToast({
title: '请填写联系',
title: '请填写联系电话',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.contactTelno == '') {
if (form.value.belongProvinceId == '') {
uni.showToast({
title: '请填写联系方式',
title: '请选择所属省份',
duration: 2000,
icon: 'none'
})
return
}
var pattern = /^1[3456789]\d{9}$/;
if (!pattern.test(baseFormData.value.contactTelno)) {
if (form.value.siteAddress == '') {
uni.showToast({
title: '请输入正确的手机号',
title: '请填写详细地址',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.regionId == '') {
if (form.value.coordinates1 == '') {
uni.showToast({
title: '选择所在地',
title: '选择所在地',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.address == '') {
if (form.value.introduce == '') {
uni.showToast({
title: '请填写详细地址',
title: '请填写机构介绍',
duration: 2000,
icon: 'none'
})
return
}
for (let n in participantsInfoArr.value) {
if (participantsInfoArr.value[n].status == 0 && (!participantsInfoArr.value[n].value)) {
uni.showToast({
title: '请完善必填字段',
duration: 2000,
icon: 'none'
})
return
}
}
match.saveMyGroup(baseFormData.value).then(res => {
groupId.value = res.data
if (participantsInfoArr.value && participantsInfoArr.value.length > 0) {
// 保存补充信息
const obj = {
cptId: cptId.value,
groupId: groupId.value,
groupInfo: JSON.stringify(participantsInfoArr.value)
}
match.saveMyGroupExtraInfo(obj).then(res => {
})
}
if (!signType.value) {
uni.showToast({
title: '保存成功',
icon: 'none',
duration: 2000
});
editIng.value = false;
} else if (signType.value == 1) {
// 团队
if (coachOrLeaderFlag.value == "1") {
uni.navigateTo({
url: `/pages_match/match/choose_coach?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}`
});
} else {
// 选运动员
uni.navigateTo({
url: `/pages_match/match/choose_sportman?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}`
});
}
} else if (signType.value == 2) {
// 队伍
uni.navigateTo({
url: `/pages_match/match/add_rank?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}`
});
api.createMyMember(form.value).then(res => {
if (res.data.token) {
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}
});
active.value = 1
})
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.wBox {
width: 700rpx;
padding: 30rpx;
margin: 20rpx auto 0;
background: #FFFFFF;
box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
border-radius: 15rpx;
}
</style>
\ No newline at end of file
......
......@@ -6,7 +6,7 @@
<view class="wBox" v-if="active == 0">
<uni-forms ref="baseForm" :modelValue="form" label-width="100">
<uni-forms-item label="考试名称">
<view v-if="form.name">{{form.name}}</view>
<view class="align-forms-item" v-if="form.name">{{form.name}}</view>
<view v-else class="align-forms-item-placeHolder">自动生成</view>
</uni-forms-item>
<uni-forms-item label="申请单位" required>
......@@ -24,7 +24,8 @@
<uni-forms-item label="考级地点" required>
<uni-easyinput v-model="form.examLocation" placeholder="考级地点" />
</uni-forms-item>
<uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose" :key="ec">
<uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose"
:key="ec">
<view @click="selectFN(ec)" class="mask">
<uni-easyinput v-model="form[`examiner_${ec}`]" clearable placeholder="点击选择考官" />
</view>
......@@ -33,55 +34,97 @@
</uni-forms>
</view>
<view class="wBox" v-if="active == 1">
<!-- 添加考生 -->
<button class="btn-red-kx">在线选择</button>
<view class="vipData">
<view><text>{{total}}</text></view>
</view>
<view class="userlist">
<view class="item" v-for="n in list" style="background-color: #fffafa;">
<view class="wBox" v-if="active == 1">
<!-- 添加考生 -->
<button class="btn-red-kx mini" @click="chooseOnline">在线选择</button>
<view class="vipData mt30">
<view><text>{{tablePersonInfo.total}}</text></view>
<view v-for="l in tablePersonInfo.levelArr" :key="l.level">
{{ szToHz(l.level) }}级:<text>{{tablePersonInfo.total}}</text></view>
</view>
<view class="userlist">
<view class="item" v-for="n in infoList" style="background-color: #fffafa;">
<view class="w100">
<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 style="display: flex;">
<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.realName?.slice(0,1)}}</view>
</view>
<view class="name">{{n.realName}} <text>{{n.code}}</text></view>
<view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view>
<view class="flexbox">
<view>
原有级别
<text>{{n}}</text>
</view>
<view>
<view>
<view class="name">{{n.realName}} <text>{{n.perCode}}</text></view>
<view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view>
</view>
</view>
<view class="flexbox mt30">
<view>
原有级别
<text style="padding: 15rpx 0;">{{ szToHz(n.levelOld) }}</text>
</view>
<view style="width: 40%;">
考试级别
<uni-data-select
v-model="value"
:localdata="range"
@change="change"
></uni-data-select>
</view>
<view>
<view @click="changeLevelfather(n)">
<uni-data-select v-model="n.levelNew" :localdata="levelArr"
@change="changeLevel"></uni-data-select>
</view>
</view>
<view style="width: 30%;">
是否通过
<uni-data-select
v-model="value"
:localdata="range"
@change="change"
></uni-data-select>
</view>
</view>
</view>
<view>
<uni-data-select v-model="n.isPass" :localdata="range"
></uni-data-select>
</view>
</view>
</view>
</view>
</view>
<view class="nodata" v-if="infoList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>待添加考生</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="fixedBottom">
<view class="fixedBottom" v-if="active == 0">
<button class="btn-red-kx" style="width: 40%;" @click="submitForm(0)">保存</button>
<button class="btn-red" style="width: 40%;" @click="submitForm(1)">下一步</button>
</view>
<view class="fixedBottom" v-if="active == 1">
<button class="btn-red-kx" style="width: 25%;" @click="active=0">上一步</button>
<button class="btn-red" style="width: 25%;" @click="submitForm2(0)">保存</button>
<button class="btn-red" style="width: 30%;" @click="submitForm2(1)">提交审核</button>
</view>
<uni-popup ref="choseStudent" type="bottom" background-color="#fff" animation>
<view class="popBody">
<view class="userlist">
<view class="item" v-for=" n in studentList">
<view @click="checkThis(n)">
<image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" />
<image class="icon" v-else src="@/static/member/dx.png" />
</view>
<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>
<view class="name">{{n.name}} <text>{{n.perCode}}</text></view>
<view class="date">到期时间:{{n.validityDate}}</view>
<view class="date" style="color: #1561CB;" v-if="n.levelJi&&n.levelJi!=0">级位:{{szToHz(n.levelJi)}}</view>
<view class="date" v-else >级位:十级</view>
</view>
</view>
<button class="btn-red-kx" @click="submitStudents">确定</button>
</view>
</view>
</uni-popup>
</view>
</template>
......@@ -94,11 +137,6 @@
onLoad,
onShow
} from '@dcloudio/uni-app';
import {
tagList,
typeList,
comList
} from '@/static/js/data';
import config from '@/config.js'
import dayjs from 'dayjs'
import _ from 'lodash'
......@@ -110,13 +148,21 @@
const dataList = ref([]);
const examinerForChoose = ['A', 'B', 'C']
const examinerArr = []
const active = ref(0)
const active = ref(0)
const total = ref(0)
const list1 = ref([{
title: '考级基本信息'
}, {
title: '添加考生'
}])
const choseStudent = ref(null)
const studentList = ref([])
const infoList = ref([])
const ids = ref([])
const tablePersonInfo = ref({})
const transcript = ref([])
const levelArr = ref([{value:'10',text:'十级'},{value:'9',text:'九级'},{value:'8',text:'八级'},{value:'7',text:'七级'},{value:'6',text:'六级'},{value:'5',text:'五级'},{value:'4',text:'四级'},{value:'3',text:'三级'},{value:'2',text:'二级'},{value:'1',text:'一级'}])
const range = ref([{value:'1',text:'是'},{value:'0',text:'否'}])
let examId
onLoad(option => {
console.log(option)
......@@ -155,7 +201,7 @@
uni.$on('chosen', updateData)
})
function updateData(e) {
function updateData(e) {
// console.log(e)
examinerArr.push(e.obj)
form.value[`examiner_${e.ec}`] = e.obj.name
......@@ -253,30 +299,204 @@
return
}
save().then(() => {
// form.value.examId 下一步
active.value == 1
// form.value.examId 下一步
active.value = 1
getChosedStudentList()
})
}
}
function save() {
if (form.value.examId) {
return updateLevelInfo(form.value).then(() => {
}
function save() {
if (form.value.examId) {
return api.updateLevelInfo(form.value).then(() => {
uni.showToast({
title: `保存成功`,
icon: 'none'
})
})
} else {
return api.addLevelInfo(form.value).then((res) => {
form.value.examId = res.data.examId
form.value.name = res.data.name
uni.showToast({
title: `保存成功`,
icon: 'none'
})
})
}
}
function chooseOnline() {
var obj = {
memId: memberInfo.memId,
examId: form.value.examId,
examType: form.value.type
}
api.chooseStudentsList(obj).then(response => {
studentList.value = response.rows
for (var s of studentList.value) {
s.checked = false
}
choseStudent.value.open()
})
}
function checkThis(item) {
if (item.checked) {
item.checked = false
} else {
item.checked = true
}
}
function submitStudents() {
ids.value = []
for (var s of studentList.value) {
if (s.checked) {
ids.value.push(s.perId)
}
}
if (ids.value.length == 0) {
uni.showToast({
title: `保存成功`,
title: '请选择考生',
icon: 'none'
})
})
} else {
return addInfo(form.value).then((res) => {
form.value.examId = res.data.examId
form.value.name = res.data.name
uni.showToast({
title: `保存成功`,
icon: 'none'
})
})
}
return
}
api.batchChoose({
examId: form.value.examId,
perIds: ids.value
}).then(() => {
getChosedStudentList()
choseStudent.value.close()
})
}
function getChosedStudentList() {
var obj = {
examId: form.value.examId
}
api.getStudentList(obj).then(res => {
_.each(res.rows, (d) => {
if (d.levelOld) {
d.levelRecommend = (parseInt(d.levelOld) - 1) + ''
if (d.levelRecommend === '0') {
d.levelRecommend = '1'
}
} else {
d.levelRecommend = '9'
}
if (!d.levelNew) {
d.levelNew = d.levelRecommend
}
if (!d.isPass) {
d.isPass = '1'
}
})
infoList.value = res.rows
}).then(getTablePersonInfo)
}
function getTablePersonInfo() {
const total = infoList.value.length
const levelArr = []
_.each(infoList.value, (d) => {
const temp = _.find(levelArr, (l) => {
return l.level == d.levelNew
})
if (temp) {
temp.num++
} else {
levelArr.push({
level: d.levelNew,
num: 1
})
}
})
tablePersonInfo.value = {
total: total,
levelArr: _.sortBy(levelArr, (l) => {
return l.level
})
}
}
function szToHz(num) {
const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
return hzArr[parseInt(num)]
}
let nowRow
function changeLevelfather(row){
nowRow = row
}
function changeLevel(e){
console.log(e)
if (e !== nowRow.levelRecommend) {
uni.showModal({
title: '提示',
content: `建议考试级别为 "${szToHz(nowRow.levelRecommend)}级" ,确定要修改吗?`,
success: function(res) {
if (res.confirm) {
getTablePersonInfo()
}
},
fail: function (res) {
nowRow.levelNew = nowRow.levelRecommend
}
})
}
}
function submitForm2(flag){
if (flag === 1) {
if (infoList.value.length == 0) {
uni.showToast({
title: '请选择考生',
icon: 'none'
})
return
}
if (!form.value.transcript) {
uni.showToast({
title: '请上传成绩单',
icon: 'none'
})
return
}
uni.showModal({
title: '提示',
content: `确定提交审核?`,
success: function(res) {
saveStep2(flag)
}
})
} else {
saveStep2(flag)
}
}
function saveStep2(flag){
const data = _.map(infoList.value, (d) => {
return {
id: d.id,
levelNew: d.levelNew,
// score: d.score,
isPass: d.isPass
}
})
return api.editLevel({
examId: form.value.examId,
personInfo: JSON.stringify(data),
transcript: form.value.transcript,
status: flag
})
}
</script>
<style lang="scss" scoped>
......@@ -291,13 +511,6 @@
:deep(.uni-forms-item__inner) {
padding-bottom: 20rpx;
}
:deep(.uni-forms-item__label .label-text) {
font-size: 28rpx !important;
}
:deep(.uni-input-input) {
font-size: 30rpx !important;
}
}
.popBody{padding: 30rpx;}
</style>
\ No newline at end of file
......
......@@ -10,6 +10,7 @@
<view class="appItem" v-for="item in list">
<view class="status" @click="goDetail(item)">
<text :class="{
'text-primary':item.status=='1',
'text-success':item.status=='2',
'text-danger':item.status=='3',
'text-warning':item.status=='4'
......
<template>
<view>
<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control>
<view class="appList">
<view class="appItem" v-for="item in infoList">
<view class="status" @click="goDetail(item)">
<text :class="{
'text-primary':item.auditStatus=='0',
'text-success':item.auditStatus=='1',
'text-danger':item.auditStatus=='2',
'text-warning':item.auditStatus=='3'
}">{{ item.statusStr }}</text>
</view>
<view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
<view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
<view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
<view class="flexbox" @click="goDetail(item)">
<view>
申请日期
<view>{{item.applyTime.substring(0, 10)}}</view>
</view>
<view>
申请单位
<view>{{item.memberName}}</view>
</view>
<view>
通过人数
<view>{{item.pass}}</view>
</view>
</view>
<view class="func" v-if="item.auditStatus=='0'">
<button @click="audit(item,'2')">拒绝</button>
<button @click="audit(item,'1')">同意</button>
</view>
</view>
</view>
<view class="nodata" v-if="infoList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
</script>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'lodash'
import {
onMounted,
ref
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
const app = getApp();
const queryParams = ref({
// pageNum: 1,
// pageSize: 10
status: '0',
type: '1'
})
const navs = ref(['审核中', '审核通过', '审核拒绝'])
const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
const current = ref()
const infoList = ref([])
const total = ref(0)
const deptType = ref('')
onLoad(() => {
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
uni.showLoading({
title: '加载中'
})
deptType.value = app.globalData.deptType
getList()
}
function getList() {
api.getVerityList(queryParams.value).then(res => {
uni.hideLoading()
const list = []
_.each(res.rows, r => {
const item = JSON.parse(r.content)
item.recordId = r.recordId
item.auditStatus = r.auditStatus
item.submitStatus = r.submitStatus
item.distributeTime = r.distributeTime
item.statusStr = statusArr[r.auditStatus]
item.remark = r.remark
item.isView = r.isView
item.sourceData = r
item.auditProcess = r.auditProcess
list.push(item)
})
infoList.value = list
total.value = res.total
})
}
function onClickItem(e) {
console.log(e)
uni.showLoading({
title: '加载中'
})
queryParams.value.status = e.currentIndex
getList()
}
function goDetail(item) {
if(item.status!='0'){
let path = `/pages/level/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
} else {
return
}
}
function audit(item, flag) {
console.log(item.sourceData)
var obj = {
flag: flag,
reason: null,
body: [JSON.stringify(item.sourceData)]
}
if (flag == '2') {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
} else {
obj.reason = res.content
doApproval(obj)
}
}
}
})
} else if (flag == '1') {
// 二次确认
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
if (res.confirm) {
doApproval(obj)
}
}
})
}
}
function doApproval(obj) {
console.log(obj)
api.doVerity(obj).then((res) => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
</script>
<style lang="scss">
<style scoped>
.searchbar {
display: flex;
align-items: center;
padding: 25rpx;
box-sizing: border-box;
:deep(.uni-easyinput .uni-easyinput__content) {
border-radius: 35rpx;
border: none;
height: 70rpx;
}
:deep(.uni-easyinput__content-input) {
font-size: 26rpx;
}
.invertedbtn-red {
border-radius: 50px;
background-color: #fff;
font-size: 30rpx;
padding: 10rpx 20rpx;
}
}
.mt0 {
margin-top: 0 !important;
}
.appList .appItem .name {
width: 80%;
word-break: break-all;
}
</style>
......
......@@ -9,7 +9,7 @@
<view class="userlist">
<view class="item" v-for="n in list">
<view class="photobox">
<image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
<image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
<view class="colorful" v-else>{{n.name.slice(1,2)}}</view>
</view>
<view>
......
......@@ -10,7 +10,7 @@
<view class="userlist">
<view class="item" v-for="n in list">
<view class="photobox">
<image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
<image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
<view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view>
</view>
<view>
......
......@@ -12,7 +12,7 @@
<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>
<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>
......
......@@ -9,7 +9,7 @@
<view class="userlist">
<view class="item" v-for="n in list">
<view class="photobox">
<image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
<image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
<view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view>
</view>
<view>
......
......@@ -15,7 +15,7 @@
<image class="icon" v-else src="@/static/member/dx.png" />
</view>
<view class="photobox">
<image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
<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 @click="handleInfo(n)">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!