添加和修改功能
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="upload-container">
|
<view class="upload-container">
|
||||||
<input type="file" multiple="multiple" accept="image/*" @change="handleFileChange">
|
<view @click="chooseAndUploadFile" class="upload-button">+ 上传文件</view>
|
||||||
<!-- <uni-upload :disabled="disabled" :width="width" :height="height" :fileList="internalFileList" :name="name" :multiple="multiple"
|
<view v-for="(item, index) in internalFileList" :key="index" class="files-list">
|
||||||
:maxCount="maxCount" @afterRead="handleAfterRead" @delete="handleRemove">
|
<view class="file-name">{{ item.file.name }}</view>
|
||||||
</uni-upload> -->
|
<view class="delete-btn" @click="deleteFile(index)">删除</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -11,7 +12,9 @@
|
|||||||
// import {
|
// import {
|
||||||
// uploadImg
|
// uploadImg
|
||||||
// } from '@/api/company'
|
// } from '@/api/company'
|
||||||
import config from '@/config'
|
// import config from '@/config'
|
||||||
|
import config from '@/utilsRc/config.js'
|
||||||
|
import { getToken } from "@/utilsRc/auth";
|
||||||
//import {
|
//import {
|
||||||
// getToken
|
// getToken
|
||||||
//} from '@/utils/auth'
|
//} from '@/utils/auth'
|
||||||
@@ -23,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
allowedFormats: {
|
allowedFormats: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => [], // 允许的文件格式
|
default: () => ['.png', '.jpg', '.jpeg', '.doc', '.docx', '.pdf', '.xls', '.xlsx'], // 允许的文件格式
|
||||||
},
|
},
|
||||||
maxImageSize: {
|
maxImageSize: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -74,6 +77,106 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
deleteFile(index){
|
||||||
|
this.internalFileList.splice(index, 1);
|
||||||
|
},
|
||||||
|
chooseAndUploadFile() {
|
||||||
|
wx.chooseMessageFile({
|
||||||
|
count: this.maxCount,
|
||||||
|
extension: this.allowedFormats,
|
||||||
|
// ['.png', '.jpg', '.jpeg', '.doc', '.docx', '.pdf', '.xls', '.xlsx' ],
|
||||||
|
success: (res) => {
|
||||||
|
console.log('选择文件成功:', res);
|
||||||
|
if(this.maxCount - this.internalFileList.length < res.tempFiles.length){
|
||||||
|
uni.showToast({
|
||||||
|
title: '最多只能上传' + this.maxCount + '个文件',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let path = "";
|
||||||
|
const twoMBInBytes = 2 * 1024 * 1024; // 2MB转换为字节数
|
||||||
|
res.tempFiles.forEach((file) => {
|
||||||
|
|
||||||
|
if (file.size > twoMBInBytes) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "图片大小不能超过2MB",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (res.tempFiles && res.tempFiles.length > 0) {
|
||||||
|
path = file.path;
|
||||||
|
if (this.allowedFormats.indexOf('.'+path.split(".")[1])!=-1) {
|
||||||
|
uni.showLoading();
|
||||||
|
const tempFilePath = file;
|
||||||
|
uni.uploadFile({
|
||||||
|
url: config.baseUrl+'/system/oss/upload', //图片上传地址
|
||||||
|
filePath: tempFilePath.path,
|
||||||
|
name: 'file',
|
||||||
|
formData: {},
|
||||||
|
header: {
|
||||||
|
// 'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJQSlUyVlJCc1E1aXRMMWgxdjNkcVh2eER1c2VVc0hvRiIsInVzZXJJZCI6MX0.z4Z2XqgXyU0GQU-i7Bsa5T-zCKApTxj1YQ73rk7bAVo'
|
||||||
|
'Authorization': 'Bearer ' + getToken(),
|
||||||
|
},
|
||||||
|
success: (res) => {
|
||||||
|
var data = JSON.parse(res.data);
|
||||||
|
console.log(data, 'sdfjiosdjfoi')
|
||||||
|
if(data.code==200) {
|
||||||
|
this.internalFileList.push({
|
||||||
|
url: data.data.url,
|
||||||
|
file: file
|
||||||
|
})
|
||||||
|
this.$emit('update', this.internalFileList);
|
||||||
|
// this.serviceForm.fileUrl = this.internalFileList.map(item => item.url).join(',')
|
||||||
|
this.$forceUpdate()
|
||||||
|
uni.hideLoading();
|
||||||
|
} else {
|
||||||
|
uni.hideLoading();
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || '上传失败',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (error) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
icon: "none",
|
||||||
|
duration: 1500,
|
||||||
|
title: `只能选择${this.allowedFormats.join('、')}格式文件`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // 添加新选择的图片到列表
|
||||||
|
// res.tempFiles.forEach((item, index) => {
|
||||||
|
// this.fileList.push({
|
||||||
|
// url: item.path,
|
||||||
|
// file: res.tempFiles[index]
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// 更新 serviceForm.fileUrl
|
||||||
|
// this.updateFileUrls();
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.error('选择图片失败:', err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
// 新增图片
|
// 新增图片
|
||||||
async handleAfterRead(event) {
|
async handleAfterRead(event) {
|
||||||
let lists = [].concat(event.file);
|
let lists = [].concat(event.file);
|
||||||
@@ -141,11 +244,25 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped lang="scss">
|
||||||
.upload-container {
|
.upload-container {
|
||||||
|
}
|
||||||
|
.files-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
justify-content: space-between;
|
||||||
justify-content: center;
|
margin-top: 10rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
.file-name{
|
||||||
|
width: calc(100% - 80rpx);
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.delete-btn{
|
||||||
|
width: 80rpx;
|
||||||
|
text-align: right;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-slot {
|
.upload-slot {
|
||||||
@@ -156,4 +273,13 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
.upload-button {
|
||||||
|
border: 1px dashed #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
width: 280rpx;
|
||||||
|
text-align: center;
|
||||||
|
background: #fff;
|
||||||
|
line-height: 64rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -68,12 +68,6 @@
|
|||||||
@change="handleAgentChange"
|
@change="handleAgentChange"
|
||||||
>
|
>
|
||||||
</uni-data-select>
|
</uni-data-select>
|
||||||
<!-- <el-option
|
|
||||||
v-for="item in jingbrList1"
|
|
||||||
:key="item.userId"
|
|
||||||
:label="item.nickName"
|
|
||||||
:value="item.userId"
|
|
||||||
></el-option> -->
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -190,10 +184,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import config from '@/utilsRc/config.js'
|
|
||||||
import {getJbrInfo} from "@/apiRc/personinfo/index"
|
import {getJbrInfo} from "@/apiRc/personinfo/index"
|
||||||
import {addInvestigate} from "@/apiRc/needs/person"
|
import {addInvestigate} from "@/apiRc/needs/person"
|
||||||
import { getDicts } from '@/apiRc/system/dict.js';
|
import { getDicts } from '@/apiRc/system/dict.js';
|
||||||
|
import config from '@/utilsRc/config.js'
|
||||||
import { getToken } from "@/utilsRc/auth";
|
import { getToken } from "@/utilsRc/auth";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@@ -401,25 +395,6 @@ export default {
|
|||||||
console.error('选择图片失败:', err);
|
console.error('选择图片失败:', err);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// uni.chooseImage({
|
|
||||||
// count: remainingCount,
|
|
||||||
// sizeType: ['original', 'compressed'],
|
|
||||||
// sourceType: ['album', 'camera'],
|
|
||||||
// success: (res) => {
|
|
||||||
// // 添加新选择的图片到列表
|
|
||||||
// res.tempFilePaths.forEach((path, index) => {
|
|
||||||
// this.fileList.push({
|
|
||||||
// url: path,
|
|
||||||
// file: res.tempFiles[index]
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
// // 更新 serviceForm.fileUrl
|
|
||||||
// this.updateFileUrls();
|
|
||||||
// },
|
|
||||||
// fail: (err) => {
|
|
||||||
// console.error('选择图片失败:', err);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 移除图片
|
// 移除图片
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
<uni-popup ref="show" @close="close" @open="open" backgroundColor="#fff" type="bottom">
|
<uni-popup ref="show" @close="close" @open="open" background-color="#fff" type="bottom">
|
||||||
<view class="dialog_div">
|
<view class="dialog_div">
|
||||||
<view class="dialog_div_top">
|
<view class="dialog_div_top">
|
||||||
<view @click="close">取消</view>
|
<view @click="close">取消</view>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2025-10-16 15:15:47
|
* @Date: 2025-10-16 15:15:47
|
||||||
* @LastEditors: shirlwang
|
* @LastEditors: shirlwang
|
||||||
* @LastEditTime: 2025-11-05 17:29:18
|
* @LastEditTime: 2025-11-06 11:24:06
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<uni-icons color="#639AEB" type="arrow-right" size="16"></uni-icons>
|
<uni-icons color="#639AEB" type="arrow-right" size="16"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="sendManager">
|
<!-- <view class="sendManager">
|
||||||
<view class="title">
|
<view class="title">
|
||||||
<image src="../../../packageRc/static/sendManager.png"/>
|
<image src="../../../packageRc/static/sendManager.png"/>
|
||||||
任务下发管理员
|
任务下发管理员
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<view>点击查看</view>
|
<view>点击查看</view>
|
||||||
<uni-icons color="#DBAA4E" type="arrow-right" size="16"></uni-icons>
|
<uni-icons color="#DBAA4E" type="arrow-right" size="16"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="titles">
|
<view class="titles">
|
||||||
<view class="title-item active"><view>待办需求预警列表</view></view>
|
<view class="title-item active"><view>待办需求预警列表</view></view>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="personnelInformation">
|
<view class="personnelInformation">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<view class="left_name">{{ form?.name || '' }}</view>
|
<view class="left_name">{{ form.name || '' }}</view>
|
||||||
<view style="margin-top: 10rpx">
|
<view style="margin-top: 10rpx">
|
||||||
<text v-if="form.gender == 0">男</text>
|
<text v-if="form.gender == 0">男</text>
|
||||||
<text v-if="form.gender == 1">女</text>
|
<text v-if="form.gender == 1">女</text>
|
||||||
@@ -413,8 +413,8 @@
|
|||||||
></u-datetime-picker> -->
|
></u-datetime-picker> -->
|
||||||
<!-- 社区端 - 显示隐藏退出组件 -->
|
<!-- 社区端 - 显示隐藏退出组件 -->
|
||||||
<exitPopup />
|
<exitPopup />
|
||||||
|
<DealDone ref="dealDone" @finished="getListPersonDemand();"/>
|
||||||
<uni-popup background-color="#fff" type="bottom"
|
<!-- <uni-popup background-color="#fff" type="bottom"
|
||||||
ref="openDeal"
|
ref="openDeal"
|
||||||
style="position: relative; z-index: 100"
|
style="position: relative; z-index: 100"
|
||||||
closeOnClickOverlay
|
closeOnClickOverlay
|
||||||
@@ -442,25 +442,31 @@
|
|||||||
end="2030-6-20"
|
end="2030-6-20"
|
||||||
@change="change"
|
@change="change"
|
||||||
/>
|
/>
|
||||||
<!-- <text :class="formData.actualSolveDate ? 'picker-text' : 'picker-placeholder'">
|
|
||||||
{{ formData.actualSolveDate || "请选择实际解决时间" }}
|
|
||||||
</text> -->
|
|
||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="经办人" prop="agentUserName" required>
|
<uni-forms-item label="经办人" prop="agentUserName" required>
|
||||||
<view class="input-view">
|
<view class="input-view">
|
||||||
<input
|
<uni-data-select
|
||||||
v-model="formData.agentUserName"
|
style="width: 100%"
|
||||||
border="none"
|
v-model="formData.agentUserId"
|
||||||
placeholder="请输入经办人姓名"
|
placeholder="请选择经办人"
|
||||||
:customStyle="{
|
:localdata="jingbrList1"
|
||||||
padding: '28rpx 36rpx',
|
@change="handleAgentChange"
|
||||||
fontSize: '28rpx',
|
>
|
||||||
color: '#333333'
|
</uni-data-select>
|
||||||
}"
|
|
||||||
/>
|
|
||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
|
|
||||||
|
<uni-forms-item label="人员状态" prop="fileUrl">
|
||||||
|
<picker
|
||||||
|
@change="onpersonStatusChange"
|
||||||
|
:range="personStatusOptions.map(item => item.label)"
|
||||||
|
:value="getpersonStatusIndex(formData.personStatus)"
|
||||||
|
mode="selector"
|
||||||
|
>
|
||||||
|
<view style="border: 1px solid #e4e4e4;width: 100%;padding: 0 20rpx;line-height: 64rpx;white-space: nowrap;text-overflow: ellipsis;flex-grow: 1;">{{ getpersonStatusLabel(formData.personStatus) || "请选择" }}</view>
|
||||||
|
</picker>
|
||||||
|
</uni-forms-item>
|
||||||
<uni-forms-item label="附件" prop="fileUrl">
|
<uni-forms-item label="附件" prop="fileUrl">
|
||||||
<ImageUpload
|
<ImageUpload
|
||||||
:fileList="fileList"
|
:fileList="fileList"
|
||||||
@@ -474,12 +480,7 @@
|
|||||||
<textarea
|
<textarea
|
||||||
v-model="formData.solveDesc"
|
v-model="formData.solveDesc"
|
||||||
placeholder="请输入解决说明"
|
placeholder="请输入解决说明"
|
||||||
:customStyle="{
|
style="padding: 28rpx 36rpx;border: 1px solid #e4e4e4;padding: 10rpx;border-radius: 8rpx;font-size: 28rpx;color:#333333;height: 120rpx;"
|
||||||
padding: '28rpx 36rpx',
|
|
||||||
fontSize: '28rpx',
|
|
||||||
color: '#333333',
|
|
||||||
minHeight: '120rpx'
|
|
||||||
}"
|
|
||||||
></textarea>
|
></textarea>
|
||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
@@ -495,11 +496,11 @@
|
|||||||
"
|
"
|
||||||
>重置</view
|
>重置</view
|
||||||
>
|
>
|
||||||
<view class="btn save" @click="finishJobRecommend(needsType)"
|
<view class="btn save" @click="finishJobRecommend()"
|
||||||
>办结</view
|
>办结</view
|
||||||
>
|
>
|
||||||
</view>
|
</view>
|
||||||
</uni-popup>
|
</uni-popup> -->
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -512,11 +513,14 @@ import { getPersonInfo } from "../../api/company/index.js";
|
|||||||
// import { listEntrepreneurshipService } from "@/api/needs/entrepreneurshipService";
|
// import { listEntrepreneurshipService } from "@/api/needs/entrepreneurshipService";
|
||||||
// import { listTrainService, delTrainService } from "@/api/needs/trainService";
|
// import { listTrainService, delTrainService } from "@/api/needs/trainService";
|
||||||
import { listJobType } from "../../api/jobType/index";
|
import { listJobType } from "../../api/jobType/index";
|
||||||
import ImageUpload from "@/packageRc/components/ImageUpload";
|
// import ImageUpload from "@/packageRc/components/ImageUpload";
|
||||||
|
import {getJbrInfo} from "@/apiRc/personinfo/index"
|
||||||
|
import DealDone from "../needs/dealDone.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "serviceDetails",
|
name: "serviceDetails",
|
||||||
components: {
|
components: {
|
||||||
ImageUpload,
|
// ImageUpload,
|
||||||
|
DealDone,
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
@@ -580,6 +584,8 @@ export default {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
showPersonStatusPicker: false,
|
showPersonStatusPicker: false,
|
||||||
personStatusLabel: '',
|
personStatusLabel: '',
|
||||||
|
jingbrList1: [],
|
||||||
|
personStatusOptions: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
@@ -588,6 +594,22 @@ export default {
|
|||||||
this.form.userId = options.userId; // 确保userId被正确赋值
|
this.form.userId = options.userId; // 确保userId被正确赋值
|
||||||
console.log("options", options);
|
console.log("options", options);
|
||||||
this.getPersonInfo11();
|
this.getPersonInfo11();
|
||||||
|
this.$getDict('qcjy_ryzt').then(res => {
|
||||||
|
if (res.data && Array.isArray(res.data)) {
|
||||||
|
this.personStatusOptions = res.data.map(item => ({
|
||||||
|
value: item.dictValue,
|
||||||
|
label: item.dictLabel
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
getJbrInfo().then(res => {
|
||||||
|
this.jingbrList1=res.map(ele => {
|
||||||
|
return {
|
||||||
|
value: ele.userId,
|
||||||
|
text: ele.nickName
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
@@ -598,42 +620,43 @@ export default {
|
|||||||
created(){
|
created(){
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
|
|
||||||
// 注释掉getDicts调用,避免运行时错误
|
|
||||||
/*
|
|
||||||
let arr = [
|
|
||||||
{
|
|
||||||
key: "qcjy_zgzpgz",
|
|
||||||
prop: "highRecruitmentSalary",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "qcjy_zgzpgz",
|
|
||||||
prop: "minRecruitmentSalary",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "qcjy_ryzt",
|
|
||||||
prop: "personStatusList",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
arr.forEach((ele, index) => {
|
|
||||||
this.$getDict(ele.key).then((res) => {
|
|
||||||
this.dict[ele.prop] = res.data;
|
|
||||||
this.$forceUpdate();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
// 暂时注释掉workTypeRemoteMethod调用,避免listJobType未定义错误
|
|
||||||
// if (typeof this.workTypeRemoteMethod === 'function') {
|
|
||||||
// this.workTypeRemoteMethod();
|
|
||||||
// }
|
|
||||||
// this.getListPersonDemand();
|
|
||||||
// this.getJobSearchList();
|
|
||||||
// this.getListOfEntrepreneurialNeeds();
|
|
||||||
// this.getTrainingList();
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
// 获取帮扶内容标签
|
||||||
|
getpersonStatusLabel(value) {
|
||||||
|
let arr = this.personStatusOptions.filter(item => item.value == value)
|
||||||
|
return arr.length ? arr[0].label : ''
|
||||||
|
},
|
||||||
|
getpersonStatusIndex(value) {
|
||||||
|
if (!value) return 0;
|
||||||
|
const index = this.personStatusOptions.findIndex(item => item.value === value);
|
||||||
|
return index !== -1 ? index : 0;
|
||||||
|
},
|
||||||
|
// 处理人员状态选择变化
|
||||||
|
onpersonStatusChange(e) {
|
||||||
|
const index = e.detail.value;
|
||||||
|
if (this.personStatusOptions && this.personStatusOptions[index]) {
|
||||||
|
this.formData.personStatus = this.personStatusOptions[index].value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取经办人名称
|
||||||
|
getAgentUserName(userId) {
|
||||||
|
const agent = this.jingbrList1.find(item => item.value === userId);
|
||||||
|
return agent ? agent.nickName : '';
|
||||||
|
},
|
||||||
|
// 处理经办人选择变化
|
||||||
|
handleAgentChange(value) {
|
||||||
|
if (!value || !this.jingbrList1 || !this.jingbrList1.length) {
|
||||||
|
this.formData.agentUserName = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const user = this.jingbrList1.find(item => item.value === value);
|
||||||
|
if (user) {
|
||||||
|
this.formData.agentUserName = user.nickName;
|
||||||
|
} else {
|
||||||
|
this.formData.agentUserName = '';
|
||||||
|
}
|
||||||
|
},
|
||||||
closeopenDeal() {
|
closeopenDeal() {
|
||||||
this.$refs.openDeal.close();
|
this.$refs.openDeal.close();
|
||||||
},
|
},
|
||||||
@@ -821,7 +844,7 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 办结按钮
|
// 办结按钮
|
||||||
async finishJobRecommend(needsType) {
|
async finishJobRecommend() {
|
||||||
uni.showLoading();
|
uni.showLoading();
|
||||||
try {
|
try {
|
||||||
// 先进行表单校验
|
// 先进行表单校验
|
||||||
@@ -879,19 +902,25 @@ export default {
|
|||||||
this.formData.fileUrl.push(url);
|
this.formData.fileUrl.push(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.formData.fileUrl = this.$arrayToString(this.formData.fileUrl);
|
this.formData.fileUrl = this.formData.fileUrl.join(',')
|
||||||
},
|
},
|
||||||
// 需求办结
|
// 需求办结
|
||||||
requirementHandling(item, needsType) {
|
requirementHandling(item, needsType) {
|
||||||
// this.openDeal = true;
|
// this.openDeal = true;
|
||||||
this.$refs.openDeal.open();
|
// this.$refs.openDeal.open();
|
||||||
this.needsType = needsType;
|
this.$refs.dealDone.init({
|
||||||
this.formData = {
|
|
||||||
id: item.id,
|
id: item.id,
|
||||||
currentStatus: "3",
|
currentStatus: "3",
|
||||||
userId: item.userId,
|
userId: item.userId,
|
||||||
personStatus: item.personStatus || (this.dict.personStatusList[0] && this.dict.personStatusList[0].dictValue),
|
personStatus: item.personStatus || (this.dict.personStatusList[0] && this.dict.personStatusList[0].dictValue),
|
||||||
};
|
});
|
||||||
|
// this.needsType = needsType;
|
||||||
|
// this.formData = {
|
||||||
|
// id: item.id,
|
||||||
|
// currentStatus: "3",
|
||||||
|
// userId: item.userId,
|
||||||
|
// personStatus: item.personStatus || (this.dict.personStatusList[0] && this.dict.personStatusList[0].dictValue),
|
||||||
|
// };
|
||||||
console.log("item",item)
|
console.log("item",item)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2024-10-08 14:29:36
|
* @Date: 2024-10-08 14:29:36
|
||||||
* @LastEditors: shirlwang
|
* @LastEditors: shirlwang
|
||||||
* @LastEditTime: 2025-11-04 17:33:17
|
* @LastEditTime: 2025-11-06 12:14:22
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<view class="input-outer-part">
|
<view class="input-outer-part">
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
color="#A6A6A6"></u-icon></view>
|
color="#A6A6A6"></u-icon></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="inner-part">
|
<view class="inner-part">
|
||||||
<uni-forms labelPosition="left" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
<uni-forms labelPosition="right" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
||||||
labelWidth="100">
|
labelWidth="150rpx">
|
||||||
<uni-forms-item label="姓名" name="personName" required
|
<uni-forms-item label="姓名" name="personName" required
|
||||||
v-if="$store.getters.roles.includes('shequn'|| $store.getters.roles.includes('gly'))"
|
v-if="$store.getters.roles.includes('shequn'|| $store.getters.roles.includes('gly'))"
|
||||||
>
|
>
|
||||||
<view style="width: 100%;" @click="openPersonChooser"
|
<view class="input-area" style="width: 100%;" @click="openPersonChooser"
|
||||||
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
||||||
{{ formData.personName || '请选择' }}
|
{{ formData.personName || '请选择' }}
|
||||||
</view>
|
</view>
|
||||||
@@ -36,16 +36,16 @@
|
|||||||
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
||||||
</radio-group> -->
|
</radio-group> -->
|
||||||
<view class="radio-group">
|
<view class="radio-group">
|
||||||
<view
|
<view class="radio-item"
|
||||||
:class="['radio-item', { 'radio-disabled': !edit }]"
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
@click="formData.ywcdxq = '是'"
|
@click="edit ? formData.ywcdxq = '是': ''"
|
||||||
v-if="edit">
|
v-if="edit">
|
||||||
<view :class="['radio', { 'radio-checked': formData.ywcdxq === '是' }]"></view>
|
<view :class="['radio', { 'radio-checked': formData.ywcdxq === '是' }]"></view>
|
||||||
<text>是</text>
|
<text>是</text>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view class="radio-item"
|
||||||
:class="['radio-item', { 'radio-disabled': !edit }]"
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
@click="formData.ywcdxq = '否'"
|
@click="edit ? formData.ywcdxq = '否': ''"
|
||||||
v-if="edit">
|
v-if="edit">
|
||||||
<view :class="['radio', { 'radio-checked': formData.ywcdxq === '否' }]"></view>
|
<view :class="['radio', { 'radio-checked': formData.ywcdxq === '否' }]"></view>
|
||||||
<text>否</text>
|
<text>否</text>
|
||||||
@@ -54,26 +54,43 @@
|
|||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="场地面积" name="cdmj">
|
<uni-forms-item label="场地面积" name="cdmj">
|
||||||
<input :disabled="!edit" v-model="formData.cdmj" border="none"
|
<input class="input-area" :disabled="!edit" v-model="formData.cdmj" border="none"
|
||||||
placeholder="请输入"/>
|
placeholder="请输入"/>
|
||||||
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="办公人数" name="bgrs">
|
<uni-forms-item label="办公人数" name="bgrs">
|
||||||
<input :disabled="!edit" v-model="formData.bgrs" border="none"
|
<input class="input-area" :disabled="!edit" v-model="formData.bgrs" border="none"
|
||||||
placeholder="请输入"/>
|
placeholder="请输入"/>
|
||||||
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="办公位置" name="bgdd">
|
<uni-forms-item label="办公位置" name="bgdd">
|
||||||
<input :disabled="!edit" v-model="formData.bgdd" border="none"
|
<input class="input-area" :disabled="!edit" v-model="formData.bgdd" border="none"
|
||||||
placeholder="请输入"/>
|
placeholder="请输入"/>
|
||||||
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
<!-- <u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon> -->
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="有无创业培训需求" name="ywcypxxq" required>
|
<uni-forms-item label="有无创业培训需求" name="ywcypxxq" required>
|
||||||
<radio-group :disabled="!edit" :value="formData.ywcypxxq"
|
<!-- <radio-group :disabled="!edit" :value="formData.ywcypxxq"
|
||||||
placement="row">
|
placement="row">
|
||||||
<radio :customStyle="{marginRight: '16px'}" label="是" value="是">是</radio>
|
<radio :customStyle="{marginRight: '16px'}" label="是" value="是">是</radio>
|
||||||
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
||||||
</radio-group>
|
</radio-group> -->
|
||||||
|
<view class="radio-group">
|
||||||
|
<view class="radio-item"
|
||||||
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
|
@click="edit ? formData.ywcypxxq = '是' : ''"
|
||||||
|
v-if="edit">
|
||||||
|
<view :class="['radio', { 'radio-checked': formData.ywcypxxq === '是' }]"></view>
|
||||||
|
<text>是</text>
|
||||||
|
</view>
|
||||||
|
<view class="radio-item"
|
||||||
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
|
@click="edit ? formData.ywcypxxq = '否' : ''"
|
||||||
|
v-if="edit">
|
||||||
|
<view :class="['radio', { 'radio-checked': formData.ywcypxxq === '否' }]"></view>
|
||||||
|
<text>否</text>
|
||||||
|
</view>
|
||||||
|
<view v-else>{{ formData.ywcypxxq }}</view>
|
||||||
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<!-- <uni-forms-item label="是否意向接受创业培训" name="isInterestedEntrepreneurshipGuidance" required>-->
|
<!-- <uni-forms-item label="是否意向接受创业培训" name="isInterestedEntrepreneurshipGuidance" required>-->
|
||||||
<!-- <radio-group :disabled="!edit" v-model="formData.isInterestedEntrepreneurshipGuidance"-->
|
<!-- <radio-group :disabled="!edit" v-model="formData.isInterestedEntrepreneurshipGuidance"-->
|
||||||
@@ -83,13 +100,30 @@
|
|||||||
<!-- </radio-group>-->
|
<!-- </radio-group>-->
|
||||||
<!-- </uni-forms-item>-->
|
<!-- </uni-forms-item>-->
|
||||||
<uni-forms-item label="有无资金需求" name="ywzjxq" required>
|
<uni-forms-item label="有无资金需求" name="ywzjxq" required>
|
||||||
<radio-group :disabled="!edit" :value="formData.ywzjxq" placement="row">
|
<!-- <radio-group :disabled="!edit" :value="formData.ywzjxq" placement="row">
|
||||||
<radio :customStyle="{marginRight: '16px'}" label="是" value="是">是</radio>
|
<radio :customStyle="{marginRight: '16px'}" label="是" value="是">是</radio>
|
||||||
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
<radio :customStyle="{marginRight: '16px'}" label="否" value="否">否</radio>
|
||||||
</radio-group>
|
</radio-group> -->
|
||||||
|
<view class="radio-group">
|
||||||
|
<view class="radio-item"
|
||||||
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
|
@click="edit ? formData.ywzjxq = '是' : ''"
|
||||||
|
v-if="edit">
|
||||||
|
<view :class="['radio', { 'radio-checked': formData.ywzjxq === '是' }]"></view>
|
||||||
|
<text>是</text>
|
||||||
|
</view>
|
||||||
|
<view class="radio-item"
|
||||||
|
:class="!edit ? 'radio-disabled' : ''"
|
||||||
|
@click="edit ? formData.ywzjxq = '否' : ''"
|
||||||
|
v-if="edit">
|
||||||
|
<view :class="['radio', { 'radio-checked': formData.ywzjxq === '否' }]"></view>
|
||||||
|
<text>否</text>
|
||||||
|
</view>
|
||||||
|
<view v-else>{{ formData.ywzjxq }}</view>
|
||||||
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="需求说明" name="jobDescription" required>
|
<uni-forms-item label="需求说明" name="jobDescription" required>
|
||||||
<textarea :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
<textarea style="width: 100%;box-sizing: border-box;" class="textarea" :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<!-- <uni-forms-item label="希望解决日期" name="hopeSolveDate" required>
|
<!-- <uni-forms-item label="希望解决日期" name="hopeSolveDate" required>
|
||||||
<view style="width: 100%;" @click="showPicker('hopeSolveDate')"
|
<view style="width: 100%;" @click="showPicker('hopeSolveDate')"
|
||||||
@@ -494,6 +528,44 @@
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-area{
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// &input{
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
textarea{
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
padding: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.picker-view {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
// width: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 2rpx solid #e5e5e5;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
.disabledLine {
|
.disabledLine {
|
||||||
background: rgb(245, 247, 250);
|
background: rgb(245, 247, 250);
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2024-10-08 14:29:36
|
* @Date: 2024-10-08 14:29:36
|
||||||
* @LastEditors: shirlwang
|
* @LastEditors: shirlwang
|
||||||
* @LastEditTime: 2025-11-04 17:32:32
|
* @LastEditTime: 2025-11-06 12:09:01
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
@@ -10,23 +10,20 @@
|
|||||||
<view class="inner">
|
<view class="inner">
|
||||||
<view class="part-title" style="display: flex;justify-content: space-between;">求职需求信息
|
<view class="part-title" style="display: flex;justify-content: space-between;">求职需求信息
|
||||||
<view v-if="!edit&&formData.id&&formData.currentStatus!=3" class="btn"
|
<view v-if="!edit&&formData.id&&formData.currentStatus!=3" class="btn"
|
||||||
style="font-weight: normal;display: flex;" @click="edit=true">编辑<u-icon name="edit-pen"
|
style="font-weight: normal;display: flex;" @click="edit=true">编辑</view>
|
||||||
color="#A6A6A6"></u-icon></view>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="inner-part">
|
<view class="inner-part">
|
||||||
<uni-forms labelPosition="left" :model="formData" :rules="rules" ref="uForm" class="self-form" labelWidth="100">
|
<uni-forms labelPosition="right" :model="formData" :rules="rules" ref="uForm" class="self-form" label-width="150rpx">
|
||||||
<!-- v-if="$store.getters.roles.includes('shequn') || $store.getters.roles.includes('gly')" -->
|
<!-- v-if="$store.getters.roles.includes('shequn') || $store.getters.roles.includes('gly')" -->
|
||||||
<uni-forms-item label="姓名" name="personName" required
|
<uni-forms-item label="姓名" name="personName" required>
|
||||||
>
|
<view v-if="name" style="width: calc(100% - 150rpx);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;box-sizing: border-box;"
|
||||||
<view v-if="name" style="width: 100%;"
|
class="input-area disabledLine">
|
||||||
class="disabledLine">
|
|
||||||
{{ formData.personName || '请选择' }}
|
{{ formData.personName || '请选择' }}
|
||||||
</view>
|
</view>
|
||||||
<view v-else style="width: 100%;" @click="openPersonChooser"
|
<view class="input-area" v-else @click="openPersonChooser" style="width: calc(100% - 150rpx);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;box-sizing: border-box;"
|
||||||
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
||||||
{{ formData.personName || '请选择' }}
|
{{ formData.personName || '请选择' }}
|
||||||
</view>
|
</view>
|
||||||
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
|
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="求职工种" name="jobWorkType">
|
<uni-forms-item label="求职工种" name="jobWorkType">
|
||||||
<picker
|
<picker
|
||||||
@@ -40,7 +37,6 @@
|
|||||||
>
|
>
|
||||||
<view class="picker-view">
|
<view class="picker-view">
|
||||||
<text>{{ formData.jobWorkTypeName || '请选择工种' }}</text>
|
<text>{{ formData.jobWorkTypeName || '请选择工种' }}</text>
|
||||||
<u-icon name="arrow-down" color="#999999"></u-icon>
|
|
||||||
</view>
|
</view>
|
||||||
</picker>
|
</picker>
|
||||||
<view v-else class="picker-view">
|
<view v-else class="picker-view">
|
||||||
@@ -48,24 +44,22 @@
|
|||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="最低薪酬" name="minRecruitmentSalary" required>
|
<uni-forms-item label="最低薪酬" name="minRecruitmentSalary" required>
|
||||||
<input :disabled="!edit" v-model="formData.minRecruitmentSalary" border="none"
|
<input class="input-area" :disabled="!edit" v-model="formData.minRecruitmentSalary" border="none"
|
||||||
placeholder="请输入"/>
|
placeholder="请输入"/>
|
||||||
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
|
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="最高薪酬" name="highRecruitmentSalary" required>
|
<uni-forms-item label="最高薪酬" name="highRecruitmentSalary" required>
|
||||||
<input :disabled="!edit" v-model="formData.highRecruitmentSalary" border="none"
|
<input class="input-area" :disabled="!edit" v-model="formData.highRecruitmentSalary" border="none"
|
||||||
placeholder="请输入"/>
|
placeholder="请输入"/>
|
||||||
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
|
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="希望工作地点" name="addressDesc">
|
<uni-forms-item label="希望工作地点" name="addressDesc">
|
||||||
<view class="df_flex df_flex_1">
|
<view class="df_flex df_flex_1">
|
||||||
<input placeholder="请输入" border="none" v-model="formData.addressDesc"
|
<input placeholder="请输入" border="none" v-model="formData.addressDesc"
|
||||||
class="ellipsis_1" @focus="$refs.placePicker.openDialog()"/>
|
class="ellipsis_1 input-area" @focus="$refs.placePicker.openDialog()"/>
|
||||||
</view>
|
</view>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms labelPosition="left" class="self-form" labelWidth="110" >
|
<uni-forms labelPosition="left" class="self-form" labelWidth="110" >
|
||||||
<uni-forms-item label="求职说明" name="jobDescription" required >
|
<uni-forms-item label="求职说明" name="jobDescription" required >
|
||||||
<textarea :disabled="!edit" v-model="formData.jobDescription"
|
<textarea style="width: 100%;box-sizing: border-box;" class="textarea" :disabled="!edit" v-model="formData.jobDescription"
|
||||||
placeholder="请输入" ></textarea>
|
placeholder="请输入" ></textarea>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
@@ -691,6 +685,25 @@
|
|||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-area{
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// &input{
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
textarea{
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
padding: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -699,12 +712,14 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
width: 100%;
|
// width: 100%;
|
||||||
padding: 28rpx 36rpx;
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
border: 2rpx solid #e5e5e5;
|
border: 2rpx solid #e5e5e5;
|
||||||
border-radius: 12rpx;
|
border-radius: 12rpx;
|
||||||
min-height: 88rpx;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2024-10-08 14:29:36
|
* @Date: 2024-10-08 14:29:36
|
||||||
* @LastEditors: shirlwang
|
* @LastEditors: shirlwang
|
||||||
* @LastEditTime: 2025-11-05 08:57:34
|
* @LastEditTime: 2025-11-06 12:09:11
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
@@ -14,11 +14,11 @@
|
|||||||
color="#A6A6A6"></u-icon></view>
|
color="#A6A6A6"></u-icon></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="inner-part">
|
<view class="inner-part">
|
||||||
<uni-forms labelPosition="left" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
<uni-forms labelPosition="right" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
||||||
labelWidth="100">
|
labelWidth="150rpx">
|
||||||
<uni-forms-item label="姓名" prop="personName" required
|
<uni-forms-item label="姓名" prop="personName" required
|
||||||
v-if="$store.getters.roles.includes('shequn')|| $store.getters.roles.includes('gly')">
|
v-if="$store.getters.roles.includes('shequn')|| $store.getters.roles.includes('gly')">
|
||||||
<view style="width: 100%;" @click="openPersonChooser"
|
<view class="input-area" style="width: 100%;" @click="openPersonChooser"
|
||||||
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
||||||
{{ formData.personName || '请选择' }}
|
{{ formData.personName || '请选择' }}
|
||||||
</view>
|
</view>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
|
|
||||||
<uni-forms-item label="需求说明" prop="jobDescription" required>
|
<uni-forms-item label="需求说明" prop="jobDescription" required>
|
||||||
<textarea :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
<textarea style="width: 100%;box-sizing: border-box;" class="textarea" :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
</view>
|
</view>
|
||||||
@@ -338,6 +338,44 @@
|
|||||||
color: rgb(192, 196, 204);
|
color: rgb(192, 196, 204);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-area{
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// &input{
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
textarea{
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
padding: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.picker-view {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
// width: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 2rpx solid #e5e5e5;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
.disabledLine {
|
.disabledLine {
|
||||||
background: rgb(245, 247, 250);
|
background: rgb(245, 247, 250);
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Date: 2024-10-08 14:29:36
|
* @Date: 2024-10-08 14:29:36
|
||||||
* @LastEditors: shirlwang
|
* @LastEditors: shirlwang
|
||||||
* @LastEditTime: 2025-11-04 17:45:50
|
* @LastEditTime: 2025-11-06 12:15:08
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
@@ -14,11 +14,11 @@
|
|||||||
color="#A6A6A6"></u-icon></view>
|
color="#A6A6A6"></u-icon></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="inner-part">
|
<view class="inner-part">
|
||||||
<uni-forms labelPosition="left" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
<uni-forms labelPosition="right" :model="formData" :rules="rules" ref="uForm" class="self-form"
|
||||||
labelWidth="120">
|
labelWidth="150rpx">
|
||||||
<uni-forms-item label="姓名" prop="personName" required
|
<uni-forms-item label="姓名" prop="personName" required
|
||||||
v-if="$store.getters.roles.includes('shequn'|| $store.getters.roles.includes('gly'))">
|
v-if="$store.getters.roles.includes('shequn'|| $store.getters.roles.includes('gly'))">
|
||||||
<view style="width: 100%;" @click="openPersonChooser"
|
<view class="input-area" style="width: 100%;" @click="openPersonChooser"
|
||||||
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
|
||||||
{{ formData.personName || '请选择' }}
|
{{ formData.personName || '请选择' }}
|
||||||
</view>
|
</view>
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
</uni-forms>
|
</uni-forms>
|
||||||
<uni-forms labelPosition="left" class="self-form" labelWidth="110">
|
<uni-forms labelPosition="left" class="self-form" labelWidth="110">
|
||||||
<uni-forms-item label="需求说明" prop="jobDescription">
|
<uni-forms-item label="需求说明" prop="jobDescription">
|
||||||
<textarea :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
<textarea style="width: 100%;box-sizing: border-box;" class="textarea" :disabled="!edit" v-model="formData.jobDescription" placeholder="请输入"></textarea>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
</view>
|
</view>
|
||||||
@@ -568,33 +568,42 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-area{
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// &input{
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
textarea{
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e4e4e4;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
padding: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.picker-view {
|
.picker-view {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
width: 100%;
|
// width: 100%;
|
||||||
padding: 28rpx 36rpx;
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
border: 2rpx solid #e5e5e5;
|
border: 2rpx solid #e5e5e5;
|
||||||
border-radius: 12rpx;
|
border-radius: 12rpx;
|
||||||
min-height: 88rpx;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.picker-view:active {
|
|
||||||
background: #f8f9fa;
|
|
||||||
border-color: #007aff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.picker-view text {
|
|
||||||
color: #333333;
|
|
||||||
font-size: 28rpx;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.picker-view .u-icon {
|
|
||||||
margin-left: 16rpx;
|
|
||||||
color: #999999;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
287
packageRc/pages/needs/dealDone.vue
Normal file
287
packageRc/pages/needs/dealDone.vue
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
<template>
|
||||||
|
<uni-popup background-color="#fff" type="bottom"
|
||||||
|
ref="openDeal"
|
||||||
|
style="position: relative; z-index: 100"
|
||||||
|
>
|
||||||
|
<view style="padding: 32rpx;">
|
||||||
|
<uni-forms style="width: 100%;"
|
||||||
|
class="self-form"
|
||||||
|
labelPosition="top"
|
||||||
|
:model="formData"
|
||||||
|
:rules="rules"
|
||||||
|
ref="uForm"
|
||||||
|
labelWidth="300"
|
||||||
|
>
|
||||||
|
<uni-forms-item label="实际解决时间" prop="actualSolveDate" required>
|
||||||
|
<view
|
||||||
|
class="picker-view"
|
||||||
|
:class="{ selected: formData.actualSolveDate }"
|
||||||
|
>
|
||||||
|
<uni-datetime-picker
|
||||||
|
type="date"
|
||||||
|
:value="formData.actualSolveDate"
|
||||||
|
start="2021-3-20"
|
||||||
|
end="2030-6-20"
|
||||||
|
@change="change"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="经办人" prop="agentUserName" required>
|
||||||
|
<view class="input-view">
|
||||||
|
<uni-data-select
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="formData.agentUserId"
|
||||||
|
placeholder="请选择经办人"
|
||||||
|
:localdata="jingbrList1"
|
||||||
|
@change="handleAgentChange"
|
||||||
|
>
|
||||||
|
</uni-data-select>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
|
||||||
|
<uni-forms-item label="人员状态" prop="personStatus">
|
||||||
|
<picker
|
||||||
|
@change="onpersonStatusChange"
|
||||||
|
:range="personStatusOptions.map(item => item.label)"
|
||||||
|
:value="getpersonStatusIndex(formData.personStatus)"
|
||||||
|
mode="selector"
|
||||||
|
>
|
||||||
|
<view style="border: 1px solid #e4e4e4;width: 100%;box-sizing: border-box;padding: 0 20rpx;line-height: 64rpx;white-space: nowrap;text-overflow: ellipsis;flex-grow: 1;">{{ getpersonStatusLabel(formData.personStatus) || "请选择" }}</view>
|
||||||
|
</picker>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="附件" prop="fileUrl">
|
||||||
|
<ImageUpload
|
||||||
|
:fileList="fileList"
|
||||||
|
@update="changeFile"
|
||||||
|
:maxCount="6"
|
||||||
|
/>
|
||||||
|
</uni-forms-item>
|
||||||
|
|
||||||
|
<uni-forms-item label="解决说明" prop="solveDesc" required>
|
||||||
|
<view class="textarea-view">
|
||||||
|
<textarea
|
||||||
|
v-model="formData.solveDesc"
|
||||||
|
placeholder="请输入解决说明"
|
||||||
|
style="width: 100%;padding: 28rpx 36rpx;border: 1px solid #e4e4e4;padding: 10rpx;border-radius: 8rpx;font-size: 28rpx;color:#333333;height: 120rpx;"
|
||||||
|
></textarea>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</view>
|
||||||
|
<view class="button-area">
|
||||||
|
<view class="btn" @click="closeopenDeal">取消</view>
|
||||||
|
<view
|
||||||
|
class="btn reset"
|
||||||
|
@click="
|
||||||
|
formData.actualSolveDate = '';
|
||||||
|
formData.solveDesc = '';
|
||||||
|
"
|
||||||
|
>重置</view
|
||||||
|
>
|
||||||
|
<view class="btn save" @click="finishJobRecommend(needsType)"
|
||||||
|
>办结</view
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
</uni-popup>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ImageUpload from "@/packageRc/components/ImageUpload";
|
||||||
|
import { requirementCompletion } from "@/apiRc/company/index";
|
||||||
|
import {getJbrInfo} from "@/apiRc/personinfo/index"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ImageUpload,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
actualSolveDate: '',
|
||||||
|
agentUserId: '',
|
||||||
|
personStatus: '',
|
||||||
|
fileUrl: '',
|
||||||
|
solveDesc: ''
|
||||||
|
},
|
||||||
|
fileList: [],
|
||||||
|
personStatusOptions: [],
|
||||||
|
rules: {
|
||||||
|
actualSolveDate: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择实际解决时间",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
agentUserName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请填写经办人",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
personStatus: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请填写人员状态",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
solveDesc: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请填写解决说明",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$getDict('qcjy_ryzt').then(res => {
|
||||||
|
if (res.data && Array.isArray(res.data)) {
|
||||||
|
this.personStatusOptions = res.data.map(item => ({
|
||||||
|
value: item.dictValue,
|
||||||
|
label: item.dictLabel
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
getJbrInfo().then(res => {
|
||||||
|
this.jingbrList1=res.map(ele => {
|
||||||
|
return {
|
||||||
|
value: ele.userId,
|
||||||
|
text: ele.nickName
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(formData) {
|
||||||
|
this.formData = formData;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.openDeal.open()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取帮扶内容标签
|
||||||
|
getpersonStatusLabel(value) {
|
||||||
|
let arr = this.personStatusOptions.filter(item => item.value == value)
|
||||||
|
return arr.length ? arr[0].label : ''
|
||||||
|
},
|
||||||
|
getpersonStatusIndex(value) {
|
||||||
|
if (!value) return 0;
|
||||||
|
const index = this.personStatusOptions.findIndex(item => item.value === value);
|
||||||
|
return index !== -1 ? index : 0;
|
||||||
|
},
|
||||||
|
// 处理人员状态选择变化
|
||||||
|
onpersonStatusChange(e) {
|
||||||
|
const index = e.detail.value;
|
||||||
|
if (this.personStatusOptions && this.personStatusOptions[index]) {
|
||||||
|
this.formData.personStatus = this.personStatusOptions[index].value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取经办人名称
|
||||||
|
getAgentUserName(userId) {
|
||||||
|
const agent = this.jingbrList1.find(item => item.value === userId);
|
||||||
|
return agent ? agent.nickName : '';
|
||||||
|
},
|
||||||
|
// 处理经办人选择变化
|
||||||
|
handleAgentChange(value) {
|
||||||
|
if (!value || !this.jingbrList1 || !this.jingbrList1.length) {
|
||||||
|
this.formData.agentUserName = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const user = this.jingbrList1.find(item => item.value === value);
|
||||||
|
if (user) {
|
||||||
|
this.formData.agentUserName = user.nickName;
|
||||||
|
} else {
|
||||||
|
this.formData.agentUserName = '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 办结按钮
|
||||||
|
async finishJobRecommend() {
|
||||||
|
uni.showLoading();
|
||||||
|
try {
|
||||||
|
// 先进行表单校验
|
||||||
|
this.$refs.uForm.validate().then(res => {
|
||||||
|
console.log('res', res);
|
||||||
|
// 校验通过后再走后续逻辑
|
||||||
|
const url = "/manage/personDemand/demandDone";
|
||||||
|
requirementCompletion(url, this.formData).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
uni.showToast({title: '办结成功', icon: 'none'});
|
||||||
|
this.$refs.openDeal.close();
|
||||||
|
this.$emit('finished')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
let msg = '';
|
||||||
|
if (error && error[0] && error[0].message) {
|
||||||
|
msg = error[0].message;
|
||||||
|
} else if (error && error.message) {
|
||||||
|
msg = error.message;
|
||||||
|
} else if (typeof error === 'string') {
|
||||||
|
msg = error;
|
||||||
|
} else {
|
||||||
|
msg = '请检查必填项填写';
|
||||||
|
}
|
||||||
|
uni.showToast({title: msg, icon: 'none'});
|
||||||
|
} finally {
|
||||||
|
uni.hideLoading();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeFile(e) {
|
||||||
|
// 清空当前的 fileUrl 数组
|
||||||
|
this.formData.fileUrl = [];
|
||||||
|
// 如果 e 有长度(即用户选择了文件)
|
||||||
|
if (e.length) {
|
||||||
|
// 遍历每个文件对象并获取其 url
|
||||||
|
for (let data of e) {
|
||||||
|
const url = data.data ? data.data.url : data.url;
|
||||||
|
this.formData.fileUrl.push(url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.formData.fileUrl = this.formData.fileUrl.join(',')
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
this.formData.actualSolveDate = e
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
.button-area {
|
||||||
|
padding: 24rpx 32rpx 68rpx;
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 16px 16px 0px 0px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
line-height: 72rpx;
|
||||||
|
width: 176rpx;
|
||||||
|
margin-right: 16rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
border: 1px solid #b8c5d4;
|
||||||
|
color: #282828;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reset {
|
||||||
|
background: #dce2e9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save {
|
||||||
|
background: linear-gradient(103deg, #1d64cf 0%, #1590d4 99%);
|
||||||
|
color: #fff;
|
||||||
|
border: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<view class="input-outer-part"
|
<view class="input-outer-part"
|
||||||
style="padding: 24rpx 32rpx 0;max-height: unset;">
|
style="padding: 24rpx 32rpx 0;max-height: unset;">
|
||||||
<view class="search-line">
|
<view class="search-line">
|
||||||
<u-input placeholder="请输入群众姓名进行搜索" v-model="queryParams.searchValue" border="none" />
|
<input style="width: 100%;" placeholder="请输入群众姓名进行搜索" v-model="queryParams.searchValue" border="none" />
|
||||||
<img src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/search.png" class="search-icon" @click="search()" />
|
<img src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/search.png" class="search-icon" @click="search()" />
|
||||||
</view>
|
</view>
|
||||||
<view class="inner"
|
<view class="inner"
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<view v-if="total" style="position: relative;padding-bottom: 16px;color: #000;">
|
<view v-if="total" style="position: relative;padding-bottom: 16px;color: #000;">
|
||||||
<text>共 {{ total }} 条</text>
|
<text>共 {{ total }} 条</text>
|
||||||
</view>
|
</view>
|
||||||
<scroll-view :scroll-y="true" style="height: calc(100vh - 422rpx);position: relative;z-index: 1;"
|
<scroll-view :scroll-y="true" style="height: calc(100vh - 342rpx);position: relative;z-index: 1;"
|
||||||
@scrolltolower="getBottomList">
|
@scrolltolower="getBottomList">
|
||||||
<uni-swipe-action>
|
<uni-swipe-action>
|
||||||
<uni-swipe-action-item @click="clickDelete(item)" v-for="(item, index) in tableData" :key="index"
|
<uni-swipe-action-item @click="clickDelete(item)" v-for="(item, index) in tableData" :key="index"
|
||||||
@@ -32,24 +32,24 @@
|
|||||||
:class="item.currentStatus == 1 ? 'not' : item.currentStatus == 2 ? 'ing' : item.currentStatus == 3 ? 'finish' : '' ">
|
:class="item.currentStatus == 1 ? 'not' : item.currentStatus == 2 ? 'ing' : item.currentStatus == 3 ? 'finish' : '' ">
|
||||||
{{ getDictLabel(item.currentStatus, currentStatusList) }}
|
{{ getDictLabel(item.currentStatus, currentStatusList) }}
|
||||||
</text></view>
|
</text></view>
|
||||||
<view class="info" v-if="queryParams.needsType == 1">
|
<view class="info" v-if="queryParams.demandType == 1">
|
||||||
<text>需求工种:</text>{{ item.jobWorkTypeName }}
|
<text>需求工种:</text>{{ item.jobWorkTypeName }}
|
||||||
</view>
|
</view>
|
||||||
<view class="info" v-if="queryParams.needsType == 3">
|
<view class="info" v-if="queryParams.demandType == 3">
|
||||||
<text>需求名称:</text>{{ item.serviceRequirementTitle }}
|
<text>需求名称:</text>{{ item.serviceRequirementTitle }}
|
||||||
</view>
|
</view>
|
||||||
<view class="info"
|
<view class="info"
|
||||||
v-if="queryParams.needsType == 2||queryParams.needsType == 4||queryParams.needsType == 5">
|
v-if="queryParams.demandType == 2||queryParams.demandType == 4||queryParams.demandType == 5">
|
||||||
<text>需求名称:</text>{{ item.demandTitle }}
|
<text>需求名称:</text>{{ item.demandTitle }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!--
|
<!--
|
||||||
item.currentStatus = 1 待处理、2 处理中、 3 已完成
|
item.currentStatus = 1 待处理、2 处理中、 3 已完成
|
||||||
queryParams.needsType 1 求职需求 2 援助需求、 3 创业需求、 4 培训需求 5其他需求 展示办结按钮
|
queryParams.demandType 1 求职需求 2 援助需求、 3 创业需求、 4 培训需求 5其他需求 展示办结按钮
|
||||||
|
|
||||||
item.currentStatus = 1待处理 、 item.currentStatus = 2 处理中
|
item.currentStatus = 1待处理 、 item.currentStatus = 2 处理中
|
||||||
求职需求列表(queryParams.needsType = 1) 展示 推荐、办理
|
求职需求列表(queryParams.demandType = 1) 展示 推荐、办理
|
||||||
培训需求列表(queryParams.needsType = 4) 展示 培训、办理
|
培训需求列表(queryParams.demandType = 4) 展示 培训、办理
|
||||||
援助、创业、其他列表 展示办理
|
援助、创业、其他列表 展示办理
|
||||||
item.currentStatus = 3 已完成
|
item.currentStatus = 3 已完成
|
||||||
统一展示 服务追溯
|
统一展示 服务追溯
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<!-- 需求处于待处理、处理中 -->
|
<!-- 需求处于待处理、处理中 -->
|
||||||
<view v-else class="df_flex_1">
|
<view v-else class="df_flex_1">
|
||||||
<!-- 求职需求 -->
|
<!-- 求职需求 -->
|
||||||
<view v-if="queryParams.needsType == 1" class="df_flex">
|
<view v-if="queryParams.demandType == 1" class="df_flex">
|
||||||
<view type="primary" :plain="true" color="#BF5818" text="推荐"
|
<view type="primary" :plain="true" color="#BF5818" text="推荐"
|
||||||
:customStyle="{border: 'none'}"
|
:customStyle="{border: 'none'}"
|
||||||
@click="requirementTraining(item, 1)">推荐</view>
|
@click="requirementTraining(item, 1)">推荐</view>
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
:customStyle="{border: 'none'}" @click="requirementHandling(item)">办理</view>
|
:customStyle="{border: 'none'}" @click="requirementHandling(item)">办理</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 培训需求 -->
|
<!-- 培训需求 -->
|
||||||
<view v-else-if="queryParams.needsType == 4" class="df_flex">
|
<view v-else-if="queryParams.demandType == 4" class="df_flex">
|
||||||
<view type="primary" :plain="true" color="#BF5818" text="培训"
|
<view type="primary" :plain="true" color="#BF5818" text="培训"
|
||||||
:customStyle="{border: 'none'}"
|
:customStyle="{border: 'none'}"
|
||||||
@click="requirementTraining(item, 4)">培训</view>
|
@click="requirementTraining(item, 4)">培训</view>
|
||||||
@@ -103,30 +103,35 @@
|
|||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
<uni-popup ref="openDeal" style="position: relative;z-index: 100;" background-color="#fff" type="bottom">
|
<DealDone ref="dealDone" @finished="search();"/>
|
||||||
<u--form class="self-form" labelPosition="top" :model="formData" :rules="rules" ref="uForm"
|
<!-- <uni-popup ref="openDeal" background-color="#fff" type="bottom">
|
||||||
|
<view style="padding: 32rpx;padding-bottom: 0">
|
||||||
|
<uni-forms class="self-form" labelPosition="top" :model="formData" :rules="rules" ref="uForm"
|
||||||
labelWidth="300">
|
labelWidth="300">
|
||||||
<u-form-item label="实际解决时间" prop="actualSolveDate" required>
|
<uni-forms-item label="实际解决时间" prop="actualSolveDate" required>
|
||||||
<view class="bordered" style="width: 100%;" @click="showTime=true"
|
<picker style="width: 100%;" mode="date" :value="formData.actualSolveDate" start="1900-01-01" end="2100-12-31" @change="onDateChange">
|
||||||
:class="{noValue: !formData.actualSolveDate}">{{ formData.actualSolveDate||'请选择' }}</view>
|
<view class="date-picker-wrapper" :class="{ noValue: !formData.actualSolveDate }">
|
||||||
<u-icon slot="right" name="arrow-down" color="#A6A6A6"></u-icon>
|
<view v-if="formData.actualSolveDate" class="date-value">{{ formData.actualSolveDate }}</view>
|
||||||
</u-form-item>
|
<view v-else>请选择</view>
|
||||||
|
</view>
|
||||||
|
</picker>
|
||||||
|
</uni-forms-item>
|
||||||
|
|
||||||
<u-form-item label="附件" prop="fileUrl" >
|
<uni-forms-item label="附件" prop="fileUrl" >
|
||||||
<ImageUpload :fileList="fileList" @update="changeFile" :maxCount="6" />
|
<ImageUpload :fileList="fileList" @update="changeFile" :maxCount="6" />
|
||||||
</u-form-item>
|
</uni-forms-item>
|
||||||
|
|
||||||
<u-form-item label="解决说明" prop="solveDesc" required>
|
<uni-forms-item label="解决说明" prop="solveDesc" required>
|
||||||
<u-textarea v-model="formData.solveDesc" placeholder="请输入"></u-textarea>
|
<textarea style="border: 1px solid #e4e4e4;width: 100%;border-radius: 8rpx;padding: 24rpx;box-sizing: border-box;" v-model="formData.solveDesc" placeholder="请输入"></textarea>
|
||||||
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
|
</uni-forms-item>
|
||||||
</u-form-item>
|
</uni-forms>
|
||||||
</u--form>
|
</view>
|
||||||
<view class="button-area">
|
<view class="button-area" style="box-shadow: unset;border-top: 1px solid #e4e4e4;padding-bottom: 0;">
|
||||||
<view class="btn" @click="closeopenDeal">取消</view>
|
<view class="btn" @click="closeopenDeal">取消</view>
|
||||||
<view class="btn reset" @click="formData.actualSolveDate = '';formData.solveDesc = ''">重置</view>
|
<view class="btn reset" @click="formData.actualSolveDate = '';formData.solveDesc = ''">重置</view>
|
||||||
<view class="btn save" @click="finishJobRecommend">办结</view>
|
<view class="btn save" @click="finishJobRecommend">办结</view>
|
||||||
</view>
|
</view>
|
||||||
</uni-popup>
|
</uni-popup> -->
|
||||||
<view class="addNeeds" @click="goAddNeeds()">
|
<view class="addNeeds" @click="goAddNeeds()">
|
||||||
<img src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/addNeeds.png" />
|
<img src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/addNeeds.png" />
|
||||||
</view>
|
</view>
|
||||||
@@ -135,7 +140,7 @@
|
|||||||
@cancel="showTime=false"></u-datetime-picker> -->
|
@cancel="showTime=false"></u-datetime-picker> -->
|
||||||
|
|
||||||
|
|
||||||
<u-datetime-picker
|
<!-- <u-datetime-picker
|
||||||
style="position: relative;z-index: 100;"
|
style="position: relative;z-index: 100;"
|
||||||
:show="showTime"
|
:show="showTime"
|
||||||
v-model="hopeSolveDate"
|
v-model="hopeSolveDate"
|
||||||
@@ -144,7 +149,7 @@
|
|||||||
@confirm="confirmDate"
|
@confirm="confirmDate"
|
||||||
@cancel="showTime=false"
|
@cancel="showTime=false"
|
||||||
@close="showTime=false"
|
@close="showTime=false"
|
||||||
></u-datetime-picker>
|
></u-datetime-picker> -->
|
||||||
|
|
||||||
|
|
||||||
<!-- 社区端 - 显示隐藏退出组件 -->
|
<!-- 社区端 - 显示隐藏退出组件 -->
|
||||||
@@ -180,10 +185,12 @@
|
|||||||
delOtherService,
|
delOtherService,
|
||||||
finishOtherService
|
finishOtherService
|
||||||
} from '@/apiRc/needs/otherService'
|
} from '@/apiRc/needs/otherService'
|
||||||
|
import DealDone from './dealDone.vue'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
PopupList,
|
PopupList,
|
||||||
ImageUpload
|
ImageUpload,
|
||||||
|
DealDone,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -194,7 +201,7 @@
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
needsType: 1
|
demandType: 1
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
showMorePage: true,
|
showMorePage: true,
|
||||||
@@ -227,19 +234,23 @@
|
|||||||
onLoad({
|
onLoad({
|
||||||
dictValue
|
dictValue
|
||||||
}) {
|
}) {
|
||||||
this.queryParams.needsType = dictValue || 1
|
this.queryParams.demandType = dictValue || 1
|
||||||
this.getCheckData()
|
this.getCheckData()
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
this.search();
|
this.search();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 日期选择变化处理
|
||||||
|
onDateChange(e) {
|
||||||
|
this.formData.actualSolveDate = e.detail.value;
|
||||||
|
},
|
||||||
closeopenDeal() {
|
closeopenDeal() {
|
||||||
this.$refs.openDeal.close()
|
this.$refs.openDeal.close()
|
||||||
},
|
},
|
||||||
// 新增需求
|
// 新增需求
|
||||||
goAddNeeds() {
|
goAddNeeds() {
|
||||||
this.$tab.navigateTo(`/pages/needs/needDetail?activeType=${this.queryParams.needsType}&showTab=1`)
|
uni.navigateTo(`/packageRc/pages/needs/needDetail?activeType=${this.queryParams.demandType}&showTab=1`)
|
||||||
},
|
},
|
||||||
|
|
||||||
confirmDate(e) {
|
confirmDate(e) {
|
||||||
@@ -255,36 +266,36 @@
|
|||||||
// 需求推荐/培训
|
// 需求推荐/培训
|
||||||
requirementTraining(item, index) {
|
requirementTraining(item, index) {
|
||||||
if (index == 1) {
|
if (index == 1) {
|
||||||
uni.navigateTo(
|
uni.navigateTo({
|
||||||
`/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1`
|
url: `/packageRc/pages/service/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1`
|
||||||
)
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.navigateTo(
|
uni.navigateTo({
|
||||||
`/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1`
|
url: `/packageRc/pages/service/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1`
|
||||||
)
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
clickDelete(item) {
|
clickDelete(item) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
|
|
||||||
if (this.queryParams.needsType == 1) {
|
if (this.queryParams.demandType == 1) {
|
||||||
delJobService(item.id).then((res) => {
|
delJobService(item.id).then((res) => {
|
||||||
this.deleteFinish(res)
|
this.deleteFinish(res)
|
||||||
});
|
});
|
||||||
} else if (this.queryParams.needsType == 2) {
|
} else if (this.queryParams.demandType == 2) {
|
||||||
delAssistService(item.id).then((res) => {
|
delAssistService(item.id).then((res) => {
|
||||||
this.deleteFinish(res)
|
this.deleteFinish(res)
|
||||||
});
|
});
|
||||||
} else if (this.queryParams.needsType == 3) {
|
} else if (this.queryParams.demandType == 3) {
|
||||||
delEntrepreneurshipService(item.id).then((res) => {
|
delEntrepreneurshipService(item.id).then((res) => {
|
||||||
this.deleteFinish(res)
|
this.deleteFinish(res)
|
||||||
});
|
});
|
||||||
} else if (this.queryParams.needsType == 4) {
|
} else if (this.queryParams.demandType == 4) {
|
||||||
delTrainService(item.id).then((res) => {
|
delTrainService(item.id).then((res) => {
|
||||||
this.deleteFinish(res)
|
this.deleteFinish(res)
|
||||||
});
|
});
|
||||||
} else if (this.queryParams.needsType == 5) {
|
} else if (this.queryParams.demandType == 5) {
|
||||||
delOtherService(item.id).then((res) => {
|
delOtherService(item.id).then((res) => {
|
||||||
this.deleteFinish(res)
|
this.deleteFinish(res)
|
||||||
});
|
});
|
||||||
@@ -298,7 +309,7 @@
|
|||||||
},
|
},
|
||||||
goNeedsDetail(item) {
|
goNeedsDetail(item) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/needs/needDetail?id=${item.id}&type=${this.queryParams.needsType}&showTab=1`
|
url: `/packageRc/pages/needs/needDetail?id=${item.id}&type=${this.queryParams.demandType}&showTab=1`
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getDictLabel(value, list) {
|
getDictLabel(value, list) {
|
||||||
@@ -321,12 +332,12 @@
|
|||||||
console.log(res.data)
|
console.log(res.data)
|
||||||
})
|
})
|
||||||
this.checkData = [
|
this.checkData = [
|
||||||
// {
|
{
|
||||||
// name: "需求类型",
|
name: "需求类型",
|
||||||
// type: "needsType",
|
type: "demandType",
|
||||||
// data: [{dictLabel: '求职需求', dictValue: '1'},{dictLabel: '援助需求', dictValue: '2'},{dictLabel: '创业需求', dictValue: '3'},{dictLabel: '培训需求', dictValue: '4'},{dictLabel: '其他需求', dictValue: '5'}],
|
data: [{dictLabel: '求职需求', dictValue: '1'},{dictLabel: '创业需求', dictValue: '3'},{dictLabel: '培训需求', dictValue: '4'},{dictLabel: '其他需求', dictValue: '5'}],
|
||||||
// activeIndex: 0,
|
activeIndex: 0,
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
name: "需求状态",
|
name: "需求状态",
|
||||||
type: "currentStatus",
|
type: "currentStatus",
|
||||||
@@ -375,9 +386,9 @@
|
|||||||
5: 'other' // 其他需求
|
5: 'other' // 其他需求
|
||||||
};
|
};
|
||||||
// 获取当前的需求类型字符串
|
// 获取当前的需求类型字符串
|
||||||
const demandType = demandTypeMap[this.queryParams.needsType] || 'other';
|
const demandType = demandTypeMap[this.queryParams.demandType] || 'other';
|
||||||
|
uni.navigateTo({url: `/packageRc/pages/service/serviceTraceability?id=${item.id}&demandType=${demandType}`});
|
||||||
// 使用映射后的字符串构建URL并导航
|
// 使用映射后的字符串构建URL并导航
|
||||||
this.$tab.navigateTo(`/pages/services/serviceTraceability?id=${item.id}&demandType=${demandType}`);
|
|
||||||
},
|
},
|
||||||
// 触底加载
|
// 触底加载
|
||||||
getBottomList() {
|
getBottomList() {
|
||||||
@@ -403,27 +414,27 @@
|
|||||||
// 获取列表
|
// 获取列表
|
||||||
async getList() {
|
async getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
if (this.queryParams.needsType == 1) {
|
// if (this.queryParams.demandType == 1) {
|
||||||
listJobService(this.queryParams).then((res) => {
|
listJobService(this.queryParams).then((res) => {
|
||||||
this.gettedData(res)
|
this.gettedData(res)
|
||||||
});
|
});
|
||||||
} else if (this.queryParams.needsType == 2) {
|
// } else if (this.queryParams.demandType == 2) {
|
||||||
listAssistService(this.queryParams).then((res) => {
|
// listAssistService(this.queryParams).then((res) => {
|
||||||
this.gettedData(res)
|
// this.gettedData(res)
|
||||||
});
|
// });
|
||||||
} else if (this.queryParams.needsType == 3) {
|
// } else if (this.queryParams.demandType == 3) {
|
||||||
listEntrepreneurshipService(this.queryParams).then((res) => {
|
// listEntrepreneurshipService(this.queryParams).then((res) => {
|
||||||
this.gettedData(res)
|
// this.gettedData(res)
|
||||||
});
|
// });
|
||||||
} else if (this.queryParams.needsType == 4) {
|
// } else if (this.queryParams.demandType == 4) {
|
||||||
listTrainService(this.queryParams).then((res) => {
|
// listTrainService(this.queryParams).then((res) => {
|
||||||
this.gettedData(res)
|
// this.gettedData(res)
|
||||||
});
|
// });
|
||||||
} else if (this.queryParams.needsType == 5) {
|
// } else if (this.queryParams.demandType == 5) {
|
||||||
listOtherService(this.queryParams).then((res) => {
|
// listOtherService(this.queryParams).then((res) => {
|
||||||
this.gettedData(res)
|
// this.gettedData(res)
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
gettedData(res) {
|
gettedData(res) {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
@@ -444,11 +455,19 @@
|
|||||||
|
|
||||||
// 需求办结
|
// 需求办结
|
||||||
requirementHandling(item) {
|
requirementHandling(item) {
|
||||||
this.$refs.openDeal.open()
|
// this.$refs.openDeal.open()
|
||||||
this.formData = {
|
// this.formData = {
|
||||||
|
// id: item.id,
|
||||||
|
// currentStatus: '3'
|
||||||
|
// }
|
||||||
|
console.log(item, 'asdfjoiasiodfjoi')
|
||||||
|
|
||||||
|
this.$refs.dealDone.init({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
currentStatus: '3'
|
currentStatus: "3",
|
||||||
}
|
userId: item.userId,
|
||||||
|
// personStatus: item.personStatus || (this.dict.personStatusList[0] && this.dict.personStatusList[0].dictValue),
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 需求推荐
|
// 需求推荐
|
||||||
@@ -460,6 +479,7 @@
|
|||||||
|
|
||||||
// 办结按钮
|
// 办结按钮
|
||||||
async finishJobRecommend() {
|
async finishJobRecommend() {
|
||||||
|
uni.showLoading();
|
||||||
try {
|
try {
|
||||||
// 检查必填项
|
// 检查必填项
|
||||||
if (!this.formData.actualSolveDate) {
|
if (!this.formData.actualSolveDate) {
|
||||||
@@ -468,9 +488,7 @@
|
|||||||
if (!this.formData.solveDesc) {
|
if (!this.formData.solveDesc) {
|
||||||
throw new Error('解决说明不能为空');
|
throw new Error('解决说明不能为空');
|
||||||
}
|
}
|
||||||
// 显示全局加载
|
// 根据 queryParams.demandType 获取对应的 URL
|
||||||
this.$showLoading();
|
|
||||||
// 根据 queryParams.needsType 获取对应的 URL
|
|
||||||
const obj = {
|
const obj = {
|
||||||
1: '/demand/personJobDemandInfo/JdJobDemandDone',
|
1: '/demand/personJobDemandInfo/JdJobDemandDone',
|
||||||
2: '/demand/personAssistDemandInfo/assistDone',
|
2: '/demand/personAssistDemandInfo/assistDone',
|
||||||
@@ -479,7 +497,7 @@
|
|||||||
5: '/demand/personOtherDemandInfo/otherDemandDone',
|
5: '/demand/personOtherDemandInfo/otherDemandDone',
|
||||||
};
|
};
|
||||||
|
|
||||||
const url = obj[this.queryParams.needsType];
|
const url = '/manage/personDemand/demandDone';//obj[this.queryParams.demandType];
|
||||||
if (!url) {
|
if (!url) {
|
||||||
throw new Error('无效的需求类型');
|
throw new Error('无效的需求类型');
|
||||||
}
|
}
|
||||||
@@ -491,18 +509,17 @@
|
|||||||
// 检查响应码是否为200
|
// 检查响应码是否为200
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
// 显示成功的提示信息
|
// 显示成功的提示信息
|
||||||
this.$u.toast(msg);
|
uni.showToast({title: msg, icon: 'none'});
|
||||||
// this.openDeal = false;
|
// this.openDeal = false;
|
||||||
this.$refs.openDeal.close()
|
this.$refs.openDeal.close()
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// 处理错误并显示提示信息
|
// 处理错误并显示提示信息
|
||||||
this.$u.toast('请检查必填项填写');
|
uni.showToast({title: '请检查必填项填写', icon: 'none'});
|
||||||
console.error('完成需求时发生错误:', error);
|
|
||||||
} finally {
|
} finally {
|
||||||
// 确保加载页总是会被隐藏
|
// 确保加载页总是会被隐藏
|
||||||
this.$hideLoading();
|
uni.hideLoading();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// async finishJobRecommend() {
|
// async finishJobRecommend() {
|
||||||
@@ -514,21 +531,22 @@
|
|||||||
// 4: '/demand/personTrainDemandInfo/JdTrainDemandDone',
|
// 4: '/demand/personTrainDemandInfo/JdTrainDemandDone',
|
||||||
// 5: '/demand/personOtherDemandInfo/otherDemandDone',
|
// 5: '/demand/personOtherDemandInfo/otherDemandDone',
|
||||||
// }
|
// }
|
||||||
// if (!this.formData.actualSolveDate) return this.$u.toast('解决时间不能为空');
|
// if (!this.formData.actualSolveDate) return uni.showToast({title: '解决时间不能为空', icon: 'none'});
|
||||||
// if (!this.formData.solveDesc) return this.$u.toast('解决说明不能为空');
|
// if (!this.formData.solveDesc) return uni.showToast({title: '解决说明不能为空', icon: 'none'});
|
||||||
// const {
|
// const {
|
||||||
// code,
|
// code,
|
||||||
// data,
|
// data,
|
||||||
// msg
|
// msg
|
||||||
// } = await requirementCompletion(obj[this.queryParams.needsType], this.formData)
|
// } = await requirementCompletion(obj[this.queryParams.demandType], this.formData)
|
||||||
// if (code == 200) {
|
// if (code == 200) {
|
||||||
// this.$u.toast(msg)
|
// uni.showToast({title: ms, icon: 'none'}g)
|
||||||
// this.openDeal = false
|
// this.openDeal = false
|
||||||
// this.search()
|
// this.search()
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
|
|
||||||
changeFile(e) {
|
changeFile(e) {
|
||||||
|
console.log(e, 34234234234234)
|
||||||
// 清空当前的 fileUrl 数组
|
// 清空当前的 fileUrl 数组
|
||||||
this.formData.fileUrl = [];
|
this.formData.fileUrl = [];
|
||||||
// 如果 e 有长度(即用户选择了文件)
|
// 如果 e 有长度(即用户选择了文件)
|
||||||
@@ -539,7 +557,7 @@
|
|||||||
this.formData.fileUrl.push(url);
|
this.formData.fileUrl.push(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.formData.fileUrl = this.$arrayToString(this.formData.fileUrl)
|
this.formData.fileUrl = this.formData.fileUrl.join(',');
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -569,11 +587,15 @@
|
|||||||
|
|
||||||
.search-icon {
|
.search-icon {
|
||||||
width: 40rpx;
|
width: 40rpx;
|
||||||
|
height: 40rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.job-item {
|
.job-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
.item_btn{
|
.item_btn{
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
border-top: 1px solid #e3e8ee;
|
border-top: 1px solid #e3e8ee;
|
||||||
@@ -616,8 +638,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.top-container {
|
.top-container {
|
||||||
background: #fff;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
padding: 32rpx;
|
padding: 32rpx;
|
||||||
|
|
||||||
// margin-bottom: 24rpx;
|
// margin-bottom: 24rpx;
|
||||||
@@ -774,10 +794,54 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.d_flex{
|
|
||||||
|
.df_flex{
|
||||||
display: flex;
|
display: flex;
|
||||||
view{
|
view{
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
text-align: center;
|
||||||
|
color: #4c6efb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.df_flex_1{
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.df__direction_column {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.df_align_center{
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.df_justify_center{
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.df_content_between{
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.df_shrink_0{
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 日期选择器样式 */
|
||||||
|
.date-picker-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .date-picker-wrapper.noValue {
|
||||||
|
// background-color: #f9f9f9;
|
||||||
|
// }
|
||||||
|
|
||||||
|
.date-value {
|
||||||
|
color: #333;
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -41,9 +41,9 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view
|
||||||
style="position: relative; padding-top: 16px; color: #000;display: flex;align-items: center;justify-content: space-between;">
|
style="position: relative; color: #000;display: flex;align-items: center;justify-content: space-between;">
|
||||||
<view v-if="total">
|
<view v-if="total">
|
||||||
<text style="color:font-size:12rpx;margin-left:10rpx;">共{{ total }}条信息</text>
|
<text style="margin-left:10rpx;">共{{ total }}条信息</text>
|
||||||
</view>
|
</view>
|
||||||
<view style="display: flex;width: 200rpx" class="sort-type">
|
<view style="display: flex;width: 200rpx" class="sort-type">
|
||||||
<!-- <view class="sort-type" @click="showSortPicker=true">{{ sortType ? sortType : '排序方式' }}</view> -->
|
<!-- <view class="sort-type" @click="showSortPicker=true">{{ sortType ? sortType : '排序方式' }}</view> -->
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
|
|
||||||
<!-- <view class="post_job_btn" @tap.stop="$tab.navigateTo('/pages/community/personEdit?type=add')">
|
<!-- <view class="post_job_btn" @tap.stop="$tab.navigateTo('/pages/community/personEdit?type=add')">
|
||||||
</view> -->
|
</view> -->
|
||||||
<uni-popup :show="show" ref="show" @close="close" @open="open">
|
<uni-popup :show="show" ref="show" @close="close" @open="open" type="bottom" background-color="#fff">
|
||||||
<view class="dialog_div">
|
<view class="dialog_div">
|
||||||
<view class="dialog_div_top">
|
<view class="dialog_div_top">
|
||||||
<view @click="close">取消</view>
|
<view @click="close">取消</view>
|
||||||
@@ -258,7 +258,7 @@
|
|||||||
</uni-popup>
|
</uni-popup>
|
||||||
|
|
||||||
<!-- 社区端 - 显示隐藏退出组件 -->
|
<!-- 社区端 - 显示隐藏退出组件 -->
|
||||||
<exitPopup />
|
<!-- <exitPopup /> -->
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
285
packageRc/pages/service/serviceTraceability.vue
Normal file
285
packageRc/pages/service/serviceTraceability.vue
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
<template>
|
||||||
|
<view class="job-list" style="background-image: url('../../../packageRc/static/pageBg.png');position:relative;">
|
||||||
|
<view class="job-list__content">
|
||||||
|
|
||||||
|
<scroll-view class="job-list__scroll" scroll-y="true">
|
||||||
|
<view class="job-list__item" v-for="job in perlist" :key="job.id" @tap="toDetails(job)">
|
||||||
|
<view class="job-list__item-detail">
|
||||||
|
<text>经办人:</text>
|
||||||
|
<text>{{ job.agentUserName || '-' }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="job-list__item-detail">
|
||||||
|
<text>经办时间:</text>
|
||||||
|
<text>{{ job.practicalSolutionTime }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="job-list__item-detail">
|
||||||
|
<text>经办部门:</text>
|
||||||
|
<text>{{ job.agentDeptName }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="job-list__item-detail">
|
||||||
|
<text>说明:</text>
|
||||||
|
<text>{{ job.blqksm || '--'}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
serviceTraceability
|
||||||
|
} from '@/apiRc/company/index.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'personnelList',
|
||||||
|
computed: {
|
||||||
|
filterColor() {
|
||||||
|
return (status) => {
|
||||||
|
const item = this.alertTibs.find(item => item.value === status);
|
||||||
|
return item ? item.color : '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
openDeal: false,
|
||||||
|
showTime: false,
|
||||||
|
validType: [{
|
||||||
|
label: '是',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '否',
|
||||||
|
value: '0'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
alertTibs: [{
|
||||||
|
value: '1',
|
||||||
|
label: '已超期',
|
||||||
|
color: '#ea362b'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: '七天之内',
|
||||||
|
color: '#f1a945'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '3',
|
||||||
|
label: '大于七天',
|
||||||
|
color: '#377e27'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '0',
|
||||||
|
label: '已完成服务',
|
||||||
|
color: '#808080'
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
total: 0,
|
||||||
|
// 去除加载更多相关的状态和方法
|
||||||
|
// status: 'more',
|
||||||
|
// loadMoreJobs: function() {},
|
||||||
|
hopeSolveDate: '',
|
||||||
|
searchKeyword: '',
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id: undefined,
|
||||||
|
demandType: '',
|
||||||
|
},
|
||||||
|
perlist: [],
|
||||||
|
loading: false,
|
||||||
|
|
||||||
|
formData: {},
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad({
|
||||||
|
id,
|
||||||
|
demandType
|
||||||
|
}) {
|
||||||
|
this.queryParams.id = id
|
||||||
|
this.queryParams.demandType = demandType
|
||||||
|
this.getList(true);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取列表
|
||||||
|
async getList(reset = false) {
|
||||||
|
if (this.loading) return;
|
||||||
|
this.loading = true;
|
||||||
|
|
||||||
|
// 重置数据
|
||||||
|
if (reset) {
|
||||||
|
this.perlist = [];
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
}
|
||||||
|
const {
|
||||||
|
code,
|
||||||
|
data,
|
||||||
|
total
|
||||||
|
} = await serviceTraceability(this.queryParams)
|
||||||
|
if (code === 200) {
|
||||||
|
this.perlist = data; // 直接赋值获取到的数据,不再进行拼接
|
||||||
|
this.total = total;
|
||||||
|
}
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
// 搜索功能处理
|
||||||
|
handleSearch() {
|
||||||
|
this.getList(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
// 根据 value 查找 label
|
||||||
|
getLabelByValue(list, value) {
|
||||||
|
const found = list.find(item => item.value === value);
|
||||||
|
return found ? found.label : '-';
|
||||||
|
},
|
||||||
|
getDictLabel(list, dictValue) {
|
||||||
|
let arr = list.filter((ele) => ele.dictValue == dictValue);
|
||||||
|
if (arr.length) {
|
||||||
|
return arr[0].dictLabel;
|
||||||
|
} else {
|
||||||
|
return "--";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
toDetails({
|
||||||
|
businessType,
|
||||||
|
id
|
||||||
|
}) {
|
||||||
|
// 定义一个映射对象,将 businessType 映射到相应的页面路径和参数
|
||||||
|
const navigationMap = {
|
||||||
|
interview: {
|
||||||
|
path: '/pages/services/serviceDetail',
|
||||||
|
params: `?id=${id}&type=1&showTab=1`
|
||||||
|
},
|
||||||
|
assist: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=2&showTab=1`
|
||||||
|
},
|
||||||
|
entrepreneurship: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=3&showTab=1`
|
||||||
|
},
|
||||||
|
jobDemand: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=1&showTab=1&showInfo=1`
|
||||||
|
},
|
||||||
|
jobRecommendation: {
|
||||||
|
path: '/pages/services/serviceDetail',
|
||||||
|
params: `?id=${id}&type=3&showTab=1&showInfo=1`
|
||||||
|
},
|
||||||
|
otherNeeds: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=5&showTab=1`
|
||||||
|
},
|
||||||
|
policy: {
|
||||||
|
path: '/pages/services/serviceDetail',
|
||||||
|
params: `?id=${id}&type=2&showTab=1`
|
||||||
|
},
|
||||||
|
trainingNeeds: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=4&showTab=1`
|
||||||
|
},
|
||||||
|
trainingService: {
|
||||||
|
path: '/pages/needs/needDetail',
|
||||||
|
params: `?id=${id}&type=4&showTab=1`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// // 检查 businessType 是否存在于映射中
|
||||||
|
// if (businessType in navigationMap) {
|
||||||
|
// const {
|
||||||
|
// path,
|
||||||
|
// params
|
||||||
|
// } = navigationMap[businessType];
|
||||||
|
// this.$tab.navigateTo(`${path}${params}`);
|
||||||
|
// } else {
|
||||||
|
// // 如果 businessType 不匹配任何已知的类型,可以这里处理错误或忽略
|
||||||
|
// console.warn(`Unknown businessType: ${businessType}`);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.job-list {
|
||||||
|
|
||||||
|
background-color: #f4f4f4 !important;
|
||||||
|
height: 100vh;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% auto;
|
||||||
|
padding: 32rpx;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
position: relative;
|
||||||
|
padding: 32rpx;
|
||||||
|
z-index: 10;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 32rpx 32rpx 0 0;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
width: calc(100% - 64rpx);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__scroll {
|
||||||
|
margin-top: 10rpx;
|
||||||
|
height: calc(100vh - 200rpx);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
position: relative;
|
||||||
|
padding: 32rpx;
|
||||||
|
margin-bottom: 32rpx;
|
||||||
|
background-color: #d0dcee;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item-detail {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
color: #8e8e8e;
|
||||||
|
|
||||||
|
&>text:nth-child(1) {
|
||||||
|
width: 200rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
view,
|
||||||
|
text:last-child {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.items {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post_job_btn {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 120rpx;
|
||||||
|
right: 16rpx;
|
||||||
|
width: 150rpx;
|
||||||
|
height: 150rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 20;
|
||||||
|
background: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/addPersonnel.png') no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog_form {
|
||||||
|
padding: 30rpx;
|
||||||
|
width: 80vw;
|
||||||
|
|
||||||
|
.tadio {
|
||||||
|
height: 100rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 100rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -384,7 +384,7 @@
|
|||||||
{
|
{
|
||||||
"path": "pages/personalList/personalList",
|
"path": "pages/personalList/personalList",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "添加帮扶"
|
"navigationBarTitleText": "毕业生追踪"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -414,6 +414,11 @@
|
|||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "服务"
|
"navigationBarTitleText": "服务"
|
||||||
}
|
}
|
||||||
|
} , {
|
||||||
|
"path": "pages/service/serviceTraceability",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "服务追溯"
|
||||||
|
}
|
||||||
} , {
|
} , {
|
||||||
"path": "pages/needs/needDetail",
|
"path": "pages/needs/needDetail",
|
||||||
"style": {
|
"style": {
|
||||||
|
|||||||
@@ -1039,13 +1039,12 @@ import { getToken } from '@/utilsRc/auth.js';
|
|||||||
function goRc(){
|
function goRc(){
|
||||||
if (checkLogin()) {
|
if (checkLogin()) {
|
||||||
let token = getToken();
|
let token = getToken();
|
||||||
if( token != null ){
|
if( token != null && token != '' && token != undefined ){
|
||||||
if(storeRc.state.user.type == 'person'){
|
if(storeRc.state.user.type == 'person'){
|
||||||
navTo('/packageRc/pages/index/index');
|
navTo('/packageRc/pages/index/index');
|
||||||
}else{
|
}else{
|
||||||
navTo('/packageRc/pages/daiban/daiban');
|
navTo('/packageRc/pages/daiban/daiban');
|
||||||
}
|
}
|
||||||
console.log(storeRc.state.user.roles, storeRc.state.user.type, 'state')
|
|
||||||
}else{
|
}else{
|
||||||
let userInfo = uni.getStorageSync('userInfo')
|
let userInfo = uni.getStorageSync('userInfo')
|
||||||
storeRc.dispatch('LoginByUserInfo', userInfo).then(res => {
|
storeRc.dispatch('LoginByUserInfo', userInfo).then(res => {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const request = config => {
|
|||||||
if (getToken() && !isToken) {
|
if (getToken() && !isToken) {
|
||||||
config.header['Authorization'] = 'Bearer ' + getToken()
|
config.header['Authorization'] = 'Bearer ' + getToken()
|
||||||
}
|
}
|
||||||
config.header['Authorization'] = 'Bearer ' + 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJQSlUyVlJCc1E1aXRMMWgxdjNkcVh2eER1c2VVc0hvRiIsInVzZXJJZCI6MX0.z4Z2XqgXyU0GQU-i7Bsa5T-zCKApTxj1YQ73rk7bAVo'
|
config.header['Authorization'] = 'Bearer ' + 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJGUVl3YmRUalAzQ1BMNGFVc0RxeGJmdjAyT3JMZllDVSIsInVzZXJJZCI6MX0.kSOXY2QJQPbfjE0Yx2R3S8yQciA33OZBS9xJtr7cQ1A'
|
||||||
// get请求映射params参数
|
// get请求映射params参数
|
||||||
if (config.params) {
|
if (config.params) {
|
||||||
let url = config.url + '?' + tansParams(config.params)
|
let url = config.url + '?' + tansParams(config.params)
|
||||||
|
|||||||
Reference in New Issue
Block a user