1、相关方token不刷新问题

2、相关方人员信息编辑错误问题
3、相关方就职历史记录bug
hyx_2025-01-13_xgf2.0
liujun 2025-02-28 16:43:38 +08:00
parent bc2adb722d
commit d624db0b35
9 changed files with 607 additions and 548 deletions

8
api/api.js Normal file
View File

@ -0,0 +1,8 @@
import {post, upload} from "../utils/request";
// 已重构接口
export const getUserInfoV1 = (params) => post("/app/sys/user/getXgfUserInfo", params) // 获取用户信息
export const setUserInitV1 = (params) => post("/app/sys/user/xgfInit", params) //更新用户信息
export const getDicLevel = (params) => post("/app/sys/dictionaries/getLevels", params) // 获取数据字典
export const getEmpLog = (params) => post("/app/sys/user/getEmpLog", params) // 获取就职记录
export const uploadFile = (params) => upload("/app/sys/file/uploadFile", params);
export const setRefreshToken = (params) => post("/sys/refreshToken", params ); // 刷新token

14
api/refreshToken.js Normal file
View File

@ -0,0 +1,14 @@
import dayjs from "dayjs";
import store from "../store";
import {setRefreshToken} from "./api";
export default async function () {
const userStore = store.state.userInfo;
if (userStore.getTokenTime) {
if (dayjs().diff(dayjs(userStore.getTokenTime), "minute") >= 5) {
await userStore.setTokenTime(dayjs().format("YYYY-MM-DD HH:mm:ss"));
await setRefreshToken();
}
}
}

16
package-lock.json generated
View File

@ -15,7 +15,8 @@
},
"devDependencies": {
"@types/html5plus": "^1.0.2",
"@types/uni-app": "^1.4.4"
"@types/uni-app": "^1.4.4",
"dayjs": "^1.11.13"
}
},
"node_modules/@babel/parser": {
@ -59,6 +60,13 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"dev": true,
"license": "MIT"
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@ -215,6 +223,12 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"dev": true
},
"deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",

View File

@ -16,6 +16,7 @@
"license": "ISC",
"devDependencies": {
"@types/html5plus": "^1.0.2",
"@types/uni-app": "^1.4.4"
"@types/uni-app": "^1.4.4",
"dayjs": "^1.11.13"
}
}

View File

