优化以及分包统计页面接口调试
This commit is contained in:
parent
0f3646ed40
commit
5d4eede169
|
|
@ -3,7 +3,16 @@ import request from '@/utils/request'
|
|||
// 综合查询 获取分包统计列表
|
||||
export const getSubCountListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/workerLight/xxx',
|
||||
url: '/bmw/subStatistics/getSubStatisticsTable',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 获取分包统计详情卡片统计
|
||||
export const getSubCountDetailCardStatisticsAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/subStatistics/getSubDataOverview',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -141,6 +141,40 @@
|
|||
<el-form-item
|
||||
prop="businessLicense"
|
||||
label="农民工工资已支付完成承诺书"
|
||||
v-if="addOrEditForm.isShanghai === 0"
|
||||
>
|
||||
<!-- <el-tag
|
||||
type="primary"
|
||||
:key="item.id"
|
||||
v-for="item in addOrEditForm.fileList_2"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-tag> -->
|
||||
|
||||
<div
|
||||
:key="item.id"
|
||||
class="files-content"
|
||||
v-for="item in addOrEditForm.fileList_2"
|
||||
>
|
||||
<el-tag
|
||||
@click="onHandlePreviewFile(item)"
|
||||
style="cursor: pointer"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<span
|
||||
class="cursor-blue"
|
||||
@click="onHandleDownloadFile(item)"
|
||||
>
|
||||
下载
|
||||
</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="农民工工资已支付完成承诺书"
|
||||
v-if="addOrEditForm.isShanghai == 1"
|
||||
>
|
||||
<!-- <el-tag
|
||||
type="primary"
|
||||
|
|
@ -329,6 +363,7 @@ export default {
|
|||
subContractName,
|
||||
subContractCode,
|
||||
contractFile,
|
||||
isShanghai,
|
||||
} = res
|
||||
|
||||
Object.assign(this.addOrEditForm, {
|
||||
|
|
@ -339,6 +374,7 @@ export default {
|
|||
subExitTime,
|
||||
subContractName,
|
||||
subContractCode,
|
||||
isShanghai,
|
||||
})
|
||||
|
||||
if (contractFile && contractFile.length > 0) {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@
|
|||
placeholder="请选择工程名称"
|
||||
v-model="addOrEditForm.proId"
|
||||
:disabled="queryDetailId !== ''"
|
||||
@change="handleProIdChange"
|
||||
>
|
||||
<el-option
|
||||
:key="item.value"
|
||||
|
|
@ -79,31 +78,9 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="法定代表人授权书"
|
||||
v-show="isShanghai === 0"
|
||||
>
|
||||
<UploadFileFormData
|
||||
:limit="3"
|
||||
uploadTip=" "
|
||||
:file-size="20"
|
||||
:multiple="true"
|
||||
:file-type="[
|
||||
'jpg',
|
||||
'png',
|
||||
'jpeg',
|
||||
'pdf',
|
||||
'doc',
|
||||
'docx',
|
||||
]"
|
||||
:file-list.sync="addOrEditForm.businessLicense"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="法定代表人授权书"
|
||||
prop="businessLicense"
|
||||
v-show="isShanghai === 1"
|
||||
>
|
||||
<UploadFileFormData
|
||||
:limit="3"
|
||||
|
|
|
|||
|
|
@ -85,8 +85,30 @@
|
|||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="农民工工资已支付完成承诺书"
|
||||
prop="businessLicense"
|
||||
label="农民工工资已支付完成承诺书"
|
||||
v-if="exitFormData.isShanghai == 0"
|
||||
>
|
||||
<UploadFileFormData
|
||||
:limit="3"
|
||||
:file-size="20"
|
||||
:multiple="true"
|
||||
uploadTip=" "
|
||||
:file-type="[
|
||||
'jpg',
|
||||
'png',
|
||||
'jpeg',
|
||||
'pdf',
|
||||
'doc',
|
||||
'docx',
|
||||
]"
|
||||
:file-list.sync="addOrEditForm.businessLicense"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="农民工工资已支付完成承诺书"
|
||||
v-if="exitFormData.isShanghai == 1"
|
||||
>
|
||||
<UploadFileFormData
|
||||
:limit="3"
|
||||
|
|
|
|||
|
|
@ -236,11 +236,19 @@ export default {
|
|||
|
||||
// 出场
|
||||
onHandleExit(data) {
|
||||
const { id, subId, proId, subContractCode, subContractName } = data
|
||||
const {
|
||||
id,
|
||||
subId,
|
||||
proId,
|
||||
isShanghai,
|
||||
subContractCode,
|
||||
subContractName,
|
||||
} = data
|
||||
this.exitFormData = {
|
||||
id,
|
||||
subId,
|
||||
proId,
|
||||
isShanghai,
|
||||
subContractCode,
|
||||
subContractName,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@
|
|||
<el-row v-if="formType === 2 || formType === 3">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
v-show="isShanghai === 0"
|
||||
v-if="editFormData.isShanghai === 1"
|
||||
label="农民工工资已支付完成承诺书"
|
||||
>
|
||||
<UploadFileFormData
|
||||
|
|
@ -156,7 +156,7 @@
|
|||
|
||||
<el-form-item
|
||||
prop="businessLicense"
|
||||
v-show="isShanghai === 1"
|
||||
v-if="editFormData.isShanghai === 0"
|
||||
label="农民工工资已支付完成承诺书"
|
||||
>
|
||||
<UploadFileFormData
|
||||
|
|
@ -410,7 +410,7 @@ export default {
|
|||
(item) => item.value === val,
|
||||
)
|
||||
this.addOrEditForm.proName = proItem.label
|
||||
this.isShanghai = proItem.isShanghai
|
||||
// this.isShanghai = proItem.isShanghai
|
||||
// this.addOrEditForm.proName = this.lotProjectSelectList.find(
|
||||
// (item) => item.value === val,
|
||||
// ).label
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@ export default {
|
|||
teamEinTime,
|
||||
teamExitTime,
|
||||
contractFile,
|
||||
isShanghai,
|
||||
} = data
|
||||
this.editFormData = {
|
||||
id,
|
||||
|
|
@ -178,6 +179,7 @@ export default {
|
|||
teamEinTime,
|
||||
teamExitTime,
|
||||
contractFile,
|
||||
isShanghai,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -209,6 +209,8 @@ export default {
|
|||
id: item.id,
|
||||
proId: item.proId,
|
||||
workerId: item.workerId,
|
||||
subId: item.subId,
|
||||
teamId: item.teamId,
|
||||
}
|
||||
})
|
||||
const res = await batchExitPersonAPI(params)
|
||||
|
|
@ -233,6 +235,8 @@ export default {
|
|||
idNumber,
|
||||
workerId,
|
||||
teamName,
|
||||
subId,
|
||||
teamId,
|
||||
} = data
|
||||
|
||||
this.exitFormData = {
|
||||
|
|
@ -244,6 +248,8 @@ export default {
|
|||
teamName,
|
||||
idNumber,
|
||||
workerId,
|
||||
subId,
|
||||
teamId,
|
||||
}
|
||||
this.dialogConfig.outerWidth = ''
|
||||
this.dialogConfig.minHeight = ''
|
||||
|
|
|
|||
|
|
@ -128,12 +128,14 @@ export default {
|
|||
onHandleConfirmAddOrEditFun() {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
if (this.isExitUpload === 1) {
|
||||
const { id, workerId, fileList, proId } =
|
||||
const { id, workerId, fileList, proId, subId, teamId } =
|
||||
this.personExitFormData
|
||||
const params = {
|
||||
id,
|
||||
proId,
|
||||
workerId,
|
||||
subId,
|
||||
teamId,
|
||||
exitWay: '后端',
|
||||
}
|
||||
const fileMsg = []
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@ export const formLabel = [
|
|||
isShow: false, // 是否展示label
|
||||
f_type: 'ipt',
|
||||
f_label: '分包名称',
|
||||
f_model: 'proName',
|
||||
f_model: 'subName',
|
||||
},
|
||||
]
|
||||
|
||||
export const columnsList = [
|
||||
{ t_props: 'mainProName', t_label: '分包名称' },
|
||||
{ t_label: '工程数量', t_props: 'volLevel' },
|
||||
{ t_props: 'subName', t_label: '分包名称' },
|
||||
{ t_label: '工程数量', t_props: 'proNum' },
|
||||
|
||||
{
|
||||
t_label: '班组数量',
|
||||
t_props: 'volLevel',
|
||||
t_props: 'teamNum',
|
||||
},
|
||||
{ t_slot: 'proStatus', t_label: '在场人数' },
|
||||
{ t_props: 'einNum', t_label: '在场人数' },
|
||||
]
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@
|
|||
<div class="card-content">
|
||||
<!-- 数字 -->
|
||||
<div class="card-number">
|
||||
{{ formatNumber(card.value) }}
|
||||
<!-- {{ formatNumber(card.value) }} -->
|
||||
{{ card.value }}
|
||||
</div>
|
||||
|
||||
<!-- 标签 -->
|
||||
|
|
@ -65,21 +66,16 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { getProjectCountListAPI } from '@/api/synthesize-query/project-count'
|
||||
import { getSubCountDetailCardStatisticsAPI } from '@/api/synthesize-query/sub-count'
|
||||
|
||||
export default {
|
||||
name: 'CardCount',
|
||||
props: {
|
||||
// 项目ID,用于获取特定项目的统计数据
|
||||
projectId: {
|
||||
subId: {
|
||||
type: [String, Number],
|
||||
default: null,
|
||||
},
|
||||
// 是否自动加载数据
|
||||
autoLoad: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -88,68 +84,62 @@ export default {
|
|||
{
|
||||
type: 'subcontractor',
|
||||
label: '标段工程/分包合同',
|
||||
value: 0,
|
||||
|
||||
color: '#EF4444',
|
||||
dotColor: '#EF4444',
|
||||
dataKey: 'subcontractorCount',
|
||||
dataKey: 'proNum',
|
||||
},
|
||||
{
|
||||
type: 'team',
|
||||
label: '施工班组',
|
||||
value: 0,
|
||||
|
||||
color: '#3B82F6',
|
||||
dotColor: '#3B82F6',
|
||||
dataKey: 'teamCount',
|
||||
dataKey: 'teamNum',
|
||||
},
|
||||
{
|
||||
type: 'entry',
|
||||
label: '累计入场',
|
||||
value: 0,
|
||||
|
||||
color: '#8B5CF6',
|
||||
dotColor: '#8B5CF6',
|
||||
dataKey: 'totalEntryCount',
|
||||
dataKey: 'einNumHis',
|
||||
},
|
||||
|
||||
{
|
||||
type: 'attendance',
|
||||
label: '累计考勤',
|
||||
value: 0,
|
||||
|
||||
color: '#06B6D4',
|
||||
dotColor: '#06B6D4',
|
||||
dataKey: 'totalAttendanceCount',
|
||||
dataKey: 'attNumHis',
|
||||
},
|
||||
{
|
||||
type: 'wage',
|
||||
label: '累计工资',
|
||||
value: 0,
|
||||
|
||||
color: '#EC4899',
|
||||
dotColor: '#EC4899', // 注意:图片中这个点的颜色是绿色
|
||||
dataKey: 'totalWageCount',
|
||||
dataKey: 'salaryMoneyNum',
|
||||
},
|
||||
{
|
||||
type: 'machine',
|
||||
label: '考勤机',
|
||||
value: 0,
|
||||
|
||||
color: '#10B981',
|
||||
dotColor: '#10B981',
|
||||
dataKey: 'attendanceMachineCount',
|
||||
dataKey: 'salaryMoneyNum',
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.autoLoad) {
|
||||
this.loadData()
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
projectId: {
|
||||
subId: {
|
||||
handler() {
|
||||
if (this.autoLoad) {
|
||||
this.loadData()
|
||||
}
|
||||
this.loadData()
|
||||
},
|
||||
immediate: false,
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -162,29 +152,34 @@ export default {
|
|||
this.loading = true
|
||||
try {
|
||||
// 这里应该调用实际的API接口
|
||||
// const response = await getProjectCountListAPI({
|
||||
// projectId: this.projectId
|
||||
// })
|
||||
const res = await getSubCountDetailCardStatisticsAPI({
|
||||
subId: this.subId,
|
||||
})
|
||||
|
||||
// 模拟API响应数据
|
||||
const {
|
||||
proNum,
|
||||
teamNum,
|
||||
einNumHis,
|
||||
attNumHis,
|
||||
salaryMoneyNum,
|
||||
} = res.data
|
||||
|
||||
console.log(res, '卡片统计')
|
||||
|
||||
// // 模拟API响应数据
|
||||
const mockData = {
|
||||
subcontractorCount: 5,
|
||||
teamCount: 12,
|
||||
totalEntryCount: 1200,
|
||||
currentOnsiteCount: 200,
|
||||
totalAttendanceCount: 9600,
|
||||
totalWageCount: 745635,
|
||||
attendanceMachineCount: 14,
|
||||
proNum,
|
||||
teamNum,
|
||||
einNumHis,
|
||||
attNumHis,
|
||||
salaryMoneyNum,
|
||||
}
|
||||
|
||||
// 更新卡片数据
|
||||
this.updateCardData(mockData)
|
||||
|
||||
this.$emit('data-loaded', mockData)
|
||||
// this.$emit('data-loaded', mockData)
|
||||
} catch (error) {
|
||||
console.error('加载统计数据失败:', error)
|
||||
this.$message.error('加载统计数据失败')
|
||||
this.$emit('data-error', error)
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<!-- 项目信息区域 -->
|
||||
<div class="project-details">
|
||||
<div class="project-title">
|
||||
{{ projectInfo.projectName }}
|
||||
{{ subName }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -30,12 +30,14 @@
|
|||
<span class="attribute-label">{{ item.label }}</span>
|
||||
<span
|
||||
class="attribute-value"
|
||||
:class="{
|
||||
'status-active':
|
||||
item.valueKey === 'currentStatus',
|
||||
}"
|
||||
style="color: #3b82f6"
|
||||
v-if="item.label === '营业执照/电子公章等'"
|
||||
>
|
||||
{{ projectInfo[item.valueKey] }}
|
||||
{{ item.value.length }}
|
||||
</span>
|
||||
|
||||
<span v-else class="attribute-value">
|
||||
{{ item.value || '-' }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -47,40 +49,46 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'HeaderInfo',
|
||||
props: {
|
||||
subName: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
legalPerson: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
legalPersonPhone: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
subAddress: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
contractFile: {
|
||||
type: Array,
|
||||
default: [],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
projectInfo: {
|
||||
projectName: '重庆市万州水电建筑工程有限公司',
|
||||
companyName: '输电一公司',
|
||||
currentStatus: '在建',
|
||||
projectType: '基建线路',
|
||||
voltageLevel: '220kV',
|
||||
plannedStartDate: '2025-02-01',
|
||||
plannedCompletionDate: '2025-11-30',
|
||||
projectLocation:
|
||||
'广东省-东莞市广东省-东莞市广东省-东莞市广东省-东莞市广东省-东莞市广东省-东莞市',
|
||||
},
|
||||
|
||||
labelList: [
|
||||
{
|
||||
label: '法定代表人',
|
||||
value: '李思思',
|
||||
valueKey: 'currentStatus',
|
||||
value: this.legalPerson,
|
||||
},
|
||||
{
|
||||
label: '联系电话',
|
||||
value: '136562356236',
|
||||
valueKey: 'projectType',
|
||||
value: this.legalPersonPhone,
|
||||
},
|
||||
{
|
||||
label: '营业执照/电子公章等',
|
||||
value: '5',
|
||||
valueKey: 'voltageLevel',
|
||||
value: this.contractFile,
|
||||
},
|
||||
{
|
||||
label: '营业住址',
|
||||
value: '安徽省合肥市火星路',
|
||||
valueKey: 'plannedStartDate',
|
||||
value: this.subAddress,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
<template>
|
||||
<!-- 综合查询 ---- 工程统计详情 -->
|
||||
<div class="app-container">
|
||||
<HeaderInfo />
|
||||
<CardCount
|
||||
:auto-load="true"
|
||||
:project-id="projectId"
|
||||
@cardClick="handleCardClick"
|
||||
<HeaderInfo
|
||||
:subName="subName"
|
||||
:subAddress="subAddress"
|
||||
:legalPerson="legalPerson"
|
||||
:contractFile="contractFile"
|
||||
:legalPersonPhone="legalPersonPhone"
|
||||
/>
|
||||
<CardCount :sub-id="subId" @cardClick="handleCardClick" />
|
||||
<SubTeamCard />
|
||||
<PersonInfoCard />
|
||||
<AttMachineCard />
|
||||
|
|
@ -31,12 +33,30 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
projectId: null, // 从路由参数或其他地方获取项目ID
|
||||
subName: null, // 从路由参数或其他地方获取分包名称
|
||||
legalPerson: null, // 从路由参数或其他地方获取法定代表人
|
||||
legalPersonPhone: null, // 从路由参数或其他地方获取法定代表人电话
|
||||
subAddress: null, // 从路由参数或其他地方获取分包地址
|
||||
contractFile: [], // 从路由参数或其他地方获取合同文件
|
||||
subId: null, // 从路由参数或其他地方获取分包ID
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 从路由参数获取项目ID
|
||||
this.projectId = this.$route.params.id || this.$route.query.id
|
||||
const {
|
||||
id,
|
||||
legalPerson,
|
||||
legalPersonPhone,
|
||||
subAddress,
|
||||
contractFile,
|
||||
subName,
|
||||
} = this.$route.query
|
||||
this.subId = id
|
||||
this.legalPerson = legalPerson
|
||||
this.legalPersonPhone = legalPersonPhone
|
||||
this.subAddress = subAddress
|
||||
this.contractFile = contractFile
|
||||
this.subName = subName
|
||||
},
|
||||
methods: {
|
||||
// 处理卡片点击事件
|
||||
|
|
|
|||
|
|
@ -7,16 +7,15 @@
|
|||
:showRightTools="true"
|
||||
ref="subCountTableRef"
|
||||
:columnsList="columnsList"
|
||||
:testTableList="testTableList"
|
||||
:request-api="getSubCountListAPI"
|
||||
>
|
||||
<template slot="handle" slot-scope="{ queryParams }">
|
||||
<template slot="handle" slot-scope="{ data }">
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-view"
|
||||
@click="onHandleViewDetail(queryParams)"
|
||||
@click="onHandleViewDetail(data)"
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
|
|
@ -39,31 +38,23 @@ export default {
|
|||
formLabel,
|
||||
columnsList,
|
||||
getSubCountListAPI,
|
||||
testTableList: [
|
||||
{
|
||||
mainProName: '分公司1',
|
||||
volLevel: '工程1',
|
||||
subNum: 1,
|
||||
teamNum: 1,
|
||||
teamNum: 1,
|
||||
},
|
||||
{
|
||||
mainProName: '分公司1',
|
||||
volLevel: '工程1',
|
||||
subNum: 1,
|
||||
teamNum: 1,
|
||||
teamNum: 1,
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onHandleViewDetail(queryParams) {
|
||||
console.log(queryParams)
|
||||
onHandleViewDetail(data) {
|
||||
console.log(data)
|
||||
|
||||
this.$router.push({
|
||||
name: 'SubCountDetail',
|
||||
query: {
|
||||
id: data.id,
|
||||
legalPerson: data.legalPerson,
|
||||
legalPersonPhone: data.legalPersonPhone,
|
||||
subAddress: data.subAddress,
|
||||
contractFile: data.contractFile,
|
||||
subName: data.subName,
|
||||
},
|
||||
})
|
||||
},
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue