修改页面样式等

This commit is contained in:
2025-11-03 17:48:14 +08:00
parent 4ba6539850
commit 3a1bd54878
30 changed files with 2294 additions and 917 deletions

View File

@@ -1,7 +1,7 @@
<!--
* @Date: 2025-10-16 15:15:47
* @LastEditors: shirlwang
* @LastEditTime: 2025-10-31 14:56:32
* @LastEditTime: 2025-11-03 17:41:33
-->
<template>
<view>
@@ -51,13 +51,13 @@
<view> {{jobList1count}}条信息</view>
</view>
<view v-for="(item, index) in jobList1" :key="index" class="job-list">
<view class="title">销售顾问</view>
<view class="title">{{ item.personName }} {{ item.deptName }}</view>
<view class="info">
待办内容文字示例待办内容文字示例待办内容文字示例待办内容文字示例
{{getDictLabel(item.demandType, qcjy_xqlx)}}_{{ item.jobDescription }}
</view>
<view class="bottom-line">
<view>发起时间2025-09-24 15:02</view>
<view style="color: #EF7325;">青岛xx公司</view>
<view>发起时间{{item.createTime}}</view>
<view style="color: #EF7325;">{{getDictLabel(item.currentStatus, qcjy_xqlc)}}</view>
</view>
</view>
<view class="titles">
@@ -70,22 +70,26 @@
<image v-else src="../../../packageRc/static/personIconFe.png"/>
<view class="top-right">
<view class="name-line">
<view class="name">姓名<view class="tag">{{item.name}}</view></view>
<view class="service-status">·未服务</view>
<view class="name">{{item.name}}<view class="tag">{{item.zy}}</view></view>
<view class="service-status" v-if="item.fwzt == 0">未服务</view>
<view class="service-status" v-if="item.fwzt == 1">已服务</view>
<view class="service-status" v-if="item.fwzt == 2">联系不上</view>
<view class="service-status" v-if="item.fwzt == 3">拒绝服务</view>
<view class="service-status" v-if="item.isReturn == 1">被退回</view>
</view>
<view class="info-line" style="display: flex;">
<view style="margin-right: 24rpx;"><text>年龄</text>27</view>
<view><text>服务次数</text>1</view>
<view style="margin-right: 24rpx;"><text>年龄</text>{{item.age}}</view>
<view><text>服务次数</text>{{item.operateNum}}</view>
</view>
</view>
</view>
<view class="info-line">
<view><text>联系电话</text>152****5488</view>
<view><text>联系电话</text>{{item.phone || '--'}}</view>
<view><text>详细地址</text>{{item.xxdz}}</view>
</view>
<view class="services">
<view @click="showReturnReasonPopup(item.id)">退回</view>
<view @click="tiao(item.id,item.name)">服务</view>
<view @click="tiao(item)">服务</view>
</view>
</view>
</view>
@@ -139,11 +143,23 @@ function back() {
});
};
let qcjy_xqlx = ref([])
let qcjy_xqlc = ref([])
import {getDicts} from '@/apiRc/system/dict'
onMounted(() => {
getlist();
getlistyujing();
getDicts('qcjy_xqlx').then(res => {
qcjy_xqlx.value = res.data
});
getDicts('qcjy_xqlc').then(res => {
qcjy_xqlc.value = res.data
});
});
function getDictLabel(value, list) {
const item = list.find(item => item.dictValue === value);
return item ? item.dictLabel : '';
}
async function getlist(){
try {
@@ -180,11 +196,11 @@ function showReturnReasonPopup(dd) {
}
}
function tiao(id,name){
console.log('尝试导航到待办详情页面ID:', id);
function tiao(item){
console.log('尝试导航到待办详情页面ID:', item.id, item.userId);
// 尝试直接使用uni.navigateTo使用正确的格式并传递id参数
uni.navigateTo({
url: `/packageRc/pages/daiban/daibandetail?id=${id}&name=${name}`,
url: `/packageRc/pages/daiban/daibandetail?id=${item.id}&name=${item.name}&userId=${item.userId}`,
success: function() {
console.log('导航成功');
},
@@ -555,12 +571,14 @@ view{box-sizing: border-box;display: block;}
border-radius: 4rpx;
background: #4D89E3;
color: #fff;
flex-shrink: 0;
}
}
.service-status{
color: #E0A61F;
font-weight: bold;
font-size: 26rpx;
flex-shrink: 0;
}
}
.info-line{

View File

@@ -1,34 +1,10 @@
<template>
<view class="job-list">
<view class="top_box_bg">
<u-image src="@/packageRc/static/images/top.png" width="750rpx" height="496rpx" />
</view>
<view class="job-list__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">
<!-- 注释掉store相关引用避免getters错误 -->
<!--
<uni-icons
v-show="false"
@tap=""
name="list"
size="44rpx"
color="#fff"
></uni-icons>
-->
</view>
</div>
</view>
<view class="job-list" style="background-image: url('../../../packageRc/static/pageBg.png');">
<view class="job-list__content">
<img
<image
class="top_box_bg_service"
src=""
width="360rpx"
height="50rpx"
src="/packageRc/static/images/serviceFrequency.png"
style="width:calc(100vw - 64rpx);height:80rpx;display: block;"
alt=""
/>
<view class="serviceFrequency" @tap="
@@ -40,7 +16,7 @@
<view
style="font-size: 28rpx; font-weight: normal"
>查看></view
>{{'查看>'}}</view
>
</view>
<view class="content">
@@ -81,10 +57,9 @@
</view>
<view class="visitAndInvestigate" @click="goAddServices">
<view class="text">服务</view>
<img
<image
src="/packageRc/static/images/person/fillInRecords.png"
width="60rpx"
height="40rpx"
style="width:220rpx;height:60rpx;"
alt=""
srcset=""
/>
@@ -128,66 +103,68 @@
>条求职需求</text
>
</view> -->
<u-swipe-action v-show="activeType == 1">
<u-swipe-action-item
:options="[{ text: '删除' }]"
<uni-swipe-action v-show="activeType == 1">
<uni-swipe-action-item
:right-options="[{ text: '删除' }]"
class="jobSearchListview"
v-for="item in jobSearchList"
:key="item.id"
@click="removeRowData(item)"
>
<view style="padding: 30rpx;" @click="goNeedsDetail(item, 1)">
<view class="jobSearchListview_name">{{
getJobWorkTypeName(item.jobWorkType)
}}</view>
<view class="salaryExpectation">
<text style="color: #8e8e8e">期望薪资</text>
<view class="salary">
{{ item.minRecruitmentSalary}}-
{{ item.highRecruitmentSalary}}
/
<view>
<view style="border-radius: 8rpx;margin-top: 16rpx;background: #fff;padding: 30rpx;" @click="goNeedsDetail(item, 1)">
<view class="jobSearchListview_name">{{
getJobWorkTypeName(item.jobWorkType)
}}</view>
<view class="salaryExpectation">
<text style="color: #8e8e8e">期望薪资</text>
<view class="salary">
{{ item.minRecruitmentSalary}}-
{{ item.highRecruitmentSalary}}
/
</view>
</view>
<view class="salaryExpectation">
<text style="color: #8e8e8e">希望工作地点</text>
<text>{{ item.addressDesc }}</text>
</view>
<view class="jobSearchListview_currentStatus">
<text style="color: #e0a61f" v-if="item.currentStatus == 1"
>待处理</text
>
<text style="color: #288ae6" v-if="item.currentStatus == 2"
>处理中</text
>
<text style="color: #1ac88b" v-if="item.currentStatus == 3"
>已完成</text
>
</view>
<view v-if="item.currentStatus == 3" class="job-list__item-btn">
<u-button
type="primary"
:plain="true"
color="#1A62CE"
text="服务追溯"
@click.native.stop="serviceTraceButton(item, 1)"
:customStyle="{ border: 'none' }"
></u-button>
</view>
<view class="job-list__item-btn" v-else>
<view
class="btn"
@click.native.stop="requirementTraining(item, 1)"
>推荐</view
>
<view
class="btn"
@click.native.stop="requirementHandling(item, 1)"
>办结</view
>
</view>
</view>
<view class="salaryExpectation">
<text style="color: #8e8e8e">希望工作地点</text>
<text>{{ item.addressDesc }}</text>
</view>
<view class="jobSearchListview_currentStatus">
<text style="color: #e0a61f" v-if="item.currentStatus == 1"
>待处理</text
>
<text style="color: #288ae6" v-if="item.currentStatus == 2"
>处理中</text
>
<text style="color: #1ac88b" v-if="item.currentStatus == 3"
>已完成</text
>
</view>
<view v-if="item.currentStatus == 3" class="job-list__item-btn">
<u-button
type="primary"
:plain="true"
color="#1A62CE"
text="服务追溯"
@click.native.stop="serviceTraceButton(item, 1)"
:customStyle="{ border: 'none' }"
></u-button>
</view>
<view class="job-list__item-btn" v-else>
<view
class="btn"
@click.native.stop="requirementTraining(item, 1)"
>推荐</view
>
<view
class="btn"
@click.native.stop="requirementHandling(item, 1)"
>办结</view
>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</uni-swipe-action-item>
</uni-swipe-action>
<!-- <view class="requirementTitle">
<text>创业需求</text>
<text class="text"
@@ -197,15 +174,15 @@
>条求职需求</text
>
</view> -->
<u-swipe-action v-show="activeType == 2">
<u-swipe-action-item
:options="[{ text: '删除' }]"
<uni-swipe-action v-show="activeType == 2">
<uni-swipe-action-item
:right-options="[{ text: '删除' }]"
@click="removeRowData(item)"
class="entrepreneurialNeeds"
v-for="item in listOfEntrepreneurialNeeds"
:key="item.id"
>
<view style="padding: 30rpx" @click="goNeedsDetail(item, 3)">
<view style="border-radius: 8rpx;margin-top: 16rpx;background: #fff;padding: 30rpx" @click="goNeedsDetail(item, 3)">
<view class="entrepreneurialNeeds_name">
{{ item.personName }}的创业需求
</view>
@@ -251,8 +228,8 @@
>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</uni-swipe-action-item>
</uni-swipe-action>
<!-- <view class="requirementTitle">
<text>培训需求</text>
<text class="text"
@@ -260,15 +237,15 @@
>条求职需求</text
>
</view> -->
<u-swipe-action v-show="activeType == 3">
<u-swipe-action-item
:options="[{ text: '删除' }]"
<uni-swipe-action v-show="activeType == 3">
<uni-swipe-action-item
:right-options="[{ text: '删除' }]"
@click="removeRowData(item)"
class="entrepreneurialNeeds"
v-for="item in trainingList"
:key="item.id"
>
<view style="padding: 30rpx" @click="goNeedsDetail(item, 4)">
<view style="border-radius: 8rpx;margin-top: 16rpx;background: #fff;padding: 30rpx" @click="goNeedsDetail(item, 4)">
<view class="entrepreneurialNeeds_name">
{{ item.personName }}的培训需求
</view>
@@ -316,8 +293,8 @@
>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</uni-swipe-action-item>
</uni-swipe-action>
<!-- <view class="requirementTitle">
<text>其他需求</text>
<text class="text"
@@ -325,15 +302,15 @@
>条其他需求</text
>
</view> -->
<u-swipe-action v-show="activeType == 4">
<u-swipe-action-item
<uni-swipe-action v-show="activeType == 4">
<uni-swipe-action-item
:options="[{ text: '删除' }]"
@click="removeRowData(item)"
class="entrepreneurialNeeds"
v-for="item in otherList"
:key="item.id"
>
<view style="padding: 30rpx" @click="goNeedsDetail(item, 5)">
<view style="border-radius: 8rpx;margin-top: 16rpx;background: #fff;padding: 30rpx" @click="goNeedsDetail(item, 5)">
<view class="entrepreneurialNeeds_name">
{{ item.personName }}的其他需求
</view>
@@ -378,15 +355,15 @@
>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</uni-swipe-action-item>
</uni-swipe-action>
</view>
</view>
<view class="addNeeds" @click="goAddNeeds">
<img src="/packageRc/static/images/person/addNeeds.png" />
</view>
<u-popup :show="show" @close="close" @open="open">
<!-- <uni-popup ref="show" @close="close" @open="open">
<view class="dialog_div">
<view class="dialog_div_item" @click="goAddNeeds(1)">
<img
@@ -428,10 +405,10 @@
/>
其他需求
</view>
<view class="dialog_div_btn" @click="show = false"> </view>
<view class="dialog_div_btn" @click="closeShow"> </view>
</view>
</u-popup>
<u-datetime-picker
</uni-popup> -->
<!-- <u-datetime-picker
style="position: relative; z-index: 100"
:show="showTime"
v-model="hopeSolveDate"
@@ -440,7 +417,7 @@
@confirm="confirmDate"
@cancel="showTime = false"
@close="showTime = false"
></u-datetime-picker>
></u-datetime-picker> -->
<!-- 社区端 - 显示隐藏退出组件 -->
<exitPopup />
</view>
@@ -528,7 +505,7 @@ export default {
onLoad(options) {
this.form.id = options.id;
this.form.userId = options.name
this.form.userId = options.id; // 确保userId被正确赋值
this.form.userId = options.userId; // 确保userId被正确赋值
console.log("options", options);
this.getPersonInfo11();
@@ -622,8 +599,8 @@ export default {
open() {
// console.log('open');
},
close() {
this.show = false;
closeShow() {
this.$refs.show.close();
// console.log('close');
},
@@ -731,22 +708,17 @@ export default {
},
});
},
goAddNeeds(needsType) {
console.log("this.form.userId",this.form);
uni.navigateTo({
url: `/packageRc/pages/demand/demandail?activeType=${1}&id=${this.form.userId}&name=${this.form.name}`,
success: function() {
console.log('导航成功')
},
fail: function(err) {
console.error('导航失败:', err);
}
});
goAddNeeds() {
uni.navigateTo({
url: `/packageRc/pages/demand/demandail?activeType=${1}&id=${this.form.userId}&name=${this.form.name}`,
success: function() {
console.log('导航成功')
},
fail: function(err) {
console.error('导航失败:', err);
}
});
},
getDictLabel(value, list) {
if (list) {
@@ -814,13 +786,13 @@ export default {
// 需求推荐/培训
requirementTraining(item, index) {
if (index == 1) {
this.$tab.navigateTo(
`/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1`
);
uni.navigateTo({
url: `/packageRc/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1`
});
} else {
this.$tab.navigateTo(
`/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1`
);
uni.navigateTo({
url: `/packageRc/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1`
});
}
},
changeFile(e) {
@@ -1013,15 +985,15 @@ export default {
}
.job-list {
&__navbar {
height: 80rpx;
}
height: 100%;;
background-repeat: no-repeat;
background-color: #F4F4F4;
&__content {
position: relative;
padding: 32rpx;
z-index: 10;
background-color: #d0dcee;
background-color: #F4F4F4;
border-radius: 32rpx 32rpx 0 0;
border: 1px solid #fff;
}
@@ -1108,18 +1080,17 @@ export default {
position: relative;
padding: 1rpx;
.content {
padding: 17px;
margin-top: 110rpx;
height: calc(100vh - 264rpx);
padding: 0 32rpx;
margin-top: 100rpx;
height: calc(100vh - 64rpx);
overflow: auto;
z-index: 10;
background-color: #d0dcee;
border-radius: 17px 17px 0 0;
border: 3px solid #fff !important;
// background-color: #d0dcee;
// border-radius: 17px 17px 0 0;
// border: 3px solid #fff !important;
}
}
.top_box_bg_service {
display:none;
position: absolute;
top: 20rpx;
left: 40rpx;
@@ -1212,6 +1183,7 @@ export default {
width: 100%;
height: 205rpx;
border-radius: 8px;
border-top-right-radius: 0;
background: #ffffff;
padding: 30rpx;
box-sizing: border-box;

View File

@@ -1,439 +0,0 @@
<!--
* @Date: 2024-10-09 17:07:39
* @LastEditors: lip
* @LastEditTime: 2025-05-07 09:34:25
-->
<template>
<view class="input-outer-part">
<scroll-view scroll-y="true" :style="{height: edit?'calc(100vh - 325rpx)':'calc(100vh - 200rpx)'}">
<view class="inner">
<view class="part-title" style="display: flex;justify-content: space-between;">需求信息
<view v-if="!edit&&formData.id&&formData.currentStatus!=3&&formData.currentStatus!=2" class="btn"
style="font-weight: normal;display: flex;" @click="edit=true">编辑<u-icon name="edit-pen"
color="#A6A6A6"></u-icon></view>
</view>
<view class="inner-part">
<u--form labelPosition="left" :model="formData" :rules="rules" ref="uForm" class="self-form"
labelWidth="100">
<u-form-item label="姓名" prop="personName" required
v-if="$store.getters.roles.includes('shequn')|| $store.getters.roles.includes('gly')"
>
<view style="width: 100%; margin-left: 30rpx;" @click="openPersonChooser"
:class="{disabledLine: !edit||!canChoosePerson, noValue: !formData.personName}">
{{ formData.personName || '请选择' }}
</view>
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
</u-form-item>
<u-form-item label="需求说明" prop="demandDesc">
<u-textarea :disabled="!edit" v-model="formData.demandDesc" placeholder="请输入"></u-textarea>
</u-form-item>
<!-- <u-form-item label="需求标题" prop="demandTitle" required>
<u--textarea :disabled="!edit" v-model="formData.demandTitle" placeholder="请输入"
style="margin-left: 30rpx;"></u--textarea>
<u-icon slot="right" name="edit-pen" color="#A6A6A6"></u-icon>
</u-form-item> -->
<!-- <u-form-item label="是否意向接受援助" prop="isAcceptAssistance" required>
<view style="margin-left: 30rpx;">
<u-radio-group :disabled="!edit" v-model="formData.isAcceptAssistance" placement="row">
<u-radio :customStyle="{marginRight: '16px'}" label="是" name="是"
value="1"></u-radio>
<u-radio :customStyle="{marginRight: '16px'}" label="否" name="否"
value="0"></u-radio>
</u-radio-group>
</view>
</u-form-item> -->
<!-- <u-form-item label="是否接受审批结果" prop="isAcceptApprovalResult" required>
<view style="margin-left: 30rpx;">
<u-radio-group :disabled="!edit" v-model="formData.isAcceptApprovalResult"
placement="row">
<u-radio :customStyle="{marginRight: '16px'}" label="是" name="是"
value="1"></u-radio>
<u-radio :customStyle="{marginRight: '16px'}" label="否" name="否"
value="0"></u-radio>
</u-radio-group>
</view>
</u-form-item> -->
<!-- <u-form-item label="希望解决日期" prop="hopeSolveDate" required>
<view style="width: 100%; margin-left: 30rpx;" @click="showPicker('hopeSolveDate')"
:class="{disabledLine: !edit, noValue: !formData.hopeSolveDate}">
{{ formData.hopeSolveDate||'请选择' }}
</view>
<u-icon slot="right" name="arrow-down" color="#A6A6A6"></u-icon>
</u-form-item> -->
</u--form>
</view>
</view>
<!-- <view class="inner" style="margin-top: 32rpx;">
<view class="inner-part">
<u--form labelPosition="left" class="self-form" labelWidth="110" ref="uForm" :model="formData"
:rules="rules">
<u-form-item label="需求说明" prop="demandDesc">
<u-textarea :disabled="!edit" v-model="formData.demandDesc" placeholder="请输入"></u-textarea>
</u-form-item>
</u--form>
</view>
</view> -->
<!-- <view class="inner">
<view class="part-title" style="margin-top: 32rpx;">附件信息</view>
<view class="inner-part">
<u--form labelPosition="left" class="self-form" labelWidth="110">
<u-form-item label="附件" prop="fileUrl">
<ImageUpload :fileList="fileList" @update="changeFile" :maxCount="6" />
</u-form-item>
</u--form>
</view>
</view> -->
<!-- 办理完成后 需求说明 -->
<req-comp :form="{
actualSolveDate: formData.actualSolveDate,
actualSolvePeople: formData.actualSolvePeople,
solveDesc: formData.solveDesc,
fileUrl: formData.fileUrl
}" />
</scroll-view>
<u-datetime-picker :show="show.hopeSolveDate" v-model="dates.hopeSolveDate" mode="date"
@confirm="confirmDate('hopeSolveDate', $event)" @cancel="cancelPicker('hopeSolveDate')"></u-datetime-picker>
<choose-person ref="personChooser" @confirm="personNameConfirm" />
<view class="button-area" v-if="edit">
<view class="btn" @click="cancelPage">取消</view>
<view class="btn reset" @click="getDetail(formData.id)">重置</view>
<view class="btn save" @click="saveInfo">保存</view>
</view>
</view>
</template>
<script>
// import {
// getPersonBase
// } from "@/api/person";
// import {
// addAssistService,
// updateAssistService,
// getAssistService
// } from "@/api/needs/assistService";
// import ImageUpload from '@/components/ImageUpload'
// import ChoosePerson from '@/pages/needs/components/choosePerson';
// import dayjs from "dayjs";
export default {
components: {
// ChoosePerson,
// ImageUpload,
},
data() {
return {
fileList: [],
edit: true,
personBase: {},
dates: {},
formData: {
demandDesc: ''
// demandTitle: '',
// isAcceptAssistance: '',
// isAcceptApprovalResult: '',
// personName: '',
},
rules: {
// demandTitle: [{
// required: true,
// message: '请填写需求标题',
// trigger: ['blur', 'change'],
// }, ],
// isAcceptAssistance: [{
// required: true,
// message: '请选择是否意向接受援助',
// trigger: ['blur', 'change'],
// }, ],
// isAcceptApprovalResult: [{
// required: true,
// message: '请选择是否接受审批结果',
// trigger: ['blur', 'change'],
// }, ],
// personName: [{
// required: true,
// message: '请填写姓名',
// trigger: ['blur', 'change'],
// }, ],
// hopeSolveDate: [{
// required: true,
// message: '请选择希望解决日期',
// trigger: ['blur', 'change'],
// }, ],
personName: [{
required: true,
message: '请填写姓名',
trigger: ['blur', 'change'],
}, ],
demandDesc: [{
required: true,
message: '请填写需求说明',
trigger: ['blur', 'change'],
}, ],
},
dict: {},
show: {},
currentCityArr: [],
originalDept: [],
currentCity: '请选择',
bysj: '',
loading: false,
route: {},
canChoosePerson: false,
}
},
onReady() {
this.$refs.uForm.setRules(this.rules)
},
created() {
this.loading = true;
},
methods: {
cancelPage() {
if (this.formData.id) {
this.edit = false;
this.getDetail(this.formData.id)
} else {
uni.navigateBack()
}
},
openPersonChooser() {
if (this.edit && this.canChoosePerson) {
this.$refs.personChooser.open();
}
},
personNameConfirm(event) {
this.formData.personName = event.name
this.formData.personId = event.id
this.formData.userId = event.userId
this.formNameChange();
this.$forceUpdate();
},
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.$arrayToString(this.formData.fileUrl)
},
addOne() {
this.formData = {}
this.getPersonInfo()
if(this.name){
this.formData.personName = this.name
this.formData.userId = this.needid
}
this.edit = true
},
getDetail(id) {
getAssistService(id).then(res => {
this.formData = res.data;
this.edit = false
this.fileList = this.$processFileUrl(this.formData.fileUrl)
})
},
confirmDate(type, e) {
this.show[type] = false;
let date = new Date(e.value)
this.formData[type] =
`${date.getFullYear()}-${(date.getMonth()+1)>9?(date.getMonth()+1):('0'+(date.getMonth()+1))}-${date.getDate()>9?date.getDate():('0'+date.getDate())}`
console.log(this.show[type], type)
this.$forceUpdate();
},
goBack() {
uni.navigateBack();
},
cancelPicker(type) {
this.show[type] = false
this.$forceUpdate();
},
getDictLabel(value, list) {
if (list) {
let arr = list.filter(ele => ele.dictValue == value)
if (arr.length) {
return arr[0].dictLabel
} else {
return '请选择'
}
}
},
pickerConfirm(type, event) {
this.show[type] = false
this.formData[type] = event.value[0].dictValue
this.$forceUpdate();
},
showPicker(type) {
if (this.edit) {
this.show[type] = true
this.$forceUpdate()
}
},
getPersonInfo() {
this.loading = true;
this.$store.dispatch("GetInfo").then((res) => {
if (res.data.roles.indexOf('qunzhong') == -1) {
this.canChoosePerson = true;
} else {
this.canChoosePerson = false;
getPersonBase(res.data.user.userId).then(resp => {
this.formData.personId = resp.data.id
this.formData.userId = resp.data.userId
this.formData.personName = resp.data.name
this.formNameChange();
this.$forceUpdate();
})
}
})
},
formNameChange() {
let date = new Date()
// let day =
// `${date.getFullYear()}-${(date.getMonth()+1) + 1 > 9 ? (date.getMonth()+1) + 1: '0'+((date.getMonth()+1) + 1)}-${date.getDate() > 9 ? date.getDate(): '0'+date.getDate()}`
const dayNew = dayjs(date).format("YYYY-MM-DD");
this.formData.demandTitle = `${this.formData.personName}_于${dayNew}_提出援助需求`
},
async saveInfo() {
try {
// 验证表单
const isValid = await this.$refs.uForm.validate();
console.log(isValid)
if (!isValid) {
throw new Error('请检查必填项填写');
}
// 显示全局加载
this.$showLoading();
// 根据 formData 是否有 id 来决定是更新还是新增
let response;
let successMessage;
if (this.formData.id) {
response = await updateAssistService(this.formData);
successMessage = '修改成功';
} else {
response = await addAssistService(this.formData);
successMessage = '保存成功';
}
// 检查响应码是否为200
if (response.code === 200) {
this.$u.toast(successMessage);
// 如果是编辑模式,关闭编辑状态;否则返回上一页
if (this.formData.id) {
this.edit = false;
} else {
await this.$delay(1000); // 延迟1秒后返回上一页
uni.navigateBack();
}
}
} catch (error) {
if(error.length){
this.$u.toast('请填写完整信息!');
}else{
this.$u.toast('系统错误,请联系管理员!');
}
} finally {
// 确保加载页总是会被隐藏
this.$hideLoading();
}
},
// saveInfo() {
// this.$refs.uForm.validate().then(res => {
// if (this.formData.id) {
// updateAssistService(this.formData).then(res => {
// if (res.code == 200) {
// uni.showToast({
// title: '修改成功'
// })
// this.edit = false;
// }
// })
// } else {
// addAssistService(this.formData).then(res => {
// if (res.code == 200) {
// uni.showToast({
// title: '保存成功'
// })
// uni.navigateBack();
// }
// })
// }
// }).catch(() => {
// uni.showToast({
// title: '请检查必填项填写',
// icon: 'none'
// })
// })
// }
}
}
</script>
<style lang="scss">
.page ::v-deep .u-navbar__content {
background-color: transparent !important;
}
.page {
background-color: #EEF1F5 !important;
height: 100vh;
background-image: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/top.png');
background-repeat: no-repeat;
background-size: 100% auto;
}
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
background: #fff;
display: flex;
box-sizing: border-box;
margin-top: 40rpx;
border-radius: 16px 16px 0px 0px;
.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;
}
}
.noValue {
color: rgb(192, 196, 204);
}
.disabledLine {
background: rgb(245, 247, 250);
cursor: not-allowed;
}
</style>

View File

@@ -1,10 +1,10 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 12:15:15
* @LastEditTime: 2025-11-03 15:43:51
-->
<template>
<view class="container" style="background-color: #eef1f5;">
<view class="container">
<scroll-view scroll-y="true" :style="{height: edit?'calc(90vh - 150px)':'calc(100vh - 144px)'}">
<view class="inner">
<view class="part-title" style="display: flex;justify-content: space-between;">创业需求信息
@@ -463,7 +463,10 @@
}
.inner {
background: #eef1f5;
background: #fff;
width: calc(100% - 64rpx);
box-sizing: border-box;
margin: 0 auto;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
@@ -486,7 +489,7 @@
margin-bottom: 24rpx;
background-color: #fff;
border-radius: 8rpx;
padding: 24rpx;
padding: 24rpx 0;
}
.form-label {
@@ -594,8 +597,7 @@
}
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;

View File

@@ -1,10 +1,10 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 12:15:48
* @LastEditTime: 2025-11-03 16:11:03
-->
<template>
<view class="container" style="background-color: #f7f7f7;">
<view class="container">
<scroll-view scroll-y="true" >
<view class="inner">
<view class="part-title" style="display: flex;justify-content: space-between;">求职需求信息
@@ -302,9 +302,11 @@
},
// 移除uView表单验证相关代码
created() {
getDicts('qcjy_fwnr').then(res => {
this.bfnrzd = res.data;
});
this.workTypeRemoteMethod('');
console.log('qcjy_fwnr' );
this.$getDict('qcjy_fwnr').then(res => {
this.bfnrzd = res.data;
});
this.setName()
this.loading = true;
let arr = [{
@@ -354,18 +356,14 @@
this.loading = false;
});
this.workTypeRemoteMethod('');
},
methods: {
// 获取字典数据
getDicts(dictType) {
return new Promise((resolve, reject) => {
// 这里应该调用实际的API暂时返回空数组
// 如果需要真实的API调用请替换下面的代码
setTimeout(() => {
resolve({ data: [] });
}, 100);
});
return this.$getDict(dictType)
// .then(res => {
// this.dict[dictType] = res.data;
// });
},
cancelPage() {
@@ -607,14 +605,6 @@
this.$set(this.formData, "longitude", marker.location.lng);
},
// 处理树形数据为级联选择器格式
processWorkTypeTree(treeData) {
if (!treeData || !Array.isArray(treeData)) {
@@ -752,20 +742,11 @@
</script>
<style lang="scss">
.page ::v-deep .u-navbar__content {
background-color: transparent !important;
}
.page {
background-color: #3161c7;
height: 100vh;
background-image: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/top.png');
background-repeat: no-repeat;
background-size: 100% auto;
}
.inner {
background: #eef1f5;
background: #fff;
width: calc(100% - 64rpx);
margin: 0 auto;
box-sizing: border-box;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
@@ -788,7 +769,7 @@
margin-bottom: 24rpx;
background-color: #fff;
border-radius: 8rpx;
padding: 24rpx;
padding: 24rpx 0;
}
.form-label {
@@ -868,8 +849,7 @@
/* 按钮区域样式 */
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;

View File

@@ -1,7 +1,7 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: lip
* @LastEditTime: 2025-05-07 10:03:20
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 16:07:40
-->
<template>
<view class="container">
@@ -229,7 +229,8 @@ import { addPersonDemand, updatePersonDemand, getPersonDemand } from "@/packageR
}
</script>
<style lang="scss"> .container {
<style lang="scss">
.container {
height: 100vh;
overflow: hidden;
background-color: #f7f7f7;
@@ -237,6 +238,9 @@ import { addPersonDemand, updatePersonDemand, getPersonDemand } from "@/packageR
.inner {
background: #fff;
width: calc(100% - 64rpx);
margin: 0 auto;
box-sizing: border-box;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
@@ -256,7 +260,7 @@ import { addPersonDemand, updatePersonDemand, getPersonDemand } from "@/packageR
margin-bottom: 24rpx;
background-color: #fff;
border-radius: 8rpx;
padding: 24rpx;
padding: 24rpx 0;
}
.form-label {
@@ -300,8 +304,7 @@ import { addPersonDemand, updatePersonDemand, getPersonDemand } from "@/packageR
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;

View File

@@ -1,11 +1,11 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: lip
* @LastEditTime: 2025-05-07 09:33:39
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 16:07:22
-->
<template>
<view class="container">
<scroll-view scroll-y="true" :style="{height: edit?'calc(90vh - 150px)':'calc(100vh - 144px)', backgroundColor: '#eef1f5'}">
<scroll-view scroll-y="true" :style="{height: edit?'calc(90vh - 150px)':'calc(100vh - 144px)'}">
<view class="inner">
<view class="part-title" style="display: flex;justify-content: space-between;">培训需求信息
@@ -559,42 +559,12 @@ import uniDateformat from '@/uni_modules/uni-dateformat/components/uni-dateforma
</script>
<style lang="scss">
.date-picker-wrapper {
width: 100%;
padding: 10px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #ddd;
border-radius: 4px;
}
.date-picker-wrapper.noValue {
color: #999;
}
.date-value {
color: #333;
}
.page ::v-deep .u-navbar__content {
background-color: transparent !important;
}
.container {
height: 100vh;
overflow: hidden;
background-color: #f7f7f7;
}
.page {
background-color: #3161c7;
height: 100vh;
background-image: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/top.png');
background-repeat: no-repeat;
background-size: 100% auto;
}
.inner {
background: #eef1f5;
background: #fff;
width: calc(100% - 64rpx);
margin: 0 auto;
box-sizing: border-box;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
@@ -615,7 +585,7 @@ import uniDateformat from '@/uni_modules/uni-dateformat/components/uni-dateforma
margin-bottom: 24rpx;
background-color: #fff;
border-radius: 8rpx;
padding: 24rpx;
padding: 24rpx 0;
}
.form-label {
@@ -733,8 +703,7 @@ import uniDateformat from '@/uni_modules/uni-dateformat/components/uni-dateforma
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;

View File

@@ -1,59 +0,0 @@
export default {
props: {
// 内置图标名称,或图片路径,建议绝对路径
icon: {
type: String,
default: uni.$u.props.empty.icon
},
// 提示文字
text: {
type: String,
default: uni.$u.props.empty.text
},
// 文字颜色
textColor: {
type: String,
default: uni.$u.props.empty.textColor
},
// 文字大小
textSize: {
type: [String, Number],
default: uni.$u.props.empty.textSize
},
// 图标的颜色
iconColor: {
type: String,
default: uni.$u.props.empty.iconColor
},
// 图标的大小
iconSize: {
type: [String, Number],
default: uni.$u.props.empty.iconSize
},
// 选择预置的图标类型
mode: {
type: String,
default: uni.$u.props.empty.mode
},
// 图标宽度单位px
width: {
type: [String, Number],
default: uni.$u.props.empty.width
},
// 图标高度单位px
height: {
type: [String, Number],
default: uni.$u.props.empty.height
},
// 是否显示组件
show: {
type: Boolean,
default: uni.$u.props.empty.show
},
// 组件距离上一个元素之间的距离默认px单位
marginTop: {
type: [String, Number],
default: uni.$u.props.empty.marginTop
}
}
}

View File

@@ -1,128 +0,0 @@
<template>
<view
class="u-empty"
:style="[emptyStyle]"
v-if="show"
>
<u-icon
v-if="!isSrc"
:name="mode === 'message' ? 'chat' : `empty-${mode}`"
:size="iconSize"
:color="iconColor"
margin-top="14"
></u-icon>
<image
v-else
:style="{
width: $u.addUnit(width),
height: $u.addUnit(height),
}"
:src="icon"
mode="widthFix"
></image>
<text
class="u-empty__text"
:style="[textStyle]"
>{{text ? text : icons[mode]}}</text>
<view class="u-empty__wrap" v-if="$slots.default || $slots.$default">
<slot />
</view>
</view>
</template>
<script>
import props from './props.js';
/**
* empty 内容为空
* @description 该组件用于需要加载内容,但是加载的第一页数据就为空,提示一个"没有内容"的场景, 我们精心挑选了十几个场景的图标,方便您使用。
* @tutorial https://www.uviewui.com/components/empty.html
* @property {String} icon 内置图标名称,或图片路径,建议绝对路径
* @property {String} text 提示文字
* @property {String} textColor 文字颜色 (默认 '#c0c4cc' )
* @property {String | Number} textSize 文字大小 (默认 14
* @property {String} iconColor 图标的颜色 (默认 '#c0c4cc'
* @property {String | Number} iconSize 图标的大小 (默认 90
* @property {String} mode 选择预置的图标类型 (默认 'data'
* @property {String | Number} width 图标宽度单位px (默认 160
* @property {String | Number} height 图标高度单位px (默认 160
* @property {Boolean} show 是否显示组件 (默认 true
* @property {String | Number} marginTop 组件距离上一个元素之间的距离默认px单位 (默认 0
* @property {Object} customStyle 定义需要用到的外部样式
*
* @event {Function} click 点击组件时触发
* @event {Function} close 点击关闭按钮时触发
* @example <u-empty text="所谓伊人,在水一方" mode="list"></u-empty>
*/
export default {
name: "u-empty",
mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
data() {
return {
icons: {
car: '购物车为空',
page: '页面不存在',
search: '没有搜索结果',
address: '没有收货地址',
wifi: '没有WiFi',
order: '订单为空',
coupon: '没有优惠券',
favor: '暂无收藏',
permission: '无权限',
history: '无历史记录',
news: '无新闻列表',
message: '消息列表为空',
list: '列表为空',
data: '数据为空',
comment: '暂无评论',
}
}
},
computed: {
// 组件样式
emptyStyle() {
const style = {}
style.marginTop = uni.$u.addUnit(this.marginTop)
// 合并customStyle样式此参数通过mixin中的props传递
return uni.$u.deepMerge(uni.$u.addStyle(this.customStyle), style)
},
// 文本样式
textStyle() {
const style = {}
style.color = this.textColor
style.fontSize = uni.$u.addUnit(this.textSize)
return style
},
// 判断icon是否图片路径
isSrc() {
return this.icon.indexOf('/') >= 0
}
}
}
</script>
<style lang="scss" scoped>
@import '@/uni_modules/uview-ui/libs/css/components.scss';
$u-empty-text-margin-top:20rpx !default;
$u-empty-slot-margin-top:20rpx !default;
.u-empty {
@include flex;
flex-direction: column;
justify-content: center;
align-items: center;
&__text {
@include flex;
justify-content: center;
align-items: center;
margin-top: $u-empty-text-margin-top;
}
}
.u-slot-wrap {
@include flex;
justify-content: center;
align-items: center;
margin-top:$u-empty-slot-margin-top;
}
</style>

View File

@@ -1,10 +1,10 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: lip
* @LastEditTime: 2025-05-06 15:18:11
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 16:29:26
-->
<template>
<view class="page">
<view class="page" style="background-image: url('../../../packageRc/static/pageBg.png');">
<view class="page-header df_flex" style="display:flex;align-items:center;justify-content:space-between;padding:20rpx 0rpx;">
<u-icon class="back-icon" name="arrow-left" color="#fff" size="16" @click="goBack()"></u-icon>
<view class="title df_flex_1" style="padding-left: 32rpx;" >{{isAdd ? '需求新增' : '需求维护'}}</view>
@@ -21,7 +21,6 @@
</view>
</view>
<jobService v-if="activeType == 1" :needId="id" :name="name" ref="type1" />
<assistService v-if="activeType == 2" :needId="id" :name="name" ref="type2" />
<entrepreneurshipService :needId="id" :name="name" v-if="activeType == 3" ref="type3" />
<trainService v-if="activeType == 4" :needId="id" :name="name" ref="type4" />
<otherService v-if="activeType == 5" :needId="id" :name="name" ref="type5" />
@@ -32,14 +31,12 @@
<script>
import jobService from './components/jobService.vue';
import assistService from './components/assistService.vue';
import entrepreneurshipService from './components/entrepreneurshipService.vue';
import trainService from './components/trainService.vue';
import otherService from './components/otherService.vue';
export default {
components: {
jobService,
assistService,
entrepreneurshipService,
trainService,
otherService,
@@ -87,14 +84,10 @@
<style lang="scss">
.page ::v-deep .u-navbar__content {
background-color: transparent !important;
}
.page {
background-color: #EEF1F5 !important;
background-color: #F4F4F4 !important;
height: 100vh;
background-image: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/top.png');
background-repeat: no-repeat;
background-size: 100% auto;
@@ -102,8 +95,7 @@
.button-area {
padding: 24rpx 32rpx 68rpx;
width: calc(100% + 64rpx);
margin-left: -32rpx;
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;