@ -4,48 +4,48 @@
<u-list-item v-for="(item, index) in list" :key="index">
<view>
<view class="flex-between main-title">
<text>单位名称{{ item.RELEVANT_UNIT_NAME }}</text>
<text>单位名称{{ item.relevantUnitName }}</text>
</view>
<view class="flex-between mt-10 subtitle" v-show="item.START_DATE">
<text>就职时间{{ item.START_DATE }}-{{ item.END_DATE || '至今' }}</text>
<view class="flex-between mt-10 subtitle" v-show="item.startDate">
<text>就职时间{{ item.startDate }}-{{ item.endDate || '至今' }}</text>
</view>
<view class="flex-between mt-10 subtitle" v-show="item.DEPART_STATE">
<view class="flex-between mt-10 subtitle" v-show="item.departState">
<text>就职状态
<template v-if="item.DEPART_STATE === '0'"></template>
<template v-if="item.DEPART_STATE === '1'"></template>
<template v-if="item.DEPART_STATE === '-1'"></template>
<template v-if="item.DEPART_STATE === '2'"></template>
<template v-if="item.DEPART_STATE === '3'"></template>
<template v-if="item.departState === '0'"></template>
<template v-if="item.departState === '1'"></template>
<template v-if="item.departState === '-1'"></template>
<template v-if="item.departState === '2'"></template>
<template v-if="item.departState === '3'"></template>
</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>单位在职申请审核状态
<template v-if="item.AUDIT_STATE === '0'"></template>
<template v-if="item.AUDIT_STATE === '1'"></template>
<template v-if="item.AUDIT_STATE === '2'"></template>
<template v-if="item.auditState === '0'"></template>
<template v-if="item.auditState === '1'"></template>
<template v-if="item.auditState === '2'"></template>
</text>
</view>
<view class="flex-between mt-10 subtitle" v-show="item.DEPART_STATE !== '0' && item.REVIEW_STATE">
<view class="flex-between mt-10 subtitle" v-show="item.departState !== '0' && item.reviewState">
<text>单位离职申请审核状态
<template v-if="item.REVIEW_STATE === '0'"></template>
<template v-if="item.REVIEW_STATE === '1'"></template>
<template v-if="item.REVIEW_STATE === '2'"></template>
<template v-if="item.reviewState === '0'"></template>
<template v-if="item.reviewState === '1'"></template>
<template v-if="item.reviewState === '2'"></template>
</text>
</view>
<view class="flex-between mt-10 subtitle" v-if="item.AUDIT_REMARKS">
<text>审核意见{{ item.AUDIT_REMARKS }}
<view class="flex-between mt-10 subtitle" v-if="item.auditRemarks">
<text>审核意见{{ item.auditRemarks }}
</text>
</view>
<view class="flex-between mt-10 subtitle">
<view></view>
<view class="flex-between">
<u-button type="primary" text="查看" size="mini"
@click="fnView(item.EMPLOYMENT_APPLY_MANAGEMENT_ID, item.CORPINFO_ID, item.DEPART_STATE)"></u-button>
@click="fnView(item.employmentApplyManagementId, item.corpinfoId, item.departState)"></u-button>
<view class="ml-10">
<u-button type="primary" text="离职" size="mini"
v-if="item.DEPART_STATE === '0'"
@click="fnResignationApplication(item.EMPLOYMENT_APPLY_MANAGEMENT_ID,item.RELEVANT_UNIT_NAME)">
v-if="item.departState === '0'"
@click="fnResignationApplication(item.employmentApplyManagementId,item.relevantUnitName)">
</u-button>
</view>
</view>
@ -58,9 +58,7 @@
</template>
<script>
import {
getEmployedBy
} from "../../api";
import {getEmpLog} from "../../api/api";
export default {
data() {
@ -76,11 +74,13 @@ export default {
},
methods: {
async getData() {
let resData = await getEmployedBy({
showCount: this.pageSize,
currentPage: this.currentPage,
let resData = await getEmpLog({
id: this.$store.getters.getUserInfo.USER_ID,
limit: this.pageSize,
curPage: this.currentPage,
postMethod: 'application/json'
});
this.list = [...this.list, ...resData.varList];
this.list = [...this.list, ...resData.page.list];
this.totalPage = resData.page.totalPage;
},
resetList() {

View File

@ -4,19 +4,14 @@
<u-cell-group>
<u-cell title="照片">
<template #value>
<u--image :src="info.userPhoto" shape="circle" width="100rpx" height="100rpx"></u--image>
<u--image :src="userPhoto" shape="circle" width="100rpx" height="100rpx"></u--image>
</template>
</u-cell>
<u-cell title="姓名" :value="info.NAME"></u-cell>
<u-cell title="性别" :value="info.SEX === '1' ? '女' : '男'">
<template #value>
{{ info.SEX === '1' ? '女' : '' }}
{{ info.SEX === '0' ? '男' : '' }}
</template>
</u-cell>
<u-cell title="出生年月" :value="info.DATE_OF_BIRTH"></u-cell>
<u-cell title="年龄" :value="info.AGE"></u-cell>
<u-cell title="身份证" :value="info.CARD_ID" @blur="fnIDCardDeduplication"></u-cell>
<u-cell title="姓名" :value="info.name"></u-cell>
<u-cell title="性别" :value="info.userDetails.sex === '1' ? '女' : '男'"></u-cell>
<u-cell title="出生年月" :value="info.userDetails.dateOfBirth"></u-cell>
<u-cell title="年龄" :value="info.userDetails.age"></u-cell>
<u-cell title="身份证" :value="info.userDetails.cardId"></u-cell>
<u-cell title="身份证照片">
<template #value>
<view v-for="(item,index) in userCardIDPhotoFile" :key="index"
@ -26,26 +21,25 @@
</view>
</template>
</u-cell>
<u-cell title="民族" :value="info.minzuName"></u-cell>
<u-cell title="民族" :value="info.userDetails.nationalityName"></u-cell>
<u-cell title="户口所在地">
<template #value>
<u--text :lines="2" align="right" :text="info.HKLOCAL"></u--text>
<u--text :lines="2" align="right" :text="info.userDetails.hklocal"></u--text>
</template>
</u-cell>
<u-cell title="现住址">
<template #value>
<u--text :lines="2" align="right" :text="info.ADDRESS"></u--text>
<u--text :lines="2" align="right" :text="info.userDetails.address"></u--text>
</template>
</u-cell>
<u-cell title="联系电话" :value="info.PHONE"></u-cell>
<u-cell title="婚姻状况" :value="info.MARITALSTATUS == 0 ? '未婚':'已婚'"></u-cell>
<u-cell title="政治面貌" :value="info.zzName"></u-cell>
<u-cell v-if="info.POLITICAL_STATUS == 'zhonggongdangyuan'" title="入党时间"
:value="info.POLITICAL_TIME"></u-cell>
<u-cell title="是否缴纳社保" :value="info.IS_SOCIAL_NAME"></u-cell>
<!-- 用v-if会出现渲染问题导致出现两行相同的数据 所以改成v-show modify by water_xu 2024.7.19 -->
<u-cell title="社会保障号" v-show="info.IS_SOCIAL==='1'" :value="info.SOCIAL_NUMBER"></u-cell>
<u-cell title="社会保障卡照片" v-show="info.IS_SOCIAL==='1'">
<u-cell title="联系电话" :value="info.userDetails.phone"></u-cell>
<u-cell title="婚姻状况" :value="info.userDetails.maritalstatus === 0 ? '未婚':'已婚'"></u-cell>
<u-cell title="政治面貌" :value="info.userDetails.politicalStatusName"></u-cell>
<u-cell v-if="info.userDetails.politicalStatus === 'zhonggongdangyuan'" title="入党时间"
:value="info.userDetails.politicalTime"></u-cell>
<u-cell title="是否缴纳社保" :value="info.userDetails.isSocial === '1'? '是' : '否'"></u-cell>
<u-cell title="社会保障号" v-show="info.userDetails.isSocial==='1'" :value="info.userDetails.socialNumber"></u-cell>
<u-cell title="社会保障卡照片" v-show="info.userDetails.isSocial === '1'">
<template #value>
<view v-for="(item,index) in socialPhotoFile" :key="index"
style="display: flex;justify-content: space-between;margin-left: 10rpx;">
@ -54,8 +48,8 @@
</view>
</template>
</u-cell>
<u-cell title="是否签订劳动合同" :value="info.IS_SIGN_LABOR_NAME"></u-cell>
<u-cell title="合同图片" v-show="info.IS_SIGN_LABOR==='1'">
<u-cell title="是否签订劳动合同" :value="info.userDetails.isSignLabor === '1' ? '是':'否'"></u-cell>
<u-cell title="合同图片" v-show="info.userDetails.isSignLabor==='1'">
<template #value>
<view v-for="(item,index) in contractFile" :key="index"
style="display: flex;justify-content: space-between;margin-left: 10rpx;">
@ -64,9 +58,9 @@
</view>
</template>
</u-cell>
<u-cell title="是否缴纳商业保险" :value="info.ISPAY_NAME"></u-cell>
<u-cell title="商业保险单号" v-show="info.ISPAY==='1'" :value="info.ISPAY_NUMBER"></u-cell>
<u-cell title="保险图片" v-show="info.ISPAY==='1'">
<u-cell title="是否缴纳商业保险" :value="info.userDetails.ispay === '1' ? '是':'否'"></u-cell>
<u-cell title="商业保险单号" v-show="info.userDetails.ispay === '1'" :value="info.ispayNumber"></u-cell>
<u-cell title="保险图片" v-show="info.userDetails.ispay === '1'">
<template #value>
<view v-for="(item,index) in insuranceFile" :key="index"
style="display: flex;justify-content: space-between;margin-left: 10rpx;">
@ -75,9 +69,9 @@
</view>
</template>
</u-cell>
<u-cell title="是否按期缴纳工伤保险" :value="info.IS_INJURIES_PAY_NAME"></u-cell>
<u-cell title="工伤保险有效期" v-show="info.IS_INJURIES_PAY==='1'" :value="info.IS_INJURIES_PAY_TIME"></u-cell>
<u-cell title="工伤保险凭证" v-show="info.IS_INJURIES_PAY==='1'">
<u-cell title="是否按期缴纳工伤保险" :value="info.userDetails.isInjuriesPay === '1' ? '是':'否'"></u-cell>
<u-cell title="工伤保险有效期" v-show="info.userDetails.isInjuriesPay==='1'" :value="info.userDetails.isInjuriesPayTime"></u-cell>
<u-cell title="工伤保险凭证" v-show="info.userDetails.isInjuriesPay==='1'">
<template #value>
<view v-for="(item,index) in injuriesPayTiemFile" :key="index"
style="display: flex;justify-content: space-between;margin-left: 10rpx;">
@ -86,9 +80,9 @@
</view>
</template>
</u-cell>
<u-cell title="岗位名称(工种)" :value="info.POST_ID"></u-cell>
<u-cell title="是否参加三级安全培训" :value="info.IS_LEVEL_THREE_NAME"></u-cell>
<u-cell title="三级安全培训照片" v-show="info.IS_LEVEL_THREE==='1'">
<u-cell title="岗位名称(工种)" :value="info.userDetails.postName"></u-cell>
<u-cell title="是否参加三级安全培训" :value="info.userDetails.isLevelThree === '1' ? '是':'否'"></u-cell>
<u-cell title="三级安全培训照片" v-show="info.userDetails.isLevelThree === '1'">
<template #value>
<view v-for="(item,index) in photosOfLevel" :key="index"
style="display: flex;justify-content: space-between;margin-left: 10rpx;">
@ -97,7 +91,7 @@
</view>
</template>
</u-cell>
<u-cell title="是否流动人员" :value="info.ISFLOW_NAME"></u-cell>
<u-cell title="是否流动人员" :value="info.emp.isflow === '1' ? '是':'否'"></u-cell>
</u-cell-group>
</view>
<fab-button type="edit" @click="$u.route({url: '/pages/mine/information/update'})"/>
@ -110,19 +104,32 @@ import {
getEmployedBy, getIDCardDeduplication
} from "../../../api";
import FabButton from "@/components/fab_button/index.vue";
import {getUserInfoV1} from "../../../api/api";
export default {
components: {FabButton},
data() {
return {
info: {},
info: {
userDetails:{
sex:'0',
dateOfBirth:'1900-01-01'
},
emp:{
isflow:'0'
},
age: '0',
nationalityName:'',
hklocal: '',
maritalstatus:'0'
},
userCardIDPhotoFile: [],
socialPhotoFile: [],
injuriesPayTiemFile: [],
photosOfLevel: [],
contractFile: [],
insuranceFile: [],
EMPLOYMENT_APPLY_MANAGEMENT_ID: '',
userPhoto: ''
}
},
onShow() {
@ -134,98 +141,53 @@ export default {
}
},
methods: {
async fnIDCardDeduplication(CARD_ID = this.form.CARD_ID) {
let resData = await getIDCardDeduplication({CARD_ID})
if (resData.pd) {
uni.$u.toast('身份证号重复')
return true
}
return false
},
fnPreview(urls) {
uni.previewImage({
urls
})
},
async fnGetData() {
let data = await getUserInfoV1(
{
id: this.$store.getters.getUserInfo.USER_ID,
postMethod: 'application/json'
}
)
this.info = data.info
//
this.userCardIDPhotoFile = []
for (let i = 0; i < this.info.userCardInfo.length; i++) {
this.userCardIDPhotoFile.push(this.$filePath + this.info.userCardInfo[i].filepath)
}
//
this.socialPhotoFile = []
for (let i = 0; i < this.info.socSecurityInfo.length; i++) {
this.socialPhotoFile.push(this.$filePath + this.info.socSecurityInfo[i].filepath)
}
//
this.injuriesPayTiemFile = []
for (let i = 0; i < this.info.empInsuranceInfo.length; i++) {
this.injuriesPayTiemFile.push(this.$filePath + this.info.empInsuranceInfo[i].filepath)
}
//
this.contractFile = []
for (let i = 0; i < this.info.contractInfo.length; i++) {
this.contractFile.push(this.$filePath + this.info.contractInfo[i].filepath)
}
//
this.photosOfLevel = []
for (let i = 0; i < this.info.threeLevelInfo.length; i++) {
this.photosOfLevel.push(this.$filePath + this.info.threeLevelInfo[i].filepath)
}
//
this.insuranceFile = []
let Employed = await getEmployedBy({
showCount: 10,
currentPage: 1,
DEPART_STATE: '0'
})
if (Employed.varList.length > 0) {
Employed.varList.forEach(item => {
console.log(item.EMPLOYMENT_APPLY_MANAGEMENT_ID);
this.EMPLOYMENT_APPLY_MANAGEMENT_ID = item.EMPLOYMENT_APPLY_MANAGEMENT_ID
})
for (let i = 0; i < this.info.insuranceInfo.length; i++) {
this.insuranceFile.push(this.$filePath + this.info.insuranceInfo[i].filepath)
}
let resData = await getUserInfo({
USER_ID: this.userInfo.USER_ID,
CORPINFO_ID: this.userInfo.CORPINFO_ID,
EMPLOYMENT_APPLY_MANAGEMENT_ID: this.EMPLOYMENT_APPLY_MANAGEMENT_ID
})
this.info = resData.pd
for (let i = 0; i < resData.userCardIDPhotoFile.length; i++) {
this.userCardIDPhotoFile.push(this.$filePath + resData.userCardIDPhotoFile[i].FILEPATH)
}
for (let i = 0; i < resData.socialPhotoFile.length; i++) {
this.socialPhotoFile.push(this.$filePath + resData.socialPhotoFile[i].FILEPATH)
}
for (let i = 0; i < resData.workInsurancePhotoFile.length; i++) {
this.injuriesPayTiemFile.push(this.$filePath + resData.workInsurancePhotoFile[i].FILEPATH)
}
for (let i = 0; i < resData.contractFile.length; i++) {
this.contractFile.push(this.$filePath + resData.contractFile[i].FILEPATH)
}
for (let i = 0; i < resData.photosOfLevel.length; i++) {
this.photosOfLevel.push(this.$filePath + resData.photosOfLevel[i].FILEPATH)
}
for (let i = 0; i < resData.insuranceFile.length; i++) {
this.insuranceFile.push(this.$filePath + resData.insuranceFile[i].FILEPATH)
}
if (this.info.ISFLOW === '0') {
this.info.ISFLOW_NAME = '否'
} else if (this.info.ISFLOW === '1') {
this.info.ISFLOW_NAME = '是'
}
if (this.info.IS_SOCIAL === '0') {
this.info.IS_SOCIAL_NAME = '否'
} else if (this.info.IS_SOCIAL === '1') {
this.info.IS_SOCIAL_NAME = '是'
}
if (this.info.IS_INJURIES_PAY === '0') {
this.info.IS_INJURIES_PAY_NAME = '否'
} else if (this.info.IS_INJURIES_PAY === '1') {
this.info.IS_INJURIES_PAY_NAME = '是'
}
if (this.info.IS_SIGN_LABOR === '0') {
this.info.IS_SIGN_LABOR_NAME = '否'
} else if (this.info.IS_SIGN_LABOR === '1') {
this.info.IS_SIGN_LABOR_NAME = '是'
}
if (this.info.IS_LEVEL_THREE === '0') {
this.info.IS_LEVEL_THREE_NAME = '否'
} else if (this.info.IS_LEVEL_THREE === '1') {
this.info.IS_LEVEL_THREE_NAME = '是'
}
if (this.info.ISPAY === '1') {
this.info.ISPAY_NAME = '是'
} else {
this.info.ISPAY_NAME = '否'
}
if (resData.userPhotoFile.length > 0) {
this.$set(this.info, 'userPhoto', this.$filePath + resData.userPhotoFile[0].FILEPATH)
//
this.userPhoto = []
if (this.info.userPhotoInfo && this.info.userPhotoInfo.length > 0){
this.userPhoto = this.$filePath + this.info.userPhotoInfo[0].filepath
}
}
},

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,6 @@
let requestPath = 'http://192.168.0.104:8059/xgf_gwj'; // 后台请求地址
import refreshToken from "../api/refreshToken";
let requestPath = 'http://192.168.0.102:8059/xgf_gwj_2.0/'; // 后台请求地址
// let requestPath = 'https://skqhdg.porthebei.com:9006/qa-prevention-xgf/'; // 后台请求地址
// let requestPath = 'https://qgxgf.qhdsafety.com/qa-prevention-xgf/'; // 外网地址
import store from '../store/index'
@ -35,6 +37,7 @@ function post(url, data) {
uni.hideLoading();
}
if (res.data.result === 'success') {
refreshToken()
resolve(res.data)
} else {
uni.showToast({

View File

@ -22,9 +22,9 @@ export function formatDate(date, fmt) {
}
}
//export const filePath = 'http://192.168.192.201:8991/file/'
export const filePath = 'http://192.168.192.201:8991/file/'
//export const filePath = 'https://qgqy.qhdsafety.com/file/'
export const filePath = 'https://wwag.qhdsafety.com/file/'
// export const filePath = 'https://wwag.qhdsafety.com/file/'
function padLeftZero(str) {
return ('00' + str).substr(str.length)