2023-09-08 17:45:24 +08:00

713 lines
23 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="panoramaPlan">
<div class="header-box">
<el-form
:inline="true"
ref="searchForm"
size="medium"
>
<el-form-item label="节点名称">
<el-input
v-model="nodeName"
:placeholder="$t('message.projectInfo.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="标段名称" v-if="COMPANY != 'sccr'">
<el-select
style="margin-right: 10px"
v-model="alarmType"
class="alarmTypeBox"
>
<el-option
v-for="(item, index) in ProgressPlanBidSectionList"
:key="index"
:value="item.id"
:label="item.projectfName"
></el-option>
</el-select>
</el-form-item>
<el-button type="primary" size="medium" @click="loadDataTwo">
<!-- 查询 -->
{{ $t('message.projectInfo.query') }}
</el-button>
<el-button type="primary" size="medium" @click="Refresh">
<!-- 刷新 -->
{{ $t('message.projectInfo.fresh') }}
</el-button>
<el-button type="primary" size="medium" @click="addForm">
<!-- 刷新 -->
{{ $t('message.projectInfo.add') }}
</el-button>
</el-form>
</div>
<div class="table-box">
<vue-scroll style="height: 668px">
<el-table :data="tableData">
<!-- 标段名称 -->
<el-table-column
v-if="COMPANY == 'sccr'"
align="center"
prop="crSectionName"
:label="$t('message.projectInfo.sectionName')"
></el-table-column>
<el-table-column
v-else
align="center"
prop="projectfName"
:label="$t('message.projectInfo.sectionName')"
></el-table-column>
<!-- 节点编号 -->
<el-table-column
align="center"
prop="nodeCode"
:label="$t('message.projectInfo.nodeNumber')"
></el-table-column>
<!-- 节点名称 -->
<el-table-column
align="center"
prop="nodeName"
width="160px"
:label="$t('message.projectInfo.nodeName')"
></el-table-column>
<!-- 节点类型 -->
<el-table-column
align="center"
prop="levelName"
:label="$t('message.projectInfo.nodeType')"
></el-table-column>
<!-- 标准完成时间 -->
<el-table-column
align="center"
prop="standardFinishDate"
:label="$t('message.projectInfo.standardCompletionTime')"
></el-table-column>
<!-- 计划完成时间 -->
<el-table-column
align="center"
prop="plannedFinishDate"
:label="$t('message.projectInfo.planCompleteTime')"
></el-table-column>
<!-- 预计完成时间 -->
<el-table-column
align="center"
prop="predictFinishDate"
:label="$t('message.projectInfo.predictCompleteTime')"
></el-table-column>
<!-- 实际完成时间 -->
<el-table-column
align="center"
prop="actualFinishDate"
:label="$t('message.projectInfo.realCompleteTime')"
></el-table-column>
<el-table-column
align="center"
prop="status"
:label="$t('message.projectInfo.status')"
>
<template slot-scope="scope">
{{
scope.row.status == 2
? $t('message.projectInfo.statusList')[0]
: scope.row.status == 3
? $t('message.projectInfo.statusList')[1]
: scope.row.status == 4
? $t('message.projectInfo.statusList')[2]
: scope.row.status == 6
? $t('message.projectInfo.statusList')[3]
: $t('message.projectInfo.statusList')[4]
}}
</template>
</el-table-column>
<!-- <el-table-column prop="diffDate" label="实际偏差"></el-table-column>-->
<!-- 职能条线 -->
<el-table-column
align="center"
prop="phaseName"
:label="$t('message.projectInfo.theFunctionLine')"
></el-table-column>
<!-- 节点责任人编号 -->
<el-table-column
align="center"
prop="chargerId"
width="150px"
:label="$t('message.projectInfo.nodeOwnerID')"
></el-table-column>
<!-- 节点责任人名称 -->
<el-table-column
align="center"
prop="chargerName"
width="150px"
:label="$t('message.projectInfo.nodeResponsiblePersonName')"
></el-table-column>
<!-- 节点失效标记 -->
<el-table-column
align="center"
:label="$t('message.projectInfo.isValidMark')"
>
<template slot-scope="scope">
{{
scope.row.isDeleted
? $t('message.projectInfo.valid')
: $t('message.projectInfo.unvalid')
}}
</template>
</el-table-column>
<!-- 是否退回 -->
<el-table-column
align="center"
:label="$t('message.projectInfo.isSendBack')"
>
<template slot-scope="scope">
{{
scope.row.isSendBack
? $t('message.projectInfo.no')
: $t('message.projectInfo.yes')
}}
</template>
</el-table-column>
<!-- 操作 -->
<el-table-column
align="center"
:label="$t('message.projectInfo.operation')"
width="200"
>
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-tickets"
@click="previewData(scope.row)"
><!-- 查看 -->{{ $t('message.projectInfo.look') }}</el-button
>
<el-button
type="text"
icon="el-icon-edit-outline"
@click="editData(scope.row)"
>编辑</el-button
>
<el-button
class="delete-btn"
type="text"
icon="el-icon-delete"
@click="deleteData(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</vue-scroll>
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(total)"
background
></el-pagination>
</div>
<el-dialog
class="dialog"
:title="dialogTitle"
:modal-append-to-body="false"
:visible.sync="dialogVisible"
@close="closeDialog"
destroy-on-close
width="50%"
>
<div class="dialog-content">
<el-form
ref="form"
:model="dialogdata"
:rules="rules"
label-width="130px"
size="medium"
class="dialogFormBox"
>
<!-- 标段名称 -->
<el-form-item
:label="$t('message.projectInfo.sectionName')"
v-if="COMPANY == 'sccr'"
>
<el-input
:disabled="formType == 3"
v-model="dialogdata.crSectionName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
:label="$t('message.projectInfo.sectionName')"
prop="bidSectionId"
required
v-else
>
<el-select
:disabled="formType == 3"
v-model="dialogdata.bidSectionId"
:placeholder="$t('message.projectInfo.pleaseChoose')"
>
<el-option
v-for="(item, index) in projectfNameList"
:key="item.id"
:label="item.projectfName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<!-- 节点编码 -->
<el-form-item
:label="$t('message.projectInfo.nodeCode')"
prop="nodeCode"
required
>
<el-input
v-model="dialogdata.nodeCode"
:placeholder="$t('message.projectInfo.placeholder')"
:disabled="formType == 3"
></el-input>
</el-form-item>
<!-- 节点名称 -->
<el-form-item
:label="$t('message.projectInfo.nodeName')"
prop="nodeName"
required
>
<el-input
v-model="dialogdata.nodeName"
:placeholder="$t('message.projectInfo.placeholder')"
:disabled="formType == 3"
></el-input>
</el-form-item>
<el-form-item
:label="$t('message.projectInfo.nodeType')"
prop="levelName"
required
>
<el-input
v-model="dialogdata.levelName"
:placeholder="$t('message.projectInfo.placeholder')"
:disabled="formType == 3"
></el-input>
</el-form-item>
<!-- 标准完成时间 -->
<el-form-item
:label="$t('message.projectInfo.standardCompletionTime')"
prop="standardFinishDate"
required
>
<!-- 选择日期 -->
<el-date-picker
v-model="dialogdata.standardFinishDate"
value-format="yyyy-MM-dd"
type="date"
:placeholder="$t('message.projectInfo.chooseDate')"
:disabled="formType == 3"
>
</el-date-picker>
</el-form-item>
<!-- 计划完成时间 -->
<el-form-item
:label="$t('message.projectInfo.planCompleteTime')"
prop="plannedFinishDate"
required
>
<el-date-picker
v-model="dialogdata.plannedFinishDate"
value-format="yyyy-MM-dd"
type="date"
:placeholder="$t('message.projectInfo.chooseDate')"
:disabled="formType == 3"
>
</el-date-picker>
</el-form-item>
<!-- 预计完成时间 -->
<el-form-item
:label="$t('message.projectInfo.predictCompleteTime')"
prop="predictFinishDate"
>
<el-date-picker
v-model="dialogdata.predictFinishDate"
value-format="yyyy-MM-dd"
type="date"
:disabled="formType == 3"
:placeholder="$t('message.projectInfo.chooseDate')"
>
</el-date-picker>
</el-form-item>
<!-- 实际完成时间 -->
<el-form-item
:label="$t('message.projectInfo.realCompleteTime')"
prop="actualFinishDate"
>
<el-date-picker
v-model="dialogdata.actualFinishDate"
value-format="yyyy-MM-dd"
type="date"
:disabled="formType == 3"
:placeholder="$t('message.projectInfo.chooseDate')"
>
</el-date-picker>
</el-form-item>
<!-- 状态 -->
<el-form-item
:label="$t('message.projectInfo.status')"
prop="status"
required
>
<el-select
v-model="dialogdata.status"
:disabled="formType == 3"
:placeholder="$t('message.projectInfo.pleaseChoose')"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<!-- 实际偏差 -->
<el-form-item
:label="$t('message.projectInfo.actualDeviation')"
prop="diffDate"
>
<el-input
v-model="dialogdata.diffDate"
:placeholder="$t('message.projectInfo.placeholder')"
:disabled="formType == 3"
></el-input>
</el-form-item>
<!-- 职能条线 -->
<el-form-item
:label="$t('message.projectInfo.theFunctionLine')"
prop="phaseName"
required
>
<el-input
v-model="dialogdata.phaseName"
:placeholder="$t('message.projectInfo.placeholder')"
:disabled="formType == 3"
></el-input>
</el-form-item>
<!-- 节点责任人编号 -->
<el-form-item
:label="$t('message.projectInfo.nodeOwnerID')"
prop="chargerId"
required
>
<el-input
v-model="dialogdata.chargerId"
:disabled="formType == 3"
:placeholder="$t('message.projectInfo.placeholder')"
></el-input>
</el-form-item>
<!-- 节点责任人名称 -->
<el-form-item
:label="$t('message.projectInfo.nodeResponsiblePersonName')"
prop="chargerName"
required
>
<el-input
v-model="dialogdata.chargerName"
:disabled="formType == 3"
:placeholder="$t('message.projectInfo.placeholder')"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="dialog-btn" v-if="formType != 3">
<el-button type="primary" @click="submitForm">
<!-- 确定 -->
{{ $t('message.energyManage.material.confirm') }}
</el-button>
<el-button @click="closeDialog">
<!-- 取消 -->
{{ $t('message.energyManage.material.cancel') }}
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
addPanoramaNodePlan,
editPanoramaNodePlan,
deletePanoramaNodePlan,
queryPanoramaNodePlan,
queryByIdPanoramaNodePlan,
getprojectfNameListApi
} from "@/assets/js/api/projectSummary.js";
import {
selectProgressPlanBidSectionListApi
} from "@/assets/js/api/dataBoard.js"
import moment from "moment";
export default {
data() {
return {
dialogTitle: /* '添加计划', */this.$t('message.projectInfo.addPlan'),
formType: 1, //1.新增 2.编辑 3.查看
nodeName: "",
tableData: [],
dialogVisible: false,
dialogdata: {
// projectfName: '',
bidSectionId:'',//标段
nodeCode: '',
nodeName: '',
levelName: '',
standardFinishDate: '',
plannedFinishDate: '',
predictFinishDate: '',
actualFinishDate: '',
status: '',
phaseName: '',
chargerId: '',
chargerName: '',
crSectionName: '',//成润项目字段
},
rules: {
bidSectionId: { required: true, message: this.$t('message.projectInfo.pleaseChoose')},
nodeCode: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.nodeNumber') },
nodeName: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.nodeName') },
levelName: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.nodeType') },
standardFinishDate: { type: 'string', required: true, message: this.$t('message.projectInfo.pleaseChoose') + this.$t('message.projectInfo.standardCompletionTime') },
plannedFinishDate: { type: 'string', required: true, message: this.$t('message.projectInfo.pleaseChoose') + this.$t('message.projectInfo.predictCompleteTime') },
status: { required: true, message: this.$t('message.projectInfo.pleaseChoose') + this.$t('message.projectInfo.status') },
phaseName: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.theFunctionLine') },
chargerId: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.nodeOwnerID') },
chargerName: { required: true, message: this.$t('message.projectInfo.placeholder') + this.$t('message.projectInfo.nodeResponsiblePerson') },
},
options: this.$t('message.projectInfo.nodeStatusList'),
projectfNameList: [],
pageNo: 1,
pageSize: 10,
total: 0,
projectSn: "",
ProgressPlanBidSectionList: '',
alarmType: '',
COMPANY: COMPANY,
}
},
created() {
console.log(this.COMPANY, '当前项目端')
this.projectSn = this.$store.state.projectSn;
this.loadData()
this.selectProgressPlanBidSectionList()
this.getprojectfNameList()
},
methods: {
getprojectfNameList() {
getprojectfNameListApi({ projectSn: this.$store.state.projectSn }).then((res) => {
console.log('标段名', res)
this.projectfNameList = res.result
})
},
Refresh() {
nodeName: this.nodeName = ''
this.pageNo = 1
this.pageSize = 10
this.alarmType = ''
this.loadData()
},
//标段列表
selectProgressPlanBidSectionList() {
selectProgressPlanBidSectionListApi({ projectSn: this.$store.state.projectSn }).then(res => {
this.ProgressPlanBidSectionList = res.result
console.log('标段列表', res.result);//projectfName
})
},
loadDataTwo() {
this.pageNo = 1
this.loadData()
},
loadData() {
let data = {
nodeName: this.nodeName,
projectSn: this.projectSn,
pageNo: this.pageNo,
pageSize: this.pageSize,
bidSectionId: this.alarmType,
}
queryPanoramaNodePlan(data).then(res => {
if (res.code == 200) {
this.tableData = res.result.records
this.total = res.result.total
}
})
},
addForm() {
this.dialogVisible = true
this.dialogTitle = /* '添加计划' */this.$t('message.projectInfo.addPlan'),
this.formType = 1
},
submitForm() {
this.$refs['form'].validate((valid) => {
console.log(valid)
if (valid) {
let data = this.dialogdata
// let data = JSON.stringify(JSON.parse(this.dialogdata))
data.projectSn = this.projectSn
if (this.formType == 1) {
addPanoramaNodePlan(data).then(res => {
// console.log('新增成功了吗',res)
if (res.code == 200) {
this.$message.success(this.$t('message.projectInfo.addSuccess') + '!')
this.closeDialog()
this.loadData()
}
})
} else if (this.formType == 2) {
console.log('编辑时候的参数', data)
editPanoramaNodePlan(data).then(res => {
console.log('编辑的结果', res)
if (res.code == 200) {
this.$message.success(this.$t('message.projectInfo.editSuccess') + '!')
this.closeDialog()
this.loadData()
}
})
}
}
})
},
closeDialog() {
this.dialogVisible = false
this.dialogdata = {}
this.dialogdata = {
nodeCode: '',
nodeName: '',
levelName: '',
standardFinishDate: '',
plannedFinishDate: '',
predictFinishDate: '',
actualFinishDate: '',
status: '',
phaseName: '',
chargerId: '',
chargerName: '',
}
},
handleSizeChange(val) {
this.pageSize = val
this.loadData()
},
handleCurrentChange(val) {
this.pageNo = val
this.loadData()
},
previewData(val) {
this.dialogdata = val
this.dialogVisible = true
this.dialogTitle = /* '查看计划' */this.$t('message.projectInfo.lookPlan'),
this.formType = 3
},
editData(val) {
console.log('编辑内容 ',val)
this.dialogdata = JSON.parse(JSON.stringify(val))
this.dialogVisible = true
this.dialogTitle = /* '编辑计划' */this.$t('message.projectInfo.editPlan'),
this.formType = 2
},
deleteData(val) {
this.$confirm(this.$t('message.projectInfo.confirmTipText') + '?', this.$t('message.projectInfo.tip'), {
confirmButtonText: /* '确定', */this.$t('message.energyManage.material.confirm'),
cancelButtonText: /* '取消', */this.$t('message.energyManage.material.cancel'),
type: 'warning'
}).then(() => {
deletePanoramaNodePlan({ id: val.id }).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: /* '删除成功!' */this.$t('message.projectInfo.deleteSuccess') + '!',
});
this.loadData()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: /* '已取消删除' */this.$t('message.projectInfo.cancelDelete')
});
});
}
}
}
</script>
<style lang="less" scoped>
.panoramaPlan {
width: 100%;
height: 100%;
background: #fff;
padding: 20px;
box-sizing: border-box;
.header-box {
margin-bottom: 20px;
padding-left: 10px;
.search-item {
display: inline-flex;
align-items: center;
white-space: nowrap;
margin-right: 20px;
/deep/.el-input {
width: 200px;
}
}
}
.delete-btn {
color: #f56c6c;
}
.dialogFormBox {
width: 100%;
padding: 0 30px;
box-sizing: border-box;
/deep/.el-form-item {
display: inline-block;
width: 50%;
.el-select {
width: 260px !important;
}
.el-date-picker {
width: 260px !important;
}
.el-cascader {
width: 260px !important;
}
.el-input {
width: 260px !important;
}
}
}
.dialog-content {
height: 360px;
margin-bottom: 60px;
}
.dialog-btn {
display: flex;
justify-content: space-around;
align-items: center;
}
}
</style>