远程校验修改

This commit is contained in:
zzyuan 2025-11-06 10:13:05 +08:00
parent 7c769f2a52
commit b9bd233573
11 changed files with 902 additions and 146 deletions

View File

@ -10,6 +10,16 @@ export function certificateTaskListApi(data) {
params:data
})
}
/**
* @data 证件任务记录-撤回
*/
export function returnCertificateTaskApi(data) {
return request({
url: '/certificate/certificate_returnmanage/certificateTask/return',
method: 'post',
data
})
}
/**
* @data 证件存证-分页
@ -22,6 +32,17 @@ export function certificateSaveListApi(data) {
})
}
/**
* @data 证件存证-存证
*/
export function addCertificateSaveApi(data) {
return request({
url: '/certificate/certificate_returnmanage/certificateSave/add',
method: 'post',
data
})
}
/**
* @data 证件取证-分页
*/
@ -33,6 +54,18 @@ export function certificateAtakeListApi(data) {
})
}
/**
* @data 证件取证-取证
*/
export function addCertificateTakeApi(data) {
return request({
url: '/certificate/certificate_returnmanage/certificateTake/add',
method: 'post',
data
})
}
/**
* @data 新增证件信息
*/

View File

@ -21,7 +21,16 @@ export function certificateAtakeRecordApi(data) {
})
}
/**
* @data 获取路由
*/
export function getRoutersApi(data) {
return request({
url: '/system/menu/getRouters/2',
method: 'get',
params:data
})
}

View File

