This commit is contained in:
wuzhimiao
2025-10-31 11:04:16 +08:00
parent e84b367360
commit a6c7678a5e
270 changed files with 35873 additions and 701 deletions

View File

@@ -84,16 +84,8 @@
></textarea>
</div>
<div class="form-item required" v-if="serviceForm.demandType == '4' || serviceForm.demandType == '5'">
<label class="form-label">人员状态</label>
<div class="radio-group">
<label class="radio-item" v-for="item in personStatusOptions" :key="item.value">
<input type="radio" name="personStatus" :value="item.value" v-model="serviceForm.personStatus" />
<span class="radio-label">{{ item.label }}</span>
</label>
</div>
</div>
</view>
// </view>
<view class="inner-part" v-if="serviceForm.demandType == '4' || serviceForm.demandType == '5'">
<div class="form-item">

View File

@@ -4,22 +4,21 @@
<u-image src="@/static/images/top.png" width="750rpx" height="496rpx" />
</view>
<view class="job-list__navbar">
<u-navbar
title="服务详情"
:autoBack="true"
bgColor="transparent"
leftIconColor="#fff"
:titleStyle="{ color: '#fff' }"
>
<u-icon
v-show="$store.getters.roles.includes('shequn')"
@tap="$store.commit('SET_SHOWEXITPOPUP', true)"
name="list"
slot="right"
size="44rpx"
color="#fff"
></u-icon>
</u-navbar>
<div class="navbar">
<view class="navbar-left" @click="goBack">
<uni-icons name="back" color="#fff" size="36"></uni-icons>
</view>
<view class="navbar-title" style="color: #fff">服务详情</view>
<view class="navbar-right">
<uni-icons
v-show="$store.getters.roles.includes('shequn')"
@tap="$store.commit('SET_SHOWEXITPOPUP', true)"
name="list"
size="44rpx"
color="#fff"
></uni-icons>
</view>
</div>
</view>
<view class="job-list__content">
<img
@@ -92,7 +91,7 @@
<view style="width: 100%;display: flex;justify-content: space-between;">
<view class="xuqiushu-box-item" @click="activeType = 1">
<view class="xuqiushu-box-item-title">
<view :style="{color: activeType == 1 ? '#1A62CE' : '#3d3d3d'}">求职需求数</view>
<view :style="{color: activeType == 1 ? '#1A62CE' : '#3d3d3d'}">求职需求数2</view>
<!-- <view style="color: #3D3D3D;">需求数</view> -->
</view>
<view class="xuqiushu-box-item-num">{{ jobSearchList.length }}</view>
@@ -390,61 +389,80 @@
closeOnClickOverlay
@close="openDeal = false"
>
<u--form
class="self-form"
labelPosition="top"
:model="formData"
:rules="rules"
ref="uForm"
labelWidth="300"
>
<u-form-item label="实际解决时间" prop="actualSolveDate" required>
<view
class="bordered"
style="width: 100%"
@click="showTime = true"
:class="{ noValue: !formData.actualSolveDate }"
>{{ formData.actualSolveDate || "请选择" }}</view
>
<u-icon slot="right" name="arrow-down" color="#A6A6A6"></u-icon>
</u-form-item>
<u-form-item label="经办人" prop="agentUserName" required>
<u--input
v-model="formData.agentUserName"
border="surround"
placeholder="请输入"
></u--input>
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
</u-form-item>
<u-form-item label="人员状态" prop="personStatus" required>
<view class="person-status-select" @click="showPersonStatusPicker = true"
:class="{noValue: !formData.personStatus}">
{{ getDictLabel(formData.personStatus, dict.personStatusList) || '请选择' }}
</view>
<u-picker
:show="showPersonStatusPicker"
:columns="[dict.personStatusList]"
keyName="dictLabel"
@confirm="onPersonStatusConfirm"
@cancel="showPersonStatusPicker = false"
/>
</u-form-item>
<u-form-item label="附件" prop="fileUrl">
<ImageUpload
:fileList="fileList"
@update="changeFile"
:maxCount="6"
/>
</u-form-item>
<div class="self-form">
<div class="form-item required">
<div class="form-label">实际解决时间</div>
<div class="form-content">
<view
class="bordered"
style="width: 100%"
@click="showTime = true"
:class="{ noValue: !formData.actualSolveDate }"
>{{ formData.actualSolveDate || "请选择" }}</view
>
<uni-icons name="arrow-down" color="#A6A6A6" size="24"></uni-icons>
</div>
</div>
<div class="form-item required">
<div class="form-label">经办人</div>
<div class="form-content">
<input
v-model="formData.agentUserName"
class="form-input"
placeholder="请输入"
/>
<uni-icons name="edit" color="#A6A6A6" size="24"></uni-icons>
</div>
</div>
<div class="form-item required">
<div class="form-label">人员状态</div>
<div class="form-content">
<view class="person-status-select" @click="showPersonStatusPicker = true"
:class="{noValue: !formData.personStatus}">
{{ getDictLabel(formData.personStatus, dict.personStatusList) || '请选择' }}
</view>
<!-- 自定义picker弹出层 -->
<uni-popup v-model="showPersonStatusPicker" mode="bottom">
<view class="picker-container">
<view class="picker-header">
<view @click="showPersonStatusPicker = false">取消</view>
<view>人员状态</view>
<view @click="onPersonStatusConfirm">确定</view>
</view>
<view class="picker-content">
<view v-for="item in dict.personStatusList" :key="item.dictValue"
class="picker-item" @click="selectPersonStatus(item)">
{{ item.dictLabel }}
</view>
</view>
</view>
</uni-popup>
</div>
</div>
<div class="form-item">
<div class="form-label">附件</div>
<div class="form-content">
<ImageUpload
:disabled="disabled"
:fileList="fileList"
@update="changeFile"
:maxCount="6"
/>
</div>
</div>
<u-form-item label="解决说明" prop="solveDesc" required>
<u-textarea
v-model="formData.solveDesc"
placeholder="请输入"
></u-textarea>
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
</u-form-item>
</u--form>
<div class="form-item required">
<div class="form-label">解决说明</div>
<div class="form-content">
<textarea
v-model="formData.solveDesc"
class="form-textarea"
placeholder="请输入"
></textarea>
<uni-icons name="edit" color="#A6A6A6" size="24"></uni-icons>
</div>
</div>
</div>
<view class="button-area">
<view class="btn" @click="openDeal = false">取消</view>
<view
@@ -582,6 +600,7 @@ export default {
},
openDeal: false,
activeType: 1,
disabled: false,
showPersonStatusPicker: false,
personStatusLabel: '',
};
@@ -590,14 +609,15 @@ export default {
this.form.id = options.id;
this.form.userId = options.userId;
this.getPersonInfo();
this.getPersonInfo11();
},
onShow() {
// 移除show重置避免影响弹窗显示
this.getListPersonDemand();
this.serviceTraceability();
// this.serviceTraceability();
},
mounted() {
this.getPersonInfo11();
let arr = [
{
key: "qcjy_zgzpgz",
@@ -626,6 +646,22 @@ export default {
},
methods: {
// 返回上一页
goBack() {
uni.navigateBack();
},
// 选择人员状态
selectPersonStatus(item) {
this.formData.personStatus = item.dictValue;
this.showPersonStatusPicker = false;
},
// 确认人员状态选择
onPersonStatusConfirm() {
// 已在selectPersonStatus中处理
},
getJobWorkTypeName(data) {
if (data) {
let arr = this.jobTypeList.filter((ele) => ele.id == data);
@@ -648,12 +684,7 @@ export default {
this.show = false;
// console.log('close');
},
serviceTraceability() {
const userId = this.form.userId;
serviceTraceability(userId).then((res) => {
this.serviceTotal = res.data;
});
},
goAddServices() {
uni.navigateTo({
@@ -888,10 +919,11 @@ export default {
});
},
getPersonInfo() {
getPersonInfo11() {
getPersonInfo(this.form.id).then((res) => {
if (res.code == 200) {
this.form = res.data;
console.log("res.data",res.data)
}
});
},
@@ -900,6 +932,118 @@ export default {
</script>
<style lang="scss" scoped>
/* 表单样式 */
.self-form {
padding: 20rpx;
}
.form-item {
margin-bottom: 30rpx;
}
.form-item.required .form-label::after {
content: '*';
color: #ff4d4f;
margin-left: 4rpx;
}
.form-label {
font-size: 28rpx;
color: #333;
margin-bottom: 12rpx;
}
.form-content {
position: relative;
}
.form-input {
width: 100%;
padding: 20rpx;
border: 1rpx solid #d9d9d9;
border-radius: 8rpx;
font-size: 28rpx;
background-color: #fff;
}
.form-textarea {
width: 100%;
min-height: 200rpx;
padding: 20rpx;
border: 1rpx solid #d9d9d9;
border-radius: 8rpx;
font-size: 28rpx;
background-color: #fff;
resize: none;
}
/* 导航栏样式 */
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 30rpx;
width: 100%;
box-sizing: border-box;
position: relative;
}
.navbar-left,
.navbar-right {
width: 60rpx;
text-align: center;
}
.navbar-title {
flex: 1;
text-align: center;
font-size: 36rpx;
font-weight: 500;
}
/* 自定义picker样式 */
.picker-container {
background-color: #fff;
border-radius: 20rpx 20rpx 0 0;
padding-bottom: 30rpx;
}
.picker-header {
display: flex;
justify-content: space-between;
padding: 20rpx 30rpx;
border-bottom: 1rpx solid #f0f0f0;
}
.picker-header > view {
font-size: 32rpx;
color: #333;
}
.picker-header > view:first-child {
color: #999;
}
.picker-header > view:last-child {
color: #1A62CE;
}
.picker-content {
max-height: 500rpx;
overflow-y: auto;
}
.picker-item {
padding: 24rpx 30rpx;
font-size: 30rpx;
color: #333;
border-bottom: 1rpx solid #f5f5f5;
}
.picker-item:active {
background-color: #f5f5f5;
}
.job-list {
&__navbar {
height: 80rpx;

View File

@@ -138,7 +138,6 @@
@confirm="confirmDate('hopeSolveDate', $event)" @cancel="cancelPicker('hopeSolveDate')"></u-datetime-picker>
<u-picker :show="show.jobWorkType" :columns="[jobTypeList]" keyName="workTypeName"
@confirm="jobTypeConfirm('jobWorkType', $event)" @cancel="cancelPicker('jobWorkType')"></u-picker>
<!-- 使用dict.type语法访问字典数据 -->
<u-picker :show="show.emplymentYear" :columns="[dict.type[this.dictTypeMap.emplymentYear]]" keyName="label"
@confirm="pickerConfirm('emplymentYear', $event)" @cancel="cancelPicker('emplymentYear')"></u-picker>
<u-picker :show="show.salaryType" :columns="[dict.type[this.dictTypeMap.salaryType]]" keyName="label"

View File

@@ -1,7 +1,7 @@
<template>
<view class="job-list">
<view class="top_box_bg">
<u-image src="../../static/images/top.png" width="750rpx" height="496rpx" />
// <u-image src="../../static/images/top.png" width="750rpx" height="496rpx" />
</view>
<view class="job-list__navbar">
<u-navbar
@@ -24,7 +24,7 @@
<view class="job-list__content">
<img
class="top_box_bg_service"
src="../static/images/person/serviceFrequency.png"
src=""
width="360rpx"
height="50rpx"
alt=""
@@ -64,13 +64,13 @@
</view>
<view>
<img
src="../../static/images/person/malepng.png"
src=""
v-if="form.gender == 0"
width="70rpx"
alt=""
/>
<img
src="../../static/images/person/femalepng.png"
src=""
v-if="form.gender == 1"
width="70rpx"
alt=""
@@ -80,7 +80,7 @@
<view class="visitAndInvestigate" @click="goAddServices">
<view class="text">服务</view>
<img
src="../../static/images/person/fillInRecords.png"
src=""
width="140rpx"
height="40rpx"
alt=""
@@ -382,7 +382,7 @@
</view>
</view>
<view class="addNeeds" @click="goAddNeeds">
<img src="./static/images/person/addNeeds1.png" />
<img src="" />
</view>
<u-popup
:show="openDeal"
@@ -464,7 +464,7 @@
<view class="dialog_div">
<view class="dialog_div_item" @click="goAddNeeds(1)">
<img
src="./static/images/person/entrepreneurialIcon.png"
src=""
style="margin-right: 10rpx"
width="18rpx"
alt=""
@@ -474,7 +474,7 @@
</view>
<view class="dialog_div_item" @click="goAddNeeds(3)">
<img
src="./static/images/person/jobSeekingIcon.png"
src=""
style="margin-right: 10rpx"
width="18rpx"
alt=""
@@ -484,7 +484,7 @@
</view>
<view class="dialog_div_item" @click="goAddNeeds(4)">
<img
src="./static/images/person/trainingIcon.png"
src=""
style="margin-right: 10rpx"
width="18rpx"
alt=""
@@ -494,7 +494,7 @@
</view>
<view class="dialog_div_item" @click="goAddNeeds(5)">
<img
src="./static/images/selected.png"
src="."
style="margin-right: 10rpx"
width="18rpx"
alt=""
@@ -868,6 +868,7 @@ this.tt()
getPersonInfo(this.form.id).then((res) => {
if (res.code == 200) {
this.form = res.data;
console.log("res",res.data)
}
});
},

View File

@@ -29,10 +29,7 @@
/>
</view>
<view class="remember-area">
<checkbox v-model="loginForm.rememberMe" class="remember-checkbox"></checkbox>
<text class="remember-text">记住密码</text>
</view>
<button class="login-btn" @click="useVerify">登录</button>
</view>