This commit is contained in:
parent
19496ab5b8
commit
e331bfc0f4
|
|
@ -8,14 +8,19 @@
|
|||
:model="contractInfoForm"
|
||||
:rules="contractInfoFormRules"
|
||||
>
|
||||
<up-cell style="padding: 0 13px">
|
||||
<up-cell style="padding: 0 13px" v-if="isShowBottomAndTop">
|
||||
<template #icon>
|
||||
<text class="red-text">
|
||||
非必填,后期可在合同见证模块补录合同,但如果部分填写,则需把信息全部完善
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
<up-form-item label="合同类型" prop="postName" :borderBottom="true">
|
||||
<up-form-item
|
||||
label="合同类型"
|
||||
prop="postName"
|
||||
:borderBottom="true"
|
||||
v-if="isShowBottomAndTop"
|
||||
>
|
||||
<up-cell style="width: 100%" :border="false">
|
||||
<template #icon> 纸质合同 </template>
|
||||
</up-cell>
|
||||
|
|
@ -112,7 +117,7 @@
|
|||
>
|
||||
<up-upload
|
||||
multiple
|
||||
:maxCount="1"
|
||||
:maxCount="3"
|
||||
:name="item.name"
|
||||
accept="image"
|
||||
:fileList="item.fileList"
|
||||
|
|
@ -125,7 +130,7 @@
|
|||
</up-form-item>
|
||||
</up-form>
|
||||
|
||||
<view class="red-text tip-container">
|
||||
<view class="red-text tip-container" v-if="isShowBottomAndTop">
|
||||
<text> 提醒事项: </text>
|
||||
<text> 1: 未完成合同上传未【黄灯人员】</text>
|
||||
<text> 2: 生成工资册之前必须上传合同信息,工资册根据合同核定标准生成</text>
|
||||
|
|
@ -167,30 +172,30 @@ const contractImageList = ref([
|
|||
name: 'contract',
|
||||
title: '人员手持合同照',
|
||||
},
|
||||
{
|
||||
type: 2,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '工作内容页',
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '薪酬约定页',
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '本人签名页',
|
||||
},
|
||||
{
|
||||
type: 5,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '其他照片',
|
||||
},
|
||||
// {
|
||||
// type: 2,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '工作内容页',
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '薪酬约定页',
|
||||
// },
|
||||
// {
|
||||
// type: 4,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '本人签名页',
|
||||
// },
|
||||
// {
|
||||
// type: 5,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '其他照片',
|
||||
// },
|
||||
]) // 合同见证照片
|
||||
|
||||
const contractInfoFormRules = ref({
|
||||
|
|
@ -319,7 +324,7 @@ const checkFormStatus = () => {
|
|||
let emptyFieldCount = 0
|
||||
let filledFieldCount = 0
|
||||
const fieldsList = [
|
||||
'contractCode', // 合同编号
|
||||
// 'contractCode', // 合同编号
|
||||
'wageCriterion', // 工资核定标准
|
||||
'contractStopDate', // 合同终止日期
|
||||
'contractStartDate', // 合同
|
||||
|
|
@ -367,7 +372,7 @@ const validateContractForm = async () => {
|
|||
// console.log(status)
|
||||
if (status === 'partial') {
|
||||
uni.$u.toast('请完善合同见证中的所有信息')
|
||||
return reject(new Error('合同信息未完善'))
|
||||
return reject({ isValid: false, msg: '提交失败,请完善合同见证中的信息' })
|
||||
} else {
|
||||
let data = {}
|
||||
if (contractImageIdList.value.length > 0) {
|
||||
|
|
@ -421,6 +426,12 @@ const props = defineProps({
|
|||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
|
||||
// 是否显示底部和顶部
|
||||
isShowBottomAndTop: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
})
|
||||
|
||||
// 增加监听
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
<template>
|
||||
<!-- 导航栏 -->
|
||||
<up-navbar :title="navBarTitle">
|
||||
<up-navbar class="nav-bar-modal" :title="navBarTitle">
|
||||
<template #left>
|
||||
<view class="u-nav-slot" @tap="onHandleBack">
|
||||
<up-icon name="arrow-left" size="20" color="#2979ff" />
|
||||
返回
|
||||
<up-icon name="arrow-left" size="18" :color="PRIMARY_COLOR" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template #right v-if="showUploadRecord">
|
||||
<text style="color: #2979ff" @tap="onHandleUploadRecord">上传记录</text>
|
||||
<template #right>
|
||||
<slot name="right">
|
||||
<!-- <up-icon name="home-fill" size="22" :color="PRIMARY_COLOR" @tap="onHandleHome" /> -->
|
||||
</slot>
|
||||
</template>
|
||||
</up-navbar>
|
||||
</template>
|
||||
|
|
@ -18,44 +19,80 @@
|
|||
const props = defineProps({
|
||||
// 标题名称
|
||||
navBarTitle: {
|
||||
type: String,
|
||||
default: () => '个人中心',
|
||||
},
|
||||
|
||||
// 是否显示上传记录的标志
|
||||
showUploadRecord: {
|
||||
type: Boolean,
|
||||
default: () => false,
|
||||
},
|
||||
|
||||
// 上传记录的url地址
|
||||
uploadRecordUrl: {
|
||||
type: String,
|
||||
default: () => '',
|
||||
},
|
||||
})
|
||||
|
||||
const PRIMARY_COLOR = '#007aff'
|
||||
|
||||
// 返回按钮
|
||||
const onHandleBack = () => {
|
||||
uni.navigateBack()
|
||||
}
|
||||
|
||||
// 查看上传记录
|
||||
const onHandleUploadRecord = () => {
|
||||
uni.navigateTo({
|
||||
url: props.uploadRecordUrl,
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.u-nav-slot {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #2979ff;
|
||||
<style scoped lang="scss">
|
||||
@import '@/uni.scss';
|
||||
|
||||
.nav-bar-modal {
|
||||
::v-deep .u-navbar__content {
|
||||
padding: 0 18px;
|
||||
min-height: 50px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
rgba($uni-color-primary, 0.08),
|
||||
rgba($uni-color-primary, 0.02)
|
||||
);
|
||||
|
||||
box-shadow: 0 10px 30px rgba(27, 72, 132, 0.06);
|
||||
backdrop-filter: blur(12px);
|
||||
transition:
|
||||
background 0.3s ease,
|
||||
box-shadow 0.3s ease;
|
||||
}
|
||||
|
||||
::v-deep .u-navbar__content__title {
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
color: #1c1d21;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
::v-deep .u-navbar__content__right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-size: 14px;
|
||||
color: #5e6170;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .u-navbar__content__title {
|
||||
font-weight: bold;
|
||||
.u-nav-slot {
|
||||
// display: inline-flex;
|
||||
// align-items: center;
|
||||
// justify-content: center;
|
||||
// width: 34px;
|
||||
// height: 34px;
|
||||
// border-radius: 50%;
|
||||
// background: rgba($uni-color-primary, 0.16);
|
||||
// box-shadow: 0 6px 16px rgba($uni-color-primary, 0.18);
|
||||
// transition:
|
||||
// transform 0.2s ease,
|
||||
// box-shadow 0.2s ease,
|
||||
// background 0.2s ease;
|
||||
}
|
||||
|
||||
.u-nav-slot:active {
|
||||
transform: translateY(1px);
|
||||
box-shadow: 0 3px 10px rgba($uni-color-primary, 0.25);
|
||||
background: rgba($uni-color-primary, 0.24);
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@
|
|||
{
|
||||
"path": "pages/attendance/record/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "打卡记录"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 我的
|
||||
|
|
@ -60,7 +61,8 @@
|
|||
{
|
||||
"path": "pages/my/edit-password/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改密码"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -68,7 +70,8 @@
|
|||
{
|
||||
"path": "pages/person-entry/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员入场"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -78,6 +81,7 @@
|
|||
"path": "pages/person-entry/child-pages/addAndEditPerson",
|
||||
"style": {
|
||||
// "navigationBarTitleText": "新增人员信息"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
|
@ -86,7 +90,8 @@
|
|||
{
|
||||
"path": "pages/person-entry/child-pages/editPerson",
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改人员信息"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -94,14 +99,16 @@
|
|||
{
|
||||
"path": "pages/person-entry/child-pages/faceRecognition",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人脸识别查找"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 上海人员多工程设置
|
||||
{
|
||||
"path": "pages/person-entry/child-pages/projectSetting",
|
||||
"style": {
|
||||
"navigationBarTitleText": "上海人员多工程设置"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -109,7 +116,8 @@
|
|||
{
|
||||
"path": "pages/person-exit/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员出场"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -117,56 +125,66 @@
|
|||
{
|
||||
"path": "pages/person-exit/data-upload/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员出场资料上传"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 人员检查
|
||||
{
|
||||
"path": "pages/person-check/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员资质查询"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 人员检查 ---- 人员资质查询
|
||||
{
|
||||
"path": "pages/person-check/aptitude-query/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员资质查询"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 考勤统计
|
||||
{
|
||||
"path": "pages/att-count/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "考勤统计"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 考勤统计 ---- 个人详情
|
||||
{
|
||||
"path": "pages/att-count/person-details/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人详情"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 人员详情
|
||||
{
|
||||
"path": "pages/person-details/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员详情"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 合同详情
|
||||
{
|
||||
"path": "pages/ContractDetails/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "合同详情"
|
||||
// "navigationBarTitleText": "合同详情"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 工资卡详情
|
||||
{
|
||||
"path": "pages/WageCardDetails/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "工资卡详情"
|
||||
// "navigationBarTitleText": "工资卡详情"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 选择工程
|
||||
|
|
@ -181,28 +199,36 @@
|
|||
{
|
||||
"path": "pages/machine-setting/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "考勤机设置"
|
||||
// "navigationBarTitleText": "考勤机设置"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 考勤机设置 ---- 绑定设置
|
||||
{
|
||||
"path": "pages/machine-setting/components/bindSetting",
|
||||
"style": {
|
||||
"navigationBarTitleText": "考勤机设置"
|
||||
// "navigationBarTitleText": "考勤机设置"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 上海多工程设置明细
|
||||
{
|
||||
"path": "pages/shProjectDetails/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "上海多工程设置明细"
|
||||
// "navigationBarTitleText": "上海多工程设置明细"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 新增入场工程
|
||||
{
|
||||
"path": "pages/shProjectDetails/child-pages/addProject",
|
||||
"style": {
|
||||
"navigationBarTitleText": "新增入场工程"
|
||||
// "navigationBarTitleText": "新增入场工程"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -210,42 +236,48 @@
|
|||
{
|
||||
"path": "pages/home/child-pages/all-project/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "总工程"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 首页二级页面 ---- 标段工程
|
||||
{
|
||||
"path": "pages/home/child-pages/lot-project/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "标段工程"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 首页二级页面 ---- 在用分包
|
||||
{
|
||||
"path": "pages/home/child-pages/useSub/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "在用分包"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 首页二级页面 ---- 在用班组
|
||||
{
|
||||
"path": "pages/home/child-pages/useTeam/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "在用班组"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 首页二级页面 ---- 在场人员
|
||||
{
|
||||
"path": "pages/home/child-pages/personInfo/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "人员列表"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 首页二级页面 ---- 出场未结算
|
||||
{
|
||||
"path": "pages/home/child-pages/entryUnsettled/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "出场未上传《离场结算确认单》"
|
||||
"navigationBarTitleText": "custom",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 合同详情 -->
|
||||
<view class="contract-details">
|
||||
<NavBarModal navBarTitle="合同详情" />
|
||||
<view class="contract-details" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view> 合同见证照片 </view>
|
||||
<view class="contract-image">
|
||||
<view
|
||||
|
|
@ -32,7 +33,8 @@
|
|||
<script setup name="ContractDetails">
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref } from 'vue'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const contractInfo = ref({})
|
||||
const contractFileTitle = {
|
||||
1: '人员手持合同照',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 工资卡详情 -->
|
||||
<view class="wage-card-details">
|
||||
<NavBarModal navBarTitle="工资卡详情" />
|
||||
<view class="wage-card-details" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view> 工资卡见证照片 </view>
|
||||
<view class="wage-card-image">
|
||||
<view
|
||||
|
|
@ -32,6 +33,8 @@
|
|||
<script setup name="WageCardDetails">
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref } from 'vue'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const wageCardInfo = ref({})
|
||||
const wageCardFileTitle = {
|
||||
1: '手持银行卡、承诺书',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 考勤统计 -->
|
||||
<view class="att-count app-container">
|
||||
<NavBarModal navBarTitle="考勤统计" />
|
||||
<view class="att-count app-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="project-name"> {{ activeProjectName || '请选择工程' }} </view>
|
||||
<view class="date-picker-box">
|
||||
<view>
|
||||
|
|
@ -95,7 +96,8 @@ import { getAttCountListAPI } from '@/services/att-count'
|
|||
|
||||
import dayjs from 'dayjs'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const commonStore = useCommonStore()
|
||||
const tableContentHeight = ref('') // 表格内容高度
|
||||
const activeProjectName = ref('') // 当前选择的工程名称
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 个人详情 -->
|
||||
<view class="attendance-record">
|
||||
<NavBarModal navBarTitle="个人详情" />
|
||||
<view class="attendance-record" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view style="width: 28%; margin-right: 12rpx">
|
||||
<up-select
|
||||
|
|
@ -51,7 +52,8 @@
|
|||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref, computed, onMounted, nextTick } from 'vue'
|
||||
import { getAttCountPersonDetailsAPI } from '@/services/att-count.js'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const inputRef = ref(null)
|
||||
const searchNameValue = ref('') // 搜索姓名
|
||||
const statusId = ref('') // 状态
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 打卡记录 -->
|
||||
<view class="attendance-record app-container">
|
||||
<NavBarModal navBarTitle="打卡记录" />
|
||||
|
||||
<view
|
||||
class="attendance-record app-container"
|
||||
:style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }"
|
||||
>
|
||||
<view class="search-content">
|
||||
<view style="width: 28%; margin-right: 12rpx">
|
||||
<up-select
|
||||
|
|
@ -21,7 +26,7 @@
|
|||
v-model="queryParams.workerName"
|
||||
>
|
||||
<template #suffix>
|
||||
<up-icon name="search" size="24" color="#909399" @tap="onSearchName" />
|
||||
<up-icon :name="SearchIcon" size="24" @tap="onSearchName" />
|
||||
</template>
|
||||
</up-input>
|
||||
</view>
|
||||
|
|
@ -31,7 +36,7 @@
|
|||
<view style="width: 12%">序号</view>
|
||||
<view style="width: 30%">姓名</view>
|
||||
<view style="width: 22%">考勤状态</view>
|
||||
<view style="width: 34%">时间</view>
|
||||
<view style="width: 36%">时间</view>
|
||||
</view>
|
||||
|
||||
<scroll-view
|
||||
|
|
@ -59,7 +64,7 @@
|
|||
text="未考勤"
|
||||
/>
|
||||
</view>
|
||||
<view style="width: 34%">{{ item.attTime }}</view>
|
||||
<view style="width: 36%">{{ item.attTime }}</view>
|
||||
</view>
|
||||
|
||||
<view class="loading-text">
|
||||
|
|
@ -80,7 +85,10 @@ import { ref, computed, onMounted, nextTick } from 'vue'
|
|||
import { getAttendanceRecordAPI } from '@/services/attendance'
|
||||
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import SearchIcon from '@/static/image/home/search.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const inputRef = ref(null)
|
||||
const selectHeight = ref(0) // 选择框高度
|
||||
const total = ref(0) // 总条数
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 总工程 -->
|
||||
<view class="machine-setting">
|
||||
<NavBarModal navBarTitle="总工程">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="machine-setting" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<up-input
|
||||
clearable
|
||||
|
|
@ -57,10 +62,12 @@ import { getHomeIndexAllProjectAPI } from '@/services/home-index.js'
|
|||
import { useCommonStore } from '@/stores'
|
||||
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
|
||||
const inputRef = ref(null) // 输入框
|
||||
const allProjectList = ref([]) // 总工程列表
|
||||
const total = ref(0) // 总条数
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
const commonStore = useCommonStore() // 工程信息
|
||||
const queryParams = ref({
|
||||
|
|
@ -112,6 +119,13 @@ const onMachineSettingItem = (item) => {
|
|||
})
|
||||
}
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getAllProjectListFun()
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 出场未结算 -->
|
||||
<view class="project-list-container">
|
||||
<NavBarModal navBarTitle="出场未上传《离场结算确认单》">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="project-list-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view class="search-wrapper">
|
||||
<up-input
|
||||
|
|
@ -79,6 +84,8 @@ import { getHomeIndexEntryUnsettledMsgAPI } from '@/services/home-index.js'
|
|||
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
const inputRef = ref(null) // 输入框
|
||||
const personList = ref([]) // 人员列表
|
||||
|
|
@ -134,6 +141,13 @@ const hasMore = computed(() => {
|
|||
onLoad(async (options) => {
|
||||
getPersonListFun()
|
||||
})
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 标段工程 -->
|
||||
<view class="project-list-container">
|
||||
<NavBarModal navBarTitle="标段工程">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="project-list-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view class="search-wrapper">
|
||||
<up-input
|
||||
|
|
@ -184,6 +189,9 @@ import {
|
|||
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
const inputRef = ref(null) // 输入框
|
||||
const projectList = ref([]) // 工程列表
|
||||
|
|
@ -474,6 +482,13 @@ onLoad(async (options) => {
|
|||
|
||||
getAllProjectListFun()
|
||||
})
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 标段工程 -->
|
||||
<view class="project-list-container">
|
||||
<NavBarModal navBarTitle="在场人员">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="project-list-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view class="search-wrapper">
|
||||
<up-input
|
||||
|
|
@ -11,7 +16,7 @@
|
|||
placeholder="输入姓名"
|
||||
>
|
||||
<template #suffix>
|
||||
<up-icon name="search" size="24" color="#909399" @tap="onSearchName" />
|
||||
<up-icon :name="searchIcon" size="24" color="#909399" @tap="onSearchName" />
|
||||
</template>
|
||||
</up-input>
|
||||
<up-icon
|
||||
|
|
@ -22,7 +27,31 @@
|
|||
@tap="onOpenFilter"
|
||||
/>
|
||||
</view>
|
||||
<view class="data-summary">已查询 {{ total }} 条数据</view>
|
||||
|
||||
<view v-if="isAdvancedOpen" class="advanced-search">
|
||||
<up-input
|
||||
clearable
|
||||
class="search-name"
|
||||
v-model="queryParams.subName"
|
||||
placeholder="输入分包名称"
|
||||
/>
|
||||
<up-input
|
||||
clearable
|
||||
class="search-name"
|
||||
v-model="queryParams.proName"
|
||||
placeholder="输入工程名称"
|
||||
/>
|
||||
</view>
|
||||
<view class="data-summary">
|
||||
<text> 已查询 {{ total }} 条数据 </text>
|
||||
|
||||
<up-icon
|
||||
size="28"
|
||||
@tap="toggleAdvanced"
|
||||
style="transform: rotate(270deg)"
|
||||
:name="isAdvancedOpen ? closeIcon : openIcon"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<scroll-view scroll-y class="project-list-content" @scrolltolower="onHandleScrollToLower">
|
||||
|
|
@ -158,13 +187,20 @@ import { getSubCompanySelectList, getPostTypeList } from '@/utils/common'
|
|||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import searchIcon from '@/static/image/home/search.png'
|
||||
import openIcon from '@/static/image/home/open.png'
|
||||
import closeIcon from '@/static/image/home/close.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
const inputRef = ref(null) // 输入框
|
||||
const projectList = ref([]) // 工程列表
|
||||
const total = ref(0) // 总条数
|
||||
const isLoading = ref(false) // 加载状态
|
||||
const showFilterPanel = ref(false) // 筛选面板显示状态
|
||||
|
||||
const subCompanyList = ref([]) // 分公司列表
|
||||
const isAdvancedOpen = ref(false) // 是否展开其他筛选
|
||||
const commonStore = useCommonStore() // 工程信息
|
||||
const commonPath = '/pages/home/child-pages/'
|
||||
|
||||
|
|
@ -172,6 +208,8 @@ const commonPath = '/pages/home/child-pages/'
|
|||
const queryParams = ref({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
subName: '', // 分包名称
|
||||
proName: '', // 工程名称
|
||||
|
||||
proId: '',
|
||||
subId: '',
|
||||
|
|
@ -340,6 +378,10 @@ const onSearchName = () => {
|
|||
getPersonListFun()
|
||||
}
|
||||
|
||||
const toggleAdvanced = () => {
|
||||
isAdvancedOpen.value = !isAdvancedOpen.value
|
||||
}
|
||||
|
||||
// 获人员列表数据
|
||||
const getPersonListFun = async (isRefresh = false) => {
|
||||
const queryParamsCopy = JSON.parse(JSON.stringify(queryParams.value))
|
||||
|
|
@ -519,6 +561,13 @@ onLoad(async (options) => {
|
|||
}
|
||||
getPersonListFun()
|
||||
})
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
@ -553,10 +602,20 @@ onLoad(async (options) => {
|
|||
}
|
||||
}
|
||||
|
||||
.advanced-search {
|
||||
margin-top: 20rpx;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.data-summary {
|
||||
margin-top: 20rpx;
|
||||
font-size: 24rpx;
|
||||
color: #4ca4fe;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,51 @@
|
|||
<template>
|
||||
<!-- 在建工程 -->
|
||||
<view class="project-list-container">
|
||||
<!-- 在用分包 -->
|
||||
<NavBarModal navBarTitle="在用分包">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="project-list-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view class="search-wrapper">
|
||||
<view class="search-header">
|
||||
<view class="search-wrapper">
|
||||
<up-input
|
||||
clearable
|
||||
ref="inputRef"
|
||||
class="search-name"
|
||||
v-model="queryParams.subName"
|
||||
placeholder="输入分包名称"
|
||||
>
|
||||
<template #suffix>
|
||||
<up-icon :name="searchIcon" size="26" @tap="onSearchName" />
|
||||
</template>
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="isAdvancedOpen" class="advanced-search">
|
||||
<up-input
|
||||
clearable
|
||||
ref="inputRef"
|
||||
class="search-name"
|
||||
v-model="queryParams.proName"
|
||||
placeholder="输入分包名称"
|
||||
>
|
||||
<template #suffix>
|
||||
<up-icon name="search" size="24" color="#909399" @tap="onSearchName" />
|
||||
</template>
|
||||
</up-input>
|
||||
placeholder="输入工程名称"
|
||||
/>
|
||||
<up-input
|
||||
clearable
|
||||
class="search-name"
|
||||
v-model="queryParams.subCompanyName"
|
||||
placeholder="输入分公司名称"
|
||||
/>
|
||||
</view>
|
||||
<view class="data-summary">
|
||||
<text> 已查询 {{ total }} 条数据 </text>
|
||||
|
||||
<up-icon
|
||||
size="28"
|
||||
@tap="toggleAdvanced"
|
||||
style="transform: rotate(270deg)"
|
||||
:name="isAdvancedOpen ? closeIcon : openIcon"
|
||||
/>
|
||||
</view>
|
||||
<view class="data-summary">已查询 {{ total }} 条数据</view>
|
||||
</view>
|
||||
|
||||
<scroll-view scroll-y class="project-list-content" @scrolltolower="onHandleScrollToLower">
|
||||
|
|
@ -74,7 +104,11 @@ import { ref, computed, onMounted } from 'vue'
|
|||
import { getHomeIndexUseSubMsgAPI } from '@/services/home-index.js'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import searchIcon from '@/static/image/home/search.png'
|
||||
import openIcon from '@/static/image/home/open.png'
|
||||
import closeIcon from '@/static/image/home/close.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const inputRef = ref(null) // 输入框
|
||||
const projectList = ref([]) // 工程列表
|
||||
const total = ref(0) // 总条数
|
||||
|
|
@ -88,9 +122,17 @@ const queryParams = ref({
|
|||
pageSize: 10,
|
||||
proId: '', //标段工程ID
|
||||
mainProId: '', // 总工程ID
|
||||
subName: '', // 分包名称
|
||||
proName: '', // 工程名称
|
||||
subCompanyName: '', // 分公司名称
|
||||
})
|
||||
|
||||
const isAdvancedOpen = ref(false) // 是否展开高级筛选
|
||||
|
||||
const toggleAdvanced = () => {
|
||||
isAdvancedOpen.value = !isAdvancedOpen.value
|
||||
}
|
||||
|
||||
// 工程信息行列表
|
||||
const rowList = ref([
|
||||
{
|
||||
|
|
@ -207,6 +249,13 @@ onLoad((options) => {
|
|||
queryParams.value.mainProId = options?.mainProId
|
||||
getUseSubProjectListFun()
|
||||
})
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
@ -226,25 +275,39 @@ onLoad((options) => {
|
|||
border-radius: 10rpx;
|
||||
border: 1px solid #e5e5e5;
|
||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.08);
|
||||
box-sizing: border-box;
|
||||
|
||||
.search-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
// .search-header {
|
||||
// display: flex;
|
||||
// align-items: center;
|
||||
|
||||
// .search-wrapper {
|
||||
// width: 85%;
|
||||
// // flex: 1;
|
||||
// }
|
||||
|
||||
// .search-actions {
|
||||
// display: flex;
|
||||
// align-items: center;
|
||||
// justify-content: center;
|
||||
// flex: 1;
|
||||
// }
|
||||
// }
|
||||
|
||||
.advanced-search {
|
||||
margin-top: 20rpx;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 20rpx;
|
||||
|
||||
.search-name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.filter-icon {
|
||||
padding: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.data-summary {
|
||||
margin-top: 20rpx;
|
||||
font-size: 24rpx;
|
||||
color: #4ca4fe;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<!-- 在用班组 -->
|
||||
<view class="project-list-container">
|
||||
<NavBarModal navBarTitle="在用班组">
|
||||
<template #right>
|
||||
<up-icon name="home-fill" size="22" color="#007aff" @tap="onHandleHome" />
|
||||
</template>
|
||||
</NavBarModal>
|
||||
<view class="project-list-container" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view class="search-wrapper">
|
||||
<up-input
|
||||
|
|
@ -75,7 +80,8 @@ import { ref, computed, onMounted } from 'vue'
|
|||
import { getHomeIndexUseTeamMsgAPI } from '@/services/home-index.js'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const inputRef = ref(null) // 输入框
|
||||
const projectList = ref([]) // 班组列表
|
||||
const total = ref(0) // 总条数
|
||||
|
|
@ -194,6 +200,13 @@ onLoad((options) => {
|
|||
queryParams.value.subId = options?.subId
|
||||
getAllProjectListFun()
|
||||
})
|
||||
|
||||
// 首页按钮
|
||||
const onHandleHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/home/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<template>
|
||||
<view>
|
||||
<!-- 绑定设置 -->
|
||||
<view class="bind-setting-container">
|
||||
<NavBarModal navBarTitle="绑定设置" />
|
||||
<view
|
||||
class="bind-setting-container"
|
||||
:style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }"
|
||||
>
|
||||
<!-- 通讯编码 -->
|
||||
<view class="form-item">
|
||||
<text class="label-text">考勤机编码</text>
|
||||
|
|
@ -77,6 +81,8 @@
|
|||
|
||||
<script setup name="bindSetting">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
import {
|
||||
getSubcontractorListAPI,
|
||||
getSubTeamContractListAPI,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 考勤机设置 -->
|
||||
<view class="machine-setting">
|
||||
<NavBarModal navBarTitle="考勤机设置" />
|
||||
<view class="machine-setting" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<up-input
|
||||
clearable
|
||||
|
|
@ -77,7 +78,8 @@ import { debounce } from 'lodash-es'
|
|||
import { ref, computed, onMounted, onUnmounted, nextTick } from 'vue'
|
||||
import { getMachineListAPI } from '@/services/machine-setting.js'
|
||||
import { useCommonStore } from '@/stores'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
const inputRef = ref(null) // 输入框
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 修改密码页面 -->
|
||||
<view class="edit-password">
|
||||
<NavBarModal navBarTitle="修改密码" />
|
||||
<view class="edit-password" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<up-steps :current="currenSteps">
|
||||
<up-steps-item title="验证账号"> </up-steps-item>
|
||||
<up-steps-item title="设置密码"></up-steps-item>
|
||||
|
|
@ -125,7 +126,9 @@
|
|||
import { nextTick, ref, onMounted } from 'vue'
|
||||
import { useMemberStore } from '@/stores'
|
||||
import { checkPasswordApi, editPasswordApi } from '@/services/my.js'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const memberStore = useMemberStore() // 用户信息
|
||||
const showPassword_1 = ref(false) // 密码是否显示
|
||||
const showPassword_2 = ref(false) // 密码是否显示
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<template>
|
||||
<!-- 人员资质查询 -->
|
||||
<view class="aptitude-query app-container">
|
||||
<NavBarModal navBarTitle="人员资质查询" />
|
||||
<view
|
||||
class="aptitude-query app-container"
|
||||
:style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }"
|
||||
>
|
||||
<!-- <view class="taps-container">
|
||||
<view :class="{ active: activeName === '姓名' }" @tap="activeName = '姓名'">
|
||||
姓名
|
||||
|
|
@ -70,7 +74,8 @@ import { getAttendanceRecordAPI } from '@/services/attendance.js'
|
|||
import { useCommonStore } from '@/stores'
|
||||
import { debounce } from 'lodash-es'
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const personList = ref([])
|
||||
const total = ref(0)
|
||||
const commonStore = useCommonStore() // 工程信息
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 人员资质查询 -->
|
||||
<view class="person-check">
|
||||
<NavBarModal navBarTitle="人员资质查询" />
|
||||
<view class="person-check" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="person-check-item">
|
||||
<view @tap="onFaceRecognition">
|
||||
<up-image width="60px" height="60px" :src="FaceIcon" />
|
||||
|
|
@ -28,7 +29,8 @@
|
|||
import { ref } from 'vue'
|
||||
import FaceIcon from '@/static/image/face.png'
|
||||
import CheckIcon from '@/static/image/person-qua.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const showLoading = ref(false) // 是否显示加载中
|
||||
|
||||
const onFaceRecognition = () => {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 人员详情 -->
|
||||
<view class="person-details">
|
||||
<NavBarModal navBarTitle="人员详情" />
|
||||
<view class="person-details" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<TitleTipModal TitleTip="基本信息" />
|
||||
<view class="person-info">
|
||||
<view class="person-info-left">
|
||||
|
|
@ -141,7 +142,8 @@ 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'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const statusName = ref('黄灯')
|
||||
const redLightShow = ref(false)
|
||||
const todayAttTime = ref(null)
|
||||
|
|
@ -308,7 +310,7 @@ onLoad((options) => {
|
|||
.status-light {
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
top: 140rpx;
|
||||
top: 220rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ const navBarTitle = ref('新增人员信息')
|
|||
const currentStep = ref(0) // 当前步骤
|
||||
const nextBtnRef = ref(null) // 下一步按钮ref
|
||||
const nextBtnHeight = ref(0) // 下一步按钮高度
|
||||
const paddingTop = ref(46) // 顶部padding
|
||||
const paddingTop = ref(54) // 顶部padding
|
||||
const personIdCardFormRef = ref(null) // 身份证信息表单ref
|
||||
const personKeyInfoFormRef = ref(null) // 关键信息表单ref
|
||||
const personContractFormRef = ref(null) // 合同见证表单ref
|
||||
|
|
@ -151,29 +151,36 @@ const contractImageList = ref([
|
|||
name: 'contract',
|
||||
title: '人员手持合同照',
|
||||
},
|
||||
// {
|
||||
// type: 2,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '工作内容页',
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '薪酬约定页',
|
||||
// },
|
||||
// {
|
||||
// type: 4,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '本人签名页',
|
||||
// },
|
||||
// {
|
||||
// type: 5,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '其他照片',
|
||||
// },
|
||||
|
||||
{
|
||||
type: 2,
|
||||
type: 6,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '工作内容页',
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '薪酬约定页',
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '本人签名页',
|
||||
},
|
||||
{
|
||||
type: 5,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '其他照片',
|
||||
title: '附件',
|
||||
},
|
||||
]) // 合同图片
|
||||
const contractStatus = ref('') // 合同状态
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 修改人员信息 -->
|
||||
<view class="aptitude-query">
|
||||
<NavBarModal navBarTitle="修改人员信息" />
|
||||
<view class="aptitude-query" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-container">
|
||||
<up-search
|
||||
bgColor="#fff"
|
||||
|
|
@ -65,7 +66,8 @@ import { getPersonListAPI } from '@/services/person-entry'
|
|||
import { useCommonStore } from '@/stores'
|
||||
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const commonStore = useCommonStore() // 工程信息
|
||||
const personList = ref([]) // 人员列表
|
||||
const total = ref(0) // 总条数
|
||||
|
|
|
|||
|
|
@ -1,55 +1,54 @@
|
|||
<template>
|
||||
<!-- 上海人员多工程设置 -->
|
||||
<view>
|
||||
<view
|
||||
class="project-setting-container"
|
||||
:style="{
|
||||
paddingTop: safeAreaInsets?.top + paddingTop + 'px',
|
||||
}"
|
||||
>
|
||||
<!-- 身份证号码输入 -->
|
||||
<view class="input-section">
|
||||
<view class="input-label">身份证号码:</view>
|
||||
<up-input
|
||||
v-model="idCardNumber"
|
||||
placeholder="输入身份证号码"
|
||||
:clearable="true"
|
||||
:maxlength="18"
|
||||
class="id-card-input"
|
||||
/>
|
||||
</view>
|
||||
|
||||
<!-- 设置说明 -->
|
||||
<view class="instruction-section">
|
||||
<view class="instruction-title">上海人员多工程设置说明:</view>
|
||||
<view class="instruction-list">
|
||||
<view class="instruction-item"> 1.请确保该人员已经入场一个上海工程 </view>
|
||||
<view class="instruction-item">
|
||||
2.每个工程,人员只能存在一条在场数据,即一个工程只能入场一次
|
||||
</view>
|
||||
<view class="instruction-item">
|
||||
3.如需出场,请至
|
||||
<text class="instruction-link" @tap="onHandlePersonExit">【人员出场】</text>
|
||||
模块进行单个工程出场操作
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 下一步按钮 -->
|
||||
<view class="next-btn">
|
||||
<up-button type="primary" text="下一步" @tap="onHandleNext" />
|
||||
</view>
|
||||
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="正在处理,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
<NavBarModal navBarTitle="上海人员多工程设置" />
|
||||
<view
|
||||
class="project-setting-container"
|
||||
:style="{
|
||||
paddingTop: safeAreaInsets?.top + paddingTop + 'px',
|
||||
}"
|
||||
>
|
||||
<!-- 身份证号码输入 -->
|
||||
<view class="input-section">
|
||||
<view class="input-label">身份证号码:</view>
|
||||
<up-input
|
||||
v-model="idCardNumber"
|
||||
placeholder="输入身份证号码"
|
||||
:clearable="true"
|
||||
:maxlength="18"
|
||||
class="id-card-input"
|
||||
/>
|
||||
</view>
|
||||
|
||||
<!-- 设置说明 -->
|
||||
<view class="instruction-section">
|
||||
<view class="instruction-title">上海人员多工程设置说明:</view>
|
||||
<view class="instruction-list">
|
||||
<view class="instruction-item"> 1.请确保该人员已经入场一个上海工程 </view>
|
||||
<view class="instruction-item">
|
||||
2.每个工程,人员只能存在一条在场数据,即一个工程只能入场一次
|
||||
</view>
|
||||
<view class="instruction-item">
|
||||
3.如需出场,请至
|
||||
<text class="instruction-link" @tap="onHandlePersonExit">【人员出场】</text>
|
||||
模块进行单个工程出场操作
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 下一步按钮 -->
|
||||
<view class="next-btn">
|
||||
<up-button type="primary" text="下一步" @tap="onHandleNext" />
|
||||
</view>
|
||||
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="正在处理,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -60,7 +59,7 @@ import { getShProjectSettingByIdNumberAPI } from '@/services/shProjectSetting'
|
|||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const navBarTitle = ref('上海人员多工程设置')
|
||||
const paddingTop = ref(10) // 顶部padding
|
||||
const paddingTop = ref(54) // 顶部padding
|
||||
const idCardNumber = ref('') // 身份证号码
|
||||
const showLoading = ref(false) // 是否显示加载中
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,32 @@
|
|||
<template>
|
||||
<!-- 人员入场 -->
|
||||
<view
|
||||
:key="item.name"
|
||||
class="person-handle"
|
||||
v-for="item in handleList"
|
||||
@tap="handleTapPersonEntry(item)"
|
||||
:style="{
|
||||
background: `linear-gradient(to bottom, ${item.bgc_color_1}, ${item.bgc_color_2})`,
|
||||
}"
|
||||
>
|
||||
<image :src="item.icon" mode="widthFix" class="icon-img" />
|
||||
<view>
|
||||
<view>{{ item.title }}</view>
|
||||
</view>
|
||||
<NavBarModal navBarTitle="人员入场" />
|
||||
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="正在识别中,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
/>
|
||||
<view :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view
|
||||
:key="item.name"
|
||||
class="person-handle"
|
||||
v-for="item in handleList"
|
||||
@tap="handleTapPersonEntry(item)"
|
||||
:style="{
|
||||
background: `linear-gradient(to bottom, ${item.bgc_color_1}, ${item.bgc_color_2})`,
|
||||
}"
|
||||
>
|
||||
<image :src="item.icon" mode="widthFix" class="icon-img" />
|
||||
<view>
|
||||
<view>{{ item.title }}</view>
|
||||
</view>
|
||||
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="正在识别中,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -31,10 +35,11 @@ import AddIcon from '@/static/image/person/add.png'
|
|||
import EditIcon from '@/static/image/person/edit.png'
|
||||
import FaceIcon from '@/static/image/person/face.png'
|
||||
import ProSettingIcon from '@/static/image/person/pro_setting.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
import { ref } from 'vue'
|
||||
|
||||
const showLoading = ref(false) // 是否显示加载中
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const handleList = [
|
||||
{
|
||||
name: 'add',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 人员出场资料上传 -->
|
||||
<view class="data-upload">
|
||||
<NavBarModal navBarTitle="人员出场资料上传" />
|
||||
<view class="data-upload" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="exit-tip">
|
||||
<view class="red-text exit-tip-item">1. 出场前请确保人员合同及工资卡已上传完整</view>
|
||||
<view class="red-text exit-tip-item">2. 人员出场,合同自动失效,不再考勤打卡</view>
|
||||
|
|
@ -81,7 +82,8 @@ import { useCommonStore } from '@/stores'
|
|||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { editPersonEntryExitApi } from '@/services/person-entry.js'
|
||||
import { decryptWithSM4, encryptWithSM4, hashWithSM3AndSalt } from '@/utils/sm.js'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const commonStore = useCommonStore()
|
||||
const exitParams = ref({}) // 出场参数
|
||||
const fileList = ref([]) // 离场工资结算确认单
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 人员出场 -->
|
||||
<view class="person-exit">
|
||||
<NavBarModal navBarTitle="人员出场" />
|
||||
<view class="person-exit" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view class="search-content">
|
||||
<view style="width: 28%; margin-right: 12rpx">
|
||||
<up-select
|
||||
|
|
@ -105,7 +106,9 @@ import { getPersonExitListAPI } from '@/services/person-exit.js'
|
|||
import { useCommonStore } from '@/stores'
|
||||
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const inputRef = ref(null)
|
||||
const selectHeight = ref(0) // 选择框高度
|
||||
const personExitList = ref([]) // 出场人员列表
|
||||
|
|
|
|||
|
|
@ -1,154 +1,155 @@
|
|||
<template>
|
||||
<!-- 添加入场数据 -->
|
||||
<view>
|
||||
<view
|
||||
class="add-project-container"
|
||||
:style="{
|
||||
paddingBottom: nextBtnHeight + 'px',
|
||||
paddingTop: safeAreaInsets?.top + paddingTop + 'px',
|
||||
}"
|
||||
>
|
||||
<!-- 提示信息 -->
|
||||
<view class="instruction-section">
|
||||
<text class="instruction-text">
|
||||
提交后,系统自动生成一条入场数据,该人员基础信息、合同信息、工资卡信息共用
|
||||
</text>
|
||||
</view>
|
||||
|
||||
<!-- 表单区域 -->
|
||||
<view class="form-container">
|
||||
<up-form
|
||||
labelWidth="120"
|
||||
labelPosition="left"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
ref="formRef"
|
||||
>
|
||||
<!-- 姓名 -->
|
||||
<up-form-item label="姓名" prop="name" :borderBottom="true">
|
||||
<up-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入姓名"
|
||||
:clearable="false"
|
||||
:disabled="true"
|
||||
/>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 身份证号 -->
|
||||
<up-form-item label="身份证号" prop="idNumber" :borderBottom="true">
|
||||
<up-input
|
||||
v-model="formData.idNumber"
|
||||
placeholder="请输入身份证号"
|
||||
:clearable="false"
|
||||
:disabled="true"
|
||||
/>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 工种 -->
|
||||
<up-form-item label="工种" prop="postName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(1)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text
|
||||
:class="{ 'color-text': formData.postName }"
|
||||
class="time-text"
|
||||
>
|
||||
{{ formData.postName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场工程 -->
|
||||
<up-form-item label="入场工程" prop="proName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(2)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.proName }" class="time-text">
|
||||
{{ formData.proName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场分包 -->
|
||||
<up-form-item label="入场分包" prop="subName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(3)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.subName }" class="time-text">
|
||||
{{ formData.subName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场班组 -->
|
||||
<up-form-item label="入场班组" prop="teamName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(4)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text
|
||||
:class="{ 'color-text': formData.teamName }"
|
||||
class="time-text"
|
||||
>
|
||||
{{ formData.teamName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
</up-form>
|
||||
</view>
|
||||
|
||||
<!-- 底部按钮 -->
|
||||
<view class="next-btn" ref="nextBtnRef">
|
||||
<up-button
|
||||
color="#909399"
|
||||
text="取消"
|
||||
@tap="onHandleCancel"
|
||||
style="margin-right: 10px"
|
||||
/>
|
||||
<up-button
|
||||
type="primary"
|
||||
text="提交"
|
||||
@tap="onHandleSubmit"
|
||||
style="margin-right: 10px"
|
||||
/>
|
||||
<up-button color="#67c23a" text="提交并继续添加" @tap="onHandleSubmitAndContinue" />
|
||||
</view>
|
||||
|
||||
<!-- 加载中 -->
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="数据正在提交,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
/>
|
||||
<NavBarModal navBarTitle="新增入场工程" />
|
||||
<view
|
||||
class="add-project-container"
|
||||
:style="{
|
||||
paddingBottom: nextBtnHeight + 'px',
|
||||
paddingTop: safeAreaInsets?.top + 54 + 'px',
|
||||
}"
|
||||
>
|
||||
<!-- 提示信息 -->
|
||||
<view class="instruction-section">
|
||||
<text class="instruction-text">
|
||||
提交后,系统自动生成一条入场数据,该人员基础信息、合同信息、工资卡信息共用
|
||||
</text>
|
||||
</view>
|
||||
|
||||
<!-- 表单区域 -->
|
||||
<scroll-view scroll-y class="form-container">
|
||||
<TitleTipModal TitleTip="基本信息" style="margin-top: 20rpx" />
|
||||
<up-form
|
||||
labelWidth="120"
|
||||
labelPosition="left"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
ref="formRef"
|
||||
>
|
||||
<!-- 姓名 -->
|
||||
<up-form-item label="姓名" prop="name" :borderBottom="true">
|
||||
<up-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入姓名"
|
||||
:clearable="false"
|
||||
:disabled="true"
|
||||
/>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 身份证号 -->
|
||||
<up-form-item label="身份证号" prop="idNumber" :borderBottom="true">
|
||||
<up-input
|
||||
v-model="formData.idNumber"
|
||||
placeholder="请输入身份证号"
|
||||
:clearable="false"
|
||||
:disabled="true"
|
||||
/>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 工种 -->
|
||||
<up-form-item label="工种" prop="postName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(1)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.postName }" class="time-text">
|
||||
{{ formData.postName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场工程 -->
|
||||
<up-form-item label="入场工程" prop="proName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(2)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.proName }" class="time-text">
|
||||
{{ formData.proName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场分包 -->
|
||||
<up-form-item label="入场分包" prop="subName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(3)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.subName }" class="time-text">
|
||||
{{ formData.subName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
|
||||
<!-- 入场班组 -->
|
||||
<up-form-item label="入场班组" prop="teamName" :borderBottom="true">
|
||||
<up-cell
|
||||
isLink
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
@tap="onOpenPicker(4)"
|
||||
:border="false"
|
||||
>
|
||||
<template #icon>
|
||||
<text :class="{ 'color-text': formData.teamName }" class="time-text">
|
||||
{{ formData.teamName || '选择选项' }}
|
||||
</text>
|
||||
</template>
|
||||
</up-cell>
|
||||
</up-form-item>
|
||||
</up-form>
|
||||
<TitleTipModal TitleTip="合同见证" style="margin-top: 20rpx" />
|
||||
<ContractForm
|
||||
:isShowBottomAndTop="false"
|
||||
ref="personContractFormRef"
|
||||
:contractInfo="contractInfo"
|
||||
:contractImageList="contractImageList"
|
||||
/>
|
||||
</scroll-view>
|
||||
|
||||
<!-- 底部按钮 -->
|
||||
<view class="next-btn" ref="nextBtnRef">
|
||||
<up-button
|
||||
color="#909399"
|
||||
text="取消"
|
||||
@tap="onHandleCancel"
|
||||
style="margin-right: 10px"
|
||||
/>
|
||||
<up-button
|
||||
type="primary"
|
||||
text="提交"
|
||||
@tap="onHandleSubmit"
|
||||
style="margin-right: 10px"
|
||||
/>
|
||||
<up-button color="#67c23a" text="提交并继续添加" @tap="onHandleSubmitAndContinue" />
|
||||
</view>
|
||||
|
||||
<!-- 加载中 -->
|
||||
<up-loading-icon
|
||||
:vertical="true"
|
||||
duration="2000"
|
||||
color="#3c9cff"
|
||||
:show="showLoading"
|
||||
textColor="#3c9cff"
|
||||
text="数据正在提交,请稍后..."
|
||||
style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"
|
||||
/>
|
||||
|
||||
<!-- 工种选择器 -->
|
||||
<up-picker
|
||||
:show="postPickerShow"
|
||||
|
|
@ -195,6 +196,8 @@
|
|||
import { ref, onMounted, nextTick } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
import ContractForm from '@/components/ContractForm/index.vue'
|
||||
import TitleTipModal from '@/components/TitleTipModal/index'
|
||||
import {
|
||||
getPostTypeSelectListAPI,
|
||||
getSubSelectListByConditionAPI,
|
||||
|
|
@ -211,6 +214,7 @@ const nextBtnHeight = ref(0) // 下一步按钮高度
|
|||
const formRef = ref(null) // 表单ref
|
||||
const showLoading = ref(false) // 是否显示加载中
|
||||
const workerId = ref('') // 人员ID
|
||||
const personContractFormRef = ref(null) // 合同见证表单ref
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
|
|
@ -226,6 +230,39 @@ const formData = ref({
|
|||
postId: '',
|
||||
id: '',
|
||||
})
|
||||
const contractInfo = ref({}) // 合同信息
|
||||
const contractImageList = ref([
|
||||
{
|
||||
type: 1,
|
||||
fileList: [],
|
||||
name: 'contract',
|
||||
title: '人员手持合同照',
|
||||
},
|
||||
// {
|
||||
// type: 2,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '工作内容页',
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '薪酬约定页',
|
||||
// },
|
||||
// {
|
||||
// type: 4,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '本人签名页',
|
||||
// },
|
||||
// {
|
||||
// type: 5,
|
||||
// fileList: [],
|
||||
// name: 'contract',
|
||||
// title: '其他照片',
|
||||
// },
|
||||
]) // 合同图片
|
||||
|
||||
// 表单验证规则
|
||||
const formRules = ref({
|
||||
|
|
@ -387,7 +424,13 @@ const submitData = async (isContinue) => {
|
|||
if (!valid) {
|
||||
return
|
||||
}
|
||||
const res = await personContractFormRef.value.validateContractForm()
|
||||
if (res.isValid) {
|
||||
console.log(res, 'res校验通过')
|
||||
return
|
||||
}
|
||||
|
||||
console.log(res, 'res校验失败')
|
||||
showLoading.value = true
|
||||
// TODO: 这里需要调用实际的API提交数据
|
||||
const result = await addShProjectEntryAPI(formData.value)
|
||||
|
|
@ -419,8 +462,9 @@ const submitData = async (isContinue) => {
|
|||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error, 'error---')
|
||||
showLoading.value = false
|
||||
uni.$u.toast('提交失败,请重试')
|
||||
uni.$u.toast(error?.msg || '提交失败,请完善基本信息!')
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -544,6 +588,8 @@ onLoad((options) => {
|
|||
.add-project-container {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
|
@ -552,7 +598,6 @@ onLoad((options) => {
|
|||
padding: 20rpx 30rpx;
|
||||
background-color: #fff2f0;
|
||||
border-left: 6rpx solid #ff4d4f;
|
||||
margin: 0 30rpx 0;
|
||||
|
||||
.instruction-text {
|
||||
color: #ff4d4f;
|
||||
|
|
@ -563,8 +608,9 @@ onLoad((options) => {
|
|||
|
||||
.form-container {
|
||||
flex: 1;
|
||||
margin-top: 20rpx;
|
||||
// margin-top: 20rpx;
|
||||
overflow-y: auto;
|
||||
// background-color: skyblue;
|
||||
}
|
||||
|
||||
.next-btn {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<!-- 上海多工程设置明细 -->
|
||||
<view class="person-exit">
|
||||
<NavBarModal navBarTitle="上海多工程设置" />
|
||||
<view class="person-exit" :style="{ paddingTop: safeAreaInsets?.top + 54 + 'px' }">
|
||||
<view style="margin: 20rpx 0">
|
||||
<up-button type="primary" text="新增入场工程" @tap="onHandleAddProject" />
|
||||
</view>
|
||||
|
|
@ -58,7 +59,8 @@ import { useCommonStore } from '@/stores'
|
|||
|
||||
import Empty from '@/static/image/Empty.png'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
|
||||
import NavBarModal from '@/components/NavBarModal/index.vue'
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
const shProjectList = ref([]) // 出场人员列表
|
||||
const total = ref(0) // 总条数
|
||||
const commonStore = useCommonStore() // 工程信息
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Loading…
Reference in New Issue