search_tools_web/src/views/data-create/gw-template/components/addAndEditForm.vue

1086 lines
46 KiB
Vue
Raw Normal View History

<template>
<div>
<el-form
:model="addAndEditForm"
:rules="addAndEditRules"
ref="addAndEditFormRef"
label-width="0px"
label-position="top"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="标书名称" prop="name">
<el-input v-model="addAndEditForm.name" placeholder="请输入标书名称" clearable> </el-input>
</el-form-item>
</el-col>
</el-row>
<div class="card-box">
<div class="title-box">
<div> 公司业绩 </div>
<el-button icon="el-icon-circle-plus" type="text" @click="addCompanyPerformance">添加</el-button>
</div>
<!-- 公司业绩 -->
2025-04-27 18:01:36 +08:00
<el-table stripe style="width: 100%" :data="companyPerformanceList">
<el-table-column label="序号" width="55" type="index" />
2025-04-27 18:01:36 +08:00
<el-table-column align="center" label="工程名称" prop="proName" show-overflow-tooltip />
<el-table-column align="center" label="电压等级" prop="voltage" show-overflow-tooltip />
2025-04-27 18:01:36 +08:00
<el-table-column align="center" label="变电站座数" prop="stationNum" show-overflow-tooltip />
<el-table-column
align="center"
label="线路建设规模(折单公里)"
prop="lineScale"
show-overflow-tooltip
/>
<el-table-column align="center" label="竣工日期" prop="stopTime" show-overflow-tooltip />
<el-table-column align="center" label="承包范围" prop="contractRang" show-overflow-tooltip />
<el-table-column align="center" label="业主单位" prop="ownerUnit" show-overflow-tooltip />
<el-table-column align="center" label="业主单位联系方式" prop="ownerPhone" show-overflow-tooltip />
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
type="text"
style="color: #f56c6c"
icon="el-icon-delete"
@click="deleteCompanyPerformance(scope.$index)"
/>
</template>
</el-table-column>
</el-table>
</div>
<div class="card-box">
<div class="title-box">
<div> 公司关键人员 </div>
<el-button icon="el-icon-circle-plus" type="text" @click="addCompanyKeyPerson">添加</el-button>
</div>
<!-- 公司关键人员 -->
<el-table :data="companyKeyPersonList" stripe style="width: 100%">
<el-table-column label="序号" width="55" type="index" />
<el-table-column align="center" label="姓名">
<template slot-scope="scope">
<el-button
type="text"
size="mini"
v-if="scope.row.name === ''"
@click="selectCompanyKeyPerson(scope.$index)"
>
选择
</el-button>
<span v-else>
{{ scope.row.name }}
</span>
</template>
</el-table-column>
<el-table-column align="center" label="职称" prop="title" show-overflow-tooltip />
<el-table-column align="center" label="职业资格证书/身份证" prop="idCard" show-overflow-tooltip />
<el-table-column align="center" label="在本施工队伍中的职责分工">
<template slot-scope="{ row }">
<el-input placeholder="请输入" v-model="row.duty" />
</template>
</el-table-column>
<el-table-column align="center" label="计划入场时间">
<template slot-scope="{ row }">
<el-date-picker
type="date"
clearable
v-model="row.planEnterTime"
style="width: 100%"
placeholder="选择日期"
value-format="yyyy-MM-dd"
/>
</template>
</el-table-column>
<el-table-column align="center" label="计划退场时间" prop="planLeaveTime">
<template slot-scope="{ row }">
<el-date-picker
type="date"
clearable
v-model="row.planLeaveTime"
style="width: 100%"
placeholder="选择日期"
value-format="yyyy-MM-dd"
/>
</template>
</el-table-column>
<el-table-column align="center" label="近年同类工程业绩">
<template slot-scope="{ row }">
{{ row.performance }}
</template>
</el-table-column>
<el-table-column align="center" label="操作" show-overflow-tooltip>
<template slot-scope="scope">
<el-button
type="text"
style="color: #f56c6c"
icon="el-icon-delete"
@click="deleteCompanyKeyPerson(scope.$index, scope.row.key)"
/>
</template>
</el-table-column>
</el-table>
</div>
<div class="card-box">
<!-- 公司其他人员 -->
<div class="title-box">
<div> 公司其他人员 </div>
<el-button icon="el-icon-circle-plus" type="text" @click="addCompanyOtherPerson">添加</el-button>
</div>
<el-table :data="companyOtherPersonList" stripe style="width: 100%">
<el-table-column label="序号" width="55" type="index" />
<el-table-column align="center" label="在本次标书中的职务">
<template slot-scope="{ row }">
<el-input placeholder="请输入" v-model="row.title" />
</template>
</el-table-column>
<el-table-column align="center" label="姓名">
<template slot-scope="scope">
<el-button
type="text"
size="mini"
v-if="scope.row.name === ''"
@click="selectCompanyOtherPerson(scope.$index)"
>
选择
</el-button>
<span v-else>
{{ scope.row.name }}
</span>
</template>
</el-table-column>
<el-table-column align="center" label="职称" show-overflow-tooltip />
<el-table-column align="center" label="证书名称" show-overflow-tooltip />
<el-table-column align="center" label="级别" show-overflow-tooltip />
<el-table-column align="center" label="证号" show-overflow-tooltip />
<el-table-column align="center" label="专业" show-overflow-tooltip />
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
type="text"
style="color: #f56c6c"
icon="el-icon-delete"
@click="deleteCompanyOtherPerson(scope.$index)"
/>
</template>
</el-table-column>
</el-table>
</div>
<div class="card-box">
<!-- 分包商 -->
<div class="title-box">
<div> 分包商 </div>
<el-button icon="el-icon-circle-plus" type="text" @click="addSubcontractor">添加</el-button>
</div>
<div class="subcontractor-box" v-if="subcontractorList.length > 0">
<div v-for="(item, index) in subcontractorList" :key="item.key" class="subcontractor-item-box">
<div class="subcontractor-item">
<span>
{{ item.label }}
</span>
<el-button
type="text"
style="color: #f56c6c"
icon="el-icon-delete"
@click="deleteSubcontractor(index)"
/>
</div>
<!-- 分包商业绩添加 -->
<div class="title-box-subcontractor">
<div> 公司业绩 </div>
<el-button
icon="el-icon-circle-plus"
type="text"
@click="addSubcontractorPerformance(index)"
>
添加
</el-button>
</div>
<!-- 分包商公司业绩列表 -->
<el-table :data="item.companyPerformanceList" stripe style="width: 100%">
<el-table-column label="序号" width="55" type="index" />
<el-table-column
align="center"
label="项目名称(按合同)"
prop="label"
show-overflow-tooltip
/>
<el-table-column align="center" label="电压等级" prop="voltage" show-overflow-tooltip />
<el-table-column align="center" label="建设单位" prop="company" show-overflow-tooltip />
<el-table-column
align="center"
label="分包合同额"
prop="contractAmount"
show-overflow-tooltip
/>
<el-table-column align="center" label="开竣工日期" prop="startDate" show-overflow-tooltip />
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-delete"
style="color: #f56c6c"
@click="deleteSubcontractorPerformance(index, scope.$index)"
/>
</template>
</el-table-column>
</el-table>
<div class="title-box-subcontractor">
<div> 拟派人员 </div>
<el-button icon="el-icon-circle-plus" type="text">添加</el-button>
</div>
</div>
</div>
</div>
<!-- 操作按钮 -->
<el-form-item>
<el-row style="text-align: right; border-top: 1px solid #e5e5e5; padding-top: 10px">
<el-button size="mini" @click="onCancel">取消</el-button>
<el-button type="primary" size="mini" @click="onConfirm">确定</el-button>
</el-row>
</el-form-item>
</el-form>
<!-- 选择业绩等业务弹框 -->
<DialogModel :dialogConfig="dialogConfig" @closeDialogOuter="closeDialogOuter">
<template slot="outerContent">
<!-- 关键人员和公司业绩选择 -->
2025-04-27 18:01:36 +08:00
<template v-if="dialogConfig.outerTitle === '人员选择' || dialogConfig.outerTitle === '公司业绩选择'">
<div class="title" v-if="dialogConfig.outerTitle === '人员选择'"> 拟派人员 </div>
<el-select
clearable
filterable
2025-04-27 18:01:36 +08:00
v-model="companyPerformanceQueryParams.keyUser"
@change="onChangePerson"
2025-04-27 18:01:36 +08:00
placeholder="请选择人员"
v-if="dialogConfig.outerTitle === '人员选择'"
>
<el-option
2025-04-27 18:01:36 +08:00
:key="item.id"
:value="item.id + ''"
:label="item.userName"
v-for="item in keyPersonList"
/>
</el-select>
2025-04-27 18:01:36 +08:00
<div class="title" v-if="dialogConfig.outerTitle === '人员选择'"> 人员业绩选择 </div>
<el-form
inline
label-width="0"
ref="companyPerformanceFormRef"
:model="companyPerformanceQueryParams"
>
<el-row>
<el-col :span="4">
2025-04-27 18:01:36 +08:00
<el-form-item prop="proName">
<el-input
clearable
2025-04-27 18:01:36 +08:00
placeholder="工程名称"
v-model="companyPerformanceQueryParams.proName"
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
2025-04-27 18:01:36 +08:00
<el-form-item prop="voltage">
<el-input
clearable
2025-04-27 18:01:36 +08:00
placeholder="电压等级"
v-model="companyPerformanceQueryParams.voltage"
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
2025-04-27 18:01:36 +08:00
<el-form-item prop="age">
<el-select
placeholder="请选择"
v-model="companyPerformanceQueryParams.age"
clearable
>
<el-option label="近三年" value="3" />
<el-option label="近五年" value="5" />
</el-select>
</el-form-item>
</el-col>
2025-04-27 18:01:36 +08:00
<el-col :span="6">
<el-form-item prop="timeValue">
<el-date-picker
2025-04-27 18:01:36 +08:00
type="daterange"
range-separator="~"
style="width: 100%"
value-format="yyyy-MM-dd"
2025-04-27 18:01:36 +08:00
end-placeholder="结束时间"
start-placeholder="开始时间"
v-model="companyPerformanceQueryParams.timeValue"
/>
</el-form-item>
</el-col>
<el-col :span="3.5">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchPersonPerformance">
查询
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div>
2025-04-27 18:01:36 +08:00
<el-transfer
v-model="selectData"
:data="waitSelectData"
:titles="['待选列表', '已选列表']"
:props="{
key: 'id',
label: 'proName',
}"
>
<div slot-scope="{ option }" class="transfer-item">
<span>
2025-04-27 18:01:36 +08:00
{{ option.proName }}
</span>
<span style="margin-left: 18px">
{{ option.voltage }}
</span>
2025-04-27 18:01:36 +08:00
<span style="margin-left: 6px"> {{ option.startTime }} {{ option.endTime }} </span>
</div>
</el-transfer>
</div>
</template>
<!-- 其他人员选择 -->
<template v-else-if="dialogConfig.outerTitle === '其他人员选择'">
<el-form :model="personPerformanceForm" label-width="0" inline>
<el-row>
<el-col :span="6">
<el-form-item>
<el-input placeholder="姓名" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchPersonPerformance">
查询
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="personList" stripe @selection-change="onSelectionChange" ref="singleTable">
<el-table-column label="序号" width="55" type="index" align="center" />
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="姓名" prop="label" align="center" />
<el-table-column label="身份证号" prop="idCard" align="center" />
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getOtherPersonList"
/>
</template>
<!-- 分包商选择 -->
<template v-else-if="dialogConfig.outerTitle === '分包商选择'">
<div>
<el-transfer
filterable
v-model="selectSubcontractorData"
:data="waitSubcontractorSelectData"
:titles="['待选列表', '已选列表']"
/>
</div>
</template>
<!-- 分包商业绩选择 -->
<template v-else-if="dialogConfig.outerTitle === '分包商业绩选择'">
<el-form :model="personPerformanceForm" label-width="0" inline>
<el-row>
<el-col :span="4">
<el-form-item>
<el-input
v-model="personPerformanceForm.projectName"
placeholder="项目名称"
clearable
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
2025-04-27 18:01:36 +08:00
<el-input v-model="personPerformanceForm.voltage" placeholder="电压等级" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-select placeholder="请选择" v-model="personPerformanceForm.age" clearable>
<el-option label="近三年" value="3" />
<el-option label="近五年" value="5" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-date-picker
type="date"
v-model="value1"
placeholder="选择日期"
style="width: 100%"
value-format="yyyy-MM-dd"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="0.5" style="text-align: center">
<el-form-item> </el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-date-picker
type="date"
clearable
v-model="value1"
placeholder="选择日期"
style="width: 100%"
value-format="yyyy-MM-dd"
/>
</el-form-item>
</el-col>
<el-col :span="3.5">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchPersonPerformance">
查询
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div>
<el-transfer
:data="waitSubcontractorPerformanceData"
v-model="selectSubcontractorPerformanceData"
:titles="['待选列表', '已选列表']"
>
<div slot-scope="{ option }" class="transfer-item">
<span>
{{ option.label }}
</span>
<span style="margin-left: 18px">
{{ option.voltage }}
</span>
<span style="margin-left: 6px"> {{ option.startDate }} {{ option.endDate }} </span>
</div>
</el-transfer>
</div>
</template>
<el-row style="text-align: right; border-top: 1px solid #e5e5e5; padding-top: 10px">
<el-button @click="onCancelInner" style="margin-right: 10px">取消</el-button>
<el-button type="primary" @click="onConfirmInner">确定</el-button>
</el-row>
</template>
</DialogModel>
</div>
</template>
<script>
import UploadImg from '@/components/UploadImg'
import DialogModel from '@/components/DialogModel/index'
2025-04-27 18:01:36 +08:00
import moment from 'moment'
import { getKeyPersonListAPI } from '@/api/common'
import { getCompanyPerformanceListAPI } from '@/api/company-manage/performance-manage'
export default {
components: {
UploadImg,
DialogModel,
},
props: {
// 1新增 2详情 3编辑
formType: {
type: Number,
default: 1,
},
},
data() {
return {
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
},
personSelectValue: '',
dialogConfig: {
outerTitle: '新增',
innerTitle: false,
outerWidth: '80%',
outerVisible: false,
innerVisible: false,
},
addAndEditForm: {
2025-04-27 18:01:36 +08:00
name: '', // 标书名称
},
addAndEditRules: {
name: [
{
required: true,
2025-04-27 18:01:36 +08:00
message: '请输入标书名称',
trigger: 'blur',
},
],
},
personList: [
{ label: '张三1', value: 1, idCard: '9996', title: '监理' },
{ label: '张三2', value: 2, idCard: '9996', title: '总监' },
{ label: '张三3', value: 3, idCard: '9996', title: '元帅' },
],
waitSelectData: [], // 待选列表
selectData: [], // 已选列表
2025-04-27 18:01:36 +08:00
companyOtherPersonList: [], // 公司其他人员列表
subcontractorList: [], // 分包商列表
companyPerformanceInnerList: [
{
key: 10,
label: '安徽送变电工程1',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
},
{
key: 11,
label: '湖南送变电工程2',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
},
{
key: 12,
label: '南网送变电工程3',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
},
], // 公司业绩列表 ---- 内层穿梭框显示的
companyPerformanceInnerSelectList: [], // 公司业绩列表 ---- 内层穿梭框选择后只有ID数据源
keyPersonPerformanceInnerList: [
{
key: 10,
label: '安徽送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '新疆工程取得完美收官',
},
{
key: 11,
label: '湖南送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '湖南xx工程工程取得完美收官',
},
{
key: 12,
label: '南网送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '日本xx工程工程取得完美收官',
},
{
key: 13,
label: '宁夏送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '校花工程取得完美收官',
},
], // 关键人员业绩列表 ---- 内层穿梭框显示的
keyPersonPerformanceInnerSelectList: [], // 关键人员业绩列表 ---- 内层穿梭框选择后只有ID数据源
keyTableCurrentIndex: 0,
otherTableCurrentIndex: 0,
selectedPerson: null,
selectSubcontractorData: [], // 分包商已选列表
waitSubcontractorSelectData: [
{
key: 1,
label: '川东电力集团有限公司',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
companyPerformanceList: [],
},
{
key: 2,
label: '川西电力集团有限公司',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
companyPerformanceList: [],
},
{
key: 3,
label: '川南电力集团有限公司',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
companyPerformanceList: [],
},
], // 分包商待选列表
// subcontractorList: [], // 分包商外层显示列表
selectSubcontractorPerformanceData: [], // 分包商业绩已选列表 ---- 内层穿梭框选择后只有ID数据源
waitSubcontractorPerformanceData: [
{
key: 10,
label: '安徽送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '新疆工程取得完美收官',
},
{
key: 11,
label: '湖南送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '湖南xx工程工程取得完美收官',
},
{
key: 12,
label: '南网送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '日本xx工程工程取得完美收官',
},
{
key: 13,
label: '宁夏送变电工程',
disabled: false,
voltage: '110kv',
startDate: '2020-01-01',
endDate: '2020-01-01',
performance: '校花工程取得完美收官',
},
], // ---- 内层穿梭框显示的
subcontractorPerformanceInnerList: [], // 分包商业绩列表
subcontractorPersonInnerList: [], // 分包商人员列表
subcontractorPerformanceCurrentIndex: 0, // 分包商业绩当前操作的index
2025-04-27 18:01:36 +08:00
/**
* 公司业绩需要的数据源
*/
companyPerformanceList: [], // 公司业绩列表 ---- 外层表格
// 公司业绩待选列表查询条件
companyPerformanceQueryParams: {
age: '3',
proName: '',
voltage: '',
pageNum: 1,
pageSize: 10000,
timeValue: [],
},
/**
* 公司关键人员需要的数据源
*/
companyKeyPersonList: [], // 公司关键人员列表
keyTableCurrentIndex: 0, // 公司关键人员当前操作行的索引
keyPersonList: [], // 关键人员列表
// 人员业绩待选列表查询条件
keyPersonQueryParams: {
age: '3',
proName: '',
voltage: '',
pageNum: 1,
pageSize: 10000,
timeValue: [],
},
}
},
methods: {
onCancel() {
this.$emit('closeDialogOuter')
},
onConfirm() {
this.$refs.addAndEditFormRef.validate((valid) => {
if (valid) {
console.log(this.addAndEditForm)
}
})
},
2025-04-27 18:01:36 +08:00
// 添加公司其他人员
addCompanyOtherPerson() {
console.log('添加公司其他人员')
this.companyOtherPersonList.push({
name: '',
title: '',
idCard: '',
})
},
// 添加分包商
addSubcontractor() {
console.log('添加分包商')
this.dialogConfig.outerTitle = '分包商选择'
this.dialogConfig.outerVisible = true
},
// 查询
searchPersonPerformance() {
2025-04-27 18:01:36 +08:00
// console.log('查询')
if (this.dialogConfig.outerTitle === '公司业绩选择') {
this.getCompanyPerformanceData()
}
},
// 关闭弹窗
closeDialogOuter() {
this.dialogConfig.outerVisible = false
},
// 取消
onCancelInner() {
this.dialogConfig.outerVisible = false
},
2025-04-27 18:01:36 +08:00
// 穿梭框内的确定按钮
onConfirmInner() {
2025-04-27 18:01:36 +08:00
// 公司业绩选择确定时
if (this.dialogConfig.outerTitle === '公司业绩选择') {
this.companyPerformanceList = this.waitSelectData.filter((item) => this.selectData.includes(item.id))
}
2025-04-27 18:01:36 +08:00
// if (this.dialogConfig.outerTitle === '其他人员选择') {
// if (!this.selectedPerson) {
// this.$modal.msgError('请选择人员')
// return false
// } else {
// this.companyOtherPersonList[this.otherTableCurrentIndex].name = this.selectedPerson.label
// this.companyOtherPersonList[this.otherTableCurrentIndex].idCard = this.selectedPerson.idCard
// }
// } else if (this.dialogConfig.outerTitle === '分包商选择') {
// if (this.selectSubcontractorData.length < 1) {
// this.$modal.msgError('右侧已选列表为空,请操作后再确认')
// return false
// } else {
// this.subcontractorList = this.waitSubcontractorSelectData.filter((item) =>
// this.selectSubcontractorData.includes(item.key),
// )
// }
// } else if (this.dialogConfig.outerTitle === '分包商业绩选择') {
// if (this.selectSubcontractorPerformanceData.length < 1) {
// this.$modal.msgError('右侧已选列表为空,请操作后再确认')
// return false
// } else {
// this.subcontractorPerformanceList = this.waitSubcontractorPerformanceData.filter((item) =>
// this.selectSubcontractorPerformanceData.includes(item.key),
// )
// this.subcontractorList[this.subcontractorPerformanceCurrentIndex].companyPerformanceList =
// this.subcontractorPerformanceList
// }
// } else {
// if (this.selectData.length < 1) {
// this.$modal.msgError('右侧已选列表为空,请操作后再确认')
// return false
// }
// if (this.dialogConfig.outerTitle === '公司业绩选择') {
// this.companyPerformanceList = this.waitSelectData.filter((item) =>
// this.selectData.includes(item.key),
// )
// } else if (this.dialogConfig.outerTitle === '拟派人员选择') {
// this.keyPersonPerformanceInnerSelectList = this.waitSelectData.filter((item) =>
// this.selectData.includes(item.key),
// )
// this.companyKeyPersonList[this.keyTableCurrentIndex].performance =
// this.keyPersonPerformanceInnerSelectList.map((item) => item.performance).join(',')
// }
// }
this.personSelectValue = ''
this.dialogConfig.outerVisible = false
},
// 删除公司业绩
deleteCompanyPerformance(index) {
this.companyPerformanceList.splice(index, 1)
},
// 删除公司关键人员
deleteCompanyKeyPerson(index) {
this.companyKeyPersonList.splice(index, 1)
},
2025-04-27 18:01:36 +08:00
onChangePerson(value) {
const rowInfo = this.personList.find((item) => item.value === value)
const { label, idCard, title } = rowInfo
this.companyKeyPersonList[this.keyTableCurrentIndex].name = label
this.companyKeyPersonList[this.keyTableCurrentIndex].idCard = idCard
this.companyKeyPersonList[this.keyTableCurrentIndex].title = title
},
// 选择公司其他人员
selectCompanyOtherPerson(index) {
this.otherTableCurrentIndex = index
this.dialogConfig.outerTitle = '其他人员选择'
this.dialogConfig.outerVisible = true
},
// 选择其他人员
onSelectionChange(selection) {
console.log(selection)
if (selection.length > 1) {
const lastSelected = selection[selection.length - 1]
this.$refs.singleTable.clearSelection() // 清空所有选中
this.$refs.singleTable.toggleRowSelection(lastSelected, true) // 重新选中最后一个
}
this.selectedPerson = selection[0] || null // 存储当前选中项
},
getOtherPersonList() {
console.log('查询')
},
deleteCompanyOtherPerson(index) {
this.companyOtherPersonList.splice(index, 1)
},
deleteSubcontractor(index) {
this.subcontractorList.splice(index, 1)
},
addSubcontractorPerformance(index) {
this.subcontractorPerformanceCurrentIndex = index
this.dialogConfig.outerTitle = '分包商业绩选择'
this.dialogConfig.outerVisible = true
console.log('添加分包商业绩')
},
deleteSubcontractorPerformance(index, performanceIndex) {
this.subcontractorList[index].companyPerformanceList.splice(performanceIndex, 1)
},
2025-04-27 18:01:36 +08:00
/**
* 公司业绩模块
*/
// 添加公司业绩
async addCompanyPerformance() {
this.dialogConfig.outerTitle = '公司业绩选择'
this.getCompanyPerformanceData()
// 获取已选择过的数据 赋值给穿梭框 作回显
if (this.companyPerformanceList.length > 0) {
this.selectData = this.companyPerformanceList.map((item) => item.id)
} else {
this.selectData = []
}
this.dialogConfig.outerVisible = true
},
// 获取公司业绩数据
async getCompanyPerformanceData() {
const { age, proName, voltage, pageNum, pageSize, timeValue } = this.companyPerformanceQueryParams
const queryParams = {
proName,
voltage,
pageNum,
pageSize,
startTime: '',
endTime: '',
}
if (age == 3) {
queryParams.startTime = moment().subtract(3, 'years').format('YYYY-MM-DD')
queryParams.endTime = moment().format('YYYY-MM-DD')
}
if (age == 5) {
queryParams.startTime = moment().subtract(5, 'years').format('YYYY-MM-DD')
queryParams.endTime = moment().format('YYYY-MM-DD')
}
if (timeValue && timeValue.length > 0) {
queryParams.startTime = timeValue[0]
queryParams.endTime = timeValue[1]
}
const res = await getCompanyPerformanceListAPI(queryParams)
this.waitSelectData = res.rows.map((item) => ({
...item,
disabled: false,
}))
},
/**
* 添加公司关键人员
*/
// 添加公司关键人员
addCompanyKeyPerson() {
this.companyKeyPersonList.push({
name: '',
title: '',
idCard: '',
performance: '',
duty: '',
planEnterTime: '',
planLeaveTime: '',
})
},
// 选择公司关键人员
selectCompanyKeyPerson(index) {
this.keyTableCurrentIndex = index
this.dialogConfig.outerTitle = '关键人员选择'
// this.waitSelectData = this.keyPersonPerformanceInnerList
// if (this.keyPersonPerformanceInnerSelectList.length > 0) {
// this.selectData = this.keyPersonPerformanceInnerSelectList.map((item) => item.key)
// }
// this.keyPersonPerformanceInnerSelectList = []
// this.selectData = []
this.dialogConfig.outerVisible = true
},
// 获取关键人员列表
async getKeyPersonList() {
const { rows: res } = await getKeyPersonListAPI()
this.keyPersonList = res
},
// 根据人员信息获取公司业绩数据
async getCompanyPerformanceData() {
const { age, proName, voltage, pageNum, pageSize, timeValue } = this.companyPerformanceQueryParams
const queryParams = {
proName,
voltage,
pageNum,
pageSize,
startTime: '',
endTime: '',
}
if (age == 3) {
queryParams.startTime = moment().subtract(3, 'years').format('YYYY-MM-DD')
queryParams.endTime = moment().format('YYYY-MM-DD')
}
if (age == 5) {
queryParams.startTime = moment().subtract(5, 'years').format('YYYY-MM-DD')
queryParams.endTime = moment().format('YYYY-MM-DD')
}
if (timeValue && timeValue.length > 0) {
queryParams.startTime = timeValue[0]
queryParams.endTime = timeValue[1]
}
const res = await getCompanyPerformanceListAPI(queryParams)
this.waitSelectData = res.rows.map((item) => ({
...item,
disabled: false,
}))
},
},
}
</script>
<style scoped lang="scss">
.card-box {
margin-bottom: 10px;
border: 1px solid #e5e5e5;
border-radius: 5px;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
padding: 10px;
}
.title {
font-size: 14px;
font-weight: 600;
margin: 10px 0;
}
.title-box {
padding: 8px 0;
display: flex;
align-items: center;
div {
margin-right: 10px;
font-size: 14px;
font-weight: 600;
}
}
.title-box-subcontractor {
padding-left: 10px;
display: flex;
align-items: center;
div {
margin-right: 10px;
font-size: 14px;
}
}
.subcontractor-item-box {
padding: 10px;
margin-bottom: 10px;
border: 1px solid #e5e5e5;
border-radius: 5px;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
}
.subcontractor-item {
display: flex;
align-items: center;
padding: 10px;
color: #000;
font-weight: 600;
font-size: 16px;
span {
margin-right: 10px;
}
}
::v-deep .el-transfer {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
text-align: left;
}
::v-deep .el-transfer-panel {
width: 48%;
}
::v-deep .el-transfer__buttons {
width: 4%;
padding: 0 6px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
::v-deep .el-button + .el-button {
margin: 0;
}
</style>