接口对接

This commit is contained in:
zzyuan 2025-12-10 17:18:22 +08:00
parent 75b46cb97d
commit 977c33e651
14 changed files with 308 additions and 239 deletions

View File

@ -54,4 +54,24 @@ export function toDoListApi(data) {
})
}
/**
* @data 消息通知列表
*/
export function getNoticeApi(data) {
return request({
url: '/certificate/certificate_system/certificateInfo/notice',
method: 'post',
data
})
}
/**
* @data 设置已读
*/
export function updateNoticeApi(data) {
return request({
url: '/certificate/certificate_system/certificateInfo/updateNotice',
method: 'post',
data
})
}

View File

@ -55,7 +55,7 @@ export function uploadPhotoGenCodeForAppApi(data) {
// 投诉建议
//投诉建议(提交)
export function postCanteenPlaintApi(data) {
export function postFeedBackApi(data) {
return request({
url: '/certificate/certificate_feedback/certificateInfo/addFeedBack',
method: 'post',

View File

@ -252,6 +252,12 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/announcement/aDetails",
"style": {
"navigationStyle": "custom"
}
},
{ //
"path": "pages/mine/changPassword/index",
"style": {
@ -285,12 +291,7 @@
"navigationBarTitleText": "个人信息"
}
},
{
"path": "pages/mine/announcement/aDetails",
"style": {
"navigationBarTitleText": "通知公告详情"
}
},
{
"path": "pages/mine/me/basicInfo",

View File

@ -7,8 +7,8 @@
<view><uni-data-checkbox v-model="apply.applyType" :localdata="checkBoxLocalData" @change="changeApplyType"/></view>
</view>
<view class="apply-item">
<view style="margin-bottom: 10px;">证件<span style="color: red;">*</span> </view>
<view><uni-data-select v-model="apply.certificateNo" :localdata="certificateList"></uni-data-select></view>
<view style="margin-bottom: 10px;">证件编号<span style="color: red;">*</span> </view>
<view><uni-data-select v-model="apply.certificateNos" multiple :localdata="certificateList"></uni-data-select></view>
</view>
<view class="apply-item">
<view style="margin-bottom: 10px;">证件用途<span style="color: red;">*</span> </view>
@ -16,7 +16,7 @@
</view>
<view class="apply-item">
<view style="margin-bottom: 10px;">事由<span style="color: red;">*</span></view>
<view><uni-easyinput type="text" :inputBorder="false" v-model="apply.applyDetail" maxlength="30" placeholder="请输入" /></view>
<view><uni-easyinput type="text" :inputBorder="false" v-model="apply.applyDetail" maxlength="50" placeholder="请输入" /></view>
</view>
<view class="apply-item" v-if="apply.applyType==2">
<view style="margin-bottom: 10px;">计划出国地点<span style="color: red;">*</span></view>
@ -32,7 +32,7 @@
</view>
<view class="apply-item">
<view style="margin-bottom: 10px;">允许他人代办<span style="color: red;">*</span> </view>
<view><uni-data-checkbox v-model="apply.isThrid" :localdata="checkBoxLocalData3" /></view>
<view><uni-data-checkbox v-model="apply.isThrid" :localdata="checkBoxLocalData3" @change="changeIsThrid"/></view>
</view>
<view class="apply-item" v-if="apply.isThrid==1">
<view style="margin-bottom: 10px;">代办人姓名<span style="color: red;">*</span></view>
@ -44,7 +44,7 @@
</view>
<view class="apply-item">
<view style="margin-bottom: 10px;">备注</view>
<view><uni-easyinput type="text" :inputBorder="false" v-model="apply.remark" maxlength="30" placeholder="请输入" /></view>
<view><uni-easyinput type="text" :inputBorder="false" v-model="apply.remark" maxlength="50" placeholder="请输入" /></view>
</view>
<view class="apply-item" style="height: 120px;">
<view style="margin-bottom: 10px;">附件</view>
@ -112,23 +112,19 @@ export default {
checkBoxLocalData3: [{text: '是',value: 1}, {text: '否',value: 2}],
isSumbit:false,
apply:{
applyType:2,
applyType:1,
applyReason:1,
applyLocation:"",
isThrid:1,
thridIdName:"",
thridId:"",
thridName:"",
thridIdNumber:"",
applyDetail:"",
idNumber:"",
birthday:"",
birthAddr:"",
certificateType:"",
certificateNo:"",
issueAddr:"",
issueDay:"",
issueLifespan:"",
isEle:0
exitAddr:"",
exitTime:"",
entryTime:"",
remark:"",
certificateNos:[],
},
fileList: [],
}
@ -145,7 +141,8 @@ export default {
const params = {
applyType:this.apply.applyType,
userId:uni.getStorageSync("userId")
}
}
this.$set(this.apply,"certificateNos",[])
this.certificateList=[]
try {
const res = await applyCertificateNoListApi(params)
@ -177,15 +174,24 @@ export default {
console.log(error)
}
},
//
changeApplyType(e){
console.log('e:',this.apply.applyType);
this.getCertificateList()
this.$set(this.apply,"exitAddr","")
this.$set(this.apply,"exitTime","")
this.$set(this.apply,"entryTime","")
},
changeIsThrid(e){
this.$set(this.apply,'thridId',"")
this.$set(this.apply,'thridName',"")
this.$set(this.apply,'thridIdNumber',"")
},
changThridId(e){
console.log('e:',e);
let index = this.thridManList.findIndex(v=>v.value==e)
console.log(index)
this.$set(this.apply,'thridIdName',this.thridManList[index].text)
this.$set(this.apply,'thridName',this.thridManList[index].text)
this.$set(this.apply,'thridIdNumber',this.thridManList[index].idNumber)
},
submitApply() {
@ -203,30 +209,55 @@ export default {
this.apply.fileNames = arr1
const regex = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;
console.log(this.apply)
if(this.apply.certificateNo==""){
uni.$u.toast(`请选择证件`)
if(this.apply.certificateNos.length==0){
uni.$u.toast(`请选择证件编号`)
}else if(this.apply.applyDetail==""){
uni.$u.toast(`事由不能为空`)
}else if(this.apply.exitAddr==""){
uni.$u.toast(`计划出国(境)地点不能为空`)
}else if(this.apply.exitTime==""){
uni.$u.toast(`计划出国(境)日期不能为空`)
}else if(this.apply.entryTime==""){
uni.$u.toast(`计划回国(境)日期不能为空`)
}else if(this.apply.isThrid==1){
if(this.apply.thridIdName==""){
}else if(this.apply.isThrid==1){
if(this.apply.thridName==""){
uni.$u.toast(`代办人姓名不能为空`)
}else if(this.apply.thridIdNumber==""){
uni.$u.toast(`代办人身份证号不能为空`)
}else if(this.apply.applyType==2){
if(this.apply.exitAddr==""){
uni.$u.toast(`计划出国(境)地点不能为空`)
return false
}else if(this.apply.exitTime==""){
uni.$u.toast(`计划出国(境)日期不能为空`)
return false
}else if(this.apply.entryTime==""){
uni.$u.toast(`计划回国(境)日期不能为空`)
return false
}else if(!this.isSumbit){
console.log("请求添加")
this.insertApply();
}
}else if(!this.isSumbit){
console.log("请求添加")
this.insertApply();
}
}else if(this.apply.isThrid==2){
this.apply.thridId=""
this.apply.thridIdName=""
this.apply.thridIdNumber=""
}else{
if(!this.isSumbit){
// this.insertApply();
}
this.apply.thridName=""
this.apply.thridIdNumber=""
if(this.apply.applyType==2){
if(this.apply.exitAddr==""){
uni.$u.toast(`计划出国(境)地点不能为空`)
return false
}else if(this.apply.exitTime==""){
uni.$u.toast(`计划出国(境)日期不能为空`)
return false
}else if(this.apply.entryTime==""){
uni.$u.toast(`计划回国(境)日期不能为空`)
return false
}else if(!this.isSumbit){
console.log("请求添加")
this.insertApply();
}
}else if(!this.isSumbit){
console.log("请求添加")
this.insertApply();
}
}
},
async insertApply(){

View File

@ -8,100 +8,100 @@
<view class="info-text">证件编号{{apply.certificateNo}}</view>
<view class="info-text">申请时间{{apply.createTime}}</view>
<image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image>
<!-- <image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image> -->
<!-- <image v-if="item.status==2" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon2.png"></image>
<image v-if="item.status==3" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon3.png"></image> -->
</view>
<view class="apply-view">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">证件</view>
<view class="certificate-box">
<view v-for="(item,index) in certificateList" :key="index" class="certificate-box">
<!-- <image style="width: 140rpx;height: 140rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/statusIcon1.png"></image> -->
<view class="certificate-view1" v-if="apply.certificateType==1">
<view class="certificate-view1" v-if="item.certificateType==1">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view2" v-if="apply.certificateType==2">
<view class="certificate-view2" v-if="item.certificateType==2">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view3" v-if="apply.certificateType==3">
<view class="certificate-view3" v-if="item.certificateType==3">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
</view>
</view>
@ -201,33 +201,31 @@ export default {
checkBoxLocalData3: [{text: '是',value: 1}, {text: '否',value: 2}],
isSumbit:false,
apply:{
applyType:0,
useType:1,
applyReason:"",
applyType:1,
applyReason:1,
applyLocation:"",
proxyAble:1,
proxyName:"",
proxyNumber:"",
isThrid:1,
thridId:"",
thridName:"",
thridIdNumber:"",
applyDetail:"",
idNumber:"",
birthday:"",
birthAddr:"",
certificateType:"",
certificateNo:"",
issueAddr:"",
issueDay:"",
issueLifespan:"",
isEle:0
},
exitAddr:"",
exitTime:"",
entryTime:"",
remark:"",
certificateNos:[],
},
checkProcess:[],
showPic:false,
imagerUrl:""
imagerUrl:"",
certificateList:[]
}
},
onLoad(options) {
this.apply = JSON.parse(options.apply)
console.log(this.apply)
this.certificateList = this.apply.details;
console.log(this.certificateList)
this.getCheckProcess()
},
methods: {

View File

@ -13,7 +13,7 @@
<scroll-view style="width: 100%;height: 84vh;background: #F5F5F5;" @scrolltolower="onScrollTolower" scroll-y="true">
<view class="scroll-item" v-for="(item, index) in infoList" :key="index" @click="handleEdit(item)">
<view style="width: 100%;display: flex;margin-bottom: 10rpx;">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">{{item.name}}的申请</view>
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">{{item.userName}}的申请</view>
<view class="status-view" v-if="item.applyType==1">存证</view>
<view class="status-view" v-if="item.applyType==2">取证</view>
</view>
@ -48,11 +48,7 @@ export default {
pageNum: 1,
pageSize: 10,
total: 0,
infoList: [
{name:"张三",idNumber:'23000020302030230230',time:'2025-10-09 16:23',status:1},
{name:"张四",idNumber:'23000020302030230230',time:'2025-10-09 16:23',status:2},
{name:"张五",idNumber:'23000020302030230230',time:'2025-10-09 16:23',status:3},
],
infoList: [],
status: 'loadmore',
}
},

View File

@ -8,100 +8,100 @@
<view class="info-text">证件编号{{apply.certificateNo}}</view>
<view class="info-text">申请时间{{apply.createTime}}</view>
<image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image>
<!-- <image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image> -->
<!-- <image v-if="item.status==2" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon2.png"></image>
<image v-if="item.status==3" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon3.png"></image> -->
</view>
<view class="apply-view">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">证件</view>
<view class="certificate-box">
<view v-for="(item,index) in certificateList" :key="index" class="certificate-box">
<!-- <image style="width: 140rpx;height: 140rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/statusIcon1.png"></image> -->
<view class="certificate-view1" v-if="apply.certificateType==1">
<view class="certificate-view1" v-if="item.certificateType==1">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view2" v-if="apply.certificateType==2">
<view class="certificate-view2" v-if="item.certificateType==2">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view3" v-if="apply.certificateType==3">
<view class="certificate-view3" v-if="item.certificateType==3">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
</view>
</view>
@ -150,7 +150,7 @@
<view class="apply-info-label">备注</view>
<view class="apply-info-text">{{apply.remark}}</view>
</view>
<view class="apply-info">
<view class="apply-info" style="height: 120px;">
<view class="apply-info-label">附件</view>
<view class="apply-info-text">
<view class="img-box" v-if="apply.fileUrl!=''">
@ -204,33 +204,31 @@ export default {
checkBoxLocalData3: [{text: '是',value: 1}, {text: '否',value: 2}],
isSumbit:false,
apply:{
applyType:0,
useType:1,
applyReason:"",
applyType:1,
applyReason:1,
applyLocation:"",
proxyAble:1,
proxyName:"",
proxyNumber:"",
isThrid:1,
thridId:"",
thridName:"",
thridIdNumber:"",
applyDetail:"",
idNumber:"",
birthday:"",
birthAddr:"",
certificateType:"",
certificateNo:"",
issueAddr:"",
issueDay:"",
issueLifespan:"",
isEle:0
},
exitAddr:"",
exitTime:"",
entryTime:"",
remark:"",
certificateNos:[],
},
checkProcess:[],
showPic:false,
imagerUrl:""
imagerUrl:"",
certificateList:[]
}
},
onLoad(options) {
this.apply = JSON.parse(options.apply)
console.log(this.apply)
this.certificateList = this.apply.details;
console.log(this.certificateList)
this.getCheckProcess()
},
methods: {

View File

@ -8,100 +8,100 @@
<view class="info-text">证件编号{{apply.certificateNo}}</view>
<view class="info-text">申请时间{{apply.createTime}}</view>
<image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image>
<!-- <image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image> -->
<!-- <image v-if="item.status==2" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon2.png"></image>
<image v-if="item.status==3" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon3.png"></image> -->
</view>
<view class="apply-view">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">证件</view>
<view class="certificate-box">
<view v-for="(item,index) in certificateList" :key="index" class="certificate-box">
<!-- <image style="width: 140rpx;height: 140rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/statusIcon1.png"></image> -->
<view class="certificate-view1" v-if="apply.certificateType==1">
<view class="certificate-view1" v-if="item.certificateType==1">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view2" v-if="apply.certificateType==2">
<view class="certificate-view2" v-if="item.certificateType==2">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view3" v-if="apply.certificateType==3">
<view class="certificate-view3" v-if="item.certificateType==3">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{apply.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{apply.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{apply.stateName}}</view>
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ apply.issueDay }} {{ apply.issueLifespan }}</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.name}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceName||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{apply.slotNo||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{apply.deviceAddr||'无'}}</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
</view>
</view>
@ -150,7 +150,7 @@
<view class="apply-info-label">备注</view>
<view class="apply-info-text">{{apply.remark}}</view>
</view>
<view class="apply-info">
<view class="apply-info" style="height: 120px;">
<view class="apply-info-label">附件</view>
<view class="apply-info-text">
<view class="img-box" v-if="apply.fileUrl!=''">
@ -204,33 +204,31 @@ export default {
checkBoxLocalData3: [{text: '是',value: 1}, {text: '否',value: 2}],
isSumbit:false,
apply:{
applyType:0,
useType:1,
applyReason:"",
applyType:1,
applyReason:1,
applyLocation:"",
proxyAble:1,
proxyName:"",
proxyNumber:"",
isThrid:1,
thridId:"",
thridName:"",
thridIdNumber:"",
applyDetail:"",
idNumber:"",
birthday:"",
birthAddr:"",
certificateType:"",
certificateNo:"",
issueAddr:"",
issueDay:"",
issueLifespan:"",
isEle:0
},
exitAddr:"",
exitTime:"",
entryTime:"",
remark:"",
certificateNos:[],
},
checkProcess:[],
showPic:false,
imagerUrl:""
imagerUrl:"",
certificateList:[]
}
},
onLoad(options) {
this.apply = JSON.parse(options.apply)
console.log(this.apply)
this.certificateList = this.apply.details;
console.log(this.certificateList)
this.getCheckProcess()
},
methods: {

View File

@ -13,7 +13,7 @@
<scroll-view v-if="tagIndex==1||tagIndex==2" style="width: 100%;height: 84vh;background: #F5F5F5;" @scrolltolower="onScrollTolower1" scroll-y="true">
<view class="scroll-item" v-for="(item, index) in infoList1" :key="index" @click="handleEdit(item)">
<view style="width: 100%;display: flex;margin-bottom: 10rpx;">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">{{item.name}}的申请</view>
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">{{item.userName}}的申请</view>
<view class="status-view" v-if="item.applyType==1">存证</view>
<view class="status-view" v-if="item.applyType==2">取证</view>
</view>

View File

@ -1,9 +1,14 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view style="padding-top: 4vh;color: #fff;height: 13vh;display: flex;align-items: center;padding-left: 6%;">
<view style="width:94%;padding-top: 4vh;color: #fff;height: 13vh;display: flex;align-items: center;padding-left: 6%;justify-content: space-between;">
<view style="font-size: 40rpx;font-weight: 600;">
证途通
</view>
<view @click="goNotices">
<uni-badge class="uni-badge-left-margin" max-num="99" :text="noticeCount" absolute="rightTop" size="small">
<image style="width: 42rpx;height: 42rpx;" src="@/static/images/index/notice.png"></image>
</uni-badge>
</view>
</view>
<view class="handle-box" v-if="roles=='app_user'">
<view class="main-box">
@ -151,7 +156,7 @@
<script>
import { getUserInfo} from "@/api/system/user";
import { certificateRecordApi,certificateAtakeRecordApi,getRoutersApi,certificateStatisticsApi,toDoListApi} from "@/api/index/index.js";
import { certificateRecordApi,certificateAtakeRecordApi,getRoutersApi,certificateStatisticsApi,toDoListApi,getNoticeApi} from "@/api/index/index.js";
export default {
data() {
return {
@ -168,11 +173,13 @@ export default {
total2: 0,
recordList2:[],
statisticsData:{},
roles:"app_user"
roles:"app_user",
noticeCount:0
}
},
onShow() {
this.getUserInfo()
this.getNoticeNum()
this.certificateStatistics()
},
onLoad() {
@ -265,6 +272,14 @@ export default {
if(item.type==1){
uni.navigateTo({url:"/pages/verification/certificateVerification/index"})
}
},
getNoticeNum(){
getNoticeApi({}).then(res => {
this.noticeCount = res.count;
})
},
goNotices(){
uni.navigateTo({url:"/pages/mine/announcement/index"})
}
},
}

View File

@ -1,22 +1,23 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="notice-detail">
<!-- 标题区域 -->
<view class="notice-title">
<text class="title">通知</text>
<text class="time">{{ noticeData.noticeTitle }}</text>
</view>
<Navbar2 title="消息通知详情"/>
<view class="notice-detail">
<!-- 标题区域 -->
<view class="notice-title">
<text class="title">通知</text>
<text class="time">{{ noticeData.title }}</text>
</view>
<!-- 内容区域 -->
<view class="notice-content">
<view class="content-text">{{noticeData.noticeContentNoHtml}}</view>
</view>
</view>
<!-- 内容区域 -->
<view class="notice-content">
<view class="content-text">{{noticeData.subTitle}}</view>
</view>
</view>
</template>
<script>
import UReadMore from '../../../uni_modules/uview-ui/components/u-read-more/u-read-more.vue'
import { updateNoticeStatusApi } from '@/api/mine/index'
import UReadMore from '../../../uni_modules/uview-ui/components/u-read-more/u-read-more.vue'
import { updateNoticeApi } from "@/api/index/index.js";
export default {
name: 'NoticeDetail',
@ -33,9 +34,9 @@ export default {
console.log(opt)
this.paramsData = opt
this.fetchNoticeDetail();
// setTimeout(()=>{
// this.getNoticeDetail()
// },1000)
setTimeout(()=>{
this.getNoticeDetail()
},500)
},
methods: {
fetchNoticeDetail() {
@ -44,11 +45,10 @@ export default {
//
async getNoticeDetail() {
let param = {
"informhisId": this.paramsData.informhisId,
"sign": this.paramsData.sign,
"userId": uni.getStorageSync('userId'),
}
const res = await updateNoticeStatusApi(param)
console.log(res, '通知消息--')
const res = await updateNoticeApi(param)
},
},
}

View File

@ -7,20 +7,31 @@
<view class="message-item" v-for="(item, index) in messageList" :key="index" @click="handleMessageClick(item)">
<!-- 左侧图标 -->
<view class="icon-wrapper">
<image style="width: 80rpx;height: 80rpx;" src="/static/images/my/noticeIcon1.png"></image>
<image style="width: 80rpx;height: 80rpx;" src="/static/images/my/noticeIcon1.png"></image>
</view>
<!-- 消息内容 -->
<view class="content">
<view style="color:#2A2B2F;font-size: 26rpx;font-weight: 600;">{{ item.noticeTitle }}</view>
<view style="color:#979B9F;font-size: 22rpx;">{{ item.noticeContent }}</view>
</view>
<view style="width: 25%;color: rgba(15,39,75,0.6);font-size: 20rpx;text-align: right;">{{item.updateTime}}</view>
<view style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin-bottom: 16rpx;">
<view style="color:#2A2B2F;font-size: 26rpx;font-weight: 600;">{{ item.title }}</view>
<view style="color: rgba(15,39,75,0.6);font-size: 20rpx;text-align: right;">{{item.createTime}}</view>
</view>
<view style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin-bottom: 16rpx;">
<view style="width: 80%;height: auto;color:#979B9F;font-size: 22rpx;">{{ item.subTitle }}</view>
<uni-badge v-if="item.state==0" class="uni-badge-left-margin" :is-dot="true" text="1" absolute="rightTop" size="small">
<view style="width: 20%;height: auto;"></view>
</uni-badge>
</view>
</view>
</view>
<view v-if="messageList.length==0" class="flex justify-center align-center" style="height: 40vh">
<u-empty icon="../../static/images/not_order.png" text="暂无消息..." textColor="#000" />
</view>
</scroll-view>
</view>
</template>
<script>
import { getNoticeApi,updateNoticeApi } from "@/api/index/index.js";
export default {
name: 'index',
data() {
@ -30,16 +41,16 @@ export default {
pageSize: 10,
total: 0,
messageList: [
{noticeTitle:"护照核验未通过",noticeContent:"你申请的护照核验未通过,详情请咨询管理…",updateTime:"2025/11/20"},
{noticeTitle:"护照核验未通过",noticeContent:"你申请的护照核验未通过,详情请咨询管理…",updateTime:"2025/11/20"},
{noticeTitle:"护照核验未通过",noticeContent:"你申请的护照核验未通过,详情请咨询管理…",updateTime:"2025/11/20"},
{noticeTitle:"护照核验未通过",noticeContent:"你申请的护照核验未通过,详情请咨询管理…",updateTime:"2025/11/20"},
{noticeTitle:"护照核验未通过",noticeContent:"你申请的护照核验未通过,详情请咨询管理…",updateTime:"2025/11/20"},
// {noticeTitle:"",noticeContent:"",updateTime:"2025/11/20"},
// {noticeTitle:"",noticeContent:"",updateTime:"2025/11/20"},
// {noticeTitle:"",noticeContent:"",updateTime:"2025/11/20"},
// {noticeTitle:"",noticeContent:"",updateTime:"2025/11/20"},
// {noticeTitle:"",noticeContent:"",updateTime:"2025/11/20"},
],
}
},
onLoad(){
// this.getNoticeList()
onShow(){
this.getNoticeList()
},
methods: {
//
@ -53,18 +64,19 @@ export default {
//
async getNoticeList() {
let param = {
"pageNum": this.pageNum,
"pageSize": this.pageSize,
"userId": uni.getStorageSync('userId'),
// "pageNum": this.pageNum,
// "pageSize": this.pageSize,
// "userId": uni.getStorageSync('userId'),
}
const res = await queryUserInformApi(param)
const res = await getNoticeApi(param)
console.log(res, '通知消息--')
this.total = res.total;
if(this.pageNum==1){
this.messageList = res.rows
}else{
this.messageList.push(...res.rows)
}
this.messageList = res.data
// this.total = res.total;
// if(this.pageNum==1){
// this.messageList = res.rows
// }else{
// this.messageList.push(...res.rows)
// }
},
handleMessageClick(item) {
console.log('?? ~ handleMessageClick ~ ', item)
@ -99,7 +111,7 @@ export default {
justify-content: center;
}
.content {
width: 60%;
width: 85%;
height: auto;
}
.title-box{

View File

@ -73,7 +73,7 @@
</template>
<script>
import { postCanteenPlaintApi } from "@/api/mine/index.js"
import { postFeedBackApi } from "@/api/mine/index.js"
import { pathToBase64, base64ToPath } from 'image-tools';
import { uploadBase64 } from "@/api/upload"
@ -110,7 +110,7 @@ export default {
"contacts": this.contactInfo,
}
console.log(param)
const res = await postCanteenPlaintApi(param)
const res = await postFeedBackApi(param)
if(res.code==200){
uni.showToast({
title: '提交成功',

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B