@ -87,6 +87,32 @@
// "navigationBarBackgroundColor": "#F9FBFF"
}
},
{
"path": "pages/verification/certificateVerification/index",
"style": {
"navigationStyle": "custom"
// "navigationBarTitleText": "工作台"
// "navigationBarBackgroundColor": "#F9FBFF"
}
},
{
"path": "pages/verification/exitVerification/index",
"style": {
"navigationStyle": "custom"
// "navigationBarTitleText": "工作台"
// "navigationBarBackgroundColor": "#F9FBFF"
}
},
{
"path": "pages/verification/fakeVerification/index",
"style": {
"navigationStyle": "custom"
// "navigationBarTitleText": "工作台"
// "navigationBarBackgroundColor": "#F9FBFF"
}
},
{
"path": "pages/mine/index",
"style": {

View File

@ -16,7 +16,7 @@
<view class="label-box">
<view style="width: 10%;" @click="checkSelect(item)">
<u-checkbox-group v-model="item.checked">
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.taskNo"></u-checkbox>
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.certificateNo"></u-checkbox>
</u-checkbox-group>
</view>
<view class="label-view" style="width: 90%;">
@ -117,7 +117,7 @@
</template>
<script>
import { certificateSaveListApi } from '@/api/certificateReturnManage/index.js';
import { certificateSaveListApi,addCertificateSaveApi } from '@/api/certificateReturnManage/index.js';
export default {
data() {
@ -182,9 +182,9 @@ export default {
//
checkSelect(chosen){
this.infoList.forEach(item=>{
if(item.taskNo==chosen.taskNo){
if(item.certificateNo==chosen.certificateNo){
if(item.checked.length==0){
item.checked=[item.taskNo]
item.checked=[item.certificateNo]
}else{
item.checked=[]
}
@ -196,7 +196,7 @@ export default {
this.isCheckAll=!this.isCheckAll
if(this.isCheckAll){
this.infoList.forEach(item=>{
item.checked=[item.taskNo]
item.checked=[item.certificateNo]
})
}else{
this.infoList.forEach(item=>{
@ -209,7 +209,7 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -230,25 +230,21 @@ export default {
},
async batchSelfSave() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
const params = {"certificateNos":this.chosenList,"type":"1"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 管理员存证 */
handleAdminBack(){
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -269,18 +265,14 @@ export default {
},
async batchAdminSave() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
const params = {"certificateNos":this.chosenList,"type":"2"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
}

View File

@ -18,7 +18,7 @@
<view class="label-box">
<view style="width: 10%;" @click="checkSelect(item)">
<u-checkbox-group v-model="item.checked">
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.taskNo"></u-checkbox>
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.certificateNo"></u-checkbox>
</u-checkbox-group>
</view>
<view class="label-view" style="width: 90%;">
@ -131,14 +131,12 @@
</view>
</view>
</u-popup>
</view>
</template>
<script>
import { certificateAtakeListApi } from '@/api/certificateReturnManage/index.js';
import { certificateAtakeListApi,addCertificateTakeApi } from '@/api/certificateReturnManage/index.js';
export default {
data() {
return {
@ -204,10 +202,10 @@ export default {
//
checkSelect(chosen){
this.infoList.forEach(item=>{
if(item.taskNo==chosen.taskNo){
if(item.checked.length==0){
item.checked=[item.taskNo]
}else{
if(item.certificateNo==chosen.certificateNo){
if(item.checked.length==0){
item.checked=[item.certificateNo]
}else{
item.checked=[]
}
}
@ -218,7 +216,7 @@ export default {
this.isCheckAll=!this.isCheckAll
if(this.isCheckAll){
this.infoList.forEach(item=>{
item.checked=[item.taskNo]
item.checked=[item.certificateNo]
})
}else{
this.infoList.forEach(item=>{
@ -233,7 +231,7 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -253,19 +251,15 @@ export default {
}
},
async batchSelfTake() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
console.log(this.chosenList)
const params = {"certificateNos":this.chosenList,"type":"3"}
try {
const res = await addCertificateTakeApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 管理员取证 */
@ -273,7 +267,7 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -292,20 +286,15 @@ export default {
uni.$u.toast(`未勾选任务!`)
}
},
async batchAdminTake() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
async batchAdminTake() {
const params = {"certificateNos":this.chosenList,"type":"4"}
try {
const res = await addCertificateTakeApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 应急取证 */
@ -313,7 +302,7 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -332,20 +321,15 @@ export default {
uni.$u.toast(`未勾选任务!`)
}
},
async batchEmergencyTake() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
async batchEmergencyTake() {
const params = {"certificateNos":this.chosenList,"type":"5"}
try {
const res = await addCertificateTakeApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 他人代取 */
@ -353,7 +337,7 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
@ -372,23 +356,18 @@ export default {
}else if(!regex.test(this.otherIdNumber)){
uni.$u.toast(`请输入正确身份证号`)
}else{
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
this.showPopup=false
// } catch (error) {
// console.log(error)
// }
const params = {"certificateNos":this.chosenList,"type":"6"}
try {
const res = await addCertificateTakeApi(params)
this.showPopup=false
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
}
},
}
}
}
</script>

View File

@ -1,7 +1,7 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="certificate-list">
<Navbar title="证件任务记录" :showRightText="false" :isBack="true"/>
<Navbar title="证件任务记录" :showRightText="false" :isBack="false"/>
<view style="width: 94%;height: 80rpx;margin: 10rpx auto;">
<u-search shape="square" placeholder="搜索" v-model="keyword" :showAction="true" actionText="搜索" :animation="false" @custom="searchList"></u-search>
</view>
@ -9,13 +9,13 @@
<view @click="checkedAll" class="button-view" style="background: #00337A;margin-right: 10px;">全选</view>
<view @click="handleBatchBack" class="button-view" style="background: #ff4949;">撤回任务</view>
</view>
<scroll-view style="width: 100%;height: 82vh;" @scrolltolower="onScrollTolower" scroll-y="true">
<scroll-view style="width: 100%;height: 82vh;" @scrolltolower="onScrollTolower" scroll-y="true">
<view class="info-item" v-for="(item, index) in infoList" :key="index">
<view style="width: 100%;height: 100%;padding-top: 10rpx;font-size: 24rpx;">
<view class="label-box">
<view style="width: 10%;" @click="checkSelect(item)">
<u-checkbox-group v-model="item.checked">
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.taskNo"></u-checkbox>
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :disabled="item.disabled" :label="''" :name="item.taskNo"></u-checkbox>
</u-checkbox-group>
</view>
<view class="label-view" style="width: 90%;">
@ -30,9 +30,9 @@
</view>
<view class="label-view" style="width: 50%;">
<view class="label">身份证号</view>
<view class="text">{{item.idNumber}}</view>
</view>
</view>
<view class="text">{{item.idNumber}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">出生日期</view>
@ -66,13 +66,13 @@
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">有效期至</view>
<view class="text">{{item.issueLifespan}}</view>
<view class="text">{{item.issueLifespan}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">是否电子标签</view>
<view class="text">{{item.isEleName}}</view>
</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">设备编号</view>
@ -81,8 +81,8 @@
<view class="label-view" style="width: 50%;">
<view class="label">槽位编号</view>
<view class="text">{{item.soltNo}}</view>
</view>
</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">验证码</view>
@ -116,7 +116,7 @@
</template>
<script>
import { certificateTaskListApi } from '@/api/certificateReturnManage/index.js';
import { certificateTaskListApi,returnCertificateTaskApi } from '@/api/certificateReturnManage/index.js';
export default {
data() {
@ -166,7 +166,13 @@ export default {
console.log('?? ~ getList ~ res:', res)
this.total = res.total;
res.rows.forEach(item=>{
item.checked=[];
if(item.processState=="1"||item.processState=="2"){
item.disabled=true;
item.checked=[];
}else{
item.disabled=false;
item.checked=[];
}
})
if(this.pageNum==1){
this.infoList = res.rows
@ -183,7 +189,9 @@ export default {
this.infoList.forEach(item=>{
if(item.taskNo==chosen.taskNo){
if(item.checked.length==0){
if(!item.disabled){
item.checked=[item.taskNo]
}
}else{
item.checked=[]
}
@ -195,7 +203,9 @@ export default {
this.isCheckAll=!this.isCheckAll
if(this.isCheckAll){
this.infoList.forEach(item=>{
item.checked=[item.taskNo]
if(!item.disabled){
item.checked=[item.taskNo]
}
})
}else{
this.infoList.forEach(item=>{
@ -208,7 +218,9 @@ export default {
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item)
if(!item.disabled){
this.chosenList.push(item.taskNo)
}
}
})
console.log(this.chosenList)
@ -229,18 +241,13 @@ export default {
},
async batchBack() {
console.log(this.chosenList)
// const params = {
// pageNum: this.pageNum,
// pageSize: this.pageSize,
// keyword: this.keyword
// }
// try {
// const res = await certificateTaskListApi(params)
// console.log('?? ~ getList ~ res:', res)
// } catch (error) {
// console.log(error)
// }
const params = {"certificateNos":this.chosenList}
try {
const res = await returnCertificateTaskApi(params)
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
}
}

View File

@ -46,7 +46,7 @@
<view style="width: 100%;margin: 0 auto;height: 25vh;margin-bottom: 4vh;">
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;align-items: center;margin-bottom: 20rpx;">
<view style="font-size: 28rpx;font-weight: 600;">证件记录</view>
<view style="font-size: 24rpx;color: #3888FF;">查看全部>></view>
<view style="font-size: 24rpx;color: #3888FF;" @click="navigateTo('/pages/certificateManage/certificateRecord/index')">查看全部>></view>
</view>
<scroll-view style="width: 100%;height: 21vh;" @scrolltolower="onScrollTolower" scroll-y="true">
<view class="record-item" v-for="(item, index) in recordList" :key="index">
@ -73,7 +73,7 @@
<view style="width: 100%;margin: 0 auto;height: 25vh;">
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;align-items: center;margin-bottom: 20rpx;">
<view style="font-size: 28rpx;font-weight: 600;">任务记录</view>
<view style="font-size: 24rpx;color: #3888FF;">查看全部>></view>
<view style="font-size: 24rpx;color: #3888FF;" @click="navigateTo('/pages/certificateReturnManage/certificateTask/index')">查看全部>></view>
</view>
<scroll-view style="width: 100%;height: 21vh;" @scrolltolower="onScrollTolower2" scroll-y="true">
<view class="record-item" v-for="(item, index) in recordList2" :key="index">
@ -83,11 +83,11 @@
</view>
<view style="width: 85%;height: 100%;padding-top: 10rpx;">
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;margin-bottom: 4rpx;">
<view style="font-weight: 600;width: 60%;">姓名{{item.name}}</view>
<view style="font-size: 20rpx;color: #333333;width: 22%;">{{item.stateName}}</view>
<view style="font-weight: 600;width: 60%;">姓名{{item.name}}</view>
<view style="font-size: 20rpx;color: #333333;width: 22%;">{{item.stateName}}</view>
</view>
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;margin-bottom: 4rpx;">
<view style="font-weight: 600;width: 100%;">任务编号{{item.taskNo}}</view>
<view style="font-weight: 600;width: 100%;">任务编号{{item.taskNo}}</view>
</view>
<view style="color: #333333;font-size: 20rpx;width: 100%;font-weight: 600;display: flex;justify-content: space-between;align-items: center;">
<view>签发日期{{item.issueDay}}</view>
@ -103,7 +103,7 @@
<script>
import { getUserInfo} from "@/api/system/user";
import { certificateRecordApi,certificateAtakeRecordApi} from "@/api/index/index.js";
import { certificateRecordApi,certificateAtakeRecordApi,getRoutersApi} from "@/api/index/index.js";
export default {
data() {
return {
@ -122,6 +122,7 @@ export default {
},
onShow() {
this.getUserInfo()
// this.getRouters()
},
onLoad() {
this.getList()
@ -136,6 +137,11 @@ export default {
this.userName = res.user.userName;
})
},
getRouters() {
getRoutersApi().then(res => {
})
},
//
onScrollTolower(){
console.log(this.recordList.length)

View File

@ -0,0 +1,53 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="certificate-list">
<Navbar title="证件验证" :showRightText="false" :isBack="true"/>
</view>
</template>
<script>
export default {
data() {
return {
fontValue:uni.getStorageSync('fontSize') || 8,
}
},
onLoad() {
},
onShow(){
this.goto()
},
methods: {
goto(){
// #ifdef APP-PLUS
plus.share.getServices(function(res){
var sweixin = null;
for(var i=0;i<res.length;i++){
var t = res[i];
if(t.id == 'weixin'){
sweixin = t;
}
}
console.log("sweixin", sweixin)
if (sweixin) {
sweixin.launchMiniProgram({
id:"gh_e5e2507034ea"
});
}
}, function(e){
console.log("获取分享服务列表失败:"+JSON.stringify(e));
});
// #endif }
}
}
</script>
<style lang="scss" scoped>
.certificate-list {
height: 100vh;
background-color: #f8f8f8;
padding: 30rpx;
}
</style>

View File

@ -0,0 +1,318 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="certificate-list">
<Navbar title="出入境校验" :showRightText="false" :isBack="true"/>
<view style="width: 94%;height: 80rpx;margin: 10rpx auto;">
<u-search shape="square" placeholder="搜索" v-model="keyword" :showAction="true" actionText="搜索" :animation="false" @custom="searchList"></u-search>
</view>
<view style="width:92%;height: 80rpx;display: flex;align-items: center;">
<view @click="checkedAll" class="button-view" style="background: #00337A;margin-right: 10px;">全选</view>
<view @click="handleSelfSave" class="button-view" style="background: #3989FF;margin-right: 10px;">下发证件真伪核验任务</view>
</view>
<scroll-view style="width: 100%;height: 82vh;" @scrolltolower="onScrollTolower" scroll-y="true">
<view class="info-item" v-for="(item, index) in infoList" :key="index">
<view style="width: 100%;height: 100%;padding-top: 10rpx;font-size: 24rpx;">
<view class="label-box">
<view style="width: 10%;" @click="checkSelect(item)">
<u-checkbox-group v-model="item.checked">
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.certificateNo"></u-checkbox>
</u-checkbox-group>
</view>
<view class="label-view" style="width: 90%;">
<view class="label">任务编号</view>
<view class="text">{{item.taskNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">姓名</view>
<view class="text">{{item.name}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">身份证号</view>
<view class="text">{{item.idNumber}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">出生日期</view>
<view class="text">{{item.birthday}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">出生地点</view>
<view class="text">{{item.birthAddr}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">证件类型</view>
<view class="text">{{item.certificateTypeName}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">证件编号</view>
<view class="text">{{item.certificateNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">签发地</view>
<view class="text">{{item.issueAddr}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">签发日期</view>
<view class="text">{{item.issueDay}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">有效期至</view>
<view class="text">{{item.issueLifespan}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">是否电子标签</view>
<view class="text">{{item.isEleName}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">设备编号</view>
<view class="text">{{item.deviceNo}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">槽位编号</view>
<view class="text">{{item.soltNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">验证码</view>
<view class="text">{{item.verificationCode}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">截止时间</view>
<view class="text">{{item.processDate}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">创建时间</view>
<view class="text">{{item.createTime}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">处理结果</view>
<view class="text">{{item.processStateName}}</view>
</view>
</view>
</view>
</view>
<view style="margin: 20px 0" v-if="infoList.length > 0">
<u-loadmore :status="status" nomoreText="没有更多数据了" />
</view>
<view v-else class="flex justify-center align-center" style="height: 50vh">
<u-empty icon="../../static/images/not_order.png" text="暂无数据" textColor="#000" />
</view>
</scroll-view>
</view>
</template>
<script>
import { certificateSaveListApi,addCertificateSaveApi } from '@/api/certificateReturnManage/index.js';
export default {
data() {
return {
fontValue:uni.getStorageSync('fontSize') || 8,
keyword:"",
pageNum: 1,
pageSize: 10,
total: 0,
infoList: [],
status: 'loadmore',
isCheckAll:false,
chosenList:[]
}
},
onLoad() {
},
onShow(){
this.getList()
},
methods: {
//
searchList(value){
this.pageNum=1
this.infoList=[]
this.getList()
},
//
onScrollTolower(){
console.log(this.infoList.length)
if(this.total>this.infoList.length){
this.pageNum++
this.getList()
}
},
//
async getList() {
console.log('获取列表')
const params = {
pageNum: this.pageNum,
pageSize: this.pageSize,
keyword: this.keyword
}
try {
const res = await certificateSaveListApi(params)
console.log('?? ~ getList ~ res:', res)
this.total = res.total;
res.rows.forEach(item=>{
item.checked=[];
})
if(this.pageNum==1){
this.infoList = res.rows
}else{
this.infoList.push(...res.rows)
}
this.status = this.total == this.infoList.length ? 'nomore' : 'loadmore'
} catch (error) {
console.log(error)
}
},
//
checkSelect(chosen){
this.infoList.forEach(item=>{
if(item.certificateNo==chosen.certificateNo){
if(item.checked.length==0){
item.checked=[item.certificateNo]
}else{
item.checked=[]
}
}
})
},
//
checkedAll(){
this.isCheckAll=!this.isCheckAll
if(this.isCheckAll){
this.infoList.forEach(item=>{
item.checked=[item.certificateNo]
})
}else{
this.infoList.forEach(item=>{
item.checked=[]
})
}
},
/** 自主存证 */
handleSelfSave(){
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
if(this.chosenList.length>0){
uni.showModal({
title: `确认自主存证?`,
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
this.batchSelfSave();
}
}
});
}else{
uni.$u.toast(`未勾选任务!`)
}
},
async batchSelfSave() {
console.log(this.chosenList)
const params = {"certificateNos":this.chosenList,"type":"1"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 管理员存证 */
handleAdminBack(){
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
if(this.chosenList.length>0){
uni.showModal({
title: `确认管理员存证?`,
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
this.batchAdminSave();
}
}
});
}else{
uni.$u.toast(`未勾选任务!`)
}
},
async batchAdminSave() {
console.log(this.chosenList)
const params = {"certificateNos":this.chosenList,"type":"2"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
}
}
</script>
<style lang="scss" scoped>
.certificate-list {
height: 100vh;
background-color: #f8f8f8;
padding: 30rpx;
}
.info-item{
width: 100%;
height: auto;
display: flex;
align-items: center;
margin: 10rpx auto;
border-bottom: 1px solid #ccc;
}
.label-box{
width: 100%;
height: auto;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2px;
}
.label-view{
width: 100%;
display: flex;
align-items: center;
}
.label{
font-weight: 600;
}
.text{
}
.button-view{
width:20%;height:50rpx;line-height: 50rpx;text-align: center;
color: #FFF;border-radius: 10rpx;font-size: 22rpx;
}
</style>

View File

@ -0,0 +1,318 @@
<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="certificate-list">
<Navbar title="证件真伪校验" :showRightText="false" :isBack="true"/>
<view style="width: 94%;height: 80rpx;margin: 10rpx auto;">
<u-search shape="square" placeholder="搜索" v-model="keyword" :showAction="true" actionText="搜索" :animation="false" @custom="searchList"></u-search>
</view>
<view style="width:92%;height: 80rpx;display: flex;align-items: center;">
<view @click="checkedAll" class="button-view" style="background: #00337A;margin-right: 10px;">全选</view>
<view @click="handleSelfSave" class="button-view" style="background: #3989FF;margin-right: 10px;">下发出入境核验任务</view>
</view>
<scroll-view style="width: 100%;height: 82vh;" @scrolltolower="onScrollTolower" scroll-y="true">
<view class="info-item" v-for="(item, index) in infoList" :key="index">
<view style="width: 100%;height: 100%;padding-top: 10rpx;font-size: 24rpx;">
<view class="label-box">
<view style="width: 10%;" @click="checkSelect(item)">
<u-checkbox-group v-model="item.checked">
<u-checkbox :customStyle="{margin: '0rpx 10rpx'}" :label="''" :name="item.certificateNo"></u-checkbox>
</u-checkbox-group>
</view>
<view class="label-view" style="width: 90%;">
<view class="label">任务编号</view>
<view class="text">{{item.taskNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">姓名</view>
<view class="text">{{item.name}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">身份证号</view>
<view class="text">{{item.idNumber}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">出生日期</view>
<view class="text">{{item.birthday}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">出生地点</view>
<view class="text">{{item.birthAddr}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">证件类型</view>
<view class="text">{{item.certificateTypeName}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">证件编号</view>
<view class="text">{{item.certificateNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">签发地</view>
<view class="text">{{item.issueAddr}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">签发日期</view>
<view class="text">{{item.issueDay}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">有效期至</view>
<view class="text">{{item.issueLifespan}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">是否电子标签</view>
<view class="text">{{item.isEleName}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">设备编号</view>
<view class="text">{{item.deviceNo}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">槽位编号</view>
<view class="text">{{item.soltNo}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">验证码</view>
<view class="text">{{item.verificationCode}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">截止时间</view>
<view class="text">{{item.processDate}}</view>
</view>
</view>
<view class="label-box" @click="checkSelect(item)">
<view class="label-view" style="width: 50%;">
<view class="label">创建时间</view>
<view class="text">{{item.createTime}}</view>
</view>
<view class="label-view" style="width: 50%;">
<view class="label">处理结果</view>
<view class="text">{{item.processStateName}}</view>
</view>
</view>
</view>
</view>
<view style="margin: 20px 0" v-if="infoList.length > 0">
<u-loadmore :status="status" nomoreText="没有更多数据了" />
</view>
<view v-else class="flex justify-center align-center" style="height: 50vh">
<u-empty icon="../../static/images/not_order.png" text="暂无数据" textColor="#000" />
</view>
</scroll-view>
</view>
</template>
<script>
import { certificateSaveListApi,addCertificateSaveApi } from '@/api/certificateReturnManage/index.js';
export default {
data() {
return {
fontValue:uni.getStorageSync('fontSize') || 8,
keyword:"",
pageNum: 1,
pageSize: 10,
total: 0,
infoList: [],
status: 'loadmore',
isCheckAll:false,
chosenList:[]
}
},
onLoad() {
},
onShow(){
this.getList()
},
methods: {
//
searchList(value){
this.pageNum=1
this.infoList=[]
this.getList()
},
//
onScrollTolower(){
console.log(this.infoList.length)
if(this.total>this.infoList.length){
this.pageNum++
this.getList()
}
},
//
async getList() {
console.log('获取列表')
const params = {
pageNum: this.pageNum,
pageSize: this.pageSize,
keyword: this.keyword
}
try {
const res = await certificateSaveListApi(params)
console.log('?? ~ getList ~ res:', res)
this.total = res.total;
res.rows.forEach(item=>{
item.checked=[];
})
if(this.pageNum==1){
this.infoList = res.rows
}else{
this.infoList.push(...res.rows)
}
this.status = this.total == this.infoList.length ? 'nomore' : 'loadmore'
} catch (error) {
console.log(error)
}
},
//
checkSelect(chosen){
this.infoList.forEach(item=>{
if(item.certificateNo==chosen.certificateNo){
if(item.checked.length==0){
item.checked=[item.certificateNo]
}else{
item.checked=[]
}
}
})
},
//
checkedAll(){
this.isCheckAll=!this.isCheckAll
if(this.isCheckAll){
this.infoList.forEach(item=>{
item.checked=[item.certificateNo]
})
}else{
this.infoList.forEach(item=>{
item.checked=[]
})
}
},
/** 自主存证 */
handleSelfSave(){
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
if(this.chosenList.length>0){
uni.showModal({
title: `确认自主存证?`,
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
this.batchSelfSave();
}
}
});
}else{
uni.$u.toast(`未勾选任务!`)
}
},
async batchSelfSave() {
console.log(this.chosenList)
const params = {"certificateNos":this.chosenList,"type":"1"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
/** 管理员存证 */
handleAdminBack(){
this.chosenList=[]
this.infoList.forEach(item=>{
if(item.checked.length>0){
this.chosenList.push(item.certificateNo)
}
})
console.log(this.chosenList)
if(this.chosenList.length>0){
uni.showModal({
title: `确认管理员存证?`,
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
this.batchAdminSave();
}
}
});
}else{
uni.$u.toast(`未勾选任务!`)
}
},
async batchAdminSave() {
console.log(this.chosenList)
const params = {"certificateNos":this.chosenList,"type":"2"}
try {
const res = await addCertificateSaveApi(params)
this.getList()
console.log('?? ~ getList ~ res:', res)
} catch (error) {
console.log(error)
}
},
}
}
</script>
<style lang="scss" scoped>
.certificate-list {
height: 100vh;
background-color: #f8f8f8;
padding: 30rpx;
}
.info-item{
width: 100%;
height: auto;
display: flex;
align-items: center;
margin: 10rpx auto;
border-bottom: 1px solid #ccc;
}
.label-box{
width: 100%;
height: auto;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2px;
}
.label-view{
width: 100%;
display: flex;
align-items: center;
}
.label{
font-weight: 600;
}
.text{
}
.button-view{
width:20%;height:50rpx;line-height: 50rpx;text-align: center;
color: #FFF;border-radius: 10rpx;font-size: 22rpx;
}
</style>

View File

@ -2,7 +2,20 @@
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<view class="top-view"></view>
<view class="center-box">
<view class="grid-box">
<view class="grid-box" v-for="(item,index) in routerList" :key="index">
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;align-items: center;">
<view style="font-size: 28rpx;font-weight: 600;">{{item.meta.title}}</view>
</view>
<view class="grid-container">
<view class="grid-item" v-for="(sitem,sindex) in item.children" :key="sindex" @click="navigateTo(sitem.path)">
<view class="icon-wrapper">
<image style="width: 120rpx;height: 120rpx;" src="/static/images/my/personalInfo.png"></image>
</view>
<text class="icon-text">{{sitem.meta.title}}</text>
</view>
</view>
</view>
<!-- <view class="grid-box">
<view style="width: 100%;height: auto;display: flex;justify-content: space-between;align-items: center;">
<view style="font-size: 28rpx;font-weight: 600;">证件管理</view>
</view>
@ -51,19 +64,21 @@
<text class="icon-text">证件取证</text>
</view>
</view>
</view>
</view> -->
</view>
</template>
<script>
import { getRoutersApi} from "@/api/index/index.js";
export default {
data() {
return {
fontValue:uni.getStorageSync('fontSize') || 8,
routerList:[]
}
},
onShow() {
this.getUserInfo()
this.getRouters()
},
onLoad() {
@ -71,15 +86,15 @@ export default {
onUnload() {
},
methods: {
//
getUserInfo(){
// this.$store.dispatch('GetInfo').then(res => {
// uni.setStorageSync('userId', res.user.userId)
// uni.setStorageSync('userName', res.user.userName)
// uni.setStorageSync('phonenumber', res.user.phonenumber)
// uni.setStorageSync('mobile', res.user.phonenumber)
// })
},
getRouters() {
getRoutersApi().then(res => {
if(res.code==200){
if(res.data.length>0){
this.routerList=res.data[0].children
}
}
})
},
navigateTo(url) {
uni.navigateTo({
url