Merge branch 'dev' of http://47.109.205.240:3000/Web/daimp-front into dev
This commit is contained in:
commit
ed9075e569
@ -230,6 +230,18 @@ export const constantRoutes = [
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
{
|
||||
path: 'farmPolicy',
|
||||
component: () => import('@/views/farmingService/farmingConsult/index.vue'),
|
||||
name: 'farmPolicy',
|
||||
meta: { title: '农业政策', hideInBread: true },
|
||||
},
|
||||
{
|
||||
path: 'farmPolicyDetail',
|
||||
component: () => import('@/views/farmingService/farmingConsult/policyDetail.vue'),
|
||||
name: 'farmPolicyDetail',
|
||||
meta: { title: '农业政策详情' },
|
||||
},
|
||||
{
|
||||
path: 'laborServices',
|
||||
component: () => import('@/views/farmingService/farmingConsult/laborServices.vue'),
|
||||
@ -249,6 +261,12 @@ export const constantRoutes = [
|
||||
name: 'agriculturalMachinery',
|
||||
meta: { title: '农机服务' },
|
||||
},
|
||||
{
|
||||
path: 'agriculturalMachineryDel',
|
||||
component: () => import('@/views/farmingService/farmingConsult/agriculturalMachineryDel.vue'),
|
||||
name: 'agriculturalMachineryDel',
|
||||
meta: { title: '农机服务详情' },
|
||||
},
|
||||
{
|
||||
path: 'agriculturalTechnology',
|
||||
component: () => import('@/views/farmingService/farmingConsult/agriculturalTechnology.vue'),
|
||||
|
@ -48,32 +48,59 @@ const router = useRouter();
|
||||
|
||||
const leftMenu = reactive([
|
||||
{
|
||||
name: 'inspection',
|
||||
title: '农事',
|
||||
name: 'farmPolicy',
|
||||
title: '农业政策',
|
||||
icon: 'menu1.png',
|
||||
path: '',
|
||||
isOpen: false,
|
||||
children: [
|
||||
{
|
||||
name: 'laborServices',
|
||||
title: '劳务用工',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/laborServices',
|
||||
},
|
||||
{
|
||||
name: 'agriculturalMachinery',
|
||||
title: '农机服务',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/agriculturalMachinery',
|
||||
},
|
||||
{
|
||||
name: 'agriculturalTechnology',
|
||||
title: '农技服务',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/agriculturalTechnology',
|
||||
},
|
||||
],
|
||||
path: '/sub-operation-service/farmService/consult/farmPolicy',
|
||||
},
|
||||
{
|
||||
name: 'laborServices',
|
||||
title: '劳务用工',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/laborServices',
|
||||
},
|
||||
{
|
||||
name: 'agriculturalMachinery',
|
||||
title: '农机服务',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/agriculturalMachinery',
|
||||
},
|
||||
{
|
||||
name: 'agriculturalTechnology',
|
||||
title: '农技服务',
|
||||
icon: 'menu1.png',
|
||||
path: '/sub-operation-service/farmService/consult/agriculturalTechnology',
|
||||
},
|
||||
//farmPolicy
|
||||
|
||||
// {
|
||||
// name: 'inspection',
|
||||
// title: '农事',
|
||||
// icon: 'menu1.png',
|
||||
// path: '',
|
||||
// isOpen: false,
|
||||
// children: [
|
||||
// {
|
||||
// name: 'laborServices',
|
||||
// title: '劳务用工',
|
||||
// icon: 'menu1.png',
|
||||
// path: '/sub-operation-service/farmService/consult/laborServices',
|
||||
// },
|
||||
// {
|
||||
// name: 'agriculturalMachinery',
|
||||
// title: '农机服务',
|
||||
// icon: 'menu1.png',
|
||||
// path: '/sub-operation-service/farmService/consult/agriculturalMachinery',
|
||||
// },
|
||||
// {
|
||||
// name: 'agriculturalTechnology',
|
||||
// title: '农技服务',
|
||||
// icon: 'menu1.png',
|
||||
// path: '/sub-operation-service/farmService/consult/agriculturalTechnology',
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
|
||||
// {
|
||||
// name: 'control',
|
||||
// title: '生产管理控制',
|
||||
|
@ -210,11 +210,11 @@ const changeChoose = (type, index) => {
|
||||
};
|
||||
|
||||
const goDetail = (id) => {
|
||||
ElMessage({
|
||||
message: '功能正在维护中,请稍后点击',
|
||||
type: 'warning',
|
||||
});
|
||||
// router.push('/sub-operation-service/farmService/consult/laborServicesDel?id=' + id);
|
||||
// ElMessage({
|
||||
// message: '功能正在维护中,请稍后点击',
|
||||
// type: 'warning',
|
||||
// });
|
||||
router.push('/sub-operation-service/farmService/consult/agriculturalMachineryDel?id=' + id);
|
||||
};
|
||||
// #endregion
|
||||
</script>
|
||||
|
@ -0,0 +1,380 @@
|
||||
<template>
|
||||
<div>
|
||||
<common>
|
||||
<template #main>
|
||||
<div style="background-color: #fff; padding: 10px">
|
||||
<div class="top">
|
||||
<div class="top_hot">金牌</div>
|
||||
<div class="top_impatient">急聘</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; justify-content: space-between">
|
||||
<div style="text-align: left">
|
||||
<div class="top_title">农业专业林老师</div>
|
||||
<div class="top_subtitle">云南省临沧市耿马新城村 种植 发布于5天前</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="top_price">220/天</div>
|
||||
<div class="top_updata">立即申请</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<div style="display: flex">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">服务年限</div>
|
||||
<div>10年</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-left: 200px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">完成订单</div>
|
||||
<div>128单</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-left: 200px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">平均评分</div>
|
||||
<div>5.0</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; text-align: left; margin-top: 20px">
|
||||
<div style="font-size: 15px; font-weight: bold">技能描述</div>
|
||||
<div style="line-height: 30px; font-size: 12px; color: #aaa; margin-top: 10px">
|
||||
本人从事水稻种植工作已有10年,拥有丰富的水稻种植经验,熟悉水稻从选种、育秧、移栽到收割的全过程。
|
||||
擅长解决水稻种植过程中的各种病虫害问题,能够根据不同的土壤条件和气候特点,制定科学合理的种植方案。
|
||||
可提供水稻种植技术指导、病虫害防治、田间管理等服务,保证水稻的产量和质量。
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; text-align: left; margin-top: 20px">
|
||||
<div style="font-size: 15px; font-weight: bold">服务内容</div>
|
||||
<div class="top_info">
|
||||
<div>水稻品种选择与推荐</div>
|
||||
<div style="margin-left: 300px">指导</div>
|
||||
</div>
|
||||
<div class="top_info">
|
||||
<div>稻田管理与施肥</div>
|
||||
<div style="margin-left: 325px">防治</div>
|
||||
</div>
|
||||
<div class="top_info">
|
||||
<div>收割与储存建议</div>
|
||||
<div style="margin-left: 295px">植物技术指导</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div style="width: 100%; text-align: left; margin-top: 20px">
|
||||
<div style="font-size: 15px; font-weight: bold">服务描述</div>
|
||||
<div style="line-height: 30px; font-size: 12px; color: #aaa; margin-top: 10px">
|
||||
我们是一家专业从事农业种植的企业,现因春耕生产需要,诚招有经验的种植工人,主要负责水稻、玉米等农作物的种植工作。
|
||||
工作内容包括土地翻耕、播种、育苗、移栽、田间管理等,要求身体健康,能吃苦耐劳,有相关种植经验者优先。
|
||||
我们提供食宿,工作环境良好,薪资待遇优厚,欢迎有兴趣的朋友加入我们的团队!
|
||||
</div>
|
||||
</div> -->
|
||||
<div style="width: 100%; text-align: left; margin-top: 20px; display: flex">
|
||||
<div style="width: 50%">
|
||||
<div style="font-size: 15px; font-weight: bold">服务流程</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">需求沟通</div>
|
||||
<div>详细了解您的种植需求和田间情况</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">方案制定</div>
|
||||
<div>根据您的需求和实际情况,制定详细的服务方案</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">签订协议</div>
|
||||
<div>双方确认服务方案,签订服务协议</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">服务实施</div>
|
||||
<div>按照协议约定的时间和内容,提供专业的种植服务</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">验收评价</div>
|
||||
<div>服务完成后,进行验收并提供服务评价</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div style="width: 50%">
|
||||
<div style="font-size: 15px; font-weight: bold">联系信息</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">联系人</div>
|
||||
<div>王经理</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">联系电话</div>
|
||||
<div>138****5678</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 20px">
|
||||
<div>
|
||||
<img style="width: 40px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #aaa">邮箱</div>
|
||||
<div>wang@nongye.com</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
margin-top: 10px;
|
||||
padding: 5px 20px;
|
||||
background-color: #ff9800;
|
||||
width: 300px;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
"
|
||||
>
|
||||
联系电话
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div style="width: 100%; text-align: left; margin-top: 20px">
|
||||
<div style="font-size: 15px; font-weight: bold">服务案例</div>
|
||||
<div style="margin-top: 20px; display: flex; justify-content: space-evenly">
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<img style="width: 270px; height: 150px" src="../../../assets/images/carton.png" alt="" />
|
||||
<div style="border: 1px solid #eee; border-top: none; width: 280px; padding: 10px">
|
||||
<div style="font-size: 15px; font-weight: bold">岳池县稻田增产案例</div>
|
||||
<el-rate v-model="value1" />
|
||||
<div style="font-size: 12px">通过科学的种植管理,帮助农户水稻增产20%,获得农户一致好评。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<img style="width: 270px; height: 150px" src="../../../assets/images/carton.png" alt="" />
|
||||
<div style="border: 1px solid #eee; border-top: none; width: 280px; padding: 10px">
|
||||
<div style="font-size: 15px; font-weight: bold">邻水县病虫害防治案例</div>
|
||||
<el-rate v-model="value1" />
|
||||
<div style="font-size: 12px">有效防治水稻稻瘟病,避免了农户的经济损失,得到当地政府的认可。</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<img style="width: 270px; height: 150px" src="../../../assets/images/carton.png" alt="" />
|
||||
<div style="border: 1px solid #eee; border-top: none; width: 280px; padding: 10px">
|
||||
<div style="font-size: 15px; font-weight: bold">邻水县稻田增产案例</div>
|
||||
<el-rate v-model="value1" />
|
||||
<div style="font-size: 12px">通过科学的种植管理,帮助农户水稻增产20%,获得农户一致好评。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; text-align: left; margin-top: 20px">
|
||||
<div style="font-size: 15px; font-weight: bold">客户评价</div>
|
||||
<div style="width: 100%; color: #9ea4a7; margin-top: 20px; border: 1px solid #eee; padding: 10px; border-radius: 10px">
|
||||
<div style="display: flex; align-items: center">
|
||||
<div>
|
||||
<img style="width: 50px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">刘老板</div>
|
||||
<el-rate v-model="value1" />
|
||||
<div>2025-03-10</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 10px">
|
||||
水稻种植技术非常专业,帮我解决了多年的水稻产量低问题,今年产量比去年增加了20%,非常感谢!服务态度也 很好,有问必答,非常耐心。
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; color: #9ea4a7; margin-top: 20px; border: 1px solid #eee; padding: 10px; border-radius: 10px">
|
||||
<div style="display: flex; align-items: center">
|
||||
<div>
|
||||
<img style="width: 50px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
|
||||
</div>
|
||||
<div style="margin-left: 10px; text-align: left">
|
||||
<div style="color: #000000">王老板</div>
|
||||
<el-rate v-model="value1" />
|
||||
<div>2025-03-10</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 10px">
|
||||
水稻病虫害的防治非常有经验,去年我的稻田受到稻瘟病的困扰,损失惨重。今年请张师傅来指导,及时采取了防
|
||||
治措施,稻田没有再出现病害,效果非常好。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; width: 100%; justify-content: space-between; margin-top: 20px">
|
||||
<div
|
||||
style="
|
||||
width: 30%;
|
||||
height: 80px;
|
||||
background-color: #f9fafb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
"
|
||||
>
|
||||
<div style="font-size: 20px; color: #2e7d32; font-weight: bold">12</div>
|
||||
<div style="font-size: 15px">正在招聘</div>
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
width: 30%;
|
||||
height: 80px;
|
||||
background-color: #f9fafb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
"
|
||||
>
|
||||
<div style="font-size: 20px; color: #2e7d32; font-weight: bold">56</div>
|
||||
<div style="font-size: 15px">累计发布</div>
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
width: 30%;
|
||||
height: 80px;
|
||||
background-color: #f9fafb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
"
|
||||
>
|
||||
<div style="font-size: 20px; color: #2e7d32; font-weight: bold">98%</div>
|
||||
<div style="font-size: 15px">好评率</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</common>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, reactive } from 'vue';
|
||||
import common from '../components/common.vue';
|
||||
import { getAssetsFile } from '@/utils/index.js';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { informationList } from '@/apis/farmingService.js';
|
||||
const router = useRouter();
|
||||
let value1 = ref(5);
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.framing_service_content {
|
||||
margin: 0 auto;
|
||||
padding: 0 32px;
|
||||
width: 1200px;
|
||||
min-height: 600px;
|
||||
border: 1px solid skyblue;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.card-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 20px 0;
|
||||
text-align: left;
|
||||
}
|
||||
.choose {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
font-size: 18px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 20px;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.searchType {
|
||||
color: #999999;
|
||||
}
|
||||
.chooseAll {
|
||||
margin: 0 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.chooseItem {
|
||||
cursor: pointer;
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
.active {
|
||||
color: #25bf82;
|
||||
font-weight: bold;
|
||||
}
|
||||
.top {
|
||||
display: flex;
|
||||
.top_hot {
|
||||
background-color: #dcfce7;
|
||||
border-radius: 10px;
|
||||
color: #438c48;
|
||||
padding: 2px 10px;
|
||||
}
|
||||
.top_impatient {
|
||||
margin-left: 10px;
|
||||
background-color: #dbeafe;
|
||||
border-radius: 10px;
|
||||
color: #4886f0;
|
||||
padding: 2px 10px;
|
||||
}
|
||||
}
|
||||
.top_title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.top_subtitle {
|
||||
margin-top: 5px;
|
||||
font-size: 12px;
|
||||
color: #aaa;
|
||||
}
|
||||
.top_updata {
|
||||
padding: 8px 15px;
|
||||
background-color: #25bf82;
|
||||
color: #fff;
|
||||
border-radius: 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.top_price {
|
||||
font-weight: bold;
|
||||
color: #f59a23;
|
||||
font-size: 20px;
|
||||
}
|
||||
.top_info {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
div {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -43,7 +43,7 @@
|
||||
<div :class="{ active: chooseType === 2 }" class="chooseItem" @click="changeChoose('type', 2)">线下审批</div>
|
||||
<div :class="{ active: chooseType === 3 }" class="chooseItem" @click="changeChoose('type', 3)">秒批秒贷</div>
|
||||
</div> -->
|
||||
<!--
|
||||
<!--
|
||||
<div style="margin-top: 20px; display: flex; justify-content: space-between; font-size: 18px">
|
||||
<div>
|
||||
共匹配到 <span style="color: #25bf82">{{ pagination.total }}</span> 个结果
|
||||
@ -215,11 +215,11 @@ const changeChoose = (type, index) => {
|
||||
};
|
||||
|
||||
const goDetail = (id) => {
|
||||
ElMessage({
|
||||
message: '功能正在维护中,请稍后点击',
|
||||
type: 'warning',
|
||||
});
|
||||
// router.push('/sub-operation-service/farmService/consult/agriculturalTechnologyDel?id=' + id);
|
||||
// ElMessage({
|
||||
// message: '功能正在维护中,请稍后点击',
|
||||
// type: 'warning',
|
||||
// });
|
||||
router.push('/sub-operation-service/farmService/consult/agriculturalTechnologyDel?id=' + id);
|
||||
};
|
||||
// #endregion
|
||||
</script>
|
||||
|
@ -98,7 +98,7 @@ const queryList = () => {
|
||||
};
|
||||
|
||||
const goDetail = (id) => {
|
||||
router.push('/sub-operation-service/farmService/consult/policy/detail?id=' + id);
|
||||
router.push('/sub-operation-service/farmService/consult/farmPolicyDetail?id=' + id);
|
||||
};
|
||||
// #endregion
|
||||
</script>
|
||||
|
@ -39,7 +39,7 @@
|
||||
<div :class="{ active: chooseType === 2 }" class="chooseItem" @click="changeChoose('type', 2)">线下审批</div>
|
||||
<div :class="{ active: chooseType === 3 }" class="chooseItem" @click="changeChoose('type', 3)">秒批秒贷</div>
|
||||
</div> -->
|
||||
<!--
|
||||
<!--
|
||||
<div style="margin-top: 20px; display: flex; justify-content: space-between; font-size: 18px">
|
||||
<div>
|
||||
共匹配到 <span style="color: #25bf82">{{ pagination.total }}</span> 个结果
|
||||
|
Loading…
x
Reference in New Issue
Block a user