总包工程完善以及logo替换

This commit is contained in:
BianLzhaoMin 2025-08-14 10:24:44 +08:00
parent 54d5513d31
commit 2c12fe55ac
11 changed files with 272 additions and 143 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/favicon.ico-1 Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -1,35 +1,27 @@
import request from '@/utils/request' import request from '@/utils/request'
// 新增总包工程 // 新增和修改总包工程
export const addAllProjectAPI = (data) => { export const addAndEditAllProjectAPI = (data) => {
return request({ return request({
url: '/project/***', url: '/bmw/mainProject/addOrUpdateMainProject',
method: 'POST',
data,
})
}
// 修改总包工程
export const editAllProjectAPI = (data) => {
return request({
url: '/project/***',
method: 'POST', method: 'POST',
data, data,
}) })
} }
// 删除总包工程 // 删除总包工程
export const deleteAllProjectAPI = (id) => { export const deleteAllProjectAPI = (data) => {
return request({ return request({
url: `/project/****/${id}`, url: '/bmw/mainProject/delMainProject',
method: 'DELETE', method: 'POST',
data,
}) })
} }
// 获取总包工程列表 // 获取总包工程列表
export const getAllProjectListAPI = (data) => { export const getAllProjectListAPI = (data) => {
return request({ return request({
url: '/project/***', url: '/bmw/mainProject/list',
method: 'GET', method: 'GET',
params: data, params: data,
}) })

BIN
src/assets/logo/logo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -135,7 +135,6 @@
v-loading="loading" v-loading="loading"
select-on-indeterminate select-on-indeterminate
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
>
> >
<el-table-column <el-table-column
width="45" width="45"
@ -319,7 +318,7 @@ export default {
// //
showSearch: true, showSearch: true,
// //
selectionShow: true, selectionShow: this.isSelectShow,
// //
indexNumShow: true, indexNumShow: true,
// //

View File

@ -8,13 +8,37 @@
placement="top" placement="top"
v-if="search" v-if="search"
> >
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" /> <el-button
size="mini"
circle
icon="el-icon-search"
@click="toggleSearch()"
/>
</el-tooltip> </el-tooltip>
<el-tooltip class="item" effect="dark" content="刷新" placement="top"> <el-tooltip
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" /> class="item"
effect="dark"
content="刷新"
placement="top"
>
<el-button
size="mini"
circle
icon="el-icon-refresh"
@click="refresh()"
/>
</el-tooltip> </el-tooltip>
<el-tooltip class="item" effect="dark" content="列表筛选" placement="top"> <el-tooltip
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px"> class="item"
effect="dark"
content="列表筛选"
placement="top"
>
<el-dropdown
trigger="click"
:hide-on-click="false"
style="padding-left: 12px"
>
<el-button size="mini" circle icon="el-icon-menu" /> <el-button size="mini" circle icon="el-icon-menu" />
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item> <el-dropdown-item>
@ -22,18 +46,25 @@
:checked="selectionShow" :checked="selectionShow"
@change=" @change="
() => { () => {
this.$emit('update:selectionShow', !this.selectionShow) this.$emit(
'update:selectionShow',
!this.selectionShow,
)
} }
" "
>复选框</el-checkbox
> >
复选框
</el-checkbox>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item> <el-dropdown-item>
<el-checkbox <el-checkbox
:checked="indexNumShow" :checked="indexNumShow"
@change=" @change="
() => { () => {
this.$emit('update:indexNumShow', !this.indexNumShow) this.$emit(
'update:indexNumShow',
!this.indexNumShow,
)
} }
" "
>序号</el-checkbox >序号</el-checkbox
@ -44,7 +75,10 @@
:checked="handleShow" :checked="handleShow"
@change=" @change="
() => { () => {
this.$emit('update:handleShow', !this.handleShow) this.$emit(
'update:handleShow',
!this.handleShow,
)
} }
" "
>操作</el-checkbox >操作</el-checkbox
@ -55,7 +89,9 @@
<el-dropdown-item :key="index"> <el-dropdown-item :key="index">
<el-checkbox <el-checkbox
:checked="item.checked" :checked="item.checked"
@change="checkboxChange($event, item.t_label)" @change="
checkboxChange($event, item.t_label)
"
:label="item.t_label" :label="item.t_label"
>{{ item.t_label }}</el-checkbox >{{ item.t_label }}</el-checkbox
> >

View File

@ -47,7 +47,7 @@
</template> </template>
<script> <script>
import logoImg from '@/assets/logo/logo.png' import logoImg from '@/assets/logo/logo1.png'
import variables from '@/assets/styles/variables.scss' import variables from '@/assets/styles/variables.scss'

View File

@ -8,42 +8,20 @@ export const formLabel = [
] ]
export const columnsList = [ export const columnsList = [
{ t_props: 'projectName', t_label: '总工程名称' }, { t_props: 'mainProName', t_label: '总工程名称' },
{ t_props: 'level', t_label: '电压等级' }, { t_props: 'volLevel', t_label: '电压等级' },
{ {
t_props: 'count',
t_label: '标段工程数量', t_label: '标段工程数量',
t_slot: 'count', t_slot: 'count',
}, },
{ t_props: 'status', t_label: '状态' }, { t_slot: 'proStatus', t_label: '状态' },
]
export const testTableList = [
{
projectName: '总工程名称',
level: '电压等级',
status: '在建',
count: '6',
},
{
projectName: '总工程名称2',
level: '电压等级',
status: '停工',
count: '5',
},
{
projectName: '总工程名称3',
level: '电压等级',
status: '筹建',
count: '10',
},
] ]
export const dialogConfig = { export const dialogConfig = {
outerVisible: false, outerVisible: false,
outerTitle: '', outerTitle: '',
outerWidth: '50%', outerWidth: '40%',
minHeight: '', minHeight: '',
maxHeight: '', maxHeight: '',
} }

View File

@ -7,7 +7,6 @@
:showRightTools="true" :showRightTools="true"
ref="allProjectTableRef" ref="allProjectTableRef"
:columnsList="columnsList" :columnsList="columnsList"
:testTableList="testTableList"
:request-api="getAllProjectListAPI" :request-api="getAllProjectListAPI"
> >
<template slot="btn" slot-scope="{ queryParams }"> <template slot="btn" slot-scope="{ queryParams }">
@ -35,10 +34,23 @@
<!-- 标段工程数量 --> <!-- 标段工程数量 -->
<template slot="count" slot-scope="{ data }"> <template slot="count" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleViewLotProject(data)"> <span class="cursor-blue" @click="onHandleViewLotProject(data)">
{{ data.count }} {{ data.pmProjectVoList.length || 0 }}
</span> </span>
</template> </template>
<!-- 状态 -->
<template slot="proStatus" slot-scope="{ data }">
<el-tag
size="mini"
type="primary"
v-if="data.proStatus !== '' && data.proStatus !== null"
>
{{ projectStatusList[data.proStatus] || '' }}
</el-tag>
<span v-else>-</span>
</template>
<template slot="handle" slot-scope="{ data }"> <template slot="handle" slot-scope="{ data }">
<el-button <el-button
plain plain
@ -75,26 +87,26 @@
:model="addOrEditForm" :model="addOrEditForm"
:rules="addOrEditFormRules" :rules="addOrEditFormRules"
> >
<el-form-item label="总工程名称" prop="projectName"> <el-form-item label="总工程名称" prop="mainProName">
<el-input <el-input
clearable clearable
placeholder="请输入总工程名称" placeholder="请输入总工程名称"
v-model="addOrEditForm.projectName" v-model="addOrEditForm.mainProName"
/> />
</el-form-item> </el-form-item>
<el-form-item label="电压等级" prop="voltageLevel"> <el-form-item label="电压等级" prop="volLevel">
<el-select <el-select
clearable clearable
filterable filterable
style="width: 100%" style="width: 100%"
placeholder="请选择电压等级" placeholder="请选择电压等级"
v-model="addOrEditForm.voltageLevel" v-model="addOrEditForm.volLevel"
> >
<el-option <el-option
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
v-for="item in voltageLevelOptions" v-for="item in dict.type.voltage_level"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -129,33 +141,39 @@
<el-table-column <el-table-column
align="center" align="center"
label="子项目名称" label="子项目名称"
prop="lotProjectName" prop="proName"
/> />
<el-table-column <el-table-column
label="专业" label="工程类型"
align="center" align="center"
prop="professional" prop="proType"
/> />
<el-table-column <el-table-column
align="center" align="center"
label="所属分公司" label="所属分公司"
prop="branchCompany" prop="subComName"
/> />
<el-table-column <el-table-column
align="center" align="center"
label="电压等级" label="电压等级"
prop="voltageLevel" prop="volLevel"
/> />
<el-table-column <el-table-column
label="工程地址" label="工程地址"
align="center" align="center"
prop="engineeringAddress" prop="proAddress"
/> />
<el-table-column <el-table-column
align="center" align="center"
label="工程状态" label="工程状态"
prop="engineeringStatus" prop="proStatus"
/> >
<template slot-scope="{ row }">
<el-tag size="mini" type="primary">
{{ row.proStatus }}
</el-tag>
</template>
</el-table-column>
</el-table> </el-table>
</template> </template>
</template> </template>
@ -166,15 +184,15 @@
<script> <script>
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import { formLabel, columnsList, dialogConfig, testTableList } from './config' import { formLabel, columnsList, dialogConfig } from './config'
import { import {
addAllProjectAPI, addAndEditAllProjectAPI,
editAllProjectAPI,
deleteAllProjectAPI, deleteAllProjectAPI,
getAllProjectListAPI, getAllProjectListAPI,
} from '@/api/basic-manage/project-manage/all-project' } from '@/api/basic-manage/project-manage/all-project'
export default { export default {
name: 'AllProject', name: 'AllProject',
dicts: ['voltage_level'],
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
@ -185,25 +203,24 @@ export default {
formLabel, formLabel,
columnsList, columnsList,
dialogConfig, dialogConfig,
testTableList,
getAllProjectListAPI, getAllProjectListAPI,
// //
addOrEditForm: { addOrEditForm: {
projectName: '', // mainProName: '', //
voltageLevel: '', // volLevel: '', //
id: '', // id
}, },
// //
addOrEditFormRules: { addOrEditFormRules: {
projectName: [ mainProName: [
{ {
required: true, required: true,
trigger: 'blur', trigger: 'blur',
message: '请输入总工程名称', message: '请输入总工程名称',
}, },
], ],
voltageLevel: [ volLevel: [
{ {
required: true, required: true,
trigger: 'change', trigger: 'change',
@ -212,55 +229,36 @@ export default {
], ],
}, },
//
voltageLevelOptions: [
{
label: '110kV',
value: '110kV',
},
{
label: '220kV',
value: '220kV',
},
{
label: '330kV',
value: '330kV',
},
],
// () // ()
lotProjectList: [ lotProjectList: [],
{
lotProjectName: '子项目名称1', projectStatusList: {
professional: '专业', 0: '在建',
branchCompany: '所属分公司1', 1: '停工',
voltageLevel: '电压等级', 2: '筹建',
engineeringAddress: '工程地址', 3: '遗留收尾',
engineeringStatus: '工程状态', 4: '完工',
'': '',
}, },
{
lotProjectName: '子项目名称2',
professional: '专业',
branchCompany: '所属分公司1',
voltageLevel: '电压等级',
engineeringAddress: '工程地址',
engineeringStatus: '工程状态',
},
{
lotProjectName: '子项目名称3',
professional: '专业',
branchCompany: '所属分公司',
voltageLevel: '电压等级',
engineeringAddress: '工程地址',
engineeringStatus: '工程状态',
},
],
} }
}, },
created() {
this.projectStatusList = this.dict.type.project_status
},
methods: { methods: {
// //
onHandleExportAllProject(queryParams) { onHandleExportAllProject(queryParams) {
console.log(queryParams, '导出') console.log(queryParams, '导出')
// this.download(
// '**',
// {
// ...queryParams,
// },
// `.xlsx`,
// )
}, },
// //
@ -268,7 +266,16 @@ export default {
this.dialogConfig.outerTitle = this.dialogConfig.outerTitle =
type === 1 ? '新增总工程' : '修改总工程' type === 1 ? '新增总工程' : '修改总工程'
this.dialogConfig.outerWidth = '' if (type === 2) {
const { mainProName, volLevel, id } = data
this.addOrEditForm = {
mainProName,
volLevel,
id,
}
}
this.dialogConfig.outerWidth = '40%'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = ''
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = ''
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
@ -282,10 +289,10 @@ export default {
type: 'warning', type: 'warning',
}) })
.then(async () => { .then(async () => {
const res = await deleteAllProjectAPI(data.id) const res = await deleteAllProjectAPI({ id: data.id })
console.log(res, '删除结果') console.log(res, '删除结果')
if (res.code === 200) { if (res.code === 200) {
this.$msgSuccess('删除成功') this.$modal.msgSuccess('删除成功')
this.$refs.allProjectTableRef.getTableList() // this.$refs.allProjectTableRef.getTableList() //
} }
}) })
@ -298,17 +305,24 @@ export default {
onHandleConfirmAddOrEdit() { onHandleConfirmAddOrEdit() {
this.$refs.addOrEditFormRef.validate(async (valid) => { this.$refs.addOrEditFormRef.validate(async (valid) => {
if (valid) { if (valid) {
const API = const params = {
this.dialogConfig.outerTitle === '新增总工程' ...this.addOrEditForm,
? addAllProjectAPI }
: editAllProjectAPI if (this.dialogConfig.outerTitle === '新增总工程') {
delete params.id
}
const res = await addAndEditAllProjectAPI(params)
const res = await API(this.addOrEditForm)
console.log(res, '新增或修改结果')
if (res.code === 200) { if (res.code === 200) {
this.$msgSuccess('操作成功') this.$modal.msgSuccess(
this.dialogConfig.outerTitle === '新增总工程'
? '新增成功'
: '修改成功',
)
this.handleCloseDialogOuter() this.handleCloseDialogOuter()
this.$refs.allProjectTableRef.getTableList() // this.$refs.allProjectTableRef.getTableList() //
} else {
this.$modal.msgError(res.msg)
} }
} }
}) })
@ -317,6 +331,7 @@ export default {
// //
onHandleViewLotProject(data) { onHandleViewLotProject(data) {
console.log(data, '查看标段工程数量') console.log(data, '查看标段工程数量')
this.lotProjectList = data.pmProjectVoList
this.dialogConfig.outerTitle = '子项目(标段工程)概况' this.dialogConfig.outerTitle = '子项目(标段工程)概况'
this.dialogConfig.outerWidth = '80%' this.dialogConfig.outerWidth = '80%'
this.dialogConfig.minHeight = '90vh' this.dialogConfig.minHeight = '90vh'
@ -328,6 +343,11 @@ export default {
handleCloseDialogOuter() { handleCloseDialogOuter() {
if (this.dialogConfig.outerTitle !== '子项目(标段工程)概况') { if (this.dialogConfig.outerTitle !== '子项目(标段工程)概况') {
this.$refs.addOrEditFormRef.resetFields() this.$refs.addOrEditFormRef.resetFields()
this.addOrEditForm = {
mainProName: '',
volLevel: '',
id: '',
}
} }
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },

View File

@ -124,11 +124,11 @@
size="medium" size="medium"
v-model="addOrEditForm.status" v-model="addOrEditForm.status"
> >
<el-radio-button label="在建" /> <el-radio-button
<el-radio-button label="筹建" /> :key="item.value"
<el-radio-button label="停工" /> :label="item.label"
<el-radio-button label="完工" /> v-for="item in dict.type.project_status"
<el-radio-button label="遗留收尾" /> />
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -199,7 +199,7 @@ import {
} from '@/api/basic-manage/project-manage/lot-project' } from '@/api/basic-manage/project-manage/lot-project'
export default { export default {
name: 'AddOrEditForm', name: 'AddOrEditForm',
dicts: ['project_status'],
data() { data() {
// //
const validatePlanEndTime = (rule, value, callback) => { const validatePlanEndTime = (rule, value, callback) => {

View File

@ -1,17 +1,121 @@
<template> <template>
<!-- 施工人员 ---- 红绿灯管理 ---- 红绿灯统计 -->
<div class="app-container"> <div class="app-container">
<h1>红绿灯统计</h1> <el-table border :data="redAndGreenCountList">
<AttendanceCalendar /> <el-table-column
type="index"
label="序号"
width="50"
align="center"
/>
<el-table-column label="分公司" width="400" align="center">
<template slot-scope="{ row }">
<span
class="cursor-blue"
@click="onHandleClickCompany(row)"
>
{{ row.company }}
</span>
</template>
</el-table-column>
<el-table-column
align="center"
:key="item.prop"
:prop="item.prop"
:label="item.label"
show-overflow-tooltip
v-for="item in columnsList"
/>
</el-table>
<!-- 分页 -->
<pagination
:total="total"
@pagination="getTableList"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="handleCloseDialogOuter"
>
<template slot="outerContent"> 996 </template>
</DialogModel>
</div> </div>
</template> </template>
<script> <script>
import AttendanceCalendar from '@/components/AttendanceCalendar' import DialogModel from '@/components/DialogModel'
export default { export default {
name: 'RedAndGreenCount',
components: { components: {
AttendanceCalendar, DialogModel,
},
data() {
return {
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
},
dialogConfig: {
outerVisible: false,
outerTitle: '工程',
outerWidth: '70%',
minHeight: '90vh',
maxHeight: '90vh',
},
redAndGreenCountList: [
{
company: '分公司1',
count: 10,
yellowCount: 2,
greenCount: 8,
},
{
company: '分公司2',
count: 10,
yellowCount: 2,
greenCount: 8,
},
{
company: '分公司3',
count: 10,
yellowCount: 2,
greenCount: 8,
},
],
columnsList: [
{
label: '在场人数',
prop: 'count',
},
{
label: '黄灯人数',
prop: 'count',
},
{
label: '绿灯人数',
prop: 'count',
},
],
}
},
methods: {
//
getTableList() {},
//
onHandleClickCompany(row) {
console.log(row)
this.dialogConfig.outerVisible = true
},
//
handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false
},
}, },
} }
</script> </script>
<style></style>