添加页面

This commit is contained in:
2025-11-05 21:16:07 +08:00
parent daf5ac5808
commit 0f11935749
6 changed files with 82 additions and 54 deletions

View File

@@ -44,6 +44,13 @@ export function returnPerson(params) {
method: 'get', method: 'get',
'url': `/personnel/personBaseInfo/returnPerson`, 'url': `/personnel/personBaseInfo/returnPerson`,
params
})
}
export function getStatistic(params) {
return request({
method: 'get',
'url': `/pc/index/fwqkfx`,
params params
}) })
} }

View File

@@ -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-04 16:34:54 * @LastEditTime: 2025-11-05 17:29:18
--> -->
<template> <template>
<view> <view>
@@ -11,17 +11,17 @@
<view class="kinggang"> <view class="kinggang">
<view> <view>
<view class="num-title" style="color: #1A62CE">重点毕业生数</view> <view class="num-title" style="color: #1A62CE">重点毕业生数</view>
<view>1120</view> <view>{{infoData.allPersonCount}}</view>
</view> </view>
<text style="color: #B5C1D1;"></text> <text style="color: #B5C1D1;"></text>
<view> <view>
<view class="num-title" style="color: #16ACB7">累计需求数</view> <view class="num-title" style="color: #16ACB7">累计需求数</view>
<view>1120</view> <view>{{infoData.demandNum}}</view>
</view> </view>
<text style="color: #B5C1D1;"></text> <text style="color: #B5C1D1;"></text>
<view> <view>
<view class="num-title" style="color: #6A57D1">累计服务数</view> <view class="num-title" style="color: #6A57D1">累计服务数</view>
<view>1120</view> <view>{{infoData.fwNum}}</view>
</view> </view>
</view> </view>
<view class="trace-line"> <view class="trace-line">
@@ -60,6 +60,7 @@
<view style="color: #EF7325;">{{getDictLabel(item.currentStatus, qcjy_xqlc)}}</view> <view style="color: #EF7325;">{{getDictLabel(item.currentStatus, qcjy_xqlc)}}</view>
</view> </view>
</view> </view>
<view class="view-more-btn" @click="viewMore">查看更多内容</view>
<view class="titles"> <view class="titles">
<view class="title-item active"><view>待服务毕业生列表</view></view> <view class="title-item active"><view>待服务毕业生列表</view></view>
<view> {{jobListcount}} 条信息</view> <view> {{jobListcount}} 条信息</view>
@@ -92,6 +93,7 @@
<view @click="tiao(item)">服务</view> <view @click="tiao(item)">服务</view>
</view> </view>
</view> </view>
<view class="view-more-btn" @click="goPersonalList">查看更多内容</view>
</view> </view>
</scroll-view> </scroll-view>
@@ -149,11 +151,17 @@ function back() {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
}); });
}; };
function viewMore() {
uni.navigateTo({
url: '/packageRc/pages/needs/needsList'
});
}
let qcjy_xqlx = ref([]) let qcjy_xqlx = ref([])
let qcjy_xqlc = ref([]) let qcjy_xqlc = ref([])
let infoData = ref({})
import {getDicts} from '@/apiRc/system/dict' import {getDicts} from '@/apiRc/system/dict'
import {getStatistic} from '@/apiRc/personinfo/index'
onMounted(() => { onMounted(() => {
getlist(); getlist();
getlistyujing(); getlistyujing();
@@ -163,6 +171,9 @@ onMounted(() => {
getDicts('qcjy_xqlc').then(res => { getDicts('qcjy_xqlc').then(res => {
qcjy_xqlc.value = res.data qcjy_xqlc.value = res.data
}); });
getStatistic().then(res => {
infoData.value = res.data
})
}); });
function getDictLabel(value, list) { function getDictLabel(value, list) {
const item = list.find(item => item.dictValue === value); const item = list.find(item => item.dictValue === value);
@@ -171,7 +182,7 @@ function getDictLabel(value, list) {
async function getlist(){ async function getlist(){
try { try {
const res = await personInfoList(); const res = await personInfoList({pageNum: 1, pageSize: 5})
console.log("res", res); console.log("res", res);
jobList.value = res.rows || []; jobList.value = res.rows || [];
jobListcount.value=res.total || 0 jobListcount.value=res.total || 0
@@ -183,7 +194,7 @@ async function getlist(){
async function getlistyujing(){ async function getlistyujing(){
try { try {
const res = await personAlertList(); const res = await personAlertList({pageNum: 1, pageSize: 5});
console.log("res", res); console.log("res", res);
jobList1.value = res.rows || []; jobList1.value = res.rows || [];
jobList1count.value=res.total || 0 jobList1count.value=res.total || 0
@@ -259,11 +270,6 @@ function cancelReturn() {
returnReasonPopup.value.close() returnReasonPopup.value.close()
} }
} }
function viewMore() {
// uni.navigateTo({
// url: '/pages/jobList/jobList'
// })
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@@ -622,4 +628,16 @@ view{box-sizing: border-box;display: block;}
} }
} }
} }
.view-more-btn{
padding: 10rpx 56rpx;
background: #FFFFFF;
color: #4C6EFB;
border: 1rpx solid #4C6EFB;
text-align: center;
border-radius: 40rpx;
width: fit-content;
margin: 0 auto;
margin-bottom: 20rpx;
}
</style> </style>

View File

@@ -1,14 +1,7 @@
<template> <template>
<view class="page"> <view class="page" style="background-image: url('../../../packageRc/static/pageBg.png');">
<view class="page-header">
<view class="title df_flex" style="text-align: left;padding:50rpx 32rpx;">
<u-icon name="arrow-left" color="#fff" size="38rpx" @tap="$tab.navigateBack()"></u-icon>
<text style="margin-left: 30rpx;" class="df_flex_1">需求列表</text>
<u-icon v-show="$store.getters.roles.includes('shequn')" @tap="$store.commit('SET_SHOWEXITPOPUP', true)" name="list" size="44rpx" color="#fff"></u-icon>
</view>
</view>
<view class="input-outer-part" <view class="input-outer-part"
style="padding-top: 12rpx;margin-top: 16rpx;padding-bottom: 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" /> <u-input 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()" />
@@ -22,9 +15,9 @@
</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 - 422rpx);position: relative;z-index: 1;"
@scrolltolower="getBottomList"> @scrolltolower="getBottomList">
<u-swipe-action> <uni-swipe-action>
<u-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"
style="margin-bottom: 24rpx;border-radius: 16rpx;" :options="options1"> style="margin-bottom: 24rpx;border-radius: 16rpx;" :right-options="options1">
<view class="job-item"> <view class="job-item">
<view class="top-container" @click="goNeedsDetail(item)"> <view class="top-container" @click="goNeedsDetail(item)">
<view class="title-line"> <view class="title-line">
@@ -65,39 +58,39 @@
<view class="item_btn df_flex df_align_center df_justify_center"> <view class="item_btn df_flex df_align_center df_justify_center">
<!-- 需求已处理完成的 展示服务追溯 --> <!-- 需求已处理完成的 展示服务追溯 -->
<view v-if="item.currentStatus == 3" class="df_flex_1"> <view v-if="item.currentStatus == 3" class="df_flex_1">
<u-button type="primary" :plain="true" color="#BF5818" text="服务追溯" <view type="primary" :plain="true" color="#BF5818" text="服务追溯"
@click="serviceTraceButton(item)" :customStyle="{border: 'none'}"></u-button> @click="serviceTraceButton(item)" :customStyle="{border: 'none'}">服务追溯</view>
</view> </view>
<!-- 需求处于待处理处理中 --> <!-- 需求处于待处理处理中 -->
<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.needsType == 1" class="df_flex">
<u-button 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)"></u-button> @click="requirementTraining(item, 1)">推荐</view>
<view class="line"></view> <view class="line"></view>
<u-button type="primary" :plain="true" color="#BF5818" text="办理" <view type="primary" :plain="true" color="#BF5818" text="办理"
:customStyle="{border: 'none'}" @click="requirementHandling(item)"></u-button> :customStyle="{border: 'none'}" @click="requirementHandling(item)">办理</view>
</view> </view>
<!-- 培训需求 --> <!-- 培训需求 -->
<view v-else-if="queryParams.needsType == 4" class="df_flex"> <view v-else-if="queryParams.needsType == 4" class="df_flex">
<u-button 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)"></u-button> @click="requirementTraining(item, 4)">培训</view>
<view class="line"></view> <view class="line"></view>
<u-button type="primary" :plain="true" color="#BF5818" text="办理" <view type="primary" :plain="true" color="#BF5818" text="办理"
:customStyle="{border: 'none'}" @click="requirementHandling(item)"></u-button> :customStyle="{border: 'none'}" @click="requirementHandling(item)">办理</view>
</view> </view>
<!-- 其他需求 --> <!-- 其他需求 -->
<view v-else> <view v-else>
<u-button type="primary" :plain="true" color="#BF5818" text="办理" <view type="primary" :plain="true" color="#BF5818" text="办理"
:customStyle="{border: 'none'}" @click="requirementHandling(item)"></u-button> :customStyle="{border: 'none'}" @click="requirementHandling(item)">办理</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</u-swipe-action-item> </uni-swipe-action-item>
</u-swipe-action> </uni-swipe-action>
<view style="padding-bottom: 24rpx;"> <view style="padding-bottom: 24rpx;">
<img v-if="!total&&!loading" src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/empty.png" <img v-if="!total&&!loading" src="https://rc.jinan.gov.cn/qcwjyH5/static/images/person/empty.png"
style="width: 100%;display: block;margin: 0 auto;" /> style="width: 100%;display: block;margin: 0 auto;" />
@@ -110,7 +103,7 @@
</view>   </view>  
</scroll-view> </scroll-view>
</view> </view>
<u-popup :show="openDeal" style="position: relative;z-index: 100;" closeOnClickOverlay @close="openDeal=false"> <uni-popup ref="openDeal" style="position: relative;z-index: 100;" background-color="#fff" type="bottom">
<u--form class="self-form" labelPosition="top" :model="formData" :rules="rules" ref="uForm" <u--form class="self-form" labelPosition="top" :model="formData" :rules="rules" ref="uForm"
labelWidth="300"> labelWidth="300">
<u-form-item label="实际解决时间" prop="actualSolveDate" required> <u-form-item label="实际解决时间" prop="actualSolveDate" required>
@@ -129,11 +122,11 @@
</u-form-item> </u-form-item>
</u--form> </u--form>
<view class="button-area"> <view class="button-area">
<view class="btn" @click="openDeal = false">取消</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>
</u-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>
@@ -159,7 +152,7 @@
</view> </view>
</template> </template>
<script> <script>
import PopupList from "packageRc/components/PopupLists.vue"; import PopupList from "/packageRc/components/PopupLists.vue";
import ImageUpload from '/packageRc/components/ImageUpload' import ImageUpload from '/packageRc/components/ImageUpload'
import { import {
requirementCompletion requirementCompletion
@@ -234,13 +227,16 @@
onLoad({ onLoad({
dictValue dictValue
}) { }) {
this.queryParams.needsType = dictValue this.queryParams.needsType = dictValue || 1
this.getCheckData() this.getCheckData()
}, },
onShow() { onShow() {
this.search(); this.search();
}, },
methods: { methods: {
closeopenDeal() {
this.$refs.openDeal.close()
},
// 新增需求 // 新增需求
goAddNeeds() { goAddNeeds() {
this.$tab.navigateTo(`/pages/needs/needDetail?activeType=${this.queryParams.needsType}&showTab=1`) this.$tab.navigateTo(`/pages/needs/needDetail?activeType=${this.queryParams.needsType}&showTab=1`)
@@ -317,10 +313,10 @@
}, },
async getCheckData() { async getCheckData() {
let workExperienceYears let workExperienceYears
await this.getDicts('qcjy_gznx').then(res => { await this.$getDict('qcjy_gznx').then(res => {
workExperienceYears = res.data workExperienceYears = res.data
}) })
await this.getDicts('qcjy_xqlc').then(res => { await this.$getDict('qcjy_xqlc').then(res => {
this.currentStatusList = res.data; this.currentStatusList = res.data;
console.log(res.data) console.log(res.data)
}) })
@@ -448,7 +444,7 @@
// 需求办结 // 需求办结
requirementHandling(item) { requirementHandling(item) {
this.openDeal = true; this.$refs.openDeal.open()
this.formData = { this.formData = {
id: item.id, id: item.id,
currentStatus: '3' currentStatus: '3'
@@ -496,7 +492,8 @@
if (code === 200) { if (code === 200) {
// 显示成功的提示信息 // 显示成功的提示信息
this.$u.toast(msg); this.$u.toast(msg);
this.openDeal = false; // this.openDeal = false;
this.$refs.openDeal.close()
this.search(); this.search();
} }
} catch (error) { } catch (error) {
@@ -550,9 +547,8 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.page { .page {
background-color: #EEF1F5 !important; background-color: #f4f4f4 !important;
height: 100vh; height: 100vh;
background-image: url('https://rc.jinan.gov.cn/qcwjyH5/static/images/top.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% auto; background-size: 100% auto;
} }
@@ -778,4 +774,10 @@
width: 100%; width: 100%;
} }
} }
.d_flex{
display: flex;
view{
flex-grow: 1;
}
}
</style> </style>

View File

@@ -69,7 +69,6 @@
import { import {
getPersonBase getPersonBase
} from "@/apiRc/person"; } from "@/apiRc/person";
import PopupList from "../../components/PopupLists.vue";
import { import {
listJobService, listJobService,
delJobService delJobService
@@ -96,7 +95,6 @@ import { listJobType } from "@/apiRc/jobType/index";
} from '@/apiRc/needs/otherService' } from '@/apiRc/needs/otherService'
export default { export default {
components: { components: {
PopupList,
}, },
onShow() { onShow() {
console.log('search',34224234) console.log('search',34224234)

View File

@@ -276,11 +276,9 @@ import exitPopup from "../../components/exitPopup.vue";
import { import {
getDicts getDicts
} from '@/apiRc/system/dict.js' } from '@/apiRc/system/dict.js'
import PopupList from "../../components/PopupLists.vue";
export default { export default {
name: "personnelList", name: "personnelList",
components: { components: {
PopupList,
exitPopup, exitPopup,
}, },
data() { data() {

View File

@@ -416,7 +416,7 @@
} , { } , {
"path": "pages/needs/needDetail", "path": "pages/needs/needDetail",
"style": { "style": {
"navigationBarTitleText": "需求" "navigationBarTitleText": "需求信息"
} }
} , { } , {
"path": "pages/daiban/bangfuList", "path": "pages/daiban/bangfuList",
@@ -428,6 +428,11 @@
"style": { "style": {
"navigationBarTitleText": "需求上报" "navigationBarTitleText": "需求上报"
} }
} , {
"path": "pages/needs/needsList",
"style": {
"navigationBarTitleText": "需求"
}
} }
] ]
}, },