帮扶修改

This commit is contained in:
2025-11-07 16:10:11 +08:00
parent 44f3f78694
commit fe141a88a6
3 changed files with 144 additions and 329 deletions

View File

@@ -1,10 +1,5 @@
<template>
<AppLayout :title="title" :show-bg-image="false" @onScrollBottom="getDataList('add')">
<!-- <template #headerleft>
<view class="btnback">
<image src="@/static/icon/back.png" @click="navBack"></image>
</view>
</template> -->
<view class="main-list" :style="getBackgroundStyle('k.png')">
<view class="list-top">
<view class="list-title">
@@ -13,7 +8,7 @@
</view>
<view class="title-right button-sp-area">
<button class="mini-btn search-box-btn" type="primary" size="mini" @click="handleSearch">查询</button>
<button class="mini-btn reset-box-btn" type="default" size="mini">重置</button>
<button class="mini-btn reset-box-btn" type="default" size="mini" @click="handleReset">重置</button>
</view>
</view>
@@ -21,97 +16,53 @@
<!-- 人员姓名 -->
<view class="search-item">
<text class="label">人员姓名</text>
<input
v-model="formData.name"
class="input"
type="text"
placeholder="请输入人员姓名"
/>
<uni-easyinput v-model="formData.name" placeholder="请输入人员姓名"></uni-easyinput>
</view>
<!-- 身份证号 -->
<view class="search-item">
<text class="label">身份证号</text>
<input
v-model="formData.idCard"
class="input"
type="text"
placeholder="请输入身份证号"
/>
<uni-easyinput v-model="formData.idCard" placeholder="请输入身份证号"></uni-easyinput>
</view>
<!-- 帮扶类型下拉选择 -->
<view class="search-item">
<text class="label">帮扶类型</text>
<picker
mode="selector"
:range="helpTypes"
:value="helpTypeIndex"
@change="onHelpTypeChange"
class="picker"
>
<view class="picker-value">{{ helpTypes[helpTypeIndex] || '请选择帮扶类型' }}</view>
</picker>
<uni-data-select v-model="formData.helpType" :localdata="helpTypes" placeholder="请选择帮扶类型" @change="onHelpTypeChange"></uni-data-select>
</view>
<!-- 帮扶人员 -->
<view class="search-item">
<text class="label">帮扶人员</text>
<input
v-model="formData.helperName"
class="input"
type="text"
placeholder="请输入帮扶人员姓名"
/>
<uni-easyinput v-model="formData.helperName" placeholder="请输入帮扶人员姓名"></uni-easyinput>
</view>
<!-- 所属区域下拉选择 -->
<view class="search-item">
<text class="label">所属区域</text>
<picker
mode="selector"
:range="regions"
:value="regionIndex"
@change="onRegionChange"
class="picker"
>
<view class="picker-value">{{ regions[regionIndex] || '请选择所属区域' }}</view>
</picker>
<uni-data-picker class="picker" placeholder="请选择所属区域" popup-title="请选择所属区域" :localdata="regions" v-model="formData.helpArea"
@change="onchange" >
</uni-data-picker>
</view>
<!-- 开始时间 -->
<view class="search-item">
<text class="label">开始时间</text>
<picker
mode="date"
:value="formData.startTime"
@change="onStartTimeChange"
class="picker"
>
<view class="picker-value">{{ formData.startTime || '请选择开始时间' }}</view>
</picker>
<uni-datetime-picker type="date" placeholder="请选择开始时间" v-model="formData.startTime" @maskClick="onStartTimeChange" />
</view>
<!-- 结束时间 -->
<view class="search-item">
<text class="label">结束时间</text>
<picker
mode="date"
:value="formData.endTime"
@change="onEndTimeChange"
class="picker"
>
<view class="picker-value">{{ formData.endTime || '请选择结束时间' }}</view>
</picker>
<uni-datetime-picker type="date" placeholder="请选择结束时间" v-model="formData.endTime" @maskClick="onEndTimeChange" />
</view>
</view>
<!-- <empty v-else pdTop="200"></empty> -->
</view>
<view class="main-list" :style="getBackgroundStyle('k.png')">
<view class="list-top">
<view class="list-title">
<text>帮扶记录列表</text>
<view class="title-line"></view>
<view class="title-line" style="left: 70rpx;"></view>
</view>
<view class="title-total">
<text class="total-num">7</text>条记录
@@ -158,7 +109,7 @@
</view>
</view>
<view class="item-right">
{{item.region}}
{{item.helpArea}}
</view>
</view>
<view class="form-item">
@@ -180,7 +131,7 @@
</view>
</view>
<view class="item-right">
{{item.unit}}
{{item.helpUnit}}
</view>
</view>
<view class="form-item">
@@ -206,7 +157,7 @@
</view>
</view>
<view class="form-btns">
<button class="mini-btn form-box-btn detail-btn" size="mini" >详情</button>
<button class="mini-btn form-box-btn detail-btn" size="mini" v-if="false">详情</button>
<button class="mini-btn form-box-btn follow-btn" size="mini" @click="goFollow(item)">跟进</button>
<button class="mini-btn form-box-btn recommend-btn" size="mini" >智能推荐</button>
</view>
@@ -225,14 +176,26 @@ import config from "@/config.js"
// state
const title = ref('');
const formData = reactive({
const initialForm = {
name: '',
idCard: '',
helpType: '',
helperName: '',
helpArea: '',
startTime: '',
endTime: ''
})
const searchKeyword = ref('');
}
const formData = reactive({ ...initialForm });
// const formData = reactive({
// name: '',
// idCard: '',
// helpType:'',
// helperName: '',
// helpArea:'',
// startTime: '',
// endTime: ''
// })
const dataList=ref([])
const pageSize=ref(10)
const pageNum=ref(1)
@@ -246,22 +209,58 @@ const getBackgroundStyle = (imageName) => ({
});
const trainVideoImgUrl=config.trainVideoImgUrl
// 帮扶类型选项
const helpTypes = ['经济帮扶', '教育帮扶', '医疗帮扶', '就业帮扶']
const helpTypeIndex = ref(0)
const helpTypes = [{
"value": 0,
"text": "经济帮扶"
}, {
"value": 1,
"text": "教育帮扶"
}, {
"value": 2,
"text": "医疗帮扶"
}, {
"value": 3,
"text": "就业帮扶"
}]
// 所属区域选项(可根据实际替换为动态数据)
const regions = ['北京市', '上海市', '广州市', '深圳市', '杭州市']
const regionIndex = ref(0)
const regions = [{
text: "一年级",
value: "1-0",
children: [{
text: "1.1班",
value: "1-1"
},
{
text: "1.2班",
value: "1-2"
}]
},
{
text: "二年级",
value: "2-0",
children: [{
text: "2.1班",
value: "2-1"
},
{
text: "2.2班",
value: "2-2"
}]
},
{
text: "三年级",
value: "3-0",
disable: true
}]
// 事件处理
const onHelpTypeChange = (e) => {
helpTypeIndex.value = e.detail.value
formData.helpType=e
}
const onRegionChange = (e) => {
regionIndex.value = e.detail.value
const onchange=(e)=>{
console.log("e",e)
}
const onStartTimeChange = (e) => {
formData.startTime = e.detail.value
}
@@ -271,13 +270,11 @@ const onEndTimeChange = (e) => {
}
const handleSearch = () => {
console.log('当前搜索条件:', {
...formData,
helpType: helpTypes[helpTypeIndex.value],
region: regions[regionIndex.value]
})
// 在这里调用接口进行搜索
}
const handleReset = () =>{
Object.assign(formData, initialForm);
}
onLoad(() => {
getDataList('refresh');
});
@@ -329,8 +326,8 @@ function getDataList(type = 'add') {
startTime: '2025/11/24',
endTime: '2025/11/25',
phone:'18340050862',
region:'喀什地区',
unit:'新生社区',
helpArea:'喀什地区',
helpUnit:'新生社区',
type:'招聘单位推荐',
assistanceDate:'2025/11/25',
nextContact:'2025/11/30',
@@ -343,8 +340,8 @@ function getDataList(type = 'add') {
startTime: '2025/11/24',
endTime: '2025/11/25',
phone:'18340050862',
region:'喀什地区',
unit:'新生社区',
helpArea:'喀什地区',
helpUnit:'新生社区',
type:'招聘单位推荐',
assistanceDate:'2025/11/25',
nextContact:'2025/11/30',
@@ -352,18 +349,12 @@ function getDataList(type = 'add') {
},
]
}
// 播放视频
function goFollow(item) {
navTo(`/packageB/priority/helpFollow?id=${item.id}`);
}
</script>
<style lang="stylus" scoped>
.btnback
width: 64rpx
height: 64rpx
image
height: 100%
@@ -371,7 +362,7 @@ image
.main-list
background-color: #ffffff
padding: 20rpx 20rpx 28rpx 20rpx
padding: 20rpx 30rpx 28rpx 30rpx
margin: 30rpx 30rpx
box-shadow: 0px 3px 20px 0px rgba(0,105,234,0.1)
border-radius: 12px
@@ -426,15 +417,6 @@ image
.picker
background: #FFFFFF
flex: 1
height: 72rpx
padding: 0 20rpx
border: 1px solid #A0A0A0
border-radius: 8rpx
font-size: 28rpx
line-height: 72rpx
.picker-value
color: #666
.list-box
margin-top: 40rpx
.con-box

View File

@@ -1,10 +1,5 @@
<template>
<AppLayout :title="title" :show-bg-image="false" @onScrollBottom="getDataList('add')">
<!-- <template #headerleft>
<view class="btnback">
<image src="@/static/icon/back.png" @click="navBack"></image>
</view>
</template> -->
<AppLayout :title="title" :show-bg-image="false" >
<view class="info-box">
<view class="info-item info-line">
<image class="info-img" :src="baseUrl+'/dispatch/person-icon.png'" mode=""></image>
@@ -34,56 +29,35 @@
</view>
<view class="form-container">
<uni-forms ref="formRef" v-model="formData" :rules="rules" validate-trigger="submit">
<uni-forms ref="formRef" v-model="formData" :rules="rules" validate-trigger="submit" >
<!-- 跟进日期 -->
<uni-forms-item label="跟进日期:" name="followDate" required>
<picker mode="date" :value="formData.followDate" @change="onDateChange('followDate', $event)">
<view class="picker-value">{{ formData.followDate || '请选择跟进日期' }}</view>
</picker>
<uni-forms-item label="跟进日期:" name="followDate" required >
<uni-datetime-picker class="picker-value" type="date" placeholder="请选择跟进日期" v-model="formData.followDate" @change="onDateChange" />
</uni-forms-item>
<!-- 跟进方式 -->
<uni-forms-item label="跟进方式:" name="followMethod" required>
<picker mode="selector" :range="followMethods" :value="methodIndex" @change="onMethodChange">
<view class="picker-value">{{ followMethods[methodIndex] || '请选择跟进方式' }}</view>
</picker>
<uni-forms-item label="跟进方式:" name="followMethod" required >
<uni-data-select v-model="formData.followMethod" placeholder="请选择跟进方式" :localdata="followMethods" @change="onMethodChange"></uni-data-select>
</uni-forms-item>
<!-- 跟进内容 -->
<uni-forms-item label="跟进内容:" name="followContent" required>
<textarea
v-model="formData.followContent"
class="textarea"
placeholder="请输入跟进内容"
:maxlength="500"
/>
<uni-easyinput type="textarea" v-model="formData.followContent" placeholder="请输入跟进内容"></uni-easyinput>
</uni-forms-item>
<!-- 跟进结果 -->
<uni-forms-item label="跟进结果:" name="followResult" required>
<textarea
v-model="formData.followResult"
class="textarea"
placeholder="请输入跟进结果"
:maxlength="500"
/>
<uni-easyinput type="textarea" v-model="formData.followResult" placeholder="请输入跟进结果"></uni-easyinput>
</uni-forms-item>
<!-- 下一步计划 -->
<uni-forms-item label="下一步计划:" name="nextPlan">
<textarea
v-model="formData.nextPlan"
class="textarea"
placeholder="请输入下一步计划(可选)"
:maxlength="500"
/>
<uni-easyinput type="textarea" v-model="formData.nextPlan" placeholder="请输入下一步计划(可选)"></uni-easyinput>
</uni-forms-item>
<!-- 下次联系时间 -->
<uni-forms-item label="下次联系:" name="nextContactDate">
<picker mode="date" :value="formData.nextContactDate" @change="onDateChange('nextContactDate', $event)">
<view class="picker-value">{{ formData.nextContactDate || '请选择下次联系时间' }}</view>
</picker>
<uni-forms-item label="下次联系:" name="nextContactDate" >
<uni-datetime-picker class="picker-value" type="date" placeholder="请选择跟进日期" v-model="formData.nextContactDate" @change="onDateChange" />
</uni-forms-item>
</uni-forms>
@@ -104,11 +78,9 @@
<text class="total-num">7</text>条记录
</view>
</view>
<!-- v-if="dataList.length>0" -->
<view class="list-box" >
<uni-steps :options="list2" active-color="#007AFF" :active="active" direction="column" />
</view>
<!-- <empty v-else pdTop="200"></empty> -->
</view>
</AppLayout>
</template>
@@ -119,18 +91,28 @@ import { onLoad } from '@dcloudio/uni-app';
const { $api, navTo, navBack } = inject('globalFunction');
import config from "@/config.js"
// state
const title = ref('');
const formData = reactive({
followDate: null,
followMethod: null,
followContent: null,
followResult: null,
nextPlan: null,
nextContactDate: null
followDate: '',
followMethod: '',
followContent: '',
followResult: '',
nextPlan: '',
nextContactDate: ''
})
const followMethods = ['电话', '面谈', '微信', '邮件', '其他']
const methodIndex = ref(0)
const followMethods = [{
"value": 0,
"text": "电话"
}, {
"value": 1,
"text": "面谈"
}, {
"value": 2,
"text": "微信"
}, {
"value": 3,
"text": "邮件"
}]
const list2=[{
title: '买家下单',
desc: '跟进方式:电话\n跟进人新生社区管理员\n跟进内容内容内容内容'
@@ -151,28 +133,30 @@ const formRef = ref(null)
// 校验规则
const rules = {
followDate: {
rules: [{
required: true,
message: '请选择跟进日期'
errorMessage: '请选择跟进日期'
}]
},
followMethod: {
rules: [{
required: true,
message: '请选择跟进方式'
errorMessage: '请选择跟进方式'
}]
},
followContent: {
rules: [{
required: true,
message: '请填写跟进内容'
errorMessage: '请填写跟进内容'
}]
},
followResult: {
rules: [{
required: true,
message: '请填写跟进结果'
errorMessage: '请填写跟进结果'
}]
}
}
const searchKeyword = ref('');
const dataList=ref([])
const pageSize=ref(10)
const pageNum=ref(1)
const totalNum=ref(0)
const baseUrl = config.imgBaseUrl
const getBackgroundStyle = (imageName) => ({
backgroundImage: `url(${baseUrl}/dispatch/${imageName})`,
@@ -182,9 +166,6 @@ const getBackgroundStyle = (imageName) => ({
});
const trainVideoImgUrl=config.trainVideoImgUrl
// 所属区域选项(可根据实际替换为动态数据)
const regions = ['北京市', '上海市', '广州市', '深圳市', '杭州市']
const regionIndex = ref(0)
// 事件处理
const onDateChange = (field, e) => {
@@ -192,9 +173,6 @@ const onDateChange = (field, e) => {
}
const onMethodChange = (e) => {
const idx = e.detail.value
methodIndex.value = idx
formData.followMethod = followMethods[idx]
}
const handleSubmit = () => {
@@ -209,69 +187,14 @@ const handleSubmit = () => {
};
const handleReset = () => {
Object.keys(formData).forEach(key => {
formData[key] = ''
})
methodIndex.value = 0
uni.showToast({ title: '已重置', icon: 'none' })
}
onLoad(() => {
// getDataList('refresh');
});
// 获取视频列表
function getDataList(type = 'add') {
// let maxPage=Math.ceil(totalNum.value/pageSize.value)
// let params={}
// if (type === 'refresh') {
// pageNum.value = 1;
// params={
// category:'',
// hour:'',
// level:'',
// searchValue:searchKeyword.value,
// orderStr:'',
// pageSize:pageSize.value,
// pageNum:pageNum.value
// }
// $api.myRequest('/train/public/trainVideo/trainVideoList', params).then((resData) => {
// dataList.value=resData.rows
// totalNum.value=resData.total
// });
// }
// if (type === 'add' && pageNum.value < maxPage) {
// pageNum.value += 1;
// params={
// category:'',
// hour:'',
// level:'',
// searchValue:searchKeyword.value,
// orderStr:'',
// pageSize:pageSize.value,
// pageNum:pageNum.value
// }
// $api.myRequest('/train/public/trainVideo/trainVideoList', params).then((resData) => {
// dataList.value=dataList.value.concat(resData.rows)
// totalNum.value=resData.total
// });
// }
}
// 播放视频
function playVideo(video) {
navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`);
}
</script>
<style lang="stylus" scoped>
.btnback
width: 64rpx
height: 64rpx
image
height: 100%
width: 100%
@@ -326,16 +249,6 @@ image
height: 8rpx
background: linear-gradient(90deg, #FFAD58 0%, #FF7A5B 100%)
border-radius: 4rpx
.search-box-btn
border-radius: 32rpx !important
background: #3088FF !important
margin-right: 16rpx
.reset-box-btn
border-radius: 32rpx !important
background: #02B44D
color: #fff
.search-container
padding: 20rpx 0rpx 0rpx 0rpx
.title-total
font-size: 24rpx
color: #999999
@@ -345,10 +258,6 @@ image
margin-right: 4rpx
font-weight: bold
font-size: 26rpx
.search-item
display: flex
align-items: center
margin-bottom: 20rpx
.label
width: 160rpx
@@ -357,101 +266,19 @@ image
.input,
.picker
background: #FFFFFF
flex: 1
height: 72rpx
padding: 0 20rpx
border: 1px solid #A0A0A0
border-radius: 8rpx
font-size: 28rpx
line-height: 72rpx
.picker-value
color: #666
.list-box
margin-top: 40rpx
.con-box
background: #fff
padding: 20rpx
box-shadow: 0px 0px 6rpx 0px rgba(0,71,200,0.16)
border-radius: 24rpx
border: 1rpx solid #EDF5FF
margin-top: 30rpx
.form-title
display: flex
align-items: center
.form-name
font-weight: bold
font-size: 32rpx
color: #595959
margin-right:16rpx
.form-type
border-radius: 8rpx;
border: 2rpx solid #FF7D26;
font-size: 24rpx
color: #F1690E
padding: 4rpx 10rpx
.form-item
display: flex
align-items: center
justify-content: space-between
margin-top: 20rpx
.item-left
display: flex
align-items: center
.item-img
width: 26rpx
height: 26rpx
margin-right: 10rpx
.item-label
font-size: 26rpx
color: #B3B3B3
.item-right
font-size: 26rpx
color: #737373
.form-btns
margin-top:30rpx
.form-box-btn
border-radius: 50rpx !important
margin-right: 24rpx
padding: 0rpx 40rpx
.detail-btn
background: #EDF5FF
border: 1px solid #3088FF
font-size: 28rpx
color: #3088FF
.follow-btn
background: #EEF9F3
border: 1px solid #00933E
font-size: 28rpx
color: #00933E
.recommend-btn
background: linear-gradient(92deg, #0DCCFF 0%, #4760FF 100%)
font-size: 28rpx
color: #FFFFFF
.form-container
margin-top: 30rpx
:deep(.uni-forms-item__label)
width: 194rpx !important
font-size: 28rpx;
color: #404040;
/* 统一 picker 和 textarea 样式 */
.picker-value,
.textarea {
width: 100%;
min-height: 60rpx;
padding: 20rpx;
border: 1px solid #ddd;
border-radius: 8rpx;
font-size: 28rpx;
box-sizing: border-box;
}
.textarea {
height: 120rpx;
resize: none;
}
.button-group {
display: flex;
@@ -500,4 +327,10 @@ image
background-color: #368BFF !important
:deep(.uni-steps__column-line--before)
background-color:rgba(0,0,0,0) !important
:deep(.uni-date-x)
background: rgba(0,0,0,0) !important
:deep(.uni-stat-box)
background: rgba(0,0,0,0) !important
:deep(.uni-easyinput__content)
background: rgba(0,0,0,0) !important
</style>

View File

@@ -749,8 +749,8 @@ const navToTestPage = () => {
navTo('/pages/test/homepage-test');
};
const navToPage = () =>{
navTo('/packageB/login?flag=nw');
// navTo('/packageB/priority/helpFilter');
// navTo('/packageB/login?flag=nw');
navTo('/packageB/priority/helpFilter');
}
async function loadData() {