181 lines
5.9 KiB
Vue
181 lines
5.9 KiB
Vue
<template>
|
||
<a-card :loading="loading">
|
||
<div >
|
||
<a-descriptions size="default" bordered class="txt">
|
||
<a-descriptions-item label="头像">
|
||
<template v-slot>
|
||
<a-avatar :src="errandInfo.errandAvatarUrl" style="width: 100px;height: 100px;"/>
|
||
</template>
|
||
</a-descriptions-item>
|
||
<a-descriptions-item label="用户名称">{{ errandInfo?.errandName }}</a-descriptions-item>
|
||
<a-descriptions-item label="用户性别">
|
||
<div v-if="errandInfo.gender === 1">
|
||
<a-tag color="blue">男</a-tag>
|
||
</div>
|
||
<div v-else-if="errandInfo.gender === 0">
|
||
<a-tag color="pink">女</a-tag>
|
||
</div>
|
||
</a-descriptions-item>
|
||
<a-descriptions-item label="联系方式">{{ errandInfo?.errandPhone }}</a-descriptions-item>
|
||
<a-descriptions-item label="配送范围">{{ errandInfo?.distributionScope }}</a-descriptions-item>
|
||
<a-descriptions-item label="银行卡号">{{ errandInfo?.bankCard }}</a-descriptions-item>
|
||
<a-descriptions-item label="身份证正面">
|
||
<template v-slot>
|
||
<a-image :src="errandInfo.frontIdCard" style="width: 158.5px; height: 100px;"/>
|
||
</template>
|
||
</a-descriptions-item>
|
||
<a-descriptions-item label="身份证反面">
|
||
<template v-slot>
|
||
<a-image :src="errandInfo.backIdCard" style="width: 158.5px; height: 100px"/>
|
||
</template>
|
||
</a-descriptions-item>
|
||
<a-descriptions-item label="当前状态">
|
||
<div v-if="errandInfo.state === 0">
|
||
<a-tag color="orange">未审核</a-tag>
|
||
</div>
|
||
<div v-else-if="errandInfo.state === 1">
|
||
<a-tag color="green">快送员正常</a-tag>
|
||
</div>
|
||
<div v-else-if="errandInfo.state === 2">
|
||
<a-tag color="red">快送员驳回</a-tag>
|
||
</div>
|
||
</a-descriptions-item>
|
||
|
||
<template #bodyCell="{ column, record }">
|
||
<template v-if="column.key === 'businessAvatar'">
|
||
<a-avatar :src="record.businessAvatar"/>
|
||
</template>
|
||
<template v-else-if="column.key === 'license'">
|
||
<a-image :src="record.license" style="width: 100px;height: 100px;"></a-image>
|
||
</template>
|
||
<template v-else-if="column.key === 'frontIdCard'">
|
||
<a-image :src="record.frontIdCard" style="width: 100px;height: 100px;"></a-image>
|
||
</template>
|
||
<template v-else-if="column.key === 'backIdCard'">
|
||
<a-image :src="record.backIdCard" style="width: 100px;height: 100px;"></a-image>
|
||
</template>
|
||
<template v-if="column.key === 'state'">
|
||
<div v-if="record.state === 0">
|
||
<a-tag color="orange">未审核</a-tag>
|
||
</div>
|
||
<div v-else-if="record.state === 1">
|
||
<a-tag color="green">已通过</a-tag>
|
||
</div>
|
||
<div v-else-if="record.state === 2">
|
||
<a-tag color="red">未通过</a-tag>
|
||
</div>
|
||
</template>
|
||
</template>
|
||
</a-descriptions>
|
||
</div>
|
||
<a-space>
|
||
<div class="button-box">
|
||
<a-button
|
||
class="button-s"
|
||
size="small"
|
||
type="default"
|
||
style="color: blue"
|
||
@click="backPage">返回
|
||
</a-button>
|
||
<a-button
|
||
class="button-s"
|
||
size="small" v-if="state === 0"
|
||
type="primary"
|
||
style="color: white; margin-left: 15px"
|
||
danger
|
||
@click="update(2)">未通过
|
||
</a-button>
|
||
<a-button
|
||
class="button-s"
|
||
size="small" v-if="state === 0"
|
||
type="primary"
|
||
style="color: white; margin-left: 15px"
|
||
@click="update(1)">通过
|
||
</a-button>
|
||
</div>
|
||
</a-space>
|
||
</a-card>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import {useRoute} from "vue-router";
|
||
import {onMounted, ref} from "vue";
|
||
import myAxios from "../../api/myAxios";
|
||
import {backPage} from "../../utils/TableConfig";
|
||
import {message} from "ant-design-vue";
|
||
import router from "../../router";
|
||
|
||
const state = ref(0)
|
||
const route = useRoute();
|
||
const loading = ref(false);
|
||
const errandInfo: any = ref({});
|
||
const errandId = ref<string | null>(null);
|
||
|
||
|
||
if (typeof route.query.id === 'string') {
|
||
errandId.value = route.query.id;
|
||
}
|
||
|
||
console.log(errandId.value);
|
||
|
||
onMounted(() => {
|
||
if(errandId.value !== null) {
|
||
getErrandVO(errandId.value);
|
||
}
|
||
});
|
||
|
||
const getErrandVO = async (id: string) => {
|
||
loading.value = true;
|
||
try {
|
||
// 修改参数传递方式为query params
|
||
const res: any = await myAxios.post('/errand/get/id', null, {
|
||
params: {
|
||
errandId1: id // 直接使用参数id
|
||
}
|
||
});
|
||
|
||
console.log(res)
|
||
if (res.code === 0 && res.data) {
|
||
errandInfo.value = res.data || {};
|
||
state.value = res.data.state ?? 0;
|
||
}else if(res.code===40000){
|
||
message.error(res.description);
|
||
router.go(-1)
|
||
}else {
|
||
message.error(`获取数据失败:${res.message}`);
|
||
}
|
||
} catch (error) {
|
||
console.error("Error fetching data:", error);
|
||
message.error('请求过程中出现错误,请稍后再试');
|
||
} finally {
|
||
loading.value = false;
|
||
}
|
||
}
|
||
|
||
const update = async (newState: number) => {
|
||
try {
|
||
// 构建请求体,仅包含'id'和'state'
|
||
const requestBody = {
|
||
id: errandId.value || '',
|
||
state: newState,
|
||
};
|
||
|
||
const res: any = await myAxios.post("/errand/update", requestBody, {
|
||
headers: {
|
||
'Content-Type': 'application/json', // 修改为JSON格式,如果你的后端接受JSON的话
|
||
}
|
||
});
|
||
|
||
if (res.code === 0) {
|
||
message.success("已审核");
|
||
state.value = newState; // 更新本地状态
|
||
} else {
|
||
message.error(`审核失败:${res.message}`);
|
||
}
|
||
} catch (error) {
|
||
console.error("更新状态失败:", error);
|
||
message.error('请求过程中出现错误');
|
||
}
|
||
}
|
||
</script>
|