代码完善
|
|
@ -1,4 +1,4 @@
|
||||||
# VITE_API_BASE_URL = http://112.29.103.165:1616
|
# VITE_API_BASE_URL = http://112.29.103.165:1616
|
||||||
# VITE_API_BASE_URL = /api
|
VITE_API_BASE_URL = /api
|
||||||
VITE_API_BASE_URL = http://192.168.0.14:1999/hd-realname/prod-api
|
# VITE_API_BASE_URL = http://192.168.0.14:1999/hd-realname/prod-api
|
||||||
# VITE_API_BASE_URL = http://192.168.0.234:38080
|
# VITE_API_BASE_URL = http://192.168.0.234:38080
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,13 @@
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
|
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>"
|
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />"
|
||||||
],
|
],
|
||||||
"minSdkVersion" : 24,
|
"minSdkVersion" : 24,
|
||||||
"abiFilters" : [ "armeabi-v7a" ]
|
"targetSdkVersion" : 33,
|
||||||
|
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86_64" ]
|
||||||
},
|
},
|
||||||
"webview" : {
|
"webview" : {
|
||||||
"allowFileAccess" : true,
|
"allowFileAccess" : true,
|
||||||
|
|
|
||||||
|
|
@ -197,8 +197,8 @@
|
||||||
{
|
{
|
||||||
"pagePath": "pages/attendance/index",
|
"pagePath": "pages/attendance/index",
|
||||||
"text": "考勤",
|
"text": "考勤",
|
||||||
"iconPath": "static/image/home.png",
|
"iconPath": "static/image/attendance.png",
|
||||||
"selectedIconPath": "static/image/home-active.png"
|
"selectedIconPath": "static/image/attendance-active.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/my/index",
|
"pagePath": "pages/my/index",
|
||||||
|
|
|
||||||
|
|
@ -3,60 +3,113 @@
|
||||||
<view class="contract-details">
|
<view class="contract-details">
|
||||||
<view> 合同见证照片 </view>
|
<view> 合同见证照片 </view>
|
||||||
<view class="contract-image">
|
<view class="contract-image">
|
||||||
<view class="contract-image-item" v-for="item in 5" :key="item">
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="contract-image-item"
|
||||||
|
v-for="(item, index) in contractInfo?.files"
|
||||||
|
>
|
||||||
<up-image
|
<up-image
|
||||||
src="https://cdn.uviewui.com/uview/album/1.jpg"
|
|
||||||
height="100px"
|
height="100px"
|
||||||
:width="'calc((100% - 40rpx) / 5)' + 'px'"
|
:src="item.lsUrl"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
|
@tap="onTapViewImage(index)"
|
||||||
|
:width="'calc((100% - 40rpx) / 5)' + 'px'"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<text> 工作内容页 </text>
|
<text> {{ contractFileTitle[item.sourceType] }} </text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="contract-content">
|
<view class="contract-content">
|
||||||
<view v-for="item in contractContent" :key="item.title" class="contract-content-item">
|
<view v-for="item in contractContent" :key="item.title" class="contract-content-item">
|
||||||
<text>{{ item.title }}</text>
|
<text>{{ item.title }}</text>
|
||||||
<text>{{ item.content }}</text>
|
<text>{{ contractInfo[item.contentKey] || '-' }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ContractDetails">
|
<script setup name="ContractDetails">
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const contractInfo = ref({})
|
||||||
|
const contractFileTitle = {
|
||||||
|
1: '人员手持合同照',
|
||||||
|
2: '工作内容页',
|
||||||
|
3: '薪酬约定页',
|
||||||
|
4: '本人签名页',
|
||||||
|
5: '其他照片',
|
||||||
|
}
|
||||||
|
|
||||||
const contractContent = [
|
const contractContent = [
|
||||||
{
|
{
|
||||||
title: '合同编号',
|
title: '合同编号',
|
||||||
content: '1234567890',
|
contentKey: 'contractCode',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '合同期限类型',
|
title: '合同期限类型',
|
||||||
content: '长期',
|
contentKey: 'contractTermType',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '合同签订日期',
|
title: '合同签订日期',
|
||||||
content: '2021-01-01',
|
contentKey: 'contractStartDate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '合同终止日期',
|
title: '合同终止日期',
|
||||||
content: '2021-01-01',
|
contentKey: 'contractStopDate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '工资核定方式',
|
title: '工资核定方式',
|
||||||
content: '2021-01-01',
|
contentKey: 'wageApprovedWay',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '工资核定标准',
|
title: '工资核定标准',
|
||||||
content: '2021-01-01',
|
contentKey: 'wageCriterion',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '合同类型',
|
title: '合同类型',
|
||||||
content: '2021-01-01',
|
contentKey: 'contractType',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const onTapViewImage = (index) => {
|
||||||
|
uni.previewImage({
|
||||||
|
loop: true,
|
||||||
|
current: index,
|
||||||
|
urls: contractInfo.value.files.map((item) => item.lsUrl),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
const app = getApp()
|
||||||
|
const contractParams = app.globalData.contractParams
|
||||||
|
|
||||||
|
if (contractParams) {
|
||||||
|
const {
|
||||||
|
files,
|
||||||
|
contractCode,
|
||||||
|
wageCriterion,
|
||||||
|
wageApprovedWay,
|
||||||
|
contractStopDate,
|
||||||
|
contractTermType,
|
||||||
|
contractStartDate,
|
||||||
|
} = contractParams
|
||||||
|
|
||||||
|
contractInfo.value = {
|
||||||
|
files,
|
||||||
|
contractCode,
|
||||||
|
wageCriterion,
|
||||||
|
wageApprovedWay,
|
||||||
|
contractTermType,
|
||||||
|
contractStopDate,
|
||||||
|
contractStartDate,
|
||||||
|
contractType: '纸质合同',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
@ -83,7 +136,9 @@ const contractContent = [
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
text {
|
text {
|
||||||
|
margin-top: 10rpx;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,44 +3,82 @@
|
||||||
<view class="wage-card-details">
|
<view class="wage-card-details">
|
||||||
<view> 工资卡见证照片 </view>
|
<view> 工资卡见证照片 </view>
|
||||||
<view class="wage-card-image">
|
<view class="wage-card-image">
|
||||||
<view class="wage-card-image-item" v-for="item in 4" :key="item">
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="wage-card-image-item"
|
||||||
|
v-for="(item, index) in wageCardInfo?.files"
|
||||||
|
>
|
||||||
<up-image
|
<up-image
|
||||||
src="https://cdn.uviewui.com/uview/album/1.jpg"
|
:src="item.lsUrl"
|
||||||
height="100px"
|
height="100px"
|
||||||
:width="'calc((100% - 40rpx) / 5)' + 'px'"
|
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
|
@tap="onTapViewImage(index)"
|
||||||
|
:width="'calc((100% - 40rpx) / 4)' + 'px'"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<text> 工作内容页 </text>
|
<text> {{ wageCardFileTitle[item.sourceType] }} </text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="wage-card-content">
|
<view class="wage-card-content">
|
||||||
<view v-for="item in wageCardContent" :key="item.title" class="wage-card-content-item">
|
<view v-for="item in wageCardContent" :key="item.title" class="wage-card-content-item">
|
||||||
<text>{{ item.title }}</text>
|
<text>{{ item.title }}</text>
|
||||||
<text>{{ item.content }}</text>
|
<text>{{ wageCardInfo[item.contentKey] || '-' }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="WageCardDetails">
|
<script setup name="WageCardDetails">
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
const wageCardInfo = ref({})
|
||||||
|
const wageCardFileTitle = {
|
||||||
|
1: '手持银行卡、承诺书',
|
||||||
|
2: '银行卡照片',
|
||||||
|
3: '个人工资卡承诺书',
|
||||||
|
4: '其它照片',
|
||||||
|
}
|
||||||
const wageCardContent = [
|
const wageCardContent = [
|
||||||
{
|
{
|
||||||
title: '银行卡号',
|
title: '银行卡号',
|
||||||
content: '1234567890',
|
contentKey: 'bankCardCode',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '银行名称',
|
title: '银行名称',
|
||||||
content: '中国银行',
|
contentKey: 'bankName',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '支行名称',
|
title: '支行名称',
|
||||||
content: '中国银行',
|
contentKey: 'bankBranchName',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const onTapViewImage = (index) => {
|
||||||
|
uni.previewImage({
|
||||||
|
loop: true,
|
||||||
|
current: index,
|
||||||
|
urls: wageCardInfo.value.files.map((item) => item.lsUrl),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
const app = getApp()
|
||||||
|
const contractParams = app.globalData.contractParams
|
||||||
|
|
||||||
|
if (contractParams) {
|
||||||
|
const { wageFiles, bankName, bankCardCode, bankBranchName } = contractParams
|
||||||
|
|
||||||
|
wageCardInfo.value = {
|
||||||
|
bankName,
|
||||||
|
bankCardCode,
|
||||||
|
bankBranchName,
|
||||||
|
files: wageFiles,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
@ -67,7 +105,9 @@ const wageCardContent = [
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
text {
|
text {
|
||||||
|
margin-top: 10rpx;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,9 @@
|
||||||
<up-input
|
<up-input
|
||||||
clearable
|
clearable
|
||||||
prefixIcon="account"
|
prefixIcon="account"
|
||||||
|
class="custom-input"
|
||||||
placeholder="请输入用户名"
|
placeholder="请输入用户名"
|
||||||
v-model="opinionModel.username"
|
v-model="opinionModel.username"
|
||||||
class="custom-input"
|
|
||||||
/>
|
/>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
|
||||||
|
|
@ -36,10 +36,10 @@
|
||||||
<up-input
|
<up-input
|
||||||
clearable
|
clearable
|
||||||
prefixIcon="lock"
|
prefixIcon="lock"
|
||||||
|
class="custom-input"
|
||||||
placeholder="请输入密码"
|
placeholder="请输入密码"
|
||||||
:password="!showPassword"
|
:password="!showPassword"
|
||||||
v-model="opinionModel.password"
|
v-model="opinionModel.password"
|
||||||
class="custom-input"
|
|
||||||
>
|
>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<!-- <u-icon
|
<!-- <u-icon
|
||||||
|
|
@ -65,10 +65,10 @@
|
||||||
<view style="width: 35%" class="img-content" ref="imgContentRef">
|
<view style="width: 35%" class="img-content" ref="imgContentRef">
|
||||||
<up-image
|
<up-image
|
||||||
:src="codeUrl"
|
:src="codeUrl"
|
||||||
|
mode="scaleToFill"
|
||||||
@tap="onHandleCodeImg"
|
@tap="onHandleCodeImg"
|
||||||
:width="imgWidth + 'px'"
|
:width="imgWidth + 'px'"
|
||||||
:height="imgHeight + 'px'"
|
:height="imgHeight + 'px'"
|
||||||
mode="scaleToFill"
|
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
|
@ -77,10 +77,11 @@
|
||||||
<up-form-item prop="remember" class="remember-item">
|
<up-form-item prop="remember" class="remember-item">
|
||||||
<up-checkbox
|
<up-checkbox
|
||||||
usedAlone
|
usedAlone
|
||||||
|
size="16"
|
||||||
name="agree"
|
name="agree"
|
||||||
|
iconSize="14"
|
||||||
label="记住密码"
|
label="记住密码"
|
||||||
v-model:checked="remember"
|
v-model:checked="remember"
|
||||||
iconSize="14"
|
|
||||||
>
|
>
|
||||||
</up-checkbox>
|
</up-checkbox>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
|
@ -88,12 +89,12 @@
|
||||||
<!-- 登录按钮 -->
|
<!-- 登录按钮 -->
|
||||||
<up-form-item class="login-btn-item">
|
<up-form-item class="login-btn-item">
|
||||||
<up-button
|
<up-button
|
||||||
type="primary"
|
|
||||||
text="登录"
|
text="登录"
|
||||||
@tap="onSubmitLogin"
|
type="primary"
|
||||||
shape="circle"
|
shape="circle"
|
||||||
color="linear-gradient(135deg, #2979ff, #5e35b1)"
|
|
||||||
class="login-btn"
|
class="login-btn"
|
||||||
|
@tap="onSubmitLogin"
|
||||||
|
color="linear-gradient(135deg, #2979ff, #5e35b1)"
|
||||||
/>
|
/>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
</up-form>
|
</up-form>
|
||||||
|
|
|
||||||
|
|
@ -64,11 +64,11 @@
|
||||||
v-model="editPasswordAgainModel.newPassword"
|
v-model="editPasswordAgainModel.newPassword"
|
||||||
>
|
>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<u-icon
|
<!-- <u-icon
|
||||||
:name="!showPassword_2 ? 'eye-fill' : 'eye'"
|
:name="!showPassword_2 ? 'eye-fill' : 'eye'"
|
||||||
@tap="showPassword_2 = !showPassword_2"
|
@tap="showPassword_2 = !showPassword_2"
|
||||||
size="20"
|
size="20"
|
||||||
/>
|
/> -->
|
||||||
</template>
|
</template>
|
||||||
</up-input>
|
</up-input>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
|
@ -81,11 +81,11 @@
|
||||||
v-model="editPasswordAgainModel.newPasswordAgain"
|
v-model="editPasswordAgainModel.newPasswordAgain"
|
||||||
>
|
>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<u-icon
|
<!-- <u-icon
|
||||||
:name="!showPassword_3 ? 'eye-fill' : 'eye'"
|
:name="!showPassword_3 ? 'eye-fill' : 'eye'"
|
||||||
@tap="showPassword_3 = !showPassword_3"
|
@tap="showPassword_3 = !showPassword_3"
|
||||||
size="20"
|
size="20"
|
||||||
/>
|
/> -->
|
||||||
</template>
|
</template>
|
||||||
</up-input>
|
</up-input>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
|
@ -245,7 +245,9 @@ const onHandleSubmit = () => {
|
||||||
// 调后台接口修改密码
|
// 调后台接口修改密码
|
||||||
const editParams = {
|
const editParams = {
|
||||||
password: editPasswordAgainModel.value.newPassword,
|
password: editPasswordAgainModel.value.newPassword,
|
||||||
id: memberStore.userInfo.id,
|
phonenumber: editPasswordModel.value.username,
|
||||||
|
oldPassword: editPasswordModel.value.oldPassword,
|
||||||
|
// id: memberStore.userInfo.id,
|
||||||
}
|
}
|
||||||
console.log(
|
console.log(
|
||||||
'%c🔍 修改密码请求入参 %c',
|
'%c🔍 修改密码请求入参 %c',
|
||||||
|
|
|
||||||
|
|
@ -1,93 +1,132 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 人员资质查询 -->
|
<!-- 人员资质查询 -->
|
||||||
<view class="aptitude-query">
|
<view class="aptitude-query app-container">
|
||||||
<view class="taps-container">
|
<!-- <view class="taps-container">
|
||||||
<view :class="{ active: activeName === '姓名' }" @tap="activeName = '姓名'">
|
<view :class="{ active: activeName === '姓名' }" @tap="activeName = '姓名'">
|
||||||
姓名
|
姓名
|
||||||
</view>
|
</view>
|
||||||
<view :class="{ active: activeName === '组织' }" @tap="activeName = '组织'">
|
<view :class="{ active: activeName === '组织' }" @tap="activeName = '组织'">
|
||||||
组织
|
组织
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
|
|
||||||
<view class="search-container" v-if="activeName === '姓名'">
|
<view class="search-container">
|
||||||
<up-search
|
<up-search
|
||||||
bgColor="#fff"
|
bgColor="#fff"
|
||||||
placeholder="请输入"
|
placeholder="请输入"
|
||||||
v-model="nameValue"
|
|
||||||
:show-action="false"
|
:show-action="false"
|
||||||
borderColor="#3c9cff"
|
borderColor="#3c9cff"
|
||||||
|
@search="onSearchName"
|
||||||
searchIconColor="#3c9cff"
|
searchIconColor="#3c9cff"
|
||||||
|
@clickIcon="onSearchName"
|
||||||
|
v-model="queryParams.workerName"
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="list-container" v-if="activeName === '姓名'">
|
<scroll-view
|
||||||
<view class="list-item" v-for="item in 10" :key="item" @tap="onPersonDetails(item)">
|
scroll-y
|
||||||
|
v-if="total > 0"
|
||||||
|
class="list-container"
|
||||||
|
@scrolltolower="onHandleScrollToLower"
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="list-item"
|
||||||
|
v-for="item in personList"
|
||||||
|
:key="item.workerId"
|
||||||
|
@tap="onPersonDetails(item)"
|
||||||
|
>
|
||||||
<view>
|
<view>
|
||||||
<text>姓名</text>
|
<text>姓名</text>
|
||||||
<text>李思思</text>
|
<text>{{ item.workerName }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<text>身份证</text>
|
<text>身份证</text>
|
||||||
<text>李思思</text>
|
<text>{{ item.idNumber }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<text>工种</text>
|
<text>工种</text>
|
||||||
<text>李思思</text>
|
<text>{{ item.postName }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view class="loading-text">
|
||||||
|
{{ !hasMore ? '没有更多数据了~' : '正在加载...' }}
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<view v-if="total === 0" class="empty-content">
|
||||||
|
<up-empty :icon="Empty" />
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="activeName === '组织'">
|
<!-- <view v-if="activeName === '组织'">
|
||||||
<u-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" />
|
<u-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" />
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="AptitudeQuery">
|
<script setup name="AptitudeQuery">
|
||||||
import { ref } from 'vue'
|
import { onMounted, ref, computed } from 'vue'
|
||||||
|
import { getAttendanceRecordAPI } from '@/services/attendance.js'
|
||||||
|
import { useCommonStore } from '@/stores'
|
||||||
|
import { debounce } from 'lodash-es'
|
||||||
|
import Empty from '@/static/image/Empty.png'
|
||||||
|
|
||||||
const activeName = ref('姓名')
|
const personList = ref([])
|
||||||
const nameValue = ref('')
|
const total = ref(0)
|
||||||
|
const commonStore = useCommonStore() // 工程信息
|
||||||
|
|
||||||
const defaultProps = {
|
const queryParams = ref({
|
||||||
children: 'children',
|
pageNum: 1,
|
||||||
label: 'label',
|
pageSize: 12,
|
||||||
nodeKey: 'id',
|
workerName: '',
|
||||||
|
proName: commonStore?.activeProjectName,
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取人员列表
|
||||||
|
const getPersonList = async () => {
|
||||||
|
const res = await getAttendanceRecordAPI(queryParams.value)
|
||||||
|
total.value = res?.total
|
||||||
|
personList.value = [...personList.value, ...res?.rows]
|
||||||
}
|
}
|
||||||
|
|
||||||
const treeData = ref([
|
// 滚动到底部
|
||||||
{
|
const onHandleScrollToLower = debounce(() => {
|
||||||
id: 1,
|
if (hasMore.value) {
|
||||||
label: '一级 1',
|
queryParams.value.pageNum++
|
||||||
children: [
|
getPersonList()
|
||||||
{
|
}
|
||||||
id: 2,
|
}, 1000)
|
||||||
label: '二级 1-1',
|
|
||||||
children: [
|
const onSearchName = () => {
|
||||||
{ id: 3, label: '三级 1-1-1' },
|
queryParams.value.pageNum = 1
|
||||||
{ id: 4, label: '三级 1-1-2' },
|
personList.value = []
|
||||||
],
|
getPersonList()
|
||||||
},
|
}
|
||||||
],
|
|
||||||
},
|
// 是否还有更多数据
|
||||||
])
|
const hasMore = computed(() => {
|
||||||
|
return personList.value.length < total.value
|
||||||
|
})
|
||||||
|
|
||||||
// 查看人员详情
|
// 查看人员详情
|
||||||
const onPersonDetails = (item) => {
|
const onPersonDetails = (item) => {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/person-details/index?id=${item.id}`,
|
url: `/pages/person-details/index?id=${item.workerId}`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getPersonList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.aptitude-query {
|
.aptitude-query {
|
||||||
height: 100%;
|
// height: 100%;
|
||||||
display: flex;
|
// display: flex;
|
||||||
padding: 20rpx;
|
// padding: 20rpx;
|
||||||
box-sizing: border-box;
|
// box-sizing: border-box;
|
||||||
flex-direction: column;
|
// flex-direction: column;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
.taps-container {
|
.taps-container {
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,11 @@
|
||||||
<view class="person-check">
|
<view class="person-check">
|
||||||
<view class="person-check-item">
|
<view class="person-check-item">
|
||||||
<view @tap="onFaceRecognition">
|
<view @tap="onFaceRecognition">
|
||||||
<up-image
|
<up-image width="60px" height="60px" :src="FaceIcon" />
|
||||||
width="80px"
|
|
||||||
height="80px"
|
|
||||||
src="https://cdn.uviewui.com/uview/album/1.jpg"
|
|
||||||
/>
|
|
||||||
<text>人脸识别</text>
|
<text>人脸识别</text>
|
||||||
</view>
|
</view>
|
||||||
<view @tap="onPersonCheck">
|
<view @tap="onPersonCheck">
|
||||||
<up-image
|
<up-image width="60px" height="60px" :src="CheckIcon" />
|
||||||
width="80px"
|
|
||||||
height="80px"
|
|
||||||
src="https://cdn.uviewui.com/uview/album/1.jpg"
|
|
||||||
/>
|
|
||||||
<text>人员资质查询</text>
|
<text>人员资质查询</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -24,9 +16,11 @@
|
||||||
|
|
||||||
<script setup name="PersonCheck">
|
<script setup name="PersonCheck">
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
import FaceIcon from '@/static/image/face.png'
|
||||||
|
import CheckIcon from '@/static/image/person-qua.png'
|
||||||
|
|
||||||
const onFaceRecognition = () => {
|
const onFaceRecognition = () => {
|
||||||
uni.$u.toast('功能正在开发中,敬请期待...')
|
// uni.$u.toast('功能正在开发中,敬请期待...')
|
||||||
// console.log('onFaceRecognition')
|
// console.log('onFaceRecognition')
|
||||||
|
|
||||||
// 打开前置摄像头
|
// 打开前置摄像头
|
||||||
|
|
@ -36,6 +30,21 @@ const onFaceRecognition = () => {
|
||||||
// console.log(result)
|
// console.log(result)
|
||||||
// },
|
// },
|
||||||
// })
|
// })
|
||||||
|
|
||||||
|
uni.chooseImage({
|
||||||
|
count: 1, // 最多选择1张图片
|
||||||
|
sizeType: ['original', 'compressed'],
|
||||||
|
sourceType: ['camera', 'album'], // 选择图片的来源
|
||||||
|
success: (res) => {
|
||||||
|
console.log(res, '----选取的文件')
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
uni.$u.toast({
|
||||||
|
title: '选择图片失败',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 打开人员资质查询页面
|
// 打开人员资质查询页面
|
||||||
|
|
|
||||||
|
|
@ -5,17 +5,17 @@
|
||||||
<view class="person-info">
|
<view class="person-info">
|
||||||
<view class="person-info-left">
|
<view class="person-info-left">
|
||||||
<up-image
|
<up-image
|
||||||
src="https://cdn.uviewui.com/uview/album/1.jpg"
|
|
||||||
width="100px"
|
width="100px"
|
||||||
height="140px"
|
height="140px"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
|
:src="personDetails?.facePhoto"
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
<view class="person-info-right">
|
<view class="person-info-right">
|
||||||
<view class="name">
|
<view class="name">
|
||||||
<text>李思思</text>
|
<text class="ellipsis-text">{{ personDetails?.name }}</text>
|
||||||
<text :style="{ color: initColor }">
|
<text :style="{ color: initColor }">
|
||||||
{{ statusName }}
|
{{ initLightStatus }}
|
||||||
</text>
|
</text>
|
||||||
<up-icon
|
<up-icon
|
||||||
size="16"
|
size="16"
|
||||||
|
|
@ -25,13 +25,14 @@
|
||||||
name="question-circle-fill"
|
name="question-circle-fill"
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
<view class="job"> 高空作业人员 </view>
|
<view class="job"> {{ personDetails?.postName }} </view>
|
||||||
<view class="company"> xxxj建设有限公司 </view>
|
<view class="company"> {{ personDetails?.proName }} </view>
|
||||||
<view class="project"> 66332g工程66332g工程66332g工程66332g工程 </view>
|
<view class="project"> {{ personDetails?.subName }} </view>
|
||||||
|
<view class="project"> {{ personDetails?.teamName }} </view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<view class="status-light">
|
<view class="status-light">
|
||||||
<up-image :src="YellowLight" width="60px" height="60px" mode="scaleToFill" />
|
<up-image :src="initLightImage" width="60px" height="60px" mode="scaleToFill" />
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<TitleTipModal TitleTip="今日考勤" />
|
<TitleTipModal TitleTip="今日考勤" />
|
||||||
|
|
@ -39,63 +40,97 @@
|
||||||
<view class="att-content">
|
<view class="att-content">
|
||||||
<view>
|
<view>
|
||||||
<text> 打卡时间 :</text>
|
<text> 打卡时间 :</text>
|
||||||
<text>10:00:00</text>
|
<text>{{ todayAttTime || '无' }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-card" :class="todayAttTime ? 'success-card' : 'error-card'">
|
||||||
|
{{ todayAttTime ? '已打卡' : '未打卡' }}
|
||||||
</view>
|
</view>
|
||||||
<view class="info-card success-card"> 已打卡 </view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<TitleTipModal TitleTip="合同信息" />
|
<TitleTipModal TitleTip="合同信息" />
|
||||||
<view class="attendance-info">
|
<view class="attendance-info">
|
||||||
<view class="att-content" @click="onContractDetails">
|
<view class="att-content" @click="onContractDetails">
|
||||||
<view class="info-item">
|
<view class="info-item">
|
||||||
<up-icon size="24" name="checkmark-circle-fill" color="#4cd964" />
|
<up-icon
|
||||||
|
size="24"
|
||||||
|
:name="
|
||||||
|
lightStatusList[1]?.value == '1'
|
||||||
|
? 'checkmark-circle-fill'
|
||||||
|
: 'close-circle-fill'
|
||||||
|
"
|
||||||
|
:color="initContractColor"
|
||||||
|
/>
|
||||||
<text>纸质合同</text>
|
<text>纸质合同</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="info-card success-card"> 已签订 </view>
|
<view
|
||||||
|
class="info-card"
|
||||||
|
:class="lightStatusList[1]?.value == '1' ? 'success-card' : 'error-card'"
|
||||||
|
>
|
||||||
|
{{ lightStatusList[1]?.value == '1' ? '已签订' : '未签订' }}
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<TitleTipModal TitleTip="工资卡信息" />
|
<TitleTipModal TitleTip="工资卡信息" />
|
||||||
<view class="attendance-info">
|
<view class="attendance-info">
|
||||||
<view class="att-content" @click="onWageCardDetails">
|
<view class="att-content" @click="onWageCardDetails">
|
||||||
<view class="info-item">
|
<view class="info-item">
|
||||||
<up-icon size="24" name="close-circle-fill" color="#dd524d" />
|
<up-icon
|
||||||
|
size="24"
|
||||||
|
:name="
|
||||||
|
lightStatusList[0]?.value == '1'
|
||||||
|
? 'checkmark-circle-fill'
|
||||||
|
: 'close-circle-fill'
|
||||||
|
"
|
||||||
|
:color="initWageCardColor"
|
||||||
|
/>
|
||||||
<text>工资卡见证</text>
|
<text>工资卡见证</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="info-card error-card"> 未签订 </view>
|
<view
|
||||||
|
class="info-card"
|
||||||
|
:class="lightStatusList[0]?.value == '1' ? 'success-card' : 'error-card'"
|
||||||
|
>
|
||||||
|
{{ lightStatusList[0]?.value == '1' ? '已上传' : '未上传' }}
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<!-- 红绿灯说明 -->
|
||||||
|
<up-popup
|
||||||
|
mode="center"
|
||||||
|
@open="onOpen"
|
||||||
|
@close="onClose"
|
||||||
|
:show="redLightShow"
|
||||||
|
closeOnClickOverlay
|
||||||
|
>
|
||||||
|
<view class="red-light-popup">
|
||||||
|
<view class="title"> 红绿灯说明 </view>
|
||||||
|
<view class="red-light-content">
|
||||||
|
<view
|
||||||
|
:class="lightStatusList[1]?.value == '1' ? 'green-light' : 'yellow-light'"
|
||||||
|
>
|
||||||
|
<text>
|
||||||
|
{{ lightStatusList[1]?.value == '1' ? '绿灯' : '黄灯' }}
|
||||||
|
</text>
|
||||||
|
<text>
|
||||||
|
{{
|
||||||
|
lightStatusList[1]?.value == '1'
|
||||||
|
? '合同和工资卡已上传'
|
||||||
|
: '合同或工资卡未上传'
|
||||||
|
}}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<up-icon
|
||||||
|
color="#fff"
|
||||||
|
size="20"
|
||||||
|
class="close-icon"
|
||||||
|
name="close-circle"
|
||||||
|
@click="onClose"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</up-popup>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 红绿灯说明 -->
|
|
||||||
<up-popup
|
|
||||||
mode="center"
|
|
||||||
@open="onOpen"
|
|
||||||
@close="onClose"
|
|
||||||
:show="redLightShow"
|
|
||||||
closeOnClickOverlay
|
|
||||||
>
|
|
||||||
<view class="red-light-popup">
|
|
||||||
<view class="title"> 红绿灯说明 </view>
|
|
||||||
<view class="red-light-content">
|
|
||||||
<view class="yellow-light">
|
|
||||||
<text>黄灯</text>
|
|
||||||
<text>合同或工资卡未上传</text>
|
|
||||||
</view>
|
|
||||||
<view class="green-light">
|
|
||||||
<text>绿灯</text>
|
|
||||||
<text>合同和工资卡已上传</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<up-icon
|
|
||||||
color="#fff"
|
|
||||||
size="20"
|
|
||||||
class="close-icon"
|
|
||||||
name="close-circle"
|
|
||||||
@click="onClose"
|
|
||||||
/>
|
|
||||||
</view>
|
|
||||||
</up-popup>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="PersonDetails">
|
<script setup name="PersonDetails">
|
||||||
|
|
@ -103,13 +138,41 @@ import { ref, computed } from 'vue'
|
||||||
import TitleTipModal from '@/components/TitleTipModal/index'
|
import TitleTipModal from '@/components/TitleTipModal/index'
|
||||||
import GreenLight from '@/static/image/person/green_light.png'
|
import GreenLight from '@/static/image/person/green_light.png'
|
||||||
import YellowLight from '@/static/image/person/yellow_light.png'
|
import YellowLight from '@/static/image/person/yellow_light.png'
|
||||||
|
import { getPersonDetailsByIdAPI, getPersonContractAndWageCardAPI } from '@/services/attendance.js'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
|
||||||
const statusName = ref('黄灯')
|
const statusName = ref('黄灯')
|
||||||
const redLightShow = ref(false)
|
const redLightShow = ref(false)
|
||||||
|
const todayAttTime = ref(null)
|
||||||
|
|
||||||
|
const personDetails = ref({})
|
||||||
|
const personDetailsAll = ref({})
|
||||||
|
const lightStatusList = ref([])
|
||||||
|
|
||||||
const initColor = computed(() => {
|
const initColor = computed(() => {
|
||||||
if (statusName.value === '黄灯') return '#f4c622'
|
if (personDetails.value.lightStatus == 1) return '#f4c622'
|
||||||
if (statusName.value === '绿灯') return '#00ff00'
|
if (personDetails.value.lightStatus == 2) return '#00ff00'
|
||||||
|
})
|
||||||
|
|
||||||
|
const initLightStatus = computed(() => {
|
||||||
|
if (personDetails.value.lightStatus == 1) return '黄灯'
|
||||||
|
if (personDetails.value.lightStatus == 2) return '绿灯'
|
||||||
|
})
|
||||||
|
|
||||||
|
const initLightImage = computed(() => {
|
||||||
|
if (personDetails.value.lightStatus == 1) return YellowLight
|
||||||
|
if (personDetails.value.lightStatus == 2) return GreenLight
|
||||||
|
})
|
||||||
|
|
||||||
|
const initContractColor = computed(() => {
|
||||||
|
if (lightStatusList.value[1]?.value == '1') return '#4cd964'
|
||||||
|
if (lightStatusList.value[1]?.value == '0') return '#dd524d'
|
||||||
|
})
|
||||||
|
|
||||||
|
const initWageCardColor = computed(() => {
|
||||||
|
if (lightStatusList.value[0]?.value == '1') return '#4cd964'
|
||||||
|
if (lightStatusList.value[0]?.value == '0') return '#dd524d'
|
||||||
})
|
})
|
||||||
|
|
||||||
const onClose = () => {
|
const onClose = () => {
|
||||||
|
|
@ -121,16 +184,65 @@ const onOpen = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const onContractDetails = () => {
|
const onContractDetails = () => {
|
||||||
|
if (lightStatusList.value[1]?.value == 0) {
|
||||||
|
uni.$u.toast('请先签订合同')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const app = getApp()
|
||||||
|
app.globalData.contractParams = personDetailsAll.value
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/ContractDetails/index',
|
url: '/pages/ContractDetails/index',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const onWageCardDetails = () => {
|
const onWageCardDetails = () => {
|
||||||
|
if (lightStatusList.value[0]?.value == 0) {
|
||||||
|
uni.$u.toast('请先上传工资卡')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const app = getApp()
|
||||||
|
app.globalData.contractParams = personDetailsAll.value
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/WageCardDetails/index',
|
url: `/pages/WageCardDetails/index?params=${JSON.stringify(personDetailsAll.value)}`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取人员详情数据
|
||||||
|
const getPersonDetailsByIdFun = async (id) => {
|
||||||
|
const res = await getPersonDetailsByIdAPI({ id })
|
||||||
|
|
||||||
|
const { name, lightStatus, postName, subName, teamName, proName, facePhoto, attTime } = res.data
|
||||||
|
personDetailsAll.value = res.data
|
||||||
|
|
||||||
|
personDetails.value = {
|
||||||
|
name,
|
||||||
|
postName,
|
||||||
|
subName,
|
||||||
|
teamName,
|
||||||
|
proName,
|
||||||
|
facePhoto,
|
||||||
|
lightStatus,
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await getPersonContractAndWageCardAPI({ id })
|
||||||
|
lightStatusList.value = result?.data
|
||||||
|
|
||||||
|
const date = attTime?.split(' ')[0] || null
|
||||||
|
const time = attTime?.split(' ')[1] || null
|
||||||
|
|
||||||
|
// 判断是否为当天
|
||||||
|
const isToday = dayjs(date).format('YYYY-MM-DD') === dayjs().format('YYYY-MM-DD')
|
||||||
|
if (isToday) {
|
||||||
|
todayAttTime.value = time
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad((options) => {
|
||||||
|
if (options?.id) {
|
||||||
|
getPersonDetailsByIdFun(options?.id)
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -143,6 +255,7 @@ const onWageCardDetails = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.person-info {
|
.person-info {
|
||||||
|
width: 100%;
|
||||||
margin: 20rpx 0;
|
margin: 20rpx 0;
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -190,13 +303,13 @@ const onWageCardDetails = () => {
|
||||||
letter-spacing: 2rpx;
|
letter-spacing: 2rpx;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.status-light {
|
.status-light {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 20rpx;
|
right: 20rpx;
|
||||||
top: 0;
|
top: 140rpx;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.attendance-info {
|
.attendance-info {
|
||||||
|
|
@ -233,7 +346,7 @@ const onWageCardDetails = () => {
|
||||||
|
|
||||||
.red-light-popup {
|
.red-light-popup {
|
||||||
width: 80vw;
|
width: 80vw;
|
||||||
height: 36vh;
|
height: 28vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
||||||
|
|
@ -8,3 +8,19 @@ export const getAttendanceRecordAPI = (data) => {
|
||||||
data,
|
data,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 考勤页面 获取人员详情接口
|
||||||
|
export const getPersonDetailsByIdAPI = (data) => {
|
||||||
|
return http({
|
||||||
|
method: 'GET',
|
||||||
|
url: '/bmw/homePageSub/getWorkerMsgById',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 考勤页面 获取人员合同工资卡信息接口
|
||||||
|
export const getPersonContractAndWageCardAPI = (data) => {
|
||||||
|
return http({
|
||||||
|
method: 'GET',
|
||||||
|
url: '/bmw/homePageSub/getWorkerLightMsg',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
|
@ -33,4 +33,11 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ellipsis-text {
|
||||||
|
width: 30%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 857 B After Width: | Height: | Size: 699 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 9.1 KiB |
|
|
@ -10,8 +10,8 @@ export default defineConfig({
|
||||||
'/api': {
|
'/api': {
|
||||||
// target: 'http://112.29.103.165:1616', // 测试环境
|
// target: 'http://112.29.103.165:1616', // 测试环境
|
||||||
// target: 'http://192.168.0.133:58080', // 梁超
|
// target: 'http://192.168.0.133:58080', // 梁超
|
||||||
// target: 'http://192.168.0.14:1999/hd-realname/prod-api', // 测试环境
|
target: 'http://192.168.0.14:1999/hd-realname/prod-api', // 测试环境
|
||||||
target: 'http://192.168.0.234:38080', // 方亮
|
// target: 'http://192.168.0.234:38080', // 方亮
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path) => {
|
rewrite: (path) => {
|
||||||
return path.replace(/\/api/, '')
|
return path.replace(/\/api/, '')
|
||||||
|
|
|
||||||