15 Commits

21 changed files with 595 additions and 101 deletions

View File

@@ -1,7 +1,7 @@
/*
* @Date: 2025-10-31 11:06:15
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-03 15:51:28
* @LastEditTime: 2025-12-16 16:29:33
*/
import request from '@/utilsRc/request'
@@ -13,6 +13,14 @@ export function login(data) {
params: data,
})
}
// 登录方法
export function loginByUserId(data) {
return request({
method: 'get',
url: '/ksSso/getTjmhTokenById?userId='+data,
// params: data,
})
}
export function smsLogin(data) {
return request({
method: 'post',

View File

@@ -1,14 +1,14 @@
/*
* @Date: 2025-01-XX
* @LastEditors:
* @LastEditTime:
* @LastEditors: shirlwang
* @LastEditTime: 2025-12-16 16:35:06
*/
import request from '@/utilsRc/request'
// 获取用户信息(职业规划推荐用)
export function appUserInfo() {
return request({
fullUrl: 'http://222.80.110.161:11111/api/ks/app/user/appUserInfo',
fullUrl: 'http://222.80.110.161:80/api/ks/app/user/appUserInfo',
method: 'get'
})
}

View File

@@ -51,7 +51,7 @@ const prePage = () => {
}
// export const urls ='http://10.110.145.145/images/train/'
export const urls ='http://222.80.110.161:11111/images/train/'
export const urls ='http://222.80.110.161:80/images/train/'
/**
* 页面跳转封装,支持 query 参数传递和返回回调

View File

@@ -114,15 +114,15 @@ const generateTabbarList = () => {
// 求职者用户(包括未登录状态):显示招聘会
// H5端隐藏招聘会
// #ifndef H5
baseItems.splice(1, 0, {
id: 1,
text: '招聘会',
path: '/pages/careerfair/careerfair',
iconPath: '/static/tabbar/post.png',
selectedIconPath: '/static/tabbar/posted.png',
centerItem: false,
badge: readMsg.badges[1]?.count || 0,
});
// baseItems.splice(1, 0, {
// id: 1,
// text: '招聘会',
// path: '/pages/careerfair/careerfair',
// iconPath: '/static/tabbar/post.png',
// selectedIconPath: '/static/tabbar/posted.png',
// centerItem: false,
// badge: readMsg.badges[1]?.count || 0,
// });
// #endif
}

View File

@@ -1,16 +1,16 @@
export default {
// baseUrl: 'http://39.98.44.136:8080', // 测试
baseUrl: 'http://222.80.110.161:11111/api/ks', // 测试
baseUrl: 'http://222.80.110.161:80/api/ks', // 测试
// baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试
// LCBaseUrl:'http://10.110.145.145:9100',//内网端口
// LCBaseUrlInner:'http://10.110.145.145:10100',//招聘、培训、帮扶
// imgBaseUrl:'http://10.110.145.145/images', //图片基础url
// trainVideoImgUrl:'http://10.110.145.145:9100/file/file/minio',
LCBaseUrl:'http://222.80.110.161:11111/prod-api',//内网端口
LCBaseUrlInner:'http://222.80.110.161:11111/prod-psout-api',//招聘、培训、帮扶
imgBaseUrl:'http://222.80.110.161:11111/images', //图片基础url
trainVideoImgUrl:'http://222.80.110.161:11111/prod-api/file/file/minio',
LCBaseUrl:'http://222.80.110.161:80/prod-api',//内网端口
LCBaseUrlInner:'http://222.80.110.161:80/prod-psout-api',//招聘、培训、帮扶
imgBaseUrl:'http://222.80.110.161:80/images', //图片基础url
trainVideoImgUrl:'http://222.80.110.161:80/prod-api/file/file/minio',
// sseAI+
// StreamBaseURl: 'http://39.98.44.136:8000',
StreamBaseURl: 'https://qd.zhaopinzao8dian.com/ai',

View File

@@ -19,37 +19,47 @@ export function useColumnCount(onChange = () => {}) {
// columnCount.value = count < 2 ? 2 : count
// }
// }
const calcColumn = () => {
// 使用新的API替代已废弃的getSystemInfoSync
let width
// #ifdef MP-WEIXIN
const mpSystemInfo = uni.getWindowInfo()
width = mpSystemInfo.windowWidth
// #endif
// #ifndef MP-WEIXIN
const otherSystemInfo = uni.getSystemInfoSync()
width = otherSystemInfo.windowWidth
// #endif
let count = 2
if (width >= 1000) {
count = 5
} else if (width >= 750) {
count = 4
} else if (width >= 500) {
count = 3
} else {
count = 2
}
if (count !== columnCount.value) {
columnCount.value = count
}
// 计算间距count=2 => 1count=5 => 2中间线性插值
const spacing = 2 - (count - 2) * (1 / 3)
// console.log('列数:', count, '间距:', spacing.toFixed(2))
columnSpace.value = spacing
const calcColumn = () => {
// 使用新的API替代已废弃的getSystemInfoSync
let width
// #ifdef MP-WEIXIN
const mpSystemInfo = uni.getWindowInfo()
width = mpSystemInfo.windowWidth
// #endif
// #ifndef MP-WEIXIN
const otherSystemInfo = uni.getSystemInfoSync()
width = otherSystemInfo.windowWidth
// #endif
let count = 2
if (width >= 1000) {
// #ifdef H5
count = 3 // H5端最多显示3列
// #endif
// #ifndef H5
count = 5
// #endif
} else if (width >= 750) {
// #ifdef H5
count = 3 // H5端最多显示3列
// #endif
// #ifndef H5
count = 4
// #endif
} else if (width >= 500) {
count = 3
} else {
count = 2
}
if (count !== columnCount.value) {
columnCount.value = count
}
// 计算间距count=2 => 1count=5 => 2中间线性插值
const spacing = 2 - (count - 2) * (1 / 3)
// console.log('列数:', count, '间距:', spacing.toFixed(2))
columnSpace.value = spacing
}
onMounted(() => {

301
packageB/login2.vue Normal file
View File

@@ -0,0 +1,301 @@
<template>
<AppLayout title="" :use-scroll-view="false">
<view class="wrap">
<view class="login_index">
<input class="input" placeholder="请输入账号" placeholder-class="inputplace" v-model="form.username" />
<view class="login_yzm">
<input class="input" type="password" placeholder="请输入密码" placeholder-class="inputplace"
v-model="form.password" />
</view>
<view class="login_yzm">
<input class="input" placeholder="请输入验证码" placeholder-class="inputplace" v-model="form.code" />
<image class="yzm" :src="codeUrl" @click="getCodeImg"></image>
</view>
<button class="com-btn" @click="register"> </button>
</view>
</view>
</AppLayout>
</template>
<script setup>
import {
reactive,
inject,
watch,
ref,
onMounted,
onUnmounted
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app';
const {
$api,
navTo,
vacanciesTo,
navBack
} = inject("globalFunction");
const placeholderStyle = 'font-size:30rpx'
const checked = ref(true)
const codeUrl = ref('')
const flag=ref('nw')
const form = reactive({
username: '',
password: '',
rememberMe: false,
code: '',
uuid: ''
})
onLoad((option) => {
console.log("111")
if(option.flag){
flag.value=option.flag
}
})
onMounted(() => {
getCodeImg()
// let form={}
// if (uni.getStorageSync('userInfo').isCompanyUser=='1') {
// form={
// usertype: '1',
// idno: uni.getStorageSync('userInfo').idCard,
// name: uni.getStorageSync('userInfo').name,
// enterprisecode:"",
// enterprisename: "",
// contactperson: "",
// contactphone: "",
// }
// }else if (uni.getStorageSync('userInfo').isCompanyUser=='0') {
// form={
// usertype: "2",
// enterprisecode: uni.getStorageSync('userInfo').idCard,
// enterprisename: uni.getStorageSync('userInfo').name,
// contactperson: "",
// contactphone: "",
// idno: "",
// name: ""
// }
// }
// $api.myRequest('/auth/login2/ks',form,'post',10100).then((res) => {
// if (res.code=='200') {
// uni.setStorageSync('Padmin-Token', res.data.access_token)
// uni.navigateBack({
// delta:2
// })
// }
// }).catch(() => {
// uni.hideLoading()
// uni.showToast({
// icon: 'none',
// title: '登录失败,请重试'
// })
// })
})
function register() {
if (!form.username) {
uni.showToast({
icon: 'none',
title: '请输入用户名'
})
return
}
if (!form.password) {
uni.showToast({
icon: 'none',
title: '请输入密码'
})
return
}
if (!form.uuid) {
uni.showToast({
icon: 'none',
title: '请输入验证码'
})
return
}
uni.showLoading({
title: '登录中...',
mask: true
})
if(flag.value=='hlw'){
$api.myRequest('/auth/login',form,'post',10100).then((res) => {
uni.setStorageSync('Padmin-Token', res.data.access_token)
uni.reLaunch({
url: '/pages/index/index'
})
codeUrl.value = 'data:image/gif;base64,' + res.img
}).catch(() => {
uni.hideLoading()
uni.showToast({
icon: 'none',
title: '登录失败,请重试'
})
})
}else if(flag.value=='nw'){
$api.myRequest('/auth/login',form,'post',9100).then((res) => {
uni.setStorageSync('Padmin-Token', res.data.access_token)
uni.reLaunch({
url: '/packageB/priority/helpFilter'
})
codeUrl.value = 'data:image/gif;base64,' + res.img
}).catch(() => {
uni.hideLoading()
uni.showToast({
icon: 'none',
title: '登录失败,请重试'
})
})
}
}
function getCodeImg() {
if(flag.value=='hlw'){
$api.myRequest('/code',{},'get',10100).then((resData) => {
codeUrl.value = 'data:image/gif;base64,' + resData.img
form.uuid = resData.uuid
});
}else if(flag.value=='nw'){
$api.myRequest('/code',{},'get',9100).then((resData) => {
codeUrl.value = 'data:image/gif;base64,' + resData.img
form.uuid = resData.uuid
});
}
}
</script>
<style scoped lang="stylus">
.wrap {
background-color: #ffffff;
height: 100vh;
position: relative;
.lg-head {
height: 480rpx;
background: #46ca98;
position: relative;
.view_logo {
text-align: center;
.login_logo {
width: 300rpx;
height: 300rpx;
margin-top: 100rpx;
}
}
.bg-cover {
position: absolute;
bottom: -4rpx;
left: 0;
right: 0;
height: 30rpx;
background-size: 100% 100%;
z-index: 1;
}
}
}
.login_index {
font-size: 36rpx;
font-weight: 500;
width: 596rpx;
margin: 0 auto;
::v-deep .is-input-border {
border: 0;
border-bottom: 1px solid #dcdfe6 !important;
border-radius: 0;
}
::v-deep .uni-input-input {
font-size: 32rpx;
padding-left: 10rpx;
}
::v-deep .uniui-contact-filled:before {
color: #46ca98;
font-size: 50rpx;
}
::v-deep .uniui-locked-filled:before {
color: #46ca98;
font-size: 50rpx;
}
.login_yzm {
margin-top: 40rpx;
display: flex;
align-items: center;
.yzm {
width: 200rpx;
height: 80rpx;
}
}
.com-btn {
height: 100rpx;
background: #46ca98;
border-radius: 50rpx;
color: #fff;
margin-top: 100rpx;
}
.login_wt {
margin: 0 auto;
text-align: right;
font-size: 24rpx;
color: rgba(134, 134, 136, 1);
}
}
.lg-bottom {
position: absolute;
bottom: -3px;
left: 0;
width: 100%;
.bottom-svg {
position: absolute;
bottom: -3px;
left: 0;
width: 100%;
}
}
.login_tongyi {
font-size: 26rpx;
color: rgba(196, 196, 196, 1);
width: 620rpx;
margin: 32rpx auto;
text-align: center;
text {
color: rgba(86, 176, 236, 1);
}
}
.input {
padding: 0 30rpx 0 80rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 75rpx 75rpx 75rpx 75rpx;
font-size: 28rpx;
}
.inputplace {
font-weight: 400;
font-size: 28rpx;
color: #B5B5B5;
}
</style>

View File

@@ -226,12 +226,17 @@ const handleReset = () =>{
getDataList('refresh')
}
onMounted(async () => {
await loadLevelData('201');
// await loadLevelData('201');
});
onLoad(() => {
getDictionary()
// getDeptOptions()
getDataList('refresh');
onLoad(async () => {
let token=uni.getStorageSync('fourLevelLinkage-token')
if(token){
await loadLevelData('201');
getDictionary()
getDataList('refresh');
}else{
navTo('/packageB/login2');
}
});
function getDictionary(){
$api.myRequest('/system/public/dict/data/type/assist_task_type').then((resData) => {
@@ -256,7 +261,7 @@ function getTaskTypeLabelByValue(value) {
// 加载某一级的数据parentId 为空表示根)
async function loadLevelData(parentId) {
let header = {
'Authorization': uni.getStorageSync('Padmin-Token'),
'Authorization': uni.getStorageSync('fourLevelLinkage-token'),
'Content-Type': "application/x-www-form-urlencoded"
};
let params = { parentId };
@@ -336,7 +341,7 @@ function findNodeByValue(nodes, value) {
}
function getDeptOptions(){
let header={
'Authorization':uni.getStorageSync('Padmin-Token'),
'Authorization':uni.getStorageSync('fourLevelLinkage-token'),
'Content-Type': "application/x-www-form-urlencoded"
}
let params={
@@ -349,7 +354,7 @@ function getDataList(type = 'add') {
let maxPage=Math.ceil(totalNum.value/pageSize.value)
let params=({...formData})
let header={
'Authorization':uni.getStorageSync('Padmin-Token'),
'Authorization':uni.getStorageSync('fourLevelLinkage-token'),
'Content-Type': "application/x-www-form-urlencoded"
}
if (type === 'refresh') {
@@ -374,7 +379,7 @@ function getDataList(type = 'add') {
}
}
function goFollow(item) {
navTo(`/packageB/priority/helpFollow?id=${item.goal_person_id}&&name=${item.name}&&taskType=${getTaskTypeLabelByValue(item.task_type)}`);
navTo(`/packageB/priority/helpFollow?task_id=${item.task_id}&person_id=${item.person_id}&&name=${item.name}&&taskType=${getTaskTypeLabelByValue(item.task_type)}`);
}
</script>

View File

@@ -105,7 +105,8 @@ const formData = reactive({
const personInfo=ref({
goalPersonId:'',
name:'',
taskType:''
taskType:'',
task_id:''
})
const followWays = ref([])
const followList = ref([])
@@ -161,11 +162,12 @@ const onDateChange = ( e) => {
}
function getFollowList(){
let header={
'Authorization':uni.getStorageSync('Padmin-Token'),
'Authorization':uni.getStorageSync('fourLevelLinkage-token'),
'Content-Type': "application/x-www-form-urlencoded"
}
let params={
goalPersonId:personInfo.value.goalPersonId
personId:personInfo.value.person_id,
taskId:personInfo.value.task_id
}
$api.myRequest('/dispatch/assist/records/getFollowList', params,'get',9100,header).then((resData) => {
console.log("resData",resData)
@@ -209,7 +211,7 @@ const handleSubmit = () => {
formRef.value?.validate()
.then(() => {
let header={
'Authorization':uni.getStorageSync('Padmin-Token')
'Authorization':uni.getStorageSync('fourLevelLinkage-token')
}
formData.goalPersonId=personInfo.value.goalPersonId
$api.myRequest('/dispatch/assist/records/addRecords', formData,'post',9100,header).then((resData) => {
@@ -245,9 +247,10 @@ const handleReset = () => {
formData.nextContactDate = '';
}
onLoad((options) => {
personInfo.value.goalPersonId=options.id
personInfo.value.person_id=options.person_id
personInfo.value.name=options.name
personInfo.value.taskType=options.taskType
personInfo.value.task_id=options.task_id
getDictionary()
getFollowList()
});

View File

@@ -9,10 +9,20 @@
<view class="video-detail-container">
<!-- 视频播放组件 -->
<view class="video-wrapper">
<video v-if="videoInfo && videoInfo.cover" id="myVideo" :src="videoInfo.currentUrl" :poster="trainVideoImgUrl+ videoInfo.cover" @seeked="onSeeked"
preload="metadata"
enable-danmu controls style="width: 100%;" @pause="onPause" @timeupdate="onTimeupdate" @ended="onEnded"></video>
<video
v-if="videoInfo && videoInfo.cover && isVideoReady"
id="myVideo"
:src="videoInfo.currentUrl"
:poster="trainVideoImgUrl+ videoInfo.cover"
:initial-time="initialTime"
:autoplay="shouldAutoPlay"
enable-danmu
controls
style="width: 100%;"
@pause="onPause"
@timeupdate="onTimeupdate"
@ended="onEnded">
</video>
</view>
</view>
<view class="video-info" :style="getItemBackgroundStyle('video-bj2.png')">
@@ -134,7 +144,7 @@
</template>
<script setup>
import { inject, reactive,ref, onMounted, onUnmounted, nextTick } from 'vue';
import { inject, reactive,ref, onMounted, onUnmounted, nextTick ,watch} from 'vue';
import { onLoad,onHide,onUnload } from '@dcloudio/uni-app';
const { $api, navTo, navBack } = inject('globalFunction');
import config from "@/config.js"
@@ -148,10 +158,13 @@ const trainVideoImgUrl=config.trainVideoImgUrl
const categories=ref([])
const levalLabels=ref([])
const latestTime = ref(0)
const initialTime = ref(0)
const totalTime=ref(0)
const baseUrl = config.imgBaseUrl
const pageEnterTime = ref(0)
const currentChapter = ref(0)
const isVideoReady = ref(false)
const shouldAutoPlay = ref(false)
const getItemBackgroundStyle = (imageName) => ({
backgroundImage: `url(${baseUrl}/train/${imageName})`,
backgroundSize: '100% 100%', // 覆盖整个容器
@@ -168,18 +181,38 @@ const params = reactive({
videoId: '',
userId: ''
})
// 监听 initialTime 变化,确保设置完成后再渲染
watch(initialTime, (newVal) => {
if (newVal >= 0 && videoInfo.value && videoInfo.value.cover) {
// 延迟渲染,确保初始时间设置生效
nextTick(() => {
isVideoReady.value = true
shouldAutoPlay.value = newVal > 0
})
}
})
// 监听 videoInfo 变化
watch([videoInfo, initialTime], ([newVideoInfo, newInitialTime]) => {
if (newVideoInfo && newVideoInfo.cover && newInitialTime >= 0) {
nextTick(() => {
isVideoReady.value = true
shouldAutoPlay.value = newInitialTime > 0
})
}
}, { deep: true })
onLoad((options) => {
getHeart()
pageEnterTime.value = Date.now() // 记录毫秒时间戳
videoId.value=options.id
getDictionary()
});
onHide(() => {
updateVideoInfo() // 用缓存值,不要调 getCurrentTime
reportPageDuration()
})
// onHide(() => {
// updateVideoInfo() // 用缓存值,不要调 getCurrentTime
// reportPageDuration()
// })
onUnload(() => {
updateVideoInfo()
//updateVideoInfo()
saveCurrentChapterProgress()
reportPageDuration()
})
function getData() {
@@ -197,6 +230,13 @@ function getData() {
videoInfo.value.currentUrl=trainVideoImgUrl+videoInfo.value.trainClassList[0].url
videoInfo.value.percentage=((videoInfo.value.process/(videoInfo.value.hour*60))*100).toFixed(2)
videoInfo.value.uploadTime=videoInfo.value.uploadTime.split(' ')[0]
if(videoInfo.value.process !=null){
queryModelUserPlay(videoInfo.value.trainClassList[0].classId)
} else {
// 如果没有历史进度,直接准备渲染
initialTime.value = 0
}
updateVideoInfo()
});
}
function getHeart() {
@@ -216,7 +256,6 @@ function getUserInfo(){
$api.myRequest('/system/user/login/user/info', {},'get',10100,header).then((resData) => {
userId.value=resData.info.userId
getData()
updateVideoInfo()
});
}
function getDictionary(){
@@ -245,16 +284,18 @@ function getLevelLabelByValue(value) {
}
function onPause(e){
updateVideoInfo()
saveCurrentChapterProgress()
}
function onEnded(e){
updateVideoInfo()
saveCurrentChapterProgress()
}
function onTimeupdate(e){
latestTime.value = e.detail.currentTime
}
function onSeeked(){
updateVideoInfo()
}
// function onSeeked(){
// updateVideoInfo()
// }
// 更新播放时长
function updateVideoInfo(){
totalTime.value=0
@@ -279,7 +320,7 @@ function updateVideoInfo(){
$api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, header).then((resData) => {
if (resData.code == 200) {
if(videoInfo.value.isCollect===null && videoInfo.value.process ===null){
if(videoInfo.value.isCollect===null && videoInfo.value.process ===null && paramsData.process ==0 ){
$api.myRequest('/train/public/videoUser/add', paramsData,'post',9100,header).then((resData) => {
console.log("视频播放时长更新成功")
});
@@ -313,8 +354,58 @@ function reportPageDuration() {
}
}
function chapterChange(video,index){
saveCurrentChapterProgress()
currentChapter.value=index
videoInfo.value.currentUrl=trainVideoImgUrl+video.url
isVideoReady.value = false
shouldAutoPlay.value = false
queryModelUserPlay(video.classId)
}
const updateUserPlayClassHousr = (classId,hour) => {
let paramsData={
userId:userId.value,
classId:classId,
hour:hour,
dqHour:latestTime.value
}
let header={
'Authorization':uni.getStorageSync('Padmin-Token'),
'Content-Type': "application/x-www-form-urlencoded"
}
$api.myRequest('/train/public/videoUser/updateUserPlayClassHousr', paramsData,'post',9100,header).then((resData) => {
if(resData.code == 200){
console.log("学习时长更新成功")
}
});
}
const queryModelUserPlay = (classId) => {
let queryParams = {
classId: classId,
userId: userId.value,
};
let header = {
Authorization: uni.getStorageSync("Padmin-Token"),
"Content-Type": "application/x-www-form-urlencoded",
};
$api.myRequest("/train/public/videoUser/modelUserPlay", queryParams, "post", 9100, header).then((resData) => {
if(resData.code == 200){
initialTime.value=Number(resData?.data?.dqHour ?? 0)
}else {
initialTime.value = 0
}
}).catch(() => {
initialTime.value = 0
});
}
// 保存当前章节进度
function saveCurrentChapterProgress() {
if (videoInfo.value.trainClassList && videoInfo.value.trainClassList.length > 0) {
const currentVideo = videoInfo.value.trainClassList[currentChapter.value];
if (currentVideo) {
updateUserPlayClassHousr(currentVideo.classId, currentVideo.hour);
}
}
}
onUnmounted(() => {
@@ -495,4 +586,4 @@ onUnmounted(() => {
font-size: 28rpx;
color: #303133;
}
</style>
</style>

View File

@@ -2,9 +2,9 @@ let baseUrl = ""
// #ifdef MP-WEIXIN
// 编译项目因为使用插件lime-echartechart文件过大需要非压缩代码方式编译不然会很慢发布的时候才压缩代码方式编译
if (wx.getAccountInfoSync().miniProgram.envVersion === 'develop') {
baseUrl = 'http://222.80.110.161:11111/career' // 开发环境
baseUrl = 'http://222.80.110.161:80/career' // 开发环境
} else {
baseUrl = 'http://222.80.110.161:11111/career' // 生产环境
baseUrl = 'http://222.80.110.161:80/career' // 生产环境
}
// #endif

View File

@@ -412,7 +412,7 @@
@close="showTime = false"
></u-datetime-picker> -->
<!-- 社区端 - 显示隐藏退出组件 -->
<exitPopup />
<!-- <exitPopup /> -->
<DealDone ref="dealDone" @finished="getListPersonDemand();"/>
<!-- <uni-popup background-color="#fff" type="bottom"
ref="openDeal"

View File

@@ -1,7 +1,7 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 16:16:45
* @LastEditTime: 2025-12-16 17:50:45
-->
<template>
<view class="page" style="background-image: url('../../../packageRc/static/pageBg.png');">
@@ -25,7 +25,7 @@
<trainService v-if="activeType == 4" :needId="id" :name="name" ref="type4" />
<otherService v-if="activeType == 5" :needId="id" :name="name" ref="type5" />
<!-- 社区端 - 显示隐藏退出组件 -->
<exitPopup />
<!-- <exitPopup /> -->
</view>
</template>

View File

@@ -1,7 +1,7 @@
<!--
* @Date: 2024-10-08 14:29:36
* @LastEditors: shirlwang
* @LastEditTime: 2025-11-04 17:16:49
* @LastEditTime: 2025-12-16 17:50:03
-->
<template>
<view class="page" style="background-image: url('../../../packageRc/static/pageBg.png');">
@@ -21,7 +21,7 @@
<trainService v-if="activeType == 4" :needId="id" :name="name" ref="type4" />
<otherService v-if="activeType == 5" :needId="id" :name="name" ref="type5" />
<!-- 社区端 - 显示隐藏退出组件 -->
<exitPopup />
<!-- <exitPopup /> -->
</view>
</template>

View File

@@ -153,7 +153,7 @@
<!-- 社区端 - 显示隐藏退出组件 -->
<exitPopup />
<!-- <exitPopup /> -->
</view>
</template>
<script>

View File

@@ -273,14 +273,14 @@ import {
returnPerson,
updatePersonInfo,
} from "../../api/company/index.js";
import exitPopup from "../../components/exitPopup.vue";
// import exitPopup from "../../components/exitPopup.vue";
import {
getDicts
} from '@/packageRc/apiRc/system/dict.js'
export default {
name: "personnelList",
components: {
exitPopup,
// exitPopup,
},
data() {
return {

View File

@@ -322,6 +322,12 @@
"navigationBarTitleText": "登录"
}
},
{
"path": "login2",
"style": {
"navigationBarTitleText": "登录"
}
},
{
"path": "train/index",
"style": {

View File

@@ -154,6 +154,18 @@
</view>
<view class="service-title">薪酬信息</view>
</view>
<view class="service-item press-button" @click="handleJobFairClick">
<view class="service-icon service-icon-1">
<uni-icons type="shop" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">招聘会</view>
</view>
<view class="service-item press-button" v-if="isFourLevelLinkagePurview" @click="helpClick">
<view class="service-icon service-icon-1">
<uni-icons type="shop" size="32" color="#FFFFFF"></uni-icons>
</view>
<view class="service-title">帮扶</view>
</view>
</view>
<!-- #endif -->
</view>
@@ -684,6 +696,8 @@ onUnmounted(() => {
onShow(() => {
// 获取最新的企业信息
getCompanyInfo();
//四级联动单点及权限
getIsFourLevelLinkagePurview()
});
// 监听用户信息变化,当登录状态改变时重新获取企业信息
@@ -711,6 +725,8 @@ const handleLoginSuccess = () => {
// 重新获取企业信息
getCompanyInfo();
//四级联动单点及权限
getIsFourLevelLinkagePurview()
};
// 处理附近工作点击
@@ -760,11 +776,17 @@ const handleLiveClick = () => {
const handleSalaryInfoClick = () => {
navTo('/pages/service/salary-info');
};
const handleJobFairClick = () => {
navTo('/pages/careerfair/careerfair');
};
const handleH5SalaryClick = () => {
const salaryUrl = "https://www.mohrss.gov.cn/SYrlzyhshbzb/laodongguanxi_/fwyd/202506/t20250627_544623.html";
window.location.assign(salaryUrl);
};
// 处理帮扶
const helpClick = () => {
navTo('/packageB/priority/helpFilter');
};
async function loadData() {
try {
if (isLoaded.value) return;
@@ -1047,7 +1069,21 @@ function getJobList(type = 'add') {
}
});
}
const isFourLevelLinkagePurview=ref(false)
const getIsFourLevelLinkagePurview=()=>{
let userInfo = uni.getStorageSync('userInfo')
if(userInfo){
$api.myRequest('/auth/login2/ks',{userid: userInfo.dwUserid, idcardno: userInfo.idCard},"POST",'9100',{}).then(res=>{
if(res.code == 200){
uni.setStorageSync('fourLevelLinkage-token',res.data.access_token)
let roleIdList= ['103','106','107']
if(res.data.roleIdList.some(item=>roleIdList.includes(item))){
isFourLevelLinkagePurview.value=true
}
}
})
}
}
function dataToImg(data) {
const result = data.map((item) => ({
...item,
@@ -1063,10 +1099,24 @@ import storeRc from '@/utilsRc/store/index.js';
function goRc(){
if (checkLogin()) {
let userInfo = uni.getStorageSync('userInfo')
storeRc.dispatch('LoginByUserInfo', userInfo).then(res => {
// console.log(res, "'res");
navTo('/packageRc/pages/index/index');
});
if(userInfo.isCompanyUser == 2){
storeRc.dispatch('LoginByID', userInfo.userId).then(res => {
// storeRc.dispatch('LoginByID', 2025111679160750).then(res => {
storeRc.dispatch('GetInfo').then(res => {
navTo('/packageRc/pages/daiban/daiban');
});
});
// test0001 202511491561998
// test0002 202511381669113
// test0003 2025111679160750
}else if(userInfo.isCompanyUser == 1){
storeRc.dispatch('LoginByUserInfo', userInfo).then(res => {
navTo('/packageRc/pages/index/index');
})
}else{
showToast('企业账号无法查看此模块~');
}
// storeRc.dispatch('LoginByID', userInfo.userId).then(res => {
}
}
// 跳转到素质测评

View File

@@ -194,7 +194,7 @@ const handleLogin = async () => {
icon: 'success'
})
// window.location.assign('http://222.80.110.161:11111/mechine-dual-vue/login')
window.location.assign('http://222.80.110.161:11111/mechine-single-vue/login')
window.location.assign('http://222.80.110.161:80/mechine-single-vue/login')
// // 跳转到首页
// uni.reLaunch({
// url: '/pages/index/index'

View File

@@ -2,7 +2,7 @@
* @Descripttion:
* @Author: lip
* @Date: 2022-12-28 13:59:09
* @LastEditors: lip
* @LastEditors: shirlwang
*/
// 应用全局配置
import config from '@/config.js'
@@ -10,7 +10,7 @@ import config from '@/config.js'
let exports = {
// ========== baseUrl 配置方式选择 ==========
// 方式1硬编码baseUrlmain分支使用合并到main时不会影响现有功能
baseUrl: 'http://222.80.110.161:11111/sdrc-api', // 正式环境在济南人才上部署(不要轻易连接)
baseUrl: 'http://222.80.110.161:80/sdrc-api', // 正式环境在济南人才上部署(不要轻易连接)
// 方式2引用根目录config.js的baseUrlCareerMap分支可选方式如需使用请注释掉方式1取消注释此方式
// baseUrl: config.baseUrl, // 引用根目录config.js的baseUrl避免重复配置
@@ -26,13 +26,13 @@ let exports = {
// baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 已从根目录config.js引用不再重复配置
// ========== 职业图谱专用baseUrl ==========
zytpBaseUrl: 'http://222.80.110.161:11111/career-map/api/ks_zytp/admin-api/zytp',
zytpBaseUrl: 'http://222.80.110.161:80/career-map/api/ks_zytp/admin-api/zytp',
// ========== 用户接口专用baseUrl其他用户接口使用 ==========
userBaseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 用户相关接口使用根目录config.js的baseUrl
// ========== appUserInfo接口专用baseUrl ==========
appUserInfoBaseUrl: 'http://222.80.110.161:11111/api/ks', // appUserInfo接口专用与其他接口路径不一致
appUserInfoBaseUrl: 'http://222.80.110.161:80/api/ks', // appUserInfo接口专用与其他接口路径不一致

View File

@@ -4,6 +4,7 @@ import constant from '@/utilsRc/constant'
import {
login,
// logout,
loginByUserId,
getInfo,
register,
smsLogin,
@@ -107,6 +108,25 @@ const user = {
})
})
},
// 网格员登录
LoginByID({
commit,
// state
}, userInfo) {
return new Promise((resolve, reject) => {
// const info = JSON.parse(JSON.stringify(userInfo))
// info.password = '04' + sm2.doEncrypt(info.password, state.publicKey, 0)
// info.username = '04' + sm2.doEncrypt(info.username, state.publicKey, 0)
loginByUserId(userInfo).then(res => {
setToken(res.token)
commit('SET_TOKEN', res.token)
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 登录
Login({
commit,