9a662d55 by 杨炀

fixed: 36版本

1.小程序登录的时候如果手机号或者账号错误的时候,没提示
2.小程序在个人中心编辑的时候,不能保存
1 parent d3376bed
......@@ -10,7 +10,15 @@ export function active(data) {
method: 'post',
params: data
})
}
export function commitPaymentVoucherYJ(data) {
return request({
url: '/person/paymentDocYj/commitPaymentVoucher',
method: 'post',
params: data
})
}
export function editMyMemberCertifiedInfo(data) {
return request({
url: '/system/dept/editMyMemberCertifiedInfo',
......
......@@ -70,7 +70,11 @@ function loginByPhone(phonenumber, code) {
url: '/userLoginByPhone',
method: 'post',
params: data
}).then((res) => {
}).then((res) => {
uni.showToast({
title: res.msg,
icon: 'none'
})
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
}
......
<template>
<view>
<view class="text-center whitebg" v-if="userType=='2'">
<view class="cardNav">
<view class="active">审核</view>
<view @click="goMerge">合并</view>
<view @click="goMergeUp">提交</view>
</view>
</view>
<!-- 团队会员审核 -->
<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control>
<view class="appList">
<view class="vipData" v-if="userType == '1'" v-show="totalCost>0">
<view>费用合计:
<text>¥{{ totalCost.toFixed(2) }}</text>
</view>
</view>
<view>
<view class="text-center whitebg" v-if="userType=='2'">
<view class="cardNav">
<view class="active">审核</view>
<view @click="goMerge">合并</view>
<view @click="goMergeUp">提交</view>
</view>
</view>
<!-- 团队会员审核 -->
<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control>
<view class="appList">
<view class="vipData" v-if="userType == '1'" v-show="totalCost>0">
<view>费用合计:
<text>¥{{ totalCost.toFixed(2) }}</text>
</view>
</view>
<view class="appItem" v-for="(item,index) in list" :key="index">
<view class="status" @click="goDetail(item)">
<text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
<text v-if="item.auditStatus == 1" class="text-success">审核通过</text>
<text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text>
<text v-if="item.auditStatus == 3" class="text-warning">审核撤回</text>
</view>
<view class="date">
<uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
{{item.content.commitTime}} 提交</view>
<view class="text-primary" @click="goDetail(item)" v-if="item.content?.wfCode">{{item.content?.wfCode}}</view>
<view class="name w100 mt0" @click="goDetail(item)">
<!-- <text class="dot"></text> -->
{{item.content.certName}}</view>
<view class="flexbox" @click="goDetail(item)">
<view v-if="userType == '3'">
所属省份
<view>{{item.content.province}}</view>
</view>
<view v-if="userType == '2'">
所属一级
<view>{{item.content.firstDeptName}}</view>
</view>
<view v-if="userType == '2'">
所属二级
<view>{{item.content.secondDeptName}}</view>
</view>
<view>
年限
<view>{{item.content.renewYear}}</view>
</view>
<view v-if="deptType == 1">
会员/新会员
<view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text>
</view>
</view>
<view v-if="deptType == 1">
费用合计
<view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view>
</view>
</view>
<view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
<button @click="audit(item.recordId,'0')">拒绝</button>
<button @click="audit(item.recordId,'1')">同意</button>
</view>
<!-- 中跆协 -->
<view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
<button @click="sendBack(item)">撤回</button>
</view>
<!-- 市 -->
<view class="func" v-if="userType == '3'">
<button @click="goGroupInfo(item)">机构资料</button>
<button v-if="item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0" @click="sendBack(item)">撤回</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
</view>
<!-- 省 -->
<view class="func" v-if="userType == '2'">
<button @click="goGroupInfo(item)">机构资料</button>
<button v-if="item.auditStatus == 1" @click="sendBack(item)">撤回</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
</view>
</view>
</view>
<view class="appItem" v-for="(item,index) in list" :key="index">
<view class="status" @click="goDetail(item)">
<text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
<text v-if="item.auditStatus == 1" class="text-success">审核通过</text>
<text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text>
<text v-if="item.auditStatus == 3" class="text-warning">审核撤回</text>
</view>
<view class="date">
<uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
{{item.content.commitTime}} 提交
</view>
<view class="text-primary" @click="goDetail(item)" v-if="item.content?.wfCode">{{item.content?.wfCode}}
</view>
<view class="name w100 mt0" @click="goDetail(item)">
<!-- <text class="dot"></text> -->
{{item.content.certName}}
</view>
<view class="flexbox" @click="goDetail(item)">
<view v-if="userType == '3'">
所属省份
<view>{{item.content.province}}</view>
</view>
<view v-if="userType == '2'">
所属一级
<view>{{item.content.firstDeptName}}</view>
</view>
<view v-if="userType == '2'">
所属二级
<view>{{item.content.secondDeptName}}</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<!-- <view v-if="userType=='2'" class="block-btn-box">
<view v-if="deptType == 1">
会员/新会员/年限
<view>{{item.content.allCount}}/<text
class="text-danger">{{item.content.newCount}}</text>/{{item.content.renewYear}}
</view>
</view>
<view v-else>
年限
<view>{{item.content.renewYear}}</view>
</view>
<view v-if="deptType == 1">
费用合计
<view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view>
</view>
<view v-if="deptType == 1" @click.stop="viewSettleFile(item.doc)">
缴费状态
<view>
<text v-if="item.doc?.settleFlag==0" class="text-warning">已结算</text>
<text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==0" class="text-success">已上传</text>
<text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==1" class="text-danger">未上传</text>
</view>
</view>
</view>
<view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
<button @click="audit(item.recordId,'0')">拒绝</button>
<button @click="audit(item.recordId,'1')">同意</button>
</view>
<!-- 中跆协 -->
<view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
<button @click="sendBack(item)">撤回</button>
</view>
<!-- 市 -->
<view class="func" v-if="userType == '3'">
<button @click="goGroupInfo(item)">机构资料</button>
<button v-if="item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0"
@click="sendBack(item)">撤回</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
</view>
<!-- 省 -->
<view class="func" v-if="userType == '2'">
<button @click="goGroupInfo(item)">机构资料</button>
<button v-if="item.auditStatus == 1" @click="sendBack(item)">撤回</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
<button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<!-- <view v-if="userType=='2'" class="block-btn-box">
<button @click="goMerge" class="btn-red-kx">前往合并 > </button>
</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 queryParams = ref({
// pageNum: 1,
// pageSize: 10
auditStatus: '0'
})
const navs = ref(['审核中', '审核通过', '审核拒绝', '撤回'])
const current = ref()
const list = ref([])
const total = ref(0)
const deptType = ref('')
const userType = ref('')
const totalCost = ref(0)
onLoad(() => {
if (app.globalData.isLogin) {
init()
} else {
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({
// pageNum: 1,
// pageSize: 10
auditStatus: '0'
})
const navs = ref(['审核中', '审核通过', '审核拒绝', '撤回'])
const current = ref()
const list = ref([])
const total = ref(0)
const deptType = ref('')
const userType = ref('')
const totalCost = ref(0)
onLoad(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
deptType.value = app.globalData.deptType
userType.value = app.globalData.userType
// console.log(userType.value)
getList()
}
function init() {
deptType.value = app.globalData.deptType
userType.value = app.globalData.userType
// console.log(userType.value)
getList()
}
function onClickItem(e) {
console.log(e)
queryParams.value.auditStatus = e.currentIndex
getList()
}
function onClickItem(e) {
console.log(e)
queryParams.value.auditStatus = e.currentIndex
getList()
}
function getList() {
uni.showLoading({
title: '加载中'
})
if (deptType.value == 2 || deptType.value == 3) {
// 省
queryParams.value.mergeFlag = 0
} else if (deptType.value == 1) {
queryParams.value.noEmpty = 1
} else if (deptType.value == 4 || deptType.value == 5) {
queryParams.value.noEmpty = 1
}
totalCost.value = 0
api.getGroupList(queryParams.value).then(res => {
uni.hideLoading()
list.value = res.rows
list.value.forEach(item => {
item.content = JSON.parse(item.content)
// item.doc = JSON.parse(item.doc)
totalCost.value = totalCost.value + (item.content.allFee * 1)
})
total.value = res.total
})
}
function getList() {
uni.showLoading({
title: '加载中'
})
if (deptType.value == 2 || deptType.value == 3) {
// 省
queryParams.value.mergeFlag = 0
} else if (deptType.value == 1) {
queryParams.value.noEmpty = 1
} else if (deptType.value == 4 || deptType.value == 5) {
queryParams.value.noEmpty = 1
}
totalCost.value = 0
api.getGroupList(queryParams.value).then(res => {
uni.hideLoading()
list.value = res.rows
list.value.forEach(item => {
item.content = JSON.parse(item.content)
if(item.doc){
item.doc = JSON.parse(item.doc)
}
totalCost.value = totalCost.value + (item.content.allFee * 1)
})
total.value = res.total
})
}
function audit(recordId, flag) {
if (flag == '0') {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
} else {
doApproval(recordId, flag, res.content)
}
}
}
})
} else if (flag == '1') {
// 二次确认
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
if (res.confirm) {
doApproval(recordId, flag)
}
}
})
}
}
function audit(recordId, flag) {
if (flag == '0') {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
} else {
doApproval(recordId, flag, res.content)
}
}
}
})
} else if (flag == '1') {
// 二次确认
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
if (res.confirm) {
doApproval(recordId, flag)
}
}
})
}
}
function doApproval(recordId, flag, reason) {
var obj = {
flag: flag,
reason: reason || '',
recordIds: []
}
obj.recordIds.push(recordId)
console.log(obj)
api.groupAudit(obj).then((res) => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
function doApproval(recordId, flag, reason) {
var obj = {
flag: flag,
reason: reason || '',
recordIds: []
}
obj.recordIds.push(recordId)
console.log(obj)
api.groupAudit(obj).then((res) => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
function goDetail(item) {
const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
const form = encodeURIComponent(JSON.stringify(item))
function goDetail(item) {
const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
const form = encodeURIComponent(JSON.stringify(item))
if (userType.value == '1') {
// 查看
let path = `/group/apply/mergeUpDetail?form=${form}`
uni.navigateTo({
url: path
});
} else if (userType.value == '2' || userType.value == '3') {
// 审核记录
let path = `/group/apply/record?certId=${item.content.certId}`
uni.navigateTo({
url: path
});
}
}
if (userType.value == '1') {
// 查看
let path = `/group/apply/mergeUpDetail?form=${form}`
uni.navigateTo({
url: path
});
} else if (userType.value == '2' || userType.value == '3') {
// 审核记录
let path = `/group/apply/record?certId=${item.content.certId}`
uni.navigateTo({
url: path
});
}
}
function goMerge() {
let path = `/group/apply/merge`
uni.redirectTo({
url: path
});
}
function goMerge() {
let path = `/group/apply/merge`
uni.redirectTo({
url: path
});
}
function goMergeUp() {
let path = `/group/apply/mergeUp`
uni.redirectTo({
url: path
});
}
function goMergeUp() {
let path = `/group/apply/mergeUp`
uni.redirectTo({
url: path
});
}
function sendBack(row) {
uni.showModal({
title: '提示',
content: `确定撤回${row.content.certName}吗`,
success: function(res) {
if (res.confirm) {
api.certifiedwithDraw({
recordId: row.recordId,
reason: row.reason
}).then(res => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
function sendBack(row) {
uni.showModal({
title: '提示',
content: `确定撤回${row.content.certName}吗`,
success: function(res) {
if (res.confirm) {
api.certifiedwithDraw({
recordId: row.recordId,
reason: row.reason
}).then(res => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
}
})
}
}
}
})
}
function goGroupInfo(row){
uni.navigateTo({
url: `/group/groupInfo?memId=${row.content?.memId}`
})
function goGroupInfo(row) {
uni.navigateTo({
url: `/group/groupInfo?memId=${row.content?.memId}`
})
}
function viewSettleFile(doc){
let url
if(doc.payEvidence){
url = JSON.parse(doc.payEvidence)[0].url || null
console.log(url)
if(url){showImg(url)}
}
}
function showImg(n) {
var str = ''
if(n.indexOf('http')==-1){
str = config.baseUrl_api + n
} else {
str = n
}
if (n.indexOf('png') > -1 || n.indexOf('jpg') > -1 || n.indexOf(
'jpeg') > -1) {
uni.previewImage({
urls: [str],
success: function(res) {
console.log('success', res)
},
fail: function(res) {
console.log('fail', res)
},
complete: function(res) {
console.log('complete', res)
}
})
} else {
goWebView(str)
}
}
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>
......
......@@ -163,14 +163,12 @@
return
}
pcLogin(form.value)
.then((res) => {
pcLogin(form.value).then((res) => {
app.globalData.isLogin = true
uni.redirectTo({
url: '/pages/index/index'
})
})
.catch(getCode)
} else if (isActive.value == 1) {
if (!form2.value.telNo) {
uni.showToast({
......@@ -178,7 +176,16 @@
icon: 'none'
})
return
}
}
var pattern = /^1[3456789]\d{9}$/;
if (!pattern.test(form2.value.telNo)) {
uni.showToast({
title: '请输入正确的手机号',
duration: 2000,
icon: 'none'
})
return
}
if (!form2.value.code) {
uni.showToast({
title: '短信验证码不能为空',
......@@ -221,7 +228,16 @@
icon: 'none'
})
return
}
}
var pattern = /^1[3456789]\d{9}$/;
if (!pattern.test(form2.value.telNo)) {
uni.showToast({
title: '请输入正确的手机号',
duration: 2000,
icon: 'none'
})
return
}
if (!form2.value.captcha) {
uni.showToast({
title: '图形验证码不能为空',
......@@ -236,14 +252,17 @@
code: form2.value.captcha
}).then(res => {
uni.showToast({
title: '短信验证码下发成功',
title: res.data.msg,
icon: 'none'
})
countDown.value.start = true
}).catch(res=>{
console.log(res.data.msg)
getCode()
})
})
// .catch(res=>{
// uni.showModal({
// content:res.data.msg
// })
// getCode()
// })
}
function timeup() {
......
......@@ -101,7 +101,7 @@ function submit(){
})
return
}
if(!user.value.phoneNumber){
if(!user.value.phonenumber){
uni.showToast({
icon:'none',title:`请输入手机号码`
})
......@@ -117,6 +117,7 @@ function submit(){
uni.showToast({
icon:'none',title:`修改成功`
})
edit.value = false
})
}
function changeSex(e){
......
......@@ -41,7 +41,7 @@
</view>
<view class="func">
<button
@click="handleUpdate(item)" v-if="item.settleFlag != 0">上传凭证
@click="handleUpdate(item)" v-if="item.settleFlag != 0">确认并上传
</button>
<button @click="handleDownload(item)" >下载缴费通知单</button>
</view>
......@@ -62,7 +62,7 @@
<uni-forms-item label="缴费凭证" required>
<uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip"
@select="selectFile"
@select="selectFile" v-model="form.payEvidenceObj"
@progress="fileProgress" @delete="delSupplementFile(index)"></uni-file-picker>
</uni-forms-item>
<uni-forms-item label="备注">
......@@ -118,6 +118,16 @@ function getList() {
function handleUpdate(item) {
form.value.yjId = item.yjId
form.value.payTime = item.payTime
if(item.payEvidence){
let file = JSON.parse(item.payEvidence)
console.log(file)
form.value.payEvidenceObj = {
url: file[0].url,
name: file[0].name,
extname: 'png'
}
}
UpPop.value.open()
}
let selectFileValue = {}
......@@ -144,7 +154,11 @@ function delSupplementFile(index) {
}
function uploadSure(){
console.log(form.value)
api.commitPaymentVoucher(form.value).then(res=>{
api.commitPaymentVoucherYJ({
payTime:form.value.payTime,
url:form.value.url,
yjId:form.value.yjId
}).then(res=>{
UpPop.value.close()
form.value = {}
uni.showToast({
......@@ -224,6 +238,7 @@ function circulation(id) {
</script>
<style scoped lang="scss">
:deep(.file-picker__progress){opacity: 0;}
.popBody {
font-size: 28rpx;
line-height: 1.5;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!